2007

И снова (и снова) о вебе и кодировках русского языка

Примерно к 2001 году вопрос с кодировками для русскоязычных WWW-сайтов казался полностью решенным: все сколько-нибудь распространенные браузеры научились кодировке Windows-1251 и только ее можно было оставить на сайтах (выдавая правильный Content-Type)

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

Сейчас расцветает динамика, которую рисуют разными видами яваскрипта

Русская языка

Ехал в лифте в своем доме, читал новые правила пользования, много думал.

При поездке с собаками, входя и выходя из кабины, держите ее за ошейник.

Ну и трогательное "Кнопка «Стоп» (при ее наличии) служит для..."

Умножение матриц, серия 2: MKL против компилятора, single/double и int

Продолжаем умножать матрицы. Для начала смоделируем sgemm/dgemm: C=alpha*A*B+beta*C

Нас интересует, естественно, самый быстрый способ из изученных ранее, а вопрос заключается в разнице в скорости между float и double и разницы в скорости между простым кодом, написанным вручную, и библиотечной реализацией.

Пересчет Google PageRank: дата заморозки

Рассматривая результаты нового пересчета pagerank (не закончилось) - для каких страниц оно произошло, а для каких - нет, удалось довольно точно определить дату, на которую заморожено состояние интернета для пересчета.

PageRank пересчитали по состоянию на 13-16 ноября

 

О роли Яндекс.Каталога в Яндексе.Цитирования

Продолжение-дополнение предыдущей статьи:

О роли Яндекс.Каталога в Яндексе.Цитирования

В предыдущей статье осталась нераскрыта тема Яндекс.Каталога: повлияло ли наличие сайта в нем на изменение ТИЦ при декабрьском пересчете.

Пришлось написать отдельный текст на эту тему, наслаждайтесь

Яндекс.Цитирования сайтов рунета

Наваял очередную нетленку Яндекс.Цитирования сайтов рунета в 4-м квартале 2006 г - обзор изменений ТИЦ с октября по январь по ~200 тысячам сайтов. Основные выводы:
  • ТИЦ серьезно упал, примерно на четверть (если брать средние значения)
  • В наибольшей степени это коснулось сайтов с относительно высокими ТИЦ, если ТИЦ был более 100, то с вероятностью 85% он упал
  • Письма из поддержки Яндекса "тиц упал у некоторых сайтов" - это явное преуменьшение размеров проблемы
наслаждайтесь чтением

О перемножении матриц и прочих архитектурных заморочках

Осваиваю тут новую NUMA-архитектуру (пока не скажу какую, хотя многие уже в курсе). Хочется ее адекватно сравнивать с возможностями PC-CPU, т.е. опять гонять тесты. Начал с умножения матриц только на CPU.

Если оставить в стороне продвинутые алгоритмы Штрассена и Копперсмита с Виноградом, ограничившись классическим подходом с умножением "строка на столбец", то умножение матриц вполне прямолинейно: C(i,j) += A(i,k)+B(k,j) С другой стороны, входные матрицы могут быть транспонированы (одна или обе). При этом меняется pattern доступа к памяти, за счет чего ожидается некоторая разница в производительности.

Рассматривая результаты Linpack, я ожидал получить разницу между «плохим» и «хорошим» паттерном в разы. Результат превзошел все ожидания, получилась разница на полтора порядка.

Кросспост из MT в LJ

Продолжаем патчить MovableType.

Многим, вероятно, удобнее читать мои упражнения через френдленту ЖЖ. Следовательно, нужен кросспост туда. Коллективный разум предлагает два решения:

  • ljcrosspost — сделан неудобно, предполагает публикацию через выполнение тега, что означает перепубликацию при любой перевыкатке отдельных статей. Не понравилось.
  • MTLJpost сделан более человечно, публикация происходит при нажатии кнопки Save в редакторе т.е. вместе с trackback pings, нотификациями блог-поисков и еще один RPC call погоды не сделает.
Берем и ставим второй. Выясняется:
  1. Машинка глючит, если нет картинки (юзерпика), соответствующего категории. Но править это соответствие после каждого редактирования категорий - мучительно.
  2. Не хватает пары мелочей:
    • постинга тегов в ЖЖ
    • запрещения комментариев (с комментариями хочется всех загнать к себе)
Впрочем, пять минут работы напильником и готов очередной патч. Этот патч:
  1. Передает в ЖЖ теги
  2. Чуть лучше разбирается с ситуацией, когда не найден юзерпик
  3. запрещает комментарии.
Если запрещение комментирования не нужно, то из патча нужно удалить строчку
+   $lj->Setprop_nocomments($event,1);
upd: после ряда экспериментов, я матчинг юзерпика и категории вообще убрал нафиг. Странное оно и дикое

Темплейты MovableType

Меняя, в очередной раз, много темплейтов MT, задумался об более человечной их структуре.

Я уже писал, что темплейты MT расчитаны скорее на секретаршу, чем на программистов продвинутых пользователей. В то же время, позиционируется MT на продвинутый рынок. Даже возможность прицепить к блогу весь набор темплейтов одним движением руки уже сильно бы полечила, появились бы генераторы темплейтов на препроцессоре и т.п.

На мой вкус, человеческая темплейтная система должна строиться от других принципов:

  • Нужны layout-темплейты. Т.е. задание структуры (количество колонок, их состав и пр.) и общих по всему блогу элементов (header, footer, навигация) в одном месте. Конечно, в сложных случаях layout-ов будет много, но почти гарантированно один layout распространяется больше чем на одну страницу. Редактировать одно и то же в нескольких местах - глупо.
  • Нужны блоковые темплейты. Очевидный пример блока - это представление первых строк записи в индексах. Оно повторяется во всех архивах, в результатах поиска и так далее. Редактировать такую кучу мест - не менее глупо, чем править заголовки по всему блогу

Русификация MovableType

Русификация MovableType состоит из таких шагов
  1. Русификация дат
  2. Русификация имен файлов для dirify
  3. Перевод темплейтов и системных сообщений
Первые два пункта требуют правок кода, каковые правки и были сделаны. Все действия производились над MovableType 3.33

Pages