Извлеки себя сам
Меня давно интересовало, как делаются самораспаковывающиеся архивы с расширением *.run. В таком виде поставляются, например, драйвера nVIDIA, VirtualBox, некоторое время назад — JDK и прочие Java-фреймворки. Оказывается, для генерирования run-файлов служит утилита makeself:
makeself <archive_dir> <file_name> <label>
Преобразовать pdf в tif с высоким качеством
Для автоматизации отправки факсов требуются файлы в формате tif. Офисные же документы превратить в растровые изображения не просто (можно использовать MS Office Image Writer, но там есть сложности). Поэтому для начала можно преобразовать документы в pdf с помощью, например, виртуального принтера, а уже из него создавать растр. Опции -interlace none -density 300 помогают получить растровый документ весьма высокого качества:
Это далеко не всё, что нужно сделать для формирования tif-изображения, пригодного для передачи по факсу, но в качестве отправной точки сгодится.
convert -interlace none -density 300 -resize 1728 ackamaz.pdf ackamaz.tifЭто далеко не всё, что нужно сделать для формирования tif-изображения, пригодного для передачи по факсу, но в качестве отправной точки сгодится.
- —
- 23 декабря 2011, 00:30
- комментировать
Inotify: датчик изменения файлов
Отслеживать изменения файловой системы требуется довольно часто. Например, поставив «капканы» на важные файлы можрегистрировать действия злоумышленников. Но есть и более мирные задачи. Например, в каталог /tmp время от времени телефонным сервером asterisk сбрасываются факсы в формате tif. Нужно реагиновать на эти события, отправляя изображения на электронную почту. Планировщик cron для этой задачи слишком инертертен, сам asterisk тоже e-mail'ом пользоваться не обучен, так что на выручку приходит интерфейс Linux inotify, который хорошо реализован, например, в наборе утилит inotify-tools. Вот скрипт, выполняющий описанную задачу:
На пользователей заведены почтовые ящики, соответствующие их номерам телефонов. Т.е. если факс принимается для абонента телефонной станции с номером 209, файл имеет название /tmp/209.tif и отправляется на почтовый ящик [email protected]
#!/bin/bash
while true
do
FN=`/usr/bin/inotifywait --format %f -e close_write /tmp`
IS_TIFF=`echo $FN | grep -o .tif`
if [ $IS_TIFF == ".tif" ] ; then
IP_TEST=`echo $FN | egrep -o [0-9]{3}`
echo -n "Fax for $IP_TEST..."
echo "" | mutt "[email protected]" -a "/tmp/$FN" -s "New fax"
echo ' done!'
echo "$FN" >> /tmp/asttest.log
rm -f "/tmp/$FN"
fi
done
На пользователей заведены почтовые ящики, соответствующие их номерам телефонов. Т.е. если факс принимается для абонента телефонной станции с номером 209, файл имеет название /tmp/209.tif и отправляется на почтовый ящик [email protected]
- —
- 21 декабря 2011, 23:26
- комментировать
Настройка Java-плагина в Linux
Слухи об исчезновении Java-апплетов из Сети сильно преувеличены. Иногда эти «приложеньица» выполняют работу, которая и не снилась Flash-технологии. Например, позволяют управлять удаленным приложением по VNC-протоколу. Как ни странно, с Java-плагином под Windows проблем нет, за исключением случаев, когда его отключают по принципиальным соображениям. Если установлен JRE — значит плагин должен работать во всех браузерах без дополнительных настроек. А вот в некоторых Linux-дистрибах плагин отключен. В таких случаях следует выполнить вот что.
Во-первых, выяснить, где находится файл libnpjp2.so:
или
Найденную библиотеку поместить в каталог /usr/lib/mozilla/plugins.
После этих действий плагин начинает работать во всех трех пацанских браузерах: Firefox, Google-Chrome и Opera.
Во-первых, выяснить, где находится файл libnpjp2.so:
locate libnpjp2.soили
find / -name libnpjp2.so 2>/dev/nullНайденную библиотеку поместить в каталог /usr/lib/mozilla/plugins.
После этих действий плагин начинает работать во всех трех пацанских браузерах: Firefox, Google-Chrome и Opera.
gevent на FreeBSD
В этом топике соберем gevent — сетевую библиотеку для Python, использующая libevent. В состав библиотеки входит быстрейший WSGI сервер. Соберем gevent и запустим один из примеров — простенький чат, использующий django и gevent.
Для начала нам не помешает поддержка sqlite и imaging для нашего Python:
Также естественно нужна libevent:
( Читать дальше )
Для начала нам не помешает поддержка sqlite и imaging для нашего Python:
cd /usr/ports/databases/py-sqlite3
make install
cd /usr/ports/graphics/py-imaging
make installТакже естественно нужна libevent:
( Читать дальше )
- —
- 30 ноября 2011, 15:34
- комментировать
Бенчмарк WSGI серверов Python
nichol.as/benchmark-of-python-web-servers
А также сравнение асинхронных серверов:
nichol.as/asynchronous-servers-in-python
А также сравнение асинхронных серверов:
nichol.as/asynchronous-servers-in-python
- —
- 28 ноября 2011, 15:57
- комментировать
Простой для запоминания, но при этом криптоустойчивый пароль
Как такое может быть? Да очень просто:
Вариант для параноиков:
Источник.
echo 'бабайка' | md5sum | base64 | cut -c -16Вариант для параноиков:
read -s pass; echo $pass | md5sum | base64 | cut -c -16Источник.
- —
- 25 ноября 2011, 11:21
- комментировать
Замена в тексте без sed
Оказывается, bash умеет заменять фрагменты текста в соответствии с регулярными выражениями без потокового редактора sed. Т.е. чтобы, например, убрать «минусы» из uuid вместо
можно делать так:
Источник.
UUID=`uuidgen` ; echo $UUID | sed s/-//gможно делать так:
UUID=`uuidgen` ; echo ${UUID//-/}Источник.
- —
- 24 ноября 2011, 00:10
- комментировать
Каталог Java проектов
java-source.net — обширный регулярно обновляемый каталог проектов на Java для крупнопанельного строительства и неизобретательства велосипедов.
Поменять дату изменения файла в интерактивном режиме
Иногда читаешь ленту с сайта консольных гуру и думаешь: «Ну нафига, нафига кому-то понадобилось делать вот такое?»
А потом присмотришься — ничего приемчик, может и пригодиться. Да и вспомнить возможности утилиты touch не помешает (я ей обычно пустые файлы создаю).
touch -d $(zenity --calendar --date-format=%F) filenameА потом присмотришься — ничего приемчик, может и пригодиться. Да и вспомнить возможности утилиты touch не помешает (я ей обычно пустые файлы создаю).
- —
- 19 ноября 2011, 00:29
- комментировать
