uz
Feedback
ToCode

ToCode

Kanalga Telegramโ€™da oโ€˜tish

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

Ko'proq ko'rsatish
1 420
Obunachilar
Ma'lumot yo'q24 soatlar
+27 kunlar
-230 kunlar
Postlar arxiv
ToCode
1 420
# ื˜ื™ืค ืœื™ื ื•ืงืก: ื›ื ื™ืกื” ืœืกืจื‘ื™ืกื™ื ื‘ืืžืฆืขื•ืช SSH Tunnel ืฆืจื™ื›ื™ื ืœื”ืชื—ื‘ืจ ืœืกืจื‘ื™ืก ืฉืจืฅ ืขืœ ืžื›ื•ื ื” ืื—ืจืช ืื‘ืœ ื ื—ืกืžื™ื ื‘ื’ืœืœ ื—ื•ืžืช ืืฉ? ื”ืกืจื‘ื™ืก ื”ืžืจื•ื—ืง ืžืงืฉื™ื‘ ืจืง ืœื—ื™ื‘ื•ืจื™ื ืž localhost ื•ืืชื ืžื’ื™ืขื™ื ืžื‘ื—ื•ืฅ ื•ื‘ื›ืœ ื–ืืช ืจื•ืฆื™ื ืœื’ืฉืช? ืืœ ืชืžื”ืจื• ืœืฉื ื•ืช ืืช ื”ื’ื“ืจื•ืช ื—ื•ืžืช ื”ืืฉ ืื• ืœืฉื ื•ืช ืืช ื” listen interface. ืื ื™ืฉ ืœื›ื ื’ื™ืฉืช ssh ืœืžื›ื•ื ื” ื”ื˜ืจื™ืง ื”ืคืฉื•ื˜ ื”ื‘ื ื™ื›ื•ืœ ืœืชืช ืคื™ืชืจื•ืŸ ื”ืจื‘ื” ื™ื•ืชืจ ืžื”ื™ืจ. ื”ืžืชื’ -L ืœืคืงื•ื“ืช ssh ืคื•ืชื— ืชืขืœื” (tunnel) ื‘ื™ืŸ ื”ืžื›ื•ื ื” ืฉืœื›ื ืœืžื›ื•ื ื” ื”ืžืจื•ื—ืงืช, ื›ืš ืฉืชื•ื›ื ื” ืชื•ื›ืœ ืœืจื•ืฅ ืขืœ ื”ืžื›ื•ื ื” ืฉืœื›ื ื•ืœื ืกื•ืช ืœื”ืชื—ื‘ืจ ืœืคื•ืจื˜ ืžืกื•ื™ื - ื•ืื•ื˜ื•ืžื˜ื™ืช ื”ื”ื•ื“ืขื” ืชื™ืฉืœื— ื‘ืชืขืœื” ืœืžื›ื•ื ื” ื”ืฉื ื™ื” ื•ืชืชื ื”ื’ ื›ืื™ืœื• ื”ืชื•ื›ื ื” ืฉืœื›ื ืจืฆื” ืขืœ ื”ืžื›ื•ื ื” ื”ืฉื ื™ื”. ื‘ืฆื•ืจื” ื›ื–ืืช ืืคืฉืจ ืœื”ืชื—ื‘ืจ ืœื‘ืกื™ืก ื ืชื•ื ื™ื Production ื“ืจืš ืžืžืฉืง ื’ืจืคื™, ืืคื™ืœื• ืื ื”ืคื•ืจื˜ ืฉืœ ื‘ืกื™ืก ื”ื ืชื•ื ื™ื ืกื’ื•ืจ ื•ื‘ืกื™ืก ื”ื ืชื•ื ื™ื ืžืื–ื™ืŸ ืจืง ืœื—ื™ื‘ื•ืจื™ื ืžืงื•ืžื™ื™ื. ื‘ื•ืื• ื ืจืื” ื“ื•ื’ืžื” ืขื redis - ืื ื™ ืžืงื™ื ืฉืชื™ ืžื›ื•ื ื•ืช Ubuntu, ืžืชืงื™ืŸ redis ืขืœ ืฉืชื™ื”ืŸ ื•ืžื™ื™ืฆืจ ื—ื™ื‘ื•ืจ ssh ื‘ื™ื ื™ื”ืŸ ื›ืš ืฉืืคืฉืจ ื™ื”ื™ื” ืžืžื›ื•ื ื” ืื—ืช ืœื”ืชื—ื‘ืจ ื‘ ssh ืœืžื›ื•ื ื” ื”ืฉื ื™ื”. ื›ืชื•ื‘ื•ืช ื” ip ืฉืœื™ ื”ืŸ 192.168.64.15 ื• 192.168.64.13. ืงื•ื“ื ื›ืœ ืื ื™ ื ื›ื ืก ืœืžื›ื•ื ื” 13 ื•ืฉื ืžื›ื‘ื” ืืช ืฉืจืช ื” redis ื›ืš ืฉื—ื™ื‘ื•ืจ ืžืงื•ืžื™ ื™ื™ื›ืฉืœ (ื›ื“ื™ ืœื ืœื”ืชื‘ืœื‘ืœ):
$ systemctl stop redis-server
$ redis-cli
Could not connect to Redis at 127.0.0.1:6379: Connection refused
ืื ื™ ื’ื ืžืจื™ืฅ ืืช ื”ืคืงื•ื“ื” ื”ื‘ืื” ื›ื“ื™ ืœื•ื•ื“ื ืฉื™ืฉ ืœื™ ื’ื™ืฉืช ssh ืžืžื›ื•ื ื” 13 ืœืžื›ื•ื ื” 15:
ssh ubuntu@192.168.64.15 /bin/true
ืขื›ืฉื™ื• ื ื›ื ืก ืœืžื›ื•ื ื” 15 ื•ืฉื ืžื•ื•ื“ื ืฉื™ืฉ ืœื™ ื—ื™ื‘ื•ืจ ืœ redis ื”ืžืงื•ืžื™. ืื’ื“ื™ืจ ืฉื ื’ื ืžืคืชื— x ืœื“ื•ื’ืžื” ืขื ื”ืขืจืš 10:
$ ssh ubuntu@192.168.64.15
$ redis-cli
redis-cli
127.0.0.1:6379> set x 10
OK
ื•ืขื›ืฉื™ื• ืžื’ื™ืขื™ื ืœืงืกื. ื‘ืžื›ื•ื ื” 13 ืื ื™ ืžืคืขื™ืœ:
$ ssh -L 6379:localhost:6379 ubuntu@192.168.64.15
ื”ืžืกืคืจ 6379 ื”ื•ื ื”ืคื•ืจื˜ ืฉืœ ืจื“ื™ืก. ืื ื™ ื›ื•ืชื‘ ืื•ืชื• ืคืขืžื™ื™ื ื›ื“ื™ ืฉื—ื™ื‘ื•ืจื™ื ื‘ืžื›ื•ื ื” ื”ืžืงื•ืžื™ืช ืœ 6379 ื™ื—ื•ื‘ืจื• ืื•ื˜ื•ืžื˜ื™ืช ืœืคื•ืจื˜ 6379 ื‘ืžื›ื•ื ื” ื”ืฉื ื™ื”. ื”ืคืงื•ื“ื” ื’ื•ืจืžืช ืœื”ืคืขืœืช SSH Session ืื– ืืœ ืชื•ืคืชืขื• ื›ืฉืืชื ืžื•ืฆืื™ื ืืช ืขืฆืžื›ื ื‘ืชื•ืš shell ื‘ืžื›ื•ื ื” 15. ื ืคืชื— ืืช ืžื›ื•ื ื” 13 ื‘ื—ืœื•ืŸ ื ื•ืกืฃ ื•ืฉื ืื ื™ ื›ื•ืชื‘:
$ redis-cli
ื•ื”ืคืขื ื”ืคืงื•ื“ื” ืœื ื ื›ืฉืœื”. ื™ื•ืชืจ ืžื–ื” ืื ื™ ื™ื›ื•ืœ ืœื”ื“ืคื™ืก ืืช ื”ืขืจืš ืฉืœ ืžืคืชื— x ื•ืœืงื‘ืœ 10, ืจืง ื‘ืฉื‘ื™ืœ ืœื”ื™ื•ืช ื‘ื˜ื•ื— ืฉืื ื™ ืžื—ื•ื‘ืจ ืœืื•ืชื• ืจื“ื™ืก:
127.0.0.1:6379> get x
"10"
ื›ืœื•ืžืจ ื”ืคืงื•ื“ื” redis-cli ืฉืจืฆื” ืขืœ ืžื›ื•ื ื” 13 ืžืชื ื”ื’ืช ื›ืื™ืœื• ืขืœ ื”ืžื›ื•ื ื” ื”ืžืงื•ืžื™ืช ื‘ืคื•ืจื˜ 6379 ื™ืฉ ืฉืจืช redis, ื•ื‘ืฆื“ ื”ืฉื ื™ ื”ื—ื™ื‘ื•ืจ ื ืจืื” ื›ืื™ืœื• ื”ื•ื ืžื’ื™ืข ืžื”ืžื›ื•ื ื” ื”ืžืงื•ืžื™ืช ื•ืœื›ืŸ ืœืžืจื•ืช ืฉ redis ืžืงืฉื™ื‘ ืจืง ืœืžืžืฉืง ื”ืจืฉืช ื”ืžืงื•ืžื™ ืขื“ื™ื™ืŸ ื”ืฆืœื—ื ื• ืœื”ืชื—ื‘ืจ ืืœื™ื•.

