Февраль 2008

go.mail.ru ≠ yandex.ru ?

Принято считать, что поисковая выдача на Mail.ru и поисковая выдача Яндекса - это одно и то же (с точностью до региональных настроек, которые разные). И последние года два это было так с какой-то точностью.
При этом трафик с go.mail.ru и с Яндекса был сильно скоррелирован. Аудитория, конечно, заметно отличается, поэтому по конкретным запросам отношение частот переходов не вполне соответствовали общерунетовскому среднему 1:6 (или около того, отношение довольно быстро меняется в сторону mail.ru), но выдача, насколько я ее смотрел, была одинаковой.

В последнюю неделю ситуация кардинально изменилась, на картинке среднесуточный трафик на блог:

blog-weekavg.png
Mail.ru стало давать в разы больше трафика, чем Яндекс, причем всего по нескольким запросам. Удивительнее всего то, что в мейловой выдаче отсутствует очевидный лидер по этому запросу (и это не мой блог :).

При проверке по другим запросам - выдача одинаковая по средне- и низкочастотникам, но по некоторым высокочастотникам - отличается. Mail редактирует поисковые результаты по избранным запросам?

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()
...

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

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

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

Чудеса глобальной почты

Изучаю сайт usps.gov в части доставки в Россию. Нахожу там феноменальное:

Areas Served: All except Chaibucha, Yamsk, Garmanda, Gizhiga, Rep de Tchetchnya, Tachtoyamsk, and Verchniyi paren.
Ну ладно, простим им Чечню, хотя туда должно бы уже ходить. Но за что обижают Чайбуху, Ямск, Гарманду, Гижигу, Тахтоямск и Верхнего Парня ?

Начинаю разбираться. Выясняется, что все это - поселки в двух районах Магаданской области, Ольском и Северо-Эвенском. Но там еще МНОГО (по местным меркам) населенных пунктов (Северо-Эвенский район на Гугле).

Что, единственный почтальон в Эвенске согласен ездить в Тополовку, но не повезет iPod в Гижигу, которая ближе ? И мнение этого почтальона магическим образом преломилось и добралось до USPS ?

Большие, но по пять

Мучавшая меня проблема выбора между весом и качеством автофокуса счастливо разрешилась в пользу автофокуса. Оказалось невозможно устоять перед б-у в идеальном состоянии и больше чем на штуку дешевле магазинной цены. F6F70011.jpg

Надо сказать, что оно мне нравится:

  • Картинка хорошая. Я бы даже сказал, отличная.
  • Камера гораздо легче, чем цифровые единички прошлых серий, при этом вполне ухватистая. Конечно, хотелось бы еще легче, но по прикидкам, выездной комплект будет легче на кило или около того.
  • 10 кадров в секунду, 7 кадров в серии брекетинга и почти правильное управление подъемом зеркала - это новые забавные возможности для HDR/super-resolution и подобных упражнений. Хотя варез для этого, возможно, придется и самому писать.

P.S. Запасных батарей за разумные деньги в москве нет, едут с ebay.

P.P.S. Цитата из доки: "В данной Инструкции под термином «SD-карта» понимается карта памяти типа SD".

Больно ударился об UTF-8

Уже много лет я насаждаю UTF-8 как кодировку хранения всяких текстов. С переменным успехом, но большинство баз данных в округе - вроде перевел. На третий день Зоркому Глазу подсказали, что в доме нету пары стен.

Берем русские тексты с буквой ё. Да, их немного, но они есть. Заливаем в Postgresql, начинаем сортировать и делать всякие прочие upper/lower преобразования. Видим... плохое видим:

lexa=# SELECT * from aa order by bb;
 bb
----
 еа
 ее
 ея
 её
(4 rows)

При этом, если база в кодировке KOI8 (попробовал) или cp1251 (не пробовал, но должно быть так же), то все отлично.

Причина выяснилась, оказалась банальной:

$ uname -v
FreeBSD 6.2-RELEASE-p9
$ ls -l /usr/share/locale/ru_RU.UTF-8/LC_COLLATE
lrwxr-xr-x  1 root  wheel  28 Dec  3 23:30 /usr/share/locale/ru_RU.UTF-8/
LC_COLLATE -> ../la_LN.US-ASCII/LC_COLLATE

Надо сказать, что такого свинства в 21-м веке я как-то не ожидал.

Да, чтобы два раза не вставать. В Леопарде локаль такая же

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

Потихоньку ковыряю исходники 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 килобайт.

CUDA для Mac

Вышла бета версия NVidia CUDA for Mac OS X. На удивление, сразу в публичный доступ, через девелоперский сайт прогонять не стали.

Естественно, требует Мака с видеокартой NVidia 8xxx. Менее естественно, но требует Leopard 10.5.2 и установленного Leopard Graphic Update. Так как все это у меня было, я слегка поигрался.

Выводы:

  • Все примеры вроде работают.
  • 8600M - довольно медленная карта, разница в скорости в сравнении с 8800GTX от двух до восьми раз, чем лучше сделано приложение, тем больше разница. И если простые потоковые вычисления очевидно имеет смысл тащить на видеокарту, то с чем-то более сложным уже не факт. Например, пример historgram256 работает на CPU быстрее, чем на видеокарте (790Mb/sec против 850. 8800GTX считает ту же гистограмму со скоростью 5.4Gb/sec).
  • 128 мегабайт видеопамяти - это очень мало. Для тех же примеров с гистограммами пришлось размер данных уменьшать со 100 мегабайт до 20. Если вспомнить, что одна из идей была - перенести процессинг графики на видео, а 20-мегапиксельный файл - это 80 мегабайт, то становится немного грустно.

Pages