Посвящается спам ботам :)

Поражает меня иногда то, с каким усердием работают спамеры и пишут свои спам сообщения в темы на моём блоге. Пока что успешно фильтрую всё это гавно — оно даже не попадает в комменты — ручной апрув. Но вот решил создать тему, где проапрувлю несколько спам-комментов, чтобы читатели моего блога познакомились со спам ботами поближе. Вы увидите, какой спам идёт, насколько часто он хитрый (завуалирован под реальный ответ, но «не по теме»).

Итак, эта тема ислючительно создана для того, чтобы словить спам комментарии 🙂 При этом, обратите вниманием, у меня комменты принимаются через капчу и посмотрите, как легко пробивается капча. Читать далее Посвящается спам ботам 🙂

Новый модуль — WWW::Ruler

Сегодня разместил на CPAN свой второй open source модуль — WWW::Ruler. Не буду описывать то, как с ним работать. Напишу лишь краткое его представление.

WWW::Ruler помогает легко формировать рулетку стиля Google (её функционирование) , а также помогает программисту получить нужные смещения для обрезания массива данных. То есть, мы указываем модулю размер всего массива, что мы имеем (например сколько всего товаров в категории), количество элементов на одной странице (категория разбита на страницы), желаемое количество кнопок «рулетки» и номер текущей страницы, для которой надо показать релетку. Модуль формирует массив элементов рулетки и вычисляет start & end позиции в массиве, которые можно использовать для вырезания данных из массива. Массив рулетки проходится обычным for оператором и отталкиваясь от значений, легко рисуются кнопки [<], [>], […] и [1], [2] и т.п..

Где взять:

CPANhttp://search.cpan.org/dist/WWW-Ruler/

GitHub репозитарий — https://github.com/Perlover/WWW-Ruler.git

CHI::Cascade — небольшое введение

Много месяцев у меня ушло на разработку этого модуля — CHI::Cascade. Теперь решил рассказать о нём здесь, в блоге, и о его концепции, чтобы те, кто испытывает в нём потребность, но ещё не знают о его существовании, подумали об его использовании. Итак, кэширование на основе зависимостей.

Концепция make

Вообщем, если вы программер, вам навярняка известна такая полезная утилита, как make. Вкратце — make получает файл с описаниями зависимостей и их командами, и выполняет только те команды shell, которые вычислены «для выполнения» на основе этих зависимостей. Это очень классная концепция, которую можно использовать как в программировании, так и для автоматизации работы в Unix. То есть, эта концепция зависимостей сводит к минимуму исполнение каких либо кодов/команд/скриптов для получения результата. Вообще, идеология «дерева» замечательная вещь, а если к этому приделать зависимости — что от чего зависит и как — то вообще это сила. Если что то мы изменили где-то в дереве, то перестраиваются те узлы, которые как либо зависимы, а остальное не трогается.

Концепция — кэш (cache)

Теперь о второй полезной вещи — кэше. Читать далее CHI::Cascade — небольшое введение

Визуализация графиков на JavaScript

Сегодня решил немножко «пробить» вопрос визуализации на JavaScript разного рода графиков. Самые лучшие графики получаются средствами HTML5 и её расширением SVG. Также нашёл отличный пост про 20 библиотек визуализации. Вот ссылка на тот пост:

http://sixrevisions.com/javascript/20-fresh-javascript-data-visualization-libraries/

А также вот сам несколько демок разных библиотек. И всё это без всякого Flash, работает в Firefox! 🙂

http://www.highcharts.com/demo/
http://www.highcharts.com/stock/demo/

И ещё классную библиотечку нашёл сейчас — http://raphaeljs.com/ — там даже есть 3D шутер, типа Quake 🙂

Перед началом использования какой либо библиотеки обратите внимание на лицензии — тема новая, инструментов мало, и сильно коммерцианализирована. Многие разработчики дают free версии только как Demo. Простой пример такой библиотеки — http://wijmo.com/demos/

Несколько полезных jQuery модулей от Odyniec

Сегодня посмотрел страничку одного разработчика по ник — имени Odyniec. Очень понравились его разработки. Спешу поделиться с вами 🙂

  • imgAreaSelect — jQuery плугин для кропинга (cropping images) картинок (точнее, выделение области — кропинг делайте сами ;-)) — (пример)
  • imgZoom — Красивое листание картинок с анимацией, ротацией и приближением из далека (пример)
  • selectListмультивыборочный select лист, показывающий выбранные опции отдельно с возможностью легкого их удаления (пример)

