Новая стабильная версия perl 5.16.3

18.03.2013г. // Рубрики: Новости, Perl
Анонсирована и доступна к загрузке новая стабильная версия perl 5.16.3. Изменений не так много: ядро не затронуто, пофиксена утечка памяти в Encode.xs, закрыт баг с возможным отказом от обслуживания (CVE-2013-1667), устранена ошибка чтения/записи сверхдлинных строк. Полный список изменений доступен здесь: http://search.cpan.org/dist/perl-5.16.3/pod/perldelta.pod.
Следующая стабильная версия 5.18.0 ожидается к выходу в мае 2013г.

Моделирование иерархических данных в MySQL

12.03.2013г. // Рубрики: web, Рецепты
Почитывал сегодня после обеда Хабра-трёп на тему "SQL vs NoSQL" и увидел ссылку на любопытную англоязычную статью про моделирование деревьев в рамках MySQL. Хотя сейчас подобные вещи предпочитаю делать на MongoDB, сама статья мне показалась любопытной и достойной попадания в личные закладки: http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/. Как я бегло глянул - там речь идет о Adjacency List Model и Nested Set.

Альтернативный драйвер для MongoDB

06.03.2013г. // Рубрики: Новости, web, Perl
Разбирая старые почтовые рассылки, наткнулся на любопытный проект Mango. Автор анонсировал появление альфа-релиза своего неблокирующего драйвера для MongoDB, заточенного под Mojolicious. Решил оставить себе эту заметку на будущее, поскольку монго находится в сфере моих интересов, хоть и пользуюсь пока штатным драйвером.
Что отмечается?
Главное, ссылка на то, что официальный драйвер до сих пор небезопасно пишет в базу, ну и еще какие-то недостатки, которые по мнению автора и так все знают. Особенностями предложенного драйвера являются:
  • неблокирующий гибридный API (clean blocking and non-blocking hybrid API)
  • все операции безопасны по-умолчанию
  • не требуется компилятор C  (уж не знаю, достоинство ли это)
  • оптимизация под Mojolicious
Примеры прилагаются с исходниками. В общем, когда я созрею до использования Mango - к тому времени Манго тоже как раз созреет.

Появление Perl-издания на русском языке

05.03.2013г. // Рубрики: Новости, web, Perl
Порылся в памяти - я не смог припомнить серьёзной попытки создать сетевой журнал, посвящённый Perl, на русском языке. И вот, встречайте - Pragmatic Perl. Будем верить, что энтузиазм авторов не заглохнет в круговерти других забот.  Читать полностью >

Упоротый лис едет в Россию

04.03.2013г. // Рубрики: Новости, web
Собственно - вот, ждём в Питере числа 26 марта. Я не думаю, что найдётся в рунете человек, совершенно равнодушный к этому неживому, но такому настоящему, воплощению русской души.
[/images/2013/03/04/1/7dc87602.jpg]
Медитировать на Лиса можно бесконечно.
"Лис выглядит так, будто он решил, что он человек". Ну да, так примерно он и выглядит. Так бы выглядели и все мы, если бы решили стать лисицами. (c)

Скажем спасибо Адель Морзе за это гениальное чучело.

Подружить Magento и X-Cache

28.02.2013г. // Рубрики: web, Рецепты, cms
Как-то сделал товарищу магазин на Magento, ну и там пока то да сё - пустил его пожить на своём VDS-е. Мне было не в тягость, пока этот магазин не начал периодически отжирать ресурсы не слабо. Сегодня я решил задуматься о разных php-шных заморочках и вспомнил, что у меня к одному форуму на сервере уже прикручен X-Cache, вот его решил использовать и для магенты.
Быстро поискал в интернете и нашел нужные настройки, в файле app/etc/local.xml, в секции <global> необходимо сделать вставку:
<cache>
    <backend>xcache</backend>
    <prefix>MAGENTO_</prefix>
