Как стать автором
Обновить
78
0

Пользователь

Отправить сообщение

Думаю, что тут зависит от изначального контекста.

Например, если человек учёный, то какие есть препятствия у того, чтобы его персональная работа пополнила научный фонд? Вариантов препятствий много: плагиат, некорректные методы исследования, фальсификация/фабрикация, конфликт интересов и т.д. Т.е., например, в своей базе или в своих лабораторных журналах человек может достичь какого-то результата, но этого может оказаться недостаточным для публикации.

Другой вариант – это соглашение о неразглашении. Нередко к этому могут ещё накладываться условия по типу – на весь интеллектуальный труд работника компания имеет исключительное право. Т.е. опять ситуация, когда у человека могут быть личные наработки (личная база), но опубликовать их нельзя.

Можно спуститься и до уровня определённого человека. Так, например, человеку может быть просто невыгодно с кем-то делиться своими результатами, ибо из-за этого он потеряет конкурентное преимущество или иную выгоду.

Есть вариант и попроще. Например, формат ведения персональной базы может конфликтовать с форматом публичной базы. Допустим в персональной базе используется сетевидная структура упорядочивания, а в публичной требуется древовидная.

И да... Как видно из примеров выше, понятие "универсальности" не играет роли.

потратил минут 15

Большой кнопки "КУПИТЬ" я не сделал, хах. Это дааа...

Ну и цена не адекватная.

Согласен. Нужно было раза в 4 больше сделать.

Любая книга любого автора на 12 часов стоит в 5-10 раз дешевле

Вы не с тем сравниваете.

Русскоязычный курс Second Brain 100$
Ideaverse 250$
Mischa van den Burg 60€
Bryan Jenks через подписку 14$
Как «нечитать» книги 368$ + Джедайские техники 180$ + ХУЛИганская ЛОГИКА 368$ = 916$

хотя авторы явно затрачивали не меньше усилий

Думаю дело не в усилиях. Точнее не только в них. Мне, например, из списка выше нравится только Bryan Jenks. Остальные, либо пересказ справки и других базовых материалов, либо маркетинговая чепуха, либо слишком примитивные идеи и подходы.

Давайте я просто задам контекст и мы от него порассуждаем.

Представим, что у нас есть цель – отреставрировать исторический памятник, а именно небольшой за́мок. Мы эту цель будем реализовывать через организацию некоммерческого фонда.

Данная цель является комплексной. Она требует и знаний, и различных действий. При это эта цель подразумевает довольно большое количество контроля с нашей стороны.

Положим, мы где-то услышали, что есть весьма гибкий инструмент Obsidian, который позволяет и проекты вести, и задачами управлять, и заметки делать, и документы структурировать, и при этом все данные хранятся у нас, т.е. у нас нет рисков, что результаты нашей деятельностью куда-то сольют.

Вопрос. Что в такой ситуации будет "рудой", а что "ракетой"?

Крутые у вас, конечно, аналогии)

Спасибо за ваш комментарий)

Есть у меня предположение, что если я сейчас поменяю в статье слово "Factorio" на слово "Stationeers", то суть аргументов от этого сильно не пострадает. Но зато пострадает ваша позиция, а точнее она поменяется на противоположную. Так вы бы уже написали: "Да вообще со всем согласен. Игра сложная. Из-за особенностей механик без статей не смог разобраться".

Короче говоря, вы просто похвастались, а не выделили какие-то сущностные проблемы.

Интересно, как вы к такому вопросу пришли...

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

Если отталкиваться от мысли выше, то ваш вопрос выглядит несколько непонятным для меня. Но всё же попробую на него ответить.

писать заметки для вас нечто несложное, базовое и второстепенное

Когда-то да, когда-то нет. Зависит от контента и конечных целей. Написать заметку по какому-то алгоритму, модели или уравнению порой сложно. А вот написать заметку о планировании сильно проще. Но бывает наоборот. Порой из-за противоречивости, пусть и простых идей, трудно сделать однозначный вывод. И бывает, что легче сделать вывод, хоть и на основе сложных вещей, когда они выстроены в явную структуру. Или например, написание дневника может быть рутинным, второстепенным мероприятием, а может оказаться решающим при совершении какого-то выбора.

В общем я не признаю, что писать заметки это нечто несложное, базовое и второстепенное. Не признаю хотя бы по той причине, что эти свойства могут меняться в процессе.

разбираться с обсидиан - основная цель и это сложно как rocket science

Нет. Основная цель не в этом и Obsidian не rocket science.

Я бы в вашем предложении переставил слова местами, чтобы всё стало на место, хах.

Если основная цель rocket science, то, возможно, есть смысл в процессе разобраться в Obsidian.

Ваш ответ, конечно, развёрнутый, но в нём не хватает значимых пояснений.

задачи моих хранилищ и привычка обработки информации отличалась

Какие у вас были задачи и чем обработка информации отличалась?

создать "песочницу", где будет штук 30 заметок (или достаточное число для создания неоднородной массы), поработать некоторое время

Чем он по вашему лучший?

и со временем само придёт понимание

Из чего это понимание придёт? И главное сколько времени нужно ждать?

Исходя из этого, какая практика может быть при изучении физики, математики, биологии?

Для физики можно начать делать что-то типа такого.

С математикой будет проще прийти в какой-нибудь исследовательский институт и попросить, чтобы там нашли нерешённую проблему по уровню. Ещё можно заняться олимпиадами.

В случае биологии можно устроиться на подработку в местный ботанический сад или зоопарк.

В голову приходят только различные задачки, задачи могут являться применением знаний на практике?

Ну, главное какие задачки. Если задачки, которые идут сразу после теории, то это просто способ для закрепления материала. Если задачки в стиле задизайните и поставьте эксперимент, то это уже ближе к применению знаний на практике.

никогда не сможет быть равна эффекту физической близости карточек со схожими адресами в физической картотеке.

В чём заключается эффект физической близости карточек со схожими адресами?

Ещё у Scot Scheper было подробно рассказано про Antinet и что буква А и отвечает за аналоговость.

Процитируйте то, что там было рассказано или хотя напишите плюс-минус конкретные места, на которые вы ссылаетесь. А то как-то не хочется в испорченный телефон играть.

Действительно растущую древовидную структуру создать сложно в обсидиане

Что значит действительно растущая древовидная структура? Был бы ещё рад, если вы сначала объяснили или нарисовали как вы в принципе понимаете просто понятие "древовидная структура".

говорю как человек который пользуется им уже почти 3 года

Покажите свои попытки и объясните почему они по вашему не являются "действительно растущей древовидной структурой".

Дело в том, что я довольно давно и глубоко занимаюсь изучением цеттелькастен Лумана и его вариациями.

Вы давно занимаетесь тем, что нигде не описано и не сформулировано.

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

Ну, и к теме глубины. Мне кажется, что этот разбор лучше, чем ваша статья про недостатки Цеттелькастен. Хотя юзер, скорее всего, не тратил уйму времени на разбирательства как у Лумана индексы устроены. Разбор лучше просто банально из-за того, что юзер открыл картотеку Лумана и просто начал её так или иначе тестировать на какие-то процессы. Вы же в статье скорее выдумали недостатки.

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

Ну, если написать в поиске "Obsidian гайд", то тоже что-то моё появится. Это разве даёт право мне делать какие-то невразумительные высказывания?

Чуть подробнее можно тут прочитать: https://fedorovpishet.ru/tri-glavnyh-istochnika-o-czettelkasten/

Неуникальная статья с ссылками на уникальные ресурсы. Я тоже похожее умею делать. Кажется, что в этом нет большой трудности.

Другое дело... Перевести с немецкого интервью с Луманом или перевести саму статью Лумана о своей же картотеке. Это как-то больше походит на "я довольно давно и глубоко занимаюсь изучением цеттелькастен Лумана и его вариациями".

Про мой опыт общения с Obsidian, тут ты не угадал. У меня как раз одна из самых популярных статей в блоге — это «10 плагинов и 3 темы для Obsidian: делаем из приложения конфетку» https://fedorovpishet.ru/pimp-my-obsidian/.

Темы – это в большей степени вкусовщина.

Ни один из 10 плагинов не относится к написанию и структурированию заметок.

И про организацию последовательностей ссылками, канвасом или датавью тоже знаю. Сам пользуюсь.

Знаете и всё равно делает броские заявления?

Ещё у нас в чатике один парень недавно сделал годный плагин, который позволяет сделать нужную заметку родительской для других. Тоже типа ветки размышлений получаются, почти как у Лумана.

Кажется, это аргумент в мою копилку.

Но это всё-таки, по-моему, костыли. Вот в Scrivener или Ulysses действительно можно делать иерархическую последовательность документов. Там это намного проще реализовано.

Что значит "действительно иерархическая последовательность"? Если я в Obsidian разложу заметки по папкам и пронумерую их в стиле десятичной классификации Дьюи, то это будет "действительно иерархической последовательностью"?

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

Неее. Ваш комментарий был больше похож на то, что вы в Obsidian едва ли разобрались.

Забавно, когда коммент состоит всего из двух абзацев, но которые забыли согласовать между собой.

Если метод нигде не описан и не сформулирован, то откуда вам знать чем Цеттелькастен не является и в чём его главная особенность?

последовательность записей, чего в Obsidian добиться довольно сложно

Последовательность в записях я могу добиться на раз-два.

Смотрите:

- [[заметка 1]]
  - [[заметка 2]]
    - [[заметка 3]]
      - [[заметка 4]]

Чем не последовательность?

А можно ещё вот так:

заметка 1.md
---

[[заметика 2]]
заметка 2.md
---

[[заметка 3]]
заметка 3.md
---

[[заметка 4]]

Смотрите ещё как можно:

заметка 1.md
---
next:
  - [[заметика 2]]
  - [[заметика 3]] 
  - [[заметика 4]]
---

И ещё можно вот так:

# Основная мысль

Текст-текст-текст

## Подмысль

Текст-текст

## Ещё подмысль

Текст-текст

# Другая основная мысль
...

Это тоже последовательность. Просто она обеспечивается заголовками, а не ссылками.

И ещё можно просто словами обозначать последовательность записей:

[[элемент 1]] связан с [[элемент 2]]
[[элемент 1]] находится в противоречии с [[элемент 2]]
[[элемент 1]] и [[элемент 2]] образуют [[элемент 3]]
[[элемент 2]] продолжает [[элемент 4]] и [[элемент 5]]

Можно масштабировать логику с последовательностями:

clusters.md
---

- [[cluster 1]]
- [[cluster 2]]
  - [[cluster 2.1]]
  - [[cluster 2.2]]
cluster 1.md
---

- [[note]]
- [[note]]
- [[note]]
  - [[note]]
  - [[note]]
- [[note]]
- ...

Можно последовательность обеспечить за счёт каких-нибудь дурацких числовых или буквенных префиксах:

- [[1.0 note]]
  - [[1.1 note]]
    - ...
- [[2.0 note]]
  - [[2.1 note]]
    - [[2.1.1 note]]
    - ...
  - ...
- ...

Можно изощриться и сделать преемственность на вложенных тегах:

---
tags:
  - 1_topic/1_subtopic
---

note
note
---
tags:
  - 1_topic/2_subtopic
---

note
note

Можно и более абстрактную последовательность сделать:

# Stage 1 (hypothesis)

- [[note 1]]
- ...

# Stage 2 (proven claims)

- [[note 2]]
- ...

# Stage 3 (facts and theories)

- [[note 3]]
- ...

Тут будет тоже последовательность, но скорее завязанная на процессе доказательства, а не на связях.

Ещё можно сделать иллюстрацию в Excalidraw, накидать в неё ссылок и вложить в неё ссылку на другую такую же агрегирующую иллюстрацию.

Можно обеспечить последовательность мыслей через MindMap. И также как с рисунками, можно сослаться из одной карты на другую.

