<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title>proft.me - Блог о Linux, Python, Vim и другом здоровом образе жизни</title><link>http://proft.me/feed/latest/</link><description>Новости блога proft.me - Блог о Linux, Python, Vim и другом здоровом образе жизни</description><language>ru</language><lastBuildDate>Tue, 24 Apr 2012 23:15:44 +0300</lastBuildDate><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/proft" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="proft" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item><title>Сменил xubuntu на arch linux</title><link>http://proft.me/2012/04/24/smenil-xubuntu-na-arch-linux/</link><description>&lt;style&gt;ol li {margin:5px 0 0 0}&lt;/style&gt;

&lt;p&gt;&lt;img src="http://proft.me/static/img/linux/archlinux_logo.png" alt="archlinux_logo.png" class="right"&gt;
&lt;em&gt;Arch linux&lt;/em&gt; будет третьим моим linux-дистрибутивом на десктопе, а все начиналось в далеком 2004, когда мне предложили писать на &lt;em&gt;Qt&lt;/em&gt; и я решил поставить &lt;em&gt;Red Hat 8.0&lt;/em&gt; (до сих пор в загашнике валяются три cd-болванки) с &lt;em&gt;KDE 3&lt;/em&gt; (ностальгирую). В 2008 решил попробовать &lt;a href="http://proft.me/2008/02/26/ubuntu-chelovechiskij-linux-v-vinnice/"&gt;ubuntu&lt;/a&gt; и заказал диск с &lt;em&gt;Hardy Heron, 8.04&lt;/em&gt; (услуга доставки дисков &lt;em&gt;shipit&lt;/em&gt; от &lt;em&gt;canonical&lt;/em&gt; тогда еще работала). &lt;/p&gt;
&lt;p&gt;Почему выбрал &lt;em&gt;арч&lt;/em&gt;? Вот несколько причин:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Облегченность. Простота настройки. Расширение кругозора.&lt;/strong&gt; Мне понравился подход используемый для распространения &lt;em&gt;arch&lt;/em&gt; - базовый образ занимает 390 МБ и устанавливается за 10 минут. Дальше обновляешься до актуальной версии и доставляешь нужные только тебе пакеты. Например в моей &lt;em&gt;xubuntu 11.10&lt;/em&gt; было около &lt;em&gt;1900&lt;/em&gt; пакетов, часть из которых мне не нужны и висели багажом, сейчас в арче &lt;em&gt;842&lt;/em&gt; пакета. Также удобно что основные настройки (демоны, модули, сеть, локаль, временная зона) настраивается в одном текстовом файле. В общем рай для тех, кому нравится знать, что у него 'под капотом'.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Wiki&lt;/strong&gt;. &lt;a href="http://wiki.archlinux.org/"&gt;Вики&lt;/a&gt; содержит почти всю (если не всю) информацию про дистрибутив, начиная с установки, заканчивая нюансами настройки видеокарт, тачпадов и возможных отклонений при разных конфигурациях. Раньше, что бы решить какую-либо проблему для &lt;em&gt;ubuntu&lt;/em&gt; или &lt;em&gt;centos&lt;/em&gt; приходилось рыскать по разным блогам. Сейчас же достаточно зайти на вики и скорее всего там есть решение. Также вики постоянно обновляется и за всеми новостями можно следить в одном месте, удобно. Пытался я как-то такое найти для &lt;em&gt;ubuntu&lt;/em&gt; - безрезультатно, на форуме мой топик остался без должного внимания.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;AUR&lt;/strong&gt;. &lt;em&gt;AUR&lt;/em&gt; позволяет собирать пакеты отсутствующие в основных репозитариях. Чаще всего в &lt;em&gt;ауре&lt;/em&gt; можно встретить самые свежие версии из &lt;em&gt;git, hg, svn, bzr&lt;/em&gt; репозитариев или модификации пакетов с какими-то рюшками от других пользователей. Раньше что-бы найти новое приложение, которого нет в репозитариях &lt;em&gt;ubuntu&lt;/em&gt;, приходилось гуглить и находить &lt;em&gt;ppa&lt;/em&gt;, сейчас достаточно поискать в &lt;em&gt;AUR&lt;/em&gt; и выбрать желаемый пакет. Недавно хотел поставить последнюю стабильную версию &lt;em&gt;GIMP&lt;/em&gt; 2.7.2, не все так просто оказалось, надо было вручную разрешать зависимости, устанавливать последние версии библиотек из git-репозитария. В &lt;em&gt;арче&lt;/em&gt; достаточно найти нужную версию в &lt;em&gt;ауре&lt;/em&gt; и подтвердить установку нужных зависимостей. &lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Rolling release model&lt;/strong&gt;. Это означает, что нету обновлений дистрибутива с некоторой периодичность (например, как у &lt;em&gt;ubuntu&lt;/em&gt; раз в шесть месяцев), а обновленные пакеты приезжают по мере своего обновления. Если что-то сломается то всегда можно откатится на предыдущую версию, для для этого есть &lt;a href="https://wiki.archlinux.org/index.php/Downgrading_Packages"&gt;несколько вариантов&lt;/a&gt;. У меня за два месяца использования такое было только раз: на одной из машин отвалился wifi c ядром 3.3.1, пришлось откатится на 3.2 и добавить пакет в игнор, с новым ядром 3.3.2 все работает как и полагается. Еще один позитив - не надо пере устанавливать систему при неудачном апгрейде. Я застал 8 релизов &lt;em&gt;ubuntu&lt;/em&gt;, три прошли с неработоспособной системой после обновлений, как следствие - пере установка рутового раздела и установка нужных приложений с нуля.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Python3&lt;/strong&gt;. В арче, начиная с конца 2010 года &lt;a href="http://www.archlinux.org/news/python-is-now-python-3/"&gt;по умолчанию установлен&lt;/a&gt; &lt;em&gt;python3&lt;/em&gt;. Это подстегнуло меня более вдумчиво прочитать новшества в третей версии, изменения в основных ветках смотри по ссылкам &lt;a href="http://docs.python.org/release/3.0.1/whatsnew/3.0.html"&gt;3.0&lt;/a&gt;, &lt;a href="http://docs.python.org/release/3.1.1/whatsnew/3.1.html"&gt;3.1&lt;/a&gt;, &lt;a href="http://docs.python.org/release/3.2/whatsnew/3.2.html"&gt;3.2&lt;/a&gt;. Переезд используемых скриптов не занял много времени, консольная утилита &lt;em&gt;2to3&lt;/em&gt; отлично справляется со своим предназначением. (Про то, что в &lt;em&gt;ubuntu 12.04&lt;/em&gt; уже будет &lt;em&gt;python3&lt;/em&gt; я знаю).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Производительность&lt;/strong&gt;. Местами система стала отзывчевей и время первой загрузки стало заметно быстрее.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Шрифты&lt;/strong&gt;. Шрифты из коробки стали приятнее чем были в &lt;em&gt;xubuntu&lt;/em&gt;. Как я только не колдовал с &lt;em&gt;fonts.conf&lt;/em&gt; - похожего эффекта мне не удалось добиться под &lt;em&gt;ubuntu&lt;/em&gt;. Также в &lt;em&gt;chromium&lt;/em&gt;, под &lt;em&gt;ubuntu&lt;/em&gt;, на некоторых сайтах шрифты отображались без сглаживания, как оказалось в последствии, это баг &lt;em&gt;chromium&lt;/em&gt; который проявляется не всегда. В том же самом релизе &lt;em&gt;chromium&lt;/em&gt; (линейки 18) на арче все выглядит нормально.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Ниже описаны действия которые я проделывал у себя, сохраню собранную инфу для будущих поколений. Почти все это можно найти в разных уголках &lt;a href="http://wiki.archlinux.org/"&gt;вики&lt;/a&gt;.&lt;/p&gt;
&lt;h3 class="lb"&gt;Первоначальная установка&lt;/h3&gt;

&lt;p&gt;Пакеты выбранные при установке:&lt;/p&gt;
&lt;pre class="prettyprint"&gt;
# группы
base base-devel

# пакеты
net-tools netcfg openssh sudo wireless_tools
&lt;/pre&gt;

&lt;p&gt;Локаль правим на последних шагах установщика либо уже после установки.&lt;/p&gt;
&lt;pre class="prettyprint"&gt;
# vim /etc/locale.gen

# раскомментировать строку
ru_RU.UTF-8 UTF-8

# сохраняем файл, запускаем
locale-gen
&lt;/pre&gt;

&lt;p&gt;Раскомментируем ближайшие репозитарии в файле &lt;em&gt;/etc/pacman.d/mirrorlist&lt;/em&gt;. Свежий список зеркал можно получить &lt;a href="http://www.archlinux.org/mirrorlist/"&gt;тут&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Настроем wifi-сеть с помощью &lt;em&gt;netcfg&lt;/em&gt;.&lt;/p&gt;
&lt;pre class="prettyprint"&gt;
# скопируем пример с настройками 
cp /etc/network.d/examples/wireless-wpa /etc/network.d/mywifi

# внесем нужные правки в /etc/network.d/mywifi (название сети, пароль)
vim /etc/network.d/mywifi

# выполним для безопасности
chmod 0600 /etc/network.d/mywifi

