Monthly Archives: June 2010

Сессии в memcached с Zend Framework

Столкнулся тут с очень странным багом. У нас в проекте реализовано централизованное хранение сессий. Т.е. разные бекэнды хранят сессии в одном месте. Это позволяет автоматически “узнавать” пользователя, вне зависимости от того с какого фронт-энда пришел запрос.
При выключенном кэше сессии хранятся в БД MySQL, при включенном в Memcached. И вот тут то и начались глюки. У нас есть основной движок на ZF, и утилитка на PHP. Утилитке надо производить авторизацию пользователя, а для этого подключаться к memcache и устанавливать session_save_handler().

Импорт картинок из MS Word(.doc)

Очень часто по работе приходится вытаскивать картинки из документов Microsoft Word. Раньше я делал это в лоб: принтскрин, буфер фотошоп. Но когда картинок в документе много, и они отсканены с хорошим разрешением, то такой способ уже не подходит.
А решение оказалось простое.

Веб-приложения реального времени: jSocket,Node.JS, Redis, MQ.

Приветствую своих читателей. Сегодня мы продолжим начатую ранее тему о веб-приложениях реального времени и поговорим о серверной части. Буквально на днях по аське у меня состоялся разговор по теме онлайн игр и архитектуры движка для реалтайм игры. Оказалось, мы оба думали про одно и то же, а именно, использование NodeJS как сервера для ядра системы, обслуживающего клиентские подключения. Конечно, построить весь технологический стек современной браузерной игры полностью на NodeJS все ещё затруднительно, да и сам процесс написания масштабных приложений на серверном JS еще не изучен.

Ученый доказал, что Бог существует

72-летний польский священник и математик Михаль Геллер получил в Нью-Йорке самую крупную научную премию за работу, которая предоставляет косвенные доказательства существования Бога. Геллер, являющийся также специалистом по космологии и философии, получил за свою работу 820 тыс. евро, сообщает Innovanews.ru.

PHP Best practice

Здесь я собрал некоторые лучшие практики по PHP, которым следую (ну или буду следовать 🙂

Для итерации по массивам, их изменению и фильтрации – учимся использовать array_* функции в пхп. Особенно лямбда-функции:

<?php

Используйте константы для того что никогда не меняется. Они парсятся в самом начале и лежат вообще в другом куске памяти чем обычные переменные. Конструкции вида $str = ‘some’ . STR_CONSTANT и выглядят к тому же лучше.

PHP includes caching

Сейчас озадачен проблемой кэширования инклюдов. Взглянул на наш проект, более 150 инклюдов, и это только на Zend Framework. Нашел ссылку про __autoload с кэширование, сейчас копаю в этом направлении.

Осталось понять, как автоматически парсить инклюды в исходном коде и вырезать их…

По сути вот моя проблема.

Возможные ходы по решению:

In order to preserve the API, I extended Zend_Loader and started overwriting functions such as Zend_Loader::_securityCheck(),

phpDocumentor и UTF-8 исходники

Как заставить phpDocumentator понимать русский текст в исходниках на UTF-8:

1. нужно править файл Setup.inc.php. В нем есть метод createDocs, где нужно исправить следующее
– if (stristr($ret, “utf-8”) !== “”)
+ if (stristr($ret, “utf-8”) === false)
{
$ret = utf8_decode($ret);
}

2. Пройтись глобальной заменой по всем (*.*) файлам документатора и заменить
charset=iso-8859-1’/>
на
charset=utf-8’/>

3. Необязательный (у меня и без этого заработало,