WidLib - рд╡рд┐рдЬреЗрдЯреНрд╕ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рдШреЛрд╖рдгрд╛рддреНрдордХ js- рдлреНрд░реЗрдорд╡рд░реНрдХ

рдЖрдЬ рдореИрдВ рдПрдХ рдЬреЗрдПрд╕ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдЬреЛ рдЖрдкрдХреЛ рдХреНрд▓рд╛рдЗрдВрдЯ рдФрд░ рд╕рд░реНрд╡рд░ рдХреЗ рдмреАрдЪ рд╕рд╛рдЭрд╛ рдХрд┐рдП рдЧрдП рдЬреЗрдПрд╕ рдХреЛрдб рдХреА рдХрдИ рд▓рд╛рдЗрдиреЛрдВ рдореЗрдВ рдЗрдВрдЯрд░реИрдХреНрдЯрд┐рд╡ рдорд╛рдЗрдХреНрд░реЛ-рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓реЗрдЦрдХ рдХреЗ рдкрд╛рд╕ рдЗрд╕реЗ рджрд┐рдорд╛рдЧ рдореЗрдВ рд▓рд╛рдиреЗ рдХреА рд╣рд┐рдореНрдордд рдирд╣реАрдВ рдереАред рдореИрдВ рдорд╛рдлреА рдЪрд╛рд╣рддрд╛ рд╣реВрдБред



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

рдЕрдзрд┐рдХрд╛рдВрд╢ рдЪреМрдЦрдЯреЗ рдХреЗ рд╡рд┐рдкрд░реАрдд, WidLib рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рд╣реЛрдиреЗ рдХрд╛ рджрд╛рд╡рд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ: рдпрд╣ рдмрд╣реБ-рдкреГрд╖реНрда рд╕рдВрд╡рд╛рдж рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рдЬрд▓реНрджреА рд╕реЗ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдХрд╛рд░реНрдпреЛрдВ рдХреА рд╕реАрдорд╛
  1. рд╡рд┐рддрд░рдг рдЖрджреЗрд╢ рд╡рд┐рдЬреЗрдЯ
  2. рд╡рд╛рдИ-рдлрд╛рдИ рдПрдкреНрд▓рд┐рдХреЗрд╢рди (рд╕реНрдерд╛рдиреАрдп рд╡рд╛рдИ-рдлрд╛рдИ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рддреЗ рд╕рдордп рд╢реЙрдкрд┐рдВрдЧ рд╕реЗрдВрдЯрд░ рдЧрд╛рдЗрдб рдпрд╛ рдПрдХ рдЗрдВрдЯрд░реИрдХреНрдЯрд┐рд╡ рдореЗрдиреВ)
  3. рдХреИрд▓рдХреБрд▓реЗрдЯрд░ (рдЛрдг, рдкреНрд▓рд╛рд╕реНрдЯрд┐рдХ рдХреА рдЦрд┐рдбрд╝рдХрд┐рдпрд╛рдВ рдФрд░ рджрд░рд╡рд╛рдЬреЗ)
  4. рд╡реЗрдмрд╕рд╛рдЗрдЯ рд╕рджрд╕реНрдпрддрд╛ рдкреНрд░рдкрддреНрд░
  5. рдХреНрд╡рд┐рдЬрд╝ (рдЧреЗрдорд┐рдВрдЧ, рд╕рд╛рде рд╣реА рд╕рд╛рде рд╡рд┐рдкрдгрди рдЕрднрд┐рдпрд╛рди рдФрд░ рдбреНрд░реЙ)
  6. рдЯреЗрд╕реНрдЯ (рдпреЛрдЧреНрдпрддрд╛ рдкрд░реАрдХреНрд╖рдг, рдкреНрд░рд╢рд┐рдХреНрд╖рдг, рдХрд░реНрдорд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо)
  7. рдСрдирд▓рд╛рдЗрди рд╕рд╣рд╛рдпрдХ (рдЬреИрд╕реЗ рдкрд░реНрдпрдЯрдХ рдорд╛рд░реНрдЧ рдпрд╛ рдХреЙрд▓ рд╕реЗрдВрдЯрд░ рд╕рд╣рд╛рдпрдХ рдХреЛ рдЪреБрдирдирд╛)
  8. рдореЛрдмрд╛рдЗрд▓ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рд╡рд┐рдЧреЗрдЯреНрд╕ рдПрдореНрдмреЗрдб рдХрд░рдирд╛ (рдпрд╣рд╛рдБ рдпрд╣ PhoneGap рдХреЗ рд╕рдорд╛рди рд╣реИ)
  9. рд╕рд╛рдорд╛рдЬрд┐рдХ рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рд▓рд┐рдП рд╕рдВрд╡рд╛рдж рдЕрдиреБрдкреНрд░рдпреЛрдЧ (рдлрд┐рд░ рд╕реЗ рдХреНрд╡рд┐рдЬрд╝, рдЧреИрд░-рд░реИрдЦрд┐рдХ рдорддрджрд╛рди)
  10. рдмреБрдХрд┐рдВрдЧ (рд╣рд╡рд╛рдИ рдЬрд╣рд╛рдЬ рдХрд╛ рдЯрд┐рдХрдЯ, рд╣реЛрдЯрд▓ рдХреЗ рдХрдорд░реЗ рдпрд╛ рджрдВрдд рдЪрд┐рдХрд┐рддреНрд╕рдХ рдХреЗ рд╕рдордп)
  11. рдЖрджрд┐

