Студия разработки сайтов и приложений

Netspark.ru

Скрипт для типографики

Typofilter.js

Про Notion, Obsidian и управление делишками

Будучи взрослым и относительно занятым человеком, постоянно пользуюсь тем или иным инструментом для ведения заметок. С основной целью — иметь удобный органайзер, не забывать делать дела, и вести заметки по работе. Например, обычно декомпозицию какой-нибудь крупной задачи я делаю прямо в заметках, и там же потом добаляю временные оценки.

Инструменты для заметок

Так получается, что раз в несколько лет инструмент для заметок и органайзера приходится менять. За всю рабочую жизнь чего только не попробовал — и всякие RTM, TaDa и Todoist, и более замороченный софт, сделанный по заветам GTD, и обычные календари и текстовые файлы, и переносил всё в телефон, и вытаскивал оттуда в компьютер, чего только не делал. Так что можно сказать, я тудушник (или тудак?) со стажем.

В конце-концов когда-то прижился вариант, где все что привязано к датам я писал в обычный календарь вроде аутлука (только в линуксе), а заметки и списки дел вел в мега-программе BasKet. Программа под KDE была отличная, даже rsync-синхронизацию заметок для нее сделал, чтобы между домашними компьютерами их синхронизировать. Тогда смартфоны еще не были широко распространены, и такая важная фича, как синхронизация через интернет, вызывала скорее недоумение. Выглядела программа вот так (прекрасно выглядела):

BasKet

Однако года через 3–4 оказалось, что телефоны в руках всё чаще, компьютеры бывают как дома, так и в офисе, офисов может быть два, и синхронизировать всё это будет очень не лишним. Пришлось закрывать (уже вроде бы не поддерживаемый к тому времени) BasKet, и вновь подбирать инструменты. И еще на несколько лет прижились:

— Evernote для ведения заметок
— Trello для канбан-досок
— Гугл-календарь для дел, привязанных к дням

Зачем вообще нужны эти заметки

Пользоваться таким вариантом было в принципе нормально, всё синхронизировано, доступно с самых разных устройств, да и сами программы довольно неплохие. Но все время удручало, что программ целых три, тогда как хотелось бы обойтись одной.

Первым под нож попал Гугл-календарь. Его я заменил канбан-доской со следующими параметрами:
— если дело в пределах ближайших дней 30, оно попадает на доску
— если дело позже, оно попадает в отдельный список Waiting list, вместе с делами, которые зависят от/ждут внешних событий, который живет на другой доске
— доска состоит из 7 колонок, которые называются, как нетрудно догадаться, понедельник, вторник, среда, четверг, пятница, суббота и воскресенье
— если дело относится к ближайшему дню, добавляю его в колонку без даты
— если же дело надо сделать через неделю или две, перед названием пишу дату, например [31.08] Отправить счет за месяц заказчику.

Вот например:

Weekly view

Таким образом я сразу вижу картину текущей недели и могу предположить, что будет на следующей. При этом ключевой момент — дело должно попадать в такой «календарь» только если его действительно нужно выполнить в этот день. Если же его можно сделать сегодня, или завтра, или через 3 дня — не принципиально, но сделать нужно, то оно попадает в другую канбан-доску, которая представляет собой так называемую матрицу Эйзенхауэра (очевидно, выполненную в 4 столбца вместо квадрата 2x2):

Tasks view

Концепция давно известная, предполагает разделение дел по приоритетам, плюс справа я к ней приставил колонку Waiting list, в неё добавляю дела, которые нужно либо начать не скоро (например, через два месяца), либо они зависят от внешних событий или действий других людей (например, «Когда заказчик оплатит счет, купить еды»). Соответственно, когда время настает, либо внешнее событие наступает — дело перетаскивается в соответствующую колонку.

Завершают мою систему еще 2 элемента. Это традиционная папка «Входящие», куда гуру gtd завещали сваливать все новые заметки, идеи, списки и ссылки до того, как они будут отсортированы. И еще одна канбан-доска, которая называется «Состояние проектов». Её я придумал, чтобы в крупную клетку периодически записывать прогресс по проектам, в которых я участвую, в виде краткого резюме. Например, «завершен этап 2, на следующей неделе должна пройти оплата», или «идет работа над системой статистики», «идет 14-я неделя переговоров, новостей нет». Для каждого проекта храню штук 5 карточек с такими последними записями, просто чтобы иметь возможность быстро получить грубую оценку состояния дел. А иногда, если какой-то проект замирает на время, это помогает вспомнить, где закончили, и там же начать.

