2024-11-17 23:42:25 +03:00
|
|
|
|
+++
|
|
|
|
|
title = "Obsidian"
|
|
|
|
|
description = ""
|
|
|
|
|
date = 2024-11-17T22:30:37+03:00
|
|
|
|
|
categories = [ "Без рубрики" ]
|
|
|
|
|
tags = ['it', 'joplin', 'obsidian']
|
|
|
|
|
location = "Казань"
|
|
|
|
|
+++
|
|
|
|
|
|
|
|
|
|
Некоторое время назад я [писал](/posts/2024-07-13-joplin/) про заметочник Joplin.
|
|
|
|
|
|
|
|
|
|
С тех пор мои вкусы несколько поменялись и я открыл для себя его величество [Obsidian](https://obsidian.md/).
|
|
|
|
|
|
2024-11-28 00:46:17 +03:00
|
|
|
|
![Obsidian logo](/posts/2024-11-17-obsidian/logo.png)
|
2024-11-17 23:42:25 +03:00
|
|
|
|
|
|
|
|
|
В целом он такой же заметочник, с ± тем же функционалом, но имеет для меня одну особенность, которая буквально
|
|
|
|
|
переворачивает всё. Это мощнейшая система плагинов. Серьёзно, я нашел плагины которые покрывают для меня всё, кроме
|
|
|
|
|
одного (но об этом позже).
|
|
|
|
|
|
|
|
|
|
## Что такое 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"
|
|
|
|
|
```
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
мы получим все выполненные.
|
|
|
|
|
|
|
|
|
|
Язык запросов [очень мощный](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);
|
|
|
|
|
}
|
|
|
|
|
%>
|
|
|
|
|
|
|
|
|
|
## Задачи
|
|
|
|
|
___
|
|
|
|
|
<%
|
|
|
|
|
`- [ ]`
|
|
|
|
|
%>
|
|
|
|
|
|
|
|
|
|
## Заметки
|
|
|
|
|
___
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
и переходя к сегодняшней заметке я сразу получаю такую заготовку:
|
|
|
|
|
|
2024-11-28 00:46:17 +03:00
|
|
|
|
{{< figure src="/posts/2024-11-17-obsidian/templater.png" title="Заметка из шаблона" >}}
|
2024-11-17 23:42:25 +03:00
|
|
|
|
|
|
|
|
|
### Остальные плагины
|
|
|
|
|
|
|
|
|
|
Остальные тоже крутые, но я их приведу просто списком:
|
|
|
|
|
|
2024-11-20 03:20:47 +03:00
|
|
|
|
- [tasks](https://publish.obsidian.md/tasks/Introduction) — помогает более богато управлять
|
2024-11-17 23:42:25 +03:00
|
|
|
|
задачами. В частности, у меня проставляет дату завершения задачи, и проставляет даты дедлайна и прочее.
|
2024-11-20 03:20:47 +03:00
|
|
|
|
- [reminder](https://uphy.github.io/obsidian-reminder/) — трекает и напоминает про задачи
|
2024-11-17 23:42:25 +03:00
|
|
|
|
- [calendar](https://github.com/liamcain/obsidian-calendar-plugin) — просто миникалендарь в боковой панели
|
|
|
|
|
- [homepage](https://github.com/mirnovov/obsidian-homepage) — позволяет задать произвольную заметку "домашней"
|
2024-11-20 03:20:47 +03:00
|
|
|
|
- [icon-folder](https://github.com/timolins/obsidian-icon-folder) — позволяет задавать директориям и заметкам
|
2024-11-17 23:42:25 +03:00
|
|
|
|
произвольные иконки. Пример есть как раз на скриншоте выше.
|
|
|
|
|
- [pomodoro-timer](https://github.com/eatgrass/obsidian-pomodoro-timer) — думаю, из названия и так понятно
|
2024-11-20 03:20:47 +03:00
|
|
|
|
- [kanban](https://publish.obsidian.md/kanban/) — шикарнейший канбан плагин
|
2024-11-17 23:42:25 +03:00
|
|
|
|
|
|
|
|
|
### А что же мне не хватает?
|
|
|
|
|
|
|
|
|
|
Я упомянул выше что мне кое чего не хватает. А именно, постить заметку в мой блог по протоколу
|
|
|
|
|
[Micropub](https://indieweb.org/Micropub).
|
|
|
|
|
|
|
|
|
|
Только из-за Obsidian и того, что он использует Markdown я опять [вернулся на Hugo](/posts/2024-11-15-hugo/), который
|
|
|
|
|
так же рендерится из Markdown.
|
|
|
|
|
|
|
|
|
|
«Но Hugo это же генератор статичных сайтов, куда ты ему будешь отправлять заметку для публикации?» — можешь спросить
|
|
|
|
|
меня ты. А я отвечу что у меня вот такой план:
|
|
|
|
|
|
2024-11-28 00:46:17 +03:00
|
|
|
|
{{< figure src="/posts/2024-11-17-obsidian/publish.png" title="план-кабан" >}}
|
2024-11-17 23:42:25 +03:00
|
|
|
|
|
|
|
|
|
То что выделено красным — ещё не существует в природе.
|
|
|
|
|
|
|
|
|
|
micropub сервер для hugo я уже начал писать. Да, есть nanopub сервер, но у него есть два серьёзных недостатка, это PHP и
|
|
|
|
|
то что его сделал не я.
|
|
|
|
|
|
|
|
|
|
micropub плагин для obsidian я вижу сделать на основе существующего плагина rest-publish. Ну или как пойдёт.
|
|
|
|
|
|
|
|
|
|
В общем, меня ждёт ещё очень много весёлого дрочева с этим всем.
|
|
|
|
|
|
|
|
|
|
## Закругляюсь
|
|
|
|
|
|
|
|
|
|
Пожалуй, пока на этом всё. Поделился как радостью использования Obsidian, так и планами на пет-проекты, что ещё надо-то?
|
|
|
|
|
|
|
|
|
|
Если что, пишите комментарии. Лучше всего здесь, но можно и во всяких телеграмах-вкшках.
|