Tags: dev

Бритый небритый

Рабочие заметки тестера по-жизни

Решил я инициализировать std::vector массивом из без малого 40000 слов. Ну захотелось так...
Собираться все это безобразие g++-8 решило аж полторы минуты, или clang-11 за 40 секунд.
Оригинал этой записи находится на https://nataraj.dreamwidth.org/990194.html. ( комментарии comment count unavailable) ( комментировать )
Бритый небритый

Собираем Goblin Camp

У меня внезапно случился каникулярный проект.

Вместо того чтобы нормально поработать, пока все отдыхают и от меня отстали, меня вставило, и я сделал еще один подход к попытке сборки игрушки Goblin Camp.

Это, говорят, некая подобная Dwarf Fortress игра, которую забросили в 2012 году.

Проблема с ней в том, что автор в качестве структуро-образующего фреймворка выбрал libboost, который в свою очередь оказался очень капризным и чувствительным к версиям практически всего...

Сначала я пытался подобрать дистрибутив дебиана, собрав его в chroot'е так чтобы нужная комбинация таки совпала... Я старательно пытался его ставить в разные позы с разными компиляторами, но не осилил. При этом часть проблем вылезала именно с внутренностями boost'а который был приложен к исходникам программы. Это еще в прошлый подход.

В этот подход я пришел к идее, что надо исключить из уравнения одну из переменных, или даже две. Попробовать собрать все это дело с бустом который идет в дебиане (благо к нему приложены все патчи необходимые для работы с идущим с дистрибутивом компиляторе) и выкинуть нафиг систему сборки bjam которая отдельно доставляет проблемы, и в которой вообще непонятно что происходит и собрать все нормальным cmake'ом (на который, если продолжать возиться с проектом все равно переходить)

И вот тут вот получилось. Не без проблем, libboost все равно показал себя как крайне не стабильная... мнэ... субстанция, но DuckDuckGo, StackOverfrow, strace и 83 кило упертости таки победили...

Результат экзерсисов сложил в отдельную ветку и снабдил инструкцией.

https://gitlab.com/dhyannataraj/goblin-camp/tree/cmake-build

Оригинал этой записи находится на https://nataraj.dreamwidth.org/983408.html. ( комментарии comment count unavailable) ( комментировать )
Бритый небритый

Патчи в постргес

Меня можно поздравить с тем, что у меня таки приняли мелко-патчи в постгрес.
До самого основного патча еще далеко, но уже хоть что-то.

773df883 - Support reloptions of enum type. В постгресе строковый тип опций таблиц использовался фактически как enum, всякий раз писать функцию валидации походу не правильно, лучше прямо сделать его enum'ом.
640c1986 - Add dummy_index_am to src/test/modules/ so it can be used for test purposes and as an access method example

Оригинал этой записи находится на https://nataraj.dreamwidth.org/982626.html. ( комментарии comment count unavailable) ( комментировать )
Бритый небритый

Программстское портфолио (опенсорсное)

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

Postgres
4cb658af - Refactor reloption handling for index AMs in-core - Не надо использовать StdRdOptions для хранения опций индексов, таская за собой не используемые для дела опции heap'а
1bbd608f - Split handling of reloptions for partitioned tables - Партиционированные таблицы все равно не используют ни одной опции. Поэтому завязывать их хранение на StdRdOptions совершенно ни к чему.
39677376 - Add some assertions to view reloption macros - Дополнительная проверка перед преобразованием типа
773df883 - Support reloptions of enum type. В постгресе строковый тип опций таблиц использовался фактически как enum, всякий раз писать функцию валидации походу не правильно, лучше прямо сделать его enum'ом.
640c1986 - Add dummy_index_am to src/test/modules/ so it can be used for test purposes and as an access method example
4b95cc1d - Add more tests for reloptions - Опции таблиц как выяснилось не тестировались ранее. Перед тем как их ломать, было решено для начала научиться тестировать то что есть. Правда с поламыванием воз и ныне там...
d6061f83 - Improve pageinspect module - Модуль pageinspect позволяющий изучать страницы хранилища postgres, с помощью этого патча научился разбирать на части содержимое записи, и показывать их в человеко-читаемом виде.


xmlsec
0606b742 - Поддержка подписи GOST2012.

perl
authored modules
Lingua::StarDict::Writer – модуль для создания StarDict словарей

patches
Lingua::StarDict::Genверсия 0.09: исправил серьезную проблему с сортировкой из-за которой пропадали слова.

Misc
subtutleeditor - 1dd00d03 - Fix building with older version of enchant - у кого-то в системе был уже enchant-2 и он послал фикс для сборки. А в дебиане до сих пор enchant без двойки, в результате собираться перестало. Сделал так чтобы собиралось в обоих случаях.

KDE networkmanagement - 99d3dbe8 - Show APN string for the APN selected by the user in Mobile Connection - чего-то оно там неправильно показывало при настройке USB-модема. Давно это было.
KDE networkmanagement - d395cfe7 - Hide non-Internet APNs in Mobile Connection Wizard.- В serviceproviders.xml начали разделять APN'ы по типам назначения (internet|mms|wap) а KDE'шный network manager об этом не знал, и показывал все в кучу.