DSL рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдордиреЗ рдЕрдкрдиреЗ рдЖрдк рд╕реЗ рдкреВрдЫрд╛ рдХрд┐ рд╣рдо рдЗрди рд╕рдВрд╡рд╛рдж рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП (рдФрд░ рдХреБрдЫ рд╣рдж рддрдХ, рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреЗ рд▓рд┐рдП) рдПрдХ рдмрд╣реБрдд рд╣реА рд╕рд░рд▓, рдлрд┐рд░ рднреА рд▓рдЪреАрд▓реА рднрд╛рд╖рд╛ рдХреИрд╕реЗ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рд╣рдордиреЗ рд░реВрдмреА рдкрд░ рд░реВрдмреА рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рджреГрд╖реНрдЯрд┐рдХреЛрдг рдкрд░ рд╕рдореНрдореЗрд▓рди рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ред рд╕рд░рд▓ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рддреАрди рд▓рд╛рдЗрдиреЛрдВ рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП рд╣реИрдВ, рдЬрдЯрд┐рд▓ - рдереЛрдбрд╝рд╛ рдФрд░ред
рдЖрдЗрдП рд╕рд╛рдЗрдЯ рдкрд░ рдкрд┐рдЬреНрдЬрд╛ рдСрд░реНрдбрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рдЬреЗрдЯ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВ:
(рдбреАрдПрд╕рдПрд▓ рдЕрднреА рднреА рдЕрдВрддрд┐рдо рд░реВрдк рджрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╕реБрдЭрд╛рд╡реЛрдВ рдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИред)
Coffeescript
widlib=require("widlib-server") server=widlib.init #     (index_template=Handlebars.compile("...")), #     ,    @app.template template: index_template pages: type: #         template: type_template # @app.pages["type"].template body: " " #       submit,      (   ) #       onLeave, onEnter inputs: [ { value: "", type: "link", name: "type", price: 350 }, { value: "", type: "link", name: "type", price: 360 }, { value: "", type: "link", name: "type", price: 370 }, { value: " ", type: "link", name: "type", price: 380 }, ] size: body: " " #      -    inputs: -> price = @session.input("type").price # session -    . @session.input("type")     type. [ { value: "30", type: "link", name: "size", price: price }, { value: "40", type: "link", name: "size", price: price*1.2 }, { value: "50", type: "link", name: "size", price: price*1.5 }, ] #           onSubmit: "address" address: body: " " inputs: [ { name: "address", type: "text", placeholder: ", , , " }, { type: "submit", value: "" } ] phone: body: " " inputs: [ { name: "phone", type: "text", placeholder: "+7 xxx xx xx" }, { type: "submit", value: "" }] onSubmit: -> #     onLoad, on @data("orders").push @session.values() #      @data("email").push email_template(@session.values()) "success" #     success: body: "     " image: -> "/images/#{@session.value("type")}.jpg" #    ,    image  view data: orders: type: "spreadsheet" #     API         url: "https://docs.google.com/spreadsheet/ccc?key=0Au4e-jj1-69ZdEloMW03UExKLXIZFSUE" email: type: "email" to: "1@interactiff.net" server.listen "3000" 

рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рдмрд┐рдирд╛ рдХреЛрдб
 widlib=require("widlib-server") server=widlib.init template: index_template pages: type: template: type_template body: " " inputs: [ { value: "", type: "link", name: "type", price: 350 }, { value: "", type: "link", name: "type", price: 360 }, { value: "", type: "link", name: "type", price: 370 }, { value: " ", type: "link", name: "type", price: 380 }, ] size: body: " " inputs: -> price = @session.value("type").price [ { value: "30", type: "link", name: "size", price: price }, { value: "40", type: "link", name: "size", price: price*1.2 }, { value: "50", type: "link", name: "size", price: price*1.5 }, ] onSubmit: "address" address: body: " " inputs: [ { name: "address", type: "text", placeholder: ", , , " }, { type: "submit", value: "" } ] phone: body: " " inputs: [ { name: "phone", type: "text", placeholder: "+7 xxx xx xx" }, { type: "submit", value: "" }] onSubmit: -> #     onLoad, on @data("orders").push @session.values() @data("email").push email_template(@session.values()) "success" success: body: "     " image: -> "/images/#{@session.value("type")}.jpg" data: orders: type: "spreadsheet" url: "https://docs.google.com/spreadsheet/ccc?key=0Au4e-jj1-69ZdEloMW03UExKLXIZFSUE" email: type: "email" to: "1@interactiff.net" server.listen "3000" 
рдЬреЗрдПрд╕ рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рдХрд┐рдпрд╛
 var client, server, widlib; widlib = require("widlib-server"); server = widlib.init({ template: index_template, pages: { type: { template: type_template, body: " ", inputs: [ { value: "", type: "link", name: "type", price: 350 }, { value: "", type: "link", name: "type", price: 360 }, { value: "", type: "link", name: "type", price: 370 }, { value: " ", type: "link", name: "type", price: 380 }, ] }, size: { body: " ", inputs: function() { var price; price = this.session.input("type").price; return [ { value: "30", type: "link", name: "size", price: price }, { value: "40", type: "link", name: "size", price: price*1.2 }, { value: "50", type: "link", name: "size", price: price*1.5 }, ]; }, onSubmit: "address" }, address: { body: " ", inputs: [ { name: "address", type: "text", placeholder: ", , , " }, { type: "submit", value: "" } ] }, phone: { body: " ", inputs: [ { name: "phone", type: "text", placeholder: "+7 xxx xx xx" }, { type: "submit", value: "" }], onSubmit: function() { this.data("orders").push(this.session.values()); this.data("email").push(email_template(this.session.values())); return "success"; } }, success: { body: "     ", image: function() { return "/images/" + (this.session.value("type")) + ".jpg"; } } }, data: { orders: { type: "spreadsheet", url: "https://docs.google.com/spreadsheet/ccc?key=0Au4e-jj1-69ZdEloMW03UExKLXI3cGRlbkJteGZFSUE#gid=0" }, email: { type: "email", to: "1@interactiff.net" } } }); server.listen("3000"); 

рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ рд╣рдо рд╡рд┐рдЬреЗрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рддреЗ рд╣реИрдВ рдФрд░ рдЙрд╕рдореЗрдВ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВред
рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдкреГрд╖реНрда рдФрд░ рдбреЗрдЯрд╛ рд╣реЛрддреЗ рд╣реИрдВред рдкреНрд░рддреНрдпреЗрдХ рдкреГрд╖реНрда рдПрдХ рдЕрд▓рдЧ рд╕реНрдХреНрд░реАрди рд╣реИ рдЬрд┐рд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрд╕ рд╡рд┐рдЬреЗрдЯ рдореЗрдВ рджреЗрдЦреЗрдЧрд╛ред

рдкреНрд░рддреНрдпреЗрдХ рдбреЗрдЯрд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реНрдЯреЛрд░ рдХрд░рдиреЗ рдпрд╛ рдЗрд╕реЗ рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдПрдбрд╛рдкреНрдЯрд░ рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИред рд╕рд░рд▓рддрдо рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рд╕рд┐рд░реНрдл рдПрдХ рд╕рд░рдгреА рд╣реИ, рдЬрдЯрд┐рд▓ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдпрд╣ рдПрдХ REST рдЗрдВрдЯрд░рдлрд╝реЗрд╕, MongoDB, Google рд╕реНрдкреНрд░реИрдбрд╢реАрдЯ рдФрд░ рдЕрдиреНрдп рд╣реИред

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

 client=new Widlib.Client #       ,     . # pages: ... # data: ... server: "/" container: "#container" 




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

рд╕реБрд╡рд┐рдзрд╛рдУрдВ


рдореИрдВ рдЖрдкрдХреЛ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХрд╛ рдЖрдЧреНрд░рд╣ рдХрд░рддрд╛ рд╣реВрдВ рдЬрд╣рд╛рдВ рдЖрдк рдЗрд╕ рддрд░рд╣ рдХреЗ рдврд╛рдВрдЪреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред

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

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


All Articles