uz
Feedback
ToCode

ToCode

Kanalga Telegramโ€™da oโ€˜tish

ื˜ื™ืคื™ื ืงืฆืจื™ื ืœืžืชื›ื ืชื™ื ืžืืช ื™ื ื•ืŸ ืคืจืง

Ko'proq ko'rsatish
1 419
Obunachilar
Ma'lumot yo'q24 soatlar
-17 kunlar
+230 kunlar
Postlar arxiv
ToCode
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 ืชื•ืจื ืจืง ืชืกื›ื•ืœ.

ToCode
1 419
# ืœื ืฉืžืชื™ ืœื‘ ืœื ืฉืžืชื™ ืœื‘ ืœื’ื•ื“ืœ ืฉืœ ื” Docker Image ... ืขื“ ืฉื”ืชื—ื™ืœ ืœื”ื™ื’ืžืจ ืœื™ ื”ืžืงื•ื ืขืœ ื”ื“ื™ืกืง. ืœื ืฉืžืชื™ ืœื‘ ืœื–ืžื ื™ ื”ื˜ืขื™ื ื” ืฉืœ ื”ืืชืจ ... ืขื“ ืฉื”ืชื—ื™ืœื• ืœื”ื’ื™ืข ืชืœื•ื ื•ืช ืžื’ื•ืœืฉื™ื ืฉืœื ืžืฆืœื™ื—ื™ื ืœื”ืชื—ื‘ืจ. ืœื ืฉืžืชื™ ืœื‘ ืœืื™ื˜ื™ื•ืช ื”ืฉืื™ืœืชื•ืช ื‘ DB ... ืขื“ ืฉืงื•ื“ ื”ืชื—ื™ืœ ืœื”ื™ื›ืฉืœ ืขืœ Timeouts ื‘ื“ื™ื•ืง ื‘ืฉื™ื ื”ืขื•ืžืก ืขืœ ื”ืžืขืจื›ืช. ืœื ืฉืžืชื™ ืœื‘ ืœื‘ืขื™ื•ืช ื”ืื‘ื˜ื—ื” ื‘ืงื•ื“ ... ืขื“ ื”ืคืจื™ืฆื” ืฉื”ืคื™ืœื” ืœื™ ืืช ื›ืœ ื”ืžืขืจื›ืช ืœืฉื‘ื•ืขื•ืช. ืœื ืฉืžืชื™ ืœื‘ ืฉื”ืงื•ื“ ื›ืœ ื›ืš ืžื‘ื•ืœื’ืŸ ... ืขื“ ืฉื”ื’ื™ืข ืžืชื›ื ืช ื—ื“ืฉ ืœืฆื•ื•ืช ืฉืœื ื”ืฆืœื™ื— ืœืžืฆื•ื ืืช ื”ื™ื“ื™ื™ื ื•ื”ืจื’ืœื™ื™ื ืฉื. ื‘ืชื•ื›ื ื” ืœื ืœืฉื™ื ืœื‘ ื–ื” ืกื•ื’ ืฉืœ ื‘ื—ื™ืจื”. ื™ืฉ ืœื ืžืขื˜ ื›ืœื™ื ื˜ื•ื‘ื™ื ืฉืขื•ื–ืจื™ื ืœื ื• ืœื–ื”ื•ืช ื”ืจื‘ื” ื‘ืขื™ื•ืช ืœืคื ื™ ืฉืžื’ื™ืขื™ื ืœืคืจื•ื“ืงืฉืŸ. ื”ื‘ื—ื™ืจื” ืœืฉื™ื ืœื‘ ืขื•ื–ืจืช ืœื‘ื ื•ืช ืžืขืจื›ื•ืช ื˜ื•ื‘ื•ืช ื™ื•ืชืจ, ื•ื™ื•ืชืจ ืžื–ื” ื”ื™ื ืคื•ืชื—ืช ื“ืœืชื•ืช ืœืื–ื•ืจื™ ืœื™ืžื•ื“ ื—ื“ืฉื™ื ื•ืขื•ื–ืจืช ืœื ื• ืœื”ืชืงื“ื ื›ืžืชื›ื ืชื™ื.

