16 апреля 2013

Wine 1.5.28 for Debian Squeeze/Wheezy

Done with packaging Wine 1.5.28 for Debian Squeeze (i386, amd64) and Debian Wheezy (i386 only). Changelog for the new release. Binary packages can be installed via my repository.

Multi-arch support for Wheezy still not fixed.

Вы можете следить за обновлениями блога с помощью Atom/RSS и Telegram.

06 апреля 2013

Переключение SATA в режим AHCI на ASUS EeePC 1000H


Чтобы получить максимум производительности от использования SSD диска в своем нетбуке ASUS EeePC 1000H мне пришлось поискать модифицированный BIOS, где есть поддержка этого режима. AHCI нужен для использования команды TRIM (по-умолчанию в 1000H sata порт работает в режиме эмуляции IDE и изменить это нельзя).

Поиски в гугле привели меня в ветку форума сайта bios-mods.com, где добрые люди выложили модифицированный BIOS для EeePC 1000H. На форуме можно скачать несколько модификаций этого BIOS, самая базовая из них только меняет OEM лого и включает опции настройки режима порта SATA. Я брал вариант ASUS 1000H ACPI BIOS Revision 2204GT (AHCI). На всякий случай я сделал зеркало этого файла у себя: 1000H-ASUS-2204GT-01.RAR

Для обновления BIOS нужна флешка, отформатированная в FAT32 (я использовал свою старую на 512MB). В архиве есть файл1000H-ASUS-2204GT-01.ROM, его нужно скопировать в корень вашей флешки и переименовать в 1000H.ROM. После этого перезагрузить нетбук и нажать Alt+F2 в момент прохождение POST - начнется процесс обновления BIOS (каждый раз, когда меняю прошивку в железе на мгновение замирает сердце, пока бежит прогрессбар).

После завершения прошивку нужно выключить нетбук и включить заново. При включении он пожалуется на неверную контрольную сумму и предложит либо продолжить загрузку (нужно нажать F2), либо зайти в BIOS и настроить параметры (нужно нажать F1). Я выбрал последний вариант.

Зайдя во вкладку "Advanced" в категории "IDE Configuration", задаю значение параметра "ATA/IDE Configuration" равным "Enhaced".

После этого активируется параметр "Configure SATA as" - его значение нужно выставить в "AHCI".

После сохранения параметров и перезагрузки SATA работал уже в режиме AHCI.

UPDATE: После установки старого жесткого диска появилась пауза при перезагрузке (примерно 30 секунд). При выключении такой паузы нет. Если SATA в режиме AHCI и установлен SSD диск, то паузы нет, а если установлен жесткий диск - пауза есть. Решается переключением SATA порта в режим эмуляции IDE.

Вы можете следить за обновлениями блога с помощью Atom/RSS и Telegram.

03 апреля 2013

Наглядное пособие по работе garbage collector в SSD дисках

Хорошая картинка для понимания работы SSD диска. Наглядно показано что такое page и erase block и как работает garbage collector.



Взято отсюда.

Вы можете следить за обновлениями блога с помощью Atom/RSS и Telegram.

02 апреля 2013

Оптимизация дисковой подсистемы

В процессе апгрейда дискового массива одного из серверов я решил применить пару оптимизаций, которые на мой взгляд могут дать прирост производительности дисковой подсистемы.

Сперва добавил битмап к raid - это даст возможность быстрее восстановить raid массив после сбоя, поскольку будут синхронизироваться только занятые блоки, которые помечены в битмапе как используемые.

# mdadm -C /dev/md3 -b internal -c 64 -l 5 -n 4 /dev/sd[e-h]2

Размер чанка (chunk) нового массива равен 64k, теперь нужно создать группу томов на новом массиве используя выравнивание по размеру чанка.

# pvcreate -M2 --dataalignment 64k /dev/md3

Осталось переместить данные со старого raid массива на новый

# vgextend vg00 /dev/md3
# pvmove /dev/md1
# vgreduce vg00 /dev/md1

