Наблюдение касаемо практической реализации идеи. Если отказаться от алюминиевого корпуса, его можно будет напечатать на 3D принтере. Берем одноплатник по вкусу, закупаемся на eBay LVDS-дисплеем и клавиатурой (или извлекаем из старых ненужных ноутбуков, коих у любого IT-шинка обычно несколько, ну или если не у него, то у его коллег), и вот уже почти готовый ноут.
Спасибо, интересно. Сам в свое время писал NIF'ы (тынц), правда на C.
На мой взгляд, опасность переполнения буфера или разыменования не того что нужно немного преувеличена. Куда бОльшая проблема, о которой часто тактично умалчивают, заключается в том, что NIF блокирует тред на котором он выполняется и вместе с ним исполняемые на нем акторы. Для быстрых вычислений это не проблема, но для сериализации/десериализации/кодирования/сжатия пары мегабайт данных проблема очень даже актуальная.
Я слышал, что проблему отчасти решили в последних релизах Erlang'а, но, увы, не знаю деталей. Вроде как можно запустить сишный код на отдельной нитке ОС или вроде того.
Я не эксперт по sqlinj, но по моим представлениям конкретно в случае с PostgreSQL прочитать произвольный файл не так-то просто. И записать какой-нибудь шелл тоже, если СУБД ставилась из обычного пакета, а не из исходников например, запускаясь под юзером www.
Иронично, но благодаря вашей статье я вдруг наконец-то понял, как правильно писать под STM32 без IDE :) Просто не знал что scaffolding проекта нужно делать через STM32CubeMX ровно как и то, что эта программа превосходно работает под Linux. А без scaffolding сами понимаете как это трудно. Большинство же туториалов для начинающих написаны в стиле «качаем InstallIDE.exe, и жмем в кнопочки так-то и так-то». В любом случае, спасибо большое за пост!
Егор, спасибо за статью. Мне было очень интересно прочитать про индексацию точек с помощью GiST, а также расширение gevel, так как ранее этими возможностями PostgreSQL мне пользоваться не доводилось.
Касаемо полнотекстового поиска при помощи GIN и pg_trgm не могу не сообщить, что не так давно писал об этом у себя в блоге (раз и два), а также делал доклад на РИТ (слайды). Авось соответствующие материалы кого-то заинтересуют.
С вашего позволения, хотел бы добавить пару (возможно, спорных) советов от себя.
1) Откройте для себя наконец Ninja (cmake -G Ninja ..). Скорость сборки возрастает существенно.
2) По возможности распиливайте проект на библиотеки и тяните их через git submodules.
3) Если тест можно написать на Python, пишите на Python.
4) И вообще раз заговорили про C++: сразу прикручивайте clang-format, clang static analyzer, cppcheck и valgrind, мерьте степень покрытия кода с помощью lcov.
У себя в бложике я описывал эти моменты более подробно.
Amit Kapila не так давно показал, что хэш-индексы иногда могут быть быстрее B-деревьев. Следовательно, если вы ищите только по равенству, имеет смысл сравнить оба варианта и выбрать тот, который на ваших данных и объемах будет быстрее.
P.S. habr.com/post/414141/
Мне кажется секция Yielding NIF больше похожа на правдоподобное решение.
На мой взгляд, опасность переполнения буфера или разыменования не того что нужно немного преувеличена. Куда бОльшая проблема, о которой часто тактично умалчивают, заключается в том, что NIF блокирует тред на котором он выполняется и вместе с ним исполняемые на нем акторы. Для быстрых вычислений это не проблема, но для сериализации/десериализации/кодирования/сжатия пары мегабайт данных проблема очень даже актуальная.
Я слышал, что проблему отчасти решили в последних релизах Erlang'а, но, увы, не знаю деталей. Вроде как можно запустить сишный код на отдельной нитке ОС или вроде того.
Касаемо полнотекстового поиска при помощи GIN и pg_trgm не могу не сообщить, что не так давно писал об этом у себя в блоге (раз и два), а также делал доклад на РИТ (слайды). Авось соответствующие материалы кого-то заинтересуют.
1) Откройте для себя наконец Ninja (cmake -G Ninja ..). Скорость сборки возрастает существенно.
2) По возможности распиливайте проект на библиотеки и тяните их через git submodules.
3) Если тест можно написать на Python, пишите на Python.
4) И вообще раз заговорили про C++: сразу прикручивайте clang-format, clang static analyzer, cppcheck и valgrind, мерьте степень покрытия кода с помощью lcov.
У себя в бложике я описывал эти моменты более подробно.