Ещё как вариант, последовательность можно обеспечить за счёт специфических фреймворков по типу Discourse graph.

Можно также автоматизировать вложенность заметок с помощью Dataview или Breadcrumbs. Там уже будут другие подходы.

И есть наверняка куча ещё других способов, которые мне сейчас просто в голову не пришли.

Короче говоря, если вы всего два раза Obsidian открыли, то это ещё не значит, что в нём прям сложно добиться последовательностей заметок.

Было бы совсем нелишним, если бы вы добавили примеры заполненных шаблонов и выводов Dataview.

И ещё кажется, что оборачивать всё в try/catch это излишне. Templater/Dataview и так ругнутся, если будет ошибка.

К сожалению, интерфейс Habr намертво зависает, когда я пытаюсь исправить статью, поэтому сделаю дополнения здесь.

___________________

Чтобы поменять отображение тегов, можно воспользоваться плагином. Устанавливается он через BRAT. Нажимаете add beta plugin, пишете flowing-abyss/obsidian-tag-replacer, жмете add plugin.

В настройках плагина задаёте теги и как их нужно отобразить в заметке.

Далее жмёте Generate CSS. Сформируется .obsidian/snippets/tags.css.

___________________

Некто Dmitry_Fert сделал месячный календарь, который отображает задачи, имеющие дату выполнения и тег #task. Этот календарь шикарно сочетается с подходом из данной статьи.

Вот такие задачи он собирает:

- [ ] #task Текст задачи 📅 2024-09-09

Кайф ещё в том, что при наведении на календарь, показываются какие именно задачи запланированы.

___________________

Запрос для upcoming можно немного интереснее сделать. Можно сгруппировать задачи по годам и месяцам. Делается это так:

not done
(due after tomorrow) OR (scheduled after tomorrow)
group by function task.happens.format("**<u>YYYY%%MM%% (MMMM)</u>**")
group by function task.happens.format("DD-dddd")
hide task count
hide due date
hide recurrence rule
hide on completion

Ну, и да. Я когда давно решил поэкспериментировать и в одну страницу запихнул 70 Dataview-запросов.

Представьте себе, Obsidian ни разу не вылетел от такого. Он на 2 секунды фризился при открытии страницы, но потом всё равно чётко отображал заметки и при этом, что удивительно, динамически обновлял таблицы без лагов или каких-то артефактов.

Hidden text
<%*
let title = tp.file.title
if (title.startsWith("Untitled")) {
title = await tp.system.prompt("Title");
}
await tp.file.rename(title)
-%>
<% "---" %>
cssclass: category
obsidianUIMode: preview
tags: 🗺️
aliases: 
- "! <%* tR += title %>"
library:
- "[<%* -%>[categories]]"
next:
- "[[<%* tR += title %> hierarchy]]"
<% "---" %>
# Subcategories

> [!subcategories]- ⤵️ SUBCATEGORIES (`$=dv.pages('#🗺️').where(l => dv.func.contains(l.file.inlinks, dv.current().file.link)).length`)
> 

# Hierarchy and meta-notes

> [!hierarchy]- 🧬 HIERARCHY (`$=dv.pages('#🧬').where(l => dv.func.contains(l.file.inlinks, dv.current().file.link)).length`)
> ![[notes hierarchy]]

> [!meta-notes]- 🔎 META-NOTES (`$=dv.pages('#🔎').where(p => dv.func.contains(p.category, dv.current().file.link)).length`)
> ```dataview
> LIST
> 
> FROM #🔎
> 		
> WHERE
> 	contains(file.outlinks, [[]]) OR contains(category, [[]])
> 
> SORT file.name ASC
> ```

# Projects

