Category: литература

Category was added automatically. Read all entries about "литература".

nyaload

Все течет, все меняется

Тонкая ошибка в такой схеме базы данных про книги и их авторов:


таблица 1: id книжки (ключ) | список id авторов книги | название книжки

таблица 2: id автора (ключ) | имя автора

Суть ошибки:
при изменении имени автора мы
* либо заводим новый id и теряем информацию что это тот же автор старых книг,
* либо же мы теряем старое имя автора, и имя автора на реальной бумажной книге перестает совпадать с именем автора в базе данных.

--------------------------------------------------------------
Никогда-никогда-никогда-никогда не буду больше использовать доставку EMS россии. Единственное что там лучше чем Почта России - это хорошая поддержка по телефону.

В остальном - тоже самое, заполнять паспортные данные и свой адрес при вручении посылки, а чуть что-то нестандартное с посылкой - необходимо ехать в офис, который сильно дальше чем ближайшее отделение обычной почты. Если в 8 утра не ответил на единственный звонок от курьера - считается, что "вручить не удалось"

--------------------------------------------------------------

А ещё я почти научился фотореалистичным срисовкам (на фото сверху IRL натюрморт, на экране снизу - срисованное):
Collapse )
nyaload

π++

в С++ нет числа π в стандартной библиотеке. M_PI/_USE_MATH_DEFINES зачем-то сломали в g++ при использовании -std=c++11, а взамен ничего не предложили.

http://stackoverflow.com/questions/1727881/how-to-use-the-pi-constant-in-c

В результате проще в каждом cpp файле копипастить строчку «const double pi = 3.14159265358979323846;» (или «constexpr auto pi = 3.14159265358979323846» в c++11, или acos(-1) вместо константы).

--------------
PS. этот пост дубликат предыдущего, предыдущий я удалил из-за этого бага. Уже оставленные чужие коментарии достал из почты, скопирую в комментарии.
nyaload

(no subject)

Скрипт youtube-dl скачивания видео с ютуба (youtube-dl-2015.08.23.tar.gz) - занимает несколько мегабайт питоньего кода. Одноминутный поверхостный вгзляд показал, что это в основном рукописный осмысленный код, а не кодогенерация. Из которых около мегабайта - относится именно к ютубу (и ещё пара мегабайт - библиотека для парсинга других видео-хостингов).

Мегабайты кода на питоне - это как-то овер-дохрена, это несколько человеколет. Ради скачивания видероликов (с разнообразными опциями, типа выбора языка субтитров, качества видео, и вызовом тулзов пост-процессинга видео для пережатия в другие форматы).
Среди файликов - ./jsinterp.py, на 12 килобайт (парсящий регулярками и исполняющий маленькое подмножество javascript).
nyaload

binary search

В книге "жемчужины программирования" сообщается, что невозможно написать binary search с первого раза.

На самом деле его невозможно написать с первого раза, если не осознаешь что такое инвариант цикла. Если осознаёшь - то скорее всего запросто напишешь (я вот уже в третий раз за год написал).

Если не осознаёшь инвариант цикла, то с большой вероятностью будет одна из ошибок:

* mid = (lo+hi)/2 или hi/2+lo/2 ? (и нет, дело не в overflow, эти формулы просто разные (1+3)/2 != 1/2 + 3/2 ).Collapse )

Как писать двоичный поиск чтобы он не бажил:
* Выбрать инвариант "если искомый элемент существует, то он в [lo, hi)", изначально выбрать lo,hi = 0, N.
* mid = lo+(hi-lo)/2 (при этом для кода верно утверждение "промежуток длиннее 1 всегда укоротится").
* Если ищем первый среди равных - то сравнение выглядит как key<=array[mid-1], если последний - key<array[mid]
* в зависимости от сравнения присваиваем mid в lo или hi (в любом случае, не mid-1).



Двоичный поиск для равномерно распределённых ключей (хешей) ускоряется простым хаком "для каждого из 65536 двубайтовых префиксов запомнить, где он начинается", это убирает 16 начальных итераций.Collapse )
nyaload

suffix array sort

Как следует разобрался в алгоритме сортировки суффиксов. Написал более-менее читабельную и не сильно тормозящую функцию (легко переписывается на C). https://gist.github.com/dobrokot/ed1ae766ee6d90e50540

суффиксов
а суффиксов
в
вка суффиксов
иксов
ировка суффиксов
ка суффиксов
ксов
ов
овка суффиксов
ортировка суффиксов
ровка суффиксов
ртировка суффиксов
сов
сортировка суффиксов
суффиксов
тировка суффиксов
уффиксов
фиксов
ффиксов
nyaload

Температура возгорания бумаги - 230°C (451° по Фаренгейту)

Сейчас я вам представлю доказательства того, что температура самовоспламенения бумаги - 230 градусов (или 451° по Фаренгейту), плюс-минус 10°.

ссылка 1) Информация с английской вики: http://en.wikipedia.org/wiki/Autoignition_temperature#cite_note-8
Скриншот: http://dobrokot.ru/pics/i2014-07-08__01-52-26_27kb.png

ссылка 2) А. Я. Корольченко, Д. А. Корольченко Пожаровзрывоопасность веществ и материалов и средства их тушения
Книга - http://dwg.ru/dnl/9002 , скриншот нужной страницы http://dobrokot.ru/pics/i2014-07-08__01-51-02_133kb.png

ссылка 3)
http://www.tcforensic.com.au/docs/article10.html#2.1 — Австралийский журнал «Firepoint». Physical constants for investigators, см. "paper"

Поверили? Справочники и английская вики - надёжный источник? На название романа я не ссылаюсь, это художественная литература. А вот справочники и википедия врать не должны.

Update: у меня духовка греет только до 250°C (правда, не знаю как это проверить). У кого-нибудь есть, которая греет сильней чем 250, но заведомо меньше 400?
nyaload

localtime

Как отобразить timestamp в структуру год/месяц/дни/часы/день недели в многопоточном сервере с большим RPS?

Код вида setenv("TZ", ...) ; tzset(); localtime_r(&ts, &time_struct) работает со скоростью 50'000 в секунду, наверное требует мьютекса, и открывает файлы типа /usr/share/zoneinfo/Asia/Omsk, может портить поведение чужих библиотек, которые ожидает локальное время сервера, а не рандомную таймзону.

Пример тормозящего кода: https://gist.github.com/dobrokot/9259351
nyaload

Обход ограничения 32-бит

Файрфокс выпустил ещё одно щупальце, и преодолел 32-битный барьер:


( http://dobrokot.ru/pics/i2013-09-17__23-12-22_11kb.png )

Получилось неспециально, просто открыл много вкладок с ютубом/твиттером/жж. Файрфокс при этом не упал, молодец, просто начал рисовать половину html-элементов черным цветом, и где-то минут 10 я так и браузил.

Лет пять назад читал книжку Криса Касперски про оптимизацию памяти. Он там писал, что если нужно завести массив на 4 миллиарда счетчиков (однопроходный radix sort) - то можно выделить такой массив при помощи нескольких процессов. При этом физическая память будет использоваться только для тех 4kb страничек, в которых есть счетчики . Интересно, он прикалывался или серьёзно писал.
nyaload

Блюстители

Наткнулся на комиксы, которые высмеивают текущие политические новости. Мне понравились, вот они, "блюстители", http://vk.com/blustiteli

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

Collapse )
nyaload

http 451 error

Код ошибки является отсылкой к роману Рэя Брэдбери «451 градус по Фаренгейту».

Сегодня воочию увидел её -