uz
Feedback
ToCode

ToCode

Kanalga Telegramโ€™da oโ€˜tish

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

Ko'proq ko'rsatish
1 421
Obunachilar
Ma'lumot yo'q24 soatlar
+37 kunlar
-430 kunlar
Postlar arxiv
ToCode
1 421
# ืžื™ ืžืคื—ื“ ืž Chat GPT ื‘ืจืื™ื•ื ื•ืช ืขื‘ื•ื“ื” ืคืขื ื—ืฉื‘ื ื• ืฉืžืกืคื™ืง ืœื”ื–ืžื™ืŸ ืžื•ืขืžื“ ืœืจืื™ื•ืŸ ื›ื“ื™ ืฉื™ืขื ื” ืขืœ ื›ืžื” ืฉืืœื•ืช ืชื›ื ื•ืช ืขืœ ื”ืœื•ื—, ื›ื“ื™ ืœื”ืขืจื™ืš ืจืžื” ืžืงืฆื•ืขื™ืช. ืื—ืจื™ ื–ื” ื’ื™ืœื™ื ื• ืฉื™ืฉ ื”ืจื‘ื” ืื ืฉื™ื ื˜ื•ื‘ื™ื ืฉื ืœื—ืฆื™ื ืžื”ืœื•ื—, ื•ื‘ื›ืœืœ ื—ื•ื•ื™ืช ื”ืจืื™ื•ืŸ ืžื•ื˜ื™ืช ืœื›ื™ื•ื•ืŸ ืื ืฉื™ื ืขื ืื•ืคื™ ืžืกื•ื™ื. ืคืกืคืกื ื• ื”ืจื‘ื” ืื ืฉื™ื ื˜ื•ื‘ื™ื ื•ื’ื™ื™ืกื ื• ื”ืจื‘ื” ืื ืฉื™ื ืœื ื ื›ื•ื ื™ื. ืื—ืจื™ ื–ื” ื—ืฉื‘ื ื• ืฉืžืกืคื™ืง ืœืชืช ืœืžื•ืขืžื“ืช ืขื‘ื•ื“ืช ื‘ื™ืช ื›ื“ื™ ืœืจืื•ืช ืื™ืš ื”ื™ื ืžืชืžื•ื“ื“ืช ืขื ืžืฉื™ืžื” ืงืฆืช ื™ื•ืชืจ ืžื•ืจื›ื‘ืช. ื•ืขื›ืฉื™ื• ืื ื—ื ื• ืžืชื—ื™ืœื™ื ืœืœืžื•ื“ ืฉื’ื ืขื‘ื•ื“ืช ื‘ื™ืช ืœื ืžืฉืงืคืช ื™ื›ื•ืœืช ื”ืชืžื•ื“ื“ื•ืช ืฉืœ ืžื•ืขืžื“ืช ืขื ืืชื’ืจื™ื. ืฉืžื•ืขืžื“ื™ื ืžืกื•ื™ืžื™ื ืžืฆืœื™ื—ื™ื "ืœืชื—ืžืŸ" ืืช ื”ืžืขืจื›ืช, ื•ืฉืขื ื›ืœื™ื ื›ืžื• Chat GPT ื”ืชื—ืžื•ืŸ ื”ื–ื” ื ื”ื™ื” ืงืœ. ืœื ืจื—ื•ืง ื”ื™ื•ื ืฉื›ืœื™ื ืื•ื˜ื•ืžื˜ื™ื™ื ื™ืคืชืจื• ืžืฉื™ืžื•ืช ื‘ื™ืช ื‘ืชื›ื ื•ืช ื˜ื•ื‘ ื™ื•ืชืจ ืžื”ืžื•ืขืžื“ื™ื ื”ื˜ื•ื‘ื™ื ื‘ื™ื•ืชืจ ืฉืœื ื•. ื•ื›ืŸ ืืคืฉืจ ืœื—ืฉื•ื‘ ืขืœ ื‘ืขื™ื•ืช ื™ื•ืชืจ ื™ืฆื™ืจืชื™ื•ืช ืื• ืงืฉื•ืช, ืื• ื›ืœื™ ืžืขืงื‘ ืฉื™ืืคืฉืจื• ืœื ื• ืœื–ื”ื•ืช ืื ืžื™ืฉื”ื• ื ืขื–ืจ ื‘ื›ืœื™ ืื•ื˜ื•ืžื˜ื™ ื›ื“ื™ ืœืคืชื•ืจ ืืชื’ืจ ืฉืœ ืจืื™ื•ืŸ ืขื‘ื•ื“ื”. ืื‘ืœ ื–ื” ืœื ื”ื“ื‘ืจ ื”ื—ืฉื•ื‘. ื™ื•ืชืจ ื—ืฉื•ื‘ ืœืฉื™ื ืœื‘ ืฉื”ื‘ืขื™ื•ืช ื”ืืœื” ืคืฉื•ื˜ ืœื ืžืฉืงืคื•ืช ืืช ื”ื“ื‘ืจื™ื ืฉื ืฆื˜ืจืš ืœืขืฉื•ืช ื‘ืขื‘ื•ื“ื” ื”ืืžื™ืชื™ืช ื•ืœื ื‘ื•ื“ืงื•ืช ืืช ื›ื™ืฉื•ืจื™ ื”ืคื™ืชื•ื— ืฉืื ื—ื ื• ืžื—ืคืฉื™ื. ื‘ืขืชื™ื“ (ื”ืœื ืจื—ื•ืง) ื ืฆื˜ืจืš ืœืขื‘ื•ื“ ื™ื•ืชืจ ืงืฉื”, ื•ืœื ื‘ื˜ื•ื— ืฉื–ื” ื“ื‘ืจ ืจืข. ื‘ืชื•ืจ ืžื’ื™ื™ืกื™ื ื ืฆื˜ืจืš ืœื”ื™ื•ืช ืžืกื•ื’ืœื™ื ืœื”ืกืชื›ืœ ืขืœ ืขื‘ื•ื“ื•ืช ื’ื“ื•ืœื•ืช ืฉืœ ืžื•ืขืžื“ื™ื ื•ืœืฉืคื•ื˜ ืื•ืชื ืœืคื™ ื”ื™ืฉื’ื™ื”ื ื‘ืคืจื•ื™ืงื˜ื™ื ืงื•ื“ืžื™ื. ื‘ืชื•ืจ ืžื•ืขืžื“ื™ื ื ืฆื˜ืจืš ืœื‘ื ื•ืช ืชื™ืงื™ ืขื‘ื•ื“ื•ืช ืžืจืฉื™ืžื™ื ื™ื•ืชืจ, ื›ื•ืœืœ ืคืจื•ื™ืงื˜ื™ ืงื•ื“ ืคืชื•ื— ื‘ื”ื ื ืฉืชืชืฃ ืœืื•ืจืš ื–ืžืŸ, ื‘ืขื–ืจืชื ืžื’ื™ื™ืกื™ื ื™ื•ื›ืœื• ืœื”ืขืจื™ืš ืืช ื”ื™ื›ื•ืœืช ืฉืœื ื• ื’ื ื‘ืœื™ ืžืฉื™ืžื•ืช ื‘ื™ืช ืื• ืจืื™ื•ื ื•ืช. "ื”ืจืื• ืืช ืขื‘ื•ื“ืชื›ื" ื–ื• ื›ื‘ืจ ื”ื“ืจืš ืฉืื ืฉื™ื ืžื’ื™ื™ืกื™ื ืื ืฉื™ื ื‘ื”ืจื‘ื” ืžืื•ื“ ืชื—ื•ืžื™ื. ื‘ืงืจื•ื‘ ืืฆืœื ื•.

ToCode
1 421
# ื”ื™ื•ื ืœืžื“ืชื™: RANDOM ื‘ zsh ืขืœื•ืœ ืœื”ื™ื•ืช ืžื‘ืœื‘ืœ ื‘ bash ื”ืžืฉืชื ื” ื”ืžื™ื•ื—ื“ RANDOM ืžื•ื—ืœืฃ ื‘ืžืกืคืจ ืืงืจืื™. ืœื›ืŸ ืืคืฉืจ ืœื›ืชื•ื‘ ืงื•ื“ ื›ื–ื”:
$ echo $0
bash

$ echo $RANDOM
5953
$ echo $RANDOM
12763
$ echo $RANDOM
2894
ื•ื–ื” ืขื•ื‘ื“ ืžืžืฉ ื‘ืกื“ืจ. ื’ื ื‘ืชื•ืš Subshells ื”ืžืฉืชื ื” RANDOM ืžืžืฉื™ืš ืœืขื‘ื•ื“ ื•ื‘ื’ืœืœ ื–ื” ืืคืฉืจ ืœื›ืชื•ื‘ ื’ื ืืช ื–ื” ื‘ bash ื•ืœืงื‘ืœ ืฉืœื•ืฉ ืฉื•ืจื•ืช ืฉื•ื ื•ืช ื‘ืงื•ื‘ืฅ:
$ echo $0
bash

