рдиреЗрдЯрд╡рд░реНрдХрдорд╛ рдзреЗрд░реИ рдпрдиреНрддреНрд░рд╣рд░реВрдорд╛ рд╕реНрдЯреНрд░рд┐рдо рд╕реНрдХреНрд░рд┐рди

рдиреЗрдЯрд╡рд░реНрдХрдорд╛ рдзреЗрд░реИ рдпрдиреНрддреНрд░рд╣рд░реВрдорд╛ рд╕реНрдЯреНрд░рд┐рдо рд╕реНрдХреНрд░рд┐рди

рдорд▓рд╛рдИ рдХрд╛рд░реНрдпрд╛рд▓рдпрдорд╛ рдзреЗрд░реИ рд╕реНрдХреНрд░рд┐рдирд╣рд░реВрдорд╛ рдирд┐рдЧрд░рд╛рдиреАрдХреЛ рд╕рд╛рде рдбреНрдпрд╛рд╕рдмреЛрд░реНрдб рдкреНрд░рджрд░реНрд╢рди рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдерд┐рдпреЛред рддреНрдпрд╣рд╛рдБ рдзреЗрд░реИ рдкреБрд░рд╛рдиреЛ Raspberry Pi рдореЛрдбреЗрд▓ B + рд░ рд▓рдЧрднрдЧ рдЕрд╕реАрдорд┐рдд рд╕реНрд░реЛрддрд╣рд░реВрдХреЛ рд╕рд╛рде рд╣рд╛рдЗрдкрд░рд╡рд╛рдЗрдЬрд░ рдЫрдиреНред

рд╕реНрдкрд╖реНрдЯ рд░реВрдкрдорд╛ Raspberry Pi Model B+ рд╕рдБрдЧ рдмреНрд░рд╛рдЙрдЬрд░рд▓рд╛рдИ рдирд┐рд░рдиреНрддрд░ рдЪрд▓рд╛рдЙрди рд░ рдпрд╕рдорд╛ рдзреЗрд░реИ рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рд░реЗрдиреНрдбрд░ рдЧрд░реНрди рдкрд░реНрдпрд╛рдкреНрдд рдЕрдирд┐рдпрдорд┐рддрддрд╛ рдЫреИрди, рдЬрд╕рдХреЛ рдХрд╛рд░рдгрд▓реЗ рдЧрд░реНрджрд╛ рдкреГрд╖реНрда рдЖрдВрд╢рд┐рдХ рд░реВрдкрдорд╛ рдмрдЧреНрдЧреА рд╣реБрдиреНрдЫ рд░ рдкреНрд░рд╛рдпрдГ рдХреНрд░реНрдпрд╛рд╕ рд╣реБрдиреНрдЫред

рддреНрдпрд╣рд╛рдБ рдПрдХрджрдо рд╕рд░рд▓ рд░ рд╕реБрд░реБрдЪрд┐рдкреВрд░реНрдг рд╕рдорд╛рдзрд╛рди рдерд┐рдпреЛ, рдЬреБрди рдо рддрдкрд╛рдИрд╕рдБрдЧ рд╕рд╛рдЭрд╛ рдЧрд░реНрди рдЪрд╛рд╣рдиреНрдЫреБред

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

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

рднрдиреНрдиреБрднрдиреНрджрд╛ рдЪрд╛рдБрдбреЛ рднрдпреЛред

рд╕рд░реНрднрд░ рднрд╛рдЧ

рд╣рд╛рдореА рддрдпрд╛рд░ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдЫреМрдВ Ubuntu рдХреЛ рд▓рд╛рдЧрд┐ рдХреНрд▓рд╛рдЙрдб рдЫрд╡рд┐ред рдХреБрдиреИ рд╕реНрдерд╛рдкрдирд╛ рдЖрд╡рд╢реНрдпрдХ рдкрд░реНрджреИрди, рдпрд╕рд▓реЗ рднрд░реНрдЪреБрдЕрд▓ рдореЗрд╕рд┐рдирд▓рд╛рдИ рддреБрд░реБрдиреНрддреИ рдбрд┐рдкреНрд▓реЛрдп рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдкрд░реНрдиреЗ рд╕рдмреИ рдХреБрд░рд╛ рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реНрджрдЫ, рд░ CloudInit рд╕рдорд░реНрдерди рддреБрд░реБрдиреНрддреИ рдиреЗрдЯрд╡рд░реНрдХ рд╕реЗрдЯрдЕрдк рдЧрд░реНрди, ssh рдХреБрдЮреНрдЬреАрд╣рд░реВ рдердкреНрди рд░ рдпрд╕рд▓рд╛рдИ рджреНрд░реБрдд рд░реВрдкрдорд╛ рд╕рдЮреНрдЪрд╛рд▓рдирдорд╛ рд░рд╛рдЦреНрди рдорджреНрджрдд рдЧрд░реНрджрдЫред

