Хардлинки в 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;
    }
}

В случае, если вы будете использовать эту функцию в проекте, будьте осторожны — это всего лишь заглушка. Во-первых, одна ссылка создаётся примерно за 0.6 — 1сек, во-вторых, в ней нет проверки на наличие специальных символов в переменных $target и $link — если там попадётся кавычка, возникнет опасность внедрения вредоносного кода.

Оставить комментарий

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. Мне его очень не хватало. Жаль, что сейчас из-за NAT я не могу им воспользоваться.

Плагин позволяет быстро отправить скриншот любого окна своему собеседнику. Принцип действия такой: снимается скришот окна, превращается в файл заданного формата и этот файл пересылается пользователю.

Send Screenshot (17.97КиБ)

Оставить комментарий

Андрей Макаревич. Памяти Бродского

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

Оставить комментарий

Нам нужно новое Солнце

Новые солнечные батареи от «Sharp»:

Японская компания Sharp объявила о том, что ее инженерами был разработан новый вид солнечных батарей, эффективность которых значительно превосходит все предыдущие типы подобных устройств. Как сообщает английский интернет-ресурс The Inquirer, новые батареи способны вырабатывать вдвое больше энергии, чем самые производительные из существующих моделей, и стоят при этом намного меньше. В Сети говорят, что прототип солнечной батареи нового типа, имеющий секторную структуру и занимающий 170 см в длину и 30 см в ширину имеет эффективную мощность более 150 Вт.

Помимо благ, описанных в первоисточнике, такие батареи, если это, конечно, правда, позволят, наконец, создать приличный электромобиль, который, возможно, сможет ездить поближе к нашим широтам. В свете всё увеличивающихся цен на бензин, это куда как актуальнее.

Оставить комментарий

Аквариум. Мама, я не могу больше пить.

Мама, я не могу больше пить…
Мама, я не могу больше пить!
Мама, вылей всё, что стоит на столе —
Я не могу больше пить.
На мне железный аркан,
Я крещусь, когда я вижу стакан,
Я не в силах поддерживать этот обман —
Мама, я не могу больше пить!
Патриоты скажут — я дал слабину,
Практически продал родную страну,
Им легко,.. а я иду ко дну,
Я гляжу как истончается нить.
Я не валял дурака,
Тридцать пять лет — от звонка до звонка,
Но мне не вытравить из себя чужака.
Мама, я не могу больше пить!
Мама, я не могу больше пить!
Мама, я не могу больше пить!
Мама, позвони всем моим друзьям, скажи им — я не могу больше пить.
На мне железный аркан,
Я крещусь, когда я вижу стакан,
Я не в силах поддерживать этот обман —
Мама, я не могу больше пить!
Скажи моим братьям, что теперь я большой,
Скажи сестре, что я болен душой,
Я мог бы быть обычным человеком, но я упустил эту роль.
Зашёл в бесконечный лес,
Гляжу вверх, но я не вижу небес,
Скажи в церкви, что во всех дверях стоит бес — демон Алкоголь!
Мама, я не могу больше пить…
Мама, я не могу больше пить!
Мама, вылей всё, что стоит на столе —
Я не могу больше пить.
На мне железный аркан,
Я крещусь, когда я вижу стакан,
Я не в силах поддерживать этот обман —
Мама, я не могу больше пить!

Оставить комментарий

Мобильное ТВ

Трансляция первого канала (5.39КиБ)

Гм. Такого я не ожидал. Оператор «Мегафон-Москва» предлагает новую услугу — мобильное телевидение. Вещание проходит через мобильный интернет в формате Real Video. От телефона требуется наличие проигрывателя Real One Player и подключения к интернету.

Пока доступ есть к четырём каналам — РБК-ТВ (деловые новости), Рамблер-ТВ (научно-популярные и развлекательные программы) и музыкальные каналы Муз-ТВ и Neo-TV. Количество каналов будет рости.

Интересно, у нас в Казани общение через мобильный интернет по аське представляет некоторую проблему — скорости очень маленькие. Неужели в Москве полосы пропускания хватает для телевещания?

Есть желающие поделиться впечатлениями об использовании этой услуги?

Оставить комментарий

Цитатник 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: Доярки?

Оставить комментарий

«Человек, который принял свою жену за шляпу»

Стал задумываться о том, что нужно, видимо, делать какой-то перерыв между книгами. Или читать что-то нейтральное. Как знать, может «Встанвь перед Христом и убей любовь» Стюарта Хоума не показалась мне такой бездарной, если бы я не прочёл её сразу после книги «Удушье» Чака Паланика, а «Омон Ра» Пелевина не казалась бы пресной после «1999. Роман в стиле техно» Ильи Стогоffa.

Решил сделать паузу, сменить плоскость. Читаю замечательнейшую книгу Оливера Сакса «Человек, который принял свою жену за шляпу». Настоятельно рекомендую, очень интересная и познавательная книга.

Оставить комментарий

Анна Ахматова

Господь немилостив к жнецам и садоводам.
Звеня, косые падают дожди
И, прежде небо отражавшим, водам
Пестрят широкие плащи.
В подводном царстве и луга и нивы,
А струи вольные поют, поют,
На взбухших ветках лопаются сливы,
И травы легшие гниют.
И сквозь густую водяную сетку
Я вижу милое твое лицо,
Притихший парк, китайскую беседку
И дома круглое крыльцо.

Осень 1915
Царское Село

Оставить комментарий

Точность — вежливость технарей

Кстати, почитайте статью «Слово живое и мертвое: От „Маленького принца“ до „Корабля дураков“» Норы Галь.