> [!projects]- 🏢 PROJECTS (`$=dv.pages('"projects" and -"projects/templates"').where(p => p.class == "project" && p.status != "⬛" && dv.func.contains(p.category, dv.current().file.link)).length`)
> > [!projects]+ 🟦 (<font color="#1277d3">`$=dv.pages('"projects" and -"projects/templates"').where(p => p.class == "project" && p.status == "🟦" && dv.func.contains(p.category, dv.current().file.link)).length`</font>)
> > ```dataview
> > TABLE WITHOUT ID
> >  	file.link AS "Project",
> >  	category AS "Categories",
> >  	status AS "Status",
> >  	platform AS "Platform"
> >  
> >  FROM "projects" AND !"projects/templates"
> >  
> >  WHERE
> >  		contains(file.outlinks, [[]]) OR contains(category, [[]])
> >  	AND
> >  		contains(class, "project")
> >  	AND
> > 	 	status = "🟦"
> >  
> >  SORT file.name ASC
> >  ```
> 
> > [!projects]- OTHERS (<font color="#ffe55c">`$=dv.pages().where(p => p.class == "project" && p.status == "💡" && dv.func.contains(p.category, dv.current().file.link)).length`</font>/<font color="#f44133">`$=dv.pages('"projects" and -"projects/templates"').where(p => p.class == "project" && p.status == "🟥" && dv.func.contains(p.category, dv.current().file.link)).length`</font>/<font color="#7db440">`$=dv.pages('"projects" and -"projects/templates"').where(p => p.class == "project" && p.status == "🟩" && dv.func.contains(p.category, dv.current().file.link)).length`</font> + <font color="#3f3f3f">`$=dv.pages('"projects" and -"projects/templates"').where(p => p.class == "project" && p.status == "⬛" && dv.func.contains(p.category, dv.current().file.link)).length`</font>)
> > ___
> > > [!projects]- 💡 (<font color="#ffe55c">`$=dv.pages().where(p => p.class == "project" && p.status == "💡" && dv.func.contains(p.category, dv.current().file.link)).length`</font>)
> > > ```dataview
> > > LIST
> > >  
> > >  FROM "projects" AND !"projects/templates"
> > >  
> > >  WHERE
> > >  		contains(file.outlinks, [[]]) OR contains(category, [[]])
> > >  	AND
> > >  		contains(class, "project")
> > >  	AND
> > > 	 	status = "💡"
> > >  
> > >  SORT file.name ASC
> > >  ```
> >
> > > [!projects]- 🟥 (<font color="#f44133">`$=dv.pages('"projects" and -"projects/templates"').where(p => p.class == "project" && p.status == "🟥" && dv.func.contains(p.category, dv.current().file.link)).length`</font>)
> > > ```dataview
> > > TABLE WITHOUT ID
> > >  	file.link AS "Project",
> > >  	category AS "Categories",
> > >  	status AS "Status",
> > >  	platform AS "Platform"
> > >  
> > >  FROM "projects" AND !"projects/templates"
> > >  
> > >  WHERE
> > >  		contains(file.outlinks, [[]]) OR contains(category, [[]])
> > >  	AND
> > >  		contains(class, "project")
> > >  	AND
> > > 	 	status = "🟥"
> > >  
> > >  SORT file.name ASC
> > >  ```
> >
> > > [!projects]- 🟩 (<font color="#7db440">`$=dv.pages('"projects" and -"projects/templates"').where(p => p.class == "project" && p.status == "🟩" && dv.func.contains(p.category, dv.current().file.link)).length`</font>)
> > > ```dataview
> > > TABLE WITHOUT ID
> > >  	file.link AS "Project",
> > >  	category AS "Categories",
> > >  	status AS "Status",
> > >  	platform AS "Platform"
> > >  
> > >  FROM "projects" AND !"projects/templates"
> > >  
> > >  WHERE
> > >  		contains(file.outlinks, [[]]) OR contains(category, [[]])
> > >  	AND
> > >  		contains(class, "project")
> > >  	AND
> > > 	 	status = "🟩"
> > >  
> > >  SORT file.name ASC
> > >  ```
> > ___
> > > [!projects]- ⬛ <font color="#3f3f3f">(`$=dv.pages('"projects" and -"projects/templates"').where(p => p.class == "project" && p.status == "⬛" && dv.func.contains(p.category, dv.current().file.link)).length`)</font>
> > > ```dataview
> > > TABLE WITHOUT ID
> > >  	file.link AS "Project",
> > >  	category AS "Categories",
> > >  	status AS "Status",
> > >  	platform AS "Platform"
> > >  
> > >  FROM "projects" AND !"projects/templates"
> > >  
> > >  WHERE
> > >  		contains(file.outlinks, [[]]) OR contains(category, [[]])
> > >  	AND
> > >  		contains(class, "project")
> > >  	AND
> > > 	 	status = "⬛"
> > >  
> > >  SORT file.name ASC
> > >  ```
> > ___

# Sources

> [!sources]- 🗄️ SOURCES (`$=dv.pages('"sources" and -"sources/templates"').where(p => p.class && p.status != "⬛" && dv.func.contains(p.category, dv.current().file.link)).length`)
> > [!sources]+ STATUSES (<font color="#1277d3">`$=dv.pages('"sources" and -"sources/templates"').where(p => p.class && (p.status == "🟦" || p.status == "⚛️") && dv.func.contains(p.category, dv.current().file.link)).length`</font>/<font color="#f44133">`$=dv.pages('"sources" and -"sources/templates"').where(p => p.class && p.status == "🟥" && dv.func.contains(p.category, dv.current().file.link)).length`</font>/<font color="#7db440">`$=dv.pages('"sources" and -"sources/templates"').where(p => p.class && p.status == "🟩" && dv.func.contains(p.category, dv.current().file.link)).length`</font>/`$=dv.pages('"sources" and -"sources/templates"').where(p => p.class && p.status != "⬛" && dv.func.contains(p.category, dv.current().file.link)).length`) + <font color="#3f3f3f">(`$=dv.pages('"sources" and -"sources/templates"').where(p => p.class && p.status == "⬛" && dv.func.contains(p.category, dv.current().file.link)).length`)</font>
> > ___
> > > [!sources]+ 🟦 (<font color="#1277d3">`$=dv.pages('"sources" and -"sources/templates"').where(p => p.class && (p.status == "🟦" || p.status == "⚛️") && dv.func.contains(p.category, dv.current().file.link)).length`</font>)
> > > ```dataview
> > > TABLE WITHOUT ID
> > > 	file.link AS "Источник",
> > > 	class AS "Тип",
> > > 	status AS "Статус",
> > > 	category AS "Категории",
> > > 	author AS "Автор(ы)",
> > > 	children AS "Конспекты",
> > > 	zotero_link AS "Zotero",
> > > 	url AS "url"
> > > FROM "sources" AND !"sources/templates"
> > > WHERE 
> > > 		contains(category, [[]])
> > > 	AND
> > > 		class
> > > 	AND
> > > 		(status = "🟦" or status = "⚛️")
> > > 
> > > SORT choice(status = "⚛️", "1", choice(status = "🟦", "2", "")) ASC
> > > ```
> > 
> > > [!sources]- 🟥 (<font color="#f44133">`$=dv.pages('"sources" and -"sources/templates"').where(p => p.class && p.status == "🟥" && dv.func.contains(p.category, dv.current().file.link)).length`</font>)
> > > ```dataview
> > > TABLE WITHOUT ID
> > > 	file.link AS "Источник",
> > > 	class AS "Тип",
> > > 	status AS "Статус",
> > > 	category AS "Категории",
> > > 	author AS "Автор(ы)",
> > > 	children AS "Конспекты",
> > > 	zotero_link AS "Zotero",
> > > 	url AS "url"
> > > FROM "sources" AND !"sources/templates"
> > > WHERE 
> > > 		contains(category, [[]])
> > > 	AND
> > > 		class
> > > 	AND
> > > 		status = "🟥"
> > > 
> > > SORT file.name ASC
> > > ```
> > 
> > > [!sources]- 🟩 (<font color="#7db440">`$=dv.pages('"sources" and -"sources/templates"').where(p => p.class && p.status == "🟩" && dv.func.contains(p.category, dv.current().file.link)).length`</font>)
> > > ```dataview
> > > TABLE WITHOUT ID
> > > 	file.link AS "Источник",
> > > 	class AS "Тип",
> > > 	status AS "Статус",
> > > 	category AS "Категории",
> > > 	author AS "Автор(ы)",
> > > 	children AS "Конспекты",
> > > 	zotero_link AS "Zotero",
> > > 	url AS "url"
> > > FROM "sources" AND !"sources/templates"
> > > WHERE 
> > > 		contains(category, [[]])
> > > 	AND
> > > 		class
> > > 	AND
> > > 		status = "🟩"
> > > 
> > > SORT file.name ASC
> > > ```
> > ___
> > > [!sources]- ⬛ <font color="#3f3f3f">(`$=dv.pages('"sources" and -"sources/templates"').where(p => p.class && p.status == "⬛" && dv.func.contains(p.category, dv.current().file.link)).length`)</font>
> > > ```dataview
> > > TABLE WITHOUT ID
> > > 	file.link AS "Источник",
> > > 	class AS "Тип",
> > > 	status AS "Статус",
> > > 	category AS "Категории",
> > > 	author AS "Автор(ы)",
> > > 	children AS "Конспекты",
> > > 	zotero_link AS "Zotero",
> > > 	url AS "url"
> > > FROM "sources" AND !"sources/templates"
> > > WHERE 
> > > 		contains(category, [[]])
> > > 	AND
> > > 		class
> > > 	AND
> > > 		status = "⬛"
> > > 
> > > SORT file.name ASC
> > > ```
> > ___
> 
> > [!sources]- CLASSES (🧾 `$=dv.pages('"sources" and -"sources/templates"').where(p => p.class == "article" && p.status != "⬛" && dv.func.contains(p.category, dv.current().file.link)).length` / 📖 `$=dv.pages('"sources" and -"sources/templates"').where(p => p.class == "book" && p.status != "⬛" && dv.func.contains(p.category, dv.current().file.link)).length` / 🧑‍🏫 `$=dv.pages('"sources" and -"sources/templates"').where(p => p.class == "course" && p.status != "⬛" && dv.func.contains(p.category, dv.current().file.link)).length` / 🎬 `$=dv.pages('"sources" and -"sources/templates"').where(p => p.class == "movie" && p.status != "⬛" && dv.func.contains(p.category, dv.current().file.link)).length` / 📻 `$=dv.pages('"sources" and -"sources/templates"').where(p => p.class == "podcast" && p.status != "⬛" && dv.func.contains(p.category, dv.current().file.link)).length` / 📺 `$=dv.pages('"sources" and -"sources/templates"').where(p => p.class == "video" && p.status != "⬛" && dv.func.contains(p.category, dv.current().file.link)).length` ) 🗄️ `$=dv.pages('"sources" and -"sources/templates"').where(p => p.class && p.status != "⬛" && dv.func.contains(p.category, dv.current().file.link)).length`
> > ___
> > >[!sources]- 🧾 (<font color="#1277d3">`$=dv.pages('"sources" and -"sources/templates"').where(p => p.class == "article" && (p.status == "🟦" || p.status == "⚛️") && dv.func.contains(p.category, dv.current().file.link)).length`</font>/<font color="#f44133">`$=dv.pages('"sources" and -"sources/templates"').where(p => p.class == "article" && p.status == "🟥" && dv.func.contains(p.category, dv.current().file.link)).length`</font>/<font color="#7db440">`$=dv.pages('"sources" and -"sources/templates"').where(p => p.class == "article" && p.status == "🟩" && dv.func.contains(p.category, dv.current().file.link)).length`</font>/`$=dv.pages('"sources" and -"sources/templates"').where(p => p.class == "article" && p.status != "⬛" && dv.func.contains(p.category, dv.current().file.link)).length`)
> > > ```dataview
> > > TABLE WITHOUT ID
> > > 	file.link AS "Источник",
> > > 	status AS "Статус",
> > > 	category AS "Категории",
> > > 	author AS "Автор(ы)",
> > > 	children AS "Конспекты",
> > > 	zotero_link AS "Zotero",
> > > 	url AS "url"
> > > FROM "sources" AND !"sources/templates"
> > > WHERE 
> > > 		contains(category, [[]])
> > > 	AND
> > > 		class = "article"
> > > 	AND 
> > > 		status != "⬛"
> > > 
> > > SORT choice(status = "⚛️", "1", choice(status = "🟦", "2", choice(status = "🟥", "3", choice(status = "🟩", "4", "")))) ASC
> > > ```
> >
> > > [!sources]- 📖 (<font color="#1277d3">`$=dv.pages('"sources" and -"sources/templates"').where(p => p.class == "book" && (p.status == "🟦" || p.status == "⚛️") && dv.func.contains(p.category, dv.current().file.link)).length`</font>/<font color="#f44133">`$=dv.pages('"sources" and -"sources/templates"').where(p => p.class == "book" && p.status == "🟥" && dv.func.contains(p.category, dv.current().file.link)).length`</font>/<font color="#7db440">`$=dv.pages('"sources" and -"sources/templates"').where(p => p.class == "book" && p.status == "🟩" && dv.func.contains(p.category, dv.current().file.link)).length`</font>/`$=dv.pages('"sources" and -"sources/templates"').where(p => p.class == "book" && p.status != "⬛" && dv.func.contains(p.category, dv.current().file.link)).length`)
> > > ```dataview
> > > TABLE WITHOUT ID
> > > 	file.link AS "Источник",
> > > 	status AS "Статус",
> > > 	category AS "Категории",
> > > 	author AS "Автор(ы)",
> > > 	children AS "Конспекты",
> > > 	zotero_link AS "Zotero",
> > > 	url AS "url"
> > > FROM "sources" AND !"sources/templates"
> > > WHERE 
> > > 		contains(category, [[]])
> > > 	AND
> > > 		class = "book"
> > > 	AND
> > > 		status != "⬛"
> > > 
> > > SORT choice(status = "⚛️", "1", choice(status = "🟦", "2", choice(status = "🟥", "3", choice(status = "🟩", "4", "")))) ASC
> > > ```
> >
> > >[!sources]- 🧑‍🏫 (<font color="#1277d3">`$=dv.pages('"sources" and -"sources/templates"').where(p => p.class == "course" && (p.status == "🟦" || p.status == "⚛️") && dv.func.contains(p.category, dv.current().file.link)).length`</font>/<font color="#f44133">`$=dv.pages('"sources" and -"sources/templates"').where(p => p.class == "course" && p.status == "🟥" && dv.func.contains(p.category, dv.current().file.link)).length`</font>/<font color="#7db440">`$=dv.pages('"sources" and -"sources/templates"').where(p => p.class == "course" && p.status == "🟩" && dv.func.contains(p.category, dv.current().file.link)).length`</font>/`$=dv.pages('"sources" and -"sources/templates"').where(p => p.class == "course" && p.status != "⬛" && dv.func.contains(p.category, dv.current().file.link)).length`)
> > > ```dataview
> > > TABLE WITHOUT ID
> > > 	file.link AS "Источник",
> > > 	status AS "Статус",
> > > 	category AS "Категории",
> > > 	author AS "Автор(ы)",
> > > 	children AS "Конспекты",
> > > 	zotero_link AS "Zotero",
> > > 	url AS "url"
> > > FROM "sources" AND !"sources/templates"
> > > WHERE 
> > > 		contains(category, [[]])
> > > 	AND
> > > 		class = "course"
> > > 	AND
> > > 		status != "⬛"
> > > 
> > > SORT choice(status = "⚛️", "1", choice(status = "🟦", "2", choice(status = "🟥", "3", choice(status = "🟩", "4", "")))) ASC
> > > ```
> >
> > > [!sources]- 🎬 (<font color="#1277d3">`$=dv.pages('"sources" and -"sources/templates"').where(p => p.class == "movie" && (p.status == "🟦" || p.status == "⚛️") && dv.func.contains(p.category, dv.current().file.link)).length`</font>/<font color="#f44133">`$=dv.pages('"sources" and -"sources/templates"').where(p => p.class == "movie" && p.status == "🟥" && dv.func.contains(p.category, dv.current().file.link)).length`</font>/<font color="#7db440">`$=dv.pages('"sources" and -"sources/templates"').where(p => p.class == "movie" && p.status == "🟩" && dv.func.contains(p.category, dv.current().file.link)).length`</font>/`$=dv.pages('"sources" and -"sources/templates"').where(p => p.class == "movie" && p.status != "⬛" && dv.func.contains(p.category, dv.current().file.link)).length`)
> > > ```dataview
> > > TABLE WITHOUT ID
> > > 	file.link AS "Источник",
> > > 	status AS "Статус",
> > > 	category AS "Категории",
> > > 	author AS "Автор(ы)",
> > > 	children AS "Конспекты",
> > > 	zotero_link AS "Zotero",
> > > 	url AS "url"
> > > FROM "sources" AND !"sources/templates"
> > > WHERE 
> > > 		contains(category, [[]])
> > > 	AND
> > > 		class = "movie"
> > > 	AND
> > > 		status != "⬛"
> > > 
> > > SORT choice(status = "⚛️", "1", choice(status = "🟦", "2", choice(status = "🟥", "3", choice(status = "🟩", "4", "")))) ASC
> > > ```
> > 
> > > [!sources]- 📻 (<font color="#1277d3">`$=dv.pages('"sources" and -"sources/templates"').where(p => p.class == "podcast" && (p.status == "🟦" || p.status == "⚛️") && dv.func.contains(p.category, dv.current().file.link)).length`</font>/<font color="#f44133">`$=dv.pages('"sources" and -"sources/templates"').where(p => p.class == "podcast" && p.status == "🟥" && dv.func.contains(p.category, dv.current().file.link)).length`</font>/<font color="#7db440">`$=dv.pages('"sources" and -"sources/templates"').where(p => p.class == "podcast" && p.status == "🟩" && dv.func.contains(p.category, dv.current().file.link)).length`</font>/`$=dv.pages('"sources" and -"sources/templates"').where(p => p.class == "podcast" && p.status != "⬛" && dv.func.contains(p.category, dv.current().file.link)).length`)
> > > ```dataview
> > > TABLE WITHOUT ID
> > > 	file.link AS "Источник",
> > > 	status AS "Статус",
> > > 	category AS "Категории",
> > > 	author AS "Автор(ы)",
> > > 	children AS "Конспекты",
> > > 	zotero_link AS "Zotero",
> > > 	url AS "url"
> > > FROM "sources" AND !"sources/templates"
> > > WHERE 
> > > 		contains(category, [[]])
> > > 	AND
> > > 		class = "podcast"
> > > 	AND
> > > 		status != "⬛"
> > > 
> > > SORT choice(status = "⚛️", "1", choice(status = "🟦", "2", choice(status = "🟥", "3", choice(status = "🟩", "4", "")))) ASC
> > > ```
> > 
> > > [!sources]- 📺 (<font color="#1277d3">`$=dv.pages('"sources" and -"sources/templates"').where(p => p.class == "video" && (p.status == "🟦" || p.status == "⚛️") && dv.func.contains(p.category, dv.current().file.link)).length`</font>/<font color="#f44133">`$=dv.pages('"sources" and -"sources/templates"').where(p => p.class == "video" && p.status == "🟥" && dv.func.contains(p.category, dv.current().file.link)).length`</font>/<font color="#7db440">`$=dv.pages('"sources" and -"sources/templates"').where(p => p.class == "video" && p.status == "🟩" && dv.func.contains(p.category, dv.current().file.link)).length`</font>/`$=dv.pages('"sources" and -"sources/templates"').where(p => p.class == "video" && p.status != "⬛" && dv.func.contains(p.category, dv.current().file.link)).length`)
> > > ```dataview
> > > TABLE WITHOUT ID
> > > 	file.link AS "Источник",
> > > 	status AS "Статус",
> > > 	category AS "Категории",
> > > 	author AS "Автор(ы)",
> > > 	children AS "Конспекты",
> > > 	zotero_link AS "Zotero",
> > > 	url AS "url"
> > > FROM "sources" AND !"sources/templates"
> > > WHERE 
> > > 		contains(category, [[]])
> > > 	AND
> > > 		class = "video"
> > > 	AND
> > > 		status != "⬛"
> > > 
> > > SORT choice(status = "⚛️", "1", choice(status = "🟦", "2", choice(status = "🟥", "3", choice(status = "🟩", "4", "")))) ASC
> > > ```
> > ___