Также, автор написал несколько полезных статей по CSS (как создать «деревья», «табы»)

Также, автор написал несколько модулей на perl для Dancer (его сайт также работает под Dancer): Dancer::Plugin::DebugToolbar, Dancer::Plugin::DirectoryView

Немного о супер направлениях в Web на Perl

Немогу не поделиться своими выводами об изучении нескольких новых технологий в Perl и в Web программировании. Немного предистории.

Я сам программирую динамические веб сайты (CGI) только на Perl. Никогда не использовал PHP. Это не только потому, что я фанат Perl, но и дань эффективности — под Perl много модулей, много возможностей, и при грамотном подходе сайты на Perl будут работать быстрее PHP — ведь Perl код после компиляции хранится в памяти в виде байт кода (типа «Пи кода» кода в Pascal). А если знаешь Perl, то и разработка может идти гораздо быстрее. Читать далее Немного о супер направлениях в Web на Perl

Firefox 5.* — обновлённые плагины…

Уже после написания этой заметки нашел более подходящий способ запуска несовместимых Add-ons — читайте здесь.

Вместе с Firefox 5 перестали работать некоторые мои любимые плагины. Я постарался оперативно обновить их и выложил у себя на блоге, так как авторы этих Add-ons не спешат их обновлять для Firefox 5.*. Я взял оригинальные версии и только подправил файлики install.rdf, где указал любую максимальную версию. Вот эти расширения (мои патченные файлы — внутри статеек):

  • Copy All Urls (копирует в буфер линки открытых табов, а также открывает табы с линками из буфера)
  • Copy Plain Text (копирование текста без аттрибутов форматирования, нужен для Auto Copy — очень хорошая «связка» плагинов для оптимизации работы с web страницами)

Прикрутил AddThis и Twitter

Прилепил на блог AddThis и Twitter. AddThis — штука для простого «расшаривания» страниц моего блога (то есть для тех, кто хочет поделиться УРЛ-ом моих страниц через какую либо социальную сеть, или даже просто добавить в закладки). Twitterмоя лента сообщений на Твиттере, которую веду уже несколько недель — в ней я буду пописывать то, что будет маловато для блога. Вы, имея Twitter аккаунт, можете оставлять отклики у себя, для самых интересных которых я сделаю ретвит 🙂

Да, чуть не забыл! Заголовки новых статей блога транслируются в Twitter аккаунт. Поэтому, подписавшись на мой твитт (став фолловером), вы оперативно узнаете о чем-то новом у меня на блоге. Постараюсь скоро написать о Твиттере более подробно.

Еще немного о Roboform и LastPass

Написал мне недавно суппорт, что они таки устранили баг, о котором я так долго писал! Надо же… Предложили мне протестировать новую версию (7.1.2). Но я так долго ждал (реально баг есть более года, но последний штурм на саппорт я осуществлял в августе 2010), что это мне надоело, терпеть, пока Firefox тормозит и зависает на сайтах с JavaScript, что удалил я этот косячный плагин, тем более, что 7-ая версия (в которой и устранен этот баг) для пользователей 6-ой версии снова стала платной (тут кстати, если помыслить, становится понятно, почему они так тянули с исправлением и исправили во вновь ставшей платной версии…). Теперь я перешел на LastPass Читать далее Еще немного о Roboform и LastPass

Google 500 Server Error

Впервые в жизни увидел, как сервис Google (Google Webmaster Tools) выдавал мне несколько раз 500-ую ошибку сервера. Для тех, кто не знает что это — это ошибка, когда на стороне сервера программа выполняет ошибку и документ не может быть сформирован. Другими словами, Google Webmaster Tools сбоит на уровне сервера, то есть где-то там, в глубине «датацентров» Гугля программисты что-то где-то накосячили. Я такого раньше не видел — сырые программы, они видимо, тщательно оттачивают перед размещением их «для всех». А тут вот за день (6 августа 2010) — 5 или 6 раз, и всегда в том месте, когда я «авторизую» свой сайт при добавлении в сервис. Это говорит о том, что даже такой крупный гигант, как Гугль, иногда делает ляпы 😉
Скриншот прилагается 🙂

500 Internal Server Error of Google