$ echo $RANDOM | tee -a numbers
3064
$ echo $RANDOM | tee -a numbers
4881
$ echo $RANDOM | tee -a numbers
6698
ื‘ zsh ื”ื”ืชื ื”ื’ื•ืช ืงืฆืช ื™ื•ืชืจ ืžื‘ืœื‘ืœืช. ื‘ืฉื•ืจืช ื”ืคืงื•ื“ื” RANDOM ืขื“ื™ื™ืŸ ื™ืชืงื“ื ื•ื™ืฆื™ื’ ื›ืœ ืคืขื ืžืกืคืจ ืื—ืจ:
$ echo $0
-zsh

$ echo $RANDOM
4402

$ echo $RANDOM
2260

$ echo $RANDOM
12200
ืื‘ืœ ื”ื“ืคืกืช ืžืกืคืจ ืืงืจืื™ ื‘ืชื•ืš Subshell ืœื ืžืฉื ื” ืืช ื”ืžืฆื‘ ื”ืคื ื™ืžื™ ืฉืœ ื™ืฆืจืŸ ื”ืžืกืคืจื™ื ื”ืืงืจืื™ื™ื ื•ืœื›ืŸ ื”ืงื•ื“ ื”ื‘ื ื™ื“ืคื™ืก ืชืžื™ื“ ืืช ืื•ืชื ืฉืœื•ืฉื” ืžืกืคืจื™ื ืœืงื•ื‘ืฅ:
$ echo $RANDOM | tee -a numbers
27376
$ echo $RANDOM | tee -a numbers
27376
$ echo $RANDOM | tee -a numbers
27376
ื•ื›ืŸ ืขื tee ื–ื” ืœื ื‘ืขื™ื” ื›ื™ ืจื•ืื™ื ืืช ื”ืžืกืคืจื™ื. ื‘ืคืงื•ื“ื•ืช ืื—ืจื•ืช ืฉื›ื•ืชื‘ื•ืช ืžืกืคืจื™ื ืืงืจืื™ื™ื ืœืžืงื•ืžื•ืช ืื—ืจื™ื ื–ื” ืขืœื•ืœ ืœื”ื™ื•ืช ืคื—ื•ืช ื‘ืจื•ืจ, ืื– ื”ื™ื• ืขืจื ื™ื™ื.

ToCode
1 421
# ื”ื”ืฉืงืขื” ื”ื›ื™ ื’ืจื•ืขื” ืฉืขืฉื™ืชื™ ื”ืฉืงืขื” ื”ื™ื ื™ื™ื—ื•ื“ ื–ืžืŸ ื•ืžืืžืฅ ืœืžื˜ืจื” ื›ืœืฉื”ื™. ืœื”ืฉืงืขื” ื™ืฉ ืชืžื•ืจื” (ROI) ื•ืื ื—ื ื• ื™ื›ื•ืœื™ื ืœืžื“ื•ื“ ืื™ื›ื•ืช ื”ืฉืงืขื” ืœืคื™ ื”ืชืžื•ืจื” ืฉื”ื™ื ื ื•ืชื ืช. ืงื ื™ื™ืช ื“ื™ืจื” ื”ื™ื ื“ื•ื’ืžื” ื˜ื•ื‘ื” ืœื”ืฉืงืขื” ื›ื™ ืื ื—ื ื• ืžืฉืœืžื™ื ืกื›ื•ื ื’ื“ื•ืœ ืฉืœ ื›ืกืฃ ื•ืžืงื‘ืœื™ื ื‘ืชืžื•ืจื” ื ื›ืก ืฉืืคืฉืจ ืœื’ื•ืจ ื‘ื• ืื• ืœื”ืฉื›ื™ืจ ืื•ืชื•. ื”ืฉืงืขื” ื‘ืขืกืง ื™ื›ื•ืœื” ืœื”ื™ื•ืช ืงื ื™ื” ืฉืœ ืžื›ื•ื ื•ืช ื—ื“ืฉื•ืช ืœืžืคืขืœ ืื• ื”ืจืžืช ืงืžืคื™ื™ืŸ ืคื™ืจืกื•ืžื™. ื”ื”ืฉืงืขื” ื”ื™ื ื—ื“ ืคืขืžื™ืช ื•ืžืืคืฉืจืช ืœืฉืคืจ ืืช ื”ืคืจื•ื“ื•ืงื˜ื™ื‘ื™ื•ืช ืฉืœ ื”ืขืกืง. ืฉื™ื ื•ื™ ืกื’ื ื•ืŸ ื—ื™ื™ื ื”ื•ื ืžื” ืฉืงื•ืจื” ื›ืฉืื ื—ื ื• ืžื‘ื™ื ื™ื ืฉืžืฉื”ื• ืœื ืขื•ื‘ื“ ื‘ื—ื™ื™ื ืฉืœื ื• ื•ืจื•ืฆื™ื ืœื—ืœืง ืื—ืจืช ืืช ื”ื–ืžืŸ ืื• ื”ืžืฉืื‘ื™ื ืฉืœื ื• ืœื˜ื•ื•ื— ื”ืจื—ื•ืง. ืฉื™ื ื•ื™ื™ื ื‘ืกื’ื ื•ืŸ ื—ื™ื™ื ื™ื”ื™ื• ืœื“ื•ื’ืžื” ืžืขื‘ืจ ืœืชื–ื•ื ื” ื‘ืจื™ืื”, ื‘ื—ื™ืจื” ื‘ืžื’ื•ืจื™ื ื‘ืขื™ืจ ืื• ื‘ื›ืคืจ, ื‘ื—ื™ืจืช ืžืกื’ืจืช ื”ื•ืฆืื•ืช ืื• ืฉื™ื ื•ื™ ื‘ื”ื™ืงืฃ ื”ืžืฉืจื” ื‘ืขื‘ื•ื“ื”. ื”ื”ื‘ื“ืœ ื”ืžืจื›ื–ื™ ื‘ื™ืŸ ื”ืฉืงืขื” ืœืฉื™ื ื•ื™ ืกื’ื ื•ืŸ ื—ื™ื™ื ื”ื•ื ื‘ืžื•ืขื“ ื”ืกื™ื•ื: ืžื™ ืฉืงื•ื ื” ืžื›ื•ื ื” ื—ื“ืฉื” ืœืขืกืง ืžืฆืคื” ืœื”ืฉืงื™ืข ื›ืกืฃ ื‘ืฆื™ื•ื“ ื”ื—ื“ืฉ ื•ืื—ืจื™ ื–ื” ื”ื”ืฉืงืขื” ืžืกืชื™ื™ืžืช ื•ืืคืฉืจ ืœื™ื”ื ื•ืช ืžื”ืžื›ื•ื ื”. ืื ื™ื•ื ืื—ื“ ื™ื’ืžืจื• ืœื‘ื ื•ืช ืืช ื”ืจื›ื‘ืช ื”ืงืœื” ื”ื ื™ืคืกื™ืงื• ืœื‘ื ื•ืช ืžืกื™ืœื•ืช ื•ื ื•ื›ืœ ืœื”ืชื—ื™ืœ ืœื™ื”ื ื•ืช ืžื”ื“ืจืš. ืฉื™ื ื•ื™ ืกื’ื ื•ืŸ ื—ื™ื™ื ืœืขื•ืžืช ื–ืืช ืœื ื›ื•ืœืœ ืžื•ืขื“ ืกื™ื•ื, ืžื™ ืฉืขื•ื‘ืจ ืœืชื–ื•ื ื” ื‘ืจื™ืื” ืœื ืžืชื›ื ืŸ ื™ื•ื ืื—ื“ "ืœื’ืžื•ืจ" ืืช ื”ืชืฉืœื•ื ื•ืœื”ืชื—ื™ืœ ืœืื›ื•ืœ ื’'ืื ืง. ื–ืืช ืคืฉื•ื˜ ืœื ื”ืžื˜ืจื”. ื•ื‘ื—ื–ืจื” ืœื”ืฉืงืขื•ืช ื’ืจื•ืขื•ืช - ื›ืœ ืงื•ืจืก ื˜ื›ื ื•ืœื•ื’ื™ ืฉื ื™ืงื—, ื›ืœ ื˜ื›ื ื•ืœื•ื’ื™ื” ืฉื ื‘ื—ืจ ืœืœืžื•ื“, ื”ื™ื ื”ืฉืงืขื” ื’ืจื•ืขื”. ืจื•ื‘ ื”ื˜ื›ื ื•ืœื•ื’ื™ื•ืช ื”ืคื•ืคื•ืœืจื™ื•ืช ื”ื™ื•ื ืœื ื™ื”ื™ื• ืื™ืชื ื• ืขื•ื“ 5 ืฉื ื™ื, ื•ื”ืจื‘ื” ืžื”ืŸ ื“ื•ืจืฉื•ืช ื–ืžืŸ ืœื™ืžื•ื“ ืฉืœ ื›ืžื” ื—ื•ื“ืฉื™ื ื‘ืฉื‘ื™ืœ ืœื”ื’ื™ืข ืœืจืžื” ื˜ื•ื‘ื”. ืื ื™ ืœื ืืฉื›ื— ืื™ืš ื™ืฉื‘ืชื™ ื—ืฆื™ ืฉื ื” ืœืœืžื•ื“ ืื™ืš ืœื›ืชื•ื‘ ืืคืœื™ืงืฆื™ื•ืช ืœื˜ืœืคื•ื ื™ื ืฉืœ ื ื•ืงื™ื”, ืจืง ื‘ืฉื‘ื™ืœ ืœื”ืชืขื•ืจืจ ืฉื ืชื™ื™ื ืžืื•ื—ืจ ื™ื•ืชืจ ืœืขื•ืœื ื‘ืœื™ ื ื•ืงื™ื” ื•ื‘ืœื™ ื–ื›ืจ ืœื›ืœื™ ื”ืคื™ืชื•ื— ืฉืœื”ื. ืื ื”ืžื˜ืจื” ืฉืœ ื”ื”ืฉืงืขื” ื”ื™ืชื” ืœื”ืฉื™ื’ ืžื™ื•ืžื ื•ืช ื—ื“ืฉื” ืฉืชืฉืจืช ืื•ืชื™ ืœืฉื ื™ื ืงื“ื™ืžื” ื–ื• ื”ื™ืชื” ื”ื”ืฉืงืขื” ื”ื’ืจื•ืขื” ื‘ื™ื•ืชืจ ืฉืืคืฉืจ ืœื“ืžื™ื™ืŸ. ืฉื•ื•ื” ื™ื•ืชืจ ืœื—ืฉื•ื‘ ืขืœ ืœื™ืžื•ื“ื™ ืชื›ื ื•ืช ื‘ืชื•ืจ ื‘ื—ื™ืจืช ืกื’ื ื•ืŸ ื—ื™ื™ื - ื—ืœืง ืžืกื’ื ื•ืŸ ื”ื—ื™ื™ื ืฉืœ ืื ืฉื™ื ืฉืขื•ื‘ื“ื™ื ื‘ืชื—ื•ื ื”ื•ื ืœืœืžื•ื“ ื›ืœ ื”ื–ืžืŸ ื˜ื›ื ื•ืœื•ื’ื™ื•ืช ื—ื“ืฉื•ืช ื•ืื– ืœืจืื•ืช ืื•ืชืŸ ืžืชื•ืช. ื”ืžืขื’ืœ ืœืขื•ืœื ืœื ื™ื™ื’ืžืจ, ืืฃ ืคืขื ืœื ื™ื”ื™ื” ืœื›ื ืžืกืคื™ืง ื™ื“ืข ื‘ืฉื‘ื™ืœ ืฉืชื•ื›ืœื• ืœื”ืคืกื™ืง ืœืœืžื•ื“, ื›ืžื• ืฉืืฃ ืคืขื ืœื ืชืื›ืœื• ืžืกืคื™ืง ืื•ื›ืœ ื‘ืจื™ื ื‘ืฉื‘ื™ืœ ืฉืืคืฉืจ ื™ื”ื™ื” ืœื—ื–ื•ืจ ืœืื›ื•ืœ ื’'ืื ืง. ื”ืžื˜ืจื” ืฉืœ ื”ืœื™ืžื•ื“ ื”ื™ื ืœื "ืœื’ืžื•ืจ ืขื ื–ื”" ื•ืœื”ืชื—ื™ืœ ืœืขื‘ื•ื“, ืืœื ืœื”ื‘ื™ืŸ ืื™ืš ืœื™ื”ื ื•ืช ืžืžื ื• ื•ืœืฉืœื‘ ืื•ืชื• ื‘ื™ื•ื ื™ื•ื ืฉืœ ื”ื—ื™ื™ื.

ToCode
1 421
# ื˜ื™ืค ื“ืจืžื˜ื™ืง - ืขื‘ื•ื“ื” ืขื actors ืืกื™ื ื›ืจื•ื ื™ื™ื ื“ืจืžื˜ื™ืง ื”ื™ื ืกืคืจื™ื” ืœื”ืจืฆืช ืžืฉื™ืžื•ืช ื‘ืจืงืข ื‘ืคื™ื™ืชื•ืŸ. ื”ื™ื ืžืื•ื“ ื“ื•ืžื” ืœ celery ืื‘ืœ ืงืฆืช ื™ื•ืชืจ ืžืชื•ื—ื–ืงืช ื•ื™ื•ื“ืขืช ืœืขื‘ื•ื“ ื˜ื•ื‘ ื™ื•ืชืจ ืขื ืžืฉื™ืžื•ืช ืฉืฆืจื™ืš ืœืชื–ืžืŸ ืœืฉืขื” ืžืกื•ื™ืžืช ื‘ืขืชื™ื“. ืคื•ืขืœ ืฉืœ ื“ืจืžื˜ื™ืง ืžืจื™ืฅ Threads, ื•ื›ืœ Thread ื™ื•ื“ืข ืœื”ืจื™ืฅ ืคื•ื ืงืฆื™ื•ืช ืฉื ืงืจืื•ืช Actors. ื“ื•ื’ืžืช ื”ืงื•ื“ ื”ื‘ืื” ืžื”ืืชืจ ืฉืœื”ื ืžืจืื” ืื™ืš ืœืžืฉื•ืš ื“ืฃ ืื™ื ื˜ืจื ื˜ ื•ืœืกืคื•ืจ ื›ืžื” ืžื™ืœื™ื ื™ืฉ ื‘ื•: ## ืงื•ื“ ื”ื“ื•ื’ืžื”
import dramatiq
import requests


@dramatiq.actor
def count_words(url):
     response = requests.get(url)
     count = len(response.text.split(" "))
     print(f"There are {count} words at {url!r}.")


# or send the actor a message so that it may perform the count
# later, in a separate process.
count_words.send("http://example.com")
ื‘ืฉื‘ื™ืœ ืฉ count_words ื‘ืืžืช ื™ืจื•ืฅ ืœื ืžืกืคื™ืง ืœื”ืคืขื™ืœ ืืช ื”ืกืงืจื™ืคื˜. ื™ืฉ ืœื”ืคืขื™ืœ ื’ื ืชื”ืœื™ืš ื ืคืจื“ ืฉืžืจื™ืฅ ืืช ื” Worker ืฉืœ dramatiq, ื•ืืช ื–ื” ืขื•ืฉื™ื ื‘ืืžืฆืขื•ืช ื”ืคืขืœื” ื‘ื—ืœื•ืŸ ื ืคืจื“ ืฉืœ ื”ืคืงื•ื“ื”:
dramatiq main.py
ื‘ื”ื ื—ื” ืฉืœืงื•ื‘ืฅ ื”ืชื•ื›ื ื™ืช ืงื•ืจืื™ื main. ืขื›ืฉื™ื• ื›ืœ ืคืขื ืฉืืจื™ืฅ ืืช main ื‘ื—ืœื•ืŸ ื”ืฉื ื™ ืื ื™ ืžืงื‘ืœ ืืช ื”ื”ื•ื“ืขื”:
There are 298 words at 'http://example.com'.
## ืชืจื’ื•ื ืœืงื•ื“ ืืกื™ื ื›ืจื•ื ื™ ืขื“ ืœืคื” ื”ื›ืœ ื˜ื•ื‘ ืื‘ืœ ืžื” ืงื•ืจื” ืื ืจื•ืฆื™ื ืœื”ืจื™ืฅ ืงื•ื“ ืืกื™ื ื›ืจื•ื ื™? ืžื” ืื count_words ื”ื™ืชื” ืžืฉืชืžืฉืช ืœืžืฉืœ ื‘ aiohttp ื‘ืžืงื•ื ื‘ requests? ืื ื™ ืžืขื“ื›ืŸ ืืช ื”ืงื•ื“:
@dramatiq.actor
async def count_words(url: str):
    async with aiohttp.ClientSession() as session:
        async with session.get(url) as resp:
            response = await resp.text()
            count = len(response.split(" "))
            print(f"There are {count} words at {url!r}.")

asyncio.run(count_words("http://example.com"))
ื•ื”ืชื•ื›ื ื™ืช ืขื•ื‘ื“ืช, ืื‘ืœ ื”ืคืขืœื” ืืกื™ื ื›ืจื•ื ื™ืช ื›ื‘ืจ ืœื ืžืžืฉ:
count_words.send("http://example.com")
ื”ื•ื“ืขืช ื”ืฉื’ื™ืื” ืฉืžื•ืคื™ืขื” ืขืœ ืžืกืš ื” Worker ื”ื™ื:
/Users/ynonp/work/intel-dec-2020/dramatiq-demo/venv/lib/python3.10/site-packages/dramatiq/worker.py:460: RuntimeWarning: coroutine 'count_words' was never awaited
  self.process_message(message)
