Как я переписал Obsidian
Продолжаю вести серию постов про Gamma Resonance. Не то что бы Obsidian тут как-то замешан, но новая фича очень похожа на него. До этого был просто планировщик в виде графа с математической моделью (которую в будущем буду улучшать), но чего-то мне лично не хватало. Решил в одно рабочее пространство добавить также граф знаний, так как удобно держать и задачи, и заметки в одном месте. Было множество идей как это реализовать "правильно". Пришел все таки к тому, чтобы сделать эти два графа в одном рабочем пространстве, скажем так. Просто через переключение режимов. Подумал, что это будет лучше, чем множество файлов, графов, которые раскиданы по папкам. Сначала с .md перешел на .json сохранение, что мне особо не дало лучшего результата. В конечном итоге выбрал для хранения SQLite - базу данных для удобного хранения, быстрой записи на диск и, что самое главное, инкрементального сохранения (если кто не знает, то эта фишка дает возможность сохранять только нужные блоки, узлы, записи отдельно, не перезаписывая ВЕСЬ файл), что позволяет без проблем работать с тысячами узлами с заметками без особо сильных тормозов.
Да, круто, все работает. Если кто-то спросит "ну и смысл? есть же привычный obsidian", то да, соглашусь с тем, что программа еще сыроватая, только начал разработку. Но! Я не пытаюсь полностью скопировать Obsidian, а лишь сделать удобную программу для личной продуктивности, которая, кстати, работает полностью локально и без интернета, данные не собирает ВООБЩЕ, вот прям ноль. Для бизнеса это плохо - я не вижу скачивания, я не вижу статистику, я не вижу вообще ничего. Для тех, кому программа реально зайдет - это большой плюс, и для самих пользователей в принципе, кто будет пользоваться хоть как-то.
Ладно, вернемся к графу знаний. На первом этапе я добавил в него только создание узлов, создание подузлов, то есть иерархию и обычное связывание через интерфейс, но пока что без ссылок. Но сам узел не является заметкой. Это контейнер по своей сути, который содержит заметки.
Первая ситуация: у меня был очень насыщенный день, хочу записать все до мелочей, чтобы потом проанализировать и вести статистику. Был бы узел целой заметкой, хорошо, вроде база, но как по мне каша. мне нужно разделить день на 3 части - утро, день и вечер. Допустим создам 3 узла с каждой частью, но как их удобно связать? как понять, что от чего зависит? Поэтому вместо "1 узел - 1 заметка" я сделал сам узел контейнером, где можно добавлять СКОЛЬКО УГОДНО заметок и разделять их. Вот пример:
Вторая ситуация: у меня есть некий проект на пайтоне, который состоит из 5 файлов. Допустим мне нужно его сохранить в заметки, чтобы не забыть/сохранить/на память/проанализировать, в общем много каких может быть причин. Заливать все в одну заметку? Каша, неудобно. Каждый файл по отдельности на несколько заметок? Не знаю кому как, но мне было бы неудобно. В один узел-контейнер, где можно по очереди создать нужные заметки под каждый файл? Да, было бы неплохо.
В планах много чего доделать, но без фидбека это будет сложнее сделать, так как не знаю точный вектор и направление разработки.
Призыв к действию: если хоть кого-то заинтересует моя прога, буду очень благодарен за фидбек и конструктивную критику.
Связь, Пикабу!





