eddy_em: (Костерок)
[personal profile] eddy_em
В поисках парсера ini-файлов наткнулся на эту библиотечку. Форкнул себе (в т.ч. и на гитлаб с битбакетом). Но мне не понравилась структура хранения данных и то, что каждый раз при необходимости увеличить размер хранилища его удваивают.
Сделал хранение раздельным: для каждой секции ключи хранятся в своем массиве данных.
Добавил сортировку по хэшам (для бинарного поиска в больших ini) и сортировку по именам (для красивого сохранения в файл).
Вроде бы работает.

Кому интересно — попробуйте потестировать.

Date: 2016-09-27 06:01 pm (UTC)
From: [identity profile] eddy-em.livejournal.com
Надо бы большой тестовый файл сгенерить и сравнить, есть ли вообще толк от моих "совершенствований".

Date: 2016-09-27 06:15 pm (UTC)
From: [identity profile] mbr.livejournal.com
Кресты на десктоп и не надо костылей.

Date: 2016-09-27 07:27 pm (UTC)
From: [identity profile] eddy-em.livejournal.com
А при чем здесь кресты?
Как по мне, так дурацкий язык. Если уж кардинально менять ЯП, то выбирать что-нибудь годное. Только я кроме С никаких годных языков не знаю. Сплошная жесть.
Вполне возможно, что на крестах можно дельные вещи писать, но для этого нужно быть погромистом и минимум 8 часов 5 дней в неделю прогать на крестах. А не так, как я — иной раз может полгода пройти, а я ни разу не открою geany...

Date: 2016-09-27 10:36 pm (UTC)
From: [identity profile] sevasat.livejournal.com
Питушон же.

Date: 2016-09-28 05:12 am (UTC)
From: [identity profile] eddy-em.livejournal.com
Пока я не готов вместо ЯП использовать этот говнопхытон.

Date: 2016-09-28 12:12 am (UTC)
From: [identity profile] mbr.livejournal.com
Каким нафиг программистом? Тебе любой школьник на Qt мышкой накликает за 15 минут целевую задачу с парсингом ini.

Date: 2016-09-28 05:11 am (UTC)
From: [identity profile] eddy-em.livejournal.com
Бгг. А все остальное? Линковать С с С++? Да ну нафиг!
С++ слишком сложный язык для моих элементарных хотелок.

Date: 2016-09-28 04:07 pm (UTC)
From: [identity profile] dimas.livejournal.com
Ой да ладно ...
С++ можно использоваться на том уровне, который хочется ...
Можно вообще писать как на С (учитывая разницу стандартов:), используя нужные классы библиотек как черный ящик, как на "С с классами", а можно и вполне объектно и с прочими извращениями с контейнерами, шаблонами и прочим ...

Другой вопрос требования как к пожираемым ресурсам приложением, так и его написанием ...

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

Если же хочется производительности, простоты, и т.д., то сейчас вроде как принято это на go писать и Роберт Пайк пророк его :) Сам не пробовал ...

Конфиги же все я чаще всего использовал в json-подобном формате модуля config из питона, на третьем питоне перешел на просто json (правда, с jsmin`ом, который убирает комменты).

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

Date: 2016-09-28 04:47 pm (UTC)
From: [identity profile] eddy-em.livejournal.com
Нет, С++ — слишком сложный и хитрожопый язык.

> go
Это — вообще жесть! Проще удавиться!

> json
У меня есть велосипед для работы с JSON, но таки на мой взгляд конфиги удобней писать в ini-формате. А JSON — это уже для сериализации передаваемых по сети данных, компу с ним работать проще, чем человеку.

Date: 2016-09-28 04:54 pm (UTC)
From: [identity profile] dimas.livejournal.com
Ой да ладно ... говорю же - это как набор инструмента, можно обходиться молотком и гвоздями, а можно и микроскоп с микротомом достать ...

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

Мне json-подобный формат нравится тем, что он нормально читается в случае многоуровневых структур ... Если так нравится ini-формат, я бы еще раз предложил попробовать yaml.

Date: 2016-09-28 01:53 am (UTC)
From: [identity profile] masterspammer.livejournal.com
Тоже как-то форкал для работы ini-парсер (на питоне).

Хотелось следующего:

1. метаинформация - значение хранилось в такой-то строке (чтоб ругаться - у вас, мол ошибка в такой-то строке INI-файла)
2. поиск ключей, к которым не было обращения (для отладки)
3. при интерполяции и доступе по ключу подсовывание метаинформации - вот такая переменная взята оттуда-то и в итоге __почти__ stacktrace (из какой строки включили другой файл, откуда взялся ключ, для которого нет значения и т.д.

В итоге пришлось дописывать очень многое :-(

Date: 2016-09-28 05:17 am (UTC)
From: [identity profile] eddy-em.livejournal.com
Ну, мне пока нужно немногое — хранить кое-какие вещи в ini-файлах, чтобы не делать alias'ов с толпой ключей, которые указываются постоянно.
Кроме того, ini-файлы позволят уменьшить количество ключей (скажем, в apogee_control список ключей уже с трудом в 1 экран вмещается, конечно, до mplayer/mencoder это далеко, но как-то неуютно). В sextractor, например, проблему 100500 ключей решили упоминанием всего нужного в конфигурационных файлах.

В любом случае, велосипед расширяем. Скажем, сейчас он у меня не является реентерабельным (реентерабельность скажется на скорости работы). В именах секций нельзя использовать двоеточие, и т.д., и т.п.

Date: 2016-09-28 09:06 am (UTC)
From: [identity profile] masterspammer.livejournal.com
А так обычно и бывает и потому есть разные реализации - потому что всем нужно немногое, но всем - разное.

Date: 2016-09-28 09:49 am (UTC)
From: [identity profile] eddy-em.livejournal.com
Это да. Попытка запилить все в одну кучу приводит к созданию монстров-уродцев вроде OpenCV.

April 2025

S M T W T F S
  1 23 45
67 89101112
13141516171819
20212223242526
27282930   

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated May. 23rd, 2025 04:23 am
Powered by Dreamwidth Studios