/var/log/life.log
Блог программиста из солнечной Бурятии

Чтение смс с 3g модема в роутере

router.jpg Есть у меня в хозяйстве китайский noname роутер, который уже несколько лет успешно раздаёт интернет с 3g модема. Правда для этого пришлось заказать на али ещё проводки, чтобы залить на него нормальную прошивку, поставил dd-wrt. Проблемой было то, что безлимитных тарифов нет, а трафик заканчивался неожиданно в самый не подходящий момент. В личном кабинете довольно часто сервис показа остатка трафика был недоступен. В конце концов мне это надоело и я решил написать скриптик, который отсылает usd запросы и читает смс с модема. А то ведь ещё умудряются подписывать модем на всякие гороскопы и прочие платные подписки. Читать полностью »

AutoHotKeys

Чтобы не потерять.
Переключение раскладки по CaspLock:

1
2
3
4
5
SetCapsLockState, AlwaysOff
+CapsLock::CapsLock

Capslock:: Send {Shift Down}{Alt Down}{Shift Up}{Alt Up}
return

Отключение кнопки NumLock и стрелок на нём:

1
2
3
4
5
6
7
SetNumLockState, AlwaysOff
NumpadUp::return
NumpadLeft::return
NumpadRight::return
NumpadDown::return
NumpadDel::return
NumpadIns::return

Изображения из файла отчёта Fast Report

Понадобилось странное: достать изображения их шаблона отчёта fast report. На деле это оказался xml файл, в котором данные об изображении хранятся в тегах TfrxPictureView. На вид было похоже, что там бинарные данные в шестнадцетиричном представлении. На деле так и оказалось. Заглянув внутрь увидел TBitmap, чего и следовало ожидать, т.к. программа, что их использовала была на дельфи или си билдере, хотя я наделся увидеть сигнатуры jpeg. Какая структура у TBitmap при сериализации в файл я понятия не имею, быстрое гугление результатов не дало. Понадеявшись, что там в заголовке какая-то служебная информация типа размера файла и пр. а дальше идёт bmp побрутофорсил маленько. Получилось:

1
2
3
4
5
6
$form_name = "np.fr3";
preg_match_all('#Picture\.PropData="([0-9A-F]*)"#', file_get_contents($form_name), $matches);
$i = 0;
foreach ($matches[1] as $value) {
    file_put_contents(++$i.'.bmp',substr(pack("H*" ,$value),22));
}

COM_VIRTUEMART_MAIL_SUBJ_VENDOR_ COM_VIRTUEMART_MAIL_SUBJ_SHOPPER в теме письма

Такое случается, если используются не стандартные коды статусов в virtuemart. Т.е. если добавили какой то новый статус заказа с кодом A, то в теме письма будет COM_VIRTUEMART_MAIL_SUBJ_VENDOR_A. Для решения этой проблемы нужно в языковой файл виртумарта добавить эти строки для каждого нестандартного заказа.

Создание своего меню битрикс

Предположим, что нам нужно третье меню. Меню добавляется путём создания файла .ещё_одно_меню.menu.php
Как его заполнять показано в документации http://dev.1c-bitrix.ru/api_help/main/general/menu.php?print=Y, а так же можно посмотреть в .top.menu.php. Там же показано как вызвать вывод меню. Читать полностью »

Как создать расширение для xmap

Расширение для поддержки компонента estateAgent.
Расширение минимум состоит из 2 файлов xml описания и файла с кодом.
Именоваться должно соответственно компоненту, для которого создаётся расширение, т.е. в данном случае com_estateagent.xml и com_estateagent.php Читать полностью »

Бесплатный плагин оплаты квитанцией сбербанка для virtuemart 2

Плагин оплаты сделан на основе версии для virtuemart 1.1 http://joomlaforum.ru/index.php/topic,108260.0.html
Плагин квитанции Сбербанка (1803)
В virtuemart 2 сделано так, что квитанцию показать можно только один раз после оформления заказа и если в этот момент покупатель не сохранил квитанцию или не распечатал её. То ему придётся повторно делать заказ.
На этот случай имеется платная версия, её особенность в том, что в дополнение на email покупателя высылается квитанция в формате pdf, которую он может распечатать в любой момент.
http://shop.vampirus.ru/shop/virtuemart2/plagin-oplati-kvitantsiya-sberbanka-detail.html