Индексация в личных базах знаний

velkin velkin

Введение


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

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

1. Файлы (*).
2. Текст (txt).
3. Гипертекст (hypertext markup language).
4. Zim (wiki markup).
5. Obsidian (markdown).

Markdown это видимо игра английских слов, в противовес markup. Ведь технически markdown это именно markup, а не markdown.

Файлы


В начале можно было рассказать как упорядочивать файлы в файловой системе.
1.1. Свалка.
1.2. Имена.
1.3. Списки.
И возможно кое-что ещё.

Свалка это по сути файлопомойка, когда файлы и папки лежат в одном месте.

В именах используются символы разделителей.
1. Пробел " ".
2. Подчёркивание "_".
3. Дефис "-".
4. Пустота "".

1. Для программирования.
а. Оптимально использовать символ подчёркивания или пустоту.
б. В случае с пробелом некоторые компиляторы могут не сработать.
в. А дефис говорят тот же Excel воспринимает не как дефис, а как минус, со всеми вытекающими.

2. Для создания сайтов.
Есть рекомендация google по созданию структуры url.
а. "Рекомендуется использовать в URL дефисы."
б. "Не рекомендуется использовать для разделения символ подчеркивания."
в. "Не рекомендуется объединять слова в URL".

Общего у них только рекомендация.
а. "Не рекомендуется использовать в URL символы, не относящиеся к кодировке ASCI".
б. Я бы лучше сказал не символы алфавита.

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

Ситуация становится хуже, когда люди начинают использовать прочие символы, вроде различных знаков.
1. Тогда можно получить сразу прямой отказ создавать такое имя в файловой системе.
2. Или произойдёт авария при переносе таких папок и файлов в другую файловую систему.

Текст


Раздел текст предполагал, что мы живём в славную эпоху цеттелькастен, когда у нас есть цифровые документы, но нет быстрого перехода между ними. Никлас Луман придумал некие бумажные гиперссылки.

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

1. Текстовых ссылок.
2. Номерных ссылок.
3. Гиперссылок (не существуют в txt).

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

Можно было бы ввести основные понятия, вроде содержимого файлов в кодировке utf8, что явно не относится ни к файловой системе, ни к разметкам. И в принципе объяснить как редактировать текст не важно есть там разметка или нет.

Гипертекст


Следующим этапом предполагалось рассказать как создать личную базу знаний используя гипертекст (html).

У этого способа огромные преимущества.

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

2. База знаний доступна везде как для просмотра, так и для редактирования, то есть на десктопе, ноутбуке, смартфоне можно её открывать с помощью множества браузеров.

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

4. Гипертекст это самая полная разметка со множеством возможностей, вроде макетирования, вставки видео, стили и многое другое. Ни одна другая разметка не даст такого функционала. При этом текст можно писать вполне себе лаконично.

5. Опять же обычным браузером можно сохранять веб-страниц с изображениями и без, что позволяет сохранять чужой материал в своей личной базе знаний. Для структурных редакторов нужны особые решения вроде плагинов, а тут идеальная бесшовная интеграция (встройка).

Есть ещё интересная тема как хранить файлы документов.

1. Внутри папки с таким же именем (файлы).
name/ (обязательно)
name/name.html
Плюсы.
а. Можно удалить всё содержимое удалив лишь папку.

2. Рядом с папкой с таким же именем (html, zim).
name/ (не обязательно)
name.html
Плюсы.
а. По умолчанию используется в браузере для скачивания страниц и zim.
б. Избавляет от просмотра излишнего или даже мусорного содержимого.
Видно на скачанных страницах того же хабра, где в папке куча ненужных вещей.
в. Папка для страницы может быть и не нужна, что сэкономит на её создании.

Zim


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

— А много ль корова даёт молока?
— Не выдоишь за день — устанет рука.
Старик посмотрел на корову свою:
— Зачем я, Бурёнка, тебя продаю?
— Корову свою не продам никому.
— Такая скотина нужна самому!

В чём заключается проблема структурных редакторов и прочего софта. Дело в том, что по мере роста данных они очень быстро начинают тормозить и приходить в негодность.

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

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

Obsidian


Меня здесь на форуме спрашивали как-то про Obsidian. Я тогда ничего не мог ответить, но в Zim есть возможность массово преобразовать его wiki разметку в markdown.

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

Разница в том, что у Zim есть отдельный запуск индексации и так же он это делает по мере работы. А Obsidian всё это делает при запуске программы.

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

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

Индексация


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

Его можно редактировать чем угодно.
1. Текстовым редактором (Notepad++, Kate).
2. Специализированным редактором (Adobe DreamWeaver).
3. Браузером (Chrome, Firefox).

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

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

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

Заключение


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

Следующим этапом попробую преобразовать личную базу знаний в html, может быть даже в ручном режиме. Хотя в тот же Obsidian она преобразовалось довольно хорошо в файлы *.md, но там и требования к разметке были ниже.

И ещё казалось бы куча программ редакторов, но судя по их функционалу и производительности рынок абсолютно чист. Нормальных автоматизированных решений нет, а ручных решений множество, но на работу с ними нужно тратить больше времени.
Wolverrum
Wolverrum По личному опыту
21.03.2024 10:56
Здравствуйте, velkin, Вы писали:

V>В именах используются символы разделителей.

V>1. Пробел " ".
V>2. Подчёркивание "_".
V>3. Дефис "-".
V>4. Пустота "".
Еще может быть CamelCase а не просто пустота. Ну и транслит еще.
velkin
velkin
21.03.2024 04:07

Настройки имён


Здравствуйте, Wolverrum, Вы писали:

V>>В именах используются символы разделителей.

W>Еще может быть CamelCase а не просто пустота. Ну и транслит еще.

В моём уроке идёт сочетание.

Язык слов.
1. Английский.
2. Русский.
3. Транслит на русский.

Краткость имени.
1. Полное.
2. Сокращение.

Регистр букв.
1. Полный верхний.
2. Неполный верхний.
3. Заглавная буква.
4. Полный нижний.

Разделитель слов.
1. Пробел " ".
2. Подчёркивание "_".
3. Дефис "-".
4. Пустота "".

За пример взял три названия МОБА игр.
1. Defense of the Ancients 2. Защита Древних 2 (Оборона Древних 2).
2. Heroes of the Storm. Герои Шторма (Герои Бури).
3. League of Legends. Лига Легенд.

А дальше в нумерованном порядке идут все возможные сочетания, где CamelCase это частный случай.

Пример 1.


Язык слов.
◎ 1. Английский.
◎ 2. Русский.
◉ 3. Транслит на русский.

Краткость имени.
◎ 1. Полное.
◉ 2. Сокращение.

Регистр букв.
◎ 1. Полный верхний.
◎ 2. Неполный верхний.
◉ 3. Заглавная буква.
◎ 4. Полный нижний.

Разделитель слов.
◎ 1. Пробел " ".
◎ 2. Подчёркивание "_".
◎ 3. Дефис "-".
◉ 4. Пустота "".

Вывод.
1. Дота2.
2. Хотс.
3. Лол.

Пример 2.


Язык слов.
◉ 1. Английский.
◎ 2. Русский.
◎ 3. Транслит на русский.

Краткость имени.
◉ 1. Полное.
◎ 2. Сокращение.

Регистр букв.
◉ 1. Полный верхний.
◎ 2. Неполный верхний.
◎ 3. Заглавная буква.
◎ 4. Полный нижний.

Разделитель слов.
◎ 1. Пробел " ".
◎ 2. Подчёркивание "_".
◎ 3. Дефис "-".
◉ 4. Пустота "".

Вывод.
1. DefenseOfTheAncients2.
2. HeroesOfTheStorm.
3. LeagueOfLegends.

Инфоцыганство


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

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

Например.
1. А что если использовать git-lfs для видео файлов.
2. Принципы построения коллективной базы знаний.
3. Что если создать 100'000 папок, как на это отреагирует файловая система на SSD.
create_folder.bat
@echo off
cls
echo ----- CREATE FOLDERS -----
set dir=d:/git/folder
cd /D "%dir%"
for /l %%i in (0,1,99999) do md %%i

4. Сейчас пытаюсь понять в чём смысл семантических тегов введённых в html5.
https://html.spec.whatwg.org/multipage/sections.html
https://validator.w3.org

test.html

<!DOCTYPE html>
<html lang="ru">
<head>
  <meta charset="UTF-8">
  <link rel="stylesheet" href="style.css">
  <title>test</title>
</head>
<body>

<header>
  <nav>
    <a href="../../pkb.html">личная база знаний</a> /
    <a href="../concepts.html">понятие</a> /
    <a href="test.html">тест</a>
  </nav>
</header>

<main>
  <h1>Основная статья</h1>

  Добро пожаловать в создание документации.

  <article>
    <h2>Мой день на пляже</h2>

    <p>Сегодня на пляже я получил много удовольствия.</p>

    <iframe src="https://www.youtube.com/embed/uQotvEi4-Zw"></iframe>
  </article>

  <article>
    <h2>Записи игрока</h2>

    <p>Здорово было бы играть каждый день в HOTS.</p>

    <iframe src="https://www.youtube.com/embed/9y8ernq88-s"></iframe>
  </article>
</main>

<footer>
  &nbsp;
</footer>

</body>
</html>

style.css

body {
  color: White;
  background: Black;
}

a {
  color: DeepSkyBlue;
}

Кстати, лично для меня разметка html5 является гораздо более простой, чем wiki-разметка или разметка markdown. Я не знаю с чего люди рекламируют якобы более простые разметки. В каком месте они простые, там если что не получится сделать, то всё, полный конец. А в html всё работает стабильно и хорошо, только в 5 версии ввели то над чем стоит ещё подумать.

Просто в html не нужно применять всё заподряд. Немного html бредятины bius против strongeminsdel. Например, используешь только bius и бед не знаешь с засорением текста. От того, что в html есть возможности не значит, что стоит засорять ими весь текст.