RuntimeWarning: Enable tracemalloc to get the object allocation traceback
ื‘ื•ืื• ื ืชืงืŸ ืืช ื–ื” ## ื”ื•ืกืคืช ืชืžื™ื›ื” ื‘ืคื•ื ืงืฆื™ื•ืช ืืกื™ื ื›ืจื•ื ื™ื•ืช ืœ dramatiq ื‘ื’ืœืœ ืฉื“ืจืžื˜ื™ืง ืคื•ืชื— Thread-ื™ื ืœื ืžื•ืžืœืฅ ืœืคืชื•ื— Event Loop ื—ื“ืฉ ืžืชื•ืš ืคื•ื ืงืฆื™ื™ืช ื” Actor. ืœืคืขืžื™ื ื–ื” ื™ืขื‘ื•ื“ ืื‘ืœ ืœืคืขืžื™ื ื–ื” ื™ื™ื›ืฉืœ ืขื ืฉื’ื™ืื•ืช ืžื•ื–ืจื•ืช. ืขื“ื™ืฃ ืœื”ืขื‘ื™ืจ ืืช ื” Event Loop ืžื” Thread ื”ืจืืฉื™ ืœ Threadืฉืœื ื•, ื•ืœื”ืจื™ืฅ ื‘ Event Loop ื”ืจืืฉื™. ืื‘ืœ ืื™ืš ื ืขืฉื” ืืช ื–ื” ืื ืื™ืŸ ืœื ื• ื’ื™ืฉื” ืœืชื”ืœื™ื›ื•ืŸ ื”ืจืืฉื™? ืžืกืชื‘ืจ ืฉื’ื™ืจืกืื•ืช ืขื“ื›ื ื™ื•ืช ืฉืœ ื“ืจืžื˜ื™ืง ื”ื•ืกื™ืคื• ืชืžื™ื›ื” ื‘ืžื ื’ื ื•ืŸ ื–ื” ื•ืืคื™ืœื• ื‘ืฆื•ืจื” ืคืฉื•ื˜ื”. ื“ื‘ืจ ืจืืฉื•ืŸ ื™ืฉ ืœื”ืกื™ืจ ืืช ื“ืจืžื˜ื™ืง ื•ืœื”ืชืงื™ืŸ ืืช ื’ื™ืจืกืช ื” master ืฉืœื•:
$ yes | pip uninstall dramatiq
$ pip install git+https://github.com/Bogdanp/dramatiq@master
ืœืื—ืจ ืžื›ืŸ ื™ืฉ ืœื”ืชืงื™ืŸ ืžื™ื“ืœื•ื•ืจ ืฉืœ ื“ืจืžื˜ื™ืง ืฉืžืจื™ืฅ ืžืฉื™ืžื•ืช ืืกื™ื ื›ืจื•ื ื™ื•ืช. ืื ื™ ืžืขื“ื›ืŸ ืฉื•ื‘ ืืช ื”ืงื•ื“:
import dramatiq
from dramatiq.middleware.asyncio import AsyncIO
from dramatiq.brokers.redis import RedisBroker
import requests
import aiohttp
import asyncio
import os

broker_url = os.environ.get("BROKER_URL", "redis://localhost:6379/0")
broker = RedisBroker(url=broker_url)
broker.add_middleware(AsyncIO())
dramatiq.set_broker(broker)


@dramatiq.actor
async def count_words(url: str):
    async with aiohttp.ClientSession() as session:
        async with session.get(url) as resp:
            response = await resp.text()
            count = len(response.split(" "))
            print(f"There are {count} words at {url!r}.")

# asyncio.run(count_words("http://example.com"))

# Synchronously count the words on example.com in the current process
# count_words("http://example.com")

# or send the actor a message so that it may perform the count
# later, in a separate process.
count_words.send("http://example.com")
ื•ื–ื” ื”ื›ืœ - ืžืคืขื™ืœ ืžื—ื“ืฉ ืืช ื”ืคื•ืขืœ ืฉืœ dramatiq ื‘ื—ืœื•ืŸ ืื—ื“ ื•ื›ืฉืื ื™ ืžืคืขื™ืœ ืืช ื”ืกืงืจื™ืคื˜ ืขื ื” Actor ื”ืืกื™ื ื›ืจื•ื ื™ ื”ื›ืœ ืขื•ื‘ื“ ื•ื“ืจืžื˜ื™ืง ื™ื•ื“ืข ืœื”ืจื™ืฅ ืื•ืชื• ื‘ Event Loop ื”ืจืืฉื™ ืฉืœ ื”ืชื”ืœื™ืš ื•ืœื—ื›ื•ืช ืฉื™ืกื™ื™ื.

ToCode
1 421
# ื”ืคืจืคืงืฆื™ื•ื ื™ืกื˜ ื•ื”ื—ืืคืจ ื’ื ื”ืคืจืคืงืฆื™ื•ื ื™ืกื˜ ื•ื’ื ื”ื—ืืคืจ ืœื ืžืฆืœื™ื—ื™ื ืœื›ืชื•ื‘ ืงื•ื“ ืžืกืคื™ืง ื˜ื•ื‘, ืื‘ืœ ืžืกื™ื‘ื•ืช ืื—ืจื•ืช. ื”ืคืจืคืงืฆื™ื•ื ื™ืกื˜ ืฆืจื™ืš ืฉื”ื›ืœ ื™ืฉื‘ ื‘ืžืงื•ื ืœืคื ื™ ืฉื”ื•ื ื™ื›ื•ืœ ืœื”ืชื—ื™ืœ ืœืงื•ื“ื“. ื”ื•ื ื—ื™ื™ื‘ ืฉื” IDE ื™ื”ื™ื” ืžืงื•ื ืคื’ ื›ืžื• ืฉืฆืจื™ืš, ืฉืชืฉืชื™ืช ื”ื‘ื“ื™ืงื•ืช ื”ืื•ื˜ื•ืžื˜ื™ื•ืช ืชืขื‘ื•ื“, ืฉื”ืงื•ื“ ื™ืฉื‘ ืžืกื•ื“ืจ ื™ืคื” ื•ืžืชื•ืขื“, ืฉื”ืื‘ืกื˜ืจืงืฆื™ื•ืช ื™ื”ื™ื• ื‘ื“ื™ื•ืง ื ื›ื•ื ื•ืช. ืคืจืคืงืฆื™ื•ื ื™ืกื˜ื™ื ืžืชืงื“ืžื™ื ืœืื˜ ื•ื‘ืขื‘ื•ื“ื” ืžื—ืงืจื™ืช ื›ืžื• ื›ืชื™ื‘ืช ืงื•ื“ ืขื“ ืฉื”ื ื™ืกื™ื™ืžื• ื›ื‘ืจ ืžื™ืฉื”ื• ื‘ืคืจื•ื“ืงื˜ ื™ืฉื ื” ืืช ื“ืขืชื• ื•ื”ืจื‘ื” ืขื‘ื•ื“ื” ืชื™ื–ืจืง. ื”ื—ืืคืจ ื”ื•ื ื—ืœื•ืžื• ืฉืœ ื›ืœ ืื™ืฉ ืคืจื•ื“ืืงื˜ ื›ื™ ืืชื” ื™ื›ื•ืœ ืœื“ื‘ืจ ืื™ืชื• ื‘ื‘ื•ืงืจ ืขืœ ืคื™ืฆ'ืจ ื•ืฉืขืชื™ื™ื ืื—ืจื™ ื–ื” ื”ืžื ื’ื ื•ืŸ ื›ื‘ืจ ืขื•ื‘ื“ ื‘ืคืจื•ื“ืงืฉืŸ, ืื‘ืœ ื‘ื’ืœืœ ื—ื•ืกืจ ืกื“ืจ ื™ื”ื™ื• ื”ืจื‘ื” ื‘ืื’ื™ื, ื”ื•ื ืœื ื™ืฆืœื™ื— ืœืขื‘ื•ื“ ื‘ืฆื•ื•ืช ืื• ืขืœ ืžืขืจื›ื•ืช ืžื•ืจื›ื‘ื•ืช ื•ืจื’ืจืกื™ื•ืช ื™ืงืจื• ื›ืœ ื”ื–ืžืŸ. ื‘ื ื•ืกืฃ ื—ืฆื™ ืฉื ื” ืœืชื•ืš ื”ืคืจื•ื™ืงื˜ ื”ืงื•ื“ ื™ืจืื” ื›ืžื• ืขืจื™ืžืช ื‘ื•ืฅ ืขื ืงื™ืช ืฉื”ืžื•ืฆื ื”ื™ื—ื™ื“ ืžืžื ื” ื™ื”ื™ื” ืœืฉื›ืชื‘ ืืช ื”ื›ืœ. ื‘ืจื•ืจ ืฉืื ื—ื ื• ืœื ืจื•ืฆื™ื ืœื”ืชืงื“ื ืœืืฃ ืื—ื“ ืžื”ืงืฆื•ื•ืช ืฉืœ ื”ืกืงืืœื” ื‘ื™ื ื™ื”ื. ืื ื—ื ื• ื›ืŸ ืจื•ืฆื™ื ืœืžืฆื•ื ืžืงื•ื ื˜ื•ื‘ ื‘ืืžืฆืข ื•ื™ื•ืชืจ ืžืขื ื™ื™ืŸ - ืื ื—ื ื• ืจื•ืฆื™ื ืœื”ืชื ืกื•ืช ื‘ืขื‘ื•ื“ื” ื™ื•ืชืจ ืคืจืคืงืฆื™ื•ื ื™ืกื˜ื™ืช ืื• ื™ื•ืชืจ ื—ืืคืจื™ืช ื‘ืื•ืคืŸ ืฉื•ื˜ืฃ ื‘ื—ืœืงื™ื ื‘ืคืจื•ื™ืงื˜ ืฉืžืืคืฉืจื™ื ืืช ื–ื”. ื”ื“ืจืš ื”ื ื›ื•ื ื” ืœื”ืกืชื›ืœ ืขืœ ืฉื ื™ ื”ื—ื‘ืจ'ื” ื”ืืœื” ื”ื™ื ืœื ื‘ืชื•ืจ ืฉืชื™ ืืคืฉืจื•ื™ื•ืช ืจื™ืืœื™ื•ืช, ืืœื ื‘ืชื•ืจ ืžื™ื•ืžื ื•ื™ื•ืช ืฉื›ื“ืื™ ืœื™ื™ืฉื ื‘ื–ืžืŸ ื”ื ื›ื•ืŸ ื•ื‘ืžื™ื“ื” ื”ื ื›ื•ื ื”: ืคื™ืชื•ื—ื™ื ืžืกื•ื™ืžื™ื ื“ื•ืจืฉื™ื ืžื—ืงืจ ืžื”ื™ืจ ื•ื›ืชื™ื‘ืช ืงื•ื“ ืฉื™ื™ื–ืจืง, ื•ืคื™ืชื•ื—ื™ื ืื—ืจื™ื ื“ื•ืจืฉื™ื ืงื•ื“ ื™ืฆื™ื‘ ื•ืชืฉืชื™ื•ืช ืฉื™ืœื•ื• ืื•ืชื ื• ืœืฉื ื™ื. ื”ื’ืžื™ืฉื•ืช ื”ืžื—ืฉื‘ืชื™ืช ืœืขื‘ื•ืจ ื‘ื™ืŸ ืกื•ื’ื™ ื”ืขื‘ื•ื“ื” ืขื•ื–ืจืช, ืœื ืžืฉื ื” ืขืœ ืื™ื–ื” ืคืจื•ื™ืงื˜ ืืชื ืขื•ื‘ื“ื™ื ืขื›ืฉื™ื•.

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

