Как стать автором
Обновить

Комментарии 11

Спасибо за статью, отличное начало

  1. Я правильно понял, что с файлами на S3, OneNote, DropBox можно работать напрямую? Потому как из документации Joplin работа идет через сервер

Архитектура

  1. Как вы на S3 находили нужные файлы? Там же еще есть diff файлы.

  2. Если ответ на 1. - "да", то получается новый клиент для Joplin написать совсем нетрудно? Почему же их нет? Мне нравится Joplin, но UX у него ужасный.

Спасибо

  1. Я упомянул про инсталляцию joplin server как цели синхронизации, в self-hosted варианте. Это тот случай, который я не стал реализовывать: не захотелось лезть в закрытый API. Технически это даже проще, чем поднять API от CLI, надо только поизучать запросы. И все клиенты переключить на self-hosted сервер как цель синхронизации
    В моем случае цель синхронизации это бакет в S3, и клиент синхронизируется с ней

  2. Смотрел логи S3 по времени обновления. В моем случае, для обновления заметки, не понадобилось трогать diff файлы: обновления контента и даты оказалось достаточно

  3. Да, UX такой себе. Joplin offline-first софтина с возможностью синхронизации. Написание альтернативного клиента сведется к написанию своего софта для заметок, который будет совместим с форматом хранилищ. Ограничений нет, просто в реальном клиенте куча деталей вроде упомянутых diff файлов
    Для клиента я бы начал с поддержки API сервера как раз, хоть он и не публичный.

То есть, вы по логам определили имя файла заметки и дальше уже работали с ним? А что-то более высокоуровневое можно из S3 пакета файлов получить? Определить все Joplin notebooks, определить файлы заметок, входящие в определённый notebook, построить всё дерево - такое возможно? Не нашел в документации ничего по этому поводу.

Я бы не хотел привязываться ни к Joplin server, ни к CLI, если есть возможность работать с файлами напрямую.

Нет, такую информацию можно получить только выгрузив контент файлов. В названии в S3 используется формат <id>.md. Все, что касается типа файла, родительского элемента итп лежит в метаданных в самом файле. Например, параметр type_будет определять тип.
То есть, в любом случае для S3 изначально придется получить все файлы, чтобы по ним построить зависимости. Далее можно при повторной синхронизации подтягивать изменения и применять их к локальным данным. Так делают сейчас клиенты, судя по их логам при синхронизации

Да, я сейчас поэкспериментировал - надо всё сгрузить и построить дерево. И потом от времени последней синхронизации смотреть на S3 измененные файлы. Не очень логика, как мне кажется.

Diff, в принципе, можно отключить в клиенте. В любом случае, он вроде идёт "назад", то есть, изменения от текущей ревизии в прошлое.

Спасибо, очень полезная информация.

Да, логика не очень, но что имеем

Пожалуйста, рад что ресерч оказался полезен:)

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

Пробовал Obsidian, но уже не помню почему отказался в пользу Joplin. А чем синхронизация проще? Если верно понял, для Obsidian можно просто синхронизировать каталог с данными сторонним софтом?

Синхронизация Joplin плохо работала для WebDAV с яндекс.диском, для больших файлов. Для S3 полет нормальный

Если верно понял, для Obsidian можно просто синхронизировать каталог с данными сторонним софтом?

Да, просто каталог. Синхронизировать можно как угодно. Я использовал SyncThing. Настраивать не так, чтобы удобно, но делается это один раз. А так можно всякими Дисками, dropbox'ами и т.д. А если занести Obsidian денюжку, то все будет из коробки.

У этого подхода есть минус
Прежде чем начать редактировать надо сперва не забыть забрать изменения

Случайный пробел, и все файл перетерся на сервер
Я использовал GoodSync и FolderSync на телефоне

Прежде чем начать редактировать надо сперва не забыть забрать изменения

SyncThing может запускаться в фоне (пробовал на windows и android) и автоматически отслеживать и подтягивать изменения

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации