Yandex.Cloud āĻāĻŦāĻ‚ Python āĻāϰ āϏāĻžāĻ°ā§āĻ­āĻžāϰāĻšā§€āύ āĻĢāĻžāĻ‚āĻļāύ⧇ āĻ…ā§āϝāĻžāϞāĻŋāϏ⧇āϰ āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻŋ āϰāĻžāĻˇā§āĻŸā§āϰ⧀āϝāĻŧ āĻĻāĻ•ā§āώāϤāĻž āϤ⧈āϰāĻŋ āĻ•āϰāĻž

āĻ–āĻŦāϰ āĻĻāĻŋāϝāĻŧ⧇ āĻļ⧁āϰ⧁ āĻ•āϰāĻž āϝāĻžāĻ•āĨ¤ āĻ—āϤāĻ•āĻžāϞ Yandex.Cloud āĻāĻ•āϟāĻŋ āϏāĻžāĻ°ā§āĻ­āĻžāϰāĻšā§€āύ āĻ•āĻŽā§āĻĒāĻŋāωāϟāĻŋāĻ‚ āĻĒāϰāĻŋāώ⧇āĻŦāĻž āϚāĻžāϞ⧁ āĻ•āϰāĻžāϰ āĻ˜ā§‹āώāĻŖāĻž āĻĻāĻŋāϝāĻŧ⧇āϛ⧇ āχāϝāĻŧāĻžāύāĻĄā§‡āĻ•ā§āϏ āĻ•ā§āϞāĻžāωāĻĄ āĻĢāĻžāĻ‚āĻļāύ. āĻāϰ āĻ…āĻ°ā§āĻĨ āĻšāϞ: āφāĻĒāύāĻŋ āĻļ⧁āϧ⧁āĻŽāĻžāĻ¤ā§āϰ āφāĻĒāύāĻžāϰ āĻĒāϰāĻŋāώ⧇āĻŦāĻžāϰ āϜāĻ¨ā§āϝ āϕ⧋āĻĄ āϞ⧇āϖ⧇āύ (āωāĻĻāĻžāĻšāϰāĻŖāĻ¸ā§āĻŦāϰ⧂āĻĒ, āĻāĻ•āϟāĻŋ āĻ“āϝāĻŧ⧇āĻŦ āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύ āĻŦāĻž āĻāĻ•āϟāĻŋ āĻšā§āϝāĻžāϟāĻŦāϟ), āĻāĻŦāĻ‚ āĻ•ā§āϞāĻžāωāĻĄ āύāĻŋāĻœā§‡āχ āĻ­āĻžāĻ°ā§āϚ⧁āϝāĻŧāĻžāϞ āĻŽā§‡āĻļāĻŋāύāϗ⧁āϞāĻŋ āϤ⧈āϰāĻŋ āĻ•āϰ⧇ āĻāĻŦāĻ‚ āϰāĻ•ā§āώāĻŖāĻžāĻŦ⧇āĻ•ā§āώāĻŖ āĻ•āϰ⧇ āϝ⧇āĻ–āĻžāύ⧇ āĻāϟāĻŋ āϚāϞ⧇ āĻāĻŦāĻ‚ āĻāĻŽāύāĻ•āĻŋ āϞ⧋āĻĄ āĻŦ⧃āĻĻā§āϧāĻŋ āĻĒ⧇āϞ⧇ āϤāĻžāĻĻ⧇āϰ āĻĒā§āϰāϤāĻŋāϞāĻŋāĻĒāĻŋ āĻ•āϰ⧇⧎ āφāĻĒāύāĻžāϰ āĻŽā§‹āĻŸā§‡āχ āϚāĻŋāĻ¨ā§āϤāĻž āĻ•āϰāĻžāϰ āĻĻāϰāĻ•āĻžāϰ āύ⧇āχ, āĻāϟāĻŋ āϖ⧁āĻŦ āϏ⧁āĻŦāĻŋāϧāĻžāϜāύāĻ•āĨ¤ āĻāĻŦāĻ‚ āĻ…āĻ°ā§āĻĨāĻĒā§āϰāĻĻāĻžāύ āĻļ⧁āϧ⧁āĻŽāĻžāĻ¤ā§āϰ āĻ—āĻŖāύāĻžāϰ āϏāĻŽāϝāĻŧ⧇āϰ āϜāĻ¨ā§āϝāĨ¤

āϝāĻžāχāĻšā§‹āĻ•, āϕ⧇āω āϕ⧇āω āĻāϕ⧇āĻŦāĻžāϰ⧇āχ āĻ…āĻ°ā§āĻĨ āĻĒā§āϰāĻĻāĻžāύ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇ āύāĻžāĨ¤ āĻāϰāĻžāχ āĻĄā§‡āϭ⧇āϞāĻĒāĻžāϰ āĻ…ā§āϝāĻžāϞāĻŋāϏ⧇āϰ āĻŦāĻžāĻšā§āϝāĻŋāĻ• āĻĻāĻ•ā§āώāϤāĻž, āĻ…āĻ°ā§āĻĨāĻžā§Ž, āĻšā§āϝāĻžāϟāĻŦāϟ āĻāϤ⧇ āϤ⧈āϰāĻŋ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ āϝ⧇āϕ⧋āύ āĻŦāĻŋāĻ•āĻžāĻļāĻ•āĻžāϰ⧀ āĻāχ āϧāϰāύ⧇āϰ āĻĻāĻ•ā§āώāϤāĻž āϞāĻŋāĻ–āϤ⧇, āĻšā§‹āĻ¸ā§āϟ āĻ•āϰāϤ⧇ āĻāĻŦāĻ‚ āύāĻŋāĻŦāĻ¨ā§āϧāύ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇ āĻāĻŦāĻ‚ āφāϜ āĻĨ⧇āϕ⧇ āĻĻāĻ•ā§āώāϤāĻžāϗ⧁āϞāĻŋ āĻšā§‹āĻ¸ā§āϟ āĻ•āϰāĻžāϰ āĻĻāϰāĻ•āĻžāϰ āύ⧇āχ - āϕ⧇āĻŦāϞ āĻĢāĻ°ā§āĻŽā§‡ āĻ•ā§āϞāĻžāωāĻĄā§‡ āϤāĻžāĻĻ⧇āϰ āϕ⧋āĻĄ āφāĻĒāϞ⧋āĻĄ āĻ•āϰ⧁āύ āĻāĻ•āχ āϏāĻžāĻ°ā§āĻ­āĻžāϰāĻšā§€āύ āĻĢāĻžāĻ‚āĻļāύ.

