2008

О сортировке (Ужасы Программирования - 2)

В комментариях к предыдущей записи Влад Шабанов предложил, казалось бы, отличное решение для лексикографической сортировки 8-байтных ключей (функция сравнения для qsort()):

#include "sys/endian.h";
int cmp(const void *d1,const void *d2)
{
    uint64_t a1 = be64toh(* ((uint64_t *)d1));
    uint64_t a2 = be64toh(* ((uint64_t *)d2));
    return (a1  > a2) - (a1 < a2);
}

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

Ужасы программирования

Сортирую записи по 8-байтным ключам в byte order (не в numeric). Записей много (сотни миллионов). Оказывается, сравнивать ключи надо так:

    unsigned char *p1 = (unsigned char *)d1;
    unsigned char *p2 = (unsigned char *)d2;
#define CMP(i) if(p1[i]!=p2[i]) return p1[i]-p2[i]
    CMP(0); CMP(1); CMP(2); CMP(3); CMP(4);CMP(5); CMP(6); CMP(7);
    return 0;
#undef CMP

А банальный memcmp/__builtin_memcmp оказывается в 2.2 раза медленнее на общее время исполнения qsort(), во сколько раз различается сравнение - боюсь думать.

С numeric-сортировкой тоже весело, естественно наступил на (value2-value1) - это быстро и неверно (а верный вариант - получился не быстрее побайтового).

Прочитай книжку по фотошопу и получи левел-ап

oz_s.gif Я редко пишу в блог о прочитанных книжках, но для этой хочется сделать исключение, из общего ряда она довольно сильно выбивается:

Дочитал лежавшую с лета книжку Vincent Versace Welcome to Oz и всячески ее рекомендую к прочтению, несмотря на довольно двойственные впечатления, о которых ниже. Необходимо заметить, что в отличие от многих других фотошопных книжек, где примеры элементарные (в том смысле, что иллюстрируют один элемент) и понятны просто при взгляде на печатную картинку, у Versace примеры сложные и их необходимо проделать самостоятельно. Так в финальном примере я насчитал 63 слоя, правда 23 из них - вспомогательные, а формируют изображение "всего" 40.

Книжка - про активное применение локального редактирования. Конечно, почти каждое действие - глобальное (кривые, фильтры, channel mixer), но затем делается выпиливанием маски к слою, которое делается вручную, хотя и весьма быстро. Предлагаемая техника очень похожа на схемы черно-белой печати, как у Адамса в книжках и много у кого еще. Плюс фильтр Lighting Effects, который для меня был вовсе внове.
Получаемый результат крайне интересен, не говоря о (специально подобранных?) примерах, где из дерьма делается конфетка.

Еще про Amazon

Если кто еще не заметил, на американском Амазоне сейчас изрядная распродажа. Скажем, книжка, которую я весной купил на английском Амазоне за 26 фунтов - на американском сейчас стоит $29.69 (а весной стоила почти $50).

На этом фоне даже доставка UPS-ом (если не вылезать за 5000 рублей) получается вполне разумной, лишние 20-25 за доставку размазываются по большему количеству книг и в расчете на книгу получается почти то же, что и старой доброй USPS.

При этом UPS реально работает (но помните про 5000 рублей!), первую порцию из заказанного в понедельник я сегодня обрел, а остаток должен обрести через несколько дней (отправку тормозил продавец).

RED Scarlet/Epic

Что-то я недогоняю. Сенсор 6x17, 200 с хреном мегапикселей, 25 кадров в секунду и все это - за 55 штук? Это какой-то способ производства, который позволяет лепить сенсоры любого размера?

И при этом 6x6 или 6x7 нет, а есть только 645 (ну и меньшие размеры)

Я, собственно про это, по ссылке от Рейхмана

Анонимные мобильные телефоны?

В почтовом ящике нашлись конверты от компании TV-клуб в которых лежала всякая макулатура и МТС-овская симка (утверждается, что с 30-ю рублями на счету, пока не проверял). Смешно то, что тариф "один.ру", который я пытался сегодня на одном из имеющихся в доме телефонов включить и обломался.

Что-то я недогоняю, вроде у нас анонимные мабилы не разрешены, нужна копия паспорта и прочие 33 удовольствия? Получатели на конвертах указаны правильные, правда не все из них - совершеннолетние и паспортные.

UPDATE А хрен ли, засунул в мобило и все разузнал:

  • Симка натурально подключена и там натурально 30 рублей
  • Все сразу работает
  • Оно не онанимное, по мнению МТС-а владельцем является ООО ТВКлуб
Подозреваю, что через пару месяцев или даже раньше оно превратится в тыкву - если не прислать в этот ТВКлуб анкету. В январе проверю.

CHUD-ес не получилось

[Оглавление раздела Hackinthosh]

Попытка использовать в виртуальной машине Computer Hardware Understanding Developer Tools не удалась - не работает коллектор. Что, конечно, неудивительно, но обидно.

Придется продолжить профайлить на ноутбуке. А счастье было так близко....

MacOS X 10.5.5 в виртуальной машине

[Оглавление раздела Hackinthosh]

У меня оно как-то не получилось, и после нескольких попыток я бросил, а упорный канадский парень таки поставил iDeneb 10.5.5 под VMWare и выложил готовую машину. Взять torrent-файл можно тут (ну и на Демоноиде тоже лежит, на других трекерах тоже наверное появится), а дальше все как всегда.

На Core2Quad работает, да и вообще должно работать на SSE3 Intel без проблем, а что там с AMD - не знаю и не хочу знать пока.

Сеть пока не глючит, что есть достижение. Кроме того, апдейты с сайта Apple - ставятся и все продолжает работать.

Другими словами, рекомендую тем, кого раздражала невозможность поставить апдейты. Каких-то других причин перелезать c более старых 10.5.x под виртуальной машиной я не вижу.

Ну, за репрезентативность

В кулуарах Хайлоада представители Спайлога не стеснялись утверждать, что их тренды - репрезентативны, а глобальная статистика - хороша. Не хочется обижать хороших людей, но правда дороже.

Вот как выглядит верхушка топа поисковиков за октябрь по версии Spylog Тренды:

spylog-search.png

Эти данные неплохо согласуются с полной статистикой LiveInternet, но вот данные о поисковых фразах заставляют задуматься о репрезентативности всей конструкции.

Drupal + PostgreSQL + comment_subscribe

В моих правках к модулю Comment Subscribe для его работы с PostgreSQL обнаружилась бага: если кто-то отвечал в треде несколько раз, то он может получить несколько писем-уведомлений, когда ответит кто-то еще.

Pages