Php / json рдбреЗрдЯрд╛рдмреЗрд╕

рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддреЗ рд╕рдордп, рдЕрдХреНрд╕рд░ рдХреБрдЫ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдпрд╛ рдЕрд╕реНрдерд╛рдпреА рдбреЗрдЯрд╛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЖрдорддреМрд░ рдкрд░, рдЗрд╕рдХреЗ рд▓рд┐рдП рдлрд╛рдЗрд▓ рдпрд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдпрд╣ рдПрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рд╣реИ, рддреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдПрдХрд▓-рдкрдВрдХреНрддрд┐ рддрд╛рд▓рд┐рдХрд╛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдирд╛, рдЬреИрд╕рд╛ рдХрд┐ рдЕрдХреНрд╕рд░ рд╣реЛрддрд╛ рд╣реИ, рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╡рд┐рдХрд▓реНрдк рдирд╣реАрдВ рд╣реИред рдЗрд╕рдХреЗ рд▓рд┐рдП, рдХреБрдЫ рдкреНрд░рд╛рд░реВрдкреЛрдВ (* .php, * .ini, * .xml, * .json) рдХреА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЕрдзрд┐рдХ рдмрд╛рд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

Json рдбреЗрдЯрд╛рдмреЗрд╕


рдЗрд╕ рдкреЛрд╕реНрдЯ рдореЗрдВ рдореИрдВ рдПрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд░реВрдк рдореЗрдВ json рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред Json рдлреЙрд░реНрдореЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕ рдлреЙрд░реНрдореЗрдЯ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдПрд░реЗрдЬрд╝ рдФрд░ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдХреНрд▓рд╛рдЗрдВрдЯ рд╕рд╛рдЗрдб рд╕реЗ рдЖрд╕рд╛рдиреА рд╕реЗ рдПрдХреНрд╕реЗрд╕ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдХрд┐рд╕реА рднреА рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рд╕реЗ рдбреЗрдЯрд╛ рд▓рд┐рдЦрдиреЗ, рдкрдврд╝рдиреЗ, рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдФрд░ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдПрдХ рд╕реЗрдЯ рд╢рд╛рдорд┐рд▓ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рдПрдХ рд╡рд░реНрдЧ рд╣реЛрдЧрд╛ рдЬрд┐рд╕рдореЗрдВ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рдкреНрд░рдмрдВрдзрди рдХреЗ рд▓рд┐рдП рдХрдИ рддрд░реАрдХреЗ рд╣реЛрдВрдЧреЗред
$jdb = new Jsondb($path); 



рдбреЗрдЯрд╛рдмреЗрд╕ рдкреНрд░рдмрдВрдзрди


рдиреАрдЪреЗ рдЙрдирдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рддрд░реАрдХреЛрдВ рдФрд░ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ рд╣реИред

рдмрдирд╛рдПрдВ
рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рдмрдирд╛рдПрдВред
 $jdb->create($table, $keys); 


рдПрдХ рдЙрджрд╛рд╣рд░рдг:
 $keys = Array( 'id'=>Array('auto_increment'), 'title'=>Array('default'=>'habrahabr'), 'posts', 'userId' ); $jdb->create('habr', $keys); 

рдЪреБрдирдирд╛
рддрд╛рд▓рд┐рдХрд╛ рд╕реЗ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ред
 $jdb->select($select, $table, $rules); 


рдПрдХ рдЙрджрд╛рд╣рд░рдг:
 $rules = Array( 'where'=>Array( 'id'=>Array(1,2,3,4,6,7,10), 'name'=>'habr' ), 'order'=>Array('id','desc'), 'limit'=>5 ); $jdb->select('*','habr',$rules); $rules = Array( 'order'=>Array('rand()'), 'limit'=>Array(10,4) ); $select = Array('id','title','userId'); #  ,  $select ='id,title, userId'; $jdb->select($select, 'habr', $rules); 

рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░реЗрдВ
рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдбреЗрдЯрд╛ рдбрд╛рд▓реЗрдВред
 $fdb->Insert($table, $data); 


рдПрдХ рдЙрджрд╛рд╣рд░рдг:
 $data = Array('title'=>'new title', 'userId'=>6431); $jdb->insert('habr', $data); 

рдЕрджреНрдпрддрди
рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдбреЗрдЯрд╛ рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛ред
 $jdb->update($table, $data, $where); 


рдПрдХ рдЙрджрд╛рд╣рд░рдг:
 $data = Array('title'=>'updated title'); $where = Array('title'=>'new title', 'userId'=>6431); $jdb->update('habr', $data, $where); 

рд╣рдЯрд╛рдПрдВ
рдХрд┐рд╕реА рддрд╛рд▓рд┐рдХрд╛ рд╕реЗ рд░рд┐рдХреЙрд░реНрдб рдирд┐рдХрд╛рд▓рдирд╛ред
 $jdb->delete($table, $where); 


