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

Блюстители

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

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

Collapse )
nyaload

fuzzy search grep своими руками

Если нужно провести неточный поиск слова по большому файлу (напр. по дампу википедии), то самое простое - это сгенерить регулярное выражение со всеми нужными вариантами опечаток, и сунуть в хорошую библиотеку регулярных выражений ( стандартный grep - OK, PCRE/python.re - NOT OK ).

Например, слово WORD превращается в регулярку:
.ORD|ORD|W.RD|WRD|W.ORD|WO.D|WOD|WO.RD|WOR.|WOR|WOR.D

Если нужен поиск по UTF-8 файлу - то можно ускорить поиск, используя вместо точки и UTF8-локали - "[^\x80-\xbf][\x80-\xbf]*" и C-локаль.

Если нужен case-insensitive поиск - то при генерации регулярки вместо СЛОВО писать (С|с)(Л|л)(О|о)(В|в)(О|о). И вы сами определяете, что вы хотите - [iI] или [Iiı], ẞ или (ß|ẞ|SS|S-S|ss|SSS|SZ), ё или (е|ё).

Пример генератора, который генерирует регулярку для всех вариантов на расстоянии 1 по Левенштейну: https://gist.github.com/dobrokot/6150988
nyaload

всевышний генералитет выразил вулканическое недоумение

Появились клише "выразил озабоченность", "призвал выразить озабоченность", "выразил глубокую озабоченность" (expressed deep concern). Что это на самом деле означает - неясно, какие обязательства на себя берёт "выразившая озабоченность" организация, что она собирается сделать кроме как обозначить недовольство. Неясно, чем обычная озабоченность отличается от глубокой, а глубокая - от глубочайшей.
Может участникам диалога и ясно , но читающим новости - совсем не всегда (типа, "озабоченность Онищенко = запрет на импорт", а озабоченность других что значит?).

updated: есть книжка про дипломатический язык. http://users.livejournal.com/_winnie/387991.html?thread=5188247#t5188247