рд░реВрдбреНрд╕ рдкрд░ Node.js рдмрдирд╛рдо рд░реВрдмреА

рд░реВрдбреНрд╕ рдкрд░ Node.js рдмрдирд╛рдо рд░реВрдмреА


рдЕрдзрд┐рдХрд╛рдВрд╢ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд╡рд┐рдкрд░реАрдд, рдореИрдВрдиреЗ Node.js рдХреЗ рд╕рд╛рде рд▓рд╛рдбрд╝-рдкреНрдпрд╛рд░ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛, рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рдореИрдВрдиреЗ рд░реВрдмреА рдХреЛ рд░реВрд▓реНрд╕ рдСрди рд╡рд╛рдЗрд▓реНрд╕ рд░реЗрд▓реНрд╕ рдФрд░ рдлрд┐рд░ рд░реВрдмреА рдСрди рд░реЗрд▓ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рджреНрд╡рд╛рд░рд╛ рдорд╛рдЗрдХрд▓ рд╣рд╛рд░реНрдЯрд▓ рджреНрд╡рд╛рд░рд╛ рдЕрдкрдиреЗ рдЖрдк рдХреЛ рд░реВрдмреА рдореЗрдВ рдбреБрдмреЛ рджрд┐рдпрд╛ред
рдиреАрдЪреЗ рдЬреЛ рдХреБрдЫ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ рд╡рд╣ рд░реЗрд▓реНрд╕ рдкрд░ рдиреЛрдб.рдЬреЗрдПрд╕ рдФрд░ рд░реВрдмреА рдХреА рдЕрд╡реИрдЬреНрдЮрд╛рдирд┐рдХ рддреБрд▓рдирд╛ рд╣реИред

рдЪрд▓реЛ рд╢реБрд░реВ рд╣реЛ рдЬрд╛рдУ!

Node.js - рдврд╛рдВрдЪрд╛ рдирд╣реАрдВ!

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, Node.js рдирд┐рдореНрди-рд╕реНрддрд░реАрдп рд░реВрдЯрд┐рдВрдЧ рдФрд░ рдкреНрд░рд╢рд╛рд╕рди рдХреНрд╖рдорддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд╡реЗрдм рд╕рд░реНрд╡рд░ рд╣реИ, рдЬрд┐рд╕реЗ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдФрд░ рдЙрдЪреНрдЪ рдЧрддрд┐ рдХреЗ рд▓рдХреНрд╖реНрдп рдХреЗ рд╕рд╛рде рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИред рдФрд░ рдЗрд╕ рддреБрд▓рдирд╛ рдХреА рд╢реБрд░реБрдЖрдд рд╕реЗ, Node.js рдХреЛ Express.js рдФрд░ Mongoose рдХреЗ рд░реВрдк рдореЗрдВ рдХреБрдЫ "рджреЛрд╕реНрддреЛрдВ" рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ (рдЬрдм рддрдХ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдЖрдкрдиреЗ рдЕрдкрдиреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд░реВрдк рдореЗрдВ MongoDB рдХреЛ рдЪреБрдирд╛ рд╣реИ)ред рдЬрдмрдХрд┐ рджреВрд╕рд░реА рдУрд░, рд░реВрдмреА рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╕рдмрд╕реЗ рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪрд╛ рд╣реИред рддрдХрдиреАрдХреА рд░реВрдк рд╕реЗ, рдПрдХ рдирд┐рд╖реНрдкрдХреНрд╖ рддреБрд▓рдирд╛ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ Node.js рдмрдирд╛рдо рдерд┐рди рдпрд╛ рдпреВрдирд┐рдХреЙрд░реНрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдиреА рд╣реЛрдЧреА, рди рдХрд┐ рд░реЗрд▓, рд▓реЗрдХрд┐рди рд╣рдо рдПрдХ рдкреВрд░реНрдг рдмреИрдХ-рдПрдВрдб рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рди рдХрд┐ рдХреЗрд╡рд▓ рдЗрд╕рдХреЗ рдЗрдВрдЬрди рдбрд┐рдмреНрдмреЗред

рд░реВрдмреА рдПрдХ рд╕реБрдирд╣рд░реЗ рджрд┐рд▓ рдХреЗ рд╕рд╛рде рдПрдХ рдореВрдбреА рдмреВрдврд╝рд╛ рдЖрджрдореА рд╣реИред

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

