30 июн. 2010 г.

Перекодировка выгрузок клиент-банка на лету (iconv + incrond)

Думал, что писал об этом, а оказалось, что думал о том, чтобы написать ;) Так или иначе, имеется небольшой скриптик, который в связке с когда-то упомянутым incron'ом занимается перекодировкой (практически "на лету") выгружаемой информации из клиент-банка из UTF-8 в CP-1251 для последующей загрузки оной в 1Сv8.1.
Создать его пришлось вследствие нежелания 1С-ки кушать выгруженные из клиент-банка (java-апплет ibank2, доступ через Firefox) данные, ибо они отдаются и сохраняются в UTF-8, тогда как 1C-ка (запущена под Wine@Etersoft) понимает только CP-1251.
Описанный костыль работает следующим образом: демоном incrond мониторится папочка:
incrontab -l
/exchange/банк/экспорт IN_CLOSE_WRITE /usr/local/bin/bank_tr_ex.sh $#
Как только в ней сохраняется файл (флаг IN_CLOSE_WRITE), запускается скрипт bank_tr_ex.sh:

#!/bin/bash

ICONV=/usr/bin/iconv
DIR=/home/exchange/банк/экспорт
OLDDIR=/home/exchange/банк/экспорт/old
FILE="$@"
ENC=`enca -i $DIR/$FILE`

if [ "$ENC" == "UTF-8" ]; then
        #echo $FILE
        sleep 1
        mv $DIR/$FILE $OLDDIR/$FILE.utf
        $ICONV -o $OLDDIR/$FILE -f UTF-8 -t CP1251 $OLDDIR/$FILE.utf
        mv $OLDDIR/$FILE $DIR/$FILE
fi
Задача скрипта: забекапить загруженный файл ($FILE.utf), транскодировать его в CP1251, подсунуть перекодированный файл вместо изначального.
После этого 1С-ка кушает выгрузку за милую душу ;)

23 июн. 2010 г.

Простейший редирект для www

Задачка: сделать редирект с http://localhost/ на http://localhost/blah, желательно быстро и просто. Возможные решения:
1) index.html:
 <META HTTP-EQUIV="REFRESH" CONTENT="0.2;URL=http://localhost/blah >
0.2 - время в секундах до редиректа
2) index.php:
<?
header ('Location: http://localhost/blah');
 >

22 июн. 2010 г.

GPG-ключ репозитория

Елы-палы, постоянно забываю, как в Дебиане (и бубунтопроизводных) добавить ключ к репозиторию:
gpg --armor --export PUBKEY | sudo apt-key add -

Debian guest + VMWare

При работе с гостевым Debian'ом в VMWare ESXi выяснилась занятная штука: udev Дебиана в упор не видел и не хотел именовать (и как следствие, я не мог указать нужное мне имя) сетевые интерфейсы. Более того, в /etc/udev/rules.d/ вообще не появлялся файл 70-persistent-net.rules, в котором описываются имеющиеся сетевые интерфейсы и осуществляется привязка имени интерфейса к его MAC-адресу.
Оказалось, что вопрос встал не только передо мной, и имеется его объяснение и решение: udev-ный генератор правил игнорирует сетевые интерфейсы, mac-адреса которых отвечают правилу:

# ignore interfaces with locally administered or null MAC addresses
# and VMWare virtual interfaces
ENV{MATCHADDR}=="?[2367abef]:*", ENV{MATCHADDR}=""
ENV{MATCHADDR}=="00:00:00:00:00:00", ENV{MATCHADDR}=""
ENV{MATCHADDR}=="00:0c:29:*|00:50:56:*", ENV{MATCHADDR}=""
То есть, не назначаются имена интерфейсам с MAC-адресами, назначаемыми вручную (и соответствующим правилу "?[2367abef]:*"), с нулевыми MAC-ами, и как раз адресами, которые по умолчанию принадлежат виртуальным vmware-интерфейсам. Таким образом, комментируем строчку
ENV{MATCHADDR}=="00:0c:29:*|00:50:56:*", ENV{MATCHADDR}="", 
в файле /lib/udev/rules.d/75-persistent-net-generator.rules (если его нет в /etc/udev/rules.d/), перезагружаемся, и udev сгенерит файлик 70-persistent-net.rules, в котором будут нужные нам строчки.

18 июн. 2010 г.

Управление пакетами в Linux


Интересная картинка, структурирующая кое-какие знания-понимания системы управления пакетами в Linux-дистрибутивах. Не то чтобы истина в последней инстанции и панацея от всех разнодистрибутивных непоняток, но в целом здраво.

10 июн. 2010 г.

VMWare Remote Console + неработающие стрелки на клавиатуре

