Рейтинг
+1.26
голосов:
1
avatar

Кодинг  

Извлеки себя сам

Меня давно интересовало, как делаются самораспаковывающиеся архивы с расширением *.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 помогают получить растровый документ весьма высокого качества:

convert -interlace none -density 300 -resize 1728 ackamaz.pdf ackamaz.tif


Это далеко не всё, что нужно сделать для формирования tif-изображения, пригодного для передачи по факсу, но в качестве отправной точки сгодится.

Inotify: датчик изменения файлов

Отслеживать изменения файловой системы требуется довольно часто. Например, поставив «капканы» на важные файлы можрегистрировать действия злоумышленников. Но есть и более мирные задачи. Например, в каталог /tmp время от времени телефонным сервером asterisk сбрасываются факсы в формате tif. Нужно реагиновать на эти события, отправляя изображения на электронную почту. Планировщик cron для этой задачи слишком инертертен, сам asterisk тоже e-mail'ом пользоваться не обучен, так что на выручку приходит интерфейс Linux inotify, который хорошо реализован, например, в наборе утилит inotify-tools. Вот скрипт, выполняющий описанную задачу:

#!/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]

Настройка Java-плагина в Linux

Слухи об исчезновении Java-апплетов из Сети сильно преувеличены. Иногда эти «приложеньица» выполняют работу, которая и не снилась Flash-технологии. Например, позволяют управлять удаленным приложением по VNC-протоколу. Как ни странно, с Java-плагином под Windows проблем нет, за исключением случаев, когда его отключают по принципиальным соображениям. Если установлен JRE — значит плагин должен работать во всех браузерах без дополнительных настроек. А вот в некоторых Linux-дистрибах плагин отключен. В таких случаях следует выполнить вот что.

Во-первых, выяснить, где находится файл 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:

cd /usr/ports/databases/py-sqlite3
make install
cd /usr/ports/graphics/py-imaging
make install


Также естественно нужна libevent:

( Читать дальше )

Бенчмарк WSGI серверов Python

nichol.as/benchmark-of-python-web-servers

А также сравнение асинхронных серверов:

nichol.as/asynchronous-servers-in-python

Простой для запоминания, но при этом криптоустойчивый пароль

Как такое может быть? Да очень просто:

echo 'бабайка' | md5sum | base64 | cut -c -16


Вариант для параноиков:

read -s pass; echo $pass | md5sum | base64 | cut -c -16


Источник.

Замена в тексте без sed

Оказывается, bash умеет заменять фрагменты текста в соответствии с регулярными выражениями без потокового редактора sed. Т.е. чтобы, например, убрать «минусы» из uuid вместо

UUID=`uuidgen` ; echo $UUID | sed s/-//g


можно делать так:

UUID=`uuidgen` ; echo ${UUID//-/}


Источник.

Каталог Java проектов

java-source.net — обширный регулярно обновляемый каталог проектов на Java для крупнопанельного строительства и неизобретательства велосипедов.

Поменять дату изменения файла в интерактивном режиме

Иногда читаешь ленту с сайта консольных гуру и думаешь: «Ну нафига, нафига кому-то понадобилось делать вот такое?»

touch -d $(zenity --calendar --date-format=%F) filename


А потом присмотришься — ничего приемчик, может и пригодиться. Да и вспомнить возможности утилиты touch не помешает (я ей обычно пустые файлы создаю).