preenye317826: добавил библиотеку setstdin позволяющая, через подмену системных вызовов подавать программе требуемые данные на стандартный вход. Нужен этот инструмент например при фаззинге, например AFL++'ом, когда другого способа передать какую-либо константную строку на вход исследуемой программе просто нету.

*будет пополняться* Оригинал этой записи находится на https://nataraj.dreamwidth.org/978672.html. ( комментарии comment count unavailable) ( комментировать )
Бритый небритый

pg-dev: Налаживаемость патчей из коммитфеста

и не только налаживаемость. Но еще и компилируемость...

Для тех кто занимается разработкой постгреса. В рассылке товарищи показали интересный сервис:

http://commitfest.cputube.org/

Там для патчей текущего и предстоящего комитфеста приведена статистика того как эти патчи накладываются на текущей мастер, и собираются ли после этого. В том числе и виндой. Что чертовски полезно для нашей безвиндовой ситуации...

Чего этому сервису не хватает, так это системы оповещений. Я по всей видимости буду писать скриптик который из моих статусов (ну и не только моих, пусть в параметрах указывается) будет делать RSS-feed.

Оригинал этой записи находится на https://nataraj.dreamwidth.org/977593.html. ( комментарии comment count unavailable) ( комментировать )
Бритый небритый

Вопрос суровым vim'ерам про git

А кто-нибудь знает, можно ли обучить vim подсвечивать строки которые появились после коммита N?

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

Было бы очень удобно... Бывает ли такое? мне чего-то не нагуглилось...

Оригинал этой записи находится на https://nataraj.dreamwidth.org/975289.html. ( комментарии comment count unavailable) ( комментировать )
Бритый небритый

Слава извращенцам

Понадобилось мне собрать пострес под винду (там какая-то MSVS-специфичная ошибка). Надо. А трогать эту субстанцию больше необходимого ну очень не хочется.
Коллега поделился образом вируталки в которой все окружение для сборки уже подготовлено, только клонируй и запусти. Спасибо коллеге...

Преодолевая трудности (нельзя просто так взять и сделать бридж для вайфайной карты) пытаюсь ее запустить у себя на ноутбуке. Ноут не тянет... Он и фейсбук в браузере не очень тянет, какая виртуалка...

Хорошо, обращаюсь к знакомому, у которого на рабочих станциях лиукс, типа дай погонять... Он говорит, что погонять не даст, но выдаст свой старый виндовый комп, который мощнее всех его линуксовых, за одно и линукс на него типа поставишь...

Преодолевая трудности (нет драйверов для сиди-рома, дебиановский лайв-сиди почему-то не видит сетевуху), перекидываю данные с самого маленького диска на остальные (их там много было) и ставлю на малый диск линукс...

Тут выясняется что на этот маленький диск образ виртуалки просто не помещается... Диск совсем маленький. Ну я в результате кладу его на диски с данными которые от винды остались, ntfs'ные...

Итого. Для того чтобы собрать постгрес под винду, я снес винду, чтобы поставить линукс, положить виртуалку на ntfs'ный диск запустить винду в виртуалке и таки собрать постгрес...

И вы еще удивляетесь что я медленно программирую...

PS поставил бы еще тег "слабоумие и отвага", но он про другое...

Оригинал этой записи находится на https://nataraj.dreamwidth.org/973161.html. ( комментарии comment count unavailable) ( комментировать )
Бритый небритый

Using vim for postgres development

I've written a wiki article about configuring vim for postgres development.

https://wiki.postgresql.org/wiki/Configuring_vim_for_postgres_development

I actually started to restore my vim configuration (I've lost it some time ago) and found out that these information is scattered along the web. And it is better to keep it in one place.

I've described in the article all options and plugins that I used for pg development.

If you have your own vim experience and know some tools that can be used to make development and following codestyle more easy, please add them there.

PS. I've already written about it to the mailing list. Just want to write about it in the blog too...

Оригинал этой записи находится на https://nataraj.dreamwidth.org/972908.html. ( комментарии comment count unavailable) ( комментировать )
Бритый небритый

вопрос по git

Вот например некто ведет разработку, и в процессе ведения шел патчи. И каждая новая версия патча -- улучшенная версия предыдущего.
И если для первого патча, я создаю ветку от master'а и накладываю патч, то как быть для второй версии этого патча, мне не понятно.
Накладывать второй патч так же надо на мастер. Но должен он оказаться в той же ветке что и первый патч, просто следующим коммитом. Как быть. Какой workfwolw правильный?

git checkout master
git branch patch_v1
git checkout patch_v1
pathc -p1 <patch_vi.diff
git commit -a

git checkout master
git branch patch_v2
git checkout patch_v2
pathc -p2 <patch_vi.diff
git commit -a

git rebase patch_v1

(Я так не пробовал. Боюсь ;-) )

Как вы решаете такие задачи?

Оригинал этой записи находится на https://nataraj.dreamwidth.org/971488.html. ( комментарии comment count unavailable) ( комментировать )