ToCode
1 419
https://kubernetes.io/docs/tasks/manage-kubernetes-objects/kustomization/. ืื ื™ ืžื•ืฆื ืฉื‘ืขื‘ื•ื“ื” ืขื ืงื•ื‘ืจื ื˜ืก ื”ืจื‘ื” ื™ื•ืชืจ ืงืœ ืœื™ ืœื”ืกืชื›ืœ ืขืœ ื“ื•ื’ืžืื•ืช ืขื•ื‘ื“ื•ืช ื•ืขื kustomize ื–ื” ืงืœ ื›ื™ ื™ืฉ ืชื™ืงื™ื™ืช ื“ื•ื’ืžืื•ืช ื“ื™ ื˜ื•ื‘ื” ื‘ื“ืฃ ื”ื’ื™ื˜ื”ืื‘ ืฉืœ ื”ืคืจื•ื™ืงื˜ ื‘ืงื™ืฉื•ืจ: https://github.com/kubernetes-sigs/kustomize/tree/master/examples.

ToCode
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 ืื– ืื ืืชื ืื•ื”ื‘ื™ื ืœืงืจื•ื ืืช ื”ืชื™ืขื•ื“ ืฉืœ ืงื•ื‘ืจื ื˜ืก ื–ื” ื™ื›ื•ืœ ืœืฉืžื— ืืชื›ื. ื”ื“ืฃ ื”ืจืœื•ื•ื ื˜ื™ ื”ื•ื ื‘ืงื™ืฉื•ืจ ื”ื–ื”:

ToCode
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:

ToCode
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

ToCode
1 419
# ืžืฆืื• ืืช ื”ื”ื‘ื“ืœื™ื ืฉื™ื˜ื” ืคื•ืคื•ืœืจื™ืช ืœืžื“ื™ ืœืžืฆื•ื ื‘ืขื™ื•ืช ืžื•ื–ืจื•ืช ื‘ืงื•ื“ ืขื•ื‘ื“ืช ื›ื›ื”- ืœื•ืงื—ื™ื ืงื•ื“ ืฉืœื ืขื•ื‘ื“ ื•ืงื•ื“ ื“ื•ืžื” ืฉืขื•ื‘ื“ ื•ืžืชื—ื™ืœื™ื ืœืื˜ ืœืื˜ ืœื”ืคื•ืš ืื•ืชื ืœื™ื•ืชืจ ื“ื•ืžื™ื. ืžืกื“ืจื™ื ืื™ื ื“ื ื˜ืฆื™ื”, ืžื—ืœื™ืคื™ื ืฉืžื•ืช ืฉืœ ืคื•ื ืงืฆื™ื•ืช ื•ืžืฉืชื ื™ื ืื• ืืช ืกื“ืจ ื”ืงืจื™ืื•ืช ืขื“ ืฉื”ืงื•ื“ ืฉืœื ืขื•ื‘ื“ ื™ื”ื™ื” ื–ื”ื” ืœืงื•ื“ ืฉืขื•ื‘ื“. ืื™ืคืฉื”ื• ื‘ื“ืจืš ื”ืงื•ื“ ืฉืœื ืขื•ื‘ื“ ื™ืชื—ื™ืœ ืœืขื‘ื•ื“ - ื•ื–ื” ื™ื™ืชืŸ ืœื ื• ืจืžื– ืžื” ืขืฉื™ื ื• ืœื ื‘ืกื“ืจ. (ื‘ื’ื™ื˜ ื™ืฉ ืžื ื’ื ื•ืŸ ืžื•ื‘ื ื” ื‘ืฉื git bisect ืฉื‘ื ื•ื™ ื‘ื“ื™ื•ืง ืขืœ ื”ืจืขื™ื•ืŸ ื”ื–ื”) ื”ื™ืชืจื•ืŸ ื‘ืฉื™ื˜ื” ื”ื•ื ืฉื‘ืกื•ืฃ ืื ื ื”ื™ื” ืžืกืคื™ืง ืžืชื•ื“ื™ื™ื ื ื’ื™ืข ืœืงื•ื“ ืฉืขื•ื‘ื“. ื”ื—ื™ืกืจื•ืŸ - ืœื ืชืžื™ื“ ืงื•ื“ ืขื•ื‘ื“ ื”ื•ื ื”ืžื˜ืจื”, ื•ื›ืฉืžื—ืคืฉื™ื ื”ื‘ื“ืœื™ื ืœืคืขืžื™ื ืงืฉื” ืœืจืื•ืช ืœืžื” ื’ื™ืจืกื” ืื—ืช ืขื•ื‘ื“ืช ื•ื”ืฉื ื™ื” ืœื. ืื– ื›ืŸ ืื ืื ื™ ืžืžืฉ ืชืงื•ืข ืื ื™ ืืœืš ืขืœ ืžืฉื—ืง ืžืฆื ืืช ื”ื”ื‘ื“ืœื™ื, ืื‘ืœ ื›ืžืขื˜ ืชืžื™ื“ ืขื“ื™ืฃ ืœืจื“ืช ืœืขื•ืžืง ื”ื‘ืขื™ื” ื•ืœื”ื‘ื™ืŸ ืžื” ืฉื‘ื•ืจ ืขืœ ื”ืงื•ื“ ื”ืฉื‘ื•ืจ, ื‘ืœื™ ืงืฉืจ ืœื’ื™ืจืกื” ืฉืขื•ื‘ื“ืช.