ToCode
1 420
# ืฉื™ื“ืจื•ื’ ื•ื•ื‘ืคืืง ื‘ืชื™ืงื™ื™ืช ื”ื“ื•ื’ืžืื•ืช ื‘ืงื•ืจืก ืจื™ืืงื˜ ืื—ื“ ื”ื“ื‘ืจื™ื ืฉืื ื™ ืื•ื”ื‘ ื‘ืงื•ืจืก ืจื™ืืงื˜ ืคื” ื‘ืืชืจ ื”ื•ื ื”ื™ืฆื™ืจื” ืฉืœ ืคืจื•ื™ืงื˜ ืžืืคืก ื‘ื›ืœ ื”ื“ื•ื’ืžืื•ืช, ื›ืืฉืจ ืœื›ืœ ื“ื•ื’ืžื” ื™ืฉ ืงื•ื‘ืฅ webpack.config.js ืžืฉืœื”. ืื ื™ ื™ื•ื“ืข ืฉื‘ืขื•ืœื ื”ืืžื™ืชื™ ื”ืจื‘ื” ืคืขืžื™ื ืชืฉืชืžืฉื• ื‘ vite ืื• create-react-app ื›ื“ื™ ืœื™ืฆื•ืจ ืืช ืชื‘ื ื™ืช ื”ืคืจื•ื™ืงื˜, ื•ืื ื™ ืืคื™ืœื• ืžืœืžื“ ืืช ื”ื›ืœื™ื ื”ืืœื” ื‘ืžืกื’ืจืช ื”ืงื•ืจืก, ืื‘ืœ ื’ื ืžืืžื™ืŸ ืฉื›ืฉื”ื“ื•ื’ืžืื•ืช ืคืฉื•ื˜ื•ืช ื•ืืคืฉืจ ืœื”ื™ื›ื ืก ืœื›ืœ ืงื‘ืฆื™ ื”ื”ื’ื“ืจื•ืช ื•ืœื”ื‘ื™ืŸ ืžื” ื›ืœ ืฉื•ืจื” ืฉื ื–ื” ืขื•ื–ืจ ืœื”ื‘ื™ืŸ ืื™ืš ื“ื‘ืจื™ื ืขื•ื‘ื“ื™ื. (ื•ืœื, ืืชื ื›ื ืจืื” ืœื ืชืฆืœื™ื—ื• ืœื”ื™ื›ื ืก ืœื›ืœ ืงื‘ืฆื™ ื”ื”ื’ื“ืจื•ืช ืฉืœ create-react-app ื›ืฉืืชื ืจืง ืžืชื—ื™ืœื™ื ืืช ื”ื“ืจืš ื‘ืจื™ืืงื˜. ืื‘ืœ ืขื ืงื•ื‘ืฅ ื•ื•ื‘ืคืืง ืฉืœ 20 ืฉื•ืจื•ืช ืื ื™ ืžืืžื™ืŸ ืฉืชืกืชื“ืจื•). ืžื” ืฉืœื ืžืื•ื“ ื—ืฉื•ื‘ ืœืฆื•ืจืš ืœื™ืžื•ื“ ืจื™ืืงื˜ ื–ื” ื”ื’ื™ืจืกื” ืฉืœ ื•ื•ื‘ืคืืง. ืคืจื•ื™ืงื˜ ื”ื“ื•ื’ืžื” ื”ืฉืชืžืฉ ื‘ webpack 4 ื›ื™ ื–ื” ืžื” ืฉื”ื™ื” ื‘ืื•ืชื• ื–ืžืŸ ืฉื›ืชื‘ืชื™ ืื•ืชื•. ืื—ื“ ื”ื™ืชืจื•ื ื•ืช ื‘ื›ืชื™ื‘ืช ืงื‘ืฆื™ ื”ื’ื“ืจื•ืช ืคืจื•ื™ืงื˜ ืžืืคืก ื–ื” ืฉื”ื ืžืกืคื™ืง ืคืฉื•ื˜ื™ื ื›ื“ื™ ืœืฉืจื•ื“ ืืช ืคื’ืขื™ ื”ื–ืžืŸ. ืื• ืœืคื—ื•ืช ืืช ื—ืœืง ืžืคื’ืขื™ ื”ื–ืžืŸ. ืœืื—ืจื•ื ื” ื’ื™ืœื™ืชื™ ื‘ื“ืจืš ื”ืงืฉื” ืฉ Node ื”ื•ืกื™ืคื• ืžืฉื”ื• ืฉื”ืชื ื’ืฉ ืขื webpack 4, ื–ื” ืฉื‘ืจ ื›ืžื” ื“ื‘ืจื™ื ื‘ create-react-app ื•ื›ืŸ ื’ื ืืช ื”ื’ื“ืจื•ืช ื”ืคืจื•ื™ืงื˜ ื”ืงื˜ื ื•ืช ืฉืœื™. ื™ืฉ ืคืจื˜ื™ื ื‘ืงื™ืฉื•ืจ ื”ื–ื”. ื‘ื›ืœ ืžืงืจื” ื›ืฉื“ื‘ืจื™ื ื ืฉื‘ืจื™ื ื–ืืช ืชืžื™ื“ ื”ื–ื“ืžื ื•ืช ื˜ื•ื‘ื” ืœืฉื“ืจื’. ืขื‘ื•ืจ ื›ืœ ื”ืคืจื•ื™ืงื˜ื™ื ื‘ืชื™ืงื™ื™ืช ื”ื“ื•ื’ืžืื•ืช ื”ืฉื™ื ื•ื™ ื”ื™ื—ื™ื“ ืฉื”ื™ื” ืžืฉืžืขื•ืชื™ ื‘ืงื•ื‘ืฅ ื”ื”ื’ื“ืจื•ืช ื”ื™ื” ืฉื™ื ื•ื™ ื”ืื•ื‘ื™ืงื˜:
devServer: {
  overlay: true,
},
ืœ:
devServer: {
  client: {
    overlay: true,
  }
},
ื‘ืคืจื•ื™ืงื˜ื™ื ื™ื•ืชืจ ื’ื“ื•ืœื™ื ื•ืงื‘ืฆื™ ื”ื’ื“ืจื•ืช ื™ื•ืชืจ ืžืกื•ื‘ื›ื™ื ื›ื ืจืื” ืฉืชืฆื˜ืจื›ื• ืœืขื‘ื•ื“ ื™ื•ืชืจ ืงืฉื”. ืžื“ืจื™ืš ืžืคื•ืจื˜ ืœืฉื™ื“ืจื•ื’ ืงื‘ืฆื™ ื”ื’ื“ืจื•ืช ื•ื•ื‘ืคืืง ืž-4 ืœ-5 ืืคืฉืจ ืœืžืฆื•ื ื‘ืงื™ืฉื•ืจ ื”ื–ื”. ื–ื” ืขื“ื™ื™ืŸ ืžืฉืื™ืจ ืื•ืชื ื• ืขื ืงื•ืจืก Webpack ืฉืœื ืคื” ื‘ืืชืจ ืฉืžืœืžื“ ื•ื•ื‘ืคืืง 4. ืขื•ื“ ื ืฆื˜ืจืš ืœืขื‘ื•ืจ ื•ืœืฉื“ืจื’ ื’ื ืืช ื›ืœ ื”ื“ื•ื’ืžืื•ืช ืฉื. ื‘ื›ืœ ืžืงืจื” ืื ืืชื ื‘ืงื•ืจืก ืจื™ืืงื˜ ืคืฉื•ื˜ ืชื•ืจื™ื“ื• ืžื—ื“ืฉ ืืช ืชื™ืงื™ื™ืช ื”ื“ื•ื’ืžืื•ืช ื•ืชืงื‘ืœื• ื’ื™ืจืกื” ื—ื“ืฉื” ื ื•ืฆืฆืช ื•ืขื•ื‘ื“ืช ืขื ื” webpack ื”ื—ื“ืฉ.

