рдСрдЯреЛрдбрд╛рдлрд╝ рдореЗрдВ рд░реВрдЯрд┐рдВрдЧ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░реЗрдВ

рдСрдЯреЛрдбрд╛рдлрд╝реЗ - рдиреЛрдб.рдЬреЗрдПрд╕ рдлреНрд░реЗрдорд╡рд░реНрдХ, рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рд╢реБрд░реВ: habrahabr.ru/blogs/nodejs/135089

рд▓реЗрдЦ рдХрд╛ рдореБрдЦреНрдп рднрд╛рдЧ рдСрдЯреЛрдбрд╛рдлреЗ рдХреЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ рдХрд░рдиреЗ, URL рдмрдирд╛рдиреЗ рдЖрджрд┐ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдкрд┐рдд рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдПрдХ рд╢реБрд░реБрдЖрдд рдХреЗ рд▓рд┐рдП, рдореИрдВ рд╕рд╛рдорд╛рдиреНрдп рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдкрд░ рдкреНрд░рдХрд╛рд╢ рдбрд╛рд▓рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ рдХрд┐ рдХреИрд╕реЗ рдЖрд╡реЗрджрди рдЬреБрдбрд╝реЗ рд╣реБрдП рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рддрд╛рдХрд┐ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рд╕рдХреЗ рдХрд┐ рд╣рдо рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рдХреЗ рдХрд┐рд╕ рд╣рд┐рд╕реНрд╕реЗ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░реЗрдВрдЧреЗред

рдзреВрд▓ рдХрд╣рд╛рдВ рд╕реЗ рдЖрддреА рд╣реИ


рдЖрдЗрдП рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЖрд░реЗрдЦ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░реЗрдВ:



рдЖрд░реЗрдЦ рдореЗрдВ, рдЖрдк рдХрдИ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рд╡рд┐рднрд┐рдиреНрди рдЙрдкрдХрд░рдгреЛрдВ рдФрд░ рд╡рд┐рднрд┐рдиреНрди рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рдмрджрд▓реЗ рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЖрд╡реЗрджрди рд╕реЗ рдЬреБрдбрд╝рддреЗ рд╣реИрдВред (рд╡рд░реНрддрдорд╛рди рдореЗрдВ, рдЖрдк рдХреЗрд╡рд▓ http рдФрд░ websockets рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдСрдЯреЛрдбрд╛рдлреЗ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ)

рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ, рдкреНрд░рддреНрдпреЗрдХ рдХрдиреЗрдХреНрд╢рди рдПрдХ рдХреНрд▓рд╛рдЗрдВрдЯ рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИред рдПрдХ рдХреНрд▓рд╛рдЗрдВрдЯ рдкреНрд░рддреНрдпреЗрдХ http рдЕрдиреБрд░реЛрдз рдФрд░ рдХрдиреЗрдХреНрд╢рди рдХреЗ рд▓рд┐рдП websockets рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕рдорд╛рди рд╕рддреНрд░ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рд╡рд╛рд▓реЗ рдЧреНрд░рд╛рд╣рдХ рдПрдХ рд╣реА рд╕рддреНрд░ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╣реИрдВред рдЖрдорддреМрд░ рдкрд░ рдкреНрд░рддрд┐ рд╕рддреНрд░ рдПрдХ рд╕рддреНрд░ рдПрдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИред

рдЦреИрд░, рдПрдХ рддрд╛рд░реНрдХрд┐рдХ рдирд┐рд╖реНрдХрд░реНрд╖ рдХреЗ рд▓рд┐рдП, "рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛" рдШрдЯрдХ рдЖрд░реЗрдЦ рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬреЛ рдЖрдкрдХреЛ рд╡рд┐рднрд┐рдиреНрди рд╕рддреНрд░реЛрдВ рдХреЛ рдмрд╛рдВрдзрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЬреЛ рдХрд┐рд╕реА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╡рд┐рд╢реЗрд╖ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдкрд╛рд░рд┐рдд рдХрд░ рдЪреБрдХреЗ рд╣реИрдВред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ, рдкреНрд░рддреНрдпреЗрдХ UserIdentity рдСрдмреНрдЬреЗрдХреНрдЯ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд╕рд╛рде рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИред



рдкреИрд╕рд╛ рдХрд╣рд╛рдВ рдЬрд╛рддрд╛ рд╣реИ


рддреЛ рд╣рдо рдЗрд╕ рд▓реЗрдЦ рдХреЗ рд╡рд┐рд╖рдп рдкрд░ рдЖрддреЗ рд╣реИрдВ: рд▓реЗрдЦрди рд░реВрдЯрд┐рдВрдЧред рдкреНрд░рддреНрдпреЗрдХ рдХреНрд▓рд╛рдЗрдВрдЯ, рдПрдХ рдЕрдиреБрд░реЛрдз рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЗрд╕реЗ рдПрдХ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рдореЗрдВ рдмрдирд╛рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рд░рд╛рдЙрдЯрд░ рдХреЛ рднреЗрдЬрддрд╛ рд╣реИред рдФрд░ рд╡рд╣ рдмрджрд▓реЗ рдореЗрдВ, рд░рд╛рдЙрдЯрд┐рдВрдЧ рдЯреЗрдмрд▓ (рдЖрд░реЗрдЦ рдореЗрдВ рд░реВрдЯ рдореИрдк) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд╛рдВрдЫрд┐рдд рдирд┐рдпрдВрддреНрд░рдХ рдХреА рд╡рд╛рдВрдЫрд┐рдд рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЗ рдЕрдиреБрд░реЛрдз рдХреЛ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред

рдЗрд╕ рдкреНрд░рдХрд╛рд░: рдХрд┐рд╕реА рднреА рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдкреНрд░рддреНрдпреЗрдХ рдЕрдиреБрд░реЛрдз рдХреЛ рдПрдХ рд╕реНрдерд╛рди рдкрд░ рд╡рд░реНрдгрд┐рдд рддрд╛рд▓рд┐рдХрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ



рд░реВрдЯрд┐рдВрдЧ рдЯреЗрдмрд▓


рд░реВрдЯрд┐рдВрдЧ рдЯреЗрдмрд▓ рдореЗрдВ, рдЖрдк рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

рд░рд╛рдЙрдЯрд┐рдВрдЧ рдЯреЗрдмрд▓ рди рдХреЗрд╡рд▓ рдЕрдиреБрд░реЛрдз рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рд╕рд░реНрд╡рд░ рдкрд░ URL рдЬрдирд░реЗрдЯ рдХрд░рдиреЗ рдХрд╛ рднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдЖрдкрдХреЛ рд▓рдЪреАрд▓реЗ рдврдВрдЧ рд╕реЗ URL рдХреЗ рд░реВрдк рдХреЛ рдмрджрд▓рдиреЗ рджреЗрддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдПрдХ рд╣реА рд╕реНрдерд╛рди рдкрд░ рд╕рдВрдкрд╛рджрди рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред

рдирд┐рдпрдВрддреНрд░рдХ рд╕рд╛рдзрд╛рд░рдг рд╡рд░реНрдЧ рд╣реИрдВред рдХреНрд░рд┐рдпрд╛рдПрдВ рд╡рд┐рдзрд┐рдпрд╛рдВ рд╣реИрдВред рдпрджрд┐ рд░рд╛рдЙрдЯрд┐рдВрдЧ рдЯреЗрдмрд▓ рдореЗрдВ рдпрд╣ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рддреЛ рдХреЛрдИ рдЕрдиреБрд░реЛрдз рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдирд┐рдпрдВрддреНрд░рдХ рд╡рд┐рдзрд┐рдпрд╛рдБ рдЬреЛ рдХреНрд░рд┐рдпрд╛ рдирд╣реАрдВ рд╣реИрдВ, рдХрд╣рд▓рд╛рдиреЗ рд╕реЗ рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИрдВред

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП, рдЖрдк рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╣реИрд▓реЛ рд╡рд░реНрд▓реНрдб рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВред рдЕрдм рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдХреЗ рд░рд╛рдЙрдЯрд░.рд░реБрд▓реНрд╕ рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рдирд┐рдпрдо рд╣реИ:

router : { rules : { '' : 'site.index' } } 

рдирд┐рдпрдо рдЕрдиреБрднрд╛рдЧ рдХреА рдХреБрдВрдЬрд┐рдпрд╛рдБ url рдкрддреЗ рдХреЗ рднрд╛рдЧ рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИрдВ рдЬреЛ рд╣реЛрд╕реНрдЯ рдирд╛рдо рдХреЗ рдмрд╛рдж рдФрд░ рдЕрдиреБрд░реЛрдз рдорд╛рдкрджрдВрдбреЛрдВ рд╕реЗ рдкрд╣рд▓реЗ рдЖрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП url рдкрддреЗ рдХреЗ рд▓рд┐рдП www.example.com/messages/unread?user_id=5 рдпрд╣ рднрд╛рдЧ рд╕рдВрджреЗрд╢реЛрдВ рдпрд╛ рдЕрдкрдард┐рдд рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИред

рдорд╛рди рдирд┐рдпрдо - рдпрд╣ рдЙрд╕ рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдкрде рд╣реИ рдЬреЛ 'рдирд┐рдпрдВрддреНрд░рдХ.рд╕рдВрдХреНрд░рдордг' рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд╕ рдЕрдиреБрд░реЛрдз рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

 router : { rules : { '' : 'site.index', 'messages/unread' : 'dialogs.show_unread_messages' } } 


URL рдирд┐рд░реНрдорд╛рдг



рдирд┐рдпрдВрддреНрд░рдХ рдХреЛрдб рдореЗрдВ, рд╡рд╛рдВрдЫрд┐рдд URL рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, create_url рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:

 this.create_url( 'dialogs.show_unread_messages' ); //  '/messages/unread' 

