ToCode
Kanalga Telegramโda oโtish
ืืืคืื ืงืฆืจืื ืืืชืื ืชืื ืืืช ืื ืื ืคืจืง
Ko'proq ko'rsatish1 419
Obunachilar
Ma'lumot yo'q24 soatlar
Ma'lumot yo'q7 kunlar
+130 kunlar
Postlar arxiv
1 419
# ืฉืืื ืื: ื ืื ืงืืจื ืื ืืช ื gitignore ืฉืืื ืืฉืืคืจืกืืื ืืืืืืช
ืืฉืืชื ืืืื ืืืจ ืืฆืืจืืื ืืคืจืกื ืืืืื ืืคืจืืืงื. ืืืจื ืืื ืื ื ืื ืขืืื ืืืจื ืืฆืืจืืื ืื ืืืืืื ืคื, ืืื ืืื ืืื ืืืจืื ืฉืจืฆืืชื ืืกืืื ืืืฉืืชื ืฉืื ื ืืืื ืื ืกืืช ืงืฆืช ืืืืื ืืืกืงืื ื.
ืืคื ืืฉื ืื ื ืื ืกื ืืื ืืช ืืช ืืืืืื ืืืคืืืฉ, ืืืืืื ืืืจ ืืคืขืื
npm install ืืื ืืจืืืช ืฉืื ืขืืื.
ืืืืืื ืขืฆืื ืืื ืคืจืืืงื ืฆื ืืงืื ืฉืื ืื ืฉืื ืืืืฆืจืช ืชืืงืื ืืฉื dist, ืืืืืื ืืฉื ื ืฉืืฉืชืืฉ ืืืืืื ืืฉ ืงืื ืฉืขืืฉื import ืืืืชื dist.
ืืงืืฆืืจ ืืืืจื ืืื ืื ืืคืขืื publish ืืืืื ืืื ื install ืืืืื ืืฉื ื ื... ืืื dist ืืกืคืจืื ืฉืืืชืงื ื. ื ื, ืืื ืฉืืืชื ืืืคืขืื build ืืื ืื ืืืืืื ืฉืงืืคืฆืื ืคื ืืกืืื.
ื ืืกืืื ืฉื ื ืืื ืื, ืฉืื publish, ืฉืื install ื... dist ืขืืืื ืื ืฉื.
ืืกืืคื ืฉื ืืืจ ืืจืืชื ืืืืืืื ืืืงืื ืฉืงื, ืืกืชืืืชื ืืฉืงื ืืกืคืจืื ืืืฆืืชื ืฉื ืงืืืฅ .gitignore ืขื ืืฉืืจื:
dist/
ืืื ืืื ืืฉืฃ ืฉืืืชื ืืืื ื ืืืื ืืืืืจื ืืฉืืจื ืืืืช - ืืื ืฆืืจื ืืืืกืืฃ ืืช ืื ืชืืฆืจื ืืื ืื ื git. ืืื ืืื ืืื ืขื ืืื: ืืื ืงืืืฅ .npmignore ืืชืืงืื, ืืืืคื ืืืืืืื npm ืืชืขืื ืืืงืืฆืื ื .gitignore ืืื ืืคืจืกื ืืืชื ืขื ืืืืืื ืฉืืื.
ืืืื ืชืืื ืืืจื ืฉืืืื ืื ืืช ืืืขืื ืืคืืชืจืื ืืื ืคืฉืื ืืืฆืืจ ืงืืืฅ .npmignore ืจืืง, ืืืืคืกืืง ืืืืฉืื ืืช ืืืืืื ืืืืืื ืฉืื...1 419
# ืืืค ืืืืคืกืงืจืืคื: ืืคืงืืืืช Parameters ื ReturnType
ืืขืืืื ืขื ืืืืคืกืงืจืืคื, ืืืืืื ืืขืืืื ืขื ืงืื ืืืฆืื ื, ืื ืื ื ื ืชืงืืื ืืืชืืืืช ืืกืืืืืช ืฉื ืคืื ืงืฆืืืช ืืฆืจืืืื ืืืชืื ืงืื ืฉืืชืืืืก ืืืืื - ืืืืืื ืื ื ืจืืฆื ืืืชืื ืคืื ืงืฆืื ืฉืื ืฉืขืืืคืช ืคืื ืงืฆืื ืืืฆืื ืืช.
ืขืืืื ืืืื ืืื? ืืืื ื ื ืกื ืืืืื ืกืคืฆืืคืืช ืขื ืืืืคืกืงืจืืคื ืืจืืืงื.
ืื ื ืจืืฆื ืืืชืื ืงืืืคืื ื ืื ืฉืืฆืืื ืืงืกื, ืืื ืกืืคืจืช ืืื ืคืขืืื ืฉืื ืืชื ืืช ืืืงืกื. ืืฉืืื ืื ืืืื ืื ื ืื ืืืืืืง ืืช ืืืงืกื ืืืฉืชื ื ืกืืืื, ืืืืืืง ืืฉืชื ื ืกืืืื ื ืืกืฃ ืฉืกืืคืจ ืืื ืคืขืืื ืืืงืกื ืืฉืชื ื, ืืืืชืื ืคืืงื ืฆืื ืฉืืขืืื ืช ืืช ืฉื ืืื ืืื. ื JavaScript ืจืืื ืืืืชื ืืืื ืืืชืื ืืฉืื ืืื:
function setTextAndCount(stuff) {
setText(stuff);
setCount(c => c + 1);
}
ืืื ืขืืื ืืืคื ืืืชืืืื ืขื ืฉืชื ืืืชืืืืช ืฉื setText, ืื ืื stuff ืืื ืคืื ืงืฆืื ืืื ืื stuff ืืื ืขืจื ืงืืืข.
ืืชืจืืื ื TypeScript ืืคืฉืืืช ืืืืืช ืืืืืื. ืคืชืืื ืื ื ืฆืจืื ืืกืคืจ ืืืืืคืกืงืจืืคื ืื ืกืื ืืืฉืชื ื ืฉืื ื ืฆืจืื ืืงืื, ืืืฉืืื ืื ืฆืจืื ืืืขืช ืื ืกืื ืืืฉืชื ื ืืกืืืื ืืืืืืืจ Union Type ืฉืืืจืื ืืืืฉืชื ื ืืกืืืื ืื ืืคืื ืงืฆืืืช ืืขืืืื ืฉืื. ืื ื ืขืื.
ืืืงืื ืื ืื ื ืืืื ืืืฉืชืืฉ ื Parameters ืืื ืืงืื ืืช ืจืฉืืืช ืืคืจืืืจืื ืฉื ืคืื ืงืฆืื ืืกืืืืช ืืืืฉืชืืฉ ืื ืืชืืจ ืืืคืืก. ืืืชืืจ ืืื ืืก ืื ื ืืฉืชืืฉ ื ReturnType ืืื ืืงืื ืืช ืกืื ืขืจื ืืืืืจ ืฉื ืคืื ืงืฆืื ืืกืืืืช. ืืชืจืืื ืขื ืฉื ื ืืื ื ืจืื ืืื:
function setTextAndCount(
...args: Parameters<typeof setText>
): ReturnType<typeof setText> {
setText(...args);
setCount((c) => c + 1);
}
ืืืืืช ืงืื ืืืื? ืืื ืืื ืื:
https://codesandbox.io/s/restless-night-u4ukmn?file=/src/App.tsx:186-347
<iframe src="https://codesandbox.io/embed/restless-night-u4ukmn?fontsize=14&hidenavigation=1&theme=dark"
style="width:100%; height:500px; border:0; border-radius: 4px; overflow:hidden;"
title="restless-night-u4ukmn"
allow="accelerometer; ambient-light-sensor; camera; encrypted-media; geolocation; gyroscope; hid; microphone; midi; payment; usb; vr; xr-spatial-tracking"
sandbox="allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts"
></iframe>1 419
ืื ืืชื ืืืจ ืื ืืืื ืืืชืจ ืชืืืื ืืืืืฉ ืืงืืจืก ืืืืชืืื ืืืจ ืืืืื ืืืงืจ, ืืื ืขืืืื ืื ืื ืืืื ืชืืืื ืืืชืืื ืืช ืืคืจืง ืืจืืฉืื ืืืงืืจืก ืฉืคืชืื ืืงืื ืืจืื ืืืืจื ืื ืืืืจืฉื ืืื ืืืื ืืื ืืืืฉืื ืืช ืืืื.
ืงืืฉืืจ ืืงืืจืก ืืืงืจ:
https://www.tocode.co.il/bundles/docker
ืืงืืื ืฉืชืื ื ืืืงืืจืก
ืื ืื
1 419
# ืงืืจืก Docker ื Kubernetes
ืืืจื ืืืชืจ ืืื ืืื ืืืจืื ืืชืืืืืืืช ืขื ืืชืื ืื, ืื ื ืฉืื ืืืฉืืง ืืื ืืช ืงืืจืก Docker ืฉื ืืืงืื. ืื ื ืื ืฉืชืืฆืื ืืคื ืื ืืงืฆืช ืจืืืืืช ืืืืืจื ืืงืืขืื.
## ืื ืืงืืจืก
ื 2013 ืกืืืืื ืืืืงืก ืืกืชืื ืขื ืืขืืื ืืจืืื ืฉืืืจ ืืขืื ืืื: ืืชืื ืชืื ื ืืืงืื ืืืืฉืืื ืืื ืืืขืืืจ ืืช ืืงืื ืฉืืื ืืืืื ืช ืืคืืชืื ืืคืจืืืงืฉื, ืื ืฉื QA ืืขืืืจืื ืืืืืืื ืขื ืืืืื ืืืืชืื ืชืื ืคืฉืื ืืืจืงืื "ืื ืขืืื ืืฆืื ืขื ืืืืฉื" ืืฉืจืชืื ืฉืืืงื ื ืฆื ืืงื ืคื ืืืฃ ืืื ืื ืืขื ืืืขืช ืืื. ืกืืืืื ืืืืงืก, ืืื, ืืื ืืืืชื ืืื ืืืืกื ืฉื ืืืจืช ืขื ื ืืฉื dotCloud, ืฉืืืคืฉืจื ืืืชืื ืชืื ืืืขืืืช ืืขืจืืืช ืฉืื ืืชืื ืืขื ื (ืงืฆืช ืืื ืืจืืงื ืืืืชืืงื ืืื). ืืืืงืก ืจืื ืืื ืืืื ืืื ืงืฉื ืืืชืื ืชืื ืืืขืืืจ ืืช ืืืขืจืืืช ืฉืืื ืืขื ื ืฉื ืืืืงืืืื ืืืืืชื ืืื ืืื ืจืื ืืช ืืืืืืืช ืืืื ืืืืืืืช ืฉื ื Linux Kernel ืืืืื ืฉืืื ืขืื ืขื ืกืืืจื ืืค ืืืฉ.
ืืืืฆืจ ืฉืืืืงืก ืืชืืื ืืคืชื ืื ืืืืฉืื ืืคืชื ืขื ืืืื ื ืงืจื Docker. ืืืงืจ ืืื ืืื ืฉืืืคืฉืจ ืื ืืงืืช ืืขืจืืช ืฉืืชืืชื, ืืกืืืจ ืืืชื ื"ืงืืคืกื" ืืืืขืืืจ ืืืชื ืืืืื ื ืืืจืช. ืื ืฉืืืืื ืืืืงืจ ืื ืฉืืื ืืฆืืื ืืงืืช ืืช ืื ืืงืืฆืื ืฉืจืืืื ืืืื ืืืืชื ืืืฉืื ืฉืืชืืชื ืืชืื ืืงืืคืกื - ืืืื ืกืคืจืืืช ืฉื ืืขืจืืช ืืืคืขืื, ืืื ืฉืืจืช ืคืงืืื ืฉืืฉืชืืฉืชื ืืื, ืืืคืืื ืืช ืืขืจืืช ืืืคืขืื ืขืฆืื. ืื ืื ืืืื ื ืืืจืืืืืืช ืื ืืืืฆืืขืื ืื ืืื ืฉื ืชืืื ืืช ืจืืืื, ืืื ืื ืืื ืงืจืื ืฉื ืืืข ืืืืื ืช ืืขืืจื ืืืื ื ืฉื ืงืื ืืื ืืืื ืืช.
ืงืืจืก Docker ืคื ืืืชืจ ืืืืืง ื-4 ืคืจืงืื:
1. ืืืืง ืืจืืฉืื ืืืืืื ืืื ืืืฉืชืืฉ ืืืืงืจ ืืฉืืจืช ืืคืงืืื ืืืื ืืืฉืชืืฉ ื"ืงืืคืกืืืช" ืฉืืืจืื ืืฆืจื ืืฉืืืื ื. ืชืืืื ืขื ืืืืืจ Dockerhub ืืชืจืื ืืื ืขื ืืืงืจ ืืคืฉืจ ืืืคืขืื ืื ืชืืื ื ืฉืื ืื ื ืฆืจืืืื ืืืื ืืืจืกื ืืื ืืืชืงืื ืืืชื ืืืื ืฉืืื ืชืชื ืืฉ ืขื ืืืจืื ืฉืืืจ ืืฉ ืื ืขื ืืืืฉื.
2. ืืืืง ืืฉื ื ืืืืืื ืืื ืืืฉืชืืฉ ื Docker Compose ืืื ืืื ืืช ืกืืืืช ืคืืชืื ืืฉืืืจืืช. ืืืื ืฉืื ืืืืืื ืืืชืจ ืืืชืงืื ืืืจืื ืขื ืืืืื ื ืฉืื, ืื ืื ื ื ืจืื ืืื ืืืงืื ืกืืืืืช ืืงืืืช ืืืืฉื ืืืืกืืฃ ืืืืืฆืช ืืคืชืืจ ืฉืจืช Redis, Mongo ืื ืคืืกืืืจืก ืืืขืจืืช ืฉืื.
3. ืืืืง ืืฉืืืฉื ืืืจ ืืืงืืื ืฆืขื ืงืืืื ืืืืืื ืืืืื ืืขื ื. ืื ืื ื ื ืืื ืืื ืืื ืืช ืืืื'ืื ื Dockerfile-ืื ืืฉืื ื ืืื ืฉื ืืื ืืฉืชืฃ ืืช ืืขืืืื ืฉืื ื ืขื ืืืจืื.
4. ืืืืืง ืืจืืืขื ื ืจืื ืืื ืืืขืืืช ืืช ืื ืื ืฉืืชืื ื ืืงืืืกืืจ ืฉืจืชืื ืืขื ื ืืืืฆืขืืช ืชืืื ืช Kubernetes.
ืื ืืชื ืืชืื ืชืื ืฉืฆืจืืืื ืืขืืื ืืกืืืื ืฉืื ืืฉืชืืฉืื ืืืืงืจ - ืืงืืจืก ืืืชื ืืื ืืื ื ืืืื ืฉื ืืืงืจ ืืื ืืืืื ืฉืกืืืื ืืืืื ืืชืื ืืืฉืชืืฉ ืืฉืืจืช ืืคืงืืื ืืฆืืจื ืืขืืื. ืืกืืื ืืงืืจืก ืืืจ ืื ืชืฆืืจืื ืขืืจื ืืืฃ ืืื ืืฉืงืื ืืืื ืจ ืื ืขืืื ืืื ืื ืืฉืืื ืืืชืื ืงืืืฅ Dockerfile.
ืื ืืชื ืขืืืืื ืขื ืคืจืืืงื ืฉืืื ืืืืจืืช ืขื ืืืงืจ ืืงืืืจื ืืืก ืชืืคืฉืจ ืืื ืืคืชื ืืืชื ืชืื ืฉืืืื ืชืืืืื ืืืืืืฆืื ื Deployment ืืืืื ืืช ืืืืืื ืืืชืงืืืื ืืชืขืฉืื ืืืขืืจืช ืืงืื ืืคืจืืืงืฉื.
ืืกืืื ืืงืืจืก ืืืื ืืื ืชืฉืืืืช ืืืืืช ืืฉืืืืช ืืืืืช:
1. ืื ืื ืืืืจ ืืจืืฅ ืืชืื ืงืื ืืืื ืจ, ืื ืืืืืืืช ืฉื ืืงืื ืืืื ืจ.
2. ืืื ืืขืืื ืขื Docker ืืฉืืจืช ืืคืงืืื.
3. ืืื ืืขืืื ืขื docker-compose ืืฆืืจื ืืขืืื - ืืืื ื ืืืื ืฉื ืืกืคืจ ืกืืืืืช ืขืืืจ ืืืืงืืช ืืขืืืจ Staging.
4. ืืื ืืฉืืืจ ืืืืข ืจืืืฉ ืืืืฆืขืืช Secrets.
5. ืื ืงืืจื ืืฉืงืื ืืืื ืจ ืขืืื? ืื ืื Entrypoint Script ืืื ืืืืื ืืื ื ืืืื Dockerfile? ืืื ืืืืื ืฉืกืจืืืกืื ืืกืืืืื ืืืื ืืืื ืื ืืคื ื ืฉืงืื ืืืื ืจ ืขืืื, ืืืื ืืจืืฆืื ืงืื ืืืชืืื ืืขืืื ืฉื ืงืื ืืืื ืจืื
6. ืืื ืงืื ืืืื ืจืื ืืชืงืฉืจืื ืืื ืขื ืืฉื ื ืืขื ืืขืืื ืืืืฆืื.
## ืื ืืฉืืจืชื ืืืืฅ
ืืขืืืื ืขื ืืงืืจืก ืืชืืืชื ืขื ืืืื ืืืื ืืืื ืืืืฆืจ ืงืืจืก ืฉืืืื ืขืืืื ืืกืืืืช Micro Services ืืืขื ื. ืืืงืจ ืืื ืืืืื ืืื ืขืืืื ืืจืืื ืืกืืืื ืื, ืืื ืืืฅ ืืื ื ืืฉ ืขืื ืืื ืกืืฃ ืืื ืืืืืืืช ืฉืื ืื ื ืืฉืชืืฉืื ืืื ืืืชืืืช ืืืฆืจ ืืืืืจ ืืืืกืก Micro Services, ืืื ืืืืืืืช ืืื GraphQL, syslog, oauth, Message Queues.
ืืืงืืื ืื ืฉื Devops ืืื ืืจืืื ืืืืฆืจืื ืชืืืืื ืืืืืืฆืื ืืืืฆืขืืช ืืื CI, ืืืื ืืื Github Actions ืื Jenkins, ืฉืืืคืืื ืืื ืืชืฉืชืืช ืฉืืขืืืจื ืงืื ืืืืื ื ืืืืื ื.
ืืืืื ืืขืืืื ืขื ืืงืืจืก ืืื ืชื ืฉืืงืฉืืจ ืืช ืื ืืืื ืืืืืืืช ืืืื ืืงืืจืก ืืื, ืืืงืื ืืืืกืืฃ ืืงืืจืก ืจืง ืคืืืข ืืืืืืืช ืืคื ืืืืช ืฉืื. ืืืื ืืื ืืื ืืืจืืชื ืื ืคืขื ืขืื ื ืืฉื, ืขื ืฉื ืฉืืจืชื ืขื ืืืื ืคืฉืื ืืืฉืื - ืืืืงืจ ืืงืืืจื ืืืก, ืื ืืคืืชืื ืืคืจืืืงืฉื.
ืืชืงืืคื ืืงืจืืื ืื ื ืืชืื ื ืืืขืืืจ ืืกืคืจ ืืืืื ืจืื ืขื ืคืืชืื ืืกืืืืช Micro Services ืืขื ืืงืืช ืืืืืืฆืืืช. ืืืจ ืืืืืฉืื ืืงืจืืืื ืืชืืื ื ืื ืืืืื ืจืื ืขื RabbitMQ ืืขื Auth0, ืืืจืืขืื ืืื ืื ื ืืชืื ื ืืฉืื ืืืืื ืจ ืขื Github Actions ืืืงืืช ืืืืืืฆืื ืฉื Deployment ืืืืฆืขืืชื. ืื ืชืืื ืืชืขื ืืื ืืช ืืืื ืืจืืื ืืืง ืืื ืืฉืืื ืืืืจืื ืืงืืจืกืื ืืฉืืื.
1 419
# ืืืค ืืืงืจ: ืกืืจ ืคืขืืืืช ื Dockerfile
ืงืืืฅ ื Dockerfile ืืื ืืืืืจ ืื ืื ืฉื ืืคืืืงืฆืืืช Rails ืฉืื ืืืืื ืงืื ืฆื ืืงืื, ืฉืืชืืจื ืืชืงืืคื ืขื node.js:
FROM ruby:2.7
WORKDIR /app
COPY . .
ENV RAILS_ENV=production
ENV NODE_ENV=production
RUN gem install bundler:2.2.5
RUN sh -c "apt-get update && apt-get install -y nodejs npm"
RUN bundle install
RUN sh -c "cd client; npm install"
RUN "./bin/rails assets:precompile"
CMD ["./bin/rails", "s"]
ืจืืืื ืื ืืืขืื ืืื?
## ืกืืจ ืคืขืืืืช ืืฉืืืืช
ืืคืงืืืืช RUN, COPY ื ADD ืฉื ืืืงืจ ืืืฆืจืืช ืื ืืืช ืฉืืืื ืืืฉื. ืืจืืข ืฉืืืงืจ ืืกืืื ืืืฆืืจ ืฉืืื ืืื ืฉืืืจ ืืืชื ื Cache, ืืืฉืืคืขืืืื ืคืขื ื ืืกืคืช build ืืืงืจ ืืืื ืืืฉืชืืฉ ืืขืืชืง ืืฉืืืจ - ืืชื ืื ืฉืื ืืื ืฉืื ืื ืืฉืืืื ืื ืืฉืืืืช ืฉืืขืืื.
ืืงืื ืืืืืื ืืคืขืืื:
COPY . .
ืืืฆืจืช ืฉืืืื ืืืฉื, ืืื ืื ืฉืืืื ืืืื ืื ืืฆืืื. ืื ืฉืื ืื ืืื ืงืื ืืงืืืฅ ืืชืืงืืืช ืืคืจืืืงื ืืืจืื ื Cache ืืืืืช ืื ืจืืืื ืื, ืืืืืงืจ ืืืจืืง ืืช ืืฉืืืื ืืืช ืื ืืฉืืืืช ืฉืืื ืื ื ืืขืืื, ืืืืฆืืจ ืืช ืืื ืืืืฉ.
ืื ืืืืจ ืฉืขื ืงืืืฅ Dockerfile ืืื ืืชื ืชืฆืืจืื ืืืืืช ืืจืื ืืื ืื ืคืขื ืฉืืื ืื ืืืืฉ ืืช ืืคืจืืืงื.
ืชืืงืื ืืืื ืงื ืืืขืื ืืืื ืืฉื ืืช ืืช ืกืืจ ืืคืขืืืืช ืื ืฉืื ืฉืืืื ืชืืืืฆืจ ืืื ืืืืืจ ืฉืจืง ืืคืฉืจ. ืื ืืจืื ืื:
FROM ruby:2.7
WORKDIR /app
ENV RAILS_ENV=production
ENV NODE_ENV=production
RUN gem install bundler:2.2.5
RUN sh -c "apt-get update && apt-get install -y nodejs npm"
COPY . .
RUN bundle install
RUN sh -c "cd client; npm install"
RUN "./bin/rails assets:precompile"
CMD ["./bin/rails", "s"]
ืืขืืืชื ืืืขืื ืืช ืฉืชื ืคืงืืืืช ื RUN ืืืืืืืช ืืืชืจ (ืืชืงื ืช bundler ืืืชืงื ืช node ื npm), ืื ืฉืื ื ืืฆืืืช ืขืืฉืื ืืขื ื COPY. ืืืื ืืืงืจ ืืืื ืืฉืืืจ ื Cache ืืช ืืืืื ื ืืืจื ืืชืงื ืช bundler, node ื npm, ืืืืชืงืื ืจืง ืืช ืืคืจืืืงื ืฉืื ืื ืคืขื ืฉืืฉืื ืืฉืชื ื.1 419
# ืฉืืืฉ ืกืืืืช ืืื ืื ืืืื ืืืืจืื ืคืจืืืืืืจืงืก ืืขืืื ืืื ืฉืืชื ืจืืฆืื
ืืฉืจืืืืก ืืชืืื ืืฆืืืจ ืชืืืฆื ืืจืื ืืืืจื ืขื ืืื ืืคืจืืืืืืจืง ืืื ืื ืืชื ืขืืื ืืื ืฉืจืืืืก ืืชืืืื ื ืฉืชืขืืื, ืืืื ืืชื ืืืื ืืกืืื ืื ืฉืืืช ืืขืืืื ืฉืื ืฉืื ื. ืืืืื, ืจืืืืก ืืื ืืคื ืืืืฉ ืืืชืจ, ืืื ืืืื ืืืฉื ืชืงืฃ ืขืืืื ืืืื ืคืจืืืืืืจืง ืฉื ืืื: ืื ืืฆืืช ืืจืืง ืืชืืืื ืืืจืื ืืคืจืืืืืืจืง ืืืชื ืื ืืืจืช ืืื ืฉืืืชืืื ืืชืืืื ื, ืืืื ืขืืืฃ ืืืืกื ืืช ืืืจืืง ืืื ืืืืืจื ืืืืฆืื ืืจื ืืืจืช (ืื ืคืจืืืืืืจืง ืืืจ). ืืื ืืกืืืืช ืฉืืืืื ืื ื ืืขืืืฃ ืื ืืืืจืื ืคืจืืืืืืจืงืก ืืขืืื ืืื ืฉืื ื ืจืืฆื:
1. ืืื ืืืจืืืช (ืื ืืืชืจ ื ืืื ืืื ืขืืจื ืืืืื) - ืืจืืข ืฉืืชืืื ื ืืฉืืืจ ืืช ืืคืจืืืืืืจืง ืืื ืืืชืืื ืืืชื ืืฆืจืืื ืฉืื ื, ืืืื ืงืฉื ืืืื ืืืืขืืจ ืืืืื ืืื ืืืฆืื ืืืชืงื ืืืืื. ื Use Case ืฉืื ื ืืืื ืฉืื ื ืืื ืืคืฉืจ ืืืขืช ืืืื ืืืืื ืืืืขื ืืืื ืืฉืื ืื ืฉืื ื, ืืืื ืืืืื ื ืืืขืื ืืืืช ืืืขืืืืช ืืฉืืืืฉ ืื ื ืืื, ืืืืื ืืืืื ืืืืช ืงืืืืื ืืคืจืืืืืืจืง ืืื ืงืฉืจ ืืืื ื.
2. ืืืจ ืื ืืืฉืืจ - ืื ืื ื ืืฉื ื ืคืจืืืืืืจืง ืืขืืื ืืื ืฉืื ื ืจืืฆื ืืืื, ืืฃ ืืื ืื ืืืืื ืื ืฉืืืืจืกื ืืืื ืฉื ืืคืจืืืืืืจืง ืืืจืืฅ ืืจืื ืืื ืกืชื ืืช ืืฉืื ืื ืฉืื ืขืืืื ืืืื ืฉื. ืงืื ืฉืืืืฆืจ ืกืื ื ืฉืืืืื ืื ืืคืฉืจ ืืืื ืืฉืืจื ืืืจืกื ืื ืงืื ืืกืืื.
3. ืืื ืื ืื ืืืืฉ ืฉืื ืื ืืืื ืขืงืื ืขื ืื ืื ืื ืื ืืืจืื ืงืืืืื ืฉื ืืคืจืืืืืืจืง, ืืืคืขืืื ืืฉืืืจ ืืืชื.
ืจืง ืืืื ืฉืื ื ืืืฉื ืฉืื ืื ืื ืืกืืื ืฆืจืื ืืขืืื ืืคืจืืืืืืจืง ืื ืืืืจ ืฉืืื ืืืืช ืขืืื ืื ืฉืืืจืื ืฆืจืืืื ืืืืืช ืงืืื ืืื ืฉื ืืื ืื. ืืฉืื ื ืืื ื ืคืืฆ'ืจ ืืืจืืืฉ ืฉืืืืื ืขืืืืื ื ืืื, ืืืื ืืงืืช ืืช ืืจืื - ืื ืืืืื ืืื ืืืฉืชืืฉ ืืืื ืืฆืืจื ื ืืื ื, ืื ืืืืืืฃ ืืช ืืืื.
1 419
# ืืืื ืืืืชื: ืืกืืงืืืจ focus-within
ืกืืงืืืจ ืืืื ืฉืืืืฉื ื CSS ืฉืืืืืชื ืจืง ืืืืจืื ื ืืื
:focus-within. ืืื ืืืคืฉืจ ืืืืืช ืืชื ืคืืงืืก ื ืืฆื ืขื ืืืื ื ืื ืขื ืืื ืืืืืื ืฉืื.
ืืืื ืื ืืื? ื ื ืื ืฉืื ืื ื ืืื ืื ืงืืืคืื ื ืื ืืืจืืืช ื HTML/CSS. ืืืื ื ืืื ืฉืื ืชืืืช ืืงืกื ืืืืืจืช ืชืืืืช, ืฉืืฉืืืืฆืื ืขื ืืชืืื ืืืคืืขื ืจืฉืืื ืฉื ืื ืืชืืืืช ืืืืืจื. ืืืืื ืช ืืคืืงืืก, ืืืืฆื ืขื ืชืืืช ืืืงืกื ื ืืชื ืช ืื ืืช ืืคืืงืืก, ืืืืจื ืื ืืืืฆื ืขื ืื ืืื ืืืคืจืืืื ืืขืืืจื ืืช ืืคืืงืืก ืืคืจืื ืฉื ืืืฅ. ืื ืชืืืช ืืืงืกื ืืจืฉืืืช ืืคืจืืืื ื ืืฆืืื ืืชืื ืืืชื div, ืื ืื ื ืืืื ืืืฉืชืืฉ ื focus-within ืขื ืืืื ืืขืืืฃ ืืจืืฉื ืืื ืืืืืื ืื ืืืฆืื ืื ืืืกืชืืจ ืืช ืจืฉืืืช ืืืคืฉืจืืืืช.
ืืงืื ื HTML ืืจืื ืื:
<div class="multiselect">
<label>
Click To Select:
<input type="text" />
</label>
<ul>
<li><label tabindex="0"><input type="checkbox" />item 1</label></li>
<li><label tabindex="0"><input type="checkbox" />item 2</label></li>
<li><label tabindex="0"><input type="checkbox" />item 3</label></li>
<li><label tabindex="0"><input type="checkbox" />item 4</label></li>
<li><label tabindex="0"><input type="checkbox" />item 5</label></li>
</ul>
</div>
<div class="multiselect">
<label>
Click To Select:
<input type="text" />
</label>
<ul>
<li><label tabindex="0"><input type="checkbox" />item 1</label></li>
<li><label tabindex="0"><input type="checkbox" />item 2</label></li>
<li><label tabindex="0"><input type="checkbox" />item 3</label></li>
<li><label tabindex="0"><input type="checkbox" />item 4</label></li>
<li><label tabindex="0"><input type="checkbox" />item 5</label></li>
</ul>
</div>
<div class="multiselect">
<label>
Click To Select:
<input type="text" />
</label>
<ul>
<li><label tabindex="0"><input type="checkbox" />item 1</label></li>
<li><label tabindex="0"><input type="checkbox" />item 2</label></li>
<li><label tabindex="0"><input type="checkbox" />item 3</label></li>
<li><label tabindex="0"><input type="checkbox" />item 4</label></li>
<li><label tabindex="0"><input type="checkbox" />item 5</label></li>
</ul>
</div>
ืื CSS ืืืื:
.multiselect:focus-within {
background: lightblue;
}
.multiselect ul {
display: none;
}
.multiselect label {
display: block;
width: 100%;
}
.multiselect:focus-within ul {
display: block;
}
ืืืชืืฆืื live ืืงืืืคื ืืื:
<iframe height="300" style="width: 100%;" scrolling="no" title="Untitled" src="https://codepen.io/ynonp/embed/xxpKyze?default-tab=html%2Cresult" frameborder="no" loading="lazy" allowtransparency="true" allowfullscreen="true">
See the Pen <a href="https://codepen.io/ynonp/pen/xxpKyze">
Untitled</a> by Ynon Perek (<a href="https://codepen.io/ynonp">@ynonp</a>)
on <a href="https://codepen.io">CodePen</a>.
</iframe>
ื ืกื ืืืืืฅ ืขื ืชืืื ืืื ืืจืืืช ืจืฉืืืช ืืคืฉืจืืืืช ืฉืืืคืืขื ืืชืืชืื, ืืื ืกืื ื ืืืง ืืืืคืฉืจืืืืช ืืชืจืื ืฉืืจืฉืืื ืขืืืื ืืืฆืืช.1 419
# ืืขืืื ืืืืืชื
ื ื ืื ืฉืืฉ ืืื ืฉืชื ืจืฉืืืืช ืืืืื ืืช ืืคืืืชืื ืืืชื ืฆืจืืืื ืืืืฆืจ ืืื ืจืฉืืื ืฉืืืฉืืช ืฉืชืืื ืืืืื ืช ืื ืืื. ืืืืืจ ืืืื ืชื:
a = [10, 20, 33, 51, 94, 100]
b = [2, 3, 99, 102, 500]
ืฆืจืื ืืืืคืืก ืืช ืืจืฉืืื:
[2, 3, 10, 20, 33, 51, 94, 99, 100, 102, 500]
ื ื, ืื ืืืขืื ืืชื ืืืืจืื, ืื ืื ื ืืคืืืชืื, ืื ืืคืฉืจ ืืืชืื ืคืฉืื:
def test1():
return sorted([*a, *b])
ืืื ืขืืื ืขื ืฉืืืื ืงืื ืืจืืฉ ืืชืืื ืื ื'ืก ืฉืื ืคืชืืื ืื ื ืืืืจ ืืช ืฉืชื ืืจืฉืืืืช ืืืืืื ืืช ืืชืืฆืื ืืฉืฉืชื ืืจืฉืืืืช ืืืืขื ืืืืื ืืช, ืืืื ืื ืืืชืืืฅ ืงืฆืช ืืืจืืฅ ืืืงืืื ืขื ืฉืชื ืืจืฉืืืืช ืืคื ืกืืจ ืืืืื, ืืืืืจ ืืฉืื ืืื:
def test2():
i = 0
j = 0
output = []
while True:
if i >= len(a):
output.extend(b[j:])
break
if j >= len(b):
output.extend(a[i:])
break
next_a = a[i]
next_b = b[j]
if next_a < next_b:
i += 1
output.append(next_a)
else:
j += 1
output.append(next_b)
return output
ืืื ืืืืืง ืืฉืื ื ืขืฃ ืขื ืขืฆืื ืขื ืืคืืชืจืื ืืืชืืืื ืฉืืชืืชื ืืืืื ืืชืื ืช ืขื ืืืืื ืื ื ืฉืืืืข ืืจืืฅ ืืืืืื ืขื ืฉืชื ืจืฉืืืืช ืืืงืืื, ืื ื ืจืืฆื ืืงืืช ืืช ืื ืขืื ืฆืขื ืงืืืื ืืืืืื ืืืืื ืืืฆืืขืื ืจืง ืืฉืืื ืืจืืืช ืืื ืืื ืืขืื ืืขืืืื ืฉืื ืืกืื. ืื ื ืื ืื ื ืืคืืืชืื ืื ืื ืืช ืื ืืคืฉืจ ืืงืืืช:
print("Short solution took - ", timeit.timeit("test1()", globals=locals()))
print("Long smart solution tool - ", timeit.timeit("test2()", globals=locals()))
ืืืชืืฆืื ืืื ืืืฉ ืืคืชืืขื:
Short solution took - 0.26264833300956525
Long smart solution tool - 1.3138192089973018
ืืฉ ืืจืื ืกืืืืช ืฉืืงืื ืืฉื ื ืืคืฉื, ืืื ืื ืื ืืขืืงืจ ืืื. ืืืชืจ ืืฉืื ืืฉืื ืื ืฉืืืฆืืขืื ืื ืื ืขื ืืื ืฉื ืืื ืืืืืฆืื ืืื ื ืจืื ืื ืืืชืจ ืืืฆืื. ืืืงืื ืืืืื ืืช ืืืื ืขื ืคืืชืจืื ืืช ืืชืืืืืื, ืขืืืฃ ืืืืื ืงืืื ืฉืืืืช ืืฉ ืืขืื, ืืืื ืืงืจื ืืขืฉืืช ืงืืืื ืจืง ืืืจื ืฉืืชื ืืืืืื ืฉืืคืืชืจืื ืืืชืืืื ืืฉืคืจ ืืช ืืืฆื.1 419
# ืืื ื ื ืกื ืื ืจืื ืื ืืงืจื
ืืคืขืืื ืื ืื ื ืืืฉืืื ืืื ืืขืื ืืื ืืืืืื ืืกืคืืง ืืืื ืืืื ืืืืืื ืื ืืคืจืืื ืืืื ืืื ืฉืื. ืืืฆืืื ืืืื ืื ืื ื ืขืฉืืืื ืืืืื ืืฉืื ืืื "ืืืื ื ื ืกื ืื ืจืื ืื ืืงืจื".
ืืชืืืืจืื ืืื ืืื ืฉืื ืกืืืื...
ืืืฆืืืืช, ืื ืืืจ ืืืืื ื ืื ืกืืช ืืฉืื ืงืฉื ืื ื ืืืืืืช ืืืืฉืืื, ืืื ืืืจืื ืืกืชืืื ืืฉ ืกืืืื ืื ืจืข ืฉื ืืืื ืขื ืื ืืืชืจ ืืื ืืื ืฉืชืื ื ื ืืืชืืื ืืคื ื ืฉื ืืืชืจ. ืืื ืขืืืื ืืชืจืืืฉ ืืืื.
ืืชืจืืืฉ ืืืืชืจ ืืจืืข ืื ืืกืื ืืฆืืื, ืืื ืืฉ ืื ื ืืขืื ืืืฉื - ืืื ืืืฉืชืืฉ ืืืืจ ืฉืื ืื ื, ืืืจืืช ืฉืืชืืื ื ืืื ืืช ืืืชื ืืื ืืื ื ืืืื ืฉื ืืืื ืืืืืื ืืืืื ืืฉ ืื ืืขืืืช ืฉืื ืื ื ืขืืืื ืื ืืืืขืื ืืืืื.
ืืืงืื ืื ืขืืืฃ ืืชืืื ืืช ืื ืืกืื ืืืืคืจืื ืืื ื ืืืื ืขืืืื ืืืืชืืช. "ืื ืืืงื ืื ืฉืืืข ืืืืื ืืขืืืง ืืช ืืืื, ืืื ืขืื ืืืืืื ืืื ืืช ืคืืชืจืื" ืื ืืืฉื ืืจืื ืืืชืจ ืืจืืื. ืืช ืืฉืืืข ื ืืืง ืืืืืงืื ืฉื ืืืืืื, ืืื ืชืืืืช ืืืืง ื ืชืืื ืืช ืืคืจืืืงื ืืืืฉ ืืืืฉื ืงืฆืช ืืืจืช. ืืืืืง ืืืืจืื ืืืจ ื ืืื ืืกืคืืง ืืืืื ืื ืืื ืืื ืืช ืืช ืืงืื ื ืืื ืืืฉืืจื ืืจืืฉืื ื.
1 419
# ืืืืืื ืืืืื
ืืฉ ืฉื ื ืกืืืื ืืจืืืืื ืฉื ืืืืื-
1. ืืืืืื ืืงื ืื ืืฉืืชื ืืืื ืืฉืื ืฉืงืืื ืื ืืืขืช. ืืืืืื ืืืื ืืืืชื ืฉ"ืืขื" ืืจืืกืืช ืื "ืกืืืืง". ืื ื ืขืืฉืื ืื ืืชื ืืืืขืื ืืช ืื.
2. ืืืืืื ืืงืฉื ืื ืืฉืืชื ืืืื ืืฉืื ืืืฉ ืฉืฆืจืื ืืืืืืฃ ืืืข ืงืืื. ืื ืื ืงืจื ืืืืืื ืืฉืืืืืชื ืฉืืฉ ืืืืื ืขื ืืืื ืืกืื ื MongoDB. ืืจืืข ืืื ืืื ืชื ืฉืืืื ืืฉ ืืขืื ืืื ืืงืื ืฉืืชืืชื ืฉืืชืงืฉืจ ืขื MongoDB ืืื ืคืจืืืงื ืฉืื ืคืขื ืืชืืชื. ืื ืจืฆืืชื ืืงืื ืืช ืื.
ืืืืื ืืืชืจ ืงืฉื ืืืชื ืืฉืืืชืจ ืืืืชืจ ืืงืืืืช ืฉืื ืขืืจื ื perl ื Python. ืื ืืงื ืื ืฉื ืชืืื ืืืืื ืฉืื ืฉืื ืืขืืืคืื Python ืขื ืคื ื perl. ืื ืืงื ืื ืขืื ืฉื ืชืืื ืืืจื ืื ืืืชืืื ืืืขืืืฃ ืืขืฆืื ืืช ืคืืืชืื ืขื ืคื ื ืคืจื. 90% ืืืืื ืื ืืืฉืงืข ืืืืืื ืคืืืชืื ืืื ืื ืืกืืื ืื ืืื ืืืืืช ืืช ืื ืฉืืขืืื ื ืืกื ืืืืื ืื.
ืืืื ืืื ืืฉื ืื ืืืื ืฉืืืืืื ืื ืืช ืืืืื ื. ืืฉืืฉ ืคืจืื ืืืืข ืืืฉ ืฉืื ืืกืชืืจ ืขื ืืืจืื ืฉืืืจ ืืืขื ื, ื ืขืฉื ืืื ืืื ืืคืกืื ืืช ืืืืืข ืืืืฉ. ืืืืจืื ืืื ืืืื ืืขืืืช ืื ื ืืืืงืจ, ืืืชืื ืชืื ืืืขืืืืื ืืืืืื ืืืืืจื ืืช.
ืืืืฉืืช ืืืืืืช ืื ืฉืืคืฉืจ ืืืชืืื ืืืฉื ืืช ืืช ืื. ืืฆืขื ืืจืืฉืื ืืื ืืืืืช ืืช ืืฉืืขืืจืื ืืงืฉืื ืืฉืื ืขืืืืื ืืืื ื, ืืืกืชืื ืขืืืื ืืกืงืจื ืืช ืืืฉืืื - ืื ืื ื ืืืื ืืืืื ืืื ืฉืงืืจื ืขืืฉืื? ืื ืืื ืงืืจื ืื ืืืืชื ืืืืจ ืืืืจื ืืืจืช? ืืืื ืขืืืช ืฉืงืืขื ืืืจืืช ืื ืืืืฉืื ืืืชืืืื? ืืื ืฆืจืื ืืงืจืืช ืืื ืฉืืืื ืืงืื ืืช ืืืืืข ืืืืฉ ืืืืชืงืื ืืืชื?
Endi mavjud! Telegram Tadqiqoti 2025 โ yilning asosiy insaytlari 