В общем, вот они, эти четыре всадника электронного органайзера, Входящие, Дела, Состояние проектов, Неделя, Намджун, Чонгук, Чингачгук, Гойко, Митич, люблю вас ребята:

Weekly view

Tasks view

State view

List

Помимо органайзера вторым назначением системы заметок для меня, как наверно для многих, является ведение неких тематических блокнотов (или, по-модному, баз знаний). Например, у меня есть блокнот «Дом» с телефонами штукатуров, инженеров, строителей и садовников, списком хотелок где чего посадить, или покрасить, датами когда нужно котел обслуживать или масло в генераторе сменить. Есть блокнот про Unity (с сыном изучаем) — там ссылки на всякие ассеты, мануалы и ролики. И есть по блокноту на каждый рабочий проект — там всё подряд: расчеты бюджетов, декомпозиция задач, краткие todo-шки по активным задачам, полезные ссылки (на фигму, ТЗ, мануалы и пр.) И еще один такой блокнотик для полезной инфы по ведению бухгалтерии (которую я веду сам).

Совокупность органайзера и тематических блокнотов — и есть мой use case для всех этих заметок и канбанов. Так сказать, система управления делами. Главным условием того, чтобы вся эта система работала является регулярное обращение к ней с целью обзора. Иными словами, раз в недельку я открываю все эти блокноты и страницы, читаю состояния проектов, созерцаю списки, меняю приоритеты, переношу дела из списка ожидания, если надо, перебираю входящие, и т.д. Занимает это обычно не больше 15 минут. И если не забывать этого делать, то системы в принципе достаточно для решения основной задачи всего этого органайзинга. Каковая задача, как говорил гражданин Аллен, заключается не в том чтобы видеть список «что делать», а в том, чтобы в любой момент времени быстро увидеть список того, чего ты пока не делаешь. Чтобы знать, что ты ничего не упустил.

Notion

Для всего перечисленного достаточно системы полнотекстовых заметок и канбан-досок. Возврващаясь к инструментам, канбан-доски хорошо вести в Trello, так что от календаря удалось практически полностью избавиться. Единственное, для чего он еще пригоден до сих пор — это хранить даты дней рождений разных людей. И то, большинство я помню пока что сам, календарь больше для страховки. Многие также используют календарь из-за возможности настроить напоминание/уведомление. Лично меня эти уведомления бесят: в описанной выше системе многие дела, назначенные на условный четверг, можно будет сделать в любое время по обстоятельствам. Например, после дождя. Поэтому звякнувшее в 14:00 напоминание обычно не в кассу. Лично для меня напоминания работают только в случае с какими-нибудь назначенными онлайн-звонками через teams. Хотя и про них я обычно записываю и следовательно помню.

Так что несколько лет я пользовался Evernote + Trello, несмотря даже на то, что в evenote меня с самого начала бесил дурацкий формат их заметок и вытекающие из него проблемы с copy+paste. И в то же время хотелось сократить список инструментов до одного. То есть по сути мне был нужен Evenote с поддержкой канбан-досок. Периодически я проверял, но каждый раз оказывалось что таких подходящих приложений было на удивление не очень-то много (во всяком случае, удобных).

Пока однажды не попался мне на глаза Notion, и оказалось что вот он как раз и удобный, и формат заметок нормальный (markdown, в общем-то), и канбан поддерживается, и в БД можно поиграть (хотя мне конкретно это не нужно было), и живёт все это в облаке, и в чужие проекты можно добавляться. Немедленно переехал туда, и за исключением небольших недочетов был максимально доволен. Канбаны удобные, редактор не глючит, перетаскивать задачки и заметки между папками-блокнотами легко, таблицы есть, есть какие-то более сложные приблуды, которыми я так и не пользовался, коллаб есть даже. Немного раздражала только странная система Folder view, которая была нужна каждый раз чтобы сделать канбан или список содержимого. Но и к ней быстро привык и дальше пользовался только Notion.

Obsidian