# добавим netcfg при загрузке, для этого надо отредактировать строки с NETWORKS и DAEMONS
vim /etc/rc.conf

NETWORKS=(mywifi)
DAEMONS=(syslog-ng @network @net-profiles crond)
&lt;/pre&gt;

&lt;p&gt;Со времени выхода последнего установочного диска (август 2011) были проделаны разные обновления в внутренностях системы. Подскажем системе что обновилось. &lt;/p&gt;
&lt;p&gt;1. &lt;a href="http://www.archlinux.org/news/initscripts-update-manual-intervention-required/"&gt;initscripts update&lt;/a&gt;&lt;/p&gt;
&lt;pre class="prettyprint"&gt;
rm /etc/profile.d/locale.sh
&lt;/pre&gt;

&lt;p&gt;2. Ошибка вида &lt;a href="https://bbs.archlinux.org/viewtopic.php?id=138954"&gt;glibc: /usr/bin/tzselect exists in filesystem&lt;/a&gt;&lt;/p&gt;
&lt;pre class="prettyprint"&gt;
pacman -S tzdata
&lt;/pre&gt;

&lt;p&gt;3. &lt;a href="http://www.archlinux.org/news/filesystem-upgrade-manual-intervention-required/"&gt;filesystem upgrade&lt;/a&gt;&lt;/p&gt;
&lt;pre class="prettyprint"&gt;
pacman -S filesystem --force
&lt;/pre&gt;

&lt;p&gt;Обновим систему.&lt;/p&gt;
&lt;pre class="prettyprint"&gt;
pacman -Syu
&lt;/pre&gt;

&lt;p&gt;Добавим в &lt;em&gt;/etc/pacman.conf&lt;/em&gt; два новых репозитария для &lt;em&gt;yaourt&lt;/em&gt; и &lt;em&gt;vim&lt;/em&gt;. Краткий список с примерами использования &lt;em&gt;pacman&lt;/em&gt; и &lt;em&gt;yaourt&lt;/em&gt; (надстройка над &lt;em&gt;pacman&lt;/em&gt; с возможность установки из &lt;em&gt;AUR&lt;/em&gt;) можно посмотреть &lt;a href="http://proft.me/2012/03/24/pacman-paketnyj-menedzher-dlya-arch-linux/"&gt;тут&lt;/a&gt;. &lt;/p&gt;
&lt;pre class="prettyprint"&gt;
# vim /etc/pacman.conf

[archlinuxfr]
Server = http://repo.archlinux.fr/$arch

[herecura-stable]
Server = http://repo.herecura.be/herecura-stable/$arch
&lt;/pre&gt;

&lt;p&gt;Обновим &lt;em&gt;vim&lt;/em&gt; и &lt;em&gt;yaourt&lt;/em&gt;. &lt;/p&gt;
&lt;pre class="prettyprint"&gt;
pacman -S herecura-stable/vim yaourt
&lt;/pre&gt;

&lt;p&gt;Добавим рабочего пользователя и добавим его в группу &lt;em&gt;wheel&lt;/em&gt;. Я использую &lt;a href="http://proft.me/2010/11/30/smenil-bash-na-zsh/"&gt;zsh&lt;/a&gt; вместо &lt;em&gt;bash&lt;/em&gt; потому сразу и установлю его.&lt;/p&gt;
&lt;pre class="prettyprint"&gt;
# создание пользователя

pacman -S zsh
useradd -m -g users -G audio,lp,optical,storage,video,games,power,wheel -s /bin/zsh proft
passwd proft

# добавление в новую группу
export EDITOR=vim &amp;&amp; visudo

# раскомментировать строку
%wheel ALL=(ALL) ALL
&lt;/pre&gt;

&lt;h3 class="lb"&gt;Графическая среда&lt;/h3&gt;

&lt;p&gt;Установка &lt;em&gt;Xorg&lt;/em&gt;.&lt;/p&gt;
&lt;pre class="prettyprint"&gt;
sudo pacman -S dbus xorg-server xorg-xinit xorg-utils xorg-server-utils xorg xf86-input-keyboard xf86-input-mouse
&lt;/pre&gt;

&lt;p&gt;Добавить &lt;em&gt;dbus&lt;/em&gt; в &lt;em&gt;DAEMONS&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Установка драйвера на видео.&lt;/p&gt;
&lt;pre class="prettyprint"&gt;
# для intel
sudo pacman -S xf86-video-intel

# для nvidia
sudo pacman -S nvidia
&lt;/pre&gt;

&lt;p&gt;Установка &lt;em&gt;XFCE&lt;/em&gt;.&lt;/p&gt;
&lt;pre class="prettyprint"&gt;
sudo pacman -S xfce4 xfce4-goodies
sudo yaourt -S xfce4-volumed xfce4-notifyd
&lt;/pre&gt;

&lt;p&gt;Для корректной отрисовки приложений написанных на &lt;em&gt;QT&lt;/em&gt; понадобится пакет &lt;em&gt;libgnomeui&lt;/em&gt;.&lt;/p&gt;
&lt;pre class="prettyprint"&gt;
sudo pacman -S libgnomeui
&lt;/pre&gt;

&lt;p&gt;Установка менеджера входа &lt;a href="https://wiki.archlinux.org/index.php/SLiM"&gt;Slim&lt;/a&gt;.&lt;/p&gt;
&lt;pre class="prettyprint"&gt;
sudo pacman -S slim slim-themes archlinux-themes-slim
&lt;/pre&gt;

&lt;p&gt;Отредактируем &lt;em&gt;/etc/inittab&lt;/em&gt;, переключив уровень запуска по умолчанию на &lt;em&gt;5&lt;/em&gt;, также раскомментируем строку с &lt;em&gt;slim&lt;/em&gt;, для включении его в качестве менеджера входа по умолчанию.&lt;/p&gt;
&lt;p&gt;Добавим новые раскладки для клавиатуры.&lt;/p&gt;
&lt;pre class="prettyprint"&gt;
# sudo vim /etc/X11/xorg.conf.d/10-evdev.conf:
# в раздел для клавиатуры добавим

Option "XkbLayout" "us,ru,ua"
Option "XkbVariant" ",winkeys"
&lt;/pre&gt;

&lt;p&gt;Активируем запуск &lt;em&gt;xfce&lt;/em&gt; при логине.&lt;/p&gt;
&lt;pre class="prettyprint"&gt;
# vim ~/.xinitrc

#!/bin/sh
exec ck-launch-session startxfce4
&lt;/pre&gt;

&lt;p&gt;Установим дополнительные шрифты.&lt;/p&gt;
&lt;pre class="prettyprint"&gt;
yaourt -S ttf-dejavu ttf-bitstream-vera ttf-ms-fonts terminus-font ttf-ubuntu-font-family
&lt;/pre&gt;

&lt;p&gt;Установим скринсервер.&lt;/p&gt;
&lt;pre class="prettyprint"&gt;
yaourt -S xscreensaver-arch-logo
&lt;/pre&gt;

&lt;p&gt;Украшательства: темы, иконки, курсоры.&lt;/p&gt;
&lt;pre class="prettyprint"&gt;
sudo pacman -S faenza-cupertino-icon-theme faenza-icon-theme faenza-xfce-addon xcursor-human xfce-theme-greybird zukitwo-themes
&lt;/pre&gt;

&lt;h3 class="lb"&gt;Звук&lt;/h3&gt;

&lt;p&gt;Т.к. &lt;em&gt;ALSA&lt;/em&gt; установлена по умолчанию, то установим пакет &lt;em&gt;alsa-utils&lt;/em&gt; в котором есть микшер.&lt;/p&gt;
&lt;pre class="prettyprint"&gt;
sudo pacman -S alsa-utils 
&lt;/pre&gt;

&lt;p&gt;Включим звук с помощью &lt;em&gt;alsamixer&lt;/em&gt; (по умолчанию он отключен).&lt;/p&gt;
&lt;p&gt;Сохраним настройки.&lt;/p&gt;
&lt;pre class="prettyprint"&gt;
sudo alsactl store
&lt;/pre&gt;

&lt;p&gt;Добавим &lt;em&gt;alsa&lt;/em&gt; в &lt;em&gt;/etc/rc.conf&lt;/em&gt; (секция &lt;em&gt;DAEMONS&lt;/em&gt;) для восстановления уровней микшера при загрузке.&lt;/p&gt;
&lt;h3 class="lb"&gt;Дополнительные приложения&lt;/h3&gt;

&lt;p&gt;Сетевые приложения.&lt;/p&gt;
&lt;pre class="prettyprint"&gt;
sudo pacman -S dnsutils whois flashplugin firefox chromium transmission-gtk
&lt;/pre&gt;

&lt;p&gt;Skype.&lt;/p&gt;
&lt;pre class="prettyprint"&gt;
yaourt -S skype skypetab-ng-git v4l-utils
&lt;/pre&gt;

&lt;p&gt;Аудио и видио-плейер, кодеки.&lt;/p&gt;
&lt;pre class="prettyprint"&gt;
sudo pacman -S smplayer smplayer-themes deadbeef libvorbis libmad flac curl wavpack ffmpeg libsndfile mpg123
&lt;/pre&gt;

&lt;p&gt;Nautilus и архивы (rar, zip c поддержкой национальных символов).&lt;/p&gt;
&lt;pre class="prettyprint"&gt;
pacman -S nautilus p7zip zip unrar file-roller gstreamer0.10-plugins
yaourt -S unzip-beta gloobus-sushi-bzr 
&lt;/pre&gt;

&lt;p&gt;Ассоциация файлов с приложением для отдельного пользователя находятся в &lt;em&gt;~/.local/share/applications/mimeapps.list&lt;/em&gt;. Для всех пользователей в &lt;em&gt;/usr/share/applications/defaults.list&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Dropbox.&lt;/p&gt;
&lt;pre class="prettyprint"&gt;
yaourt -S dropbox dropbox-daemon nautilus-dropbox
&lt;/pre&gt;

&lt;p&gt;Впишем имя системного пользователя в файл &lt;em&gt;/etc/conf.d/dropboxd.conf&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Добавим &lt;em&gt;dropboxd&lt;/em&gt; в список &lt;em&gt;DAEMONS&lt;/em&gt; в файле &lt;em&gt;/etc/rc.conf&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;LibreOffice.&lt;/p&gt;
&lt;pre class="prettyprint"&gt;
pacman -S libreoffice libreoffice-gnome
&lt;/pre&gt;

&lt;p&gt;Разная мелочь: Synapse, Clipit, Caffeine, Goldendict, Pidgin.&lt;/p&gt;
&lt;pre class="prettyprint"&gt;
yaourt -S synapse clipit caffeine goldendict-git pidgin pidgin-faenza-tray-dark-icons evince keepassx 
&lt;/pre&gt;

&lt;h3 class="lb"&gt;Настройки для ноутбука/нетбука&lt;/h3&gt;

&lt;p&gt;Установим драйвер для тачпада.&lt;/p&gt;
&lt;pre class="prettyprint"&gt;
sudo pacman -S xf86-input-synaptics
&lt;/pre&gt;

&lt;p&gt;Установим пакет &lt;em&gt;laptop-mode-tools&lt;/em&gt; для управления энергосбережением.&lt;/p&gt;
&lt;pre class="prettyprint"&gt;
sudo pacman -S laptop-mode-tools acpi hdparm
&lt;/pre&gt;

&lt;p&gt;Добавим &lt;em&gt;laptop-mode&lt;/em&gt; в список &lt;em&gt;DAEMONS&lt;/em&gt; в файле &lt;em&gt;/etc/rc.conf&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Подробности настройки &lt;em&gt;Laptop Mode&lt;/em&gt; смотри в &lt;a href="https://wiki.archlinux.org/index.php/Laptop_Mode_Tools"&gt;вики&lt;/a&gt; и про &lt;a href="https://wiki.archlinux.org/index.php/Laptop"&gt;ноутбуки&lt;/a&gt; в целом.&lt;/p&gt;
&lt;h3 class="lb"&gt;Настройка принтера&lt;/h3&gt;

&lt;p&gt;Для Samsung'овских usb-принтеров понадобятся два пакета &lt;/p&gt;
&lt;pre class="prettyprint"&gt;
yaourt -S cups-usblp splix
&lt;/pre&gt;

&lt;p&gt;Дальше заходим браузером на &lt;em&gt;http://localhost:631&lt;/em&gt;, вводим рутовый пароль, выбираем &lt;em&gt;Adding Printers and Classes&lt;/em&gt; &amp;rarr; &lt;em&gt;Add Printer&lt;/em&gt; и следуем предлагаем инструкциям.&lt;/p&gt;
&lt;p&gt;Скриншот десктопа.&lt;/p&gt;
&lt;div style="text-align:center"&gt;
&lt;a title="Arch linux" rel="prettyPhoto[arch]" href="/static/img/linux/archss.jpg"&gt;&lt;img alt="Desktop" src="http://proft.me/static/img/linux/archss_thumb.jpg"&gt;&lt;/a&gt;
&lt;/div&gt;</description><pubDate>Tue, 24 Apr 2012 23:15:44 +0300</pubDate><guid>http://proft.me/2012/04/24/smenil-xubuntu-na-arch-linux/</guid></item><item><title>Водный марафон 2012</title><link>http://proft.me/2012/04/16/vodnyj-marafon-2012/</link><description>&lt;style&gt;
ul.gallery li {min-height:310px}
&lt;/style&gt;

&lt;p&gt;В прошлые выходные (7,8 апреля) состоялся &lt;a href="http://proft.me/2011/04/11/vodnyj-marafon-2011/"&gt;очередной&lt;/a&gt; водный марафон протяженостью 100 км. Примерная география участников: &lt;em&gt;Винница, Киев, Черкассы, Чернигов, Молдавия&lt;/em&gt;. Маршрут такой же: Спартак-Тывров (первые 50 км), Тывров-Печора (вторые 50 км + пороги).&lt;/p&gt;
&lt;p&gt;Погода в этот раз была более дружелюбной, без снегопада. Только на втором этапе лил дождь, примерно с половины дороги, но это лучше чем град с дождем :) как в прошлый раз. &lt;/p&gt;
&lt;p&gt;За время марафона мы сменили две посудины: вышли на байдарке, двойке, а финишировали на катамаране :) (см. фото ниже). Возле Воробьевки, где-то на третьем пороге, пробили байдарку. В этому году уровень воды был меньше и часто приходилось вылазить с байды и отталкивается от камней. Черпать воду под дождем не вариант :), клеить латку - тоже, отвалится при первом же камне. Пока осматривали пробоину, нас догнал шестиместный катамаран, но с четырьмя гребцами, места хватило и мне с напарником и байду можно было привязать по центру, так и финишировали :).&lt;/p&gt;
&lt;ul class="gallery"&gt;
    &lt;li&gt;&lt;a title="Построение, поднятие флага, гимн" rel="prettyPhoto[wm2012]" href="/static/photos/2012/wm2012/s1.jpg"&gt;&lt;img alt="Водный марафон 2012" src="http://proft.me/static/photos/2012/wm2012/thumb.s1.jpg"&gt;&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a title="Посадка гребцов, пристегивание ремней безопасности :)" rel="prettyPhoto[wm2012]" href="/static/photos/2012/wm2012/s2.jpg"&gt;&lt;img alt="Водный марафон 2012" src="http://proft.me/static/photos/2012/wm2012/thumb.s2.jpg"&gt;&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a title="Отчаливание, постройка на старт" rel="prettyPhoto[wm2012]" href="/static/photos/2012/wm2012/s3.jpg"&gt;&lt;img alt="Водный марафон 2012" src="http://proft.me/static/photos/2012/wm2012/thumb.s3.jpg"&gt;&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a title="Старт, махач веслами :)" rel="prettyPhoto[wm2012]" href="/static/photos/2012/wm2012/s4.jpg"&gt;&lt;img alt="Водный марафон 2012" src="http://proft.me/static/photos/2012/wm2012/thumb.s4.jpg"&gt;&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a title="Проход порога на 'эвакуаторе' :)" rel="prettyPhoto[wm2012]" href="/static/photos/2012/wm2012/s5.jpg"&gt;&lt;img alt="Водный марафон 2012" src="http://proft.me/static/photos/2012/wm2012/thumb.s5.jpg"&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div style="clear:both;padding-bottom: 10px"&gt;&lt;/div&gt;

&lt;p&gt;Представителей из процессы/телевидения в этом году было больше: два местных (&lt;em&gt;20 минут&lt;/em&gt;, &lt;em&gt;Вита&lt;/em&gt;) и &lt;em&gt;Интер&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Ролик со старта, правда, не очень хорошего качества, от &lt;em&gt;20 минут&lt;/em&gt; (мы на ближнем плане, оранжевая байдарка)&lt;/p&gt;
&lt;iframe style="margin: 15px 0" width="420" height="315" src="http://www.youtube.com/embed/SM1s7oQ9H9o" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;

&lt;p&gt;Ролик от &lt;em&gt;Вита&lt;/em&gt; - больше разных интервью от организаторов и участников, старт показали частично. Также есть заметка на &lt;a href="http://www.myvin.com.ua/ua/news/news_vin/sport/13700.html"&gt;myvin.com.ua&lt;/a&gt;.&lt;/p&gt;
&lt;iframe style="margin: 15px 0" width="420" height="315" src="http://www.youtube.com/embed/mIRfffES3y8" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;

