ToCode
Kanalga Telegramโda oโtish
ืืืคืื ืงืฆืจืื ืืืชืื ืชืื ืืืช ืื ืื ืคืจืง
Ko'proq ko'rsatish1 419
Obunachilar
Ma'lumot yo'q24 soatlar
-17 kunlar
+230 kunlar
Postlar arxiv
1 419
# ืืจืืข ืืขืืืืช ืฉืืืจืกืืช ืื ื ืืช ืืืืืื
ืชืืืื ืืืืื ืืื ืืืืืื ืืืฉื ืืืื ืืืืืช ืืื ื ืืืกืคืง, ืืื ืื ืืืื ืืืืืช ืืืืืฅ ืืื ืืขืื. ืืจืื ืืืงืจืื ืืฉืืชืืืื ื ืืฉื ืื ืืืื ืฉืขืฉืื ื ืืืช ืื ืืืชืจ ื-4 ืืืขืืืืช ืืืืืช:
## ืืืืื ืืืชืจ ืืื ืืืจืื ืืืื
ืืขืืช ืืกืคืจ ืืืช ืืืื ืื ืคืืฆื ืืืืชืจ ืืื ืืจืฆืื ืืืืื ืืืชืจ ืืื ืืืจืื ืืืื ืืืช. ืื ืืืื ืืืืืื ืืชืืื ืฉื ืคืืชืื Full Stack ืืืื ืืืืืช ืืืืืื ืฉื ืืื ืืืืืืืช ืฉื ืชืงืืื ืืื. ืื ืื ื ืืืจ ืืจืืืช ืืืฉืื ืฉืื ืกื ืืืืื ืก ืืจืืืงื ืื ืกื ืืืืื ืื Next.JS, ืื JavaScript, ืื React, ืื Redux, ืื MobX, ืื CSS Modules, ืื CSS In JS, ืื Webpack, ืื Material UI, ืืื ืืื ืืื.
ืขืืฉืื ืืฆื ืืื ืืฉ ืคื ืืืืื ืื ืืืืืขืช ืืจืืฉืื ืื ืืืคื ืฉืื ืชืกืชืืื ืืืืช ืืฉ ืจืฉืืื ืืจืืื ืืืชืืฉื ืฉื ืืื ืืืืืืืช. ืืื ืืืฆื ืืคืจืงืื ืื ืคืฉืื ืืืชื ืืคืฉืจื ืืืฉืชืื ืขื ืื ืื ืืจืื ืืืืจ ืืืื ืืืช. ืื ืคืขื ืฉืื ืื ื ืืืจืืื ืืืฉืืื ืืื ืืืืื ืขืื ืืื ืืืืืื ืื ืื ื ืจืง ืืชืจืืงืื ืืืืขื ืฉื ืืืืจืืช ืืืื ืขื ืืืื ืืืืืื ืืืชื ืจืฆืื ื ืืืืื ืืืืชืืื.
ืืืงืื ืืจืืฅ ืืื ืืืืืื ืื ืืืชืจ ืืฉืชืื ืืืชืืงื: ืืืืืจ ืจืง ืืื ืืืืืื ืืืช ืืืืืื ืืืชื ืืขืืืง. ืืืจื ืื ืืืืฉืื ืืฉื ืื, ืืืฉืืืฉืืช ืืืจืืืขืืช. ืืืืืช ืืืืืืช ืืืชืืงื ืื ืคืขื ืืืื ืืืืืื ืืืช, ืืืืืื ืฉื ืื ืืื ืืืืืื ืืืื ืืืืจ ืืืชืจ ืืืื ืืืืืื ืืืืื ืืืื ืงืฆืจ ืืืชืจ - ืืื ืืกืฃ ืืชื ืชืจืืืฉื ืืจืื ืคืืืช ืืชืืกืืืื ืืืชืืืื.
## ืืืืื ืืืฉืืื ืืืืืงืืืืืื
ืืืฉื ืืืืืงืืืื ืืื ืืฉืื ืฉืืคืฉืจ ืืจืืืช ืืืืจืืืช ืืืืจืื. ืืืืืื ืื ืืืืืชื ืืืืื ืืืชืื ืืคืืืงืฆืืืช ืืืืืคืื ืื ืืืฉื ืืืืืืงืืืื ืืืื ืืคืืืงืฆืื ืฉืื ืฉืื ืืืจืืืื ืืืชื ืื ืื ืื ืืื ื, ืืขืืืฃ ืืืช ืืชืฉืืื ืื ืฉืื ื ืจืื ืืื ืกื ืืืขืืืื.
ืื ืื ืืชื ืืืืืื ืคืืชืื Full Stack ืื ืืืฉื ืืืืืงืื ืืืื ืืื ืืช ืืขืจืืช ืฉืชืจืฉืื ืืจืืืื ืื ืคืืื ืฆืืืืืื ืืื ืฉืืืืื ื ืืชืื ืืจืืืื ืขืืืื ืื ืืืชืจ ืืื ืืืฆืื ืืืฉ ืขืืืื ืืชืืื.
ืื ืืืื ืฉืืื ืขืืื ืงืฆืช ืืื ืฉืื ืื ืื ืืื ืฉืขืืืจ ืืื ืืืฉื ืืืืืงืืืื ืืืกืืฃ ืืืฅ ืืฆืืจื ืฉื: "ืืืื ืื ื ืื ืืืืืื", "ืืืื ืืขืืื ืื ืืฆืืื ืืืชืื ืืคืืืงืฆืื ืฉืื ืฉืื ืืจืฆื", "ืืืื ืืชืืจืืช ืงืฉื ืืื", "ืืืื ืืืจืชื ืชืืื ืฉืื ืืชืืื ืื" ืืขืื ืืื ืกืคืืจ ืืืฉืืืช ืืคืืืื ืืกืื ืื.
ืืืขืื ืขื ืืืฉืืื ืืืืืงืืื ืืื ืฉืื ืืืืช ืงืฉืื ืืืฉืื. ืื ืืืื ืืงืืช ืฉื ื ืืืืื Full Stack ืืจืื ืฉืชืื ืืก ืืชืื ืืขืืืื. ืื ืืืื ืืงืืช ืฉืืืฉ ืฉื ืื ืืืชืืื ืขื ืคืืชืื ืืคืืืงืฆืืืช ืขื ืฉืชืคืชืื ืืืช ืฉืื ืฉืื ืืจืฆื ืืฉืื ืขืืื ืืืกืคืจ ืขืืื ืืืืจืืื. ืืืชื ื ืืืืฉืืื ืืืืืงืืืืืื ืืืืจืช ืฉืืชื ืืขืืืจืื ืืช ืจืื ืชืืืื ืืืืืื ืืืฉืฉืืช ืืืืืฅ ืฉืืืื ืืชื ืื ืืืืืื ืื ืืื ืืฉืืืื ืื ืืฃ ืคืขื ืื ืืฆืืื. ืืืงืืื ืจืืฉื ืืื ืืืื ืงืฉื ืืื ืืช ืืืืืืื ืืืืืืข ืื ืงืืืช ืืกืืื.
ืืืงืื ืืืืืช ืืืืฉื ืืืืืงืืืื ืืจืื ืืืชืจ ืืืืืฅ ืืืืื ืืืฉืืื ืกืืืืงืืืืืื. ืืฉืืชืืืชื ืืืืื ืคืืชืื ืืคืืืงืฆืืืช ืืืืืคืื ืืชืืชื ืืช ืืืคืืืงืฆืืืช ืืจืืฉืื ืืช ืฉืื ืจืง ืขื ืกืืืืืืืจ ืืืืืืชื ืฉืืจืืข ืฉืื ื ืืกืืื ืืืชืื ืืฉืื ืฉืขืืื ืื ื ืงืื ื ืืขืฆืื ืืืฉืืจ ืืืืชื (ืื ืืื ืืืจ ืืฉื ipod touch). ืื ืงืืื ืฉืืื ืืช ืืฉืื ืฉืขืืื ืื ืืืฉื ืฉืชืืื ืจืง ืื ืืืื ืืจืื ืืืชืจ ืืืืจ ืืืื ืืช ืืฉืื ืฉืื ืฉืื ืืจืฆื ืืงื ืืช. ืืืืจื ืฉืงื ืืชื ืืช ื ipod touch ืงืืืืชื ืืืืืง ืืืืืืืฆืื ืฉืขืืจ ืื ืืืืฉืื ืขื ืืืืฉื ืืกืืืืงืืืื ืืื.
ืืฉืื ืื ื ืืืืืื ืืืฉืืื ืกืืืืงืืืืืื ืื ืื ื ืื ืคืืืขืื ืืกืืืื ืฉืื ื ืืืืืข ืืืฆืืื - ืืืืืง ืืืืคื. ืื ืื ื ืืขืืืืื ืืฉืงืขื ืืชืื ืืื ื ืฉืืืฆืืื ืืื ืชืืฆืื ืฉื ืชืืืื ืืืืืจ ืืืฉืื ืืื ืืื ืืช ืชืืืืืื ื ืืื ืื.
## ืืืืื ืืืชืจ ืืื ืชืืืืจืื
ืืขืืช ืืกืคืจ ืฉืืืฉ ืืื ืืืืชืงืข ืขื ืชืืืืจืื ืืืฆืื ื ืืชืื ืืช ืืื ืืืื ืืืืืช. ืื ืื ืฉืงืืจื ืืฉืื ืฉืื ืืืงืืื ืขืื ืงืืจืก ืืขืื ืงืืจืก ืื ืชืงืขืื ืขื ืคืจืืืงืืื ืฉื ืงืืจืกืื ืืชืจืืืืื ืงืื ืื ืืืงืื ืืืืฉื ืืช ืืืืข ืืืืชืงืื ืืคืจืืืงืืื ืืืชืจ ืืืืชืจ ืืืืืื.
ืืืืงืช ืืขืืืื ืืื ืืืืื ืืงืืจืก ืืืื ืขืืืื ืืืืชืืช ืืงืืจืก ืชืื ืืชื ืฆืจืืื ืืขืืื ืขื ืืืฉ-ืืื, ืืืืืจ ืื ืฉืขื ืฉืืฉืงืขืชื ืืืืืื ืืชื ืฆืจืืืื ืืืฉืงืืข 5 ืฉืขืืช ืืืชืืืช ืงืื ืืืืชื. ืื ืืืืจ ืฉืื ืฉืืืงื ืงืืจืก ืืืืื ืฉืืืืจื ืฉืื ืืื 8 ืฉืขืืช ืืืืื ืฆืจืื ืืืฉืงืืข ืื ืืกืฃ ื-8 ืฉืขืืช ืฆืคืื ืืืืืื ืขืื 40 ืฉืขืืช ืืืชืืืช ืงืื ืืืืชื ืขื ืื ืืฉืืื ืฉื ืืืื ืืืืืื.
## ืื ืกืืช ืืฉืืื ืืงืฆื
ืืขืืช ืจืืืขืืช ืฉืืืฆืจืช ืชืกืืื ืืชืืืื ืืืืืื ืืื ืื ืืกืืื ืืฉืืื ืืงืฆื ืืืืืื ืื ืืืชืจ ื ืืื ืืงืฆื ืืงืืืื. ืืืืื ืืื ืื ืืื ืืจื ืืืจืื ืืืื ืคืขืืื ืื ื ื ืชืงืข ืืืื ืฉืขืืช ืขื ืืืื ื ืืฉื ืืกืืื ืฉื ืจืื ืืืฉ ืงืื ืืื ืืฉืื, ืืฉืคืขืืื ืืืจืืช ืื ื ืจืฅ ืืืืื ืืืจ ืืืื ื ืืฉืืื ืืืจืื.
ืื ืืกืืื ืืกืืจ ืืช ืืืืืื ืืชืื ืกืืืืืก ืืืืืืื ืฉืืืงื ืื ืฉืืืฉ ืฉืขืืช ืืืืื ืืืฉืชืืฉ ื React Hooks ืชืืจื ืจืง ืชืกืืื.
1 419
# ืื ืฉืืชื ืื
ืื ืฉืืชื ืื ืืืืื ืฉื ื Docker Image ... ืขื ืฉืืชืืื ืืืืืืจ ืื ืืืงืื ืขื ืืืืกืง.
ืื ืฉืืชื ืื ืืืื ื ืืืขืื ื ืฉื ืืืชืจ ... ืขื ืฉืืชืืืื ืืืืืข ืชืืื ืืช ืืืืืฉืื ืฉืื ืืฆืืืืื ืืืชืืืจ.
ืื ืฉืืชื ืื ืืืืืืืช ืืฉืืืืชืืช ื DB ... ืขื ืฉืงืื ืืชืืื ืืืืืฉื ืขื Timeouts ืืืืืง ืืฉืื ืืขืืืก ืขื ืืืขืจืืช.
ืื ืฉืืชื ืื ืืืขืืืช ืืืืืื ืืงืื ... ืขื ืืคืจืืฆื ืฉืืคืืื ืื ืืช ืื ืืืขืจืืช ืืฉืืืขืืช.
ืื ืฉืืชื ืื ืฉืืงืื ืื ืื ืืืืืื ... ืขื ืฉืืืืข ืืชืื ืช ืืืฉ ืืฆืืืช ืฉืื ืืฆืืื ืืืฆืื ืืช ืืืืืื ืืืจืืืืื ืฉื.
ืืชืืื ื ืื ืืฉืื ืื ืื ืกืื ืฉื ืืืืจื. ืืฉ ืื ืืขื ืืืื ืืืืื ืฉืขืืืจืื ืื ื ืืืืืช ืืจืื ืืขืืืช ืืคื ื ืฉืืืืขืื ืืคืจืืืงืฉื. ืืืืืจื ืืฉืื ืื ืขืืืจืช ืืื ืืช ืืขืจืืืช ืืืืืช ืืืชืจ, ืืืืชืจ ืืื ืืื ืคืืชืืช ืืืชืืช ืืืืืจื ืืืืื ืืืฉืื ืืขืืืจืช ืื ื ืืืชืงืื ืืืชืื ืชืื.
1 419
https://kubernetes.io/docs/tasks/manage-kubernetes-objects/kustomization/.
ืื ื ืืืฆื ืฉืืขืืืื ืขื ืงืืืจื ืืก ืืจืื ืืืชืจ ืงื ืื ืืืกืชืื ืขื ืืืืืืืช ืขืืืืืช ืืขื kustomize ืื ืงื ืื ืืฉ ืชืืงืืืช ืืืืืืืช ืื ืืืื ืืืฃ ืืืืืืื ืฉื ืืคืจืืืงื ืืงืืฉืืจ:
https://github.com/kubernetes-sigs/kustomize/tree/master/examples.
1 419
command: ["/bin/sh", "-c", "echo Hello from the postStart handler > /usr/share/message"]
ports:
- containerPort: 6379
resources: {}
restartPolicy: Always
status: {}
ืืชืืื ืืงืืืฅ redis-service.yaml ืืื:
apiVersion: v1
kind: Service
metadata:
annotations:
kompose.cmd: kompose convert -f ../docker-compose.yml
kompose.version: 1.25.0 (a70f80cc)
creationTimestamp: null
labels:
io.kompose.service: redis
name: redis
spec:
ports:
- name: "6379"
port: 6379
targetPort: 6379
selector:
io.kompose.service: redis
status:
loadBalancer: {}
## ืชืืงืืืช components/datavolume
ืืชืืงืื ืืฉื ืื ืืื ืืงืืืคืื ื ืื ืืืชื ื ืจืฆื ืืฉืื ืืื ืื ืืกืืืื ืืกืืืืช. ืืคืฉืจ ืืื ืืช ืืื ืงืืืคืื ื ืืืช ืฉืืชื ืจืืฆืื ืืชืืจ ืชืชื ืชืืงืืืช ืฉื ืชืืงืืืช components. ืืื ืงืืืคืื ื ืื ืืฉ ืงืืืฅ kustomization.yaml ืืฉืื ื ืจืื ืื:
apiVersion: kustomize.config.k8s.io/v1alpha1
kind: Component
resources:
- data-persistentvolumeclaim.yaml
patchesStrategicMerge:
- redis-deployment.yaml
ืืงืืืฅ ืืืืจ ืฉืื ืืชื ืืฉืืืื ืงืืืคืื ื ืื ืื ืืชื ืฆืจืืืื ืืืืกืืฃ ืืช ืืงืืืฅ data-persistentvolumeclaim.yaml ืืื ืืกืฃ ืืืื ืฆืจืืืื ืืขืฉืืช Merge ืืขืจืืื ืืืงืืืฅ redis-deployment.yaml ืฉื ืืฆื ืืฆืื ืืชืืงืื. ืืงืืืฅ redis-deployment.yaml ืืื ืืืขื ืืื ืืื ืืฉื ืืื ืื ื ืชืืื ืืืชื:
apiVersion: apps/v1
kind: Deployment
metadata:
name: redis
spec:
template:
spec:
containers:
- name: redis
volumeMounts:
- mountPath: /data
name: data
volumes:
- name: data
persistentVolumeClaim:
claimName: data
ืืื ืื ื ืจืืืื ืฉืื ืื ืงืืืฅ Deployment ืืื ืืื ืจืง ืืืืง ืืืงืืืฅ ืฉืืชืขืกืง ืขื ื mount ืฉื ื volume ืืืืฉ. ืื ืฉืืืื ืืฉืื ืืงืืืฅ ืื ืฉื metadata.name ืืืื ืืื ืืืืชื deployment ืืืชื ืจืืฆืื ืืขืืื.
ืืงืืืฅ ืืืืจืื ืืงืืืคืื ื ืื ืืื data-persistentvolumeclaim.yaml ืืชืืื ื ืืื:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
creationTimestamp: null
labels:
io.kompose.service: data
name: data
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 100Mi
status: {}
ืื ืืืจ ืงืืืฅ yaml ืืื ืฉืืืฆืจ PersistentVolumeClaim. ืืืื ืฉืืื ืืชืื ืืงืืืคืื ื ืื ืืื ืืชืื base, ืื ืจืง ืกืืืืืช ืฉืืฉืชืืฉื ืืงืืืคืื ื ืื ืื ืืคืขืืื ืืืชื.
## ืชืืงืืืช overlays/dev
ืืกืืืื ืืจืืฉืื ื ืืื dev ืืืื ืืืืื ืจืง ืงืืืฅ kustomization.yaml ืืืื. ืื ืืชืืื ืฉืื:
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- ../../base
ืืืื ืืืขืฉื ืืฆืืื ืกืืืื ืืื ืืืืจื ื base. ืืกืืืืช ืืคืืชืื ืืื ืฉืื ืชืืกืคืช ืืฉืื ืฉืื ืื.
## ืชืืงืืืช overlays/production
ืกืืืืช ืืืืฆืืจ ืื ืืืจ ืกืืคืืจ ืืืจ ืื ืืื ืฆืจืืื ืืืืกืืฃ ืืช ืืงืืืคืื ื ืื ืฉืืฆืจื ื. ืื ื ืืงืืืฅ overlays/production/kustomization.yaml ืฉืืชืืจ ืืช ืืกืืืื:
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- ../../base
components:
- ../../components/datavolume
ืืคืขื ืื ืืกืฃ ื resources ืืฉ ืื ื ืืคืชื ืืืฉ ืืฉื components ืฉืืืื ืืขืจื ืฉื ืื ืืงืืืคืื ื ืืืช ืฉืฉืืืืืช ืืกืืืื. ืืืื ืฉืืชืืชื ืืื ืืช ืืงืืืคืื ื ืื ืื ืืฉืืื ื ืืช ืืืืืจืืช ืืกืืืืช ืืคืจืืืงืฉื ืื ืืืืื ืืช ืื base ืืื ืืช ืืงืืืคืื ื ืื.
## ืืื ืืื ืืช ืงืืฆื ืืืืจืืช ืืงืืืกืืจ
ืืืจื ืฉืื ื yaml-ืื ืืืงืื ืื ื ืืืื ืืืจืืฅ:
$ kubectl kustomize overlays/production
ืืืงืื ืืืกื ืืืื ืืืช ืืช ืื ืืืืจืืช ื yaml ืฉื ืกืืืืช production. ืืจืื ืคืขืืื ืื ืื ื ืื ื ืจืฆื ืืคืืื ืืืชืื ืืช ืืืืืจืืช ืืืื ืืงืืืฅ ืืื ืคืฉืื ื ืฉืื ืืืชื ืืฉืจ ืืงืืืกืืจ ืืืืคื ืืื:
$ kubectl kustomize overlays/production | kubectl apply -f -
ืื ืื ืืชื ืืขืืืคืื ืืืขืืืช ืืช ืืืขืจืืช ืืืืจืกืช ืคืืชืื ืื ืชืฆืืจืื ืืขืืื ืืช ืงืื ืคืืืืจืฆืืืช kubectl ืฉืืื ืฉืืชืืืจ ืืงืืืกืืจ ืืคืืชืื ืืื ืืืคืขืื:
$ kubectl kustomize overlays/dev | kubectl apply -f -
## ืืืคื ืืืืืื ืขืื
ืืชืืขืื ืฉื ืงืืืจื ืืก ืืืื ืืื ืคืจืงืื ืขื kustomize ืื ืื ืืชื ืืืืืื ืืงืจืื ืืช ืืชืืขืื ืฉื ืงืืืจื ืืก ืื ืืืื ืืฉืื ืืชืื. ืืืฃ ืืจืืืื ืื ืืื ืืงืืฉืืจ ืืื:1 419
# ืืืจืื: ืชืืืื ืืืกืคืจ ืกืืืืืช ืงืืืจื ืืก ืขื Kustomize
ืืฉืื ืื ื ืืื ืื ืืคืืืงืฆืื ืฉืฆืจืืื ืืจืืฅ ืขื ืงืืืกืืจ ืงืืืจื ืืก ืืจืื ืคืขืืื ื ืจืฆื ืืืืืช ืืกืืืืื ืืืจืืฅ ืืช ืืืคืืืงืฆืื ืขื ืงืืืกืืจืื ืฉืื ืื ืืกืืืืืช ืฉืื ืืช: ืงืืืกืืจ ืืกืืืืช ืืืืงืืช, ืงืืืกืืจ ืฉื ืกืืืืช ืคืืชืื ืืืืืื ืงืืืกืืจ ืืคืจืืืงืฉื.
ืืคืขืืื ืืงืืืกืืจืื ืืืื ืืืื ืืืื ืืืืคืืื ืื ืฉืืื ืืื ืืืจื ืืื ืืืคืืืงืฆืื ืชืฆืืจื ืงืฆืช ืืืฉืชื ืืช ืืื ืืงืืืกืืจืื: ืืืืืื ืืืื ื'ืื ืืกืืื ืฆืจืื ืืจืืฅ ืจืง ืืกืืืืช ืคืจืืืงืฉื ืืื ืืกืืืืช ืืคืืชืื, ืืืคืื Volume ืืกืืื ืืฉืชืืฉ ืืชืืงืื ืืงืืืืช ืืกืืืืช ืคืืชืื ืืื ืืืืกืื ืจืฉืช ืืกืืืืช ืืืืืงืืช ืื ืืคืจืืืงืฉื ืืื ืืืื.
ืืื ืื ืื ืืืืื ื ื kubectl ืื ืืืื ืฉืื ืืืื ืืื ืกืืืืืช ื ืงืจื kustomize. ืืคืืกื ืื ืืฆืื ืืืืื ืคืฉืืื ืืคืจืืืงื ืฉืืฉืชืืฉ ื kustomize ืืื ืืืืฆืจ ืงืืฆื yaml ืฉืื ืื ืืกืืืืืช ืืฉืื ืืช.
## ืืื ืื ืขืืื
ืงืกืืืืืื ืืืืง ืืช ืงืืฆื ื yaml ืฉื ืงืืืจื ืืก ื-3 ืชืืงืืืช ืืจืืืืืช:
1. ืชืืงืืืช base ืฉื ื ืืฆืืื ืงืืฆื ื yaml ื"ืืกืืกืืื", ืืคื ื ืฉืืชืืื ื ืืืชื ืืกืืืืืช ืืกืืืืืช. ืื ืืขืฆื ืืืืง ืฉืืฉืืชืฃ ืืื ืืกืืืืืช. ืืชืืงืื ืื ืืืื ืงืืืฅ ืืฉื kustomization.yaml ืฉืืืืื ืกืื ืฉื ืืื ืืงืก ืืื ืืงืืฆืื ืืชืืงืื.
2. ืชืืงืืืช components, ืืชืืื ืืคืฉืจ ืืืฆืืจ ืชืืงืื ืืื "ืคืืฆ'ืจ" ืฉื ืืงืืืกืืจ, ืืืชืื ืชืืงืืืช ืืคืืฆ'ืจ ืืืื ืื ืงืืฆื ื yaml ืฉื ืืืชื ืืคืืฆ'ืจ (ืื ืืงืืืคืื ื ื).
3. ืชืืงืืืช overlays ืฉืืชืืื ืชืืื ืชืืงืื ืืื ืกืืืื. ืืชืื ืื ืชืืงืืืช ืกืืืื ืืืื ืงืืืฅ kustomization.yaml ืฉืืืื ืืืจืืืช ืืืชืืื ืฉื ืงืืฆื ื yaml ื base ืื components ืขืืืจ ืกืืืื ืื.
ืื ืืืืจ ืฉืื ืืฉ ืื ืคืจืืืงื ืฉืืกืืืืช ืคืจืืืงืฉื ืฆืจืื ืืืื ื'ืื ืืืืื ืฉืื ืงืืื ืืกืืืืช ืคืืชืื, ืื ื ืืืื ืืืฆืืจ ืชืช ืชืืงืื ืืชืื components ืขื ืืฉื ืฉื ืื'ืื, ืืชืืื ืืฉืื ืืช ืงืืืฅ ื yaml ืืืชืืื ืื'ืื ืืื, ืืื ืืชืื
overlays/production/kustomization.yaml ืืืงืฉ ืืืืกืืฃ ืืช ืืงืืืคืื ื ืื ืฉื ืื'ืื ืืืืืจืืช ืืื ืื ืืกืืืืช ืคืจืืืงืฉื.
ืื ืื ืื ื ืฆืจืื ืืืฆืืจ ืืืชืจ replications ืืกืืืืช production, ืื ืืืื ืื ืืงืืืฅ overlays/production/kustomization.yaml ืืืจืื ืฉืืืืจืช ืฉืฆืจืื ืืฉื ืืช ืืช ืฉืื replication ืฉื ืืืืืงื deployment ืืกืืื ืืขืจื ืืืื ืืืชืจ.
## ืืืืื - ืคืจืืืงื ืฉืืืื ืืืคืื ืชืืงืื ืจืง ืืกืืืืช ืคืจืืืงืฉื
ื ืจืื ืืช ืื ืืจื ืืืืื ืคืฉืืื ืฉื ืกืจืืืก ืจืืืก ืฉืืกืืืืช ืคืจืืืงืฉื ืืืื ืืืคืื ืืืืืื ืืื ืฉืืืืืข ืืืฉืืจ, ืืื ืืกืืืืช ืคืืชืื ืืืืข ืืื ืืืืคืื ืืื ืฉืื ืคืขื ืฉื ืคืขืื ืืช ืืฉืจืช ื ืงืื ืืฆื ืืืฉ ืื ืงื.
ืืื ื ืืชืืงืืืช ืฉื ืืคืจืืืงื ื ืจืื ืื:
.
โโโ base
โ โโโ kustomization.yaml
โ โโโ redis-deployment.yaml
โ โโโ redis-service.yaml
โโโ components
โ โโโ datavolume
โ โโโ data-persistentvolumeclaim.yaml
โ โโโ kustomization.yaml
โ โโโ redis-deployment.yaml
โโโ docker-compose.yml
โโโ overlays
โโโ dev
โ โโโ kustomization.yaml
โโโ production
โโโ kustomization.yaml
6 directories, 9 files
ืชืืงืืืช ืืืกืืก ืืืืืช ืืช ืฉื ื ื yaml-ืื ืฉื redis ืฉื ืืจืฉืื ืืฉืืื ืืืคืขืื ืืช ืืฉืจืช.
ืืชืืงืืืช components ืืฉ ืื ืชืช-ืชืืงืื ืฉื ืงืจืืช datavolume ืืืชืืื ืงืืืฅ yaml ืฉืืืฆืจ Volume ืืืืื ืงืืืฅ yaml ืืืืชื ืฉื ืฉื ืงืืืฅ yaml ืืกืืกื (ื ืงืจื redis-deployment.yaml) ืฉืืืืื ืจืง ืืช ืืฉืื ืืืื ืืงืืืฅ ื deployment ืฉืืืคืขืื ืื "ืงืืืคืื ื ืื" ืื ืืฉืืืืช ืืื ืื.
ืืืชืืงืืืช overlays ืืฉ ืื ืชืืงืืืช ืขืืืจ ืื ืกืืืื dev ื production.
## ืชืืงืืืช base
ืขืืฉืื ื ืจืื ืืช ืืงืืฆืื ืืื ืชืืงืื. ืชืืืื ื base ืืงืืืฅ ืืื ืืขื ืืื ืืื kustomization.yaml ืฉืืืืื ืกืื ืฉื ืืื ืืงืก ืขื ืชืืงืืืช ืืืกืืก:
resources:
- redis-deployment.yaml
- redis-service.yaml
ืื ืื ืฉืืฉ ืืงืืืฅ ืื ืืคืชื ืืืื ืืฉื resources ืฉืืืื ืืขืจื ืฉื ืงืืฆื yaml ืฉืฉืืืืื ืืคืจืืืงื.
ืชืืื ืืงืืืฅ redis-deployment.yaml ืืื:
apiVersion: apps/v1
kind: Deployment
metadata:
annotations:
kompose.cmd: kompose convert -f ../docker-compose.yml
kompose.version: 1.25.0 (a70f80cc)
creationTimestamp: null
labels:
io.kompose.service: redis
name: redis
spec:
replicas: 1
selector:
matchLabels:
io.kompose.service: redis
strategy:
type: Recreate
template:
metadata:
annotations:
kompose.cmd: kompose convert -f ../docker-compose.yml
kompose.version: 1.25.0 (a70f80cc)
creationTimestamp: null
labels:
io.kompose.service: redis
spec:
containers:
- image: redis:6.2
name: redis
lifecycle:
postStart:
exec:1 419
ืืืงืจ ืืื ืืืืื ืืืื ืืฉืขื 10:00 ืืืืื ืจ ืื ืืืฉ ืืคืืืชืื 3.10 ืืืืื ืื ืืืฆืืจืฃ ืืืื:
ynon@ynonperek.com is inviting you to a scheduled Zoom meeting.
Topic: ืื ืืืฉ ื Python 3.10
Time: Dec 2, 2021 10:00 AM Jerusalem
Join Zoom Meeting
https://us06web.zoom.us/j/84743902303?pwd=UXpIWExqWnhlZ1gxT0xBTHdkMlprQT09
Meeting ID: 847 4390 2303
Passcode: 714926
One tap mobile
+16699006833,,84743902303#,,,,*714926# US (San Jose)
+12532158782,,84743902303#,,,,*714926# US (Tacoma)
Dial by your location
+1 669 900 6833 US (San Jose)
+1 253 215 8782 US (Tacoma)
+1 301 715 8592 US (Washington DC)
+1 312 626 6799 US (Chicago)
+1 346 248 7799 US (Houston)
+1 646 876 9923 US (New York)
Meeting ID: 847 4390 2303
Passcode: 714926
Find your local number: https://us06web.zoom.us/u/kciHlAHior
1 419
# ืืฆืื ืืช ืืืืืืื
ืฉืืื ืคืืคืืืจืืช ืืืื ืืืฆืื ืืขืืืช ืืืืจืืช ืืงืื ืขืืืืช ืืื- ืืืงืืื ืงืื ืฉืื ืขืืื ืืงืื ืืืื ืฉืขืืื ืืืชืืืืื ืืื ืืื ืืืคืื ืืืชื ืืืืชืจ ืืืืื. ืืกืืจืื ืืื ืื ืืฆืื, ืืืืืคืื ืฉืืืช ืฉื ืคืื ืงืฆืืืช ืืืฉืชื ืื ืื ืืช ืกืืจ ืืงืจืืืืช ืขื ืฉืืงืื ืฉืื ืขืืื ืืืื ืืื ืืงืื ืฉืขืืื.
ืืืคืฉืื ืืืจื ืืงืื ืฉืื ืขืืื ืืชืืื ืืขืืื - ืืื ืืืชื ืื ื ืจืื ืื ืขืฉืื ื ืื ืืกืืจ.
(ืืืื ืืฉ ืื ืื ืื ืืืื ื ืืฉื git bisect ืฉืื ืื ืืืืืง ืขื ืืจืขืืื ืืื)
ืืืชืจืื ืืฉืืื ืืื ืฉืืกืืฃ ืื ื ืืื ืืกืคืืง ืืชืืืืื ื ืืืข ืืงืื ืฉืขืืื. ืืืืกืจืื - ืื ืชืืื ืงืื ืขืืื ืืื ืืืืจื, ืืืฉืืืคืฉืื ืืืืืื ืืคืขืืื ืงืฉื ืืจืืืช ืืื ืืืจืกื ืืืช ืขืืืืช ืืืฉื ืื ืื.
ืื ืื ืื ืื ื ืืืฉ ืชืงืืข ืื ื ืืื ืขื ืืฉืืง ืืฆื ืืช ืืืืืืื, ืืื ืืืขื ืชืืื ืขืืืฃ ืืจืืช ืืขืืืง ืืืขืื ืืืืืื ืื ืฉืืืจ ืขื ืืงืื ืืฉืืืจ, ืืื ืงืฉืจ ืืืืจืกื ืฉืขืืืืช.
1 419
# ืืืืืืช ืขื ืขื ื ืื
ืืคื ื ืคืืืช ืืขืฉืจืื ืฉื ื ืืฉืจืชื ืืื ืืงืก ืขืืืื ืืืชื ื ืืืืืช ืืืืื ืฉื ืืคืชืื ืชืืื ื. ืืืืจืืช ืจืืืช ืืื "ืืืจ ืฉืจืชืื" ืื ืืืืกื ื ืฉืจืชื ืืื ืืงืก ืฉืืืื, ืืืืจืืช ืืืจืืช ืืื ืฉืืืจืืช ืฉืจืช ืฉืื ืฉืืฉื ืืืืื ืืืืช ืฉืจืชืื. ืื ื ืืืฉืืช ืขืื ืืืืชื ืืขืืื ืขื ืืืื ืช HP True 64 ืฉืืืฉืืช ืืชืื ืืจืื ืืืืจ ืืืืฉื ืืืืืจืื.
ืืคืืื ืืคื ื ืขืฉืจ ืฉื ืื ืขืื ืขืืืชื ืืกืืืจื ืืค ืฉืฉืืจ ืฉืจืช ืืืจืื ืืืื ืืืืจืื ืืืืจื, ืืืจืืช ืฉืื ืืืจ ืืจืืฅ ืืื ืืงืก.
ืืื ืืืืืืืช ืืืจืืืืืืืฆืื ืืคืื ืืช ืื ืืขืกืง ืฉื ืฉืจืชืื ืืืืืช ืืืจืื ืืช ืืืืืชืจ. ื ืืื ืืฉ ืืืจืืช ืืืืืืช ืฉืืชืืืงืืช ืืืืช ืฉืจืชืื ืขื ืงืืืช, ืืื ืจืืื ื ืื ื ืืื ืืืงืจ ืืื. ืืืงืื ืื ืื ืื ื ืืงืืืื ืฉืจืช ืืืจืืืืื ืคืจืื ืืขืืืช ืืืขืจืืช ืฉืขืืฉื ืืืชืจ ืืขืืื ืืจืื ืืืชืจ ืืื ืืืืคืืฆืช ืฉืืฉืื ืืืจืื.
ืืืื ืฉืืฆืืื ื ืื ืฆื ืืช ืฉืจืชื ืืืื ืืงืก ืื ื ืจืืฆื ืืืืืื ืฉืื ืืขืจืืืช ืืขื ื ืฉืืฉ ืืืื ืืืืืคื ืืื ืืื ืืืขืจืืืช ืืืืืช ืืืชืจ. ืืื ืืืืืืืช ืฉืื ืืืื ืืื ืืืืืืืช ืขื ื ืฆืจืืืืช ืืขืืื, ืืืืื ืื ืืืืกืืฃ ืืืืืืช ืฉืืื ืืชืืืืืช:
1. ืื ืฉืืจืืชื ืืขื ื ืฆืจืืืื ืืขืืืจ ืกืื ืืจืืืืฆืื. ืื ืฆืจืื 5 ืืจืืื ืฉืื ืืช ืืืืกื ืงืืืฅ. ืื ื ืืืื ืขื ืืืฉืง ืืื ืืืืกืก CLI ืฉืืขืืื ืืื ืืขื ื ืื ืืฆืืจื ืืื.
2. ืฆืจืืื ืืืืืช ืืจื ืงืื ืืืงืื ืขื ื ืืืืช. ืืื ืฉืืืื ืืฉ ืื ืืื ืกืืฃ ืืืื ืืืชืงืื "ืฉืจืช ืืื ืืงืก" ืืืืช, ืื ืืืืชื ืจืืฆื ืืืงืื "ืขื ื" ืืืชื ืฉืืชืืื ืืื ืืืืฉืง ืืกืื ืืจืื ืฉืืืืจื ื ืขืืื.
3. ืืืืืจ ืฉื ืฉืืจืืชื ืขื ื ืืืื ืืจืืช ืืฆืืจื ืืฉืืขืืชืืช. ืืืื ืจืืื ื ืืงืืื ืืืืฉื ืฉื ืืืืจ ืื ืืกื ื ืืื ืืื ืืคืชืืช ืืืชื ืคื ืืื ืืื ืืื ืฉืืฉืืืืฉ ืขืืื ืืืืืจ ืขืืื ืืฆืืจื ืื ืคืจืืคืืจืฆืืื ืืืืช. ืืชื ืื ืจืืฆืื ืืืขืช ืืื ืขืื ืคืขื ืฉืจืช ืืื ืืงืก ืืื ืืืจืื.
4. ืื ืื ื ืฆืจืืืื ืืจื ืืฉืชืฃ spec ืฉืื ืฉื ืืขืจืืช ืขื ืขื ื. ืืฉืื ืืื helm chart ืื docker compose ืขืืืจ ืื ืืืชื ืืื ืกืืฃ ืืืฉืงืื ืฉื AWS ืื Azure ืื GCP ืื ืื ืฉืื ืชืจืฆื.
ืืื ืืื cloudbridge ื ืืชื ืืืืื ืืื ืืืืืืจ ืืื ืืื ืขื ื ืื ืืื ืชืืื ืืฉืืืืืจ ืืืื ืืืฆืื ื "ืฉืืชืืืฉ" ืขื ืชืฉืชืืช ืงืืืืช ืืฉืืืืฉ ืื ืืืื ืืืืืช ืคืืืช ืืืคืืืืื ืืืฉืจ ืฉืืืืฉ ืืฉืืจ ืืชืฉืชืืช ืืงืืืืช. ืืืงืจื ืฉื ืืื ืืงืก - ืืื ืืงืก ืื ืื ืืชืืจ ืืื ืฉื ืืชื ืืืฉืง ืืืื ืืื ืืืื ืืช ืืืื ืืงืก ืืฉืื ืืช. ืืื ืื ืืชืืจ ืืขืจืืช ืืคืขืื ืืืฉื ืฉืขืืืืช ืืืชืจ ืืื, ืืืื ืขื ืืื ืืืืืืืช ืืืจืืืืืืืฆืื ืืืืืฃ ืืช ืื ืื ืฉืืื ืืคื ืื. ืื ืกืื ืืฉืื ืื ืฉืืืืชื ืจืืฆื ืืจืืืช ืื ืืขืืื ืืขื ื ืื.
ืืื ืืชืื? ืืืื ืืืืืืช ืืฉ ืืื ืขื ืืขื ื?
1 419
# ืงืืื ืืฉืคื
ืืื ืืฉืื ืืืื ืืงืื ืื ืฉื ืคืืืชืื 3.10 ืืื ืืชื ืืคืฉืจืืช ื zip ืืืืืง ืื ืืงืื ืฉืงืืื ืืื ืฉืืื ืืืืจื. ืื ื ืืืืืจ ืืืืืช ืงืืจืืื ืฉืื ืืืืขื ืืคืืืชืื, ืฉืืคืื ืงืฆืื ืืืค ืืงืืืช ืืกืคืจ "ืจืฉืืืืช" ืืืืืฆืจืช ืจืฉืืื ืืืช ืืืืืืช ืื ืื ืืืืจ ืืื ืจืฉืืื ืฉื ืืืืจืื ืืื ืจืฉืืืืช ืืงืื. ืืืงืกื ืื ื ืืืื ืืืืื ืฉืื ื ืฉืืข ืืกืืจืื ืื ื ื ืกื ืืงืื. ื ื ืื ืฉืืฉ ืืื ืืช ืืจืฉืืืืช:
a = [1, 2, 3]
b = ['a', 'b', 'c']
c = ['@', '!', '#']
ืื ืืคืขืื ืฉื zip ืขื ืฉืืืฉืช ืืจืฉืืืืช ืชืืืืจ ืจืฉืืื ืืืช ืฉื ืฉืืืฉื ืืืืจืื ืฉืื ืืื ืืื ืืืจืื ืืืืืจ ืืื ืืื ืืืช ืืืจืฉืืืืช, ืืืืืจ:
>>> list(zip(a, b, c))
[(1, 'a', '@'), (2, 'b', '!'), (3, 'c', '#')]
ืืื ืืฉ ืคื ืืืืืืช ืฉืืืืจืช ืฉ zip ืืขืฆื ืืืืืจ ืืืืจืืืจ ืืื ืจืฉืืื, ืืื ื ืฉืื ืืช ืืืืื ืืื ืฉื ื ืืื ืืฆื ืืขืืฉืื ืื ืืื ืื ืจืืืื ืื ืืกืืคืืจ ืฉื ืืคืืกื.
ืืงืืฆืืจ ืืืขืื ืฉื ืืืค ืืื ืื ืขืืฉืื ืืฉืืจืฉืืืืช ืื ืืืืชื ืืืจื. ืืคืืืชืื ืืืืืื ืืคื ื ืืจืื ืฉื ืื ืฉืืคืืชืจืื ืืืื ืืงืืช ืจืง ืืช ืืืืง ืืจืฉืืืืช ืฉืื ืืชืืื ืืืืจื. ืืืืืื ืืืจืืช ืื ืืจืฉืืื a ืชืืื ืืจืืื ืืืชืจ ืืืฉืืจ:
a = [1, 2, 3, 4, 5, 6]
b = ['a', 'b', 'c']
c = ['@', '!', '#']
ืื ืืชืืฆืื ืฉื ื zip ืชืืฉืืจ ืืืืืง ืืืชื ืืืจ - ืืืืืืจืื ืืขืืืคืื ื a ืคืฉืื ืื ืืงืืื ืืืคืื.
ืขืืฉืื ืชืฉืืขื ืื ืืื ืืืจืื ื ืืืฉืจ ืืืืื ืขื ืื:
> It is clear from the author's personal experience and a survey of the standard library that much (if not most) zip usage involves iterables that must be of equal length.
ืืืืืฉื ืืืชื ืืกืื:
> In fact, the author has counted dozens of other call sites in Python's standard library and tooling where it would be appropriate to enable this new feature immediately.
ืืืืืื ืคืฉืืืืช ืืกืคืจ ืื ื ืืจืื ื ืฉืืคืืืชืื, ืืคืืืช ืืกืคืจืื ืืกืื ืืจืืืช, ืืชืื ืชืื ืืฉืชืืฉืื ืืืืค ืืฉืื ืืืฉืืื ืฉืืงืื ืฉืืื ืืื ืืืืชื ืืืืจื, ืืื ืื ืืืืืืื ืืคื ื ืื ืืืืืงื ื ืืกืคืช ืฉืื ืืืืช ืืืฆื. ืืื ืื ืืืฆื ืืกืคืจืื ืืกืื ืืจืืืช ืืคืฉืจ ืืื ืื ืฉืื ืชืืคืขื ืืืืืืืืช.
ืืคื ืืฉ ืฉื ื ืืืจืื ืฉืฆืจืื ืืฉืื ืื ืืืืื:
1. ืื ืืื ืืื ืืืื ืืขืืืฃ ืืช zip ืืคืื ืงืฆืื ืืืฉื (ื ืงืจื ืื safezip) ืฉืืืืงืช ืฉืืื ืื ืจืฉืืืืช ืืงืื ืืืืชื ืืืืจื. ืืขืืื ืื ืืืื ืขืฉื ืืช ืื.
2. (ืืื ื ืืืืฉ ืฉืื) - ืืืจื ืืชืืกืคืช ื zip ืืคืืืชืื 3.10, ืืจืื ืื ืฉืื ืืชืืืื ืืืขืืืจ ืืช ืืคืจืืืจ ืืืืฉ ืืืคืืื ืืกืชืืื ืืืืจ ืขื ืืื ืฉืื ืืขืืืจืื ืืืชื.
ืงืื ืืื ืืืจ ืืืืง. ืื ืฆืจืื ืืืืืช ืืืจืื ื ืืื ืืืชืื ืืช safezip, ืืืืืคื ืืืื, ืืฉืืชื ืืื ืื ืืช ืืืขืจืืช ืฉืืื - ืฉืืื ืืืฉืงืืข ืืืชืืืช ืคืื ืงืฆืืืช ืขืืจ ืืืกืืจืช ืืงืื ืฉืชืขืืืจ ืืืชืื ืชืื ืืืืจืื ืืฆืืืช ืืืฉืชืืฉ ื Best Practices, ืื ืื ืืืชื Best Practices ืขืืืื ืื ื ืื ืกื ืจืฉืืืช ืืฉืคื ืื ืืืื ืืืืืื ืฉืืื.1 419
# ืฉืืืฉ ืืืืืืืช ื Structural Pattern Matching ื Python 3.10
ืืงืจืืช ืืืืืื ืจ ืืืื ืืืืฉื ืืงืจืื ืื ื ืืืจ ืืขืืืง ืขื ืคืืืชืื 3.10 ืืคืืฆ'ืจ ื Structural Pattern Matching ืฉืื, ืืฉืืชื ืืื;ืืง ืืช ืืกืืคืืจ ืขื ืฉืืืฉ ืืืืืืืช ืงืฆืจืืช ืฉืืจืืืช ืืื ืื ืขืืื ืืืื ืื ืืื.
## ืืืคืื ืืืืจืืืืช ืืืกืคืจืื ืืืื ืืืช
ืืืืืจืช ืืชืืืืจ ืืืืฉ ืฉื ืืคืืฆ'ืจ ืืฉ ืื ื ืืช ืืืืื match ืืืืืื case. ืืืจื match ืื ืื ื ืืืชืืื ืฉื ืฉื ืืฉืชื ื, ืืื ื ืงืืืืชืืื, ืืื ืืชืืืืื ืืืชืื ืืืืงืื ืฉื case. ืืืจื ืืืืื case ืืืืข ืืฉืื ืฉื ืงืจื ืชืื ืืช. ืืฉ ืืจืื ืกืืืื ืฉื ืชืื ืืืช ืื"ืืชืืื" ืืื ืืงืื ืืชืื ืืช ืืื ืฉืงืืืขืช ืืืื ืืืืง case ืืืืฆืข. ืืคืฉืจ ืืืฉืื ืขื Pattern Matching ืืื ืืืืง if, elif, elif, else ืขื ืง - ืจืง ืืชืืืืจ ืงืฆืช ืืืชืจ ืคืฉืื.
ืืฉืืื ืืืืืื ืืจืืฉืื ื ื ืืชืื ืคืื ืงืฆืื ืฉืืงืืืช "ืืฉืื" ืฉืืืื ืืืืืช ืืกืคืจ ืื ืืืจืืืช ืืืืคืืกื ืืืจื ืืืืขื ืฉืื ื ืืื ืกืื ื ืชืื ืื ืฉืืชืงืื. ืืืืจืกื ืืื pattern matching ืื ืืื ืืืื ืืืืจืืืช ืื:
import numbers
def go(x: str|float):
if isinstance(x, str):
print(f"Welcome, {x}")
elif isinstance(x, numbers.Number):
print(f"I see you have {x} apples")
go(10)
go("ynon")
go("bye bye")
go(2.5)
ืืขื Pattern Match ืื ื ืืืื ืืืืคืจื ืืืงืจืืืืช ื isinstance ืืืงืื ืืช ืืืืจืกื ืืืื:
import numbers
def go(x: str|float):
match x:
case str():
print(f"Welcome, {x}")
case int()|float():
print(f"I see you have {x} apples")
go(10)
go("ynon")
go("bye bye")
go(2.5)
ืืืื ืืกืืืจืืื ืืขืืืืื ืืืจื ืืืืคืืก ืื ืืืืืงืื ืื ืืคืฉืจ ืืจืฉืื ืืชืืื ืืกืคืจ ืื ืืืจืืืช, ืืื ืืชื ืื ืืชืืื ืจืง ืื ืืืืจ ืฉืงืืืื ื ืืื ืืืืืง ืืื ืฉืืกืืืจืืื ืืขืืืืื. ืืงืืข ืืื ืืืฉื ืืืื ืืืืช ืงืื ืืืืืืช ืืงืื ืืืืคืืก ืืืืขื ืืืืืืช:
import numbers
def go(x: str|float):
match x:
case str("secretcode"):
print("Bravo! You Won!")
case str():
print(f"Welcome, {x}")
case int()|float():
print(f"I see you have {x} apples")
go(10)
go("ynon")
go("bye bye")
go('secretcode')
go(2.5)
## ืืืฆืืข ืคืงืืืืช ืืืื ื ืื ืืืืข
ืืื ืื ืฉืืืืช ื ืืื ื case ืื ืฉืืคืฉืจ ืืืชืื ืฉื ืื ืืื ื ืืืจืื ืืชืืจ ืชืื ืืืช, ืืื ืชืื ืืช ืขืืฉื ืืฉืื ืงืฆืช ืืืจ. ืืืืืื ืืงืืืืช ืืชืื ืืืช ืืื ืืืืืื int ื str ืฉืชืืจืืื ื isinstance. ืืืืืื ืืืื ืื ื ืืฉืชืืฉ ืืกืืืจืืื ืืจืืืขืื ืืชืืจ ืชืื ืืช ืืื ืืืืืง ืฉืจืฉืืื ืืกืืืืช ืืืืขื ืืืื ื ืืกืืื.
ืืืฉืืื ืืืืง ืืื ืืื ืืื ืืช ืชืืื ืืช ืฉืืงืืืช ืคืงืืืืช ืืคืจืืืจืื ืืคืงืืืืช ืืืืฆืขืช ืืืชื, ืืืฉื ืืคืงืืื add ืชืืกืืฃ ืืช ืืืกืคืจ ืฉืงืืืื ืืคืจืืืจ ืืืืื ืืื ื ืืืืืืื ืืืคืงืืื print ืชืืคืืก ืืช ืืืชื ืืื ื:
accumulator = 0
def process(line: str):
global accumulator
match line.split():
case ["add", n]:
accumulator += float(n)
case ["print"]:
print(accumulator)
case _:
print(f"Unknown command: {line}")
process("add 10")
process("add 20")
process("print")
process("add -30")
process("add 5")
process("print")
process("x")
ืฉืืื ืื ื case ืืืืจืื ืขื ืืงื ืืชืืชื. ืงื ืชืืชื ืืกืื ืชืื ืืช Catch All ืฉืชืชืืื ืืื ืื ืฉืชืชื ื ืื, ืฉืื ืืืขืฉื ืืืืง else ืฉื ืืงืื.
## ืฉืืืืฉ ื Guards
ืืคืขืืื ืืื ืื ื ืืจื ืืืชืื ืืืืืง ืืช ืืชืื ืืช ืฉืื ืื ื ืจืืฆืื ืืืฉืืื ืื ืืคืฉืจ ืืฉืื ืงืื ืคืืืชืื ืืืื ืฉืืืื ืืืกืชืื ืขื ืืชืืื ืืชืื ืืช ืืืืืืง ืืืชื. ืืงืื ืืื ืืื ืืืืืฉ ืคืฉืื ืืคืื ืงืฆืืืช ืขืจื ืืืืื ืฉื ืืกืคืจ:
def myabs(n: int):
match n:
case int() if n > 0:
return n
case int() if n < 0:
return n * -1
case _:
raise Exception(f"Invalid Input {n}")
print(myabs(10))
print(myabs(-8))
print(myabs("foo"))
## ืื ืืืื
ืืื ืื ืคืืฆ'ืจ ืืืฉ ืืื ืืื ืืืชืืื ืืืฉืชืืฉ ืื ืืชืืื ืืืช ืฉืืื ืืื ืืืชืจืื ืืืื ืืืืืืื ืื ืืขืชืื ืขืืื. ืืืืจื ืืืื ืืชื ืชืืื ืืื ืืืจืื ืฉืชืืืื ืืื ืื ืืขื ืืืจืื ืฉืืคืชืืขื ืืชืื.
ืฉืืื ืื ืืงืจืื ืืช ื Tutorial ืฉืืฆืืจืฃ ืืคืืฆ'ืจ ืืงืืฉืืจ:
https://www.python.org/dev/peps/pep-0636/
ืืืืจื ืฉืชืจืืืฉื ืืืชืจ ืื ืื ืขื ืืคืืฆ'ืจ ืืืืืฅ ืืงืจืื ืืช ื PEP ืืืื ืืงืืฉืืจ:
https://www.python.org/dev/peps/pep-0634/1 419
# ืขืืงืจืื ืืจืฆืฃ
ืืขืืงืจืื ืืคืฉืืืช ืืืืจ ืฉืืืชืจ ืงื ืืขืฉืืช ืืืจ ืฉืขืฉืืช ืืชืืื ืืืฉืจ ืืืจ ืืืฉ. ืื ื ืืื ืืจืืื ืฉืื ืื ื ืจืืืื ืืืชื ืืคืขืืื:
1. ืืฉืื ื ืืืชื ืคืืกื ืืืืืงืก ืฉืื ืืืจ ืคืชืื ืขื ืืงืืืฅ ืื ืืื ืืืืคื ืื ืืื. ืืืืืฆืช ืืคืชืืจ ืืื ื ืฉืื ืืืชืจ ืืื ืืืืื ืก ื Pipeline ืฉื ืืคืจืกืื. ืืื ืคืฉืื ืขืืื.
2. ืืจืื ืืืชืจ ืงื ืืืชืื ืคืืฆ'ืจ ื ืืกืฃ ืืคืจืืืงื ืงืืื ืืืฉืจ ืืขืฉืืช ืืช ืืืฆื ืฉืขื ืืจืืฉืื ื ืฉื ืคืจืืืงื ืืืฉ. ืื ืื ืจืง ืคืืฆ'ืจ ืื ืื ื ืืืจ ืืืืขืื ืืืืื ืกืคืจืืืช ืืืฉืชืืฉ, ืืื ืืื ืืช ืืช ืืคืจืืืงื, ืืื ืื ืืงืื ืืืจ ืคืชืื ืืชืื ืืขืืจื.
3. ืืจืื ืืืชืจ ืงื ืืืืฉืื ืคืขืืืืช ืืืคื ืืช ืืฉืืชื ืืืืฉืจ ืืืฉืจ ืืงืื ืืืืืจืกื ืืืจื ืืฆื ืฉื ื ืืื ืคืขืืืืช.
ืืื ืืืืืืืื- ืื ืืชื ืืืจ ืืชืื ืชืืืื ืืืืื ืืืฉ ืื ืืฆื ืฉืขื ืคื ืืื ืชืืื ืืืื ืืืื ืชืจืืื ืฉืฉืืื ืื ืกืืช, ืื ืืืื ืืืืื ืืจืืืช ืื ืืงืกื ืืงืจืื. ืืฉ ืืื ืกืืฃ ืืืจืื. ืืื ืื ืืชื ืื ืืชืืืื ืืืืื ืืืฉ ืื ืืฆื ืฉืขื ืคื ืืื, ืืกืืืื ืฉืืื ืชืืฉืงืข ื"ืืชืืืช" ืชืืืื ืืืืืื ืืื ืืืื ื ืืื. ืจืฆืฃ ืฉื ืืืืื ืคืืชื ืืช ืืืคืฉืจืืช ืืืฉืชืืฉ ืืืื ืื ืงืื ืื ืืชืื ืืื ืืืชืงืื ืื ืืื ืืืฆืจ ืื ื ืขืื ืืื.
ืืชืืฆืื ืฉื "ืขืฉืจ ืืงืืช ืืืื" ืืื ืืจืื ืืืชืจ ืืฉืืขืืชืืช ื 70 ืืงืืช ืืจืืืืืช ืืืื ืืื. ืขืฉืจ ืืงืืช ืืืื ืืืฆืจืืช ืจืฆืฃ, ืืื ื ืกืคืืจ ืืช ืืื ืืืืืื ืืืจื ืฉืืืข ื ืืื ืฉืขืืจื ื ืืงืืืช ืืช ื 70 ืืืคืืื ืืช ื 140 ืืงืืช. ืจืฆืคืื ืขืืืจืื ืื ื ืื ืฆื ืืช ืืืื ืืื ืืืชืจ ืืขื ืืืจืื ืฉืืฉืืืื ืื ื. ืฉืืื ืืืชืืืฅ ืืื ืืืฆืืจ ืืืชื.
1 419
# ืคืืืชืื ืืืคืชืืืช ืืื ืืจืืืืช
ืืื ืืขื ืืื ืืชืืื ืืช ืฉืื ืืืืืจ ืื ืืคื ื ืืื ืืืื ืืื ืืฉืื ืืืฉืชืืฉ ื Type Checking ืืคืืืชืื. ืืงืื ืฉืื ืืืจื ื ืืงืื ื ืจืื ืืฉืื ืืื:
filters = [
{ id: 12, filter: None },
{ id: 15, filter: None },
{ id: 16, filter: lambda x: x > 7 }
]
def run_filter(filter_id, data):
fn = next(x for x in filters if x.get("id") == filter_id)["filter"]
return [x for x in data if fn(x)]
print(run_filter(16, [2, 5, 9, 11, 20]))
ืืืงืื ืืืคืขืื ืืช ืคืืืืจ ืืกืคืจ 16 ืืงืื ืืชืจืกืง ืขื ืืฉืืืื ืืืื:
Traceback (most recent call last):
File "/Users/ynonp/tmp/blog/c.py", line 11, in <module>
print(run_filter(16, [2, 5, 9, 11, 20]))
File "/Users/ynonp/tmp/blog/c.py", line 8, in run_filter
fn = next(x for x in filters if x.get("id") == filter_id)["filter"]
StopIteration
ืฉืืืืจืช ืฉ next ื ืืฉื ืื ืืื ืื ืืฆื ืืฃ ืคืืืืจ ืฉืืชืืื ืืชื ืื. ืื ืืืืจ ืื ืื ื ืื ืืืื ืฉืืืืืจ ืคืืืืจ ืฉื id ืฉืื ืืื 16. ืืจืืข ืืงืื ืื ืืืื Type Hints ืืืื ืื mypy ืื ืืชืืื ื.
ื ืืกืืฃ Type Hints ืื ืจืื ืื ืื ืืขืืืจ ืืงืื ืืืชืจ ืืืืข:
from collections.abc import Callable
from typing import TypedDict
class Filter(TypedDict):
id: int
filter: Callable[[int], bool]|None
filters: list[Filter] = [
{ id: 12, filter: None },
{ id: 15, filter: None },
{ id: 16, filter: lambda x: x > 7 }
]
def run_filter(filter_id, data):
fn = next(x for x in filters if x.get("id") == filter_id)["filter"]
return [x for x in data if fn(x)]
print(run_filter(16, [2, 5, 9, 11, 20]))
ืืชืืื ืืช ืขืืืื ืืชืจืกืงืช ืืื ืขืืฉืื ืืคืืืช mypy ืืฆืืื ืืืฆืื ืืขืืืช:
$ mypy b.py
b.py:9: error: Expected TypedDict key to be string literal
b.py:10: error: Expected TypedDict key to be string literal
b.py:11: error: Expected TypedDict key to be string literal
Found 3 errors in 1 file (checked 1 source file)
ืืื ืืืืงื ืืืชืจ ืืฉืืจื 9 ืืืฉืฃ ืืช ืืืขืื:
{ id: 12, filter: None },
ืฉืืืชื ืืืชืื ืืจืืืืช ืืกืืื ืืืคืชืืืช id ื filter. ืคืืืชืื ืืืื ืจืืื ืืื ืืืขืก ืขื ืืคืชืืืช ืืืืืื ืืื ืืจืืืืช, ืืื ืืืื ืฉืืืืืื id ื filter ืื ืคืื ืงืฆืืืช ืืืื ืืช ืืฉืคื ืืื ืื ืืชืจืืฉ ืืืฉืชืืฉ ืืคืื ืงืฆืื ืืชืืจ ืืคืชื. ืื ืืืื ื ืืืกืืคืื ืฉืืจืช ืืืคืกื ืืืื ื ืืืืื ืฉืืืืืื ื ืจืื ืืืื ืืื:
[{<built-in function id>: 12, <class 'filter'>: None}, {<built-in function id>: 15, <class 'filter'>: None}, {<built-in function id>: 16, <class 'filter'>: <function <lambda> at 0x1032b3d90>}]
ืืืื ืชืืื ืืฉืืืื ืื ืืช ืืืขืื ืืชืืงืื ืืื ืืืืง ืืงื:
from collections.abc import Callable
from typing import TypedDict
class Filter(TypedDict):
id: int
filter: Callable[[int], bool]|None
filters: list[Filter] = [
{ "id": 12, "filter": None },
{ "id": 15, "filter": None },
{ "id": 16, "filter": lambda x: x > 7 }
]
def run_filter(filter_id, data):
fn = next(x for x in filters if x["id"] == filter_id)["filter"]
return [x for x in data if fn(x)]
print(run_filter(16, [2, 5, 9, 11, 20]))
ืืืืจืกื ืืืืจืื ื ืืืจ ืืฆืืืื ืืืืคืืก ืืช ืื ืืขืจืืื ืฉืขืืืจืื ืืช ืืคืืืืจ, ืืื ืืกืฃ mypy ืื ืืืฆื ืืืชืจ ืฉืืืืืช.
ืื ื ืืื ืฆืจืื ืื ืืขื ืืื ืจืข ืืฉืืื ืืืคืื ืืืืืง ืขื ืืคืื ืงืฆืืืช ืืืืื ืืช ืืฉืคื ืืืืืื ืื ืฉืืื, ืืืืืงื ืืืื ืื ืฉืืื ืืืชืจืื ืืืชืื Type Hints ืืื ืืืืื ืืช.
Endi mavjud! Telegram Tadqiqoti 2025 โ yilning asosiy insaytlari 