ToCode
1 421
# ืขืฉืจ ืฉื ื™ื ืžืื•ื—ืจ ื™ื•ืชืจ ื›ืœ ืื—ื“ ื™ืจื’ื™ืฉ ืื‘ื•ื“ ืื ื™ืคื•ื˜ืจ ืžืžืงื•ื ืขื‘ื•ื“ื” ืื—ืจื™ ืขืฉืจ ืฉื ื™ื ืฉืœ ืขื‘ื•ื“ื” ื‘ืื•ืชื• ืžืงื•ื. ื›ืœ ืื—ื“ ื™ืจื’ื™ืฉ ืžื‘ื•ืœื‘ืœ ื•ื—ื•ืฉืฉ ื•ืœื›ืŸ ื”ืชื’ื•ื‘ื” ื”ื˜ื‘ืขื™ืช ื‘ืžืฆื‘ ื›ื–ื” ื”ื™ื ืœื”ืืฉื™ื ืืช ื”ืื™ืจื•ืข ื”ื ืงื•ื“ืชื™: ืื ืจืง ืœื—ื‘ืจื” ื”ื™ื” ืขื•ื“ ื›ืกืฃ, ืื ืจืง ื”ืžื ื›"ืœ ืœื ื”ื™ื” ืœื•ืงื— ื”ื›ืœ ืœืขืฆืžื•, ืื ืจืง ื”ื™ื• ืžื•ืจื™ื“ื™ื ืžืฉื›ื•ืจื•ืช ื‘ืžืงื•ื ืœืคื˜ืจ, ืื•ืœื™ ื”ื—ื™ื™ื ืฉืœื™ ื”ื™ื• ื ืฉืืจื™ื ื˜ื•ื‘ื™ื ื›ืฉื”ื™ื•. ืชื’ื•ื‘ื” ื›ื–ืืช ืžืงื‘ืœืช ื—ื™ื–ื•ืง ืื—ืจื™ ืฉืžืชื—ื™ืœื™ื ืœื—ืคืฉ ืขื‘ื•ื“ื” ื—ื“ืฉื” ื•ืจื•ืื™ื ืฉื”ืฉื•ืง ืœื ื—ื™ื›ื” ืœืš, ืฉื‘ืขืฆื ื”ืžื™ื•ืžื ื•ื™ื•ืช ืฉืœืš ืœื ืžืกืคื™ืง ืจืœื•ื•ื ื˜ื™ื•ืช ืœืจื•ื‘ ืžืงื•ืžื•ืช ื”ืขื‘ื•ื“ื” ื•ืฉื‘ื’ื™ืœืš ื›ื‘ืจ ืืฃ ืื—ื“ ืœื ืจื•ืฆื” ืœื’ื™ื™ืก ืื•ืชืš ืœืžืฉืจืช ืกื˜ื•ื“ื ื˜ ื•ื”ืžื’ื™ื™ืกื™ื ืžื—ืคืฉื™ื ืจืžื” ืžืงืฆื•ืขื™ืช ืฉืชื•ืืžืช ืœื’ื™ืœ ื•ืœื ื™ืกื™ื•ืŸ. ื•ื‘ื“ื™ื•ืง ื‘ืžืฆื‘ื™ื ื”ืืœื” ื—ืฉื•ื‘ ืœืฉื™ื ืœื‘ ืฉื”ื‘ืขื™ื” ื”ื™ื ืœื ื”ื—ื‘ืจื” ืฉืคืฉื˜ื” ืจื’ืœ ืื• ื”ืžื—ืœืงื” ืฉื ืกื’ืจื”. ืฉื•ื•ื” ืœื”ืกืชื›ืœ ืขืœ ืื ืฉื™ื ืื—ืจื™ื ื‘ืื•ืชื• ืžืฆื‘ ืฉื“ื•ื•ืงื ื›ืŸ ืžืฆืื• ืžื”ืจ ืขื‘ื•ื“ื” ื—ื“ืฉื”, ืื• ืืคื™ืœื• ืขืœ ื—ื‘ืจื™ื ืฉื”ื‘ื™ื ื• ืฉื”ื—ื‘ืจื” ื ื›ื ืกืช ืœืงืฉื™ื™ื ื›ื‘ืจ ืœืคื ื™ ืฉื ื” ื•ืฉื ืชื™ื™ื ื•ืขื–ื‘ื• ื‘ืชื ืื™ื ืฉืœื”ื. ื”ืžื˜ืจื” ืฉืœื ื• ื›ืžืชื›ื ืชื™ื ื”ื™ื ืœืฉืžื•ืจ ืขืœ ืจืžืช ื›ืฉื™ืจื•ืช ื’ื‘ื•ื”ื” ื‘ื›ืœ ืžืฆื‘. ืœื–ื›ื•ืจ ืฉืœื ืžืฉื ื” ื›ืžื” ื”ืจื•ื•ื—ืชื™ ืื• ื‘ืื™ื–ื” ืชืคืงื™ื“ ื”ื™ื™ืชื™, ืžื—ืจ ื‘ื‘ื•ืงืจ ืื ื™ ื™ื›ื•ืœ ืœื—ื–ื•ืจ ืœื ืงื•ื“ืช ื”ื”ืชื—ืœื”. ืžื” ืฉื ืฉืืจ ืื™ืชื ื• ื‘ื™ืŸ ืขื‘ื•ื“ื•ืช ื–ื” ื”ืžื™ื•ืžื ื•ืช ื•ื”ืžืงืฆื•ืขื™ื•ืช ืฉืœื ื•. ืœืื•ืจืš ื–ืžืŸ ืืœื” ื”ื“ื‘ืจื™ื ืฉืื ื—ื ื• ื—ื™ื™ื‘ื™ื ืœืฉืžืจ ื•ืœืฉืคืจ. ื•ื›ืฉืจื•ืื™ื ืืช ื–ื” ื’ื ืงืœ ื™ื•ืชืจ ืœื”ืชืžื•ื“ื“ ืขื ื”ืชื—ื•ืฉื•ืช ื•ืœืžืฆื•ื ืืช ื”ื“ืจืš ืงื“ื™ืžื”: ื›ืŸ, ืฆืจื™ืš ืœื”ืฉืœื™ื ืขืฉื•ืจ ืฉืœ ื”ืชืงื“ืžื•ืช ื˜ื›ื ื•ืœื•ื’ื™ืช ืฉื‘ื• ื”ื™ื™ืช ืชืงื•ืข ื‘ืงื•ื‘ื™ื” ืขื ืžืฉื›ื•ืจืช ื’ื‘ื•ื”ื” ื‘ื—ื‘ืจื” ืฉื›ื‘ืจ ืžื–ืžืŸ ืœื ืคื™ืชื—ื” ืžื•ืฆืจื™ื ืจืœื•ื•ื ื˜ื™ื™ื. ื–ื” ื™ื™ืงื— ื–ืžืŸ ื•ืขื‘ื•ื“ื”. ื•ืื—ืจื™ ืฉืชืกื’ื•ืจ ืืช ื”ืคืขืจ ื•ืชืžืฆื ืืช ื”ืขื‘ื•ื“ื” ื”ื‘ืื”, ื ืกื” ืœื”ืฉืื™ืจ ืืช ื”ืจื’ืข ื”ื–ื” ืฉืœ ืขืฉืจ ืฉื ื™ื ืงื“ื™ืžื” ื‘ืชื•ื“ืขื”. ื”ืฉืงืขืช ืขื‘ื•ื“ื” ื‘ืœื™ืžื•ื“ ื‘ื™ื•ื ื™ื•ื ืชื”ืคื•ืš ืืช ื”ื—ื™ืคื•ืฉ ื”ื‘ื ืœื”ืจื‘ื” ื™ื•ืชืจ ืคืฉื•ื˜.

ToCode
1 421
# ื”ืื Panda CSS ื”ื•ื ื”ื“ื‘ืจ ื”ื’ื“ื•ืœ ื”ื‘ื ื‘ืขื™ืฆื•ื‘ ืœืจื™ืืงื˜? ืคื ื“ื” ื”ื•ื ื‘ื”ื—ืœื˜ ื›ืœ ืžื” ืฉืืคืฉืจ ืœื“ืžื™ื™ืŸ ื›ืฉื—ื•ืฉื‘ื™ื ืขืœ ืคืจื™ื™ืžื•ื•ืจืง ืœ CSS in JS. ื”ื™ืชืจื•ืŸ ื”ื’ื“ื•ืœ ืฉืœื• ื”ื•ื ื”ืชืžื™ื›ื” ื”ืžืœืื” ื‘ืงื•ืžืคื•ื ื ื˜ื•ืช ืฆื“-ืฉืจืช, ื›ืœื•ืžืจ ื‘ื‘ื ื™ื™ืช ื›ืœ ื”ื’ื“ืจื•ืช ื”ืขื™ืฆื•ื‘ ื‘ืฆื“ ื‘ืชื•ืจ ืงืœืืกื™ื ื•ืฉื™ืžื•ืฉ ืื•ื˜ื•ืžื˜ื™ ื‘ืงืœืืกื™ื ืืœื” ื‘ืชื•ืš ื”ืงื•ื“, ื‘ืกื’ื ื•ืŸ Tailwind CSS. ืื‘ืœ ื‘ื ื™ื’ื•ื“ ืœื˜ื™ื™ืœื•ื•ื™ื ื“, ืคื” ื™ืฉ ืœื ื• ื’ื ื—ื™ื‘ื•ืจ ืœ TypeScript ื›ื“ื™ ืœืงื‘ืœ ื”ืฉืœืžื” ื•ืื™ืžื•ืช ื˜ื™ืคื•ืกื™ื ืขืœ ื›ืœืœื™ ื”ืขื™ืฆื•ื‘ ื•ืื™ื ื˜ื’ืจืฆื™ื” ื˜ื•ื‘ื” ืขื ืจื™ืืงื˜ ื›ื“ื™ ืœื™ื™ืฆืจ ืขื™ืฆื•ื‘ื™ื ืžืชื•ืš ืงื•ื“. ื•ื›ืžื• ืฉืื•ืžืจื™ื ืงื•ื“ ืฉื•ื•ื” ื™ื•ืชืจ ืžืืœืฃ ืžื™ืœื™ื, ืื– ื”ื ื” ื“ื•ื’ืžื” ืงื˜ื ื” ืœ Panda ื‘ืงื•ืžืคื•ื ื ื˜ืช ืจื™ืืงื˜:
function App() {
  return (
    <div className={css({ background: 'red.400'})}>
      <div className={css({ fontSize: "2xl", fontWeight: 'bold' })}>Hello ๐Ÿผ!</div>
    </div>
  )
}
ืื ื™ ืžืฉืชืžืฉ ื‘ืคื•ื ืงืฆื™ื” css ื•ืžืขื‘ื™ืจ ืืช ืขืจืš ื”ื—ื–ืจื” ืฉืœื” ื‘ืชื•ืจ className. ื‘ืื•ืคืŸ ืื•ื˜ื•ืžื˜ื™ ืคื ื“ื” ืžื™ื™ืฆืจ ืงืœืืก ืฉื™ืฉ ืœื• ืืช ื”ื’ื“ืจื•ืช ื”ืขื™ืฆื•ื‘ ืฉื›ืชื‘ืชื™ ื•ื”ืคื•ื ืงืฆื™ื” ืžื—ื–ื™ืจื” ืืช ืฉื ื”ืงืœืืก. ื‘ืžื™ื“ื” ื•ื”ืงื•ืžืคื•ื ื ื˜ื” ืชืจื•ื ื“ืจ ืžืฆื“ ืฉืจืช, ืื– ื” HTML ืฉื™ื™ืฉืœื— ืœืœืงื•ื— ื™ื›ื™ืœ ืžืžืฉ ืืช ืฉืžื•ืช ื”ืงืœืืกื™ื ืฉื’'ื•ื ืจื˜ื• ื•ื›ืš ื’ื•ืœืฉื™ื ื™ื›ื•ืœื™ื ืœืจืื•ืช ืืช ื”ืขืžื•ื“ ืขื ื”ืขื™ืฆื•ื‘ ื’ื ื‘ืœื™ JavaScript. ื•ื“ื•ื’ืžื” ืฉื ื™ื” ืงืฆืช ื™ื•ืชืจ ืžืชื•ื—ื›ืžืช-
function App() {
  const [clicked, setClicked] = useState(false);
  return (
    <div>
      <button
        className={css({
          color: {
            base: 'blue',
            _hover: 'green',
          },
          cursor: 'pointer',
          background: '#dadada',
          padding: '10px',
          borderRadius: '5px',
        })}
        onClick={() => setClicked(true)}
      >
        Click Here
      </button>
      <p className={css({
        color: clicked ? 'green' : 'red'
      })}>{clicked ? 'Passed' : 'Failed'}</p>
    </div>
  )
}
ื”ืžืคืชื— _hover ืžื’ื“ื™ืจ ืขืจืš ืขื™ืฆื•ื‘ ืฉื™ืคืขืœ ื›ืฉื”ืืœืžื ื˜ ื ืžืฆื ื‘ hover, ื•ืื™ืŸ ื‘ืขื™ื” ื‘ืชื•ืš ื”ืื•ื‘ื™ืงื˜ื™ื ืฉืœ ื”ืขื™ืฆื•ื‘ ืœื‘ื“ื•ืง ืขืจื›ื™ื ืฉืœ ืžืฉืชื ื™ JavaScript. ื›ื“ื™ ืœืฉื—ืง ืขื Panda ืชืฆื˜ืจื›ื• ืงื•ื“ื ืœื”ื•ืกื™ืฃ ืื•ืชื• ืœืคืจื•ื™ืงื˜ ืจื™ืืงื˜ ืฉืœื›ื. ืืœื” ื”ื”ื•ืจืื•ืช ืœืคืจื•ื™ืงื˜ ืฉื‘ื ื•ื™ ื‘ Vite: https://panda-css.com/docs/getting-started/vite

