Monthly Archives: Январь 2007

Perl, DBI, utf8

Решил написать скриптик генерации статического контента по базе данных, содержащей каталог картинок и текстов. Так сказать, заменить серверный движок оным генератором. Руками делать страницы — неблагодарное занятие в силу необходимости сгенерить большое количество междустраничных ссылок и т.д. и т.п.

Имевшийся готовый генератор html-галереи не подошел, потому что не умел коллекционировать теги и генерировать по ним тематические каталоги.

Поскольку требовалось сделать страницы в кодировке Windows (cp1251), то лучше всего и быстрее всего было бы сделать это на Visual FoxPro — потому что базу проектировать и пополнять удобно. А писать еще и интерфейс для ввода данных мне лень.

Но лицензионного VFP у меня нету (Windows, если поискать, найдется).

Первая приходящая на ум альтернатива — HSQLDB. Но уж больно она аскетична, да и не очень хочется на J2SE писать, для такого Perl больше подходит. И обратились мои взоры к хорошо знакомому MySQL 5, для которого имеется опять-таки свободный phpMyAdmin, который я и намерен использовать для ввода данных. А при необходимости в базе MySQL и файлы можно хранить будет (бэкапить все это хозяйство одним файлом проще).
Забил немного тестовых данных. Как и положено правильному юзеру, все таблицы в базе — в utf8.

Оказывается, Perl не понимает utf8. Задница.

Исследования показали, что в последние несколько месяцев сия проблема активно решалась, однако часть юзеров мигрировала на PostgreSQL, DBD-драйвер которого имел кривую, но работающую поддержку UTF.

Поставил свеженький драйвер DBI:mysql. Нашел. как это должно выглядеть в коде. Примерно так.


#!/usr/bin/perl
...
use DBI;
use encoding 'utf8';
...
$dbh = DBI->connect("DBI:mysql:$database:$hostname",$user, $password);
open(FL, "> catalog.html") || die "Can't open file \n";
binmode(FL, ":utf8");
print FL <<EOF;
абвгдеё\n
123456\n
EOF
$dbh->do("set character set utf8");
$dbh->do("set names utf8");
$statement="select * from tag";
$sth = $dbh->prepare($statement) or die "Can't prepare $statement: $dbh->errstr\n";
$rv = $sth->execute or die "can't execute the query: $sth->errstr";
while(@row = $sth->fetchrow_array) {
print FL "$row[0] $row[1]\n";
}
$sth->finish;
close FL;

Вот без SET NAMES — не работает.

Ну хорошо, хоть так.

1 комментарий

Filed under DBMS, design, drivers, internet, MySQL, Perl

Перерывы надо программировать

Workrave

Вот такая очень мотивирующая софтина. Программирует мини-перерывы, перерывы на чай/кофе и вообще полный рабочий день сидения за компьютером!

Очень полезно. Читайте СанПиН и программируйте свой отдых.

Скриншот демонстрирует не то, что вы подумали, а одно из упражнений для отдыха…

Более всего радует опенсорс и кроссплатформенность софтины.

Оставьте комментарий

Filed under Linux, opensource, organizer, PIM, Windows

Оптимизаторам

Иди в баню, оптимизатор

Оставьте комментарий

Filed under плакат, SEO

Ждем солярку.

Заказал диск с Solaris 10 — ждем-с.

Впечатления будут здесь.

3 комментария

Filed under Java, Solaris, Sun

Про коллективно создаваемый вебдваноль.

Это был просто мой коммент к случайно найденной мысли в блоге. Дописав, решил запостить себе.

Все это очень спорно.
Огромное количество информации бесполезно в силу своей огромности.
Поисковики — да, это должно рулить.
Агрегаторы и т.д. и т.п. — сильно сомневаюсь.
Невозможно “носить с собой” горы информации. Надо иметь базовые знания, алгоритмы, и “средства получения ответов на постоянно возникающие вопросы”. А не нереальных размеров библиотеку (к тому же с непонятным уровнем доверия к информации, написанной тысячами неизвестных авторов).

1 комментарий

Filed under blogs, internet, web, web20

Сумасшедшая популярность Берковой

Более всего поражают индивидуумы, которые умудряются перелопатить по запросу «голая Беркова» всю выдачу поисковиков. Например, на сайтике, где голая Беркова употребляется в совершенно специальном контексте SEO, регулярно наблюдаются посетители по этому запросу 🙂 А на каком месте сайт в выдаче, мне даже смотреть лень 🙂

Читать далее

Оставьте комментарий

Filed under Беркова, порно, internet, SEO, web

TrueCrypt для Linux наконец работает

Не поленился, скачал-таки и разархивировал исходники kernel-source для Ubuntu EdgyEft.

Ибо из-за отсутствия единственного файла dm.h TrueCrypt не желал компилить модуль для ядра. Без этого модуля он собирается, умеет делать контейнер, но не умеет монтировать его.

Пришлось сорок минут ждать, пока на гигабайте памяти на P4 2800MHz скомпилятся модули ядра. Хорошо еще, само ядро не компилилось.

Но в итоге я имею превосходную программу, совместимую с виндозной версией. Для шифрования только в линуксе отлично подходит модуль cryptoloop, о котором я уже писал, а вот для изготовления переносимых шифрованных контейнеров (для переносимости надо использовать FAT) рационально будет использовать TryeCrypt.

Респект truecrypt.org !

Оставьте комментарий

Filed under AES, crypto, drivers, Linux, opensource, Ubuntu, Windows