Пришло очередное сообщение об использовании 75% выделенных ресурсов, связанных с поддержкой моих сайтов. Их не то чтобы много всего 2. Сам этот факт меня мало беспокоит, где-то с полгода назад в ответ на сообщения о превышении лимитов я снизил частоту обновления сайтов. И вместо 90% - 100%, стали приходить сообщения о 75%.

Эффективность настроенной с помощью бесплатных сервисов системы публикации меня на данный момент совсем не беспокоит. Она работает. Важнее какой опыт она помогла мне получить.

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

Эту систему публикации я начну перерабатывать. И вот почему. Текущая сборка сайта на основе gatsby устарела и не позволяет использовать последние возможности pod6. Например:

  • Toc - Table of contents

  • преобразование локальных связей между файлами в web ссылки между страницами

  • мелочь, но хочется подписей к изображениям

  • хочется векторных диаграмм 📐 в документах.

Посмотрел экспериментальный редактор, который сейчас активно разрабатывают в Obsidian.

Мне в свое время тоже нравился редактор Typora, правда недолго.

В самом начале разработки редактора для Axona я делал несколько прототипов. Один из них с таким же поведением как у Typora.

Вот такое:

Поигравшись еще раз убедился, что все же лучше или видеть всю разметку полностью или не видеть ее вовсе.

Примером первого подхода является Bear:

И это прекрасно.

Я решил двигаться по второму варианту - скрыть от пользователя разметку. Отчасти считая, что markdown не достоин такого внимания и его время постепенно уходит 😀, a отчасти - с целью упрощения работы в будущем со сложными компонентами.

Хотя для ввода некоторых блоков остаются markdown шорткаты. Например для ввода заголовков первого уровня можно использовать markdown определение: #<пробел>. Исключительно для удобства клавиатурного ввода.

В Axona есть еще и raw редактор, но это как доп опция. Использую его временно, пока основной редактор в процессе доработки.

С некоторых пор, мне нравиться рассматривать языки разметки как форматы сериализации документов. И с этой точки зрения pod6 особенно идеален - прежде всего за счет своей расширяемости.

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

Все имеющиеся библиотеки редакторов ориентированы на markdown. Поэтому хорошо, что я приступил к редактору, имея под рукой проработанную блочную модель разметки. Это сэкономило кучу времени в реализации.

По ходу работы формирую представление о последующих версиях редактора. Из ближайших планов - установка связей.

Сделал простой текстовый поиск.

Прежде, чем приступить, посмотрел как реализован поиск в Obsidian и VSCode. Что в одном, что в другом случае в основе лежит простой регекс по содержимому файлов. А результаты поиска, например в Obsidian, ссылаются на смещение текста в файле.

Еще на этапе проектирования я ориентировался на блочную структуру документов, поэтому единицей индексирования сделал блок.

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

При реализации поиска немного отошел от ТЗ: перенес сайдбар результатов поиска в левую часть экрана. В правой части отображается карточка заметки.

Еще одной функциональной деталью в ТЗ было поведение графа при поиске.

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

При клике мышкой на результате поиска открывается заметка.

Чтобы начать пользоваться постоянно, подключил простенький редактор из другого своего проекта. Он автоматически распознает pod6 и markdown.

Возможно его оставлю как низкоуровневый редактор. Сейчас более важно закрыть основной функционал и по мере использования доводить до минимально работающего состояния все остальное.

Запуск редактора сделал по cmd-e.

Это первая заметка, созданная в Axona.