:VARIABLE => тАЬ--тАЭ def func arg = "   " VARIABLE do |iterator| Module::Class    class Subclass < Class @instance ,   Perl 

рдФрд░ рдЕрдиреНрдп рддрд╛рдордЭрд╛рдо)ред

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

 10.minutes.ago тАЬstringтАЭ.sqeeze ['array','elements'].include?('array') #true 

рд╣рд╛рдВ, рдпрд╣ рд╕рдм рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдЬреНрдЮрд╛рди рдФрд░ рдХрд╕реНрдЯрдо рддрд░реАрдХреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА ... рдпрд╛ рдХреБрдЫ рдФрд░ рдЬреИрд╕реЗ рдХрд┐ _undercore ред

100% рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рднрдпрд╛рдирдХ рд╣реИ, рд▓реЗрдХрд┐рди рджрд░реНрдж рд╕реЗ рдЕрдзрд┐рдХред

рднрд╛рд╖рд╛рдУрдВ рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рдмрд╛рдж, рдЕрдм рдЖрдк рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╡рд┐рдХрд╛рд╕ рдкрд░ рдзреНрдпрд╛рди рджреЗ рд╕рдХрддреЗ рд╣реИрдВред Node.js рдЕрдкрдиреЗ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдлреНрд░рдВрдЯ-рдПрдВрдб-рдмреИрдХ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╡рд╛рддрд╛рд╡рд░рдг рдХреЗ рд╕рд╛рде рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЬрдмрдХрд┐ рд░реЗрд▓ рдореЗрдВ рдЖрдкрдХреЛ SQL, рд░реВрдмреА рдФрд░ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реЗ рдирд┐рдкрдЯрдирд╛ рд╣реЛрддрд╛ рд╣реИред рдпрджреНрдпрдкрд┐, рдРрд╕рд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ, рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд▓рд╛рдн - рджреЛрдиреЛрдВ рдХреЗ рдХреБрдЫ рдЕрдзреНрдпрдпрди рдХреЗ рдмрд╛рдж, рдореИрдВ " рдУрд╡рд░рд░реЗрдЯреЗрдб рдлрд╛рдпрджреЗ " рдХреА рд╢реНрд░реЗрдгреА рдореЗрдВ рднрд╛рд╖рд╛ рдХреА рдПрдХрд░реВрдкрддрд╛ рд▓рд┐рдЦреВрдВрдЧрд╛ред рдХреЗрд╡рд▓ рдХреБрдЫ рдЙрджрд╛рд╣рд░рдг рдФрд░ рдмреНрд▓реЙрдЧ рд▓реЗрдЦреЛрдВ рдХреЛ рдкрдврд╝рдХрд░ рд░реВрдмреА рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рдирд╛ рдХрдард┐рди рдирд╣реАрдВ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд░реВрдмреА рдХреЗ рд╕рд╛рде, рдЖрдк рд▓рдЧрднрдЧ рдкреВрд░реА рддрд░рд╣ рд╕реЗ "рдХреЙрд▓рдмреИрдХ рдиреВрдбрд▓реНрд╕" рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреВрд▓ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде рдЕрдкрдиреА рдЧреИрд░-рдЕрд╡рд░реБрджреНрдз рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХреЗ рдХрд╛рд░рдг рд╣реЛрддрд╛ рд╣реИ (рдЬрд┐рд╕реЗ рдореИрдВ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдорд╣рд╛рди рд╕рдВрдЧрд╛рдорд┐рддрд┐ рдХреЗ рдЪреЗрд╣рд░реЗ рдореЗрдВ рдкреНрд▓рд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╣рдЪрд╛рдирддрд╛ рд╣реВрдВ)ред рдФрд░ рдлрд┐рд░ рднреА, рднрд▓реЗ рд╣реА рдореИрдВ рдпрд╣ рдХрд╣рдирд╛ рдирд╣реАрдВ рдЪрд╛рд╣рддрд╛, рдХрднреА-рдХрднреА рдирд╛рдо, рд╡рд░реНрдЧ рдФрд░ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдХрд░рдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрддрд╛ рд╣реИред

