суббота, 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.

$ 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 выражением.

#!/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.

Значительных проблем со старой прошивкой не было, но пара моментов изрядно раздражали в повседневном использовани:
  • нет прав root (это может показаться излишним, но я предпочитаю иметь полный контроль над устройством);
  • проблема с масштабированием щипком (продолжает масштабировать при касании одним пальцем);
  • периодически переставал работать G-Sensor (переставало работать переключение ориентации из портретного в ландшафтный режим).
Поскольку весь инструментарий только для Windows, то пришлось найти бэкап и восстановить образ винды для своего нетбука.

Сперва сделал полный бэкап через 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

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.

воскресенье, 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

<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) вы можете воспользоваться инструкцией.