Заметки о 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) вы можете воспользоваться инструкцией.
Подписаться на:
Сообщения (Atom)