рд░реЗрд▓ рдЖрдкрдХреЛ рдЬрд░реВрд░рдд рдХреА рд╣рд░ рдЪреАрдЬ рдореБрд╣реИрдпрд╛ рдХрд░рд╛рддреА рд╣реИред

рдЕрдм рднрд╛рд╖рд╛ рдФрд░ рдЙрд╕рдХреЗ рдкрд░рд┐рдЪрд╛рд░рдХ рдХреЛ рдЫреЛрдбрд╝ рджреЗрдВред
Node.js + Express.js рдирд┐рдпрдВрддреНрд░рдХреЛрдВ, рд╡рд┐рдЪрд╛рд░реЛрдВ рдФрд░ рд╕рд╣рд╛рдпрдХреЛрдВ рдХреЗ рд╕рд╛рде рд░реВрдЯрд┐рдВрдЧ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрд╣ рдЯреВрд▓рдмреЙрдХреНрд╕ рд░реЗрд▓ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрднреА рднреА рдлреАрдХрд╛ рд╣реИред
рдПрдХ рд╕рд╛рджреГрд╢реНрдп рдХреЗ рд▓рд┐рдП, Node.js + Express.js рдХреА рдкреГрд╖реНрдарднреВрдорд┐ рдкрд░ рд░реЗрд▓ рдЕрдореЗрд░рд┐рдХреА рдкрд░рд┐рдзрд╛рди рдХреА рдкреГрд╖реНрдарднреВрдорд┐ рдкрд░ рдореБрдЬреА рдХреА рддрд░рд╣ рд╣реИ (рдХрдкрдбрд╝реЗ рдФрд░ рдШрд░реЗрд▓реВ рд╕рд╛рдорд╛рди рдмреЗрдЪрдиреЗ рд╡рд╛рд▓реА рджреЛ рдмрдбрд╝реА рдХрдВрдкрдирд┐рдпрд╛рдВ - рд▓рдЧрднрдЧред рдЕрдиреБрд╡рд╛рджрдХ) ред рджреЛрдиреЛрдВ рдШрд░ рдХреЗ рд▓рд┐рдП рдХрдкрдбрд╝реЗ рдФрд░ рд╕рд╛рдорд╛рди рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЕрдореЗрд░рд┐рдХреА рдкрд░рд┐рдзрд╛рди рдХрдкрдбрд╝реЗ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдирд╣реАрдВ рд▓рдЧрддреЗ рд╣реИрдВ, рд╣рдореЗрд╢рд╛ рдЕрдкрдиреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рдкреВрд░рд╛ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдЕрдкрдиреЗ рдкреИрдВрдЯ рдХреЗ рд╕рд╛рде рд╢рд╛рдВрдд рджрд┐рдЦрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдЕрдХреНрд╕рд░ рдЕрдиреНрдп рдЪреАрдЬреЛрдВ рдХреЗ рд╕рд╛рде рдирд╣реАрдВ рджрд┐рдЦрддреЗ рд╣реИрдВред рджреВрд╕рд░реА рдУрд░, рдореБрдЬреА рдиреЗ рдЬреБрдиреВрдиреА рд░реВрдк рд╕реЗ рджреБрдирд┐рдпрд╛ рдореЗрдВ рд╕рдм рдХреБрдЫ рдЙрд╕реА рд╢реИрд▓реА рдореЗрдВ рд╕рдЬрд╛рдпрд╛ рд╣реИ, рдФрд░ рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ, рдПрдХ рд╣реА рдХрдкрдбрд╝реЗ рд╕реЗред