ToCode
1 419
# ื—ืœื•ืžื•ืช ืขืœ ืขื ื ื™ื ืœืคื ื™ ืคื—ื•ืช ืžืขืฉืจื™ื ืฉื ื” ืœืฉืจืชื™ ื™ื•ื ื™ืงืก ืขื“ื™ื™ืŸ ื”ื™ืชื” ื ื•ื›ื—ื•ืช ื‘ื—ื™ื™ื ืฉืœ ืžืคืชื—ื™ ืชื•ื›ื ื”. ื‘ื—ื‘ืจื•ืช ืจื‘ื•ืช ื”ื™ื” "ื—ื“ืจ ืฉืจืชื™ื" ื‘ื• ืื™ื—ืกื ื• ืฉืจืชื™ ื™ื•ื ื™ืงืก ืฉืœืžื™ื, ื•ื—ื‘ืจื•ืช ืื—ืจื•ืช ื”ื™ื• ืฉื•ื›ืจื•ืช ืฉืจืช ืฉืœื ืฉื™ืฉื‘ ื‘ืื™ื–ื• ื—ื•ื•ืช ืฉืจืชื™ื. ืื ื™ ืื™ืฉื™ืช ืขื•ื“ ื–ื›ื™ืชื™ ืœืขื‘ื•ื“ ืขืœ ืžื›ื•ื ืช HP True 64 ืฉื™ื•ืฉื‘ืช ื‘ืชื•ืš ืืจื•ืŸ ื‘ื—ื“ืจ ื‘ื”ืžืฉืš ื”ืžื–ื“ืจื•ืŸ. ืืคื™ืœื• ืœืคื ื™ ืขืฉืจ ืฉื ื™ื ืขื•ื“ ืขื‘ื“ืชื™ ื‘ืกื˜ืืจื˜ ืืค ืฉืฉืžืจ ืฉืจืช ื‘ืืจื•ืŸ ื‘ืื—ื“ ื”ื—ื“ืจื™ื ื‘ื—ื‘ืจื”, ืœืžืจื•ืช ืฉื–ื” ื›ื‘ืจ ื”ืจื™ืฅ ืœื™ื ื•ืงืก. ื˜ื›ื ื•ืœื•ื’ื™ื•ืช ื•ื™ืจื˜ื•ืืœื™ื–ืฆื™ื” ื”ืคื›ื• ืืช ื›ืœ ื”ืขืกืง ืฉืœ ืฉืจืชื™ื ื‘ื—ื•ื•ืช ื•ืืจื•ื ื•ืช ืœืžื™ื•ืชืจ. ื ื›ื•ืŸ ื™ืฉ ื—ื‘ืจื•ืช ื’ื“ื•ืœื•ืช ืฉืžืชื—ื–ืงื•ืช ื—ื•ื•ืช ืฉืจืชื™ื ืขื ืงื™ื•ืช, ืื‘ืœ ืจื•ื‘ื ื• ืœื ื ื–ื›ื” ืœื‘ืงืจ ื‘ื”ืŸ. ื‘ืžืงื•ื ื–ื” ืื ื—ื ื• ืžืงื‘ืœื™ื ืฉืจืช ื•ื™ืจื˜ื•ืืœื™ ืคืจื˜ื™ ื‘ืขืœื•ืช ืžื–ืขืจื™ืช ืฉืขื•ืฉื” ื™ื•ืชืจ ื•ืขื•ื‘ื“ ื”ืจื‘ื” ื™ื•ืชืจ ื˜ื•ื‘ ืžื”ืžืคืœืฆืช ืฉื™ืฉื‘ื” ื‘ืืจื•ืŸ. ื•ื›ืžื• ืฉื”ืฆืœื—ื ื• ืœื ืฆื— ืืช ืฉืจืชื™ ื”ื™ื•ื ื™ืงืก ืื ื™ ืจื•ืฆื” ืœื”ืืžื™ืŸ ืฉื’ื ืžืขืจื›ื•ืช ื”ืขื ืŸ ืฉื™ืฉ ื”ื™ื•ื ื™ื•ื—ืœืคื• ื™ื•ื ืื—ื“ ื‘ืžืขืจื›ื•ืช ื˜ื•ื‘ื•ืช ื™ื•ืชืจ. ืืœื” ื”ื—ืœื•ืžื•ืช ืฉืœื™ ืœืื™ืš ื˜ื›ื ื•ืœื•ื’ื™ื•ืช ืขื ืŸ ืฆืจื™ื›ื•ืช ืœืขื‘ื•ื“, ืžื•ื–ืžื ื™ื ืœื”ื•ืกื™ืฃ ื—ืœื•ืžื•ืช ืฉืœื›ื ื‘ืชื’ื•ื‘ื•ืช: 1. ื›ืœ ืฉื™ืจื•ืชื™ ื”ืขื ืŸ ืฆืจื™ื›ื™ื ืœืขื‘ื•ืจ ืกื˜ื ื“ืจื˜ื™ื–ืฆื™ื”. ืœื ืฆืจื™ืš 5 ื“ืจื›ื™ื ืฉื•ื ื•ืช ืœืื—ืกืŸ ืงื•ื‘ืฅ. ืื ื™ ื—ื•ืœื ืขืœ ืžืžืฉืง ืื—ื“ ืžื‘ื•ืกืก CLI ืฉื™ืขื‘ื•ื“ ืœื›ืœ ื”ืขื ื ื™ื ื‘ืฆื•ืจื” ื–ื”ื”. 2. ืฆืจื™ื›ื” ืœื”ื™ื•ืช ื“ืจืš ืงืœื” ืœื”ืงื™ื ืขื ืŸ ื‘ื‘ื™ืช. ื›ืžื• ืฉื”ื™ื•ื ื™ืฉ ืœื™ ืื™ื ืกื•ืฃ ื›ืœื™ื ืœื”ืชืงื™ืŸ "ืฉืจืช ืœื™ื ื•ืงืก" ื‘ื‘ื™ืช, ื›ืš ื”ื™ื™ืชื™ ืจื•ืฆื” ืœื”ืงื™ื "ืขื ืŸ" ื‘ื™ืชื™ ืฉื™ืชืžื•ืš ื‘ื›ืœ ื”ืžืžืฉืง ื”ืกื˜ื ื“ืจื˜ื™ ืฉื“ื™ื‘ืจื ื• ืขืœื™ื•. 3. ื”ืžื—ื™ืจ ืฉืœ ืฉื™ืจื•ืชื™ ืขื ืŸ ื—ื™ื™ื‘ ืœืจื“ืช ื‘ืฆื•ืจื” ืžืฉืžืขื•ืชื™ืช. ื”ื™ื•ื ืจื•ื‘ื ื ื•ืงื˜ื™ื ื‘ื’ื™ืฉื” ืฉืœ ืžื—ื™ืจ ื›ื ื™ืกื” ื ืžื•ืš ื›ื“ื™ ืœืคืชื•ืช ืื•ืชืš ืคื ื™ืžื” ื•ืื– ื›ื›ืœ ืฉื”ืฉื™ืžื•ืฉ ืขื•ืœื” ื”ืžื—ื™ืจ ืขื•ืœื” ื‘ืฆื•ืจื” ืœื ืคืจื•ืคื•ืจืฆื™ื•ื ืืœื™ืช. ืืชื ืœื ืจื•ืฆื™ื ืœื“ืขืช ื›ืžื” ืขืœื” ืคืขื ืฉืจืช ื™ื•ื ื™ืงืก ืžืœื ื‘ืืจื•ืŸ. 4. ืื ื—ื ื• ืฆืจื™ื›ื™ื ื“ืจืš ืœืฉืชืฃ spec ืฉืœื ืฉืœ ืžืขืจื›ืช ืขืœ ืขื ืŸ. ืžืฉื”ื• ื›ืžื• helm chart ืื• docker compose ืขื‘ื•ืจ ื›ืœ ืื•ืชื ืื™ื ืกื•ืฃ ืžืžืฉืงื™ื ืฉืœ AWS ืื• Azure ืื• GCP ืื• ืžื” ืฉืœื ืชืจืฆื•. ื›ืœื™ ื›ืžื• cloudbridge ื ื•ืชืŸ ื›ื™ื•ื•ืŸ ื˜ื•ื‘ ืœื—ื™ื‘ื•ืจ ื›ื–ื” ื‘ื™ืŸ ืขื ื ื™ื ืื‘ืœ ืชืžื™ื“ ื›ืฉืžื“ื•ื‘ืจ ื‘ื›ืœื™ ื—ื™ืฆื•ื ื™ "ืฉืžืชืœื‘ืฉ" ืขืœ ืชืฉืชื™ืช ืงื™ื™ืžืช ื”ืฉื™ืžื•ืฉ ื‘ื• ื”ื•ืœืš ืœื”ื™ื•ืช ืคื—ื•ืช ืื•ืคื˜ื™ืžืœื™ ืžืืฉืจ ืฉื™ืžื•ืฉ ื™ืฉื™ืจ ื‘ืชืฉืชื™ืช ื”ืงื™ื™ืžืช. ื‘ืžืงืจื” ืฉืœ ื™ื•ื ื™ืงืก - ืœื™ื ื•ืงืก ืœื ื‘ื ื‘ืชื•ืจ ื›ืœื™ ืฉื ื•ืชืŸ ืžืžืฉืง ืื—ื™ื“ ืœื›ืœ ืžื›ื•ื ื•ืช ื”ื™ื•ื ื™ืงืก ื”ืฉื•ื ื•ืช. ื”ื•ื ื‘ื ื‘ืชื•ืจ ืžืขืจื›ืช ื”ืคืขืœื” ื—ื“ืฉื” ืฉืขื•ื‘ื“ืช ื™ื•ืชืจ ื˜ื•ื‘, ื•ื™ื—ื“ ืขื ื˜ื›ื ื•ืœื•ื’ื™ื•ืช ื•ื™ืจื˜ื•ืืœื™ื–ืฆื™ื” ื”ื—ืœื™ืฃ ืืช ื›ืœ ืžื” ืฉื”ื™ื” ืœืคื ื™ื•. ื–ื” ืกื•ื’ ื”ืฉื™ื ื•ื™ ืฉื”ื™ื™ืชื™ ืจื•ืฆื” ืœืจืื•ืช ื’ื ื‘ืขื•ืœื ื”ืขื ื ื™ื. ื•ืžื” ืืชื›ื? ืื™ื–ื” ื—ืœื•ืžื•ืช ื™ืฉ ืœื›ื ืขืœ ื”ืขื ืŸ?