рдПрдХ рдЙрджрд╛рд╣рд░рдг:
 $where = Array('userId'=>6431); $jdb->delete('habr', $where); 

рдбреНрд░реЙрдк
рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рд╣рдЯрд╛рдПрдВред
 $jdb->drop($table); 


рдПрдХ рдЙрджрд╛рд╣рд░рдг:
 $jdb->drop('habr'); 

рдСрд▓реНрдЯрд░
рддрд╛рд▓рд┐рдХрд╛ рд╕реЗ рдХреБрдВрдЬрд┐рдпрд╛рдБ рдЬреЛрдбрд╝рдирд╛ рдФрд░ рдирд┐рдХрд╛рд▓рдирд╛ред
 $jdb->alter($table, $todo, $keys); 


рдПрдХ рдЙрджрд╛рд╣рд░рдг:
 $jdb->alter('habr', 'drop', 'title','userId'); $keys = Array( 'postTitle'=>Array( 'default'=>'habrapost' ) ); $jdb->alter('habr', 'add', $keys); $keys = Array('acc','userId'); #  ,  $keys = 'acc, userId'; $jdb->alter('habr', 'add', $keys); 

рдХрд╛рдЯ-рдЫрд╛рдВрдЯ
рддрд╛рд▓рд┐рдХрд╛ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рд╛рдлрд╝ рдХрд░реЗрдВред
 $jdb->truncate($table); 


рдореМрдЬреВрдж рд╣реИ
рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рдЕрд╕реНрддрд┐рддреНрд╡ рдХреЗ рд▓рд┐рдП рдЬрд╛рдБрдЪ рдХрд░рддрд╛ рд╣реИред
 $jdb->exists($table); 


рдЕрдиреБрд░реЛрдзреЛрдВ рдореЗрдВ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛

рдЙрдкрд░реЛрдХреНрдд рд╕рднреА рд╡рд┐рдзрд┐рдпрд╛рдБ рдЕрдиреБрд░реЛрдз рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд▓реМрдЯрд╛рддреА рд╣реИрдВ рдпрджрд┐ рдпрд╣ рд╕рдлрд▓ рдерд╛, рдФрд░ рдпрджрд┐ рдирд╣реАрдВ рддреЛ рдЧрд▓рдд рд╣реИред " рд╕реНрдерд┐рддрд┐ " рд╡рд┐рдзрд┐ рдЖрдкрдХреЛ рдкрд┐рдЫрд▓реЗ рдЕрдиреБрд░реЛрдз рдХреА рд╕реНрдерд┐рддрд┐ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред
 $jdb->status($flag); 


рдПрдХ рдЙрджрд╛рд╣рд░рдг:
 $jdb->create('users',Array('id'=>Array('auto_increment'),'name')); $jdb->create('users',Array('id','name')); echo $jdb->status(); echo $jdb->status(true); /* * 101 * Table already exists; */ $jdb->select('phone', 'users'); echo $jdb->status(); echo $jdb->status(true); /* * 202 * Try ro select an unexisting keys from table "users"; */ 

рд╕реНрдерд┐рддрд┐ рдХреЛрдб рдХреА рд╕реВрдЪреА:


рд╣реЗрд▓реНрдкрд░ рдХреЗ рддрд░реАрдХреЗ


Last_insert_id
рдЕрдХреНрд╕рд░ рдРрд╕рд╛ рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдЬреЛрдбрд╝реЗ рдЧрдП рд░рд┐рдХреЙрд░реНрдб рдХреА рдЖрдИрдбреА рдЬрд╛рдирдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, last_insert_id рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
 $jdb->last_insert_id(); 

рдПрдХ рдЙрджрд╛рд╣рд░рдг:
 $jdb->insert('users', Array('name'=>'username')); echo $jdb->last_insert_id(); 

рдЕрд╕реНрддрд┐рддреНрд╡
рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рдЕрд╕реНрддрд┐рддреНрд╡ рдХреЗ рд▓рд┐рдП рдЬрд╛рдБрдЪ рдХрд░рддрд╛ рд╣реИред рд╕рдЪреНрдЪрд╛ рдпрд╛ рдЭреВрдард╛;
рдПрдХ рдЙрджрд╛рд╣рд░рдг:
 $jdb->exist('user'); 

рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП, рдкреНрд░рд╢реНрдиреЛрдВ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрд╕рдХреНрдпреВрдПрд▓ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИред рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рд╡рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
 Jsonsql::request('select * from `users`', $path); 



рдЪреВрдВрдХрд┐ php рдореЗрдВ рдПрдХ рд╣реА рдирд╛рдо рдХреЗ рд╕рд╛рде рдлрд╝рдВрдХреНрд╢рди рдФрд░ рдХрдХреНрд╖рд╛рдПрдВ рдмрдирд╛рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИ, рдЖрдк рдирд┐рдореНрди рдирд┐рд░реНрдорд╛рдг рдХреЛ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
 function Jsonsql($string, $path = false){ return Jsonsql::request($string, $path); } 