Вы в одном комменте решили ввести людей в заблуждение. Теперь в другом месте тоже решили фигню написать.

Отрисовка какого-нибудь списка из сотен элементов через Dataview

Сейчас просто для теста решил отрисовать разное количество заметок. Все заметки я поместил в одну папку.

100 заметок – всё, ок. Быстро, чётко.
500 заметок – 1.5 секунды и всё прокручивается, не лагает
1000 заметок – 2.5 секунды, всё прокручивается, не лагает
1500 заметок – 3.5 секунды, всё прокручивается, не лагает
2000 заметок – 4-5 секунд, всё прокручивается, не лагает

10000 заметок – 45 секунд, в начале прям подфриживает, но потом всё нормально прокручивается
Повторный запрос на те же 10000 заметок – 20 секунд и также в начале подфриживает, но потом всё нормально прокручивается

10000 элементов+пагинация – 1 секунда, всё прокручивается, не лагает, переключение страниц занимает 0.5 секунды

вызывает лаги, а порой и вылеты Obsidian

Лаги могут вызвать, либо чрезмерно большие выборки или какие-то сложные запросы по типу найди мне все несозданные заметки в огромной базе. Но опять же, что вы имеете в виду под лагами? 20 секунд подождать, пока зачем-то 10к заметок отрисуются это лаг или необходимость?

