Наложение watermark на изображение в консоли

В системе должен стоять пакет ImageMagick
В консоли делается так
$convert image.jpg -gravity SouthEast watermark.png -composite image.jpg

Из php соответственно так
exec('/usr/bin/convert '.$image_path.' -gravity SouthEast '.$watermark_path.' -composite '.$image_path)

Путь к бинарнику может отличатся в разных системах. В данном примере путь корректен для Linux. Для FreeBSD это будет /usr/local/bin/convert.

Работа с сервисами в Debian

Оказывается в debian и ubuntu можно поставить такую же утилиту service как и в RH/CentOS/Fedora.
Для этого нужно просто поставить пакет:
#aptitude install sysvconfig

Еще одно решение для пуcтых папок в Mercurial

Продолжение темы поднятой в статьях Часть1 и часть2

Написал небольшой скрипт который сканирует рабочий проект и рядом в файлик складывает названия пустых папок, который при необходимости можно подправить руками. Если запустить скрипт с флагом create, то он создаст все эти папки.

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

Бекап на лету

Скрипт создает архив заданной директории, и тут же пишет его на FTP, при этом не создавая файла архива локально.
#! /usr/env/php
<?php
define('DIR', '/home/www');
define('FTP_HOST','');
define('FTP_PORT',21);
define('FTP_USER','');
define('FTP_PASSWD','');
define('FTP_USE_PASSIV_MODE',true);


$ftp_stream = ftp_connect(FTP_HOST,FTP_PORT);
ftp_login($ftp_stream,FTP_USER, FTP_PASSWD);
ftp_pasv($ftp_stream,FTP_USE_PASSIV_MODE);

$h = popen('tar cjf - '.DIR, 'rb');

ftp_fput($ftp_stream, 'test.tar.bz2', $h, FTP_BINARY);
ftp_close($ftp_stream);
pclose($h);
?>

Обновление ubuntu 9.04 до 9.10

Сколько раз себе говорю — «не обновляй систему!!!», все равно соблазн берет верх. На одной из рабочих машин обновился — слетели дрова в видеокарте. Пакетная система тоже поломалась, так что даже поставить драйвер в режиме manual не представляется возможным.
PS. Можно конечно поковыряться, но у меня на это нет времени. Приходится переставлять систему
  • 0
  • 4 ноября 2009, 10:12
  • admin
  • 5+5

Автоматический бекап

Знаю что для этого есть уже достаточно инструментов. Но мне захотелось написать свой. Скрипт собирает папку home в нее докидывает дамп отдельно каждой базы и отсылает на ftp, при этом предварительно зашифровав файл
<?php
define('USER_DB','');
define('PASS_DB', '');
define('HOST_DB', '');

define('FTP_HOST', '');
define('FTP_USER', '');
define('FTP_PASS', '');

define('ENCODE_PASS', '');//пароль для кодирования файла
define('U_NAME', date('Y_m_d')); //используется для именования папок и файлов


exec('mkdir /backup/'.U_NAME);

exec('cp -r /home /backup/'.U_NAME);

exec('mkdir /backup/'.U_NAME.'/db');
$link = mysql_connect(HOST_DB, USER_DB, PASS_DB);
$db_list = mysql_list_dbs($link);

while ($row = mysql_fetch_object($db_list)) {
     exec('mysqldump -u'.USER_DB.' -p'.PASS_DB.' '.$row->Database.' > /backup/'.U_NAME.'/db/'.$row->Database.'.sql');
}

//exec('tar czf /backup/'.date('Y_m_d').'.tar.gz'.' /backup/'.date('Y_m_d'));
exec('tar czf - /backup/'.U_NAME.' | openssl enc -e -aes-256-cbc -k '.ENCODE_PASS.' > /backup/'.U_NAME.'.tar.gz.encoded');


exec('rm -R /backup/'.U_NAME);

$r = ftp_connect(FTP_HOST);
ftp_login($r, FTP_USER, FTP_PASS);
ftp_put($r, '/backup/'. U_NAME.'.tar.gz.encoded','/backup/'.U_NAME.'.tar.gz.encoded', FTP_BINARY);
ftp_close($r);

exec('rm /backup/'.U_NAME.'.tar.gz.encoded');


//openssl enc -d -aes-256-cbc -in ./archive.tar.gz.encoded | tar -xz    - обратная расшифровка
  • 0
  • 19 октября 2009, 13:02
  • admin
  • 1+1

Mercurial, проблемы с папками.Часть 2

Проблему с коммитом пустых папок мы решили в первой статье Часть 1.
Но что если идет речь о папке application/logs/? Мы должны в правилах игнорирования прописать игнор всего содержимого в ней. Первое что приходит на ум:
syntax: glob
application/logs/**


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

Мультизагрузка файлов на обменники

image
Хотел бы представить свой стартап unextupload.com. Вы можете загрузить на него один раз файл и разбросать его на самые популярные файловые обменники, на данный момент их семь:

— Rapidshare.com
— Depositfiles.com
— Uploadbox.com
— Uploading.com
— Turbobit.net
— Upload.com.ua
— Letitbit.net


( Читать дальше )
  • 0
  • 29 сентября 2009, 18:49
  • admin
  • 1+1

Репозитории для Qutim (Ubuntu 9.04)

deb http://qutim.org/debian/jaunty jaunty main
deb-src http://qutim.org/debian/jaunty jaunty main

Mercurial, проблемы с папками

Как известно, система контроля версий mercurial пустые папки не помещает в репозиторий. Один из выходов из положения — создать в пустых папках файл .hidden.Конечно это нужно как-то автоматизировать. Вот пример скрипта на php:
#! /usr/bin/env php
<?php
make(dirname(__FILE__).DIRECTORY_SEPARATOR);
function make($path)
{
    $h = opendir($path);
    while (FALSE !== ($element = readdir($h)))
    {
        $path_in = $path.$element;
        if ($element == '.' or $element == '..' or !is_dir($path_in))
        {
            continue;
        }        
        if(count(scandir($path_in)) == 2)//если папка пуста
        {
            echo 'Adding: '.$path_in.DIRECTORY_SEPARATOR.'.hidden'."\n";
            fopen($path_in.DIRECTORY_SEPARATOR.'.hidden', 'w');
        }
        else
        {
            make($path_in.DIRECTORY_SEPARATOR);
        }
    }
    closedir($h);
}
?>

Ложем файлик в корень проекта и запускаем.
UP: Часть2, Часть3
  • 0
  • 25 сентября 2009, 12:46
  • admin
  • 5+5