uz
Feedback
ToCode

ToCode

Kanalga Telegramโ€™da oโ€˜tish

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

Ko'proq ko'rsatish
1 420
Obunachilar
Ma'lumot yo'q24 soatlar
Ma'lumot yo'q7 kunlar
-530 kunlar
Postlar arxiv
ToCode
1 420
ืฉืœื•ืฉ ืชื—ื ื•ืช ื‘ื“ืจืš ืœืžืฆื™ืืช ืขื‘ื•ื“ื” ื‘ื”ื™ื™ื˜ืง ืงื•ื“ื ื›ืœ ื’ื™ืœื•ื™ ื ืื•ืช, ื‘ืชื•ืจ ืคืจื™ืœืื ืกืจ ื‘ 12 ืฉื ื™ื ื”ืื—ืจื•ื ื•ืช ืขื‘ืจ ื”ืจื‘ื” ื–ืžืŸ ืžืื– ื”ืคืขื ื”ืื—ืจื•ื ื” ืฉื—ื™ืคืฉืชื™ ืขื‘ื•ื“ื”. ืื ื™ ื”ื™ื•ื ืžื›ื™ืจ ืืช ื”ืขื•ืœื ื”ื–ื” ื™ื•ืชืจ ื“ืจืš ื—ื‘ืจื™ื ืื• ืžื ื™ืกื™ื•ื ื•ืช ืฉืœื™ ืœืขื–ื•ืจ ืœืœืงื•ื—ื•ืช ืœื’ื™ื™ืก. ื•ื‘ื›ืœ ื–ืืช ืžื ืงื•ื“ืช ื”ืžื‘ื˜ ื”ืงืฆืช ืžืจื•ื—ืงืช ืฉืœื™ ื™ืฉ ืฉืœื•ืฉื” ืขืงืจื•ื ื•ืช ืื•ื ื™ื‘ืจืกืœื™ื™ื ืฉืื ื™ ืจื•ืื” ื‘ื›ืœ ืชื”ืœื™ืš ืฉืœ ื—ื™ืคื•ืฉ ืื• ื’ื™ื•ืก. ืขืงืจื•ื ื•ืช ืฉื›ืฉืืชื ืžื‘ื™ื ื™ื ืื•ืชื ื”ืชืžื•ื ื” ืฉืœ ื—ื™ืคื•ืฉ ืขื‘ื•ื“ื” ื ืจืื™ืช ื”ืจื‘ื” ืคื—ื•ืช ืžืœื—ื™ืฆื”. ื‘ื ื™ื™ืช ืชืฉืชื™ืช ื”ืขื™ืงืจื•ืŸ ื”ืจืืฉื•ืŸ ื”ื•ื ื‘ื ื™ื™ืช ื”ืชืฉืชื™ืช. ืชืฉืชื™ืช ื‘ืžื•ื‘ืŸ ืฉืœ ื—ื™ืคื•ืฉ ืขื‘ื•ื“ื” ืžื•ืจื›ื‘ืช ืžื”ื™ื›ืจื•ืช ืขื ืื ืฉื™ื ืจืœื•ื•ื ื˜ื™ื ื‘ืชื—ื•ื, ืฉื™ืคื•ืจ ื”ืจืžื” ื”ืžืงืฆื•ืขื™ืช ืฉืœื›ื, ื‘ื ื™ื™ืช ืชื™ืง ืขื‘ื•ื“ื•ืช ืฉืžืจืื” ืขืœ ื™ื›ื•ืœืช ืžืงืฆื•ืขื™ืช ื•ื‘ื ื™ื™ืช ืžื™ื•ืžื ื•ื™ื•ืช ืจื›ื•ืช ืฉื™ืืคืฉืจื• ืœื›ื ืœื”ืฉืชืœื‘ ื‘ืืจื’ื•ืŸ. ื”ืคืจื˜ื™ื ื›ืืŸ ื”ื ืคื—ื•ืช ื—ืฉื•ื‘ื™ื ื•ืงืœ ืœืžืฆื•ื ื”ืžื•ืŸ ื˜ื™ืคื™ื ื‘ืจืฉืช ืœื–ื”. ื‘ื’ื“ื•ืœ ื‘ืฉื‘ื™ืœ ืœื”ื›ื™ืจ ืื ืฉื™ื ื›ื“ืื™ ืœืฉืœื•ื— ืงื•ืจื•ืช ื—ื™ื™ื ืœื—ื‘ืจื•ืช ื”ืฉืžื” ื•ืœืฆืœืฆืœ ืœืžื’ื™ื™ืกื•ืช ืฉื ื›ื“ื™ ืœื”ื‘ื™ืŸ ืžื” ื›ื“ืื™ ืœืฉืคืจ (ื•ื›ืš ืœื”ืชื™ื™ื“ื“ ืขื ืื•ืชื ืื ืฉื™ื ื‘ื—ื‘ืจื•ืช ื”ื”ืฉืžื”), ืœื”ืฉืชืชืฃ ื‘ืื™ืจื•ืขื™ื ืžืงืฆื•ืขื™ื™ื ืฉืœ ื”ืชืขืฉื™ื™ื”, ืœืœื›ืช ืœื”ืืงืชื•ื ื™ื, ืœื”ื™ื›ื ืก ืœืงื”ื™ืœื•ืช ื‘ืจืฉืช ื•ืœื”ืฉืชืชืฃ ื‘ื“ื™ื•ื ื™ื ืฉื. ื›ืœ ื“ื‘ืจ ืฉืขื•ื–ืจ ืœื›ื ืœื”ื›ื™ืจ ืื ืฉื™ื ืžืขื ื™ื™ื ื™ื ืžื”ืชืขืฉื™ื™ื” ื•ืœื”ื ืœื”ื›ื™ืจ ืืชื›ื. ื‘ืฉื‘ื™ืœ ืœื”ืฉืชืคืจ ืžืงืฆื•ืขื™ืช ื—ืฉื•ื‘ ื›ืœ ื”ื–ืžืŸ ืœืœืžื•ื“. ื™ืฉ ื”ื™ื•ื ื”ืžื•ืŸ ืงื•ืจืกื™ื ื‘ืจืฉืช, ื”ืจืฆืื•ืช ืžืงืฆื•ืขื™ื•ืช ืžื›ืœ ื›ื ืก ื‘ืขื•ืœื ื–ืžื™ื ื•ืช ื‘ื™ื•ื˜ื™ื•ื‘, ื™ื•ืชืจ ืกืคืจื™ื ืžืžื” ืฉืืคืฉืจ ืœืงืจื•ื ื‘ื—ื™ื™ื ืฉืœืžื™ื. ืขืฉื• ืœืขืฆืžื›ื ื”ืจื’ืœ ื›ืœ ื™ื•ื ืœืœืžื•ื“ ืžืฉื”ื• ื—ื“ืฉ ื›ื™ ื™ืฉ ื‘ืืžืช ื”ืžื•ืŸ ื”ืžื•ืŸ ื“ื‘ืจื™ื ืฉืชืฆื˜ืจื›ื• ืœืœืžื•ื“. ืžืชื™ืฉื”ื• ืชืชื—ื™ืœื• ืœื”ื™ืชืงืœ ื‘ื”ื–ื“ืžื ื•ื™ื•ืช ืœืขื‘ื•ื“ื” ื•ืื– ืชืจืฆื• ืœื”ืจืื•ืช ืฉื™ืฉ ืœื›ื ืืช ื”ื™ื›ื•ืœืช ืœื‘ืฆืข ืืช ืžื” ืฉืฆืจื™ืš. ืคืจื•ื™ืงื˜ื™ื ื˜ื•ื‘ื™ื ืœืชื™ืง ืขื‘ื•ื“ื•ืช ืœื ื‘ื•ื ื™ื ื‘ื™ื•ื ืื—ื“ ื•ืขื“ื™ืฃ ืœื”ืชื—ื™ืœ ืœืขื‘ื•ื“ ืขืœื™ื”ื ื›ืžื” ืฉื™ื•ืชืจ ืžื•ืงื“ื. ื”ืืชื’ืจื™ื ื‘ืฉืœื‘ ื”ื–ื” ื”ื ืฉืื ื—ื ื• ืœื ื™ื•ื“ืขื™ื ื›ืžื” ื–ืžืŸ ื”ื•ื ื™ื™ืงื— ื•ืื™ืŸ ืœื ื• ื“ืจืš ืœืงื‘ืœ ืคื™ื“ื‘ืง ืืžื™ืชื™ ืฉื™ืฉืงืฃ ืœื ื• ื›ืžื” ื˜ื•ื‘ ืื ื—ื ื• ืžืชืงื“ืžื™ื. ื™ื•ื ืื—ื“ ื™ืชื—ื™ืœื• ืœื”ื’ื™ืข ื”ื–ื“ืžื ื•ื™ื•ืช. ืขื“ ืฉื–ื” ื™ืงืจื” ื”ื“ื‘ืจ ื”ื™ื—ื™ื“ ืฉืืคืฉืจ ื•ืฆืจื™ืš ืœืขืฉื•ืช ื”ื•ื ืœื”ืžืฉื™ืš ืœืขื‘ื•ื“. ื ื™ืฆื•ืœ ื”ื–ื“ืžื ื•ื™ื•ืช ื›ืฉื™ืชื—ื™ืœื• ืœื”ื’ื™ืข ื”ื–ื“ืžื ื•ื™ื•ืช ื—ืฉื•ื‘ ืœืฉื™ื ืœื‘ ืืœื™ื”ืŸ, ืœื ืœืคืกืคืก ื•ืœื”ื™ื•ืช ืžืื•ื“ ื‘ืจื•ืจื™ื ืœื’ื‘ื™ ื”ื›ื•ื•ื ื•ืช ืฉืœื›ื ื•ื”ื™ื›ื•ืœื•ืช ืฉืœื›ื. ืคืชืื•ื ืžื™ืฉื”ื• ืžืฆืœืฆืœ ื•ืจื•ืฆื” ืœื”ื–ืžื™ืŸ ืื•ืชืš ืœืจืื™ื•ืŸ ืœืžืฉืจืช ืคื™ืชื•ื— Full Stack. ืื• ืฉื‘ืฉื‘ื•ืข ืื—ื“ ื”ื˜ืœืคื•ืŸ ืคืชืื•ื ืœื ืžืคืกื™ืง ืœืฆืœืฆืœ ื•ื›ื•ืœื ืจื•ืฆื™ื ืฉืชื‘ื•ืื• ืœืขื‘ื•ื“ ืืฆืœื ืขืœ ืคืจื•ื™ืงื˜ื™ื ืฉืœ ืžื˜ื‘ืขื•ืช ื•ื™ืจื˜ื•ืืœื™ื™ื. ื–ื” ื™ื›ื•ืœ ืœื”ื™ื•ืช ื›ืœ ื“ื‘ืจ. ื—ืฉื•ื‘ ืœื”ื‘ื™ืŸ ืžืื•ื“ ืžื•ืงื“ื ืžื” ื‘ื“ื™ื•ืง ืืชื ืžื—ืคืฉื™ื ื›ื“ื™ ืœื”ื™ื•ืช ืขืจื ื™ื™ื ืœื”ื–ื“ืžื ื•ื™ื•ืช ื”ื ื›ื•ื ื•ืช ื•ืœื ืœืœื›ืช ืฉื•ืœืœ ืื—ืจื™ ื“ื‘ืจื™ื ืœื ืจืœื•ื•ื ื˜ื™ื. ืื ืฉื™ื ืฉืžื ืฆืœื™ื ื”ื–ื“ืžื ื•ื™ื•ืช ืœื ืžืชืœื‘ื˜ื™ื. ื›ืฉืžื’ื™ืข ืคืจื•ื™ืงื˜ ืจืœื•ื•ื ื˜ื™ ืขืฉื™ืชื ื›ื‘ืจ ืžืกืคื™ืง ืฉื™ืขื•ืจื™ ื‘ื™ืช ื›ื“ื™ ืœื“ืขืช ืฉื–ื” ืคืจื•ื™ืงื˜ ื˜ื•ื‘ ื•ืœื•ืงื—ื™ื ืื•ืชื• ื‘ืœื™ ืœื”ืกืก. ื”ืืชื’ืจ ื‘ืฉืœื‘ ื”ื”ื–ื“ืžื ื•ื™ื•ืช ื”ื•ื ืฉืื ืฉื™ื ืฉื•ื›ื—ื™ื ืฉื”ื–ื“ืžื ื•ื™ื•ืช ื‘ืื•ืช ื‘ืชืงื•ืคื•ืช. ืฉื‘ื•ืข ื”ื˜ืœืคื•ืŸ ืœื ืžืคืกื™ืง ืœืฆืœืฆืœ ื•ืื– ื—ื•ื“ืฉื™ื™ื ืื™ืŸ ืฉื•ื ื”ืฆืขื”. ืืœ ืชืชื ื• ืœืขื•ื“ืฃ ื”ื”ื–ื“ืžื ื•ื™ื•ืช ืœื‘ืœื‘ืœ ืืชื›ื. ื”ืชืคืฉืจื•ืช ืžืฆืืชื ืืช ื”ื”ื–ื“ืžื ื•ืช ืœืคืจื•ื™ืงื˜ ื˜ื•ื‘? ืจื•ื‘ ื”ืกื™ื›ื•ื™ื™ื ืฉื”ื•ื ืœื ื™ื”ื™ื” ืžื•ืฉืœื. ื”ืžืจื—ืง, ื”ืžืฉื›ื•ืจืช, ื”ื˜ื›ื ื•ืœื•ื’ื™ื”, ื”ืื ืฉื™ื, ื”ืฉืขื•ืช, ื”ืื•ืคืฆื™ื•ืช, ... ื”ื—ืœืง ื”ืื—ืจื•ืŸ ื”ื“ืจื•ืฉ ื‘ืฉื‘ื™ืœ ืœืžืฆื•ื ืขื‘ื•ื“ื” ื”ื•ื ื”ื ื›ื•ื ื•ืช ืœื”ืชืคืฉืจ ืขืœ ื”ื“ื‘ืจื™ื ื”ืคื—ื•ืช ื—ืฉื•ื‘ื™ื ื‘ืฉื‘ื™ืœ ืœืงื‘ืœ ืืช ื”ื”ื–ื“ืžื ื•ืช ืฉื—ื™ื›ื™ืชื ืœื”. ืฉื™ืžื• ืœื‘ ืœืชื—ื ื•ืช ื”ืืœื” ื‘ื—ื™ืคื•ืฉ ื”ืขื‘ื•ื“ื” ื”ื‘ื ืฉืœื›ื ื•ืชื ื• ืœืขืฆืžื›ื ื–ืžืŸ, ื•ืื ื™ ื‘ื˜ื•ื— ืฉื”ืชื”ืœื™ืš ื™ื”ื™ื” ืคื—ื•ืช ืžืœื—ื™ืฅ ื•ื™ื•ืชืจ ืคืจื•ื“ื•ืงื˜ื™ื‘ื™.