Ссылки
1 http://wiki.tldp.org/LVM-on-RAID
2 https://raid.wiki.kernel.org/index.php/RAID_setup

Вы можете следить за обновлениями блога с помощью Atom/RSS и Telegram.

30 марта 2013

Wine 1.5.27 для Debian Squeeze/Wheezy

Собрал в пакеты Wine 1.5.27 для Debian Squeeze (i386, amd64) и Debian Wheezy (i386). Анонс новой версии тут. Установить можно из моего репозитария.

Вы можете следить за обновлениями блога с помощью Atom/RSS и Telegram.

29 марта 2013

session.save_handler = eaccelerator в PHP

Если у вас в свежем eaccelerator (проверял на 0.9.6) не регистрируется хендлер в PHP сессиях, то поможет откат на версию 0.9.5.x.

$ wget --no-check-certificate https://github.com/eaccelerator/eaccelerator/archive/0.9.5.zip -O eaccelerator-0.9.5.zip
$ unzip eaccelerator-0.9.5.zip
$ cd eaccelerator-0.9.5
$ phpize
$ ./configure --enable-eaccelerator=shared --without-eaccelerator-encoder --without-eaccelerator-loader --with-eaccelerator-shared-memory --with-eaccelerator-content-caching --with-eaccelerator-sessions
$ make
$ make install

Я не в курсе почему нет сессий в новой версии - в ChangeLog ничего не видно на этот счет.

UPDATE: В процессе тестирования на простом примере сессия работала

<?php
ini_set('session.save_handler', 'eaccelerator');
session_start();
if (isset($_SESSION['test'])) {
        echo "Stored value: " . $_SESSION['test'];
} else {
        echo "Storing session information";
        $_SESSION['test'] = 'Eaccelerator';
}

Но при тестировании на маджентовском сайте перестает работать сессия - похоже поддержку убрали не просто так.

Вы можете следить за обновлениями блога с помощью Atom/RSS и Telegram.

28 марта 2013

Сравнение значения переменной с regex в bash старше 3.1.x

Походил по граблям, пока получилось завести кусок кода в bash, который проверяет значение переменной на принадлежность к целым числам используя сравнение с regex выражением.

#!/bin/bash
int_value=-123

if [[ ! "$int_value" =~ "^-?[0-9]+$" ]]; then
    echo "You specified not integer value: $int_value"
else
    echo "Integer value: $int_value"
fi

Странность заключалась в том, что код выдавал ошибку для вполне целочисленных значений.

$ bash ./test.sh
You specified not integer value: -123

А если запустить его через zsh, то все работало верно:

$ zsh ./test.sh
Integer value: -123

В принципе можно было заменить код на

#!/bin/bash
int_value=-123

if echo "$int_value" | grep -qE '^-?[0-9]+$'; then
    echo "Integer value: $int_value"
else
    echo "You specified not integer value: $int_value"
fi

и успокоиться, но спортивный интерес перевесил и я решил разобраться в причине.

Все стало на свои места после прочтения топика на stackoverflow. Оказывается в bash 3.2 поменяли поведение квотинга при сравнении с regex выражениями и теперь квотить не нужно (более того, старый вариант теперь работает неверно). Чтобы вернуть совместимость с кодом на bash 3.1, нужно либо выставить флаг совместимости compat31, либо исправить код, убрав квотирование

#!/bin/bash
int_value=-123

if [[ ! $int_value =~ ^-?[0-9]+$ ]]; then
    echo "You specified not integer value: $int_value"
else
    echo "Integer value: $int_value"
fi

Если переписывать много кода лень, то можно просто выставить опцию совместимости

#!/bin/bash

setopt compat31
int_value=-123

if [[ ! "$int_value" =~ "^-?[0-9]+$" ]]; then
    echo "You specified not integer value: $int_value"
else
    echo "Integer value: $int_value"
fi

Вы можете следить за обновлениями блога с помощью Atom/RSS и Telegram.