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.
Заметки о Linux, системном администрировании, программировании, электронике и не только
16 апреля 2013
Wine 1.5.28 for Debian Squeeze/Wheezy
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.
03 апреля 2013
Наглядное пособие по работе garbage collector в SSD дисках
Хорошая картинка для понимания работы SSD диска. Наглядно показано что такое page и erase block и как работает garbage collector.
Взято отсюда.
Взято отсюда.
02 апреля 2013
Оптимизация дисковой подсистемы
В процессе апгрейда дискового массива одного из серверов я решил применить пару оптимизаций, которые на мой взгляд могут дать прирост производительности дисковой подсистемы.
Сперва добавил битмап к raid - это даст возможность быстрее восстановить raid массив после сбоя, поскольку будут синхронизироваться только занятые блоки, которые помечены в битмапе как используемые.
Размер чанка (chunk) нового массива равен 64k, теперь нужно создать группу томов на новом массиве используя выравнивание по размеру чанка.
Осталось переместить данные со старого raid массива на новый
Ссылки
1 http://wiki.tldp.org/LVM-on-RAID
2 https://raid.wiki.kernel.org/index.php/RAID_setup
Сперва добавил битмап к 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
30 марта 2013
Wine 1.5.27 для Debian Squeeze/Wheezy
Собрал в пакеты Wine 1.5.27 для Debian Squeeze (i386, amd64) и Debian Wheezy (i386). Анонс новой версии тут. Установить можно из моего репозитария.
29 марта 2013
session.save_handler = eaccelerator в PHP
Если у вас в свежем eaccelerator (проверял на 0.9.6) не регистрируется хендлер в PHP сессиях, то поможет откат на версию 0.9.5.x.
Я не в курсе почему нет сессий в новой версии - в ChangeLog ничего не видно на этот счет.
UPDATE: В процессе тестирования на простом примере сессия работала
Но при тестировании на маджентовском сайте перестает работать сессия - похоже поддержку убрали не просто так.
$ 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';
}
Но при тестировании на маджентовском сайте перестает работать сессия - похоже поддержку убрали не просто так.
28 марта 2013
Сравнение значения переменной с regex в bash старше 3.1.x
Походил по граблям, пока получилось завести кусок кода в bash, который проверяет значение переменной на принадлежность к целым числам используя сравнение с regex выражением.
Странность заключалась в том, что код выдавал ошибку для вполне целочисленных значений.
А если запустить его через zsh, то все работало верно:
В принципе можно было заменить код на
и успокоиться, но спортивный интерес перевесил и я решил разобраться в причине.
Все стало на свои места после прочтения топика на stackoverflow. Оказывается в bash 3.2 поменяли поведение квотинга при сравнении с regex выражениями и теперь квотить не нужно (более того, старый вариант теперь работает неверно). Чтобы вернуть совместимость с кодом на bash 3.1, нужно либо выставить флаг совместимости
Если переписывать много кода лень, то можно просто выставить опцию совместимости
#!/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)