ToCode
1 420
ื“ื™ื ื• ืื• ื‘ืืŸ ื›ืžื• ื›ืœ ืชื•ื›ื ื” ืฉื”ื™ืชื” ืื™ืชื ื• ื”ืจื‘ื” ื–ืžืŸ, ื’ื node.js ืžื•ืฉืš ืื™ืชื• ื”ืจื‘ื” ืงื•ื“ ื™ืฉืŸ ื•ืคื™ืฆ'ืจื™ื ืฉืืฃ ืื—ื“ ื›ื‘ืจ ืœื ื™ื•ื“ืข ืฉืงื™ื™ืžื™ื. ื”ื“ื‘ืจื™ื ื”ืืœื” ืžืื˜ื™ื ืืช ื”ืคื™ืชื•ื— ื•ื’ื ืืช ื”ื–ืžืŸ ื”ืจื™ืฆื” ื•ื–ื” ืœื ืกื•ื“ ืฉื™ื™ืฉื•ืžื™ node ื”ื™ื• ื™ื›ื•ืœื™ื ืœื”ื™ื•ืช ืžื”ื™ืจื™ื ื™ื•ืชืจ. ื ื•ืกืฃ ืขืœ ื›ืš ื ื•ื“ ืžื•ื’ื‘ืœ ืขืœ ื™ื“ื™ ืžื‘ื ื” ื•ืืจื›ื™ื˜ืงื˜ื•ืจื” ืฉืื ืฉื™ื ื›ื‘ืจ ื”ืชืจื’ืœื• ืืœื™ื”ื ื•ื ื˜ื•ืขื™ื ืขืžื•ืง ื‘ืชื•ืš ื”ืืงื•ืกื™ืกื˜ื ืฉืœ ื”ืคืจื•ื™ืงื˜. ื“ื‘ืจื™ื ื›ืžื• ื ื™ื”ื•ืœ ืชืœื•ื™ื•ืช ื“ืจืš package.json, ื”ื’ื™ืจืกื” ืฉืœื”ื ืœ Buffer-ื™ื ื•ื”ื’ื™ืจืกื” ืฉืœื”ื ืœ Stream ื•ื›ืžื•ื‘ืŸ CommonJS ื•ืขื•ื“ ื”ืžื•ืŸ ืคื™ืชื•ื—ื™ื ืฉืขื‘ืจื• ืกื˜ื ื“ืจื˜ื™ื–ืฆื™ื” ืื—ืจื™ ืฉื ื›ื ืกื• ืœ Node. ื‘ื›ืœ ื”ื”ืฉื•ื•ืื•ืช ืฉืžืฆืืชื™ ื‘ื™ืŸ ืฉืœื•ืฉืช ื”ื›ืœื™ื ื‘ืืŸ ื”ื™ื” ื”ืžื”ื™ืจ ื‘ื™ื•ืชืจ, ืขื ื™ืขื“ ืœื”ื™ื•ืช ื›ืžื” ืฉื™ื•ืชืจ ืชื•ืื ืœ node. ื‘ื’ื™ืจืกื” 1.1 ืฉื™ืฆืื” ืขื›ืฉื™ื• ื”ื ืžืกืคืจื™ื ื‘ื”ืชืœื”ื‘ื•ืช ืขืœ ื” APIs ื”ืœื ืžืชื•ืขื“ื™ื ืฉืœ node ืฉื”ื ืžืฉื›ืคืœื™ื. ื“ื™ื ื• ื”ื’ื™ืข ืขื ืžื•ื“ืœ ื”ืจืฉืื•ืช ืžืื•ื‘ื˜ื— By Default, ืชืžื™ื›ื” ื‘ืœืชื™ ืžืกื•ื™ื’ืช ื‘ืกื˜ื ื“ืจื˜ื™ื ืฉืœ JavaScript ื• TypeScript. ื”ื ื‘ืื• ื›ื“ื™ ืœื™ืฆื•ืจ ืขื•ืœื ื˜ื•ื‘ ื•ืกื˜ื ื“ืจื˜ื™ ืฉื™ื”ื™ื” ืงืœ ืœื”ืขื‘ื™ืจ ื‘ื• ืงื•ื“ ื‘ื™ืŸ ื”ืฉืจืช ืœื“ืคื“ืคื ื™ื. ืœืืŸ ื–ื” ื”ื•ืœืš? ืงืฉื” ืœื™ ืœื“ืžื™ื™ืŸ ืขืชื™ื“ ื‘ื• node.js ืžืžืฉื™ืš ืœื”ื•ื‘ื™ืœ. ืื ื‘ืืŸ ื™ืขื‘ื“ื• ื ื›ื•ืŸ ืžื”ืจ ืžืื•ื“ ืื ืฉื™ื ื™ืชื—ื™ืœื• ืœื”ื—ืœื™ืฃ ืืช ื” node ืฉืœื”ื ื‘ bun ื‘ืœื™ ืœื”ืจื’ื™ืฉ ื‘ื”ื‘ื“ืœ. ื•ื‘ื“ื™ื•ืง ื›ืžื• ืฉืืฃ ืื—ื“ ืœื ืžืชื’ืขื’ืข ืœื•ื•ื‘ืคืืง ื’ื ืœื ื ืจืื” ื’ืขื’ื•ืขื™ื ืœ node. ื”ื“ื‘ืจ ื”ื—ื“ืฉ ื™ืขื‘ื•ื“ ื‘ื“ื™ื•ืง ืื•ืชื• ื“ื‘ืจ ืจืง ืžื”ืจ ื™ื•ืชืจ. ื•ืขื“ื™ื™ืŸ ืื ื™ ืžืงื•ื•ื” ืœืจืื•ืช ืืช ื“ื™ื ื• ืœื•ืงื— ืืช ื”ื”ื•ื‘ืœื”. ื™ืฉ ืœื”ื ืงื”ื™ืœื” ืžืคืจื’ื ืช ื•ืžื™ืชื•ื’ ื˜ื•ื‘ ื•ื›ื•ื•ื ื” ืืžื™ืชื™ืช ืœื™ืฆื•ืจ ืžืฉื”ื• ื˜ื•ื‘ ื™ื•ืชืจ. ืื ื–ื” ื™ืงืจื” ื–ื” ืœื ื™ื”ื™ื” Drop In Replacement ืืœื ื‘ื—ื™ืจื” ื—ื“ืฉื” ืฉื ืฆื˜ืจืš ืœืขืฉื•ืช. ืื ื™ ืืฉืžื— ืœื”ืชืขื•ืจืจ ื™ื•ื ืื—ื“ ื•ืœื’ืœื•ืช ืฉื›ืžื• ืฉืœื ื”ื™ื™ืชื™ ืฆืจื™ืš ื™ื•ืชืจ ืืช jQuery ืื ื™ ื’ื ืœื ืืฆื˜ืจืš ืืช ื›ืœ ื” require, ื” Buffer ื•ื” APIs ื”ืœื ืžืชื•ืขื“ื™ื.