āϤāĻŦ⧇ āĻ•āϝāĻŧ⧇āĻ•āϟāĻŋ āϏ⧂āĻ•ā§āĻˇā§āĻŽāϤāĻž āϰāϝāĻŧ⧇āϛ⧇āĨ¤ āĻĒā§āϰāĻĨāĻŽāϤ, āφāĻĒāύāĻžāϰ āĻĒāĻŋāϟ āϕ⧋āĻĄā§‡āϰ āϜāĻ¨ā§āϝ āĻ•āĻŋāϛ⧁ āύāĻŋāĻ°ā§āĻ­āϰāϤāĻž āĻĒā§āϰāϝāĻŧā§‹āϜāύ āĻšāϤ⧇ āĻĒāĻžāϰ⧇ āĻāĻŦāĻ‚ āϏ⧇āϗ⧁āϞāĻŋāϕ⧇ āĻ•ā§āϞāĻžāωāĻĄā§‡ āĻŸā§‡āύ⧇ āφāύāĻž āĻ…-āϤ⧁āĻšā§āĻ›āĨ¤ āĻĻā§āĻŦāĻŋāϤ⧀āϝāĻŧāϤ, āϝ⧇āϕ⧋āύ⧋ āϏāĻžāϧāĻžāϰāĻŖ āĻšā§āϝāĻžāϟāĻŦāϟāϕ⧇ āϏāĻ‚āϞāĻžāĻĒ⧇āϰ āĻ…āĻŦāĻ¸ā§āĻĨāĻž āϕ⧋āĻĨāĻžāĻ“ āϏāĻ‚āϰāĻ•ā§āώāĻŖ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇ (āĻ…āϤāĻāĻŦ āϰāĻžāĻˇā§āĻŸā§āϰ⧀āϝāĻŧ); āĻāĻ•āϟāĻŋ āϏāĻžāĻ°ā§āĻ­āĻžāϰāĻšā§€āύ āĻĢāĻžāĻ‚āĻļāύ⧇ āĻāϟāĻŋ āĻ•āϰāĻžāϰ āϏāĻŦāĻšā§‡āϝāĻŧ⧇ āϏāĻšāϜ āωāĻĒāĻžāϝāĻŧ āĻ•āĻŋ? āϤ⧃āϤ⧀āϝāĻŧāϤ, āφāĻĒāύāĻŋ āϕ⧀āĻ­āĻžāĻŦ⧇ āĻ…ā§āϝāĻžāϞāĻŋāϏ⧇āϰ āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻŋ āĻĻā§āϰ⧁āϤ āĻāĻŦāĻ‚ āύ⧋āĻ‚āϰāĻž āĻĻāĻ•ā§āώāϤāĻž āϞāĻŋāĻ–āϤ⧇ āĻĒāĻžāϰ⧇āύ āĻŦāĻž āĻāĻŽāύāϕ⧀ āϕ⧋āύāĻ“ āύāύ-āϜāĻŋāϰ⧋ āĻĒā§āϞāϟ āϏāĻš āϕ⧋āύāĻ“ āϧāϰāϪ⧇āϰ āĻŦāϟ āϞāĻŋāĻ–āϤ⧇ āĻĒāĻžāϰ⧇āύ? āύāĻŋāĻŦāĻ¨ā§āϧāϟāĻŋ āφāϏāϞ⧇ āĻāχ āϏ⧂āĻ•ā§āĻˇā§āĻŽāϤāĻž āϏāĻŽā§āĻĒāĻ°ā§āϕ⧇āĨ¤

Yandex.Cloud āĻāĻŦāĻ‚ Python āĻāϰ āϏāĻžāĻ°ā§āĻ­āĻžāϰāĻšā§€āύ āĻĢāĻžāĻ‚āĻļāύ⧇ āĻ…ā§āϝāĻžāϞāĻŋāϏ⧇āϰ āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻŋ āϰāĻžāĻˇā§āĻŸā§āϰ⧀āϝāĻŧ āĻĻāĻ•ā§āώāϤāĻž āϤ⧈āϰāĻŋ āĻ•āϰāĻž

āύ⧈āϤāĻŋāĻ• āĻĒā§āϰāĻ¸ā§āϤ⧁āϤāĻŋ

