Афоризм дня
"Компьютеры хороши тем что они делают то что вы просите их делать, однако их большой недостаток в том что они делают в точности то о чем вы их попросили"
Тед Нельсон
Трудно свормулировать по русски так чтобы хорошо звучало, но подмечено очень точно...
Демон на Питоне
Встала задача: есть некий сервер написанный на Питоне который слушает некий порт, выполняет запросы, в общем работает - теперь нужно запустить этот сервер как демон. В шеле такая задача решается просто добавлением амперсенда после вызова команды запуска:
server.py > logfile &
Однако хочется чтобы наш сервер запускался автоматически после того как сервер был рестартован, для этого нужно создать скрипт запуска в директории /etc/init.d
Почему то поиск в Интернете дал на удивление мало готовых рецептов, поэтому решил написать свой вариант такого скрипта - благо у меня уже была заготовка от одного старого проекта на java. В случае Питоном скрипт оказался даже проще.
как поставить заголовок Return-Path к письму посылаемому командой mail
я уже писал в блоге что можно поправить php.ini добавив
mail.force_extra_parameters = "-f your@emailaddres.ru"
но более удобно использовать пятый аргумент функции mail:
$email = "mail@yourdomain.ru"; $return_path = "mail@yourdomain.ru"; $from_path = "admin@yourdomain.ru"; $subject = "text message"; $content = "content of email"; $headers = "Content-Type: text/plain;\n"; $headers .= "Content-Transfer-Encoding: 7bit;\n"; $headers .= "Return-Path: <".$return_path.">\n"; $headers .= "From: <".$from_path.">\n"; $extra = '-f '.$return_path; mail($email, $subject, $content, $headers, $extra);
Как сделать скриншот из 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);