ToCode
1 420
ืื‘ืœ ืื ื™ ืœื ืžืฉืชืžืฉ ื‘ xz ื›ืžื” ื‘ืขื™ื•ืช ืฉืœ ื”ืขื•ืœื ื‘ืขืงื‘ื•ืช ื”ื ื™ืกื™ื•ืŸ ื”ืื—ืจื•ืŸ ืœืฉืชื•ืœ ื“ืœืช ืื—ื•ืจื™ืช ื‘ืชื•ื›ื ื” ืฉื›ื•ืœื ืžืฉืชืžืฉื™ื ื‘ื”- ืงื•ื“ ืคืชื•ื— ื–ื” ืจืขื™ื•ืŸ ืžืขื•ืœื”. ื›ื•ืœื ืžืฉืชืžืฉื™ื ื‘ืื•ืชื ืžื•ืฆืจื™ื ื•ื‘ืื•ืชืŸ ืชืฉืชื™ื•ืช ื•ื–ื” ื›ื™ืฃ ื•ื ื•ืชืŸ ืžืงื•ื ืœื—ื“ืฉื ื•ืช ื˜ื›ื ื•ืœื•ื’ื™ืช. ืงื•ื“ ืคืชื•ื— ืžืžืฉ ื—ืกืจ ืœื™ ื‘ืขื•ืœื ืฉืœ ื” Generative AI ื•ืื ื™ ืœื ืจื•ืฆื” ืœื“ืžื™ื™ืŸ ืื™ืš ื”ื—ื™ื™ื ื”ื™ื• ื ืจืื™ื ืื ื‘ื›ืœ ืžื•ืฆืจ ื”ื™ื™ื ื• ืฆืจื™ื›ื™ื ืœืฉืœื ืชืžืœื•ื’ื™ื ืœืžืื•ืช ืื• ืืœืคื™ ื—ื‘ืจื•ืช. ืื‘ืœ ืงื•ื“ ืคืชื•ื— ื–ื” ื’ื ื‘ืขื™ื”, ื›ื™ ืคื™ืจืฆื” ืงื•ืจืืช ืœื’ื ื‘ ื•ื›ื™ ืžืชื›ื ืชื™ ืงื•ื“ ืคืชื•ื— ืžืจื•ื•ื™ื—ื™ื ืžืขื˜ ืžื“ื™ ื•ืื—ืจืื™ื ืขืœ ื™ื•ืชืจ ืžื“ื™. ื‘ืกื•ืฃ ืื ืฉื™ื ื—ื›ืžื™ื ืžืฆืœื™ื—ื™ื ืœืงื‘ืœ ืืช ืืžื•ืŸ ื”ืงื”ื™ืœื” ื•ื”ืคื•ื˜ื ืฆื™ืืœ ืœื ื–ืง ื”ื•ื ืขืฆื•ื. ืฉืจืฉืจืช ืืกืคืงื” ื–ืืช ื‘ืขื™ื” ืืžื™ืชื™ืช. ืžื•ืฆืจ ื ืžืฉืชืžืฉ ื‘ืžื•ืฆืจ ื‘ ืฉืžืฉืชืžืฉ ื‘ืžื•ืฆืจ ื’ ืฉืžืฉืชืžืฉ ื‘ืžื•ืฆืจ ื“ ื•ื›ืš ื”ืœืื” ืขืฉืจื•ืช ื•ืžืื•ืช ืจืžื•ืช. ืžืกืคื™ืง ืฉืžื™ืฉื”ื• ืžืฆืœื™ื— ืœืฉื›ื ืข ืืช ืื—ื“ ื”ืžืชื›ื ืชื™ื ืฉืื—ืจืื™ื™ื ืขืœ ืžื•ืฆืจ ืฉื ืžืฆื ืžืžืฉ ืœืžื˜ื” ื‘ืฉืจืฉืจืช ืœืชืช ื‘ื• ืืžื•ืŸ ื•ื›ืš ืœืฉืชื•ืœ ืงื•ื“ ื–ื“ื•ื ื™ ื‘ืื•ืชื• ืžื•ืฆืจ, ืฉืจืฉืจืช ื”ืืžื•ืŸ ืขื•ื‘ื“ืช ืœืจืขืชื ื• ื•ื”ืงื•ื“ ื”ื–ื“ื•ื ื™ ืžื’ื™ืข ืœืžื•ืฆืจื™ื ืฉืื ื—ื ื• ื›ืŸ ืžื›ื™ืจื™ื ื•ืื•ื”ื‘ื™ื ื•ืืคื™ืœื• ืœืžืขืจื›ืช ื”ื”ืคืขืœื”. ืžื–ืœ ื›ืš ื”ื’ื“ื™ืจ ืื ื“ืจืก ืคืจื•ื™ื ื“, ื”ืžืชื›ื ืช ืฉืœื’ืžืจื™ ืœื ืงืฉื•ืจ ืœืกื™ืคื•ืจ ืื‘ืœ ื‘ืžืงืจื” ื’ื™ืœื” ืืช ื”ืงื•ื“ ื”ื–ื“ื•ื ื™, ืืช ื”ื ืกื™ื‘ื•ืช ืœื–ื™ื”ื•ื™ ื”ื“ืœืช ื”ืื—ื•ืจื™ืช. ื‘ื”ืกืชื›ืœื•ืช ืงื“ื™ืžื” ื™ืฉ ืกื™ื‘ื” ืœื“ืื’ื”. ื’ื ืื ื”ืžื‘ืฆืข ื”ื–ื” ื ื›ืฉืœ ื”ื•ื ืœื ื”ื™ื” ื”ืจืืฉื•ืŸ ื•ืœื ื™ื”ื™ื” ื”ืื—ืจื•ืŸ. ื ืจืื•ืช ืื•ืœื™ ื”ืกื™ื›ื•ื™ ื”ื™ื—ื™ื“ ืฉืœื ื• ืœืฆืืช ื˜ื•ื‘ ื•ืงืฆืช ืœืฉืคืจ ืืช ื”ืื‘ื˜ื—ื” ืฉืœ ื”ืขื•ืœื. ืคืจื•ื™ืงื˜ xz ื”ื•ื ืคืจื•ื™ืงื˜ ื‘ืงื•ื“ ืคืชื•ื— ืื‘ืœ ื‘ื ื™ื™ืช ื”ื‘ื™ื ืืจื™ื ืœื”ืคืฆื” ื ืขืฉืชื” ืขืœ ื”ืžื›ื•ื ื” ืฉืœ ื”ืžืคืชื— ื”ื–ื“ื•ื ื™. ืื—ืช ื”ื”ื‘ื˜ื—ื•ืช ืฉืœ ืงื•ื“ ืคืชื•ื— ื”ื™ื ืฉื™ื•ืชืจ ืขื™ื ื™ื™ื ื™ื›ื•ืœื•ืช ืœืจืื•ืช ื™ื•ืชืจ ื‘ืื’ื™ื. ื‘ืกื™ืคื•ืจ ืฉืœ xz ืžื™ืฉื”ื• ื™ื“ืข ืืช ื–ื” ื•ืขื‘ื“ ืงืฉื” ื‘ืฉื‘ื™ืœ ืœื”ืกืชื™ืจ ืืช ื”ืคืจื™ืฆื”.

ToCode
1 420
ืงื‘ืฆื™ื ืกื˜ื˜ื™ื™ื ืžืืงืกืคืจืก ืขืœ Deno Deploy ืื ืชื”ื™ืชื ืžืื™ืคื” ื”ื’ื™ืขื• ื›ืœ ื”ืคื•ืกื˜ื™ื ืขืœ node ื• deno ื‘ื™ืžื™ื ื”ืื—ืจื•ื ื™ื ืื– ืชืฉืžื—ื• ืœืฉืžื•ืข ืฉืื ื™ ืขื•ื‘ื“ ืขื›ืฉื™ื• ืขืœ ืจืขื ื•ืŸ ืงื•ืจืก Node ืฉื‘ืืชืจ ื•ืžืงื•ื•ื” ืฉืขื“ ืคืกื— ืืชื ืชืงื‘ืœื• ืงื•ืจืก ืžืขื•ื“ื›ืŸ ืขืœ Node ืฉื›ื‘ืจ ื›ื•ืœืœ ืื™ื ืกื•ืฃ ื“ื•ื’ืžืื•ืช ืงื•ื“ ื‘ TypeScript ื•ืชื•ืื ื’ื ืœ Node ื•ื’ื ืœ Deno. ืจื•ื‘ ื”ื–ืžืŸ ื–ื” ืœื ื ื•ืจื ืžืกื•ื‘ืš ืื‘ืœ ื‘ืœื™ ืงืฆืช ื‘ืขื™ื•ืช ืชืื™ืžื•ืช ื”ื—ื™ื™ื ืœื ื”ื™ื• ืžืขื ื™ื™ื ื™ื. ื‘ืคื•ืกื˜ ื”ื™ื•ื ืื ื™ ืจื•ืฆื” ืœื“ื‘ืจ ืขืœ ื‘ืขื™ื™ืช ืชืื™ืžื•ืช ืงื˜ื ื” ื›ื–ืืช ื‘ืฉื™ืจื•ืช Deno Deploy. ืœืžื™ ืฉืœื ืžื›ื™ืจื™ื Deno Deploy ื–ื” ืฉื™ืจื•ืช ืื™ื—ืกื•ืŸ ื—ื™ื ืžื™ ืฉืœ Deno ืืœื™ื• ืืคืฉืจ ืœื”ืขืœื•ืช ื›ืœ ื™ื™ืฉื•ื ืฆื“ ืฉืจืช ื•ื”ื ืคืฉื•ื˜ ืžืจื™ืฆื™ื ืื•ืชื• ืขืœ ื”ืฉืจืชื™ื ืฉืœื”ื. ื™ืฉ ืœื”ื ืžืกืœื•ืœื™ื ื‘ืชืฉืœื•ื ืœืื ืฉื™ื ืฉืฆืจื™ื›ื™ื ื”ืžื•ืŸ ืžืฉืื‘ื™ื, ืื‘ืœ ืœืžืฉื—ืงื™ื ื”ืžืกืœื•ืœ ื”ื—ื™ื ืžื™ ืžืžืฉ ืžืขื•ืœื”. ื‘ื”ื™ื ืชืŸ ืชื™ืงื™ื™ืช ืคืจื•ื™ืงื˜ Deno ืืคืฉืจ ืœื›ืชื•ื‘ ืžืฉื•ืจืช ื”ืคืงื•ื“ื”:
$ deployctl deploy
ื•ื”ืคืจื•ื™ืงื˜ ืขื•ืœื” ืœืื•ื•ื™ืจ. ื•ื›ืžื•ื‘ืŸ ืื ื”ืคืจื•ื™ืงื˜ ืžืื•ื—ืกืŸ ืขืœ ื’ื™ื˜ื”ืื‘ ืืคืฉืจ ื“ืจืš ื”ืชืคืจื™ื˜ื™ื ื‘ืžืขืจื›ืช ืœื—ื‘ืจ ืืช ื“ื™ื ื• ื“ื™ืคืœื•ื™ ืœื’ื™ื˜ื”ืื‘ ืฉืœื›ื ื•ืื– ื›ืœ Push ืžื™ื™ืฆืจ ื’ื™ืจืกื” ื—ื“ืฉื” ืฉืœ ื”ืคืจื•ื™ืงื˜ ืขืœ ื”ืฉืจืช. ื”ืืชื’ืจ ื”ื™ื—ื™ื“ ื”ื•ื ื‘ืขื™ื™ืช ืชืื™ืžื•ืช, ื›ื™ ืœื“ื™ื ื• ื™ืฉ Web Frameworks ืฉืœื”ื ื•ืืงืกืคืจืก ื›ื ืจืื” ืœื ืžืงื‘ืœ ืฉื ืขื“ื™ืคื•ืช. ืคื™ืฆ'ืจ ืงื˜ืŸ ืื‘ืœ ื—ืฉื•ื‘ ืฉืœ ืงื‘ืฆื™ื ืกื˜ื˜ื™ื™ื ื“ืจืฉ ืงืฆืช ื™ื•ืชืจ ืขื‘ื•ื“ื” ืžืžื” ืฉื”ื™ื” ืฆืจื™ืš. ื‘ื•ืื• ื ืจืื” ืœืžื”. ืืช ืงื•ื“ ื”ืคืจื•ื™ืงื˜ ืืชื ื™ื›ื•ืœื™ื ืœืžืฆื•ื ื‘ื’ื™ื˜ื”ืื‘ ืฉืœื™ ื‘ืงื™ืฉื•ืจ: https://github.com/ynonp/deno-deploy-files ื›ืืŸ ืืฆื™ื’ ืจืง ืืช ืขื™ืงืจื™ ื”ื“ื‘ืจื™ื. ืžืฆื‘ ืคื™ืชื•ื— ืขืœ ื”ืžื›ื•ื ื” ืฉืœื™ ื‘ืžืฆื‘ ืคื™ืชื•ื— ืขืœ ื”ืžื›ื•ื ื” ืฉืœื™ ื”ื’ืฉืช ืงื‘ืฆื™ื ืกื˜ื˜ื™ื™ื ืขื•ื‘ื“ืช ื‘ืฆื•ืจื” ืžื•ื‘ื ื™ืช ื‘ืืงืกืคืจืก. ื–ื” ื”ืงื•ื“:
import express, {Request, Response, NextFunction} from 'express';
import process from 'node:process';
import root from './routes/root.ts';
import path from 'node:path';
import url from 'node:url';
import createError from 'http-errors';

const PORT = process.env.PORT || 3000;
const app = express();

const dirname = path.dirname(url.fileURLToPath(import.meta.url));
app.set('view engine', 'ejs');
app.set('views', path.join(dirname, '/views'));

app.use('/', root);
app.use(express.static('./public'));

app.use((req: Request, res: Response, next: NextFunction) => {
  next(createError(404, 'Not Found'));
})

app.use((err: Error, req: Request, res: Response, next: NextFunction) => {
  console.error(err);
  res.status(500).send({ errors: [{ message: "Something went wrong" }] });
});

app.listen(PORT, () => {
  console.log(\Server listening on port ${PORT}\);
});
ื›ืืฉืจ ื”ืฉื•ืจื” ื”ืจืœื•ื•ื ื˜ื™ืช ื”ื™ื:
app.use(express.static('./public'));
ืžื” ืงื•ืจื” ื›ืฉื“ื•ื—ืคื™ื ืœ Deno Deploy ืื—ืจื™ ื”ืขืœืื” ืœ Deno Deploy ื”ืชื•ื›ื ื™ืช ืขื•ื‘ื“ืช ืื‘ืœ ื”ืงื•ื‘ืฅ ื”ืกื˜ื˜ื™ (ื‘ื“ื•ื’ืžื” ืฉืœื™ ื–ื” ืงื•ื‘ืฅ CSS) ืœื ื ื˜ืขืŸ. ื‘ื“ื™ืงื” ื‘ืœื•ื’ ืžืจืื” ืืช ื”ืฉื’ื™ืื” ื”ื‘ืื”:
TypeError: Cannot read properties of null (reading 'toUTCString')
    at SendStream.setHeader (file:///node_modules/.deno/send@0.18.0/node_modules/send/index.js:874:31)
    at SendStream.send (file:///node_modules/.deno/send@0.18.0/node_modules/send/index.js:620:8)
    at onstat (file:///node_modules/.deno/send@0.18.0/node_modules/send/index.js:725:10)
    at Deno.stat.then.denoErrorToNodeError.syscall (ext:deno_node/_fs/_fs_stat.ts:85:32)
    at eventLoopTick (ext:core/01_core.js:153:7)
ืคื” ื›ื‘ืจ ื”ืชื—ืœืชื™ ืœืคื—ื“. ื–ื” ื ืจืื” ืฉ stat ืฉืœ ื“ื™ื ื• ืœื ืขื•ื‘ื“ ื‘ื“ื™ื•ืง ื›ืžื• stat ืฉืœ node.js ื•ืœื›ืŸ ืžืฉื”ื• ื ืฉื‘ืจ ื‘ืฉื™ื“ื•ืจ ื”ืงื•ื‘ืฅ. ื‘ืžืงื•ื ืœืจื™ื‘ ืื™ืชื ื”ืœื›ืชื™ ืœื›ืชื•ื‘ ืžื™ื“ืœื•ื•ืจ ืžืฉืœื™ ืฉื™ืฉืœื— ืืช ื”ืงื•ื‘ืฅ ื‘ืœื™ stat. ื”ื•ื ื ืจืื” ื›ื›ื”:
app.use(async (req: Request, res: Response, next: NextFunction) => {
  try {
    const userInput = path.join('./public', req.path);
    const safeInput = path.normalize(userInput).replace(/^(\.\.(\/|\\|$))+/, '');
    const mime = contentType(path.extname(safeInput))
    console.log(\File: ${safeInput}. content type = ${mime}\);
    const content = await Deno.readFile(safeInput);
    res.set('Content-Type', mime);
    res.send(buffer.Buffer.from(content));  
  } catch (err) {
    console.log(\file not found ${req.path}\);
    next();
  }
});
ื•ืืช ื”ืชื•ืฆืื” ืืคืฉืจ ืœืจืื•ืช ืื•ื ืœื™ื™ืŸ ืขืœ Deno Deploy ืขื ื” CSS ื‘ืงื™ืฉื•ืจ: https://ynonp-deno-deploy-files-yfge7qm6f97y.deno.dev/

ToCode
1 420
ื‘ื”ืขืชืงืช ืงื‘ืฆื™ื ืื ื™ ืžืขื“ื™ืฃ ืœื•ื•ืชืจ ืขืœ ื” Text Decoding ื›ื™ ื‘ืฆื•ืจื” ื›ื–ืืช ืื ื™ ืžืขืชื™ืง ืืช ื”ื‘ื™ื˜ื™ื ื›ืžื• ืฉื”ื ืžืงื•ื‘ืฅ ื”ืžืงื•ืจ ื‘ืœื™ ืงืฉืจ ืื ื”ื ืžื™ื™ืฆื’ื™ื ื˜ืงืกื˜ ืื• ืœื ืื• ืžื” ื”ืงื™ื“ื•ื“ ืฉืœื”ื. ืœืžื™ื“ืข ื ื•ืกืฃ ืขืœ Streams ื•ื›ืœ ืžื” ืฉืืคืฉืจ ืœืขืฉื•ืช ืื™ืชื ื‘ Node.JS ืฉื•ื•ื” ืœื”ืขื™ืฃ ืžื‘ื˜ ื‘ืชื™ืขื•ื“: https://nodejs.org/api/webstreams.html ื›ืœ ื”ื“ื•ื’ืžืื•ืช ื‘ืคื•ืกื˜ ื”ื–ื” ื ื‘ื“ืงื• ื•ืขื•ื‘ื“ื•ืช ื‘ Node ื’ื™ืจืกื” 21.7 ืื—ืจื™ ืฉืฉืžืจืชื™ ืืช ื”ืงื•ื“ ื‘ืงื•ื‘ืฅ ื‘ืฉื a.mjs.

ToCode
1 420
ืงืจื™ืื” ื•ื›ืชื™ื‘ื” ืœืงื‘ืฆื™ื ืขื Streams ื‘ Node.JS ืขื‘ื•ื“ื” ืขื ืžื™ื“ืข ื‘ื™ื ืืจื™ ื“ืจืš Streams ื”ื™ื ื—ืœืง ืžื”ืชืงืŸ ืฉืœ JavaScript ื•ื ืชืžื›ืช ื‘ืฆื•ืจื” ืžืœืื” ื’ื ื‘ Node ื•ื’ื ื‘ Deno, ื•ืืœื” ื—ื“ืฉื•ืช ื˜ื•ื‘ื•ืช ื›ื™ ืชืžื™ื“ ื›ื™ืฃ ืฉื“ื‘ืจื™ื ืขื•ื‘ื“ื™ื ื‘ื›ืœ ืžืงื•ื. ื‘ื•ืื• ื ื“ื‘ืจ ืขืœ ื”ืงื•ื“. ืงืฆืช ืชื™ืื•ืจื™ื” ื‘ืจืžื” ื”ื‘ืกื™ืกื™ืช Streams ื‘ืื™ื ื‘ืฉื ื™ ื˜ืขืžื™ื ื™ืฉ ืืช ื” ReadableStream ืฉืื™ืชื• ืื ื—ื ื• ืงื•ืจืื™ื ืžื™ื“ืข ื•ืืช ื” WritableStream ืฉืื™ืชื• ื›ื•ืชื‘ื™ื ืžื™ื“ืข. ื‘ node.js ื”ืžื•ื“ื•ืœ stream ื™ื•ื“ืข ืœื”ืคื•ืš Streams ืฉืœ Node ืœ Streams ืฉืœ Web API. ื”ื“ื‘ืจื™ื ื”ื˜ื•ื‘ื™ื ืฉืืคืฉืจ ืœืขืฉื•ืช ืขื Streams ื”ื: 1. ืืคืฉืจ ืœื—ื‘ืจ ืื•ืชื ืื—ื“ ืœืฉื ื™. ืื ืžื—ื‘ืจื™ื Stream ืœืงืจื™ืื” ืœ Stream ืฉืœ ื›ืชื™ื‘ื” ืื– ืžืงื‘ืœื™ื ื”ืขืชืงื”. 2. ืืคืฉืจ ืœื”ื•ืกื™ืฃ ื˜ืจื ืกืคื•ืจืžืฆื™ื•ืช ืขืœ Stream ื•ื›ื›ื” ืœืงื‘ืœ Stream ื—ื“ืฉ. ืœื“ื•ื’ืžื” ืื ืœื•ืงื—ื™ื Stream ื‘ื™ื ืืจื™ ืฉืœ ืžื™ื“ืข ืฉืžื’ื™ืข ืœืงื•ื‘ืฅ ื•ืžื•ืกื™ืคื™ื ื˜ืจื ืกืคื•ืจืžืฆื™ื” ืฉืœ ืคื™ืขื ื•ื— ื”ื‘ื™ื˜ื™ื ืœื˜ืงืกื˜ ืžืงื‘ืœื™ื Stream ืฉืœ ืžื—ืจื•ื–ื•ืช. ื“ื•ื’ืžืื•ืช? ื‘ืฉืžื—ื”. ืงืจื™ืืช ื‘ื™ื˜ื™ื ืžืงื•ื‘ืฅ ื•ื”ื“ืคืกืชื ื‘ Chunk-ื™ื ื ืชื—ื™ืœ ืขื ืงืจื™ืืช ืงื•ื‘ืฅ ื‘ื™ื ืืจื™ ืœืคื™ ื‘ืœื•ืงื™ื ื“ืจืš Stream ืœืงืจื™ืื”. ื”ืคื•ื ืงืฆื™ื” fs.createReadStream ืฉืœ Node ื™ื•ืฆืจืช Stream ืœืงืจื™ืื” ืฉืœ Node, ื•ื‘ืขื–ืจืช stream.toWeb ื ื”ืคื•ืš ืื•ืชื• ืœ Stream ืกื˜ื ื“ืจื˜ื™. ื”ืงืจื™ืื” ืžื–ืจื ืœืงืจื™ืื” ื”ื™ื ืคืฉื•ื˜ ืื™ื˜ืจืฆื™ื” ืืกื™ื ื›ืจื•ื ื™ืช ื•ืœื›ืŸ ื ื•ื›ืœ ืœื›ืชื•ื‘:
import fs from 'node:fs';
import stream from 'node:stream';

const sin = stream.Readable.toWeb(fs.createReadStream('text.md'));
for await (const chunk of sin) {
  console.log(chunk);
}
ื•ื”ืคืœื˜:
Uint8Array(15143) [
   35,  32, 215, 156, 215, 162, 215, 169, 215, 149, 215, 170,
   32, 215, 144, 215, 170,  32, 215, 148, 215, 144, 215, 153,
  215, 158, 215, 153, 215, 153, 215, 156,  32, 215, 160, 215,
  164, 215, 156, 215, 144,  32, 215, 169, 215, 149, 215, 145,
   10, 215, 144, 215, 153, 215, 158, 215, 153, 215, 153, 215,
  156,  32, 215, 148, 215, 149, 215, 144,  32, 215, 155, 215,
  160, 215, 168, 215, 144, 215, 148,  32, 215, 144, 215, 151,
  215, 147,  32, 215, 148, 215, 158, 215, 167, 215, 149, 215,
  158, 215, 149, 215,
  ... 15043 more items
]
ืงืจื™ืืช ื˜ืงืกื˜ ืžืงื•ื‘ืฅ ื‘ืืžืฆืขื•ืช ื˜ืจื ืกืคื•ืจืžืฆื™ื” ื”ืงืจื™ืื” ืžืงื•ื‘ืฅ ื“ืจืš Stream ืขื‘ื“ื” ื•ืื™ืคืฉืจื” ืœืงืจื•ื ืืช ื”ืงื•ื‘ืฅ ื‘ื‘ืœื•ืงื™ื. ืœืงื‘ืฆื™ื ื‘ื™ื ืืจื™ื™ื ืืคืฉืจ ืœืขืฆื•ืจ ื›ืืŸ, ืื‘ืœ ืื ื”ื‘ื™ื˜ื™ื ืฉื‘ืงื•ื‘ืฅ ืžื›ื™ืœื™ื ื˜ืงืกื˜ ืื•ืœื™ ื ืจืฆื” ื’ื ืœืคืขื ื— ืื•ืชื• ื•ืœืจืื•ืช ืžื—ืจื•ื–ื•ืช ืขืœ ื”ืžืกืš. ื‘ืฉื‘ื™ืœ ื–ื” ื‘ื“ื™ื•ืง ื”ืชืงืŸ ืฉืœ Web Streams ื”ื•ืกื™ืฃ ืžื—ืœืงื” ื‘ืฉื TextDecoder. ื”ืฉื™ืžื•ืฉ ื‘ื” ืžืื•ื“ ืคืฉื•ื˜, ืื ื—ื ื• ื™ื•ืฆืจื™ื ืžืคืขื ื—, ื‘ื‘ื ืื™ ืืคืฉืจ ืœื”ืขื‘ื™ืจ ืœื• ืืช ื”ืงื™ื“ื•ื“ (ื‘ืจื™ืจืช ื”ืžื—ื“ืœ ื”ื™ื utf8), ื•ืื– ืžืคืขื™ืœื™ื ืืช ื”ืคื•ื ืงืฆื™ื” decode ืขื ื‘ืœื•ืง ืฉืœ ื‘ื™ื˜ื™ื ื‘ืฉื‘ื™ืœ ืœืคืขื ื— ืื•ืชื ืœื˜ืงืกื˜. ื•ืืœ ืชื“ืื’ื• ื”ื•ื ื™ื•ื“ืข ืœื˜ืคืœ ื›ืžื• ืฉืฆืจื™ืš ื‘ Multi Byte Strings ืืคื™ืœื• ื‘ื™ืŸ Chunk-ื™ื. ื‘ืฉื‘ื™ืœ ืฉื”ืชื•ื›ื ื™ืช ื”ืงื•ื“ืžืช ืชื“ืคื™ืก ื˜ืงืกื˜ื™ื ื‘ืžืงื•ื ื‘ื™ื˜ื™ื ืฆืจื™ืš ืจืง ืœื”ืขื‘ื™ืจ ืืช ื”ื‘ื™ื˜ื™ื ืฉืœื ื• ื“ืจืš ื›ื–ื” Decoder. ืœืžื–ืœื ื• ื” API ืฉืœ Streams ืžืกืคืง ื“ืจืš ืงืœื” ืœืขืฉื•ืช ืืช ื–ื” ื‘ื“ืžื•ืช ืžื—ืœืงื” ื‘ืฉื TextDecoderStream:
import fs from 'node:fs';
import stream from 'node:stream';

const sin = stream
  .Readable
  .toWeb(fs.createReadStream('/etc/shells'))
  .pipeThrough(new TextDecoderStream());

for await (const chunk of sin) {
  console.log(chunk);
}
ื›ืชื™ื‘ื” ืœืงื•ื‘ืฅ ืขื WritableStream ื‘ื›ืชื™ื‘ื” ืœืงื•ื‘ืฅ ื™ืฉ ื›ืžื” ื ืงื•ื“ื•ืช ืฉืฆืจื™ืš ืœื”ื›ื™ืจ ืื‘ืœ ื‘ืขื™ืงืจื•ืŸ ืื™ืŸ ื”ืคืชืขื•ืช ื’ื“ื•ืœื•ืช: 1. ืคื•ืชื—ื™ื WritableStream ื•ืžืคืขื™ืœื™ื ืืช ื”ืคื•ื ืงืฆื™ื” getWriter ืฉืœื•. 2. ืžืคืขื™ืœื™ื ืืช ืคื•ื ืงืฆื™ื™ืช write ืฉืœ ื” Writer ืฉืงื™ื‘ืœื ื• ื‘ืฉื‘ื™ืœ ืœื›ืชื•ื‘. 3. ื‘ืกื•ืฃ ืงื•ืจืื™ื ืœ Close ืฉืกื•ื’ืจ ืืช ื” Writer ื•ืืช ื” Stream. ื”ืงื•ื“ ื”ื‘ื ื›ื•ืชื‘ ื‘ื™ื˜ื™ื ืœืงื•ื‘ืฅ:
import fs from 'node:fs';
import stream from 'node:stream';

const sout = stream
  .Writable
  .toWeb(fs.createWriteStream('demo.bin'));

const writer = sout.getWriter();
const data = new Uint8Array(10).fill(0).map((_, i) => i);
await writer.write(data);
writer.close();
ื”ืขืชืงื” ืขื Pipe ื”ื˜ืจื™ืง ื”ืื—ืจื•ืŸ ืœื”ื™ื•ื ืขื Streams ื”ื•ื ื”ืขืชืงืช ืงื‘ืฆื™ื, ื•ื”ืžืฉื—ืง ื”ื•ื ื›ื–ื” - ื‘ืžืงื•ื ืœื”ืจื™ืฅ ืœื•ืœืื” ืฉืชืงืจื ื‘ืฆื•ืจื” ืžืคื•ืจืฉืช ื‘ืœื•ืงื™ื ื•ืชื›ืชื•ื‘ ืื•ืชื ืœื–ืจื ื”ืฉื ื™ ืืคืฉืจ ืคืฉื•ื˜ ืœื—ื‘ืจ ื–ืจื ืœืงืจื™ืื” ืœื–ืจื ืœื›ืชื™ื‘ื” ื•ื”ื›ืœ ืžืกืชื“ืจ. ื–ื” ื ืจืื” ื›ื›ื”:
import fs from 'node:fs';
import stream from 'node:stream';

const sin = stream
  .Readable
  .toWeb(fs.createReadStream('/etc/shells'));

const sout = stream
  .Writable
  .toWeb(fs.createWriteStream('shells.txt'));

sin.pipeTo(sout);

ToCode
1 420
ื›ื•ื•ื ื•ืช ื˜ื•ื‘ื•ืช, ื‘ื™ืฆื•ืขื™ื ื’ืจื•ืขื™ื ื‘ื‘ื•ื˜ ืื•ืฆืจ ื”ืžื™ืœื™ื ืฉืื ื™ ื›ื•ืชื‘ ืฉื›ื‘ืช ื”ืžื™ื“ืข ื™ื—ืกื™ืช ืคืฉื•ื˜ื” - ื”ื‘ื•ื˜ ืฉื•ืžืจ ื›ืจื˜ื™ืกื™ื•ืช ืžื™ืœื™ื ื›ืฉื‘ื›ืœ ื›ืจื˜ื™ืกื™ื” ื™ืฉ ืžื™ืœื” ืžืงื“ื™ืžื” ื•ืžื™ืœื” ืžืื—ื•ืจื” ื•ืื– ื”ื•ื ื™ื›ื•ืœ ืœืฉืื•ืœ ื—ื™ื“ื•ื ื™ื ืขืœ ื”ืžื™ืœื™ื ื”ืืœื”. ื‘ืฉื‘ื™ืœ ืœื ืœื™ืฆื•ืจ ื›ืคื™ืœื•ื™ื•ืช ื›ืœ ืคืขื ืฉืžื•ืกื™ืคื™ื ืชืจื’ื•ื ื—ื“ืฉ ื”ื‘ื•ื˜ ื‘ื•ื“ืง ื‘ื‘ืกื™ืก ื”ื ืชื•ื ื™ื ืื ื™ืฉ ื›ื‘ืจ ื›ืจื˜ื™ืกื™ื” ืขื ื”ืžื™ืœื™ื ื”ืืœื”, ื•ื™ื•ืฆืจ ืจืง ืื ืžื“ื•ื‘ืจ ื‘ื—ื™ื‘ื•ืจ ื—ื“ืฉ. ื–ืืช ื”ื™ืชื” ื”ืฉืื™ืœืชื” ืฉืœื•ืงื—ืช ืžื™ืœื™ื ื•ื™ื•ืฆืจืช ื›ืจื˜ื™ืกื™ื” ืื• ืžื—ื–ื™ืจื” ืืช ื”ื›ืจื˜ื™ืกื™ื” ื”ืงื™ื™ืžืช:
g
  .V()
  .has(VertexLabels.Card, Properties.IndexedLabel, VertexLabels.Card)
  .where(__.and(
    __.out(EdgeLabels.Front).hasId(front.entityId),
    __.out(EdgeLabels.Back).hasId(back.entityId)))
  .fold()
  .coalesce(
    __.unfold(),
    __.addV(VertexLabels.Card)
      .as("card")
      .addTimestampsProperties()
      .property(Properties.IndexedLabel, VertexLabels.Card)
      .asCard()
      .addE(EdgeLabels.Front).to(__.V(front.entityId))
      .select("card")
      .addE(EdgeLabels.Back).to(__.V(back.entityId))
      .select("card"))
  .id()
  .next()
ื‘ืชืจื’ื•ื ืœืขื‘ืจื™ืช - ืงื— ืืช ื›ืœ ื”ื›ืจื˜ื™ืกื™ื, ื—ืคืฉ ืื—ื“ ืฉืžืชืื™ื ืœืžื™ืœื™ื ืฉืื ื™ ืจื•ืฆื” ืœื”ื•ืกื™ืฃ, ืื ืงื™ื™ื ื ืฉืชืžืฉ ื‘ื• ืื—ืจืช ื”ื•ืกืฃ ื›ืจื˜ื™ืก ื—ื“ืฉ ื•ื‘ื—ืจ ืื•ืชื•. ืงืœ ืœืงืจื•ื ืืช ื–ื” ื•ืงืœ ืœื”ื‘ื™ืŸ ืœืžื” ื–ื” ืฉื‘ื•ืจ. ื‘ื’ืœืœ ืฉืื™ืŸ ืžื–ื”ื” ื™ื™ื—ื•ื“ื™ ืœื›ืจื˜ื™ืก, ืžื”ืจ ืžืื•ื“ ื™ืฉ ื™ื•ืชืจ ืžื“ื™ ื›ืจื˜ื™ืกื™ื ื‘ื’ืจืฃ ื•ื—ื™ืคื•ืฉ ื›ืจื˜ื™ืก ืœืคื™ ื”ื—ื™ื‘ื•ืจื™ื ื”ื™ื•ืฆืื™ื ืžืžื ื• ืžืชื—ื™ืœ ืœืงื—ืช ื™ื•ืชืจ ืžื“ื™ ื–ืžืŸ. ื›ืžื” ื–ืžืŸ? ื›ืฉืื ื™ ืชืคืกืชื™ ืืช ื”ืฉืื™ืœืชื” ืืชืžื•ืœ ื›ื‘ืจ ืœืงื— ืœื” 3-4 ืฉื ื™ื•ืช ืœืžื–ื’ ื›ืจื˜ื™ืก. ื•ื–ืืช ื“ื•ื’ืžื” ื˜ื•ื‘ื” ืœื“ืขืชื™ ืœื™ื™ืชืจื•ืŸ ืฉืœ ื’ืจืžืœื™ืŸ - ืงืœ ืœืจืื•ืช ืืช ื”ื‘ืขื™ื•ืช ื•ืงืœ ืœืชืงืŸ ืื•ืชืŸ. ื‘ื’ืจืžืœื™ืŸ ืื ื—ื ื• ืชืžื™ื“ ืจื•ืฆื™ื ืœื”ืชื—ื™ืœ ืฉืื™ืœืชื” ืžืฆื•ืžืช ืฉืžื•ืคื™ืข ื‘ืื™ื ื“ืงืก. ื‘ืžื•ื“ืœ ืฉืœื™ ื›ืจื˜ื™ืก ืœื ืžื›ื™ืจ ืฉื•ื ืžื™ื“ืข ืื‘ืœ ื”ื•ื ืžื—ื•ื‘ืจ ืœืžื™ืœื™ื ื•ื”ืฆืžืชื™ื ืฉืœ ื”ืžื™ืœื™ื ื›ืŸ ืžื›ื™ืœื™ื ืืช ื”ื˜ืงืกื˜ ืฉืœ ื”ืžื™ืœื”, ืฉื–ื” ื›ื‘ืจ ืžื™ื“ืข ืฉืืคืฉืจ ืœืฉืžื•ืจ ื‘ืื™ื ื“ืงืก. ืœื›ืŸ ื”ืชื™ืงื•ืŸ ื”ื•ื ื‘ืกืš ื”ื›ืœ ืœืฉื ื•ืช ืืช ื ืงื•ื“ืช ื”ื›ื ื™ืกื” ืœืฉืื™ืœืชื”. ื‘ืžืงื•ื ืœื”ืชื—ื™ืœ ืขื ื›ืœ ื”ื›ืจื˜ื™ืกื™ื ื•ืœื—ืคืฉ ืืช ื–ื” ืฉืžืชื—ื‘ืจ ืœืžื™ืœื™ื ืฉื™ืฉ ืœื™, ืื ื™ ืžืชื—ื™ืœ ืขื ืื—ืช ื”ืžื™ืœื™ื ื•ื”ื•ืœืš ืœืคื™ ื”ืงืฉืชื•ืช ื›ื“ื™ ืœื”ื‘ื™ืŸ ืื ื”ื™ื ืžื—ื•ื‘ืจืช ืœื›ืจื˜ื™ืก ืฉืžืชืื™ื ืœืžื™ืœื” ื”ืฉื ื™ื”. ื–ืืช ื”ืฉืื™ืœืชื” ื”ืžืชื•ืงื ืช:
    val id = g
      .V(front.entityId)
      .coalesce(
        __.in(EdgeLabels.Front).where(__.out(EdgeLabels.Back).hasId(back.entityId)),
        __.addV(VertexLabels.Card)
          .as("card")
          .addTimestampsProperties()
          .property(Properties.IndexedLabel, VertexLabels.Card)
          .asCard()
          .addE(EdgeLabels.Front).to(__.V(front.entityId))
          .select("card")
          .addE(EdgeLabels.Back).to(__.V(back.entityId))
          .select("card")
      ).id()
      .next()
ื•ื–ืืช ืื’ื‘ ื”ืกื™ื‘ื” ืฉืื ื™ ืžืขื“ื™ืฃ ืืช ื’ืจืžืœื™ืŸ ืขืœ ืคื ื™ Cypher ื• Datalog. ื’ืจืžืœื™ืŸ ื ื•ืชืŸ ื”ื›ื™ ื”ืจื‘ื” ืฉืœื™ื˜ื” ื‘ืื™ืš ืžื‘ื•ืฆืขืช ื”ืฉืื™ืœืชื”, ื•ืžืืคืฉืจ ืžืื•ื“ ื‘ืงืœื•ืช ืœื”ืชืื™ื ืืช ืื•ืคืŸ ืกืจื™ืงืช ื”ื’ืจืฃ ืœืžื•ื“ืœ ื”ื ืชื•ื ื™ื ื”ืกืคืฆื™ืคื™ ืฉืœ ื”ืžืขืจื›ืช.

ToCode
1 420
ื›ืฉื”ืชืงืŸ ืขื•ื‘ื“ ืœืจืขืชืš ื‘ื’ื™ืจืกืื•ืช ื™ืฉื ื•ืช ืฉืœ ื”ืกืคืจื™ื” ื”ืกื˜ื ื“ืจื˜ื™ืช ืฉืœ ื“ื™ื ื• ื”ื™ื” ืžื•ื“ื•ืœ ื‘ืฉื read_lines ืฉืืคืฉืจ ืœื›ืชื•ื‘ ืงื•ื“ ื›ื–ื”:
import { readLines } from "https://deno.land/std@0.221.0/io/read_lines.ts";
import * as path from "https://deno.land/std@0.221.0/path/mod.ts";

const filename = path.join(Deno.cwd(), "std/io/README.md");
let fileReader = await Deno.open(filename);

for await (let line of readLines(fileReader)) {
  console.log(line);
}
ืžื” ืฉื—ืฉื•ื‘ ื–ื” ื”ืœื•ืœืื” ื‘ืกื•ืฃ ืฉืงื•ืจืืช ืงื•ื‘ืฅ ืฉื•ืจื” ืื—ืจ ืฉื•ืจื” ื•ืžืืคืฉืจืช ืœื˜ืคืœ ื‘ื›ืœ ืฉื•ืจื” ื‘ื ืคืจื“. ื”ืžื•ื“ื•ืœ ืžื’ื™ืข ื”ื™ื•ื ืขื ืื–ื”ืจืช Deprecation. ื‘ืฉื‘ื™ืœ ืชืื™ืžื•ืช ืœืชืงืŸ ืฉืœ Web Streams API ื”ื—ื‘ืจื™ื ื‘ื“ื™ื ื• ื”ื—ืœื™ื˜ื• ืœื•ื•ืชืจ ืขืœื™ื• ื•ืœื”ืžืœื™ืฅ ืœืขื‘ื•ื“ ืขื Web Streams, ืฉื›ืจื’ืข ืœื ื›ื•ืœืœ ืืช ื”ืคื•ื ืงืฆื™ื•ื ืืœื™ื•ืช ื”ื–ืืช. ื•ืขื›ืฉื™ื• ื”ืฉืืœื” - ื”ืื ืœืฉืชืฃ ืคืขื•ืœื” ืขื ื”ืงื™ื“ืžื” ื•ืœื›ืชื•ื‘ ืœื‘ื“ ืžื ื’ื ื•ืŸ ืฉื•ื‘ืจ ืฉื•ืจื•ืช, ืœื”ื™ืฉืืจ ืขื ื”ืžื ื’ื ื•ืŸ ื” Deprecated ืื• ื‘ื›ืœืœ ืœื”ืฉืชืžืฉ ื‘ืžื•ื“ื•ืœ readline ืฉืœ node, ืฉื’ื ื ื˜ืขืŸ ื‘ืงืœื•ืช ืžืชื•ื›ื ื™ืช ื“ื™ื ื•? ืื ื™ ืžื•ื“ื” ืฉืื™ืŸ ืœื™ ืชืฉื•ื‘ื”. ื”ื ื˜ื™ื” ืฉืœื™ ื”ื™ื ืœื”ื™ืฉืืจ ืขื readline ืฉืœ node ื•ื‘ืื•ืคืŸ ื›ืœืœื™ ืœื”ืฉืชืžืฉ ื‘ืกืคืจื™ื” ื”ืกื˜ื ื“ืจื˜ื™ืช ืฉืœ node ื’ื ื‘ืขื‘ื•ื“ื” ืขื ื“ื™ื ื•, ื‘ื’ืœืœ ืฉื”ืกืคืจื™ื” ื”ืกื˜ื ื“ืจื˜ื™ืช ืฉืœ ื“ื™ื ื• ืขื“ื™ื™ืŸ ืœื ื ืจืื™ืช ืžืกืคื™ืง ื™ืฆื™ื‘ื”. ื .ื‘. ื›ื›ื” ื–ื” ื ืจืื” ื›ืฉืงื•ืจืื™ื ืงื•ื‘ืฅ ืฉื•ืจื” ืื—ืจื™ ืฉื•ืจื” ืขื ื” Web Streams API:
const file = await Deno.open("a.js", { read: true });
const readableStream = file.readable.pipeThrough(new TextDecoderStream()).pipeThrough(new TransformStream({
  transform: (chunk, controller) => {
    const lines = chunk.split("\n");
    for (const line of lines) {
      if (line) {
        controller.enqueue(line);
      }
    }
  },
}));

for await (const line of readableStream) {
  console.log(\> ${line}\);
}
ื•ื–ืืช ื”ื’ื™ืจืกื” ืขื readline ืฉืœ node:
import readline from 'node:readline';
import fs from 'node:fs';

const myName = "a.js";

const rl = readline.createInterface({
  input: fs.createReadStream(myName),
})

let index = 0;
rl.on('line', (line) => {
  index += 1;
  console.log(\${String(index).padStart(2, '0')} ${line}\);
});

ืžื” ื“ืขืชื›ื? ืื™ื–ื” ื’ื™ืจืกื” ื”ื™ื™ืชื ื‘ื•ื—ืจื™ื? ื•ืœืžื”?

ToCode
1 420
ื ื• ื–ื” ืžืชื—ื™ืœ ืคืฉื•ื˜ ืขื ืœื•ืœืืช for, ื•ืื– ืžื’ื™ืขื” ืฉื•ืจืช ื”ืžื—ืฅ - ืื ื™ ืœื•ืงื— ื›ืœ ืฉื ืงื•ื‘ืฅ ื•ืžืขื‘ื™ืจ ืื•ืชื• ืœืคืงื•ื“ื” ืžื•ื‘ื ื™ืช ื‘ืฉืคื” ืฉื ืงืจืืช parse ืฉืžืคืขื ื—ืช ืืช ื”ืžื—ืจื•ื–ืช ืœืฉื ื™ ืžืฉืชื ื™ื (ื‘ืžืงืจื” ืฉืœื™ n ื• name, ืขื ืžืงืฃ ื‘ื™ื ื™ื”ื). ืื—ืจื™ ื–ื” ืžืชื—ื™ืœื™ื ืœืฉื—ืง ืขื ื”ืžื™ื“ืข, ื”ื•ืคื›ื™ื ืืช n ืœืžืกืคืจ, ืžืขืœื™ื ืื•ืชื• ื‘-1 ื•ืื– ืžื—ื‘ืจื™ื ืืช ื›ืœ ื”ืขืžื•ื“ื•ืช ืœืžื—ืจื•ื–ืช ืื—ืช ืื•ืชื” ืื ื™ ืฉื•ืžืจ ื‘ืžืฉืชื ื” newname. ืฉื•ืจื” ืื—ืจื•ื ื” ืฉืœ ื”ืœื•ืœืื” ื”ื™ื ื” mv ืฉืžืฉื ื” ืืช ืฉื ื”ืงื•ื‘ืฅ. ืฉื›ืคื•ืœ ืกืงืจื™ืคื˜ ืœืขืฆืžื• ืขื“ ืœืคื” ื”ื™ื™ืชื™ ื‘ื˜ื•ื— ืฉื”ื’ืขืชื™ ืœ Shell ืฉื™ื•ื“ืข ืœืขืฉื•ืช ื”ื›ืœ ืื‘ืœ ืื– ื”ื’ื™ืขื” ื”ืžืฉื™ืžื” ื”ืฉืœื™ืฉื™ืช ืฉื nushell ืงืฆืช ืื›ื–ื‘ ืื•ืชื™. ื”ืžื˜ืจื” ืฉืœื ื• ื”ื™ื ืœื›ืชื•ื‘ ืกืงืจื™ืคื˜ ืฉืžืงื‘ืœ ื‘ืฉื•ืจืช ื”ืคืงื•ื“ื” ืžืกืคืจ ืฉืžื•ืช ืฉืœ ืงื‘ืฆื™ื ื•ืžืขืชื™ืง ืืช ืขืฆืžื• ืœืงื‘ืฆื™ื ืฉืฉืžื•ืชื™ื”ื ืขื‘ืจื• ื›ืคืจืžื˜ืจื™ื. ื”ื‘ืขื™ื”? ืœ nushell ืื™ืŸ ืžืงื‘ื™ืœื” ืœืžืฉืชื ื” $0 ืฉืœ Shell-ื™ื ืงืœืืกื™ื™ื ื•ืœื›ืŸ ืื ื™ ืฆืจื™ืš ืœื”ืกืชืžืš ืขืœ ื–ื” ืฉืื ื™ ื™ื•ื“ืข ืžื” ืฉื ื”ืงื•ื‘ืฅ. ื‘ื”ื ื—ื” ืฉืฉื ื”ืงื•ื‘ืฅ ื”ื•ื clone.nu ื”ืงื•ื“ ื”ื‘ื ืขื•ื‘ื“:
def main [...destinations] {
    let sourceFile = $env.FILE_PWD + "/clone.nu"
    for output in $destinations {
        cp $sourceFile $output
    }
}
ืกืš ื”ื›ืœ nushell ื ืจืื” ื›ืžื• ืคืจื•ื™ืงื˜ ืžื‘ื˜ื™ื— - ื”ื•ื ืขื•ื‘ื“ ืžื”ืจ ื•ืขื‘ื•ื“ื” ืขื ืžื™ื“ืข ื‘ืžืงื•ื ืขื ื˜ืงืกื˜ ื™ื›ื•ืœื” ืœื—ืกื•ืš ื˜ืขื•ื™ื•ืช ื‘ืชื•ื›ื ื™ื•ืช ืžื•ืจื›ื‘ื•ืช.

ToCode
1 420
ืฉืœื•ืฉื” ืกืงืจื™ืคื˜ื™ื ืจืืฉื•ื ื™ื ื‘ nushell ื›ื“ื™ ืœืœืžื•ื“ ืื™ืš ื–ื” ืขื•ื‘ื“ ื ื•-ืฉืœ ื”ื•ื ืกื•ื’ ื—ื“ืฉ ืฉืœ Shell, ื”ื•ื ื›ืชื•ื‘ ื‘ rust ื•ืžื‘ื™ื ืืช ื”ื’ื™ืฉื” ืฉืœ Powershell - ืœืคื™ื” ื›ืœ ื“ื‘ืจ ื”ื•ื data - ื’ื ืœื™ื•ื ื™ืงืก. ื‘ื•ืื• ื ื›ืชื•ื‘ ืฉืœื•ืฉื” ืกืงืจื™ืคื˜ื™ื ืจืืฉื•ื ื™ื ื‘ nushell ื›ื“ื™ ืœืœืžื•ื“ ืื™ืš ื–ื” ืขื•ื‘ื“ ื•ืœื—ืฉื•ื‘ ืื ื”ื•ื ืžืชืื™ื. ื”ืฆื’ืช ื˜ืงืกื˜ ืขืœ ืขืจืš ืžื•ื™ืงื™ืคื“ื™ื” ืืช nushell ืืคืฉืจ ืœื”ืชืงื™ืŸ ืœืคื™ ื”ื”ื•ืจืื•ืช ื‘ืืชืจ ืฉืœื”ื: https://www.nushell.sh/ ื”ื›ื™ ืงืœ ื‘ืืžืฆืขื•ืช ื”ืคืขืœืช:
brew install nushell
ืื—ืจื™ ื”ื”ืชืงื ื” ืžืคืขื™ืœื™ื nu ื›ื“ื™ ืœื”ื™ื›ื ืก ืœ Shell ื•ืžืกืคื™ืง ืœื”ืคืขื™ืœ ls ื›ื“ื™ ืœื”ื‘ื™ืŸ ืฉืื ื—ื ื• ื›ื‘ืจ ืœื ื‘ืงื ื–ืก. ื–ื” ื”ืคืœื˜:
ls                                                                                                                                                  27/03/24 18:00:15
โ•ญโ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚ # โ”‚   name    โ”‚ type โ”‚ size  โ”‚    modified    โ”‚
โ”œโ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ 0 โ”‚ 02-one    โ”‚ dir  โ”‚  64 B โ”‚ 2 hours ago    โ”‚
โ”‚ 1 โ”‚ 03-two    โ”‚ dir  โ”‚  64 B โ”‚ 2 hours ago    โ”‚
โ”‚ 2 โ”‚ 04-three  โ”‚ dir  โ”‚  64 B โ”‚ 2 hours ago    โ”‚
โ”‚ 3 โ”‚ carlos.py โ”‚ file โ”‚ 643 B โ”‚ 35 minutes ago โ”‚
โ”‚ 4 โ”‚ clone.nu  โ”‚ file โ”‚ 153 B โ”‚ 2 hours ago    โ”‚
โ”‚ 5 โ”‚ inc.nu    โ”‚ file โ”‚ 229 B โ”‚ an hour ago    โ”‚
โ•ฐโ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ
ืกื™ืžืŸ ื”ืงื• ืื ื›ื™ ืžืชืคืงื“ ืคื—ื•ืช ืื• ื™ื•ืชืจ ื›ืžื• ืฉืชืคืงื“ ื‘ Shell-ื™ื ื”ืงืœืืกื™ื™ื, ืื‘ืœ ืขื›ืฉื™ื• ื‘ื’ืœืœ ืฉื”ื›ืœ ื”ื•ื data ื”ืจื‘ื” ื™ื•ืชืจ ืงืœ ืœืขื‘ื•ื“ ืขื ื”ืžื™ื“ืข, ืœื“ื•ื’ืžื” ื‘ืฉื‘ื™ืœ ืœื”ื“ืคื™ืก ืจืง ืืช ืฉื ื”ืงื•ื‘ืฅ ื•ื”ื’ื•ื“ืœ ื ื›ืชื•ื‘:
ls | select type size

โ•ญโ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚ # โ”‚ type โ”‚ size  โ”‚
โ”œโ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ 0 โ”‚ dir  โ”‚  64 B โ”‚
โ”‚ 1 โ”‚ dir  โ”‚  64 B โ”‚
โ”‚ 2 โ”‚ dir  โ”‚  64 B โ”‚
โ”‚ 3 โ”‚ file โ”‚ 643 B โ”‚
โ”‚ 4 โ”‚ file โ”‚ 153 B โ”‚
โ”‚ 5 โ”‚ file โ”‚ 229 B โ”‚
โ•ฐโ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ
ืกืงืจื™ืคื˜ ื‘ nushell ืžืกืชื™ื™ื ื‘ืกื™ื•ืžืช nu. ืœื ื”ืฆืœื—ืชื™ ืœื”ืชืงื™ืŸ ืืช ื”ืชื•ืกืฃ ืœ vim ืฉืœื”ื ืื‘ืœ ื”ืชื•ืกืฃ ืœ VS Code ืขื‘ื“ ืœื™ ืžืฆื•ื™ืŸ. ื›ืžื• ืฉื”ื‘ื˜ื—ืชื™ ืฉืœื•ืฉื” ืกืงืจื™ืคื˜ื™ื ื‘ืฉื‘ื™ืœ ื”ืชื—ืœื”, ื”ืจืืฉื•ืŸ ืžืงื‘ืœ ืฉื ืฉืœ ืขืจืš ืžื•ื™ืงื™ืคื“ื™ื” ื•ืžืฆื™ื’ ืืช ื”ืชื•ื›ืŸ:
def main [value] {
    let url = $"https://en.wikipedia.org/w/api.php?action=query&prop=revisions&titles=($value)&rvslots=*&rvprop=content&formatversion=2&format=json"
    http get $url | get query.pages.0.revisions.0.slots.main.content
}
ืื™ืš ื–ื” ืขื•ื‘ื“? ืื– ืกื™ืคืจืชื™ ื›ื‘ืจ ืฉื›ืœ ื“ื‘ืจ ื–ื” Data, ื•ืœื›ืŸ ื’ื JSON ืฉืžื’ื™ืข ืžื”ืจืฉืช ื”ื•ื ืžื™ื“ืข ืฉืืคืฉืจ ืœืขื‘ื•ื“ ืื™ืชื•. ื”ืคืงื•ื“ื” http get ืคื•ื ื” ืœืจืฉืช ืœืžืฉื•ืš ืžื™ื“ืข ื•ื”ืคืงื•ื“ื” get ืžืฆื™ื’ื” ืจืง ื—ืœืง ืžื”ื˜ื‘ืœื”. ื‘ืžืงืจื” ืฉืœ ื•ื™ืงื™ืคื“ื™ื” ื” JSON ืžื›ื™ืœ ืื•ื‘ื™ืงื˜ื™ื ืžืงื•ื ื ื™ื ื•ื”ืžื—ืจื•ื–ืช:
query.pages.0.revisions.0.slots.main.content
ื”ื™ื ื”ื ืชื™ื‘ ื‘ืชื•ืš ื”ืื•ื‘ื™ืงื˜ ืฉืžื›ื™ืœ ืืช ื”ืขืจืš. ืื ืชืชืงื™ื ื• nushell ื•ืชืฉืžืจื• ืืช ื”ืกืงืจื™ืคื˜ ื‘ืงื•ื‘ืฅ ื‘ืฉื wiki.nu ืชื•ื›ืœื• ืœื”ืคืขื™ืœ ืื•ืชื• ื‘ืื•ืคืŸ ื”ื‘ื ื›ื“ื™ ืœื”ืฆื™ื’ ืขืจืš ืžืชื•ืš ื•ื™ืงื™ืคื“ื™ื”:
nu wiki.nu Pet_door
ืฉื™ื ื•ื™ ืฉื ืฉืœ ื›ืœ ื”ืงื‘ืฆื™ื ืฉืžืชื—ื™ืœื™ื ื‘ืžืกืคืจ ืืชื’ืจ ืฉื ื™ ืฉืจืฆื™ืชื™ ืœื ืกื•ืช ื‘ืฉื‘ื™ืœ ืœืœืžื•ื“ ืขืœ nushell ื”ื™ื” ืœืฉื ื•ืช ืืช ื”ืฉืžื•ืช ืฉืœ ื›ืœ ื”ืงื‘ืฆื™ื ืฉืฉืžื ืžืชื—ื™ืœ ื‘ืžืกืคืจ ื‘ืืžืฆืขื•ืช ื”ืขืœืืช ื”ืžืกืคืจ ื‘-1, ื›ืœื•ืžืจ ืื ื”ื™ื• ืœื™ ื‘ืชื™ืงื™ื” ื”ืงื‘ืฆื™ื:
ls [0-9]* 

27/03/24 18:07:58
โ•ญโ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚ # โ”‚   name   โ”‚ type โ”‚ size โ”‚  modified   โ”‚
โ”œโ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ 0 โ”‚ 02-one   โ”‚ dir  โ”‚ 64 B โ”‚ 2 hours ago โ”‚
โ”‚ 1 โ”‚ 03-two   โ”‚ dir  โ”‚ 64 B โ”‚ 2 hours ago โ”‚
โ”‚ 2 โ”‚ 04-three โ”‚ dir  โ”‚ 64 B โ”‚ 2 hours ago โ”‚
โ•ฐโ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ
ืื– ืื—ืจื™ ื”ืคืขืœืช ื”ืกืงืจื™ืคื˜ ืื ื™ ืžืงื‘ืœ:
ls [0-9]*

โ•ญโ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚ # โ”‚   name   โ”‚ type โ”‚ size โ”‚  modified   โ”‚
โ”œโ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ 0 โ”‚ 03-one   โ”‚ dir  โ”‚ 64 B โ”‚ 2 hours ago โ”‚
โ”‚ 1 โ”‚ 04-two   โ”‚ dir  โ”‚ 64 B โ”‚ 2 hours ago โ”‚
โ”‚ 2 โ”‚ 05-three โ”‚ dir  โ”‚ 64 B โ”‚ 2 hours ago โ”‚
โ•ฐโ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ
ื•ืงื•ื“ ื”ืกืงืจื™ืคื˜:
for f in (ls [0-9]* | get name) {
  let newname = $f | parse '{n}-{name}' | into int n | update n {|row| $row.n + 1 } | each {|row| [($row.n | fill -a right -c '0' -w 2), "-", $row.name] | str join } | get 0
  mv $f $newname
}

ToCode
1 420
ื’ืจืžืœื™ืŸ - ืกื™ื›ื•ื ื ื™ืกื•ื™ ื‘ื—ื•ื“ืฉื™ื ื”ืื—ืจื•ื ื™ื ื‘ื ื™ืชื™ ื‘ื•ื˜ ืœื˜ืœื’ืจื ืฉื”ืฉืชืžืฉ ื‘ื‘ืกื™ืก ื ืชื•ื ื™ื ื’ืจืคื™. ืžืื•ื“ ื ื”ื ื™ืชื™ ืžื”ืžื—ืงืจ ืขืœ ื‘ืกื™ืกื™ ื ืชื•ื ื™ื ื’ืจืคื™ื™ื ื•ืœืžื“ืชื™ ืขืœ ื”ืžื•ืŸ ืกื•ื’ื™ื ืฉืœื”ื ืื‘ืœ ื‘ืฉื•ืจื” ื”ืชื—ืชื•ื ื” ืœื ืขืคืชื™ ืขืœื™ื”ื ื•ื›ื ืจืื” ืฉื‘ืคืจื•ื™ืงื˜ ื”ื‘ื ื›ื‘ืจ ืื—ื–ื•ืจ ืœืคื•ืกื˜ื’ืจืก. ืื ื™ ืžืกื›ื ื›ืืŸ ืืช ื”ื ืงื•ื“ื•ืช ื”ืžืจื›ื–ื™ื•ืช ืžื”ื ื™ืกื•ื™. ื’ืจืžืœื™ืŸ, ื ื™ืื• ืื• ื“ื˜ื•ืžื™ืง ื‘ื“ืงืชื™ ืฉืœื•ืฉื” ื‘ืกื™ืกื™ ื ืชื•ื ื™ื ื’ืจืคื™ื™ื - neo4j, datomic ื• TinkerPop ืขื“ ืฉื‘ื—ืจืชื™ ื‘ื˜ื™ื ืงืจ, ื•ื’ื ื–ื” ื”ื™ื” ื‘ืฉื™ื˜ืช ื”ืืœื™ืžื™ื ืฆื™ื”. ืœืฉืคืช ื”ืฉืื™ืœืชื•ืช ืฉืœ ื“ื˜ื•ืžื™ืง ืœื ื”ืชื—ื‘ืจืชื™. ื ื™ืื• ื”ื™ื” ืžืกื—ืจื™ ืžื“ื™ ื•ื›ื›ื” ื ืฉืืจ ื˜ื™ื ืงืจืคื•ืค ืฉื”ื•ื ื‘ื›ืœืœ Spec ืœืฉืคืช ืฉืื™ืœืชื•ืช ืฉื ืงืจืืช ื’ืจืžืœื™ืŸ. ืืช ื’ืจืžืœื™ืŸ ืœื•ืงื— ื–ืžืŸ ืœืœืžื•ื“ ืื‘ืœ ื‘ืกื•ืคื• ืฉืœ ื“ื‘ืจ ื”ื™ื ืžืขื•ืœื”. ื›ืชื‘ืชื™ ืขืœื™ื” ื›ืืŸ: https://www.tocode.co.il/blog/2023-10-gremlin-first-steps ื•ื›ืืŸ: https://www.tocode.co.il/blog/2023-10-dsl-gremlin-queries ืื‘ืœ ื”ื‘ืขื™ื” ื‘ Spec ื–ื” ืฉืฆืจื™ืš ื‘ืกื•ืฃ ืœื”ืจื™ืฅ ืืช ื–ื” ืžื•ืœ ื‘ืกื™ืก ื ืชื•ื ื™ื ืžืกื•ื™ื. ื™ืฉ ื”ืžื•ืŸ ื‘ืกื™ืกื™ ื ืชื•ื ื™ื ืฉืžืจื™ืฆื™ื ื’ืจืžืœื™ืŸ ื•ื”ื ืžืื•ื“ ืฉื•ื ื™ื ื‘ื™ื ื™ื”ื, ื•ื’ื ื”ืื•ืคืŸ ื‘ื• ื”ื ืžืจื™ืฆื™ื ื’ืจืžืœื™ืŸ ืœื ืชืžื™ื“ ื–ื”ื”. ื–ื” ืื•ืžืจ ืฉื™ื›ื•ืœ ืœื”ื™ื•ืช ืฉืฉืื™ืœืชื•ืช ื™ืขื‘ื“ื• ืื• ื™ืขื‘ื“ื• ื‘ืฆื•ืจื” ื™ื—ืกื™ืช ืžื”ื™ืจื” ืขืœ ื‘ืกื™ืก ื ืชื•ื ื™ื ืื—ื“ ืื‘ืœ ืœื ื™ืขื‘ื“ื• ืขืœ ื‘ืกื™ืก ื ืชื•ื ื™ื ืื—ืจ. ืขื‘ื•ืจ ื”ื‘ื•ื˜ ืฉืœื™ ื‘ื—ืจืชื™ ื‘ืกื•ืฃ ื‘ JanusGraph ืฉื ืจืื” ืžืžืฉ ื˜ื•ื‘ ื‘ื‘ื“ื™ืงื•ืช ืžืงื•ืžื™ื•ืช ื•ื™ื›ื•ืœ ืœืขื‘ื•ื“ ื’ื In Memory ืœืžืฆื‘ ื‘ื“ื™ืงื•ืช, ื’ื ืžื•ืœ ืžืขืจื›ืช ืงื‘ืฆื™ื ื•ื’ื ืžื•ืœ ื‘ืกื™ืก ื ืชื•ื ื™ื ืžื‘ื•ื–ืจ ื›ืžื• ืงืกื ื“ืจื”. ื‘ืขื™ื” 1 - ืชื™ืขื•ื“ ื”ืชื™ืขื•ื“ ื‘ืืชืจ ืฉืœ ืืคืืฆ'ื™ ืžืื•ื“ ืžืคื•ืจื˜, ืื‘ืœ ืขื“ื™ื™ืŸ ืื™ืŸ ื”ืžื•ืŸ ืชื™ืขื•ื“ ื‘ืจืฉืช ืžื—ื•ืฅ ืœืืชืจ ื”ืจืฉืžื™, ื“ื™ื•ื ื™ื ื‘ืคื•ืจื•ืžื™ื ืžื™ื•ืฉื ื™ื ื•ืœื›ืŸ ื›ืœื™ AI ืœื ื™ื•ื“ืขื™ื ืœืขื–ื•ืจ ื‘ื›ืชื™ื‘ืช ืฉืื™ืœืชื•ืช. ื”ืชื•ืฆืื” ื”ื™ื ืขืงื•ืžืช ืœื™ืžื•ื“ ื™ื•ืชืจ ืงืฉื” ื•ืขืจื‘ื•ื‘ ื‘ืงื•ื“ ื‘ื™ืŸ ืฉืื™ืœืชื•ืช ืฉื›ืชื‘ืชื™ ื›ืฉืžืžืฉ ืœื ื™ื“ืขืชื™ ื’ืจืžืœื™ืŸ ืœืฉืื™ืœืชื•ืช ื™ื•ืชืจ ืจืฆื™ื ื™ื•ืช ืฉื›ืชื‘ืชื™ ื›ืฉื›ื‘ืจ ื”ื‘ื ืชื™ ืื™ืš ื–ื” ืขื•ื‘ื“. ื’ื ื‘ืจืžืช ื”ืชืคืขื•ืœ ืžืื•ื“ ืงืฉื” ืœืžืฆื•ื ืžื™ื“ืข ืขืœ JanusGraph ืžื—ื•ืฅ ืœืชื™ืขื•ื“ ื”ืจืฉืžื™, ื•ื”ืจื‘ื” ืคืขืžื™ื ืืชื” ื ืชืงืข ืขื ื‘ืขื™ื•ืช ื•ืฆืจื™ืš ืœื—ืคื•ืจ ื‘ Issues ื‘ื’ื™ื˜ื”ืื‘ ื•ื‘ื’ื•ื’ืœ ืงื‘ื•ืฆื•ืช ื‘ืฉื‘ื™ืœ ืœืžืฆื•ื ื›ื™ื•ื•ื ื™ื. ื‘ืขื™ื” 2 - ื–ื™ื›ืจื•ืŸ ื”ื“ื‘ืจ ื”ืฉื ื™ ืฉืœื ืกื™ืคืจื• ืœื™ ืขืœ JanusGraph ื–ื” ืฉื”ื•ื ื–ื•ืœืœ ื–ื™ื›ืจื•ืŸ. ื™ืฉ ืฉืžื•ืขื” ืฉื–ื” ื‘ื’ืœืœ ืฉื”ื•ื ื›ืชื•ื‘ ื‘ Java, ื•ื‘ืžืงื•ืžื•ืช ืื—ืจื™ื ืื•ืžืจื™ื ืฉืืคืฉืจ ืœืฆืžืฆื ืืช ืฆืจื™ื›ืช ื”ื–ื™ื›ืจื•ืŸ. ืื ื™ ืœื ื™ื•ื“ืข. ื”ืชื•ืฆืื” ื‘ืคื•ืขืœ ื”ื™ืชื” ืฆืจื™ื›ืช ื–ื™ื›ืจื•ืŸ ืžืื•ื“ ื’ื‘ื•ื”ื” ืขื‘ื•ืจ Cache-ื™ื ื’ื ื›ืฉื‘ืกื™ืก ื”ื ืชื•ื ื™ื ืœื ื”ื™ื” ื’ื“ื•ืœ, ื‘ื˜ื— ื‘ื”ืฉื•ื•ืื” ืœื‘ืกื™ืกื™ ื ืชื•ื ื™ื ื˜ื‘ืœืื™ื™ื (8 ื’'ื™ื’ื” ื–ื™ื›ืจื•ืŸ ื‘ืฉื‘ื™ืœ ื‘ืกื™ืก ื ืชื•ื ื™ื ืœืžืฉื—ืงื™ื). ื‘ืขื™ื” 3 - ืื™ื ื“ืงืกื™ื ื”ื ืงืจื™ื˜ื™ื™ื ืชื›ื•ื ื” ืฉืœื™ืฉื™ืช ืฉืœ JanusGraph ืฉื’ื™ืœื™ืชื™ ืชื•ืš ื›ื“ื™ ืชื ื•ืขื” (ื˜ื•ื‘ ื–ื” ื”ื›ื™ืฃ ื‘ื ื™ืกื•ื™ื™ื ื›ืืœื”) ื”ื™ื ืฉืืคืฉืจ ืœื’ืฉืช ืœื ืชื•ื ื™ื ืจืง ื“ืจืš ืื™ื ื“ืงืก. ื˜ื•ื‘ ื–ื” ืœื ืžื“ื•ื™ืง, ืชืžื™ื“ ืืคืฉืจ ืœื›ืชื•ื‘ ืฉืื™ืœืชืช ื’ืจืžืœื™ืŸ ืฉืœื ืชืขื‘ื•ืจ ื“ืจืš ืื™ื ื“ืงืก, ื–ื” ืคืฉื•ื˜ ืฉื”ืฉืื™ืœืชื” ืœื ืชืกืชื™ื™ื ืืฃ ืคืขื. ื ื›ื•ืŸ ื’ื ื‘ื‘ืกื™ืกื™ ื ืชื•ื ื™ื ื˜ื‘ืœืื™ื™ื ื”ื™ื™ืชื™ ืฆืจื™ืš ืœื”ื’ื“ื™ืจ ืื™ื ื“ืงืกื™ื ืื‘ืœ ื–ื” ืจืง ื›ืฉื”ื™ื” ื”ืžื•ืŸ ืžื™ื“ืข ืื• ื‘ืฉืื™ืœืชื•ืช ืžื•ืจื›ื‘ื•ืช. ื•ืžื” ืฉื™ื•ืชืจ ืžืจื’ื™ื– ืกืคืฆื™ืคื™ืช ื‘ JanusGraph ื–ื” ืฉื™ืฉ ืžืžืฉ ื˜ืงืก ืœื”ื’ื“ืจื” ื•ืฉื™ื ื•ื™ ืฉืœ ืื™ื ื“ืงืก ื•ื›ืœ ืื•ืช ืœื ื ื›ื•ื ื” ืฉื›ื•ืชื‘ื™ื ื™ื›ื•ืœื” ืœืงืœืงืœ ืืช ื”ื›ืœ ื•ืื– ืืชื” ื ืชืงืข ืขื ืื™ื–ื” ืื™ื ื“ืงืก ื‘ืžืฆื‘ ื—ืฆื™ ืืคื•ื™. ืกื™ื›ื•ื ื‘ืฉื•ืจื” ื”ืชื—ืชื•ื ื” ื‘ืกื™ืกื™ ื ืชื•ื ื™ื ื’ืจืคื™ื™ื ืขื“ื™ื™ืŸ ื ืจืื™ื ืœื™ ื›ืžื• ืจืขื™ื•ืŸ ื˜ื•ื‘ ืื‘ืœ ืœืคื—ื•ืช ื‘ื—ื•ื•ื™ื” ืฉืœื™ ื”ืžื™ืžื•ืฉ ื”ื™ื” ืžืื›ื–ื‘. ื ืคื˜ื•ืŸ ืฉืœ ืืžื–ื•ืŸ (ื’ื ืชื•ืžืš ื’ืจืžืœื™ืŸ) ื”ื™ื” ืžืื•ื“ ื™ืงืจ ื’ื ื›ืฉืฉืžืจืชื™ ืขืœื™ื• ืžืขื˜ ืžื™ื“ืข, ื•ื”ืจื‘ื” ืืคืฉืจื•ื™ื•ืช ืžืืœื” ืฉืžื•ืคื™ืขื•ืช ื‘ืืชืจ ืฉืœ ื’ืจืžืœื™ืŸ ืœื ืขื‘ื“ื• ืื• ื”ื™ื• ืžืกื—ืจื™ื•ืช ืžื“ื™. ืื—ืกื•ืŸ ืžืงื•ืžื™ ืฉืœ JanusGraph ื“ืจืฉ ื”ืจื‘ื” ื™ื•ืชืจ ื”ืชืขืกืงื•ืช ื‘ื”ื’ื“ืจื•ืช ื‘ื”ืฉื•ื•ืื” ืœืคื•ืกื˜ื’ืจืก ื•ืขืงื•ืžืช ื”ืœื™ืžื•ื“ ื‘ื›ืชื™ื‘ืช ื”ืฉืื™ืœืชื•ืช ื”ื™ืชื” ืœื ืžื‘ื•ื˜ืœืช. ื™ืฉ ื’ื ืคื—ื•ืช ื›ืœื™ื ื’ืจืคื™ื™ื ื‘ื”ืฉื•ื•ืื” ืœืขื‘ื•ื“ื” ืขื ื‘ืกื™ืกื™ ื ืชื•ื ื™ื ื˜ื‘ืœืื™ื™ื. ืื ื™ ื›ื ืจืื” ืœื ืื‘ื—ืจ ื‘ื‘ืกื™ืก ื ืชื•ื ื™ื ื’ืจืคื™ ืœืคืจื•ื™ืงื˜ ื”ื‘ื ืฉืœื™, ืžื” ื“ืขืชื›ื? ื™ืฆื ืœื›ื ืœืขื‘ื•ื“ ืขื ื‘ืกื™ืกื™ ื ืชื•ื ื™ื ื’ืจืคื™ื™ื? ืื™ืš ื”ื™ื• ื”ื—ื•ื•ื™ื•ืช ืฉืœื›ื? ืืคืฉืจ ืœืฉืชืฃ ื‘ื˜ืœื’ืจื ืื• ื‘ืชื’ื•ื‘ื•ืช ื›ืืŸ.