ืฉืึทืคึฟืŸ ืึท ืกื˜ืึทื˜ืขืคื•ืœ ืกืงื™ืœื– ืคึฟืึทืจ ืึทืœื™ืก ื ื™ืฆืŸ ืกืขืจื•ื•ืขืจืœืขืกืก ืคืึทื ื’ืงืฉืึทื ื– ืคื•ืŸ Yandex.Cloud ืื•ืŸ Python

ืœืืžื™ืจ ืื ื”ื™ื™ื‘ืŸ ืžื™ื˜ ื“ื™ ื ื™ื™ืขืก. ื ืขื›ื˜ืŸ Yandex.Cloud ืžื•ื“ื™ืข ื“ื™ ืงืึทื˜ืขืจ ืคื•ืŸ ืึท ืกืขืจื•ื•ืขืจืœืขืกืก ืงืึทืžืคึผื™ื•ื˜ื™ื ื’ ื“ื™ื ืกื˜ ื™ืึทื ื“ืขืงืก ืงืœืึธื•ื“ ืคืึทื ื’ืงืฉืึทื ื–. ื“ืขื ืžื™ื˜ืœ: ืื™ืจ ื ืึธืจ ืฉืจื™ื™ึทื‘ืŸ ื“ื™ ืงืึธื“ ืคึฟืึทืจ ื“ื™ื™ืŸ ื“ื™ื ืกื˜ (ืœืžืฉืœ, ืึท ื•ื•ืขื‘ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืึธื“ืขืจ ืึท ื˜ืฉืึทื˜ื‘ืึธื˜), ืื•ืŸ ื“ื™ ืงืœืึธื•ื“ ื–ื™ืš ืงืจื™ื™ื™ืฅ ืื•ืŸ ืžื™ื™ื ื˜ื™ื™ื ื– ื“ื™ ื•ื•ื™ืจื˜ื•ืึทืœ ืžืืฉื™ื ืขืŸ ื•ื•ื• ืขืก ืœื•ื™ืคื˜, ืื•ืŸ ืืคื™ืœื• ืจืขืคึผืœืึทืงื™ื™ื˜ ื–ื™ื™ ืื•ื™ื‘ ื“ื™ ืžืึทืกืข ื™ื ืงืจื™ืกื™ื–. ืื™ืจ ื˜ืึธืŸ ื ื™ื˜ ื“ืึทืจืคึฟืŸ ืฆื• ื˜ืจืึทื›ื˜ืŸ, ื“ืึธืก ืื™ื– ื–ื™ื™ืขืจ ื‘ืึทืงื•ื•ืขื. ืื•ืŸ ื“ื™ ืฆืึธืœื•ื ื’ ืื™ื– ื‘ืœื•ื™ื– ืคึฟืึทืจ ื“ื™ ื›ืขื–ืฉื‘ืŸ ืฆื™ื™ื˜.

ืึธื‘ืขืจ, ืขื˜ืœืขื›ืข ืงืขืŸ ื ื™ืฉื˜ ื‘ืึทืฆืึธืœืŸ ื‘ื™ื™ึท ืึทืœืข. ื“ืืก ื–ืขื ืขืŸ ื“ื™ ื“ืขื•ื•ืขืœืึธืคึผืขืจืก ืึทืœื™ืก ืก ืคื•ื ื“ืจื•ื™ืกื ื“ื™ืง ืกืงื™ืœื–, ื•ื•ืึธืก ืื™ื–, ื˜ืฉืึทื˜ื‘ืึธืฅ ื’ืขื‘ื•ื™ื˜ ืื™ืŸ ืขืก. ื™ืขื“ืขืจ ื“ืขื•ื•ืขืœืึธืคึผืขืจ ืงืขื ืขืŸ ืฉืจื™ื™ึทื‘ืŸ, ื‘ืึทืœืขื‘ืึธืก ืื•ืŸ ืคืึทืจืฉืจื™ื™ึทื‘ืŸ ืึทื–ืึท ืึท ื‘ืงื™ืขืก, ืื•ืŸ ืคื•ืŸ ื”ื™ื™ึทื ื˜ ื“ื™ ืกืงื™ืœื– ื˜ืึธืŸ ื ื™ื˜ ืืคื™ืœื• ื“ืึทืจืคึฟืŸ ืฆื• ื–ื™ื™ืŸ ื›ืึธื•ืกื˜ื™ื“ - ื ืึธืจ ื•ืคึผืœืึธืึทื“ ื–ื™ื™ืขืจ ืงืึธื“ ืฆื• ื“ื™ ื•ื•ืึธืœืงืŸ ืื™ืŸ ื“ื™ ืคืึธืจืขื ื“ืขืจ ื–ืขืœื‘ื™ืงืขืจ ืกืขืจื•ื•ืขืจืœืขืกืก ืคึฟื•ื ืงืฆื™ืข.

ืื‘ืขืจ ืขืก ื–ืขื ืขืŸ ืึท ืคึผืึธืจ ืคื•ืŸ ื ื•ืึทื ืกื™ื–. ืคื™ืจืกื˜ืœื™, ื“ื™ื™ืŸ ื’ืจื•ื‘ ืงืึธื“ ืงืขืŸ ื“ืึทืจืคืŸ ืขื˜ืœืขื›ืข ื“ื™ืคึผืขื ื“ืึทื ืกื™ื–, ืื•ืŸ ืฉืœืขืคึผืŸ ื–ื™ื™ ืื™ืŸ ื“ื™ ืงืœืึธื•ื“ ืื™ื– ื ื™ื˜-ื ื™ื˜ื•ื•ื™ืึทืœ. ืฆื•ื•ื™ื™ื˜ื ืก, ืงื™ื™ืŸ ื ืึธืจืžืึทืœ ื˜ืฉืึทื˜ื‘ืึธื˜ ื“ืึทืจืฃ ืฆื• ืงืจืึธื ื“ื™ ืฉื˜ืึทื˜ ืคื•ืŸ ื“ื™ ื“ื™ืึทืœืึธื’ ืขืจื’ืขืฅ (ืกื˜ื™ื™ื˜ืคืึทืœ ื“ืขืจื™ื‘ืขืจ); ื•ื•ืึธืก ืื™ื– ื“ื™ ื™ื–ื™ืึทืกื˜ ื•ื•ืขื’ ืฆื• ื˜ืึธืŸ ื“ืึธืก ืื™ืŸ ืึท ืกืขืจื•ื•ืขืจืœืขืกืก ืคื•ื ืงืฆื™ืข? ื“ืจื™ื˜ื ืก, ื•ื•ื™ ืงืขื ืขืŸ ืื™ืจ ืฉืจื™ื™ึทื‘ืŸ ืึท ืฉื ืขืœ-ืื•ืŸ-ื’ืจืึธื‘ ื‘ืงื™ืขืก ืคึฟืึทืจ ืึทืœื™ืก ืึธื“ืขืจ ืืคื™ืœื• ืึท ืžื™ืŸ ืคื•ืŸ ื‘ืึธื˜ ืžื™ื˜ ืึท ื ื™ื˜-ื ื•ืœ ืคึผืœืึทื ืขื•ื•ืขืŸ? ื“ืขืจ ืึทืจื˜ื™ืงืœ ืื™ื–, ืื™ืŸ ืคืึทืงื˜, ื•ื•ืขื’ืŸ ื“ื™ ื ื•ืึทื ืกื™ื–.

