Хардлинки в 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. Мне его очень не хватало. Жаль, что сейчас
Плагин позволяет быстро отправить скриншот любого окна своему собеседнику. Принцип действия такой: снимается скришот окна, превращается в файл заданного формата и этот файл пересылается пользователю.

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

Гм. Такого я не ожидал. Оператор
Пока доступ есть к четырём каналам —
Интересно, у нас в Казани общение через мобильный интернет по аське представляет некоторую проблему — скорости очень маленькие. Неужели в Москве полосы пропускания хватает для телевещания?
Есть желающие поделиться впечатлениями об использовании этой услуги?
Цитатник Dirty
Я уже говорил о цитатнике Dirty.ru? Скажу ещё раз. Это цитаты из комментариев к сообщениям на блоге Dirty. Те, которые мне понравились больше всего, я процитировал:
Verhe: Все такие православные, когда праздник!
alex_and_r: За него любого порвем, как сосиску. Бог ты мой! Ведь чтобы порвать как сосиску, нужно знать, КАК рвется сосиска…
DalllaS: Библия была написана теми же людьми, которые утверждали, что земля плоская, Kitishe.
Rucha: Брежнев — это хорошая литература. Приличные люди писали.
kaizer: А как называют человека, который ненавидит украинцев? jovan: Леонид Кучма?
jed: говорят, что если томату три раза сказать «семантика!», он сходит с ума.
sandesh: Может начнуть выпускать коммиксы, от майкрософфт dl2kq: Комиксы от мелкософта и так регулярно выпускают. Называются Windows.
Digal: Вода натуральная. Состав: экстракт воды, натуральный или идентинтичный натуральному ароматизатор, усилитель вкуса(Exxx), разжижитель(Exxx), усилитель прозрачности(Exxx), консервант.
Jazzuit: — Превет! — Добрый день. — Пака! — До свидания.
omant: для хорошей философии достаточно и одного бита.
MegaRule: Если долго нюхать лампочку… Она перестаёт пахнуть!
Antitanic: Люди будущего будут похожи на Покемонов: издавать жизнерадостные кличи и скакать навстречу приключениям без видимой на то причины.
Agraf: Я тоже делаю КРАСИВЫЕ сайты. А хочется делать НУЖНЫЕ :(
sad: Сальные шуточки некошерны.
Dexter: Пахнут товарищи. Господа моются.
zip: А как называются люди, которые одинаково плохо владеют обеими руками? theyulia: Доярки?
«Человек, который принял свою жену за шляпу»
Стал задумываться о том, что нужно, видимо, делать
Решил сделать паузу, сменить плоскость. Читаю замечательнейшую книгу Оливера Сакса «Человек, который принял свою жену за шляпу». Настоятельно рекомендую, очень интересная и познавательная книга.
Анна Ахматова
Господь немилостив к жнецам и садоводам.
Звеня, косые падают дожди
И, прежде небо отражавшим, водам
Пестрят широкие плащи.
В подводном царстве и луга и нивы,
А струи вольные поют, поют,
На взбухших ветках лопаются сливы,
И травы легшие гниют.
И сквозь густую водяную сетку
Я вижу милое твое лицо,
Притихший парк, китайскую беседку
И дома круглое крыльцо.Осень 1915
Царское Село
Точность — вежливость технарей
Кстати, почитайте статью «Слово живое и мертвое: От „Маленького принца“ до „Корабля дураков“» Норы Галь.
Интересно как в интернете распространено мнение, что попытка уточнить термины, которые использует собеседник и выяснить что же он имеют ввиду присущи лишь «технарям и программистам» и рассматривается чуть ли не как бесполезное явление. «Это потому что ты технарь» — со смешком замечают оппоненты.
Позвольте! Разве желание правильно понять собеседника — черта необходимая только «технарям»? Мне кажется, она должна быть присуща всем людям. Да и люди некоторых «гуманитарных» профессий постоянно занимаются этим — пытаются понять других людей правильно. Юристы, врачи, менеджеры, руководители предприятий, главы правительств, переводчики и так далее.
Интересно ещё и другое — что этим людям позволяет считать меня «технарём»? Многие из них не умеют построить предложение сложнее «гы, сынок! lol!», в жизни не прочли ни одной книги, помимо тех, что были обязательными в программах школы и ВУЗа, да что я говорю? Большой вопрос — кого вообще считать «гуманитарием», а кого «технарём»? Это два полюса или возможны смешения? Как их различать?
По тому какой ВУЗ закончил человек? Что вы скажете о писателе Викторе Пелевине, который закончил Литературный институте и Московский энергетический? А об известным многим Диме Смирнове, который закончил факультет журналистики в НГУ и теперь, в частности, занимается технической и идеологической проработкой сайтов и игр? Примеров, среди моих друзей, масса — историки и географы, занимающиеся программированием,
Моё мнение — если и разделять людей на эти два лагеря, то по образованию, а не по тому, кто какой ВУЗ заканчивал. А образование человек получает не только в ВУЗе. Кроме того, по моему мнению, разделение людей на два лагеря — слишком грубое. Есть люди, хорошо чувствующие себя в обоих лагерях, есть те, которых нельзя отнести ни к одному лагерю — не заслужили.
Когда же выйдет?

На фотографии — исполнитель роли Волкодава в одноимённом фильме по роману Марии Семёновой, съёмки которого сейчас проходят в Cловакии. То, что я вижу на фотографиях мне пока очень нравится. Посмотрим, что будет дальше.
РФ
Цитата с сайта «Справочная служба русского языка»:
Вопрос № 144463
Вопрос: В каких случаях допустимо замена слов «Российская Федерация» на буквенное обозначение «РФ»?
Хаблов Александр Викторович
Ответ справочной службы русского языка Употребление сокращения РФ нежелательно, т. к. согласно Конституции нашего государства наша страна имеет два названия — Российская Федерация и Россия. РФ — канцелярит (должны заметить, очень мерзкий).
Не знал, точнее даже не задумывался над этим.
Механическая развёртка
Знаете как устроен кинескоп современных телевизоров? Вкратце — электронный луч, при помощи специальной отклоняющей системы, пробегает все точки экрана и заставляет светиться покрытие экрана. Делает он это так быстро, что экран не успевает погаснуть полностью и лишь немного мерцает.
Были и есть системы с механической развёрткой, там где луч или его аналоги пробегать заставляет
1999. Роман в стиле техно

Цитата из книги Ильи Стогоffa «1999. Роман в стиле техно»:
Денег не было настолько, что иногда Цою приходилось торговать портретами иностранных
рок-знаменитостей, которые он сам же и рисовал. Он действительно хорошо рисовал и собирался быть художником
Я прочитал пока только треть книги, треть эта посвящена советскому андеграунду — Гребенщиков, первый советский панк Свинья, Цой, АССА, Африка, Курёхин и так далее. На иллюстрации — один из рисунков Виктора Цоя.
Кстати, книгу читаю запоем. Настоятельно рекомендую.
LANG
«Его пример — другим наука». Господа, если при попытки инсталляции модуля для Perl, вы встретите сообщение вида «Makefile:85: *** missing separator. Stop.», не отчаивайтесь, а посмотрите значение переменной LANG. Её значение должно быть «en_US». Скорее всего у вас там «UTF8», измените его на «en_US» (обычно «export LANG en_US») и попробуйте установить модуль ещё раз.
Что отвалится после SP2
Документ от Microsoft «Programs that may behave differently in Windows XP Service Pack 2» («Программы, которые, возможно, будут работать иначе в Windows XP после установки SP2).
У меня есть подозрение, что всё дело во встроенном в Windows XP firewall, который несколько расширил свои функции в SP2. В списке есть почти все наиболее известные программы для работы с Сетью — firewall, прокси, IM,
Латрас
Один из способов придумать довольно хороший, но запоминаемый пароль — написать пару слов
Чаще всего удобнее (диктуя по телефону, да и просто удобно) сказать пользователю именно русское слово, объяснив, что набирать его нужно в русской раскладке. В связи с этим, хочется придумать этому приёму, раз уж он набрал такую популярность,
Я предлагаю в качестве оного слово «латрас» (латинская раскладка). Т. е. типичная передача пароля будет звучать так: «набирай в латрасе — „расторопша“». Как вам?
Как повалить PHP
Статья «Top 10 ways to crash PHP». Язык — английский, но примеры, которые там приведены, поймёт любой PHP-программист. Кстати, первый из них я приводил на старой версии сайта. Интересно, все ли способы работают в PHP 5.