Систематизация личной базы знаний по программированию в Zim

velkin velkin

Размышления по документированию


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

Программы для ведения документации
Новая эра личных баз знаний
Электронная тетрадь в клеточку

Хранение документации
Перевод и осмысление документации
Отличия документации, книг, журналов и комментариев

Преобразование формы текста
Словесный поток и чёткие структуры
Конспектирование на смартфоне

Документирование в программировании
Разработка через документирование
Технологические карты в программировании

Установка и настройка Zim


1. Скачиваем последнюю версию Zim для вашей операционной системы.
Скачать Zim. В GNU/Linux можно воспользоваться репозиторием.
2. Установка русского языка.
В Windows 10 выбрать Пуск > Панель управления > Система > Дополнительные параметры системы > Дополнительно > Переменные среды. В разделе "Переменные среды пользователя для ..." нажать кнопку "Создать" и ввести имя переменной LANG , значение переменной ru_RU.UTF-8 .
3. Установка другой темы оформления.
В GNU/Linux штатными средствами. В Windows 10 скачать тему и скопировать содержимое распакованной папки gtk-3.0 в %USERNAME%\AppData\Local\gtk-3.0 , путь можно открыть в проводнике. Можно так же использовать другие папки, а не только общий путь для тем gtk-3.0, например, ту же папку конфигурации. Пока поставил gnome-professional-40.1-dark.tar.xz. Изначальная инструкция.
4. Установка стилей текста.
Так же в проводнике открываем файл %USERNAME%\AppData\Roaming\zim\config\zim\style.conf и редактируем. Но простой текст настроить нельзя, он идёт из темы gtk-3.0 и это проблема. Потому я был вынужден искать тёмную тему с белым, а не чёрным текстом, а там оказалась светлая панель управления. Установил пока временные цвета вроде Aquamarine, Aqua и прочих и стили вроде PANGO_WEIGHT_BOLD.
[TextView]
bullet_icon_size=GTK_ICON_SIZE_MENU
indent=30
tabs=None
linespacing=3
wrapped-lines-linespacing=0
font=Sans 16
justify=

[Tag strong]
weight=PANGO_WEIGHT_BOLD

[Tag emphasis]
style=PANGO_STYLE_ITALIC

[Tag mark]
background=yellow

[Tag strike]
strikethrough=True
foreground=grey

[Tag code]
foreground=Aqua
family=monospace

[Tag pre]
foreground=LightYellow
family=monospace
wrap-mode=GTK_WRAP_NONE
indent=20

[Tag link]
foreground=#b3e5fc
underline=PANGO_UNDERLINE_SINGLE
weight=PANGO_WEIGHT_BOLD

[Tag tag]
foreground=#ce5c00

[Tag h1]
foreground=Aquamarine
weight=PANGO_WEIGHT_BOLD
scale=1.75

[Tag h2]
foreground=Aquamarine
weight=PANGO_WEIGHT_BOLD
scale=1.52

[Tag h3]
foreground=Aquamarine
style=None
weight=PANGO_WEIGHT_BOLD
scale=1.32

[Tag h4]
foreground=Aquamarine
weight=PANGO_WEIGHT_BOLD
scale=1.15

[Tag h5]
foreground=Aquamarine
weight=PANGO_WEIGHT_BOLD

[Tag h6]
foreground=Aquamarine

[Tag checked-checkbox]

[Tag xchecked-checkbox]

[Tag migrated-checkbox]

[Tag transmigrated-checkbox]

5. Установка свойств проекта.
Создав папку проекта zim по нужному мне пути я зашёл в Файл > Свойства и установил Домашнюю страницу :Программирование и включил галочку Использовать для ссылок на страницы краткие имена.
6. Установка своего шрифта.
В Правка > Параметры > Интерфейс установил Использовать свой шрифт и его размер 16. В принципе это видно в конфигурационном файле выше font=Sans 16 .
7. Включение дополнительных модулей.
В Правка > Параметры > Модули включил модули Оглавление, Редактор таблиц, Сортировщик строк.
В модуле Оглавления нажал кнопку Настроить.
выключил Показать оглавление в плавающем виджете (а не в боковой панели)
включил Показать заголовок страницы как заголовок в оглавлении.
выключил Включать горизонтальные линии в оглавлении.

Какие проблемы нужно решить


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

Адаптация источников знаний под себя


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

Что же в таком случае мог бы сделать абстрактный общечеловек.

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

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

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

4. Однако лично я считаю для становления специалистом лучше полностью поглотить источники знаний записав их в Zim адаптируя оформление.

Запись большого количества знаний без систематизации


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

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

Быстрый доступ к источникам знаний


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

Без мгновенного перехода по всем связанным источникам пока вспоминаешь одно, забудешь другое. Это, кстати, одна из проблем Цеттелькастен, так как в оригинале он не имел гиперссылок, а был создан на бумаге.

Система каталогов в Zim


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

За несколько последних дней я пришёл к следующим каталогам.

Программирование
 Библиотеки
 Википедия
 Задачи
 Игры
 Книги
 Мусор
 Понятия
 Практика
 Программы
 Проекты
 Статьи
 Языки

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

http://files.rsdn.org/99832/zim_01.png

Папка Понятия


Основная идея крутится вокруг папки Понятия. Внутри она имеет следующую структуру.

