summaryrefslogtreecommitdiff
path: root/content/posts/2024-11-17-obsidian
diff options
context:
space:
mode:
author2026-02-02 00:35:54 +0300
committer2026-02-02 00:35:54 +0300
commitbfdd73d7324a4f66a16f55d4fb064b0ff08d40e9 (patch)
tree27fff9c802dcdd22960bb2e776e58278000d0364 /content/posts/2024-11-17-obsidian
parentПоправил шаблон (diff)
downloadblog-bfdd73d7324a4f66a16f55d4fb064b0ff08d40e9.tar.gz
blog-bfdd73d7324a4f66a16f55d4fb064b0ff08d40e9.tar.bz2
blog-bfdd73d7324a4f66a16f55d4fb064b0ff08d40e9.tar.xz
blog-bfdd73d7324a4f66a16f55d4fb064b0ff08d40e9.zip
Большая чистка блога
Diffstat (limited to 'content/posts/2024-11-17-obsidian')
-rw-r--r--content/posts/2024-11-17-obsidian/index.md240
-rw-r--r--content/posts/2024-11-17-obsidian/logo.webpbin0 -> 9244 bytes
-rw-r--r--content/posts/2024-11-17-obsidian/publish.webpbin0 -> 23110 bytes
-rw-r--r--content/posts/2024-11-17-obsidian/templater.webpbin0 -> 17140 bytes
4 files changed, 240 insertions, 0 deletions
diff --git a/content/posts/2024-11-17-obsidian/index.md b/content/posts/2024-11-17-obsidian/index.md
new file mode 100644
index 0000000..6feba39
--- /dev/null
+++ b/content/posts/2024-11-17-obsidian/index.md
@@ -0,0 +1,240 @@
+---
+categories:
+ - Без рубрики
+date: "2024-11-17T22:30:37+03:00"
+description: ""
+image: 2024-11-17-obsidian_img/logo.webp
+location: Казань
+tags:
+ - it
+ - joplin
+ - obsidian
+title: Obsidian
+---
+
+Некоторое время назад я [писал](/posts/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);
+}
+%>
+
+## Задачи
+___
+<%
+`- [ ]`
+%>
+
+## Заметки
+___
+
+```
+
+и переходя к сегодняшней заметке я сразу получаю такую заготовку:
+
+![Заметка из шаблона](/posts/2024-11-17-obsidian/templater.webp "Заметка из шаблона")
+
+### Остальные плагины
+
+Остальные тоже крутые, но я их приведу просто списком:
+
+- [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/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, так и
+планами на пет-проекты, что ещё надо-то?
+
+Если что, пишите комментарии. Лучше всего здесь, но можно и во всяких
+телеграмах-вкшках.
diff --git a/content/posts/2024-11-17-obsidian/logo.webp b/content/posts/2024-11-17-obsidian/logo.webp
new file mode 100644
index 0000000..d5c747a
--- /dev/null
+++ b/content/posts/2024-11-17-obsidian/logo.webp
Binary files differ
diff --git a/content/posts/2024-11-17-obsidian/publish.webp b/content/posts/2024-11-17-obsidian/publish.webp
new file mode 100644
index 0000000..f8add88
--- /dev/null
+++ b/content/posts/2024-11-17-obsidian/publish.webp
Binary files differ
diff --git a/content/posts/2024-11-17-obsidian/templater.webp b/content/posts/2024-11-17-obsidian/templater.webp
new file mode 100644
index 0000000..facdd86
--- /dev/null
+++ b/content/posts/2024-11-17-obsidian/templater.webp
Binary files differ