рд▓реЗрдХрд┐рди рд╡рд╛рдкрд╕ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреЗ рд▓рд┐рдПред
рд░реЗрд▓ рдмрд┐рд▓реНрдЯ-рдЗрди рдЗрдХреЛрд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╕рд╛рде рддреБрд░рдВрдд рдЖрддреА рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдкреВрд░реЗ MVC рдФрд░ рдЙрдкрдпреЛрдЧреА рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдХреЗрд╡рд▓ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХреНрд▓рдмрдлреБрдЯ рджреНрд╡рд╛рд░рд╛ рдмрд░реНрдмрд╛рдж рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред
рдпрд╣рд╛рдБ рдХреБрдЫ рдЙрджрд╛рд╣рд░рдг рдлрд╝рдВрдХреНрд╢рдВрд╕ рд╣реИрдВ: url_for рдФрд░ image_tag ред url_for рдПрдХ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдлрд╝рдВрдХреНрд╢рди рд╣реИ рдЬреЛ рд╣рдореЗрд╢рд╛ рджрд┐рдП рдЧрдП рдбреЗрдЯрд╛ рдСрдмреНрдЬреЗрдХреНрдЯ ( @products , рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП) рдХрд╛ url рд▓реМрдЯрд╛рдПрдЧрд╛ , рдФрд░ image_tag рд╣рдореЗрд╢рд╛ рдкрд░рд┐рд╕рдВрдкрддреНрддрд┐ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рд╕реЗ рдЫрд╡рд┐ рдХрд╛ рд╕рд╣реА рдпреВрдЖрд░рдПрд▓ рдЙрдард╛рдПрдЧрд╛ ред
рдмреЗрд╢рдХ, рдпрд╣ рд╕рдм Node.js рдореЗрдВ рднреА рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрд╕рдХреЗ рд▓рд┐рдП рдореЙрдбреНрдпреВрд▓ рдФрд░ рд╣реЗрд▓реНрдкрд░реНрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдлреА рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рд╕рд╛рде рд╣реА, рд░реЗрд▓ рдореЗрдВ, рдЖрдкрдХреЛ рдбреЗрдЯрд╛ рдореЙрдбрд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд┐рд▓реНрдХреБрд▓ рднреА рдЪрд┐рдВрддрд╛ рдХрд░рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рдирд╣реАрдВ рд╣реИред рд╣рд╛рдВ, Node.js рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, Mongoose рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЗрд╕рдХреЗ рд╕рд╛рде рдбреЗрдЯрд╛ рдкрд░ рдкреВрд░реНрдг рдирд┐рдпрдВрддреНрд░рдг рдорд╣рд╕реВрд╕ рдХрд░рдирд╛ рдХрдард┐рди рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рджреЗрддрд╛ рд╣реИ

 Product.find(params[:id]) 

рд░реЗрд▓, рдореЙрдбреНрдпреВрд▓ рдФрд░ рдХрдВрдЯреНрд░реЛрд▓рд░ рд╕реЗ рд░реЗрд▓ рдореЗрдВ рд╣рд░ рдЬрдЧрд╣ рдЙрдкрд▓рдмреНрдз рд╣реИред

рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдЗрди рд╕рднреА рдЪрд┐рдкреНрд╕ рдореЗрдВ рдПрдХ рдирдХрд╛рд░рд╛рддреНрдордХ рдкрд╣рд▓реВ рд╣реИред рдореИрдВ рдЕрдХреНрд╕рд░ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ рдореИрдВрдиреЗ рдРрд╕рд╛ рдХрд░рдиреЗ рдХрд╛ рд╕рд╣реА рддрд░реАрдХрд╛ "рдЕрдиреБрдорд╛рди" рдХрд┐рдпрд╛ рд╣реИ, рдФрд░ рд▓рдЧрднрдЧ рд╣рдореЗрд╢рд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рдпрд╛рдж рдЖрддрд╛ рд╣реИред рдФрд░ рдпрд╣ рднреА, рдЬрдм рдХреБрдЫ рдЯреВрдЯ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдореБрд╢реНрдХрд┐рд▓ рд╡рд┐рд╢реЗрд╖ рдЪрд░ рдирд╛рдореЛрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХреНрд╢рди рдиреЗрдо + рдХрдВрдЯреНрд░реЛрд▓рд░ рдирд╛рдо + "_рдкрд╛рде" рдХреЛ рдПрдХ рд╕рд╛рде рдЪрд┐рдкрдХрд╛рддреЗ рд╣реБрдП, рдмреНрд░реЗрдХрдбрд╛рдЙрди рдХреЗ рдХрд╛рд░рдг рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛ рдХрд╛рдлреА рдореБрд╢реНрдХрд┐рд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЖрдк рдЬрд╛рджреБрдИ рд░реВрдк рд╕реЗ рдирдпрд╛ -рдкреНрд░реЛрдбрдХреНрдЯ_рдкреИрде рд╣реЗрд▓реНрдкрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рд╡рд╛рдВрдЫрд┐рдд рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЗ рд▓рд┐рдП рд╡рд░реНрддрдорд╛рди рдкрде рд▓реМрдЯрд╛рддрд╛ рд╣реИ) ред
Node.js рдХреЗ рд╕рд╛рде, рдЖрдк рдХреЗрд╡рд▓ рд╡рд╣реА рджреЗрдЦрддреЗ рд╣реИрдВ рдЬреЛ рдЖрдкрдиреЗ рдЦреБрдж рд▓рд┐рдЦрд╛ рдерд╛ - рд╡рд┐рд░реВрдкрдг рдиреНрдпреВрдирддрдо рд╣реИред

рдХрдИ рд▓реЛрдЧ рд░реЗрд▓ рдХреЗ рд▓рд┐рдП рдореЙрдбреНрдпреВрд▓ рдмрдирд╛рддреЗ рд╣реИрдВ рдФрд░ рд╕реБрдзрд╛рд░рддреЗ рд╣реИрдВред

рдЕрдЧрд▓рд╛: рдкрд╛рд░рд┐рд╕реНрдерд┐рддрд┐рдХ рддрдВрддреНрд░ред рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рдПрдирдУрдбреАрдПрдо рдиреЗ рдПрдирдкреАрдПрдо рдХреЗ рд╕рд╛рде рдПрдХ рд╢рд╛рдирджрд╛рд░ рд╢реБрд░реБрдЖрдд рдХреА рдереА, рдзреВрд▓ рд╡рд┐рднрд┐рдиреНрди рдЬрд░реВрд░рддреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рд▓реЛрдХрдкреНрд░рд┐рдп рдкреИрдХреЗрдЬреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдкрд░ рдмрд╕рд╛ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдкреНрд░рддрд┐рдпреЛрдЧрд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд░рд┐рдХреЙрд░реНрдб рддреЛрдбрд╝ рд░рд╣реА рд╣реИред рдЕрдВрдд рдореЗрдВ, рдореБрдЭреЗ рдЕрдХреНрд╕рд░ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕реБрдкрд░рдЧреНрд▓реВ рдХреЗ рд╕рд╛рде рдПрдХ рдЯреВрдЯреА рд╣реБрдИ рдлреВрд▓рджрд╛рди рдХреЛ рдЧреЛрдВрдж рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реИред
рд░реЗрд▓ рдХреА рдУрд░, рдпрд╣ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдФрд░ рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд╕рдмрд╕реЗ рдордЬрдмреВрдд рдореБрдХреНрдд рднрдВрдбрд╛рд░ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИред рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдж рд░реВрдмреА рдЯреВрд▓рдмреЙрдХреНрд╕ рднреА рдкрд╕рдВрдж рд╣реИ, рдЬреЛ рдЯреВрд▓ рдХреА рд╕рд╛рдкреЗрдХреНрд╖ рд▓реЛрдХрдкреНрд░рд┐рдпрддрд╛ рдХреЛ рджрд┐рдЦрд╛рддрд╛ рд╣реИ, рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рджреНрд╡рд╛рд░рд╛ рдЙрдиреНрд╣реЗрдВ рддреЛрдбрд╝рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╣реА рдХрд╣рд╛ рд╣реИ, рдмрд╣реБрдд рд╕рд╛рд░реЗ рдореЙрдбреНрдпреВрд▓ рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдкрдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдиреЛрдб рдореЗрдВ рдЯрд╛рдЗрдк рдХрд░рдирд╛ рд╣реИ, рд░реЗрд▓ рдореЗрдВ рдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░ рдЬрд╛рддреЗ рд╣реИрдВред рдбреЗрдЯрд╛рдмреЗрд╕ рдХрдиреЗрдХреНрдЯрд┐рд╡рд┐рдЯреА, рдкреНрд░реЛрдлрд╛рдЗрд▓рд┐рдВрдЧ, рдХреИрд╢рд┐рдВрдЧ, рдорд╛рдЗрдЧреНрд░реЗрд╢рди, рдбреЗрдЯрд╛ рдореЙрдбрд▓, рдкрд╛рдЗрдкрд▓рд╛рдЗрди, рд░реВрдЯрд┐рдВрдЧ, рдХрдВрд╕реЛрд▓ рдХрдорд╛рдВрдб, рдЯреЗрд╕реНрдЯрд┐рдВрдЧ, рдФрд░ рднреА рдмрд╣реБрдд рдХреБрдЫ ... рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдлреЗрд╡рд┐рдХреЙрди рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдореМрдЬреВрдж рд╣реИ! рдмреЗрд╢рдХ, рдпрд╣ рд╕рдм рддреБрдЪреНрдЫ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рдм рдХреБрдЫ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдФрд░ рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдЗрди рд╕рднреА рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ Node.js рдореЙрдбреНрдпреВрд▓ рдХреЗ рдЯрдХрд░рд╛рд╡ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рди рджреЗрдЦреЗрдВ рдЬреЛ рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рджреЛрдкрд╣рд░ рддрдХ рдПрдХ рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде рд╕рдВрд╡рд╛рдж рдХрд░рдиреЗ рд╕реЗ рдЗрдирдХрд╛рд░ рдХрд░рддреЗ рд╣реИрдВред
рдЗрди рд╕рдмрд╕реЗ рдКрдкрд░ - рд░реЗрд▓ рдкрд░ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдФрд░ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреА рдПрдХ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛, Node.js. рдкрд░ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╣реИред рдЕрдкрдиреЗ 300+ рд╡реАрдбрд┐рдпреЛ рдХреЗ рд╕рд╛рде рдЕрдХреЗрд▓реЗ Railscasts ред рд▓реЗрдХрд┐рди рдпрд╣ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рд░реЗрд▓ рддреЗрдЬреА рд╕реЗ рдмрджрд▓ рд░рд╣реА рд╣реИ, рдФрд░ рдХрдИ рдкрд╛рдареНрдпрдкреБрд╕реНрддрдХреЛрдВ рдиреЗ рдкрд╣рд▓реЗ рд╣реА рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХрддрд╛ рдЦреЛ рджреА рд╣реИ, рдФрд░ рдЕрдиреНрдп рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХреНрд░реЙрд▓ рдХреЗ рд╕рд╛рде рд╡рд┐рднрд┐рдиреНрди рд▓реЗрдЦреЛрдВ рдХреЗ рдкреНрд░рдХрд╛рд╢рди рдХреЗ рдмрд╛рдж рдЙрдирдХрд╛ рд╕рдорд╛рдзрд╛рди рдорд┐рд▓рд╛ред рдирддреАрдЬрддрди, рд░реЗрд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рд╡рд╛рд▓реЛрдВ рдХреЗ рдЬрд╡рд╛рдм рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП Google < 1 year old рдЪрдпрдирдХрд░реНрддрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмреБрджреНрдзрд┐рдорд╛рди рд╣реЛ рдЧрдпрд╛ рдФрд░ рд░реЗрд▓ рдЧрд╛рдЗрдб рдХреЗ рд╕рд╛рде рдЗрд╕ рдЦреЛрдЬ рдХреЛ рд╢реБрд░реВ рдХрд┐рдпрд╛ред