&lt;p&gt;Ролик от &lt;em&gt;Интера&lt;/em&gt; пока не нашел.&lt;/p&gt;
&lt;p&gt;Как и в прошлый раз - масса положительных эмоций и физическая усталость, такое впечатление что таскал весь день рояль, в девяти-этажной коммуналке, без лифта :).&lt;/p&gt;
&lt;p&gt;Еще +100 к моему пределу возможностей :-D&lt;/p&gt;</description><pubDate>Mon, 16 Apr 2012 01:22:16 +0300</pubDate><guid>http://proft.me/2012/04/16/vodnyj-marafon-2012/</guid></item><item><title>pacman: пакетный менеджер для arch linux</title><link>http://proft.me/2012/03/24/pacman-paketnyj-menedzher-dlya-arch-linux/</link><description>&lt;p&gt;&lt;img src="http://proft.me/static/img/linux/pacman.png" alt="pacman.png" class="right"&gt;
&lt;a href="https://wiki.archlinux.org/index.php/Pacman"&gt;Pacman&lt;/a&gt; - это пакетный менеджер для дистрибутива &lt;a href="http://www.archlinux.org/"&gt;Arch&lt;/a&gt;. &lt;em&gt;Pacman&lt;/em&gt; умеет работать с базовыми репозитариями &lt;em&gt;Arch&lt;/em&gt;, выполняя привычные действия: поиск, установка, получение информации о пакете и т.д., но существует удобная надстройки над ним - &lt;em&gt;yaourt&lt;/em&gt;, которая кроме функций самого &lt;em&gt;pacman&lt;/em&gt; обладает некоторыми другими: предоставление прямого доступа к &lt;a href="https://wiki.archlinux.org/index.php/AUR"&gt;AUR&lt;/a&gt; (&lt;em&gt;пользовательский репозитарий Arch&lt;/em&gt;), позволяющей собирать и устанавливать пакеты автоматически. Из эстетический вкусностей &lt;em&gt;yaourt&lt;/em&gt; - раскрашивание рабочего выхлопа, чего я не видел в других менеджерах пакетов, мелочь, а приятно.&lt;/p&gt;
&lt;p&gt;Пост представляет собой мини-справочник по опциям &lt;em&gt;pacman/yaourt&lt;/em&gt;, по аналогии с справочниками для других пакетных менеджеров &lt;a href="/2010/06/26/spravochnik-po-apt/"&gt;apt/dpkg&lt;/a&gt; и &lt;a href="/2010/06/25/spravochnik-po-yum/"&gt;rpm/yum&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Подготовка к установке &lt;em&gt;yaourt&lt;/em&gt; (выполнять от root)&lt;/p&gt;
&lt;pre class="prettyprint"&gt;
pacman -S base-devel fakeroot sudo
&lt;/pre&gt;

&lt;p&gt;Добавим в &lt;em&gt;pacman.conf&lt;/em&gt; репозитарий с &lt;em&gt;yaourt&lt;/em&gt;&lt;/p&gt;
&lt;pre class="prettyprint"&gt;
# vim /etc/pacman.conf

[archlinuxfr]
Server = http://repo.archlinux.fr/$arch
&lt;/pre&gt;

&lt;p&gt;Установка&lt;/p&gt;
&lt;pre class="prettyprint"&gt;
pacman -Syu yaourt
&lt;/pre&gt;

&lt;table border="0" class="redtable"&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Команда pacman&lt;/th&gt;
&lt;th&gt;Команда yaourt&lt;/th&gt;
&lt;th&gt;Описание&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;

&lt;tr&gt;
&lt;td&gt;pacman -S &lt;i&gt;package_name/group_name&lt;/i&gt;&lt;/td&gt;
&lt;td&gt;yaourt -S &lt;i&gt;package_name&lt;/i&gt;&lt;/td&gt;
&lt;td&gt;установка/переустановка пакета/группы с именем &lt;i&gt;package_name/group_name&lt;/i&gt;; опция &lt;code&gt;--ignore&lt;/code&gt; &lt;i&gt;packagename&lt;/i&gt; - игнорирование пакета при установке/обновлении; опция &lt;i&gt;-p&lt;/i&gt; выводит список действий команды, без выполнения самого действия&lt;/td&gt;
&lt;/tr&gt;

&lt;tr class="highlight"&gt;
&lt;td&gt;pacman -Sg &lt;i&gt;group_name&lt;/i&gt;&lt;/td&gt;
&lt;td&gt;yaourt -Sg &lt;i&gt;group_name&lt;/i&gt;&lt;/td&gt;
&lt;td&gt;список пакетов в группе &lt;i&gt;group_name&lt;/i&gt;&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;pacman -Sl &lt;i&gt;repository&lt;/i&gt;&lt;/td&gt;
&lt;td&gt;yaourt -Sl &lt;i&gt;repository&lt;/i&gt;&lt;/td&gt;
&lt;td&gt;список всех пакетов в указанном репозитарии&lt;/td&gt;
&lt;/tr&gt;

&lt;tr class="highlight"&gt;
&lt;td&gt;pacman -Sw &lt;i&gt;packagename&lt;/i&gt;&lt;/td&gt;
&lt;td&gt;yaourt -Sw &lt;i&gt;packagename&lt;/i&gt;&lt;/td&gt;
&lt;td&gt;скачивание пакета &lt;i&gt;packagename&lt;/i&gt;, без установки&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;pacman -U &lt;i&gt;/path/to/package.pkg.tar.xz&lt;/i&gt;&lt;/td&gt;
&lt;td&gt;yaourt -U &lt;i&gt;/path/to/package.pkg.tar.xz&lt;/i&gt;&lt;/td&gt;
&lt;td&gt;установка пакета &lt;i&gt;package.pkg.tar.xz&lt;/i&gt; из файла&lt;/td&gt;
&lt;/tr&gt;

&lt;tr class="highlight"&gt;
&lt;td&gt;pacman -R &lt;i&gt;package_name&lt;/i&gt;&lt;/td&gt;
&lt;td&gt;yaourt -R &lt;i&gt;package_name&lt;/i&gt;&lt;/td&gt;
&lt;td&gt;удаление пакета &lt;i&gt;package_name&lt;/i&gt; без удаления зависимостей, опция &lt;i&gt;-s&lt;/i&gt; для удаления зависимостей, не использующимися другими пакетами&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;pacman -Syu&lt;/td&gt;
&lt;td&gt;yaourt -Syua&lt;/td&gt;
&lt;td&gt;обновление системы, набор опций для pacman обновляет пакеты из базовых репозитариев, для yaourt - также обновляет из AUR&lt;/td&gt;
&lt;/tr&gt;

&lt;tr class="highlight"&gt;
&lt;td&gt;pacman -Qu&lt;/td&gt;
&lt;td&gt;yaourt -Qu&lt;/td&gt;
&lt;td&gt;список пакетов, для которых доступны обновления&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;pacman -Q &lt;i&gt;packagename&lt;/i&gt;&lt;/td&gt;
&lt;td&gt;yaourt -Q &lt;i&gt;packagename&lt;/i&gt;&lt;/td&gt;
&lt;td&gt;поиск пакета &lt;i&gt;packagename&lt;/i&gt; в локальной базе пакетов&lt;/td&gt;
&lt;/tr&gt;

&lt;tr class="highlight"&gt;
&lt;td&gt;pacman -Ss &lt;i&gt;package_name/package_desc&lt;/i&gt;&lt;/td&gt;
&lt;td&gt;yaourt &lt;i&gt;package_name/package_desc&lt;/i&gt;&lt;/td&gt;
&lt;td&gt;поиск в базовых репозитариях пакета (в AUR для yaourt) с именем &lt;i&gt;package_name&lt;/i&gt; или описанием &lt;i&gt;package_desc&lt;/i&gt;&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;pacman -Si &lt;i&gt;package_name&lt;/i&gt;&lt;/td&gt;
&lt;td&gt;yaourt -Si &lt;i&gt;package_name&lt;/i&gt;&lt;/td&gt;
&lt;td&gt;информация о пакете &lt;i&gt;package_name&lt;/i&gt; (извлекается из базовых репозитариев)&lt;/td&gt;
&lt;/tr&gt;

&lt;tr class="highlight"&gt;
&lt;td&gt;pacman -Qi &lt;i&gt;package_name&lt;/i&gt;&lt;/td&gt;
&lt;td&gt;yaourt -Qi &lt;i&gt;package_name&lt;/i&gt;&lt;/td&gt;
&lt;td&gt;информация о локально установленном пакете &lt;i&gt;package_name&lt;/i&gt;&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;pacman -Ql &lt;i&gt;package_name&lt;/i&gt;&lt;/td&gt;
&lt;td&gt;yaourt -Ql &lt;i&gt;package_name&lt;/i&gt;&lt;/td&gt;
&lt;td&gt;список файлов, установленных пакетом &lt;i&gt;package_name&lt;/i&gt;&lt;/td&gt;
&lt;/tr&gt;

&lt;tr class="highlight"&gt;
&lt;td&gt;pacman -Qo &lt;i&gt;/path/file&lt;/i&gt;&lt;/td&gt;
&lt;td&gt;yaourt -Qo &lt;i&gt;/path/file&lt;/i&gt;&lt;/td&gt;
&lt;td&gt;получение имени пакета, которому принадлежит файл &lt;i&gt;path/file&lt;/i&gt;&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;yaourt -S --depends &lt;i&gt;packagename&lt;/i&gt;&lt;/td&gt;
&lt;td&gt;список пакетов, которые зависят от &lt;i&gt;packagename&lt;/i&gt;&lt;/td&gt;
&lt;/tr&gt;

&lt;tr class="highlight"&gt;
&lt;td&gt;pacman -Sc&lt;/td&gt;
&lt;td&gt;yaourt -Sc&lt;/td&gt;
&lt;td&gt;удалить из кэша &lt;i&gt;/var/cache/pacman/pkg&lt;/i&gt; неустановленные пакеты и закэшированные базы с пакетами&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;yaourt -G &lt;i&gt;package_name&lt;/i&gt;&lt;/td&gt;
&lt;td&gt;получить *PKGBUILD* для пакета &lt;i&gt;package_name&lt;/i&gt;&lt;/td&gt;
&lt;/tr&gt;