Интересно как в интернете распространено мнение, что попытка уточнить термины, которые использует собеседник и выяснить что же он имеют ввиду присущи лишь «технарям и программистам» и рассматривается чуть ли не как бесполезное явление. «Это потому что ты технарь» — со смешком замечают оппоненты.

Позвольте! Разве желание правильно понять собеседника — черта необходимая только «технарям»? Мне кажется, она должна быть присуща всем людям. Да и люди некоторых «гуманитарных» профессий постоянно занимаются этим — пытаются понять других людей правильно. Юристы, врачи, менеджеры, руководители предприятий, главы правительств, переводчики и так далее.

Интересно ещё и другое — что этим людям позволяет считать меня «технарём»? Многие из них не умеют построить предложение сложнее «гы, сынок! lol!», в жизни не прочли ни одной книги, помимо тех, что были обязательными в программах школы и ВУЗа, да что я говорю? Большой вопрос — кого вообще считать «гуманитарием», а кого «технарём»? Это два полюса или возможны смешения? Как их различать?

По тому какой ВУЗ закончил человек? Что вы скажете о писателе Викторе Пелевине, который закончил Литературный институте и Московский энергетический? А об известным многим Диме Смирнове, который закончил факультет журналистики в НГУ и теперь, в частности, занимается технической и идеологической проработкой сайтов и игр? Примеров, среди моих друзей, масса — историки и географы, занимающиеся программированием, поэты-физики и художники-математики.

Моё мнение — если и разделять людей на эти два лагеря, то по образованию, а не по тому, кто какой ВУЗ заканчивал. А образование человек получает не только в ВУЗе. Кроме того, по моему мнению, разделение людей на два лагеря — слишком грубое. Есть люди, хорошо чувствующие себя в обоих лагерях, есть те, которых нельзя отнести ни к одному лагерю — не заслужили.

Оставить комментарий

Когда же выйдет?

Волкодав (18.03КиБ)

На фотографии — исполнитель роли Волкодава в одноимённом фильме по роману Марии Семёновой, съёмки которого сейчас проходят в Cловакии. То, что я вижу на фотографиях мне пока очень нравится. Посмотрим, что будет дальше.

Оставить комментарий

РФ

Цитата с сайта «Справочная служба русского языка»:

Вопрос № 144463

Вопрос: В каких случаях допустимо замена слов «Российская Федерация» на буквенное обозначение «РФ»?

Хаблов Александр Викторович

Ответ справочной службы русского языка Употребление сокращения РФ нежелательно, т. к. согласно Конституции нашего государства наша страна имеет два названия — Российская Федерация и Россия. РФ — канцелярит (должны заметить, очень мерзкий).

Не знал, точнее даже не задумывался над этим.

Оставить комментарий

Механическая развёртка

Знаете как устроен кинескоп современных телевизоров? Вкратце — электронный луч, при помощи специальной отклоняющей системы, пробегает все точки экрана и заставляет светиться покрытие экрана. Делает он это так быстро, что экран не успевает погаснуть полностью и лишь немного мерцает.

Были и есть системы с механической развёрткой, там где луч или его аналоги пробегать заставляет какая-либо механическая система. Иногда это выглядит жалко, иногда — забавно. Самое интересное, что я видел — это брелки «Spin» с «механической» развёрткой. Роль механики здесь выполняет сам человек — брелок просто раскручивают на цепочке. Встроенный акселерометр определяет скорость вращения брелка, а встроенный микропроцессор выдаёт информацию. Брелок «Spin» умеет выводить дату и время — на сайте есть фотографии.

Оставить комментарий

1999. Роман в стиле техно

Один из рисунков Цоя (29.51КиБ)

Цитата из книги Ильи Стого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). По-русски говоря, что у вас может не заработать после установки SP2 для Windows XP. Много игр, в списке есть Corel Draw 9, Diet KaZaa и KaZaa, DivxPlayer, Adobe PageMaker, AOL IM, AutoCAD 2004, Cute FTP 5.0, ICQ Pro, WinRoute, Live Journal Semagic, Outlook, некоторые компоненты MS Office, Visual Studio и многое другое.

У меня есть подозрение, что всё дело во встроенном в Windows XP firewall, который несколько расширил свои функции в SP2. В списке есть почти все наиболее известные программы для работы с Сетью — firewall, прокси, IM, FTP-клиенты и прочее, а остальные программы, скорее всего, просто пытаются проверить нет ли в Сети новых версий или предлагают какие-то другие возможности для работы или развлечения в интернете.

Оставить комментарий

Латрас

Один из способов придумать довольно хороший, но запоминаемый пароль — написать пару слов по-русски с ошибками и в латинской раскладке. Например: «асинаяфаприка» превращается в «fcbyfzafghbrf». Способ настолько распространён в определённых кругах, что при передаче пароля, чаще всего, ничего объяснять и не нужно — человек, встретив такую комбинацию, сам на клавиатуре посмотрит что за слово имелось ввиду.

Чаще всего удобнее (диктуя по телефону, да и просто удобно) сказать пользователю именно русское слово, объяснив, что набирать его нужно в русской раскладке. В связи с этим, хочется придумать этому приёму, раз уж он набрал такую популярность, какое-то короткое название.

Я предлагаю в качестве оного слово «латрас» (латинская раскладка). Т. е. типичная передача пароля будет звучать так: «набирай в латрасе — „расторопша“». Как вам?

Оставить комментарий

Как повалить PHP

Статья «Top 10 ways to crash PHP». Язык — английский, но примеры, которые там приведены, поймёт любой PHP-программист. Кстати, первый из них я приводил на старой версии сайта. Интересно, все ли способы работают в PHP 5.

Оставить комментарий