рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рдореЗрдВ, рд╣рдордиреЗ рдЕрдкрдиреЗ "рд╕реНрдорд╛рд░реНрдЯ рд╣реЛрдо" рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдпрд╣ рд╕рд┐рдЦрд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдХрд┐рдпрд╛ рдерд╛ рдХрд┐ рд╣рдордиреЗ рдХреНрдпрд╛ рдХрд╣рд╛ рдФрд░ Google рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдзреНрд╡рдирд┐ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рд╕рдВрд╢реНрд▓реЗрд╖рд┐рдд рдХрд┐рдпрд╛ред
рдЖрдЬ рдореИрдВ рдмрддрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рд╡реЗрдм рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╣рдорд╛рд░реЗ рд╕рд┐рд╕реНрдЯрдо рддрдХ рдкрд╣реБрдВрдЪ рдХреИрд╕реЗ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░реЗрдВред
рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХреА рдХреЗ
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдкрдХреЛ рдпрд╛рдж рд╣реИ, рд╣рдо рдЕрдкрдиреЗ "рд╕реНрдорд╛рд░реНрдЯ рд╣реЛрдо" рдХреЗ рдкреНрд░рдмрдВрдзрди рдХреЗ рд▓рд┐рдП
рдкрд░реНрд▓ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рд▓рд┐рдЦрддреЗ рд╣реИрдВред рдПрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рдмрд┐рдирд╛ рдПрдХ рдЖрдзреБрдирд┐рдХ рд╕реВрдЪрдирд╛ рдкреНрд░рдгрд╛рд▓реА рд▓рдЧрднрдЧ рдЕрдХрд▓реНрдкрдиреАрдп рд╣реИред рд╣рдо рднреА рдПрдХ рддрд░рдл рдЦрдбрд╝реЗ рдирд╣реАрдВ рд╣реЛрдВрдЧреЗ рдФрд░ рдЕрдкрдиреЗ рдбреЗрдЯрд╛ рдХреЛ рд╕реНрдЯреЛрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
MySQL DBMS рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рд╡реЗрдм рд╕рд░реНрд╡рд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рддреГрддреАрдп-рдкрдХреНрд╖ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛, рд▓реЗрдХрд┐рди рдкрд░реНрд▓ рдХреЗ рд▓рд┐рдП рдореЙрдбреНрдпреВрд▓ -
HTTP :: рд╕рд░реНрд╡рд░ :: рд╕рд░рд▓ , рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ -
HTTP :: рд╕рд░реНрд╡рд░ :: рд╕рд░рд▓ :: CGI ред рдореИрдВрдиреЗ рдРрд╕рд╛ рдХреНрдпреЛрдВ рдХрд┐рдпрд╛? рдЕрдзрд┐рдХрд╛рдВрд╢ рднрд╛рдЧ рдХреЗ рд▓рд┐рдП, рд╣рд┐рдд рдХреЗ рд▓рд┐рдП;) рд▓реЗрдХрд┐рди рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдЖрдк рдЕрдкрд╛рдЪреЗ / mod_perl рдкрд░рд┐рд╕рд░ рдХреЛ рдЬрдорд╛ рдХрд┐рдП рдмрд┐рдирд╛ HTTP рдЕрдиреБрд░реЛрдзреЛрдВ / рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рдирд┐рдореНрди-рд╕реНрддрд░реАрдп рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рддрдХ рдкрд╣реБрдВрдЪ рд╕рдХрддреЗ рд╣реИрдВред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдЕрдЧрд░ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЗрдЪреНрдЫрд╛ рдФрд░ рдкрд░реНрдпрд╛рдкреНрдд рд╕рдордп рд╣реИ рддреЛ рдХреБрдЫ рднреА рдЖрдкрдХреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рдЕрдкрд╛рдЪреЗ рдкрд░ рд▓реЗ рдЬрд╛рдиреЗ рд╕реЗ рдирд╣реАрдВ рд░реЛрдХрддрд╛ рд╣реИред
рдбреЗрдЯрд╛рдмреЗрд╕
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, MySQL DBMS рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ рдФрд░ db.sql рд╕реЗ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдмрдирд╛рдПрдВред рдпрд╣рд╛рдБ рд▓рд┐рд╕реНрдЯрд┐рдВрдЧ рд╣реИ:
CREATE DATABASE ion; USE ion;
рд╣рдо рдЖрд╡рд╢реНрдпрдХ рдХрд╛рд░реНрдп рдХрд░рддреЗ рд╣реИрдВ:
nix@nix-boss:~$ sudo apt-get install mysql-server
nix@nix-boss:~$ mysql -uroot -ppassword < db.sql
рдХреЛрдб рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░реЗрдВ
рдЕрдм рд╣рдореЗрдВ
lib ,
html рдФрд░
рдХреЙрдиреНрдлрд┐рдЧ рдлреЛрд▓реНрдбрд░ (
рдбреЗрдЯрд╛ рдлреЛрд▓реНрдбрд░ рдХреЗ рдмрдЧрд▓ рдореЗрдВ) рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
Lib рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ, рд╣рдо рд╡реЗрдм рд╕рд░реНрд╡рд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдФрд░ рд╣рдорд╛рд░реЗ HTTP рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рдореЙрдбреНрдпреВрд▓ рдбрд╛рд▓рддреЗ рд╣реИрдВред
рд╣рдореЗрдВ
srv.pl рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ
рдереЛрдбрд╝рд╛ рдореЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ ред рдкреНрд░рд╛рд░рдВрдн рдмреНрд▓реЙрдХ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ:
our %cfg = readCfg("common.cfg"); our $dbh = dbConnect($cfg{'dbName'}, $cfg{'dbUser'}, $cfg{'dbPass'});
рдЖрд░рдВрднрд┐рдХ рдмреНрд▓реЙрдХ рдХреЗ рдиреАрдЪреЗ HTTP рд╕рд░реНрд╡рд░ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд▓рд╛рдЗрдиреЗрдВ рдЬреЛрдбрд╝реЗрдВ:
рдЕрдм рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЕрдВрдд рдореЗрдВ рд▓рд╛рдкрддрд╛ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдЬреЛрдбрд╝реЗрдВ:
sub readCfg { my $file = shift; my %cfg; open(CFG, "<config/$file") || die $!; my @cfg = <CFG>; foreach my $line (@cfg) { next if $line =~ /^\#/; if ($line =~ /(.*?) \= \"(.*?)\"\;/) { chomp $2; $cfg{$1} = $2; } } close(CFG); return %cfg; }
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдирд╛рдо рд╕реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, dbConnect () рд▓реЙрдЧрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ DBMS, logSystem () рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИ, рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП readCfg ()ред рдЖрдЗрдП рд╣рдо рдЗрд╕ рдкрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдзреНрдпрд╛рди рджреЗрдВред рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдкрд╛рда рдлрд╝рд╛рдЗрд▓ рд╣реИред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЗрд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
## daemonMode = "undef"; logSystem = "1"; logUser = "1"; dbName = "ion"; dbUser = "root"; dbPass = "password"; camNumber = "4"; camMotionDetect = "1"; httpPort = "16100"; httpHost = "localhost"; telnetPort = "16000"; telnetHost = "localhost"; micThreads = "5";
рдЗрд╕рдореЗрдВ рдХреБрдЫ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдмрд╛рдж рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЕрдм рддрдХ, рд╣рдо рдХреЗрд╡рд▓
db рдЙрдкрд╕рд░реНрдЧ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рд╣реЛрдиреЗ рд╡рд╛рд▓реА рд▓рд╛рдЗрдиреЛрдВ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВред рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ, рдпреЗ рд╣рдорд╛рд░реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдЬреБрдбрд╝рдиреЗ рдХреА рд╕реЗрдЯрд┐рдВрдЧ рд╣реИрдВред
рдЕрдм рдореИрдВ рдХрдИ рдХрдорд╛рдВрдб рдирд┐рд╖реНрдкрд╛рджрди рдкрд░ рдХрд╛рдмреВ рдкрд╛рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реВрдБрдЧрд╛ред рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ
cmcmd () :
sub checkcmd { my $text = shift; chomp $text; $text =~ s/ $//g; print "+OK - Got command \"$text\" (Length: ".length($text).")\n"; if($text =~ //) {
рд╣рдо рдЪрд╛рд░ рд╕реЗрдХрдВрдб рдХреЗ рдЕрдВрддрд░рд╛рд▓ рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдЕрдВрддрд┐рдо рдХрдорд╛рдВрдб рдХрд╛ рдЪрдпрди рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдпрджрд┐ рдпрд╣ рд╡рд░реНрддрдорд╛рди рдХреЗ рд╕рд╛рде рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ, рддреЛ рд╣рдо рдлрд╝рдВрдХреНрд╢рди рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рддреЗ рд╣реИрдВред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдореИрдВрдиреЗ рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдлрд╝рдВрдХреНрд╢рди рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХреБрдЫ рдХрдорд╛рдВрдб рдЬреЛрдбрд╝реЗред рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рдореМрд╕рдо рд╣реИред рдЙрд╕рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдереЛрдбрд╝рд╛ рдХрдо рд╣реИред
HTTP.pm рдореЙрдбреНрдпреВрд▓
рдПрдореНрдмреЗрдбреЗрдб HTTP рд╕рд░реНрд╡рд░ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛рдПрдВред
Lib рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ
HTTP.pm рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдБред рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рд╡рд╣рд╛рдВ рд▓рд┐рдЦрддреЗ рд╣реИрдВ:
package lib::HTTP; use HTTP::Server::Simple::CGI; use LWP::UserAgent; use URI::Escape; use base qw(HTTP::Server::Simple::CGI); use Template;
рдЖрдЗрдП рд╕рд╛рдордЧреНрд░реА рдХрд╛ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реЗрдВред
% рдкреНрд░реЗрд╖рдг рд╣реИрд╢ рдореЗрдВ, рд╣рдо URL рдФрд░ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд┐рдП рдЬрд╛рдиреЗ рд╕реЗ рдореЗрд▓ рдЦрд╛рддреЗ рд╣реИрдВред рдЗрд╕ рд╣реИрд╢ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╕рднреА рдЕрдиреНрдп URL
404 рдкреГрд╖реНрда рдирд╣реАрдВ рд▓реМрдЯрд╛рдПрдВрдЧреЗред
рдПрдХ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдФрд░ рд▓рдЪреАрд▓рд╛
рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдЯреВрд▓рдХрд┐рдЯ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╣рдорд╛рд░рд╛ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдЗрдВрдЬрди рд╣реЛрдЧрд╛ред рд╣рдо рдЗрд╕реЗ рд▓рд╛рдЗрди рд╕реЗ рдЖрд░рдВрдн рдХрд░рддреЗ рд╣реИрдВ:
our $tt = Template->new();
рдореВрд▓ рд╡рд░реНрдЧ рдХреЗ
handle_request () рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдУрд╡рд░рд▓реЛрдб рдХрд░рдиреЗ рдкрд░, рд╣рдо HTTP рд╕рд░реНрд╡рд░ рдкрд░ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдкрд░ рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВред рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЛ рд╕реНрдерд┐рд░ рд╕рд╛рдордЧреНрд░реА (png, gif, jpg, css, xml, swf) рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП, рдмреНрд▓реЙрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:
if ($path =~ qr{^/(.*\.(?:png|gif|jpg|css|xml|swf))}) { my $url = $1; print "HTTP/1.0 200 OK\n"; print "Content-Type: text/css\r\n\n" if $url =~ /css/; print "Content-Type: image/jpeg\r\n\n" if $url =~ /jpg/; print "Content-Type: image/png\r\n\n" if $url =~ /png/; print "Content-Type: image/gif\r\n\n" if $url =~ /gif/; print "Content-Type: text/xml\r\n\n" if $url =~ /xml/; print "Content-Type: application/x-shockwave-flash\r\n\n" if $url =~ /swf/; open(DTA, "<$url") || die "ERROR: $! - $url"; binmode DTA if $url =~ /jpg|gif|png|swf/; my @dtast = <DTA>; foreach my $line (@dtast) { print $line; } close(DTA); return; }
рдЪреВрдВрдХрд┐ рдореБрдЭреЗ рдХреБрдЫ MIME рдкреНрд░рдХрд╛рд░ рдорд┐рд▓реЗ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЙрдиреНрд╣реЗрдВ рдереЛрдбрд╝рд╛ рд╣рд┐рдВрджреВ рд▓рд┐рдЦрд╛;)
рдЗрд╕рдХреЗ рдмрд╛рдж рд╡рд┐рд╢рд┐рд╖реНрдЯ URL рдХреА рд╕рд╛рдордЧреНрд░реА рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рдХрд╛рд░реНрдп рдЖрддреЗ рд╣реИрдВред рдЬрдмрдХрд┐ рдЙрдирдореЗрдВ рд╕реЗ рдХреЗрд╡рд▓ рджреЛ рд╣реИрдВ - рдПрдХ рд╕реВрдЪрдХрд╛рдВрдХ рдФрд░ рдХреИрдорд░реЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдкреГрд╖реНрдаред
рдЗрдВрдбреЗрдХреНрд╕ рдкрд░, рд╣рдо рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рд╕рдмрд╕рд┐рд╕реНрдЯрдо рдЬреИрд╕реЗ рд╡реАрдбрд┐рдпреЛ рдФрд░ рдСрдбрд┐рдпреЛ рдХреИрдкреНрдЪрд░ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред рдПрдХ рдЕрд▓рдЧ рд▓рд╛рдЗрди рд╣реИ:
my %w = checkWeather();
рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рд╢рд╣рд░ рдореЗрдВ рд╡рд░реНрддрдорд╛рди рдореМрд╕рдо рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдПрдХ рд╣реИрд╢ рджреЗрддрд╛ рд╣реИ, рдЬреЛ рд╣рдорд╛рд░реЗ рдкреГрд╖реНрда рдкрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдЫреЛрдЯреЗ рд╕реЗ рдЕрдЪреНрдЫреЗ рдмрди;)
рдкрд╛рд╕ рдореЗрдВ, рд╣рдо "рд╕реНрдорд╛рд░реНрдЯ рд╣реЛрдо" рдХреЗ рд▓рд┐рдП рдЕрдВрддрд┐рдо рдкреНрд░рд╛рдкреНрдд рдФрд░ рдорд╛рдиреНрдпрддрд╛ рдкреНрд░рд╛рдкреНрдд рдХрдорд╛рдВрдб рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░реЗрдВрдЧреЗред
рдЕрдЧрд▓рд╛ рдлрд╝рдВрдХреНрд╢рди
goCamers () рдЗрдВрдбреЗрдХреНрд╕ рдХреЗ рд╕рдорд╛рди рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЙрдк-рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдпрд╣ рд╣рдорд╛рд░реЗ рдХреИрдорд░реЛрдВ рд╕реЗ рдПрдХ рдЫрд╡рд┐ рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдФрд░ рдХреБрдЫ рдкрд╛рда рд▓рд┐рдЦрдирд╛ рд╕рдВрднрд╡ рд╣реИ рдЬреЛ рд╣рдорд╛рд░реЗ "рд╕реНрдорд╛рд░реНрдЯ рд╣реЛрдо" рдХреЗ рд╕рд╛рде рд╕рдВрд╢реНрд▓реЗрд╖рд┐рдд рдФрд░ рдЖрд╡рд╛рдЬ рдХрд░реЗрдЧрд╛ред
рд╕рднреА рдкреЗрдЬ
html рдлреЛрд▓реНрдбрд░ рдореЗрдВ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИрдВред рдпрд╣рд╛рдВ рд▓рд┐рд╕реНрдЯрд┐рдВрдЧ рдЕрдкрд▓реЛрдб рдХрд░рдирд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдирд╣реАрдВ рд╣реЛрдЧрд╛, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЖрд░реНрдХрд╛рдЗрд╡ -
html.zip рдХрд╛ рд▓рд┐рдВрдХ
рджреВрдВрдЧрд╛ ред
рдХреБрд▓ рдорд┐рд▓рд╛рдХрд░
рд╕рднреА рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рдмрд╛рдж, рд╣рдореЗрдВ рдкреЛрд░реНрдЯ
16100 рдкрд░ рдПрдХ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд╡реЗрдм рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдорд┐рд▓реЗрдЧрд╛, рдЬреЛ рдЕрдм рдЖрдкрдХреЛ "рд╕реНрдорд╛рд░реНрдЯ рд╣реЛрдо" рд╕рдмрд╕рд┐рд╕реНрдЯрдо, рд╡реЗрдмрдХреИрдо рд╕реЗ рдбреЗрдЯрд╛, рдФрд░ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рджрд░реНрдЬ рдХрд┐рдП рдЧрдП рдЯреЗрдХреНрд╕реНрдЯ рдХреЛ рдЖрд╡рд╛рдЬ рджреЗрдиреЗ рдХреА рд╕реНрдерд┐рддрд┐ рджреЗрдЦрдиреЗ рджреЗрдЧрд╛ред рднрд╡рд┐рд╖реНрдп рдореЗрдВ, рд╣рдо рдЗрд╕рдореЗрдВ рдПрдХ рдФрд░, рдЕрдзрд┐рдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдЬреЛрдбрд╝реЗрдВрдЧреЗред
рдЕрдЧрд▓реЗ рд▓реЗрдЦ рдореЗрдВ рдореИрдВ
рдПрдХреНрд╕ 10 рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╣рдорд╛рд░реЗ рд╕реНрдорд╛рд░реНрдЯ рд╣реЛрдо рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдПрдХреАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реВрдВрдЧрд╛ред
рдЕрджреНрдпрддрди :
рдЬрд╛рд░реА рд░рдЦрд╛