ToCode
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 ืขื“ื™ื™ืŸ ืœื ื ื›ื ืกื• ืจืฉืžื™ืช ืœืฉืคื” ืื• ืœื˜ื›ื ื•ืœื•ื’ื™ื” ืฉืœื›ื.

ToCode
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/

ToCode
1 419
# ืขื™ืงืจื•ืŸ ื”ืจืฆืฃ ื”ืขื™ืงืจื•ืŸ ื‘ืคืฉื˜ื•ืช ืื•ืžืจ ืฉื™ื•ืชืจ ืงืœ ืœืขืฉื•ืช ื“ื‘ืจ ืฉืขืฉื™ืช ืืชืžื•ืœ ืžืืฉืจ ื“ื‘ืจ ื—ื“ืฉ. ื”ื ื” ื›ืžื” ื“ืจื›ื™ื ืฉืื ื—ื ื• ืจื•ืื™ื ืื•ืชื• ื‘ืคืขื•ืœื”: 1. ื›ืฉืื ื™ ื›ื•ืชื‘ ืคื•ืกื˜ ื”ืื™ืžืงืก ืฉืœื™ ื›ื‘ืจ ืคืชื•ื— ืขืœ ื”ืงื•ื‘ืฅ ื”ื ื›ื•ืŸ ื‘ื’ื•ืคืŸ ื”ื ื›ื•ืŸ. ื‘ืœื—ื™ืฆืช ื›ืคืชื•ืจ ื”ื•ื ื ืฉืœื— ืœืืชืจ ื›ื“ื™ ืœื”ื™ื›ื ืก ืœ Pipeline ืฉืœ ื”ืคืจืกื•ื. ื”ื›ืœ ืคืฉื•ื˜ ืขื•ื‘ื“. 2. ื”ืจื‘ื” ื™ื•ืชืจ ืงืœ ืœื›ืชื•ื‘ ืคื™ืฆ'ืจ ื ื•ืกืฃ ืœืคืจื•ื™ืงื˜ ืงื™ื™ื ืžืืฉืจ ืœืขืฉื•ืช ืืช ื”ื—ืฆื™ ืฉืขื” ื”ืจืืฉื•ื ื” ืฉืœ ืคืจื•ื™ืงื˜ ื—ื“ืฉ. ืื ื–ื” ืจืง ืคื™ืฆ'ืจ ืื ื—ื ื• ื›ื‘ืจ ื™ื•ื“ืขื™ื ื‘ืื™ื–ื” ืกืคืจื™ื•ืช ืœื”ืฉืชืžืฉ, ืื™ืš ืœื‘ื ื•ืช ืืช ื”ืคืจื•ื™ืงื˜, ื•ื›ืŸ ื›ืœ ื”ืงื•ื“ ื›ื‘ืจ ืคืชื•ื— ื‘ืชื•ืš ื”ืขื•ืจืš. 3. ื”ืจื‘ื” ื™ื•ืชืจ ืงืœ ืœื”ืžืฉื™ืš ืคืขื™ืœื•ืช ื’ื•ืคื ื™ืช ื›ืฉืืชื” ื‘ื›ื•ืฉืจ ืžืืฉืจ ืœืงื•ื ืžื”ื›ื•ืจืกื” ืื—ืจื™ ื—ืฆื™ ืฉื ื” ื‘ืœื™ ืคืขื™ืœื•ืช. ื•ื’ื ื‘ืœื™ืžื•ื“ื™ื- ืื ืืชื” ื›ื‘ืจ ื‘ืชื•ืš ืชื”ืœื™ืš ืœื™ืžื•ื“ ื•ื™ืฉ ืœืš ื—ืฆื™ ืฉืขื” ืคื ื•ื™ื” ืชืžื™ื“ ื™ื”ื™ื” ืื™ื–ื” ืชืจื’ื™ืœ ืฉืฉื•ื•ื” ืœื ืกื•ืช, ืื• ืื™ื–ื” ื•ื™ื“ืื• ืœืจืื•ืช ืื• ื˜ืงืกื˜ ืœืงืจื•ื. ื™ืฉ ืื™ื ืกื•ืฃ ื“ื‘ืจื™ื. ืื‘ืœ ืื ืืชื” ืœื ื‘ืชื”ืœื™ืš ืœื™ืžื•ื“ ื•ื™ืฉ ืœืš ื—ืฆื™ ืฉืขื” ืคื ื•ื™ื”, ื”ืกื™ื›ื•ื™ ืฉื”ื™ื ืชื•ืฉืงืข ื‘"ื”ืชื—ืœืช" ืชื”ืœื™ืš ืœื™ืžื•ื“ื™ ื”ื•ื ืžืื•ื“ ื ืžื•ืš. ืจืฆืฃ ืฉืœ ืœื™ืžื•ื“ ืคื•ืชื— ืืช ื”ืืคืฉืจื•ืช ืœื”ืฉืชืžืฉ ื‘ื–ืžื ื™ื ืงื˜ื ื™ื ืžืชื™ื ื›ื“ื™ ืœื”ืชืงื“ื ื‘ื• ื•ื›ืš ื™ื•ืฆืจ ืœื ื• ืขื•ื“ ื–ืžืŸ. ื”ืชื•ืฆืื” ืฉืœ "ืขืฉืจ ื“ืงื•ืช ื‘ื™ื•ื" ื”ื™ื ื”ืจื‘ื” ื™ื•ืชืจ ืžืฉืžืขื•ืชื™ืช ืž 70 ื“ืงื•ืช ืžืจื•ื›ื–ื•ืช ื‘ื™ื•ื ืื—ื“. ืขืฉืจ ื“ืงื•ืช ื‘ื™ื•ื ื™ื•ืฆืจื•ืช ืจืฆืฃ, ื•ืื ื ืกืคื•ืจ ืืช ื–ืžืŸ ื”ืœื™ืžื•ื“ ืื—ืจื™ ืฉื‘ื•ืข ื ื’ืœื” ืฉืขื‘ืจื ื• ื‘ืงืœื•ืช ืืช ื” 70 ื•ืืคื™ืœื• ืืช ื” 140 ื“ืงื•ืช. ืจืฆืคื™ื ืขื•ื–ืจื™ื ืœื ื• ืœื ืฆืœ ืืช ื”ื–ืžืŸ ื˜ื•ื‘ ื™ื•ืชืจ ื•ืขืœ ื“ื‘ืจื™ื ืฉื—ืฉื•ื‘ื™ื ืœื ื•. ืฉื•ื•ื” ืœื”ืชืืžืฅ ื›ื“ื™ ืœื™ืฆื•ืจ ืื•ืชื.

ToCode
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 ื‘ื›ืœ ื”ื–ื“ืžื ื•ืช.