рдЦрд╝рдмрд░ рд╕реЗ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред рдХрд▓, Yandex.Cloud рдиреЗ рд╕рд░реНрд╡рд░ рд░рд╣рд┐рдд рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рд╕реЗрд╡рд╛ Yandex Cloud Functions рдХреЗ рд▓реЙрдиреНрдЪ рдХреА рдШреЛрд╖рдгрд╛ рдХреАред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ: рдЖрдк рдХреЗрд╡рд▓ рдЕрдкрдиреА рд╕реЗрд╡рд╛ рдХрд╛ рдХреЛрдб рд▓рд┐рдЦрддреЗ рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдпрд╛ рдЪреИрдЯрдмреЙрдЯ), рдФрд░ рдХреНрд▓рд╛рдЙрдб рдЦреБрдж рд╣реА рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрдиреЛрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдФрд░ рд░рдЦрд░рдЦрд╛рд╡ рдХрд░рддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдпрд╣ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рд▓реЛрдб рдмрдврд╝рдиреЗ рдкрд░ рднреА рдЙрдирдХреА рдкреНрд░рддрд┐рдХреГрддрд┐ рдмрдирд╛рддрд╛ рд╣реИред рдпрд╣ рдмрд┐рд▓реНрдХреБрд▓ рднреА рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИ, рдпрд╣ рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред рдФрд░ рд╢реБрд▓реНрдХ рдХреЗрд╡рд▓ рдЧрдгрдирд╛ рдХреЗ рджреМрд░рд╛рди рдЬрд╛рддрд╛ рд╣реИред
рд╣рд╛рд▓рд╛рдВрдХрд┐, рдХреБрдЫ рднреБрдЧрддрд╛рди рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпреЗ рдРрд▓рд┐рд╕ рдХреЗ рдмрд╛рд╣рд░реА рдХреМрд╢рд▓ рдХреЗ рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛ рд╣реИрдВ, рдпрд╛рдиреА, рдЪреИрдЯрдмреЙрдЯреНрд╕ рдиреЗ рдЙрд╕рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд┐рдпрд╛ред рдХреЛрдИ рднреА рдбреЗрд╡рд▓рдкрд░ рдЗрд╕ рддрд░рд╣ рдХреЗ рдХреМрд╢рд▓ рдХреЛ рд▓рд┐рдЦ, рд╣реЛрд╕реНрдЯ рдФрд░ рдкрдВрдЬреАрдХреГрдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдЖрдЬ рд╕реЗ рдХреМрд╢рд▓ рдХреЛ рд╣реЛрд╕реНрдЯ рдХрд░рдиреЗ рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ - рдмрд╕ рдмрд╣реБрдд рд╣реА рд╕рд░реНрд╡рд░ рд░рд╣рд┐рдд рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд░реВрдк рдореЗрдВ рдХреНрд▓рд╛рдЙрдб рдкрд░ рдЕрдкрдирд╛ рдХреЛрдб рдЕрдкрд▓реЛрдб рдХрд░реЗрдВред
рд▓реЗрдХрд┐рди рдХреБрдЫ рдмрд╛рд░реАрдХрд┐рдпрд╛рдВ рд╣реИрдВред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЗ рдкрд╛рд▓рддреВ рдХреЛрдб рдХреЛ рдХреБрдЫ рдирд┐рд░реНрднрд░рддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ, рдФрд░ рдЙрдиреНрд╣реЗрдВ рдХреНрд▓рд╛рдЙрдб рдореЗрдВ рдЦреАрдВрдЪрдирд╛ рддреБрдЪреНрдЫ рдирд╣реАрдВ рд╣реИред рджреВрд╕рд░реЗ, рдХрд┐рд╕реА рднреА рд╕рд╛рдорд╛рдиреНрдп рдЪреИрдЯрдмреЛрдЯ рдХреЛ рд╕рдВрд╡рд╛рдж рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдХрд╣реАрдВ рд╕реНрдЯреЛрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ (рдЗрд╕рд▓рд┐рдП рд╕реНрдЯреЗрдЯрдлреБрд▓); рд╕рд░реНрд╡рд░ рд░рд╣рд┐рдд рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдпрд╣ рдХреИрд╕реЗ рдХрд░рдирд╛ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рд╣реИ? рддреАрд╕рд░рд╛, рдЖрдк рдПрд▓рд┐рд╕ рдпрд╛ рдХрд┐рд╕реА рддрд░рд╣ рдХреЗ рдмреЙрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рдЧреИрд░-рд╢реВрдиреНрдп рд╕рд╛рдЬрд┐рд╢ рдХреЗ рд╕рд╛рде рдЬрд▓реНрджреА рдФрд░ рдЧрдВрджреЗ рдХреИрд╕реЗ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ? рдЗрди рдмрд╛рд░реАрдХрд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдПрдХ рд▓реЗрдЦред