рд╣рд╛рдореА рдирдпрд╛рдБ рднрд░реНрдЪреБрдЕрд▓ рдореЗрд╕рд┐рди рдбрд┐рдкреНрд▓реЛрдп рдЧрд░реНрдЫреМрдВ рд░ рд╕рдмреИрднрдиреНрджрд╛ рдкрд╣рд┐рд▓реЗ рдпрд╕рд▓рд╛рдИ рдпрд╕рдорд╛ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрдЫреМрдВ Xorg, nom ╨╕ рдлреНрд▓рдХреНрд╕рдмрдХреНрд╕:

apt-get update
apt-get install -y xserver-xorg nodm fluxbox
sed -i 's/^NODM_USER=.*/NODM_USER=ubuntu/' /etc/default/nodm

рд╣рд╛рдореА Xorg рдХреЛ рд▓рд╛рдЧрд┐ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдкрдирд┐ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗрдЫреМрдВ, рдХреГрдкрдпрд╛ рдкреНрд░рджрд╛рди рдЧрд░рд┐рдпреЛ us Diego Ongaro, рдХреЗрд╡рд▓ рдирдпрд╛рдБ рд╕рдВрдХрд▓реНрдк рдердкреНрджреИ 1920 ├Ч 1080, рдХрд┐рдирдХрд┐ рд╣рд╛рдореНрд░рд╛ рд╕рдмреИ рдордирд┐рдЯрд░рд╣рд░реВрд▓реЗ рдпрд╕рд▓рд╛рдИ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗрдЫрдиреН:

cat > /etc/X11/xorg.conf <<EOT
Section "Device"
    Identifier      "device"
    Driver          "vesa"
EndSection

Section "Screen"
    Identifier      "screen"
    Device          "device"
    Monitor         "monitor"
    DefaultDepth    16
    SubSection "Display"
        Modes       "1920x1080" "1280x1024" "1024x768" "800x600"
    EndSubSection
EndSection

Section "Monitor"
    Identifier      "monitor"
    HorizSync       20.0 - 50.0
    VertRefresh     40.0 - 80.0
    Option          "DPMS"
EndSection

Section "ServerLayout"
    Identifier      "layout"
    Screen          "screen"
EndSection
EOT

systemctl restart nodm

рдЕрдм рд╣рд╛рдореА рдлрд╛рдпрд░рдлрдХреНрд╕ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрдиреЗрдЫреМрдВ, рд╣рд╛рдореА рдпрд╕рд▓рд╛рдИ рдкреНрд░рдгрд╛рд▓реА рд╕реЗрд╡рд╛рдХреЛ рд░реВрдкрдорд╛ рдЪрд▓рд╛рдЙрдиреЗрдЫреМрдВ, рддреНрдпрд╕реИрд▓реЗ рдПрдЙрдЯрд╛ рдХреБрд░рд╛рдХреЛ рд▓рд╛рдЧрд┐ рд╣рд╛рдореА рдпрд╕рдХреЛ рд▓рд╛рдЧрд┐ рдПрдХ рдЗрдХрд╛рдИ рдлрд╛рдЗрд▓ рд▓реЗрдЦреНрдиреЗрдЫреМрдВ:

apt-get install -y firefox xdotool

cat > /etc/systemd/system/firefox.service <<EOT
[Unit]
Description=Firefox
After=network.target

[Service]
Restart=always
User=ubuntu
Environment="DISPLAY=:0"
Environment="XAUTHORITY=/home/ubuntu/.Xauthority"
ExecStart=/usr/bin/firefox -url 'http://example.org/mydashboard'
ExecStartPost=/usr/bin/xdotool search --sync --onlyvisible --class "Firefox" windowactivate key F11

[Install]
WantedBy=graphical.target
EOT

systemctl enable firefox
systemctl start firefox

рд╣рд╛рдореАрд▓рд╛рдИ рдлрд╛рдпрд░рдлрдХреНрд╕ рддреБрд░реБрдиреНрддреИ рдлреБрд▓ рд╕реНрдХреНрд░рд┐рди рдореЛрдбрдорд╛ рдЪрд▓рд╛рдЙрди Xdotool рдЪрд╛рд╣рд┐рдиреНрдЫред
рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджреИ -url рддрдкрд╛рдЗрдБ рдХреБрдиреИ рдкрдирд┐ рдкреГрд╖реНрда рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ рддрд╛рдХрд┐ рдмреНрд░рд╛рдЙрдЬрд░ рд╕реБрд░реБ рд╣реБрдБрджрд╛ рдпреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдкрдорд╛ рдЦреБрд▓реНрдЫред

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

рдпрд╕рдХрд╛ рд▓рд╛рдЧрд┐ рд╣рд╛рдореАрд▓рд╛рдИ рджреБрдИрд╡рдЯрд╛ рдХреБрд░рд╛ рдЪрд╛рд╣рд┐рдиреНрдЫ: FFmpeg рдореЛрдбреНрдпреБрд▓ рд╕рдВрдЧ x11 рд╕рдорд╛рддреНрдиреБрд╣реЛрд╕реН, x's рд░ рдмрд╛рдЯ рддрд╕реНрд╡рд┐рд░рд╣рд░реВ рдЦрд┐рдЪреНрдирдХреЛ рд▓рд╛рдЧрд┐ рд╕реНрдЯреНрд░рд┐рдордЖрдИ, рдЬрд╕рд▓реЗ рдпрд╕рд▓рд╛рдИ рд╣рд╛рдореНрд░рд╛ рдЧреНрд░рд╛рд╣рдХрд╣рд░реВрд▓рд╛рдИ рд╡рд┐рддрд░рдг рдЧрд░реНрдиреЗрдЫ:

apt-get install -y make gcc ffmpeg 

cd /tmp/
wget https://github.com/ccrisan/streameye/archive/master.tar.gz
tar xvf master.tar.gz 
cd streameye-master/
make
make install

cat > /etc/systemd/system/streameye.service <<EOT
[Unit]
Description=streamEye
After=network.target

[Service]
Restart=always
User=ubuntu
Environment="DISPLAY=:0"
Environment="XAUTHORITY=/home/ubuntu/.Xauthority"
ExecStart=/bin/sh -c 'ffmpeg -f x11grab -s 1920x1080 -i :0 -r 1 -f mjpeg -q:v 5 - 2>/dev/null | streameye'

[Install]
WantedBy=graphical.target
EOT

systemctl enable streameye
systemctl start streameye

рд╣рд╛рдореНрд░реЛ рддрд╕реНрд╡рд┐рд░рд▓рд╛рдИ рдЫрд┐рдЯреЛ рдЕрдкрдбреЗрдЯрдХреЛ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдкрд░реНрджреИрди, рдореИрд▓реЗ рд░рд┐рдлреНрд░реЗрд╕ рджрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реЗрдХреЛ рдЫреБ: 1 рдлреНрд░реЗрдо рдкреНрд░рддрд┐ рд╕реЗрдХреЗрдиреНрдб (рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░ -r 1) рд░ рдХрдореНрдкреНрд░реЗрд╕рди рдЧреБрдгрд╕реНрддрд░: 5 (рдкреИрд░рд╛рдорд┐рдЯрд░ -q:v 5)

рдЕрдм рдЬрд╛рдиреЗ рдкреНрд░рдпрд╛рд╕ рдЧрд░реМрдВ http://your-vm:8080/, рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдорд╛ рддрдкрд╛рдИрдВрд▓реЗ рдбреЗрд╕реНрдХрдЯрдкрдХреЛ рдирд┐рд░рдиреНрддрд░ рдЕрджреНрдпрд╛рд╡рдзрд┐рдХ рдЧрд░рд┐рдПрдХреЛ рд╕реНрдХреНрд░рд┐рдирд╕рдЯ рджреЗрдЦреНрдиреБрд╣реБрдиреЗрдЫред рдорд╣рд╛рди! - рдХреЗ рдЖрд╡рд╢реНрдпрдХ рдерд┐рдпреЛред

рдЧреНрд░рд╛рд╣рдХ рдкрдХреНрд╖

рдпрд╣рд╛рдБ рдЕрдЭреИ рд╕рдЬрд┐рд▓реЛ рдЫ, рдореИрд▓реЗ рднрдиреЗрдЭреИрдВ, рд╣рд╛рдореА рд░рд╛рд╕реНрдкрдмреЗрд░реА рдкрд╛рдИ рдореЛрдбреЗрд▓ B + рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗрдЫреМрдВред

рд╕рдмреИ рднрдиреНрджрд╛ рдкрд╣рд┐рд▓реЗ, рдпрд╕рд▓рд╛рдИ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реМрдВ рдЖрд░реНрдХ рд▓рд┐рдирдХреНрд╕ рдПрдЖрд░рдПрдо, рдпрд╕рдХреЛ рд▓рд╛рдЧрд┐ рд╣рд╛рдореА рдкрдЫреНрдпрд╛рдЙрдБрдЫреМрдВ рдирд┐рд░реНрджреЗрд╢рдирд╣рд░реВ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╕рд╛рдЗрдЯ рдорд╛ред

рд╣рд╛рдореАрд▓реЗ рд╣рд╛рдореНрд░реЛ рднрд┐рдбрд┐рдпреЛ рдЪрд┐рдкрдХреЛ рд▓рд╛рдЧрд┐ рдердк рдореЗрдореЛрд░реА рдЖрд╡рдВрдЯрд┐рдд рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ, рдпрд╕рдХреЛ рд▓рд╛рдЧрд┐ рд╣рд╛рдореА рд╕рдореНрдкрд╛рджрди рдЧрд░реНрдиреЗрдЫреМрдВ /boot/config.txt

gpu_mem=128

рд╣рд╛рдореНрд░реЛ рдирдпрд╛рдБ рдкреНрд░рдгрд╛рд▓реА рдмреБрдЯ рдЧрд░реМрдВ рд░ рдкреНрдпрд╛рдХрдореНрдпрд╛рди рдХреАрд░рд┐рдЩ рд╕реБрд░реБ рдЧрд░реНрди рдирдмрд┐рд░реНрд╕рдиреБрд╣реЛрд╕реН, рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реН OMXPlayer:

pacman -Sy omxplayer

рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рд░реВрдкрдорд╛, OMXPlayer x рдмрд┐рдирд╛ рдХрд╛рдо рдЧрд░реНрди рд╕рдХреНрдЫ, рддреНрдпрд╕реИрд▓реЗ рд╣рд╛рдореАрд▓рд╛рдИ рдпрд╕рдХреЛ рд▓рд╛рдЧрд┐ рдПрдХ рдПрдХрд╛рдЗ рдлрд╛рдЗрд▓ рд▓реЗрдЦреНрди рд░ рдЪрд▓рд╛рдЙрди рдЖрд╡рд╢реНрдпрдХ рдЫ:

cat > /etc/systemd/system/omxplayer.service <<EOT
[Unit]
Description=OMXPlayer
Wants=network-online.target
After=network-online.target

[Service]
Type=simple
Restart=always
ExecStart=/usr/bin/omxplayer -r --live -b http://your-vm:8080/ --aspect-mode full

[Install]
WantedBy=multi-user.target
EOT

systemctl enable omxplayer
systemctl start omxplayer

рдПрдХ рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░ рд░реВрдкрдорд╛ -b http://your-vm:8080/ рд╣рд╛рдореА рд╣рд╛рдореНрд░реЛ рд╕рд░реНрднрд░рдмрд╛рдЯ url рдкрд╛рд╕ рдЧрд░реНрджреИрдЫреМрдВред

рдпрддрд┐ рдорд╛рддреНрд░реИ рд╣реЛ, рд╣рд╛рдореНрд░реЛ рд╕рд░реНрднрд░рдмрд╛рдЯ рддрд╕реНрд╡рд┐рд░ рдЬрдбрд╛рди рднрдПрдХреЛ рд╕реНрдХреНрд░рд┐рдирдорд╛ рддреБрд░реБрдиреНрддреИ рджреЗрдЦрд┐рдиреБ рдкрд░реНрдЫред рдХреБрдиреИ рд╕рдорд╕реНрдпрд╛ рднрдПрдорд╛, рд╕реНрдЯреНрд░рд┐рдо рд╕реНрд╡рддрдГ рдкреБрди: рд╕реБрд░реБ рд╣реБрдиреЗрдЫ рд░ рдЧреНрд░рд╛рд╣рдХрд╣рд░реВ рдпрд╕рдорд╛ рдкреБрди: рдЬрдбрд╛рди рд╣реБрдиреЗрдЫрдиреНред

рдмреЛрдирд╕рдХреЛ рд░реВрдкрдорд╛, рддрдкрд╛рдИрдВрд▓реЗ рдХрд╛рд░реНрдпрд╛рд▓рдпрдорд╛ рд░рд╣реЗрдХрд╛ рд╕рдмреИ рдХрдореНрдкреНрдпреБрдЯрд░рд╣рд░реВрдорд╛ рд╕реНрдХреНрд░рд┐рдирд╕реЗрднрд░рдХреЛ рд░реВрдкрдорд╛ рдирддрд┐рдЬрд╛рдХреЛ рдЪрд┐рддреНрд░ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред рдпрд╕рдХрд╛ рд▓рд╛рдЧрд┐ рддрдкрд╛рдИрд▓рд╛рдИ рдЖрд╡рд╢реНрдпрдХ рдкрд░реНрдиреЗрдЫ MPV ╨╕ XScreenSaver:

mode:  one
selected: 0
programs:              
     "Monitoring Screen"  mpv --really-quiet --no-audio --fs       
      --loop=inf --no-stop-screensaver       
      --wid=$XSCREENSAVER_WINDOW        
      http://your-vm:8080/      n
    maze -root        n
    electricsheep --root 1       n

рдЕрдм рддрдкрд╛рдИрдХрд╛ рд╕рд╣рдХрд░реНрдореАрд╣рд░реВ рдзреЗрд░реИ рдЦреБрд╕реА рд╣реБрдиреЗрдЫрдиреН ЁЯЩВ

рд╕реНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдердкреНрди