Bitcoin — описание для программеров и админов

У меня вчера прошла Биткойн пати. Кто знает, тот в курсе, о чём я 🙂 Теперь надо бы как-то описать некоторые моменты Биткойна с точки зрения понимания человека, который как либо косвенно связан с программированием и администрированием. Итак, попробую Читать далее Bitcoin — описание для программеров и админов

Новый модуль — 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 — небольшое введение

Cygwin — очень полезная штука под Windows!

Недавно открыл для себя такую классную вещь, как Cygwin!

Если вкратце — то это почти полноценный набор всех утилит, что есть под Unix, но под Windows системой. Лично для меня полезными оказались такие утилиты, как: bash & rsync. Первый позволяет использовать всю мощь shell команд, но под Windows, второй — с легкостью делать синхронизацию и резервирование.

Ранее для синхронизации я использовал Good Sync, но сейчас решил отказаться от него Читать далее Cygwin — очень полезная штука под Windows!

Визуализация графиков на 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/

Цитаты о языке Perl

«Perl — это единственный язык, программы на котором выглядят одинаково до и после RSA-шифрования.»

Keith Bostic. Программист, создатель Sleepycat, конрибьютор BSD.

«PHP — это малое зло, созданное некомпетентными любителями, а Perl — это громадное и хитроумное зло, созданное опытными и извращёнными профессионалами.»

Jon Ribbens. Программист.

Цитаты предоставлены любителем языка Lua (для которого цитаты ещё не придуманы кем либо). Может быть хотите стать первыми?

Perl — создание дистрибутива

Как приятно, когда кому то надо то, о чём ты пишешь. Вот решил исправить ситуацию и продолжить цикл своих статеек по perl. На этот раз про создание дистрибутива perl проекта.

Итак, с чего же начать создание Perl дистрибутива своего проекта?

Для начала, давайте рассмотрим общие принципы построение дистрибутива на Perl. Читать далее Perl — создание дистрибутива

Почему они называются I18N и L10n?

Ух, давно не писал я в свой блог. Решил немного встряхнуть его этим мелким постом 😉

Итак, в мире программирования есть такие два понятия — I18N и L10N. Это абревиатуры Internationalization и Localization соотвественно. Но что за цифры в них? Я очень долго не знал ответа на этот вопрос и он меня иногда пугал. Я даже как то думал, что по началу интернационализация в Unix была сделана для 18-ти языков, и от туда название…

Но оказалось всё ещё проще. Чтобы не писать Internationalization, решили сократить — оставили первую и последнюю буквы, а цифры соответствуют количеству букв между ними, которые убрали из-за сокращения. То же и Localization — между ‘L’ и ‘N’ идёт 10 букв. Вот так всё оказывается просто получилось…

Perl: DBI & MySQL — авто реконнект (reconnect)

Если вы программист на Perl и работаете с MySQL, то вот вам совет, как обеспечить коннект к серверу, и в тоже время, обеспечить себе легкую жизнь. Ведь если истечёт таймаут при работе с сервером, $dbh (database handle) будет не актуальным и выдаст ошибку. Особенно это актуально тогда, когда ваша программа работает с MySQL, и в то же время выполняет другие длительные операции, время которых может превысить таймаут-значение (connect timeout) MySQL. В такой ситуации ваш handle будет не актуальным.

Решение есть. Но в то же время есть ещё одна тонкость. DBB::mysql драйвер имеет опцию автореконнекта (mysql_auto_reconnect) и будет следить за актальностью handle и при случае переконнектится. Но вот что делать с коммандами, которые иногда надо выполнить сразу после коннекта, например SET NAMES ‘utf8’;SET CHARACTER SET ‘utf8’ ? И тут есть решение! Хотя найти его не всегда легко в интернет 🙂

Вообщем, вот код для коннекта из под Perl к MySQL так, чтобы всё работало пучком:

$dbh = DBI->connect( "dbi:mysql:database=database_name;mysql_client_found_rows=1;mysql_enable_utf8=1;mysql_socket=/socket_of_mysql", 'user', 'password',
    {
	RaiseError		=> 1,
	AutoCommit		=> 1,
	mysql_multi_statements	=> 1,
	mysql_init_command	=> q{SET NAMES 'utf8';SET CHARACTER SET 'utf8'}
    } ) or die "Cannot connect";
$dbh->{mysql_auto_reconnect} = 1;

Код проверен мною и тщательно протестирован