ToCode
1 420
# ืžืฆืื• ืืช ื”ืžืชื—ื–ื™ื! ื‘ื”ื™ื ืชืŸ ื”ืขืœื•ืช ื”ื’ื‘ื•ื”ื” ืฉืœ ื’ื™ื•ืก ื•ื”ื–ืžืŸ ื”ืืจื•ืš ืฉื”ืจื‘ื” ืคืขืžื™ื ืœื•ืงื— ื›ื“ื™ ืœื–ื”ื•ืช ืฉืžื•ืขืžื“ ืžืกื•ื™ื ืฉื”ืชืงื‘ืœ ื‘ืขืฆื ืœื ื›ื–ื” ืžื•ื›ืฉืจ ื›ืžื• ืฉื—ืฉื‘ื ื• ืฉื™ื”ื™ื”, ืืคืฉืจ ืœื”ื‘ื™ืŸ ืœืžื” ื‘ื”ืจื‘ื” ืžืงื•ืžื•ืช ื”ืžื˜ืจื” ืฉืœ ืจืื™ื•ื ื•ืช ืขื‘ื•ื“ื” ื”ืคื›ื” ืœื”ื™ื•ืช "ืœื–ื”ื•ืช ืืช ื”ืžืชื—ื–ื™ื" ืื• "ืœื”ื’ืŸ ืขืœ ื”ืžื•ืฆืจ". ื•ืื ื™ ืžื•ื“ื”, ื’ื ืื ื™ ืคืขื ื ืคืœืชื™ ื‘ื‘ื•ืจื•ืช ื”ืืœื”. ืžืฆื“ ืื—ื“ ื”ืžื ื”ืœื™ื ืจื•ืฆื™ื ืœื”ื’ื“ื™ืœ ืืช ื”ืฆื•ื•ืช, ื•ืžืฆื“ ืฉื ื™ ืžื’ื™ืข ืืœื™ืš ื‘ืŸ ืื“ื ืœื”ืชืจืื™ื™ืŸ ื•ืืชื” ืžืคื—ื“ - ืžืคื—ื“ ืฉืื•ืœื™ ื”ื•ื ืœื ื™ื‘ื™ืŸ ืืช ื”ื”ื•ืจืื•ืช ื›ืžื• ืฉืฆืจื™ืš ื›ืฉืชืขื‘ื“ื• ื™ื—ื“, ืžืคื—ื“ ืฉืื•ืœื™ ื”ื•ื ื™ื›ืชื•ื‘ ืงื•ื“ ืฉืื—ืจื™ ื–ื” ื™ืกื‘ืš ืื•ืชืš ืื• ื™ื’ืจื•ื ืœืš ืœื”ื™ืจืื•ืช ืจืข, ื•ื›ืŸ ื’ื ืžืคื—ื“ ืžื”ืฉื™ื ื•ื™. ื ื›ื•ืŸ, ื”ืžืฆื‘ ืขื›ืฉื™ื• ืื•ืœื™ ืœื ืžืฉื”ื• ื•ื”ืคื™ืชื•ื— ืœื ืžืชืงื“ื ืžืกืคื™ืง ืžื”ืจ, ืื‘ืœ ืœืคื—ื•ืช ื–ื” ืœื ืžืฉื”ื• ืžื”ืกื•ื’ ืฉืื ื—ื ื• ืžื›ื™ืจื™ื. ื•ื›ื›ื” ื‘ืžืงื•ื ืœื—ืคืฉ ืื™ืคื” ื”ื‘ืŸ ืื“ื ืฉื”ื’ื™ืข ื›ืŸ ื™ื›ื•ืœ ืœืชืจื•ื ืืชื” ืžื•ืฆื ืืช ืขืฆืžืš ื ื›ื ืก ืœืžื’ื ื ื”, ืฉื•ืืœ ืคืจื˜ื™ ื˜ืจื™ื•ื•ื™ื” ืฉืืฃ ืื—ื“ ืœื ืžื›ื™ืจ ืจืง ื›ื“ื™ ืœื”ืจืื•ืช ืฉื”ืžื•ืขืžื“ ืฉืžื•ืœืš ืœื ื˜ื•ื‘ ืžืกืคื™ืง. ื™ืฉ ืœื™ ื—ื‘ืจ ืฉื‘ืจืื™ื•ืŸ ื‘ื™ืžื™ื ื”ืจืืฉื•ื ื™ื ืฉืœ ื”ืื™ื ื˜ืจื ื˜ ืœื ื”ืชืงื‘ืœ ืœืขื‘ื•ื“ื” ื‘ื’ืœืœ ืฉืœื ื™ื“ืข ืื™ืš ืœืฆื™ื™ืจ ืคื™ื ื•ืช ืขื’ื•ืœื•ืช ืœ div (ื•ื›ืŸ ื–ื” ื”ื™ื” ืœืคื ื™ ืฉื”ื™ื” ืœื ื• border-radius), ื•ื—ื‘ืจ ืื—ืจ ืฉื—ื–ืจ ืžื‘ื•ืืก ืžืจืื™ื•ืŸ ืจื™ืืงื˜ ืื—ืจื™ ืฉืœื ื™ื“ืข ื‘ืขืœ ืคื” ืืช ื”ืฉืžื•ืช ืฉืœ ื›ืœ ื” Lifecycle Methods ืฉืœื”ื. ื›ืฉืื ื—ื ื• ืžื—ืคืฉื™ื ืžืชื—ื–ื™ื ื‘ื›ืœ ืคื™ื ื” ืœื ืžืคืชื™ืข ืฉืื ื—ื ื• ืžื•ืฆืื™ื ื‘ืงืœื•ืช. ื”ืจื‘ื” ื™ื•ืชืจ ืžืขื ื™ื™ืŸ ืœื”ื‘ื™ืŸ ืžื™ ื”ืื ืฉื™ื ืฉืžื•ืœืš ื•ืื™ื–ื” ืขืจืš ื”ื ื›ืŸ ื™ื›ื•ืœื™ื ืœื”ื‘ื™ื ืœื—ื‘ืจื”. ื”ื ื” ื›ืžื” ืฉืืœื•ืช ืคืชื•ื—ื•ืช ื•ื™ื•ืชืจ ืžืขื ื™ื™ื ื•ืช ืฉืืคืฉืจ ืœืฉืื•ืœ ื‘ืจืื™ื•ืŸ: 1. ืกืคืจื™ ืขืœ ื”ืคืจื•ื™ืงื˜ ื”ืื—ืจื•ืŸ ืฉื‘ื ื™ืช. 2. ืกืคืจื™ ืขืœ ืืชื’ืจื™ื ืžืขื ื™ื™ื ื™ื ืฉื ืชืงืœืช ื‘ื”ื ื‘ืคืจื•ื™ืงื˜. 3. ืื™ื–ื” ืคื™ืฆ'ืจ ื”ื™ื” ืœืš ืงืฉื” ืœืžืžืฉ ื•ืœืžื”. 4. ืื™ื–ื” ืคื™ืฆ'ืจ ื”ื™ื™ืช ื‘ื˜ื•ื—ื” ืฉื”ื•ืœืš ื˜ื•ื‘, ืื‘ืœ ื ืฉื‘ืจ ื‘ืคืจื•ื“ืงืฉืŸ? ืžื” ืงืจื” ืฉื? 5. ืกืคืจื™ ืขืœ ืชืงืœืช ืคืจื•ื“ืงืฉืŸ ืžืขื ื™ื™ื ืช ืฉื˜ื™ืคืœืช ื‘ื”. 6. ืื™ืš ื ืจืื” ืชื”ืœื™ืš ืคื™ืชื•ื— ืชื•ื›ื ื” ืื™ื“ืืœื™ ื‘ื™ื ื™ื™ืš? ื‘ืจืื™ื•ืŸ ืขื‘ื•ื“ื” ื›ื“ืื™ ืœื ืกื•ืช ืœื™ืฆื•ืจ ืฉื™ื— ื•ืœื”ื‘ื™ืŸ ืืช ื”ื™ื›ื•ืœื•ืช ืฉืœ ื”ื‘ืŸ ืื“ื ืฉืžื•ืœื ื•. ื”ืžื˜ืจื” ื”ื™ื ืœื‘ื—ื•ืจ ืžื•ืขืžื“ ืžื‘ื™ืŸ 10 ืžื•ืขืžื“ื™ื ื˜ื•ื‘ื™ื ื•ื”ื“ืจืš ื”ื™ื—ื™ื“ื” ืฉื–ื” ื™ืงืจื” ื”ื™ื ืื ื ืฆืœื™ื— ืœืจืื•ืช ืืช ื”ื˜ื•ื‘ ื‘-9 ืฉืœื ื ื‘ื—ืจ.

ToCode
1 420
# ืœืžื” ื›ืœ ื›ืš ืœืื˜? ื›ืฉืคืจื•ื™ืงื˜ ืžืชืงื“ื ืœืื˜ ื™ื•ืชืจ ืžื”ืฆืคื•ื™ ื–ื” ื›ืžืขื˜ ืชืžื™ื“ ื‘ื’ืœืœ ืื—ืช ืื• ื™ื•ืชืจ ืžื”ืกื™ื‘ื•ืช ื”ื‘ืื•ืช: 1. ืœื ืžื›ื™ืจื™ื ืžืกืคื™ืง ืืช ื”ื˜ื›ื ื•ืœื•ื’ื™ื”. 2. ื”ืคืจื•ื™ืงื˜ ืœื ืžืื•ืคื™ื™ืŸ ืžืกืคื™ืง ื˜ื•ื‘ ื•ืฆืจื™ืš ืœื—ืงื•ืจ ืžื” ื‘ื•ื ื™ื ืชื•ืš ื›ื“ื™ ืชื ื•ืขื”. 3. ื”ืคืจื•ื™ืงื˜ ื“ื•ืจืฉ ืฉื™ื ื•ื™ื™ื ื‘ืื™ืš ืฉืžื™ื“ืข ืฉืžื•ืจ (ื‘ืขื™ืงืจ ื‘ืžื‘ื ื” ื‘ืกื™ืก ื”ื ืชื•ื ื™ื) ื‘ืฆื•ืจื” ืฉื“ื•ืจืฉืช ืžื™ื’ืจืฆื™ื” ืœืžื™ื“ืข ื™ืฉืŸ. 4. ื”ืคืจื•ื™ืงื˜ ื“ื•ืจืฉ ืฉื™ื ื•ื™ื™ื ื‘ืงื•ื“ ืงื™ื™ื ืฉืœื ื‘ื ื•ื™ ืœืฉื™ื ื•ื™ื™ื. ืืช ืฉืœื•ืฉืช ื”ืจืืฉื•ื ื™ื ืงืœ ืœืจืื•ืช. ื”ืจื‘ื™ืขื™ ืžืฆืœื™ื— ืœื”ืคืชื™ืข ืื•ืชื ื• ื›ืœ ืคืขื. ืืœื” ื”ืžืืคื™ื™ื ื™ื ื”ืžืจื›ื–ื™ื™ื ืฉืœ ืงื•ื“ ืฉืื™ื ื• ื‘ื ื•ื™ ืœืฉื™ื ื•ื™ื™ื: 1. ืื—ืจื™ ืฉื™ื ื•ื™ ืื ื™ ืœื ื™ื•ื“ืข ืžื” ืฉื‘ืจืชื™. 2. ืฉื™ื ื•ื™ ื‘ืžืงื•ื ืื—ื“ ื“ื•ืจืฉ ืฉื™ื ื•ื™ ืจื•ื—ื‘ ื‘ืขืฉืจื•ืช ืžืงื•ืžื•ืช ื ื•ืกืคื™ื. 3. ื”ืงื•ื“ ื›ื•ืœืœ ืžืกืคืจ ืžื ื’ื ื•ื ื™ื ืฉื•ื ื™ื ื›ื“ื™ ืœืขืฉื•ืช ืืช ืื•ืชื• ื“ื‘ืจ (ืœื“ื•ื’ืžื” ืคืจื•ื™ืงื˜ ื•ื•ื‘ ืฉื’ื ื›ื•ืœืœ Inline Style ื‘ืงื•ืžืคื•ื ื ื˜ื•ืช ืจื™ืืงื˜ ื•ื’ื CSS). 4. ื”ืงื•ื“ ื›ื•ืœืœ ื‘ืื’ื™ื ื ืกืชืจื™ื ืฉืฆืฆื™ื ื‘ืขืงื‘ื•ืช ื”ืฉื™ื ื•ื™ ื•ืžื›ืจื™ื—ื™ื ืื•ืชื™ ืœืฆืœื•ืœ ืœืžืงื•ืžื•ืช ืฉืœื ืจืฆื™ืชื™ ืœื”ื’ื™ืข ืืœื™ื”ื. ื›ืฉืื ื—ื ื• ื ืชืงืœื™ื ื‘ืงื•ื“ ืฉืœื ืžืชืื™ื ืœืฉื™ื ื•ื™ื™ื ื”ื“ื‘ืจ ื”ื›ื™ ื’ืจื•ืข ืœืขืฉื•ืช ื–ื” "ืœืกืคื•ื’ ืืช ื–ื”", ืœื”ื™ืฉืืจ ืฉืขื•ืช ื ื•ืกืคื•ืช ื•ืœื‘ื ื•ืช ืžืขืงืคื™ื ื›ื“ื™ ืฉื”ืคื™ืฆ'ืจ ืฉืœื ื• ื™ื’ื™ืข ื‘ื–ืžืŸ ืœืคืจื•ื“ืงืฉืŸ. ื”ืจื‘ื” ื™ื•ืชืจ ื˜ื•ื‘ ืœื”ืชืžื•ื“ื“ ืขื ื”ื‘ืขื™ื•ืช ื‘ืงื•ื“ ื•ืœืืจื’ืŸ ืื•ืชื• ืžื—ื“ืฉ ื›ื“ื™ ืฉื’ื ื”ืคื™ืฆ'ืจ ืฉืื ื™ ื‘ื•ื ื” ืขื›ืฉื™ื• ื•ื’ื ืคื™ืฆ'ืจื™ื ืขืชื™ื“ื™ื™ื ื™ื•ื›ืœื• ืœื”ื™ื›ื ืก ื”ืจื‘ื” ื™ื•ืชืจ ืžื”ืจ. (ื•ื›ืŸ ื‘ืจื•ืจ ืœื™ ืฉืœืคืขืžื™ื ืื™ืŸ ื‘ืจื™ืจื” ื•ื‘ื•ื ื™ื ืžืขืงืคื™ื. ื”ืฉืืœื” ืจืง ืœืื™ื–ื” ืคืจืง ื–ืžืŸ. ืื ื‘ืฉื ืชื™ื™ื ื”ืื—ืจื•ื ื•ืช ื”ืฉืงืขืชื ืขืœ ื›ืœ ืคื™ืฆ'ืจ ื—ื•ื“ืฉ ื™ื•ืชืจ ืžืžื” ืฉื”ื™ื” ืฆืจื™ืš ืจืง ื‘ื’ืœืœ ืžื‘ื ื” ื”ืงื•ื“, ืื– ื›ื ืจืื” ืฉื”ื™ื” ืขื•ืœื” ืœื›ื ืคื—ื•ืช ืœืฉื‘ืช ืคืขื ืื—ืช ืœืกื“ืจ ืืช ื”ืงื•ื“ ื•ืื—ืจื™ ื–ื” ืœื‘ื ื•ืช ืืช ืฉืืจ ื”ืคื™ืฆ'ืจื™ื. ื›ื™ื‘ื•ื™ ืฉืจื™ืคื•ืช ื–ืืช ืœื ืฉื™ื˜ืช ืขื‘ื•ื“ื” ื—ื›ืžื” ืขืœ ืคืจื•ื™ืงื˜ ืชื•ื›ื ื”).

ToCode
1 420
# ืชืฉืชื™ืช ื‘ืชื•ืจ ืงื•ื“ ื•ื”ื—ืฉื™ื‘ื•ืช ืฉืœ ื”ื•ืจืื•ืช ืฉื™ื—ืงืชื™ ืงืฆืช ืขื AWS ื”ืฉื‘ื•ืข ื•ื‘ื“ื•ืžื” ืœืžืขืจื›ื•ืช ืื—ืจื•ืช ื›ืฉืžื’ื™ืขื™ื ืœื“ื‘ืจ ืขืœ ืงื•ื“ ืชืฉืชื™ืช ืžื“ืจื™ื›ื™ื ื‘ืจืฉืช ืžื—ื•ืœืงื™ื ืœืฉื ื™ ืกื•ื’ื™ื: ื”ืžื”ื™ืจ ื•ื”ื ื›ื•ืŸ. ืžื“ืจื™ืš ืžื”ื™ืจ ื™ื’ื™ื“ ืœื›ื ืœื™ืฆื•ืจ ืžืฉืื‘ื™ื ื“ืจืš ื” AWS Console, ืขื ืžืฉืคื˜ื™ื ื›ืžื•: > In the AWS Console, create a new WebSocket API ืžื“ืจื™ืš ื ื›ื•ืŸ ื™ื›ืœื•ืœ ืงื•ื“ ืื•ื˜ื•ืžื˜ื™ ืฉื™ื•ืฆืจ ืืช ื”ืžืฉืื‘ื™ื:
policy = iam_resource.create_policy(
    PolicyName=f'{lambda_role_name}-{self.permission_policy_suffix}',
    PolicyDocument=json.dumps({
        'Version': '2012-10-17',
        'Statement': [{
            'Effect': 'Allow',
            'Action': ['execute-api:ManageConnections'],
            'Resource': self.api_arn}]}))
policy.attach_role(RoleName=lambda_role_name)
ืื™ืŸ ืกืคืง ืฉื™ื•ืชืจ ืงืœ ืœื‘ื ื•ืช ืžืขืจื›ื•ืช ืขื ืžื“ืจื™ื›ื™ื ืžื”ืกื•ื’ ื”ืฉื ื™. ื”ืืชื’ืจ (ื•ื”ื—ื•ื›ืžื”) ื”ื ืœื”ื‘ื™ืŸ ืฉื“ืฃ ื”ื•ืจืื•ืช ืœื‘ื ื™ื™ืช ืชืฉืชื™ืช ืฉื•ื•ื” ื”ืจื‘ื” ืคื—ื•ืช ืžืงื•ื“, ื•ืœื›ืŸ ืื—ืจื™ ืฉืžืกื™ื™ืžื™ื ืœื‘ื ื•ืช ืืช ื”ืชืฉืชื™ืช ืขื ืžื“ืจื™ืš ืžื”ืกื•ื’ ื”ืจืืฉื•ืŸ, ืขื“ื™ื™ืŸ ื™ืฉ ืฆื•ืจืš ืœืงื—ืช ืืช ื›ืœ ืชื”ืœื™ืš ื”ื‘ื ื™ื” ื•ืœื”ื›ื ื™ืก ืื•ืชื• ืœืงื•ื“. ืจืง ื‘ื’ืœืœ ืฉืžื™ ืฉื›ืชื‘ ืืช ื”ืžื“ืจื™ืš ื”ืชืขืฆืœ ืœื ืื•ืžืจ ืฉืื ื—ื ื• ืฆืจื™ื›ื™ื.

