
<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
     xmlns:content="http://purl.org/rss/1.0/modules/content/"
     xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
     xmlns:atom="http://www.w3.org/2005/Atom"
     xmlns:dc="http://purl.org/dc/elements/1.1/"
     xmlns:wfw="http://wellformedweb.org/CommentAPI/"
     >
  <channel>
    <title>librarian@blog:~$</title>
    <link>http://libc6.org</link>
    <description>life, studies, linux ...</description>
    <pubDate>Thu, 12 Jan 2012 06:43:05 GMT</pubDate>
    <generator>Blogofile</generator>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title><![CDATA[Установка Redmine на Debian Squeeze]]></title>
      <link>http://libc6.org/page/installing-redmine-on-debian-squeeze/</link>
      <pubDate>Sat, 10 Dec 2011 03:00:00 MSK</pubDate>
      <category><![CDATA[перевод]]></category>
      <category><![CDATA[linux]]></category>
      <guid>http://libc6.org/page/installing-redmine-on-debian-squeeze/</guid>
      <description><![CDATA[Установка Redmine на Debian Squeeze]]></description>
      <content:encoded><![CDATA[<p>Я сейчас не очень люблю переводить чужие статьи, поскольку вся прелесть изложения теряется (по крайней мере после моего перевода), но эта статья настолько качественная и интересная, что я решил пересмотреть свой взгляд и разместить перевод у себя на блоге.</p>
<p>Даже я из, казалось бы, такой простой темы как установка приложения подчерпнул много знаний не столько о процессе установки, сколько о том, как можно управлять apt и dpkg в Debian. Также, я оценил глубину исследования вопроса, особенно аппеляции к багтрекеру Debian, к сожалению, в современных Linux блогах это редкость.</p>
<p>Перевод статьи <a href="http://www.debian-administration.org/article/673/Installing_Redmine_with_MySQL_Thin_and_Redmine_on_Debian_Squeeze">Installing Redmine with MySQL Thin and Redmine on Debian Squeeze</a> автор Kevin Locke.</p>
<p><a href="http://www.redmine.org/">Redmine</a> это система для управления проектами, часто называемая лидирующей в своей области, построенная на базе фреймворка <a href="http://rubyonrails.org/">Ruby on Rails</a>. Она предоставляет функционал багтрекера, контроля времени, вики страниц, диаграмм Гантта и календаря, поддержкой нескольких проектов, разделением уровней доступа по ролям. Эта статья описывает процесс установки Redmine на Debian Squeeze, с использованием MySQL для хранения данных, thin для обслуживания ruby и nginx для фронтэнда.</p>
<h3>Соглашение об используемых обозначениях</h3>
<p>В статье показываются различные команды, которые могут быть запущены от обычного (непривилигерованного) пользователя, используя $ для обозначения приглашения, для команд, которые должны быть запущены от суперпользователя root, используют приглашение #. Рекомендуется запускать эти программы используя sudo или аналогичную программу.</p>
<h2>Процесс установки</h2>
<h3>Установка MySQL</h3>
<pre><code># aptitude install mysql-server
</code></pre>
<h3>(Опционально) Настройка MySQL для использования UTF-8 по умолчанию</h3>
<p>Хотя это и не требуется, удобно установить UTF-8 кодировкой по умолчанию в MySQL, а также используя локаль UTF-8 вне MySQL. Чтобы настроить кодировку по умолчанию, добавьте следующее в /etc/mysql/my.cnf:</p>
<pre><code>[client]
default-character-set = utf8

[mysql]
default-character-set = utf8

[mysqld]
default-character-set = utf8
default-collation = utf8_unicode_ci
character-set-server  = utf8
collation-server  = utf8_unicode_ci
</code></pre>
<h3>Создаём базу данных для Redmine в  MySQL</h3>
<p>Независимо от того, настроена ли кодировка по умолчанию для использования UTF-8, база данных Redmine должна быть создана с кодировкой UTF-8, независимо от того, какая кодировка указана глобально для всей базы данных, и указывание отличной от UTF-8 кодировки будет вызывать только проблемы связанные с различными кодировками. К сожалению, Redmine не может использовать утилиту dbconfig-common для создания базы данных в кодировке UTF-8 в Squeeze (смотри баги [599140][599140] и [599374][599374]). Чтобы обойти эту ситуацию, создадим базу данных до того, как мы будем устанавливать Redmine, используя следующие команды:</p>
<pre><code>$ mysql -u root -p
mysql&gt; CREATE USER 'redmine'@'localhost' IDENTIFIED BY 'newpassword';
mysql&gt; CREATE DATABASE redmine_default CHARACTER SET = 'utf8';
mysql&gt; GRANT ALL PRIVILEGES ON redmine_default.* TO 'redmine'@'localhost';
</code></pre>
<p>Замечу, что возможно использовать другое имя и/или другой парольк базе данных. Для того, чтобы использовать другое им, модифицируйте команду и удостоверьтесь, что приоритет debconf установлен в значение low (можно осуществить это выставив значение переменной окружения DEBIAN_PRIORITY=low) когда будет уставливаться redmine.</p>
<h3>Установка Redmine, thin, и nginx</h3>
<pre><code># aptitude install redmine redmine-mysql+M thin nginx ssl-cert
</code></pre>
<p>В команде выше, флаг "+M" добавлен к пакету redmine-mysql для того, чтобы пометить пакет как автоматически установленный, так что, если пакет redmine будет удалён, пакет redmine-mysql будет автоматически удалён. Также отметьте, что пакет ssl-cert является опциональным. Он предоставляет SSL сертификат (именуемый ssl-cert-snakeoil.pem), который может быть использован для работы по HTTPS.</p>
<p>В меню, появившемся при установке, выберите yes для использования dbconfig-common, выберите mysql, в качестве базы данных и предоставьте пароли MySQL пользователей root и redmine, когда потребуется. dbconfig-common заметит, что база данных уже создана и заполнит её без изменения кодировки, что в итоге даст нам таблицы имеюзие кодировку UTF-8.</p>
<h3>Настройка thin</h3>
<p>Для настройки thin, сперва создайте директорию, в которой будут хранится лог файлы создаваемые thin:</p>
<pre><code># mkdir /var/log/thin
# chmod 755 /var/log/thin
</code></pre>
<p>Если доступ к логам thin должен быть в будущем запрещён, для этой директории можно будет изменить владельца на root:adm и выставлены права 2750, для ограничения доступа только от пользователей группы adm.</p>
<p>Далее, создайте конфигурационный файл thin используя следующие команды:</p>
<pre><code>$ thin config --config /tmp/redmine.yml --chdir /usr/share/redmine \
    --environment production --socket /var/run/redmine/sockets/thin.sock \
    --daemonize --log /var/log/thin/redmine.log --pid /var/run/thin/redmine.pid \
    --user www-data --group www-data --servers 1 --prefix /redmine
# mv /tmp/redmine.yml /etc/thin/redmine.yml
# chown root:root /etc/thin/redmine.yml
# chmod 644 /etc/thin/redmine.yml
</code></pre>
<p>Заметьте, что флаг --servers может быть изменён исходя из потребностей производительности. Также, флаг --prefix может быть изменён или опущен для изменения префикса URL по которому будет доступен Redmine. Использование префикса /redmine предоставит доступ по адресу <a href="http://host/redmine">http://host/redmine</a>, отсутствие префикса будет предоставлять доступ к корню сайта <a href="http://host/">http://host/</a></p>
<p>В конце, добавим логи thin в конфигурацию logrotate для архивирования и сжатия старых логов, создав файл  /etc/logrotate.d/thin со следующим содержимым:</p>
<pre><code>/var/log/thin/*.log {
        daily
        missingok
        rotate 52
        compress
        delaycompress
        notifempty
        create 640 root adm
        sharedscripts
        postrotate
                /etc/init.d/thin restart &gt;/dev/null
        endscript
}
</code></pre>
<p>Если доступ к логам thin запрещён (как описано выше), измените строку create на create 640 root adm. Также заметьте, что указанная выше конфигурация будет вызывать перезапуск thin один раз в день для записи в следующий лог файл. Это не оптимально и будет вызывать некоторый период недоступности. Предложения по предотвращению перезапуска приветствуются.</p>
<h3>Настройка nginx</h3>
<p>Перво-наперво, создайте концигурационный файл с именем /etc/nginx/proxy_opts и следующим содержимым:</p>
<pre><code># Общие опции используемые всеми proxy
proxy_set_header        Host $http_host;

# Следующие заголовки не используются redmine, но будут полезны для плагинов
# и других веб приложений
proxy_set_header        X-Real-IP $remote_addr;
proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header        X-Forwarded-Proto $scheme;

# И другие опции для proxy
</code></pre>
<p>Далее создайте конфигурационный файл с именем  /etc/nginx/sites-available/redmine и следующим содержимым или интегрируйте содержимое в имеющийся сайт:</p>
<pre><code>upstream redmine_thin_servers {
  server unix:/var/run/redmine/sockets/thin.0.sock;
  # Добавьте дополнительные копии, если используете несколько копий thin
  #server unix:/var/run/redmine/sockets/thin.1.sock;
}

server {

  listen   80; ## listen for ipv4
  listen   [::]:80 default ipv6only=on; ## listen for ipv6

  # Выставлено специально для виртуальных хостов, для использования server_name_in_redirect
  server_name  localhost;
  server_name_in_redirect off;

  access_log  /var/log/nginx/localhost.access.log;
  error_log  /var/log/nginx/localhost.error.log;

  # Заметка: В документации сказано, что proxy_set_header должна работать
  #          в блоке location, но тестирование показало, что это не
  #          поддерживается так-что мы поместили её внутрь блока server
  include /etc/nginx/proxy_opts;
  proxy_redirect off;

  # Заметка: Должен совпадать с префиксом заданным при конфигурации thin
  #          или / если никакого префикса не задано
  location /redmine {
    root   /usr/share/redmine/public;

    error_page 404  404.html;
    error_page 500 502 503 504  500.html;

    # Отправляем важную информацию по HTTPS
    # Удалите, если ssl не используется
    # Заметка 1:  Измените $host на SSL CN если используется несколько хостов
    # Заметка 2:  Учитывайте префикс заданный в конфиге
    rewrite ^/redmine/login(.*) https://$host$request_uri permanent;
    rewrite ^/redmine/my/account(.*) https://$host$request_uri permanent;
    rewrite ^/redmine/my/password(.*) https://$host$request_uri permanent;
    rewrite ^/redmine/admin(.*) https://$host$request_uri permanent;

    try_files $uri/index.html $uri.html $uri @redmine_thin_servers;
  }

  location @redmine_thin_servers {
    proxy_pass http://redmine_thin_servers;
  }
}

# HTTPS сервер (должно совпадать с HTTP сервером выше с небольшим количеством изменений
# Опционально: удалите директивы для перенаправления, если не планируете использовать этот блок
server {

  listen   443; ## listen for ipv4
  listen   [::]:443 default ipv6only=on; ## listen for ipv6

  server_name  localhost;
  server_name_in_redirect off;

  access_log  /var/log/nginx/localhost-ssl.access.log;
  error_log  /var/log/nginx/localhost-ssl.error.log;

  include /etc/nginx/proxy_opts;
  proxy_redirect off;

  # Заметка:  Замените ssl_certificate{,_key} на свой SSL сертификат, если
  #           не используете пакет ssl-cert
  ssl  on;
  ssl_certificate  /etc/ssl/certs/ssl-cert-snakeoil.pem;
  ssl_certificate_key  /etc/ssl/private/ssl-cert-snakeoil.key;

  location /redmine {
    root   /usr/share/redmine/public;

    error_page 404  404.html;
    error_page 500 502 503 504  500.html;

    try_files $uri/index.html $uri.html $uri @redmine_thin_servers;
  }

  location @redmine_thin_servers {
    proxy_pass http://redmine_thin_servers;
  }
}
</code></pre>
<p>Если файл /etc/nginx/proxy_opts вам не нравится, просто замените include /etc/nginx/proxy_opts; необходимыми опциями (как минимум желательно прописать proxy_set_header Host).</p>
<p>Итак, если информация выше не была совмещена с уже созданным конфигурационным файлом сайта, удалите сайт по умолчанию и включите сайт с Redmine используя следующие команды:</p>
<pre><code># rm /etc/nginx/sites-enabled/default
# ln -s ../sites-available/redmine /etc/nginx/sites-enabled/redmine
</code></pre>
<h3>Дополнительные багфиксы</h3>
<p>Сейчас присутствует баг в Redmine (возможно в библиотеке Ruby libactionpack-ruby) в Squeeze, из-за которого невозможно загрузить страницу с профилем пользователя. Для причин смотрите баги <a href="http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=628899">628899</a>, <a href="http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=629067">629067</a> и <a href="http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=633305">633305</a>, и внесите соответствующие исправления. Как минимум рекомендуется осуществить исправление из <a href="http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=629067#37">комментария к 629067</a>, изменив строку 476 в файле /usr/lib/ruby/1.8/action_view/helpers/url_helper.rb указанным образом.</p>
<h3>Перезапуск и тестирование</h3>
<p>В конце концов перезапустите nginx и thin, для того, чтобы применить изменения:</p>
<pre><code># /etc/init.d/thin restart
# /etc/init.d/nginx restart
</code></pre>
<p>Далее проследуйте по ссылке <a href="http://localhost/redmine">http://localhost/redmine</a> (используя hostname и префикс настроенные выше). Должна появится стартовая странится Redmine. Нажмите "Sign in" и введите имя пользователя admin, с паролем admin. Затем произведите настройку используя <a href="http://www.redmine.org/projects/redmine/wiki/Guide">Redmine Guide</a> в качестве справочника. Наиболее важно изменить "Host name and path", на URL, который будет использоваться пользователями Redmine, поскольку он распознаётся как адрес прокси, а не как доступное внешне имя сервера.</p>
<h3>Решение проблем</h3>
<p>Если страница Redmine не грузится, есть несколько советов по решению проблем:</p>
<ul>
<li>Проверьте лог ошибок nginx /var/log/nginx/error.log на предмет соответствующих ошибок.</li>
<li>Проверьте лог ошибок thin /var/log/thin/redmine.0.log.</li>
<li>Включите режим отладки в конфигурации thin, перезапустите его и проверьте лог ошибок thin.</li>
<li>Измените конфигурационный файл thin для использования IP адреса и порта, для того, чтобы подключаться напрямую к thin, из браузера, чтобы определить, ошибка в thin или с nginx.</li>
</ul>
<p>Желаю удачи в диагностировании и решении проблем, не стесняйтесь публиковать их в комментариях или багтрекерах; искать помощи или информировать других о проблеме или решении.</p>
<h3>Наслаждайтесь</h3>
<p>Сейчас Redmine должен быть готов к использованию. Раскажите о нём  пользователям,  вливайтесь в сообщество Redmine и наслаждайтесь!</p>]]></content:encoded>
    </item>
    <item>
      <title><![CDATA[Как добавить сертификат в Openfire]]></title>
      <link>http://libc6.org/page/hot-to-add-cert-in-openfire/</link>
      <pubDate>Fri, 09 Dec 2011 01:00:00 MSK</pubDate>
      <category><![CDATA[linux]]></category>
      <guid>http://libc6.org/page/hot-to-add-cert-in-openfire/</guid>
      <description><![CDATA[Как добавить сертификат в Openfire]]></description>
      <content:encoded><![CDATA[<p>Я либо что-то не вкурил, но стандартный keytool категорически отказывался нормально импортировать сертификаты.</p>
<p>Итак, представляю проверенный, извращенский способ:</p>
<p>1. Нужно сконвертировать SSL cертификат в DER формат:</p>
<pre><code>openssl pkcs8 -topk8 -nocrypt -in cert.key -inform PEM -out cert-key.der -outform DER
openssl x509 -in cert.crt -inform PEM -out cert-crt.der -outform DER
</code></pre>
<p>2. Скачать сорцы класса Java, заменить в них строку аутентификации хранилища (по дефолту в openfire это <em>changeit</em>) и скомпилировать в класс:</p>
<pre><code>wget http://www.agentbob.info/agentbob/80/version/default/part/AttachmentData/data/ImportKey.java

// change this if you want another password by default
String keypass = "changeit";
// change this if you want another alias by default
String defaultalias = "changeit";

javac ImportKey.java
</code></pre>
<p>3. Создаём хранилище для сертификатов:</p>
<pre><code>java ImportKey cert-key.der cert-crt.der
</code></pre>
<p>4. Делаем бэкапы текущего хранилища:</p>
<pre><code>cp /etc/openfire/security/keystore /etc/openfire/security/keystore.bkp
cp /etc/openfire/security/truststore /etc/openfire/security/truststore.bkp
</code></pre>
<p>5. Копируем полученный файл вместо текущего хранилища и перезапускаем openfire</p>
<pre><code>cp keystore.ImportKey /etc/openfire/security/keystore
invoke-rc.d openfire restart
</code></pre>
<p>На этом всё.</p>]]></content:encoded>
    </item>
    <item>
      <title><![CDATA[Проблема с медленным allocate в libguestfs]]></title>
      <link>http://libc6.org/page/slow-allocation-problem-with-libguestfs/</link>
      <pubDate>Mon, 17 Oct 2011 12:00:00 MSD</pubDate>
      <category><![CDATA[libguestfs]]></category>
      <category><![CDATA[linux]]></category>
      <guid>http://libc6.org/page/slow-allocation-problem-with-libguestfs/</guid>
      <description><![CDATA[Проблема с медленным allocate в libguestfs]]></description>
      <content:encoded><![CDATA[<p>Если вы используете guestfs_fallocate64 для создания файла под виртуальную машину, то на некоторых системах вы можете заметить очень низкую производительность дискового IO в момент создания.</p>
<p>Скорее всего дело в том, что Вы используете файловую систему ext3 для хранения образов виртуальных машин. Ну или у Вас ядро не поддерживает системный вызов <a href="http://lwn.net/Articles/226710/">fallocate</a>.</p>
<p>Поясню почему возникает проблема:</p>
<ul>
<li>
<p>libguestfs <a href="http://git.annexia.org/?p=libguestfs.git;a=blob;f=fish/alloc.c;h=7799e4e1c5f0b34ce079934eea7d7c0a13ecdcd3;hb=HEAD#l86">проверяет</a> наличие возможности использовать системный вызов fallocate.</p>
<ul>
<li>Если такой вызов не поддерживается, то мы просто забиваем нолями нужный объём пространства.</li>
<li>Если поддерживается, то ядро говорит файловой системе - займи нужное пространство. В таком случае операция выполняется очень быстро.</li>
</ul>
</li>
</ul>
<p>В файловой системе ext2-3 поддержка fallocate не реализована. Можно использовать fallocate в файловых системах ext4, xfs, btrfs.</p>
<p>Надо бы ещё поисследовать то, как влияет размер inode файловой системы на производительность виртуалок.</p>]]></content:encoded>
    </item>
    <item>
      <title><![CDATA[Сборка i386 ядра на amd64 системе]]></title>
      <link>http://libc6.org/page/compiling-i386-kernel-on-amd64/</link>
      <pubDate>Sat, 15 Oct 2011 22:00:00 MSD</pubDate>
      <category><![CDATA[debian]]></category>
      <category><![CDATA[linux]]></category>
      <guid>http://libc6.org/page/compiling-i386-kernel-on-amd64/</guid>
      <description><![CDATA[Сборка i386 ядра на amd64 системе]]></description>
      <content:encoded><![CDATA[<p>Для сборки i386 ядра на amd64 системе нужно сделать немного симлинков и запустить сборку с определёнными параметрами:</p>
<pre><code># ln -s /usr/bin/ar /usr/bin/i386-ar
# ln -s /usr/bin/gcc /usr/bin/i386-gcc
# ln -s /usr/bin/ld /usr/bin/i386-ld
# ln -s /usr/bin/nm /usr/bin/i386-nm
# ln -s /usr/bin/objcopy /usr/bin/i386-objcopy
# ln -s /usr/bin/objdump /usr/bin/i386-objdump
# ln -s /usr/bin/strip /usr/bin/i386-strip    
# ln -s /usr/bin/objcopy /usr/bin/i386objcopy 
# ln -s /usr/bin/objdump /usr/bin/i386objdump 
# ls -l /usr/bin/i386-*
</code></pre>
<p>Ядро конфигурируем и собираем командами:</p>
<pre><code>$ make-kpkg --cross-compile=i386 --arch=i386 --config=menuconfig configure
$ make-kpkg --cross-compile=i386 --arch=i386 --rootcmd fakeroot  --initrd  kernel_image kernel_headers
</code></pre>]]></content:encoded>
    </item>
    <item>
      <title><![CDATA[nginx для squeeze с новым модулем upstream keepalive]]></title>
      <link>http://libc6.org/page/nginx-squeeze-with-keepalive</link>
      <pubDate>Fri, 12 Aug 2011 14:07:00 MSD</pubDate>
      <category><![CDATA[nginx]]></category>
      <category><![CDATA[debian]]></category>
      <category><![CDATA[linux]]></category>
      <guid>http://libc6.org/page/nginx-squeeze-with-keepalive</guid>
      <description><![CDATA[nginx для squeeze с новым модулем upstream keepalive]]></description>
      <content:encoded><![CDATA[<p>В <a href="http://mailman.nginx.org/pipermail/nginx-devel/2011-July/001057.html">конце июля</a> - <a href="http://mailman.nginx.org/pipermail/nginx-ru/2011-August/042069.html">начале августа</a> в списке рассылки nginx-devel был
опубликован патч осущестсвляющий поддержку keep-alive соединений с бэкендом.</p>
<p>Я в свою очередь собрал пакеты для Debian Squeeze</p>
<pre><code>nginx: nginx 
version: nginx/1.1.0
nginx: TLS SNI support enabled
nginx: configure arguments: --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-log-path=/var/log/nginx/access.log --http-proxy-temp-path=/var/lib/nginx/proxy --lock-path=/var/lock/nginx.lock --pid-path=/var/run/nginx.pid --with-debug --with-http_dav_module --with-http_flv_module --with-http_geoip_module --with-http_gzip_static_module --with-http_realip_module --with-http_stub_status_module --with-http_ssl_module --with-http_sub_module --with-ipv6 --with-mail --with-mail_ssl_module --add-module=/root/nginx-1.1.0/modules/nginx-upstream-fair --add-module=/root/nginx-1.1.0/modules/nginx-keepalive `
</code></pre>
<p><a href="http://i.libc6.org/media/opensource/nginx_1.1.0-1_i386.deb">nginx i386 с keepalive</a></p>
<p><a href="http://i.libc6.org/media/opensource/nginx_1.1.0-1_amd64.deb">nginx amd64 с keepalive</a></p>]]></content:encoded>
    </item>
    <item>
      <title><![CDATA[Третий день в Белорусии]]></title>
      <link>http://libc6.org/page/back-in-ussr-day-3</link>
      <pubDate>Mon, 25 Jul 2011 22:30:00 MSD</pubDate>
      <category><![CDATA[travel]]></category>
      <guid>http://libc6.org/page/back-in-ussr-day-3</guid>
      <description><![CDATA[Третий день в Белорусии]]></description>
      <content:encoded><![CDATA[<p>Пост пишу на телефоне, чтобы по приезду опубликовать.</p>
<p>Сегодня уезжал из Минска, город по прежнему нравится.</p>
<p>Посмотрели на библиотеку на станции Восход. Эпичное здание, на фотках это не
очень видно, но оно впечатляет.</p>
<p>Жутко хотели поесть и на станции Академия Наук(надо не забыть названия на
нативные перевести) зашли в заведение Эль помидор. Крайне приятная кухня, я
наконец то нашел сырную лазанью, которую полюбил еще в Пицце Хат(сейчас там
только обычная, мясная, на мой вкус сильно менее приятная).</p>
<p>Также попробовал там драники тоже с сыром и с курицей. Очень вкусно.</p>
<p>Хотя обслуживание у них полный пиздец, конечно.</p>
<p>После этого в темпе вальса двинули с женой и с нашим местным гидом, Катей, на
вокзал. Ей вообще отдельное большое спасибо за то что в столь ограниченное
время показала небольшую толику города и вообще с нами всячески нянчилась.</p>
<p>Я вообще вокзалы не люблю, но вокзал в Минске навевает воспоминания о 5ом
корпусе ЛЭТИ, такой же архитектурный пиздец. Непросто сориентироваться на нем.
Но тем не менее он удобен.</p>
<p>С поездом мне крайне повезло, это был российский поезд. Сайт у Вас конечно
полный пиздец и за такое юзабилити нужно гореть в аду, но с поездами(по
крайней мере теми на которых я ездил за последние лет пять) все отлично.
Вежливая проводница, работающий кондиционер, явно чистое и накрахмаленное
белье и в принципе вагон новый. В общем, обратно еду с комфортом.</p>
<p>Немного мыслей про текущую ситуацию в Белорусии, в меру моего понимания и
мнения. Скоро, я надеюсь, они откажутся от исчисления сумм миллионами и в
стране станет все нормально с конвертируемыми валютами. А пока действуют дикие
перекупщики, которые берут рубли за 120-150% от текущего курса банка(180 б.р.
за 1 рур), с евро и долларами все ещй хуже. К слову, цены крайне невысокие, на
80-100 000 б.р. можно очень плотно поесть на троих или даже на четверых.
Проезд в транспорте 850, пиво 3 - 5000, молоко в ту же цену за литр, из
Бабруйска ходит маршрутка до Минска 25 000. К слову, люди крайне вежливы(за
исключением небольшой толики встреченных) и внимательны, что радует.</p>
<p>Наибольшее недоумение у меня вызвали банкноты. Можно запросто спутать 50 500,
20 и 20000, 20000 и 100000. Что ставило иногда в неловкие ситуации. Ну и ещй
ставит в неловкую ситуацию разница в зарплатах. Мы привезли с собой 200 евро и
несколько тысяч рублей. И это было реально много. Мы немного прибарахлились и
в принципе за ценами не особо следили(сложно это с непривычки).</p>
<p>Блин, устал писать с утлой клавиатурки телефона, завтра видимо придется
продолжить.</p>
<p>Обновлённый архив фоток Минска, по <a href="/gallery/belarus/minsk/">ссылке</a></p>
<p>Приехал в Питер, сразу почуствовал разницу между странами. У нас мягко говоря
очень грязно.</p>]]></content:encoded>
    </item>
    <item>
      <title><![CDATA[Второй день в Белорусии]]></title>
      <link>http://libc6.org/page/back-in-ussr-day-2</link>
      <pubDate>Sun, 24 Jul 2011 19:10:00 MSD</pubDate>
      <category><![CDATA[travel]]></category>
      <guid>http://libc6.org/page/back-in-ussr-day-2</guid>
      <description><![CDATA[Второй день в Белорусии]]></description>
      <content:encoded><![CDATA[<p>Впечатлений не очень много, но что могу сказать про Бабруйск:</p>
<p>Город крайне симпатичный, много зелени и всё не менее аккуратно и чисто.</p>
<p>В центре впечатлений был рынок с забытыми в Питере корейцами, которые торгуют
продукцией фирмы Abibas.</p>
<p>Приобрёл немного вещей, которые всё никак не собирался купить в России.</p>
<p>Бобёр, символ города, крайне симпатичный малый.</p>
<p>Выпил зачётного местного кваса, рекомендованную аборигенами водку "Бульбаш"
или как-то так. Лень смотреть.</p>
<p>Фотки в по <a href="/gallery/belarus/babruysk/">ссылке</a></p>]]></content:encoded>
    </item>
    <item>
      <title><![CDATA[Первый день в Белорусии]]></title>
      <link>http://libc6.org/page/back-in-ussr-day-1</link>
      <pubDate>Sat, 23 Jul 2011 19:30:00 MSD</pubDate>
      <category><![CDATA[travel]]></category>
      <guid>http://libc6.org/page/back-in-ussr-day-1</guid>
      <description><![CDATA[Первый день в Белорусии]]></description>
      <content:encoded><![CDATA[<p>Коротко расскажу о том, как доехали.</p>
<p>С погодой не повезло, постоянно было то холодно(когда ехали в тучках и
дождике), то адово жарко(когда ехали по солнцу). Окна в поезде не открывались,
и техники поезда с трудом, при помощи монтировки, отвёртки и такой то матери
смогли приоткрыть окошко чуть-чуть и это немного помогало. А вообще 15 часов в
поезде это пиздец, товарищи. Летайте самолётами, это хоть и дороже, но хоть
времени сэкономите и не устанете как лошади.</p>
<p>Приехали сегодня в в Бабруйск. Пока ехали заметил много интересного:</p>
<p>Везде очень чисто и всё выглядит аккуратным и хорошо отремонтированным. Едем в
поезде, и видно, что дороги в большинстве своём очень хорошие. Либо
свежеположенные, либо очень аккуратно отремонтированные. Старые дома
отреставрированы, или их готовят к реставрации. В центре города много строек.
Очень много.</p>
<p>Через весь Минск идёт велодорожка, а велосипедистов мало, я видел человек 10
на велосипедах за два часа прогулки. Это так сказать камень в огород г.
Матвиенко, которая многотысячный клуб велосипедистов кормит завтраками. (У нас
пока я еду до работы полчаса я пересекаюсь с 20-30 велосипедистов)</p>
<p>Атмосфера на вокзале и вообще в Минске мне немного напомнила времена дефолта
98го года. Девушка которая нас встречала и водила по городу, рассказывала что
у её мужа зарплата на стройке 1.5 млн белорусских рублей, а это, если
пересчитать по официальному курсу - около 9 т.р. Хотя конечно многие продукты
стоят существенно дешевле, или по крайней мере стоили.</p>
<p>К слову, когда мы на вокзале меняли деньги на вокзале, к нам много раз
подходили "менялы" и предлагали курс 190 рублей за рубль, против 180
официального.</p>
<p>Минск за собой оставил ощущение европейского города, чего не скажешь о
Петербурге. Даже появилось желание переехать.</p>
<p>Завтра планируем погулять по Бабруйску, а пока смотрите <a href="/gallery/belarus/minsk/">фотки Минска в
галерее.</a></p>
<p>Потом их разгребу, меня пить зовут :(</p>]]></content:encoded>
    </item>
    <item>
      <title><![CDATA[Отправляюсь в Бобруйск, к жЫвотным]]></title>
      <link>http://libc6.org/page/back-in-ussr</link>
      <pubDate>Fri, 22 Jul 2011 20:54:00 MSD</pubDate>
      <category><![CDATA[travel]]></category>
      <guid>http://libc6.org/page/back-in-ussr</guid>
      <description><![CDATA[Отправляюсь в Бобруйск, к жЫвотным]]></description>
      <content:encoded><![CDATA[<p>Сумки собраны, все собрались, осталось перекусить и можно отправляться на
вокзал, на поезд, который идёт в славный город Минск.</p>
<p>В Минске мы пробудем 2 часа и потом отправимся в Бобруйск. Обратно, в
Петербург, я вернусь 26го утром.</p>
<p>По пути планирую сделать небольшой фоторепортаж.</p>]]></content:encoded>
    </item>
    <item>
      <title><![CDATA[Редкая проблема с GRUB 0.97 и resize2fs.]]></title>
      <link>http://libc6.org/page/bug-in-grub-legacy</link>
      <pubDate>Tue, 05 Jul 2011 12:00:00 MSD</pubDate>
      <category><![CDATA[bugs]]></category>
      <category><![CDATA[linux]]></category>
      <guid>http://libc6.org/page/bug-in-grub-legacy</guid>
      <description><![CDATA[Редкая проблема с GRUB 0.97 и resize2fs.]]></description>
      <content:encoded><![CDATA[<p>При клонировании образа виртуальной машины наткнулся на интересную проблему:</p>
<pre><code># grub --device-map=/boot/grub/device.map 
grub&gt; root (hd0,0) 
grub&gt; setup (hd0) 
Checking if "/boot/grub/stage1" exists... no 
Checking if "/grub/stage1" exists... 
Error 15: File not found 
# grub-install --root-directory=/ /dev/vda 
The file /boot/grub/stage1 not read correctly
</code></pre>
<p>Суть проблемы состоит в том, что в CentOS по умолчанию файловая система должна
использовать размер inode 128 бит, а новые версии e2fsprogs (1.40.5)
используют размер inode 256 бит для улучшения работы ext4 файловой системы.</p>
<p>Из man:</p>
<pre><code>-I inode-size 
Specify the size of each inode in bytes. mke2fs creates 256-byte inodes by default.In kernels after 2.6.10 and some earlier vendor kernels it is possible to utilize inodes larger than 128 bytes to store extended attributes for improved performance. The inode-size value must be a power of 2 larger or equal to 128. The larger the inode-size the more space the inode table will consume, and this reduces the usable space in the filesystem and can also negatively impact performance. Extended attributes stored in large inodes are not visible with older kernels, and such filesystems will not be mountable with 2.4 kernels at all. It is not possible to change this value after the filesystem is created.
</code></pre>
<p>К слову, то что там написано - не совсем правда, mke2fs считывает информацию
из конфигурационного файла /etc/mke2fs.conf и при определённых условиях может
менять размер inode, для небольших разделов может выставлять размер inode 128
бит.</p>
<p>Из man следует, что размер inode нельзя поменять не пересоздав файловую
систему заново.</p>
<p>Специально для libguestfs был написан <a href="http://git.annexia.org/?p=libguestfs.git;a=commit;h=24fb2c1255f751dad98dd1739b3ed3a52ce06f70">патч</a>, который позволяет передавать
mke2fs размер inode:</p>
<pre><code>$ guestfish
&gt;&lt;fs&gt; add-drive test.img 1G #for small images by default used 128 bit
&gt;&lt;fs&gt; run
&gt;&lt;fs&gt; part-disk /dev/vda mbr
&gt;&lt;fs&gt; mkfs ext3 /dev/vda1
&gt;&lt;fs&gt; tune2fs-l /dev/vda1 | grep "Inode size"
Inode size: 256
&gt;&lt;fs&gt; mkfs-opts ext3 /dev/vda1 inode:128
&gt;&lt;fs&gt; tune2fs-l /dev/vda1 | grep "Inode size"
Inode size: 128
</code></pre>]]></content:encoded>
    </item>
  </channel>
</rss>