И всё бы было хорошо, но несколько дней назад команда Notion сообщила, что в связи с очередным пакетом американских санкций скоро удалит все аккаунты из России. Ну или типа того. Посмотрел список отечественных заменителей, не впечатлился (не потому что плохие — они всё больше про другое), а потом вспомнил, что видел несколько раз гайды, где люди рассказывали как и зачем они используют Obsidian. Гайды эти я тогда не смотрел, потому что зачем — мне и так хорошо. Но и сейчас смотреть гайды не стал — стал сразу смотреть программу, и быстро понял, что вот это та самая программа, которая нужна. И принялся переносить.

Obsidian — это не облачное ПО, а обыкновенное, устанавливаемое на устройства пользователей. С «толстым» клиентом, то есть все основные фичи реализованы в устанавливаемом ПО, а не где-то там на сервере. Который, к слову, в данном случае и не нужен, но об этом позже. Софтинка поддерживает все что нужно: Win, Mac, iOS, Android и Linux (appimage, snap, deb, flatpack), так что взял deb-пакет и немедленно установил.

Тут стоит сразу отметить, что это не GPL, но во всяком случае — free for personal use. Это, а также локальное хранение заметок, позволяет предположить, что даже если в будущем появятся какие-то запреты или санкции, никто не помешает оставить уже установленную версию навсегда, аналогично идешкам intellij.

Импорт из Notion

После установки принялся импортировать заметки. Это оказалось нетрудно, вот список шагов:

  1. Идем в Notion
  2. Oткрываем свойства папки с заметками (это иконка с тремя точками)
  3. Выбираем экспорт
  4. Формат выбираем HTML
  5. Включаем Include subpages и не забываем create subdirectories
  6. Жмем экспорт, ждем пока скачается файл (или придет по почте ссылка на скачивание)
  7. Идем в Обсидиан, ставим плагин Importer
  8. Открываем его, выбираем формат файла Notion (zip)
  9. Указываем папку, в которую импортировать, или / для корневой папки
  10. Жмем Import и всё.

В силу того, что формат заметок и тут, и там — markdown, импортируется всё в основном отлично. Но если где вставлены изображения, они появятся в Обсидиане как отдельные файлы со ссылками на них в нужных заметках. У меня немного побились и стали кривыми супер-древние заметки, которые когда-то в Notion попали импортом из Evernote, в остальном прошло отлично.

Кстати, обратите внимание, что в Obsidian папка с заметками — это папка, а не заметка. То есть клик по ней не открывает «корневую» заметку, а просто показывает заметки внутри. Однако, если поставить плагин Folder notes, то «корневые» заметки из Notion импортнутся и создадутся соответствующие folder notes для тех, кому удобно такое поведение папок.

Выглядит Obsidian после установки, настройки, и импорта заметок у меня примерно вот так:

Общий вид

Список плагинов

В процессе настройки и миграции установил себе такой список плагинов:
— Excalidraw — плагин для рисовалки, можно как схемки из готовых блоков делать, так и рисовать от руки, что очень нравится моему galaxy s22 ultra со стилусом
— Advanced Tables — для улучшения работы с таблицами (не знаю в точности что оно делает, но видимо без него хуже)
— Kanban — для канбан-досок, очевидно
— Git — для синхронизации заметок через мой гитлаб-сервер
— Iconize — для добавления иконок из разных наборчиков к заметкам и папкам
— Importer — для импорта из notion, поставил → импортировал → удалил
— File Tree Alternative — альтернативный вью с отдельными панелями для папки и заметок, поставил, но отключил, как-то неудобно
— Folder Notes — позволяет создать отдельные заметки «для папки», то есть чтобы при клике на папку было видно эту «корневую» заметку, как в Notion
— Custom File Explorer — позволяет настроить ручную сортировку заметок и папок, отсуствие которой по умолчанию немного бесит поначалу; правда, пока не разобрался как этим плагином пользоваться

А тему пока поставил Blue Topaz.

Синхронизация через git

Поскольку обсидиан хранит заметки не где-то в облаке, а прямо на устройстве, хорошо бы их синхронизировать куда-нибудь. Если даже не заради использования на других устройствах, то хотя бы бэкапа для. Для этого есть разные плагины, есть и платный сервис в самом обсидиане (полагаю, он бы работал лучше всего, но уже через облако), а я остановился на родном и знакомом git. Потому что, во-первых, что еще может выбрать айтишник со стажем. А во-вторых — потому что у меня все равно есть сервачок с GitLab CE для работы, чего бы его и не задействовать.

Настроить синхронизацию несложно:

Синхронизация на PC (ubuntu, но это не важно)

  1. Создаем пустой репозиторий на сервере
  2. Идем в директорию с заметками, делаем git init
  3. Лично я добавил директорию .obsidian в .gitignore чтобы не коммитить настройки и данные софта
  4. Все остальное можно котролировать гитом: git add . && git commit -m 'initial commit'
  5. Добавляем репозиторий на сервере и пушим: git remote add origin <адрес репо> && git push origin master. Да, здесь и далее мы просто коммитим в master-ветку, для синхронизации заметок это не важно.
  6. Ставим плагин Git и открываем его настройки.
  7. Поскольку в папке с заметками уже есть .git, с этого момента дальше всё само будет работать. Авторизовываться не требуется, т.к. плагин будет использовать данные текущего пользователя. Так что если у вас (как у меня) авторизация на сервере с гитом происходит по ssh-ключику, всё будет работать само. Нужно только настроить частоту синхронизации и прочие мелочи типа имени-имейла автора коммитов и т.п.

Синхронизация на Android

Проще всего когда уже есть репозиторий, куда с PC уже синхронизируются заметки. Тогда:

  1. Идем в git/gitlab и делаем там access token. У токена должно быть право на запись.
  2. Ставим в приложении плагин Git, настраиваем его на папку где будут храниться заметки.
  3. Открываем Command palette (в гамбургер-меню внизу справа) и ищем там команду Git: Clone an existing remote repo. Выбираем ее.
  4. Вставляем URL репозитория вот таким образом:
https://ABCDEFGHIJKLMNOP@mygitlab.mydomain.com/username/reponame.git

где
ABCDEFGHIJKLMNOP — это access token из гитлаба,
mygitlab.mydomain.com/username/reponame.git — адрес репозитория.

  1. Указываем папку куда клонировать репозиторий.
  2. Перезапускаем obsidian и делаем настройки частоты клонирования и т.п. Лично у меня включены коммиты каждые 5 минут, коммиты после окончания изменений, и пулл при старте приложения.

И всё, синхронизация работает. Аналогичным образом можно добавить ещё устройств. Очень понравилось, что плагин Git явным образом показывает на экране toast-уведомления о своей работе (pulled 2 files, committed something, pushed 4 files to server, everything up to date, etc), добавляет уверенности, что всё будет хорошо.

Коллаборацию тут построить будет уже не так просто, хотя если договориться кто чего в основном правит, и если все участники хотя бы некоторое понимание «что такое гит» имеют, то базовый коллаб вполне возможен.

Комментарии и выводы

Что в целом можно сказать про Obsidian. В целом я доволен и это пока лучшее, что удалось использовать с описанными выше целями. Есть стойкое впечатление, что поставив нужные плагины можно добиться результатов получше чем в Notion. Что отдельно понравилось:

— понравилось, что заметки выводятся во вкладках как в браузере, и можно пришпилить (pin) нужные навсегда
— отдельное приложение по ощущениям работает гораздо быстрее, чем когда я открываю все что нужно в браузере
— если ты параноик, удобно, что можно хранить заметки у себя и синхронизировать гитом; при желании можно и папку с заметками зашифровать и расшифровывать только когда нужна (предполагаю, сам не пробовал)
— free for personal use
— есть прикольный graph view, превращающий все заметки в узлы графа:

Графы заметок

Хотя я пока не придумал, зачем мне это может быть нужно.

Некоторые комментарии и недостатки конечно тоже есть:
– карточки в канбане не являются отдельными файлами и их нельзя перетаскивать на другие доски, только вручную копировать текст
– из-за принципа заметка = файл и заголовок заметки = имя файла, запрещено использовать в названиях заметок символы, которые нельзя использовать в именах файлов (например, слэш). Возможно, это можно решить плагином, не искал
– к сожалению как-то непонятно устроена ручная сортировка (в ношне можно было просто драгндропом передвинуть папки в нужный порядок), пока не разобрался
– к сожалению не получается из интерфейса управлять шириной рабочей области: можно либо включить опцию «удобной для глаза» ширины, что портит работу с табличными данными, если в таблице больше 3 колонок; либо выключить — тогда все заметки будут во всю ширину экрана минус сайдбар слева. Я выбрал второй вариант.

Буду продолжать разбираться с делами.

P.S. За цензуру извините.

Комментарии