Как можно работать на Windows PHP разработчику

Я не буду устраивать холивары по поводу — «на какой операционке (в качестве десктопа) должен работать PHP кодер». Я скажу честно, что уже запутался. Раньше работал исключительно на линуксе, теперь пришлось на винде (на работе так удобнее, так как много корпоративного софта именно под винду). У винды есть свои преимущества, например для разработчика много софта работает только под виндой, да и вообще с ПО у винды получше. Но сейчас не об этом.
В чем работать — проблема ваша, как вам удобно. Но вот, если у вас apache и PHP запущены на винде, то скажу вам совершенно уверенно — вы идиот. Так как девелоперский сервер однозначно должен работать под Unix подобными системами.
Хочу написать как можно комфортно работать PHP кодеру под виндой.
Устанавливаем виртуальную машину (любую), ставим туда ubuntu. Сеть настраиваем так чтобы машины видели друг друга.
Файлы проекта размещаем в виндовой папке. На нее натравливаем IDE. Расшариваем эту папку. И в fstab ее монтируем под пользователем апача. Вот так:
//10.1.10.28/server /var/server smbfs username=*****,password=*****,uid=33,gid=33,umask=000 0 0


Дальше настраиваем все и работаем.

Наложение 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