"Пасхальные яйца" спрятанные внутри PHP - http://www.0php.com/php_easter_egg.php
пятница, 2 ноября 2012 г.
вторник, 30 октября 2012 г.
Golang and MySQL
Просмотрев все имеющиеся на данный момент реализации MySQL клиентов для Go пришел к выводу что самая работоспособная из них - mymysql (https://github.com/ziutek/mymysql)
Остальные давно не развиваются и по видимому заброшены разработчиками.
Остальные давно не развиваются и по видимому заброшены разработчиками.
вторник, 23 октября 2012 г.
Go lang installation
Самый простой способ установки языка Go в убунте:
sudo apt-get install golang-go golang-doc golang-dbg vim-syntax-go
Причем последний пакет у меня почему-то не заработал - подсветка в vim так и не заработала. Пришлось воспользоватся советом http://eax.me/go-lang/:
mkdir -p ~/.vim/syntax/
cd ~/.vim/syntax/
wget http://go.googlecode.com/hg-history/release/misc/vim/syntax/go.vim
mkdir -p ../ftdetect/
echo 'au BufRead,BufNewFile *.go set filetype=go' > ../ftdetect/go.vim
sudo apt-get install golang-go golang-doc golang-dbg vim-syntax-go
Причем последний пакет у меня почему-то не заработал - подсветка в vim так и не заработала. Пришлось воспользоватся советом http://eax.me/go-lang/:
mkdir -p ~/.vim/syntax/
cd ~/.vim/syntax/
wget http://go.googlecode.com/hg-history/release/misc/vim/syntax/go.vim
mkdir -p ../ftdetect/
echo 'au BufRead,BufNewFile *.go set filetype=go' > ../ftdetect/go.vim
Handlersocket клиенты для PHP
У меня долго не хватало времени написать этот пост, но поскольку сегодня у нас в офисе внезапно вырубилось электричество у меня неожиданно образовалось парочка свободных часов и я решил посвятить его написанию своего гневного обзора HS клиентов для PHP. Итак начнем.
1. php-handlersocket (http://code.google.com/p/php-handlersocket/) Во многих статьях по HS рекомендуют именно этот экстеншен. Я тоже его до поры до времени использовал. Ровно до тех пор пока дело не дошло до нагрузочного тестирования. По сути в рамках этого проекта существуют две разные реализации клиента hsclient and native. Одна из которых(hsclient) вообще не работает(за что ей большое человеческое спасибо). Она просто вызывает segmentation fault при обращении к соответсвующим функциям. На то чтобы разбиратся с ней я убил всего пол дня - после сравнительно непродолжительного секса с участвием strace я понял что дело это гиблое и решил скомпилировать этот же модуль но с использованием native реализации. Эта реализация оказалась гораздо коварнее - она очень хорошо работает в ситуации когда и MySQL и веб сервер находятся на одной машине - то есть на машине разработчика и на тестовым сервере. Но как только дело дошло до нагрузочного тестирования - и MySQL сервер оказался на другом физическом сервере и в другом сегменте LAN (возможно это тоже сыграло свою роль) я заметил проблемы. Примерно 10% запросов к странице заканчивались 500 ошибкой. Смотрю в логи - PHP ругается что в записях получаемых через HandlerSocket нехватает полей. В базе все поля в наличии - а Handler Socket читает их не до конца в некоторые рандомные моменты времени. Причем только при большом количестве одновременных соединений. С помощью tcpdump я сдампил все пакеты между MySQL сервером и выяснил что нужные данные всетаки приходят в полном объеме - но Handler Socket их не читает. На этом мое терпение кончилось и я решил отказатся от этого разширения. Посмотрев на его страницу внимтельнее я обнаружил большое количество баг репортов - но ни один из них так и не был отвечен с апреля месяца. Очевидно что данное разширение не поддерживается больше - так что если вы не хотите внезапно переписывать весь проект на другой экстеншен перед релизом - не стоит с ним связыватся.
2. Следующим на очереди Net_HandlerSocket (http://openpear.org/package/Net_HandlerSocket). После непродолжительных попыток заставить его работать я понял что эта возьня не стоит свечь. Плагин очень давно не обновлялся, генерирует кучу варнингов и вообще не содержит тестов.
3. HSPHP (https://github.com/tz-lom/HSPHP) - единственный работающий кандидат. Да это не модуль PHP поэтому он будет работать гарантировано медленнее чем первый клиент, но хотябы работает. Плюч ко всему архитектура этого выглядит наиболее продуманной среди всех вариантов. Сразу видно людей знакомых с пэттернами проектирования.
1. php-handlersocket (http://code.google.com/p/php-handlersocket/) Во многих статьях по HS рекомендуют именно этот экстеншен. Я тоже его до поры до времени использовал. Ровно до тех пор пока дело не дошло до нагрузочного тестирования. По сути в рамках этого проекта существуют две разные реализации клиента hsclient and native. Одна из которых(hsclient) вообще не работает(за что ей большое человеческое спасибо). Она просто вызывает segmentation fault при обращении к соответсвующим функциям. На то чтобы разбиратся с ней я убил всего пол дня - после сравнительно непродолжительного секса с участвием strace я понял что дело это гиблое и решил скомпилировать этот же модуль но с использованием native реализации. Эта реализация оказалась гораздо коварнее - она очень хорошо работает в ситуации когда и MySQL и веб сервер находятся на одной машине - то есть на машине разработчика и на тестовым сервере. Но как только дело дошло до нагрузочного тестирования - и MySQL сервер оказался на другом физическом сервере и в другом сегменте LAN (возможно это тоже сыграло свою роль) я заметил проблемы. Примерно 10% запросов к странице заканчивались 500 ошибкой. Смотрю в логи - PHP ругается что в записях получаемых через HandlerSocket нехватает полей. В базе все поля в наличии - а Handler Socket читает их не до конца в некоторые рандомные моменты времени. Причем только при большом количестве одновременных соединений. С помощью tcpdump я сдампил все пакеты между MySQL сервером и выяснил что нужные данные всетаки приходят в полном объеме - но Handler Socket их не читает. На этом мое терпение кончилось и я решил отказатся от этого разширения. Посмотрев на его страницу внимтельнее я обнаружил большое количество баг репортов - но ни один из них так и не был отвечен с апреля месяца. Очевидно что данное разширение не поддерживается больше - так что если вы не хотите внезапно переписывать весь проект на другой экстеншен перед релизом - не стоит с ним связыватся.
2. Следующим на очереди Net_HandlerSocket (http://openpear.org/package/Net_HandlerSocket). После непродолжительных попыток заставить его работать я понял что эта возьня не стоит свечь. Плагин очень давно не обновлялся, генерирует кучу варнингов и вообще не содержит тестов.
3. HSPHP (https://github.com/tz-lom/HSPHP) - единственный работающий кандидат. Да это не модуль PHP поэтому он будет работать гарантировано медленнее чем первый клиент, но хотябы работает. Плюч ко всему архитектура этого выглядит наиболее продуманной среди всех вариантов. Сразу видно людей знакомых с пэттернами проектирования.
воскресенье, 12 августа 2012 г.
Взбесило
Сегодня наткнулся на лучшую реализацию кэширования которая только может быть возможна:
https://github.com/Idol-IT/iwi
Пример кода - как этот чудо алгоритм должен был использоватся:
https://github.com/Idol-IT/iwi
Пример кода - как этот чудо алгоритм должен был использоватся:
Yii::import('ext.iwi.Iwi');
$picture = new Iwi('images/sample.jpg');
$picture->resize(100,100, Iwi::NONE);
echo $picture->cache();
Вроде все классно, взяли картинку, сжали - закэшировали. Но господа веселые, цель кэширования - это не просто складывать барахлишко в кэш, но хотябы пытаться использовать его. Ну авторы забыли - подумаеш - с кем не бывает - подумал я и полез в код искать метод для проверки кэша. Благо документации нет практически никакой кроме этого README файла.
Оказалось что не напрасно. Потому что метода для проверки кэша у них в принципе нет. А нахера он нужен. Главное же закэшировать а не брать из кэша.
Посидел -подумал как брать из кэша. Оказалось что никак. Нужно для каждой комбинации действий хранить закэшированный URL. Короче я решил что - в топку эту поделку, это как раз тот случай когда проще выкинуть и написать самому что тебе надо, чем с этим гавно разгребатся.
пятница, 10 августа 2012 г.
Хозяйке на заметку
Несколько полезных ссылок - напочитать.
http://dtrace.org/blogs/brendan/ - много полезного про исследования производительности систем
http://www.cyberciti.biz/tips/top-linux-monitoring-tools.html - шпаргалка по базовым утилитам
http://www.markleith.co.uk/ очень полезный блог по MySQL оптимизации
http://www.percona.tv/mysql-conference/using-mysql-5-5-performance-schema использование perfomance schema в MySQL
http://dtrace.org/blogs/brendan/ - много полезного про исследования производительности систем
http://www.cyberciti.biz/tips/top-linux-monitoring-tools.html - шпаргалка по базовым утилитам
http://www.markleith.co.uk/ очень полезный блог по MySQL оптимизации
http://www.percona.tv/mysql-conference/using-mysql-5-5-performance-schema использование perfomance schema в MySQL
четверг, 14 июня 2012 г.
Иерархия статических страниц на Magento
Нашел наконецто модуль для организации иерархии статических страниц в Magento. Низкий поклон автору за его работу - потому как модуль абсолютно бесплатный.
Подробнее о нем - http://www.johannreinke.com/en/2012/01/10/magento-cms-pages-in-a-tree-structure/
В добавок ко всему он выложил его в удобном для всех разумных существ виде - а именно как репозиторий на гитхабе, чем избавил всех от необходимости иметь секс с magento connect.
В общем этот модуль - must have для любого магенто магазина.
Подробнее о нем - http://www.johannreinke.com/en/2012/01/10/magento-cms-pages-in-a-tree-structure/
В добавок ко всему он выложил его в удобном для всех разумных существ виде - а именно как репозиторий на гитхабе, чем избавил всех от необходимости иметь секс с magento connect.
В общем этот модуль - must have для любого магенто магазина.
Подписаться на:
Сообщения (Atom)