Понятия
 А-Я

Понятия
 А
 Б
 В
 Г
 Д
 Е
 Ё
 Ж
 З
 И
 Й
 К
 Л
 М
 Н
 О
 П
 Р
 С
 Т
 У
 Ф
 Х
 Ц
 Ч
 Ш
 Щ
 Ы
 Э
 Ю
 Я

Буквы с которых не могут начинаться слова такие как Ъ Ь исключены, а так это обычный русский алфавит. В теории здесь мог бы быть и английский алфавит.

Опытным путём обнаружено, что.
1. Zim хорошо открывает 100 папок, но когда их 1000, то происходит небольшая задержка. И очевидно задержка будет расти по мере накопления папок. Она не то, что критична, но есть разница между почти мгновенным действием и малой задержкой. Конечно, это при условии, что Zim сворачивает и разворачивает списки при переходе.
2. Вручную искать из 1000 и более папок замедляет работу. Я проводил опыт с Qt из более 1600 классов с английским алфавитом и это оказалось не так удобно, как мне почему-то подумалось. Изначально я создал папки по алфавиту, а потом дай думаю попробую без него. Так вот кликнуть на букву, а потом на название из открывшегося списка гораздо быстрее, чем мотать туда сюда список.

Если кто не знает, ознакомьтесь с тем, что такое Библиотечный каталог.

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

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

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

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

Папка Задачи


Папка Задачи пока что не продумана, но фактически сделана по лекалам папки Понятия с алфавитным списком и её цель не смешивать Понятия и Задачи, потому что у задач есть постановка задачи, такие как входные и выходные условия, а так же решения.

Потому она должна собрать Задачи и ссылки на их решения, но при этом не смешиваться с обычными Понятиями. Беру пример чисто из головы, создать кнопку в Html и создать кнопку в Qt должны находиться в папке Задачи:С:Создать кнопку.

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

Возьмём класс QPushButton. Сам по себе он похож на понятие Кнопка элемента графического интерфейса, но способен решать разнообразные задачи, такие как реакция на разные события или оформление, что требует дополнительных подстраниц. Причём не факт, что разные типы кнопок из разных систем могут одно и тоже, потому важно различать конкретные решения и их общий сбор в папке Задач.
Программирование
 Библиотеки
  Qt5
   Классы
    P
     QPushButton
      Задачи
       ...
      Файлы
       ...
   Модули

Прочие папки


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

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

Общая структура папок


Программирование

 Библиотеки
  Qt5
   Классы
    A-Z
   Модули
  ...

 Википедия
  A-Z,А-Я

 Задачи
  А-Я

 Игры
  Arsenal Extended Power
  ...
  Tera Online

 Книги
  Страуструп_Бьерн
   Дизайн и эволюция C++
   Язык программирования C++. Специальное издание
  ...

 Мусор
  ...

 Понятия
  А-Я

 Практика
  Codewars
   A-Z
  HackerRank
   A-Z
  LeetCode
   A-Z
  RosettaCode
   A-Z
  Topcoder
   A-Z

 Программы
  Blender
  Geany
  Git
  ...
  Zim

 Проекты
  ...

 Статьи
  А-Я

 Языки
  Assembler
   A-Z,А-Я
  C
   A-Z,А-Я
  C++
   A-Z,А-Я
  CSS
   A-Z,А-Я
  Html
   A-Z,А-Я
  Lua
   A-Z,А-Я
  Structured text
   A-Z,А-Я

Итоги


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

А на практике всё это требует долговременной проверки. Zim мне знаком давно, но систематизация раньше дико хромала. Всё это больше напоминало свалку мусора. Но посмотрим, что будет дальше.
Qulac
Qulac
26.07.2023 05:23
Здравствуйте, velkin, Вы писали:

А там есть что ни будь про то, как инсталляторы для своих программ делать?
velkin
velkin
26.07.2023 04:54

Систематизация темы по созданию установщика программ


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

Q>А там есть что ни будь про то, как инсталляторы для своих программ делать?


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

В википедии это статья Установка программного обеспечения. Но в личной базе знаний надо решить как назвать это понятие в папке Понятия.

1. Установщик программ.
2. Установщик приложений.
3. Инсталлятор программ.
4. Инсталлятор приложений.

Можешь как в википедии написать "Установка программного обеспечения" или выбрать что-то другое.

Создание понятия "Установщик программ"


Чисто для примера если я выберу вариант "Установщик программ", то у меня получится.
Программирование
 Понятия
  У
   Установщик программ

:Программирование:Понятия:У:Установщик программ

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

Создание задачи "Создать установщик программ"


Я уже говорил, что папка Задачи в отличие от папки Понятия пока не отработана, так что это чисто теория. Но предположительно можно создать следующую статью.
Программирование
 Задачи
  С
   Создать установщик программ

:Программирование:Задачи:С:Создать установщик программ

Опять же именование на усмотрение пользователя, так как это личная база знаний и она должна соответствовать только собственным знаниям. Просто раз я выбрал понятие "Установщик программ", то соответственно основная не систематизированная задача верхнего уровня будет "Создать установщик программ".

Создание задачи "Создать установщик программ NSIS"


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

А что такое NSIS, очевидно это программа.