ToCode
1 421
# ื”ื–ืŸ ืฉืœ ืคื™ื™ืชื•ืŸ - ืžืคื•ืจืฉ ื˜ื•ื‘ ื™ื•ืชืจ ืžืžื•ื‘ืœืข ื‘ื ื™ื•ื–ืœื˜ืจ ืฉืœื• ืจืื•ื‘ืŸ ื›ืชื‘ ืขืœ ื”ื–ืŸ ืฉืœ ืคื™ื™ืชื•ืŸ ื•ืื™ืš ืคื™ื™ืชื•ืŸ ื”ื™ื ืฉืคื” "ืžืคื•ืจืฉืช" ื•ื‘ืœื™ ื”ืจื‘ื” ื™ื•ืฆืื™ื ืžื”ื›ืœืœ, ื‘ื ื™ื’ื•ื“ ืœ Ruby ืื• JavaScript. ืื—ืช ื”ื“ื•ื’ืžืื•ืช ืฉื ื”ื™ืชื” ืฉื‘ืคื™ื™ืชื•ืŸ ืื ื—ื ื• ืชืžื™ื“ ื™ื•ื“ืขื™ื ืžื™ ื™ื”ื™ื” ื” self, ื‘ื ื™ื’ื•ื“ ืœ JavaScript ืฉื™ื›ื•ืœื” ืœื”ืคืชื™ืข ืขื this ื‘ื–ืžืŸ ืจื™ืฆื”. ื‘ื•ืื• ื ืคืจืง ืืช ื”ื˜ืขื ื” ื”ื–ืืช ื•ื ื‘ื“ื•ืง ืžืชื™ ื’ื ืคื™ื™ืชื•ืŸ ื™ื›ื•ืœื” ืœื”ืคืชื™ืข. ## ืงืฉื™ืจื” ื“ื™ื ืžื™ืช ืฉืœ this ื ืชื—ื™ืœ ื‘ื”ืชื—ืœื”, ื‘ JavaScript ืื ื™ ื™ื›ื•ืœ ืœื›ืชื•ื‘ ืงืœืืก ืขื ืžืชื•ื“ื•ืช ื‘ืื•ืคืŸ ื”ื‘ื:
class Foo {
    constructor(name) {
        this.name = name;
    }
    
    hello() {
        console.log(`Hello ${this.name}`);
    }
}
ื•ืื– ืœื”ืฉืชืžืฉ ื‘ื• ืขื:
const f = new Foo("ynon");
f.hello();
ื•ื”ื›ืœ ื™ืขื‘ื•ื“ ื•ื”ื˜ืงืกื˜ ื”ื ื›ื•ืŸ ื™ื•ื“ืคืก. ื”ื‘ืขื™ื” ืฉื”ื—ื™ื‘ื•ืจ ื‘ื™ืŸ ื”ืคื•ื ืงืฆื™ื” hello ืœืงืœืืก Foo ื”ื•ื ื—ื™ื‘ื•ืจ ื—ืœืฉ. ื”ื•ื ื ืงื‘ืข ื‘ื–ืžืŸ ื”ื”ืคืขืœื” ืฉืœ ื”ืคื•ื ืงืฆื™ื” ื•ืงืœ ืœื”ืคืขื™ืœ ืืช ืื•ืชื” ืคื•ื ืงืฆื™ื” ื‘ืฆื•ืจื” ืื—ืจืช ื›ื“ื™ ืœืฉื‘ื•ืจ ืืช ื”ืžื™ืžื•ืฉ ืฉืœื”. ื“ื•ื’ืžื” ืงืœื” ื”ื™ื ื”ืงืจื™ืื”:
const x = f.hello;
x();
ืฉืžืคืขื™ืœื” ืืช ื”ืคื•ื ืงืฆื™ื” ืขื undefined ื‘ืชื•ืจ this ื•ืœื›ืŸ ื–ื•ืจืงืช Exception, ืื• ื”ืงืจื™ืื”:
const bar = { name: 'tony' };
f.hello.call(bar);
ืฉืคืฉื•ื˜ ืžืคืขื™ืœื” ืืช ื”ืคื•ื ืงืฆื™ื” ืขื ืื•ื‘ื™ืงื˜ this ืื—ืจ. ื‘ืื•ืคืŸ ืจื’ื™ืœ ื“ืคื“ืคื ื™ื ืžืฉืชืžืฉื™ื ื”ืžื•ืŸ ื‘ื˜ืจื™ืง ื”ื–ื” ื‘ืžื™ื•ื—ื“ ื‘ืงื•ื“ ืฉืžื˜ืคืœ ื‘ืื™ืจื•ืขื™ื, ืฉื ื”ืžืฉืชื ื” this ื™ื”ื™ื” ื‘ื“ืจืš ื›ืœืœ ื”ืื•ื‘ื™ืงื˜ ืฉื’ืจื ืœืื™ืจื•ืข, ื‘ืœื™ ืงืฉืจ ืœืงืœืืก ืฉื‘ืชื•ื›ื• ื”ื•ื’ื“ืจื” ื”ืคื•ื ืงืฆื™ื”. ## ืงืฉื™ืจื” ืงืฉื™ื—ื” ืฉืœ this ืขื bind ื”ืคื•ื ืงืฆื™ื” bind ื‘ JavaScript, ืื• ื”ื’ื“ืจื” ืฉืœ ืคื•ื ืงืฆื™ื™ืช ื—ืฅ, ืžื’ื“ื™ืจื•ืช ื—ื™ื‘ื•ืจ ืžืกื•ื’ ืื—ืจ ืœ this. ื ืฉื™ื ืœื‘ ืœืงื•ื“ ื”ื‘ื:
class Foo {
    constructor(name) {
        this.name = name;
    }
    
    hello = () => {
        console.log(`Hello ${this.name}`);
    }
}


const f = new Foo("ynon");

const x = f.hello;
x();


const bar = { name: 'tony' };
f.hello.call(bar);
ื”ืคืขื ื”ื›ืœ ืชืงื™ืŸ ื•ืฉืชื™ ื”ืงืจื™ืื•ืช ืžื“ืคื™ืกื•ืช ืืช ื”ื˜ืงืกื˜ Hello ynon. ื‘ืขืฆื ื‘ื›ืชื™ื‘ืช ืงื•ื“ JavaScript ืื ื—ื ื• ืฆืจื™ื›ื™ื ืœื‘ื—ื•ืจ ื‘ืื™ื–ื” ืกื•ื’ binding ื ืจืฆื” ืœื”ืฉืชืžืฉ, ื›ืฉื”ืฉืคื” ืชื•ืžื›ืช ื‘ืฉืชื™ ื”ืืคืฉืจื•ื™ื•ืช ืื‘ืœ ื‘ืจื™ืจืช ื”ืžื—ื“ืœ ืฉืœื” ืงืฆืช ืžืคืชื™ืขื”. ## ืงืฉื™ืจืช ืคื•ื ืงืฆื™ื•ืช ืœืžื—ืœืงื•ืช ื‘ืคื™ื™ืชื•ืŸ ืื‘ืœ ืœื ื‘ืื ื• ืœื“ื‘ืจ ืขืœ JavaScript ืืœื ืขืœ ืคื™ื™ืชื•ืŸ - ื”ืื ืคื™ื™ืชื•ืŸ ื”ื™ื ื‘ืืžืช ื™ื•ืชืจ Explicit ืื• ื™ื•ืชืจ Implicit ื‘ื”ื™ื‘ื˜ ืฉืœ ืงืฉื™ืจืช ืคื•ื ืงืฆื™ื•ืช ืœืžื—ืœืงื•ืช? ื ืชื—ื™ืœ ื‘ื›ืชื™ื‘ ื‘ืจื™ืจืช ื”ืžื—ื“ืœ:
class Foo:
    def __init__(self, name):
        self.name = name

    def hello(self):
        print(f"Hello {self.name}")

f = Foo("ynon")
f.hello()
ื”ืงื•ื“ ื›ืžืขื˜ ืžื•ืขืชืง ืž JavaScript ื•ืขื•ื‘ื“ ืื•ืชื• ื“ื‘ืจ. ื›ืฉื ื ืกื” ืœื”ืคืขื™ืœ ืืช ื”ืคื•ื ืงืฆื™ื” ื“ืจืš ืžืฉืชื ื” ืื—ืจ ื ืจืื” ืฉื”ืคื•ื ืงืฆื™ื” "ืžื—ื•ื‘ืจืช" ืœืžื—ืœืงื” Foo ื•ื”ืงื•ื“ ืขื“ื™ื™ืŸ ื™ืขื‘ื•ื“:
x = f.hello
x()
## ืงืฉื™ืจื” ื—ืœืฉื” ื‘ืคื™ื™ืชื•ืŸ ืื‘ืœ ืคื™ื™ืชื•ืŸ ืชื•ืžื›ืช ื’ื ื‘ื›ืชื™ื‘ ื”ืฉื ื™ ืฉืœ ืงืฉื™ืจื” ื—ืœืฉื”, ืœืคื—ื•ืช ืกื•ื’-ืฉืœ. ื”ืฉื“ื” ื”ืžื™ื•ื—ื“ __func__ ืฉืœ ืžืชื•ื“ื” ืžื—ื–ื™ืจ ืืช ื”ืคื•ื ืงืฆื™ื” ืฉืžืžืžืฉืช ืื•ืชื”, ื‘ืœื™ ืงืฉืจ ืœืžื—ืœืงื” ืžืžื ื” ื”ื’ื™ืขื”. ื”ืคื•ื ืงืฆื™ื” __get__ ืฉืœ ืื•ืชื” ืคื•ื ืงืฆื™ื” ืงื•ืฉืจืช ืืช ื”ืคื•ื ืงืฆื™ื” ืœืžืชื•ื“ื” ื—ื“ืฉื”, ืื•ืœื™ ืฉืœ ืื•ื‘ื™ืงื˜ ืื—ืจ. ื•ืœื›ืŸ ื”ืงื•ื“ ื”ื‘ื ืžื“ืคื™ืก Hello tony:
class Foo:
    def __init__(self, name):
        self.name = name

    def hello(self):
        print(f"Hello {self.name}")

