Проблема с c-client
Bug #29783 IMAP module problem.
Хозяйке на заметку: если под Linux RedHat у вас не собрался PHP с IMAP
Хардлинки в WinXP
Я очень часто начинаю разрабатывать проект под Windows и заканчиваю — под Linux или freeBSD. Конечно, даже на уровне PHP, между этими группами операционных систем есть существенные различия. Обычно, они легко преодолеваются. В последнем проекте мне более всего не хватало функции link.
Поэкспериментировав с w32api и ffi, я понял, что этот путь — тупиковый. Побродив по поисковикам, я выяснил, что простейший выход — использовать в качестве заглушки утилиту fsutil из Windows XP. У неё есть параметр «hardlink create», позволяющий создавать ссылки.
if (PHP_OS == 'WINNT' && file_exists($_ENV['windir'].'\system32\fsutil.exe'))
{
function link($target, $link)
{
$cmd = $_ENV['windir'].'\system32\fsutil.exe hardlink create';
exec ($cmd.' "'.$link.'" "'.$target, $out, $ret);
return !$ret;
}
}В случае, если вы будете использовать эту функцию в проекте, будьте осторожны — это всего лишь заглушка.
WinAPI и PHP
Так случилось, что в PHP существует три модуля расширения — два для PHP4 и один для PHP5, позволяющих обращаться к Windows API. Способы их вызова различны, плюс ко всему, положение усугубляется тем, что модули расширения имеют одинаковые имена, документация есть только по первому из них, тогда как в комплект PHP включается второй.
Ниже — результат моей потребности выяснить как же это всё работает. Прежде всего стоит заметить, что w32api не работает с mod_php, если старая версия вызывает ошибку при попытке повторного вызова в то же child, то новая вызывает ошибку сразу. В режиме CGI и с PHP5 я таких экспериментов не проводил.
Итак, ниже — реализация функции link (hard link) для Windows NT. Под CLI пример работает как с PHP5, так и с PHP4. Конечно, для того, чтобы пример заработал, нужна файловая система, поддерживающая hard links. Под моей NTFS5 (Windows XP) ссылки ставятся.
// Written by Evgeny Stepanischev (aka BOLK)
if (PHP_OS == 'WINNT') {
// Модуль расширения FFI для PHP5
if (extension_loaded('ffi') || intval(PHP_VERSION) >= 5 && @dl('php_ffi.dll')) {
function link($target, $link) {
$api = & new ffi("[lib='kernel32.dll'] int " . "CreateHardLinkA( char *link, char *target, long *attr);");
return (bool)$api->CreateHardLinkA($link, $target, NULL);
}
} else
// Модуль расширения w32API для PHP4
if (extension_loaded('w32api') || @dl('php_w32api.dll')) {
// Старая версия модуля
if (function_exists('w32api_register_function')) {
if (!function_exists('CreateHardLinkA')) {
@w32api_register_function('kernel32.dll', 'CreateHardLinkA', 'bool');
}
if (function_exists('CreateHardLinkA')) {
function link($target, $link) {
return CreateHardLinkA($link, $target, NULL);
}
}
} else {
// Новая (примерно с версии PHP 4.3.0)
function link($target, $link) {
$api = & new win32;
$api->registerfunction("bool CreateHardLinkA" . "(string &link, string &target) From kernel32.dll");
return $api->CreateHardLinkA($link, $target);
}
}
}
}Screenshot send
Появился замечательный плагин к IM Miranda — Screenshot Send. Мне его очень не хватало. Жаль, что сейчас
Плагин позволяет быстро отправить скриншот любого окна своему собеседнику. Принцип действия такой: снимается скришот окна, превращается в файл заданного формата и этот файл пересылается пользователю.

Андрей Макаревич. Памяти Бродского
Снег замел пороги и дороги,
Снег ложится и не надо слов,
А по телевизору «Итоги»,
На экране — бравый Киселев.
Он привычный гость в любой квартире,
И хотите вы того, иль нет,
Вам расскажут, что творится в мире,
И уж,перво-наперво, в стране.
Что народ, уставший от обманов,
Демократам завтра скажет «нет»
И народу мил теперь Зюганов,
И его партейный комитет.
И что Ельцин посетил студентов,
Добиваясь только одного:
Чтобы выбирая президента
Помнили студенты про него.
И что Явлинский лаялся с Гайдаром,
Явной беспринципностью греша,
И что сказал об этом в кулуарах
Жириновский — добрая душа.
И параграф, в обсужденьи коего,
Снова встал парламент на дыбы,
И рабочий путь Егора Строева,
Человека непростой судьбы.
И парад закончив идиотский,
Складывая папки, не спеша,
На прощанье фраза:
Умер Бродский, сердце, похоронят в США.