Демон на Питоне
Встала задача: есть некий сервер написанный на Питоне который слушает некий порт, выполняет запросы, в общем работает - теперь нужно запустить этот сервер как демон. В шеле такая задача решается просто добавлением амперсенда после вызова команды запуска:
server.py > logfile &
Однако хочется чтобы наш сервер запускался автоматически после того как сервер был рестартован, для этого нужно создать скрипт запуска в директории /etc/init.d
Почему то поиск в Интернете дал на удивление мало готовых рецептов, поэтому решил написать свой вариант такого скрипта - благо у меня уже была заготовка от одного старого проекта на java. В случае Питоном скрипт оказался даже проще.
Как сделать скриншот из flv файла
1. Ставим на сервер ffmpeg
> svn checkout svn://svn.ffmpeg.org/ffmpeg/trunk ./ffmpeg
> cd ./ffmpeg
> ./configure
> make
> make install
2. Для создания GD картинки можно использовать, например вот такую функцию:
function Video2GD($filename){ $descriptors = array( 0 => array("pipe","r"), 1 => array("pipe","w"), 2 => array("pipe","w") ); $cmd = 'ffmpeg -i '.$filename.' -vframes 1 -f image2 /dev/stdout'; $cwd = '/tmp'; $env = array(); $process = proc_open($cmd, $descriptors, $pipes ); if (is_resource($process)) { fclose($pipes[0]); $data = stream_get_contents($pipes[1]); fclose($pipes[1]); $error = stream_get_contents($pipes[2]); fclose($pipes[2]); return imagecreatefromstring($data); } return false; }
пример использования функции Video2Gd:
$im = Video2GD('/yourvideofile.flv'); header('Content-Type: image/png'); imagepng($im);
Перегрузка операторов в Python
Оказывается перегрузка операторов есть не только в C++, но и в Питоне тоже...
A class can implement certain operations that are invoked by special syntax (such as arithmetic operations or subscripting and slicing) by defining methods with special names.This is Python's approach to operator overloading, allowing classes to define their own behavior with respect to language operators.
Отладка PHP скриптов
Оказывается отлаживать приложения на PHP возможно если вы используете Eclipse c PDT, для этого необходимо скачать Studio Web Debugger - эта штука ставится как расширение PHP и позволяет эклипсу останавливаться на ваших точках остановки, проходить приложение по шагам, смотреть значения переменных и еще много чего. Радует то, что как Eclipse, так и Debugger доступны для различных платформ, и совершенно бесплатны, вот уж где коммунизм наступил...