Вылеты? Забавно, но у меня Obsidian вообще никогда не вылетал. Намертво зависал? Да. Но не вылетал.

Вы точно Obsidian-ом пользуетесь/пользовались?

как и все приложения на электроне он очень тяжелый и лагучий

Вы гиперболизируете. Electron, конечно, увеличивает и input lag, и порой подфриживает интерфейс, но называть его очень тяжелым и лагучим как бы странно. Какой-нибудь Photoshop вообще не на Электроне сделан. Но отзывчивость в нём могла быть и получше.

Понятное дело, что было бы круто, если Obsidian был бы написан на каком-нибудь Rust или С++. В таком случае он бы работал сильно быстрее. Но если бы так произошло, то в Obsidian скорее всего не было бы такой гибкости, которая есть сейчас.

Как только у тебя становится большая, жирная база, сказать что Obsidan работает хорошо, будет враньем. К сожалению, но это факт.

У меня большая, жирная база. Если не заставлять в тупую отрисовывать все заметки, то с Obsidian всё окей. Быстрый переключатель работает быстро. Если нужен полнотекстовый поиск, то да, лучше не через встроенное средство, а через ripgrep (another quick switcher) или Omnisearch.

В общем даже неясно от чего вы вообще свои рассуждения строите. Тот же Notion куда медленнее работает.

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

Единственное жаль только, что из-за этих ценностей вам придётся вертеться, крутиться и всё, чтобы только по итогу остаться с решением, которое "вылизано в отдельных фитчах, ui/ux". А мне видимо придётся всё также пилить свои ресёрчи, прототипы и прочие сложные проекты в расширяемом свистоперделками комбайне.

Трудно в таком случае даже понять, кто из нас в худшем положении...

Автор слишком уверенно утверждает, что Obsidian это Notion на максималках

У вас аргументы тоже не очень.

Далеко ходить не буду - достаточно просто попытаться создать в Obsidian аналог табличной базы данных Notion.

Можно, кстати, обратный вопрос задать. А можно ли в Notion накрутить супер кастомный запрос в 1000 строк?

Даже более прямолинейно спрошу. Можно ли таблицу в Notion полностью закодировать?

ещё не динамично: хочешь поменять сортировку или накинуть пару фильтров - меняй запрос Dataview ручками

Есть решения, которые могут делать сортировки и фильтры. Из наиболее известных DB-folder. Из менее известных, но как по мне более прикольных – это dataview interactive views.

а может так сложиться, что это ты в принципе не сделаешь, потому что не учел когда-то в списке своих заметок кастомный property и надо в нескольких тысячах заметок найти нужные и добавить туда

Мутновато как-то звучит.

Есть какие-то очень простые способы добавить свойство в 1000 заметок в Obsidian или в 1000 страниц в Notion?

Типа и там, и там придётся найти косвенный/окольный способ, чтобы сделать выборку по нужным заметкам/страницам, в которые потом можно будет добавить новое свойство.

Также нет пагинации или динамической подгрузки при пролистывании и вся эта портянка из тысячи заметок на одной странице лагает неимоверно.

Пагинация есть в DB-folder и в dataview interactive views. Ну, и в похожих решениях.

Ну, и да, Notion сам по себе не очень быстрый. Наверное, если его заставить 1000 страниц отобразить на одной странице, то он тоже залагает неимоверно.

Кстати, когда-то в чате Obsidian тестили Notion на 10000 заметок. Notion умер на этапе импорта этих заметок. Самому Обсидиану же без разницы на такое количество (только первая индексация займёт долгое время).

Vim режим убог чуть меньше чем полностью. Ни один Vim-ер не сможет нормально пользоваться этим

Я вроде справляюсь. Порой не фонтан, конечно, но если прям что-то нетривиальное нужно сделать, то я просто открываю Neovim через сочетание клавиш. Это с одной стороны. А с другой стороны, на сочетание Vim можно повесить любую команду Obsidian, что в каком-то смысле компенсирует недостатки базовой реализации.