ืฉืึทืคึฟืŸ ืึท ืกื˜ืึทื˜ืขืคื•ืœ ืกืงื™ืœื– ืคึฟืึทืจ ืึทืœื™ืก ื ื™ืฆืŸ ืกืขืจื•ื•ืขืจืœืขืกืก ืคืึทื ื’ืงืฉืึทื ื– ืคื•ืŸ Yandex.Cloud ืื•ืŸ Python

ืžืึธืจืึทืœื™ืฉ ืฆื•ื’ืจื™ื™ื˜ื•ื ื’

ืคึฟืึทืจ ื“ื™ ื•ืžื’ืขื“ื•ืœื“ื™ืง: ืื™ืš ืงืœื™ื™ึทื‘ืŸ ื“ื™ ื ื™ื™ื˜ื™ืง ื“ื™ืคึผืขื ื“ืึทื ืกื™ื– ืžื™ื˜ ืึท ืžืึทืงืขืคื™ืœืข ืื™ื™ื“ืขืจ ื•ืคึผืœืึธืึทื“ื™ื ื’ ื“ื™ ืคื•ื ืงืฆื™ืข ืฆื• ื“ื™ ื•ื•ืึธืœืงืŸ, ืื™ืš ืงืจืึธื ื“ื™ ืฉื˜ืึทื˜ ืคื•ืŸ ื“ื™ ื“ื™ืึทืœืึธื’ ืื™ืŸ Yandex Object Storage (ืขืก ืฉื˜ื™ืฆื˜ ื“ื™ S3 API), ืื•ืŸ ืื™ืš ื ื•ืฆืŸ ืžื™ื™ืŸ ืื™ื™ื’ืขื ืข ื‘ื™ื‘ืœื™ืึธื˜ืขืง ืฆื• ืคื™ืจืŸ ื“ื™ ื“ื™ืึทืœืึธื’. tgalice. ืื™ืŸ ื“ื™ ืกื•ืฃ ืขืก ื˜ื•ืจื ืก ืื•ื™ืก ืึทื–ืึท ื“ืขืžืึธ ื‘ืงื™ืขืก. ืื™ืฆื˜ ืœืึธืžื™ืจ ืงื•ืงืŸ ืื•ื™ืฃ ืึทืœืข ื“ืขื ืื™ืŸ ืึท ื‘ื™ืกืœ ืžืขืจ ื“ืขื˜ืึทืœ.

ืคึฟืึทืจ ื™ืขื ืข ืึท ื‘ื™ืกืœ ื•ื•ื™ื™ื ื™ืงืขืจ ื•ืžื’ืขื“ื•ืœื“ื™ืง, ืื™ื™ื“ืขืจ ื“ื™ื™ื•ื•ื™ื ื’ ืื™ืŸ ืžื™ื™ืŸ ื“ืขืจืฆื™ื™ืœื•ื ื’ ื•ื•ืขื’ืŸ ืงืึทืžืคึผืœืขืงืกื™ื˜ื™, ืื™ืš ืจืขืงืึธืžืขื ื“ื™ืจืŸ ืฆื• ืึธื ื”ื™ื™ื‘ืŸ ืžื™ื˜ ืขืคึผืขืก ืคึผืฉื•ื˜. ื ื™ื™ืžืœื™, ืฉืึทืคึฟืŸ ืึท ืื™ื™ืŸ-ื˜ืขืงืข ืขืงืึธื‘ืึธื˜ ืคึฟื•ื ืงืฆื™ืข, ืคืึทืจืฉืจื™ื™ึทื‘ืŸ ืื•ืŸ ืคึผืจื•ื‘ื™ืจืŸ ืขืก ืื™ืŸ ื“ื™ Dialogs ื“ืขื•ื•ืขืœืึธืคึผืขืจ ืงืึทื ืกืึธื•ืœ; ืคืจื˜ื™ื - ืื™ืŸ Dialogues ื‘ืœืึธื’ ะธ ื•ื•ืึธืœืงืŸ ื“ืึทืงื™ื•ืžืขื ื˜ื™ื™ืฉืึทืŸ. ืื•ืŸ ื ืึธืจ ื“ืขืžืึธืœื˜ ืึธื ื”ื™ื™ื‘ืŸ.

ืื•ื™ื‘ ืื™ืจ ื•ื•ื™ืœื˜ ื’ืœื™ื™ืš ืคื™ืœืŸ ืคึฟืึทืจ ื•ื•ืึธืก ืžื™ืจ ืงืขืžืคืŸ ื“ืึธ, ืคืจืขื’ืŸ ืึทืœื™ืก 'ื’ืขื‘ืŸ ื“ื™ "ืขืก ื›ืึธืจืึทืกืงืึธื•ืคึผ" ื‘ืงื™ืขืก'. ื ื“ื™ืึทืœืึธื’ ืขื ืœืขืš ืฆื• ื“ื™ ืคืืœื’ืขื ื“ืข ื–ืึธืœ ืคึผืึทืกื™ืจืŸ:

ืึทืœื™ืก: ื”ืขืœื! ืื™ืจ ื–ืขื ื˜ ืื™ืŸ ื“ื™ "ืขืก ื”ืึธืจืึธืกืงืึธืคึผืข" ื‘ืงื™ืขืก. ื–ืึธื’ืŸ "ืึธื ื”ื™ื™ื‘" ืฆื• ื’ืขืคึฟื™ื ืขืŸ ืื•ื™ืก ื•ื•ืึธืก ื“ื™ ืฉื˜ืขืจืŸ ืฆื•ื–ืึธื’ ืื™ืจ.
ื‘ืึทื ื™ืฆืขืจ: ืึธื ื”ื™ื™ื‘
ื: ื‘ื™ื˜ืข ื–ืึธื’ืŸ ื“ื™ื™ืŸ ื ืึธืžืขืŸ
ื™ื•: ื•ื•ืึทืกื™ืกื•ืึทืœื™
ื: ืื™ืฆื˜ ื–ืื’ ืžื™ืจ ื“ื™ ื™ืึธืจ ืคื•ืŸ ื“ื™ื™ืŸ ื’ืขื‘ื•ืจื˜. ื‘ืœื•ื™ื– ืคื™ืจ ื“ื™ื“ื–ืฉืึทืฅ, ื’ืึธืจื ื™ืฉื˜ ืขืงืกื˜ืจืข.
ื™ื•: ืจื’ืข
ื: ื‘ื™ื˜ืข ืคึผืจื•ึผื•ื•ื˜ ื•ื•ื™ื“ืขืจ. ืึทืจื™ื™ึทืŸ ื“ื™ ื™ืึธืจ ืคื•ืŸ ื“ื™ื™ืŸ ื’ืขื‘ื•ืจื˜ - ืคื™ืจ ื“ื™ื“ื–ืฉืึทืฅ.
ื™ื•: 2002
ื: ื’ืจื•ื™ืก! ืื™ืฆื˜ ื ืึธืžืขืŸ ื“ื™ื™ืŸ ื—ื•ื“ืฉ ืคื•ืŸ ื’ืขื‘ื•ืจื˜.
ื™ื•: ืคืขื‘ืจื•ืืจ
ื: ื’ืจื•ื™ืก! ืฆื•ื ืกื•ืฃ, ื–ืึธื’ืŸ ืžื™ืจ ื“ื™ื™ืŸ ื’ืขื‘ื•ืจื˜ ื˜ืึธื’ - ื ืึธืจ ืึท ื ื•ืžืขืจ, ื ืึธืจ ืื™ื™ืŸ ืึธื“ืขืจ ืฆื•ื•ื™ื™ ื“ื™ื“ื–ืฉืึทืฅ.
ื™ื•: 18
ื: ื“ืึทื ืงืขืŸ ื“ื™ืจ, ื•ื•ืึทืกื™ืกื•ืึทืœื™! ืื™ืฆื˜ ืžื™ืจ ื•ื•ื™ืกืŸ: ืื™ืจ ื–ืขื ื˜ 17 ื™ืึธืจ ืึทืœื˜ ืื•ืŸ ืึทืŸ ืึทืงื•ื•ืึทืจื™ื•ืก. ื ื•, ืคื•ืŸ ืงื•ืจืก, ืื™ืจ ื–ืขื ื˜ ืžืึทื–ืœื“ื™ืง! ื“ื™ ืฉื˜ืขืจืŸ ื–ืึธื’ืŸ ืื™ืจ: ะฐ ั‡ั‚ะพ ะณะพะฒะพั€ัั‚ ะทะฒั‘ะทะดั‹, ะฒั‹ ัƒะทะฝะฐะตั‚ะต, ะทะฐะฟัƒัั‚ะธะฒ ะฝะฐะฒั‹ะบ.

ื“ืขืจ ืคึผืจืึธื‘ืœืขื ืื™ื– ืึทื– ืื™ืŸ ืกื“ืจ ืฆื• ื”ืึทืœื˜ืŸ ืึทืคึฟื™ืœื• ืึทื–ืึท ืึท ืคึผืฉื•ื˜ ื“ื™ืึทืœืึธื’, ืื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ื’ืขื“ืขื ืงืขืŸ ื“ื™ ื‘ืึทื ื™ืฆืขืจ 'ืก ื ืึธืžืขืŸ ืื•ืŸ ื’ืขื‘ื•ืจื˜ ื˜ืึธื’, ืื•ืŸ ืื™ืŸ ืึท ืกืขืจื•ื•ืขืจ-ืœืขืกืก ืคึฟื•ื ืงืฆื™ืข ืกื•ื•ื™ื•ื•ืข, ื“ืึธืก ืื™ื– ื ื™ื˜-ื ื™ื˜ื•ื•ื™ืึทืœ. ืขืก ื•ื•ืขื˜ ื ื™ื˜ ื–ื™ื™ืŸ ืžืขื’ืœืขืš ืฆื• ืงืจืึธื ื“ืขื ืงืึธื ื˜ืขืงืกื˜ ืื™ืŸ ื‘ืึทืจืึทืŸ ืึธื“ืขืจ ื•ื•ื™ ืึท ื˜ืขืงืข ืื•ื™ืฃ ื“ื™ืกืง, ื•ื•ื™ื™ึทืœ Yandex.Cloud ืงืขื ืขืŸ ืœื•ื™ืคืŸ ืึท ืคึฟื•ื ืงืฆื™ืข ืื•ื™ืฃ ืขื˜ืœืขื›ืข ื•ื•ื™ืจื˜ื•ืึทืœ ืžืืฉื™ื ืขืŸ ืื™ืŸ ื“ืขืจ ื–ืขืœื‘ื™ืงืขืจ ืฆื™ื™ื˜ ืื•ืŸ ื‘ืึทืฉื˜ื™ืžืขืŸ ืฆื•ื•ื™ืฉืŸ ื–ื™ื™. ืื™ืจ ื•ื•ืขื˜ ื”ืึธื‘ืŸ ืฆื• ื ื•ืฆืŸ ืขื˜ืœืขื›ืข ืคื•ื ื“ืจื•ื™ืกื ื“ื™ืง ืกื˜ืึธืจื™ื“ื–ืฉ. ืึธื‘ื“ื–ืฉืขืงื˜ ืกื˜ืึธืจื™ื“ื–ืฉ ืื™ื– ืื•ื™ืกื“ืขืจื•ื•ื™ื™ืœื˜ ื•ื•ื™ ืึท ื’ืึทื ืฅ ื‘ื™ืœื™ืง ืื•ืŸ ืึทื ืงืึทืžืคึผืœืึทืงื™ื™ื˜ื™ื“ ืกื˜ืึธืจื™ื“ื–ืฉ ื’ืœื™ื™ึทืš ืื™ืŸ Yandex.Cloud (ื“"ื” ืžื™ืกื˜ืึธืžืข ืฉื ืขืœ). ื•ื•ื™ ืึท ืคืจื™ื™ ืึธืœื˜ืขืจื ืึทื˜ื™ื•ื•, ืื™ืจ ืงืขื ืขืŸ ืคึผืจื•ื‘ื™ืจืŸ, ืœืžืฉืœ, ืึท ืคืจื™ื™ ืฉื˜ื™ืง ืคืึทืจื•ื•ืึธืœืงื ื˜ ืžืึธื ื’ืึท ืขืจื’ืขืฅ ืฐืฒื˜. ืขืก ื–ืขื ืขืŸ ื‘ืึทืงื•ื•ืขื ืคึผื™ื˜ื”ืึธืŸ ืจืึทืคึผืขืจื– ืคึฟืึทืจ ื‘ื™ื™ื“ืข ืึธื‘ื“ื–ืฉืขืงื˜ ืกื˜ืึธืจื™ื“ื–ืฉ (ื•ื•ืึธืก ืฉื˜ื™ืฆื˜ ื“ื™ S3 ืฆื•ื‘ื™ื ื“) ืื•ืŸ ืžืึธื ื’ืึธ.