&lt;tr class="highlight"&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;yaourt --stats&lt;/td&gt;
&lt;td&gt;статистика по установленным пакетам&lt;/td&gt;
&lt;/tr&gt;

&lt;/table&gt;</description><pubDate>Sat, 24 Mar 2012 13:02:39 +0200</pubDate><guid>http://proft.me/2012/03/24/pacman-paketnyj-menedzher-dlya-arch-linux/</guid></item><item><title>Профайлинг Python/Django/Flask приложений</title><link>http://proft.me/2012/03/20/profajling-pythondjangoflask-prilozhenij/</link><description>&lt;p&gt;&lt;em&gt;Профайлер&lt;/em&gt; - программа, предназначенная для измерения производительности отдельного куска кода или всего приложения. Профайлер умеет собирать такие статистических данные: список вызываемых функций, количество вызовов функции, время проведенное внутри функции и т.д.&lt;/p&gt;
&lt;p&gt;Иногда так случается, что функционал содержащий несколько строчек кода в начале процесса разработки может обрасти дополнительными возможностями и разными вызовами вспомогательных функций. Казалось бы, все хорошо, функционал реализован на все 110% но вдруг замечается легкая задумчивость при обращении к новому функционалу. Специально для таких случаев существует &lt;em&gt;профайлер&lt;/em&gt;, который умеет подсчитывать время, проведенное исполняющим процессом внутри определенной функции и количество вызовов этой функции.&lt;/p&gt;
&lt;p&gt;Последние версии &lt;em&gt;python&lt;/em&gt; поставляются с тремя разными &lt;a href="http://docs.python.org/library/profile.html"&gt;профайлерами&lt;/a&gt;: &lt;em&gt;cProfile&lt;/em&gt; (рекомендуемый в большинстве случаев), &lt;em&gt;profile&lt;/em&gt; (удобен в случае добавления функционала к стандартному &lt;em&gt;профайлеру&lt;/em&gt;), &lt;em&gt;hotshot&lt;/em&gt; (на данный момент не поддерживается, но обладающий двумя методами которые до сих пор актуальны - &lt;em&gt;start&lt;/em&gt; и &lt;em&gt;stop&lt;/em&gt;).&lt;/p&gt;
&lt;p&gt;В качестве примера работы &lt;em&gt;профайлера&lt;/em&gt; будет использоваться синтетический тест работы процессора - &lt;em&gt;pystones&lt;/em&gt;&lt;/p&gt;
&lt;pre class="prettyprint"&gt;
# файл tst.py

import test.pystone
test.pystone.pystones()
&lt;/pre&gt;

&lt;p&gt;Ниже приведен пример запуска py-файла, рабочий выхлоп &lt;em&gt;профайлера&lt;/em&gt; отсортирован по суммарному времени проведенному внутри определенной функции, другие возможные варианты сортировки есть &lt;a href="http://docs.python.org/library/profile.html#the-stats-class"&gt;тут&lt;/a&gt;.&lt;/p&gt;
&lt;pre class="prettyprint"&gt;
python -m cProfile -s cumulative tst.py
&lt;/pre&gt;

&lt;p&gt;Результат работы &lt;em&gt;профайлера&lt;/em&gt; можно сохранить в файл&lt;/p&gt;
&lt;pre class="prettyprint"&gt;
python -m cProfile -o profile.pstats tst.py
&lt;/pre&gt;

&lt;p&gt;Сохраненный файл можно проанализировать с помощью сторонних утилит (&lt;a href="http://kcachegrind.sourceforge.net/html/Home.html"&gt;kcachegrind&lt;/a&gt;, &lt;a href="http://www.vrplumber.com/programming/runsnakerun/"&gt;RunSnakeRun&lt;/a&gt;), либо вручную&lt;/p&gt;
&lt;pre class="prettyprint"&gt;
import pstats
p = pstats.Stats('profile.pstats')

# вывести только функции, которые вызывали функцию Proc0
p.print_callers('Proc0')
&lt;/pre&gt;

&lt;p&gt;Для построчного профайлинга есть модуль &lt;a href="http://packages.python.org/line_profiler/"&gt;line_profiler&lt;/a&gt;, который умеет подсчитывать количество обращений к отдельным строкам кода.&lt;/p&gt;
&lt;pre class="prettyprint"&gt;
# установка
pip install line_profiler

# запуск профайлера
kernprof.py tst.py

# просмотр собранных данных
python -m pstats tst.py.prof
tst.py.prof% stats
&lt;/pre&gt;

&lt;p&gt;Пакет &lt;a href="http://pypi.python.org/pypi/profilestats/"&gt;profilestats&lt;/a&gt; предоставляет декоратор для функций, позволяющий сохранять результаты работы профайлера в формате &lt;em&gt;kcachegrind&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Кроме &lt;em&gt;kcachegrind&lt;/em&gt; есть еще один способ визуализации - с помощью &lt;a href="http://code.google.com/p/jrfonseca/wiki/Gprof2Dot"&gt;Gprof2Dot&lt;/a&gt;, который умеет строить дерево из вызываемых функций и визуально выделять наиболее страстные функции к CPU. Установка под Ubuntu:&lt;/p&gt;
&lt;pre class="prettyprint"&gt;
sudo apt-get install graphviz
pip install gprof2dot
&lt;/pre&gt;

&lt;p&gt;Пример использования&lt;/p&gt;
&lt;pre class="prettyprint"&gt;
gprof2dot.py -f pstats output.pstats | dot -Tpng -o output.png
&lt;/pre&gt;

&lt;h3 class="lb"&gt;Django&lt;/h3&gt;

&lt;p&gt;Для профайлинга &lt;em&gt;django&lt;/em&gt;-приложений есть несколько способов.&lt;/p&gt;
&lt;p&gt;С помощью &lt;em&gt;middleware&lt;/em&gt;, когда при каждом запросе страницы мониторятся вызовы всех функций внутри запрашиваемого &lt;em&gt;view&lt;/em&gt;. &lt;a href="http://www.no-ack.org/2010/12/yet-another-profiling-middleware-for.html"&gt;Вариант&lt;/a&gt; который работает не только для обычного запроса, но и для AJAX. Еще есть модуль &lt;a href="http://code.google.com/p/django-profiling/"&gt;django-profiling&lt;/a&gt;, который срабатывает при наличии &lt;em&gt;?prof&lt;/em&gt; в запрашиваемом адресе.&lt;/p&gt;
&lt;p&gt;С помощью &lt;em&gt;декоратора&lt;/em&gt; для вызываемой функции/view. &lt;a href="https://code.djangoproject.com/wiki/ProfilingDjango"&gt;Вариант&lt;/a&gt; который сохранят каждое обращение под указанным именем + дата и время.&lt;/p&gt;
&lt;p&gt;С помощью &lt;a href="http://github.com/django-debug-toolbar/django-debug-toolbar"&gt;django-debug-toolbar&lt;/a&gt;. Сам по себе &lt;em&gt;django-debug-toolbar&lt;/em&gt; не показывает данные с профайлингом, но &lt;a href="http://backslashn.com/post/505601626/profiling-execution-with-the-django-debug-toolbar"&gt;тут&lt;/a&gt; описан способ как добавить вкладку &lt;em&gt;Profiling&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;С помощью &lt;a href="https://github.com/django-extensions/django-extensions/"&gt;django-extensions&lt;/a&gt; в который встроена возможность запуска тестового сервера с активированной возможностью &lt;a href="http://packages.python.org/django-extensions/runprofileserver.html"&gt;профайлинга&lt;/a&gt;, результат сохраняется для каждого запроса.&lt;/p&gt;
&lt;p&gt;Для визуального просмотра собранных данных можно воспользоваться описанными выше &lt;em&gt;kcachegrind&lt;/em&gt;, &lt;em&gt;gprof2dot&lt;/em&gt;.&lt;/p&gt;
&lt;h3 class="lb"&gt;Flask&lt;/h3&gt;

&lt;p&gt;Для профайлинга &lt;em&gt;flask&lt;/em&gt;-приложений есть несколько способов.&lt;/p&gt;
&lt;p&gt;С помощью встроенного в &lt;em&gt;werkzeug&lt;/em&gt; &lt;a href="http://werkzeug.pocoo.org/docs/contrib/profiler/"&gt;профайлера&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;С помощью &lt;a href="https://github.com/mgood/flask-debugtoolbar"&gt;flask-debugtoolbar&lt;/a&gt;, портированого с &lt;em&gt;django-debug-toolbar&lt;/em&gt;.&lt;/p&gt;
&lt;h3 class="lb"&gt;Дополнительно чтиво по оптимизации&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="http://wiki.python.org/moin/PythonSpeed/PerformanceTips"&gt;PythonSpeed/PerformanceTips - PythonInfo Wiki&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.djangoproject.com/en/dev/topics/db/optimization/"&gt;Database access optimization | Django documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://jacobian.org/writing/django-performance-tips/"&gt;Django performance tips&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://pycounters.readthedocs.org/en/latest/index.html"&gt;PyCounters - instrumenting production code&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 class="lb"&gt;Дополнительно чтиво по измерению потребления памяти&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.darkcoding.net/software/finding-memory-leaks-in-python-with-objgraph/"&gt;Finding memory leaks in Python with objgraph&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://renesd.blogspot.com/2010/03/memory-usage-of-processes-from-python.html"&gt;Memory usage of processes from python?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://launchpad.net/meliae"&gt;Meliae python memory analysis&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 class="lb"&gt;Измерение производительности реализаций python&lt;/h3&gt;