рдиреИрддрд┐рдХ рдкреНрд░рд╢рд┐рдХреНрд╖рдг
рдЕрдзреАрд░ рдХреЗ рд▓рд┐рдП: рдореИрдВ рдХреНрд▓рд╛рдЙрдб рдкрд░ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдЕрдкрд▓реЛрдб рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдПрдХ рдореЗрдХ-рдлрд╛рдЗрд▓ рдХреЗ рд╕рд╛рде рдЖрд╡рд╢реНрдпрдХ рдирд┐рд░реНрднрд░рддрд╛ рдПрдХрддреНрд░ рдХрд░рддрд╛ рд╣реВрдВ, рдореИрдВ рдпреИрдВрдбреЗрдХреНрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реНрдЯреЛрд░реЗрдЬ рдореЗрдВ рд╕рдВрд╡рд╛рдж рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реВрдВ (рдпрд╣ рдПрд╕ 3 рдПрдкреАрдЖрдИ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ), рдФрд░ рд╕рдВрд╡рд╛рдж рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореИрдВ рдЕрдкрдиреА рдЦреБрдж рдХреА рдЯрдЧрд▓рд┐рд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред рдкрд░рд┐рдгрд╛рдо рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдбреЗрдореЛ рдХреМрд╢рд▓ рд╣реИред рдЕрдм рдЖрдЗрдП рдЗрд╕ рд╕рдм рдкрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред
рдереЛрдбрд╝реА рдХрдо рдЕрдзреАрд░рддрд╛ рдХреЗ рд▓рд┐рдП: рдХрдард┐рдирд╛рдЗрдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореЗрд░реА рдХрд╣рд╛рдиреА рдореЗрдВ рдбреВрдмрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВ рдЕрддреНрдпрдзрд┐рдХ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╕реЗ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВред рдЕрд░реНрдерд╛рддреН, рдПрдХ рдПрдХрд▓-рдлрд╝рд╛рдЗрд▓ рдЗрдХреЛ рд╕рд╛рдЙрдВрдб рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛рдПрдВ, рдЗрд╕реЗ рдбрд╛рдпрд▓реЙрдЧ рдбреЗрд╡рд▓рдкрд░ рдХрдВрд╕реЛрд▓ рдореЗрдВ рдкрдВрдЬреАрдХреГрдд рдХрд░реЗрдВ рдФрд░ рдкрд░реАрдХреНрд╖рдг рдХрд░реЗрдВ; рд╡рд┐рд╡рд░рдг рдХреНрд▓рд╛рдЙрдб рд╕рдВрд╡рд╛рдж рдФрд░ рдкреНрд░рд▓реЗрдЦрди рдмреНрд▓реЙрдЧ рдкрд░ рд╣реИрдВ ред рдФрд░ рддрднреА рдЖрдЧреЗ рдмрдврд╝рдирд╛ рд╣реИред
рдпрджрд┐ рдЖрдк рддреБрд░рдВрдд рдорд╣рд╕реВрд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рд╣рдо рдХрд┐рд╕ рдЪреАрдЬ рдХреЗ рд▓рд┐рдП рд▓рдбрд╝ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдРрд▓рд┐рд╕ рдХреЛ рдХреМрд╢рд▓ "рдЖрдИрдЯреА рдХреБрдВрдбрд▓реА" рдЪрд╛рд▓реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣реЗрдВ ред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рдВрд╡рд╛рдж рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП:
рдРрд▓рд┐рд╕: рд╣рд╛рдп! рдЖрдк рдЖрд╢реАрд╖ рдХреБрдВрдбрд▓реА рдХреЗ рдХреМрд╢рд▓ рдореЗрдВ рд╣реИрдВред "рдкреНрд░рд╛рд░рдВрдн" рдХрд╣реЗрдВ рдХрд┐ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд╕рд┐рддрд╛рд░реЗ рдЖрдкрд╕реЗ рдХреНрдпрд╛ рд╡рд╛рджрд╛ рдХрд░рддреЗ рд╣реИрдВред
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛: рдкреНрд░рд╛рд░рдВрдн рдХрд░реЗрдВ
A: рдХреГрдкрдпрд╛ рдЕрдкрдирд╛ рдирд╛рдо рджреЗрдВред
рдпреБ: рд╡рд╛рд╕реБрд╕реНрд╕рд▓рд╛рджрд┐
A: рдЕрдм рдореБрдЭреЗ рдЕрдкрдиреЗ рдЬрдиреНрдо рдХрд╛ рд╡рд░реНрд╖ рдмрддрд╛рдУред рдХреЗрд╡рд▓ рдЪрд╛рд░ рдирдВрдмрд░, рдЬреНрдпрд╛рджрд╛ рдХреБрдЫ рдирд╣реАрдВред
рдпреБ: рджреВрд╕рд░рд╛
A: рдХреГрдкрдпрд╛ рдлрд┐рд░ рд╕реЗ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред рдЖрдкрдХреЗ рдЬрдиреНрдо рдХрд╛ рд╡рд░реНрд╖ рдХреНрдпрд╛ рд╣реИ - рдЪрд╛рд░ рдЕрдВрдХред
рдпреВ: 2002
A: рдмрд╣реБрдд рдмрдврд╝рд┐рдпрд╛! рдЕрдм рдЕрдкрдиреЗ рдЬрдиреНрдо рдХреЗ рдорд╣реАрдиреЗ рдХрд╛ рдирд╛рдо рдмрддрд╛рдЗрдПред
рдпреВ: рдлрд░рд╡рд░реА
A: рдмрд╣реБрдд рдмрдврд╝рд┐рдпрд╛! рдЕрдВрдд рдореЗрдВ, рдореБрдЭреЗ рдЕрдкрдиреЗ рдЬрдиреНрдо рдХреА рддрд╛рд░реАрдЦ рдмрддрд╛рдПрдВ - рдХреЗрд╡рд▓ рдПрдХ рд╕рдВрдЦреНрдпрд╛, рд╕рд┐рд░реНрдл рдПрдХ рдпрд╛ рджреЛ рдЕрдВрдХред
рдпреВ: 18
A: рдзрдиреНрдпрд╡рд╛рдж, Vasisuali! рдЕрдм рд╣рдо рдЬрд╛рдирддреЗ рд╣реИрдВ: рдЖрдк 17 рд╡рд░реНрд╖ рдХреЗ рд╣реИрдВ, рдФрд░ рдЖрдк рдХреБрдВрдн рд░рд╛рд╢рд┐ рдХреЗ рд╣реИрдВред рдпрд╣рд╛рдБ рдЖрдк рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рднрд╛рдЧреНрдпрд╢рд╛рд▓реА рд╣реИрдВ! рд╕рд┐рддрд╛рд░реЗ рдЖрдкрдХреЛ рдмрддрд╛рддреЗ рд╣реИрдВ: , , .
рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╕рдВрд╡рд╛рдж рдХреЛ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдирд╛рдо рдФрд░ рдЬрдиреНрдо рддрд┐рдерд┐ рдХреЛ рдпрд╛рдж рд░рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рд╕рд░реНрд╡рд░ рд░рд╣рд┐рдд рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ, рдпрд╣ рддреБрдЪреНрдЫ рдирд╣реАрдВ рд╣реИред рд░реИрдо рдореЗрдВ рд╕рдВрджрд░реНрдн рд╕реНрдЯреЛрд░ рдХрд░реЗрдВ рдпрд╛ рдбрд┐рд╕реНрдХ рдкрд░ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧреА, рдХреНрдпреЛрдВрдХрд┐ Yandex.Cloud рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдХрдИ рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрдиреЛрдВ рдкрд░ рдлрд╝рдВрдХреНрд╢рди рдЪрд▓рд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЙрдирдХреЗ рдмреАрдЪ рдордирдорд╛рдиреЗ рдврдВрдЧ рд╕реЗ рд╕реНрд╡рд┐рдЪ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рд╣рдореЗрдВ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреЗ рдмрд╛рд╣рд░реА рднрдВрдбрд╛рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реНрдЯреЛрд░реЗрдЬ рдХреЛ рдпреИрдВрдбреЗрдХреНрд╕.рдХреНрд▓рд╛рдЙрдб (рдпрд╛рдиреА, рд╢рд╛рдпрдж рддреЗрдЬ) рдореЗрдВ рдПрдХ рдмрд▓реНрдХрд┐ рд╕рд╕реНрддреА рдФрд░ рд╕реАрдзреА рд╕реНрдЯреЛрд░реЗрдЬ рдХреЗ рд░реВрдк рдореЗрдВ рдЪреБрдирд╛ рдЧрдпрд╛ рдерд╛ред рдПрдХ рдирд┐: рд╢реБрд▓реНрдХ рд╡рд┐рдХрд▓реНрдк рдХреЗ рд░реВрдк рдореЗрдВ, рдЖрдк рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рджреВрд░ рдореЛрдВрдЧрд╛ рдХреЗ рдПрдХ рдореБрдХреНрдд рдЯреБрдХрдбрд╝реЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рджреЛрдиреЛрдВ рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реНрдЯреЛрд░реЗрдЬ (рдпрд╣ S3 рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ) рдФрд░ рдореЛрдВрдЧреЛ рдореЗрдВ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдкрд╛рдпрдерди рд░реИрдкрд░ рд╣реИрдВред
рдПрдХ рдФрд░ рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ MongoDB рдореЗрдВ, Object Storage рдореЗрдВ рдЪрд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рдФрд░ рдХрд┐рд╕реА рдЕрдиреНрдп рдбреЗрдЯрд╛рдмреЗрд╕ рдпрд╛ рдбреЗрдЯрд╛ рд╡реЗрдпрд░рд╣рд╛рдЙрд╕ рдореЗрдВ, рдЖрдкрдХреЛ рдХреБрдЫ рдмрд╛рд╣рд░реА рдирд┐рд░реНрднрд░рддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЬрд┐рд╕реЗ рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдлрд╝рдВрдХреНрд╢рди рдХреЛрдб рдХреЗ рд╕рд╛рде Yandex рдлрд╝рдВрдХреНрд╢рдВрд╕ рдореЗрдВ рдЕрдкрд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдФрд░ рдореИрдВ рдЗрд╕реЗ рдЖрд╕рд╛рдиреА рд╕реЗ рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред рдпрд╣ рдХрд╛рдлреА рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ (рдЬреИрд╕реЗ рд╣рд░рдХреВ), рдЕрдлрд╕реЛрд╕, рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд╕рдХрд╛, рд▓реЗрдХрд┐рди рдЖрдк рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦрдХрд░ рдХреБрдЫ рдмреБрдирд┐рдпрд╛рджреА рдЖрд░рд╛рдо рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ (рдореЗрдХ-рдлрд╛рдЗрд▓)ред
рдХреБрдВрдбрд▓реА рдХреМрд╢рд▓ рдХреИрд╕реЗ рдЪрд▓рд╛рдПрдВ
- рдЕрдкрдиреЗ рдЖрдк рдХреЛ рддреИрдпрд╛рд░ рдХрд░реЗрдВ: рдХреБрдЫ рд▓рд┐рдирдХреНрд╕ рдорд╢реАрди рдкрд░ рдЬрд╛рдПрдВред рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдЖрдк рд╢рд╛рдпрдж рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рд╕рд╛рде рднреА рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рдЖрдкрдХреЛ рдореЗрдХ-рдлрд╛рдЗрд▓ рдХреЗ рд▓реЙрдиреНрдЪ рдХрд╛ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдирд╛ рд╣реЛрдЧрд╛ред рдФрд░ рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрдкрдХреЛ 3.6 рд╕реЗ рдХрдо рдкрд╛рдпрдерди рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред
- рдЕрдкрдиреЗ рдЖрдк рдХреЛ рдПрдХ рдХреБрдВрдбрд▓реА рдХреМрд╢рд▓ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг github рдХреЗ рд╕рд╛рде рдХреНрд▓реЛрди рдХрд░реЗрдВред
- Y. рдХреНрд▓рд╛рдЙрдб рдореЗрдВ рдкрдВрдЬреАрдХрд░рдг рдХрд░реЗрдВ : https://cloud.yandex.ru
- рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реНрдЯреЛрд░реЗрдЬ рдореЗрдВ рдЕрдкрдиреЗ рд▓рд┐рдП рджреЛ рдмрдХреЗрдЯ рдмрдирд╛рдПрдВ, рдЙрдиреНрд╣реЗрдВ рдХрд┐рд╕реА рднреА рдирд╛рдо
{BUCKET NAME}
рдФрд░ tgalice-test-cold-storage
рдирд╛рдо рджреЗрдВ (рдпрд╣ рджреВрд╕рд░рд╛ рдирд╛рдо рдЕрдм рдореЗрд░реЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ main.py
рдореЗрдВ рд╣рд╛рд░реНрдбрдХреЛрдб рд╣реИ)ред рдкрд╣рд▓реА рдмрд╛рд▓реНрдЯреА рдХреЗрд╡рд▓ рддреИрдирд╛рддреА рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реЛрдЧреА, рджреВрд╕рд░реА - рд╕рдВрд╡рд╛рдж рд░рд╛рдЬреНрдпреЛрдВ рдХреЗ рднрдВрдбрд╛рд░рдг рдХреЗ рд▓рд┐рдПред - рдПрдХ рд╕реЗрд╡рд╛ рдЦрд╛рддрд╛ рдмрдирд╛рдПрдВ, рдЗрд╕реЗ
editor
рдХреА рднреВрдорд┐рдХрд╛ рджреЗрдВ, рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рд╕реНрдЯреЗрдЯрд┐рдХ рдХреНрд░реЗрдбрд┐рдЯ рдХрд╛рд░реНрдб {KEY ID}
рдФрд░ {KEY VALUE}
- рд╣рдо рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рд╕рдВрд╡рд╛рдж рдХреА рд╕реНрдерд┐рддрд┐ рджрд░реНрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░реЗрдВрдЧреЗред рдпрд╣ рд╕рдм рдЖрд╡рд╢реНрдпрдХ рд╣реИ рддрд╛рдХрд┐ рд╡рд╛рдИ рдХреНрд▓рд╛рдЙрдб рд╕реЗ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд╡рд╛рдИ рдХреНрд▓рд╛рдЙрдб рд╕реЗ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рддрдХ рдкрд╣реБрдВрдЪ рд╕рдХреЗред рдХрд┐рд╕реА рджрд┐рди, рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд╣реЛ рдЬрд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди рдЕрднреА рдХреЗ рд▓рд┐рдП - рддреЛред - (рд╡реИрдХрд▓реНрдкрд┐рдХ)
yc
рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдЗрдВрдЯрд░рдлреЗрд╕ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ ред рдЖрдк рд╡реЗрдм рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╕реАрдПрд▓рдЖрдИ рдЕрдЪреНрдЫрд╛ рд╣реИ рдХрд┐ рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рдирд╡рд╛рдЪрд╛рд░ рдЗрд╕рдореЗрдВ рддреЗрдЬреА рд╕реЗ рджрд┐рдЦрд╛рдИ рджреЗрддреЗ рд╣реИрдВред - рдЕрдм, рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдирд┐рд░реНрднрд░рддрд╛ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рддреИрдпрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
make all
рдХреМрд╢рд▓ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде рдПрдХ рдлрд╝реЛрд▓реНрдбрд░ рд╕реЗ рдХрдорд╛рдВрдб рдкреНрд░реЙрдореНрдкреНрдЯ рдкрд░ рдЪрд▓рд╛рдПрдВред рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ (рдЬреНрдпрд╛рджрд╛рддрд░, рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣, рдЕрдирд╛рд╡рд╢реНрдпрдХ) dist
рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред - рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реНрдЯреЛрд░реЗрдЬ рдореЗрдВ рдбрд╛рд▓реЛ (
{BUCKET NAME}
) рдкрд┐рдЫрд▓реЗ рдЪрд░рдг рдореЗрдВ рдкреНрд░рд╛рдкреНрдд dist.zip
рд╕рдВрдЧреНрд░рд╣ред рдпрджрд┐ рд╡рд╛рдВрдЫрд┐рдд рд╣реИ, рддреЛ рдЖрдк рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рд╕реЗ рдРрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдбрдмреНрд▓реНрдпреВрдПрд╕ рд╕реАрдПрд▓рдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗред - рд╡реЗрдм рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдпрд╛
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
рдХрд┐рд╕реА рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдмрдирд╛рддреЗ рд╕рдордп, рд╕рднреА рдкреИрд░рд╛рдореАрдЯрд░ рдЙрд╕реА рддрд░рд╣ рднрд░реЗ рдЬрд╛рддреЗ рд╣реИрдВред
рдЕрдм рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдлрд╝рдВрдХреНрд╢рди рдбреЗрд╡рд▓рдкрд░ рдХреЗ рдХрдВрд╕реЛрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдХреМрд╢рд▓ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдФрд░ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рд╣реБрдб рдХреЗ рдиреАрдЪреЗ рдХреНрдпрд╛ рд╣реИ
dist.zip
рдореЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдирд┐рд░реНрднрд░рддрд╛рдПрдВ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдФрд░ рдЙрдиреНрд╣реЗрдВ рджреВрд░ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╛рдлреА рд╕рд░рд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реЛрддреА рд╣реИред 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
, рдЗрд╕ рд╕рднреА рд░рд╕реЛрдИрдШрд░ рдореЗрдВ рд▓рдЧрд╛ рд╣реБрдЖ рд╣реИ, рдЗрд╕рд▓рд┐рдП 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
рдлрд╝рдВрдХреНрд╢рди рдХреЛ alice_handler
рд╣реИ - рдЬрд┐рд╕реЗ рд╣рдордиреЗ рдпреИрдВрдбреЗрдХреНрд╕ рдХреЛ рдСрд░реНрдбрд░ рдХрд┐рдпрд╛ рдерд╛ред рдЬрдм рд╣рдо --entrypoint=main.alice_handler
рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЦреАрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдПред
рд╡рд╣, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╕рдм рд╣реИред рдЕрд╕реЗрдВрдмрд▓реА рдХреЗ рд▓рд┐рдП рдореЗрдХрдлрд╛рдЗрд▓реНрд╕, рд╕реНрдЯреЛрд░рд┐рдВрдЧ рд╕рдВрджрд░реНрдн рдХреЗ рд▓рд┐рдП рдПрд╕ 3-рдЬреИрд╕реЗ рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реНрдЯреЛрд░реЗрдЬ, рдФрд░ рдЯрд╛рд▓рд┐рд╕ рдкрд╛рдЗрдерди рд▓рд╛рдЗрдмреНрд░реЗрд░реАред рдЕрдЬрдЧрд░ рдХреЗ рд╕рд░реНрд╡рд░ рд░рд╣рд┐рдд рдХрд╛рд░реНрдпреЛрдВ рдФрд░ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде, рдпрд╣ рд╕реНрд╡рд╕реНрде рд╡реНрдпрдХреНрддрд┐ рдХреЗ рдХреМрд╢рд▓ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред
рдЖрдк рдкреВрдЫ рд╕рдХрддреЗ рд╣реИрдВ, рдЖрдкрдХреЛ tgalice
рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ tgalice
? рд╕рднреА рдмреЛрд░рд┐рдВрдЧ рдХреЛрдб рдЬреЛ JSONs рдХреЛ рд░рд┐рд╕реНрдкреЙрдиреНрд╕ рд╕реЗ рд▓реЗрдХрд░ рд╕реНрдЯреЛрд░реЗрдЬ рд╕реЗ рдореЗрдореЛрд░реА рддрдХ рдЯреНрд░рд╛рдВрд╕рдлрд░ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрддред рдПрдХ рдирд┐рдпрдорд┐рдд рдирд┐рдпрдВрддреНрд░рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рднреА рд╣реИ, рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдорд╛рд░реЛрд╣ рд╣реИ рдХрд┐ "рдлрд░рд╡рд░реА" рдХреНрдпрд╛ "рдлрд░рд╡рд░реА" рдЬреИрд╕рд╛ рд╣реИ, рдФрд░ рдЧрд░реАрдмреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдиреНрдп рдПрдирдПрд▓рдпреВред рдореЗрд░реЗ рд╡рд┐рдЪрд╛рд░ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рддрд╛рдХрд┐ рдЖрдк рддрдХрдиреАрдХреА рд╡рд┐рд╡рд░рдгреЛрдВ рд╕реЗ рдмрд╣реБрдд рд╡рд┐рдЪрд▓рд┐рдд рд╣реБрдП рдмрд┐рдирд╛, рдпрдо рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рдХреМрд╢рд▓ рдХреЗ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХреЛ рд╕реНрдХреЗрдЪ рдХрд░ рд╕рдХреЗрдВред
рдпрджрд┐ рдЖрдк рдЕрдзрд┐рдХ рдЧрдВрднреАрд░ рдПрдирдПрд▓рдпреВ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЕрдкрдиреЗ рдХреМрд╢рд▓ рдХреЗ рд▓рд┐рдП рд░рд╛рд╕рд╛ рдпрд╛ рджреАрдкрдкрд╛рд╡рд▓реЛрд╡ рдХреЛ рдкреЗрдВрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЙрдиреНрд╣реЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЯреИрдореНрдмреЛрд░рд┐рди рдХреЗ рд╕рд╛рде рдЕрддрд┐рд░рд┐рдХреНрдд рдиреГрддреНрдп рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╕рд░реНрд╡рд░ рд░рд╣рд┐рддред рдпрджрд┐ рдЖрдкрдХреЛ рдХреЛрдбрд┐рдВрдЧ рдХрд╛ рдмрд┐рд▓реНрдХреБрд▓ рднреА рдорди рдирд╣реАрдВ рд╣реИ, рддреЛ рдЖрдкрдХреЛ Aimylogic рдЬреИрд╕реЗ рд╡рд┐рдЬрд╝реБрдЕрд▓ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЯрд╛рд▓рд┐рд╕ рдмрдирд╛рддреЗ рд╕рдордп, рдореИрдВ рдХрд┐рд╕реА рддрд░рд╣ рдХреЗ рдордзреНрдпрд╡рд░реНрддреА рд░рд╛рд╕реНрддреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪ рд░рд╣рд╛ рдерд╛ред рджреЗрдЦрддреЗ рд╣реИрдВ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИред
рдареАрдХ рд╣реИ, рдЕрдм рдЕрдкрдиреЗ рдХреМрд╢рд▓ рдХреЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдВ , рдкреНрд░рд▓реЗрдЦрди рдкрдврд╝реЗрдВ, рдФрд░ рдЕрджреНрднреБрдд рдХреМрд╢рд▓ рдмрдирд╛рдПрдВ!