ืืŸ ืื ื“ืขืจ ืคึผืจืึธื‘ืœืขื ืื™ื– ืึทื– ืฆื• ืึทืงืกืขืก ืึธื‘ื“ื–ืฉืขืงื˜ ืกื˜ืึธืจื™ื“ื–ืฉ, MongoDB ืื•ืŸ ืงื™ื™ืŸ ืื ื“ืขืจืข ื“ืึทื˜ืึทื‘ื™ื™ืก ืึธื“ืขืจ ื“ืึทื˜ืŸ ืงืจืึธื, ืื™ืจ ื“ืึทืจืคึฟืŸ ืขื˜ืœืขื›ืข ืคื•ื ื“ืจื•ื™ืกื ื“ื™ืง ื“ื™ืคึผืขื ื“ืึทื ืกื™ื– ื•ื•ืึธืก ื“ืึทืจืคึฟืŸ ืฆื• ื–ื™ื™ืŸ ื•ืคึผืœืึธืึทื“ืขื“ ืฆื• ื™ืึทื ื“ืขืงืก ืคืึทื ื’ืงืฉืึทื ื– ืฆื•ื–ืืžืขืŸ ืžื™ื˜ ื“ื™ื™ืŸ ืคื•ื ืงืฆื™ืข ืงืึธื“. ืื•ืŸ ืื™ืš ื•ื•ืึธืœื˜ ื•ื•ื™ ืฆื• ื˜ืึธืŸ ื“ืึธืก ืงืึทื ื•ื•ื™ื ื™ืึทื ื˜ืœื™. ืฆื•ื ื‘ืึทื“ื•ื™ืขืจืŸ, ืขืก ื•ื•ืขื˜ ื ื™ืฉื˜ ื–ื™ื™ืŸ ื’ืึธืจ ื‘ืึทืงื•ื•ืขื (ื•ื•ื™ ืื•ื™ืฃ Heroku), ืึธื‘ืขืจ ืขื˜ืœืขื›ืข ื™ืงืขืจื“ื™ืง ื˜ืจื™ื™ืกื˜ ืงืขื ืขืŸ ื–ื™ื™ืŸ ื‘ืืฉืืคืŸ ื“ื•ืจืš ืฉืจื™ื™ื‘ืŸ ืึท ืฉืจื™ืคื˜ ืฆื• ื‘ื•ื™ืขืŸ ื“ื™ ืกื•ื•ื™ื•ื•ืข (ืžืึทื›ืŸ ื˜ืขืงืข).

ื•ื•ื™ ืฆื• ืึธื ื”ื™ื™ื‘ืŸ ืึท ื›ืึธืจืึทืกืงืึธื•ืคึผ

  1. ืฆื•ื’ืจื™ื™ื˜ืŸ: ื’ื™ื™ืŸ ืฆื• ืขื˜ืœืขื›ืข ืžืึทืฉื™ืŸ ืžื™ื˜ ืœื™ื ื•ืงืก. ืื™ืŸ ืคึผืจื™ื ืฆื™ืคึผ, ืื™ืจ ืงืขื ืขืŸ ืžื™ืกื˜ืึธืžืข ืื•ื™ืš ืึทืจื‘ืขื˜ืŸ ืžื™ื˜ Windows, ืึธื‘ืขืจ ื“ืขืžืึธืœื˜ ืื™ืจ ื•ื•ืขื˜ ื”ืึธื‘ืŸ ืฆื• ืžืึทื›ืŸ ืžืึทื’ื™ืฉ ืžื™ื˜ ืงืึทื˜ืขืจ ื“ื™ ืžืึทืงืคื™ืœืข. ืื•ืŸ ืื™ืŸ ืงื™ื™ืŸ ืคืึทืœ, ืื™ืจ ื•ื•ืขื˜ ื“ืึทืจืคึฟืŸ ื‘ื™ื™ึท ืžื™ื ื“ืกื˜ืขืจ Python 3.6 ืื™ื ืกื˜ืึทืœื™ืจืŸ.
  2. ืงืœืึธื•ืŸ ืขืก ืคึฟื•ืŸ Github ื‘ื™ื™ึทืฉืคึผื™ืœ ืคื•ืŸ ื›ืึธืจืึทืกืงืึธื•ืคึผ ื‘ืงื™ืขืก.
  3. ืจืขื’ื™ืกื˜ืจื™ืจืŸ ืื™ืŸ Y.Cloud: https://cloud.yandex.ru
  4. ืฉืึทืคึฟืŸ ื–ื™ืš ืฆื•ื•ื™ื™ ืขืžืขืจ ืื™ืŸ ื›ื™ื™ืคืขืฅ ืกื˜ืึธืจื™ื“ื–ืฉ, ืจื•ืคืŸ ื–ื™ื™ ืžื™ื˜ ืงื™ื™ืŸ ื ืึธืžืขืŸ {BUCKET NAME} ะธ tgalice-test-cold-storage (ื“ืขืจ ืฆื•ื•ื™ื™ื˜ืขืจ ื ืึธืžืขืŸ ืื™ื– ืื™ืฆื˜ ืฉื•ื•ืขืจ ืงืึธื“ืขื“ ืื™ืŸ main.py ืžื™ื™ืŸ ื‘ื™ื™ืฉืคึผื™ืœ). ื“ืขืจ ืขืจืฉื˜ืขืจ ืขืžืขืจ ื•ื•ืขื˜ ื–ื™ื™ืŸ ื“ืืจืฃ ื‘ืœื•ื™ื– ืคึฟืึทืจ ื“ื™ืคึผืœื•ื™ืžืึทื ื˜, ื“ื™ ืจื’ืข - ืฆื• ืงืจืึธื ื“ื™ืึทืœืึธื’ ืฉื˜ืึทื˜ืŸ.
  5. ืฉืึทืคึฟืŸ ื“ื™ื ืกื˜ ื—ืฉื‘ื•ืŸ, ื’ื™ื‘ ืื™ื”ื ื ืจืืœืข editor, ืื•ืŸ ื‘ืึทืงื•ืžืขืŸ ืกื˜ืึทื˜ื™ืง ืงืจืึทื“ืขื ื˜ืฉืึทืœื– ืคึฟืึทืจ ืขืก {KEY ID} ะธ {KEY VALUE} - ืžื™ืจ ื•ื•ืขืœืŸ ื ื•ืฆืŸ ื–ื™ื™ ืฆื• ืจืขืงืึธืจื“ื™ืจืŸ ื“ื™ ืฉื˜ืึทื˜ ืคื•ืŸ ื“ื™ ื“ื™ืึทืœืึธื’. ืึทืœืข ื“ืขื ืื™ื– ื“ืืจืฃ ืึทื–ื•ื™ ืึทื– ืึท ืคื•ื ืงืฆื™ืข ืคึฟื•ืŸ Ya.Cloud ืงืขื ืขืŸ ืึทืงืกืขืก ื“ื™ ืกื˜ืึธืจื™ื“ื–ืฉ ืคึฟื•ืŸ Ya.Cloud. ืึทืžืึธืœ, ืื™ืš ื”ืึธืคึฟืŸ, ื“ืขืจืœื•ื™ื‘ืขื ื™ืฉ ื•ื•ืขื˜ ื•ื•ืขืจืŸ ืึธื˜ืึทืžืึทื˜ื™ืง, ืึธื‘ืขืจ ืื™ืฆื˜ ืขืก ืื™ื– ืึทื–ื•ื™.
  6. (ืึธืคึผื˜ื™ืึธื ืึทืœ) ื™ื ืกื˜ืึทืœื™ืจืŸ ื‘ืึทืคึฟืขืœืŸ ืฉื•ืจื” ืฆื•ื‘ื™ื ื“ yc. ืื™ืจ ืงืขื ื˜ ืื•ื™ืš ืฉืึทืคึฟืŸ ืึท ืคื•ื ืงืฆื™ืข ื“ื•ืจืš ื“ื™ ื•ื•ืขื‘ ืฆื•ื‘ื™ื ื“, ืึธื‘ืขืจ ื“ื™ CLI ืื™ื– ื’ื•ื˜ ื•ื•ื™ื™ึทืœ ืึทืœืข ืกืึธืจืฅ ืคื•ืŸ ื™ื ืึธื•ื•ื•ื™ื™ืฉืึทื ื– ื“ืขืจืฉื™ื™ึทื ืขืŸ ืื™ืŸ ืขืก ืคืึทืกื˜ืขืจ.
  7. ืื™ืฆื˜ ืื™ืจ ืงืขื ืขืŸ ืึทืงื˜ืฉืึทื•ื•ืึทืœื™ ืฆื•ื’ืจื™ื™ื˜ืŸ ื“ื™ ื“ืขืคึผืขื ื“ืขื ืกื™ ืคึฟืึทืจื–ืึทืžืœื•ื ื’: ืœื•ื™ืคืŸ ืขืก ืื•ื™ืฃ ื“ื™ ื‘ืึทืคึฟืขืœืŸ ืฉื•ืจื” ืคึฟื•ืŸ ื“ืขืจ ื˜ืขืงืข ืžื™ื˜ ื“ื™ ื‘ืงื™ืขืก ื‘ื™ื™ึทืฉืคึผื™ืœ make all. ื ื‘ื™ื ื˜ืœ ืคื•ืŸ ืœื™ื™ื‘ืจืขืจื™ื– (ืžืขืจืกื˜ื ืก, ื•ื•ื™ ื’ืขื•ื•ื™ื™ื ื˜ืœืขืš, ื•ืžื ื™ื™ื˜ื™ืง) ื•ื•ืขื˜ ื–ื™ื™ืŸ ืื™ื ืกื˜ืึทืœื™ืจืŸ ืื™ืŸ ื“ืขืจ ื˜ืขืงืข dist.
  8. ื’ื™ืกืŸ ืื™ืŸ ืึธื‘ื“ื–ืฉืขืงื˜ ืกื˜ืึธืจื™ื“ื–ืฉ ืžื™ื˜ ื”ืึทื ื˜ (ืื™ืŸ ื“ื™ ืขืžืขืจ {BUCKET NAME}) ืึทืจืงื™ื™ื•ื• ื‘ืืงื•ืžืขืŸ ืื™ืŸ ื“ื™ ืคืจื™ืขืจื“ื™ืงืข ืฉืจื™ื˜ dist.zip. ืื•ื™ื‘ ืื™ืจ ื•ื•ื™ืœื˜, ืื™ืจ ืงืขื ืขืŸ ื˜ืึธืŸ ื“ืึธืก ืคึฟื•ืŸ ื“ื™ ื‘ืึทืคึฟืขืœืŸ ืฉื•ืจื”, ืœืžืฉืœ, ื ื™ืฆืŸ AWS CLI.
  9. ืฉืึทืคึฟืŸ ืึท ืกืขืจื•ื•ืขืจืœืขืกืก ืคื•ื ืงืฆื™ืข ื“ื•ืจืš ื“ื™ ื•ื•ืขื‘ ืฆื•ื‘ื™ื ื“ ืึธื“ืขืจ ื ื™ืฆืŸ ืึท ื ื•ืฆืŸ yc. ืคึฟืึทืจ ื“ื™ ื ื•ืฆืŸ, ื“ื™ ื‘ืึทืคึฟืขืœ ื•ื•ืขื˜ ืงื•ืงืŸ ื•ื•ื™ ื“ืึธืก:

yc serverless function version create
    --function-name=horoscope
    --environment=AWS_ACCESS_KEY_ID={KEY ID},AWS_SECRET_ACCESS_KEY={KEY VALUE}
    --runtime=python37
    --package-bucket-name={BUCKET NAME}
    --package-object-name=dist.zip
    --entrypoint=main.alice_handler
    --memory=128M
    --execution-timeout=3s

ื•ื•ืขืŸ ืžืึทื ื™ื•ืึทืœื™ ืฉืึทืคึฟืŸ ืึท ืคึฟื•ื ืงืฆื™ืข, ืึทืœืข ืคึผืึทืจืึทืžืขื˜ืขืจืก ื–ืขื ืขืŸ ืึธื ื’ืขืคื™ืœื˜ ืื™ืŸ ื“ื™ ื–ืขืœื‘ืข ื•ื•ืขื’.

ืื™ืฆื˜ ื“ื™ ืคื•ื ืงืฆื™ืข ืื™ืจ ื‘ืืฉืืคืŸ ืงืขื ืขืŸ ื–ื™ื™ืŸ ื˜ืขืกื˜ืขื“ ื“ื•ืจืš ื“ื™ ื“ืขื•ื•ืขืœืึธืคึผืขืจ ืงืึทื ืกืึธื•ืœ, ืื•ืŸ ื“ื™ ืกืงื™ืœื– ืงืขื ืขืŸ ื–ื™ื™ืŸ ื™ืžืคึผืจื•ื•ื•ื“ ืื•ืŸ ืืจื•ื™ืก.

ืฉืึทืคึฟืŸ ืึท ืกื˜ืึทื˜ืขืคื•ืœ ืกืงื™ืœื– ืคึฟืึทืจ ืึทืœื™ืก ื ื™ืฆืŸ ืกืขืจื•ื•ืขืจืœืขืกืก ืคืึทื ื’ืงืฉืึทื ื– ืคื•ืŸ Yandex.Cloud ืื•ืŸ Python

ื•ื•ืึธืก ืื™ื– ืื•ื ื˜ืขืจ ื“ื™ ืงืึทืคึผื˜ืขืจ

ื“ื™ ืžืึทืงืคื™ืœืข ืึทืงืฉืœื™ ื›ึผื•ืœืœ ืึท ื’ืึทื ืฅ ืคึผืฉื•ื˜ ืฉืจื™ืคื˜ ืคึฟืึทืจ ื™ื ืกื˜ืึธืœื™ื ื’ ื“ื™ืคึผืขื ื“ืึทื ืกื™ื– ืื•ืŸ ืฉื˜ืขืœืŸ ื–ื™ื™ ืื™ืŸ ืึทืŸ ืึทืจืงื™ื™ื•ื• dist.zip, ื‘ืขืขืจืขืš ื•ื•ื™ ื“ืึธืก:

mkdir -p dist/
pip3 install -r requirements.txt --target dist/ 
cp main.py dist/main.py
cp form.yaml dist/form.yaml
cd dist && zip --exclude '*.pyc' -r ../dist.zip ./*

ื“ื™ ืžื ื•ื—ื” ืื™ื– ืึท ื‘ื™ืกืœ ืคึผืฉื•ื˜ ืžื›ืฉื™ืจื™ื ืืœื ื’ืขื•ื•ื™ืงืœื˜ ืื™ืŸ ืึท ื‘ื™ื‘ืœื™ืึธื˜ืขืง tgalice. ื“ืขืจ ืคึผืจืึธืฆืขืก ืคื•ืŸ ืคื™ืœื•ื ื’ ื‘ืึทื ื™ืฆืขืจ ื“ืึทื˜ืŸ ืื™ื– ื“ื™ืกืงืจื™ื™ื‘ื“ ื“ื•ืจืš ื“ื™ ืงืึธื ืคื™ื’ form.yaml:

form_name: 'horoscope_form'
start:
  regexp: 'ัั‚ะฐั€ั‚|ะฝะฐั‡(ะฐั‚ัŒ|ะฝะธ)'
  suggests:
    - ะกั‚ะฐั€ั‚
fields:
  - name: 'name'
    question: ะŸะพะถะฐะปัƒะนัั‚ะฐ, ะฝะฐะทะพะฒะธั‚ะต ัะฒะพั‘ ะธะผั.
  - name: 'year'
    question: ะขะตะฟะตั€ัŒ ัะบะฐะถะธั‚ะต ะผะฝะต ะณะพะด ะฒะฐัˆะตะณะพ ั€ะพะถะดะตะฝะธั. ะขะพะปัŒะบะพ ั‡ะตั‚ั‹ั€ะต ั†ะธั„ั€ั‹, ะฝะธั‡ะตะณะพ ะปะธัˆะฝะตะณะพ.
    validate_regexp: '^[0-9]{4}$'
    validate_message: ะŸะพะถะฐะปัƒะนัั‚ะฐ, ะฟะพะฟั€ะพะฑัƒะนั‚ะต ะตั‰ั‘ ั€ะฐะท. ะะฐะทะพะฒะธั‚ะต ะณะพะด ะฒะฐัˆะตะณะพ ั€ะพะถะดะตะฝะธั - ั‡ะตั‚ั‹ั€ะต ั†ะธั„ั€ั‹.
  - name: 'month'
    question: ะ—ะฐะผะตั‡ะฐั‚ะตะปัŒะฝะพ! ะขะตะฟะตั€ัŒ ะฝะฐะทะพะฒะธั‚ะต ะผะตััั† ะฒะฐัˆะตะณะพ ั€ะพะถะดะตะฝะธั.
    options:
      - ัะฝะฒะฐั€ัŒ
     ...
      - ะดะตะบะฐะฑั€ัŒ
    validate_message: ะขะพ, ั‡ั‚ะพ ะฒั‹ ะฝะฐะทะฒะฐะปะธ, ะฝะต ะฟะพั…ะพะถะต ะฝะฐ ะผะตััั†. ะŸะพะถะฐะปัƒะนัั‚ะฐ, ะฝะฐะทะพะฒะธั‚ะต ะผะตััั† ะฒะฐัˆะตะณะพ ั€ะพะถะดะตะฝะธั, ะฑะตะท ะดั€ัƒะณะธั… ัะปะพะฒ.
  - name: 'day'
    question: ะžั‚ะปะธั‡ะฝะพ! ะะฐะบะพะฝะตั†, ะฝะฐะทะพะฒะธั‚ะต ะผะฝะต ะดะฐั‚ัƒ ะฒะฐัˆะตะณะพ ั€ะพะถะดะตะฝะธั - ั‚ะพะปัŒะบะพ ั‡ะธัะปะพ, ะฒัะตะณะพ ะพะดะฝะฐ ะธะปะธ ะดะฒะต ั†ะธั„ั€ั‹.
    validate_regexp: '[0123]?d$'
    validate_message: ะŸะพะถะฐะปัƒะนัั‚ะฐ, ะฟะพะฟั€ะพะฑัƒะนั‚ะต ะตั‰ั‘ ั€ะฐะท. ะ’ะฐะผ ะฝัƒะถะฝะพ ะฝะฐะทะฒะฐั‚ัŒ ั‡ะธัะปะพ ัะฒะพะตะณะพ ั€ะพะถะดะตะฝะธั (ะฝะฐะฟั€ะธะผะตั€, ะดะฒะฐะดั†ะฐั‚ะพะต); ัั‚ะพ ะพะดะฝะฐ ะธะปะธ ะดะฒะต ั†ะธั„ั€ั‹.

ื“ื™ ืึทืจื‘ืขื˜ ืคื•ืŸ ืคึผืึทืจืกื™ื ื’ ื“ืขื ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ ืื•ืŸ ืงืึทืœืงื™ืึทืœื™ื™ื˜ื™ื ื’ ื“ื™ ืœืขืฆื˜ ืจืขื–ื•ืœื˜ืึทื˜ ืื™ื– ืื™ื‘ืขืจื’ืขื ื•ืžืขืŸ ื“ื•ืจืš ื“ื™ ืคึผื™ื˜ื”ืึธืŸ ืงืœืึทืก

class CheckableFormFiller(tgalice.dialog_manager.form_filling.FormFillingDialogManager):
    SIGNS = {
        'ัะฝะฒะฐั€ัŒ': 'ะšะพะทะตั€ะพะณ',
        ...
    }

    def handle_completed_form(self, form, user_object, ctx):
        response = tgalice.dialog_manager.base.Response(
            text='ะกะฟะฐัะธะฑะพ, {}! ะขะตะฟะตั€ัŒ ะผั‹ ะทะฝะฐะตะผ: ะฒะฐะผ {} ะปะตั‚, ะธ ะฒั‹ {}. n'
                 'ะ’ะพั‚ ัั‚ะพ ะฒะฐะผ, ะบะพะฝะตั‡ะฝะพ, ะฟะพะฒะตะทะปะพ! ะ—ะฒั‘ะทะดั‹ ะณะพะฒะพั€ัั‚ ะฒะฐะผ: {}'.format(
                form['fields']['name'],
                2019 - int(form['fields']['year']),
                self.SIGNS[form['fields']['month']],
                random.choice(FORECASTS),
            ),
            user_object=user_object,
        )
        return response

ืžืขืจ ื’ืขื ื•ื™, ื“ื™ ื‘ืึทื–ืข ืงืœืึทืก FormFillingDialogManager ื“ื™ืœื– ืžื™ื˜ ืคึผืœืึธืžื‘ื™ืจืŸ ื“ื™ "ืคืึธืจืขื", ืื•ืŸ ื“ื™ ืงื™ื ื“ ืงืœืึทืก ืื•ืคึฟืŸ handle_completed_form ื“ืขืจืฆื™ื™ืœื˜ ืื™ืจ ื•ื•ืึธืก ืฆื• ื˜ืึธืŸ ื•ื•ืขืŸ ื–ื™ ืื™ื– ื’ืจื™ื™ื˜.

ืื™ืŸ ืึทื“ื™ืฉืึทืŸ ืฆื• ื“ืขื ื”ื•ื™ืคึผื˜ ืœื•ื™ืคืŸ ืคื•ืŸ ื“ื™ืึทืœืึธื’, ื“ืขืจ ื‘ืึทื ื™ืฆืขืจ ืžื•ื–ืŸ ืื•ื™ืš ื–ื™ื™ืŸ ื‘ืึทื’ืจื™ืกืŸ, ื•ื•ื™ ื’ืขื–ื•ื ื˜ ื•ื•ื™ ื’ืขื‘ืŸ ื”ื™ืœืฃ ื ื™ืฆืŸ ื“ื™ "ื”ื™ืœืฃ" ื‘ืึทืคึฟืขืœ ืื•ืŸ ื‘ืืคืจื™ื™ื˜ ืคื•ืŸ ื“ื™ ื‘ืงื™ืขืก ื ื™ืฆืŸ ื“ื™ "ืึทืจื•ื™ืกื’ืึทื ื’" ื‘ืึทืคึฟืขืœ. ืคึฟืึทืจ ื“ืขื ืฆื•ื•ืขืง ืื™ืŸ tgalice ืขืก ืื™ื– ืื•ื™ืš ืึท ื˜ืขืžืคึผืœืึทื˜ืข, ืึทื–ื•ื™ ื“ื™ ื’ืื ืฆืข ื“ื™ืึทืœืึธื’ ืคืึทืจื•ื•ืึทืœื˜ืขืจ ืื™ื– ื’ืขืžืื›ื˜ ืคื•ืŸ ื‘ืจืขืงืœืขืš:

dm = tgalice.dialog_manager.CascadeDialogManager(
    tgalice.dialog_manager.GreetAndHelpDialogManager(
        greeting_message=DEFAULT_MESSAGE,
        help_message=DEFAULT_MESSAGE,
        exit_message='ะ”ะพ ัะฒะธะดะฐะฝะธั, ะฟั€ะธั…ะพะดะธั‚ะต ะฒ ะฝะฐะฒั‹ะบ "ะะนั‚ะธัˆะฝั‹ะน ะณะพั€ะพัะบะพะฟ" ะตั‰ั‘!'
    ),
    CheckableFormFiller(`form.yaml`, default_message=DEFAULT_MESSAGE)
)

CascadeDialogManager ืขืก ืึทืจื‘ืขื˜ ืคืฉื•ื˜: ืขืก ืคืจื•ื•ื•ื˜ ืฆื• ืฆื•ืœื™ื™ื’ืŸ ืึทืœืข ื–ื™ื™ึทืŸ ืงืึทืžืคึผืึธื•ื ืึทื ืฅ ืฆื• ื“ื™ ืงืจืึทื ื˜ ืฉื˜ืึทื˜ ืคื•ืŸ ื“ื™ ื“ื™ืึทืœืึธื’ ืื™ืŸ ืงืขืจ, ืื•ืŸ ืกืึทืœืขืงืฅ ื“ืขืจ ืขืจืฉื˜ืขืจ ืฆื•ื ืขืžืขืŸ ืื™ื™ื ืขืจ.

ื“ืขืจ ื“ื™ืึทืœืึธื’ ืคืึทืจื•ื•ืึทืœื˜ืขืจ ืงืขืจื˜ ืึท ืคึผื™ื˜ื”ืึธืŸ ื›ื™ื™ืคืขืฅ ื•ื•ื™ ืึท ืขื ื˜ืคืขืจ ืฆื• ื™ืขื“ืขืจ ืึธื ื–ืึธื’. Response, ื•ื•ืึธืก ืงืขื ืขืŸ ื–ื™ื™ืŸ ืงืึธื ื•ื•ืขืจื˜ืขื“ ืื™ืŸ ืงืœืึธืจ ื˜ืขืงืกื˜, ืึธื“ืขืจ ืื™ืŸ ืึท ืึธื ื–ืึธื’ ืื™ืŸ ืึทืœื™ืก ืึธื“ืขืจ ื˜ืขืœืขื’ืจืึทื - ื“ื™ืคึผืขื ื“ื™ื ื’ ืื•ื™ืฃ ื•ื•ื• ื“ื™ ื‘ืึธื˜ ืื™ื– ืคืœื™ืกื ื“ื™ืง; ืขืก ืื•ื™ืš ื›ึผื•ืœืœ ื“ื™ ื’ืขื‘ื™ื˜ืŸ ืฉื˜ืึทื˜ ืคื•ืŸ ื“ื™ ื“ื™ืึทืœืึธื’ ื•ื•ืึธืก ื“ืึทืจืฃ ืฆื• ื–ื™ื™ืŸ ื’ืขืจืื˜ืขื•ื•ืขื˜. ื“ื™ ื’ืื ืฆืข ืงื™ืš ืื™ื– ื›ืึทื ื“ืึทืœื“ ื“ื•ืจืš ืืŸ ืื ื“ืขืจ ืงืœืึทืก, DialogConnector, ืึทื–ื•ื™ ื“ืขืจ ื“ื™ืจืขืงื˜ ืฉืจื™ืคื˜ ืคึฟืึทืจ ืงืึทื˜ืขืจ ืึท ื‘ืงื™ืขืก ืื•ื™ืฃ ื™ืึทื ื“ืขืงืก ืคืึทื ื’ืงืฉืึทื ื– ืงื•ืงื˜ ื•ื•ื™ ื“ืึธืก:

...
session = boto3.session.Session()
s3 = session.client(
    service_name='s3',
    endpoint_url='https://storage.yandexcloud.net',
    aws_access_key_id=os.environ['AWS_ACCESS_KEY_ID'],
    aws_secret_access_key=os.environ['AWS_SECRET_ACCESS_KEY'],
    region_name='ru-central1',
)
storage = tgalice.session_storage.S3BasedStorage(s3_client=s3, bucket_name='tgalice-test-cold-storage')
connector = tgalice.dialog_connector.DialogConnector(dialog_manager=dm, storage=storage)
alice_handler = connector.serverless_alice_handler

ื•ื•ื™ ืื™ืจ ืงืขื ืขืŸ ื–ืขืŸ, ืจื•ื‘ึฟ ืคื•ืŸ ื“ืขื ืงืึธื“ ืงืจื™ื™ื™ืฅ ืึท ืงืฉืจ ืฆื• ื“ื™ S3 ืฆื•ื‘ื™ื ื“ ืคื•ืŸ ืึธื‘ื“ื–ืฉืขืงื˜ ืกื˜ืึธืจื™ื“ื–ืฉ. ืื™ืจ ืงืขื ืขืŸ ืœื™ื™ืขื ืขืŸ ื•ื•ื™ ื“ืขื ืงืฉืจ ืื™ื– ื’ืœื™ื™ึทืš ื’ืขื ื™ืฆื˜ ืื™ืŸ ื“ื™ ื’ืึทืœื™ืกืข ืงืึธื“.
ื“ื™ ืœืขืฆื˜ืข ืฉื•ืจื” ืงืจื™ื™ื™ืฅ ื“ื™ ืคึฟื•ื ืงืฆื™ืข alice_handler - ื“ืขืจ ื–ืขืœื‘ื™ืงืขืจ ื•ื•ืึธืก ืžื™ืจ ื“ืขืจืฆื™ื™ืœื˜ Yandex.Cloud ืฆื• ืฆื™ืขืŸ ื•ื•ืขืŸ ืžื™ืจ ืฉื˜ืขืœืŸ ื“ืขื ืคึผืึทืจืึทืžืขื˜ืขืจ --entrypoint=main.alice_handler.

ืึทื– ืก ืึทืœืข, ืคืืงื˜ื™ืฉ. ืžืึทื›ืŸ ื˜ืขืงืขืก ืคึฟืึทืจ ืคึฟืึทืจื–ืึทืžืœื•ื ื’, S3-ื•ื•ื™ ืึธื‘ื“ื–ืฉืขืงื˜ ืกื˜ืึธืจื™ื“ื–ืฉ ืคึฟืึทืจ ืกื˜ืึธืจื™ื ื’ ืงืึธื ื˜ืขืงืกื˜, ืื•ืŸ ืึท ืคึผื™ื˜ื”ืึธืŸ ื‘ื™ื‘ืœื™ืึธื˜ืขืง tgalice. ืงืึทืžื‘ื™ื™ื ื“ ืžื™ื˜ ื“ื™ ืกืขืจื•ื•ืขืจืœืขืกืก ืคืึทื ื’ืงืฉืึทื ื– ืื•ืŸ ื™ืงืกืคึผืจืขืกื™ื•ื•ื ืึทืก ืคื•ืŸ Python, ื“ืึธืก ืื™ื– ื’ืขื ื•ื’ ืฆื• ืึทื ื˜ื•ื•ื™ืงืœืขืŸ ืึท ื’ืขื–ื•ื ื˜ ืžืขื ื˜ืฉ ืกืงื™ืœื–.

ืื™ืจ ืงืขืŸ ืคืจืขื’ืŸ ื•ื•ืึธืก ืขืก ืื™ื– ื ื™ื™ื˜ื™ืง ืฆื• ืฉืึทืคึฟืŸ tgalice? ืึทืœืข ื“ื™ ื ื•ื“ื ืข ืงืึธื“ ื•ื•ืึธืก ื˜ืจืึทื ืกืคืขืจืก JSONs ืคึฟื•ืŸ ื‘ืขื˜ืŸ ืฆื• ืขื ื˜ืคืขืจ ืื•ืŸ ืคึฟื•ืŸ ืกื˜ืึธืจื™ื“ื–ืฉ ืฆื• ื–ื›ึผืจื•ืŸ ืื•ืŸ ืฆื•ืจื™ืง ืœื™ื’ื˜ ืื™ืŸ ืขืก. ืขืก ืื™ื– ืื•ื™ืš ืึท ืจืขื’ื•ืœืขืจ ืงืึธื“ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ, ืึท ืคึฟื•ื ืงืฆื™ืข ืฆื• ืคึฟืึทืจืฉื˜ื™ื™ืŸ ืึทื– "ืคืขื‘ืจื•ืืจ" ืื™ื– ืขื ืœืขืš ืฆื• "ืคืขื‘ืจื•ืืจ", ืื•ืŸ ืื ื“ืขืจืข NLU ืคึฟืึทืจ ืึธืจืขื. ืœื•ื™ื˜ ืžื™ื™ืŸ ื’ืขื“ืึทื ืง, ื“ืึธืก ื–ืึธืœ ืฉื•ื™ืŸ ื–ื™ื™ืŸ ื’ืขื ื•ื’ ืึทื–ื•ื™ ืึทื– ืื™ืจ ืงืขื ืขืŸ ืกืงื™ืฆืข ืคึผืจืึธื•ื˜ืึทื˜ื™ื™ืคึผืก ืคื•ืŸ ืกืงื™ืœื– ืื™ืŸ ื™ืึทืžืœ ื˜ืขืงืขืก ืึธืŸ ื–ื™ื™ืŸ ืฆื• ื“ื™ืกื˜ืจืึทืงื˜ื™ื“ ื“ื•ืจืš ื˜ืขื›ื ื™ืฉ ื“ืขื˜ืึทื™ืœืก.

ืื•ื™ื‘ ืื™ืจ ื•ื•ื™ืœื˜ ืึท ืžืขืจ ืขืจื ืกื˜ NLU, ืื™ืจ ืงืขื ื˜ ืฆื•ื˜ืฉืขืคึผืขืŸ ืขืก ืฆื• ื“ื™ื™ืŸ ืกืงื™ืœื– ื’ืขืฉืžืึทืง ืึธื“ืขืจ ื“ื™ืคึผืคึผืึทื•ื•ืœืึธื•ื•, ืึธื‘ืขืจ ื‘ืึทืฉื˜ืขื˜ื™ืงืŸ ื–ื™ื™ ื•ื•ืขื˜ ื“ืึทืจืคืŸ ื ืึธืš ื“ืึทื ืกื™ื– ืžื™ื˜ ืึท ื˜ืึทืžื‘ื•ืจื™ืŸ, ืกืคึผืขืฆื™ืขืœ ืื•ื™ืฃ ืกืขืจื•ื•ืขืจืœืขืกืก. ืื•ื™ื‘ ืื™ืจ ื˜ืึธืŸ ื ื™ื˜ ืคื™ืœืŸ ื•ื•ื™ ืงืึธื“ื™ืจื•ื ื’ ืื™ืŸ ืึทืœืข, ืื™ืจ ื–ืึธืœ ื ื•ืฆืŸ ืึท ื•ื•ื™ื–ืฉืึทื•ื•ืึทืœ ืงืึทื ืกื˜ืจืึทืงื˜ืขืจ ื•ื•ื™ ืึทื™ืžื™ืœืึธื’ื™ืง. ื•ื•ืขืŸ ืื™ืš ืฉืืคืŸ ื˜ื’ืึทืœื™ืก, ืื™ืš ื’ืขื“ืึทื ืง ื•ื•ืขื’ืŸ ืึท ืžื™ืŸ ืคื•ืŸ ื™ื ื˜ืขืจืžื™ื“ื™ื™ื˜ ื•ื•ืขื’. ื–ืืœ ืก ื–ืขืŸ ื•ื•ืึธืก ืงื•ืžื˜ ืคื•ืŸ ื“ืขื.

ื ื•, ืื™ืฆื˜ ืคืึทืจื‘ื™ื ื“ืŸ ื–ื™ืš ืึทืœื™ืก ืกืงื™ืœื– ื“ืขื•ื•ืขืœืึธืคึผืขืจ ืฉืžื•ืขืกืŸ, ืœื™ื™ืขื ืขืŸ ื“ืึทืงื™ื•ืžืขื ื˜ื™ื™ืฉืึทืŸ, ืื•ืŸ ืฉืึทืคึฟืŸ ื•ื•ื•ื ื“ืขืจืœืขืš ืกืงื™ืœื–!

ืžืงื•ืจ: www.habr.com

ืœื™ื™ื’ืŸ ืึท ื‘ืึทืžืขืจืงื•ื ื’