ToCode
1 420
# ืื™ืš ืœืงืจื•ื ื•ืœื›ืชื•ื‘ ืงื‘ืฆื™ XML ื‘ Python ืขื ElementTree ื”ืžื•ื“ื•ืœ ElementTree ื”ื•ื ื—ืœืง ืžื”ืกืคืจื™ื” ื”ืกื˜ื ื“ืจื˜ื™ืช ืฉืœ ืคื™ื™ืชื•ืŸ ืขื•ื“ ืžืื– ื’ื™ืจืกื” 2.5. ื”ื•ื ื ื—ืฉื‘ ืงืœ ื™ื•ืชืจ ื•ื™ืขื™ืœ ื™ื•ืชืจ ื‘ื”ืฉื•ื•ืื” ืœ xml.dom.minidom. ื‘ื•ืื• ื ืจืื” ืื™ืš ืœื”ืฉืชืžืฉ ื‘ื• ื‘ืขื–ืจืช ืฉืœื•ืฉ ื“ื•ื’ืžืื•ืช ืคืฉื•ื˜ื•ืช. ## ื™ืฆื™ืจืช ืžืกืžืš XML ืžืชื•ืš ืงื•ื“ ืคื™ื™ืชื•ืŸ ืชื•ื›ื ื™ืช ืจืืฉื•ื ื” ืœื•ืงื—ืช ืงื•ื“ ืคื™ื™ืชื•ืŸ ื•ื™ื•ืฆืจืช ืžืกืžืš XML ืฉืžืชืื™ื ืœื•. ื ืชื—ื™ืœ ืขื ื”ืงื•ื“:
import xml.etree.ElementTree as ET

root = ET.Element('items')
for item in ['one', 'two', 'three']:
    child = ET.SubElement(root, item)
    child.set('length', str(len(item)))

ET.dump(root)
ืื—ืจื™ ื™ื‘ื•ื ื”ืžื•ื“ื•ืœ ื”ืคื•ื ืงืฆื™ื” ET.Element ื™ื•ืฆืจืช ืืœืžื ื˜ ื‘ XML, ื•ื”ืคื•ื ืงืฆื™ื” ET.SubElement ื™ื•ืฆืจืช ืืœืžื ื˜ ื™ืœื“ ื‘ืชื•ืš ืืœืžื ื˜ ืื—ืจ. ื”ืคื•ื ืงืฆื™ื” set ืฉืœ ืืœืžื ื˜ ืžื’ื“ื™ืจื” ืขืจืš ืœ Attribute. ืกืš ื”ื›ืœ ื”ืงื•ื“ ืžื“ืคื™ืก ืืช ืžืกืžืš ื” XML ื”ื‘ื:
<items><one length="3" /><two length="3" /><three length="5" /></items>
ื›ื“ื™ ืœื›ืชื•ื‘ ืืช ื”ืžืกืžืš ืœืงื•ื‘ืฅ ืืคืฉืจ ืœื”ืฉืชืžืฉ ื‘ืคื•ื ืงืฆื™ื” write ืฉืœ ืืœืžื ื˜:
root.write('input.xml')
## ืงืจื™ืืช ืžืกืžืš XML ืžืœื ืื—ืจื™ ืฉื›ืชื‘ื ื• ืืช ื”ืงื•ื‘ืฅ ืืคืฉืจ ืœื”ืชืงื“ื ืœืชื•ื›ื ื™ืช ืฉื ื™ื” ืฉืชืงืจื ืื•ืชื• ื•ืชื“ืคื™ืก ืืช ืฉืœื•ืฉืช ื”ืืœืžื ื˜ื™ื ืžืžื ื•. ื”ืชื•ื›ื ื™ืช ืžืฉืชืžืฉืช ื‘ืื•ืชื• ElementTree ืจืง ืฉื”ืคืขื ื”ืœื•ืœืื” ืชื”ื™ื” ืขืœ ื”ืืœืžื ื˜. ื”ื ื” ื”ืงื•ื“:
import xml.etree.ElementTree as ET

doc = ET.parse('input.xml')
root = doc.getroot()
for child in root:
    print(f'"{child.text}" has length {child.attrib["length"]}')
ื‘ ElementTree ื”ืืœืžื ื˜ื™ื ืžืชื ื”ื’ื™ื ื›ืžื• ืื•ื‘ื™ืงื˜ื™ื ืจื’ื™ืœื™ื ืฉืœ ืคื™ื™ืชื•ืŸ - ืืคืฉืจ ืœืจื•ืฅ ื‘ืœื•ืœืื” ืขืœ ืืœืžื ื˜ ื›ื“ื™ ืœืงื‘ืœ ืืช ื›ืœ ื”ื™ืœื“ื™ื ืฉืœื•, ืืคืฉืจ ืœืคื ื•ืช ืœืืœืžื ื˜ ื‘ืื™ื ื“ืงืก ืžืกื•ื™ื ื›ื“ื™ ืœืงื‘ืœ ื™ืœื“ ืกืคืฆื™ืคื™, ื•ืืคืฉืจ ืœื’ืฉืช ืœืžืืคื™ื™ืŸ attrib ื›ื“ื™ ืœืงื‘ืœ ืืช ื›ืœ ื” Attributes ืื• ืœ text ื›ื“ื™ ืœืงื‘ืœ ืืช ื”ื˜ืงืกื˜ ืฉืœ ื”ืืœืžื ื˜. ## ื—ื™ืคื•ืฉ ื‘ืžืกืžืš XML ื‘ืขื–ืจืช XPath ืคื™ืฆ'ืจ ืžื“ืœื™ืง ื ื•ืกืฃ ืฉืœ ElementTree ื”ื•ื ื”ืชืžื™ื›ื” ื‘ XPath, ืฉืžืืคืฉืจืช ื—ื™ืคื•ืฉ ืฉืœ ืืœืžื ื˜ื™ื ืกืคืฆื™ืคื™ื™ื ื‘ืขืฅ. ื‘ื“ื•ื’ืžื” ื”ื‘ืื” ืื ื™ ืจื•ืฆื” ืœืžืฆื•ื ืืช ื›ืœ ื”ืืœืžื ื˜ื™ื ืฉืžืืคื™ื™ืŸ length ืฉืœื”ื ื”ื•ื 3, ื›ืœื•ืžืจ ืืช ื”ืืœืžื ื˜ื™ื one ื• two. ื”ื ื” ื”ืงื•ื“:
import xml.etree.ElementTree as ET

doc = ET.parse('input.xml')
for child in doc.findall("./*[@length='3']"):
    print(child.text)
ื”ืคื•ื ืงืฆื™ื” findall ืžืงื‘ืœืช ืฉืื™ืœืชืช xpath ื•ืžื—ื–ื™ืจื” ืจืฉื™ืžื” ืฉืœ ืชื•ืฆืื•ืช. ืื ืืชื ืœื ื‘ื˜ื•ื—ื™ื ืื™ืš ืงื•ืจืื™ื ืืช ื” XPath ืื– ื‘ืงื™ืฉื•ืจ ื”ื–ื” ื™ืฉ ื“ืฃ ืงื™ืฆื•ืจื™ื ื ื—ืžื“ ืฉืžืกื‘ื™ืจ ืขืœ ื›ืœ ื”ืชื—ื‘ื™ืจ. ืœืžื™ื“ืข ื ื•ืกืฃ ื•ืขื•ื“ ื“ื•ื’ืžืื•ืช ืขืœ ElementTree ืฉื•ื•ื” ื’ื ืœื‘ื“ื•ืง ืืช ืชื™ืขื•ื“ ื”ืžื•ื“ื•ืœ ื‘ืชื™ืขื•ื“ ืฉืœ ืคื™ื™ืชื•ืŸ ื‘ืงื™ืฉื•ืจ: https://docs.python.org/3/library/xml.etree.elementtree.html