class Bar:
    def __init__(self):
        self.name = "tony"


f = Foo("ynon")
b = Bar()

x = f.hello.__func__.__get__(b, Bar)
x()
ืื– ื ื›ื•ืŸ ื”ืกืคืจื™ื•ืช ื”ืžื•ื‘ื ื•ืช ื‘ืคื™ื™ืชื•ืŸ ืขื•ืฉื•ืช ืฉื™ืžื•ืฉ ืคื—ื•ืช ื ืจื—ื‘ ื‘ืžื‘ื ื” ื–ื” ืœืขื•ืžืช ื“ืคื“ืคืŸ, ืื‘ืœ ื›ืžื• ื‘ JavaScript ื’ื ื‘ืคื™ื™ืชื•ืŸ ืื ื—ื ื• ื™ื›ื•ืœื™ื ืœื‘ื—ื•ืจ ืื™ื–ื” ืกื•ื’ ื—ื™ื‘ื•ืจ ื ืจืฆื” ื‘ื™ืŸ ื”ืคื•ื ืงืฆื™ื” ืœืžื—ืœืงื” ื•ืœื‘ื—ื•ืจ ื‘ื–ืžืŸ ื”ืงืจื™ืื” ืœืคื•ื ืงืฆื™ื” ืžื™ ื™ื”ื™ื” ื” self ืฉื”ื™ื ืชืจืื”. ืคื™ื™ืชื•ืŸ ื‘ืกืš ื”ื›ืœ ืžืกืชื™ืจื” ืืช ื”ืคื™ืฆ'ืจ ื”ื–ื” ืงืฆืช ื™ื•ืชืจ ื˜ื•ื‘.

ToCode
1 421
# ืœื”ืขืœื•ืช ืืช ื”ืกื˜ื ื“ืจื˜ื™ื ืื™ืŸ ืกืคืง ืฉืื ืงื•ื“ ืœื ืขื•ื‘ื“ ื›ืžื• ืฉืฆืจื™ืš ืื ื—ื ื• ืœื ืฆืจื™ื›ื™ื ืœื”ื›ื ื™ืก ืื•ืชื• ืœืžืขืจื›ืช. ืื‘ืœ ื”ืจื‘ื” ืคืขืžื™ื ื”ืกื˜ื ื“ืจื˜ื™ื ืฉืœื ื• ื™ื•ืชืจ ื’ื‘ื•ื”ื™ื. ื‘ื•ืื• ื ื“ื‘ืจ ืขืœ ืจื™ืืงื˜ ื‘ืฉื‘ื™ืœ ื”ื“ื•ื’ืžื” ื•ื ืกืชื›ืœ ืขืœ ื”ืงื•ื“ ื”ื‘ื:
import "./styles.css";

function Counter() {
  function handleClick() {
    const btn = document.querySelector(".counter button");
    const count = Number(btn.textContent);
    btn.textContent = count + 1;
  }

  return (
    <div className="counter">
      <button onClick={handleClick}>0</button>
    </div>
  );
}

export default function App() {
  return (
    <div className="App">
      <Counter />
    </div>
  );
}
ื”ืงื•ื“ ืขื•ื‘ื“ - ื”ื•ื ืžืจืื” ื›ืคืชื•ืจ ืขื ื”ืžืกืคืจ 0 ื•ื›ืฉืœื•ื—ืฆื™ื ืขืœ ื”ื›ืคืชื•ืจ ื”ืžืกืคืจ ืขื•ืœื” ืœืคื™ ืžืกืคืจ ื”ืœื—ื™ืฆื•ืช. ืœื ืืคืœื™ืงืฆื™ื” ืžืขื ื™ื™ื ืช ื‘ืžื™ื•ื—ื“ ืื‘ืœ ืขื•ื‘ื“ืช. ื•ืœืžืจื•ืช ืฉื”ื™ื ืขื•ื‘ื“ืช ื™ืฉ ืœื ืžืขื˜ ืกื™ื‘ื•ืช ื‘ื’ืœืœืŸ ืœื ื ืจืฆื” ืœื›ืชื•ื‘ ื›ืš: 1. ื”ืงื•ื“ ืœื ื™ืฆื™ื‘ - ืื App ื™ืฉืชื ื”, ืœืžืฉืœ ืื ื™ื•ืกื™ืคื• ืขื•ื“ Counter, ืื– ืื—ื“ ืžื”ื ื™ืคืกื™ืง ืœืขื‘ื•ื“ ื‘ื’ืœืœ ื”ืฉื™ืžื•ืฉ ื‘ document.querySelector. ื™ื•ืชืจ ืžื–ื”, ืื ื™ื•ืกื™ืคื• ืžืฉืชื ื” State ืื• Props ืœ Counter ืื– ื‘ืจื™ื ื“ื•ืจ ื”ื‘ื ื”ืขืจืš ืฉื›ืชื•ื‘ ื‘ื›ืคืชื•ืจ ื™ื™ืžื—ืง. 2. ื”ืงื•ื“ ืžืขื•ื“ื“ ืกื˜ื ื“ืจื˜ื™ื ืœื ื˜ื•ื‘ื™ื - ื›ื›ืœ ืฉื”ืงื•ื“ ื™ื•ืขืชืง ืœื™ื•ืชืจ ืžืงื•ืžื•ืช ืœืžืขืจื›ืช (ื›ืžื• ืฉืงื•ืจื” ืœืงื•ื“), ืื™ื›ื•ืช ื”ืงื•ื“ ื”ื›ืœืœื™ ื‘ืžืขืจื›ืช ืชืจื“. ืžื™ ืฉื›ืชื‘ ืื•ืชื• ื‘ื‘ื™ืจื•ืจ ืœื ืžื‘ื™ืŸ ืžืกืคื™ืง ืืช ืจื™ืืงื˜. 3. ื‘ืงื•ื“ ืงืฉื” ืœื‘ืฆืข ื‘ืงื•ื“ ืฉื™ื ื•ื™ื™ื ืงื˜ื ื™ื ื•ื”ื’ื™ื•ื ื™ื™ื, ืœืžืฉืœ ื‘ืฉื‘ื™ืœ ืœื”ืฆื™ื’ ืืช ื”ืขืจืš ืฉืœ ื”ื›ืคืชื•ืจ ื‘ืžืงื•ืžื•ืช ื ื•ืกืคื™ื ื‘ืงื•ืžืคื•ื ื ื˜ื” ื ืฆื˜ืจืš ืœืขื“ื›ืŸ ื’ื ืืช ื”ืคื•ื ืงืฆื™ื” handleClick ื•ื’ื ืืช ื”ืคื•ื ืงืฆื™ื” ื”ืจืืฉื™ืช Counter. ืจืง ืฉืœื•ืฉืช ื”ืกื™ื‘ื•ืช ื”ืืœื” ืžืกืคื™ืงื•ืช ื‘ืฉื‘ื™ืœ ืœืฉื›ืชื‘ ืืช ื”ืงื•ื“ ื‘ื”ืงื“ื ื”ืืคืฉืจื™. ื›ืœ ื™ื•ื ืฉืงื•ื“ ื›ื–ื” ื ืฉืืจ ื‘ืžืขืจื›ืช, ื”ื•ื ืคื•ื’ืข ื‘ื ื• ื•ื‘ื—ื‘ืจื™ื ืฉืœื ื• ืœืฆื•ื•ืช. ื•ื‘ืจื•ืจ, ืœื ื”ื™ื™ืชื ื›ื•ืชื‘ื™ื ืืช ื”ืงื•ื“ ืฉื”ื“ื‘ืงืชื™, ื”ืฉืืœื” ื›ืžื” ืคืขืžื™ื ืืชื ืžื›ื ื™ืกื™ื ืœืžืขืจื›ืช ืงื•ื“ ืฉืืชื ืœื ืžื‘ื™ื ื™ื ืขื“ ื”ืกื•ืฃ? ื›ืžื” ืคืขืžื™ื ืืชื ืžืฉืื™ืจื™ื ืงื•ื“ ืจืง ื‘ื’ืœืœ ืฉื”ื•ื ืขื•ื‘ื“? ื•ื”ืื ืœื ื”ื’ื™ืข ื”ื–ืžืŸ ืœื”ืขืœื•ืช ืืช ื”ืกื˜ื ื“ืจื˜ื™ื?