рдЕрдЬрд╛рдХреНрд╕ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдиреЗ рдореЗрдВ рдЕрдиреБрднрд╡

рд╢реБрд░реБрдЖрдд рдореЗрдВ


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

nachnems


рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдореЗрдВ рдХреБрдЫ js рдкреНрд▓рдЧрдЗрдиреНрд╕ рдЪрд╛рд╣рд┐рдП - рдЕрд░реНрдерд╛рддреН:


рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдпрд╣ рд╕рднреА рдХреЗ рд▓рд┐рдП рдкрд░рд┐рдЪрд┐рдд рд╣реИ , рдареАрдХ рд╣реИ, рд╢рд╛рдпрдж рд▓рдЧрднрдЧ рд╕рднреА рдХреЛ - рдЬреЗрдПрд╕ рдлреНрд░реЗрдорд╡рд░реНрдХред рджреВрд╕рд░реА рдлрд╝рд╛рдЗрд▓ рдЯреЗрдореНрдкрд▓реЗрдЯ рдЗрдВрдЬрди рд╣реИ, рдЬреЛ jquery рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ, рд╣рдо рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ - рдХреНрдпреЛрдВрдХрд┐ рд╡рд╣ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреА рддрд░рдл рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рд╣рдореЗрдВ рдЪрд╛рд╣рд┐рдПред Jquery рдХрд╛ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдЬреЛрдбрд╝ js рд╡рд╕реНрддреБрдУрдВ рдХреЛ json рдореЗрдВ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рднреА рдЖрд╡рд╢реНрдпрдХ рд╣реИред

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдПрдХ рдлрд╝реЛрд▓реНрдбрд░ рдмрдирд╛рдПрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП jstemp - рдЗрд╕ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ jquery-tmpl рдЯреЗрдореНрдкреНрд▓реЗрдЯ рд╣реЛрдВрдЧреЗред рдЖрдкрдХреЛ рдХрдо рд╕реЗ рдХрдо рдПрдХ рдЯреЗрдореНрдкрд▓реЗрдЯ рдмрдирд╛рдиреЗ рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореБрдЦреНрдп рдкреГрд╖реНрда рдЯреЗрдореНрдкрд▓реЗрдЯред Jstemp рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ, рдореБрдЦреНрдп рд╕рдмрдлрд╝реЛрд▓реНрдбрд░ рдмрдирд╛рдПрдБ рдЬрд┐рд╕рдореЗрдВ page.html рдлрд╝рд╛рдЗрд▓ рд╣реЛрдЧреА
рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдПрдХ рд╕рд░рд▓ HTML рдХреЛрдб рд╣реИ:

<div id="name_of_page">${Content.name}</div> <div id="info_of_page">${Content.info}</div> 


рдХрд╛рдо рдХрд╛ рд╕рд╛рд░

рдЙрд╕ рд╕рдордп, рдЬрдм рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреГрд╖реНрда рдкрд░ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╣рдорд╛рд░рд╛ рдЕрдЬрд╛рдХреНрд╕ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╡рд░реНрддрдорд╛рди рд▓рд┐рдВрдХ рдФрд░ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде рд╕рд░реНрд╡рд░ рддрдХ рдкрд╣реБрдВрдЪрддрд╛ рд╣реИ, рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореЗрдВ JSON рдХрд╛ рдЗрдВрддрдЬрд╛рд░ рдХрд░рддрд╛ рд╣реИред рд╣рдо рдкреНрд░рд╛рдкреНрдд JSON рдХреЛ рдПрдХ js- рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдкрд╛рд░реНрд╕ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ jquery-tmpl рдкреНрд▓рдЧрдЗрди рдкрд░ рднреЗрдЬрддреЗ рд╣реИрдВ, рдЬреЛ рдЕрд▓рдорд╛рд░рд┐рдпреЛрдВ рдкрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реЗ рдбреЗрдЯрд╛ рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ рд╣рдорд╛рд░реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рд╡рд╛рдВрдЫрд┐рдд рдЯреЗрдореНрдкрд▓реЗрдЯ рджрд┐рдЦрд╛рддрд╛ рд╣реИред рдФрд░ рдпрд╣ рднреА, рдЕрдЧрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдпрд╣ рддрдп рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЙрд╕реЗ рд╡рд░реНрддрдорд╛рди рдкреГрд╖реНрда рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдХрд┐рд╕реА рдЕрдиреНрдп рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реИ - рдЕрдЬрд╛рдХреНрд╕ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рддреБрд░рдВрдд рдЕрдкрдиреА рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЛ рдкрдХрдбрд╝ рд▓реЗрдЧрд╛ рдФрд░ рд╡рд╣реА рдкреНрд░рдХреНрд░рд┐рдпрд╛рдПрдВ рдХрд░реЗрдЧрд╛, рдХреЗрд╡рд▓ рдирдП рд▓рд┐рдВрдХ рдХреЗ рд╕рд╛рде рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдФрд░ рд╡рд╛рдкрд╕ рд▓реМрдЯрдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдХрд╛рдо рдХрд╛ рдирддреАрдЬрд╛ред

рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди


рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдкреНрд░рд╛рд░рдВрдн рдкреГрд╖реНрда рд▓рд┐рдЦреЗрдВ:

 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <script language="Javascript" src="js/jquery-1.5.min.js"></script> <script language="JavaScript" src="js/jquery.tmpl.js"></script> <!----> <script language="JavaScript" src="js/jquery.tmplPlus.min.js"></script> <!----> <script language="JavaScript" src="js/jquery.json-2.2.min.js"></script> <!-- $.toJSON --> <title></title> <style type="text/css"> body { font: 11pt Arial, Helvetica, sans-serif; margin: 0; } h1 { font-size: 36px; margin: 0; color: #fc6; } h2 { margin-top: 0; } #header { padding: 10px; } #sidebar { float: left; border: 1px solid #eee; width: 20%; padding: 5px; margin: 10px 10px 20px 5px; } #sidebar p { margin-left:20px; } #content { margin: 10px 5px 20px 25%; padding: 5px; border: 1px solid #eee; } #footer { background: #eee; padding: 5px; color: #fff; clear: left; } .error { padding:10px; width:80%;background-color:#ff4f4f; } </style> </head> <body> <div id="header"><h1> -  .</h1></div> <div id="sidebar"> <h2></h2> <p><a href="#"></a></p> <p><a href="#page/about"> </a></p> <p><a href="#page/contacts"></a></p> <p><a href="#page/somepage"> -  </a></p> <p><a href="#user/login"></a></p> </div> <div id="content"> <h2> -   </h2> <div id="content_wrap"></div><!--      --> </div> <div id="footer">┬й 1</div> </body> </html> 


рд╣рдо рдЖрдИрдбреА = "content_wrap" рдХреЗ рд╕рд╛рде рдПрдХ div рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдкрд░ рдзреНрдпрд╛рди рджреЗрддреЗ рд╣реИрдВ - рд▓реЛрдб рдХрд┐рдП рдЧрдП рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рдХреЛ рдЗрд╕рдореЗрдВ рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдЕрдЧрд▓рд╛, рд╣рдо рд╕рд╛рдордЧреНрд░реА рдХреЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд▓реЛрдбрд┐рдВрдЧ рдХреЛ рд▓рд┐рдЦрддреЗ рд╣реИрдВред

 var user = {}; /** *   hash  #   **/ function hash() { return document.location.hash.replace('#',''); } function load(u) { console.log('loading page '+ u +':'); $.ajax({ url: "/" + u,//   ,    , //..    -     index.php, //      ,    type: "GET", data: "action=pageLoad&url="+u+"", // action=pageLoad    -  ,    JSON success: function(msg){//  ,     -     ,  ,     var arr = $.parseJSON(msg); console.log('success'); if (arr.my) {//  ,    arr.my    //    user = { a: (arr.my.id)?true:false, id:arr.my.id, login: arr.my.login, site_login: arr.my.site_login, status: arr.my.status } } document.location.hash = u; render(arr, u); console.log("load template"); } }); } function render(data, url) { // ,  data -  ,   ; url -  main/page , user/login $("#content_wrap").show().html('');//     html-,       $.get("jstemp/"+ url +".html", function(template) {// html  -  console.log("Template finded at jstemp/"+ url +".html"); $.tmpl(template, { Content: data//   tmpl ,        Content }).appendTo('#content_wrap');//  #content_wrap $("#content_wrap").prepend("<script language='JavaScript' src='js/included.js' />");//      . }); } $(function(){//,    DOM if (hash()) {//   var url = hash();//    ,   #  . } else { var url = 'main/page';//   -    } load(url);// . }); 


рдЗрд╕ рд╕реНрддрд░ рдкрд░, рдпрджрд┐ рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реИ, рддреЛ рдЖрдк рдореБрдЦреНрдп рдкреГрд╖реНрда рдХреЛ рд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореИрдВ рдПрдХ рдмрд╣реБрдд рдЫреЛрдЯрд╛ рд╕рд░реНрд╡рд░ рдХреЛрдб рд▓рд┐рдЦреВрдВрдЧрд╛:

 <?php if(isset($_GET['action'])&&$_GET['action']=='pageLoad'){ switch($_GET['url']) { case 'page/contacts': $arr = array('name'=>'', 'info'=>'       ,     .'); break; case 'page/about': $arr = array('name'=>' ', 'info'=>'      .'); break; case 'page/somepage': $arr = array('name'=>'  ', 'info'=>'   -  '); break; case 'main/page': default: $arr = array('name'=>' ', 'info'=>'  '); break; } echo json_encode($arr); } else { ?>  Html ,   . <?php } ?> 


рдЕрдм, рдЬрдм рдореБрдЦреНрдп / рдкреГрд╖реНрда рддрдХ рдкрд╣реБрдВрдЪ рд╣реЛ - рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП

рдореБрдЦреНрдп рдкреГрд╖реНрда
рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреА рдЬрд╛рдирдХрд╛рд░реА


рд╣реБрд░реНрд░реЗ! 3/4 рдХрд┐рдпрд╛ред рдЕрдм рд╣рдо рд▓рд┐рдВрдХ рдкрд░ рдХреНрд▓рд┐рдХ рдХреЛ рдкрдХрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦреЗрдВрдЧреЗред

 /** *    */ $("a[href^='#']").unbind('click');//   ,        . $("a[href^='#']").click(function(e){// -  ,    href    # var url = $("a:hover").attr('href').replace("#",""); if (page_url != url) { if (url) load(url); else load('main/page'); return false; } }); 


рдФрд░ рдЗрд╕ рдХреЛрдб рдХреЛ рдЙрд╕реА рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВред js
рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рд╕рд░рд▓ рд╣реИ: html рдкрд╛рда рд▓реЛрдб рдХрд░рддреЗ рд╕рдордп, рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкреГрд╖реНрдареЛрдВ рдкрд░ рдореМрдЬреВрдж рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЗрд╕рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреА рд╣реИрдВ, рдЗрд╕рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдмрдЪрд╛рд╡ рдореЗрдВ рдЖрддрд╛ рд╣реИред
рд▓реЗрдХрд┐рди рд░реВрдкреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЖрдк рдХреНрдпрд╛ рдкреВрдЫрддреЗ рд╣реИрдВ? рд╣рд╛рдБ рдЖрд╕рд╛рди!

рд░реВрдкреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВ

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЯреЗрдореНрдкрд▓реЗрдЯ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ / login.html рдмрдирд╛рдПрдБ
рдФрд░ рдЗрд╕рдореЗрдВ рдХреЛрдб рдбрд╛рд▓реЗрдВ:

 {{if Content.error}}<!--    ,     --> <div class="error login">${Content.error}</div> {{else}} <form class="form" id="login" action="" method="POST"> <div class="error" style="display:none;" id="message_login"></div><!--  id    - message_[id__] --> <table> <tr> <td></td> <td><input name="username[login]" type="text" value="" /></td> </tr> <tr> <td></td> <td><input type="password" name="username[password]" value="" /></td> </tr> <br /> <tr> <td colspan="2"><input value="" style="width: 300px; height: 70px;" type="submit" /></td> </tr> </table> </form> {{/if}} 


рдФрд░ рдЙрд╕реА рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

 /** *   */ $('form').submit(function() {//   var form = $(this); var method = form.attr('method'); // method  var id = form.attr('id'); // id  $.ajax({ //url:  , ..      . type: method, data: "ajax=1&"+form.serialize(), //        +  ajax -   ,    JSON success: function(msg){ var arr = $.parseJSON(msg); if (arr.message) $("#message_"+id).show().html(arr.message);//  message( ),       . if (arr.go) { //   go -        ,    -   . if (arr.go == '' || arr.go == '/') arr.go = 'main/page'; page.load(arr.go);//   } } }); return false; }); 


рд╣рдо рд╕рд░реНрд╡рд░ рдХреЛрдб рдХреЛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВрдЧреЗ рдХрд┐ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ:

 <?php error_reporting(0); session_start(); if(isset($_POST['username'])){//    if(!$_SESSION['user']){//    $user = $_POST['username']; if($user['login']!='test'){ //    test,  message echo json_encode(array('message'=>' '.$user['login'].'  ')); } else {//        $_SESSION['user'] = $user['login']; //  . echo json_encode(array('go'=>'/')); } } else {// error     echo json_encode(array('error'=>'  .')); } } else if(isset($_GET['action'])&&$_GET['action']=='pageLoad'){ switch($_GET['url']) { case 'page/contacts': $arr = array('name'=>'', 'info'=>'       ,     .'); break; case 'page/about': $arr = array('name'=>' ', 'info'=>'      .'); break; case 'page/somepage': $arr = array('name'=>'  ', 'info'=>'   -  '); break; case 'main/page': default: $arr = array('name'=>' ', 'info'=>'  '); break; } echo json_encode($arr); } else { ?>   html  <? } ?> 


рдкреГрд╖реНрда рд╕реЗ POST рдЕрдиреБрд░реЛрдз рдХрд░рддреЗ рд╕рдордп, рд╣рдо рдпрд╣ рдЬрд╛рдВрдЪрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдзрд┐рдХреГрдд рд╣реИ, рдФрд░ рдпрджрд┐ рдРрд╕рд╛ рд╣реИ, рддреЛ рддреНрд░реБрдЯрд┐ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдВ, рдФрд░ рдлрд╝реЙрд░реНрдо рдХреЛ рдирд┐рдХрд╛рд▓реЗрдВ, рдЕрдиреНрдпрдерд╛, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓реЙрдЧрд┐рди рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ, рдпрджрд┐ рдпрд╣ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ, рддреЛ рд╕рдВрджреЗрд╢ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдВ, рдЕрдиреНрдпрдерд╛, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдореБрдЦреНрдп рдкреГрд╖реНрда рдкрд░ рднреЗрдЬреЗрдВред

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


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

рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред
рдЕрдкрдбреЗрдЯ: рд▓рд┐рдВрдХ рдХреЛ рд╕реЙрд░реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП

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


All Articles