рд░реЗрд▓ рдореЗрдВ рдЬреЗрдЯ-рдкреИрдХ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗред

рдЕрдВрдд рдореЗрдВ, рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рд╣реА рдлреНрд░реЗрдорд╡рд░реНрдХ, рдбреЗрдЯрд╛рдмреЗрд╕, рдореЙрдбреНрдпреВрд▓ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдП рдЧрдП рд╣реИрдВ рдФрд░ рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реИред Node.js рдХреЛ рд╕рдм рдХреБрдЫ рд▓рд┐рдЦрдиреЗ рдФрд░ рд╕рдм рдХреБрдЫ рдПрдХ рд╕рд╛рде рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рдЕрдзрд┐рдХ рд╕рдордп рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ (рдлрд┐рд░ рд╕реЗ рддреГрддреАрдп-рдкрдХреНрд╖ рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХреА рдЕрд╕рдВрдЧрддрд┐ рдФрд░ рдПрдХ рдХрдареЛрд░ рд╕рдВрд░рдЪрдирд╛ рдХреА рдХрдореА рдХреЗ рдХрд╛рд░рдг)ред рд░реЗрд▓ рдореЗрдВ, рдХреЗрд╡рд▓ рдПрдХ рдЖрджреЗрд╢ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрдкреВрд░реНрдг рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдирд╛

 rails generate scaffold Post name:string title:string content:text 

рдФрд░ рдЖрд╡рд╢реНрдпрдХ рдирд┐рдпрдВрддреНрд░рдХ, рджреГрд╢реНрдп рдФрд░ рдореЙрдбрд▓ рдЕрдкрдиреЗ рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВрдЧреЗред

рдЕрдХреНрд╕рд░ рдпрд╣ 1 рдорд┐рдирдЯ рдмрдирд╛рдо 1 рдШрдВрдЯреЗ (рдбреЗрдЯрд╛рдмреЗрд╕ рд╕рдВрд╕реНрдерд╛рдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛) рд▓реЗрддрд╛ рд╣реИред рдпрд╣ рдЗрддрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдХрд╛рдо рдирд╣реАрдВ рд╣реИ, рдмрд▓реНрдХрд┐ рдЯрд╛рдЗрдкреЛ рдХреЗ рд▓рд┐рдП рдХрдордЬреЛрд░ рд╣реИ, рдФрд░ рдЖрдкрдХреА рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП рд╕рд┐рд░реНрдл рдПрдХ рдЯрди рдХреА рдЬрд╛рдирдХрд╛рд░реА рд╣реИред рдореИрдВ рд╣рдореЗрд╢рд╛ рд░реЗрд▓ рдордЪрд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рд╕рд░рд▓ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХреЗ рд▓рд┐рдП рддреЗрдЬреА рд╕реЗ рд╡рд┐рдХрд▓реНрдк рдХреЗ рд╕рд╛рде рдЖрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИред

рдирд┐рд╖реНрдХрд░реНрд╖ рдореЗрдВ ...

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

рдкреАрдПрд╕ рдЕрдиреБрд╡рд╛рджрдХ рд╕реЗ:
рдмреЗрд╢рдХ, рд░реЗрд▓ рдХреА рддреБрд▓рдирд╛ рд╢реБрджреНрдз рдиреЛрдб рдХреЗ рд╕рд╛рде рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рдЗрд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХреБрдЫ рдПрдорд╡реАрд╕реА рдврд╛рдВрдЪреЗ рдХреЗ рд╕рд╛рде рдХрд░рдирд╛ рдЕрдзрд┐рдХ рд╕рд╣реА рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, Sails.js ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рд▓реЗрдЦ рдПрдХ рдиреМрд╕рд┐рдЦрд┐рдпрд╛ рд╡реЗрдм рдбреЗрд╡рд▓рдкрд░ (рдЬреЛ рдореИрдВ рдерд╛) рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рдЬрд╛рдирдХрд╛рд░реА рдХреА рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд░рд╛рд╢рд┐ рд╡рд╣рди рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЦреБрдж рдХреЛ рдПрдХ рд░реВрдкрдХ рдЯрд┐рдкреНрдкрдгреА рдХреА рдЕрдиреБрдорддрд┐ рджреВрдВрдЧрд╛ред
рд╡реНрдпрдХреНрддрд┐рдЧрдд рдЕрдиреБрднрд╡ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, Node.js + Sails.js рдиреЗ рдореБрдЭреЗ рдЫреЛрдЯреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд░реЗрд▓ рдХрд╛ рдПрдХ рдЖрд╕рд╛рди рд╡рд┐рдХрд▓реНрдк рджрд┐рдпрд╛ - рдФрд░ рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдПрдХ рдЧрдВрднреАрд░ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдЖрд░рдУрдЖрд░ рдХреА рд╡рд┐рд╢реНрд╡рд╕рдиреАрдпрддрд╛ рдФрд░ рддрд╛рдХрдд, рд╡реЗ рдЕрднреА рднреА рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╡реЗ рдмреИрдХ-рдПрдВрдб рдбреЗрд╡рд▓рдкрд░ рдХреА рдЖрддреНрдорд╛ рдХреЛ рдкрдХрдбрд╝рддреЗ рд╣реИрдВред
рдЗрд╕реЗ рдкрдврд╝рдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рдХреЛ рдзрдиреНрдпрд╡рд╛рдж!

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


All Articles