И да... Вроде бы Notion вообще не поддерживает Vim. Или у вас логика работает так, что если не поддерживает, то и придраться не к чему?

И вот такие недорешения там во всем.

Нуууу... У недопользователей в Notion тоже будут недорешения.

Берём ещё головняк с синхронизацией между устройствами, потому что тот же Syncthing постоянно создаёт дубликаты конфликтных файлов, как и другие способы.

Можно установить max conflicts в 0 и тогда конфликтные файлы будут появляться только в очевидных ситуациях (по типу ситуаций, когда на телефоне что-то поменял, тут же перешёл на комп, а синхронизация ещё не завершилась – создастся конфликтный файл).

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

Нууууу, такое. Вы кажись не всекли в чём особенность Obsidian.

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

Могу даже рискнуть сказать, что Obsidian – это в каком-то смысле как Python. Он является потрясающим клеем. Правда для продвинутых юзеров он является клеем... Для большинства – это вероятно просто заметочник с Markdown.

Хотя и никто не запрещает использовать Obsidian в дефолтном виде – получать удовольствие и пользу от простых заметок и ссылок между ними.

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

Есть у меня предположение, что пользователи Notion тоже снисходительно относятся к некоторым решениям. Например, к тому, что их личные/корпоративные данные лежат бог знает где и что их в любой момент могут выпнуть.

Это вообще не замена Notion, инструменты из разных плоскостей и сравнивать их прямым сопоставлением нельзя.

Чего ж вы тогда dataview с таблицами Notion сравниваете?

Но комьюнити Obsidian, к сожалению, секта, где куча неразумных фанатиков вечно пытаются натянуть сову на глобус, написать тонну статей или снять роликов, навязывая идею борьбыи и противопоставления тому же Notion.

Этот аргумент я что-то не всёк.

Вы можете в Notion законтрибьютить? Например, какую-то интеграцию сделать, какой-то скрипт, нетривиальную вьюху внести в общую базу? Можете ли вы какой-то функционал улучшить своим альтернативным решением? Можете ли вы сделать свою кастомную тему, которая как-то более удобно/красиво будет отображать элементы интерфейса? Вроде бы нет...

По-моему, в Notion можно только свой шаблон сделать и монетизировать его внутренними средствами.

Это я всё к чему... А к тому, что в Obsidian сильно больше точек входа, через которые ты можешь принести пользу другим людям. Отсюда и обилие юзеров, которые предлагают самые разнообразные решения и в том числе порой предлагают натянуть сову на глобус.

Очень субъективная оценка.

Чем субъективная оценка отличается от очень субъективной?

Автор оценивает не "качество" материала, а полезность этого материала по отношению к самому себе.

Это вроде бы и значит субъективность.

Подборка сильно уходит за рамки Obsidian, и больше относится к ведению заметок в целом.

Вы правы. Хотя источников по Obsidian всё ещё превалирующее количество.

Думаю, материал стал лучше, просто материала стало много, и от изобилия можно вертеть носом.

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

никаких новых мыслей я до сих пор не увидел

Полагаете, что кто-то должен прийти и с ложечки этими новыми мыслями покормить?

Сформулируйте гипотезу. Проведите целенаправленный ресёрч. Или формализуйте одну из ваших проблем и попытайтесь найти решения. Так вы хотя бы в следующий раз напишете "я искал, я пытался найти решение, но в итоге каких-то новых, эффективных подходов не обнаружил".

Все статьи об Obsidian или от людей, использующих Zettelkasten, — это просто компиляция идей из других источников

Ваше утверждение пахнет неразрешённой рекурсией.

Статьи об Obsidian скомпилировали идеи из других источников. А другие источники типа по-другому сделали? Вероятно нет. В них тоже как-то скомпилировали идеи из других источников. И так далее по цепочке.

Чтобы эту рекурсию разрешить, просто стоит отметить, что в каких-то материалах компиляция не имеет смысла, в каких-то имеет, а в каких-то даже рождаются новые идеи и сущности.

В общем, если ты не гений, никакой инструмент не поможет им стать, а творчески мыслящие люди и в блокноте могут родить что-то новое.

Используете Obsidian как инструмент для рабочих заметок, но почему-то рассуждаете про гениев.

Но даже если отстраниться от мысли выше, то в какой-нибудь TSMC наверняка найдётся куча гениев. Они ж по-любому брезгуют любыми инструментами и не пользуются ничем сложнее блокнота. Пишут в нём. Отрывают страницу. Сканируют её. А потом умные машины вместо этой записи печатает сразу современные, инновационные чипы. Наверное поэтому компания такая богатая.

Манифестирую. Никакого системного обучения, наращивания ЗУНов, кропотливой работы над ошибками, выстраивания продуктивного взаимодействия с другими людьми не нужно. Нужно лишь просто выдать каждому гению по блокноту.

У Obsidian есть побочные действия

бесконечное чтение статей и просмотр видео о нём

Не уверен, что это прям для всех так. Это ж как бы надо прочитать и посмотреть, а потом же ещё надо попробовать, потестировать. Звучит запарно.

перебор плагинов

Это только у новичков так. Они начинают из нуля, поэтому им есть что поперебирать.

В остальном же... Плагины конечны. К тому же подавляющее большинство из них даже в теории определённому человеку с определённым запросами не нужны.

Так что о каком переборе вы имеете в виду?

постоянное изменение системы ведения заметок

Это только у новичков так.

После долгого и внятного ведения базы знаний, у тебя появляется, условно говоря, core-механика. У всех она разная. Кто-то её завязывает вокруг PARA, кто-то вокруг Johnny Decimal. У меня это, например, категории, мета-заметки и иерархии. Это всё "системы ведения заметок" и юзеры их будут прям постоянно менять, только если сами себя не любят.

графоманство

Думание письмом эффективнее, чем просто думание. Кто это осознаёт и внедряет, у того из этого нередко следствием рождается графоманство. Но опять же кто-то научается при этом выкидывать и сокращать, а кто-то пока ещё нет (например, я).

1
23 ...

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность