Программирование

Синхронизация комментариев ЖЖ->MovableType

У меня уже более полугода работает скрипт синхронизации комментариев из ЖЖ в MovableType. Мне тут даже попеняли, что не делюсь с народом...

За полгода он никаких значимых проблем не создал, работает, а значит можно и опубликовать и даже версию 1.0 присвоить:

ljcomments2mt-1.0.tar.gz

Копия Readme прилагается.

Сложно даже найти подходящие слова....

... приличествующие анонсу двух ссылок:

Debian OpenSSL Predictable PRNG Toys
Исходное сообщение в DSA: DSA-1571-1 openssl -- predictable random number generator
Удивительный подход: ради ублажения Purify взяли и убрали две нужных (жизненно необходимых!) строчки.

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

Очередная нечистая сила в FreeBSD7

Расшиб себе лоб об семерку в очередной раз. Хочу поставить систему на gmirror, делаю по прописям в Handbook: поставить на отдельный диск, сделать зеркало на другом, переписать туда поставленное, исходный диск добавить в зеркало.

На FreeBSD-7.0-RELEASE/amd64 команда dump 0Luaf /dev/null / работает отлично. А если вместо /dev/null сделать пайп или просто файл на диске (не на / !), то прочитав мегабайт 50-100 оно просто останавливается и стоит.

Апгрейд до -STABLE проблему полностью излечивает, а так я и диски менял и систему после этого переставлял, полдня потратил зря.

Ну и кто они после этого?

CUDA 2.0 (beta)

Не прислав мне никакого уведомления (хотя раньше присылали), NVidia выпустила CUDA 2.0 beta.

Вообще, и анонс в форуме довольно куцый, складывается впечатление, что по политическим причинам попросили выкатить то, что есть прямо сейчас.

Из важного

  • Поддержка Vista (32 и 64 бита);
  • Нет поддержки GeForce 9800GTX (вышедшей на пару недель раньше этой беты), что довольно странно.
  • С двойной точностью какая-то непонятная совсем история:
    1. В CuBLAS она заявлена в документации, символы в библиотеке имеются (собирать еще ничего не пробовал).
    2. В документации (programming guide) слово double встречается 8 раз (на 99 страниц текста), что как-то безобразно мало.
    3. Времена вычислений для double в соответствующей секции не описаны (но я подозреваю, что они другие, чем у float).
    4. Таблица с описанием double-функций (на которую есть указание в тексте) - отсутствует.
    Другими словами, работы ведутся и довольно скоро все может появиться.
Да, dgemm я, естественно, в ближайшие дни попробую опробовать. Интересно же.

LibRaw - англоязычный сайт

Открылся LibRaw.org - англоязычный сайт LibRaw.

Содержание сейчас практически полностью эквивалентно русской версии, но со временем конечно разойдется (по форумам, по статьям).

Анонсирую тут с единственной целью - если кто-то постил ссылочки на русский вариант в англоязычные списки рассылки, то перепостите пожалуйста английский вариант.

LibRaw: все, что вы хотели прочитать из raw, но боялись

Спешу обрадовать народы мира: проект, над которым последние два месяца мы работали совместно с Ильей Боргом наконец выпущен на публику.

LibRaw - библиотека для чтения raw-файлов:

  • чтение (распаковка, раскодирование) неинтерполированых RAW-данных из файлов от 300 моделей цифровых фотокамер
  • основана на исходных текстах dcraw
  • громадье планов по избавлению от недостатков dcraw, небольшая часть которых уже выполнена

Drupal и PostgreSQL

Попытка использовать Drupal совместно с PostgreSQL 8.3 с грохотом провалилась. Основная функциональность работает, но стоит копнуть чуть глубже и налетаешь на проблемы. Например на эту, судя по переписке там ниже - проблема не только в блоках (ну и вообще, идея делать join по двум полям, одно числовое, а второе - какое-то, несколько потрясла)

Довольно печально, кстати, смотреть, как ошибка найденная 2 месяца назад - не поправлена, хотя с тех пор было 1 или 2 релиза.

Натыкался и на проблемы с форматом даты, при попытке поставить русский формат (DD.MM.YYYY) оно прямо в таком формате и в базу хочет записаться.

Еще про Drupal: словил невнятный подземный стук. Смена языка пользователем сначала работала, а потом почему-то перестала, работает только смена в системе в целом. В том же месте другие грабли: экспорт строк для перевода экспортирует только те строки, которые встречались системе при работе, нормального способа экспортировать все на свежеустановленной CMS - не нашел.

Резюме. Несмотря на то, что система мне очень понравилась, впечатление пионерской поделки временами перебивает все прочие.

Прогресс - зло!

Потерял полдня, прежде чем сложил все кубики в пирамидку (и то, не уверен что правильно).

Нужно: получить PHP5 с клиентом PosgreSQL (всякие прочие extensions на вырост), в виде апачевского модуля, все происходит под FreeBSD7.

  • Apache 1.3, все собираем из ports - не работает. SIGSEGV где-то внутри инициализации pthreads, хотя никому из участников эти threads нафиг не нужны и непонятно кто их приволок. /usr/local/bin/php - работает.
  • Apache 1.3, собираем PHP --with-pgsql - все работает, пока нет загружаемых extensions. Как только появляется хоть одно - падаем.
  • Apache 2.2, собираем все из ports - работает.
  • FreeBSD6 в этот раз не пробовал, но когда в прошлый раз пробовал - работало.

Получается, из-за скромненькой фигулинки всем проектам показан переезд под Apache2 ? И mod_perl2 ? А mod_perl2 небось тоже не работает ?

MySQL не предлагать. С Apache я совладаю как-нибудь, а два сервера баз данных в моей жизни - это уже перебор. Снести семерку тоже не предлагать, UFS2 на терабайтных FS - уже перебор.

А вот кому книжечек по вычметодам?

В рамках борьбы против захламленности квартиры, обнаружились книги, которые я много лет не читал и уже читать не буду:

books1.jpg
увеличить фото

Отдаются бесплатно т.е. даром первому обратившемуся. Но только все сразу, а не по одной штучке.

Москва, Коньково - Юго-Западная, пишите lexa@lexa.ru, договоримся.

Предложение действительно одну неделю: до вечера 4 апреля 2008, потом вынесу.

Update: все забрали!

Нечистая сила! FreeBSD 7 тоже больно бьется

Продолжаем про острые углы.

Очень больно ударился об FreeBSD 7-STABLE на amd64, точнее об ейный компилятор C++.

Собирал buildworld 29-го февраля, с виду все как обычно. Однако часть собираемых на этой системе бинарников (наших, C/C++, никакого экстремизма) работает странно:

  • один падает на ровном месте (не всегда, но есть test case), если отнести его на другую машину - продолжает падать. А если взять с другой машины (собранный там) и принести ко мне - все отлично работает;
  • другой не может создать файлик BerkeleyDB 4.x (создав перед этим другой почти такой же). Аналогично, собранный на другой машине - у меня работает.
Полдня коту под хвост, правда биясь об эту проблему нашел еще ошибок в нашем новом варезе.

Сейчас опять делаю buildworld, если не поможет, то что, на 6.x откатываться ? А ZFS ?

Update

  1. бинарный апгрейд на 7.0-RELEASE amd64 - не помог;
  2. на 7.0-RELEASE 32bit - все отлично;
  3. порча наступает на db->open(filename,DB_CREATE|DB_TRUNCATE), при этом файл создается (!) но код ошибки ENOENT
Пошел пересаживаться на 7.0 32 бита.

Update 2. На 32 бита не пересел, обидно ведь! С Berkeley DB совладал, но не понимаю почему этой проблемы не было на gcc 3 :). С самопадающим - совладать не могу пока.

FreeBSD: UTF-8 russian collate (вторая попытка)

Несколько дней назад я опубликовал исходник LC_COLLATE для кодировки ru_RU.UTF-8 для использования в FreeBSD. Там же я обещал, что если понадобится не "универсальная" сортировка, а такая же, как в FreeBSD, то сделаю и ее, а обещания нужно выполнять.

Помимо этого, старый вариант не имел вообще никаких шансов попасть в FreeBSD (причины этого мне объяснил Андрей Чернов: нарушается FreeBSD-шное правило, что большие буквы отдельно, а маленькие - отдельно), а новый - такие шансы еще не потерял.

FreeBSD: ru_RU.UTF-8 LC_COLLATE

Несмотря на мой пессимизм относительно сортировки строк с многобайтными символами в FreeBSD, жизнь оказалась лучше, чем мне казалось.

Наш читатель, Александр Загребин, любезно поделился исходником locale LC_COLLATE для FreeBSD, который лечит проблему сортировок для ru_RU.UTF-8. Я немножко поправил Makefile, чтобы результат ставился прямо поверх системного файла, выкладываю (с согласия автора, естественно) это для всеобщего использования:

Update
Я сделал работу над ошибками, обновленный вариант (с тем же URL) и комментарии к нему берите здесь.

Граждане, не забывайте про -Wall

Как-то я даже удивился, ударившись примерно об такое вот:

// external.c:
float func() { return 1.0; }

// main.c
#include "stdio.h"
int main(void) {
  float val = func();
  printf("%f %f\n",val,func());
}
stdio не в тех кавычках т.к. иначе RSS испортится, а < не понимает красивый форматтер :)

Лечение проблем LC_COLLATE при использовании UTF-8 в PostgreSQL под FreeBSD

Как я уже писал, при использовании UTF-8 в PostgreSQL под FreeBSD результат больно бъется: сортировка русских букв неправильная (касается это только буквы ё). Причина - в кривой locale под FreeBSD (и Mac OS X).

Естественно, на эти грабли уже много раз наступали и для PostgreSQL 8.1 существуют патчи имени Palle Girgensohn, позволяющие использовать IBM-овскую библиотеку ICU в которой все сделано правильно для безумного количества языков.

Искусство программирования

Потихоньку ковыряю исходники dcraw

Жесть: после отпиливания (по живому, расстановкой #if 0 в почти произвольных местах) примерно 3/4 программы (из 8500 строчек осталось 2500), остаток продолжает довольно осмысленно работать. Не удивлюсь, если он регенерирует к утру.

Надо сказать, что особенности материала (а разобрать данные от 160 разных фотокамер - это не шутки) наложились на особенности стиля автора. Взять, например, детектирование конкретной модели цифровика Canon по ширине картинки.

Обожаю язык C++

cd STLport-5.1.5/build/test/unit
gmake -f gcc.mak all-static 2>build.error >build.log

Получаю одно (!) сообщение об ошибке, размер сообщения 795 килобайт.

Исходники CuBLAS/CuFFT

Программирующим на CUDA может быть интересно: NVidia начала раздавать исходники библиотек CUBLAS/CUFFT.

Я, правда, не очень понимаю статус этого дела:

  • С одной стороны, все выложено на девелоперском сайте, куда нужна регистрация (и говорят, что стоит большая очередь желающих оной регистрации, хотя меня в прошлом году зарегистрировали за один день).
  • С другой стороны, в девелоперской рассылке пришли ссылки на незапароленый сайт, бери кто хочет.
Посему, ссылки не публикую, если кому-то нужно и нет терпения ждать (со временем все попадает в полностью открытый доступ, всегда так было) - пишите лично.

А вот что точно открыто всем желающим, так это визуальный профайлер (beta) для той же CUDA. Пока не смотрел, руки не дошли.

Еще про nofollow в MovableType 4

Как мне тут справедливо указали, настройка "приделывать rel=nofollow к комментариям и трекбекам" не влияет на содержимое тега CommentAuthorIdentity

Пятиминутный просмотр исходников показал, что это бага в MovableType, в функции реализующей вышеуказанный тег просто пропустили одну строчку

Прилагаемый патч решает эту проблему. Естественно, после приложения патча нужно перебилдить все странички.

Вот и пригодился ProNet-овский аккаунт. Я через него засабмитил тикет, посмотрим чем кончится.

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

Update: из саппорта ответили "читайте документацию" (см. комментарии). И ведь они правы.

Postgresql 8.3b1 UTF conversion patch

Я уже писал (а потом писал еще), что, в силу многих причин, стандартное поведение PostgreSQL при конверсии из UTF-8 в однобайтовые русские кодировки меня не устраивает. Ну нельзя обижаться и ломаться в ситуации, когда мы, например, импортировали текст в кодировке windows-1251 с кавычками-лапками, а показать хотим его в KOI8-R, где кавычек-лапок нет.

Патч для версий 8.1.4-8.2 можно найти по ссылке выше. Для 8.3-beta1 он не подходит, поэтому пришлось сделать новый: postgres-8.3.b1-conversion.patch.gz

Это хак, правильность которого я обсуждать не желаю, ибо идеологически он неверен, но без него не работают старые приложения.

Статистика для блоггеров - 2

Как показывает статистика, наибольший интерес за прошедшую неделю вызвала запись про статистику:
blogstat2-1.png
Поэтому позволю себе привести еще примеров данных, получаемых после обвешивания всего прозрачными пикселями 1x1.

Pages

Subscribe to Программирование