рдПрдХ рдЙрджрд╛рд╣рд░рдг:
 Jsonsql('create table `new` (id auto_increment, title default "untitled", text)'); Jsonsql('select `name`,`title` from `habr` where `id` in(1,34,5,9,4,100) order by rand()', '/jdb/test/'); 

рдЕрддрд┐рд░рд┐рдХреНрдд рдЕрдиреБрд░реЛрдз

рдЕрдиреБрд░реЛрдз рдХреА рд╕реНрдерд┐рддрд┐ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдПрдВ:
 Jsonsql('status'); #     Jsonsql('status code'); #    

рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдЬреЛрдбрд╝реЗ рдЧрдП рд░рд┐рдХреЙрд░реНрдб рдХреА рдЖрдИрдбреА рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдПрдВ:
 Jsonsql('last_insert_id'); 

рдкрддрд╛ рд▓рдЧрд╛рдПрдБ рдХрд┐ рдХреНрдпрд╛ рдХреЛрдИ рддрд╛рд▓рд┐рдХрд╛ рдореМрдЬреВрдж рд╣реИ рдпрд╛ рдирд╣реАрдВ:
 Jsonsql('table exists `users`'); 


MySql рдХреЗ рд╕рд╛рде Jsondb рдХреА рддреБрд▓рдирд╛


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

рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░реЗрдВ
рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рджрд╕ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХрд╛ рд░рд┐рдХреЙрд░реНрдб рджрд╕ рдмрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдиреАрдЪреЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдирд┐рд╖реНрдкрд╛рджрди рд╕рдордп рдХрд╛ рдЧреНрд░рд╛рдл рдмрдирд╛рдо рдкреНрд░рджрд░реНрд╢рди рдХреА рд╕рдВрдЦреНрдпрд╛ рд╣реИред
рдЫрд╡рд┐
рдЙрдкрдпреЛрдЧ рдХреА рдЧрдИ рдореЗрдореЛрд░реА:

рдпрд╣ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ Jsondb рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рд░рд┐рдХреЙрд░реНрдб рдХреА рд╕рдВрдЦреНрдпрд╛ рдкрд░ рдмрд╣реБрдд рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред

рдЕрджреНрдпрддрди
рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ 100 рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпреЛрдВ рдХрд╛ рдЕрджреНрдпрддрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред


рдЪреБрдирдирд╛
рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рд╕рднреА рд░рд┐рдХреЙрд░реНрдб рдЪреБрдиреЗ рдЧрдП рдереЗред


рдФрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдбреЗрдЯрд╛ рдХрд╛ рдЪрдпрди рдЙрди рд╢рд░реНрддреЛрдВ рдХреЗ рд╕рд╛рде рдХрд░рддрд╛ рд╣реИ рдЬрд╣рд╛рдВ, рдЖрджреЗрд╢ рдФрд░ рд╕реАрдорд╛ред

рдЗрд╕ рд╕рдм рд╕реЗ рдпрд╣ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреЗ рднрдВрдбрд╛рд░рдг рдкреНрд░рдгрд╛рд▓реА рдХрд╛ рдкреНрд░рджрд░реНрд╢рди, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЕрджреНрдпрддрди рдФрд░ рдбрд╛рд▓рдиреЗ рдХреЗ рддрд░реАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рдмрд╣реБрдд рдХреБрдЫ рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рд░рд┐рдХреЙрд░реНрдб рдХреА рд╕рдВрдЦреНрдпрд╛ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рддрд╛рд▓рд┐рдХрд╛рдУрдВ рд╕реЗ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдХрд╛рдлреА рддреЗрдЬ рд╣реИред рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рднрдВрдбрд╛рд░рдг рдХреА рдЗрд╕ рдкрджреНрдзрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡рд┐рднрд┐рдиреНрди рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдФрд░ рдЕрд╕реНрдерд╛рдпреА рдбреЗрдЯрд╛ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЕрдиреБрдХреВрд▓ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рднреА рдПрдХ рдмрдбрд╝рд╛ рдкреНрд▓рд╕ рд╣реИ рдХрд┐ рдЗрд╕ рд░реВрдк рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рд╕реА рднреА рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдХреНрд▓рд╛рдЗрдВрдЯ рдкрдХреНрд╖ рд╕реЗ рдПрдХреНрд╕реЗрд╕ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрджрд┐ рдЕрдзрд┐рдХ рд╡рд┐рд╡рд░рдг рдореЗрдВ рд╣реИ, рддреЛ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП jQuery рд╡рд┐рдзрд┐ $ .getJSON рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ред

рдпрд╣рд╛рдВ рд╡рд╣ рд▓рд┐рдВрдХ рд╣реИ рдЬрд╣рд╛рдВ рдЖрдк рд╕реНрд░реЛрдд рдФрд░ рдЙрджрд╛рд╣рд░рдг рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

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


All Articles