</cache>
здесь prefix - это всего лишь только префикс, и больше ничего, нужен, чтобы разделять кеши от разных проектов, можно придумать любое имя.
Всё бы ничего, да только после этого Magento сдох (или Магента сдохла?) Короче, полез в var/report и полюбовался на:
a:4:{i:0;s:78:"fast_backend must implement the Zend_Cache_Backend_ExtendedInterface interface";i:1;s:1258:"#0 lib/Zend/Cache/Backend/TwoLevels.php(153): Zend_Cache::throwException('fast_backend mu...')
#1 lib/Zend/Cache.php(153): Zend_Cache_Backend_TwoLevels->__construct(Array)
#2 lib/Zend/Cache.php(94): Zend_Cache::_makeBackend('TwoLevels', Array, true, true)
#3 app/code/core/Mage/Core/Model/Cache.php(124): Zend_Cache::factory('Varien_Cache_Co...', 'TwoLevels', Array, Array, true, true, true)
#4 app/code/core/Mage/Core/Model/Config.php(1350): Mage_Core_Model_Cache->__construct(Array)
#5 app/Mage.php(432): Mage_Core_Model_Config->getModelInstance('core/cache', Array)
#6 app/code/core/Mage/Core/Model/App.php(396): Mage::getModel('core/cache', Array)
#7 app/code/core/Mage/Core/Model/App.php(290): Mage_Core_Model_App->_initCache(Array)
#8 app/code/core/Mage/Core/Model/App.php(332): Mage_Core_Model_App->baseInit(Array)
#9 app/Mage.php(640): Mage_Core_Model_App->run(Array)
#10 index.php(80): Mage::run('', 'store')
#11 {main}";s:3:"url";s:1:"/";s:11:"script_name";s:10:"/index.php";}
Пришлось вновь залезать в Интернет и разбираться.
Итак, лекарство:
  1. ищем файлик app/code/core/Mage/Core/Model/Cache.php и открываем его редактором
  2. находим там строчку, начинающуюся с case 'xcache':
  3. комментируем пониже выражение $enable2levels = true;
В общем, у меня получилось так:
case 'xcache':
    if (extension_loaded('xcache')) {
        /*$enable2levels = true;*/
        $backendType = 'Xcache';
    }
    break;
После этого магазин шустренько зажил, так что можно сказать, что я доволен.
На всякий случай решил записать этот рецептик, возможно ещё пригодится при каком-нибудь апгрейде.

Class::Singleton - траблы в mod_perl

26.02.2013г. // Рубрики: Рецепты, Perl
Во время отладки сайта под mod_perl2, столкнулся с воистину мистичным глюком. Мне там потребовались небольшие проверки текущей timezone, ну и манипуляции по-необходимости, использовался пакет DateTime. Сообщение в логе загнало меня в ступор
Invalid version format (non-numeric data) at /usr/local/share/perl/5.10.1/DateTime/TimeZone/Europe/Moscow
BEGIN failed--compilation aborted at /usr/local/share/perl/5.10.1/DateTime/TimeZone/Europe/Moscow.pm line 17.
....
Attempt to reload DateTime/TimeZone/Europe/Moscow.pm aborted.
Справедливости ради, это сообщение не только для Moscow.pm выскакивало. В общем, потребовались глубокие разборки и внимательный просмотр исходных текстов модуля DateTime. Здесь опущу описание душевных мук, в процессе расследования подозрение пало на Class::Singleton (версия 1.4 от 28 Sep 2007).
Итак, сухой остаток: открывая исходник, видим в первых рядах следующую строку:
our $VERSION = 1.4;Ищем на своем компе, где модуль прописался (у меня, к примеру, /usr/local/share/perl/5.10.1/Class/Singleton.pm), открываем его в текстовом редакторе, и аналогичную строку заменяем на
our $VERSION = '1.4';т.е. просто заключаем в одинарные кавычки. И (о, чудо!) - глюк немедленно пропал.
Самое забавное во всей истории - из трех различных серверов, ошибка возникала лишь на одном (который Debian 6 под Xen, если интересно). Вероятно, вследствие набора случайных факторов.
Из этой занимательной истории возникает полезный вывод: всегда заключайте версию модуля в кавычки. Подальше от греха..

Алгоритм разбора URL-ов для CMS, у которой не бывает дублей

22.02.2013г. // Рубрики: web, cms
Вебмастера, которые достаточно давно тусуются в сайтостроительстве и имеют опыт наблюдения за своим сайтом в выдаче поисковых систем, прекрасно осведомлены в проблеме "дублей". Смысл простой: скажем для Яндекса, урлы 'http://my-super-puper.ru/news', 'http://my-super-puper.ru/news/' и 'http://my-super-puper.ru/news?kakoi-to-bred' - совершенно разные страницы. А подавляющее большинство CMS-ов и самописов выдают по ним одинаковое содержимое. Таким способом образуется значительная часть дублей в индексе поисковой машины.  Читать полностью >

Opera поплывёт на ВебКите

14.02.2013г. // Рубрики: Новости, web
opera with android
Хны, компания Опера объявила, что в ближайшее время будет переползать на платформу WebKit, чтобы составлять успешную конкуренцию на всяких мобильных Андроидах. Я так понимаю, что собственный оперный веб-движок постепенно прекратит существование, а жаль. Сужение возможности выбора никогда не приводило к прогрессу. Отныне технологическая конкуренция переходит в плоскость маркетингового соревнования. Тьфу на них! Лучше бы Internet Explorer пошёл по такому пути, но Билл Гейтс - он хииитрый, он ни-ни ((
«    »

Рубрики