Заметки о Linux, системном администрировании, программировании, электронике и не только
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
26 марта 2013
Обновление прошивки THL W3+
На выходных набрался смелости и обновил прошивку своего THL W3+. Мой прошлый смартфон Huawei U8500 прошивался через заливку файла update.zip и нажимании комбинации клафиш при включении телефона. А вот с THL W3+ пришлось долгое время читать 4pda.ru и forum.china-iphone.ru.
Значительных проблем со старой прошивкой не было, но пара моментов изрядно раздражали в повседневном использовани:
Сперва сделал полный бэкап через MTK Droid Root & Tools. Затем во SP Flash Tool попробовал установить mod recovery от rua1. Несколько раз пришлось доставать батарею и заново подключать телефон, чтобы поймать момент подключения прошивальщика. Кстати установить драйвера на этот прошивальщик оказалось проще, чем потом его использовать.
После загрузки нового recovery, экран покрылся полосами - это известный баг, поэтому тут пригодился бэкап. Секцию recovery восстановил через SP Flash Tool и перезагрузился. В этот раз все в порядке. Уверенности прибавилось...
Пока искал новый recovery наткнулся на ссылку, которая определила успешность всей затеи. Автор этого поста (огромное ему спасибо) не поленился в подробностях описать весь процесс и выложить необходимые файлы.
Я не буду повторно описывать весь процесс - все необходимое вы найдете по ссылке выше.
После всех действий у меня появилась последняя официальная прошивка от 13.11.2012, права root, одна флешка (та которая sdcard, а не кусок internal storage) и надеюсь исчезли глюки.
Значительных проблем со старой прошивкой не было, но пара моментов изрядно раздражали в повседневном использовани:
- нет прав root (это может показаться излишним, но я предпочитаю иметь полный контроль над устройством);
- проблема с масштабированием щипком (продолжает масштабировать при касании одним пальцем);
- периодически переставал работать G-Sensor (переставало работать переключение ориентации из портретного в ландшафтный режим).
Сперва сделал полный бэкап через MTK Droid Root & Tools. Затем во SP Flash Tool попробовал установить mod recovery от rua1. Несколько раз пришлось доставать батарею и заново подключать телефон, чтобы поймать момент подключения прошивальщика. Кстати установить драйвера на этот прошивальщик оказалось проще, чем потом его использовать.
После загрузки нового recovery, экран покрылся полосами - это известный баг, поэтому тут пригодился бэкап. Секцию recovery восстановил через SP Flash Tool и перезагрузился. В этот раз все в порядке. Уверенности прибавилось...
Пока искал новый recovery наткнулся на ссылку, которая определила успешность всей затеи. Автор этого поста (огромное ему спасибо) не поленился в подробностях описать весь процесс и выложить необходимые файлы.
Я не буду повторно описывать весь процесс - все необходимое вы найдете по ссылке выше.
После всех действий у меня появилась последняя официальная прошивка от 13.11.2012, права root, одна флешка (та которая sdcard, а не кусок internal storage) и надеюсь исчезли глюки.
22 марта 2013
Плата для arduino за два вечера
Вчера закончил первый вариант платы микроконтроллера, которая после небольших доработок поддерживается средой Arduino. Сердцем платы является ATmega1284p - это самый навороченный кристал на ядре AVR в корпусе DIP.
МК имеет 128kb Flash, 16kb SRAM и 4kb EEPROM. Кроме того довольно богатый набор периферии на борту: 2 UART, 3 SPI и один I2C (TWI).
Последним штрихом в создании стало именование платы - после недолгого перебора созвучий с uino решил назвать ее "Tatuino". Хотя к ардуино-совместимым эта плата не относится, но менять название не стал - какая-то ассоциация со зведными войнами и Татуином.
Чтобы плата начала поддерживаться в среде Arduino, нужен файл с описанием платы. Содержимое нужно распаковать в ваш ProjectDir/hardware и перезапустить среду. Для правильной работы нужна версия 1.0.x+.
В процессе прикручивания платы я сделал бэкпорт пакетов arduino 1.0.4 (вроде самый свежий релиз на сегодня) для Debian Squeeze и залил в свой репозитарий. Чтобы установить нужно подключить секцию backports
При установке должно стянуть пакеты arduino, arduino-core и librxtx-java.
P.S. Первый и последний раз связываюсь с пайкой на макетке. Печатную плату я бы сделал за два часа, а на соединение мелкими проводочками и их пайку на макетке ушел целый вечер.
МК имеет 128kb Flash, 16kb SRAM и 4kb EEPROM. Кроме того довольно богатый набор периферии на борту: 2 UART, 3 SPI и один I2C (TWI).
Последним штрихом в создании стало именование платы - после недолгого перебора созвучий с uino решил назвать ее "Tatuino". Хотя к ардуино-совместимым эта плата не относится, но менять название не стал - какая-то ассоциация со зведными войнами и Татуином.
Чтобы плата начала поддерживаться в среде Arduino, нужен файл с описанием платы. Содержимое нужно распаковать в ваш ProjectDir/hardware и перезапустить среду. Для правильной работы нужна версия 1.0.x+.
В процессе прикручивания платы я сделал бэкпорт пакетов arduino 1.0.4 (вроде самый свежий релиз на сегодня) для Debian Squeeze и залил в свой репозитарий. Чтобы установить нужно подключить секцию backports
deb http://www.tataranovich.com/debian squeeze backports
При установке должно стянуть пакеты arduino, arduino-core и librxtx-java.
P.S. Первый и последний раз связываюсь с пайкой на макетке. Печатную плату я бы сделал за два часа, а на соединение мелкими проводочками и их пайку на макетке ушел целый вечер.
18 марта 2013
Моделирование Arduino скетчей во Fritzing
Иногда мне попадаются изображения макетной платы и arduino, на которых видно что, как и с чем соединяется на плате.
Довольно наглядно особенно для новичков или людей, которые еще не научились читать принципиальные схемы.
Вчера случайно наткнулся на упоминание fritzing. В программе масса возможностей, что в теории позволяет создать законченный продукт из прототипа.
Решил попробовать нарисовать схему соединений для одного из своих скетчей.
Попробовал запустить версию friting, которую скачал с сайта, но не получилось - бинарник в архиве собран под более новый libc6.so, чем тот, что есть в squeeze.
Чтобы все же оценить возможности приложения в Debian Squeeze я сделал бэкпорт версии 0.7.10b - его можно взять в моем репозитарии в секции backports.
![]() |
| Нашлось в сети |
Довольно наглядно особенно для новичков или людей, которые еще не научились читать принципиальные схемы.
Вчера случайно наткнулся на упоминание fritzing. В программе масса возможностей, что в теории позволяет создать законченный продукт из прототипа.
Решил попробовать нарисовать схему соединений для одного из своих скетчей.
![]() |
| Мой вариант |
Чтобы все же оценить возможности приложения в Debian Squeeze я сделал бэкпорт версии 0.7.10b - его можно взять в моем репозитарии в секции backports.
17 марта 2013
Wine 1.5.26 для Debian Squeeze/Wheezy
Собрал пакеты для нового релиза Wine 1.5.26 (Debian Squeeze i386 и amd64, Debian Wheezy только i386). Анонс новой версии тут. Установить можно из моего репозитария.
10 марта 2013
Редирект через mod_rewrite превращает POST запрос в GET
Если использовать редирект POST запроса через mod_rewrite, то в результате POST превратится в GET
Несмотря на всю костыльность самой идеи есть способ, который позволит избежать этой проблемы. Вместо 301 редиректа нужно использовать 307.
Решение было найдено моим коллегой в википедии.
<IfModule mod_rewrite.c>
RewriteCond %{REQUEST_URI} ^auth.php$
RewriteRule (.*) http://auth.example.com/login.php [R=301,L]
</IfModule>
Несмотря на всю костыльность самой идеи есть способ, который позволит избежать этой проблемы. Вместо 301 редиректа нужно использовать 307.
<IfModule mod_rewrite.c>
RewriteCond %{REQUEST_URI} ^auth.php$
RewriteRule (.*) http://auth.example.com/login.php [R=307,L]
</IfModule>
Решение было найдено моим коллегой в википедии.
Wine 1.5.25 для Debian Squeeze/Wheezy
Собрал новый релиз Wine 1.5.25 для Debian Squeeze (i386, amd64) и Debian Wheezy (i386). Анонс нового релиза. После того, как пакеты зальются на сервер их можно будет установить из моего репозитария.
Чтобы установить новую версию Wine в Debian Wheezy (amd64) вы можете воспользоваться инструкцией.
Чтобы установить новую версию Wine в Debian Wheezy (amd64) вы можете воспользоваться инструкцией.


