aboutsummaryrefslogtreecommitdiff
path: root/content
diff options
context:
space:
mode:
authorAlexander Neonxp Kiryukhin <i@neonxp.ru>2024-11-17 23:42:25 +0300
committerAlexander Neonxp Kiryukhin <i@neonxp.ru>2024-11-17 23:42:25 +0300
commit1c1ae0094244868c63bd875c0cbfa50ced37de8d (patch)
tree502d325c0b308a8da90055b07208a50730ff6761 /content
parentda61be9f9a2228d7d29b085ee341cd6031913e63 (diff)
Новый пост
Diffstat (limited to 'content')
-rw-r--r--content/notes/Backup rsync.md200
-rw-r--r--content/notes/Docker ALT Linux.md23
-rw-r--r--content/notes/Docker context.md11
-rw-r--r--content/notes/Скачивание сайта.md8
-rw-r--r--content/notes/Фикс mp3 тегов.md22
-rw-r--r--content/pages/me.md6
-rw-r--r--content/posts/2024-11-17-obsidian.md196
7 files changed, 463 insertions, 3 deletions
diff --git a/content/notes/Backup rsync.md b/content/notes/Backup rsync.md
new file mode 100644
index 0000000..8315afc
--- /dev/null
+++ b/content/notes/Backup rsync.md
@@ -0,0 +1,200 @@
++++
+title = "Бекап linux системы с помощью rsync"
+tags = ["linux"]
++++
+
+# Вносим в crontab
+
+```
+rsync -v --archive --compress --progress --delete-after --force --partial --exclude-from=/home/$USER/excludes.txt /home/$USER/ 192.168.50.2:/volume1/NetBackup/NeonXPLaptop
+```
+
+# Пример excludes.txt
+<!--more-->
+```
+.android
+.AndroidStudio*/
+Android/Sdk
+.gradle
+.gvm
+.grails/
+.grails_history
+.kde/share/apps/nepomuk
+.local/share/notbit
+.local/libvirt
+.local/share/libvirt
+.vagrant
+.vagrant.d
+.wine
+.twister
+twister
+.local/share/Steam
+.var/app/com.valvesoftware.Steam/.local/share/Steam
+.steam
+Steam
+.PlayOnLinux
+.local/share/lutris/runners/wine/
+Видео
+.docker/machine
+.local/share/containers
+.gvfs
+.local/share/gvfs-metadata
+.Private
+.dbus
+.cache
+.var/app/*/cache
+.var/app/*/.cache
+.Trash
+.Trash-1*
+.local/share/Trash
+.cddb
+.aptitude
+.npm
+.nvm
+.adobe
+.macromedia
+.xsession-errors
+.xsession-errors.old
+.wayland-errors
+.local/share/RecentDocuments
+.recently-used
+.recently-used.xbel
+recently-used.xbel
+.thumbnails
+.thumb
+Thumbs.db
+.DS_Store
+.localised
+.CFUserTextEncoding
+.zcompdump*
+.wget-hsts
+.cups
+.subversion
+.virtualenvs
+.Xauthority
+.ICEauthority
+.gksu.lock
+.pulse
+.pulse-cookie
+.esd_auth
+.VeraCrypt-lock-*
+.kde/share/apps/RecentDocuments
+.kde4/share/apps/RecentDocuments
+.kde/share/apps/klipper
+.kde4/share/apps/klipper
+.local/share/klipper
+.kde/share/apps/okular/docdata
+.kde/share/apps/gwenview/recentfolders
+.kde4/share/apps/okular/docdata
+.kde4/share/apps/gwenview/recentfolders
+.local/share/okular/docdata
+.local/share/org.kde.gwenview/recentfolders
+.kde/share/apps/kmess/displaypics
+.kde4/share/apps/kmess/displaypics
+.kde/share/apps/kmess/customemoticons
+.kde4/share/apps/kmess/customemoticons
+.local/share/tracker
+.local/share/torbrowser
+.mozilla/firefox/*/Cache
+.mozilla/firefox/*/minidumps
+.mozilla/firefox/*/.parentlock
+.mozilla/firefox/*/urlclassifier3.sqlite
+.mozilla/firefox/*/blocklist.xml
+.mozilla/firefox/*/extensions.sqlite
+.mozilla/firefox/*/extensions.sqlite-journal
+.mozilla/firefox/*/extensions.rdf
+.mozilla/firefox/*/extensions.ini
+.mozilla/firefox/*/extensions.cache
+.mozilla/firefox/*/XUL.mfasl
+.mozilla/firefox/*/XPC.mfasl
+.mozilla/firefox/*/xpti.dat
+.mozilla/firefox/*/compreg.dat
+.mozilla/firefox/*/pluginreg.dat
+.mozilla/seamonkey/*/Cache
+.mozilla/seamonkey/*/minidumps
+.mozilla/seamonkey/*/.parentlock
+.mozilla/seamonkey/*/blocklist.xml
+.mozilla/seamonkey/*/extensions.sqlite
+.mozilla/seamonkey/*/extensions.rdf
+.mozilla/seamonkey/*/extensions.ini
+.mozilla/seamonkey/*/xpti.dat
+.mozilla/seamonkey/*/compreg.dat
+.mozilla/seamonkey/*/pluginreg.dat
+.thunderbird/*/Cache
+.keychain
+.komodoedit
+.gnupg/rnd
+.gnupg/random_seed
+.gnupg/.#*
+.gnupg/*.lock
+.gnupg/gpg-agent-info-*
+.config/google-chrome/ShaderCache
+.config/google-chrome/*/Local Storage
+.config/google-chrome/*/Session Storage
+.config/google-chrome/*/Application Cache
+.config/google-chrome/*/History Index *
+.config/google-chrome/*/Service Worker/CacheStorage
+.config/google-chrome/*/WebStorage/*/CacheStorage
+.config/chromium/*/Local Storage
+.config/chromium/*/Session Storage
+.config/chromium/*/Service Worker/CacheStorage
+.config/chromium/*/Application Cache
+.config/chromium/*/History Index *
+/snap/chromium/common/.cache
+/snap/chromium/*/.config/chromium/*/Service Worker/CacheStorage
+/snap/chromium/*/.local/share/
+.gradle/caches
+/.m2/repository
+.local/share/baloo
+.local/share/zeitgeist
+.local/share/akonadi
+.purple/icons
+.guayadeque/cache.db
+.java/deployment/cache
+.icedteaplugin
+.icedtea
+.gnome2/epiphany/favicon_cache
+nohup.out
+.config/libreoffice/4/cache
+.config/*/Cache
+.config/Atom/*Cache
+.config/Atom/IndexedDB
+.atom/compile-cache/
+.vim/bundle/*
+.viminfo
+.vscode-oss/extensions/*
+.vscode/extensions/*
+.config/Code - OSS/logs/
+.config/Code/logs/
+.config/Code/CachedData/*
+.config/VSCodium/CachedExtensionVSIXs
+.config/VSCode/CachedExtensionVSIXs
+.config/VirtualBox/VBoxSVC.log*
+.config/VirtualBox/VBoxGuestAdditions_*
+.cargo
+.rustup
+go/pkg/mod/cache
+.nv/GLCache
+.config/**/blob_storage
+.config/**/Application Cache
+.config/**/Cache
+.config/**/CachedData
+.config/**/Code Cache
+.config/**/GPUCache
+.config/**/Service Worker/CacheStorage
+.var/app/**/blob_storage
+.var/app/**/Application Cache
+.var/app/**/Cache
+.var/app/**/CachedData
+.var/app/**/Code Cache
+.var/app/**/GPUCache
+.var/app/**/Service Worker/CacheStorage
+.config/scc/daemon.socket
+Загрузки
+.config/yandex-browser
+Sync
+snap
+.local/share/TelegramDesktop
+.local/share/Zeal
+.thunderbird
+``` \ No newline at end of file
diff --git a/content/notes/Docker ALT Linux.md b/content/notes/Docker ALT Linux.md
new file mode 100644
index 0000000..4cab45a
--- /dev/null
+++ b/content/notes/Docker ALT Linux.md
@@ -0,0 +1,23 @@
++++
+title = "Docker в AltLinux"
+tags = ["linux", "docker"]
++++
+
+## Установка
+
+Установить docker можно следующей командой:
+
+```
+apt-get install docker-engine
+```
+
+Добавить пользователя в группу docker;
+```
+usermod ИМЯ_ПОЛЬЗОВАТЕЛЯ -aG docker
+```
+
+Затем необходимо запустить соответствующую службу:
+
+```
+systemctl enable --now docker
+``` \ No newline at end of file
diff --git a/content/notes/Docker context.md b/content/notes/Docker context.md
new file mode 100644
index 0000000..4ddacdc
--- /dev/null
+++ b/content/notes/Docker context.md
@@ -0,0 +1,11 @@
++++
+title = "Docker context"
+tags = ["linux", "docker"]
++++
+
+Постоянно забываю как создавать новый контекст докера. Сохраню здесь чтобы не забыть.
+
+```
+docker context create curie --docker "host=ssh://neonxp.ru"
+docker context use curie
+```
diff --git a/content/notes/Скачивание сайта.md b/content/notes/Скачивание сайта.md
new file mode 100644
index 0000000..914119b
--- /dev/null
+++ b/content/notes/Скачивание сайта.md
@@ -0,0 +1,8 @@
++++
+title = "Рекурсивное скачивание всего сайта"
+tags = ["linux"]
++++
+
+ ```
+ wget -rk -np -nc -U "Mozilla/5.0 (X11; Linux i686; rv:24.0) Gecko/20110328 Firefox/24.0" --wait=5 --random-wait https://example.com
+ ``` \ No newline at end of file
diff --git a/content/notes/Фикс mp3 тегов.md b/content/notes/Фикс mp3 тегов.md
new file mode 100644
index 0000000..948d74a
--- /dev/null
+++ b/content/notes/Фикс mp3 тегов.md
@@ -0,0 +1,22 @@
+ +++
+title = "Исправление кодировок тегов mp3 файлов"
+tags = ["linux", "mp3"]
++++
+
+# Установка mutagen
+
+```
+pip3 install mutagen
+```
+
+# Исправление одного файла
+
+```
+mid3iconv -e CP1251 -d bad.mp3
+```
+
+# Исправление целой коллекции
+
+```
+find /media/Music/ -iname "*.mp3" -print0 | xargs -0 mid3iconv -e CP1251 -d
+``` \ No newline at end of file
diff --git a/content/pages/me.md b/content/pages/me.md
index 0ad6a9d..b62324e 100644
--- a/content/pages/me.md
+++ b/content/pages/me.md
@@ -8,9 +8,9 @@ title = 'Обо мне'
<li class="p-name">
<span class="p-given-cname">Александр</span> <span class="p-nickname">NeonXP</span> <span class="p-family-name">Кирюхин</span>
</li>
- <li>E-mail: <a href="mailto:i@neonxp.ru" class="u-email">i@neonxp.ru</a></li>
- <li>Jabber: <a href="xmpp:i@neonxp.ru" class="u-jabber">i@neonxp.ru</a></li>
- <li>PGP: <a href="/files/key.asc" class="u-key">7282 5661 A858 FFBD 0EF3 8BD5 35E3 3E1A B777 6B39</a></li>
+ <li>E-mail: <a href="mailto:i@neonxp.ru" rel="me" class="u-email">i@neonxp.ru</a></li>
+ <li>Jabber: <a href="xmpp:i@neonxp.ru" rel="me" class="u-jabber">i@neonxp.ru</a></li>
+ <li>PGP: <a href="/files/key.asc" rel="pgpkey" class="u-key">7282 5661 A858 FFBD 0EF3 8BD5 35E3 3E1A B777 6B39</a></li>
<li><span class="p-locality">Казань</span>, <abbr class="p-region" title="Республика Татарстан">РТ</abbr>, <span class="p-country-name">Российская Федерация</span></li>
</ul>
diff --git a/content/posts/2024-11-17-obsidian.md b/content/posts/2024-11-17-obsidian.md
new file mode 100644
index 0000000..9b15053
--- /dev/null
+++ b/content/posts/2024-11-17-obsidian.md
@@ -0,0 +1,196 @@
++++
+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/).
+
+![Obsidian logo](/img/posts/obsidian/logo.png)
+
+В целом он такой же заметочник, с ± тем же функционалом, но имеет для меня одну особенность, которая буквально
+переворачивает всё. Это мощнейшая система плагинов. Серьёзно, я нашел плагины которые покрывают для меня всё, кроме
+одного (но об этом позже).
+
+## Что такое 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);
+}
+%>
+
+## Задачи
+___
+<%
+`- [ ]`
+%>
+
+## Заметки
+___
+
+```
+
+и переходя к сегодняшней заметке я сразу получаю такую заготовку:
+
+![](/img/posts/obsidian/templater.png)
+
+### Остальные плагины
+
+Остальные тоже крутые, но я их приведу просто списком:
+
+- [obsidian-tasks-plugin](https://publish.obsidian.md/tasks/Introduction) — помогает более богато управлять
+ задачами. В частности, у меня проставляет дату завершения задачи, и проставляет даты дедлайна и прочее.
+- [obsidian-reminder-plugin](https://uphy.github.io/obsidian-reminder/) — трекает и напоминает про задачи
+- [calendar](https://github.com/liamcain/obsidian-calendar-plugin) — просто миникалендарь в боковой панели
+- [homepage](https://github.com/mirnovov/obsidian-homepage) — позволяет задать произвольную заметку "домашней"
+- [obsidian-icon-folder](https://github.com/timolins/obsidian-icon-folder) — позволяет задавать директориям и заметкам
+ произвольные иконки. Пример есть как раз на скриншоте выше.
+- [pomodoro-timer](https://github.com/eatgrass/obsidian-pomodoro-timer) — думаю, из названия и так понятно
+
+### А что же мне не хватает?
+
+Я упомянул выше что мне кое чего не хватает. А именно, постить заметку в мой блог по протоколу
+[Micropub](https://indieweb.org/Micropub).
+
+Только из-за Obsidian и того, что он использует Markdown я опять [вернулся на Hugo](/posts/2024-11-15-hugo/), который
+так же рендерится из Markdown.
+
+«Но Hugo это же генератор статичных сайтов, куда ты ему будешь отправлять заметку для публикации?» — можешь спросить
+меня ты. А я отвечу что у меня вот такой план:
+
+![план-кабан](/img/posts/obsidian/publish.png)
+
+То что выделено красным — ещё не существует в природе.
+
+micropub сервер для hugo я уже начал писать. Да, есть nanopub сервер, но у него есть два серьёзных недостатка, это PHP и
+то что его сделал не я.
+
+micropub плагин для obsidian я вижу сделать на основе существующего плагина rest-publish. Ну или как пойдёт.
+
+В общем, меня ждёт ещё очень много весёлого дрочева с этим всем.
+
+## Закругляюсь
+
+Пожалуй, пока на этом всё. Поделился как радостью использования Obsidian, так и планами на пет-проекты, что ещё надо-то?
+
+Если что, пишите комментарии. Лучше всего здесь, но можно и во всяких телеграмах-вкшках. \ No newline at end of file