Я потому и поделил папки на.
1. Программы. Здесь хранятся описания чужих рабочих программ. Как ими пользоваться, какие задачи они выполняют.
2. Библиотеки. Здесь хранятся описания чужих библиотек алгоритмов. Как ими пользоваться, какие задачи они выполняют.
3. Проекты. Здесь хранятся описания своих проектов. И знания уже не только как ими пользоваться и какие задачи они выполняют, но всё, что придёт в голову.
4. Игры. По сути это те же чужие Программы только созданные не для работы, а для игр и потому выделенные в отдельную категорию.

Да, я вот так захотел, а по сути Программы, Библиотеки, Проекты, Игры это всё взаимоисключающие категории программ. У них структура построения одна и та же.

Программирование
 Программы
  NSIS
   Задачи
    Создать установщик программ NSIS
    ...
    Подзадачи нижнего уровня в линейном списке

:Программирование:Программы:NSIS:Задачи:Создать установщик программ NSIS

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

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

Вся систематизация делается потом. У нас уже есть статья созданная выше "Создать установщик программ".
:Программирование:Задачи:С:Создать установщик программ

А внутри содержимое гиперссылками.
Создать установщик программ NSIS
Создать установщик программ Inno Setup

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

Поглощение источников знаний без систематизации


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

Поглощение статьи


Опять же для примера вот так поглощается статья, для начала можно вставлять просто ссылку без содержимого.
:Программирование:Статьи:В:Восемь ловушек программирования

http://files.rsdn.org/99832/zim_02.png

Поглощение книги


А вот так поглощается книга.
:Программирование:Книги:Страуструп Бьерн:Язык программирования C++. Специальное издание:Глава 4. Типы и объявления 113:4.1. Типы 113

http://files.rsdn.org/99832/zim_03.png

Многое пока чистая теория


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

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

Например, мне надо было записать как компилировать и настраивать RHVoice в Debian. Вот вроде всё здесь в Zim, а найти не могу. Приходилось включать поиск статей в Zim. А поиск по всем статьям там есть на панели справа вверху. Но он не такой уж и быстрый и плюс не вправляет мозги.

А сейчас я бы просто создал статью.
Программирование
 Программы
  RHVoice
   Задачи
    Установка RHVoice в Debian

:Программирование:Программы:RHVoice:Задачи:Установка RHVoice в Debian

Я бы тупо знал, что даже без высоких абстракций папок Понятия и Задачи всё что связано с RHVoice лежит в Программирование:Программы:RHVoice, а не где-то непонятно где. А то у меня была какая-то тактика и я её использовал

Некоторые говорят, что "математика хороша тем, что она ум в порядок приводит", да ничего подобного. Бессистемный подход ум в порядок не приводит. Всё это приводит к рассеянности и к перегрузке мозга не понятно как связанных понятий.

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

Тоже самое касается физики или других наук, если нужно будет что-то программировать. Хотя будь я каким-нибудь врачом, скорее всего у меня была бы папка Медицина, оно же искусство исцеления, или как-то иначе. Или строителем с главной папкой Строительство. Может какая-нибудь инженерия с папкой Инженерия.

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

Потом такой сидишь и вылазят мемы. 72 Hours Later. 3 Years Later. 10 Years Later. Люди сидят с наркоманскими глазами. Чему они научились непонятно. А тут сразу видно, что делал, а что бросил.
Nuzhny
Nuzhny
27.07.2023 07:21
Здравствуйте, velkin, Вы писали:

V>Я бы тупо знал, что даже без высоких абстракций папок Понятия и Задачи всё что связано с RHVoice лежит в Программирование:Программы:RHVoice, а не где-то непонятно где. А то у меня была какая-то тактика и я её использовал


Казалось бы, есть наука о знаниях, всякие онтологии, концептуальные схемы и т.д. Они учат тому, что знания не представляются в виде деревьев, как от нас хочет требуют всевозможные справочники и алфавитные указатели. Не надо искать RHVoice по всем папкам, надо искать понятие RHVoice и получить граф (можно даже mindmap), который нам даст хорошее представление об этом понятии. Будет ли это делаться системами тэгов или гиперссылками, как в Википедии — пофиг, по большому счёту. Но очевидно, что при систематизации надо идти именно этим путём. Даже банально телефонный справочник в виде списка или дерева — это неудобно, потому что каждый человек может быть одновременно и моим другом, и коллегой, и заниматься в одной спортивной секции, а его жена быть подругой мужа моей сестры. Ну и т.д.
velkin
velkin
27.07.2023 08:43
Здравствуйте, Nuzhny, Вы писали:

N>Казалось бы, есть наука о знаниях, всякие онтологии, концептуальные схемы и т.д.


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

По факту нужны гиперссылки как в html и аутлайнер.

Структурный редактор, также аутлайнер от англ. outliner — компьютерная программа, позволяющая организовывать древовидные списки (схемы) и работать с текстом в такой форме на уровне оперирования элементами иерархии (вложение, изменение ранга, перенос, скрытие и раскрытие структуры элемента). Альтернативно такие списки могут представляться в форме диаграмм связей.

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

В статье я написал, что решаю следующие задачи.

1. Адаптация чужих источников знаний под себя.
2. Запись большого количества знаний с отложенной систематизацией.
3. Быстрый доступ к источникам знаний.

