diff options
Diffstat (limited to 'content/posts/2024-11-17-obsidian.md')
| -rw-r--r-- | content/posts/2024-11-17-obsidian.md | 240 |
1 files changed, 240 insertions, 0 deletions
diff --git a/content/posts/2024-11-17-obsidian.md b/content/posts/2024-11-17-obsidian.md new file mode 100644 index 0000000..9ecf5f4 --- /dev/null +++ b/content/posts/2024-11-17-obsidian.md @@ -0,0 +1,240 @@ +--- +categories: +- Без рубрики +date: '2024-11-17T22:30:37+03:00' +description: '' +image: files/2024-11-17-obsidian_img/logo.webp +location: Казань +tags: +- it +- joplin +- obsidian +title: Obsidian +--- + +Некоторое время назад я [писал](/posts/2024-07-13-joplin/) про заметочник +Joplin. + +С тех пор мои вкусы несколько поменялись и я открыл для себя его величество +[Obsidian](https://obsidian.md/). + +В целом он такой же заметочник, с ± тем же функционалом, но имеет для меня одну +особенность, которая буквально переворачивает всё. Это мощнейшая система +плагинов. Серьёзно, я нашел плагины которые покрывают для меня всё, кроме одного +(но об этом позже). + +## Что такое Obisidian? + +Obsidian представляет собой приложение для ведения персональных баз данных, +основанное на принципах локальных файлов Markdown. Это значит, что ваши данные +хранятся в виде обычных текстовых файлов, что обеспечивает максимальную гибкость +и независимость от облачных сервисов. + +Приложение работает на операционных системах: Windows, macOS, Linux, iOS, +Android. + +<!--more--> + +## Основные функции и преимущества + +1. **Граф связей** — да, он есть уже много где, но нельзя его не упомянуть. +2. **Markdown** — очень приятно, что все заметки хранятся в Markdown, что + обеспечивает максимальную интероперабельность и переносимость +3. **Плагины** — плагины пишутся на JS/TS и их много. Даже не так, их **МНОГО**. + Что приятно, они скачиваются и лежат в той же директории что и основное + хранилище, а это важно для следующего пункта +4. **Синхронизация** — она есть. Но вроде как платная. Но мне это и не + интересно, я использую Syncthing. Просто шарю через него директорию + хранилища по схеме оба ноутбука <-> NAS <-> Android. При этом синкаются все + плагины и настройки. +5. **Скорость** — не смотря на то, что он написан на проклятом электроне, + работает достаточно шустро, претензий нет. +6. **Доска для рисования** — мелочь, конечно, но удобно, когда надо на скорую + руку накидать небольшую схемку. В конце этого поста как раз есть пример + такой схемки. + +## Минусы + +1. **Проприетарность** — Obsidian хоть и в целом бесплатный, но он не свободный + и даже не opensource. Да, это серьёзный минус, но он компенсируется тем, что + хотябы вся база данных не в проприетарном формате. И в случае чего можно + будет с наименьшими проблемами свалить куда-нибудь. +2. **Electron** — ну это скорей мой личный пунктик. Но при этом приходиться + смиряться с электроном что на Obsidian что на VSCode (VSCodium, конечно же), + потому что лучше-то и нет. + +Это только то, что сейчас пришло в голову. + +## А теперь самое вкусное + +Не помню, я упоминал что у него много плагинов? :) + +Так вот, поехали, мои самые любимые: + +### Dataview + +https://blacksmithgu.github.io/obsidian-dataview/ + +Ну это просто must-have плагин, который позволяет обращаться с вашими заметками +именно как с базой данных, не меньше. + +Например, можно создать новый документ, написать в него + +``` + ```dataview + TASK + WHERE status = " " + ``` +``` + +и волшебным образом вместо этого блока появятся все невыполненные задачи, а вот +так + +``` + ```dataview + TASK + WHERE status = "x" + ``` +``` + +мы получим все выполненные. + +Язык запросов очень мощный[^1], в нём сто́ит разобраться. +[^1]:https://blacksmithgu.github.io/obsidian-dataview/queries/structure/ + +Ещё есть возможность делать однострочные запросы, например, в домашней заметке +(которая у меня открывается по умолчанию) у меня есть ссылка на именно +сегодняшнюю заметку ежедневного журнала. Сделано вот так: + +``` +`=link(dateformat(date(today), "yyyy.MM.dd"))` +``` + +### Templater + +https://silentvoid13.github.io/Templater/ + +Этот плагин позволяет мне задать некоторым директориям умолчальный шаблон. +Например, вот такой у меня шаблон для ежедневных журналов: + +``` +<%* +try { + // Получаем имя текущей ежедневной заметки + const noteName = tp.file.title; + + // Разбиваем полученное имя на компоненты даты + const [year, month, day] = noteName.split('.').map(Number); + + // Создаём объект Date на основе поученных компонентов + const currentNoteDate = new Date(year, month - 1, day); + + // Вычисляем предыдущий и следующий день + let previousDayDate = new Date(currentNoteDate.setDate(currentNoteDate.getDate() - 1)); + let nextDayDate = new Date(currentNoteDate.setDate(currentNoteDate.getDate() + 2)); + + // Форматируем дату обратно в "DD-MM-YYYY" + const formatDate = (date) => { + const dd = String(date.getDate()).padStart(2, '0'); + const mm = String(date.getMonth() + 1).padStart(2, '0'); + const yyyy = date.getFullYear(); + return `${yyyy}.${mm}.${dd}`; + }; + + const previousDay = formatDate(previousDayDate); + const nextDay = formatDate(nextDayDate); + + // Формируем ссылки + const baseFolder = tp.file.folder(true); + const previousNotePath = `${baseFolder}/${previousDay}.md`; + const nextNotePath = `${baseFolder}/${nextDay}.md`; + + // Выводим даты в виде ссылок + tR += `← [[${previousNotePath}|${previousDay}]] | [[${nextNotePath}|${nextDay}]] →`; +} catch (error) { + console.error("Templater Error:", error); +} +%> + +## Задачи +___ +<% +`- [ ]` +%> + +## Заметки +___ + +``` + +и переходя к сегодняшней заметке я сразу получаю такую заготовку: + + + +### Остальные плагины + +Остальные тоже крутые, но я их приведу просто списком: + +- [tasks](https://publish.obsidian.md/tasks/Introduction) — помогает более + богато управлять задачами. В частности, у меня проставляет дату завершения + задачи, и проставляет даты дедлайна и прочее. +- [reminder](https://uphy.github.io/obsidian-reminder/) — трекает и напоминает + про задачи +- [calendar](https://github.com/liamcain/obsidian-calendar-plugin) — просто + миникалендарь в боковой панели +- [homepage](https://github.com/mirnovov/obsidian-homepage) — позволяет задать + произвольную заметку "домашней" +- [icon-folder](https://github.com/timolins/obsidian-icon-folder) — позволяет + задавать директориям и заметкам произвольные иконки. Пример есть как раз на + скриншоте выше. +- [pomodoro-timer](https://github.com/eatgrass/obsidian-pomodoro-timer) — думаю, + из названия и так понятно +- [kanban](https://publish.obsidian.md/kanban/) — шикарнейший канбан плагин + +## А что же мне не хватает? + +Я упомянул выше что мне кое чего не хватает. А именно, постить заметку в мой +блог по протоколу [Micropub](https://indieweb.org/Micropub). + +Только из-за Obsidian и того, что он использует Markdown я опять [вернулся на +Hugo](/posts/2024-11-15-hugo/), который так же рендерится из Markdown. + +«Но Hugo это же генератор статичных сайтов, куда ты ему будешь отправлять +заметку для публикации?» — можешь спросить меня ты. А я отвечу что у меня вот +такой план: + +```mermaid +graph TB +b1["Заметка в Obsidian"] +b2["Плагин obsidian-micropub"] +b3["micropub сервер на моем сервере"] +b4["вызов hugo"] +b5["Загрузка или копирование результата на веб сервер"] +b1 --> |Publish в контекстном меню| b2 +b2 --> |POST neonxp.ru/micropub| b3 +b3 --> |Запись в директорию content блога| b4 +b4 --> |hugo рендерит markdown -> html| b5 +style b1 fill:#28252e, stroke:#754fcc +style b2 fill:#2e2121, stroke:#c81319 +style b3 fill:#2e2121, stroke:#c81319 +style b4 fill:#222c2c, stroke:#20acaa +style b5 fill:#222c2c, stroke:#20acaa +``` + +То что выделено красным — ещё не существует в природе. + +micropub сервер для hugo я уже начал писать. Да, есть nanopub сервер, но у него +есть два серьёзных недостатка, это PHP и то что его сделал не я. + +micropub плагин для obsidian я вижу сделать на основе существующего плагина +rest-publish. Ну или как пойдёт. + +В общем, меня ждёт ещё очень много весёлого дрочева с этим всем. + +## Закругляюсь + +Пожалуй, пока на этом всё. Поделился как радостью использования Obsidian, так и +планами на пет-проекты, что ещё надо-то? + +Если что, пишите комментарии. Лучше всего здесь, но можно и во всяких +телеграмах-вкшках. |
