У меня вчера прошла Биткойн пати. Кто знает, тот в курсе, о чём я 🙂 Теперь надо бы как-то описать некоторые моменты Биткойна с точки зрения понимания человека, который как либо косвенно связан с программированием и администрированием. Итак, попробую Читать далее Bitcoin — описание для программеров и админов
Метка: Программирование
Нежность великана
Классное видео 🙂 Любителям техники понравится!
Новый модуль — WWW::Ruler
Сегодня разместил на CPAN свой второй open source модуль — WWW::Ruler. Не буду описывать то, как с ним работать. Напишу лишь краткое его представление.
WWW::Ruler помогает легко формировать рулетку стиля Google (её функционирование) , а также помогает программисту получить нужные смещения для обрезания массива данных. То есть, мы указываем модулю размер всего массива, что мы имеем (например сколько всего товаров в категории), количество элементов на одной странице (категория разбита на страницы), желаемое количество кнопок «рулетки» и номер текущей страницы, для которой надо показать релетку. Модуль формирует массив элементов рулетки и вычисляет start & end позиции в массиве, которые можно использовать для вырезания данных из массива. Массив рулетки проходится обычным for оператором и отталкиваясь от значений, легко рисуются кнопки [<], [>], […] и [1], [2] и т.п..
Где взять:
CPAN — http://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;
Код проверен мною и тщательно протестирован