Опять косяки с VMWare Server, точнее, с ее console. Оказывается, в некоторых случаях (а так как это связано с драйвером клавиатуры и свежим X.org, то проблема возможна во многих свежих релизах дистрибутивов) отваливается половина клавы (стрелки, цифры и т.д.) внутри гостевой машины. Воспроизводится на lin- и win- гостях. Лечилово описано в базе знаний VMWare - тут. Вкратце, правка /etc/vmware/config на хост-системе ни к чему не привела, чему я не удивлен, ведь я прихожу через браузер с третьей машины, которая не является ни гостем, ни хостом. Поэтому лечилово работает, если добавить требуемые строки в ~/.vmware/config, или создать оный с этими строками, если файл отсутствует. Мне почему-то еще пришлось переустановить Remote Console Plug-In, хотя это должно быть лишним. Опосля этих действий - заработали и стрелочки, и нампад.

Запуск двух разных версий Firefox

Как обычно, ВНЕЗАПНО!!1 выяснилось, что Firefox 3.6.3 в частности и вся 3.6.х серия вообще не работает с vmWare Server 2.0. Точнее, не со всей "вмтварью" в целом, а c Remote Console плугином. Он устанавливается без вопросов, но попытка открыть консоль виртуальной машины вываливается ошибка:
Cannot access virtual machine console. The request timed out

The attempt to acquire a valid session ticket for имя виртмашины took longer than expected. If this problem persists, contact your system administrator. 
Поиск в Сети подтвердил как проблему, так и отсутствие работающего решения. Однако, Firefox 3.5.9 работает корректно. Отсюда решение (временное, пока vmware-шники не допилят свой плугин): установить для работы с vmware релиз Fx 3.5.9, разрулить окружение фаерфоксов  с помощью профилей, запускать с разных ярлычков.
Выглядит это следующим образом:
1) создаем два профиля с помощью firefox -ProfileManager (один для работы в vmware - ff359, второй - для работы в Сети - ff363);
2) загружаем, распаковываем два огнелиса - 3.6.3 (нынешний stable), 3.5.9 (oldstable, я так понимаю).
3) создаем ярлычки запуска, указывая в поле запускаемой команды для "рабочего" браузера:
/opt/ff363/firefox -no-remote -P "ff363"
для "вмтварного":
/opt/ff359/firefox -no-remote -P "ff359"
Собственно, все ;) Теперь каждый из огнелисов запускается с собственным профилем, то есть дополнения, закладки, етц не пересекаются (опция -P), и при запуске копии браузера при уже запущенном открывается новое окно, а не вкладка (опция -no-remote).

1 июн. 2010 г.

Браузерное

Потихоньку переезжаю на Firefox. В основном потому, что надоело маяться с оперой по сабжу просмотра разного рода онлайн видео, а также - сильно нешустрой работы с гуглосервисами. Согласен, в винде таких проблем нет, и опера рулез ;) Но в линуксе, к сожалению, у норвежцев не все так радужно. Плюс хреново (опять же, в линуксе) работает Opera Link (особенно отвратно , точнее совсем никак, через прокси). А альтернативы (по степени интеграции) вследствие закрытости API браузера нет. А синхронизация между рабочим браузером и домашним мне нужна. По тем же причинам не вышло на равных работать дома в ФФ (смотреть "трубу" и читать Google Reader), на работе в Опере (гуглить, ресерчить, читать) - единого средства синхронизации закладок (а лучше еще и сохраненной истории и паролей) не существует. А то, что можно присобачить (тот же diigo.com, к примеру), использовать в опере с удобством невозможно, ибо работать можно разве что с закладками, и то или на отдельной странице, или сервлетом. В огнелиса же, с помощью дополнений, интегрируется практически что угодно. И синхронизация между n-ным количеством браузеров отпадает, как проблема, в принципе.
Посему - едем.
Все знают, что без дополнений Фаерфокс - так себе поделие. С ними же - мощный инструмент интернетчика любого помола. Таким образом, вот уже с недельку то тут, то там подглядываю да подсобирываю дополнения, которые призваны облегчить мне жизнь тяжелую и неказистую. Описывать свой use-лист смысла не вижу, ибо все дополнения, которые мною используются сегодня, я сбил в одну подборочку, там все алфавитно сортировано и описаниями автоматически снабжено. Оттуда же и стащить себе можно, коли что понравится. Конечно, по мере увеличения скилла лисозаводчика сей список будет меняться. Однако линк останется прежним, поэтому милости просим. Вдруг кто что для себя найдет, что сделает его пребывание в Сети более комфортным. Ведь ради этого все и писалось (ну, кроме, конечно, цели самому не забыть, где что лежит и как туда добраться ;) )