Monthly Archives: June 2010
Сессии в memcached с Zend Framework
Столкнулся тут с очень странным багом. У нас в проекте реализовано централизованное хранение сессий. Т.е. разные бекэнды хранят сессии в одном месте. Это позволяет автоматически “узнавать” пользователя, вне зависимости от того с какого фронт-энда пришел запрос.
При выключенном кэше сессии хранятся в БД MySQL, при включенном в Memcached. И вот тут то и начались глюки. У нас есть основной движок на ZF, и утилитка на PHP. Утилитке надо производить авторизацию пользователя, а для этого подключаться к memcache и устанавливать session_save_handler().
Кроссбраузерные закруглённые уголки
Нашел тут интересную статью про методы закругления уголков для разных броузеров.
http://web-standards.ru/articles/cross-browser-rounded-corners/
Импорт картинок из MS Word(.doc)
Очень часто по работе приходится вытаскивать картинки из документов Microsoft Word. Раньше я делал это в лоб: принтскрин, буфер фотошоп. Но когда картинок в документе много, и они отсканены с хорошим разрешением, то такой способ уже не подходит.
А решение оказалось простое.
Web science
Нашел интересную картинку про Web-science.
Подробнее вот здесь: http://letoosh.habrahabr.ru/blog/90639/#habracut
Веб-приложения реального времени: jSocket,Node.JS, Redis, MQ.
Приветствую своих читателей. Сегодня мы продолжим начатую ранее тему о веб-приложениях реального времени и поговорим о серверной части. Буквально на днях по аське у меня состоялся разговор по теме онлайн игр и архитектуры движка для реалтайм игры. Оказалось, мы оба думали про одно и то же, а именно, использование NodeJS как сервера для ядра системы, обслуживающего клиентские подключения. Конечно, построить весь технологический стек современной браузерной игры полностью на NodeJS все ещё затруднительно, да и сам процесс написания масштабных приложений на серверном JS еще не изучен.
Ученый доказал, что Бог существует
72-летний польский священник и математик Михаль Геллер получил в Нью-Йорке самую крупную научную премию за работу, которая предоставляет косвенные доказательства существования Бога. Геллер, являющийся также специалистом по космологии и философии, получил за свою работу 820 тыс. евро, сообщает Innovanews.ru.
Пт и Пацаны – Олимпиада
PHP Best practice
Здесь я собрал некоторые лучшие практики по PHP, которым следую (ну или буду следовать 🙂
Для итерации по массивам, их изменению и фильтрации – учимся использовать array_* функции в пхп. Особенно лямбда-функции:
<?php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
$arr = array('that', 'is', 'this'); array_walk($arr, create_function('&$v,$k', '$v = $v . " yeah";'); print_r($arr); // outputs: // Array // ( // [0] => that yeah // [1] => is yeah // [2] => this yeah // ) // А вы бы сделали это циклом? Ай-ай-ай... ?> |
Используйте константы для того что никогда не меняется. Они парсятся в самом начале и лежат вообще в другом куске памяти чем обычные переменные. Конструкции вида $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. Необязательный (у меня и без этого заработало,