ToCode
1 420
# ื—ื“ืฉ ื‘ืืชืจ: ืฉื™ืขื•ืจื™ ื”ืจื—ื‘ื” (ื‘ืžืงื•ื ื•ื•ื‘ื™ื ืจื™ื) ื”ื™ ื—ื‘ืจื™ื, ื›ืžื• ืฉื—ืœืงื›ื ื•ื“ืื™ ืฉืžืชื ืœื‘ ื”ืฉื ื” ืœื ืงื‘ืขืชื™ ืขื“ื™ื™ืŸ ืชืืจื™ื›ื™ื ืœื•ื•ื‘ื™ื ืจื™ื. ื”ืืžืช ื”ื™ื ืฉื‘ืฉื‘ื•ืขื•ืช ื”ืื—ืจื•ื ื™ื ื”ืชืœื‘ื˜ืชื™ ืœื’ื‘ื™ ื”ืคื•ืจืžื˜ ืฉืœ ื”ืชื›ื ื™ื ืฉืื ื™ ืจื•ืฆื” ืœื”ื•ืกื™ืฃ ืœืืชืจ. ื”ื•ื•ื‘ื™ื ืจื™ื, ืฉื”ื™ื• ืžืื•ื“ ืคื•ืคื•ืœืจื™ื™ื ื‘ืชืงื•ืคืช ื”ืงื•ืจื•ื ื”, ื”ืชื—ื™ืœื• ืœื”ืจื’ื™ืฉ ืžื™ื•ืฉื ื™ื. ืžืฆื“ ืื—ื“ ื‘ืื•ืชื” ืฉืขื” ืฉืœ ื•ื•ื‘ื™ื ืจ ืžืื•ื“ ืื”ื‘ืชื™ ืฉื›ื•ืœื ื‘ืื™ื ื™ื—ื“, ืฉืืคืฉืจ ืœืฉืื•ืœ ืฉืืœื•ืช ื•ืฉืืคืฉืจ ืœื”ืจื—ื™ื‘ ืืช ื”ื ื•ืฉื ืœืคื™ ื›ื™ื•ื•ื ื™ื ืฉื‘ืืžืช ืžืขื ื™ื™ื ื™ื ืืชื›ื. ืื‘ืœ ืžืฆื“ ืฉื ื™ ืžื™ ืฉื ื™ืกื” ืœืœืžื•ื“ ืžื”ื”ืงืœื˜ื•ืช ืฉืœ ืื•ืชื ื•ื•ื‘ื™ื ืจื™ื ื”ืจื‘ื” ืคืขืžื™ื ื”ืœืš ืœืื™ื‘ื•ื“ ืื• ื”ื™ื” ืฆืจื™ืš ืœื“ืœื’ ืœืงื˜ืขื™ื ื”ืจืœื•ื•ื ื˜ื™ื. ื‘ืขื™ื” ื ื•ืกืคืช ืฉื”ื™ืชื” ืœื™ ืขื ื”ื•ื•ื‘ื™ื ืจื™ื ื”ื™ืชื” ืื™ืœื•ืฆื™ ื”ืฉืขื•ืช - ื‘ื’ืœืœ ืฉื”ื–ืžื ืชื™ ืืช ื›ื•ืœื ืœืื•ืชื” ืฉืขื” ืจืฆื™ืชื™ ืœื™ืฆื•ืจ ืžืกืคื™ืง ืชื•ื›ืŸ ืฉื™ืขื ื™ื™ืŸ ืืช ื›ื•ืœื, ื•ื–ื” ืœื ื”ืฉืื™ืจ ืžืงื•ื ืœื“ื‘ืจื™ื ื™ื•ืชืจ ืงื˜ื ื™ื ืื‘ืœ ืขื“ื™ื™ืŸ ืฉื™ืžื•ืฉื™ื™ื. ืื ืœื“ื•ื’ืžื” ืจืฆื™ืชื™ ืœื”ืจืื•ืช ื‘ืขืฉืจ ื“ืงื•ืช ืื™ื–ื” ืชื•ืกืฃ ืœืขื‘ื•ื“ื” ื˜ื•ื‘ื” ื™ื•ืชืจ ืขื git ื‘ VS Code, ื”ื™ื™ืชื™ ืฆืจื™ืš ืœื”ืœื‘ื™ืฉ ืขืœ ื–ื” ืชื•ื›ืŸ ืœืฉืขื” ืฉืœืžื” ื•ื–ื” ืœื ืชืžื™ื“ ื”ืชืื™ื. ื”ืคื™ืชืจื•ืŸ ืฉืื ื™ ื”ื•ืœืš ืœื ืกื•ืช ื‘ื—ื•ื“ืฉื™ื ื”ืงืจื•ื‘ื™ื ื™ื”ื™ื” ื”ืงืœื˜ื” ืืกื™ื ื›ืจื•ื ื™ืช ืฉืœ ืชื›ื ื™ ื”ืจื—ื‘ื”, ืฉื™ื”ื™ื• ืงืฆืจื™ื ื™ื•ืชืจ ื•ืžื“ื•ื™ืงื™ื ื™ื•ืชืจ ืžื•ื•ื‘ื™ื ืจื™ื, ื•ื™ืขื‘ืจื• ืขืจื™ื›ื” ื‘ื“ื•ืžื” ืœืฉื™ืขื•ืจื™ื ื‘ืงื•ืจืกื™ื. ื”ืžื˜ืจื” ืฉืœ ืื•ืชื ื—ื™ื–ื•ืงื™ื ื”ื™ื ืœืชืช ืœืื ืฉื™ื ืฉื ืžืฆืื™ื ืœืงืจืืช ืกื•ืฃ ืงื•ืจืก ืื• ืฉื›ื‘ืจ ืกื™ื™ืžื• ืงื•ืจืก ืืคืฉืจื•ืช ืœื”ืจื—ื™ื‘ ืืช ื”ื™ื“ืข ืขืœ ืื•ืชื• ื ื•ืฉื ืฉื›ื‘ืจ ืžื›ื™ืจื™ื. ืื ื™ ืžืชื›ื ืŸ ืœื”ืชื—ื™ืœ ืขื ื—ื™ื–ื•ืง ืื—ื“ ื‘ืฉื‘ื•ืข ื•ืžืงื•ื•ื” ืœื”ืขืœื•ืช ืœ 2-3 ื›ื›ืœ ืฉืืชืงื“ื ื‘ื‘ื ื™ื™ืช ื”ืชืฉืชื™ื•ืช ืžืกื‘ื™ื‘. ื‘ืฉืœื‘ ืจืืฉื•ืŸ ืฉื™ืขื•ืจื™ื ืืœื” ื™ื”ื™ื• ืกื’ื•ืจื™ื ืœืžื ื•ื™ื™ื ื‘ืœื‘ื“ ื›ืžื• ื”ืงื•ืจืกื™ื. ืื ื™ ืžืงื•ื•ื” ื›ื›ืœ ืฉื”ื›ืžื•ืช ืชื’ื“ืœ ืœื”ืงืœื™ื˜ ื‘ืขืชื™ื“ ื’ื ืฉื™ืขื•ืจื™ื ืคืชื•ื—ื™ื, ื•ื›ืฉื–ื” ื™ืงืจื” ื”ื ื™ื•ืคื™ืขื• ืจื’ื™ืœ ื’ื ืคื” ื•ื’ื ื‘ื™ื•ื˜ื™ื•ื‘. ื‘ื™ื ืชื™ื™ื ืžื•ื–ืžื ื™ื ืœื‘ื“ื•ืง ืืช ืฉื™ืขื•ืจ ื”ื”ืจื—ื‘ื” ื”ืจืืฉื•ืŸ ืฉื›ื‘ืจ ืขืœื” ื‘ื ื•ืฉื git ื•ืื™ืš ืœื‘ื˜ืœ ืžื™ื–ื•ื’ ืฉืœ Pull Request. ื”ืฉื™ืขื•ืจ ื”ื•ื ื‘ืขืฆื ื”ืจื—ื‘ื” ืฉืœ ืคื•ืกื˜ ืฉื›ืชื‘ืชื™ ืขืœ ืื•ืชื• ื ื•ืฉื, ื•ื”ื•ื™ื“ืื• ื›ื•ืœืœ ืืช ื›ืœ ื”ืฆืขื“ื™ื ื‘ืคื•ืกื˜ ืขื ื”ืกื‘ืจ ืžืคื•ืจื˜ ืขืœ ื›ืœ ืื—ื“ ื•ื”ืจื—ื‘ื” ืขืœ ื”ืกื›ื ื” ื‘ื‘ื™ืฆื•ืข revert ืœ merge ื™ืฉืŸ. ืื ืืชื ืžื ื•ื™ื™ื ื•ืขื•ื‘ื“ื™ื ื‘ git ืื ื™ ื‘ื˜ื•ื— ืฉื”ื•ื ื™ืขื–ื•ืจ ืœื›ื. ืื ื™ืฉ ืœื›ื ื ื•ืฉืื™ื ืงื˜ื ื™ื ื ื•ืกืคื™ื ืฉื”ื™ื™ืชื ืจื•ืฆื™ื ืœืœืžื•ื“ ืขืœื™ื”ื ื‘ื”ืจื—ื‘ื”, ืžื›ืœ ืื—ื“ ืžื”ืขื•ืœืžื•ืช ืฉื ืœืžื“ื™ื ืคื” ื‘ืืชืจ, ืืฉืžื— ืœืฉืžื•ืข ื•ืœื ืกื•ืช ืœื”ื•ืกื™ืฃ. ืคืฉื•ื˜ ืชืฉืื™ืจื• ื”ื•ื“ืขื” ืื• ืฉืœื—ื• ืžื™ื™ืœ.

ToCode
1 420
/** @type {import('tailwindcss').Config} */
module.exports = {
  content: [
    "./index.html",
    "./src/**/*.{js,ts,jsx,tsx}",
  ],
  theme: {
    extend: {},
  },
  plugins: [],
}

ื•ืœื”ื•ืกื™ืฃ 3 ืฉื•ืจื•ืช ืœืงื•ื‘ืฅ ื” src/index.css ื‘ืคืจื•ื™ืงื˜:
@tailwind base;
@tailwind components;
@tailwind utilities;
ืืชื ืžื•ื–ืžื ื™ื ืœื ืกื•ืช ืืช ื–ื” ื•ืœื”ื“ื‘ื™ืง ืืช ืงื•ื“ ื”ื“ื•ื’ืžื” ืฉืœื™ ื‘ืคืจื•ื™ืงื˜ ืฉื™ืฆื ื›ื“ื™ ืœืจืื•ืช ืืช ื˜ื™ื™ืœื•ื•ื™ื ื“ ื‘ืคืขื•ืœื” ื‘ืคืจื•ื™ืงื˜ ืจื™ืืงื˜ ืฉืœื›ื.

ToCode
1 420
# ื’ื ื‘ืขื‘ื•ื“ื” ืขื ืจื™ืืงื˜ - Tailwind CSS ื”ื™ื ืจืขื™ื•ืŸ ืžืขื•ืœื” ืกืคืจื™ื™ืช Tailwind CSS ืžืฆื™ืขื” ืคืจื™ื™ืžื•ื•ืจืง ืžืื•ื“ ืคืฉื•ื˜ ืœื›ืชื™ื‘ืช CSS ื‘ืœื™ ืœื›ืชื•ื‘ CSS ื‘ื›ืœืœ. ื”ืจืขื™ื•ืŸ ื”ื•ื ืฉื‘ืžืงื•ื ืœื›ืชื•ื‘ ืžืืคื™ื™ืŸ CSS ืื ื—ื ื• ืžื•ืกื™ืคื™ื ืงืœืืก ืžื™ื•ื—ื“ ืœืืœืžื ื˜, ื•ืœืžืขืฉื” ืœื›ืœ ืžืืคื™ื™ืŸ ื•ืœื›ืœ ืขืจืš ื™ืฉ ืงืœืืก ืฉืžืชืื™ื ืœื•. ื”ื›ื— ืฉืœ ื˜ื™ื™ืœื•ื•ื™ื ื“ ื”ื•ื ืฉืงื‘ืฆื™ ื” CSS ืžื™ื•ืฆืจื™ื ื“ื™ื ืžื™ืช ืœืคื™ ื”ืงืœืืกื™ื ืฉืจืฉืžืชื ื›ืš ืฉื”ื›ืœ ืžืกืชื“ืจ ื•ื” CSS ืœื ื›ื•ืœืœ ื“ื‘ืจื™ื ืžื™ื•ืชืจื™ื. ื•ื”ื›ื— ืฉืœ ื˜ื™ื™ืœื•ื•ื™ื ื“ ื‘ื™ื™ืฉื•ืžื™ ืจื™ืืงื˜ ื”ื•ื ืฉื–ื” ืคืฉื•ื˜ ืคื™ืชืจื•ืŸ ื”ืจื‘ื” ื™ื•ืชืจ ืงืœ ื•ื”ืจื‘ื” ื™ื•ืชืจ ื˜ื•ื‘ ืžื›ืชื™ื‘ืช Inline Styles. ื‘ื•ืื• ื ืจืื” ืื™ืš ื–ื” ืขื•ื‘ื“ ื•ืื™ืš ืœืฉืœื‘ ืืช ื˜ื™ื™ืœื•ื•ื™ื ื“ ื‘ื™ื™ืฉื•ื ืฉืœื›ื. ## ื˜ื™ื™ืœื•ื•ื™ื ื“ ืื• Inline Style ื‘ืจืžื” ื”ื‘ืกื™ืกื™ืช ืขื•ื–ืจ ืœื—ืฉื•ื‘ ืขืœ Tailwind ื‘ื”ืฉื•ื•ืื” ืœ Inline Style ืฉืœ ืงื•ืžืคื•ื ื ื˜ื”. ื ื ื™ื— ืฉืื ื™ ืจื•ืฆื” ืœื‘ื ื•ืช ืงื•ืžืคื•ื ื ื˜ื” ืฉืžืฆื™ื’ื” ืงืฆืช ื˜ืงืกื˜ ื•ืฉื ื™ ื›ืคืชื•ืจื™ื, ืื– ืื ื™ ื™ื›ื•ืœ ืœื”ืฉืชืžืฉ ื‘ืงื•ื“ ืจื™ืืงื˜ ื”ื‘ื:
function App() {
  return (
    <div className="App">
      <h1>My Cool Game</h1>
      <ul style={{ listStyle: 'none', padding: '0', display: 'flex', flexDirection: 'column' }}>
        <li style={{ margin: '0.5rem 0' }}><MenuButton>Single Player</MenuButton></li>
        <li style={{ margin: '0.5rem 0' }}><MenuButton>Multi Player</MenuButton></li>
      </ul>
    </div>
  )
}

function MenuButton({ href="#", children }) {
  const style = {
    display: 'inline-block',
    width: '10rem',
    textDecoration: 'none',
    background: '#4CAF50',
    border: 'none',
    color: 'white',
    padding: '1rem 1.5rem',
    fontSize: '1.5rem',
  };

  return (
    <a href={href} style={style}>{children}</a>
  );
}

export default App
ืฉืžืฆื“ ืื—ื“ ื”ื•ื ืžืื•ื“ ื ื•ื— ืœื›ืชื™ื‘ื” ื•ื ืจืื” ืงืœ ืœืชื—ื–ื•ืงื”, ืื‘ืœ ื‘ืคืจื•ื™ืงื˜ ื’ื“ื•ืœ ืœ Inline Style ื™ืฉ ืžืกืคืจ ื—ืกืจื•ื ื•ืช: 1. ืงืฉื” ืœื”ืฉืชืžืฉ ื‘ืงื•ืžืคื•ื ื ื˜ื” ื‘ืžืงื•ื ืื—ืจ ืขื ื”ื’ื“ืจื•ืช ืขื™ืฆื•ื‘ ืื—ืจื•ืช, ื›ื™ ืื™ ืืคืฉืจ ืœื“ืจื•ืก Inline Style ืžืชื•ืš CSS ื‘ืฆื•ืจื” ื ื•ื—ื”. 2. ื›ืฉืžืชื—ื™ืœื™ื ืœื”ื›ื ื™ืก Media Queries, Dark Mode ืื• ืืคื™ืœื• hover ืื ื—ื ื• ืžื’ืœื™ื ืฉ Inline Style ืœื‘ื“ื• ืœื ืžืกืคื™ืง ื•ืฆืจื™ืš ืœื”ื•ืกื™ืฃ ืกืคืจื™ื” ื ื•ืกืคืช ื›ืžื• Styled Components. ื–ื” ืœื ื‘ื”ื›ืจื— ืจืข ืื‘ืœ ืžื•ืกื™ืฃ ืกื™ื‘ื•ื›ื™ื•ืช ืžืฉืœื•. 3. ื™ืฉ ืฆื•ืจืš ืœื–ื›ื•ืจ ืขืจื›ื™ื ืฉืจื™ืจื•ืชื™ื™ื ื•ืœื”ืฉืชืžืฉ ื‘ืื•ืชื ืขืจื›ื™ื ื‘ื™ืŸ ืงื•ืžืคื•ื ื ื˜ื•ืช (ืœื“ื•ื’ืžื” ื’ื•ื“ืœ ื”ืฉื•ืœื™ื™ื). ืื•ืชื• ืงื•ื“ ื‘ื”ืžืจื” ืœ Tailwind ื”ื•ืœืš ืœื”ื™ืจืื•ืช ืžืื•ื“ ื“ื•ืžื”, ืจืง ืฉื”ื’ื“ืจื•ืช ื”ืขื™ืฆื•ื‘ ืขื•ื‘ืจื•ืช ืžืžืืคื™ื™ืŸ style ืœืžืืคื™ื™ืŸ class ื‘ืฆื•ืจื” ืงืฆืช ื™ืฆื™ืจืชื™ืช:
function App() {
  return (
    <div className="App p-4">
      <h1>My Cool Game</h1>
      <ul className="flex p-0 flex-col">
        <li className="my-4"><MenuButton>Single Player</MenuButton></li>
        <li className="my-4"><MenuButton>Multi Player</MenuButton></li>
      </ul>
    </div>
  )
}

function MenuButton({ href="#", children }) {
  return (
    <a className="inline-block py-4 px-6 text-white w-40 bg-[#4CAF50]" href={href}>{children}</a>
  );
}