рдЕрдХреНрд╕рд░ рд▓рд┐рдВрдХ рдХреЛ рджреГрд╢реНрдп рдореЗрдВ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЕрдм рдзреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЯреЗрдореНрдкрд▓реЗрдЯ рдЗрдВрдЬрди рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢реЗрд╖ рдпреВрдЖрд░рдПрд▓ рдлрд╝рдВрдХреНрд╢рди рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ:

 <a href="{#url}dialogs.show_unread_messages{/url}"> </a> 


рдкрд╛рд╕рд┐рдВрдЧ рдкреИрд░рд╛рдореАрдЯрд░



рдирд┐рдпрдВрддреНрд░рдХ рдХреЗ рдЕрдВрджрд░ рдПрдХ рд▓рд┐рдВрдХ рдмрдирд╛рдирд╛:

 this.create_url( 'dialogs.show_unread_messages', { user_id : 5 } ); //  '/messages/unread?user_id=5' 

рджреЗрдЦрдиреЗ рдореЗрдВ:

 <a href='{#url user_id="5"}dialogs.show_unread_messages{/url}'> </a> 


рд╣рдордиреЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдкрде рдореЗрдВ рд░рдЦрд╛



рдиреАрдЪреЗ рдкрдВрдХреНрддрд┐: рдмрд╛рд░реА / рд╕рдВрджреЗрд╢ / рдЕрдкрдард┐рдд? рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛_рдж = 5 рдореЗрдВ / рд╕рдВрджреЗрд╢ / рдЕрдкрдард┐рдд / рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ / 5

рдирд┐рдпрдо рдЕрдиреБрднрд╛рдЧ:

 rules : { '/messages/unread/user/<user_id:\\d+>' : 'dialogs.dialogs.show_unread_messages' } 

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╣рдо рдмрд╕ рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ рдирд╛рдо рдФрд░ рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдЕрдиреБрд░реВрдк рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рди рддреЛ рдирд┐рдпрдВрддреНрд░рдХ рдФрд░ рди рд╣реА рджреГрд╢реНрдп рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рд╣рдо рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рддреЗ рд╣реИрдВ


рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреБрдЫ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдХреЗрд╡рд▓ рддрднреА рдЬрдм рд╡реЗ POST рдЕрдиреБрд░реЛрдз рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдпрд╛ WebSockets рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЖрдП рд╣реЛрдВред рдЗрд╕реЗ рд╕реАрдзреЗ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

 rules : { //       POST 'update_message' : 'dialogs.update_message | post' } 

рдкреЛрд╕реНрдЯ рдХреА рдЬрдЧрд╣ рдбрд┐рд▓реАрдЯ рдФрд░ ws рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЙрддреНрддрд░рд╛рд░реНрджреНрдз рдХреЗрд╡рд▓ рд╡реЗрдмрд╕реЙрдХреЗрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдХреЙрд▓ рдХреЛ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдХрд░рддрд╛ рд╣реИ

рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдЕрд▓реНрдкрд╡рд┐рд░рд╛рдо рд╕реЗ рд╕рдореВрд╣реАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

 rules : { //       POST 'delete_message' : 'dialogs.delete_message | post, delete' } 

рдЕрдВрддрд░рд╛рд▓ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рдирд╣реАрдВ рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдк рдЖрд╕рд╛рдиреА рд╕реЗ рдПрдХ рд╕реБрдВрджрд░ рджреГрд╢реНрдп рдореЗрдВ рд╕рдм рдХреБрдЫ рд╕рдВрд░реЗрдЦрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ

рдбреЛрдореЗрди рдирд╛рдо рдФрд░ рдкреЛрд░реНрдЯ рджреНрд╡рд╛рд░рд╛ рдлрд╝рд┐рд▓реНрдЯрд░ рдЕрдиреБрд░реЛрдз

 rules : { 'hostname:m.domain.com port:3000 /' : 'mobile.index' } 

рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдЗрд╕ рд╡рд┐рд╖рдп рдХрд╛ рдЦреБрд▓рд╛рд╕рд╛ рдЖрдЧрд╛рдореА рд╕рд╛рдЗрдЯ рдореЗрдВ рдкреНрд░рд▓реЗрдЦрди рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

рдкреБрдирд╢реНрдЪ:


рдЧрд┐рдереБрдм рд╕реНрд░реЛрдд рдХреЛрдб: рдСрдЯреЛрдбрд╛рдлреЗ
рдЯреНрд╡рд┐рдЯрд░ рдлреНрд░реЗрдорд╡рд░реНрдХ @node_autodafe рдХрд╛ рдкрд╛рд▓рди рдХрд░реЗрдВ

рдпрджрд┐ рдЖрдк рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рднрд╛рдЧ рд▓реЗрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдпрд╛ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдврд╛рдВрдЪреЗ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рдорджрдж рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ - PM рдкрд░ рд▓рд┐рдЦреЗрдВ рдпрд╛ gife.com рдкрд░ jifeon рдкрд░

Source: https://habr.com/ru/post/In135722/


All Articles