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.

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) и надеюсь исчезли глюки.

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

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. Первый и последний раз связываюсь с пайкой на макетке. Печатную плату я бы сделал за два часа, а на соединение мелкими проводочками и их пайку на макетке ушел целый вечер.

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

18 марта 2013

Моделирование Arduino скетчей во Fritzing

Иногда мне попадаются изображения макетной платы и arduino, на которых видно что, как и с чем соединяется на плате.
Нашлось в сети

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

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

Решил попробовать нарисовать схему соединений для одного из своих скетчей.

Мой вариант
Попробовал запустить версию friting, которую скачал с сайта, но не получилось - бинарник в архиве собран под более новый libc6.so, чем тот, что есть в squeeze.

Чтобы все же оценить возможности приложения в Debian Squeeze я сделал бэкпорт версии 0.7.10b - его можно взять в моем репозитарии в секции backports.

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

17 марта 2013

Wine 1.5.26 для Debian Squeeze/Wheezy

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

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

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>

Решение было найдено моим коллегой в википедии.

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

Wine 1.5.25 для Debian Squeeze/Wheezy

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

Чтобы установить новую версию Wine в Debian Wheezy (amd64) вы можете воспользоваться инструкцией.

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