export default App
ื”ื™ืชืจื•ื ื•ืช ื‘ืงืฆืจื”: 1. ื”ื’ื“ืจื•ืช ื”ืขื™ืฆื•ื‘ ืงืฆืจื•ืช ื™ื•ืชืจ. 2. ืื ื™ ืœื ืžื’ื“ื™ืจ ื’ื“ืœื™ื ืฉืจื™ืจื•ืชื™ื™ื ืืœื ืžืฉืชืžืฉ ื‘ืžืกืคืจื™ื ืฉืœ Tailwind ื›ืžื• p-4 ืฉืžืฆื™ื™ืŸ padding ื‘ื’ื•ื“ืœ 1rem. ื•ื›ืŸ ืืคืฉืจ ืœื‘ื—ื•ืจ ืืช ื”ืžืฉืžืขื•ืช ืฉืœ p-4 ื‘ืงื•ื‘ืฅ ืงื•ื ืคื™ื’ื•ืจืฆื™ื” ืื ืืชื ืฆืจื™ื›ื™ื ื’ื“ืœื™ื ืฉื•ื ื™ื. 3. ืื™ืŸ ื‘ืขื™ื” ืœื”ืฉืชืžืฉ ื‘ืขืจื›ื™ื ืฉืจื™ืจื•ืชื™ื™ื ืขื ืกื•ื’ืจื™ื™ื ืžืจื•ื‘ืขื™ื, ื›ืžื• ืฉืขืฉื™ืชื™ ืขื ืฆื‘ืข ื”ืจืงืข, ืื‘ืœ ื’ื ืฉื ืืคืฉืจ ืœื”ื’ื“ื™ืจ ื‘ืงื•ื ืคื™ื’ื•ืจืฆื™ื” ืฉื ืœืฆื‘ืข ื”ื–ื” ื•ืื– ืœื”ืฉืชืžืฉ ื‘ืงืœืืก ืฉื™ืชืื™ื ืœื•. 4. ื›ืœ ื”ื’ื“ืจื•ืช ื”ืขื™ืฆื•ื‘ ืžื•ืคื™ืขื•ืช ื‘ืงืœืืกื™ื, ื›ืš ืฉื™ื—ืกื™ืช ืงืœ ืœืฉืœื‘ ืืช ื”ืงื•ืžืคื•ื ื ื˜ื” ื‘ืžืงื•ืžื•ืช ืื—ืจื™ื ื•ืœื“ืจื•ืก ืืช ื”ืขื™ืฆื•ื‘ ื‘ืืžืฆืขื•ืช ืฉื™ืœื•ื‘ ืงื•ื‘ืฅ CSS ื—ื™ืฆื•ื ื™. 5. ืœ Tailwind ื™ืฉ ืชืžื™ื›ื” ืžืœืื” ื‘ Media Queries, hover ื•ื›ืœ ืžื” ืฉืชืจืฆื•. ืืช ืฉืžื•ืช ื”ืงืœืืกื™ื ืืคืฉืจ ืœืžืฆื•ื ื‘ืชื™ืขื•ื“ ืฉืœ ื˜ื™ื™ืœื•ื•ื™ื ื“, ื•ื‘ืชื—ื™ืœืช ื”ืขื‘ื•ื“ื” ืื™ืชื• ื›ื“ืื™ ืœื”ื™ืขื–ืจ ื‘ืืชืจ transform.tools ื›ื“ื™ ืœื”ืคื•ืš ื›ืœ ืงื•ื“ CSS ืœืจืฉื™ืžืช ืงืœืืกื™ื ืฉืœ Tailwind. ืงื™ืฉื•ืจ ืœื›ืœื™: https://transform.tools/css-to-tailwind ## ืื™ืš ืœืฉืœื‘ ื˜ื™ื™ืœื•ื•ื™ื ื“ ื‘ื™ื™ืฉื•ื ืฉืœื›ื ื‘ืฉื‘ื™ืœ ืœื‘ื ื•ืช ืคืจื•ื™ืงื˜ ืจื™ืืงื˜ ืขื Tailwind CSS ื‘ืกืš ื”ื›ืœ ืฆืจื™ืš ืœืœื›ืช ืœืคื™ ื”ื”ื•ืจืื•ืช ื‘ืืชืจ ืฉืœื”ื ื‘ืงื™ืฉื•ืจ https://tailwindcss.com/docs/guides/vite. ืื ื™ ืžื“ื‘ื™ืง ืคื” ืืช ื”ืชืงืฆื™ืจ ืฉื™ื”ื™ื” ืœื ื•:
$ npm create vite@latest my-project -- --template react
$ cd my-project
$ npm install -D tailwindcss postcss autoprefixer
$ npx tailwindcss init -p
ืื—ืจื™ ื–ื” ืฆืจื™ืš ืœืขื“ื›ืŸ ืงื•ื‘ืฅ ืงื•ื ืคื™ื’ื•ืจืฆื™ื” ื‘ืฉื tailwind.config.cjs ื›ื“ื™ ืฉื™ื›ื™ืœ ืืช ื”ืชื•ื›ืŸ ื”ื‘ื:

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

text = "one two three I want to see three four five I am alive"

# delete all spaces in sentences
text = re.sub(r'\s+', '', text)

# replace each letter by its ordinal value
text = [ord(c) for c in text]

# leave only values that are larger than what came before
new_text = [text[0]]
for value in text:
    if value > new_text[-1]:
        new_text.append(value)

text = new_text

print(sum(text))
ืœืงื•ื“ ื™ืฉ ืฉืœื•ืฉื” ื—ืœืงื™ื ืฉื‘ื ื•ื™ื™ื ืœืขื‘ื•ื“ ืื—ื“ ืื—ืจื™ ื”ืฉื ื™ ืขื ื”ืขืจื” ืฉืžืชืืจืช ืžื” ืขื•ืฉื” ื›ืœ ื—ืœืง. ืœื ื‘ื˜ื•ื— ืฉื›ื•ืœื ื ื›ื•ื ื™ื ืื‘ืœ ืœืคื—ื•ืช ื”ืงื•ื“ ืกื’ื•ืจ ื›ื•ืœื• ื‘ืื•ืชื• ืžืงื•ื, ื•ืืฃ ืื—ื“ ืœื ื™ื—ืœื•ื ืœื”ืฉืชืžืฉ ื‘ื• ื‘ืขื•ื“ ืžืงื•ื ื‘ืžืขืจื›ืช. ื‘ืžืงืจื” ื”ื’ืจื•ืข ื™ืฆื˜ืจื›ื• ืœืงืจื•ื ืืช ื”ืงื•ื“ ื•ืžืžืฉ ืœื”ืขืชื™ืง ืืช ื”ืฉื•ืจื•ืช ืฉืขื•ืฉื•ืช ืขื‘ื•ื“ื” ื“ื•ืžื”. ื’ื™ืจืกื” ืžืกื•ื›ื ืช ื™ื•ืชืจ ืฉืœ ื”ืงื•ื“ ื”ื–ื” ืขืฉื•ื™ื” ืœื”ื™ืจืื•ืช ื›ืš:
import re

def main():
    text = "one two three I want to see three four five I am alive"
    text = delete_all_spaces(text)
    text = change_to_ord_values(text)
    text = change_to_increasing(text)
    print_result(text)


def delete_all_spaces(text):
    # delete all spaces in sentences
    text = re.sub(r'\s+', '', text)
    return text

def change_to_ord_values(text):
    # replace each letter by its ordinal value
    text = [ord(c) for c in text]
    return text

def change_to_increasing(text):
    # leave only values that are larger than what came before
    new_text = [text[0]]
    for value in text:
        if value > new_text[-1]:
            new_text.append(value)

    text = new_text
    return text

def print_result(text):
    print(sum(text))


main()
ืื™ื–ื” ื™ื•ืคื™ ื ื›ื•ืŸ? ื”ื›ืœ ืžืกื•ื“ืจ ืขื›ืฉื™ื• ื‘ืคื•ื ืงืฆื™ื•ืช, ื›ืœ ืคื•ื ืงืฆื™ื” ืžืงื‘ืœืช ืืช ื”ืงืœื˜ ืฉืœื” ื•ืžื—ื–ื™ืจื” ืคืœื˜ ื•ื”ืชื•ื›ื ื™ืช ืžื—ื–ื™ืจื” ืืช ืื•ืชื” ืชื•ืฆืื”. ืขื›ืฉื™ื• ืื ื ืจืฆื” ืœื”ืฉืชืžืฉ ืจืง ื‘ื—ืœืง ืžื”ืงื•ื“ ืœืžืงื•ื ืื—ืจ ื ื•ื›ืœ - ื ื›ื•ืŸ? ืจื•ื‘ ื”ืกื™ื›ื•ื™ื™ื ืฉืœื. ื”ืคื•ื ืงืฆื™ื•ืช ืœื ืžืกืคื™ืง ื’ื ืจื™ื•ืช ื‘ืฉื‘ื™ืœ ืฉื™ื”ื™ื• ื™ืขื™ืœื•ืช ื‘ืžืงื•ื ืื—ืจ, ื›ืชื‘ืชื™ ืื•ืชืŸ ืคืฉื•ื˜ ื‘ื’ืœืœ ืฉื–ื” ืžื” ืฉื”ื™ื” ืœื™ ืžื•ืœ ื”ืขื™ื ื™ื™ื ื•ื”ื—ืœื•ืงื” ืฉืจื™ืจื•ืชื™ืช ืœื’ืžืจื™. ื”ืจื‘ื” ื™ื•ืชืจ ืกื‘ื™ืจ ืฉืžื™ืฉื”ื• ื™ื ืกื” ืœื”ืฉืชืžืฉ ื‘ืื—ืช ืžื”ืŸ, ื™ื‘ื™ืŸ ืฉืื™ืŸ ืœื• ื‘ื“ื™ื•ืง ืงืœื˜ ืžื”ืกื•ื’ ืฉื”ืคื•ื ืงืฆื™ื” ืฆืจื™ื›ื” ื•ืื– ื™ื™ืชืงืข ื‘ืืจื’ื•ืŸ ืžื—ื“ืฉ ืฉืœ ื”ืงื•ื“. ืื– ื›ืŸ ืื ื™ืฉ ืœื›ื ื–ืžืŸ ืœื›ืชื•ื‘ ืงื•ื“ ื’ื ืจื™, ื‘ืืจื›ื™ื˜ืงื˜ื•ืจื” ื ื›ื•ื ื” ืฉืงืœ ืœื”ืฉืชืžืฉ ื‘ื• ื‘ืขื•ื“ ืžืงื•ืžื•ืช ื•ืืชื ื™ื•ื“ืขื™ื ืœืชืืจ ืžืงื•ืžื•ืช ื ื•ืกืคื™ื ื‘ืžืขืจื›ืช ืฉื™ืฆื˜ืจื›ื• ืื•ืชื• - ืœื›ื• ืขืœ ื–ื” ื•ื›ืชื‘ื• ืืช ื”ืงื•ื“ ื”ื’ื ืจื™. ืื‘ืœ ืฉื•ื•ื” ืœื”ื™ื–ื”ืจ ืžืงื•ื“ ืฉืจืง ื ืจืื” ื’ื ืจื™, ื•ืฉื™ื™ืฉื‘ืจ ื‘ืฉื ื™ื” ืฉื ื ืกื” ืœืฉืœื‘ ืื•ืชื• ื‘ืขื•ื“ ืžืงื•ื.