рдПрдХреНрдЬрд┐рдо рдФрд░ рдореЗрд▓ рдкрд╛рдЗрдкрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдмрд╣реБрдореВрд▓реНрдп рдкреБрд░рд╕реНрдХрд╛рд░ рдЬреАрддреЗрдВ

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

рдЗрд╕рд▓рд┐рдП, рд▓рдХреНрд╖реНрдп рд╕рдВрдЦреНрдпрд╛ рд╢реВрдиреНрдп рд╣реИ: "рдорд┐рдирдЯ рдореЗрдВ рдПрдХ рдмрд╛рд░ рдкреАрдУрдкреА / рдЖрдИрдПрдордП рдкрд░ рдЬрд╛рдПрдВ" рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдЕрдиреНрдп рддрд░реАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрдВрдХрд╛рд╕ рдХреЛ рдХреИрд╕реЗ рдЕрд▓рдЧ рдХрд░рдирд╛ рд╣реИ, рдпрд╣ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдПред
рдореИрдВрдиреЗ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдХрд┐ рд╣реИрд▓реЛрд╡рд░реНрд▓реНрдб рдЗрддрдирд╛ рджрд┐рд▓рдЪрд╕реНрдк рдирд╣реАрдВ рд╣реИ, рдЦрд╛рд╕рдХрд░ рдЬрдм рд╕реЗ рдбреАрдПрдХреНрд╕ рд▓реЙрдЯрд░реА (dx.com/newsletters) рдиреЗ рдореЗрд░реА рдЖрдВрдЦ рдкрдХрдбрд╝ рд▓реАред
рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдпрд╣ рдЗрд╕ рддрд░рд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:
0. рд╕рджрд╕реНрдпрддрд╛ рдкреГрд╖реНрда рдкрд░ рдИрдореЗрд▓ рджрд░реНрдЬ рдХрд░реЗрдВ (HTTP POST)
1. рдпрд╣ рдИрдореЗрд▓ рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд┐рдВрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ
2. рд▓рд┐рдВрдХ рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░реЗрдВ
3. рдпрджрд┐ рдИрдореЗрд▓ рдкрд╣рд▓реА рдмрд╛рд░ рдкрдВрдЬреАрдХреГрдд рд╣реИ, рддреЛ рд╣рдореЗрдВ рдПрдХ рдИрдореЗрд▓ рднрд╛рдЧреНрдпрд╢рд╛рд▓реА рд╕рдВрдЦреНрдпрд╛ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддреА рд╣реИ, рдЬреЛ рдбреНрд░рд╛рдЗрдВрдЧ рдореЗрдВ рднрд╛рдЧ рд▓реЗрддреА рд╣реИ

рдЪреМрдХрд╕ рдкрд╛рдардХ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рд░рд▓ "рдХрд╛рди рдХреЗ рд╕рд╛рде feint" рдХрд╛ рд╕рд╛рд░ рд╕рдордЭ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд▓реЗрдЦ рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд╡рд┐рд╡рд░рдг рдореЗрдВ рд╣реИред

рдЗрд╕рд▓рд┐рдП рд╕рдВрд╕рд╛рдзрди: рд╕рд╕реНрддреЗ рдкрд░реАрдХреНрд╖рдг vds ред
рдЕрдирд╛рд╡рд╢реНрдпрдХ ocrd.ru рдбреЛрдореЗрди (рдП рдФрд░ рдПрдордПрдХреНрд╕ рд░рд┐рдХреЙрд░реНрдб рдЕрдм рдХрд╣реАрдВ рдирд╣реАрдВ рдЗрдВрдЧрд┐рдд рдХрд░рддреЗ рд╣реИрдВ)
рд╢рд╛рдо рдХреЛ рд▓рдЧрднрдЧ рдПрдХ рдШрдВрдЯрд╛ред

Step1: рдкреАрдврд╝реАред