&lt;p&gt;Небольшой бонус :), протестировать работу разных версий питона и окружений можно с помощью встроенного синтетического теста&lt;/p&gt;
&lt;pre class="prettyprint"&gt;
# версия 2.7
python2.7 -c "from test import pystone;pystone.main()"

# версия 3.0
python3.0 -c "from test import pystone;pystone.main()"

# pypy
pypy -c "from test import pystone;pystone.main()""
&lt;/pre&gt;</description><pubDate>Tue, 20 Mar 2012 21:10:42 +0200</pubDate><guid>http://proft.me/2012/03/20/profajling-pythondjangoflask-prilozhenij/</guid></item><item><title>Установка связки trac + git + nginx</title><link>http://proft.me/2012/03/6/ustanovka-svyazki-trac-git-nginx/</link><description>&lt;p&gt;Узелок на память про установку багтрекера &lt;a href="http://trac.edgewall.org"&gt;trac&lt;/a&gt; + git-репозитория, раздача статики через &lt;a href="/2010/04/26/nastrojka-i-testirovanie-nginx-pod-ubuntu-centos/"&gt;nginx&lt;/a&gt;. Дело не хитрое, но со временем под забывается последовательность действий. В качестве хранилище будет &lt;em&gt;mysql&lt;/em&gt;, &lt;em&gt;trac&lt;/em&gt; будет установлен в &lt;a href="/2010/04/3/python-i-okruzhenie-virtualenv/"&gt;virtualenv&lt;/a&gt; под &lt;em&gt;Ubuntu Server&lt;/em&gt;.&lt;/p&gt;
&lt;h3 class="lb"&gt;Настройка MySQL&lt;/h3&gt;

&lt;p&gt;Создание БД и пользователя&lt;/p&gt;
&lt;pre class="prettyprint"&gt;
# mysql -u root -p

CREATE DATABASE trac DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;
GRANT ALL ON trac.* TO trac@localhost IDENTIFIED BY '_PASSWORD_';
&lt;/pre&gt;

&lt;p&gt;Строка подключения (DSN) для &lt;em&gt;MySQL&lt;/em&gt;&lt;/p&gt;
&lt;pre class="prettyprint"&gt;
mysql://trac:_PASSWORD_@localhost/trac
&lt;/pre&gt;

&lt;h3 class="lb"&gt;Установка Trac&lt;/h3&gt;

&lt;p&gt;Установка &lt;em&gt;pip&lt;/em&gt; и dev-файлов для &lt;em&gt;MySQL&lt;/em&gt;&lt;/p&gt;
&lt;pre class="prettyprint"&gt;
sudo apt-get install python-setuptools libmysqlclient-dev
sudo easy_install pip 
&lt;/pre&gt;

&lt;p&gt;Установка &lt;em&gt;trac&lt;/em&gt; и зависимостей (предполагается что &lt;em&gt;virtualenv&lt;/em&gt; установлен и активировано рабочие окружение)&lt;/p&gt;
&lt;pre class="prettyprint"&gt;
pip install babel docutils pygments pytz mysql-python 
pip install trac
&lt;/pre&gt;

&lt;p&gt;Создадим директорию для будущих &lt;em&gt;trac&lt;/em&gt;-окружений и тестовый проект. Утилита &lt;em&gt;trac-admin&lt;/em&gt; спросит некоторые параметры, среди которых строка подключения к БД (DSN), пример для &lt;em&gt;mysql&lt;/em&gt; приведен выше.&lt;/p&gt;
&lt;pre class="prettyprint"&gt;
sudo mkdir /home/www/tracs/
sudo -uwww trac-admin /home/www/tracs/testproj initenv
&lt;/pre&gt;

&lt;p&gt;Основной этап установки окончен. Детали настройки внешнего вида описаны в &lt;a href="http://trac.edgewall.org/wiki/TracInterfaceCustomization"&gt;wiki&lt;/a&gt;, также доступны разные &lt;a href="http://trac-hacks.org/wiki/theme"&gt;темы&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;На этом этапе можно запустить встроенный в &lt;em&gt;trac&lt;/em&gt; веб-сервер (без возможности залогинится в админку)&lt;/p&gt;
&lt;pre class="prettyprint"&gt;
sudo -uwww tracd -p 8080 /home/www/tracs/testproj
&lt;/pre&gt;

&lt;p&gt;Следующий этап - это настройка авторизации пользователей, подключение git-репозитория и раздача статики с помощью &lt;em&gt;nginx&lt;/em&gt;.&lt;/p&gt;
&lt;h3 class="lb"&gt;Авторизация пользователей&lt;/h3&gt;

&lt;p&gt;Добавим admin'а для управления установленной версией &lt;em&gt;trac&lt;/em&gt;'a&lt;/p&gt;
&lt;pre class="prettyprint"&gt;
sudo trac-admin /home/www/tracs/testproj permission add proft TRAC_ADMIN 
&lt;/pre&gt;

&lt;p&gt;Для настройки &lt;em&gt;digest&lt;/em&gt;-аутентификации сгенерируем пароль для пользователя с помощью одного из способов описанных в &lt;a href="http://trac.edgewall.org/wiki/TracStandalone#UsingAuthentication"&gt;UsingAuthentication&lt;/a&gt;, я использовал приведенный python-скрипт (у меня не установлен apache)&lt;/p&gt;
&lt;pre class="prettyprint"&gt;
# cd /home/www/tracs/

python trac-digest.py -u proft -p password &amp;gt;&amp;gt; testproj/conf/users.htdigest
&lt;/pre&gt;

&lt;p&gt;Запустим сервер &lt;em&gt;tracd&lt;/em&gt; с возможностью авторизации пользователей из файла &lt;em&gt;users.htdigest&lt;/em&gt;&lt;/p&gt;
&lt;pre class="prettyprint"&gt;
tracd -p 8000 -s --auth="testproj,/home/www/tracs/testproj/conf/users.htdigest,trac" /home/www/tracs/testproj
&lt;/pre&gt;

&lt;p&gt;Проверим, зайдя на http://127.0.0.1:8000/login/.&lt;/p&gt;
&lt;p&gt;Для авторизации можно использовать &lt;a href="http://trac-hacks.org/wiki/DjangoIntegrationPlugin"&gt;аккаунты из Django&lt;/a&gt;.&lt;/p&gt;
&lt;h3 class="lb"&gt;GIT-репозиторий&lt;/h3&gt;

&lt;p&gt;У меня git-репозитория настроен с помощью &lt;a href="/2011/11/28/gitolite-svoj-git-repozitarij/"&gt;gitolite&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Установка дополнения для &lt;em&gt;trac&lt;/em&gt;&lt;/p&gt;
&lt;pre class="prettyprint"&gt;
pip install http://github.com/hvr/trac-git-plugin/tarball/master
&lt;/pre&gt;

&lt;p&gt;Отредактируем &lt;em&gt;trac.ini&lt;/em&gt;, обновив секцию &lt;em&gt;trac&lt;/em&gt; и добавив две новых: &lt;em&gt;components&lt;/em&gt; и &lt;em&gt;git&lt;/em&gt;.&lt;/p&gt;
&lt;pre class="prettyprint"&gt;
[components]
tracext.git.* = enabled

[trac]
repository_dir = /home/git/repositories/testproj.git
repository_type = git

[git]
cached_repository = true
persistent_cache = true
shortrev_len = 6
wiki_shortrev_len = 7
git_bin = /usr/bin/git
git_fs_encoding = latin1
trac_user_rlookup = true
use_committer_id = false
use_committer_time = false
&lt;/pre&gt;

&lt;h3 class="lb"&gt;nginx как frontend&lt;/h3&gt;

&lt;p&gt;Запустим настроенное выше &lt;em&gt;trac&lt;/em&gt;-окружение с помощью команды&lt;/p&gt;
&lt;pre class="prettyprint"&gt;
tracd -d -p 3050 --protocol=http -s /home/www/tracs/testproj
&lt;/pre&gt;

&lt;p&gt;Пример настроек для хоста под &lt;em&gt;nginx&lt;/em&gt;'ом&lt;/p&gt;
&lt;pre class="prettyprint"&gt;
upstream testproj_tracd {
    server  127.0.0.1:3050;
}

server {
    listen 127.0.0.1:80;
    server_name vb.local;

access_log      /var/log/nginx/testproj.access.log;
    error_log       /var/log/nginx/testproj.error_log;

location / { 
        #auth_basic "Secure Login";
        #auth_basic_user_file /home/www/tracs/testproj/conf/users.basic;

proxy_pass http://testproj_tracd;
        include /etc/nginx/proxy_params;
    }

location ~ (/.*)?/chrome/site/ {
        rewrite (/.*)?/chrome/site/(.*) /$1/htdocs/$2 break;
        root    /home/www/tracs/testproj;
    }

} 
&lt;/pre&gt;

&lt;h3 class="lb"&gt;Дополнительный материал&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="http://robertbasic.com/blog/trac-on-ubuntu/"&gt;Настройка Trac + Apache + mod_wsgi&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://trac-hacks.org/"&gt;Сайт с расширениями для trac - Trac Hacks&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><pubDate>Tue, 06 Mar 2012 17:02:18 +0200</pubDate><guid>http://proft.me/2012/03/6/ustanovka-svyazki-trac-git-nginx/</guid></item><item><title>proxychains: прокси-цепочка из socks5 в http</title><link>http://proft.me/2012/02/29/proxychains-proksi-cepochka-iz-socks5-v-http/</link><description>&lt;p&gt;Недавно УкрТелеком преподнес новый сюрприз - перестал открываться сайт twitter.com. Для просмотра сайтов, которые по той или иной причине не открывается через каналы этого провайдера, я использую socks5-прокси. В большинстве приложений есть поддержка этого типа прокси, но некоторые могут похвастатся только http-проксей. В таких случаях помогают утилиты которые поддерживают оба типа проксей и могут выступать в качестве посредника. Одна из таких утилит - &lt;a href="http://proxychains.sourceforge.net/"&gt;proxychains&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;proxychains&lt;/em&gt; умеет направлять сетевой поток (TCP) приложения через туннель разных проксей. Заявлена поддержка таких типов прокси: http, socks4, socks5. Настройки позволяет гибко переключаться между разными прокси:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;dynamic_chain&lt;/em&gt; - прокси берутся из списка, с пропуском не работающих;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;random_chain&lt;/em&gt; - прокси выбираются из списка случайным образом;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;strict_chain&lt;/em&gt; - прокси берутся из списка последовательно, если в списке есть не рабочий сервер, то вся цепочка не работает;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Установка под &lt;em&gt;Ubuntu&lt;/em&gt;&lt;/p&gt;
&lt;pre class="prettyprint"&gt;
sudo apt-get install proxychains
&lt;/pre&gt;

&lt;p&gt;Установка под &lt;em&gt;Arch&lt;/em&gt;&lt;/p&gt;
&lt;pre class="prettyprint"&gt;
yaourt proxychains
&lt;/pre&gt;

&lt;p&gt;Настроем &lt;em&gt;proxychains&lt;/em&gt;, добавив в /etc/proxychains.conf список проксей&lt;/p&gt;
&lt;pre class="prettyprint"&gt;
# sudo vim /etc/proxychains.conf

[ProxyList]
socks5  127.0.0.1 9999
&lt;/pre&gt;

&lt;p&gt;Пример использование, сетевой поток приложения &lt;em&gt;hotot&lt;/em&gt; пропускается через &lt;em&gt;proxychains&lt;/em&gt;&lt;/p&gt;
&lt;pre class="prettyprint"&gt;
proxychains hotot
&lt;/pre&gt;

&lt;h3 class="lb"&gt; Дополнительное чтиво&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="http://habrahabr.ru/blogs/linux/133703/"&gt;Использование HTTP proxy и SOCKS в Linux&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><pubDate>Wed, 29 Feb 2012 13:29:41 +0200</pubDate><guid>http://proft.me/2012/02/29/proxychains-proksi-cepochka-iz-socks5-v-http/</guid></item><item><title>archey: короткая сводка о linux-системе</title><link>http://proft.me/2012/02/12/archey-korotkaya-svodka-o-linux-sisteme/</link><description>&lt;p&gt;На скриншотах в &lt;a href="http://www.linux.org.ru/gallery/"&gt;галереи ЛОРа&lt;/a&gt; можно часто увидеть терминалы арчеводов, на которых запущен &lt;em&gt;archey&lt;/em&gt; с логотипом дистрибутива и краткой информацией о системе.&lt;/p&gt;
&lt;p&gt;На &lt;a href="https://github.com/djmelik/archey/downloads"&gt;github.com&lt;/a&gt; есть &lt;em&gt;archey&lt;/em&gt; для других дистрибутивов (Debian/Ubuntu/Fedora/RedHat).&lt;/p&gt;
&lt;p&gt;Установим зависимости&lt;/p&gt;
&lt;pre class="prettyprint"&gt;
sudo apt-get install scrot lsb-release
&lt;/pre&gt;

&lt;p&gt;Установим &lt;em&gt;archey&lt;/em&gt; на ubuntu&lt;/p&gt;
&lt;pre class="prettyprint"&gt;
wget https://github.com/downloads/djmelik/archey/archey-0.2.8.deb
sudo dpkg -i archey-0.2.8.deb
&lt;/pre&gt;

&lt;p&gt;Результат&lt;/p&gt;
&lt;div style="text-align:center"&gt;
&lt;a title="archey" rel="prettyPhoto[archey]" href="/static/img/linux/archey.png"&gt;&lt;img alt="archey на xubuntu 11.10" src="http://proft.me/static/img/linux/archey.png" width="400"&gt;&lt;/a&gt;
&lt;/div&gt;</description><pubDate>Sun, 12 Feb 2012 14:05:15 +0200</pubDate><guid>http://proft.me/2012/02/12/archey-korotkaya-svodka-o-linux-sisteme/</guid></item><item><title>smartd: мониторинг состояния жесткого диска</title><link>http://proft.me/2012/02/10/smartd-monitoring-sostoyaniya-zhestkogo-diska/</link><description>&lt;p&gt;S.M.A.R.T. — технология самодиагностики и предсказания возможного отказа жесткого диска.&lt;/p&gt;
&lt;p&gt;Установка под ubuntu&lt;/p&gt;
&lt;pre class="prettyprint"&gt;
sudo apt-get install smartmontools

# добавление в автозагрузку
sudo update-rc.d smartmontools defaults
&lt;/pre&gt;

&lt;p&gt;Установка под CentOS&lt;/p&gt;
&lt;pre class="prettyprint"&gt;
sudo yum install smartmontools

# добавление в автозагрузку
sudo chkconfig smartmontools on
&lt;/pre&gt;

&lt;p&gt;Пакет &lt;em&gt;smartmontools&lt;/em&gt; состоит из двух утилит командной строки&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;smartctl&lt;/em&gt; — просмотр текущих значений S.M.A.R.T., запуск тестов самодиагностики диска вручную;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;smartd&lt;/em&gt; — демон для записи в системный журнал изменений в значениях S.M.A.R.T., уведомления по электронной почте об ошибках, запуска тестов самодиагностики по расписанию;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Информация о диске /dev/sda&lt;/p&gt;
&lt;pre class="prettyprint"&gt;
sudo smartctl -i /dev/sda
&lt;/pre&gt;

&lt;p&gt;Если S.M.A.R.T. отключен, то для включения нужно выполнить команду&lt;/p&gt;
&lt;pre class="prettyprint"&gt;
sudo smartctl -s on /dev/sda
&lt;/pre&gt;

&lt;p&gt;Просмотр значений S.M.A.R.T. для устройства /dev/sda&lt;/p&gt;
&lt;pre class="prettyprint"&gt;
sudo smartctl -A /dev/sda
&lt;/pre&gt;

&lt;p&gt;Существует 2 типа атрибутов (колонка TYPE)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;критичные атрибуты (pre-fail);&lt;/li&gt;
&lt;li&gt;некритичные атрибуты (old_age);&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Критичные атрибуты:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Raw Read Error Rate - частота ошибок при чтении данных с диска;&lt;/li&gt;
&lt;li&gt;Reallocated Sector Count - число операций переназначения секторов;&lt;/li&gt;
&lt;li&gt;Spin Up Time - время раскрутки пакета дисков из состояния покоя до рабочей скорости;&lt;/li&gt;
&lt;li&gt;Spin Up Retry Count - число повторных попыток раскрутки дисков до рабочей скорости, в случае если первая попытка была неудачной;&lt;/li&gt;
&lt;li&gt;Seek Error Rate - частота ошибок при позиционировании блока головок;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Полный список атрибутов с описанием есть в &lt;a href="http://ru.wikipedia.org/wiki/S.M.A.R.T."&gt;вики&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Быстрый опрос диска на предмет живучести, с предсказанием отказа диска в ближайшие 24 часа&lt;/p&gt;
&lt;pre class="prettyprint"&gt;
sudo smartctl -H /dev/sda
&lt;/pre&gt;

&lt;p&gt;Список поддерживаемых тестов и примерное время на каждый текст&lt;/p&gt;
&lt;pre class="prettyprint"&gt;
sudo smartctl -c /dev/sda
&lt;/pre&gt;

&lt;p&gt;Запуск теста на проверку читаемости секторов &lt;/p&gt;
&lt;pre class="prettyprint"&gt;
sudo smartctl -t short /dev/sda
&lt;/pre&gt;

&lt;p&gt;Т.к. тест запускается в фоне, то статус проверки можно узнать с помощью&lt;/p&gt;
&lt;pre class="prettyprint"&gt;
sudo smartctl -l selftest /dev/sda
&lt;/pre&gt;

&lt;p&gt;Журнал ошибок, произошедших во время работы диска&lt;/p&gt;
&lt;pre class="prettyprint"&gt;
sudo smartctl -l error /dev/sda
&lt;/pre&gt;

&lt;p&gt;Журнал тестов самодиагностики&lt;/p&gt;
&lt;pre class="prettyprint"&gt;
sudo smartctl -l selftest /dev/sda
&lt;/pre&gt;

&lt;p&gt;Для периодического тестирования дисков настроим демон &lt;em&gt;smartd&lt;/em&gt;, для этого нужно&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;под Ubuntu: активировать &lt;em&gt;smartd&lt;/em&gt; в &lt;em&gt;/etc/default/smartmontools&lt;/em&gt;, задать настройки в &lt;em&gt;/etc/smartd.conf&lt;/em&gt;, перезапустить демон &lt;em&gt;sudo /etc/init.d/smartmontools restart&lt;/em&gt;;&lt;/li&gt;
&lt;li&gt;под CentOS: активировать &lt;em&gt;smartd&lt;/em&gt; в &lt;em&gt;/etc/smartd.conf&lt;/em&gt;, задать настройки в &lt;em&gt;/etc/smartd.conf&lt;/em&gt;, перезапустить демон &lt;em&gt;sudo /etc/init.d/smartd restart&lt;/em&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Отредактируем файл &lt;em&gt;/etc/default/smartmontools&lt;/em&gt;, удалив &lt;em&gt;#&lt;/em&gt; перед &lt;em&gt;start_smartd&lt;/em&gt;. Параметр &lt;em&gt;smartd_opts&lt;/em&gt; отвечает за дополнительные опции для &lt;em&gt;smartd&lt;/em&gt;, &lt;em&gt;--interval&lt;/em&gt; говорит о периодичности проведения самодиагностики.&lt;/p&gt;
&lt;p&gt;Настройка списка дисков для проверки и периодичности проверки:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;отредактируем &lt;em&gt;/etc/smartd.conf&lt;/em&gt;, закоментировав строку с DEVICESCAN;&lt;/li&gt;
&lt;li&gt;для каждого диска добавить строчку, вида:&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class="prettyprint"&gt;
# sudo vim /etc/smartd.conf

/dev/sda -a -s (S/../../(1|3|6)/01|L) -m root@example.com -M diminishing
&lt;/pre&gt;

&lt;p&gt;Описание используемых опций&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;-a&lt;/em&gt; - включение большинства возможностей мониторинга: проверка "здоровья" диска, отслеживание изменений всех атрибутов, отслеживание неудачных тестов диагностики;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;-s (S/../../(1|3|6)/01|L)&lt;/em&gt; - расписание запуска тестов диагностики диска в виде регулярного выражения. В данном случае: в 1 час ночи в понедельник, среду, субботу будет запускаться краткий тест диска;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;-m&lt;/em&gt; root@example.com - email пользователя, который будет получать сообщения о ошибках дисков. Для функционирования должен быть настроен &lt;a href="/2011/12/8/nastrojka-pochtovogo-servera-postfix-mysql-dovecot/"&gt;почтовый сервер&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;-M diminishing&lt;/em&gt; - периодически повторять отправку письма с сообщениями об ошибке;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;После внесения правок в &lt;em&gt;/etc/smartd.conf&lt;/em&gt; перезапустим демон, под ubuntu&lt;/p&gt;
&lt;pre class="prettyprint"&gt;
sudo /etc/init.d/smartmontools restart
&lt;/pre&gt;

&lt;p&gt;Если возникли ошибки, то нужно смотреть лог &lt;em&gt;/var/log/daemon.log&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Для проверки работы email-оповещения нужно в &lt;em&gt;/etc/smartd.conf&lt;/em&gt;, вместо &lt;em&gt;-M diminishing&lt;/em&gt; поставить &lt;em&gt;-M test&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Для установки GUI нужно выполнить&lt;/p&gt;
&lt;pre class="prettyprint"&gt;
sudo apt-get install gsmartcontrol
&lt;/pre&gt;

&lt;h3 class="lb"&gt; Дополнительное чтиво&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="http://adw0rd.ru/2012/ssd-on-linux/"&gt;Настройка SSD на xubuntu linux&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><pubDate>Fri, 10 Feb 2012 16:35:24 +0200</pubDate><guid>http://proft.me/2012/02/10/smartd-monitoring-sostoyaniya-zhestkogo-diska/</guid></item><item><title>Извлечение субтитров из mkv-файлов</title><link>http://proft.me/2012/01/30/izvlechenie-subtitrov-iz-mkv-fajlov/</link><description>&lt;p&gt;Файлы с расширением &lt;strong&gt;mkv&lt;/strong&gt; относятся к мультимедийному контейнеру &lt;a href="http://ru.wikipedia.org/wiki/Matroska"&gt;Matroska&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Для работы с файлами такого расширения понадобится пакет &lt;em&gt;mkvtoolnix&lt;/em&gt;&lt;/p&gt;
&lt;pre class="prettyprint"&gt;
sudo apt-get install mkvtoolnix
&lt;/pre&gt;

&lt;p&gt;Получение подробной информации о &lt;em&gt;mkv&lt;/em&gt;-файле&lt;/p&gt;
&lt;pre class="prettyprint"&gt;
mkvinfo video.mkv
&lt;/pre&gt;

&lt;p&gt;Или только перечень вложенных объектов &lt;/p&gt;
&lt;pre class="prettyprint"&gt;
mkvmerge -i video.mkv
&lt;/pre&gt;

&lt;p&gt;Извлечение субтитров под номером &lt;em&gt;4&lt;/em&gt; в файл &lt;em&gt;subtitle.srt&lt;/em&gt;&lt;/p&gt;
&lt;pre class="prettyprint"&gt;
mkvextract tracks video.mkv -c UTF8 4:subtitle.srt
&lt;/pre&gt;

&lt;p&gt;где &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;-c UTF8&lt;/em&gt; - кодировка для файла с субтитрами;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;4:subtitle.srt&lt;/em&gt; - номер объекта для извлечения и имя файла для сохранения;&lt;/li&gt;
&lt;/ul&gt;</description><pubDate>Mon, 30 Jan 2012 23:56:37 +0200</pubDate><guid>http://proft.me/2012/01/30/izvlechenie-subtitrov-iz-mkv-fajlov/</guid></item><item><title>Получил права на вождение</title><link>http://proft.me/2012/01/27/poluchil-prava-na-vozhdenie/</link><description>&lt;p&gt;Получил сегодня права на вождение автомобиля и решил сохранить в этой заметке материалы по которым готовился к экзамену.&lt;/p&gt;
&lt;h3 class="lb"&gt;Правила дорожного движения (для Украины)&lt;/h3&gt;

&lt;p&gt;Сайт &lt;a href="http://testpdd.com.ua"&gt;testpdd.com.ua&lt;/a&gt; содержит киевские и харьковские билеты, также ведется статистика по знанию разных параграфов ПДД.&lt;/p&gt;
&lt;p&gt;Отличная подборка &lt;a href="http://www.youtube.com/user/maxodesign?feature=watch"&gt;видео&lt;/a&gt; роликов про ПДД.&lt;/p&gt;
&lt;p&gt;Проезд перекрестков:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://ufa-avtoelektrik.ru/pdd_dostupno/430-proezd_perekrestkov.html"&gt;Общие положения&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://ufa-avtoelektrik.ru/pdd_dostupno/431-reguliruemye_perekrestki.html"&gt;Проезд регулируемых перекрестков&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://ufa-avtoelektrik.ru/pdd_dostupno/431-reguliruemye_perekrestki.html"&gt;Проезд нерегулируемые перекрестков&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href="http://ufa-avtoelektrik.ru/pdd_dostupno/425-signaly_regulirovschika.html"&gt;Сигналы регулировщика&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://rutube.ru/tracks/738630.html"&gt;Правила ДД&lt;/a&gt; - шутливый ролик про ситуации на дороге, в каждой шутке есть доля правды ;).&lt;/p&gt;
&lt;h3 class="lb"&gt;Первая медицинская помощь при ДТП&lt;/h3&gt;

&lt;p&gt;Большая статья про &lt;a href="http://www.avtotut.ru/law/1medhelp/"&gt;первую медицинскую помощь при ДТП&lt;/a&gt;, описана анатомии и физиологии человека, наиболее характерные травмы при ДТП, способы транспортировки пострадавшего.&lt;/p&gt;
&lt;p&gt;Наглядный &lt;a href="http://proft.me/static/img/life/tekhnika-reanimacii.jpg"&gt;рисунок&lt;/a&gt; с техникой реанимации.&lt;/p&gt;
&lt;h3 class="lb"&gt;Управление автомобилем&lt;/h3&gt;

&lt;p&gt;&lt;a href="http://www.auto-instructors.ru/school/manual/"&gt;М. А. Геннингсон. Самоучитель езды на автомобиле&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Fri, 27 Jan 2012 22:48:05 +0200</pubDate><guid>http://proft.me/2012/01/27/poluchil-prava-na-vozhdenie/</guid></item></channel></rss>