Причём я делаю это в лоб напрямую перетаскивая тексты википедии, книг, документации и кода, а потом добавляя ссылки на страницы и якоря в виде оглавлений H1-H5. А онтологии не работают потому, что нет никаких простых инструкций по их использованию. И плюс мне ещё говорили, что они созданы для обработки компьютером, а не людьми. Вроде как для человека онтологии не интуитивно понятны.
Nuzhny
Nuzhny
27.07.2023 09:09
Здравствуйте, velkin, Вы писали:

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


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

V>3. Быстрый доступ к источникам знаний.


Вот быстрого доступа я и не вижу, если честно. Всевозможные адаптации такой систематизации на Гитхабе в виде awesome_xxx — редкая пакость: либо устаревает, либо разрастается до бесполезности.
Пока я вижу 2 очень удобных инструмента: Википедия и большие языковые модели — условный ChatGPT. Первая позволяет организовывать знания самому и команде (Вики для рабочих проектов), а вторая — автоматически.
velkin
velkin
27.07.2023 09:29
Здравствуйте, Nuzhny, Вы писали:

V>>3. Быстрый доступ к источникам знаний.

N>Вот быстрого доступа я и не вижу, если честно.

Всё правильно, это из-за второго пункта отложенной систематизации. В приведённых выше примерах страницы действительно не покрыты гиперссылками. А это как раз и есть основная часть систематизации и тот самый быстрый доступ.
m2user
m2user
27.07.2023 06:28
kiwix reader будет работать с такой базой знаний или для него нужны особым образом оформленные zim файлы?
velkin
velkin
27.07.2023 08:10
Здравствуйте, m2user, Вы писали:

M>kiwix reader будет работать с такой базой знаний или для него нужны особым образом оформленные zim файлы?


Kiwix и Zim это разные проекты.

Главный файл Zim выглядит так.

notebook.zim
[Notebook]
version=0.4
name=zim
interwiki=
home=Программирование
icon=
document_root=
short_links=True
shared=True
endofline=dos
disable_trash=False
default_file_format=zim-wiki
default_file_extension=.txt
notebook_layout=files

А для Kiwix я переводил документацию, статья Перевод и осмысление документации и генерировал из папки с html, картинками к ним и прочими файлами zim файлы, статья Конспектирование на смартфоне.

Описание Kiwix:
1) Ссылка 4pda.
2) Можно установить прямо из приложения всю русскую википедию с изображениями.
3) Или собственные корявые файлы созданные zimwriterfs.
3.1) boost177_en.zim. boost177_ru.zim.
3.2) cppref190607_en.zim. cppref190607_ru.zim.
3.3) qt5152_en.zim. qt5152_ru.zim.
3.4) sqlite336_en.zim. sqlite336_ru.zim.

Можно было бы зайти в Zim, нажать Файл > Экспорт, выбрать Блокнот целиком, HTML, Default_with_index, Экспортировать каждую страницу в отдельный файл, и потом с помощью zimwriterfs получить из каталога файл zim для Kiwix включая мобильную версию. Вот только спрашивается в чём смысл, пимы нужны для постоянных изменений.

Новая эра личных баз знаний

Персональный информационный менеджер или ПИМ (англ. PIM) это подвид персонального органайзера только на компьютере. Это могут быть такие программы как Zim и прочие, список огромен.

Старая проприетарщина и не проприетарщина давно известна. Из новых рекламируют Obsidian. Как не начнёшь читать статью про личные базы знаний люди в последнее время подзаморочились им. Но я пока собираюсь вести опыты с Zim. Что-то делать на смартфоне это гиблое дело, масштабы не те. А смысл просто так смотреть тоже нет, нужно изменять информацию.
m2user
m2user
27.07.2023 11:08
V>А для Kiwix я переводил документацию, статья Перевод и осмысление документации и генерировал из папки с html, картинками к ним и прочими файлами zim файлы, статья Конспектирование на смартфоне.

V>Можно было бы зайти в Zim, нажать Файл > Экспорт, выбрать Блокнот целиком, HTML, Default_with_index, Экспортировать каждую страницу в отдельный файл, и потом с помощью zimwriterfs получить из каталога файл zim для Kiwix включая мобильную версию. Вот только спрашивается в чём смысл, пимы нужны для постоянных изменений.


У меня в "базе знаний" много сторонних артефактов — документов (pdf, docx, xlsx), изображений. Они должны храниться в неизменном и целостном виде.
Также есть потребность сохранять отдельные веб-страницы на манер web.archive или google/yandex-cache. Как "живые", так и из перечисленных архивов/кэшей.
velkin
velkin
28.07.2023 04:47

Архивы книг и документация


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

M>У меня в "базе знаний" много сторонних артефактов — документов (pdf, docx, xlsx), изображений. Они должны храниться в неизменном и целостном виде.


Хорошо, кстати, что напомнил. У меня основной источник документов pdf и djvu это папка books. Я качаю книги с libgen.is и выбираю из них с лучшим текстовым слоем. А по идее можно ещё накапливать pdf документы по оборудованию содержащему электронику. В следствие чего у меня появилась мысль добавить папку :Программирование:Устройства.

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

Веб-архивы


M>Также есть потребность сохранять отдельные веб-страницы на манер web.archive или google/yandex-cache. Как "живые", так и из перечисленных архивов/кэшей.


Прямо сейчас временно сижу в Windows, но до этого много лет был в Debian. Есть проблема добавления относительных ссылок, тем более пути у меня иногда меняются. У Zim ещё есть кое-какая в фишка, но мне пока не до неё. Я в Zim пока делаю так, беру ссылку и обрезаю у неё протокол в текстовом описании.

Ссылка на интернет у меня выглядит следующим образом.

ru.wikipedia.org/wiki/Парадигма_программирования

Хотя внутри она имеет полный путь.

https://ru.wikipedia.org/wiki/Парадигма_программирования

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

А если мне надо зайти в документацию из Windows или Debian, и чтобы и там и там работало, а корневые файловые пути различаются, то я пока что поставил Nginx для Windows и добавил ярлык в автозагрузку, можно открыть введя в проводнике shell:startup .

Сам Nginx скопирован по такому пути.

D:\opt\CoolReader2
D:\opt\Kiwix
D:\opt\Nginx
D:\opt\Qt5.9.9
D:\opt\ReIcon


Пока в
D:\opt\Nginx\conf\nginx.conf

вместо
root html;

поставил
root D:/doc;

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

localhost/qt599/en/qtcore/qobject.html
localhost/qt599/ru/qtcore/qobject.html

Здесь в отличие от ссылки на википедию с протоколом https:// обрезан протокол http://. В localhost мне сертификаты не нужны. Можно было бы добавлять ссылки на локальный Kiwix, но там нет категорий, статьи немножко обрезаны. Потому я это буду добавлять только когда у меня много что уже будет записано и нечем будет заняться.

А вот с архивами книг и документов я пока так не делаю. Так как тут идёт ссылка на html, браузер что-то предлагает открывать, что-то скачать. Я ещё потом подумаю на эту тему, Zim Default Applications.

Потому что книги и документы я и так могу найти. Опять же можно делать на них ссылки, даже встраивать в Zim, это ссылки вложений. Хотя как по мне так помещения абсолютно любых левых документов именно в папку с блокнотом Zim не самая хорошая идея. Это сделает синхронизацию через тот же git медленней.

А цель Zim в исполнении Цеттелькастен как тут некоторые говорят для создания надмозга, это мемчик про overmind. Не знаю, может потом передумаю, я же ещё только начал осваиваться в этой модели систематизации.

Изображения


А вот на них как раз можно и нужно вставлять ссылки, внедрять изображения прямо в блокнот, если это нужно, чтобы не потерялись. Я помню у меня именно с Windows и форматом SVG была раньше проблема типа такой, Zim for Windows does not display svg images.

А сейчас смотрю это уже не актуально. Значит можно будет добавлять формулы, схемы, чертежи без искажений, мыльных пикселей. Размер изображения тоже можно выставить, это же тебе не какой-нибудь RSDN.

http://files.rsdn.org/99832/zim_04.png

По поводу идей и воплощений


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

Я вообще за несколько последних дней обратил внимание, что подобная личная база знаний настолько унылая в работе, что я даже могу слушать аудиокнижки и параллельно музыку при этом заполняя и разбирая её. Мозговые усилия почти не тратятся, но зато времени уходит просто чудовищное количество. И это ещё затягивает, не дало мне нормально выспаться несколько последних дней.
velkin
velkin
30.07.2023 10:37
Показалось интересным видео по теме личной базы знаний.

зачем нужны персональные базы знаний


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

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

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

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

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

Пример писатели


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

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

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

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

Пример художники


Есть наверное известный всем гражданам Российской Федерации художник Брюллов в основном по своим произведениям гибель Помпеи. Такая огромная картина, множество деталей. И тоже у обывателя возникает ощущение, что можно просто взять и нарисовать гибель Помпеи и всё будет прекрасно.

Нет, смотрим как это выходило на практике. Карл Брюллов ехал на место раскопок той самой Помпеи, если память мне не изменяет, проводил там годы, и делал кучу зарисовок. Зарисовка чего? Различных элементов, которые потом попадут на картину, осколков амфоры, в том числе каких-то останков, зданий и прочее, прочее, прочее.

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

Пример консультирование


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

Что это значит? Это значит, что если к компании Маккинси обращается какой-то крупный заказчик с какой-то сложной нетривиальной задачей. Гипотетическая задача, условно мы хотим открыть Диснейленд в Африке, то компания Маккинси не начинает выдумывать решение с нуля, она начинает изучать прецеденты.

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

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

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

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

Пример судопроизводство


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

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

Пример дизайн


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

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

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

Количество приёмов решений задач


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

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

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

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

Навыки работ


Дальше совсем кратко как это делать. Есть два ключевых навыка работ.

Обнаружение прецедентов и решений


1. Первый навык связан с тем когда вы умеете обнаруживать прецеденты, решения. Как ни странно среднему человеку кажется, что если он глядит в книге решения, то он непременно его распознает. Это не так. Чаще всего различные описательные декларативные призывы воспринимаются как решения.

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

Обобщение прецедентов и решений


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

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

Пример книга "Ваш непослушный ребенок"


Давайте посмотрим небольшой иллюстрирующий пример о том как была написана эта наша книжка "Ваш непослушный ребенок" Геннадьевны Крыловой. Примерно была поставлена задача, что не существует книжки, которая бы помогала родителям, воспитателям, иногда персоналу правильно обращаться с детьми. Когда дети выдают какое-то неправильное поведение нужно уметь этим поведением управлять и вот два элемента.

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

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

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

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

Обучающие курсы


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

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


https://www.youtube.com/watch?v=QYaocyA0pwY
velkin
velkin
03.08.2023 12:03

Изменения категорий


Немного подумав переименовал Мусор в Корзину и перенёс её в корневой каталог сделав главной страницей. А так же помимо корневого каталога Программирования добавил категорию Развлечения. В категорию Программирование добавил папку Устройства, то есть каталог Программы это софт, а каталог Устройства это "железо".

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

Корзина
 0-9
 A-Z
 А-Я
 ЬЪ
Программирование
 Авторы
 Библиотеки
 Википедия
 Задачи
 Игры
 Книги
 Понятия
 Практика
 Программы
 Проекты
 Статьи
 Устройства
 Языки
Развлечения
 Аниме
 Манга
 Музыка
 Певцы
 Персонажи
 Произведения
 Ранобэ
 Сериалы
 Фильмы

Внутри корзины хранятся страницы 0.txt-9.txt, A.txt-Z.txt, А.txt-Я.txt, Ь.txt-Ъ.txt. Когда мне нужно быстро создать предметный каталог я создаю страницу в Zim, в любом файловом менеджере подпапку и копирую туда нужные файлы. Это позволяет мне сэкономить время, потому что пока нет ссылок не важно делаешь операции через Zim или нет.
Корзина
 0-9
  0.txt-9.txt
 A-Z
  A.txt-Z.txt
 А-Я
  А.txt-Я.txt
 ЬЪ
  Ь.txt-Ъ.txt

Название страниц


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

Например, есть страница "Вызов функции" в языке C++.
:Программирование:Языки:C:C++:В:
Язык C++ - Вызов функции (Function Call)

Соответственно все названия для C++ имеют приставку "Язык C++ — ".

А внутри могут быть ссылки на общую страницу понятия вызова функции с приставкой "Понятие — ".
Понятие - Вызов функции (Function Call)
Язык C++ - Функциональный вызов (Function call) [Cиноним]

http://files.rsdn.org/99832/zim_05.png

Каталог Приставка к названию
Авторы Автор —
ВикипедияВикипедия ru —
ВикипедияВикипедия en —
Задачи Задача —
Понятия Понятие —
Статьи Статья —
Языки ...Язык ... -

Синонимы понятий


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

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

В той же книге Страуструпа "Язык программирования C++" понятие может быть переведено как "функциональный вызов". Но ссылку лучше делать на одну и ту же страницу, то есть на "вызов функции".

Или книга может говорить, что в C++ есть "оператор while", но в реальности мне может быть проще было бы думать о нём как о "цикле с предусловием". Другое дело, что убирать "оператор while", это значит забыть, что он является синонимом "цикла с предусловием".

Развлечения


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

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

http://files.rsdn.org/99832/zim_06.png

Различия между личной и коллективной базой знаний


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

https://www.youtube.com/watch?v=J09Ani0M_eM
velkin
velkin
17.08.2023 11:50

Конвейер поглощения книг личной базой знаний


Потихоньку испытываю текущий формат личной базы знаний. Первая книга, которую мне удалось залить "Язык программирования C++. Специальное издание" Страуструпа Бьерна, для тех кто не знает это создатель языка C++. Если бы я исследовал Lua, то первый бы книгой взял "Программирование на языке Lua. 3-е издание" Иерузалимски Роберту от одного из создателей Lua, но пока мне не до этого.

А вторая книга, которая сейчас на очереди это "Архитектура корпоративных программных приложений" Фаулера Мартина, который написал множество книг. Исходя из пока не очень значительного опыта мне удалось вывести, что при поглощении книг личной базой знаний менее мозгозатратно использовать конвейер.

Шаги конвейера


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

Скачивание и подбор книг

1. Скачать книги определённого автора с того же генезиса.
2. Разобрать книги по названию, разные названия это разные книги.
3. Разобрать книги по изданию, разные издания с одним названием, но разным изданием это разные книги.
4. Решить книгу с каким названием и с каким изданием поглотить личной базой знаний.
5. Выделить книгу с лучшим текстовым слоем и скопировать этот слой в отдельный текстовый файл.

Копирование текста

6. Разобрать содержание книги, то есть пронумеровать многоуровневым списком, сделать отступы, как в той же книге "Язык программирования C++" от Страуструпа.
7. Создать подстраницы в Zim для каждой подглавы.
8. Разбить текстовый слой по содержанию, можно использовать 80 символов тире для разделения глав.
9. Скопировать текст книги с текстового слоя согласно подглавам в подстраницы Zim.

Оформление текста

10. Исправление текстового слоя согласно формату Zim.
11. Замена изображений псевдографикой, если это возможно.
12. Создание систематических и внутритекстовых ссылок на предметные каталоги.

Псевдографика вместо растровой и векторной графики


У меня раньше была тема Какая диаграмма деятельности более понятна где использовались примеры псевдографики. Сейчас я бы сделал не так, но в качестве примера пойдёт.
╭──────────────────────────────╮
│━┃вариант с разделами         │
├───────────────┬──────────────┤
│ главный поток │ доп. поток   │
├───────────────┼──────────────┤
│      ● начало │              │
│      │        │              │
│      ▼        │              │
│  ━━━━━━━━━━━━━┿━━━━━━━━━━━━  │
│      │        │      │       │
│      ▼        │      ▼       │
│ ╭────┴─────╮  │ ╭────┴─────╮ │
│ │активность│  │ │активность│ │
│ ╰────┬─────╯  │ ╰────┬─────╯ │
│      │        │      │       │
│      ▼        │      ▼       │
│  ━━━━━━━━━━━━━┿━━━━━━━━━━━━  │
│      │        │              │
│      ▼        │              │
│      ◉ конец  │              │
╰───────────────┴──────────────╯

Zim хорош тем, что он не искажает графику в отличие от некоторых сайтов. Понятно, что дело здесь в шрифтах и в частности в таких символах как ◉.

Чтобы добиться такого результата мне пришлось сменить межстрочный интервал linespacing с 3 до -2.
%USERNAME%\AppData\Roaming\zim\config\zim\style.conf

Было.
[TextView]
bullet_icon_size=GTK_ICON_SIZE_MENU
indent=30
tabs=None
linespacing=3
wrapped-lines-linespacing=0
font=Sans 16
justify=

Стало.
[TextView]
bullet_icon_size=GTK_ICON_SIZE_MENU
indent=30
tabs=None
linespacing=-2
wrapped-lines-linespacing=0
font=Sans 16
justify=

Диаграмма деятельности


http://files.rsdn.org/99832/zim_07.png

Размышления о символьной графике и диаграммах


Мартин Фаулер помимо всего прочего написал на мой взгляд хорошую книгу по UML, называется "UML Основы. Краткое руководство по унифицированному языку моделирования. 3-е издание". Но в целом возникает вопрос, а нужны ли диаграммы UML. У меня была тема Обучение с помощью карточек, картинки я только там зря под cut отправил.

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

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

Виды символьной графики


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

Односимвольная графика

*******
*  *  *
*******
*  *  *
*******

Ascii-графика

+--+--+
|  |  |
+--+--+
|  |  |
+--+--+

Псевдографика

┌──┬──┐
│  │  │
├──┼──┤
│  │  │
└──┴──┘


Оценка видов символьной графики


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

Понятность при чтении.
1. Лучше всего воспринимается псевдографика.
2. Хуже неё Ascii-графика.
3. Сложнее всего читать односимвольную графику.

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

Символьная графика против символов


В теме Эволюция диаграмм сущности-связи зашёл разговор о том дают ли что-то фигуры окружающие символы, или дают ли что-то цвета линий и заливки. Они что-то дают, но можно было бы обходиться и без них. Фактически текст не имеет ни двухмерных координат, ни одномерных координат. Двухмерные координаты я обсуждал в теме Электронная тетрадь в клеточку.

И там же стало понятно, что хотя обычный текст можно отображать моноширным шрифтом создавая двухмерные изображения используя отступы и символы рамок, стрелок и прочего, но явно не целочисленные координаты как в электронной тетради в клеточку как в том же MS Excel или LibreOffice Calc, не вещественные координаты как в MS Visio или Dia.

Судя по теме Будущее удалённых рабочих мест и неприятии темы Электронная тетрадь в клеточку программисты очевидно предпочли бы работать не с видео и не с координатами, а с символами без координат.

Про неудачи в обучении и работе


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

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

В чём на мой взгляд причина неудач некоторых людей. При том что удачливых 6%, остальные по статистике неудачники. Сейчас, конечно, могут налететь эти 6% и начать высказываться как они достигли успешного успеха, а остальные 94% будут по тихому отдыхать в сторонке.

Вот смотрите, есть ваш мозг и чужие источники знаний и они не совместимы на ранней стадии.
ваш мозг  <-неудача->  чужие знания

Единственный способ их совместить это сделать знания своими.
ваш мозг   <-удача->   ваши знания

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

Если же продолжать долбить чужие знания без присваивания, то есть помещения в личную базу знаний, то в 94% случаев будет происходить вот такая ерунда.
ваш мозг  <-неудача->  чужие знания
ваш мозг  <-неудача->  чужие знания
ваш мозг  <-неудача->  чужие знания
ваш мозг  <-неудача->  чужие знания
ваш мозг  <-неудача->  чужие знания
ваш мозг   <-удача->   (чужие знания преобразованы в) ваши знания
ваш мозг  <-неудача->  чужие знания
ваш мозг  <-неудача->  чужие знания
ваш мозг  <-неудача->  чужие знания
ваш мозг  <-неудача->  чужие знания
ваш мозг  <-неудача->  чужие знания

Какая-то локальная удача не делает массово из людей профессионалов. У меня есть нехорошее подозрение, что успешный успех в той же России не зависит от методики обучения. Я просто знаю, что люди которые хорошо учились были в иной среде. А это может быть семья, или действительно какой-то хороший ментор. Может быть даже на поздних стадиях дообучение до профессионала происходило на работе в хорошем коллективе.

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

Если новичок думает, что просто читая книгу или слушая лектора, покупая курсы за 150 тысяч рублей, смотря мотивационные видосики, он чему-то научится, тогда вперёд и с песней.

Давайте ещё вспомним российских чиновников с лозунгом, "российская система образования лучшая в мире". А по сути просто запустили конвейер с фильтрацией. Зачем улучшать качество обучения, когда можно отфильтровать больше людей.

А то, что отфильтрованные 94% могли бы или лучше обучаться используя более совершенные методики, или забить посвятив время жизни более полезным делам, таким как отдых, путешествия, развлечения, может быть семья. Спрашивается зачем лезть в обучение и работу связанную с обучением без технологии обучения.
zx zpectrum
zx zpectrum
18.08.2023 09:50
Всяческие категоризации, рубрикации и онтологии хороши для устоявшихся знаний. Когда ты шпаришь наживую, и, согласно известной полу-шутке, еще "не знаешь то, что не знаешь", то нет ничего лучше стихийно складывающейся структурности в самом лучшем mind-маппере всех времен и народов — "Freemind". Зря вы обругали карты разума в первой публикации цикла.
Evgeny.Panasyuk
Evgeny.Panasyuk (-) Org-mode
02.09.2023 05:32
velkin
velkin
05.09.2023 07:22

Начальный уровень осмысления кода


Потихоньку развиваю старые идеи на основе текущей личной базы знаний.

Модифицируемость кода (Changeability QA) (2015.01.08)
Отсечение целей (сложность разработки) (2015.01.11)

Виды слоёв конструкций


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

1. Инструкции языка.
2. Шаблоны проектирования.
3. Архитектура программы.
4. Функционал программы.

Пример класса QEvent


Давайте для примера возьмём Qt. Есть путь к библиотеке в личной базе знаний и предметные каталоги. Причём предметные каталоги могут быть в предметных каталогах.
:Программирование:Библиотеки:Q:Библиотека - Qt5
    Классы
        A-Z
    Модули
        A-Z
    Примеры
        A-Z

Допустим для страниц модулей я пока не делал разделение на буквы, они лежат в одной папке. А страниц примеров у меня ещё и вовсе нет, они появятся позже.

Давайте возьмём заготовку класса QEvent и заголовочный файла qevent.h.
:Программирование:Библиотеки:Q:Библиотека - Qt5:Классы:E:QEvent:Исходный код:qevent.h

Настройки модуля Zim "Просмотр исходника"


Авто отступ. Включить.
Ключ Smart Home. Включить.
Подсвечивать текущую страницу. Выключить.
Показать правую границу. Выключить.
Позиция правой границы. 72.
Ширина табуляции. 4.
Ширина границы. 3.
Режим переноса текста. Никогда не переносить строки.
Тема. solarized-dark.

Копирование из исходного кода в личную базу знаний


Получаем такой исходник страницы.
Content-Type: text/x-zim-wiki
Wiki-Format: zim 0.6
Creation-Date: 2023-08-29T19:06:35+04:00

====== qevent.h ======

===== // Лицензия =====

{{{code: lang="cpphdr" linenumbers="False"

}}}

Деление кода на подразделы


Беру изначальный файл qevent.h и помещаю его код в конструкцию.
{{{code: lang="cpphdr" linenumbers="False"
поместить сюда код...
}}}

А потом делю код перевёрнутой по строкам конструкцией заменяя заголовок.
}}}

===== // ... =====

{{{code: lang="cpphdr" linenumbers="False"

А сам код я смотрю в Zim в режиме только для чтения, чтобы что-то случайно не повредить. Это кнопка на панели управления, то есть каких-то особых телодвижений делать не нужно.

Снимок экрана страницы Zim


В итоге код на снимке экрана выглядит следующим образом.

http://files.rsdn.org/99832/zim_08.png

Сравнение исходника Qt и страницы Zim в KDiff3


Особенно удобно, что можно сравнивать файлы с помощью KDiff3 версии для Windows. Так как файлы лежат в одной папке, а KDiff3 имеет контекстное меню в проводнике Windows. Достаточно выделить нужные файлы и выбрать KDiff3 > Compare.

1. Исходник Qt. qevent.h
2. Страница Zim. qevent.h.txt

http://files.rsdn.org/99832/zim_09.png

Копирование из личной базы знаний в исходный код


А собственно зачем это всё надо было.

1. Я получил справа автоматическое оглавление с уровнем заголовков h1 по h5.
2. Я могу переходить быстро по оглавлению.
3. Я могу ставить ссылки прямо на заголовки h1 по h5, потому что они автоматически неявно являются идентификаторами.

Явные идентификаторы в Zim выглядят так.
{{{code: id="идентификатор_01" lang="python" linenumbers="False"

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

А ссылка на него выглядит вот так.
[[#идентификатор_01|ссылка идентификатор_01]]

Только это всё можно ввести в графическом окне Zim отвечающее за редактирование ссылок. Можно ссылаться с другой страницы на эту страницу и так же через # добавить идентификатор.

Идентификаторы имеют и другие элементы Zim. Помимо этого есть ещё чистый якорь. Для его создания нужно напечатать в Zim два раза знак #, название якоря и нажать ввод или пробел.
##якорь_01

Но это способ при копировании создаёт вот такой текст.
[id: якорь_01]

А это плохо для компилятора языка.

Предварительные результаты деления


Это пример деления, но не пример систематизации. Названия у меня по прежнему на английском языке. А возможно стоило бы перевести их на русский, оставив английские название в скобках. Можно менять уровни вложений и добавлять деление кода. Или скопировать этот код оставив прямую и обратную ссылку и разобрать более подробно в другом месте.

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

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