рдЪреВрдВрдХрд┐ рд╣рдореЗрдВ рдЕрдиреВрдареЗ рдИрдореЗрд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рд╣рдо рдПрдХ рдЬрдирд░реЗрдЯрд░ рд▓рд┐рдЦ рд░рд╣реЗ рд╣реИрдВред (рд╣рдорд╛рд░реЗ рдкрд╛рд╕ AvksentijIvanov@ocrd.ru рдЬреИрд╕рд╛ рдХреБрдЫ рд╣реЛрдЧрд╛)
(100 рд▓реЛрдХрдкреНрд░рд┐рдп рд╕реНрд▓рд╛рд╡рд┐рдХ рдирд╛рдореЛрдВ рдФрд░ рдЙрдкрдирд╛рдореЛрдВ рдХреА рд╕реВрдЪреА рд╡рд┐рдХрд┐рдкреАрдбрд┐рдпрд╛ рд╕реЗ рд▓реА рдЧрдИ рд╣реИ)
рдЬреЗрдирд░реЗрдЯрд░ рдХреЛрдб
function ngen(){ /*  ,   @*/ $names=file(dirname(__FILE__).'/names.txt'); $surnames=file(dirname(__FILE__).'/surnames.txt'); return trl($names[rand(0,count($names)-1)]).'-'.trl($surnames[rand(0,count($surnames)-1)]); //          "-"   , ,    _. } function trl($text) {/* ,  - */} function _l($v){/*-  $v   (    ), */} //    .   N email-  , N=2; for ($i=0; $i<2;$i++){ $email=ngen(); $email=preg_replace('/[^A-Za-z-.]/','',$email); //   ,       . $ch = curl_init('http://dx.com/newsletters'); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //  ,     curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.0; rv:16.0) Gecko/20100101 Firefox/16.0'); curl_setopt($ch, CURLOPT_POSTFIELDS, 'email='.$email.'%40ocrd.ru&CheckedItems=5555&CheckedItems=4444&CheckedItems=8888&CheckedItems=9999&CheckedItems=3001&CheckedItems=3002&CheckedItems=3003&CheckedItems=3004&CheckedItems=199&CheckedItems=499&CheckedItems=799&CheckedItems=899&CheckedItems=599&CheckedItems=399&CheckedItems=699&CheckedItems=999&CheckedItems=1099&CheckedItems=1299&CheckedItems=1499&CheckedItems=1599&CheckedItems=1699&CheckedItems=1799'); //   firebug $r= curl_exec($ch); _l("-in {$email}"); sleep(10); } 


рдЪрд░рдг 2: рдПрдХреНрдЬрд╝рд┐рдо рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВред


рд╣рдордиреЗ рдЗрд╕реЗ рдПрдХ рдПрдкреНрдЯреА-рдЧреЗрдЯ (рд╕рдордЭрдиреЗ рдХреА рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрди рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд┐рдпрд╛), рдореИрдВ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдирд╣реАрдВ рдмрддрд╛рдКрдВрдЧрд╛ред
рдкрд░рд┐рд╡рд╣рди рдЬреЛрдбрд╝реЗрдВ:
 # /etc/exim4/conf.d/transport/01-ocrd_pipe ocrd_pipe: driver = pipe return_fail_output command = /usr/bin/php5 -f /var/mail/ocrd_mail.php $local_part 

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдкрдиреЗ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдпрд╛ рд╣реЛрдЧрд╛, рд╕рдВрджреЗрд╢ рдХреА рд╕рд╛рдордЧреНрд░реА рдПрд╕рдЯреАрдбреАрдЖрдИрдПрди рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд░ рдЖ рдЬрд╛рдПрдЧреАред рдореИрдВ рдПрдХ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрдерд╛рдиреАрдп рднрд╛рдЧ (@ рддрдХ рдПрдХ) рднреЗрдЬрддрд╛ рд╣реВрдВ, рдмрд╕ рдЗрддрдирд╛ рд╣реИ рдХрд┐ рд╕рдВрджреЗрд╢ рд╕реЗ рдЗрд╕рдХреЗ рд╣рдЯрд╛рдиреЗ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИред

рдПрдХ рд░рд╛рдЙрдЯрд░ рдЬреЛрдбрд╝реЗрдВ
 # /etc/exim4/conf.d/router/01-ocrd-pipe #      ,     ( , , )       fwla: driver = redirect no_verify local_parts = tst:test:shilovyaroslav:valeryanyakushev:rogovanisim:potapovignatij:lukakarpov:avksentijuvarov:voronovfilat:kondratgavrilov data = ocrdmail@ya.ru unseen #    . #   --    ocrd: driver = accept domains = ocrd.ru transport = ocrd_pipe 

рд╣рдо рдХреЙрдиреНтАНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рдкреБрди: рдмрдирд╛рддреЗ рд╣реИрдВ (рдЕрдкрдбреЗрдЯ-exim4.conf рдФрд░ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░реЗрдВ)

рдЪрд░рдг 3: рдЖрдиреЗ рд╡рд╛рд▓реЗ рд╕рдВрджреЗрд╢ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдирд╛ред


рд╕рдВрджреЗрд╢ рдХреЛ рд╕реНрд╡рдпрдВ munpack рдЙрдкрдпреЛрдЧрд┐рддрд╛ (apt-get [рдпрд╛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЬреЛ рдХреБрдЫ рднреА рд╣реИ] рджреНрд╡рд╛рд░рд╛ рдкрд╛рд░реНрд╕ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ)
рдзреНрдпрд╛рди рджреЗрдВ, рдирд╛рд░рдХреАрдп рдЧреЛрд╡рдгреЛрдХреЛрдбреЗ рдЬрд╛рд╕реВрд╕реАред рдпрджрд┐ рдЖрдк рдмрд╣реБрдд рдЕрдзрд┐рдХ рдкреНрд░рднрд╛рд╡рд╢рд╛рд▓реА рд╣реИрдВ рддреЛ рдмрд╕ рдПрдХ рд╕реНрдкреЙрдЗрд▓рд░ рдХреЛ рддреИрдирд╛рдд рди рдХрд░реЗрдВред

рд╣реИрдВрдбрд▓рд░ рдХреЛрдб
 <?php if (!isset($argv[1])) die(); $msg = ''; while(!feof(STDIN)) { $msg .= fread(STDIN, 1024); } //      file_get_contents  php://input =) $dir='/var/mail/ocrd.ru/'; $to=$argv[1]; //   $fname=$to.'.'.date('dmy.His.').rand(1000,9999); $mf=$dir.'/'.$fname.'.msg'; file_put_contents($mf,$msg,FILE_APPEND); //   ,    munpack //       . $f=$dir.'/tempdesc.txt'; unlink($f); //      mime messages,        . $v=exec('munpack -f -C '.$dir.' '.$mf); _l("msg for {$to} {$fname}"); $c=file_get_contents($f); //       . $v=activate_nl($to,$c) ; // fail?    if (!$v) $v1= get_number($to,$c); // epic fail is so epic? if (!$v and !$v1) _l("err: not_detected ".$fname); //     ddmmyy/<action> $t='err'; if ($v) $t='act'; if ($v1)$t='nbr'; $dc=$dir.'/'.date('dmy').'/'.$t; if ( !is_dir($dc)) mkdir($dc,0750,true); rename($mf,$dc.'/'.$fname.'.msg'); function activate_nl($to,$c){ // ,      global $dir,$fname; //  .    ? echo "Act_NL\n"; $regex='#/newsletters/confirmSubscribe\?e=(.+)%40ocrd.ru&c=(\d+)"#'; $m=array(); if(! preg_match($regex,$c,$m)) return false; //  --    (   , ) _l("cnf for {$to}: e{$m[1]} c{$m[2]}"); file_get_contents("http://dx.com/newsletters/confirmSubscribe\?e={$m[1]}%40ocrd.ru&c={$m[2]}"); return true; } function get_number($to,$c){ //   ID  ,    . global $fname,$dir; echo "Act_GN\n"; $regex='#Your\s+lucky\s+number\s+is\D+(\d+)\s*<#'; $m=array(); if(! preg_match($regex,$c,$m)) return false; _l("lnm for {$to}: {$m[1]}"); return true; } function _l($v){ /*   */} 



рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдЗрд╕реЗ рдПрди = 3 рдХреЗ рд╕рд╛рде рд▓рдЧрднрдЧ рдЖрдзреЗ рдорд╣реАрдиреЗ рддрдХ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛;
рдирд╡рдВрдмрд░ рдореЗрдВ, рдбреНрд░реЙ рдореЗрдВ рднрд╛рдЧ рд▓реЗрдиреЗ рд╡рд╛рд▓реЗ рд▓рдЧрднрдЧ 45 рд╣рдЬрд╛рд░ рдореЗрдВ рд╕реЗ 37,000 рднрд╛рдЧреНрдпрд╢рд╛рд▓реА рд╕рдВрдЦреНрдпрд╛рдПрдВ рдкреНрд░рд╛рдкреНрдд рд╣реБрдИрдВ (рднрд╛рдЧреНрдпрд╢рд╛рд▓реА рд╕рдВрдЦреНрдпрд╛рдПрдВ рдСрдЯреЛ-рдЗрдВрдХреНрд░реАрдореЗрдВрдЯ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╕рдм рдХреБрдЫ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ)ред
рдореИрдВ рдЗрд╕ рддрдереНрдп рд╕реЗ рдЖрдЧреЗ рдмрдврд╝рд╛ рдХрд┐ рдкреБрд░рд╕реНрдХрд╛рд░реЛрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ рдмрдбрд╝рдмрдбрд╝рд╛рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдкреНрд░рддрд┐ рдорд┐рдирдЯ рдПрди = 3 рдкреАрдврд╝рд┐рдпреЛрдВ рдХрд╛ рд╕реЗрдЯ рдХрд┐рдпрд╛ред

рдкрд░рд┐рдгрд╛рдо


рдШрдЯрдирд╛рдУрдВ рдХреЛ рдФрд░ рд╡рд┐рдХрд╕рд┐рдд рдХрд░реЗрдВ: тАЬрдХреНрдпрд╛ рдЖрдкрдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рд░ рдХреЛрдИ рдЪрд▓рд╛ рдЧрдпрд╛ рд╣реИ? рдирд╣реАрдВ, рдпрд╛рд░, рддреБрдо рдУрд╣ ... рддреБрдо рдХрд┐рддрдиреЗ рдЧрд▓рдд рдереЗред "

рджрд┐рд╕рдВрдмрд░ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рд╡рд┐рдЬреЗрддрд╛рдУрдВ рдХреА рдШреЛрд╖рдгрд╛ рдХреА рдЧрдИ , рдЬрд┐рд╕рдиреЗ рдбреАрдПрдХреНрд╕ рд╕рдореБрджрд╛рдп рдореЗрдВ рдПрдХ рд╕рдордЭрджрд╛рд░ рдХрд╕рд╛рдИ рдХреА рд╢реБрд░реБрдЖрдд рдХреАред
рдЪрдпрдирд┐рдд 10 рд╡рд┐рдЬреЗрддрд╛рдУрдВ рдореЗрдВ рд╕реЗ (рдЧреЙрд╕ рд╣рдорд╛рд░реЗ рд╕рд╛рде рдЖ рд╕рдХрддреЗ рд╣реИрдВ), 8 "рдореЗрд░рд╛" (рдЬреЛ рдЖрд╢реНрдЪрд░реНрдп рдХреА рдмрд╛рдд рдирд╣реАрдВ рд╣реИ, рд╕реИрдВрддреАрд╕ рд╕реИрдВрддрд╛рд▓реАрд╕рд╡рд╛рдВ 82% рд╣реИрдВ)ред
рдореИрдВрдиреЗ рд╡рд┐рдЬреЗрддрд╛рдУрдВ рдХреЗ рдмреЙрдХреНрд╕ рдХреЛ рдЖрдЧреЗ рдмрдврд╝рд╛рдпрд╛ (fwla рд░реВрдЯрд░ рджреЗрдЦреЗрдВ) рдФрд░ рд╕реНрдерд┐рддрд┐ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛ред рд╕рднреА 8 рдЖрднрд╛рд╕реАреЛрдВ рдХреЛ рд╕реВрдЪрдирд╛рдПрдВ рдорд┐рд▓реАрдВ рдХрд┐ "рдмрдзрд╛рдИ, рдЖрдкрдиреЗ рдЬреАрдд рд╣рд╛рд╕рд┐рд▓ рдХреАред"
рдлрд┐рд░ рдореИрдВрдиреЗ рдЪреАрдирд┐рдпреЛрдВ рдХреЗ рд╕рд╛рдордиреЗ рдЖрддреНрдорд╕рдорд░реНрдкрдг рдХрд░ рджрд┐рдпрд╛ред рдЬреИрд╕реЗ, рдореИрдВ рдПрдХ рдзреЛрдЦреЗрдмрд╛рдЬрд╝ рд╣реВрдВ, рдЗрд╕реЗ рдХрд┐рд╕реА рдФрд░ рдХреЛ рджреЗ рджреВрдВ, рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рдореЗрд░рд╛ рдкрддрд╛ рд╣реИ (рдореИрдВрдиреЗ рдХрдо рд╕реЗ рдХрдо рдПрдХ рд╕реЛрдЪрд╛ рдерд╛, рд▓реЗрдХрд┐рди рд╡реЗ рдореБрдЭреЗ рднреЗрдЬ рджреЗрдВрдЧреЗ, рднреЛрд▓реА рдореИрдВ рд╣реВрдВ)ред рд▓реЗрдХрд┐рди рдирд╣реАрдВ, рдХреБрдЫ рджрд┐рдиреЛрдВ рдмрд╛рдж рдЪреАрдиреА рдиреЗ рдЕрдХреНрд╖рд░рд╢: рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд▓рд┐рдЦрд╛ред
рдЪреВрдВрдХрд┐ рд╣рдореЗрдВ рдЙрдореНрдореАрдж рдирд╣реАрдВ рдереА рдХрд┐ рдХреБрдЫ рдЧреНрд░рд╛рд╣рдХ рдирдХрд▓реА рдИрдореЗрд▓ рдкрддреЗ рдмрдирд╛рдХрд░ рдбреНрд░рд╛рдЗрдВрдЧ рдореЗрдВ рдзреЛрдЦрд╛ рджреЗрдВрдЧреЗ, рдЗрд╕рд▓рд┐рдП рд╣рдордиреЗ рд╕рднреА рд╡рд┐рдЬреЗрддрд╛рдУрдВ рдХреЗ рдИрдореЗрд▓ рдкрддреЗ рдХреА рдЬрд╛рдВрдЪ рдирд╣реАрдВ рдХреАред рдЕрдм рд╣рдо рд╕рднреА рдирдХрд▓реА рдИрдореЗрд▓ рдкрддреЛрдВ рдХреЛ рд╣рдЯрд╛рддреЗ рд╣реИрдВ рдФрд░ рдирд┐рд╖реНрдкрдХреНрд╖рддрд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рджреМрд░ рдмрдирд╛рддреЗ рд╣реИрдВред

рдЦреИрд░, рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рд╡реЗ рдЪреАрдиреА рд╣реИрдВ ...

рд╕рд╡рд╛рд▓ - kamenty, typos рдореЗрдВ - PM рдореЗрдВ, habrakat - рдЙрдкрд╡рд╛рд╕ рдореЗрдВ, рдирдлрд░рдд рдХреА рдХрд┐рд░рдгреЛрдВ рд╕реЗ - рдЪреАрдирд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдПред
рдЕрдВрдд рддрдХ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

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


All Articles