āĻ…āϧ⧈āĻ°ā§āϝ⧇āϰ āϜāĻ¨ā§āϝ: āĻ•ā§āϞāĻžāωāĻĄā§‡ āĻĢāĻžāĻ‚āĻļāύāϟāĻŋ āφāĻĒāϞ⧋āĻĄ āĻ•āϰāĻžāϰ āφāϗ⧇ āφāĻŽāĻŋ āĻāĻ•āϟāĻŋ āĻŽā§‡āĻ•āĻĢāĻžāχāϞ āĻĻāĻŋāϝāĻŧ⧇ āĻĒā§āϰāϝāĻŧā§‹āϜāύ⧀āϝāĻŧ āύāĻŋāĻ°ā§āĻ­āϰāϤāĻž āϏāĻ‚āĻ—ā§āϰāĻš āĻ•āϰāĻŋ, āφāĻŽāĻŋ āχāϝāĻŧāĻžāύāĻĄā§‡āĻ•ā§āϏ āĻ…āĻŦāĻœā§‡āĻ•ā§āϟ āĻ¸ā§āĻŸā§‹āϰ⧇āĻœā§‡ āĻĄāĻžāϝāĻŧāĻžāϞāϗ⧇āϰ āĻ…āĻŦāĻ¸ā§āĻĨāĻž āϏāĻ‚āϰāĻ•ā§āώāĻŖ āĻ•āϰāĻŋ (āĻāϟāĻŋ S3 API āϏāĻŽāĻ°ā§āĻĨāύ āĻ•āϰ⧇), āĻāĻŦāĻ‚ āĻĄāĻžāϝāĻŧāĻžāϞāĻ— āĻĒāϰāĻŋāϚāĻžāϞāύāĻž āĻ•āϰāϤ⧇ āφāĻŽāĻŋ āφāĻŽāĻžāϰ āύāĻŋāϜāĻ¸ā§āĻŦ āϞāĻžāχāĻŦā§āϰ⧇āϰāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻŋ tgalice. āĻļ⧇āώ āĻĒāĻ°ā§āϝāĻ¨ā§āϤ āĻāϟāĻŋ āϏāĻ•ā§āϰāĻŋāϝāĻŧ āφāωāϟ āĻāĻŽāύ āĻĄā§‡āĻŽā§‹ āĻĻāĻ•ā§āώāϤāĻžāĨ¤ āĻāĻ–āύ āĻāĻ•āϟ⧁ āĻŦāĻŋāĻ¸ā§āϤāĻžāϰāĻŋāϤāĻ­āĻžāĻŦ⧇ āĻāχ āϏāĻŦ āϤāĻžāĻ•āĻžāύ.

āϝāĻžāϰāĻž āĻāĻ•āϟ⧁ āĻ•āĻŽ āĻ…āϧ⧈āĻ°ā§āϝ āϤāĻžāĻĻ⧇āϰ āϜāĻ¨ā§āϝ, āϜāϟāĻŋāϞāϤāĻž āϏāĻŽā§āĻĒāĻ°ā§āϕ⧇ āφāĻŽāĻžāϰ āĻ—āĻ˛ā§āĻĒ⧇ āĻĄā§āĻŦ āĻĻ⧇āĻ“āϝāĻŧāĻžāϰ āφāϗ⧇, āφāĻŽāĻŋ āϖ⧁āĻŦ āϏāĻžāϧāĻžāϰāĻŖ āĻ•āĻŋāϛ⧁ āĻĻāĻŋāϝāĻŧ⧇ āĻļ⧁āϰ⧁ āĻ•āϰāĻžāϰ āĻĒāϰāĻžāĻŽāĻ°ā§āĻļ āĻĻāĻŋāχāĨ¤ āϝāĻĨāĻž, āĻāĻ•āϟāĻŋ āĻāĻ•āĻ•-āĻĢāĻžāχāϞ āχāϕ⧋āĻŦāϟ āĻĢāĻžāĻ‚āĻļāύ āϤ⧈āϰāĻŋ āĻ•āϰ⧁āύ, āύāĻŋāĻŦāĻ¨ā§āϧāύ āĻ•āϰ⧁āύ āĻāĻŦāĻ‚ āĻĄāĻžāϝāĻŧāĻžāϞāĻ— āĻŦāĻŋāĻ•āĻžāĻļāĻ•āĻžāϰ⧀ āĻ•āύāϏ⧋āϞ⧇ āĻāϟāĻŋ āĻĒāϰ⧀āĻ•ā§āώāĻž āĻ•āϰ⧁āύ; āĻŦāĻŋāĻ¸ā§āϤāĻžāϰāĻŋāϤ - āχāύ āϏāĻ‚āϞāĻžāĻĒ āĻŦā§āϞāĻ— и āĻ•ā§āϞāĻžāωāĻĄ āĻĄāϕ⧁āĻŽā§‡āĻ¨ā§āĻŸā§‡āĻļāύ. āĻāĻŦāĻ‚ āĻļ⧁āϧ⧁āĻŽāĻžāĻ¤ā§āϰ āϤāĻžāϰāĻĒāϰ āĻļ⧁āϰ⧁.

āφāĻĒāύāĻŋ āϝāĻĻāĻŋ āĻ…āĻŦāĻŋāϞāĻŽā§āĻŦ⧇ āĻ…āύ⧁āĻ­āĻŦ āĻ•āϰāϤ⧇ āϚāĻžāύ āϝ⧇ āφāĻŽāϰāĻž āĻāĻ–āĻžāύ⧇ āĻ•āĻŋāϏ⧇āϰ āϜāĻ¨ā§āϝ āϞāĻĄāĻŧāĻžāχ āĻ•āϰāĻ›āĻŋ, āĻ…ā§āϝāĻžāϞāĻŋāϏāϕ⧇ āϜāĻŋāĻœā§āĻžāĻžāϏāĻž āĻ•āϰ⧁āύ '"āφāχāϟāĻŋ āϰāĻžāĻļāĻŋāĻĢāϞ" āĻĻāĻ•ā§āώāϤāĻž āϏāĻ•ā§āώāĻŽ āĻ•āϰ⧁āύ' āύāĻŋāĻŽā§āύāϞāĻŋāĻ–āĻŋāϤ āĻ…āύ⧁āϰ⧂āĻĒ āĻāĻ•āϟāĻŋ āϏāĻ‚āϞāĻžāĻĒ āϘāϟāϤ⧇ āĻšāĻŦ⧇:

āĻāϞāĻŋāϏ: āĻšā§āϝāĻžāϞ⧋! āφāĻĒāύāĻŋ "āφāχāϟāĻŋ āϰāĻžāĻļāĻŋāĻĢāϞ" āĻĻāĻ•ā§āώāϤāĻžāϝāĻŧ āφāϛ⧇āύāĨ¤ āϤāĻžāϰāĻž āφāĻĒāύāĻžāϕ⧇ āĻ•āĻŋ āĻĒā§āϰāϤāĻŋāĻļā§āϰ⧁āϤāĻŋ āĻĻ⧇āϝāĻŧ āϤāĻž āϜāĻžāύāϤ⧇ "āĻļ⧁āϰ⧁ āĻ•āϰ⧁āύ" āĻŦāϞ⧁āύāĨ¤
āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀: āĻļ⧁āϰ⧁ āĻ•āϰ⧁āύ
āωāĻ¤ā§āϤāϰāσ āφāĻĒāύāĻžāϰ āύāĻžāĻŽ āĻŦāϞ⧁āύ
āχāω: āĻ­āĻžāϏāĻŋāϏ⧁āϝāĻŧāĻžāϞāĻŋ
āωāĻ¤ā§āϤāϰāσ āĻāĻ–āύ āφāĻĒāύāĻžāϰ āϜāĻ¨ā§āĻŽ āϏāĻžāϞ āĻŦāϞ⧁āύāĨ¤ āĻŽāĻžāĻ¤ā§āϰ āϚāĻžāϰāϟāĻŋ āϏāĻ‚āĻ–ā§āϝāĻž, āĻ…āϤāĻŋāϰāĻŋāĻ•ā§āϤ āĻ•āĻŋāϛ⧁ āύāϝāĻŧāĨ¤
āχāω: āĻĻā§āĻŦāĻŋāϤ⧀āϝāĻŧ
āωāĻ¤ā§āϤāϰ: āĻ…āύ⧁āĻ—ā§āϰāĻš āĻ•āϰ⧇ āφāĻŦāĻžāϰ āĻšā§‡āĻˇā§āϟāĻž āĻ•āϰ⧁āύāĨ¤ āφāĻĒāύāĻžāϰ āϜāĻ¨ā§āĻŽā§‡āϰ āĻŦāĻ›āϰ āϞāĻŋāϖ⧁āύ - āϚāĻžāϰāϟāĻŋ āϏāĻ‚āĻ–ā§āϝāĻžāĨ¤
āχāω: 2002
āĻāĻ•āϟāĻŋ āĻŽāĻšāĻžāύ! āĻāĻ–āύ āφāĻĒāύāĻžāϰ āϜāĻ¨ā§āĻŽ āĻŽāĻžāϏ⧇āϰ āύāĻžāĻŽ āĻĻāĻŋāύāĨ¤
āχāω: āĻĢ⧇āĻŦā§āϰ⧁āϝāĻŧāĻžāϰāĻŋ
āĻāĻ•āϟāĻŋ āĻŽāĻšāĻžāύ! āĻ…āĻŦāĻļ⧇āώ⧇, āφāĻŽāĻžāϕ⧇ āφāĻĒāύāĻžāϰ āϜāĻ¨ā§āĻŽ āϤāĻžāϰāĻŋāĻ– āĻŦāϞ⧁āύ - āĻļ⧁āϧ⧁ āĻāĻ•āϟāĻŋ āϏāĻ‚āĻ–ā§āϝāĻž, āĻŽāĻžāĻ¤ā§āϰ āĻāĻ• āĻŦāĻž āĻĻ⧁āϟāĻŋ āϏāĻ‚āĻ–ā§āϝāĻžāĨ¤
āχāω: 18
āωāĻ¤ā§āϤāϰ: āφāĻĒāύāĻžāϕ⧇ āϧāĻ¨ā§āϝāĻŦāĻžāĻĻ, āĻ­āĻžāϏāĻŋāϏ⧁āϝāĻŧāĻžāϞāĻŋ! āĻāĻ–āύ āφāĻŽāϰāĻž āϜāĻžāύāĻŋ: āφāĻĒāύāĻžāϰ āĻŦāϝāĻŧāϏ 17 āĻŦāĻ›āϰ āĻāĻŦāĻ‚ āĻāĻ•āϟāĻŋ āϕ⧁āĻŽā§āĻ­āĨ¤ āĻ­āĻžāϞ, āĻ…āĻŦāĻļā§āϝāχ, āφāĻĒāύāĻŋ āĻ­āĻžāĻ—ā§āϝāĻŦāĻžāύ! āϤāĻžāϰāĻž āφāĻĒāύāĻžāϕ⧇ āĻŦāϞ⧇: а Ņ‡Ņ‚Đž ĐŗĐžĐ˛ĐžŅ€ŅŅ‚ ĐˇĐ˛Ņ‘ĐˇĐ´Ņ‹, Đ˛Ņ‹ ŅƒĐˇĐŊаĐĩŅ‚Đĩ, СаĐŋŅƒŅŅ‚Đ¸Đ˛ ĐŊĐ°Đ˛Ņ‹Đē.

āϏāĻŽāĻ¸ā§āϝāĻž āĻšāϞ āϝ⧇ āĻāĻŽāύ āĻāĻ•āϟāĻŋ āϏāĻžāϧāĻžāϰāĻŖ āĻ•āĻĨā§‹āĻĒāĻ•āĻĨāύ āĻŦāϜāĻžāϝāĻŧ āϰāĻžāĻ–āĻžāϰ āϜāĻ¨ā§āϝ, āφāĻĒāύāĻžāϕ⧇ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀āϰ āύāĻžāĻŽ āĻāĻŦāĻ‚ āϜāĻ¨ā§āĻŽ āϤāĻžāϰāĻŋāĻ– āĻŽāύ⧇ āϰāĻžāĻ–āϤ⧇ āĻšāĻŦ⧇ āĻāĻŦāĻ‚ āϏāĻžāĻ°ā§āĻ­āĻžāϰāĻšā§€āύ āĻĢāĻžāĻ‚āĻļāύ āĻĒāϰāĻŋāĻŦ⧇āĻļ⧇ āĻāϟāĻŋ āĻ…-āϤ⧁āĻšā§āĻ›āĨ¤ āĻāϟāĻŋ RAM āĻŦāĻž āĻĄāĻŋāĻ¸ā§āϕ⧇ āĻāĻ•āϟāĻŋ āĻĢāĻžāχāϞ āĻšāĻŋāϏāĻžāĻŦ⧇ āĻĒā§āϰāϏāĻ™ā§āĻ— āϏāĻ‚āϰāĻ•ā§āώāĻŖ āĻ•āϰāĻž āϏāĻŽā§āĻ­āĻŦ āĻšāĻŦ⧇ āύāĻž, āĻ•āĻžāϰāĻŖ Yandex.Cloud āĻāĻ•āχ āϏāĻŽāϝāĻŧ⧇ āĻŦ⧇āĻļ āĻ•āϝāĻŧ⧇āĻ•āϟāĻŋ āĻ­āĻžāĻ°ā§āϚ⧁āϝāĻŧāĻžāϞ āĻŽā§‡āĻļāĻŋāύ⧇ āĻāĻ•āϟāĻŋ āĻĢāĻžāĻ‚āĻļāύ āϚāĻžāϞāĻžāϤ⧇ āĻĒāĻžāϰ⧇ āĻāĻŦāĻ‚ āχāĻšā§āĻ›āĻžāĻŽāϤ āϤāĻžāĻĻ⧇āϰ āĻŽāĻ§ā§āϝ⧇ āĻ¸ā§āϝ⧁āχāϚ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āĨ¤ āφāĻĒāύāĻžāϕ⧇ āĻ•āĻŋāϛ⧁ āϧāϰāύ⧇āϰ āĻŦāĻžāĻšā§āϝāĻŋāĻ• āĻ¸ā§āĻŸā§‹āϰ⧇āϜ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇āĨ¤ āĻ…āĻŦāĻœā§‡āĻ•ā§āϟ āĻ¸ā§āĻŸā§‹āϰ⧇āϜāϕ⧇ āϏāϰāĻžāϏāϰāĻŋ Yandex.Cloud (āĻ…āĻ°ā§āĻĨāĻžā§Ž, āϏāĻŽā§āĻ­āĻŦāϤ āĻĻā§āϰ⧁āϤ) āĻāĻ•āϟāĻŋ āĻŽā§‹āϟāĻžāĻŽā§āϟāĻŋ āϏāĻ¸ā§āϤāĻž āĻāĻŦāĻ‚ āϜāϟāĻŋāϞ āϏāĻžā§āϚāϝāĻŧāĻ¸ā§āĻĨāĻžāύ āĻšāĻŋāϏāĻžāĻŦ⧇ āĻŦ⧇āϛ⧇ āύ⧇āĻ“āϝāĻŧāĻž āĻšāϝāĻŧ⧇āĻ›āĻŋāϞāĨ¤ āĻāĻ•āϟāĻŋ āĻŦāĻŋāύāĻžāĻŽā§‚āĻ˛ā§āϝ⧇ āĻŦāĻŋāĻ•āĻ˛ā§āĻĒ āĻšāĻŋāϏāĻžāĻŦ⧇, āφāĻĒāύāĻŋ āĻšā§‡āĻˇā§āϟāĻž āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύ, āωāĻĻāĻžāĻšāϰāĻŖāĻ¸ā§āĻŦāϰ⧂āĻĒ, āĻāĻ•āϟāĻŋ āĻŦāĻŋāύāĻžāĻŽā§‚āĻ˛ā§āϝ⧇ āϟ⧁āĻ•āϰāĻž āĻŽā§‡āϘāϞāĻž āĻŽāĻ™ā§āĻ—āĻž āĻāĻ–āĻžāύ āĻĨ⧇āϕ⧇ āĻĻā§‚āϰ⧇ āĻ…āĻ¨ā§āϝ āϕ⧋āĻĨāĻžāĻ“. āĻ…āĻŦāĻœā§‡āĻ•ā§āϟ āĻ¸ā§āĻŸā§‹āϰ⧇āϜ (āϝāĻž S3 āχāĻ¨ā§āϟāĻžāϰāĻĢ⧇āϏ āϏāĻŽāĻ°ā§āĻĨāύ āĻ•āϰ⧇) āĻāĻŦāĻ‚ āĻŽāĻ™ā§āĻ—ā§‹ āωāĻ­āϝāĻŧ⧇āϰ āϜāĻ¨ā§āϝ āϏ⧁āĻŦāĻŋāϧāĻžāϜāύāĻ• āĻĒāĻžāχāĻĨāύ āĻ°â€Œā§āϝāĻžāĻĒāĻžāϰ āϰāϝāĻŧ⧇āϛ⧇āĨ¤

āφāϰ⧇āĻ•āϟāĻŋ āϏāĻŽāĻ¸ā§āϝāĻž āĻšāϞ āĻ…āĻŦāĻœā§‡āĻ•ā§āϟ āĻ¸ā§āĻŸā§‹āϰ⧇āϜ, āĻŽāĻ™ā§āĻ—ā§‹āĻĄāĻŋāĻŦāĻŋ, āĻāĻŦāĻ‚ āĻ…āĻ¨ā§āϝ āϕ⧋āύ⧋ āĻĄāĻžāϟāĻžāĻŦ⧇āϏ āĻŦāĻž āĻĄā§‡āϟāĻž āĻ¸ā§āĻŸā§‹āϰ āĻ…ā§āϝāĻžāĻ•ā§āϏ⧇āϏ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ, āφāĻĒāύāĻžāϰ āĻ•āĻŋāϛ⧁ āĻŦāĻžāĻšā§āϝāĻŋāĻ• āύāĻŋāĻ°ā§āĻ­āϰāϤāĻž āĻĒā§āϰāϝāĻŧā§‹āϜāύ āϝāĻž āφāĻĒāύāĻžāϰ āĻĢāĻžāĻ‚āĻļāύ āϕ⧋āĻĄā§‡āϰ āϏāĻžāĻĨ⧇ āχāϝāĻŧāĻžāύāĻĄā§‡āĻ•ā§āϏ āĻĢāĻžāĻ‚āĻļāύ⧇ āφāĻĒāϞ⧋āĻĄ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇āĨ¤ āĻāĻŦāĻ‚ āφāĻŽāĻŋ āĻāϟāĻž āϏ⧁āĻŦāĻŋāϧāĻžāĻŽāϤ āĻ•āϰāϤ⧇ āϚāĻžāχ. āĻĻ⧁āĻ°ā§āĻ­āĻžāĻ—ā§āϝāĻŦāĻļāϤ, āĻāϟāĻŋ āϏāĻŽā§āĻĒā§‚āĻ°ā§āĻŖāϰ⧂āĻĒ⧇ āϏ⧁āĻŦāĻŋāϧāĻžāϜāύāĻ• āĻšāĻŦ⧇ āύāĻž (āϝ⧇āĻŽāύ āĻšā§‡āϰ⧋āϕ⧁āϤ⧇), āϤāĻŦ⧇ āĻĒāϰāĻŋāĻŦ⧇āĻļ āϤ⧈āϰāĻŋ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻŋ āĻ¸ā§āĻ•ā§āϰāĻŋāĻĒā§āϟ āϞāĻŋāϖ⧇ āĻ•āĻŋāϛ⧁ āĻŽā§ŒāϞāĻŋāĻ• āφāϰāĻžāĻŽ āϤ⧈āϰāĻŋ āĻ•āϰāĻž āϝ⧇āϤ⧇ āĻĒāĻžāϰ⧇ (āĻĢāĻžāχāϞ āϤ⧈āϰāĻŋ āĻ•āϰ⧁āύ)āĨ¤

āϕ⧀āĻ­āĻžāĻŦ⧇ āĻāĻ•āϟāĻŋ āϰāĻžāĻļāĻŋāĻĢāϞ ​​āĻĻāĻ•ā§āώāϤāĻž āϚāĻžāϞ⧁ āĻ•āϰāĻŦ⧇āύ

  1. āĻĒā§āϰāĻ¸ā§āϤ⧁āϤāĻŋ: āϞāĻŋāύāĻžāĻ•ā§āϏ āϚāĻžāϞāĻŋāϤ āϝ⧇āϕ⧋āύ⧋ āĻŽā§‡āĻļāĻŋāύ⧇ āϞāĻ— āχāύ āĻ•āϰ⧁āύāĨ¤ āĻŽā§‚āϞāϤ, āĻāϰ āϏāĻžāĻĨ⧇ Windows āĻāϟāĻžāĻ“ āϏāĻŽā§āĻ­āĻŦāϤ āĻ•āĻžāϜ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇, āĻ•āĻŋāĻ¨ā§āϤ⧁ āĻŽā§‡āĻ•āĻĢāĻžāχāϞāϟāĻŋ āϚāĻžāϞāĻžāϤ⧇ āĻ•āĻŋāϛ⧁ āĻŦāĻŋāĻļ⧇āώ āĻ•ā§ŒāĻļāϞ⧇āϰ āĻĒā§āϰāϝāĻŧā§‹āϜāύ āĻšāĻŦ⧇āĨ¤ āφāϰ āϝāĻžāχ āĻšā§‹āĻ•, āφāĻĒāύāĻžāϰ āĻĒāĻžāχāĻĨāύ ā§Š.ā§Ŧ āĻŦāĻž āϤāĻžāϰ āωāĻšā§āϚāϤāϰ āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ āχāύāĻ¸ā§āϟāϞ āĻ•āϰāĻž āĻĨāĻžāĻ•āϤ⧇ āĻšāĻŦ⧇āĨ¤
  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. āϝāĻĻāĻŋ āχāĻšā§āĻ›āĻž āĻšāϝāĻŧ, āφāĻĒāύāĻŋ āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āϞāĻžāχāύ āĻĨ⧇āϕ⧇ āĻāϟāĻŋ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύ, āωāĻĻāĻžāĻšāϰāĻŖāĻ¸ā§āĻŦāϰ⧂āĻĒ, āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āĻāĻĄāĻžāĻŦā§āϞ⧁āĻāϏ āϏāĻŋ āĻāϞ āφāχ.
  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, āϤāĻžāχ Yandex āĻĢāĻžāĻ‚āĻļāύāϗ⧁āϞāĻŋāϤ⧇ āĻāĻ•āϟāĻŋ āĻĻāĻ•ā§āώāϤāĻž āϚāĻžāϞ⧁ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āϏāϰāĻžāϏāϰāĻŋ āĻ¸ā§āĻ•ā§āϰāĻŋāĻĒā§āϟāϟāĻŋ āĻāχāϰāĻ•āĻŽ āĻĻ⧇āĻ–āĻžāĻšā§āϛ⧇:

...
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 āχāĻ¨ā§āϟāĻžāϰāĻĢ⧇āϏ⧇āϰ āϏāĻžāĻĨ⧇ āĻāĻ•āϟāĻŋ āϏāĻ‚āϝ⧋āĻ— āϤ⧈āϰāĻŋ āĻ•āϰ⧇āĨ¤ āφāĻĒāύāĻŋ āĻĒāĻĄāĻŧāϤ⧇ āĻĒāĻžāϰ⧇āύ āĻ•āĻŋāĻ­āĻžāĻŦ⧇ āĻāχ āϏāĻ‚āϝ⧋āĻ— āϏāϰāĻžāϏāϰāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āĻšāϝāĻŧ tgalice āϕ⧋āĻĄā§‡.
āĻļ⧇āώ āϞāĻžāχāύ āĻĢāĻžāĻ‚āĻļāύ āϤ⧈āϰāĻŋ āĻ•āϰ⧇ alice_handler — āĻāĻ•āχ āϝāĻž āφāĻŽāϰāĻž Yandex.Cloud āϕ⧇ āĻŦāϞ⧇āĻ›āĻŋāϞāĻžāĻŽ āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāϟāĻžāϰ āϏ⧇āϟ āĻ•āϰāĻžāϰ āϏāĻŽāϝāĻŧ āϟāĻžāύāϤ⧇ --entrypoint=main.alice_handler.

āϝ⧇ āϏāĻŦ, āφāϏāϞ⧇. āϏāĻŽāĻžāĻŦ⧇āĻļ⧇āϰ āϜāĻ¨ā§āϝ āĻŽā§‡āĻ•āĻĢāĻžāχāϞāϏ, āĻĒā§āϰāϏāĻ™ā§āĻ— āϏāĻ‚āϰāĻ•ā§āώāϪ⧇āϰ āϜāĻ¨ā§āϝ S3-āĻāϰ āĻŽāϤ⧋ āĻ…āĻŦāĻœā§‡āĻ•ā§āϟ āĻ¸ā§āĻŸā§‹āϰ⧇āϜ āĻāĻŦāĻ‚ āĻāĻ•āϟāĻŋ āĻĒāĻžāχāĻĨāύ āϞāĻžāχāĻŦā§āϰ⧇āϰāĻŋ tgalice. āĻĒāĻžāχāĻĨāύ⧇āϰ āϏāĻžāĻ°ā§āĻ­āĻžāϰāĻšā§€āύ āĻĢāĻžāĻ‚āĻļāύ āĻāĻŦāĻ‚ āĻ…āĻ­āĻŋāĻŦā§āϝāĻ•ā§āϤāĻŋāϰ āϏāĻžāĻĨ⧇ āĻŽāĻŋāϞāĻŋāϤ, āĻāϟāĻŋ āĻāĻ•āϟāĻŋ āϏ⧁āĻ¸ā§āĻĨ āĻŽāĻžāύ⧁āώ⧇āϰ āĻĻāĻ•ā§āώāϤāĻž āĻŦāĻŋāĻ•āĻžāĻļ⧇āϰ āϜāĻ¨ā§āϝ āϝāĻĨ⧇āĻˇā§āϟāĨ¤

āφāĻĒāύāĻŋ āϜāĻŋāĻœā§āĻžāĻžāϏāĻž āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύ āϕ⧇āύ āĻāϟāĻŋ āϤ⧈āϰāĻŋ āĻ•āϰāĻž āĻĒā§āϰāϝāĻŧā§‹āϜāύ āĻ›āĻŋāϞ tgalice? āϏāĻŽāĻ¸ā§āϤ āĻŦāĻŋāϰāĻ•ā§āϤāĻŋāĻ•āϰ āϕ⧋āĻĄ āϝāĻž JSON-āϗ⧁āϞāĻŋāϕ⧇ āĻ…āύ⧁āϰ⧋āϧ āĻĨ⧇āϕ⧇ āĻĒā§āϰāϤāĻŋāĻ•ā§āϰāĻŋāϝāĻŧāĻž āĻāĻŦāĻ‚ āĻ¸ā§āĻŸā§‹āϰ⧇āϜ āĻĨ⧇āϕ⧇ āĻŽā§‡āĻŽāϰāĻŋāϤ⧇ āĻāĻŦāĻ‚ āĻĒāĻŋāĻ›āύ⧇ āĻ¸ā§āĻĨāĻžāύāĻžāĻ¨ā§āϤāϰ āĻ•āϰ⧇āĨ¤ āĻāĻ›āĻžāĻĄāĻŧāĻžāĻ“ āĻāĻ•āϟāĻŋ āύāĻŋāϝāĻŧāĻŽāĻŋāϤ āϕ⧋āĻĄ āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύ āϰāϝāĻŧ⧇āϛ⧇, āĻāϟāĻŋ āĻŦā§‹āĻāĻžāϰ āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻŋ āĻĢāĻžāĻ‚āĻļāύ āϝ⧇ "āĻĢ⧇āĻŦā§āϰ⧁āϝāĻŧāĻžāϰāĻŋ" "āĻĢ⧇āĻŦā§āϰ⧁āϝāĻŧāĻžāϰāĻŋ" āĻāϰ āĻŽāϤ⧋, āĻāĻŦāĻ‚ āĻĻāϰāĻŋāĻĻā§āϰāĻĻ⧇āϰ āϜāĻ¨ā§āϝ āĻ…āĻ¨ā§āϝāĻžāĻ¨ā§āϝ NLUāĨ¤ āφāĻŽāĻžāϰ āϧāĻžāϰāĻŖāĻž āĻ…āύ⧁āϏāĻžāϰ⧇, āĻāϟāĻŋ āχāϤāĻŋāĻŽāĻ§ā§āϝ⧇ āϝāĻĨ⧇āĻˇā§āϟ āĻšāĻ“āϝāĻŧāĻž āωāϚāĻŋāϤ āϝāĻžāϤ⧇ āφāĻĒāύāĻŋ āĻĒā§āϰāϝ⧁āĻ•ā§āϤāĻŋāĻ—āϤ āĻŦāĻŋāĻŦāϰāĻŖ āĻĻā§āĻŦāĻžāϰāĻž āϖ⧁āĻŦ āĻŦ⧇āĻļāĻŋ āĻŦāĻŋāĻ­ā§āϰāĻžāĻ¨ā§āϤ āύāĻž āĻšāϝāĻŧ⧇ āχāϝāĻŧāĻžāĻŽāϞ āĻĢāĻžāχāϞāϗ⧁āϞāĻŋāϤ⧇ āĻĻāĻ•ā§āώāϤāĻžāϰ āĻĒā§āϰ⧋āĻŸā§‹āϟāĻžāχāĻĒāϗ⧁āϞāĻŋ āĻ¸ā§āϕ⧇āϚ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύāĨ¤

āφāĻĒāύāĻŋ āϝāĻĻāĻŋ āφāϰāĻ“ āϗ⧁āϰ⧁āϤāϰ NLU āϚāĻžāύ āϤāĻŦ⧇ āφāĻĒāύāĻŋ āĻāϟāĻŋ āφāĻĒāύāĻžāϰ āĻĻāĻ•ā§āώāϤāĻžāϰ āϏāĻžāĻĨ⧇ āϏāĻ‚āϝ⧁āĻ•ā§āϤ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύ āϰāĻžāϏāĻž āĻŦāĻž āĻĄāĻŋāĻĒ āĻĒāĻžāĻ­āϞāĻ­, āĻ•āĻŋāĻ¨ā§āϤ⧁ āϤāĻžāĻĻ⧇āϰ āϏ⧇āϟ āφāĻĒ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻŋ āĻ–āĻžā§āϜāύ⧀āϰ āϏāĻžāĻĨ⧇ āĻ…āϤāĻŋāϰāĻŋāĻ•ā§āϤ āύāĻžāĻšā§‡āϰ āĻĒā§āϰāϝāĻŧā§‹āϜāύ āĻšāĻŦ⧇, āĻŦāĻŋāĻļ⧇āώ āĻ•āϰ⧇ āϏāĻžāĻ°ā§āĻ­āĻžāϰāĻšā§€āύ āĻ…āĻŦāĻ¸ā§āĻĨāĻžāϝāĻŧāĨ¤ āφāĻĒāύāĻŋ āϝāĻĻāĻŋ āĻŽā§‹āĻŸā§‡āĻ“ āϕ⧋āĻĄāĻŋāĻ‚ āĻĒāĻ›āĻ¨ā§āĻĻ āύāĻž āĻ•āϰ⧇āύ āϤāĻŦ⧇ āφāĻĒāύāĻžāϰ āĻāĻ•āϟāĻŋ āĻ­āĻŋāĻœā§āϝ⧁āϝāĻŧāĻžāϞ āĻ•āύāĻ¸ā§āĻŸā§āϰāĻžāĻ•ā§āϟāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āωāϚāĻŋāϤ āφāχāĻŽāĻžāχāϞ⧋āĻ—āĻŋāĻ•. tgalice āϤ⧈āϰāĻŋ āĻ•āϰāĻžāϰ āϏāĻŽāϝāĻŧ, āφāĻŽāĻŋ āĻ•āĻŋāϛ⧁ āϧāϰāϪ⧇āϰ āĻŽāĻ§ā§āϝāĻŦāĻ°ā§āϤ⧀ āĻĒāĻĨ āϏāĻŽā§āĻĒāĻ°ā§āϕ⧇ āϚāĻŋāĻ¨ā§āϤāĻž āĻ•āϰ⧇āĻ›āĻŋāĨ¤ āĻāϰ āĻ•āĻŋ āφāϏ⧇ āĻĻ⧇āĻ–āĻž āϝāĻžāĻ•.

āφāĻšā§āĻ›āĻž, āĻāĻ–āύ āϝ⧋āĻ— āĻĻāĻŋāύ āĻāϞāĻŋāϏ āĻĻāĻ•ā§āώāϤāĻž āĻŦāĻŋāĻ•āĻžāĻļāĻ•āĻžāϰ⧀ āĻšā§āϝāĻžāϟ, āĻĒāĻĄāĻŧ⧁āύ āĻĄāϕ⧁āĻŽā§‡āĻ¨ā§āĻŸā§‡āĻļāύ, āĻāĻŦāĻ‚ āĻŦāĻŋāĻ¸ā§āĻŽāϝāĻŧāĻ•āϰ āϤ⧈āϰāĻŋ āĻ•āϰ⧁āύ āĻĻāĻ•ā§āώāϤāĻž!

āωāĻ¤ā§āϏ: www.habr.com

DDoS āϏ⧁āϰāĻ•ā§āώāĻž, VPS VDS āϏāĻžāĻ°ā§āĻ­āĻžāϰ āϏāĻš āϏāĻžāχāϟāϗ⧁āϞāĻŋāϰ āϜāĻ¨ā§āϝ āύāĻŋāĻ°ā§āĻ­āϰāϝ⧋āĻ—ā§āϝ āĻšā§‹āĻ¸ā§āϟāĻŋāĻ‚ āĻ•āĻŋāύ⧁āύ đŸ”Ĩ DDoS āϏ⧁āϰāĻ•ā§āώāĻž āϏāĻš āύāĻŋāĻ°ā§āĻ­āϰāϝ⧋āĻ—ā§āϝ āĻ“āϝāĻŧ⧇āĻŦāϏāĻžāχāϟ āĻšā§‹āĻ¸ā§āϟāĻŋāĻ‚ āĻ•āĻŋāύ⧁āύ, VPS VDS āϏāĻžāĻ°ā§āĻ­āĻžāϰ | ProHoster