From 1473371ed4af5cf0a03be441468b058eac6bc596 Mon Sep 17 00:00:00 2001 From: Dmitry Date: Fri, 29 May 2026 07:44:14 +0300 Subject: [PATCH] vault backup: 2026-05-29 07:44:14 --- .obsidian/workspace.json | 45 +++++++--- 90 Library/Math/Метод анализа иерархий.md | 82 ++++++++++++++++++ .../Логические операции над нечеткими множествами.md | 61 ++++++++++++- .../Нечеткие отношения.md | 61 +++++++++++++ .../Нечеткий вывод.md | 69 +++++++++++++++ .../Определение нечеткого множества.md | 10 ++- .../Теория нечетких множеств.md | 6 +- .../Функция принадлежности.md | 17 +++- .../Capistrano deploy через systemd.md | 42 +++++++++ .../Ruby On Rails/Ruby On Rails.md | 5 +- ...Команды для деплоя с помощью Capistrano.md | 0 {00 Inbox => 99 System/Archive}/МИАД_Л1.pdf | Bin {00 Inbox => 99 System/Archive}/МИАД_Л2.pdf | Bin .../Archive}/МИАД_Л3_нечеткий_вывод.pdf | Bin .../Archive}/МИАД_Л4_иерархии.pdf | Bin INDEX.md | 41 +++++---- 16 files changed, 395 insertions(+), 44 deletions(-) create mode 100644 90 Library/Math/Метод анализа иерархий.md create mode 100644 90 Library/Math/Теория нечетких множеств/Нечеткие отношения.md create mode 100644 90 Library/Math/Теория нечетких множеств/Нечеткий вывод.md create mode 100644 90 Library/Programming/Ruby On Rails/Capistrano deploy через systemd.md rename {00 Inbox => 99 System/Archive}/Команды для деплоя с помощью Capistrano.md (100%) rename {00 Inbox => 99 System/Archive}/МИАД_Л1.pdf (100%) rename {00 Inbox => 99 System/Archive}/МИАД_Л2.pdf (100%) rename {00 Inbox => 99 System/Archive}/МИАД_Л3_нечеткий_вывод.pdf (100%) rename {00 Inbox => 99 System/Archive}/МИАД_Л4_иерархии.pdf (100%) diff --git a/.obsidian/workspace.json b/.obsidian/workspace.json index e5b3817..f09ed57 100644 --- a/.obsidian/workspace.json +++ b/.obsidian/workspace.json @@ -46,7 +46,7 @@ "profileSourceId": "7004edff-76db-412f-95d3-5fd8e180d055", "serial": { "columns": 109, - "data": "\u001b[2m• \u001b[0mНашёл три файла в \u001b[36m00 Inbox\u001b[0m: Kyocera FS-1020MFP, Ruby-итераторы и Ruby-знания. Сейчас читаю их и ищу близкие\r\n существующие заметки, чтобы не плодить дубли.\r\n\r\n\u001b[2m•\u001b[0m \u001b[1mExplored\r\n\u001b[22;2m └ \u001b[36;22mRead\u001b[0m В случае ошибок на принтере Kyocera FS-1020MFP.md\u001b[2m, \u001b[0mИтераторы для обработки массивов Ruby.md\u001b[2m, \u001b[0mBase\r\n Note.md\u001b[2m, \u001b[0mЗнания Ruby.md\r\n\r\n\u001b[32;1m•\u001b[0m \u001b[1mRan\u001b[0m \u001b[38;2;137;180;250mrtk\u001b[38;2;205;214;244m grep\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172minE\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m'ruby|итератор|kyocera|принтер|printer'\u001b[38;2;205;214;244m INDEX.md\r\n\u001b[39;2m └ 421:| `90 Library/Programming/Ruby - массивы.md` | Ruby - массивы | seed | knowledge | programming, ruby\r\n\u001b[0m \u001b[2m|\r\n … +12 lines (ctrl + t to view transcript)\r\n\u001b[0m \u001b[2m443:| `99 System/Archive/Ruby - массивы.md` | Ruby - массивы | seed | concept | — |\r\n\u001b[0m \u001b[2m444:| `99 System/Archive/Ruby - основы языка.md` | Ruby - основы языка | seed | concept | — |\r\n\r\n\u001b[31;22m•\u001b[0m PreToolUse hook (failed)\r\n error: PreToolUse hook returned updatedInput without permissionDecision:allow\r\n\r\n\u001b[31;1m•\u001b[0m PreToolUse hook (failed)\r\n error: PreToolUse hook returned updatedInput without permissionDecision:allow\r\n\r\n\u001b[2m•\u001b[0m \u001b[1mExplored\r\n\u001b[22;2m └ \u001b[36;22mRead\u001b[0m Ruby - массивы.md\u001b[2m, \u001b[0mRuby - основы языка.md\r\n\r\n\u001b[32;1m•\u001b[0m \u001b[1mRan\u001b[0m \u001b[38;2;137;180;250mcommand\u001b[38;2;205;214;244m find \u001b[38;2;166;227;161m'00 Inbox'\u001b[38;2;205;214;244m -type f -name \u001b[38;2;166;227;161m'*.png'\u001b[38;2;205;214;244m -print\r\n\u001b[39;2m └ (no output)\r\n\r\n\u001b[32;22m•\u001b[0m \u001b[1mRan\u001b[0m \u001b[38;2;137;180;250mcommand\u001b[38;2;205;214;244m find . -name \u001b[38;2;166;227;161m'Pasted image 20260526203807.png'\u001b[38;2;205;214;244m -o -name \u001b[38;2;166;227;161m'Pasted image 20260526203848.png'\r\n\u001b[39;2m └ ./99 System/Cache/Pasted image 20260526203807.png\r\n\u001b[0m \u001b[2m./99 System/Cache/Pasted image 20260526203848.png\r\n\r\n─────────────────────────────────────────────────────────────────────────────────────────────────────────────\r\n\r\n• \u001b[0mДля Ruby уже есть две близкие заметки: \u001b[36mRuby - основы языка\u001b[0m и \u001b[36mRuby - массивы\u001b[0m. Черновики выглядят как\r\n дополнения к ним, а не как отдельные темы; проверю изображения, чтобы понять, есть ли там важный текст для\r\n переноса.\r\n\r\n\u001b[2m• \u001b[0mViewed Image\r\n\u001b[2m └ 99 System/Cache/Pasted image 20260526203807.png\r\n\r\n• \u001b[0mViewed Image\r\n\u001b[2m └ 99 System/Cache/Pasted image 20260526203848.png\r\n\r\n\u001b[32;22m•\u001b[0m \u001b[1mRan\u001b[0m \u001b[38;2;137;180;250mrtk\u001b[38;2;205;214;244m grep\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mn\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m\"90 Library/HomeLab\"\u001b[38;2;205;214;244m INDEX.md\r\n\u001b[39;2m └ 4 matches in 1F:\r\n\r\n … +4 lines (ctrl + t to view transcript)\r\n\u001b[0m \u001b[2m 284: | `90 Library/HomeLab/Проблемы дистрибутивов.md` | Проблемы дистрибутивов | seed...\r\n\r\n\r\n\u001b[32;22m•\u001b[0m \u001b[1mRan\u001b[0m \u001b[38;2;137;180;250mrtk\u001b[38;2;205;214;244m grep\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mn\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m\"90 Library/Other\"\u001b[38;2;205;214;244m INDEX.md\r\n\u001b[39;2m └ 3 matches in 1F:\r\n\r\n … +3 lines (ctrl + t to view transcript)\r\n\u001b[0m \u001b[2m 420: | `90 Library/Other/Сканер отпечатка пальцев.md` | Сканер Отпечатка Пальцев | pr...\r\n\r\n\r\n\u001b[32;22m•\u001b[0m \u001b[1mRan\u001b[0m \u001b[38;2;137;180;250mrtk\u001b[38;2;205;214;244m grep\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mR\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m\"^source:\"\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mn\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m'90 Library/Programming'\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m'90 Library/Other'\u001b[38;2;205;214;244m \u001b[38;2;148;226;213m|\u001b[38;2;205;214;244m \u001b[38;2;137;180;250mhead\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172m40\r\n\u001b[39;2m └ 90 Library/Programming/Ruby On Rails/Rails credentials edit не открывает редактор.md:11:source: \"[[99\r\n\u001b[0m \u001b[2mSystem/Archive/Rails credentials edit не открывает редактор|Rails credentials edit не открывает\r\n … +3 lines (ctrl + t to view transcript)\r\n\u001b[0m \u001b[2m90 Library/Programming/Ruby - массивы.md:10:source: \"[[Ruby - массивы]]\"\r\n\u001b[0m \u001b[2m90 Library/Programming/Ruby - основы языка.md:10:source: \"[[Ruby - основы языка]]\"\r\n\r\n─────────────────────────────────────────────────────────────────────────────────────────────────────────────\r\n\r\n• \u001b[0mПлан ingest:\r\n\r\n \u001b[94m1. \u001b[36m00 Inbox/В случае ошибок на принтере Kyocera FS-1020MFP.md\r\n\u001b[0m - Создать новую заметку: \u001b[36m90 Library/Other/Kyocera FS-1020MFP — ошибки.md\r\n\u001b[0m - Шаблон: \u001b[36mBase Note.md\r\n\u001b[0m - Тип: \u001b[36mguide\u001b[0m, статус: \u001b[36mseed\r\n\u001b[0m - Связи: пока без автоссылок, близких заметок в индексе не нашёл.\r\n \u001b[94m2. \u001b[36m00 Inbox/Знания Ruby.md\r\n\u001b[0m - Дополнить существующую \u001b[36m90 Library/Programming/Ruby - основы языка.md\r\n\u001b[0m - Добавить: \u001b[36m||=\u001b[0m, falsey-значения, предикаты, логические операторы, \u001b[36m<=>\u001b[0m, альтернативные условия, строки.\r\n - Статус заметки сменить на \u001b[36mprocessing\u001b[0m, обновить \u001b[36mupdated\u001b[0m.\r\n \u001b[94m3. \u001b[36m00 Inbox/Итераторы для обработки массивов Ruby.md\r\n\u001b[0m - Дополнить существующую \u001b[36m90 Library/Programming/Ruby - массивы.md\r\n\u001b[0m - Добавить: \u001b[36meach\u001b[0m, \u001b[36meach_index\u001b[0m, пример поиска min/max и индексов.\r\n - Текст с картинок вынести кодом, сами картинки не переносить в Library.\r\n - Статус заметки сменить на \u001b[36mprocessing\u001b[0m, обновить \u001b[36mupdated\u001b[0m.\r\n \u001b[94m4. \u001b[0mПосле правок:\r\n - Переместить три исходника в \u001b[36m99 System/Archive/\u001b[0m.\r\n - Обновить \u001b[36mINDEX.md\u001b[0m.\r\n\r\n Подтверди, и я выполню.\r\n\r\n\u001b[2m─ Worked for 1m 06s ─────────────────────────────────────────────────────────────────────────────────────────\r\n\r\n\u001b[48;5;239;22m\u001b[109X\r\n\u001b[1;2m› \u001b[22;22mДа, давай\r\n\r\n\u001b[0m\u001b[109X\r\n\u001b[2m• \u001b[0mПриступаю к правкам: две Ruby-заметки дополню на месте, для Kyocera создам отдельный guide. Затем перенесу\r\n исходники в архив и регенерирую индекс по frontmatter.\r\n\r\n\u001b[32;1m•\u001b[0m \u001b[1mRan\u001b[0m \u001b[38;2;137;180;250mrtk\u001b[38;2;205;214;244m grep\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mR\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m\"^source:\"\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mn\u001b[38;2;205;214;244m . \u001b[38;2;148;226;213m|\u001b[38;2;205;214;244m \u001b[38;2;137;180;250mhead\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172m80\r\n\u001b[39;2m └ ./.trash/copilot/copilot-custom-prompts/Clip Web Page.md:20:source: \"\"\r\n\u001b[0m \u001b[2m./90 Library/Finance/Инвестиции/Дивидендный портфель.md:12:source:\r\n … +43 lines (ctrl + t to view transcript)\r\n\u001b[0m \u001b[2m./.stversions/90 Library/01 Admin/Nginx Proxy Manager под path~20260523-090050.md:12:source: \"[[Лайфхак\r\n\u001b[0m \u001b[2mдля NPM. Как проксировать не на поддомен а на под путь]]\"\r\n\r\n\u001b[31;22m•\u001b[0m PreToolUse hook (failed)\r\n error: PreToolUse hook returned updatedInput without permissionDecision:allow\r\n\r\n\u001b[31;1m•\u001b[0m PreToolUse hook (failed)\r\n error: PreToolUse hook returned updatedInput without permissionDecision:allow\r\n\r\n\u001b[31;1m•\u001b[0m PreToolUse hook (failed)\r\n error: PreToolUse hook returned updatedInput without permissionDecision:allow\r\n\r\n\u001b[2m•\u001b[0m \u001b[1mExplored\r\n\u001b[22;2m └ \u001b[36;22mRead\u001b[0m Гайд на научников.md\u001b[2m, \u001b[0mСканер отпечатка пальцев.md\r\n\r\n\u001b[32;1m•\u001b[0m \u001b[1mRan\u001b[0m \u001b[38;2;137;180;250mcommand\u001b[38;2;205;214;244m find \u001b[38;2;166;227;161m'99 System/Archive'\u001b[38;2;205;214;244m -maxdepth 1 -type f -name \u001b[38;2;166;227;161m'Итераторы для обработки массивов Ruby.md'\r\n\u001b[39;2m │ \u001b[38;2;205;214;244;22m-print\r\n\u001b[39;2m └ (no output)\r\n\r\n\u001b[32;22m•\u001b[0m \u001b[1mRan\u001b[0m \u001b[38;2;137;180;250mcommand\u001b[38;2;205;214;244m find \u001b[38;2;166;227;161m'99 System/Archive'\u001b[38;2;205;214;244m -maxdepth 1 -type f -name \u001b[38;2;166;227;161m'В случае ошибок на принтере Kyocera\r\n\u001b[39;2m │ \u001b[38;2;166;227;161;22mFS-1020MFP.md'\u001b[38;2;205;214;244m -print\r\n\u001b[39;2m └ (no output)\r\n\r\n\u001b[32;22m•\u001b[0m \u001b[1mRan\u001b[0m \u001b[38;2;137;180;250mcommand\u001b[38;2;205;214;244m find \u001b[38;2;166;227;161m'99 System/Archive'\u001b[38;2;205;214;244m -maxdepth 1 -type f -name \u001b[38;2;166;227;161m'Знания Ruby.md'\u001b[38;2;205;214;244m -print\r\n\u001b[39;2m └ (no output)\r\n\r\n─────────────────────────────────────────────────────────────────────────────────────────────────────────────\r\n\r\n• \u001b[0mАрхивных файлов с такими именами нет, конфликтов при переносе не будет. Меняю только три целевые заметки и\r\n индекс.\r\n\r\n\u001b[2m• \u001b[0mEdited 3 files (\u001b[32m+263\u001b[0m \u001b[31m-6\u001b[0m)\r\n\u001b[2m └ \u001b[0m90 Library/Other/Kyocera FS-1020MFP — ошибки.md (\u001b[32m+44\u001b[0m \u001b[31m-0\u001b[0m)\r\n\u001b[48;5;22m \u001b[2m 1 \u001b[32;22m+\u001b[38;2;147;153;178m---\u001b[98X\r\n\u001b[39m \u001b[2m 2 \u001b[32;22m+\u001b[38;2;205;214;244mstatus: seed\r\n\u001b[39m \u001b[2m 3 \u001b[32;22m+\u001b[38;2;205;214;244mtype: guide\r\n\u001b[39m \u001b[2m 4 \u001b[32;22m+\u001b[38;2;205;214;244mtags:\r\n\u001b[39m \u001b[2m 5 \u001b[32;22m+\u001b[38;2;205;214;244m \u001b[38;2;147;153;178m-\u001b[38;2;205;214;244m other\r\n\u001b[39m \u001b[2m 6 \u001b[32;22m+\u001b[38;2;205;214;244m \u001b[38;2;147;153;178m-\u001b[38;2;205;214;244m printer\r\n\u001b[39m \u001b[2m 7 \u001b[32;22m+\u001b[38;2;205;214;244m \u001b[38;2;147;153;178m-\u001b[38;2;205;214;244m kyocera\r\n\u001b[39m \u001b[2m 8 \u001b[32;22m+\u001b[38;2;205;214;244mcreated: 2026-05-26\r\n\u001b[39m \u001b[2m 9 \u001b[32;22m+\u001b[38;2;205;214;244mupdated: 2026-05-26\r\n\u001b[39m \u001b[2m10 \u001b[32;22m+\u001b[38;2;205;214;244mtitle: Kyocera FS-1020MFP — ошибки\r\n\u001b[39m \u001b[2m11 \u001b[32;22m+\u001b[38;2;205;214;244msource: \"[[В случае ошибок на принтере Kyocera FS-1020MFP]]\"\r\n\u001b[39m \u001b[2m12 \u001b[32;22m+\u001b[38;2;147;153;178m---\r\n\u001b[39m \u001b[2m13 \u001b[32;22m+\r\n\u001b[39m \u001b[2m14 \u001b[32;22m+\u001b[38;2;147;153;178m#\u001b[38;2;243;139;168m \u001b[38;2;148;226;213mKyocera FS-1020MFP — ошибки\r\n\u001b[39m \u001b[2m15 \u001b[32;22m+\r\n\u001b[39m \u001b[2m16 \u001b[32;22m+\u001b[38;2;147;153;178m##\u001b[38;2;250;179;135m \u001b[38;2;148;226;213mE-0008: Cover open\r\n\u001b[39m \u001b[2m17 \u001b[32;22m+\r\n\u001b[39m \u001b[2m18 \u001b[32;22m+\u001b[38;2;205;214;244mПричина: открыта крышка.\r\n\u001b[39m \u001b[2m19 \u001b[32;22m+\r\n\u001b[39m \u001b[2m20 \u001b[32;22m+\u001b[38;2;205;214;244mЧто сработало: закрыть заднюю откидную крышку. Никаких кнопок нажимать не понадобилось.\r\n\u001b[39m \u001b[2m21 \u001b[32;22m+\r\n\u001b[39m \u001b[2m22 \u001b[32;22m+\u001b[38;2;147;153;178m##\u001b[38;2;250;179;135m \u001b[38;2;148;226;213mE-0001: Non-genuine toner\r\n\u001b[39m \u001b[2m23 \u001b[32;22m+\r\n\u001b[39m \u001b[2m24 \u001b[32;22m+\u001b[38;2;205;214;244mПричина: принтер видит неоригинальный картридж.\r\n\u001b[39m \u001b[2m25 \u001b[32;22m+\r\n\u001b[39m \u001b[2m26 \u001b[32;22m+\u001b[38;2;205;214;244mЧто сработало: зажать \u001b[38;2;147;153;178m`\u001b[38;2;205;214;244mMode Select\u001b[38;2;147;153;178m`\u001b[38;2;205;214;244m + \u001b[38;2;147;153;178m`\u001b[38;2;205;214;244mStop/Reset\u001b[38;2;147;153;178m`\u001b[38;2;205;214;244m на 3+ секунды.\r\n\u001b[39m \u001b[2m27 \u001b[32;22m+\r\n\u001b[39m \u001b[2m28 \u001b[32;22m+\u001b[38;2;205;214;244mВажно: нужна именно \u001b[38;2;147;153;178m`\u001b[38;2;205;214;244mMode Select\u001b[38;2;147;153;178m`\u001b[38;2;205;214;244m, а не зелёная кнопка \u001b[38;2;147;153;178m`\u001b[38;2;205;214;244mStart\u001b[38;2;147;153;178m`\u001b[38;2;205;214;244m. Комбинация \u001b[38;2;147;153;178m`\u001b[38;2;205;214;244mStart\u001b[38;2;147;153;178m`\u001b[38;2;205;214;244m + \u001b[38;2;147;153;178m`\u001b[38;2;205;214;244mStop\u001b[38;2;147;153;178m`\u001b[38;2;205;214;244m не помогл\r\n\u001b[39m \u001b[2m \u001b[38;2;205;214;244;22mа.\r\n\u001b[39m \u001b[2m29 \u001b[32;22m+\r\n\u001b[39m \u001b[2m30 \u001b[32;22m+\u001b[38;2;205;214;244mПосле сброса на экране появилось \u001b[38;2;147;153;178m`\u001b[38;2;205;214;244m01\u001b[38;2;147;153;178m`\u001b[38;2;205;214;244m. Это не ошибка, а нормальный режим готовности: количество копий\r\n\u001b[39m \u001b[2m \u001b[38;2;205;214;244;22m по умолчанию равно 1.\r\n\u001b[39m \u001b[2m31 \u001b[32;22m+\r\n\u001b[39m \u001b[2m32 \u001b[32;22m+\u001b[38;2;147;153;178m##\u001b[38;2;250;179;135m \u001b[38;2;148;226;213mE-0017: Not connected\r\n\u001b[39m \u001b[2m33 \u001b[32;22m+\r\n\u001b[39m \u001b[2m34 \u001b[32;22m+\u001b[38;2;205;214;244mЭто не аппаратная ошибка, а отвалившийся USB.\r\n\u001b[39m \u001b[2m35 \u001b[32;22m+\r\n\u001b[39m \u001b[2m36 \u001b[32;22m+\u001b[38;2;205;214;244mЧто сделать:\r\n\u001b[39m \u001b[2m37 \u001b[32;22m+\r\n\u001b[39m \u001b[2m38 \u001b[32;22m+\u001b[38;2;205;214;244m1\u001b[38;2;147;153;178m.\u001b[38;2;205;214;244m Нажать \u001b[38;2;147;153;178m`\u001b[38;2;205;214;244mStop/Reset\u001b[38;2;147;153;178m`\u001b[38;2;205;214;244m.\r\n\u001b[39m \u001b[2m39 \u001b[32;22m+\u001b[38;2;205;214;244m2\u001b[38;2;147;153;178m.\u001b[38;2;205;214;244m Подключить USB-кабель.\r\n\u001b[39m \u001b[2m40 \u001b[32;22m+\u001b[38;2;205;214;244m3\u001b[38;2;147;153;178m.\u001b[38;2;205;214;244m Проверить драйвер.\r\n\u001b[39m \u001b[2m41 \u001b[32;22m+\r\n\u001b[39m \u001b[2m42 \u001b[32;22m+\u001b[38;2;147;153;178m##\u001b[38;2;250;179;135m \u001b[38;2;148;226;213mКоротко\r\n\u001b[39m \u001b[2m43 \u001b[32;22m+\r\n\u001b[39m \u001b[2m44 \u001b[32;22m+\u001b[38;2;205;214;244mГлавная рабочая комбинация для сброса ошибки картриджа: \u001b[38;2;147;153;178m`\u001b[38;2;205;214;244mMode Select\u001b[38;2;147;153;178m`\u001b[38;2;205;214;244m + \u001b[38;2;147;153;178m`\u001b[38;2;205;214;244mStop/Reset\u001b[38;2;147;153;178m`\u001b[38;2;205;214;244m, удерживать 3+ с\r\n\u001b[39m \u001b[2m \u001b[38;2;205;214;244;22mекунды.\r\n\u001b[0m\u001b[109X\r\n\u001b[2m └ \u001b[0m90 Library/Programming/Ruby - массивы.md (\u001b[32m+78\u001b[0m \u001b[31m-3\u001b[0m)\r\n \u001b[2m 1 \u001b[0m \u001b[38;2;147;153;178m---\r\n\u001b[39;48;5;52m \u001b[2m 2 \u001b[31;22m-\u001b[38;2;205;214;244;2mstatus: seed\u001b[88X\r\n\u001b[39;48;5;22;22m \u001b[2m 2 \u001b[32;22m+\u001b[38;2;205;214;244mstatus: processing\u001b[82X\r\n\u001b[0m \u001b[2m 3 \u001b[0m \u001b[38;2;205;214;244mtype: knowledge\u001b[85X\r\n\u001b[0m \u001b[2m ⋮\r\n\u001b[0m \u001b[2m 7 \u001b[0m \u001b[38;2;205;214;244mcreated: 2026-05-17\r\n\u001b[39;48;5;52m \u001b[2m 8 \u001b[31;22m-\u001b[38;2;205;214;244;2mupdated: 2026-05-17\u001b[81X\r\n\u001b[39;48;5;22;22m \u001b[2m 8 \u001b[32;22m+\u001b[38;2;205;214;244mupdated: 2026-05-26\u001b[81X\r\n\u001b[0m \u001b[2m 9 \u001b[0m \u001b[38;2;205;214;244mtitle: Ruby - массивы\u001b[79X\r\n\u001b[39;48;5;52m \u001b[2m 10 \u001b[31;22m-\u001b[38;2;205;214;244;2msource: \"[[Ruby - массивы]]\"\u001b[72X\r\n\u001b[39;48;5;22;22m \u001b[2m 10 \u001b[32;22m+\u001b[38;2;205;214;244msource:\u001b[93X\r\n\u001b[39m \u001b[2m 11 \u001b[32;22m+\u001b[38;2;205;214;244m \u001b[38;2;147;153;178m-\u001b[38;2;205;214;244m \"[[Ruby - массивы]]\"\r\n\u001b[39m \u001b[2m 12 \u001b[32;22m+\u001b[38;2;205;214;244m \u001b[38;2;147;153;178m-\u001b[38;2;205;214;244m \"[[Итераторы для обработки массивов Ruby]]\"\r\n\u001b[0m \u001b[2m 13 \u001b[0m \u001b[38;2;147;153;178m---\u001b[97X\r\n\u001b[0m \u001b[2m ⋮\r\n\u001b[0m \u001b[2m 99 \u001b[0m \u001b[38;2;147;153;178m```\r\n\u001b[39;48;5;22m \u001b[2m100 \u001b[32;22m+\u001b[100X\r\n\u001b[39m \u001b[2m101 \u001b[32;22m+\u001b[38;2;205;214;244m## Итераторы\r\n\u001b[39m \u001b[2m102 \u001b[32;22m+\r\n\u001b[39m \u001b[2m103 \u001b[32;22m+\u001b[38;2;205;214;244m`each` перебирает элементы массива:\r\n\u001b[39m \u001b[2m104 \u001b[32;22m+\r\n\u001b[39m \u001b[2m105 \u001b[32;22m+\u001b[38;2;205;214;244m```ruby\r\n\u001b[39m \u001b[2m106 \u001b[32;22m+\u001b[38;2;205;214;244mary.each { |item| block }\r\n\u001b[39m \u001b[2m107 \u001b[32;22m+\u001b[38;2;147;153;178m```\r\n\u001b[39m \u001b[2m108 \u001b[32;22m+\r\n\u001b[39m \u001b[2m109 \u001b[32;22m+\u001b[38;2;205;214;244mПример:\r\n\u001b[39m \u001b[2m110 \u001b[32;22m+\r\n\u001b[39m \u001b[2m111 \u001b[32;22m+\u001b[38;2;147;153;178m```\u001b[38;2;205;214;244mruby\r\n\u001b[39m \u001b[2m112 \u001b[32;22m+\u001b[38;2;205;214;244marr\u001b[38;2;148;226;213m.\u001b[38;2;205;214;244meach \u001b[38;2;203;166;247mdo\u001b[38;2;205;214;244m \u001b[38;2;147;153;178m|\u001b[38;2;235;160;172mx\u001b[38;2;147;153;178m|\r\n\u001b[39m \u001b[2m113 \u001b[32;22m+\u001b[38;2;205;214;244m \u001b[38;2;203;166;247mif\u001b[38;2;205;214;244m x \u001b[38;2;148;226;213m>\u001b[38;2;205;214;244m \u001b[38;2;250;179;135m0\u001b[38;2;205;214;244m \u001b[38;2;148;226;213m&&\u001b[38;2;205;214;244m x \u001b[38;2;148;226;213m%\u001b[38;2;205;214;244m \u001b[38;2;250;179;135m5\u001b[38;2;205;214;244m \u001b[38;2;148;226;213m==\u001b[38;2;205;214;244m \u001b[38;2;250;179;135m0\r\n\u001b[39m \u001b[2m114 \u001b[32;22m+\u001b[38;2;205;214;244m arr_out \u001b[38;2;148;226;213m<<\u001b[38;2;205;214;244m x\r\n\u001b[39m \u001b[2m115 \u001b[32;22m+\u001b[38;2;205;214;244m \u001b[38;2;203;166;247mend\r\n\u001b[39m \u001b[2m116 \u001b[32;22m+\u001b[38;2;203;166;247mend\r\n\u001b[39m \u001b[2m117 \u001b[32;22m+\u001b[38;2;147;153;178m```\r\n\u001b[39m \u001b[2m118 \u001b[32;22m+\r\n\u001b[39m \u001b[2m119 \u001b[32;22m+\u001b[38;2;147;153;178m`\u001b[38;2;205;214;244meach_index\u001b[38;2;147;153;178m`\u001b[38;2;205;214;244m перебирает индексы:\r\n\u001b[39m \u001b[2m120 \u001b[32;22m+\r\n\u001b[39m \u001b[2m121 \u001b[32;22m+\u001b[38;2;147;153;178m```\u001b[38;2;205;214;244mruby\r\n\u001b[39m \u001b[2m122 \u001b[32;22m+\u001b[38;2;205;214;244mary\u001b[38;2;148;226;213m.\u001b[38;2;205;214;244meach_index \u001b[38;2;147;153;178m{\u001b[38;2;205;214;244m \u001b[38;2;147;153;178m|\u001b[38;2;235;160;172mindex\u001b[38;2;147;153;178m|\u001b[38;2;205;214;244m block \u001b[38;2;147;153;178m}\r\n\u001b[39m \u001b[2m123 \u001b[32;22m+\u001b[38;2;147;153;178m```\r\n\u001b[39m \u001b[2m124 \u001b[32;22m+\r\n\u001b[39m \u001b[2m125 \u001b[32;22m+\u001b[38;2;205;214;244mПохожий проход по индексам:\r\n\u001b[39m \u001b[2m126 \u001b[32;22m+\r\n\u001b[39m \u001b[2m127 \u001b[32;22m+\u001b[38;2;147;153;178m```\u001b[38;2;205;214;244mruby\r\n\u001b[39m \u001b[2m128 \u001b[32;22m+\u001b[38;2;147;153;178m(\u001b[38;2;250;179;135m0\u001b[38;2;148;226;213m...\u001b[38;2;205;214;244marr\u001b[38;2;148;226;213m.\u001b[38;2;205;214;244msize\u001b[38;2;147;153;178m)\u001b[38;2;148;226;213m.\u001b[38;2;205;214;244meach \u001b[38;2;203;166;247mdo\u001b[38;2;205;214;244m \u001b[38;2;147;153;178m|\u001b[38;2;235;160;172mi\u001b[38;2;147;153;178m|\r\n\u001b[39m \u001b[2m129 \u001b[32;22m+\u001b[38;2;205;214;244m \u001b[38;2;203;166;247mif\u001b[38;2;205;214;244m arr\u001b[38;2;147;153;178m[\u001b[38;2;205;214;244mi\u001b[38;2;147;153;178m]\u001b[38;2;205;214;244m \u001b[38;2;148;226;213m>\u001b[38;2;205;214;244m \u001b[38;2;250;179;135m0\u001b[38;2;205;214;244m \u001b[38;2;148;226;213m&&\u001b[38;2;205;214;244m arr\u001b[38;2;147;153;178m[\u001b[38;2;205;214;244mi\u001b[38;2;147;153;178m]\u001b[38;2;205;214;244m \u001b[38;2;148;226;213m%\u001b[38;2;205;214;244m \u001b[38;2;250;179;135m5\u001b[38;2;205;214;244m \u001b[38;2;148;226;213m==\u001b[38;2;205;214;244m \u001b[38;2;250;179;135m0\r\n\u001b[39m \u001b[2m130 \u001b[32;22m+\u001b[38;2;205;214;244m arr_out \u001b[38;2;148;226;213m<<\u001b[38;2;205;214;244m arr\u001b[38;2;147;153;178m[\u001b[38;2;205;214;244mi\u001b[38;2;147;153;178m]\r\n\u001b[39m \u001b[2m131 \u001b[32;22m+\u001b[38;2;205;214;244m \u001b[38;2;203;166;247mend\r\n\u001b[39m \u001b[2m132 \u001b[32;22m+\u001b[38;2;203;166;247mend\r\n\u001b[39m \u001b[2m133 \u001b[32;22m+\u001b[38;2;147;153;178m```\r\n\u001b[39m \u001b[2m134 \u001b[32;22m+\r\n\u001b[39m \u001b[2m135 \u001b[32;22m+\u001b[38;2;147;153;178m###\u001b[38;2;249;226;175m \u001b[38;2;148;226;213mПоиск минимума, максимума и индексов\r\n\u001b[39m \u001b[2m136 \u001b[32;22m+\r\n\u001b[39m \u001b[2m137 \u001b[32;22m+\u001b[38;2;205;214;244mИмперативный вариант:\r\n\u001b[39m \u001b[2m138 \u001b[32;22m+\r\n\u001b[39m \u001b[2m139 \u001b[32;22m+\u001b[38;2;147;153;178m```\u001b[38;2;205;214;244mruby\r\n\u001b[39m \u001b[2m140 \u001b[32;22m+\u001b[38;2;205;214;244ma \u001b[38;2;148;226;213m=\u001b[38;2;205;214;244m \u001b[38;2;243;139;168mgets\u001b[38;2;148;226;213m.\u001b[38;2;243;139;168mchomp\u001b[38;2;148;226;213m.\u001b[38;2;205;214;244msplit\u001b[38;2;148;226;213m.\u001b[38;2;205;214;244mmap \u001b[38;2;147;153;178m{\u001b[38;2;205;214;244m \u001b[38;2;147;153;178m|\u001b[38;2;235;160;172mi\u001b[38;2;147;153;178m|\u001b[38;2;205;214;244m i\u001b[38;2;148;226;213m.\u001b[38;2;243;139;168mto_i\u001b[38;2;205;214;244m \u001b[38;2;147;153;178m}\r\n\u001b[39m \u001b[2m141 \u001b[32;22m+\u001b[38;2;243;139;168mp\u001b[38;2;205;214;244m a\r\n\u001b[39m \u001b[2m142 \u001b[32;22m+\r\n\u001b[39m \u001b[2m143 \u001b[32;22m+\u001b[38;2;205;214;244mmax \u001b[38;2;148;226;213m=\u001b[38;2;205;214;244m min \u001b[38;2;148;226;213m=\u001b[38;2;205;214;244m a\u001b[38;2;147;153;178m[\u001b[38;2;250;179;135m0\u001b[38;2;147;153;178m]\r\n\u001b[39m \u001b[2m144 \u001b[32;22m+\u001b[38;2;205;214;244mmaxi \u001b[38;2;148;226;213m=\u001b[38;2;205;214;244m mini \u001b[38;2;148;226;213m=\u001b[38;2;205;214;244m \u001b[38;2;250;179;135m0\r\n\u001b[39m \u001b[2m145 \u001b[32;22m+\r\n\u001b[39m \u001b[2m146 \u001b[32;22m+\u001b[38;2;203;166;247mfor\u001b[38;2;205;214;244m i \u001b[38;2;148;226;213min\u001b[38;2;205;214;244m \u001b[38;2;250;179;135m1\u001b[38;2;148;226;213m...\u001b[38;2;205;214;244ma\u001b[38;2;148;226;213m.\u001b[38;2;205;214;244msize\r\n\u001b[39m \u001b[2m147 \u001b[32;22m+\u001b[38;2;205;214;244m \u001b[38;2;203;166;247mif\u001b[38;2;205;214;244m a\u001b[38;2;147;153;178m[\u001b[38;2;205;214;244mi\u001b[38;2;147;153;178m]\u001b[38;2;205;214;244m \u001b[38;2;148;226;213m>\u001b[38;2;205;214;244m max\r\n\u001b[39m \u001b[2m148 \u001b[32;22m+\u001b[38;2;205;214;244m max \u001b[38;2;148;226;213m=\u001b[38;2;205;214;244m a\u001b[38;2;147;153;178m[\u001b[38;2;205;214;244mi\u001b[38;2;147;153;178m]\r\n\u001b[39m \u001b[2m149 \u001b[32;22m+\u001b[38;2;205;214;244m maxi \u001b[38;2;148;226;213m=\u001b[38;2;205;214;244m i\r\n\u001b[39m \u001b[2m150 \u001b[32;22m+\u001b[38;2;205;214;244m \u001b[38;2;203;166;247mend\r\n\u001b[39m \u001b[2m151 \u001b[32;22m+\r\n\u001b[39m \u001b[2m152 \u001b[32;22m+\u001b[38;2;205;214;244m \u001b[38;2;203;166;247mif\u001b[38;2;205;214;244m a\u001b[38;2;147;153;178m[\u001b[38;2;205;214;244mi\u001b[38;2;147;153;178m]\u001b[38;2;205;214;244m \u001b[38;2;148;226;213m<\u001b[38;2;205;214;244m min\r\n\u001b[39m \u001b[2m153 \u001b[32;22m+\u001b[38;2;205;214;244m min \u001b[38;2;148;226;213m=\u001b[38;2;205;214;244m a\u001b[38;2;147;153;178m[\u001b[38;2;205;214;244mi\u001b[38;2;147;153;178m]\r\n\u001b[39m \u001b[2m154 \u001b[32;22m+\u001b[38;2;205;214;244m mini \u001b[38;2;148;226;213m=\u001b[38;2;205;214;244m i\r\n\u001b[39m \u001b[2m155 \u001b[32;22m+\u001b[38;2;205;214;244m \u001b[38;2;203;166;247mend\r\n\u001b[39m \u001b[2m156 \u001b[32;22m+\u001b[38;2;203;166;247mend\r\n\u001b[39m \u001b[2m157 \u001b[32;22m+\r\n\u001b[39m \u001b[2m158 \u001b[32;22m+\u001b[38;2;243;139;168mputs\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m\"Максимальное число: \u001b[38;2;147;153;178m#{\u001b[38;2;205;214;244mmax\u001b[38;2;147;153;178m}\u001b[38;2;166;227;161m, индекс: \u001b[38;2;147;153;178m#{\u001b[38;2;205;214;244mmaxi\u001b[38;2;147;153;178m}\u001b[38;2;166;227;161m\"\r\n\u001b[39m \u001b[2m159 \u001b[32;22m+\u001b[38;2;243;139;168mputs\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m\"Минимальное число: \u001b[38;2;147;153;178m#{\u001b[38;2;205;214;244mmin\u001b[38;2;147;153;178m}\u001b[38;2;166;227;161m, индекс: \u001b[38;2;147;153;178m#{\u001b[38;2;205;214;244mmini\u001b[38;2;147;153;178m}\u001b[38;2;166;227;161m\"\r\n\u001b[39m \u001b[2m160 \u001b[32;22m+\u001b[38;2;147;153;178m```\r\n\u001b[39m \u001b[2m161 \u001b[32;22m+\r\n\u001b[39m \u001b[2m162 \u001b[32;22m+\u001b[38;2;205;214;244mЧерез методы массива:\r\n\u001b[39m \u001b[2m163 \u001b[32;22m+\r\n\u001b[39m \u001b[2m164 \u001b[32;22m+\u001b[38;2;147;153;178m```\u001b[38;2;205;214;244mruby\r\n\u001b[39m \u001b[2m165 \u001b[32;22m+\u001b[38;2;205;214;244ma \u001b[38;2;148;226;213m=\u001b[38;2;205;214;244m \u001b[38;2;243;139;168mgets\u001b[38;2;148;226;213m.\u001b[38;2;243;139;168mchomp\u001b[38;2;148;226;213m.\u001b[38;2;205;214;244msplit\u001b[38;2;148;226;213m.\u001b[38;2;205;214;244mmap \u001b[38;2;147;153;178m{\u001b[38;2;205;214;244m \u001b[38;2;147;153;178m|\u001b[38;2;235;160;172mi\u001b[38;2;147;153;178m|\u001b[38;2;205;214;244m i\u001b[38;2;148;226;213m.\u001b[38;2;243;139;168mto_i\u001b[38;2;205;214;244m \u001b[38;2;147;153;178m}\r\n\u001b[39m \u001b[2m166 \u001b[32;22m+\u001b[38;2;243;139;168mp\u001b[38;2;205;214;244m a\r\n\u001b[39m \u001b[2m167 \u001b[32;22m+\r\n\u001b[39m \u001b[2m168 \u001b[32;22m+\u001b[38;2;205;214;244mmax \u001b[38;2;148;226;213m=\u001b[38;2;205;214;244m a\u001b[38;2;148;226;213m.\u001b[38;2;205;214;244mmax\r\n\u001b[39m \u001b[2m169 \u001b[32;22m+\u001b[38;2;205;214;244mmin \u001b[38;2;148;226;213m=\u001b[38;2;205;214;244m a\u001b[38;2;148;226;213m.\u001b[38;2;205;214;244mmin\r\n\u001b[39m \u001b[2m170 \u001b[32;22m+\u001b[38;2;205;214;244mmaxi \u001b[38;2;148;226;213m=\u001b[38;2;205;214;244m a\u001b[38;2;148;226;213m.\u001b[38;2;243;139;168mindex\u001b[38;2;147;153;178m(\u001b[38;2;205;214;244mmax\u001b[38;2;147;153;178m)\r\n\u001b[39m \u001b[2m171 \u001b[32;22m+\u001b[38;2;205;214;244mmini \u001b[38;2;148;226;213m=\u001b[38;2;205;214;244m a\u001b[38;2;148;226;213m.\u001b[38;2;243;139;168mindex\u001b[38;2;147;153;178m(\u001b[38;2;205;214;244mmin\u001b[38;2;147;153;178m)\r\n\u001b[39m \u001b[2m172 \u001b[32;22m+\u001b[38;2;147;153;178m```\r\n\u001b[0m\u001b[109X\r\n\u001b[2m └ \u001b[0m90 Library/Programming/Ruby - основы языка.md (\u001b[32m+141\u001b[0m \u001b[31m-3\u001b[0m)\r\n \u001b[2m 1 \u001b[0m \u001b[38;2;147;153;178m---\r\n\u001b[39;48;5;52m \u001b[2m 2 \u001b[31;22m-\u001b[38;2;205;214;244;2mstatus: seed\u001b[88X\r\n\u001b[39;48;5;22;22m \u001b[2m 2 \u001b[32;22m+\u001b[38;2;205;214;244mstatus: processing\u001b[82X\r\n\u001b[0m \u001b[2m 3 \u001b[0m \u001b[38;2;205;214;244mtype: knowledge\u001b[85X\r\n\u001b[0m \u001b[2m ⋮\r\n\u001b[0m \u001b[2m 7 \u001b[0m \u001b[38;2;205;214;244mcreated: 2026-05-17\r\n\u001b[39;48;5;52m \u001b[2m 8 \u001b[31;22m-\u001b[38;2;205;214;244;2mupdated: 2026-05-17\u001b[81X\r\n\u001b[39;48;5;22;22m \u001b[2m 8 \u001b[32;22m+\u001b[38;2;205;214;244mupdated: 2026-05-26\u001b[81X\r\n\u001b[0m \u001b[2m 9 \u001b[0m \u001b[38;2;205;214;244mtitle: Ruby - основы языка\u001b[74X\r\n\u001b[39;48;5;52m \u001b[2m 10 \u001b[31;22m-\u001b[38;2;205;214;244;2msource: \"[[Ruby - основы языка]]\"\u001b[67X\r\n\u001b[39;48;5;22;22m \u001b[2m 10 \u001b[32;22m+\u001b[38;2;205;214;244msource:\u001b[93X\r\n\u001b[39m \u001b[2m 11 \u001b[32;22m+\u001b[38;2;205;214;244m \u001b[38;2;147;153;178m-\u001b[38;2;205;214;244m \"[[Ruby - основы языка]]\"\r\n\u001b[39m \u001b[2m 12 \u001b[32;22m+\u001b[38;2;205;214;244m \u001b[38;2;147;153;178m-\u001b[38;2;205;214;244m \"[[Знания Ruby]]\"\r\n\u001b[0m \u001b[2m 13 \u001b[0m \u001b[38;2;147;153;178m---\u001b[97X\r\n\u001b[0m \u001b[2m ⋮\r\n\u001b[0m \u001b[2m 70\r\n\u001b[48;5;22;22m \u001b[2m 71 \u001b[32;22m+\u001b[38;2;147;153;178m##\u001b[38;2;250;179;135m \u001b[38;2;148;226;213mЗначения по умолчанию\u001b[76X\r\n\u001b[39m \u001b[2m 72 \u001b[32;22m+\r\n\u001b[39m \u001b[2m 73 \u001b[32;22m+\u001b[38;2;205;214;244mДля присваивания значения по умолчанию часто используют \u001b[38;2;147;153;178m`\u001b[38;2;205;214;244m||=\u001b[38;2;147;153;178m`\u001b[38;2;205;214;244m:\r\n\u001b[39m \u001b[2m 74 \u001b[32;22m+\r\n\u001b[39m \u001b[2m 75 \u001b[32;22m+\u001b[38;2;147;153;178m```\u001b[38;2;205;214;244mruby\r\n\u001b[39m \u001b[2m 76 \u001b[32;22m+\u001b[38;2;205;214;244ma \u001b[38;2;148;226;213m||=\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m'что-то'\r\n\u001b[39m \u001b[2m 77 \u001b[32;22m+\u001b[38;2;147;153;178m# то же самое, что:\r\n\u001b[39m \u001b[2m 78 \u001b[32;22m+\u001b[38;2;205;214;244ma \u001b[38;2;148;226;213m=\u001b[38;2;205;214;244m a \u001b[38;2;148;226;213m||\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m'что-то'\r\n\u001b[39m \u001b[2m 79 \u001b[32;22m+\u001b[38;2;147;153;178m```\r\n\u001b[39m \u001b[2m 80 \u001b[32;22m+\r\n\u001b[39m \u001b[2m 81 \u001b[32;22m+\u001b[38;2;205;214;244mЭто работает из-за того, что в Ruby только \u001b[38;2;147;153;178m`\u001b[38;2;205;214;244mnil\u001b[38;2;147;153;178m`\u001b[38;2;205;214;244m и \u001b[38;2;147;153;178m`\u001b[38;2;205;214;244mfalse\u001b[38;2;147;153;178m`\u001b[38;2;205;214;244m считаются falsey. Все остальные значения,\r\n\u001b[39m \u001b[2m \u001b[38;2;205;214;244;22m включая \u001b[38;2;147;153;178m`\u001b[38;2;205;214;244m0\u001b[38;2;147;153;178m`\u001b[38;2;205;214;244m, пустую строку и пустой массив, в условиях считаются truthy.\r\n\u001b[39m \u001b[2m 82 \u001b[32;22m+\r\n\u001b[39m \u001b[2m 83 \u001b[32;22m+\u001b[38;2;205;214;244mОграничение: \u001b[38;2;147;153;178m`\u001b[38;2;205;214;244m||=\u001b[38;2;147;153;178m`\u001b[38;2;205;214;244m не подходит, если \u001b[38;2;147;153;178m`\u001b[38;2;205;214;244mfalse\u001b[38;2;147;153;178m`\u001b[38;2;205;214;244m — допустимое сохранённое значение.\r\n\u001b[39m \u001b[2m 84 \u001b[32;22m+\r\n\u001b[39m \u001b[2m 85 \u001b[32;22m+\u001b[38;2;147;153;178m##\u001b[38;2;250;179;135m \u001b[38;2;148;226;213mПредикаты\r\n\u001b[39m \u001b[2m 86 \u001b[32;22m+\r\n\u001b[39m \u001b[2m 87 \u001b[32;22m+\u001b[38;2;205;214;244mВ Ruby проверки часто оформляют методами-предикатами с \u001b[38;2;147;153;178m`\u001b[38;2;205;214;244m?\u001b[38;2;147;153;178m`\u001b[38;2;205;214;244m на конце:\r\n\u001b[39m \u001b[2m 88 \u001b[32;22m+\r\n\u001b[39m \u001b[2m 89 \u001b[32;22m+\u001b[38;2;147;153;178m```\u001b[38;2;205;214;244mruby\r\n\u001b[39m \u001b[2m 90 \u001b[32;22m+\u001b[38;2;250;179;135m0\u001b[38;2;148;226;213m.\u001b[38;2;205;214;244mzero? \u001b[38;2;147;153;178m# => true\r\n\u001b[39m \u001b[2m 91 \u001b[32;22m+\u001b[38;2;250;179;135m1\u001b[38;2;148;226;213m.\u001b[38;2;205;214;244mzero? \u001b[38;2;147;153;178m# => false\r\n\u001b[39m \u001b[2m 92 \u001b[32;22m+\u001b[38;2;250;179;135m2\u001b[38;2;148;226;213m.\u001b[38;2;205;214;244mpositive? \u001b[38;2;147;153;178m# => true\r\n\u001b[39m \u001b[2m 93 \u001b[32;22m+\r\n\u001b[39m \u001b[2m 94 \u001b[32;22m+\u001b[38;2;250;179;135m8\u001b[38;2;148;226;213m.\u001b[38;2;205;214;244meven? \u001b[38;2;147;153;178m# => true\r\n\u001b[39m \u001b[2m 95 \u001b[32;22m+\u001b[38;2;250;179;135m8\u001b[38;2;148;226;213m.\u001b[38;2;205;214;244modd? \u001b[38;2;147;153;178m# => false\r\n\u001b[39m \u001b[2m 96 \u001b[32;22m+\r\n\u001b[39m \u001b[2m 97 \u001b[32;22m+\u001b[38;2;166;227;161m''\u001b[38;2;148;226;213m.\u001b[38;2;205;214;244mempty? \u001b[38;2;147;153;178m# => true\r\n\u001b[39m \u001b[2m 98 \u001b[32;22m+\u001b[38;2;166;227;161m'wow'\u001b[38;2;148;226;213m.\u001b[38;2;205;214;244mempty? \u001b[38;2;147;153;178m# => false\r\n\u001b[39m \u001b[2m 99 \u001b[32;22m+\r\n\u001b[39m \u001b[2m100 \u001b[32;22m+\u001b[38;2;205;214;244msomething\u001b[38;2;148;226;213m.\u001b[38;2;243;139;168mnil?\r\n\u001b[39m \u001b[2m101 \u001b[32;22m+\u001b[38;2;205;214;244mitems\u001b[38;2;148;226;213m.\u001b[38;2;205;214;244many?\r\n\u001b[39m \u001b[2m102 \u001b[32;22m+\u001b[38;2;205;214;244mitems\u001b[38;2;148;226;213m.\u001b[38;2;205;214;244mempty?\r\n\u001b[39m \u001b[2m103 \u001b[32;22m+\u001b[38;2;147;153;178m```\r\n\u001b[39m \u001b[2m104 \u001b[32;22m+\r\n\u001b[0m \u001b[2m105 \u001b[0m \u001b[38;2;147;153;178m##\u001b[38;2;250;179;135m \u001b[38;2;148;226;213mУправляющие конструкции\u001b[74X\r\n\u001b[0m \u001b[2m ⋮\r\n\u001b[0m \u001b[2m134\r\n\u001b[48;5;22;22m \u001b[2m135 \u001b[32;22m+\u001b[38;2;147;153;178m###\u001b[38;2;249;226;175m \u001b[38;2;148;226;213mАльтернативные условия\u001b[74X\r\n\u001b[39m \u001b[2m136 \u001b[32;22m+\r\n\u001b[39m \u001b[2m137 \u001b[32;22m+\u001b[38;2;205;214;244mТернарный оператор:\r\n\u001b[39m \u001b[2m138 \u001b[32;22m+\r\n\u001b[39m \u001b[2m139 \u001b[32;22m+\u001b[38;2;147;153;178m```\u001b[38;2;205;214;244mruby\r\n\u001b[39m \u001b[2m140 \u001b[32;22m+\u001b[38;2;205;214;244mv \u001b[38;2;148;226;213m=\u001b[38;2;205;214;244m \u001b[38;2;250;179;135m3\u001b[38;2;205;214;244m \u001b[38;2;148;226;213m==\u001b[38;2;205;214;244m \u001b[38;2;250;179;135m4\u001b[38;2;205;214;244m \u001b[38;2;148;226;213m?\u001b[38;2;205;214;244m \u001b[38;2;250;179;135m1\u001b[38;2;205;214;244m \u001b[38;2;148;226;213m:\u001b[38;2;205;214;244m \u001b[38;2;250;179;135m0\r\n\u001b[39m \u001b[2m141 \u001b[32;22m+\u001b[38;2;147;153;178m```\r\n\u001b[39m \u001b[2m142 \u001b[32;22m+\r\n\u001b[39m \u001b[2m143 \u001b[32;22m+\u001b[38;2;205;214;244mПостфиксный \u001b[38;2;147;153;178m`\u001b[38;2;205;214;244mif\u001b[38;2;147;153;178m`\u001b[38;2;205;214;244m используют для коротких выражений:\r\n\u001b[39m \u001b[2m144 \u001b[32;22m+\r\n\u001b[39m \u001b[2m145 \u001b[32;22m+\u001b[38;2;147;153;178m```\u001b[38;2;205;214;244mruby\r\n\u001b[39m \u001b[2m146 \u001b[32;22m+\u001b[38;2;205;214;244mdo_something \u001b[38;2;203;166;247mif\u001b[38;2;205;214;244m num\u001b[38;2;148;226;213m.\u001b[38;2;205;214;244mzero?\r\n\u001b[39m \u001b[2m147 \u001b[32;22m+\u001b[38;2;147;153;178m```\r\n\u001b[39m \u001b[2m148 \u001b[32;22m+\r\n\u001b[39m \u001b[2m149 \u001b[32;22m+\u001b[38;2;147;153;178m`\u001b[38;2;205;214;244munless\u001b[38;2;147;153;178m`\u001b[38;2;205;214;244m выполняет блок, если условие ложно:\r\n\u001b[39m \u001b[2m150 \u001b[32;22m+\r\n\u001b[39m \u001b[2m151 \u001b[32;22m+\u001b[38;2;147;153;178m```\u001b[38;2;205;214;244mruby\r\n\u001b[39m \u001b[2m152 \u001b[32;22m+\u001b[38;2;203;166;247munless\u001b[38;2;205;214;244m something\u001b[38;2;148;226;213m.\u001b[38;2;205;214;244mzero?\r\n\u001b[39m \u001b[2m153 \u001b[32;22m+\u001b[38;2;205;214;244m do_something\r\n\u001b[39m \u001b[2m154 \u001b[32;22m+\u001b[38;2;203;166;247mend\r\n\u001b[39m \u001b[2m155 \u001b[32;22m+\u001b[38;2;147;153;178m```\r\n\u001b[39m \u001b[2m156 \u001b[32;22m+\r\n\u001b[39m \u001b[2m157 \u001b[32;22m+\u001b[38;2;205;214;244mСложные условия внутри \u001b[38;2;147;153;178m`\u001b[38;2;205;214;244munless\u001b[38;2;147;153;178m`\u001b[38;2;205;214;244m лучше не писать: \u001b[38;2;147;153;178m`\u001b[38;2;205;214;244munless a && b\u001b[38;2;147;153;178m`\u001b[38;2;205;214;244m читается хуже явного \u001b[38;2;147;153;178m`\u001b[38;2;205;214;244mif\u001b[38;2;147;153;178m`\u001b[38;2;205;214;244m.\r\n\u001b[39m \u001b[2m158 \u001b[32;22m+\r\n\u001b[39m \u001b[2m159 \u001b[32;22m+\u001b[38;2;147;153;178m##\u001b[38;2;250;179;135m \u001b[38;2;148;226;213mЛогические операторы\r\n\u001b[39m \u001b[2m160 \u001b[32;22m+\r\n\u001b[39m \u001b[2m161 \u001b[32;22m+\u001b[38;2;147;153;178m```\u001b[38;2;205;214;244mruby\r\n\u001b[39m \u001b[2m162 \u001b[32;22m+\u001b[38;2;243;139;168mtrue\u001b[38;2;205;214;244m \u001b[38;2;148;226;213m&&\u001b[38;2;205;214;244m \u001b[38;2;243;139;168mfalse\u001b[38;2;205;214;244m \u001b[38;2;147;153;178m# => false\r\n\u001b[39m \u001b[2m163 \u001b[32;22m+\u001b[38;2;243;139;168mfalse\u001b[38;2;205;214;244m \u001b[38;2;148;226;213m||\u001b[38;2;205;214;244m \u001b[38;2;243;139;168mtrue\u001b[38;2;205;214;244m \u001b[38;2;147;153;178m# => true\r\n\u001b[39m \u001b[2m164 \u001b[32;22m+\u001b[38;2;148;226;213m!\u001b[38;2;243;139;168mtrue\u001b[38;2;205;214;244m \u001b[38;2;147;153;178m# => false\r\n\u001b[39m \u001b[2m165 \u001b[32;22m+\u001b[38;2;147;153;178m```\r\n\u001b[39m \u001b[2m166 \u001b[32;22m+\r\n\u001b[39m \u001b[2m167 \u001b[32;22m+\u001b[38;2;205;214;244mСравнение с логическими значениями строгое:\r\n\u001b[39m \u001b[2m168 \u001b[32;22m+\r\n\u001b[39m \u001b[2m169 \u001b[32;22m+\u001b[38;2;147;153;178m```\u001b[38;2;205;214;244mruby\r\n\u001b[39m \u001b[2m170 \u001b[32;22m+\u001b[38;2;243;139;168mtrue\u001b[38;2;205;214;244m \u001b[38;2;148;226;213m==\u001b[38;2;205;214;244m \u001b[38;2;250;179;135m1\u001b[38;2;205;214;244m \u001b[38;2;147;153;178m# => false\r\n\u001b[39m \u001b[2m171 \u001b[32;22m+\u001b[38;2;243;139;168mfalse\u001b[38;2;205;214;244m \u001b[38;2;148;226;213m==\u001b[38;2;205;214;244m \u001b[38;2;243;139;168mnil\u001b[38;2;205;214;244m \u001b[38;2;147;153;178m# => false\r\n\u001b[39m \u001b[2m172 \u001b[32;22m+\u001b[38;2;147;153;178m```\r\n\u001b[39m \u001b[2m173 \u001b[32;22m+\r\n\u001b[39m \u001b[2m174 \u001b[32;22m+\u001b[38;2;205;214;244mЛогические операторы возвращают не обязательно \u001b[38;2;147;153;178m`\u001b[38;2;205;214;244mtrue\u001b[38;2;147;153;178m`\u001b[38;2;205;214;244m или \u001b[38;2;147;153;178m`\u001b[38;2;205;214;244mfalse\u001b[38;2;147;153;178m`\u001b[38;2;205;214;244m, а последнее вычисленное значение:\r\n\u001b[39m \u001b[2m175 \u001b[32;22m+\r\n\u001b[39m \u001b[2m176 \u001b[32;22m+\u001b[38;2;147;153;178m```\u001b[38;2;205;214;244mruby\r\n\u001b[39m \u001b[2m177 \u001b[32;22m+\u001b[38;2;250;179;135m0\u001b[38;2;205;214;244m \u001b[38;2;148;226;213m&&\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m'one'\u001b[38;2;205;214;244m \u001b[38;2;147;153;178m# => \"one\"\r\n\u001b[39m \u001b[2m178 \u001b[32;22m+\u001b[38;2;243;139;168mnil\u001b[38;2;205;214;244m \u001b[38;2;148;226;213m&&\u001b[38;2;205;214;244m \u001b[38;2;243;139;168mfalse\u001b[38;2;205;214;244m \u001b[38;2;147;153;178m# => nil\r\n\u001b[39m \u001b[2m179 \u001b[32;22m+\u001b[38;2;147;153;178m```\r\n\u001b[39m \u001b[2m180 \u001b[32;22m+\r\n\u001b[39m \u001b[2m181 \u001b[32;22m+\u001b[38;2;147;153;178m##\u001b[38;2;250;179;135m \u001b[38;2;148;226;213mОператор \u001b[38;2;147;153;178m`\u001b[38;2;148;226;213m<=>\u001b[38;2;147;153;178m`\r\n\u001b[39m \u001b[2m182 \u001b[32;22m+\r\n\u001b[39m \u001b[2m183 \u001b[32;22m+\u001b[38;2;147;153;178m`\u001b[38;2;205;214;244m<=>\u001b[38;2;147;153;178m`\u001b[38;2;205;214;244m называют spaceship-оператором. Он возвращает \u001b[38;2;147;153;178m`\u001b[38;2;205;214;244m-1\u001b[38;2;147;153;178m`\u001b[38;2;205;214;244m, \u001b[38;2;147;153;178m`\u001b[38;2;205;214;244m0\u001b[38;2;147;153;178m`\u001b[38;2;205;214;244m или \u001b[38;2;147;153;178m`\u001b[38;2;205;214;244m1\u001b[38;2;147;153;178m`\u001b[38;2;205;214;244m и часто используется при сортир\r\n\u001b[39m \u001b[2m \u001b[38;2;205;214;244;22mовке:\r\n\u001b[39m \u001b[2m184 \u001b[32;22m+\r\n\u001b[39m \u001b[2m185 \u001b[32;22m+\u001b[38;2;147;153;178m```\u001b[38;2;205;214;244mruby\r\n\u001b[39m \u001b[2m186 \u001b[32;22m+\u001b[38;2;250;179;135m1\u001b[38;2;205;214;244m \u001b[38;2;148;226;213m<=>\u001b[38;2;205;214;244m \u001b[38;2;250;179;135m1\u001b[38;2;205;214;244m \u001b[38;2;147;153;178m# => 0\r\n\u001b[39m \u001b[2m187 \u001b[32;22m+\u001b[38;2;250;179;135m2\u001b[38;2;205;214;244m \u001b[38;2;148;226;213m<=>\u001b[38;2;205;214;244m \u001b[38;2;250;179;135m1\u001b[38;2;205;214;244m \u001b[38;2;147;153;178m# => 1\r\n\u001b[39m \u001b[2m188 \u001b[32;22m+\u001b[38;2;250;179;135m1\u001b[38;2;205;214;244m \u001b[38;2;148;226;213m<=>\u001b[38;2;205;214;244m \u001b[38;2;250;179;135m2\u001b[38;2;205;214;244m \u001b[38;2;147;153;178m# => -1\r\n\u001b[39m \u001b[2m189 \u001b[32;22m+\u001b[38;2;147;153;178m```\r\n\u001b[39m \u001b[2m190 \u001b[32;22m+\r\n\u001b[39m \u001b[2m191 \u001b[32;22m+\u001b[38;2;147;153;178m##\u001b[38;2;250;179;135m \u001b[38;2;148;226;213mСтроки\r\n\u001b[39m \u001b[2m192 \u001b[32;22m+\r\n\u001b[39m \u001b[2m193 \u001b[32;22m+\u001b[38;2;205;214;244mКонкатенация:\r\n\u001b[39m \u001b[2m194 \u001b[32;22m+\r\n\u001b[39m \u001b[2m195 \u001b[32;22m+\u001b[38;2;147;153;178m```\u001b[38;2;205;214;244mruby\r\n\u001b[39m \u001b[2m196 \u001b[32;22m+\u001b[38;2;243;139;168mname\u001b[38;2;205;214;244m \u001b[38;2;148;226;213m=\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m'H'\u001b[38;2;205;214;244m \u001b[38;2;148;226;213m+\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m'e'\u001b[38;2;205;214;244m \u001b[38;2;148;226;213m+\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m'x'\u001b[38;2;205;214;244m \u001b[38;2;148;226;213m+\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m'l'\u001b[38;2;205;214;244m \u001b[38;2;148;226;213m+\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m'e'\u001b[38;2;205;214;244m \u001b[38;2;148;226;213m+\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m't'\r\n\u001b[39m \u001b[2m197 \u001b[32;22m+\u001b[38;2;243;139;168mname\u001b[38;2;205;214;244m \u001b[38;2;148;226;213m=\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m'H'\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m'e'\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m'x'\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m'l'\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m'e'\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m't'\r\n\u001b[39m \u001b[2m198 \u001b[32;22m+\u001b[38;2;147;153;178m```\r\n\u001b[39m \u001b[2m199 \u001b[32;22m+\r\n\u001b[39m \u001b[2m200 \u001b[32;22m+\u001b[38;2;205;214;244mИнтерполяция работает только в двойных кавычках:\r\n\u001b[39m \u001b[2m201 \u001b[32;22m+\r\n\u001b[39m \u001b[2m202 \u001b[32;22m+\u001b[38;2;147;153;178m```\u001b[38;2;205;214;244mruby\r\n\u001b[39m \u001b[2m203 \u001b[32;22m+\u001b[38;2;205;214;244mgreeting \u001b[38;2;148;226;213m=\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m\"hello \u001b[38;2;147;153;178m#{\u001b[38;2;243;139;168mname\u001b[38;2;147;153;178m}\u001b[38;2;166;227;161m\"\r\n\u001b[39m \u001b[2m204 \u001b[32;22m+\u001b[38;2;205;214;244mline_feed \u001b[38;2;148;226;213m=\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m\"one line\u001b[38;2;245;194;231m\\n\u001b[38;2;166;227;161manother one\"\r\n\u001b[39m \u001b[2m205 \u001b[32;22m+\u001b[38;2;147;153;178m```\r\n\u001b[39m \u001b[2m206 \u001b[32;22m+\r\n\u001b[39m \u001b[2m207 \u001b[32;22m+\u001b[38;2;205;214;244mПолезные методы:\r\n\u001b[39m \u001b[2m208 \u001b[32;22m+\r\n\u001b[39m \u001b[2m209 \u001b[32;22m+\u001b[38;2;147;153;178m```\u001b[38;2;205;214;244mruby\r\n\u001b[39m \u001b[2m210 \u001b[32;22m+\u001b[38;2;243;139;168mname\u001b[38;2;205;214;244m \u001b[38;2;148;226;213m=\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m'ruby'\r\n\u001b[39m \u001b[2m211 \u001b[32;22m+\u001b[38;2;243;139;168mname\u001b[38;2;148;226;213m.\u001b[38;2;205;214;244mupcase \u001b[38;2;147;153;178m# => \"RUBY\"\r\n\u001b[39m \u001b[2m212 \u001b[32;22m+\u001b[38;2;243;139;168mname\u001b[38;2;148;226;213m.\u001b[38;2;243;139;168minclude?\u001b[38;2;147;153;178m(\u001b[38;2;166;227;161m'ru'\u001b[38;2;147;153;178m)\r\n\u001b[39m \u001b[2m213 \u001b[32;22m+\u001b[38;2;243;139;168mname\u001b[38;2;148;226;213m.\u001b[38;2;205;214;244mcapitalize \u001b[38;2;147;153;178m# => \"Ruby\"\r\n\u001b[39m \u001b[2m214 \u001b[32;22m+\u001b[38;2;243;139;168mname\u001b[38;2;148;226;213m.\u001b[38;2;205;214;244mlength \u001b[38;2;147;153;178m# => 4\r\n\u001b[39m \u001b[2m215 \u001b[32;22m+\u001b[38;2;147;153;178m```\r\n\u001b[39m \u001b[2m216 \u001b[32;22m+\r\n\u001b[39m \u001b[2m217 \u001b[32;22m+\u001b[38;2;205;214;244mСрезы:\r\n\u001b[39m \u001b[2m218 \u001b[32;22m+\r\n\u001b[39m \u001b[2m219 \u001b[32;22m+\u001b[38;2;147;153;178m```\u001b[38;2;205;214;244mruby\r\n\u001b[39m \u001b[2m220 \u001b[32;22m+\u001b[38;2;243;139;168mname\u001b[38;2;205;214;244m \u001b[38;2;148;226;213m=\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m'ruby'\r\n\u001b[39m \u001b[2m221 \u001b[32;22m+\u001b[38;2;243;139;168mname\u001b[38;2;147;153;178m[\u001b[38;2;250;179;135m1\u001b[38;2;147;153;178m]\u001b[38;2;205;214;244m \u001b[38;2;147;153;178m# => \"u\"\r\n\u001b[39m \u001b[2m222 \u001b[32;22m+\u001b[38;2;243;139;168mname\u001b[38;2;147;153;178m[\u001b[38;2;148;226;213m-\u001b[38;2;250;179;135m1\u001b[38;2;147;153;178m]\u001b[38;2;205;214;244m \u001b[38;2;147;153;178m# => \"y\"\r\n\u001b[39m \u001b[2m223 \u001b[32;22m+\u001b[38;2;243;139;168mname\u001b[38;2;147;153;178m[\u001b[38;2;250;179;135m0\u001b[38;2;147;153;178m,\u001b[38;2;205;214;244m \u001b[38;2;250;179;135m2\u001b[38;2;147;153;178m]\u001b[38;2;205;214;244m \u001b[38;2;147;153;178m# => \"ru\"\r\n\u001b[39m \u001b[2m224 \u001b[32;22m+\u001b[38;2;243;139;168mname\u001b[38;2;147;153;178m[\u001b[38;2;250;179;135m0\u001b[38;2;148;226;213m..-\u001b[38;2;250;179;135m2\u001b[38;2;147;153;178m]\u001b[38;2;205;214;244m \u001b[38;2;147;153;178m# => \"rub\"\r\n\u001b[39m \u001b[2m225 \u001b[32;22m+\u001b[38;2;243;139;168mname\u001b[38;2;147;153;178m[\u001b[38;2;148;226;213m-\u001b[38;2;250;179;135m4\u001b[38;2;148;226;213m..\u001b[38;2;147;153;178m]\u001b[38;2;205;214;244m \u001b[38;2;147;153;178m# => \"ruby\"\r\n\u001b[39m \u001b[2m226 \u001b[32;22m+\u001b[38;2;243;139;168mname\u001b[38;2;147;153;178m[\u001b[38;2;245;194;231m/\u001b[38;2;166;227;161mru\u001b[38;2;245;194;231m/\u001b[38;2;147;153;178m]\u001b[38;2;205;214;244m \u001b[38;2;147;153;178m# => \"ru\"\r\n\u001b[39m \u001b[2m227 \u001b[32;22m+\u001b[38;2;147;153;178m```\r\n\u001b[39m \u001b[2m228 \u001b[32;22m+\r\n\u001b[39m \u001b[2m229 \u001b[32;22m+\u001b[38;2;205;214;244mПример маскирования номера карты:\r\n\u001b[39m \u001b[2m230 \u001b[32;22m+\r\n\u001b[39m \u001b[2m231 \u001b[32;22m+\u001b[38;2;147;153;178m```\u001b[38;2;205;214;244mruby\r\n\u001b[39m \u001b[2m232 \u001b[32;22m+\u001b[38;2;203;166;247mdef\u001b[38;2;205;214;244m \u001b[38;2;137;180;250mprepare_card_for_display\u001b[38;2;147;153;178m(\u001b[38;2;235;160;172mnum\u001b[38;2;147;153;178m)\r\n\u001b[39m \u001b[2m233 \u001b[32;22m+\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m\"**\u001b[38;2;147;153;178m#{\u001b[38;2;205;214;244mnum\u001b[38;2;147;153;178m[\u001b[38;2;148;226;213m-\u001b[38;2;250;179;135m4\u001b[38;2;148;226;213m..\u001b[38;2;147;153;178m]}\u001b[38;2;166;227;161m\"\r\n\u001b[39m \u001b[2m234 \u001b[32;22m+\u001b[38;2;203;166;247mend\r\n\u001b[39m \u001b[2m235 \u001b[32;22m+\u001b[38;2;147;153;178m```\r\n\u001b[39m \u001b[2m236 \u001b[32;22m+\r\n\u001b[0m \u001b[2m237 \u001b[0m \u001b[38;2;147;153;178m##\u001b[38;2;250;179;135m \u001b[38;2;148;226;213mЦиклы\u001b[92X\r\n\r\n\u001b[39;2m─────────────────────────────────────────────────────────────────────────────────────────────────────────────\r\n\r\n• \u001b[0mОсновные заметки обновлены. Переношу исходники в \u001b[36m99 System/Archive/\u001b[0m, затем пересоберу \u001b[36mINDEX.md\u001b[0m, чтобы\r\n появились новые пути и статусы.\r\n\r\n\u001b[32;1m•\u001b[0m \u001b[1mRan\u001b[0m \u001b[38;2;137;180;250mmv\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m'00 Inbox/Знания Ruby.md'\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m'99 System/Archive/Знания Ruby.md'\r\n\u001b[39;2m └ (no output)\r\n\r\n\u001b[32;22m•\u001b[0m \u001b[1mRan\u001b[0m \u001b[38;2;137;180;250mmv\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m'00 Inbox/Итераторы для обработки массивов Ruby.md'\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m'99 System/Archive/Итераторы для обработки\r\n\u001b[39;2m │ \u001b[38;2;166;227;161;22mмассивов Ruby.md'\r\n\u001b[39;2m └ (no output)\r\n\r\n\u001b[32;22m•\u001b[0m \u001b[1mRan\u001b[0m \u001b[38;2;137;180;250mmv\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m'00 Inbox/В случае ошибок на принтере Kyocera FS-1020MFP.md'\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m'99 System/Archive/В случае ошибок на\r\n\u001b[39;2m │ \u001b[38;2;166;227;161;22mпринтере Kyocera FS-1020MFP.md'\r\n\u001b[39;2m └ (no output)\r\n\r\n\u001b[31;22m•\u001b[0m \u001b[1mRan\u001b[0m \u001b[38;2;137;180;250mpython3\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mc\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m'\r\n\u001b[39;2m │ \u001b[38;2;166;227;161;22mfrom pathlib import Path\r\n\u001b[39;2m │ \u001b[38;2;166;227;161;22mfrom collections import defaultdict, Counter\r\n\u001b[39;2m │ … +101 lines\r\n └ zsh:103: unmatched \"\r\n\r\n─────────────────────────────────────────────────────────────────────────────────────────────────────────────\r\n\r\n• \u001b[0mКоманда регенерации индекса упала на кавычках shell, файлы не затронула. Вынесу короткий скрипт во\r\n временный файл и запущу его, чтобы не рисковать кривым quoting.\r\n\r\n\u001b[2m• \u001b[0mAdded /tmp/regenerate_secondbrain_index.py (\u001b[32m+124\u001b[0m \u001b[31m-0\u001b[0m)\r\n\u001b[48;5;22m \u001b[2m 1 \u001b[32;22m+\u001b[38;2;203;166;247mfrom\u001b[38;2;205;214;244m collections \u001b[38;2;203;166;247mimport\u001b[38;2;205;214;244m Counter\u001b[38;2;147;153;178m,\u001b[38;2;205;214;244m defaultdict\u001b[56X\r\n\u001b[39m \u001b[2m 2 \u001b[32;22m+\u001b[38;2;203;166;247mfrom\u001b[38;2;205;214;244m pathlib \u001b[38;2;203;166;247mimport\u001b[38;2;205;214;244m Path\r\n\u001b[39m \u001b[2m 3 \u001b[32;22m+\r\n\u001b[39m \u001b[2m 4 \u001b[32;22m+\u001b[38;2;205;214;244mroot \u001b[38;2;148;226;213m=\u001b[38;2;205;214;244m \u001b[38;2;137;180;250mPath\u001b[38;2;147;153;178m(\u001b[38;2;166;227;161m\".\"\u001b[38;2;147;153;178m)\r\n\u001b[39m \u001b[2m 5 \u001b[32;22m+\u001b[38;2;205;214;244mskip_dirs \u001b[38;2;148;226;213m=\u001b[38;2;205;214;244m \u001b[38;2;147;153;178m{\u001b[38;2;166;227;161m\".trash\"\u001b[38;2;147;153;178m,\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m\".obsidian\"\u001b[38;2;147;153;178m,\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m\".git\"\u001b[38;2;147;153;178m,\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m\".smart-env\"\u001b[38;2;147;153;178m,\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m\".stversions\"\u001b[38;2;147;153;178m}\r\n\u001b[39m \u001b[2m 6 \u001b[32;22m+\u001b[38;2;205;214;244mindex_name \u001b[38;2;148;226;213m=\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m\"INDEX.md\"\r\n\u001b[39m \u001b[2m 7 \u001b[32;22m+\r\n\u001b[39m \u001b[2m 8 \u001b[32;22m+\r\n\u001b[39m \u001b[2m 9 \u001b[32;22m+\u001b[38;2;203;166;247mdef\u001b[38;2;205;214;244m \u001b[38;2;137;180;250mclean_scalar\u001b[38;2;147;153;178m(\u001b[38;2;235;160;172mvalue\u001b[38;2;147;153;178m):\r\n\u001b[39m \u001b[2m 10 \u001b[32;22m+\u001b[38;2;205;214;244m \u001b[38;2;203;166;247mreturn\u001b[38;2;205;214;244m \u001b[38;2;137;180;250mvalue\u001b[38;2;148;226;213m.\u001b[38;2;137;180;250mstrip\u001b[38;2;147;153;178m()\u001b[38;2;148;226;213m.\u001b[38;2;137;180;250mstrip\u001b[38;2;147;153;178m(\u001b[38;2;166;227;161m'\"'\u001b[38;2;147;153;178m)\u001b[38;2;148;226;213m.\u001b[38;2;137;180;250mstrip\u001b[38;2;147;153;178m(\u001b[38;2;166;227;161m\"'\"\u001b[38;2;147;153;178m)\r\n\u001b[39m \u001b[2m 11 \u001b[32;22m+\r\n\u001b[39m \u001b[2m 12 \u001b[32;22m+\r\n\u001b[39m \u001b[2m 13 \u001b[32;22m+\u001b[38;2;203;166;247mdef\u001b[38;2;205;214;244m \u001b[38;2;137;180;250mparse_frontmatter\u001b[38;2;147;153;178m(\u001b[38;2;235;160;172mtext\u001b[38;2;147;153;178m):\r\n\u001b[39m \u001b[2m 14 \u001b[32;22m+\u001b[38;2;205;214;244m \u001b[38;2;203;166;247mif\u001b[38;2;205;214;244m \u001b[38;2;203;166;247mnot\u001b[38;2;205;214;244m \u001b[38;2;137;180;250mtext\u001b[38;2;148;226;213m.\u001b[38;2;137;180;250mstartswith\u001b[38;2;147;153;178m(\u001b[38;2;166;227;161m\"---\u001b[38;2;245;194;231m\\n\u001b[38;2;166;227;161m\"\u001b[38;2;147;153;178m):\r\n\u001b[39m \u001b[2m 15 \u001b[32;22m+\u001b[38;2;205;214;244m \u001b[38;2;203;166;247mreturn\u001b[38;2;205;214;244m \u001b[38;2;147;153;178m{}\r\n\u001b[39m \u001b[2m 16 \u001b[32;22m+\u001b[38;2;205;214;244m end \u001b[38;2;148;226;213m=\u001b[38;2;205;214;244m \u001b[38;2;137;180;250mtext\u001b[38;2;148;226;213m.\u001b[38;2;137;180;250mfind\u001b[38;2;147;153;178m(\u001b[38;2;166;227;161m\"\u001b[38;2;245;194;231m\\n\u001b[38;2;166;227;161m---\"\u001b[38;2;147;153;178m,\u001b[38;2;205;214;244m \u001b[38;2;250;179;135m4\u001b[38;2;147;153;178m)\r\n\u001b[39m \u001b[2m 17 \u001b[32;22m+\u001b[38;2;205;214;244m \u001b[38;2;203;166;247mif\u001b[38;2;205;214;244m end \u001b[38;2;148;226;213m==\u001b[38;2;205;214;244m \u001b[38;2;148;226;213m-\u001b[38;2;250;179;135m1\u001b[38;2;147;153;178m:\r\n\u001b[39m \u001b[2m 18 \u001b[32;22m+\u001b[38;2;205;214;244m \u001b[38;2;203;166;247mreturn\u001b[38;2;205;214;244m \u001b[38;2;147;153;178m{}\r\n\u001b[39m \u001b[2m 19 \u001b[32;22m+\r\n\u001b[39m \u001b[2m 20 \u001b[32;22m+\u001b[38;2;205;214;244m data \u001b[38;2;148;226;213m=\u001b[38;2;205;214;244m \u001b[38;2;147;153;178m{}\r\n\u001b[39m \u001b[2m 21 \u001b[32;22m+\u001b[38;2;205;214;244m current \u001b[38;2;148;226;213m=\u001b[38;2;205;214;244m \u001b[38;2;250;179;135mNone\r\n\u001b[39m \u001b[2m 22 \u001b[32;22m+\u001b[38;2;205;214;244m \u001b[38;2;203;166;247mfor\u001b[38;2;205;214;244m line \u001b[38;2;203;166;247min\u001b[38;2;205;214;244m \u001b[38;2;235;160;172mtext\u001b[38;2;147;153;178m[\u001b[38;2;250;179;135m4\u001b[38;2;147;153;178m:\u001b[38;2;205;214;244mend\u001b[38;2;147;153;178m]\u001b[38;2;148;226;213m.\u001b[38;2;137;180;250msplitlines\u001b[38;2;147;153;178m():\r\n\u001b[39m \u001b[2m 23 \u001b[32;22m+\u001b[38;2;205;214;244m \u001b[38;2;203;166;247mif\u001b[38;2;205;214;244m \u001b[38;2;203;166;247mnot\u001b[38;2;205;214;244m \u001b[38;2;137;180;250mline\u001b[38;2;148;226;213m.\u001b[38;2;137;180;250mstrip\u001b[38;2;147;153;178m()\u001b[38;2;205;214;244m \u001b[38;2;203;166;247mor\u001b[38;2;205;214;244m \u001b[38;2;137;180;250mline\u001b[38;2;148;226;213m.\u001b[38;2;137;180;250mlstrip\u001b[38;2;147;153;178m()\u001b[38;2;148;226;213m.\u001b[38;2;137;180;250mstartswith\u001b[38;2;147;153;178m(\u001b[38;2;166;227;161m\"#\"\u001b[38;2;147;153;178m):\r\n\u001b[39m \u001b[2m 24 \u001b[32;22m+\u001b[38;2;205;214;244m \u001b[38;2;203;166;247mcontinue\r\n\u001b[39m \u001b[2m 25 \u001b[32;22m+\u001b[38;2;205;214;244m \u001b[38;2;203;166;247mif\u001b[38;2;205;214;244m \u001b[38;2;137;180;250mline\u001b[38;2;148;226;213m.\u001b[38;2;137;180;250mstartswith\u001b[38;2;147;153;178m(\u001b[38;2;166;227;161m\" - \"\u001b[38;2;147;153;178m)\u001b[38;2;205;214;244m \u001b[38;2;203;166;247mand\u001b[38;2;205;214;244m current\u001b[38;2;147;153;178m:\r\n\u001b[39m \u001b[2m 26 \u001b[32;22m+\u001b[38;2;205;214;244m \u001b[38;2;137;180;250mdata\u001b[38;2;148;226;213m.\u001b[38;2;137;180;250msetdefault\u001b[38;2;147;153;178m(\u001b[38;2;205;214;244mcurrent\u001b[38;2;147;153;178m,\u001b[38;2;205;214;244m \u001b[38;2;147;153;178m[])\u001b[38;2;148;226;213m.\u001b[38;2;137;180;250mappend\u001b[38;2;147;153;178m(\u001b[38;2;137;180;250mclean_scalar\u001b[38;2;147;153;178m(\u001b[38;2;235;160;172mline\u001b[38;2;147;153;178m[\u001b[38;2;250;179;135m4\u001b[38;2;147;153;178m:]))\r\n\u001b[39m \u001b[2m 27 \u001b[32;22m+\u001b[38;2;205;214;244m \u001b[38;2;203;166;247mcontinue\r\n\u001b[39m \u001b[2m 28 \u001b[32;22m+\u001b[38;2;205;214;244m \u001b[38;2;203;166;247mif\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m\":\"\u001b[38;2;205;214;244m \u001b[38;2;203;166;247mnot\u001b[38;2;205;214;244m \u001b[38;2;203;166;247min\u001b[38;2;205;214;244m line\u001b[38;2;147;153;178m:\r\n\u001b[39m \u001b[2m 29 \u001b[32;22m+\u001b[38;2;205;214;244m current \u001b[38;2;148;226;213m=\u001b[38;2;205;214;244m \u001b[38;2;250;179;135mNone\r\n\u001b[39m \u001b[2m 30 \u001b[32;22m+\u001b[38;2;205;214;244m \u001b[38;2;203;166;247mcontinue\r\n\u001b[39m \u001b[2m 31 \u001b[32;22m+\r\n\u001b[39m \u001b[2m 32 \u001b[32;22m+\u001b[38;2;205;214;244m key, value \u001b[38;2;148;226;213m=\u001b[38;2;205;214;244m \u001b[38;2;137;180;250mline\u001b[38;2;148;226;213m.\u001b[38;2;137;180;250msplit\u001b[38;2;147;153;178m(\u001b[38;2;166;227;161m\":\"\u001b[38;2;147;153;178m,\u001b[38;2;205;214;244m \u001b[38;2;250;179;135m1\u001b[38;2;147;153;178m)\r\n\u001b[39m \u001b[2m 33 \u001b[32;22m+\u001b[38;2;205;214;244m key \u001b[38;2;148;226;213m=\u001b[38;2;205;214;244m \u001b[38;2;137;180;250mkey\u001b[38;2;148;226;213m.\u001b[38;2;137;180;250mstrip\u001b[38;2;147;153;178m()\r\n\u001b[39m \u001b[2m 34 \u001b[32;22m+\u001b[38;2;205;214;244m value \u001b[38;2;148;226;213m=\u001b[38;2;205;214;244m \u001b[38;2;137;180;250mvalue\u001b[38;2;148;226;213m.\u001b[38;2;137;180;250mstrip\u001b[38;2;147;153;178m()\r\n\u001b[39m \u001b[2m 35 \u001b[32;22m+\u001b[38;2;205;214;244m current \u001b[38;2;148;226;213m=\u001b[38;2;205;214;244m key\r\n\u001b[39m \u001b[2m 36 \u001b[32;22m+\r\n\u001b[39m \u001b[2m 37 \u001b[32;22m+\u001b[38;2;205;214;244m \u001b[38;2;203;166;247mif\u001b[38;2;205;214;244m value \u001b[38;2;148;226;213m==\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m\"\"\u001b[38;2;147;153;178m:\r\n\u001b[39m \u001b[2m 38 \u001b[32;22m+\u001b[38;2;205;214;244m \u001b[38;2;235;160;172mdata\u001b[38;2;147;153;178m[\u001b[38;2;205;214;244mkey\u001b[38;2;147;153;178m]\u001b[38;2;205;214;244m \u001b[38;2;148;226;213m=\u001b[38;2;205;214;244m \u001b[38;2;147;153;178m[]\u001b[38;2;205;214;244m \u001b[38;2;203;166;247mif\u001b[38;2;205;214;244m key \u001b[38;2;148;226;213m==\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m\"tags\"\u001b[38;2;205;214;244m \u001b[38;2;203;166;247melse\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m\"\"\r\n\u001b[39m \u001b[2m 39 \u001b[32;22m+\u001b[38;2;205;214;244m \u001b[38;2;203;166;247melif\u001b[38;2;205;214;244m value \u001b[38;2;148;226;213m==\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m\"[]\"\u001b[38;2;147;153;178m:\r\n\u001b[39m \u001b[2m 40 \u001b[32;22m+\u001b[38;2;205;214;244m \u001b[38;2;235;160;172mdata\u001b[38;2;147;153;178m[\u001b[38;2;205;214;244mkey\u001b[38;2;147;153;178m]\u001b[38;2;205;214;244m \u001b[38;2;148;226;213m=\u001b[38;2;205;214;244m \u001b[38;2;147;153;178m[]\r\n\u001b[39m \u001b[2m 41 \u001b[32;22m+\u001b[38;2;205;214;244m \u001b[38;2;203;166;247melif\u001b[38;2;205;214;244m \u001b[38;2;137;180;250mvalue\u001b[38;2;148;226;213m.\u001b[38;2;137;180;250mstartswith\u001b[38;2;147;153;178m(\u001b[38;2;166;227;161m\"[\"\u001b[38;2;147;153;178m)\u001b[38;2;205;214;244m \u001b[38;2;203;166;247mand\u001b[38;2;205;214;244m \u001b[38;2;137;180;250mvalue\u001b[38;2;148;226;213m.\u001b[38;2;137;180;250mendswith\u001b[38;2;147;153;178m(\u001b[38;2;166;227;161m\"]\"\u001b[38;2;147;153;178m):\r\n\u001b[39m \u001b[2m 42 \u001b[32;22m+\u001b[38;2;205;214;244m inner \u001b[38;2;148;226;213m=\u001b[38;2;205;214;244m \u001b[38;2;235;160;172mvalue\u001b[38;2;147;153;178m[\u001b[38;2;250;179;135m1\u001b[38;2;147;153;178m:\u001b[38;2;148;226;213m-\u001b[38;2;250;179;135m1\u001b[38;2;147;153;178m]\u001b[38;2;148;226;213m.\u001b[38;2;137;180;250mstrip\u001b[38;2;147;153;178m()\r\n\u001b[39m \u001b[2m 43 \u001b[32;22m+\u001b[38;2;205;214;244m \u001b[38;2;235;160;172mdata\u001b[38;2;147;153;178m[\u001b[38;2;205;214;244mkey\u001b[38;2;147;153;178m]\u001b[38;2;205;214;244m \u001b[38;2;148;226;213m=\u001b[38;2;205;214;244m \u001b[38;2;147;153;178m[\u001b[38;2;137;180;250mclean_scalar\u001b[38;2;147;153;178m(\u001b[38;2;205;214;244mx\u001b[38;2;147;153;178m)\u001b[38;2;205;214;244m \u001b[38;2;203;166;247mfor\u001b[38;2;205;214;244m x \u001b[38;2;203;166;247min\u001b[38;2;205;214;244m \u001b[38;2;137;180;250minner\u001b[38;2;148;226;213m.\u001b[38;2;137;180;250msplit\u001b[38;2;147;153;178m(\u001b[38;2;166;227;161m\",\"\u001b[38;2;147;153;178m)\u001b[38;2;205;214;244m \u001b[38;2;203;166;247mif\u001b[38;2;205;214;244m \u001b[38;2;137;180;250mx\u001b[38;2;148;226;213m.\u001b[38;2;137;180;250mstrip\u001b[38;2;147;153;178m()]\u001b[38;2;205;214;244m \u001b[38;2;203;166;247mif\u001b[38;2;205;214;244m inner \u001b[38;2;203;166;247melse\u001b[38;2;205;214;244m \u001b[38;2;147;153;178m[]\r\n\u001b[39m \u001b[2m 44 \u001b[32;22m+\u001b[38;2;205;214;244m \u001b[38;2;203;166;247melse\u001b[38;2;147;153;178m:\r\n\u001b[39m \u001b[2m 45 \u001b[32;22m+\u001b[38;2;205;214;244m \u001b[38;2;235;160;172mdata\u001b[38;2;147;153;178m[\u001b[38;2;205;214;244mkey\u001b[38;2;147;153;178m]\u001b[38;2;205;214;244m \u001b[38;2;148;226;213m=\u001b[38;2;205;214;244m \u001b[38;2;137;180;250mclean_scalar\u001b[38;2;147;153;178m(\u001b[38;2;205;214;244mvalue\u001b[38;2;147;153;178m)\r\n\u001b[39m \u001b[2m 46 \u001b[32;22m+\r\n\u001b[39m \u001b[2m 47 \u001b[32;22m+\u001b[38;2;205;214;244m \u001b[38;2;203;166;247mreturn\u001b[38;2;205;214;244m data\r\n\u001b[39m \u001b[2m 48 \u001b[32;22m+\r\n\u001b[39m \u001b[2m 49 \u001b[32;22m+\r\n\u001b[39m \u001b[2m 50 \u001b[32;22m+\u001b[38;2;203;166;247mdef\u001b[38;2;205;214;244m \u001b[38;2;137;180;250mfmt\u001b[38;2;147;153;178m(\u001b[38;2;235;160;172mvalue\u001b[38;2;147;153;178m):\r\n\u001b[39m \u001b[2m 51 \u001b[32;22m+\u001b[38;2;205;214;244m \u001b[38;2;203;166;247mif\u001b[38;2;205;214;244m value \u001b[38;2;203;166;247mis\u001b[38;2;205;214;244m \u001b[38;2;250;179;135mNone\u001b[38;2;205;214;244m \u001b[38;2;203;166;247mor\u001b[38;2;205;214;244m value \u001b[38;2;148;226;213m==\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m\"\"\u001b[38;2;205;214;244m \u001b[38;2;203;166;247mor\u001b[38;2;205;214;244m value \u001b[38;2;148;226;213m==\u001b[38;2;205;214;244m \u001b[38;2;147;153;178m[]:\r\n\u001b[39m \u001b[2m 52 \u001b[32;22m+\u001b[38;2;205;214;244m \u001b[38;2;203;166;247mreturn\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m\"—\"\r\n\u001b[39m \u001b[2m 53 \u001b[32;22m+\u001b[38;2;205;214;244m \u001b[38;2;203;166;247mif\u001b[38;2;205;214;244m \u001b[38;2;250;179;135misinstance\u001b[38;2;147;153;178m(\u001b[38;2;205;214;244mvalue\u001b[38;2;147;153;178m,\u001b[38;2;205;214;244m \u001b[38;2;203;166;247mlist\u001b[38;2;147;153;178m):\r\n\u001b[39m \u001b[2m 54 \u001b[32;22m+\u001b[38;2;205;214;244m \u001b[38;2;203;166;247mreturn\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m\", \"\u001b[38;2;148;226;213m.\u001b[38;2;137;180;250mjoin\u001b[38;2;147;153;178m(\u001b[38;2;205;214;244mvalue\u001b[38;2;147;153;178m)\u001b[38;2;205;214;244m \u001b[38;2;203;166;247mif\u001b[38;2;205;214;244m value \u001b[38;2;203;166;247melse\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m\"—\"\r\n\u001b[39m \u001b[2m 55 \u001b[32;22m+\u001b[38;2;205;214;244m \u001b[38;2;203;166;247mreturn\u001b[38;2;205;214;244m \u001b[38;2;203;166;247mstr\u001b[38;2;147;153;178m(\u001b[38;2;205;214;244mvalue\u001b[38;2;147;153;178m)\r\n\u001b[39m \u001b[2m 56 \u001b[32;22m+\r\n\u001b[39m \u001b[2m 57 \u001b[32;22m+\r\n\u001b[39m \u001b[2m 58 \u001b[32;22m+\u001b[38;2;205;214;244mnotes \u001b[38;2;148;226;213m=\u001b[38;2;205;214;244m \u001b[38;2;147;153;178m[]\r\n\u001b[39m \u001b[2m 59 \u001b[32;22m+\u001b[38;2;203;166;247mfor\u001b[38;2;205;214;244m path \u001b[38;2;203;166;247min\u001b[38;2;205;214;244m \u001b[38;2;250;179;135msorted\u001b[38;2;147;153;178m(\u001b[38;2;137;180;250mroot\u001b[38;2;148;226;213m.\u001b[38;2;137;180;250mrglob\u001b[38;2;147;153;178m(\u001b[38;2;166;227;161m\"*.md\"\u001b[38;2;147;153;178m),\u001b[38;2;205;214;244m \u001b[38;2;235;160;172mkey\u001b[38;2;148;226;213m=\u001b[38;2;203;166;247mlambda\u001b[38;2;205;214;244m \u001b[38;2;235;160;172mp\u001b[38;2;147;153;178m:\u001b[38;2;205;214;244m \u001b[38;2;203;166;247mstr\u001b[38;2;147;153;178m(\u001b[38;2;205;214;244mp\u001b[38;2;147;153;178m)):\r\n\u001b[39m \u001b[2m 60 \u001b[32;22m+\u001b[38;2;205;214;244m rel \u001b[38;2;148;226;213m=\u001b[38;2;205;214;244m \u001b[38;2;137;180;250mpath\u001b[38;2;148;226;213m.\u001b[38;2;137;180;250mrelative_to\u001b[38;2;147;153;178m(\u001b[38;2;205;214;244mroot\u001b[38;2;147;153;178m)\r\n\u001b[39m \u001b[2m 61 \u001b[32;22m+\u001b[38;2;205;214;244m parts \u001b[38;2;148;226;213m=\u001b[38;2;205;214;244m rel\u001b[38;2;148;226;213m.\u001b[38;2;205;214;244mparts\r\n\u001b[39m \u001b[2m 62 \u001b[32;22m+\u001b[38;2;205;214;244m \u001b[38;2;203;166;247mif\u001b[38;2;205;214;244m rel\u001b[38;2;148;226;213m.\u001b[38;2;205;214;244mname \u001b[38;2;148;226;213m==\u001b[38;2;205;214;244m index_name\u001b[38;2;147;153;178m:\r\n\u001b[39m \u001b[2m 63 \u001b[32;22m+\u001b[38;2;205;214;244m \u001b[38;2;203;166;247mcontinue\r\n\u001b[39m \u001b[2m 64 \u001b[32;22m+\u001b[38;2;205;214;244m \u001b[38;2;203;166;247mif\u001b[38;2;205;214;244m \u001b[38;2;250;179;135many\u001b[38;2;147;153;178m(\u001b[38;2;205;214;244mpart \u001b[38;2;203;166;247min\u001b[38;2;205;214;244m skip_dirs \u001b[38;2;203;166;247mfor\u001b[38;2;205;214;244m part \u001b[38;2;203;166;247min\u001b[38;2;205;214;244m parts\u001b[38;2;147;153;178m):\r\n\u001b[39m \u001b[2m 65 \u001b[32;22m+\u001b[38;2;205;214;244m \u001b[38;2;203;166;247mcontinue\r\n\u001b[39m \u001b[2m 66 \u001b[32;22m+\r\n\u001b[39m \u001b[2m 67 \u001b[32;22m+\u001b[38;2;205;214;244m fm \u001b[38;2;148;226;213m=\u001b[38;2;205;214;244m \u001b[38;2;137;180;250mparse_frontmatter\u001b[38;2;147;153;178m(\u001b[38;2;137;180;250mpath\u001b[38;2;148;226;213m.\u001b[38;2;137;180;250mread_text\u001b[38;2;147;153;178m(\u001b[38;2;235;160;172mencoding\u001b[38;2;148;226;213m=\u001b[38;2;166;227;161m\"utf-8\"\u001b[38;2;147;153;178m))\r\n\u001b[39m \u001b[2m 68 \u001b[32;22m+\u001b[38;2;205;214;244m \u001b[38;2;137;180;250mnotes\u001b[38;2;148;226;213m.\u001b[38;2;137;180;250mappend\u001b[38;2;147;153;178m(\r\n\u001b[39m \u001b[2m 69 \u001b[32;22m+\u001b[38;2;205;214;244m \u001b[38;2;147;153;178m{\r\n\u001b[39m \u001b[2m 70 \u001b[32;22m+\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m\"path\"\u001b[38;2;147;153;178m:\u001b[38;2;205;214;244m \u001b[38;2;203;166;247mstr\u001b[38;2;147;153;178m(\u001b[38;2;205;214;244mrel\u001b[38;2;147;153;178m),\r\n\u001b[39m \u001b[2m 71 \u001b[32;22m+\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m\"section\"\u001b[38;2;147;153;178m:\u001b[38;2;205;214;244m \u001b[38;2;235;160;172mparts\u001b[38;2;147;153;178m[\u001b[38;2;250;179;135m0\u001b[38;2;147;153;178m]\u001b[38;2;205;214;244m \u001b[38;2;203;166;247mif\u001b[38;2;205;214;244m parts \u001b[38;2;203;166;247melse\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m\"\"\u001b[38;2;147;153;178m,\r\n\u001b[39m \u001b[2m 72 \u001b[32;22m+\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m\"title\"\u001b[38;2;147;153;178m:\u001b[38;2;205;214;244m \u001b[38;2;137;180;250mfmt\u001b[38;2;147;153;178m(\u001b[38;2;137;180;250mfm\u001b[38;2;148;226;213m.\u001b[38;2;137;180;250mget\u001b[38;2;147;153;178m(\u001b[38;2;166;227;161m\"title\"\u001b[38;2;147;153;178m)),\r\n\u001b[39m \u001b[2m 73 \u001b[32;22m+\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m\"status\"\u001b[38;2;147;153;178m:\u001b[38;2;205;214;244m \u001b[38;2;137;180;250mfmt\u001b[38;2;147;153;178m(\u001b[38;2;137;180;250mfm\u001b[38;2;148;226;213m.\u001b[38;2;137;180;250mget\u001b[38;2;147;153;178m(\u001b[38;2;166;227;161m\"status\"\u001b[38;2;147;153;178m)),\r\n\u001b[39m \u001b[2m 74 \u001b[32;22m+\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m\"type\"\u001b[38;2;147;153;178m:\u001b[38;2;205;214;244m \u001b[38;2;137;180;250mfmt\u001b[38;2;147;153;178m(\u001b[38;2;137;180;250mfm\u001b[38;2;148;226;213m.\u001b[38;2;137;180;250mget\u001b[38;2;147;153;178m(\u001b[38;2;166;227;161m\"type\"\u001b[38;2;147;153;178m)),\r\n\u001b[39m \u001b[2m 75 \u001b[32;22m+\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m\"tags\"\u001b[38;2;147;153;178m:\u001b[38;2;205;214;244m \u001b[38;2;137;180;250mfmt\u001b[38;2;147;153;178m(\u001b[38;2;137;180;250mfm\u001b[38;2;148;226;213m.\u001b[38;2;137;180;250mget\u001b[38;2;147;153;178m(\u001b[38;2;166;227;161m\"tags\"\u001b[38;2;147;153;178m)),\r\n\u001b[39m \u001b[2m 76 \u001b[32;22m+\u001b[38;2;205;214;244m \u001b[38;2;147;153;178m}\r\n\u001b[39m \u001b[2m 77 \u001b[32;22m+\u001b[38;2;205;214;244m \u001b[38;2;147;153;178m)\r\n\u001b[39m \u001b[2m 78 \u001b[32;22m+\r\n\u001b[39m \u001b[2m 79 \u001b[32;22m+\u001b[38;2;205;214;244mby_section \u001b[38;2;148;226;213m=\u001b[38;2;205;214;244m \u001b[38;2;137;180;250mdefaultdict\u001b[38;2;147;153;178m(\u001b[38;2;203;166;247mlist\u001b[38;2;147;153;178m)\r\n\u001b[39m \u001b[2m 80 \u001b[32;22m+\u001b[38;2;203;166;247mfor\u001b[38;2;205;214;244m note \u001b[38;2;203;166;247min\u001b[38;2;205;214;244m notes\u001b[38;2;147;153;178m:\r\n\u001b[39m \u001b[2m 81 \u001b[32;22m+\u001b[38;2;205;214;244m \u001b[38;2;235;160;172mby_section\u001b[38;2;147;153;178m[\u001b[38;2;235;160;172mnote\u001b[38;2;147;153;178m[\u001b[38;2;166;227;161m\"section\"\u001b[38;2;147;153;178m]]\u001b[38;2;148;226;213m.\u001b[38;2;137;180;250mappend\u001b[38;2;147;153;178m(\u001b[38;2;205;214;244mnote\u001b[38;2;147;153;178m)\r\n\u001b[39m \u001b[2m 82 \u001b[32;22m+\r\n\u001b[39m \u001b[2m 83 \u001b[32;22m+\u001b[38;2;205;214;244mstatus_counts \u001b[38;2;148;226;213m=\u001b[38;2;205;214;244m \u001b[38;2;137;180;250mCounter\u001b[38;2;147;153;178m(\u001b[38;2;235;160;172mnote\u001b[38;2;147;153;178m[\u001b[38;2;166;227;161m\"status\"\u001b[38;2;147;153;178m]\u001b[38;2;205;214;244m \u001b[38;2;203;166;247mfor\u001b[38;2;205;214;244m note \u001b[38;2;203;166;247min\u001b[38;2;205;214;244m notes\u001b[38;2;147;153;178m)\r\n\u001b[39m \u001b[2m 84 \u001b[32;22m+\u001b[38;2;205;214;244mlines \u001b[38;2;148;226;213m=\u001b[38;2;205;214;244m \u001b[38;2;147;153;178m[\r\n\u001b[39m \u001b[2m 85 \u001b[32;22m+\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m\"---\"\u001b[38;2;147;153;178m,\r\n\u001b[39m \u001b[2m 86 \u001b[32;22m+\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m\"generated: 2026-05-26\"\u001b[38;2;147;153;178m,\r\n\u001b[39m \u001b[2m 87 \u001b[32;22m+\u001b[38;2;205;214;244m \u001b[38;2;166;227;161mf\"total: \u001b[38;2;147;153;178m{\u001b[38;2;250;179;135mlen\u001b[38;2;147;153;178m(\u001b[38;2;205;214;244mnotes\u001b[38;2;147;153;178m)}\u001b[38;2;166;227;161m\"\u001b[38;2;147;153;178m,\r\n\u001b[39m \u001b[2m 88 \u001b[32;22m+\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m\"---\"\u001b[38;2;147;153;178m,\r\n\u001b[39m \u001b[2m 89 \u001b[32;22m+\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m\"\"\u001b[38;2;147;153;178m,\r\n\u001b[39m \u001b[2m 90 \u001b[32;22m+\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m\"# Vault Index\"\u001b[38;2;147;153;178m,\r\n\u001b[39m \u001b[2m 91 \u001b[32;22m+\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m\"\"\u001b[38;2;147;153;178m,\r\n\u001b[39m \u001b[2m 92 \u001b[32;22m+\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m\"Служебный файл для LLM-агента. Не редактировать вручную.\"\u001b[38;2;147;153;178m,\r\n\u001b[39m \u001b[2m 93 \u001b[32;22m+\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m\"\"\u001b[38;2;147;153;178m,\r\n\u001b[39m \u001b[2m 94 \u001b[32;22m+\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m\"## Статистика\"\u001b[38;2;147;153;178m,\r\n\u001b[39m \u001b[2m 95 \u001b[32;22m+\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m\"\"\u001b[38;2;147;153;178m,\r\n\u001b[39m \u001b[2m 96 \u001b[32;22m+\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m\"| Параметр | Значение |\"\u001b[38;2;147;153;178m,\r\n\u001b[39m \u001b[2m 97 \u001b[32;22m+\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m\"|----------|----------|\"\u001b[38;2;147;153;178m,\r\n\u001b[39m \u001b[2m 98 \u001b[32;22m+\u001b[38;2;205;214;244m \u001b[38;2;166;227;161mf\"| Всего заметок | \u001b[38;2;147;153;178m{\u001b[38;2;250;179;135mlen\u001b[38;2;147;153;178m(\u001b[38;2;205;214;244mnotes\u001b[38;2;147;153;178m)}\u001b[38;2;166;227;161m |\"\u001b[38;2;147;153;178m,\r\n\u001b[39m \u001b[2m 99 \u001b[32;22m+\u001b[38;2;147;153;178m]\r\n\u001b[39m \u001b[2m100 \u001b[32;22m+\r\n\u001b[39m \u001b[2m101 \u001b[32;22m+\u001b[38;2;203;166;247mfor\u001b[38;2;205;214;244m status \u001b[38;2;203;166;247min\u001b[38;2;205;214;244m \u001b[38;2;250;179;135msorted\u001b[38;2;147;153;178m(\u001b[38;2;205;214;244mstatus_counts\u001b[38;2;147;153;178m):\r\n\u001b[39m \u001b[2m102 \u001b[32;22m+\u001b[38;2;205;214;244m \u001b[38;2;137;180;250mlines\u001b[38;2;148;226;213m.\u001b[38;2;137;180;250mappend\u001b[38;2;147;153;178m(\u001b[38;2;166;227;161mf\"| status: \u001b[38;2;147;153;178m{\u001b[38;2;205;214;244mstatus\u001b[38;2;147;153;178m}\u001b[38;2;166;227;161m | \u001b[38;2;147;153;178m{\u001b[38;2;235;160;172mstatus_counts\u001b[38;2;147;153;178m[\u001b[38;2;205;214;244mstatus\u001b[38;2;147;153;178m]}\u001b[38;2;166;227;161m |\"\u001b[38;2;147;153;178m)\r\n\u001b[39m \u001b[2m103 \u001b[32;22m+\r\n\u001b[39m \u001b[2m104 \u001b[32;22m+\u001b[38;2;137;180;250mlines\u001b[38;2;148;226;213m.\u001b[38;2;137;180;250mextend\u001b[38;2;147;153;178m(\r\n\u001b[39m \u001b[2m105 \u001b[32;22m+\u001b[38;2;205;214;244m \u001b[38;2;147;153;178m[\r\n\u001b[39m \u001b[2m106 \u001b[32;22m+\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m\"\"\u001b[38;2;147;153;178m,\r\n\u001b[39m \u001b[2m107 \u001b[32;22m+\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m\"## Заметки\"\u001b[38;2;147;153;178m,\r\n\u001b[39m \u001b[2m108 \u001b[32;22m+\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m\"\"\u001b[38;2;147;153;178m,\r\n\u001b[39m \u001b[2m109 \u001b[32;22m+\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m\"Формат: `путь` | title | status | type | tags\"\u001b[38;2;147;153;178m,\r\n\u001b[39m \u001b[2m110 \u001b[32;22m+\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m\"\"\u001b[38;2;147;153;178m,\r\n\u001b[39m \u001b[2m111 \u001b[32;22m+\u001b[38;2;205;214;244m \u001b[38;2;147;153;178m]\r\n\u001b[39m \u001b[2m112 \u001b[32;22m+\u001b[38;2;147;153;178m)\r\n\u001b[39m \u001b[2m113 \u001b[32;22m+\r\n\u001b[39m \u001b[2m114 \u001b[32;22m+\u001b[38;2;203;166;247mfor\u001b[38;2;205;214;244m section \u001b[38;2;203;166;247min\u001b[38;2;205;214;244m \u001b[38;2;250;179;135msorted\u001b[38;2;147;153;178m(\u001b[38;2;205;214;244mby_section\u001b[38;2;147;153;178m):\r\n\u001b[39m \u001b[2m115 \u001b[32;22m+\u001b[38;2;205;214;244m items \u001b[38;2;148;226;213m=\u001b[38;2;205;214;244m \u001b[38;2;235;160;172mby_section\u001b[38;2;147;153;178m[\u001b[38;2;205;214;244msection\u001b[38;2;147;153;178m]\r\n\u001b[39m \u001b[2m116 \u001b[32;22m+\u001b[38;2;205;214;244m \u001b[38;2;137;180;250mlines\u001b[38;2;148;226;213m.\u001b[38;2;137;180;250mappend\u001b[38;2;147;153;178m(\u001b[38;2;166;227;161mf\"### \u001b[38;2;147;153;178m{\u001b[38;2;205;214;244msection\u001b[38;2;147;153;178m}\u001b[38;2;166;227;161m (\u001b[38;2;147;153;178m{\u001b[38;2;250;179;135mlen\u001b[38;2;147;153;178m(\u001b[38;2;205;214;244mitems\u001b[38;2;147;153;178m)}\u001b[38;2;166;227;161m)\"\u001b[38;2;147;153;178m)\r\n\u001b[39m \u001b[2m117 \u001b[32;22m+\u001b[38;2;205;214;244m \u001b[38;2;137;180;250mlines\u001b[38;2;148;226;213m.\u001b[38;2;137;180;250mappend\u001b[38;2;147;153;178m(\u001b[38;2;166;227;161m\"\"\u001b[38;2;147;153;178m)\r\n\u001b[39m \u001b[2m118 \u001b[32;22m+\u001b[38;2;205;214;244m \u001b[38;2;203;166;247mfor\u001b[38;2;205;214;244m note \u001b[38;2;203;166;247min\u001b[38;2;205;214;244m items\u001b[38;2;147;153;178m:\r\n\u001b[39m \u001b[2m119 \u001b[32;22m+\u001b[38;2;205;214;244m \u001b[38;2;137;180;250mlines\u001b[38;2;148;226;213m.\u001b[38;2;137;180;250mappend\u001b[38;2;147;153;178m(\r\n\u001b[39m \u001b[2m120 \u001b[32;22m+\u001b[38;2;205;214;244m \u001b[38;2;166;227;161mf\"| `\u001b[38;2;147;153;178m{\u001b[38;2;235;160;172mnote\u001b[38;2;147;153;178m[\u001b[38;2;166;227;161m'path'\u001b[38;2;147;153;178m]}\u001b[38;2;166;227;161m` | \u001b[38;2;147;153;178m{\u001b[38;2;235;160;172mnote\u001b[38;2;147;153;178m[\u001b[38;2;166;227;161m'title'\u001b[38;2;147;153;178m]}\u001b[38;2;166;227;161m | \u001b[38;2;147;153;178m{\u001b[38;2;235;160;172mnote\u001b[38;2;147;153;178m[\u001b[38;2;166;227;161m'status'\u001b[38;2;147;153;178m]}\u001b[38;2;166;227;161m | \u001b[38;2;147;153;178m{\u001b[38;2;235;160;172mnote\u001b[38;2;147;153;178m[\u001b[38;2;166;227;161m'type'\u001b[38;2;147;153;178m]}\u001b[38;2;166;227;161m | \u001b[38;2;147;153;178m{\u001b[38;2;235;160;172mnote\u001b[38;2;147;153;178m[\u001b[38;2;166;227;161m'tags\r\n\u001b[39m \u001b[2m \u001b[38;2;166;227;161;22m'\u001b[38;2;147;153;178m]}\u001b[38;2;166;227;161m |\"\r\n\u001b[39m \u001b[2m121 \u001b[32;22m+\u001b[38;2;205;214;244m \u001b[38;2;147;153;178m)\r\n\u001b[39m \u001b[2m122 \u001b[32;22m+\u001b[38;2;205;214;244m \u001b[38;2;137;180;250mlines\u001b[38;2;148;226;213m.\u001b[38;2;137;180;250mappend\u001b[38;2;147;153;178m(\u001b[38;2;166;227;161m\"\"\u001b[38;2;147;153;178m)\r\n\u001b[39m \u001b[2m123 \u001b[32;22m+\r\n\u001b[39m \u001b[2m124 \u001b[32;22m+\u001b[38;2;137;180;250mPath\u001b[38;2;147;153;178m(\u001b[38;2;205;214;244mindex_name\u001b[38;2;147;153;178m)\u001b[38;2;148;226;213m.\u001b[38;2;137;180;250mwrite_text\u001b[38;2;147;153;178m(\u001b[38;2;166;227;161m\"\u001b[38;2;245;194;231m\\n\u001b[38;2;166;227;161m\"\u001b[38;2;148;226;213m.\u001b[38;2;137;180;250mjoin\u001b[38;2;147;153;178m(\u001b[38;2;205;214;244mlines\u001b[38;2;147;153;178m)\u001b[38;2;148;226;213m.\u001b[38;2;137;180;250mrstrip\u001b[38;2;147;153;178m()\u001b[38;2;205;214;244m \u001b[38;2;148;226;213m+\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m\"\u001b[38;2;245;194;231m\\n\u001b[38;2;166;227;161m\"\u001b[38;2;147;153;178m,\u001b[38;2;205;214;244m \u001b[38;2;235;160;172mencoding\u001b[38;2;148;226;213m=\u001b[38;2;166;227;161m\"utf-8\"\u001b[38;2;147;153;178m)\r\n\u001b[0m\u001b[109X\r\n\u001b[31;1m•\u001b[0m \u001b[1mRan\u001b[0m \u001b[38;2;137;180;250mpython3\u001b[38;2;205;214;244m /tmp/regenerate_secondbrain_index.py\r\n\u001b[39;2m └ Traceback (most recent call last):\r\n\u001b[0m \u001b[2m File \"/tmp/regenerate_secondbrain_index.py\", line 67, in \r\n … +3 lines (ctrl + t to view transcript)\r\n\u001b[0m \u001b[2m ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\n\u001b[0m \u001b[2mAttributeError: 'str' object has no attribute 'append'\r\n\r\n─────────────────────────────────────────────────────────────────────────────────────────────────────────────\r\n\r\n• \u001b[0mСкрипт нашёл YAML-список не только в \u001b[36mtags\u001b[0m; поправляю парсер списков и запускаю повторно.\r\n\r\n\u001b[2m• \u001b[0mEdited /tmp/regenerate_secondbrain_index.py (\u001b[32m+3\u001b[0m \u001b[31m-1\u001b[0m)\r\n \u001b[2m25 \u001b[0m \u001b[38;2;205;214;244m \u001b[38;2;203;166;247mif\u001b[38;2;205;214;244m \u001b[38;2;137;180;250mline\u001b[38;2;148;226;213m.\u001b[38;2;137;180;250mstartswith\u001b[38;2;147;153;178m(\u001b[38;2;166;227;161m\" - \"\u001b[38;2;147;153;178m)\u001b[38;2;205;214;244m \u001b[38;2;203;166;247mand\u001b[38;2;205;214;244m current\u001b[38;2;147;153;178m:\r\n\u001b[39;48;5;52m \u001b[2m26 \u001b[31;22m-\u001b[38;2;205;214;244;2m \u001b[38;2;137;180;250mdata\u001b[38;2;148;226;213m.\u001b[38;2;137;180;250msetdefault\u001b[38;2;147;153;178m(\u001b[38;2;205;214;244mcurrent\u001b[38;2;147;153;178m,\u001b[38;2;205;214;244m \u001b[38;2;147;153;178m[])\u001b[38;2;148;226;213m.\u001b[38;2;137;180;250mappend\u001b[38;2;147;153;178m(\u001b[38;2;137;180;250mclean_scalar\u001b[38;2;147;153;178m(\u001b[38;2;235;160;172mline\u001b[38;2;147;153;178m[\u001b[38;2;250;179;135m4\u001b[38;2;147;153;178m:]))\u001b[30X\r\n\u001b[39;48;5;22;22m \u001b[2m26 \u001b[32;22m+\u001b[38;2;205;214;244m \u001b[38;2;203;166;247mif\u001b[38;2;205;214;244m \u001b[38;2;203;166;247mnot\u001b[38;2;205;214;244m \u001b[38;2;250;179;135misinstance\u001b[38;2;147;153;178m(\u001b[38;2;137;180;250mdata\u001b[38;2;148;226;213m.\u001b[38;2;137;180;250mget\u001b[38;2;147;153;178m(\u001b[38;2;205;214;244mcurrent\u001b[38;2;147;153;178m),\u001b[38;2;205;214;244m \u001b[38;2;203;166;247mlist\u001b[38;2;147;153;178m):\u001b[46X\r\n\u001b[39m \u001b[2m27 \u001b[32;22m+\u001b[38;2;205;214;244m \u001b[38;2;235;160;172mdata\u001b[38;2;147;153;178m[\u001b[38;2;205;214;244mcurrent\u001b[38;2;147;153;178m]\u001b[38;2;205;214;244m \u001b[38;2;148;226;213m=\u001b[38;2;205;214;244m \u001b[38;2;147;153;178m[]\r\n\u001b[39m \u001b[2m28 \u001b[32;22m+\u001b[38;2;205;214;244m \u001b[38;2;235;160;172mdata\u001b[38;2;147;153;178m[\u001b[38;2;205;214;244mcurrent\u001b[38;2;147;153;178m]\u001b[38;2;148;226;213m.\u001b[38;2;137;180;250mappend\u001b[38;2;147;153;178m(\u001b[38;2;137;180;250mclean_scalar\u001b[38;2;147;153;178m(\u001b[38;2;235;160;172mline\u001b[38;2;147;153;178m[\u001b[38;2;250;179;135m4\u001b[38;2;147;153;178m:]))\r\n\u001b[0m \u001b[2m29 \u001b[0m \u001b[38;2;205;214;244m \u001b[38;2;203;166;247mcontinue\u001b[81X\r\n\r\n\u001b[32;1m•\u001b[0m \u001b[1mRan\u001b[0m \u001b[38;2;137;180;250mpython3\u001b[38;2;205;214;244m /tmp/regenerate_secondbrain_index.py\r\n\u001b[39;2m └ (no output)\r\n\r\n─────────────────────────────────────────────────────────────────────────────────────────────────────────────\r\n\r\n• \u001b[36;22mINDEX.md\u001b[0m пересобран. Проверяю итоговый diff и наличие исходников в архиве, чтобы поймать ошибки до\r\n финального отчёта.\r\n\r\n\u001b[31;1m•\u001b[0m PreToolUse hook (failed)\r\n error: PreToolUse hook returned updatedInput without permissionDecision:allow\r\n\r\n\u001b[31;1m•\u001b[0m PreToolUse hook (failed)\r\n error: PreToolUse hook returned updatedInput without permissionDecision:allow\r\n\r\n\u001b[32;1m•\u001b[0m \u001b[1mRan\u001b[0m \u001b[38;2;137;180;250mrtk\u001b[38;2;205;214;244m git diff\u001b[38;2;147;153;178m --\u001b[38;2;235;160;172mname-status\r\n\u001b[39;2m └ M .obsidian/workspace.json\r\n\u001b[0m \u001b[2mD 00 Inbox/В случае ошибок на принтере Kyocera FS-1020MFP.md\r\n … +6 lines (ctrl + t to view transcript)\r\n\u001b[0m \u001b[2m--- Changes ---\r\n\r\n └ 99 System/Archive/Знания Ruby.md\r\n\u001b[0m \u001b[2m99 System/Archive/Итераторы для обработки массивов Ruby.md\r\n\u001b[0m \u001b[2m99 System/Archive/В случае ошибок на принтере Kyocera FS-1020MFP.md\r\n\r\n\u001b[32;22m•\u001b[0m \u001b[1mRan\u001b[0m \u001b[38;2;137;180;250mcommand\u001b[38;2;205;214;244m find \u001b[38;2;166;227;161m'00 Inbox'\u001b[38;2;205;214;244m -maxdepth 1 -type f -print\r\n\u001b[39;2m └ (no output)\r\n\r\n\u001b[32;22m•\u001b[0m \u001b[1mRan\u001b[0m \u001b[38;2;137;180;250mrtk\u001b[38;2;205;214;244m grep\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mnE\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m'Kyocera FS-1020MFP|Ruby - основы языка|Ruby - массивы|Знания Ruby|Итераторы для обработки\r\n\u001b[39;2m │ \u001b[38;2;166;227;161;22mмассивов Ruby|В случае ошибок на принтере'\u001b[38;2;205;214;244m INDEX.md\r\n\u001b[39;2m └ 419:| `90 Library/Other/Kyocera FS-1020MFP — ошибки.md` | Kyocera FS-1020MFP — ошибки | seed | guide |\r\n\u001b[0m \u001b[2mother, printer, kyocera |\r\n … +9 lines (ctrl + t to view transcript)\r\n\u001b[0m \u001b[2m458:| `99 System/Archive/Итераторы для обработки массивов Ruby.md` | Итераторы для обработки массивов\r\n\u001b[0m \u001b[2mRuby | seed | concept | — |\r\n\u001b[0m \u001b[2m?? \"99 System/Archive/Знания Ruby.md\"\r\n\u001b[0m \u001b[2m?? \"99 System/Archive/Итераторы для обработки массивов Ruby.md\"\r\n\r\n•\u001b[0m \u001b[1mExplored\r\n\u001b[22;2m └ \u001b[36;22mRead\u001b[0m INDEX.md\r\n\r\n\u001b[32;1m•\u001b[0m \u001b[1mRan\u001b[0m \u001b[38;2;137;180;250mrtk\u001b[38;2;205;214;244m git diff\u001b[38;2;147;153;178m --\u001b[38;2;235;160;172mstat\u001b[38;2;148;226;213m --\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m'90 Library/Programming/Ruby - основы языка.md'\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m'90 Library/Programming/Ruby -\r\n\u001b[39;2m │ \u001b[38;2;166;227;161;22mмассивы.md'\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m'90 Library/Other/Kyocera FS-1020MFP — ошибки.md'\u001b[38;2;205;214;244m INDEX.md\r\n\u001b[39;2m └ 90 Library/Programming/Ruby - массивы.md | 81 ++++++++++++++-\r\n\u001b[0m \u001b[2m 90 Library/Programming/Ruby - основы языка.md | 144 +++++++++++++++++++++++++-\r\n\u001b[0m \u001b[2m INDEX.md | 22 ++--\r\n\u001b[0m \u001b[2m 3 files changed, 232 insertions(+), 15 deletions(-)\r\n\r\n\u001b[32;22m•\u001b[0m \u001b[1mRan\u001b[0m \u001b[38;2;137;180;250mrtk\u001b[38;2;205;214;244m git diff\u001b[38;2;148;226;213m --\u001b[38;2;205;214;244m INDEX.md\r\n\u001b[39;2m └ INDEX.md | 22 +++++++++++++---------\r\n\u001b[0m \u001b[2m 1 file changed, 13 insertions(+), 9 deletions(-)\r\n … +57 lines (ctrl + t to view transcript)\r\n\u001b[0m \u001b[2m | `99 System/Archive/КР - Хопфилд.md` | КР - Хопфилд | seed | concept | — |\r\n\u001b[0m \u001b[2m +13 -9\r\n\r\n•\u001b[0m \u001b[1mExplored\r\n\u001b[22;2m └ \u001b[36;22mRead\u001b[0m Ruby - основы языка.md\u001b[2m, \u001b[0mKyocera FS-1020MFP — ошибки.md\u001b[2m, \u001b[0mRuby - массивы.md\r\n\r\n\u001b[32;1m•\u001b[0m \u001b[1mRan\u001b[0m \u001b[38;2;137;180;250mrtk\u001b[38;2;205;214;244m git diff\u001b[38;2;147;153;178m --\u001b[38;2;235;160;172mcheck\u001b[38;2;148;226;213m --\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m'90 Library/Programming/Ruby - основы языка.md'\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m'90 Library/Programming/Ruby -\r\n\u001b[39;2m │ \u001b[38;2;166;227;161;22mмассивы.md'\u001b[38;2;205;214;244m INDEX.md\r\n\u001b[39;2m └\r\n\r\n\u001b[48;5;239;22m\u001b[109X\r\n\u001b[1;2m› \u001b[22;22mМожешь чуть побольше про тернарный оператор добавить инфы, а то не совсем понимаю\r\n\r\n\u001b[0m\u001b[109X\r\n\u001b[2m• \u001b[0mПлан: расширю только раздел \u001b[36mТернарный оператор\u001b[0m в \u001b[36m90 Library/Programming/Ruby - основы языка.md\u001b[0m: синтаксис,\r\n смысл возврата значения, 2-3 коротких примера и ограничение по читаемости. \u001b[36mINDEX.md\u001b[0m трогать не нужно,\r\n frontmatter не меняется.\r\n\r\n\u001b[2m• \u001b[0mEdited 90 Library/Programming/Ruby - основы языка.md (\u001b[32m+36\u001b[0m \u001b[31m-2\u001b[0m)\r\n \u001b[2m136\r\n\u001b[48;5;52;22m \u001b[2m137 \u001b[31;22m-\u001b[38;2;205;214;244;2mТернарный оператор:\u001b[81X\r\n\u001b[39;48;5;22;22m \u001b[2m137 \u001b[32;22m+\u001b[38;2;205;214;244mТернарный оператор — короткая форма \u001b[38;2;147;153;178m`\u001b[38;2;205;214;244mif/else\u001b[38;2;147;153;178m`\u001b[38;2;205;214;244m, когда нужно выбрать одно из двух значений:\u001b[11X\r\n\u001b[39m \u001b[2m138 \u001b[32;22m+\r\n\u001b[39m \u001b[2m139 \u001b[32;22m+\u001b[38;2;147;153;178m```\u001b[38;2;205;214;244mruby\r\n\u001b[39m \u001b[2m140 \u001b[32;22m+\u001b[38;2;205;214;244mcondition \u001b[38;2;148;226;213m?\u001b[38;2;205;214;244m value_if_true \u001b[38;2;148;226;213m:\u001b[38;2;205;214;244m value_if_false\r\n\u001b[39m \u001b[2m141 \u001b[32;22m+\u001b[38;2;147;153;178m```\r\n\u001b[39m \u001b[2m142 \u001b[32;22m+\r\n\u001b[39m \u001b[2m143 \u001b[32;22m+\u001b[38;2;205;214;244mПример:\r\n\u001b[39m \u001b[2m144 \u001b[32;22m+\r\n\u001b[39m \u001b[2m145 \u001b[32;22m+\u001b[38;2;147;153;178m```\u001b[38;2;205;214;244mruby\r\n\u001b[39m \u001b[2m146 \u001b[32;22m+\u001b[38;2;205;214;244mage \u001b[38;2;148;226;213m=\u001b[38;2;205;214;244m \u001b[38;2;250;179;135m20\r\n\u001b[39m \u001b[2m147 \u001b[32;22m+\u001b[38;2;205;214;244mstatus \u001b[38;2;148;226;213m=\u001b[38;2;205;214;244m age \u001b[38;2;148;226;213m>=\u001b[38;2;205;214;244m \u001b[38;2;250;179;135m18\u001b[38;2;205;214;244m \u001b[38;2;148;226;213m?\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m'adult'\u001b[38;2;205;214;244m \u001b[38;2;148;226;213m:\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m'minor'\r\n\u001b[39m \u001b[2m148 \u001b[32;22m+\u001b[38;2;147;153;178m# => \"adult\"\r\n\u001b[39m \u001b[2m149 \u001b[32;22m+\u001b[38;2;147;153;178m```\r\n\u001b[39m \u001b[2m150 \u001b[32;22m+\r\n\u001b[39m \u001b[2m151 \u001b[32;22m+\u001b[38;2;205;214;244mОбычный \u001b[38;2;147;153;178m`\u001b[38;2;205;214;244mif/else\u001b[38;2;147;153;178m`\u001b[38;2;205;214;244m для того же случая:\r\n\u001b[39m \u001b[2m152 \u001b[32;22m+\r\n\u001b[39m \u001b[2m153 \u001b[32;22m+\u001b[38;2;147;153;178m```\u001b[38;2;205;214;244mruby\r\n\u001b[39m \u001b[2m157 \u001b[32;22m+\u001b[38;2;205;214;244m \u001b[38;2;203;166;247melse\r\n\u001b[39m \u001b[2m158 \u001b[32;22m+\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m'minor'\r\n\u001b[39m \u001b[2m159 \u001b[32;22m+\u001b[38;2;205;214;244m \u001b[38;2;203;166;247mend\r\n\u001b[39m \u001b[2m160 \u001b[32;22m+\u001b[38;2;147;153;178m```\r\n\u001b[39m \u001b[2m161 \u001b[32;22m+\r\n\u001b[39m \u001b[2m162 \u001b[32;22m+\u001b[38;2;205;214;244mТернарный оператор удобен, когда обе ветки короткие и возвращают простые значения:\r\n\u001b[0m \u001b[2m163\u001b[102X\r\n\u001b[0m \u001b[2m164 \u001b[0m \u001b[38;2;147;153;178m```\u001b[38;2;205;214;244mruby\r\n\u001b[39;48;5;52m \u001b[2m140 \u001b[31;22m-\u001b[38;2;205;214;244;2mv \u001b[38;2;148;226;213m=\u001b[38;2;205;214;244m \u001b[38;2;250;179;135m3\u001b[38;2;205;214;244m \u001b[38;2;148;226;213m==\u001b[38;2;205;214;244m \u001b[38;2;250;179;135m4\u001b[38;2;205;214;244m \u001b[38;2;148;226;213m?\u001b[38;2;205;214;244m \u001b[38;2;250;179;135m1\u001b[38;2;205;214;244m \u001b[38;2;148;226;213m:\u001b[38;2;205;214;244m \u001b[38;2;250;179;135m0\u001b[82X\r\n\u001b[39;48;5;22;22m \u001b[2m165 \u001b[32;22m+\u001b[38;2;205;214;244mmessage \u001b[38;2;148;226;213m=\u001b[38;2;205;214;244m user\u001b[38;2;148;226;213m.\u001b[38;2;243;139;168mnil?\u001b[38;2;205;214;244m \u001b[38;2;148;226;213m?\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m'Гость'\u001b[38;2;205;214;244m \u001b[38;2;148;226;213m:\u001b[38;2;205;214;244m user\u001b[38;2;148;226;213m.\u001b[38;2;243;139;168mname\u001b[59X\r\n\u001b[39m \u001b[2m166 \u001b[32;22m+\u001b[38;2;205;214;244mprice \u001b[38;2;148;226;213m=\u001b[38;2;205;214;244m discount \u001b[38;2;148;226;213m?\u001b[38;2;205;214;244m base_price \u001b[38;2;148;226;213m*\u001b[38;2;205;214;244m \u001b[38;2;250;179;135m0\u001b[38;2;147;153;178m.\u001b[38;2;250;179;135m9\u001b[38;2;205;214;244m \u001b[38;2;148;226;213m:\u001b[38;2;205;214;244m base_price\r\n\u001b[39m \u001b[2m167 \u001b[32;22m+\u001b[38;2;147;153;178m```\r\n\u001b[39m \u001b[2m168 \u001b[32;22m+\r\n\u001b[39m \u001b[2m169 \u001b[32;22m+\u001b[38;2;205;214;244mЕсли логика занимает несколько строк, лучше использовать обычный \u001b[38;2;147;153;178m`\u001b[38;2;205;214;244mif/else\u001b[38;2;147;153;178m`\u001b[38;2;205;214;244m. Вложенные тернарные опер\r\n\u001b[39m \u001b[2m \u001b[38;2;205;214;244;22mаторы тоже лучше не писать: они быстро становятся нечитаемыми.\r\n\u001b[39m \u001b[2m170 \u001b[32;22m+\r\n\u001b[39m \u001b[2m171 \u001b[32;22m+\u001b[38;2;205;214;244mПлохой вариант:\r\n\u001b[39m \u001b[2m172 \u001b[32;22m+\r\n\u001b[39m \u001b[2m173 \u001b[32;22m+\u001b[38;2;147;153;178m```\u001b[38;2;205;214;244mruby\r\n\u001b[39m \u001b[2m174 \u001b[32;22m+\u001b[38;2;205;214;244mresult \u001b[38;2;148;226;213m=\u001b[38;2;205;214;244m a \u001b[38;2;148;226;213m>\u001b[38;2;205;214;244m \u001b[38;2;250;179;135m0\u001b[38;2;205;214;244m \u001b[38;2;148;226;213m?\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m'positive'\u001b[38;2;205;214;244m \u001b[38;2;148;226;213m:\u001b[38;2;205;214;244m a \u001b[38;2;148;226;213m<\u001b[38;2;205;214;244m \u001b[38;2;250;179;135m0\u001b[38;2;205;214;244m \u001b[38;2;148;226;213m?\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m'negative'\u001b[38;2;205;214;244m \u001b[38;2;148;226;213m:\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m'zero'\r\n\u001b[0m \u001b[2m175 \u001b[0m \u001b[38;2;147;153;178m```\u001b[97X\r\n\r\n\u001b[39;2m•\u001b[0m \u001b[1mExplored\r\n\u001b[22;2m └ \u001b[36;22mRead\u001b[0m Ruby - основы языка.md\r\n\r\n\u001b[32;1m•\u001b[0m \u001b[1mRan\u001b[0m \u001b[38;2;137;180;250mrtk\u001b[38;2;205;214;244m git diff\u001b[38;2;147;153;178m --\u001b[38;2;235;160;172mcheck\u001b[38;2;148;226;213m --\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m'90 Library/Programming/Ruby - основы языка.md'\r\n\u001b[39;2m └\r\n\r\n─────────────────────────────────────────────────────────────────────────────────────────────────────────────\r\n\r\n• \u001b[0mДобавил расширение в \u001b[36m90 Library/Programming/Ruby - основы языка.md:129\u001b[0m: синтаксис тернарного оператора,\r\n пример с \u001b[36mage\u001b[0m, эквивалент через обычный \u001b[36mif/else\u001b[0m, типовые случаи применения и предупреждение про вложенные\r\n тернарники.\r\n\r\n Проверил \u001b[36mgit diff --check\u001b[0m по файлу, проблем с пробелами нет.\r\n\r\n\u001b[2m─ Worked for 2m 40s ─────────────────────────────────────────────────────────────────────────────────────────\r\n\r\n\u001b[48;5;239;22m \u001b[108X\r\n\u001b[1m›\u001b[22m \u001b[2mExplain this codebase\r\n\u001b[0m * Restored history at Fri May 29 2026 07:34:49 GMT+0300 (Москва, стандартное время)\u001b[48;5;239m\r\n\u001b[0m\u001b[2X\u001b[2C\u001b[38;2;246;226;183mgpt-5.5 high fast\u001b[39;2m · \u001b[38;2;171;223;167;22m~/Documents/Vaults/SecondBrain\u001b[57X\r\n\u001b[38;5;76m❯\u001b[0m \u001b[32mgemini\r\n\u001b[0m󰖟 Proxy enabled (127.0.0.1:2080)\r\n\r\n \u001b[38;5;74m▝\u001b[38;5;110m▜\u001b[38;5;140m▄\u001b[38;5;139m \u001b[38;5;174m \u001b[0m \u001b[38;5;231;1mGemini CLI\u001b[38;5;248;22m v0.43.0\r\n\u001b[0m \u001b[38;5;74m \u001b[38;5;110m \u001b[38;5;140m▝\u001b[38;5;139m▜\u001b[38;5;174m▄\r\n\u001b[0m \u001b[38;5;74m \u001b[38;5;110m▗\u001b[38;5;140m▟\u001b[38;5;139m▀\u001b[38;5;174m \u001b[0m \u001b[38;5;231;1mSigned in with Google\u001b[38;5;248;22m /auth\r\n\u001b[0m \u001b[38;5;74m▝\u001b[38;5;110m▀\u001b[38;5;140m \u001b[38;5;139m \u001b[38;5;174m \u001b[0m \u001b[38;5;231;1mPlan:\u001b[22m Gemini Code Assist in Google One AI Pro\u001b[38;5;248m /upgrade\r\n\r\n\r\n\u001b[38;5;229mℹ MCP issues detected. Run /mcp list for status.\r\n\u001b[38;5;217m✕ Automatic update failed. Please try updating manually:\r\n\r\n\u001b[0m \u001b[38;5;217mnpm install -g @google/gemini-cli@0.44.1\r\n\r\n\u001b[39;48;5;60m \r\n \u001b[38;5;183m> /quit\u001b[39m \r\n\u001b[38;5;102;49m│\u001b[0m \u001b[38;5;147mWall Time:\u001b[0m \u001b[38;5;231m9.1s\u001b[0m \u001b[38;5;102m│\r\n│\u001b[0m \u001b[38;5;147mAgent Active:\u001b[0m \u001b[38;5;231m1.4s\u001b[0m \u001b[38;5;102m│\r\n│\u001b[0m \u001b[38;5;248m» API Time:\u001b[0m \u001b[38;5;231m1.4s \u001b[38;5;248m(100.0%)\u001b[0m \u001b[38;5;102m│\r\n│\u001b[0m \u001b[38;5;248m» Tool Time:\u001b[0m \u001b[38;5;231m0s \u001b[38;5;248m(0.0%)\u001b[0m \u001b[38;5;102m│\r\n│\u001b[0m \u001b[38;5;102m│\r\n│\u001b[0m \u001b[38;5;102m│\r\n│\u001b[0m \u001b[38;5;231;1mModel Usage\u001b[0m \u001b[38;5;102m│\r\n│\u001b[0m \u001b[38;5;248;1mModel\u001b[0m \u001b[38;5;248;1mReqs\u001b[0m \u001b[38;5;248;1mInput Tokens\u001b[0m \u001b[38;5;248;1mCache Reads\u001b[0m \u001b[38;5;248;1mOutput Tokens\u001b[0m \u001b[38;5;102m│\r\n│\u001b[0m \u001b[38;5;102m───────────────────────────────────────────────────────────────────────────────────────────────────────\u001b[0m \u001b[38;5;102m│\r\n\u001b[0m󰖟 Proxy enabled (127.0.0.1:2080)\r\nWARNING: failed to clean up stale arg0 temp dirs: Permission denied (os error 13)\r\n\u001b[2m╭───────────────────────────────────────────────────────────────╮\r\n│ \u001b[36;1;22m✨ Update available!\u001b[0m \u001b[1m0.133.0 -> 0.134.0\u001b[22;2m │\r\n│ \u001b[0mSee \u001b[36;4mhttps://github.com/openai/codex\u001b[0m for installation options.\u001b[2m │\r\n│ │\r\n\r\n╭───────────────────────────────────────────────────╮\r\n│ >_ \u001b[1;22mOpenAI Codex\u001b[22;2m (v0.133.0) │\r\n│ │\r\n│ model: \u001b[0mgpt-5.5 high \u001b[35mfast\u001b[39;2m \u001b[36;22m/model\u001b[39;2m to change │\r\n│ directory: \u001b[0m~/Documents/Vaults/SecondBrain\u001b[2m │\r\n╰───────────────────────────────────────────────────╯\r\n\r\n\u001b[0m \u001b[1mTip:\u001b[0m Use /init to create an AGENTS.md with project-specific guidance.\r\n\r\n\u001b[2m• \u001b[0mService tier set to default\r\n\r\n\u001b[48;5;239m\u001b[109X\r\n\u001b[1;2m› \u001b[22;22mingest\r\n\r\n\u001b[0m\u001b[109X\r\n\u001b[2m• \u001b[0mСначала проверю \u001b[36mINDEX.md\u001b[0m, входящие файлы и доступные шаблоны, затем дам план ingest и остановлюсь на\r\n подтверждении перед правками.\r\n\r\n\u001b[32;1m•\u001b[0m \u001b[1mRan\u001b[0m \u001b[38;2;137;180;250mpwd\r\n\u001b[39;2m └ /home/ada/Documents/Vaults/SecondBrain\r\n\r\n•\u001b[0m \u001b[1mExplored\r\n\u001b[22;2m └ \u001b[36;22mRead\u001b[0m INDEX.md\r\n\r\n\u001b[32;1m•\u001b[0m \u001b[1mRan\u001b[0m \u001b[38;2;137;180;250mrtk\u001b[38;2;205;214;244m ls\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mla\u001b[38;2;205;214;244m 99\u001b[38;2;245;194;231m\\ \u001b[38;2;205;214;244mSystem/Template\r\n\u001b[0m \u001b[2mStudy Item.md 396B\r\n\u001b[0m \u001b[2mTravel Item.md 272B\r\n\r\n\u001b[32;1;22m•\u001b[0m \u001b[1mRan\u001b[0m \u001b[38;2;137;180;250mrtk\u001b[38;2;205;214;244m ls\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mla\u001b[38;2;205;214;244m 00\u001b[38;2;245;194;231m\\ \u001b[38;2;205;214;244mInbox\r\n\u001b[39;2m └ Команды для деплоя с помощью Capistrano.md 1.0K\r\n\u001b[0m \u001b[2mМИАД_Л1.pdf 1.4M\r\n\u001b[0m \u001b[2mМИАД_Л2.pdf 1.2M\r\n\u001b[0m \u001b[2mМИАД_Л3_нечеткий_вывод.pdf 1.6M\r\n\u001b[0m \u001b[2mМИАД_Л4_иерархии.pdf 1.8M\r\n\r\n\u001b[32;1;22m•\u001b[0m \u001b[1mRan\u001b[0m \u001b[38;2;137;180;250mrtk\u001b[38;2;205;214;244m ls\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mla\r\n\u001b[39;2m └ .claude/\r\n\u001b[0m \u001b[2m.git/\r\n … +16 lines (ctrl + t to view transcript)\r\n\u001b[0m \u001b[2mGEMINI.md 329B\r\n\u001b[0m \u001b[2mINDEX.md 71.0K\r\n\r\n─────────────────────────────────────────────────────────────────────────────────────────────────────────────\r\n\r\n• \u001b[0mВ \u001b[36m00 Inbox/\u001b[0m нашёл один markdown по Capistrano и четыре PDF-лекции МИАД. Сейчас быстро проверю содержание и\r\n близкие заметки, чтобы не предложить дубли.\r\n\r\n\u001b[2m•\u001b[0m \u001b[1mExplored\r\n\u001b[22;2m └ \u001b[36;22mRead\u001b[0m Команды для деплоя с помощью Capistrano.md\r\n\r\n\u001b[32;1m•\u001b[0m \u001b[1mRan\u001b[0m \u001b[38;2;137;180;250mrtk\u001b[38;2;205;214;244m read \u001b[38;2;166;227;161m'99 System/Template/Study Item.md'\r\n\u001b[39;2m └ ---\r\n\u001b[0m \u001b[2mtags: []\r\n … +20 lines (ctrl + t to view transcript)\r\n\u001b[0m \u001b[2m## Связанные Ссылки\r\n\u001b[0m \u001b[2m- [[StudyTracker|📁 Трекер обучения]]\r\n\r\n\u001b[32;1;22m•\u001b[0m \u001b[1mRan\u001b[0m \u001b[38;2;137;180;250mrtk\u001b[38;2;205;214;244m read \u001b[38;2;166;227;161m'99 System/Template/Base Note.md'\r\n\u001b[39;2m └ ---\r\n\u001b[0m \u001b[2mstatus: seed\r\n … +4 lines (ctrl + t to view transcript)\r\n\u001b[0m \u001b[2mtitle:\r\n\u001b[0m \u001b[2m---\r\n\r\n\u001b[32;1;22m•\u001b[0m \u001b[1mRan\u001b[0m \u001b[38;2;137;180;250mrtk\u001b[38;2;205;214;244m grep\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mn\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m\"Capistrano|deploy|деплой|МИАД|нечет|иерарх|дискриминант|кластер|фактор\"\u001b[38;2;205;214;244m INDEX.md\r\n\u001b[39;2m └ 17 matches in 1F:\r\n\r\n … +17 lines (ctrl + t to view transcript)\r\n\u001b[0m \u001b[2m 375: | `90 Library/Math/Теория нечетких множеств/Функция принадлежности.md` | Функ...\r\n\r\n\r\n•\u001b[0m \u001b[1mExplored\r\n\u001b[22;2m └ \u001b[36;22mRead\u001b[0m INDEX.md\r\n\r\n\u001b[32;1m•\u001b[0m \u001b[1mRan\u001b[0m \u001b[38;2;137;180;250mpdftotext\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mf\u001b[38;2;205;214;244m 1\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172ml\u001b[38;2;205;214;244m 2\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mlayout\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m'00 Inbox/МИАД_Л1.pdf'\u001b[38;2;205;214;244m -\r\n\u001b[39;2m └ Математические методы в задачах финансового\r\n\u001b[0m \u001b[2mмониторинга\r\n … +19 lines (ctrl + t to view transcript)\r\n\u001b[0m \u001b[2m 2\r\n\u001b[0m \r\n\r\n \u001b[2mмониторинга\r\n … +18 lines (ctrl + t to view transcript)\r\n\u001b[0m \u001b[2m 2\r\n\u001b[0m \r\n\r\n\r\n\u001b[32;1m•\u001b[0m \u001b[1mRan\u001b[0m \u001b[38;2;137;180;250mpdftotext\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mf\u001b[38;2;205;214;244m 1\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172ml\u001b[38;2;205;214;244m 2\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mlayout\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m'00 Inbox/МИАД_Л2.pdf'\u001b[38;2;205;214;244m -\r\n\u001b[39;2m └ Математические методы в задачах финансового\r\n\u001b[0m \u001b[2mмониторинга\r\n … +16 lines (ctrl + t to view transcript)\r\n\u001b[0m \u001b[2m 2\r\n\u001b[0m \r\n\r\n\r\n\u001b[32;1m•\u001b[0m \u001b[1mRan\u001b[0m \u001b[38;2;137;180;250mpdftotext\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mf\u001b[38;2;205;214;244m 1\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172ml\u001b[38;2;205;214;244m 2\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mlayout\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m'00 Inbox/МИАД_Л3_нечеткий_вывод.pdf'\u001b[38;2;205;214;244m -\r\n\u001b[39;2m └ Математические методы в задачах финансового\r\n\u001b[0m \u001b[2mмониторинга\r\n … +14 lines (ctrl + t to view transcript)\r\n\u001b[0m \u001b[2m 2\r\n\u001b[0m \r\n\r\n\r\n\u001b[2m•\u001b[0m \u001b[1mExplored\r\n\u001b[22;2m └ \u001b[36;22mSearch\u001b[0m *.md\u001b[2m in \u001b[0mMath\r\n\r\n\u001b[32;1m•\u001b[0m \u001b[1mRan\u001b[0m \u001b[38;2;137;180;250mrtk\u001b[38;2;205;214;244m grep\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mn\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m\"Capistrano|Puma|puma:install|sudoers|Solid Queue|Sidekiq|deploy\"\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m'90 Library'\u001b[38;2;205;214;244m INDEX.md\r\n\u001b[39;2m └ 9 matches in 4F:\r\n\r\n … +15 lines (ctrl + t to view transcript)\r\n\u001b[0m \u001b[2m 428: | `90 Library/Programming/Ruby On Rails/Sidekiq - основа работы.md` | Sidekiq...\r\n └ 7F 2D:\r\n\r\n\u001b[0m \u001b[2m./ Ruby - массивы.md Ruby - основы языка.md\r\n\u001b[0m \u001b[2mRuby On Rails/ API импорт в Rails через runner.md Active Storage.md Rails credentials edit не открывает\r\n\u001b[0m \u001b[2mредактор.md Ruby On Rails.md Sidekiq - основа работы.md\r\n\r\n\u001b[32;1;22m•\u001b[0m \u001b[1mRan\u001b[0m \u001b[38;2;137;180;250mpdftotext\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mf\u001b[38;2;205;214;244m 1\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172ml\u001b[38;2;205;214;244m 8\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mlayout\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m'00 Inbox/МИАД_Л4_иерархии.pdf'\u001b[38;2;205;214;244m -\r\n\u001b[39;2m └ Математические методы в задачах финансового\r\n\u001b[0m \u001b[2mмониторинга\r\n … +88 lines (ctrl + t to view transcript)\r\n\u001b[0m \u001b[2m 8\r\n\u001b[0m \r\n\r\n\r\n\u001b[32;1m•\u001b[0m \u001b[1mRan\u001b[0m \u001b[38;2;137;180;250mpdftotext\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mf\u001b[38;2;205;214;244m 1\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172ml\u001b[38;2;205;214;244m 8\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mlayout\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m'00 Inbox/МИАД_Л1.pdf'\u001b[38;2;205;214;244m -\r\n\u001b[39;2m └ Математические методы в задачах финансового\r\n\u001b[0m \u001b[2mмониторинга\r\n … +101 lines (ctrl + t to view transcript)\r\n\u001b[0m \u001b[2m 8\r\n\u001b[0m \r\n\r\n\r\n\u001b[2m•\u001b[0m \u001b[1mExplored\r\n\u001b[22;2m └ \u001b[36;22mRead\u001b[0m Sidekiq - основа работы.md\u001b[2m, \u001b[0mRuby On Rails.md\u001b[2m, \u001b[0mТеория нечетких множеств.md\r\n\r\n\u001b[32;1m•\u001b[0m \u001b[1mRan\u001b[0m \u001b[38;2;137;180;250mpdftotext\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mf\u001b[38;2;205;214;244m 1\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172ml\u001b[38;2;205;214;244m 6\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mlayout\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m'00 Inbox/МИАД_Л2.pdf'\u001b[38;2;205;214;244m -\r\n\u001b[39;2m └ Математические методы в задачах финансового\r\n\u001b[0m \u001b[2mмониторинга\r\n … +61 lines (ctrl + t to view transcript)\r\n\u001b[0m \u001b[2mиспользуем 𝑥𝑅𝑦 или (𝑥, 𝑦) ∈ 𝑅. 6\r\n\u001b[0m \r\n\r\n\r\n\u001b[32;1m•\u001b[0m \u001b[1mRan\u001b[0m \u001b[38;2;137;180;250mpdftotext\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mf\u001b[38;2;205;214;244m 1\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172ml\u001b[38;2;205;214;244m 6\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mlayout\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m'00 Inbox/МИАД_Л3_нечеткий_вывод.pdf'\u001b[38;2;205;214;244m -\r\n\u001b[39;2m └ Математические методы в задачах финансового\r\n\u001b[0m \u001b[2mмониторинга\r\n … +58 lines (ctrl + t to view transcript)\r\n\u001b[0m \u001b[2m 6\r\n\u001b[0m \r\n\r\n\r\n\u001b[2m─────────────────────────────────────────────────────────────────────────────────────────────────────────────\r\n\r\n• \u001b[0mПлан ingest, без правок пока:\r\n\r\n \u001b[94m1. \u001b[36m00 Inbox/Команды для деплоя с помощью Capistrano.md\r\n\u001b[0m - Шаблон: \u001b[36mBase Note.md\r\n\u001b[0m - Куда: \u001b[36m90 Library/Programming/Ruby On Rails/Capistrano deploy через systemd.md\r\n\u001b[0m - Связи: \u001b[36m[[Ruby On Rails]]\u001b[0m, \u001b[36m[[Sidekiq - основа работы]]\r\n\u001b[0m - Источник после обработки: \u001b[36m99 System/Archive/\r\n\u001b[0m \u001b[94m2. \u001b[36m00 Inbox/МИАД_Л1.pdf\r\n\u001b[0m - Не создавать дубль: тема уже частично покрыта в \u001b[36m90 Library/Math/Теория нечетких множеств/\r\n\u001b[0m - Дополнить существующие заметки про нечёткое множество, функцию принадлежности, логические операции\r\n - Связи: \u001b[36m[[Теория Нечетких Множеств]]\u001b[0m, \u001b[36m[[Функция принадлежности]]\u001b[0m, \u001b[36m[[Определение нечеткого множества]]\r\n\u001b[0m \u001b[94m3. \u001b[36m00 Inbox/МИАД_Л2.pdf\r\n\u001b[0m - Создать: \u001b[36m90 Library/Math/Теория нечетких множеств/Нечеткие отношения.md\r\n\u001b[0m \u001b[94m4. \u001b[36m00 Inbox/МИАД_Л3_нечеткий_вывод.pdf\r\n\u001b[0m - Создать: \u001b[36m90 Library/Math/Теория нечетких множеств/Нечеткий вывод.md\r\n\u001b[0m - Шаблон: \u001b[36mBase Note.md\r\n\u001b[0m - Связи: \u001b[36m[[Теория Нечетких Множеств]]\u001b[0m, \u001b[36m[[Лингвистическая переменная]]\u001b[0m если будет создана как отдельная\r\n заметка; иначе без неё\r\n \u001b[94m5. \u001b[36m00 Inbox/МИАД_Л4_иерархии.pdf\r\n\u001b[0m После подтверждения:\r\n\r\n - обработаю источники;\r\n - перемещу исходники в \u001b[36m99 System/Archive/\u001b[0m;\r\n - добавлю \u001b[36msource\u001b[0m в frontmatter;\r\n - обновлю \u001b[36mINDEX.md\u001b[0m.\r\n\r\n Подтверди: выполнять этот план?\r\n\r\n\u001b[2m─ Worked for 1m 18s ─────────────────────────────────────────────────────────────────────────────────────────\r\n\r\n\u001b[48;5;239;22m\u001b[109X\r\n\u001b[1;2m› \u001b[22;22mДелай\r\n\r\n\u001b[0m\u001b[109X\r\n\u001b[2m• \u001b[0mПринял. Сначала извлеку текст из PDF во временные файлы и дочитаю релевантные куски, потом внесу точечные\r\n правки и обновлю индекс.\r\n\r\n\u001b[32;1m•\u001b[0m \u001b[1mRan\u001b[0m \u001b[38;2;137;180;250mmkdir\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mp\u001b[38;2;205;214;244m /tmp/secondbrain-ingest\r\n\u001b[39;2m └ (no output)\r\n\r\n•\u001b[0m \u001b[1mExplored\r\n\u001b[22;2m └ \u001b[36;22mRead\u001b[0m Определение нечеткого множества.md\u001b[2m, \u001b[0mФункция принадлежности.md\u001b[2m, \u001b[0mЛогические операции над нечеткими\r\n множествами.md\r\n\r\n\u001b[32;1m•\u001b[0m \u001b[1mRan\u001b[0m \u001b[38;2;137;180;250mrtk\u001b[38;2;205;214;244m ls\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mla\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m'99 System'\r\n\u001b[39;2m └ Archive/\r\n\u001b[0m \u001b[2mCache/\r\n\u001b[0m \u001b[2mTemplate/\r\n\r\n─────────────────────────────────────────────────────────────────────────────────────────────────────────────\r\n\r\n• \u001b[0mПо содержанию видно, что Л1 пересекается с уже существующими заметками; там достаточно дозаполнить \u001b[36msource\u001b[0m и\r\n пару недостающих тезисов, а новые отдельные заметки нужны для отношений, вывода и МАИ.\r\n\r\n\u001b[32;1m•\u001b[0m \u001b[1mRan\u001b[0m \u001b[38;2;137;180;250mpdftotext\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mlayout\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m'00 Inbox/МИАД_Л2.pdf'\u001b[38;2;205;214;244m /tmp/secondbrain-ingest/miad_l2.txt\r\n\u001b[39;2m └ (no output)\r\n\r\n\u001b[32;1;22m•\u001b[0m \u001b[1mRan\u001b[0m \u001b[38;2;137;180;250mpdftotext\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mlayout\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m'00 Inbox/МИАД_Л1.pdf'\u001b[38;2;205;214;244m /tmp/secondbrain-ingest/miad_l1.txt\r\n\u001b[39;2m └ (no output)\r\n\r\n\u001b[32;1;22m•\u001b[0m \u001b[1mRan\u001b[0m \u001b[38;2;137;180;250mpdftotext\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mlayout\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m'00 Inbox/МИАД_Л3_нечеткий_вывод.pdf'\u001b[38;2;205;214;244m /tmp/secondbrain-ingest/miad_l3.txt\r\n\u001b[39;2m └ (no output)\r\n\r\n\u001b[32;1;22m•\u001b[0m \u001b[1mRan\u001b[0m \u001b[38;2;137;180;250mpdftotext\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mlayout\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m'00 Inbox/МИАД_Л4_иерархии.pdf'\u001b[38;2;205;214;244m /tmp/secondbrain-ingest/miad_l4.txt\r\n\u001b[39;2m └ (no output)\r\n\r\n\u001b[32;1;22m•\u001b[0m \u001b[1mRan\u001b[0m \u001b[38;2;137;180;250mrtk\u001b[38;2;205;214;244m grep\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mn\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m\"Содержание|Этап|парн|Саати|приоритет|согласован|индекс|альтернатив|матриц|собствен\"\u001b[38;2;205;214;244m /tmp/\r\n\u001b[39;2m │ \u001b[38;2;205;214;244;22msecondbrain-ingest/miad_l4.txt\r\n\u001b[39;2m └ 110 matches in 18F:\r\n\r\n … +78 lines (ctrl + t to view transcript)\r\n\r\n\u001b[0m \u001b[2m... +68\r\n └ 23 matches in 2F:\r\n\r\n … +25 lines (ctrl + t to view transcript)\r\n\u001b[0m \u001b[2m 0:\r\n\r\n\r\n\u001b[32;1;22m•\u001b[0m \u001b[1mRan\u001b[0m \u001b[38;2;137;180;250mrtk\u001b[38;2;205;214;244m grep\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mn\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m\"Содержание|Терминология|Алгебраические|оператор|преимуществ|Недостатки|Теорема|прям|\r\n\u001b[39;2m │ \u001b[38;2;166;227;161;22mкосвен\"\u001b[38;2;205;214;244m /tmp/secondbrain-ingest/miad_l1.txt\r\n\u001b[39;2m └ 38 matches in 4F:\r\n\r\n … +36 lines (ctrl + t to view transcript)\r\n\r\n\u001b[0m \u001b[2m... +10\r\n\r\n\u001b[32;1;22m•\u001b[0m \u001b[1mRan\u001b[0m \u001b[38;2;137;180;250mrtk\u001b[38;2;205;214;244m grep\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mn\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m\"Содержание|Лингвист|нечетк.*перем|продукц|Мамдани|Сугено|этап|дефаз|фаз|импликац|вывод\"\u001b[38;2;205;214;244m /\r\n\u001b[39;2m │ \u001b[38;2;205;214;244;22mtmp/secondbrain-ingest/miad_l3.txt\r\n\u001b[39;2m └ 66 matches in 4F:\r\n\r\n … +36 lines (ctrl + t to view transcript)\r\n\r\n\u001b[0m \u001b[2m... +38\r\n\r\n•\u001b[0m \u001b[1mExplored\r\n\u001b[22;2m └ \u001b[36;22mRead\u001b[0m miad_l1.txt\u001b[2m, \u001b[0mmiad_l4.txt\u001b[2m, \u001b[0mmiad_l2.txt\u001b[2m, \u001b[0mmiad_l3.txt\r\n\r\n\u001b[2m─────────────────────────────────────────────────────────────────────────────────────────────────────────────\r\n\r\n• \u001b[0mСейчас внесу изменения: создам 4 новые заметки, дозаполню 3 существующие по Л1, добавлю новые ссылки в MOC\r\n и Rails MOC. Затем перемещу источники и пересоберу \u001b[36mINDEX.md\u001b[0m.\r\n\r\n•\u001b[1C\u001b[1mW\u001b[0mo\u001b[2mrking\u001b[1C(1m 22s • esc to interrupt)\r\n\r\n\u001b[48;5;239;22m \u001b[108X\r\n\u001b[1m›\u001b[22m \u001b[2mFind and fix a bug in @filename\r\n\u001b[22m \r\n\u001b[0m\u001b[2X\u001b[2C\u001b[38;2;246;226;183mgpt-5.5 high\u001b[39;2m · \u001b[38;2;171;223;167;22m~/Documents/Vaults/SecondBrain\u001b[62X\u001b[2A\u001b[45D\u001b[0m", + "data": "\u001b[2m │ \u001b[38;2;166;227;161;22mмассивы.md'\u001b[38;2;205;214;244m INDEX.md\r\n\u001b[39;2m └\r\n\r\n\u001b[48;5;239;22m\u001b[109X\r\n\u001b[1;2m› \u001b[22;22mМожешь чуть побольше про тернарный оператор добавить инфы, а то не совсем понимаю\u001b[26X\r\n\u001b[109X\r\n\u001b[0m\r\n\u001b[2m• \u001b[0mПлан: расширю только раздел \u001b[36mТернарный оператор\u001b[0m в \u001b[36m90 Library/Programming/Ruby - основы языка.md\u001b[0m: синтаксис,\r\n смысл возврата значения, 2-3 коротких примера и ограничение по читаемости. \u001b[36mINDEX.md\u001b[0m трогать не нужно,\r\n frontmatter не меняется.\r\n\r\n\u001b[2m• \u001b[0mEdited 90 Library/Programming/Ruby - основы языка.md (\u001b[32m+36\u001b[0m \u001b[31m-2\u001b[0m)\r\n \u001b[2m136\r\n\u001b[48;5;52;22m \u001b[2m137 \u001b[31;22m-\u001b[38;2;205;214;244;2mТернарный оператор:\u001b[81X\r\n\u001b[39;48;5;22;22m \u001b[2m137 \u001b[32;22m+\u001b[38;2;205;214;244mТернарный оператор — короткая форма \u001b[38;2;147;153;178m`\u001b[38;2;205;214;244mif/else\u001b[38;2;147;153;178m`\u001b[38;2;205;214;244m, когда нужно выбрать одно из двух значений:\u001b[11X\r\n\u001b[39m \u001b[2m138 \u001b[32;22m+\u001b[100X\r\n\u001b[39m \u001b[2m139 \u001b[32;22m+\u001b[38;2;147;153;178m```\u001b[38;2;205;214;244mruby\u001b[93X\r\n\u001b[39m \u001b[2m140 \u001b[32;22m+\u001b[38;2;205;214;244mcondition \u001b[38;2;148;226;213m?\u001b[38;2;205;214;244m value_if_true \u001b[38;2;148;226;213m:\u001b[38;2;205;214;244m value_if_false\u001b[58X\r\n\u001b[39m \u001b[2m141 \u001b[32;22m+\u001b[38;2;147;153;178m```\u001b[97X\r\n\u001b[39m \u001b[2m142 \u001b[32;22m+\u001b[100X\r\n\u001b[39m \u001b[2m143 \u001b[32;22m+\u001b[38;2;205;214;244mПример:\u001b[93X\r\n\u001b[39m \u001b[2m144 \u001b[32;22m+\u001b[100X\r\n\u001b[39m \u001b[2m145 \u001b[32;22m+\u001b[38;2;147;153;178m```\u001b[38;2;205;214;244mruby\u001b[93X\r\n\u001b[39m \u001b[2m146 \u001b[32;22m+\u001b[38;2;205;214;244mage \u001b[38;2;148;226;213m=\u001b[38;2;205;214;244m \u001b[38;2;250;179;135m20\u001b[92X\r\n\u001b[39m \u001b[2m147 \u001b[32;22m+\u001b[38;2;205;214;244mstatus \u001b[38;2;148;226;213m=\u001b[38;2;205;214;244m age \u001b[38;2;148;226;213m>=\u001b[38;2;205;214;244m \u001b[38;2;250;179;135m18\u001b[38;2;205;214;244m \u001b[38;2;148;226;213m?\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m'adult'\u001b[38;2;205;214;244m \u001b[38;2;148;226;213m:\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m'minor'\u001b[62X\r\n\u001b[39m \u001b[2m148 \u001b[32;22m+\u001b[38;2;147;153;178m# => \"adult\"\u001b[88X\r\n\u001b[39m \u001b[2m149 \u001b[32;22m+\u001b[38;2;147;153;178m```\u001b[97X\r\n\u001b[39m \u001b[2m150 \u001b[32;22m+\u001b[100X\r\n\u001b[39m \u001b[2m151 \u001b[32;22m+\u001b[38;2;205;214;244mОбычный \u001b[38;2;147;153;178m`\u001b[38;2;205;214;244mif/else\u001b[38;2;147;153;178m`\u001b[38;2;205;214;244m для того же случая:\u001b[63X\r\n\u001b[39m \u001b[2m152 \u001b[32;22m+\u001b[100X\r\n\u001b[39m \u001b[2m153 \u001b[32;22m+\u001b[38;2;147;153;178m```\u001b[38;2;205;214;244mruby\u001b[93X\r\n\u001b[39m \u001b[2m157 \u001b[32;22m+\u001b[38;2;205;214;244m \u001b[38;2;203;166;247melse\u001b[94X\r\n\u001b[39m \u001b[2m158 \u001b[32;22m+\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m'minor'\r\n\u001b[39m \u001b[2m159 \u001b[32;22m+\u001b[38;2;205;214;244m \u001b[38;2;203;166;247mend\r\n\u001b[39m \u001b[2m160 \u001b[32;22m+\u001b[38;2;147;153;178m```\r\n\u001b[39m \u001b[2m161 \u001b[32;22m+\r\n\u001b[39m \u001b[2m162 \u001b[32;22m+\u001b[38;2;205;214;244mТернарный оператор удобен, когда обе ветки короткие и возвращают простые значения:\r\n\u001b[0m \u001b[2m163\u001b[102X\r\n\u001b[0m \u001b[2m164 \u001b[0m \u001b[38;2;147;153;178m```\u001b[38;2;205;214;244mruby\r\n\u001b[39;48;5;52m \u001b[2m140 \u001b[31;22m-\u001b[38;2;205;214;244;2mv \u001b[38;2;148;226;213m=\u001b[38;2;205;214;244m \u001b[38;2;250;179;135m3\u001b[38;2;205;214;244m \u001b[38;2;148;226;213m==\u001b[38;2;205;214;244m \u001b[38;2;250;179;135m4\u001b[38;2;205;214;244m \u001b[38;2;148;226;213m?\u001b[38;2;205;214;244m \u001b[38;2;250;179;135m1\u001b[38;2;205;214;244m \u001b[38;2;148;226;213m:\u001b[38;2;205;214;244m \u001b[38;2;250;179;135m0\u001b[82X\r\n\u001b[39;48;5;22;22m \u001b[2m165 \u001b[32;22m+\u001b[38;2;205;214;244mmessage \u001b[38;2;148;226;213m=\u001b[38;2;205;214;244m user\u001b[38;2;148;226;213m.\u001b[38;2;243;139;168mnil?\u001b[38;2;205;214;244m \u001b[38;2;148;226;213m?\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m'Гость'\u001b[38;2;205;214;244m \u001b[38;2;148;226;213m:\u001b[38;2;205;214;244m user\u001b[38;2;148;226;213m.\u001b[38;2;243;139;168mname\u001b[59X\r\n\u001b[39m \u001b[2m166 \u001b[32;22m+\u001b[38;2;205;214;244mprice \u001b[38;2;148;226;213m=\u001b[38;2;205;214;244m discount \u001b[38;2;148;226;213m?\u001b[38;2;205;214;244m base_price \u001b[38;2;148;226;213m*\u001b[38;2;205;214;244m \u001b[38;2;250;179;135m0\u001b[38;2;147;153;178m.\u001b[38;2;250;179;135m9\u001b[38;2;205;214;244m \u001b[38;2;148;226;213m:\u001b[38;2;205;214;244m base_price\r\n\u001b[39m \u001b[2m167 \u001b[32;22m+\u001b[38;2;147;153;178m```\r\n\u001b[39m \u001b[2m168 \u001b[32;22m+\r\n\u001b[39m \u001b[2m169 \u001b[32;22m+\u001b[38;2;205;214;244mЕсли логика занимает несколько строк, лучше использовать обычный \u001b[38;2;147;153;178m`\u001b[38;2;205;214;244mif/else\u001b[38;2;147;153;178m`\u001b[38;2;205;214;244m. Вложенные тернарные опер\r\n\u001b[39m \u001b[2m \u001b[38;2;205;214;244;22mаторы тоже лучше не писать: они быстро становятся нечитаемыми.\r\n\u001b[39m \u001b[2m170 \u001b[32;22m+\r\n\u001b[39m \u001b[2m171 \u001b[32;22m+\u001b[38;2;205;214;244mПлохой вариант:\r\n\u001b[39m \u001b[2m172 \u001b[32;22m+\r\n\u001b[39m \u001b[2m173 \u001b[32;22m+\u001b[38;2;147;153;178m```\u001b[38;2;205;214;244mruby\r\n\u001b[39m \u001b[2m174 \u001b[32;22m+\u001b[38;2;205;214;244mresult \u001b[38;2;148;226;213m=\u001b[38;2;205;214;244m a \u001b[38;2;148;226;213m>\u001b[38;2;205;214;244m \u001b[38;2;250;179;135m0\u001b[38;2;205;214;244m \u001b[38;2;148;226;213m?\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m'positive'\u001b[38;2;205;214;244m \u001b[38;2;148;226;213m:\u001b[38;2;205;214;244m a \u001b[38;2;148;226;213m<\u001b[38;2;205;214;244m \u001b[38;2;250;179;135m0\u001b[38;2;205;214;244m \u001b[38;2;148;226;213m?\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m'negative'\u001b[38;2;205;214;244m \u001b[38;2;148;226;213m:\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m'zero'\r\n\u001b[0m \u001b[2m175 \u001b[0m \u001b[38;2;147;153;178m```\u001b[97X\r\n\r\n\u001b[39;2m•\u001b[0m \u001b[1mExplored\r\n\u001b[22;2m └ \u001b[36;22mRead\u001b[0m Ruby - основы языка.md\r\n\r\n\u001b[32;1m•\u001b[0m \u001b[1mRan\u001b[0m \u001b[38;2;137;180;250mrtk\u001b[38;2;205;214;244m git diff\u001b[38;2;147;153;178m --\u001b[38;2;235;160;172mcheck\u001b[38;2;148;226;213m --\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m'90 Library/Programming/Ruby - основы языка.md'\r\n\u001b[39;2m └\r\n\r\n─────────────────────────────────────────────────────────────────────────────────────────────────────────────\r\n\r\n• \u001b[0mДобавил расширение в \u001b[36m90 Library/Programming/Ruby - основы языка.md:129\u001b[0m: синтаксис тернарного оператора,\r\n пример с \u001b[36mage\u001b[0m, эквивалент через обычный \u001b[36mif/else\u001b[0m, типовые случаи применения и предупреждение про вложенные\r\n тернарники.\r\n\r\n Проверил \u001b[36mgit diff --check\u001b[0m по файлу, проблем с пробелами нет.\r\n\r\n\u001b[2m─ Worked for 2m 40s ─────────────────────────────────────────────────────────────────────────────────────────\r\n\r\n\u001b[48;5;239;22m \u001b[108X\r\n\u001b[1m›\u001b[22m \u001b[2mExplain this codebase\r\n\u001b[0m * Restored history at Fri May 29 2026 07:34:49 GMT+0300 (Москва, стандартное время)\u001b[48;5;239m\r\n\u001b[0m\u001b[2X\u001b[2C\u001b[38;2;246;226;183mgpt-5.5 high fast\u001b[39;2m · \u001b[38;2;171;223;167;22m~/Documents/Vaults/SecondBrain\u001b[57X\r\n\u001b[38;5;76m❯\u001b[0m \u001b[32mgemini\r\n\u001b[0m󰖟 Proxy enabled (127.0.0.1:2080)\r\n\r\n \u001b[38;5;74m▝\u001b[38;5;110m▜\u001b[38;5;140m▄\u001b[38;5;139m \u001b[38;5;174m \u001b[0m \u001b[38;5;231;1mGemini CLI\u001b[38;5;248;22m v0.43.0\r\n\u001b[0m \u001b[38;5;74m \u001b[38;5;110m \u001b[38;5;140m▝\u001b[38;5;139m▜\u001b[38;5;174m▄\r\n\u001b[0m \u001b[38;5;74m \u001b[38;5;110m▗\u001b[38;5;140m▟\u001b[38;5;139m▀\u001b[38;5;174m \u001b[0m \u001b[38;5;231;1mSigned in with Google\u001b[38;5;248;22m /auth\r\n\u001b[0m \u001b[38;5;74m▝\u001b[38;5;110m▀\u001b[38;5;140m \u001b[38;5;139m \u001b[38;5;174m \u001b[0m \u001b[38;5;231;1mPlan:\u001b[22m Gemini Code Assist in Google One AI Pro\u001b[38;5;248m /upgrade\r\n\r\n\r\n\u001b[38;5;229mℹ MCP issues detected. Run /mcp list for status.\r\n\u001b[38;5;217m✕ Automatic update failed. Please try updating manually:\r\n\r\n\u001b[0m \u001b[38;5;217mnpm install -g @google/gemini-cli@0.44.1\r\n\r\n\u001b[39;48;5;60m \r\n \u001b[38;5;183m> /quit\u001b[39m \r\n\u001b[38;5;102;49m│\u001b[0m \u001b[38;5;147mWall Time:\u001b[0m \u001b[38;5;231m9.1s\u001b[0m \u001b[38;5;102m│\r\n│\u001b[0m \u001b[38;5;147mAgent Active:\u001b[0m \u001b[38;5;231m1.4s\u001b[0m \u001b[38;5;102m│\r\n│\u001b[0m \u001b[38;5;248m» API Time:\u001b[0m \u001b[38;5;231m1.4s \u001b[38;5;248m(100.0%)\u001b[0m \u001b[38;5;102m│\r\n│\u001b[0m \u001b[38;5;248m» Tool Time:\u001b[0m \u001b[38;5;231m0s \u001b[38;5;248m(0.0%)\u001b[0m \u001b[38;5;102m│\r\n│\u001b[0m \u001b[38;5;102m│\r\n│\u001b[0m \u001b[38;5;102m│\r\n│\u001b[0m \u001b[38;5;231;1mModel Usage\u001b[0m \u001b[38;5;102m│\r\n│\u001b[0m \u001b[38;5;248;1mModel\u001b[0m \u001b[38;5;248;1mReqs\u001b[0m \u001b[38;5;248;1mInput Tokens\u001b[0m \u001b[38;5;248;1mCache Reads\u001b[0m \u001b[38;5;248;1mOutput Tokens\u001b[0m \u001b[38;5;102m│\r\n│\u001b[0m \u001b[38;5;102m───────────────────────────────────────────────────────────────────────────────────────────────────────\u001b[0m \u001b[38;5;102m│\r\n\u001b[0m󰖟 Proxy enabled (127.0.0.1:2080)\r\nWARNING: failed to clean up stale arg0 temp dirs: Permission denied (os error 13)\r\n\u001b[2m╭───────────────────────────────────────────────────────────────╮\r\n│ \u001b[36;1;22m✨ Update available!\u001b[0m \u001b[1m0.133.0 -> 0.134.0\u001b[22;2m │\r\n│ \u001b[0mSee \u001b[36;4mhttps://github.com/openai/codex\u001b[0m for installation options.\u001b[2m │\r\n│ │\r\n\r\n╭───────────────────────────────────────────────────╮\r\n│ >_ \u001b[1;22mOpenAI Codex\u001b[22;2m (v0.133.0) │\r\n│ │\r\n│ model: \u001b[0mgpt-5.5 high \u001b[35mfast\u001b[39;2m \u001b[36;22m/model\u001b[39;2m to change │\r\n│ directory: \u001b[0m~/Documents/Vaults/SecondBrain\u001b[2m │\r\n╰───────────────────────────────────────────────────╯\r\n\r\n\u001b[0m \u001b[1mTip:\u001b[0m Use /init to create an AGENTS.md with project-specific guidance.\r\n\r\n\u001b[2m• \u001b[0mService tier set to default\r\n\r\n\u001b[48;5;239m\u001b[109X\r\n\u001b[1;2m› \u001b[22;22mingest\r\n\r\n\u001b[0m\u001b[109X\r\n\u001b[2m• \u001b[0mСначала проверю \u001b[36mINDEX.md\u001b[0m, входящие файлы и доступные шаблоны, затем дам план ingest и остановлюсь на\r\n подтверждении перед правками.\r\n\r\n\u001b[32;1m•\u001b[0m \u001b[1mRan\u001b[0m \u001b[38;2;137;180;250mpwd\r\n\u001b[39;2m └ /home/ada/Documents/Vaults/SecondBrain\r\n\r\n•\u001b[0m \u001b[1mExplored\r\n\u001b[22;2m └ \u001b[36;22mRead\u001b[0m INDEX.md\r\n\r\n\u001b[32;1m•\u001b[0m \u001b[1mRan\u001b[0m \u001b[38;2;137;180;250mrtk\u001b[38;2;205;214;244m ls\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mla\u001b[38;2;205;214;244m 99\u001b[38;2;245;194;231m\\ \u001b[38;2;205;214;244mSystem/Template\r\n\u001b[0m \u001b[2mStudy Item.md 396B\r\n\u001b[0m \u001b[2mTravel Item.md 272B\r\n\r\n\u001b[32;1;22m•\u001b[0m \u001b[1mRan\u001b[0m \u001b[38;2;137;180;250mrtk\u001b[38;2;205;214;244m ls\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mla\u001b[38;2;205;214;244m 00\u001b[38;2;245;194;231m\\ \u001b[38;2;205;214;244mInbox\r\n\u001b[39;2m └ Команды для деплоя с помощью Capistrano.md 1.0K\r\n\u001b[0m \u001b[2mМИАД_Л1.pdf 1.4M\r\n\u001b[0m \u001b[2mМИАД_Л2.pdf 1.2M\r\n\u001b[0m \u001b[2mМИАД_Л3_нечеткий_вывод.pdf 1.6M\r\n\u001b[0m \u001b[2mМИАД_Л4_иерархии.pdf 1.8M\r\n\r\n\u001b[32;1;22m•\u001b[0m \u001b[1mRan\u001b[0m \u001b[38;2;137;180;250mrtk\u001b[38;2;205;214;244m ls\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mla\r\n\u001b[39;2m └ .claude/\r\n\u001b[0m \u001b[2m.git/\r\n … +16 lines (ctrl + t to view transcript)\r\n\u001b[0m \u001b[2mGEMINI.md 329B\r\n\u001b[0m \u001b[2mINDEX.md 71.0K\r\n\r\n─────────────────────────────────────────────────────────────────────────────────────────────────────────────\r\n\r\n• \u001b[0mВ \u001b[36m00 Inbox/\u001b[0m нашёл один markdown по Capistrano и четыре PDF-лекции МИАД. Сейчас быстро проверю содержание и\r\n близкие заметки, чтобы не предложить дубли.\r\n\r\n\u001b[2m•\u001b[0m \u001b[1mExplored\r\n\u001b[22;2m └ \u001b[36;22mRead\u001b[0m Команды для деплоя с помощью Capistrano.md\r\n\r\n\u001b[32;1m•\u001b[0m \u001b[1mRan\u001b[0m \u001b[38;2;137;180;250mrtk\u001b[38;2;205;214;244m read \u001b[38;2;166;227;161m'99 System/Template/Study Item.md'\r\n\u001b[39;2m └ ---\r\n\u001b[0m \u001b[2mtags: []\r\n … +20 lines (ctrl + t to view transcript)\r\n\u001b[0m \u001b[2m## Связанные Ссылки\r\n\u001b[0m \u001b[2m- [[StudyTracker|📁 Трекер обучения]]\r\n\r\n\u001b[32;1;22m•\u001b[0m \u001b[1mRan\u001b[0m \u001b[38;2;137;180;250mrtk\u001b[38;2;205;214;244m read \u001b[38;2;166;227;161m'99 System/Template/Base Note.md'\r\n\u001b[39;2m └ ---\r\n\u001b[0m \u001b[2mstatus: seed\r\n … +4 lines (ctrl + t to view transcript)\r\n\u001b[0m \u001b[2mtitle:\r\n\u001b[0m \u001b[2m---\r\n\r\n\u001b[32;1;22m•\u001b[0m \u001b[1mRan\u001b[0m \u001b[38;2;137;180;250mrtk\u001b[38;2;205;214;244m grep\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mn\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m\"Capistrano|deploy|деплой|МИАД|нечет|иерарх|дискриминант|кластер|фактор\"\u001b[38;2;205;214;244m INDEX.md\r\n\u001b[39;2m └ 17 matches in 1F:\r\n\r\n … +17 lines (ctrl + t to view transcript)\r\n\u001b[0m \u001b[2m 375: | `90 Library/Math/Теория нечетких множеств/Функция принадлежности.md` | Функ...\r\n\r\n\r\n•\u001b[0m \u001b[1mExplored\r\n\u001b[22;2m └ \u001b[36;22mRead\u001b[0m INDEX.md\r\n\r\n\u001b[32;1m•\u001b[0m \u001b[1mRan\u001b[0m \u001b[38;2;137;180;250mpdftotext\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mf\u001b[38;2;205;214;244m 1\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172ml\u001b[38;2;205;214;244m 2\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mlayout\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m'00 Inbox/МИАД_Л1.pdf'\u001b[38;2;205;214;244m -\r\n\u001b[39;2m └ Математические методы в задачах финансового\r\n\u001b[0m \u001b[2mмониторинга\r\n … +19 lines (ctrl + t to view transcript)\r\n\u001b[0m \u001b[2m 2\r\n\u001b[0m \r\n\r\n \u001b[2mмониторинга\r\n … +18 lines (ctrl + t to view transcript)\r\n\u001b[0m \u001b[2m 2\r\n\u001b[0m \r\n\r\n\r\n\u001b[32;1m•\u001b[0m \u001b[1mRan\u001b[0m \u001b[38;2;137;180;250mpdftotext\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mf\u001b[38;2;205;214;244m 1\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172ml\u001b[38;2;205;214;244m 2\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mlayout\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m'00 Inbox/МИАД_Л2.pdf'\u001b[38;2;205;214;244m -\r\n\u001b[39;2m └ Математические методы в задачах финансового\r\n\u001b[0m \u001b[2mмониторинга\r\n … +16 lines (ctrl + t to view transcript)\r\n\u001b[0m \u001b[2m 2\r\n\u001b[0m \r\n\r\n\r\n\u001b[32;1m•\u001b[0m \u001b[1mRan\u001b[0m \u001b[38;2;137;180;250mpdftotext\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mf\u001b[38;2;205;214;244m 1\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172ml\u001b[38;2;205;214;244m 2\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mlayout\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m'00 Inbox/МИАД_Л3_нечеткий_вывод.pdf'\u001b[38;2;205;214;244m -\r\n\u001b[39;2m └ Математические методы в задачах финансового\r\n\u001b[0m \u001b[2mмониторинга\r\n … +14 lines (ctrl + t to view transcript)\r\n\u001b[0m \u001b[2m 2\r\n\u001b[0m \r\n\r\n\r\n\u001b[2m•\u001b[0m \u001b[1mExplored\r\n\u001b[22;2m └ \u001b[36;22mSearch\u001b[0m *.md\u001b[2m in \u001b[0mMath\r\n\r\n\u001b[32;1m•\u001b[0m \u001b[1mRan\u001b[0m \u001b[38;2;137;180;250mrtk\u001b[38;2;205;214;244m grep\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mn\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m\"Capistrano|Puma|puma:install|sudoers|Solid Queue|Sidekiq|deploy\"\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m'90 Library'\u001b[38;2;205;214;244m INDEX.md\r\n\u001b[39;2m └ 9 matches in 4F:\r\n\r\n … +15 lines (ctrl + t to view transcript)\r\n\u001b[0m \u001b[2m 428: | `90 Library/Programming/Ruby On Rails/Sidekiq - основа работы.md` | Sidekiq...\r\n └ 7F 2D:\r\n\r\n\u001b[0m \u001b[2m./ Ruby - массивы.md Ruby - основы языка.md\r\n\u001b[0m \u001b[2mRuby On Rails/ API импорт в Rails через runner.md Active Storage.md Rails credentials edit не открывает\r\n\u001b[0m \u001b[2mредактор.md Ruby On Rails.md Sidekiq - основа работы.md\r\n\r\n\u001b[32;1;22m•\u001b[0m \u001b[1mRan\u001b[0m \u001b[38;2;137;180;250mpdftotext\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mf\u001b[38;2;205;214;244m 1\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172ml\u001b[38;2;205;214;244m 8\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mlayout\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m'00 Inbox/МИАД_Л4_иерархии.pdf'\u001b[38;2;205;214;244m -\r\n\u001b[39;2m └ Математические методы в задачах финансового\r\n\u001b[0m \u001b[2mмониторинга\r\n … +88 lines (ctrl + t to view transcript)\r\n\u001b[0m \u001b[2m 8\r\n\u001b[0m \r\n\r\n\r\n\u001b[32;1m•\u001b[0m \u001b[1mRan\u001b[0m \u001b[38;2;137;180;250mpdftotext\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mf\u001b[38;2;205;214;244m 1\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172ml\u001b[38;2;205;214;244m 8\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mlayout\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m'00 Inbox/МИАД_Л1.pdf'\u001b[38;2;205;214;244m -\r\n\u001b[39;2m └ Математические методы в задачах финансового\r\n\u001b[0m \u001b[2mмониторинга\r\n … +101 lines (ctrl + t to view transcript)\r\n\u001b[0m \u001b[2m 8\r\n\u001b[0m \r\n\r\n\r\n\u001b[2m•\u001b[0m \u001b[1mExplored\r\n\u001b[22;2m └ \u001b[36;22mRead\u001b[0m Sidekiq - основа работы.md\u001b[2m, \u001b[0mRuby On Rails.md\u001b[2m, \u001b[0mТеория нечетких множеств.md\r\n\r\n\u001b[32;1m•\u001b[0m \u001b[1mRan\u001b[0m \u001b[38;2;137;180;250mpdftotext\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mf\u001b[38;2;205;214;244m 1\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172ml\u001b[38;2;205;214;244m 6\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mlayout\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m'00 Inbox/МИАД_Л2.pdf'\u001b[38;2;205;214;244m -\r\n\u001b[39;2m └ Математические методы в задачах финансового\r\n\u001b[0m \u001b[2mмониторинга\r\n … +61 lines (ctrl + t to view transcript)\r\n\u001b[0m \u001b[2mиспользуем 𝑥𝑅𝑦 или (𝑥, 𝑦) ∈ 𝑅. 6\r\n\u001b[0m \r\n\r\n\r\n\u001b[32;1m•\u001b[0m \u001b[1mRan\u001b[0m \u001b[38;2;137;180;250mpdftotext\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mf\u001b[38;2;205;214;244m 1\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172ml\u001b[38;2;205;214;244m 6\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mlayout\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m'00 Inbox/МИАД_Л3_нечеткий_вывод.pdf'\u001b[38;2;205;214;244m -\r\n\u001b[39;2m └ Математические методы в задачах финансового\r\n\u001b[0m \u001b[2mмониторинга\r\n … +58 lines (ctrl + t to view transcript)\r\n\u001b[0m \u001b[2m 6\r\n\u001b[0m \r\n\r\n\r\n\u001b[2m─────────────────────────────────────────────────────────────────────────────────────────────────────────────\r\n\r\n• \u001b[0mПлан ingest, без правок пока:\r\n\r\n \u001b[94m1. \u001b[36m00 Inbox/Команды для деплоя с помощью Capistrano.md\r\n\u001b[0m - Шаблон: \u001b[36mBase Note.md\r\n\u001b[0m - Куда: \u001b[36m90 Library/Programming/Ruby On Rails/Capistrano deploy через systemd.md\r\n\u001b[0m - Связи: \u001b[36m[[Ruby On Rails]]\u001b[0m, \u001b[36m[[Sidekiq - основа работы]]\r\n\u001b[0m - Источник после обработки: \u001b[36m99 System/Archive/\r\n\u001b[0m \u001b[94m2. \u001b[36m00 Inbox/МИАД_Л1.pdf\r\n\u001b[0m - Не создавать дубль: тема уже частично покрыта в \u001b[36m90 Library/Math/Теория нечетких множеств/\r\n\u001b[0m - Дополнить существующие заметки про нечёткое множество, функцию принадлежности, логические операции\r\n - Связи: \u001b[36m[[Теория Нечетких Множеств]]\u001b[0m, \u001b[36m[[Функция принадлежности]]\u001b[0m, \u001b[36m[[Определение нечеткого множества]]\r\n\u001b[0m \u001b[94m3. \u001b[36m00 Inbox/МИАД_Л2.pdf\r\n\u001b[0m - Создать: \u001b[36m90 Library/Math/Теория нечетких множеств/Нечеткие отношения.md\r\n\u001b[0m \u001b[94m4. \u001b[36m00 Inbox/МИАД_Л3_нечеткий_вывод.pdf\r\n\u001b[0m - Создать: \u001b[36m90 Library/Math/Теория нечетких множеств/Нечеткий вывод.md\r\n\u001b[0m - Шаблон: \u001b[36mBase Note.md\r\n\u001b[0m - Связи: \u001b[36m[[Теория Нечетких Множеств]]\u001b[0m, \u001b[36m[[Лингвистическая переменная]]\u001b[0m если будет создана как отдельная\r\n заметка; иначе без неё\r\n \u001b[94m5. \u001b[36m00 Inbox/МИАД_Л4_иерархии.pdf\r\n\u001b[0m После подтверждения:\r\n\r\n - обработаю источники;\r\n - перемещу исходники в \u001b[36m99 System/Archive/\u001b[0m;\r\n - добавлю \u001b[36msource\u001b[0m в frontmatter;\r\n - обновлю \u001b[36mINDEX.md\u001b[0m.\r\n\r\n Подтверди: выполнять этот план?\r\n\r\n\u001b[2m─ Worked for 1m 18s ─────────────────────────────────────────────────────────────────────────────────────────\r\n\r\n\u001b[48;5;239;22m\u001b[109X\r\n\u001b[1;2m› \u001b[22;22mДелай\r\n\r\n\u001b[0m\u001b[109X\r\n\u001b[2m• \u001b[0mПринял. Сначала извлеку текст из PDF во временные файлы и дочитаю релевантные куски, потом внесу точечные\r\n правки и обновлю индекс.\r\n\r\n\u001b[32;1m•\u001b[0m \u001b[1mRan\u001b[0m \u001b[38;2;137;180;250mmkdir\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mp\u001b[38;2;205;214;244m /tmp/secondbrain-ingest\r\n\u001b[39;2m └ (no output)\r\n\r\n•\u001b[0m \u001b[1mExplored\r\n\u001b[22;2m └ \u001b[36;22mRead\u001b[0m Определение нечеткого множества.md\u001b[2m, \u001b[0mФункция принадлежности.md\u001b[2m, \u001b[0mЛогические операции над нечеткими\r\n множествами.md\r\n\r\n\u001b[32;1m•\u001b[0m \u001b[1mRan\u001b[0m \u001b[38;2;137;180;250mrtk\u001b[38;2;205;214;244m ls\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mla\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m'99 System'\r\n\u001b[39;2m └ Archive/\r\n\u001b[0m \u001b[2mCache/\r\n\u001b[0m \u001b[2mTemplate/\r\n\r\n─────────────────────────────────────────────────────────────────────────────────────────────────────────────\r\n\r\n• \u001b[0mПо содержанию видно, что Л1 пересекается с уже существующими заметками; там достаточно дозаполнить \u001b[36msource\u001b[0m и\r\n пару недостающих тезисов, а новые отдельные заметки нужны для отношений, вывода и МАИ.\r\n\r\n\u001b[32;1m•\u001b[0m \u001b[1mRan\u001b[0m \u001b[38;2;137;180;250mpdftotext\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mlayout\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m'00 Inbox/МИАД_Л2.pdf'\u001b[38;2;205;214;244m /tmp/secondbrain-ingest/miad_l2.txt\r\n\u001b[39;2m └ (no output)\r\n\r\n\u001b[32;1;22m•\u001b[0m \u001b[1mRan\u001b[0m \u001b[38;2;137;180;250mpdftotext\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mlayout\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m'00 Inbox/МИАД_Л1.pdf'\u001b[38;2;205;214;244m /tmp/secondbrain-ingest/miad_l1.txt\r\n\u001b[39;2m └ (no output)\r\n\r\n\u001b[32;1;22m•\u001b[0m \u001b[1mRan\u001b[0m \u001b[38;2;137;180;250mpdftotext\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mlayout\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m'00 Inbox/МИАД_Л3_нечеткий_вывод.pdf'\u001b[38;2;205;214;244m /tmp/secondbrain-ingest/miad_l3.txt\r\n\u001b[39;2m └ (no output)\r\n\r\n\u001b[32;1;22m•\u001b[0m \u001b[1mRan\u001b[0m \u001b[38;2;137;180;250mpdftotext\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mlayout\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m'00 Inbox/МИАД_Л4_иерархии.pdf'\u001b[38;2;205;214;244m /tmp/secondbrain-ingest/miad_l4.txt\r\n\u001b[39;2m └ (no output)\r\n\r\n\u001b[32;1;22m•\u001b[0m \u001b[1mRan\u001b[0m \u001b[38;2;137;180;250mrtk\u001b[38;2;205;214;244m grep\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mn\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m\"Содержание|Этап|парн|Саати|приоритет|согласован|индекс|альтернатив|матриц|собствен\"\u001b[38;2;205;214;244m /tmp/\r\n\u001b[39;2m │ \u001b[38;2;205;214;244;22msecondbrain-ingest/miad_l4.txt\r\n\u001b[39;2m └ 110 matches in 18F:\r\n\r\n … +78 lines (ctrl + t to view transcript)\r\n\r\n\u001b[0m \u001b[2m... +68\r\n └ 23 matches in 2F:\r\n\r\n … +25 lines (ctrl + t to view transcript)\r\n\u001b[0m \u001b[2m 0:\r\n\r\n\r\n\u001b[32;1;22m•\u001b[0m \u001b[1mRan\u001b[0m \u001b[38;2;137;180;250mrtk\u001b[38;2;205;214;244m grep\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mn\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m\"Содержание|Терминология|Алгебраические|оператор|преимуществ|Недостатки|Теорема|прям|\r\n\u001b[39;2m │ \u001b[38;2;166;227;161;22mкосвен\"\u001b[38;2;205;214;244m /tmp/secondbrain-ingest/miad_l1.txt\r\n\u001b[39;2m └ 38 matches in 4F:\r\n\r\n … +36 lines (ctrl + t to view transcript)\r\n\r\n\u001b[0m \u001b[2m... +10\r\n\r\n\u001b[32;1;22m•\u001b[0m \u001b[1mRan\u001b[0m \u001b[38;2;137;180;250mrtk\u001b[38;2;205;214;244m grep\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mn\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m\"Содержание|Лингвист|нечетк.*перем|продукц|Мамдани|Сугено|этап|дефаз|фаз|импликац|вывод\"\u001b[38;2;205;214;244m /\r\n\u001b[39;2m │ \u001b[38;2;205;214;244;22mtmp/secondbrain-ingest/miad_l3.txt\r\n\u001b[39;2m └ 66 matches in 4F:\r\n\r\n … +36 lines (ctrl + t to view transcript)\r\n\r\n\u001b[0m \u001b[2m... +38\r\n\r\n•\u001b[0m \u001b[1mExplored\r\n\u001b[22;2m └ \u001b[36;22mRead\u001b[0m miad_l1.txt\u001b[2m, \u001b[0mmiad_l4.txt\u001b[2m, \u001b[0mmiad_l2.txt\u001b[2m, \u001b[0mmiad_l3.txt\r\n\r\n\u001b[2m─────────────────────────────────────────────────────────────────────────────────────────────────────────────\r\n\r\n• \u001b[0mСейчас внесу изменения: создам 4 новые заметки, дозаполню 3 существующие по Л1, добавлю новые ссылки в MOC\r\n и Rails MOC. Затем перемещу источники и пересоберу \u001b[36mINDEX.md\u001b[0m.\r\n\r\n\u001b[2m• \u001b[1;22mEdited\u001b[0m 9 files (\u001b[32m+341\u001b[0m \u001b[31m-12\u001b[0m)\r\n\u001b[2m └ \u001b[0m90 Library/Math/Метод анализа иерархий.md (\u001b[32m+82\u001b[0m \u001b[31m-0\u001b[0m)\r\n\u001b[48;5;22m \u001b[2m 1 \u001b[32;22m+\u001b[38;2;147;153;178m---\u001b[98X\r\n\u001b[39m \u001b[2m 2 \u001b[32;22m+\u001b[38;2;205;214;244mstatus: seed\r\n\u001b[39m \u001b[2m 3 \u001b[32;22m+\u001b[38;2;205;214;244mtype: concept\r\n\u001b[39m \u001b[2m 4 \u001b[32;22m+\u001b[38;2;205;214;244mtags:\r\n\u001b[39m \u001b[2m 5 \u001b[32;22m+\u001b[38;2;205;214;244m \u001b[38;2;147;153;178m-\u001b[38;2;205;214;244m math\r\n\u001b[39m \u001b[2m 6 \u001b[32;22m+\u001b[38;2;205;214;244m \u001b[38;2;147;153;178m-\u001b[38;2;205;214;244m mephi\r\n\u001b[39m \u001b[2m 7 \u001b[32;22m+\u001b[38;2;205;214;244m \u001b[38;2;147;153;178m-\u001b[38;2;205;214;244m decision-making\r\n\u001b[39m \u001b[2m 8 \u001b[32;22m+\u001b[38;2;205;214;244mcreated: 2026-05-29\r\n\u001b[39m \u001b[2m 9 \u001b[32;22m+\u001b[38;2;205;214;244mupdated: 2026-05-29\r\n\u001b[39m \u001b[2m10 \u001b[32;22m+\u001b[38;2;205;214;244mtitle: Метод анализа иерархий\r\n\u001b[39m \u001b[2m11 \u001b[32;22m+\u001b[38;2;205;214;244msource: \"[[МИАД_Л4_иерархии.pdf]]\"\r\n\u001b[39m \u001b[2m12 \u001b[32;22m+\u001b[38;2;147;153;178m---\r\n\u001b[39m \u001b[2m13 \u001b[32;22m+\r\n\u001b[39m \u001b[2m14 \u001b[32;22m+\u001b[38;2;147;153;178m#\u001b[38;2;243;139;168m \u001b[38;2;148;226;213mМетод анализа иерархий\r\n\u001b[39m \u001b[2m15 \u001b[32;22m+\r\n\u001b[39m \u001b[2m16 \u001b[32;22m+\u001b[38;2;205;214;244mМетод анализа иерархий (МАИ) используется для выбора лучшей альтернативы при нескольких критериях, в\r\n\u001b[39m \u001b[2m \u001b[38;2;205;214;244;22mтом числе разнородных и качественных.\r\n\u001b[39m \u001b[2m17 \u001b[32;22m+\r\n\u001b[39m \u001b[2m18 \u001b[32;22m+\u001b[38;2;147;153;178m##\u001b[38;2;250;179;135m \u001b[38;2;148;226;213mИдея\r\n\u001b[39m \u001b[2m19 \u001b[32;22m+\r\n\u001b[39m \u001b[2m20 \u001b[32;22m+\u001b[38;2;205;214;244mЗадача выбора раскладывается на иерархию:\r\n\u001b[39m \u001b[2m21 \u001b[32;22m+\u001b[38;2;147;153;178m-\u001b[38;2;205;214;244m цель;\r\n\u001b[39m \u001b[2m22 \u001b[32;22m+\u001b[38;2;147;153;178m-\u001b[38;2;205;214;244m критерии и подцели;\r\n\u001b[39m \u001b[2m23 \u001b[32;22m+\u001b[38;2;147;153;178m-\u001b[38;2;205;214;244m альтернативы.\r\n\u001b[39m \u001b[2m24 \u001b[32;22m+\r\n\u001b[39m \u001b[2m25 \u001b[32;22m+\u001b[38;2;205;214;244mЗатем элементы каждого уровня попарно сравниваются по влиянию на элемент верхнего уровня.\r\n\u001b[39m \u001b[2m26 \u001b[32;22m+\r\n\u001b[39m \u001b[2m27 \u001b[32;22m+\u001b[38;2;147;153;178m##\u001b[38;2;250;179;135m \u001b[38;2;148;226;213mШкала Саати\r\n\u001b[39m \u001b[2m28 \u001b[32;22m+\r\n\u001b[39m \u001b[2m29 \u001b[32;22m+\u001b[38;2;205;214;244mПопарные сравнения обычно задаются 9-балльной шкалой:\r\n\u001b[39m \u001b[2m30 \u001b[32;22m+\u001b[38;2;147;153;178m-\u001b[38;2;205;214;244m \u001b[38;2;147;153;178m`\u001b[38;2;205;214;244m1\u001b[38;2;147;153;178m`\u001b[38;2;205;214;244m — нет преимущества;\r\n\u001b[39m \u001b[2m31 \u001b[32;22m+\u001b[38;2;147;153;178m-\u001b[38;2;205;214;244m \u001b[38;2;147;153;178m`\u001b[38;2;205;214;244m3\u001b[38;2;147;153;178m`\u001b[38;2;205;214;244m — слабое преимущество;\r\n\u001b[39m \u001b[2m32 \u001b[32;22m+\u001b[38;2;147;153;178m-\u001b[38;2;205;214;244m \u001b[38;2;147;153;178m`\u001b[38;2;205;214;244m5\u001b[38;2;147;153;178m`\u001b[38;2;205;214;244m — существенное преимущество;\r\n\u001b[39m \u001b[2m33 \u001b[32;22m+\u001b[38;2;147;153;178m-\u001b[38;2;205;214;244m \u001b[38;2;147;153;178m`\u001b[38;2;205;214;244m7\u001b[38;2;147;153;178m`\u001b[38;2;205;214;244m — явное преимущество;\r\n\u001b[39m \u001b[2m34 \u001b[32;22m+\u001b[38;2;147;153;178m-\u001b[38;2;205;214;244m \u001b[38;2;147;153;178m`\u001b[38;2;205;214;244m9\u001b[38;2;147;153;178m`\u001b[38;2;205;214;244m — абсолютное преимущество;\r\n\u001b[39m \u001b[2m35 \u001b[32;22m+\u001b[38;2;147;153;178m-\u001b[38;2;205;214;244m \u001b[38;2;147;153;178m`\u001b[38;2;205;214;244m2\u001b[38;2;147;153;178m`\u001b[38;2;205;214;244m, \u001b[38;2;147;153;178m`\u001b[38;2;205;214;244m4\u001b[38;2;147;153;178m`\u001b[38;2;205;214;244m, \u001b[38;2;147;153;178m`\u001b[38;2;205;214;244m6\u001b[38;2;147;153;178m`\u001b[38;2;205;214;244m, \u001b[38;2;147;153;178m`\u001b[38;2;205;214;244m8\u001b[38;2;147;153;178m`\u001b[38;2;205;214;244m — промежуточные оценки;\r\n\u001b[39m \u001b[2m36 \u001b[32;22m+\u001b[38;2;147;153;178m-\u001b[38;2;205;214;244m обратные значения — преимущество в обратную сторону.\r\n\u001b[39m \u001b[2m37 \u001b[32;22m+\r\n\u001b[39m \u001b[2m38 \u001b[32;22m+\u001b[38;2;205;214;244mМатрица сравнений обратно-симметрична:\r\n\u001b[39m \u001b[2m39 \u001b[32;22m+\r\n\u001b[39m \u001b[2m40 \u001b[32;22m+\u001b[38;2;205;214;244m$$a_{ij} = \\frac{1}{a_{ji}}$$\r\n\u001b[39m \u001b[2m41 \u001b[32;22m+\r\n\u001b[39m \u001b[2m42 \u001b[32;22m+\u001b[38;2;147;153;178m##\u001b[38;2;250;179;135m \u001b[38;2;148;226;213mЭтапы\r\n\u001b[39m \u001b[2m43 \u001b[32;22m+\r\n\u001b[39m \u001b[2m44 \u001b[32;22m+\u001b[38;2;205;214;244m1\u001b[38;2;147;153;178m.\u001b[38;2;205;214;244m Описать проблему и цель.\r\n\u001b[39m \u001b[2m45 \u001b[32;22m+\u001b[38;2;205;214;244m2\u001b[38;2;147;153;178m.\u001b[38;2;205;214;244m Построить иерархию критериев и альтернатив.\r\n\u001b[39m \u001b[2m46 \u001b[32;22m+\u001b[38;2;205;214;244m3\u001b[38;2;147;153;178m.\u001b[38;2;205;214;244m Построить матрицы попарных сравнений.\r\n\u001b[39m \u001b[2m47 \u001b[32;22m+\u001b[38;2;205;214;244m4\u001b[38;2;147;153;178m.\u001b[38;2;205;214;244m Вычислить локальные приоритеты.\r\n\u001b[39m \u001b[2m48 \u001b[32;22m+\u001b[38;2;205;214;244m5\u001b[38;2;147;153;178m.\u001b[38;2;205;214;244m Проверить согласованность матриц.\r\n\u001b[39m \u001b[2m49 \u001b[32;22m+\u001b[38;2;205;214;244m6\u001b[38;2;147;153;178m.\u001b[38;2;205;214;244m Повторить сравнения для всех уровней.\r\n\u001b[39m \u001b[2m50 \u001b[32;22m+\u001b[38;2;205;214;244m7\u001b[38;2;147;153;178m.\u001b[38;2;205;214;244m Синтезировать глобальные приоритеты альтернатив.\r\n\u001b[39m \u001b[2m51 \u001b[32;22m+\u001b[38;2;205;214;244m8\u001b[38;2;147;153;178m.\u001b[38;2;205;214;244m Оценить согласованность всей иерархии.\r\n\u001b[39m \u001b[2m52 \u001b[32;22m+\r\n\u001b[39m \u001b[2m53 \u001b[32;22m+\u001b[38;2;147;153;178m##\u001b[38;2;250;179;135m \u001b[38;2;148;226;213mЛокальные приоритеты\r\n\u001b[39m \u001b[2m54 \u001b[32;22m+\r\n\u001b[39m \u001b[2m55 \u001b[32;22m+\u001b[38;2;205;214;244mДля матрицы попарных сравнений веса можно приближённо вычислить как среднее геометрическое строк:\r\n\u001b[39m \u001b[2m56 \u001b[32;22m+\r\n\u001b[39m \u001b[2m57 \u001b[32;22m+\u001b[38;2;205;214;244m$$w_j = \\sqrt[n]{\\prod_{l=1}^{n} a_{jl}}$$\r\n\u001b[39m \u001b[2m58 \u001b[32;22m+\r\n\u001b[39m \u001b[2m59 \u001b[32;22m+\u001b[38;2;205;214;244mПосле этого веса нормируются, чтобы получить вектор приоритетов.\r\n\u001b[39m \u001b[2m60 \u001b[32;22m+\r\n\u001b[39m \u001b[2m61 \u001b[32;22m+\u001b[38;2;147;153;178m##\u001b[38;2;250;179;135m \u001b[38;2;148;226;213mСогласованность\r\n\u001b[39m \u001b[2m62 \u001b[32;22m+\r\n\u001b[39m \u001b[2m63 \u001b[32;22m+\u001b[38;2;205;214;244mПолностью согласованная матрица обладает транзитивностью:\r\n\u001b[39m \u001b[2m64 \u001b[32;22m+\r\n\u001b[39m \u001b[2m65 \u001b[32;22m+\u001b[38;2;205;214;244m$$a_{ij} = a_{ik}a_{kj}$$\r\n\u001b[39m \u001b[2m66 \u001b[32;22m+\r\n\u001b[39m \u001b[2m67 \u001b[32;22m+\u001b[38;2;205;214;244mНа практике экспертные суждения обычно не полностью согласованы, поэтому считают индекс согласованнос\r\n\u001b[39m \u001b[2m \u001b[38;2;205;214;244;22mти:\r\n\u001b[39m \u001b[2m68 \u001b[32;22m+\r\n\u001b[39m \u001b[2m69 \u001b[32;22m+\u001b[38;2;205;214;244m$$CI = \\frac{\\lambda_{max} - n}{n - 1}$$\r\n\u001b[39m \u001b[2m70 \u001b[32;22m+\r\n\u001b[39m \u001b[2m71 \u001b[32;22m+\u001b[38;2;205;214;244mИ отношение согласованности:\r\n\u001b[39m \u001b[2m72 \u001b[32;22m+\r\n\u001b[39m \u001b[2m73 \u001b[32;22m+\u001b[38;2;205;214;244m$$CR = \\frac{CI}{RI}$$\r\n\u001b[39m \u001b[2m74 \u001b[32;22m+\r\n\u001b[39m \u001b[2m75 \u001b[32;22m+\u001b[38;2;205;214;244mОбычно приемлемым считают $CR \\le 10\\%$.\r\n\u001b[39m \u001b[2m76 \u001b[32;22m+\r\n\u001b[39m \u001b[2m77 \u001b[32;22m+\u001b[38;2;147;153;178m##\u001b[38;2;250;179;135m \u001b[38;2;148;226;213mРезультат\r\n\u001b[39m \u001b[2m78 \u001b[32;22m+\r\n\u001b[39m \u001b[2m79 \u001b[32;22m+\u001b[38;2;205;214;244mИтог МАИ — глобальные приоритеты альтернатив. Чем выше приоритет, тем предпочтительнее альтернатива в\r\n\u001b[39m \u001b[2m \u001b[38;2;205;214;244;22m рамках построенной иерархической модели.\r\n\u001b[39m \u001b[2m80 \u001b[32;22m+\r\n\u001b[39m \u001b[2m81 \u001b[32;22m+\u001b[38;2;147;153;178m##\u001b[38;2;250;179;135m \u001b[38;2;148;226;213mСвязанные заметки\r\n\u001b[39m \u001b[2m82 \u001b[32;22m+\u001b[38;2;147;153;178m-\u001b[38;2;205;214;244m [[Функция принадлежности]]\r\n\u001b[0m\u001b[109X\r\n\u001b[2m └ \u001b[0m90 Library/Math/Теория нечетких множеств/Логические операции над нечеткими множествами.md (\u001b[32m+58\u001b[0m \u001b[31m-3\u001b[0m)\r\n \u001b[2m 1 \u001b[0m \u001b[38;2;147;153;178m---\r\n\u001b[39;48;5;52m \u001b[2m 2 \u001b[31;22m-\u001b[38;2;205;214;244;2mstatus: seed\u001b[89X\r\n\u001b[39;48;5;22;22m \u001b[2m 2 \u001b[32;22m+\u001b[38;2;205;214;244mstatus: processing\u001b[83X\r\n\u001b[0m \u001b[2m 3 \u001b[0m \u001b[38;2;205;214;244mtype: concept\u001b[88X\r\n\u001b[0m \u001b[2m ⋮\r\n\u001b[0m \u001b[2m 5 \u001b[0m \u001b[38;2;205;214;244m \u001b[38;2;147;153;178m-\u001b[38;2;205;214;244m math\r\n\u001b[39;48;5;22m \u001b[2m 6 \u001b[32;22m+\u001b[38;2;205;214;244m \u001b[38;2;147;153;178m-\u001b[38;2;205;214;244m mephi\u001b[92X\r\n\u001b[0m \u001b[2m 7 \u001b[0m \u001b[38;2;205;214;244m \u001b[38;2;147;153;178m-\u001b[38;2;205;214;244m fuzzy-sets\u001b[87X\r\n\u001b[0m \u001b[2m 8 \u001b[0m \u001b[38;2;205;214;244mcreated: 2025-12-17\r\n\u001b[39;48;5;52m \u001b[2m 8 \u001b[31;22m-\u001b[38;2;205;214;244;2mupdated: 2026-05-07\u001b[82X\r\n\u001b[39;48;5;22;22m \u001b[2m 9 \u001b[32;22m+\u001b[38;2;205;214;244mupdated: 2026-05-29\u001b[82X\r\n\u001b[0m \u001b[2m10 \u001b[0m \u001b[38;2;205;214;244mtitle: Логические операции над нечеткими множествами\u001b[49X\r\n\u001b[39;48;5;22m \u001b[2m11 \u001b[32;22m+\u001b[38;2;205;214;244msource: \"[[МИАД_Л1.pdf]]\"\u001b[76X\r\n\u001b[0m \u001b[2m12 \u001b[0m \u001b[38;2;147;153;178m---\u001b[98X\r\n\u001b[0m \u001b[2m ⋮\r\n\u001b[0m \u001b[2m41\r\n\u001b[48;5;22;22m \u001b[2m42 \u001b[32;22m+\u001b[38;2;147;153;178m##\u001b[38;2;250;179;135m \u001b[38;2;148;226;213mДизъюнктивная сумма\u001b[79X\r\n\u001b[39m \u001b[2m43 \u001b[32;22m+\r\n\u001b[39m \u001b[2m44 \u001b[32;22m+\u001b[38;2;205;214;244mДизъюнктивная сумма:\r\n\u001b[39m \u001b[2m45 \u001b[32;22m+\r\n\u001b[39m \u001b[2m46 \u001b[32;22m+\u001b[38;2;205;214;244m$$A \\oplus B = (A \\cap \\overline{B}) \\cup (\\overline{A} \\cap B)$$\r\n\u001b[39m \u001b[2m47 \u001b[32;22m+\r\n\u001b[39m \u001b[2m48 \u001b[32;22m+\u001b[38;2;205;214;244m$$\\mu_{A \\oplus B}(u) = \\max(\\min(\\mu_A(u), 1 - \\mu_B(u)), \\min(1 - \\mu_A(u), \\mu_B(u)))$$\r\n\u001b[39m \u001b[2m49 \u001b[32;22m+\r\n\u001b[39m \u001b[2m50 \u001b[32;22m+\u001b[38;2;147;153;178m##\u001b[38;2;250;179;135m \u001b[38;2;148;226;213mСвойства\r\n\u001b[39m \u001b[2m51 \u001b[32;22m+\r\n\u001b[39m \u001b[2m52 \u001b[32;22m+\u001b[38;2;205;214;244mДля конъюнкции и дизъюнкции выполняются:\r\n\u001b[39m \u001b[2m53 \u001b[32;22m+\u001b[38;2;147;153;178m-\u001b[38;2;205;214;244m коммутативность;\r\n\u001b[39m \u001b[2m54 \u001b[32;22m+\u001b[38;2;147;153;178m-\u001b[38;2;205;214;244m ассоциативность;\r\n\u001b[39m \u001b[2m55 \u001b[32;22m+\u001b[38;2;147;153;178m-\u001b[38;2;205;214;244m идемпотентность;\r\n\u001b[39m \u001b[2m56 \u001b[32;22m+\u001b[38;2;147;153;178m-\u001b[38;2;205;214;244m дистрибутивность;\r\n\u001b[39m \u001b[2m57 \u001b[32;22m+\u001b[38;2;147;153;178m-\u001b[38;2;205;214;244m инволюция;\r\n\u001b[39m \u001b[2m58 \u001b[32;22m+\u001b[38;2;147;153;178m-\u001b[38;2;205;214;244m законы де Моргана.\r\n\u001b[39m \u001b[2m59 \u001b[32;22m+\r\n\u001b[39m \u001b[2m60 \u001b[32;22m+\u001b[38;2;205;214;244mНе выполняются классические свойства дополнения:\r\n\u001b[39m \u001b[2m61 \u001b[32;22m+\r\n\u001b[39m \u001b[2m62 \u001b[32;22m+\u001b[38;2;205;214;244m$$A \\cup \\overline{A} \\ne U$$\r\n\u001b[39m \u001b[2m63 \u001b[32;22m+\r\n\u001b[39m \u001b[2m64 \u001b[32;22m+\u001b[38;2;205;214;244m$$A \\cap \\overline{A} \\ne \\varnothing$$\r\n\u001b[39m \u001b[2m65 \u001b[32;22m+\r\n\u001b[39m \u001b[2m66 \u001b[32;22m+\u001b[38;2;147;153;178m##\u001b[38;2;250;179;135m \u001b[38;2;148;226;213mАлгебраические операции\r\n\u001b[39m \u001b[2m67 \u001b[32;22m+\r\n\u001b[39m \u001b[2m68 \u001b[32;22m+\u001b[38;2;205;214;244mАлгебраическое произведение:\r\n\u001b[39m \u001b[2m69 \u001b[32;22m+\r\n\u001b[39m \u001b[2m70 \u001b[32;22m+\u001b[38;2;205;214;244m$$\\mu_{A \\cdot B}(u) = \\mu_A(u)\\mu_B(u)$$\r\n\u001b[39m \u001b[2m71 \u001b[32;22m+\r\n\u001b[39m \u001b[2m72 \u001b[32;22m+\u001b[38;2;205;214;244mАлгебраическая сумма:\r\n\u001b[39m \u001b[2m73 \u001b[32;22m+\r\n\u001b[39m \u001b[2m74 \u001b[32;22m+\u001b[38;2;205;214;244m$$\\mu_{A + B}(u) = \\mu_A(u) + \\mu_B(u) - \\mu_A(u)\\mu_B(u)$$\r\n\u001b[39m \u001b[2m75 \u001b[32;22m+\r\n\u001b[39m \u001b[2m76 \u001b[32;22m+\u001b[38;2;205;214;244mСтепень нечеткого множества:\r\n\u001b[39m \u001b[2m77 \u001b[32;22m+\r\n\u001b[39m \u001b[2m78 \u001b[32;22m+\u001b[38;2;205;214;244m$$\\mu_{A^\\alpha}(u) = \\mu_A^\\alpha(u)$$\r\n\u001b[39m \u001b[2m79 \u001b[32;22m+\r\n\u001b[39m \u001b[2m80 \u001b[32;22m+\u001b[38;2;205;214;244mПри $\\alpha = 2$ получается концентрирование, при $\\alpha = 0.5$ — растяжение.\r\n\u001b[39m \u001b[2m81 \u001b[32;22m+\r\n\u001b[39m \u001b[2m82 \u001b[32;22m+\u001b[38;2;147;153;178m##\u001b[38;2;250;179;135m \u001b[38;2;148;226;213mНечеткие операторы\r\n\u001b[39m \u001b[2m83 \u001b[32;22m+\r\n\u001b[39m \u001b[2m84 \u001b[32;22m+\u001b[38;2;205;214;244mОперации объединения, пересечения и отрицания можно обобщать разными способами.\r\n\u001b[39m \u001b[2m85 \u001b[32;22m+\r\n\u001b[39m \u001b[2m86 \u001b[32;22m+\u001b[38;2;205;214;244mТреугольная норма — обобщение конъюнкции. Примеры: минимум, алгебраическое произведение, t-норма Лука\r\n\u001b[39m \u001b[2m \u001b[38;2;205;214;244;22mсевича.\r\n\u001b[39m \u001b[2m87 \u001b[32;22m+\r\n\u001b[39m \u001b[2m88 \u001b[32;22m+\u001b[38;2;205;214;244mТреугольная конорма — обобщение дизъюнкции. Примеры: максимум, алгебраическая сумма, t-конорма Лукасе\r\n\u001b[39m \u001b[2m \u001b[38;2;205;214;244;22mвича.\r\n\u001b[39m \u001b[2m89 \u001b[32;22m+\r\n\u001b[39m \u001b[2m90 \u001b[32;22m+\u001b[38;2;205;214;244mОсновные пары операций:\r\n\u001b[39m \u001b[2m91 \u001b[32;22m+\u001b[38;2;147;153;178m-\u001b[38;2;205;214;244m логика Заде — \u001b[38;2;147;153;178m`\u001b[38;2;205;214;244mmin\u001b[38;2;147;153;178m`\u001b[38;2;205;214;244m и \u001b[38;2;147;153;178m`\u001b[38;2;205;214;244mmax\u001b[38;2;147;153;178m`\u001b[38;2;205;214;244m;\r\n\u001b[39m \u001b[2m92 \u001b[32;22m+\u001b[38;2;147;153;178m-\u001b[38;2;205;214;244m вероятностная логика — алгебраическое произведение и алгебраическая сумма;\r\n\u001b[39m \u001b[2m93 \u001b[32;22m+\u001b[38;2;147;153;178m-\u001b[38;2;205;214;244m логика Лукасевича — t-норма и t-конорма Лукасевича.\r\n\u001b[39m \u001b[2m94 \u001b[32;22m+\r\n\u001b[0m \u001b[2m95 \u001b[0m \u001b[38;2;147;153;178m##\u001b[38;2;250;179;135m \u001b[38;2;148;226;213mСвязанные заметки\u001b[81X\r\n\u001b[0m \u001b[2m ⋮\r\n\u001b[0m \u001b[2m97 \u001b[0m \u001b[38;2;147;153;178m-\u001b[38;2;205;214;244m [[Функция принадлежности]] — операции определены через μ\r\n\u001b[39;48;5;52m \u001b[2m43 \u001b[31;22m-\u001b[101X\r\n\u001b[39;48;5;22m \u001b[2m98 \u001b[32;22m+\u001b[38;2;147;153;178m-\u001b[38;2;205;214;244m [[Нечеткий вывод]] — разные импликации используют разные операции над функциями принадлежности\u001b[5X\r\n\u001b[0m\u001b[109X\r\n\u001b[2m └ \u001b[0m90 Library/Math/Теория нечетких множеств/Нечеткие отношения.md (\u001b[32m+61\u001b[0m \u001b[31m-0\u001b[0m)\r\n\u001b[48;5;22m \u001b[2m 1 \u001b[32;22m+\u001b[38;2;147;153;178m---\u001b[98X\r\n\u001b[39m \u001b[2m 2 \u001b[32;22m+\u001b[38;2;205;214;244mstatus: seed\r\n\u001b[39m \u001b[2m 3 \u001b[32;22m+\u001b[38;2;205;214;244mtype: concept\r\n\u001b[39m \u001b[2m 4 \u001b[32;22m+\u001b[38;2;205;214;244mtags:\r\n\u001b[39m \u001b[2m 5 \u001b[32;22m+\u001b[38;2;205;214;244m \u001b[38;2;147;153;178m-\u001b[38;2;205;214;244m math\r\n\u001b[39m \u001b[2m 6 \u001b[32;22m+\u001b[38;2;205;214;244m \u001b[38;2;147;153;178m-\u001b[38;2;205;214;244m mephi\r\n\u001b[39m \u001b[2m 7 \u001b[32;22m+\u001b[38;2;205;214;244m \u001b[38;2;147;153;178m-\u001b[38;2;205;214;244m fuzzy-sets\r\n\u001b[39m \u001b[2m 8 \u001b[32;22m+\u001b[38;2;205;214;244mcreated: 2026-05-29\r\n\u001b[39m \u001b[2m 9 \u001b[32;22m+\u001b[38;2;205;214;244mupdated: 2026-05-29\r\n\u001b[39m \u001b[2m10 \u001b[32;22m+\u001b[38;2;205;214;244mtitle: Нечеткие отношения\r\n\u001b[39m \u001b[2m11 \u001b[32;22m+\u001b[38;2;205;214;244msource: \"[[МИАД_Л2.pdf]]\"\r\n\u001b[39m \u001b[2m12 \u001b[32;22m+\u001b[38;2;147;153;178m---\r\n\u001b[39m \u001b[2m13 \u001b[32;22m+\r\n\u001b[39m \u001b[2m14 \u001b[32;22m+\u001b[38;2;147;153;178m#\u001b[38;2;243;139;168m \u001b[38;2;148;226;213mНечеткие отношения\r\n\u001b[39m \u001b[2m15 \u001b[32;22m+\r\n\u001b[39m \u001b[2m16 \u001b[32;22m+\u001b[38;2;205;214;244mНечеткое отношение $R$ на универсальном множестве $U = U_1 \\times U_2$ — это нечеткое подмножество де\r\n\u001b[39m \u001b[2m \u001b[38;2;205;214;244;22mкартова произведения с функцией принадлежности:\r\n\u001b[39m \u001b[2m17 \u001b[32;22m+\r\n\u001b[39m \u001b[2m18 \u001b[32;22m+\u001b[38;2;205;214;244m$$\\mu_R(x, y): U_1 \\times U_2 \\to [0, 1]$$\r\n\u001b[39m \u001b[2m19 \u001b[32;22m+\r\n\u001b[39m \u001b[2m20 \u001b[32;22m+\u001b[38;2;205;214;244mЗначение $\\mu_R(x, y)$ трактуется как субъективная мера выполнения отношения $xRy$.\r\n\u001b[39m \u001b[2m21 \u001b[32;22m+\r\n\u001b[39m \u001b[2m22 \u001b[32;22m+\u001b[38;2;147;153;178m##\u001b[38;2;250;179;135m \u001b[38;2;148;226;213mОтличие от четкого отношения\r\n\u001b[39m \u001b[2m23 \u001b[32;22m+\r\n\u001b[39m \u001b[2m24 \u001b[32;22m+\u001b[38;2;205;214;244mЧеткое бинарное отношение отвечает на вопрос «связаны элементы или нет». Нечеткое отношение показывае\r\n\u001b[39m \u001b[2m \u001b[38;2;205;214;244;22mт силу связи: например, вес дуги во взвешенном графе.\r\n\u001b[39m \u001b[2m25 \u001b[32;22m+\r\n\u001b[39m \u001b[2m26 \u001b[32;22m+\u001b[38;2;205;214;244mПримеры:\r\n\u001b[39m \u001b[2m27 \u001b[32;22m+\u001b[38;2;147;153;178m-\u001b[38;2;205;214;244m «$x$ и $y$ близкие числа»;\r\n\u001b[39m \u001b[2m28 \u001b[32;22m+\u001b[38;2;147;153;178m-\u001b[38;2;205;214;244m «$x$ намного больше $y$»;\r\n\u001b[39m \u001b[2m29 \u001b[32;22m+\u001b[38;2;147;153;178m-\u001b[38;2;205;214;244m качественные связи между объектами системы, где простое да/нет теряет информацию.\r\n\u001b[39m \u001b[2m30 \u001b[32;22m+\r\n\u001b[39m \u001b[2m31 \u001b[32;22m+\u001b[38;2;147;153;178m##\u001b[38;2;250;179;135m \u001b[38;2;148;226;213mСпособы задания\r\n\u001b[39m \u001b[2m32 \u001b[32;22m+\r\n\u001b[39m \u001b[2m33 \u001b[32;22m+\u001b[38;2;205;214;244mДля конечных универсумов отношение удобно задавать матрицей: строки соответствуют элементам $U_1$, ст\r\n\u001b[39m \u001b[2m \u001b[38;2;205;214;244;22mолбцы — элементам $U_2$, значения ячеек — степеням принадлежности.\r\n\u001b[39m \u001b[2m34 \u001b[32;22m+\r\n\u001b[39m \u001b[2m35 \u001b[32;22m+\u001b[38;2;205;214;244mДля счетных или конечных множеств отношение также можно интерпретировать как взвешенный граф.\r\n\u001b[39m \u001b[2m36 \u001b[32;22m+\r\n\u001b[39m \u001b[2m37 \u001b[32;22m+\u001b[38;2;147;153;178m##\u001b[38;2;250;179;135m \u001b[38;2;148;226;213mОперации\r\n\u001b[39m \u001b[2m38 \u001b[32;22m+\r\n\u001b[39m \u001b[2m39 \u001b[32;22m+\u001b[38;2;205;214;244mНа нечеткие отношения переносятся операции для [[Логические операции над нечеткими множествами|нечетк\r\n\u001b[39m \u001b[2m \u001b[38;2;205;214;244;22mих множеств]]:\r\n\u001b[39m \u001b[2m40 \u001b[32;22m+\u001b[38;2;147;153;178m-\u001b[38;2;205;214;244m носитель: пары, для которых $\\mu_R(x, y) > 0$;\r\n\u001b[39m \u001b[2m41 \u001b[32;22m+\u001b[38;2;147;153;178m-\u001b[38;2;205;214;244m объединение;\r\n\u001b[39m \u001b[2m42 \u001b[32;22m+\u001b[38;2;147;153;178m-\u001b[38;2;205;214;244m пересечение;\r\n\u001b[39m \u001b[2m43 \u001b[32;22m+\u001b[38;2;147;153;178m-\u001b[38;2;205;214;244m отрицание;\r\n\u001b[39m \u001b[2m44 \u001b[32;22m+\u001b[38;2;147;153;178m-\u001b[38;2;205;214;244m отношение уровня $\\alpha$: пары, для которых $\\mu_R(x, y) \\ge \\alpha$.\r\n\u001b[39m \u001b[2m45 \u001b[32;22m+\r\n\u001b[39m \u001b[2m46 \u001b[32;22m+\u001b[38;2;147;153;178m##\u001b[38;2;250;179;135m \u001b[38;2;148;226;213mКомпозиции отношений\r\n\u001b[39m \u001b[2m47 \u001b[32;22m+\r\n\u001b[39m \u001b[2m48 \u001b[32;22m+\u001b[38;2;205;214;244mОсновные композиции:\r\n\u001b[39m \u001b[2m49 \u001b[32;22m+\r\n\u001b[39m \u001b[2m50 \u001b[32;22m+\u001b[38;2;205;214;244m$$\\mu_{AB}(x, z) = \\max_y \\min(\\mu_A(x, y), \\mu_B(y, z))$$\r\n\u001b[39m \u001b[2m51 \u001b[32;22m+\r\n\u001b[39m \u001b[2m52 \u001b[32;22m+\u001b[38;2;205;214;244m$$\\mu_{A \\circ B}(x, z) = \\min_y \\max(\\mu_A(x, y), \\mu_B(y, z))$$\r\n\u001b[39m \u001b[2m53 \u001b[32;22m+\r\n\u001b[39m \u001b[2m54 \u001b[32;22m+\u001b[38;2;205;214;244m$$\\mu_{A * B}(x, z) = \\sup_y \\mu_A(x, y)\\mu_B(y, z)$$\r\n\u001b[39m \u001b[2m55 \u001b[32;22m+\r\n\u001b[39m \u001b[2m56 \u001b[32;22m+\u001b[38;2;205;214;244mМаксиминная композиция особенно важна для [[Нечеткий вывод|нечеткого вывода]].\r\n\u001b[39m \u001b[2m57 \u001b[32;22m+\r\n\u001b[39m \u001b[2m58 \u001b[32;22m+\u001b[38;2;147;153;178m##\u001b[38;2;250;179;135m \u001b[38;2;148;226;213mСвязанные заметки\r\n\u001b[39m \u001b[2m59 \u001b[32;22m+\u001b[38;2;147;153;178m-\u001b[38;2;205;214;244m [[Теория нечетких множеств]]\r\n\u001b[39m \u001b[2m60 \u001b[32;22m+\u001b[38;2;147;153;178m-\u001b[38;2;205;214;244m [[Функция принадлежности]]\r\n\u001b[39m \u001b[2m61 \u001b[32;22m+\u001b[38;2;147;153;178m-\u001b[38;2;205;214;244m [[Нечеткий вывод]]\r\n\u001b[0m\u001b[109X\r\n\u001b[2m └ \u001b[0m90 Library/Math/Теория нечетких множеств/Нечеткий вывод.md (\u001b[32m+69\u001b[0m \u001b[31m-0\u001b[0m)\r\n\u001b[48;5;22m \u001b[2m 1 \u001b[32;22m+\u001b[38;2;147;153;178m---\u001b[98X\r\n\u001b[39m \u001b[2m 2 \u001b[32;22m+\u001b[38;2;205;214;244mstatus: seed\r\n\u001b[39m \u001b[2m 3 \u001b[32;22m+\u001b[38;2;205;214;244mtype: concept\r\n\u001b[39m \u001b[2m 4 \u001b[32;22m+\u001b[38;2;205;214;244mtags:\r\n\u001b[39m \u001b[2m 5 \u001b[32;22m+\u001b[38;2;205;214;244m \u001b[38;2;147;153;178m-\u001b[38;2;205;214;244m math\r\n\u001b[39m \u001b[2m 6 \u001b[32;22m+\u001b[38;2;205;214;244m \u001b[38;2;147;153;178m-\u001b[38;2;205;214;244m mephi\r\n\u001b[39m \u001b[2m 7 \u001b[32;22m+\u001b[38;2;205;214;244m \u001b[38;2;147;153;178m-\u001b[38;2;205;214;244m fuzzy-sets\r\n\u001b[39m \u001b[2m 8 \u001b[32;22m+\u001b[38;2;205;214;244mcreated: 2026-05-29\r\n\u001b[39m \u001b[2m 9 \u001b[32;22m+\u001b[38;2;205;214;244mupdated: 2026-05-29\r\n\u001b[39m \u001b[2m10 \u001b[32;22m+\u001b[38;2;205;214;244mtitle: Нечеткий вывод\r\n\u001b[39m \u001b[2m11 \u001b[32;22m+\u001b[38;2;205;214;244msource: \"[[МИАД_Л3_нечеткий_вывод.pdf]]\"\r\n\u001b[39m \u001b[2m12 \u001b[32;22m+\u001b[38;2;147;153;178m---\r\n\u001b[39m \u001b[2m13 \u001b[32;22m+\r\n\u001b[39m \u001b[2m14 \u001b[32;22m+\u001b[38;2;147;153;178m#\u001b[38;2;243;139;168m \u001b[38;2;148;226;213mНечеткий вывод\r\n\u001b[39m \u001b[2m15 \u001b[32;22m+\r\n\u001b[39m \u001b[2m16 \u001b[32;22m+\u001b[38;2;205;214;244mНечеткий логический вывод — это аппроксимация зависимости выходной лингвистической переменной от вход\r\n\u001b[39m \u001b[2m \u001b[38;2;205;214;244;22mных переменных через базу знаний и операции над нечеткими множествами.\r\n\u001b[39m \u001b[2m17 \u001b[32;22m+\r\n\u001b[39m \u001b[2m18 \u001b[32;22m+\u001b[38;2;147;153;178m##\u001b[38;2;250;179;135m \u001b[38;2;148;226;213mНечеткая и лингвистическая переменная\r\n\u001b[39m \u001b[2m19 \u001b[32;22m+\r\n\u001b[39m \u001b[2m20 \u001b[32;22m+\u001b[38;2;205;214;244mНечеткая переменная задаётся кортежем $\\langle X, U, \\tilde{X} \\rangle$, где:\r\n\u001b[39m \u001b[2m21 \u001b[32;22m+\u001b[38;2;147;153;178m-\u001b[38;2;205;214;244m $X$ — имя переменной;\r\n\u001b[39m \u001b[2m22 \u001b[32;22m+\u001b[38;2;147;153;178m-\u001b[38;2;205;214;244m $U$ — универсум;\r\n\u001b[39m \u001b[2m23 \u001b[32;22m+\u001b[38;2;147;153;178m-\u001b[38;2;205;214;244m $\\tilde{X}$ — нечеткое множество, ограничивающее значения переменной.\r\n\u001b[39m \u001b[2m24 \u001b[32;22m+\r\n\u001b[39m \u001b[2m25 \u001b[32;22m+\u001b[38;2;205;214;244mЛингвистическая переменная задаётся кортежем $\\langle \\beta, T, U, G, M \\rangle$, где:\r\n\u001b[39m \u001b[2m26 \u001b[32;22m+\u001b[38;2;147;153;178m-\u001b[38;2;205;214;244m $\\beta$ — имя переменной;\r\n\u001b[39m \u001b[2m27 \u001b[32;22m+\u001b[38;2;147;153;178m-\u001b[38;2;205;214;244m $T$ — терм-множество;\r\n\u001b[39m \u001b[2m28 \u001b[32;22m+\u001b[38;2;147;153;178m-\u001b[38;2;205;214;244m $U$ — универсум;\r\n\u001b[39m \u001b[2m29 \u001b[32;22m+\u001b[38;2;147;153;178m-\u001b[38;2;205;214;244m $G$ — синтаксическая процедура образования новых значений;\r\n\u001b[39m \u001b[2m30 \u001b[32;22m+\u001b[38;2;147;153;178m-\u001b[38;2;205;214;244m $M$ — семантическая процедура, сопоставляющая значениям нечеткие переменные.\r\n\u001b[39m \u001b[2m31 \u001b[32;22m+\r\n\u001b[39m \u001b[2m32 \u001b[32;22m+\u001b[38;2;205;214;244mНапример, значения лингвистической переменной «возраст»: «молодой», «среднего возраста», «пожилой».\r\n\u001b[39m \u001b[2m33 \u001b[32;22m+\r\n\u001b[39m \u001b[2m34 \u001b[32;22m+\u001b[38;2;147;153;178m##\u001b[38;2;250;179;135m \u001b[38;2;148;226;213mИмпликация\r\n\u001b[39m \u001b[2m35 \u001b[32;22m+\r\n\u001b[39m \u001b[2m36 \u001b[32;22m+\u001b[38;2;205;214;244mВ нечеткой логике импликация может задаваться разными способами. В лекции используются:\r\n\u001b[39m \u001b[2m37 \u001b[32;22m+\u001b[38;2;147;153;178m-\u001b[38;2;205;214;244m импликация Мамдани — минимум функций принадлежности;\r\n\u001b[39m \u001b[2m38 \u001b[32;22m+\u001b[38;2;147;153;178m-\u001b[38;2;205;214;244m импликация Ларсена — произведение функций принадлежности.\r\n\u001b[39m \u001b[2m39 \u001b[32;22m+\r\n\u001b[39m \u001b[2m40 \u001b[32;22m+\u001b[38;2;147;153;178m##\u001b[38;2;250;179;135m \u001b[38;2;148;226;213mКомпозиционное правило вывода\r\n\u001b[39m \u001b[2m41 \u001b[32;22m+\r\n\u001b[39m \u001b[2m42 \u001b[32;22m+\u001b[38;2;205;214;244mЕсли $A$ — нечеткое подмножество универсума $U$, а $F$ — нечеткое подмножество $U \\times V$, то резул\r\n\u001b[39m \u001b[2m \u001b[38;2;205;214;244;22mьтат вывода:\r\n\u001b[39m \u001b[2m43 \u001b[32;22m+\r\n\u001b[39m \u001b[2m44 \u001b[32;22m+\u001b[38;2;205;214;244m$$B = A \\circ F$$\r\n\u001b[39m \u001b[2m45 \u001b[32;22m+\r\n\u001b[39m \u001b[2m46 \u001b[32;22m+\u001b[38;2;205;214;244mПри импликации Мамдани обычно используется максиминная композиция:\r\n\u001b[39m \u001b[2m47 \u001b[32;22m+\r\n\u001b[39m \u001b[2m48 \u001b[32;22m+\u001b[38;2;205;214;244m$$\\mu_B(v) = \\max_u \\min(\\mu_A(u), \\mu_F(u, v))$$\r\n\u001b[39m \u001b[2m49 \u001b[32;22m+\r\n\u001b[39m \u001b[2m50 \u001b[32;22m+\u001b[38;2;147;153;178m##\u001b[38;2;250;179;135m \u001b[38;2;148;226;213mЭтапы нечеткого вывода\r\n\u001b[39m \u001b[2m51 \u001b[32;22m+\r\n\u001b[39m \u001b[2m52 \u001b[32;22m+\u001b[38;2;205;214;244m1\u001b[38;2;147;153;178m.\u001b[38;2;205;214;244m Фаззификация — вычисление степени истинности предпосылок правил для конкретных входных значений.\r\n\u001b[39m \u001b[2m53 \u001b[32;22m+\u001b[38;2;205;214;244m2\u001b[38;2;147;153;178m.\u001b[38;2;205;214;244m Импликация — применение степени истинности предпосылки к заключению правила.\r\n\u001b[39m \u001b[2m54 \u001b[32;22m+\u001b[38;2;205;214;244m3\u001b[38;2;147;153;178m.\u001b[38;2;205;214;244m Композиция — объединение результатов правил в одно нечеткое множество для выходной переменной.\r\n\u001b[39m \u001b[2m55 \u001b[32;22m+\u001b[38;2;205;214;244m4\u001b[38;2;147;153;178m.\u001b[38;2;205;214;244m Дефаззификация — необязательное преобразование нечеткого результата в четкое значение.\r\n\u001b[39m \u001b[2m56 \u001b[32;22m+\r\n\u001b[39m \u001b[2m57 \u001b[32;22m+\u001b[38;2;147;153;178m##\u001b[38;2;250;179;135m \u001b[38;2;148;226;213mАлгоритмы\r\n\u001b[39m \u001b[2m58 \u001b[32;22m+\r\n\u001b[39m \u001b[2m59 \u001b[32;22m+\u001b[38;2;147;153;178m**\u001b[38;2;243;139;168;1mМамдани:\u001b[38;2;147;153;178;22m**\u001b[38;2;205;214;244m заключение правила отсекается минимумом, результаты правил объединяются максимумом.\r\n\u001b[39m \u001b[2m60 \u001b[32;22m+\r\n\u001b[39m \u001b[2m61 \u001b[32;22m+\u001b[38;2;147;153;178m**\u001b[38;2;243;139;168;1mЛарсен:\u001b[38;2;147;153;178;22m**\u001b[38;2;205;214;244m заключение масштабируется произведением, композиция может выполняться максимумом или сумм\r\n\u001b[39m \u001b[2m \u001b[38;2;205;214;244;22mированием.\r\n\u001b[39m \u001b[2m62 \u001b[32;22m+\r\n\u001b[39m \u001b[2m63 \u001b[32;22m+\u001b[38;2;147;153;178m**\u001b[38;2;243;139;168;1mЦукамото:\u001b[38;2;147;153;178;22m**\u001b[38;2;205;214;244m заключения должны иметь монотонные функции принадлежности; для каждого правила получает\r\n\u001b[39m \u001b[2m \u001b[38;2;205;214;244;22mся четкое значение, итог считается как взвешенное среднее.\r\n\u001b[39m \u001b[2m64 \u001b[32;22m+\r\n\u001b[39m \u001b[2m65 \u001b[32;22m+\u001b[38;2;147;153;178m##\u001b[38;2;250;179;135m \u001b[38;2;148;226;213mСвязанные заметки\r\n\u001b[39m \u001b[2m66 \u001b[32;22m+\u001b[38;2;147;153;178m-\u001b[38;2;205;214;244m [[Теория нечетких множеств]]\r\n\u001b[39m \u001b[2m67 \u001b[32;22m+\u001b[38;2;147;153;178m-\u001b[38;2;205;214;244m [[Нечеткие отношения]]\r\n\u001b[39m \u001b[2m68 \u001b[32;22m+\u001b[38;2;147;153;178m-\u001b[38;2;205;214;244m [[Функция принадлежности]]\r\n\u001b[39m \u001b[2m69 \u001b[32;22m+\u001b[38;2;147;153;178m-\u001b[38;2;205;214;244m [[Логические операции над нечеткими множествами]]\r\n\u001b[0m\u001b[109X\r\n\u001b[2m └ \u001b[0m90 Library/Math/Теория нечетких множеств/Определение нечеткого множества.md (\u001b[32m+8\u001b[0m \u001b[31m-2\u001b[0m)\r\n \u001b[2m 1 \u001b[0m \u001b[38;2;147;153;178m---\r\n\u001b[39;48;5;52m \u001b[2m 2 \u001b[31;22m-\u001b[38;2;205;214;244;2mstatus: seed\u001b[89X\r\n\u001b[39;48;5;22;22m \u001b[2m 2 \u001b[32;22m+\u001b[38;2;205;214;244mstatus: processing\u001b[83X\r\n\u001b[0m \u001b[2m 3 \u001b[0m \u001b[38;2;205;214;244mtype: concept\u001b[88X\r\n\u001b[0m \u001b[2m ⋮\r\n\u001b[0m \u001b[2m 5 \u001b[0m \u001b[38;2;205;214;244m \u001b[38;2;147;153;178m-\u001b[38;2;205;214;244m math\r\n\u001b[39;48;5;22m \u001b[2m 6 \u001b[32;22m+\u001b[38;2;205;214;244m \u001b[38;2;147;153;178m-\u001b[38;2;205;214;244m mephi\u001b[92X\r\n\u001b[0m \u001b[2m 7 \u001b[0m \u001b[38;2;205;214;244m \u001b[38;2;147;153;178m-\u001b[38;2;205;214;244m fuzzy-sets\u001b[87X\r\n\u001b[0m \u001b[2m 8 \u001b[0m \u001b[38;2;205;214;244mcreated: 2026-02-17\r\n\u001b[39;48;5;52m \u001b[2m 8 \u001b[31;22m-\u001b[38;2;205;214;244;2mupdated: 2026-05-07\u001b[82X\r\n\u001b[39;48;5;22;22m \u001b[2m 9 \u001b[32;22m+\u001b[38;2;205;214;244mupdated: 2026-05-29\u001b[82X\r\n\u001b[0m \u001b[2m10 \u001b[0m \u001b[38;2;205;214;244mtitle: Определение Нечеткого Множества\u001b[63X\r\n\u001b[39;48;5;22m \u001b[2m11 \u001b[32;22m+\u001b[38;2;205;214;244msource: \"[[МИАД_Л1.pdf]]\"\u001b[76X\r\n\u001b[0m \u001b[2m12 \u001b[0m \u001b[38;2;147;153;178m---\u001b[98X\r\n\u001b[0m \u001b[2m ⋮\r\n\u001b[0m \u001b[2m25\r\n\u001b[48;5;22;22m \u001b[2m26 \u001b[32;22m+\u001b[38;2;205;214;244mНечеткая логика удобна, когда нужно формализовать качественные понятия естественного языка: «большой»\r\n\u001b[39m \u001b[2m \u001b[38;2;205;214;244;22m, «молодой», «популярный». Такое понятие сначала задаётся функцией принадлежности, а затем использует\r\n\u001b[39m \u001b[2m \u001b[38;2;205;214;244;22mся как математический объект.\r\n\u001b[39m \u001b[2m27 \u001b[32;22m+\r\n\u001b[39m \u001b[2m28 \u001b[32;22m+\u001b[38;2;205;214;244mПлюс подхода — описание задачи языком, близким к естественному. Минус — зависимость модели от ЛПР или\r\n\u001b[39m \u001b[2m \u001b[38;2;205;214;244;22m экспертов: вид и параметры функции принадлежности выбираются субъективно.\r\n\u001b[39m \u001b[2m29 \u001b[32;22m+\r\n\u001b[0m \u001b[2m30 \u001b[0m \u001b[38;2;205;214;244mПримеры:\u001b[93X\r\n\r\n\u001b[39;2m └ \u001b[0m90 Library/Math/Теория нечетких множеств/Теория нечетких множеств.md (\u001b[32m+4\u001b[0m \u001b[31m-2\u001b[0m)\r\n \u001b[2m 1 \u001b[0m \u001b[38;2;147;153;178m---\r\n\u001b[39;48;5;52m \u001b[2m 2 \u001b[31;22m-\u001b[38;2;205;214;244;2mstatus: stable\u001b[87X\r\n\u001b[39;48;5;22;22m \u001b[2m 2 \u001b[32;22m+\u001b[38;2;205;214;244mstatus: processing\u001b[83X\r\n\u001b[0m \u001b[2m 3 \u001b[0m \u001b[38;2;205;214;244mtype: moc\u001b[92X\r\n\u001b[0m \u001b[2m ⋮\r\n\u001b[0m \u001b[2m 8 \u001b[0m \u001b[38;2;205;214;244mcreated: 2026-05-02\r\n\u001b[39;48;5;52m \u001b[2m 9 \u001b[31;22m-\u001b[38;2;205;214;244;2mupdated: 2026-05-07\u001b[82X\r\n\u001b[39;48;5;22;22m \u001b[2m 9 \u001b[32;22m+\u001b[38;2;205;214;244mupdated: 2026-05-29\u001b[82X\r\n\u001b[0m \u001b[2m10 \u001b[0m \u001b[38;2;205;214;244mtitle: Теория Нечетких Множеств\u001b[70X\r\n\u001b[0m \u001b[2m ⋮\r\n\u001b[0m \u001b[2m18 \u001b[0m \u001b[38;2;147;153;178m-\u001b[38;2;205;214;244m [[Логические операции над нечеткими множествами]]\r\n\u001b[39;48;5;22m \u001b[2m19 \u001b[32;22m+\u001b[38;2;147;153;178m-\u001b[38;2;205;214;244m [[Нечеткие отношения]]\u001b[77X\r\n\u001b[39m \u001b[2m20 \u001b[32;22m+\u001b[38;2;147;153;178m-\u001b[38;2;205;214;244m [[Нечеткий вывод]]\r\n\u001b[0m \u001b[2m21 \u001b[0m \u001b[38;2;147;153;178m-\u001b[38;2;205;214;244m [[Определение нечеткого множества]]\u001b[64X\r\n\r\n\u001b[39;2m └ \u001b[0m90 Library/Math/Теория нечетких множеств/Функция принадлежности.md (\u001b[32m+14\u001b[0m \u001b[31m-3\u001b[0m)\r\n \u001b[2m 1 \u001b[0m \u001b[38;2;147;153;178m---\r\n\u001b[39;48;5;52m \u001b[2m 2 \u001b[31;22m-\u001b[38;2;205;214;244;2mstatus: stable\u001b[87X\r\n\u001b[39;48;5;22;22m \u001b[2m 2 \u001b[32;22m+\u001b[38;2;205;214;244mstatus: processing\u001b[83X\r\n\u001b[0m \u001b[2m 3 \u001b[0m \u001b[38;2;205;214;244mtype: concept\u001b[88X\r\n\u001b[0m \u001b[2m ⋮\r\n\u001b[0m \u001b[2m 8 \u001b[0m \u001b[38;2;205;214;244mcreated: 2026-02-17\r\n\u001b[39;48;5;52m \u001b[2m 9 \u001b[31;22m-\u001b[38;2;205;214;244;2mupdated: 2026-05-07\u001b[82X\r\n\u001b[39;48;5;22;22m \u001b[2m 9 \u001b[32;22m+\u001b[38;2;205;214;244mupdated: 2026-05-29\u001b[82X\r\n\u001b[0m \u001b[2m10 \u001b[0m \u001b[38;2;205;214;244mtitle: Функция принадлежности\u001b[72X\r\n\u001b[39;48;5;22m \u001b[2m11 \u001b[32;22m+\u001b[38;2;205;214;244msource:\u001b[94X\r\n\u001b[39m \u001b[2m12 \u001b[32;22m+\u001b[38;2;205;214;244m \u001b[38;2;147;153;178m-\u001b[38;2;205;214;244m \"[[МИАД_Л1.pdf]]\"\r\n\u001b[39m \u001b[2m13 \u001b[32;22m+\u001b[38;2;205;214;244m \u001b[38;2;147;153;178m-\u001b[38;2;205;214;244m \"[[МИАД_Л2.pdf]]\"\r\n\u001b[0m \u001b[2m14 \u001b[0m \u001b[38;2;147;153;178m---\u001b[98X\r\n\u001b[0m \u001b[2m ⋮\r\n\u001b[0m \u001b[2m22\r\n\u001b[48;5;22;22m \u001b[2m23 \u001b[32;22m+\u001b[38;2;205;214;244mПеред построением функции принадлежности важно понять шкалу измерения признака:\u001b[22X\r\n\u001b[39m \u001b[2m24 \u001b[32;22m+\u001b[38;2;147;153;178m-\u001b[38;2;205;214;244m номинальная — категории без порядка;\r\n\u001b[39m \u001b[2m25 \u001b[32;22m+\u001b[38;2;147;153;178m-\u001b[38;2;205;214;244m порядковая — категории упорядочены, но расстояния между ними не интерпретируются;\r\n\u001b[39m \u001b[2m26 \u001b[32;22m+\u001b[38;2;147;153;178m-\u001b[38;2;205;214;244m интервальная — имеют смысл разности значений;\r\n\u001b[39m \u001b[2m27 \u001b[32;22m+\u001b[38;2;147;153;178m-\u001b[38;2;205;214;244m относительная — имеют смысл и разности, и отношения;\r\n\u001b[39m \u001b[2m28 \u001b[32;22m+\u001b[38;2;147;153;178m-\u001b[38;2;205;214;244m дихотомическая — частный случай номинальной шкалы с двумя значениями.\r\n\u001b[39m \u001b[2m29 \u001b[32;22m+\r\n\u001b[39m \u001b[2m30 \u001b[32;22m+\u001b[38;2;205;214;244mПрямые методы обычно применяются для признаков в относительной шкале. Косвенные методы применяются, к\r\n\u001b[39m \u001b[2m \u001b[38;2;205;214;244;22mогда данные качественные или категориальные; распространённый вариант — парные сравнения по шкале Саа\r\n\u001b[39m \u001b[2m \u001b[38;2;205;214;244;22mти.\r\n\u001b[39m \u001b[2m31 \u001b[32;22m+\r\n\u001b[0m \u001b[2m32 \u001b[0m \u001b[38;2;147;153;178m##\u001b[38;2;250;179;135m \u001b[38;2;148;226;213mТиповые формы кривых\u001b[78X\r\n\u001b[0m \u001b[2m ⋮\r\n\u001b[0m \u001b[2m56 \u001b[0m \u001b[38;2;147;153;178m-\u001b[38;2;205;214;244m [[Линейные модели]] — сигмоидальная функция принадлежности = та же сигмоида в логистической регресс\r\n\u001b[0m \u001b[2m \u001b[38;2;205;214;244;22mии\r\n\u001b[39;48;5;52m \u001b[2m45 \u001b[31;22m-\u001b[101X\r\n\u001b[0m\u001b[109X\r\n\u001b[2m └ \u001b[0m90 Library/Programming/Ruby On Rails/Capistrano deploy через systemd.md (\u001b[32m+42\u001b[0m \u001b[31m-0\u001b[0m)\r\n\u001b[48;5;22m \u001b[2m 1 \u001b[32;22m+\u001b[38;2;147;153;178m---\u001b[98X\r\n\u001b[39m \u001b[2m 2 \u001b[32;22m+\u001b[38;2;205;214;244mstatus: seed\r\n\u001b[39m \u001b[2m 3 \u001b[32;22m+\u001b[38;2;205;214;244mtype: guide\r\n\u001b[39m \u001b[2m 4 \u001b[32;22m+\u001b[38;2;205;214;244mtags:\r\n\u001b[39m \u001b[2m 5 \u001b[32;22m+\u001b[38;2;205;214;244m \u001b[38;2;147;153;178m-\u001b[38;2;205;214;244m programming\r\n\u001b[39m \u001b[2m 6 \u001b[32;22m+\u001b[38;2;205;214;244m \u001b[38;2;147;153;178m-\u001b[38;2;205;214;244m ruby-on-rails\r\n\u001b[39m \u001b[2m 7 \u001b[32;22m+\u001b[38;2;205;214;244m \u001b[38;2;147;153;178m-\u001b[38;2;205;214;244m deploy\r\n\u001b[39m \u001b[2m 8 \u001b[32;22m+\u001b[38;2;205;214;244mcreated: 2026-05-29\r\n\u001b[39m \u001b[2m 9 \u001b[32;22m+\u001b[38;2;205;214;244mupdated: 2026-05-29\r\n\u001b[39m \u001b[2m10 \u001b[32;22m+\u001b[38;2;205;214;244mtitle: Capistrano deploy через systemd\r\n\u001b[39m \u001b[2m11 \u001b[32;22m+\u001b[38;2;205;214;244msource: \"[[Команды для деплоя с помощью Capistrano]]\"\r\n\u001b[39m \u001b[2m12 \u001b[32;22m+\u001b[38;2;147;153;178m---\r\n\u001b[39m \u001b[2m13 \u001b[32;22m+\r\n\u001b[39m \u001b[2m14 \u001b[32;22m+\u001b[38;2;147;153;178m#\u001b[38;2;243;139;168m \u001b[38;2;148;226;213mCapistrano deploy через systemd\r\n\u001b[39m \u001b[2m15 \u001b[32;22m+\r\n\u001b[39m \u001b[2m16 \u001b[32;22m+\u001b[38;2;205;214;244mЗаметка про выдачу минимальных \u001b[38;2;147;153;178m`\u001b[38;2;205;214;244msudo\u001b[38;2;147;153;178m`\u001b[38;2;205;214;244m-прав для деплоя Rails-приложения через Capistrano, когда сервис\r\n\u001b[39m \u001b[2m \u001b[38;2;205;214;244;22mы управляются через \u001b[38;2;147;153;178m`\u001b[38;2;205;214;244msystemd\u001b[38;2;147;153;178m`\u001b[38;2;205;214;244m.\r\n\u001b[39m \u001b[2m17 \u001b[32;22m+\r\n\u001b[39m \u001b[2m18 \u001b[32;22m+\u001b[38;2;147;153;178m##\u001b[38;2;250;179;135m \u001b[38;2;148;226;213mSudoers\r\n\u001b[39m \u001b[2m19 \u001b[32;22m+\r\n\u001b[39m \u001b[2m20 \u001b[32;22m+\u001b[38;2;205;214;244mВ \u001b[38;2;147;153;178m`\u001b[38;2;205;214;244m/etc/sudoers\u001b[38;2;147;153;178m`\u001b[38;2;205;214;244m задаётся alias для команд, которые Capistrano может выполнять без пароля:\r\n\u001b[39m \u001b[2m21 \u001b[32;22m+\r\n\u001b[39m \u001b[2m22 \u001b[32;22m+\u001b[38;2;147;153;178m```\u001b[38;2;205;214;244msudoers\r\n\u001b[39m \u001b[2m23 \u001b[32;22m+\u001b[38;2;205;214;244mCmnd_Alias PUMA_CONTROL = /usr/bin/mv /tmp/navigation_backend_puma_production.service /etc/systemd/sy\r\n\u001b[39m \u001b[2m \u001b[38;2;205;214;244;22mstem/, /usr/bin/mv /tmp/navigation_backend_puma_production.socket /etc/systemd/system/, /bin/systemct\r\n\u001b[39m \u001b[2m \u001b[38;2;205;214;244;22ml daemon-reload, /bin/systemctl enable navigation_backend_puma_production, /bin/systemctl start navig\r\n\u001b[39m \u001b[2m \u001b[38;2;205;214;244;22mation_backend_puma_production, /bin/systemctl stop navigation_backend_puma_production, /bin/systemctl\r\n\u001b[39m \u001b[2m \u001b[38;2;205;214;244;22m restart navigation_backend_puma_production, /bin/systemctl enable navigation_backend_puma_production\r\n\u001b[39m \u001b[2m \u001b[38;2;205;214;244;22m.socket, /bin/systemctl restart navigation_backend_sidekiq_production.service, /bin/systemctl restart\r\n\u001b[39m \u001b[2m \u001b[38;2;205;214;244;22m navigation_backend_solid_queue_production.service, /bin/systemctl restart solid_queue\r\n\u001b[39m \u001b[2m24 \u001b[32;22m+\u001b[38;2;205;214;244mdeploy ALL = NOPASSWD: PUMA_CONTROL\r\n\u001b[39m \u001b[2m25 \u001b[32;22m+\u001b[38;2;147;153;178m```\r\n\u001b[39m \u001b[2m26 \u001b[32;22m+\r\n\u001b[39m \u001b[2m27 \u001b[32;22m+\u001b[38;2;205;214;244mГде:\r\n\u001b[39m \u001b[2m28 \u001b[32;22m+\u001b[38;2;147;153;178m-\u001b[38;2;205;214;244m \u001b[38;2;147;153;178m`\u001b[38;2;205;214;244mdeploy\u001b[38;2;147;153;178m`\u001b[38;2;205;214;244m — пользователь, от имени которого выполняется деплой;\r\n\u001b[39m \u001b[2m29 \u001b[32;22m+\u001b[38;2;147;153;178m-\u001b[38;2;205;214;244m \u001b[38;2;147;153;178m`\u001b[38;2;205;214;244mnavigation_backend\u001b[38;2;147;153;178m`\u001b[38;2;205;214;244m — имя приложения в service/socket unit-файлах.\r\n\u001b[39m \u001b[2m30 \u001b[32;22m+\r\n\u001b[39m \u001b[2m31 \u001b[32;22m+\u001b[38;2;147;153;178m##\u001b[38;2;250;179;135m \u001b[38;2;148;226;213mКоманды деплоя\r\n\u001b[39m \u001b[2m32 \u001b[32;22m+\r\n\u001b[39m \u001b[2m33 \u001b[32;22m+\u001b[38;2;147;153;178m```\u001b[38;2;205;214;244mbash\r\n\u001b[39m \u001b[2m34 \u001b[32;22m+\u001b[38;2;137;180;250mcap\u001b[38;2;205;214;244m production puma:install\r\n\u001b[39m \u001b[2m35 \u001b[32;22m+\u001b[38;2;137;180;250mcap\u001b[38;2;205;214;244m production deploy\r\n\u001b[39m \u001b[2m36 \u001b[32;22m+\u001b[38;2;147;153;178m```\r\n\u001b[39m \u001b[2m37 \u001b[32;22m+\r\n\u001b[39m \u001b[2m38 \u001b[32;22m+\u001b[38;2;147;153;178m`\u001b[38;2;205;214;244mpuma:install\u001b[38;2;147;153;178m`\u001b[38;2;205;214;244m кладёт \u001b[38;2;147;153;178m`\u001b[38;2;205;214;244msystemd\u001b[38;2;147;153;178m`\u001b[38;2;205;214;244m unit-файлы, после чего \u001b[38;2;147;153;178m`\u001b[38;2;205;214;244mdeploy\u001b[38;2;147;153;178m`\u001b[38;2;205;214;244m перезапускает Puma и фоновые сервисы\r\n\u001b[39m \u001b[2m \u001b[38;2;205;214;244;22mбез интерактивного ввода пароля.\r\n\u001b[39m \u001b[2m39 \u001b[32;22m+\r\n\u001b[39m \u001b[2m40 \u001b[32;22m+\u001b[38;2;147;153;178m##\u001b[38;2;250;179;135m \u001b[38;2;148;226;213mСвязанные заметки\r\n\u001b[39m \u001b[2m41 \u001b[32;22m+\u001b[38;2;147;153;178m-\u001b[38;2;205;214;244m [[Ruby On Rails]]\r\n\u001b[39m \u001b[2m42 \u001b[32;22m+\u001b[38;2;147;153;178m-\u001b[38;2;205;214;244m [[Sidekiq - основа работы]]\r\n\u001b[0m\u001b[109X\r\n\u001b[2m └ \u001b[0m90 Library/Programming/Ruby On Rails/Ruby On Rails.md (\u001b[32m+3\u001b[0m \u001b[31m-2\u001b[0m)\r\n \u001b[2m 1 \u001b[0m \u001b[38;2;147;153;178m---\r\n\u001b[39;48;5;52m \u001b[2m 2 \u001b[31;22m-\u001b[38;2;205;214;244;2mstatus: stable\u001b[87X\r\n\u001b[39;48;5;22;22m \u001b[2m 2 \u001b[32;22m+\u001b[38;2;205;214;244mstatus: processing\u001b[83X\r\n\u001b[0m \u001b[2m 3 \u001b[0m \u001b[38;2;205;214;244mtype: moc\u001b[92X\r\n\u001b[0m \u001b[2m ⋮\r\n\u001b[0m \u001b[2m 7 \u001b[0m \u001b[38;2;205;214;244mcreated: 2025-12-17\r\n\u001b[39;48;5;52m \u001b[2m 8 \u001b[31;22m-\u001b[38;2;205;214;244;2mupdated: 2026-05-07\u001b[82X\r\n\u001b[39;48;5;22;22m \u001b[2m 8 \u001b[32;22m+\u001b[38;2;205;214;244mupdated: 2026-05-29\u001b[82X\r\n\u001b[0m \u001b[2m 9 \u001b[0m \u001b[38;2;205;214;244mtitle: Ruby On Rails\u001b[81X\r\n\u001b[0m \u001b[2m ⋮\r\n\u001b[0m \u001b[2m16 \u001b[0m \u001b[38;2;147;153;178m-\u001b[38;2;205;214;244m [[API импорт в Rails через runner]]\r\n\u001b[39;48;5;22m \u001b[2m17 \u001b[32;22m+\u001b[38;2;147;153;178m-\u001b[38;2;205;214;244m [[Capistrano deploy через systemd]]\u001b[64X\r\n\u001b[0m \u001b[2m18 \u001b[0m \u001b[38;2;147;153;178m-\u001b[38;2;205;214;244m [[Rails credentials edit не открывает редактор]]\u001b[51X\r\n\r\n\u001b[39;2m─────────────────────────────────────────────────────────────────────────────────────────────────────────────\r\n\r\n• \u001b[0mЧерновые правки внесены. Дальше проверю YAML/ссылки на уровне файлов, перемещу источники в архив и обновлю\r\n \u001b[36mINDEX.md\u001b[0m по правилам vault.\r\n\r\n\u001b[32;1m•\u001b[0m \u001b[1mRan\u001b[0m \u001b[38;2;137;180;250mrtk\u001b[38;2;205;214;244m grep\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mn\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m\"title:|source:|status:\"\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m'90 Library/Programming/Ruby On Rails/Capistrano deploy через\r\n\u001b[39;2m │ \u001b[38;2;166;227;161;22msystemd.md'\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m'90 Library/Math/Теория нечетких множеств/Нечеткие отношения.md'\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m'90 Library/Math/Теория\r\n\u001b[39;2m │ \u001b[38;2;166;227;161;22mнечетких множеств/Нечеткий вывод.md'\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m'90 Library/Math/Метод анализа иерархий.md'\r\n\u001b[39;2m └ 12 matches in 4F:\r\n\r\n … +18 lines (ctrl + t to view transcript)\r\n\u001b[32;1;22m•\u001b[0m \u001b[1mRan\u001b[0m \u001b[38;2;137;180;250mrtk\u001b[38;2;205;214;244m git diff\u001b[38;2;148;226;213m --\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m'90 Library/Programming/Ruby On Rails/Ruby On Rails.md'\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m'90 Library/Math/Теория\r\n\u001b[39;2m │ \u001b[38;2;166;227;161;22mнечетких множеств/Теория нечетких множеств.md'\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m'90 Library/Math/Теория нечетких множеств/Функция\r\n\u001b[39;2m │ \u001b[38;2;166;227;161;22mпринадлежности.md'\r\n\u001b[39;2m └ .../Теория нечетких множеств.md | 6 ++++--\r\n\u001b[0m \u001b[2m .../Теория нечетких множеств/Функция принадлежности.md | 17 ++++++++++++++---\r\n … +82 lines (ctrl + t to view transcript)\r\n\r\n\u001b[0m \u001b[2m +3 -2\r\n\r\n\u001b[32;1;22m•\u001b[0m \u001b[1mRan\u001b[0m \u001b[38;2;137;180;250mrtk\u001b[38;2;205;214;244m git status\u001b[38;2;147;153;178m --\u001b[38;2;235;160;172mshort\r\n\u001b[39;2m └ M .obsidian/workspace.json\r\n\u001b[0m \u001b[2m M \"90 Library/Math/Теория нечетких множеств/Логические операции над нечеткими множествами.md\"\r\n … +6 lines (ctrl + t to view transcript)\r\n\u001b[0m \u001b[2m?? \"90 Library/Math/Теория нечетких множеств/Нечеткий вывод.md\"\r\n\u001b[0m \u001b[2m?? \"90 Library/Programming/Ruby On Rails/Capistrano deploy через systemd.md\"\r\n\r\n\u001b[31;1;22m•\u001b[0m \u001b[1mRan\u001b[0m \u001b[38;2;137;180;250mrtk\u001b[38;2;205;214;244m grep\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mn\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m\"generated:|Vault Index|frontmatter|INDEX.md\"\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mg\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m'*.rb'\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mg\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m'*.py'\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mg\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m'*.sh'\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mg\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m'Makefile'\r\n\u001b[39;2m │ \u001b[38;2;147;153;178;22m-\u001b[38;2;235;160;172mg\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m'justfile'\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mg\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m'package.json'\u001b[38;2;205;214;244m .\r\n\r\n\u001b[39;2m•\u001b[0m \u001b[1mExplored\r\n\u001b[22;2m └ \u001b[36;22mRead\u001b[0m CLAUDE.md\u001b[2m, \u001b[0mCODEX.md\r\n\r\n\u001b[31;1m•\u001b[0m \u001b[1mRan\u001b[0m \u001b[38;2;137;180;250mrtk\u001b[38;2;205;214;244m find .\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mpath\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m'./.git'\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mprune\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mo\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mpath\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m'./.obsidian'\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mprune\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mo\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mpath\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m'./.trash'\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mprune\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mo\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mtype\u001b[38;2;205;214;244m f\r\n\u001b[39;2m │ \u001b[38;2;245;194;231;22m\\(\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mname\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m'*.py'\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mo\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mname\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m'*.rb'\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mo\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mname\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m'*.sh'\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mo\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mname\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m'Makefile'\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mo\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mname\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m'justfile'\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mo\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mname\r\n\u001b[39;2m │ \u001b[38;2;166;227;161;22m'package.json'\u001b[38;2;205;214;244m \u001b[38;2;245;194;231m\\)\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mprint\r\n\u001b[39;2m └ rtk: rtk find does not support compound predicates or actions (e.g. -not, -exec). Use `find` directly.\r\n\r\n\u001b[32;1;22m•\u001b[0m \u001b[1mRan\u001b[0m \u001b[38;2;137;180;250mrtk\u001b[38;2;205;214;244m git diff\u001b[38;2;148;226;213m --\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m'90 Library/Math/Теория нечетких множеств/Логические операции над нечеткими\r\n\u001b[39;2m │ \u001b[38;2;166;227;161;22mмножествами.md'\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m'90 Library/Math/Теория нечетких множеств/Определение нечеткого множества.md'\r\n\u001b[39;2m └ ...огические операции над нечеткими множествами.md | 61 ++++++++++++++++++++--\r\n\u001b[0m \u001b[2m .../Определение нечеткого множества.md | 10 +++-\r\n … +106 lines (ctrl + t to view transcript)\r\n\u001b[0m \u001b[2m 2) $U=\\{a,b,c,d,e\\};\\ A=\\{\\{a,0\\}, \\{b,0.1\\},\\{c,0.5\\},\\{d,0.9\\},\\{e,1\\}\\};$\r\n\u001b[0m \u001b[2m +8 -2\r\n\r\n\u001b[32;1;22m•\u001b[0m \u001b[1mRan\u001b[0m \u001b[38;2;137;180;250m/usr/bin/find\u001b[38;2;205;214;244m .\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mpath\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m'./.git'\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mprune\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mo\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mpath\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m'./.obsidian'\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mprune\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mo\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mpath\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m'./.trash'\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mprune\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mo\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mtype\r\n\u001b[39;2m │ \u001b[38;2;205;214;244;22mf \u001b[38;2;245;194;231m\\(\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mname\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m'*.py'\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mo\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mname\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m'*.rb'\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mo\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mname\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m'*.sh'\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mo\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mname\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m'Makefile'\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mo\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mname\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m'justfile'\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mo\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mname\r\n\u001b[39;2m │ \u001b[38;2;166;227;161;22m'package.json'\u001b[38;2;205;214;244m \u001b[38;2;245;194;231m\\)\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mprint\r\n\u001b[39;2m └ (no output)\r\n\r\n•\u001b[0m \u001b[1mExplored\r\n\u001b[22;2m └ \u001b[36;22mRead\u001b[0m Метод анализа иерархий.md\r\n\r\n\u001b[32;1m•\u001b[0m \u001b[1mRan\u001b[0m \u001b[38;2;137;180;250mrtk\u001b[38;2;205;214;244m ls\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mla\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m'00 Inbox'\r\n\u001b[39;2m └ Команды для деплоя с помощью Capistrano.md 1.0K\r\n\u001b[0m \u001b[2mМИАД_Л1.pdf 1.4M\r\n\u001b[0m \u001b[2mМИАД_Л2.pdf 1.2M\r\n\u001b[0m \u001b[2mМИАД_Л3_нечеткий_вывод.pdf 1.6M\r\n\u001b[0m \u001b[2mМИАД_Л4_иерархии.pdf 1.8M\r\n\r\n\u001b[32;1;22m•\u001b[0m \u001b[1mRan\u001b[0m \u001b[38;2;137;180;250mrtk\u001b[38;2;205;214;244m ls\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mla\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m'99 System/Archive'\r\n\u001b[39;2m └ Финансы/\r\n\u001b[0m \u001b[2m099dd81b-27a1-46e5-88fe-20276b442b78.pdf 2.3M\r\n … +74 lines (ctrl + t to view transcript)\r\n\u001b[0m \u001b[2mФункционирование сети Хопфилда.md 2.4K\r\n\u001b[0m \u001b[2mШаблонизатор Helm.md 2.9K\r\n\r\n\u001b[32;1;22m•\u001b[0m \u001b[1mRan\u001b[0m \u001b[38;2;137;180;250mrtk\u001b[38;2;205;214;244m read \u001b[38;2;166;227;161m'90 Library/Math/Метод анализа иерархий.md'\u001b[38;2;147;153;178m --\u001b[38;2;235;160;172mtail-lines\u001b[38;2;205;214;244m 40\r\n\u001b[39;2m └\r\n\u001b[0m \u001b[2m1. Описать проблему и цель.\r\n … +37 lines (ctrl + t to view transcript)\r\n\u001b[0m \u001b[2m## Связанные заметки\r\n\u001b[0m \u001b[2m- [[Функция принадлежности]]\r\n\r\n\u001b[32;1;22m•\u001b[0m \u001b[1mRan\u001b[0m \u001b[38;2;137;180;250mmv\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m'00 Inbox/Команды для деплоя с помощью Capistrano.md'\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m'00 Inbox/МИАД_Л1.pdf'\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m'00 Inbox/МИАД_Л2.pdf'\r\n\u001b[39;2m │ \u001b[38;2;166;227;161;22m'00 Inbox/МИАД_Л3_нечеткий_вывод.pdf'\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m'00 Inbox/МИАД_Л4_иерархии.pdf'\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m'99 System/Archive/'\r\n\u001b[39;2m └ | `90 Library/Sport/L-карнитин.md` | L-карнитин | seed | concept | gym, БАД, sport, supplements |\r\n\u001b[0m \u001b[2m| `90 Library/Sport/Креатин.md` | Креатин | seed | concept | gym, БАД, sport |\r\n … +76 lines (ctrl + t to view transcript)\r\n\r\n\u001b[0m \u001b[2m| `GEMINI.md` | GEMINI | — | — | — |\r\n\r\n\u001b[32;1;22m•\u001b[0m \u001b[1mRan\u001b[0m \u001b[38;2;137;180;250m/usr/bin/find\u001b[38;2;205;214;244m .\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mmaxdepth\u001b[38;2;205;214;244m 1\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mtype\u001b[38;2;205;214;244m f\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mname\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m'*.md'\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mprint\r\n\u001b[39;2m └ ./CODEX.md\r\n\u001b[0m \u001b[2m./CLAUDE.md\r\n\u001b[0m \u001b[2m./GEMINI.md\r\n\u001b[0m \u001b[2m./AGENTS.md\r\n\u001b[0m \u001b[2m./INDEX.md\r\n\r\n\u001b[32;1;22m•\u001b[0m \u001b[1mRan\u001b[0m \u001b[38;2;137;180;250mrtk\u001b[38;2;205;214;244m ls\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mla\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m'00 Inbox'\r\n\u001b[39;2m └ (empty)\r\n\r\n\u001b[32;1;22m•\u001b[0m \u001b[1mRan\u001b[0m \u001b[38;2;137;180;250mpython\u001b[38;2;205;214;244m - \u001b[38;2;148;226;213m<<\u001b[38;2;166;227;161m'\u001b[38;2;203;166;247mPY\u001b[38;2;166;227;161m'\r\n\u001b[39;2m │ \u001b[38;2;166;227;161;22mfrom pathlib import Path\r\n\u001b[39;2m │ \u001b[38;2;166;227;161;22mfrom collections import defaultdict, Counter\r\n\u001b[39;2m │ … +108 lines\r\n └ (no output)\r\n\r\n•\u001b[0m \u001b[1mExplored\r\n\u001b[22;2m └ \u001b[36;22mRead\u001b[0m INDEX.md\r\n\r\n\u001b[32;1m•\u001b[0m \u001b[1mRan\u001b[0m \u001b[38;2;137;180;250mrtk\u001b[38;2;205;214;244m grep\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mn\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m\"Capistrano deploy|Нечеткие отношения|Нечеткий вывод|Метод анализа иерархий|Команды для\r\n\u001b[39;2m │ \u001b[38;2;166;227;161;22mдеплоя|МИАД_Л\"\u001b[38;2;205;214;244m INDEX.md\r\n\u001b[39;2m └ 5 matches in 1F:\r\n\r\n … +5 lines (ctrl + t to view transcript)\r\n\u001b[0m \u001b[2m 463: | `99 System/Archive/Команды для деплоя с помощью Capistrano.md` | — | seed |...\r\n\r\n\r\n\u001b[32;1;22m•\u001b[0m \u001b[1mRan\u001b[0m \u001b[38;2;137;180;250mrtk\u001b[38;2;205;214;244m ls\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mla\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m'99 System/Archive'\u001b[38;2;205;214;244m \u001b[38;2;148;226;213m|\u001b[38;2;205;214;244m \u001b[38;2;137;180;250mgrep\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mE\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m'Команды для деплоя|МИАД_Л[1-4]'\r\n\u001b[39;2m └ Команды для деплоя с помощью Capistrano.md 1.0K\r\n\u001b[0m \u001b[2mМИАД_Л1.pdf 1.4M\r\n\u001b[0m \u001b[2mМИАД_Л2.pdf 1.2M\r\n\u001b[0m \u001b[2mМИАД_Л3_нечеткий_вывод.pdf 1.6M\r\n\u001b[0m \u001b[2mМИАД_Л4_иерархии.pdf 1.8M\r\n\r\n\u001b[32;1;22m•\u001b[0m \u001b[1mRan\u001b[0m \u001b[38;2;137;180;250mrtk\u001b[38;2;205;214;244m ls\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mla\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m'00 Inbox'\r\n\u001b[39;2m └ (empty)\r\n\r\n\u001b[32;1;22m•\u001b[0m \u001b[1mRan\u001b[0m \u001b[38;2;137;180;250mrtk\u001b[38;2;205;214;244m git diff\u001b[38;2;147;153;178m --\u001b[38;2;235;160;172mstat\r\n\u001b[39;2m └ .obsidian/workspace.json | 21 +++----\r\n\u001b[0m \u001b[2m .../Команды для деплоя с помощью Capistrano.md | 18 ------\r\n … +9 lines (ctrl + t to view transcript)\r\n\u001b[0m \u001b[2m INDEX.md | 41 ++++++++------\r\n\u001b[0m \u001b[2m 12 files changed, 121 insertions(+), 58 deletions(-)\r\n\r\n\u001b[32;1;22m•\u001b[0m \u001b[1mRan\u001b[0m \u001b[38;2;137;180;250mrtk\u001b[38;2;205;214;244m grep\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mn\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m\"### 90 Library|### 99 System|Метод анализа|Нечеткие отношения|Нечеткий вывод|Capistrano|\r\n\u001b[39;2m │ \u001b[38;2;166;227;161;22mКоманды для деплоя\"\u001b[38;2;205;214;244m INDEX.md\r\n\u001b[0m \u001b[2m 463: | `99 System/Archive/Команды для деплоя с помощью Capistrano.md` | — | seed |...\r\n\r\n\r\n\u001b[32;1;22m•\u001b[0m \u001b[1mRan\u001b[0m \u001b[38;2;137;180;250mrtk\u001b[38;2;205;214;244m git diff\u001b[38;2;148;226;213m --\u001b[38;2;205;214;244m INDEX.md \u001b[38;2;148;226;213m|\u001b[38;2;205;214;244m \u001b[38;2;137;180;250msed\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mn\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m'1,220p'\r\n\u001b[39;2m └ INDEX.md | 41 +++++++++++++++++++++++------------------\r\n\u001b[0m \u001b[2m 1 file changed, 23 insertions(+), 18 deletions(-)\r\n … +102 lines (ctrl + t to view transcript)\r\n\u001b[0m \u001b[2m | `99 System/Archive/УИР.md` | УИР | seed | concept | — |\r\n\u001b[0m \u001b[2m +23 -18\r\n\r\n\u001b[32;1;22m•\u001b[0m \u001b[1mRan\u001b[0m \u001b[38;2;137;180;250mrtk\u001b[38;2;205;214;244m git status\u001b[38;2;147;153;178m --\u001b[38;2;235;160;172mshort\r\n\u001b[39;2m └ M .obsidian/workspace.json\r\n\u001b[0m \u001b[2m D \"00 Inbox/Команды для деплоя с помощью Capistrano.md\"\r\n … +17 lines (ctrl + t to view transcript)\r\n\u001b[0m \u001b[2m?? \"99 System/Archive/МИАД_Л3_нечеткий_вывод.pdf\"\r\n\u001b[0m \u001b[2m?? \"99 System/Archive/МИАД_Л4_иерархии.pdf\"\r\n\r\n─────────────────────────────────────────────────────────────────────────────────────────────────────────────\r\n\r\n• \u001b[0mИндекс обновлён: \u001b[36m00 Inbox/\u001b[0m пустой, источники лежат в \u001b[36m99 System/Archive/\u001b[0m, новые заметки попали в \u001b[36mINDEX.md\u001b[0m.\r\n Сейчас сделаю финальную проверку изменённых файлов и ссылок.\r\n\r\n\u001b[2m•\u001b[0m \u001b[1mExplored\r\n\u001b[22;2m └ \u001b[36;22mRead\u001b[0m Capistrano deploy через systemd.md\u001b[2m, \u001b[0mНечеткий вывод.md\r\n\r\n\u001b[32;1m•\u001b[0m \u001b[1mRan\u001b[0m \u001b[38;2;137;180;250mrtk\u001b[38;2;205;214;244m git diff\u001b[38;2;147;153;178m --\u001b[38;2;235;160;172mname-only\r\n\u001b[39;2m └ .obsidian/workspace.json\r\n\u001b[0m \u001b[2m00 Inbox/Команды для деплоя с помощью Capistrano.md\r\n … +11 lines (ctrl + t to view transcript)\r\n\u001b[0m \u001b[2m--- Changes ---\r\n\r\n\r\n\u001b[32;1;22m•\u001b[0m \u001b[1mRan\u001b[0m \u001b[38;2;137;180;250mrtk\u001b[38;2;205;214;244m grep\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mn\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m\"\\[\\[(Capistrano deploy через systemd|Нечеткие отношения|Нечеткий вывод|Метод анализа\r\n\u001b[39;2m │ \u001b[38;2;166;227;161;22mиерархий|Ruby On Rails|Теория нечетких множеств|Функция принадлежности)\"\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m'90 Library'\u001b[38;2;205;214;244m INDEX.md\r\n\u001b[39;2m └ 22 matches in 13F:\r\n\r\n … +46 lines (ctrl + t to view transcript)\r\n\u001b[0m \u001b[2m 17: - [[Capistrano deploy через systemd]]\r\n\r\n\r\n\u001b[32;1;22m•\u001b[0m \u001b[1mRan\u001b[0m \u001b[38;2;137;180;250mpython\u001b[38;2;205;214;244m - \u001b[38;2;148;226;213m<<\u001b[38;2;166;227;161m'\u001b[38;2;203;166;247mPY\u001b[38;2;166;227;161m'\r\n\u001b[39;2m │ \u001b[38;2;166;227;161;22mfrom pathlib import Path\r\n\u001b[39;2m │ \u001b[38;2;166;227;161;22merrors=[]\r\n\u001b[39;2m │ … +19 lines\r\n └ frontmatter ok\r\n\r\n\u001b[32;1;22m•\u001b[0m \u001b[1mRan\u001b[0m \u001b[38;2;137;180;250mrtk\u001b[38;2;205;214;244m grep\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mn\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m\"total: 461|Capistrano deploy через systemd|Нечеткие отношения|Нечеткий вывод|Метод анализа\r\n\u001b[39;2m │ \u001b[38;2;166;227;161;22mиерархий|Команды для деплоя с помощью Capistrano\"\u001b[38;2;205;214;244m INDEX.md\r\n\u001b[39;2m └ 6 matches in 2F:\r\n\r\n … +8 lines (ctrl + t to view transcript)\r\n\u001b[0m \u001b[2m 463: | `99 System/Archive/Команды для деплоя с помощью Capistrano.md` | — | seed |...\r\n\r\n\r\n\u001b[32;1;22m•\u001b[0m \u001b[1mRan\u001b[0m \u001b[38;2;137;180;250mrtk\u001b[38;2;205;214;244m git status\u001b[38;2;147;153;178m --\u001b[38;2;235;160;172mshort\u001b[38;2;147;153;178m --\u001b[38;2;235;160;172muntracked-files\u001b[38;2;148;226;213m=\u001b[38;2;205;214;244mall\r\n\u001b[39;2m └ M .obsidian/workspace.json\r\n\u001b[0m \u001b[2m D \"00 Inbox/Команды для деплоя с помощью Capistrano.md\"\r\n … +17 lines (ctrl + t to view transcript)\r\n\u001b[0m \u001b[2m?? \"99 System/Archive/МИАД_Л3_нечеткий_вывод.pdf\"\r\n\u001b[0m \u001b[2m?? \"99 System/Archive/МИАД_Л4_иерархии.pdf\"\r\n\r\n─────────────────────────────────────────────────────────────────────────────────────────────────────────────\r\n\r\n• \u001b[0mГотово.\r\n\r\n Созданы заметки:\r\n\r\n - \u001b[36m90 Library/Programming/Ruby On Rails/Capistrano deploy через systemd.md\r\n\u001b[0m - \u001b[36m90 Library/Math/Теория нечетких множеств/Нечеткие отношения.md\r\n\u001b[0m - \u001b[36m90 Library/Math/Теория нечетких множеств/Нечеткий вывод.md\r\n\u001b[0m - \u001b[36m90 Library/Math/Метод анализа иерархий.md\r\n\r\n\u001b[0m Дополнены существующие заметки по Л1: \u001b[36mОпределение нечеткого множества\u001b[0m, \u001b[36mФункция принадлежности\u001b[0m, \u001b[36mЛогические\r\n\u001b[0m \u001b[36mоперации над нечеткими множествами\u001b[0m. Обновлены MOC: \u001b[36mТеория нечетких множеств\u001b[0m, \u001b[36mRuby On Rails\u001b[0m.\r\n\r\n Источники перенесены из \u001b[36m00 Inbox/\u001b[0m в \u001b[36m99 System/Archive/\u001b[0m; \u001b[36m00 Inbox/\u001b[0m теперь пустой. \u001b[36mINDEX.md\u001b[0m обновлён, total:\r\n \u001b[36m461\u001b[0m.\r\n\r\n Проверка: frontmatter у изменённых заметок валиден, новые записи есть в \u001b[36mINDEX.md\u001b[0m.\r\n\r\n Не добавлял отдельными заметками: \u001b[36mШкала Саати\u001b[0m, \u001b[36mАлгоритм Мамдани\u001b[0m, \u001b[36mАлгоритм Ларсена\u001b[0m, \u001b[36mЛогика Заде\u001b[0m — пока они\r\n оставлены как разделы внутри основных заметок. В рабочем дереве также есть изменение \u001b[36m.obsidian/\r\n\u001b[0m \u001b[36mworkspace.json\u001b[0m, я его не трогал.\r\n\r\n\u001b[2m─ Worked for 5m 16s ─────────────────────────────────────────────────────────────────────────────────────────\r\n\r\n\u001b[48;5;239;22m \u001b[108X\r\n\u001b[1m›\u001b[22m \u001b[2mFind and fix a bug in @filename\r\n\u001b[22m \r\n\u001b[0m\u001b[2X\u001b[2C\u001b[38;2;246;226;183mgpt-5.5 high\u001b[39;2m · \u001b[38;2;171;223;167;22m~/Documents/Vaults/SecondBrain\u001b[62X\u001b[2A\u001b[45D\u001b[0m", "rows": 31, "scrollLine": -1 } @@ -54,7 +54,7 @@ }, "pinned": true, "icon": "terminal", - "title": "Terminal: ⠧ SecondBrain" + "title": "Terminal: SecondBrain" } }, { @@ -131,8 +131,24 @@ "icon": "lucide-file", "title": "AGENTS" } + }, + { + "id": "fa9cece30247b91d", + "type": "leaf", + "state": { + "type": "markdown", + "state": { + "file": "90 Library/Math/Теория нечетких множеств/Логические операции над нечеткими множествами.md", + "mode": "preview", + "source": false, + "backlinks": false + }, + "icon": "lucide-file", + "title": "Логические операции над нечеткими множествами" + } } - ] + ], + "currentTab": 6 } ], "direction": "vertical" @@ -368,8 +384,19 @@ "terminal:Open terminal": false } }, - "active": "44e5aceda7b172df", + "active": "fa9cece30247b91d", "lastOpenFiles": [ + "90 Library/Math/Теория нечетких множеств/Коэффициенты функций принадлежности.md", + "90 Library/Math/Теория нечетких множеств/Доказательство законов Де Моргана.md", + "99 System/Archive/МИАД_Л4_иерархии.pdf", + "99 System/Archive/МИАД_Л3_нечеткий_вывод.pdf", + "99 System/Archive/МИАД_Л2.pdf", + "99 System/Archive/МИАД_Л1.pdf", + "99 System/Archive/Команды для деплоя с помощью Capistrano.md", + "90 Library/Math/Метод анализа иерархий.md", + "90 Library/Math/Теория нечетких множеств/Нечеткий вывод.md", + "90 Library/Math/Теория нечетких множеств/Нечеткие отношения.md", + "90 Library/Programming/Ruby On Rails/Capistrano deploy через systemd.md", "AGENTS.md", "00 Inbox/МИАД_Л1.pdf", "00 Inbox/МИАД_Л2.pdf", @@ -396,12 +423,6 @@ "99 System/Archive/Подготовка Speaking.md", "99 System/Archive/Налоги - СР2.md", "99 System/Archive/Налоги - Организационные моменты.md", - "99 System/Archive/РИАС - база.md", - "99 System/Archive/31, 32 - Налоги 1.md", - "99 System/Archive/OSINT - Зачет.md", - "00 Inbox/Подготовка Speaking.sync-conflict-20260522-220847-23DMR5O.md", - "00 Inbox/Подготовка Speaking.sync-conflict-20260522-185359-23DMR5O.md", - "00 Inbox/Подготовка Speaking.sync-conflict-20260522-215348-23DMR5O.md", "99 System/Cache/Pasted image 20260521134256.png", "99 System/Cache/Pasted image 20260521134238.png", "99 System/Cache/Pasted image 20260521134228.png", @@ -411,10 +432,6 @@ "99 System/Cache/Pasted image 20260521133344.png", "raw_files_3.txt", "raw_links_3.txt", - "raw_links_2.txt", - "raw_links.txt", - "all_links.tmp", - "all_links.txt", "00 Inbox/Untitled.canvas" ] } \ No newline at end of file diff --git a/90 Library/Math/Метод анализа иерархий.md b/90 Library/Math/Метод анализа иерархий.md new file mode 100644 index 0000000..187dc09 --- /dev/null +++ b/90 Library/Math/Метод анализа иерархий.md @@ -0,0 +1,82 @@ +--- +status: seed +type: concept +tags: + - math + - mephi + - decision-making +created: 2026-05-29 +updated: 2026-05-29 +title: Метод анализа иерархий +source: "[[МИАД_Л4_иерархии.pdf]]" +--- + +# Метод анализа иерархий + +Метод анализа иерархий (МАИ) используется для выбора лучшей альтернативы при нескольких критериях, в том числе разнородных и качественных. + +## Идея + +Задача выбора раскладывается на иерархию: +- цель; +- критерии и подцели; +- альтернативы. + +Затем элементы каждого уровня попарно сравниваются по влиянию на элемент верхнего уровня. + +## Шкала Саати + +Попарные сравнения обычно задаются 9-балльной шкалой: +- `1` — нет преимущества; +- `3` — слабое преимущество; +- `5` — существенное преимущество; +- `7` — явное преимущество; +- `9` — абсолютное преимущество; +- `2`, `4`, `6`, `8` — промежуточные оценки; +- обратные значения — преимущество в обратную сторону. + +Матрица сравнений обратно-симметрична: + +$$a_{ij} = \frac{1}{a_{ji}}$$ + +## Этапы + +1. Описать проблему и цель. +2. Построить иерархию критериев и альтернатив. +3. Построить матрицы попарных сравнений. +4. Вычислить локальные приоритеты. +5. Проверить согласованность матриц. +6. Повторить сравнения для всех уровней. +7. Синтезировать глобальные приоритеты альтернатив. +8. Оценить согласованность всей иерархии. + +## Локальные приоритеты + +Для матрицы попарных сравнений веса можно приближённо вычислить как среднее геометрическое строк: + +$$w_j = \sqrt[n]{\prod_{l=1}^{n} a_{jl}}$$ + +После этого веса нормируются, чтобы получить вектор приоритетов. + +## Согласованность + +Полностью согласованная матрица обладает транзитивностью: + +$$a_{ij} = a_{ik}a_{kj}$$ + +На практике экспертные суждения обычно не полностью согласованы, поэтому считают индекс согласованности: + +$$CI = \frac{\lambda_{max} - n}{n - 1}$$ + +И отношение согласованности: + +$$CR = \frac{CI}{RI}$$ + +Обычно приемлемым считают $CR \le 10\%$. + +## Результат + +Итог МАИ — глобальные приоритеты альтернатив. Чем выше приоритет, тем предпочтительнее альтернатива в рамках построенной иерархической модели. + +## Связанные заметки +- [[Функция принадлежности]] diff --git a/90 Library/Math/Теория нечетких множеств/Логические операции над нечеткими множествами.md b/90 Library/Math/Теория нечетких множеств/Логические операции над нечеткими множествами.md index 74a3f60..4c82ebf 100644 --- a/90 Library/Math/Теория нечетких множеств/Логические операции над нечеткими множествами.md +++ b/90 Library/Math/Теория нечетких множеств/Логические операции над нечеткими множествами.md @@ -1,12 +1,14 @@ --- -status: seed +status: processing type: concept tags: - math + - mephi - fuzzy-sets created: 2025-12-17 -updated: 2026-05-07 +updated: 2026-05-29 title: Логические операции над нечеткими множествами +source: "[[МИАД_Л1.pdf]]" --- # Логические операции над нечеткими множествами @@ -37,7 +39,60 @@ title: Логические операции над нечеткими множ ## Разность Разностью двух множеств называется множество $A - B = A \cap \overline{B}$ с функцией принадлежности: $$\mu_{A-B}(u)=\mu_{A \cap \overline{B}}(u) = \min(\mu_{A}(u),\mu_{\overline{B}}(u)) = \min(\mu_{A}(u), 1-\mu_{B}(u))$$ +## Дизъюнктивная сумма + +Дизъюнктивная сумма: + +$$A \oplus B = (A \cap \overline{B}) \cup (\overline{A} \cap B)$$ + +$$\mu_{A \oplus B}(u) = \max(\min(\mu_A(u), 1 - \mu_B(u)), \min(1 - \mu_A(u), \mu_B(u)))$$ + +## Свойства + +Для конъюнкции и дизъюнкции выполняются: +- коммутативность; +- ассоциативность; +- идемпотентность; +- дистрибутивность; +- инволюция; +- законы де Моргана. + +Не выполняются классические свойства дополнения: + +$$A \cup \overline{A} \ne U$$ + +$$A \cap \overline{A} \ne \varnothing$$ + +## Алгебраические операции + +Алгебраическое произведение: + +$$\mu_{A \cdot B}(u) = \mu_A(u)\mu_B(u)$$ + +Алгебраическая сумма: + +$$\mu_{A + B}(u) = \mu_A(u) + \mu_B(u) - \mu_A(u)\mu_B(u)$$ + +Степень нечеткого множества: + +$$\mu_{A^\alpha}(u) = \mu_A^\alpha(u)$$ + +При $\alpha = 2$ получается концентрирование, при $\alpha = 0.5$ — растяжение. + +## Нечеткие операторы + +Операции объединения, пересечения и отрицания можно обобщать разными способами. + +Треугольная норма — обобщение конъюнкции. Примеры: минимум, алгебраическое произведение, t-норма Лукасевича. + +Треугольная конорма — обобщение дизъюнкции. Примеры: максимум, алгебраическая сумма, t-конорма Лукасевича. + +Основные пары операций: +- логика Заде — `min` и `max`; +- вероятностная логика — алгебраическое произведение и алгебраическая сумма; +- логика Лукасевича — t-норма и t-конорма Лукасевича. + ## Связанные заметки - [[Линейные модели]] — линейная разделимость в ML (жёсткая граница) vs нечёткие операции (мягкая граница); оба решают задачу разделения классов - [[Функция принадлежности]] — операции определены через μ - +- [[Нечеткий вывод]] — разные импликации используют разные операции над функциями принадлежности diff --git a/90 Library/Math/Теория нечетких множеств/Нечеткие отношения.md b/90 Library/Math/Теория нечетких множеств/Нечеткие отношения.md new file mode 100644 index 0000000..f192644 --- /dev/null +++ b/90 Library/Math/Теория нечетких множеств/Нечеткие отношения.md @@ -0,0 +1,61 @@ +--- +status: seed +type: concept +tags: + - math + - mephi + - fuzzy-sets +created: 2026-05-29 +updated: 2026-05-29 +title: Нечеткие отношения +source: "[[МИАД_Л2.pdf]]" +--- + +# Нечеткие отношения + +Нечеткое отношение $R$ на универсальном множестве $U = U_1 \times U_2$ — это нечеткое подмножество декартова произведения с функцией принадлежности: + +$$\mu_R(x, y): U_1 \times U_2 \to [0, 1]$$ + +Значение $\mu_R(x, y)$ трактуется как субъективная мера выполнения отношения $xRy$. + +## Отличие от четкого отношения + +Четкое бинарное отношение отвечает на вопрос «связаны элементы или нет». Нечеткое отношение показывает силу связи: например, вес дуги во взвешенном графе. + +Примеры: +- «$x$ и $y$ близкие числа»; +- «$x$ намного больше $y$»; +- качественные связи между объектами системы, где простое да/нет теряет информацию. + +## Способы задания + +Для конечных универсумов отношение удобно задавать матрицей: строки соответствуют элементам $U_1$, столбцы — элементам $U_2$, значения ячеек — степеням принадлежности. + +Для счетных или конечных множеств отношение также можно интерпретировать как взвешенный граф. + +## Операции + +На нечеткие отношения переносятся операции для [[Логические операции над нечеткими множествами|нечетких множеств]]: +- носитель: пары, для которых $\mu_R(x, y) > 0$; +- объединение; +- пересечение; +- отрицание; +- отношение уровня $\alpha$: пары, для которых $\mu_R(x, y) \ge \alpha$. + +## Композиции отношений + +Основные композиции: + +$$\mu_{AB}(x, z) = \max_y \min(\mu_A(x, y), \mu_B(y, z))$$ + +$$\mu_{A \circ B}(x, z) = \min_y \max(\mu_A(x, y), \mu_B(y, z))$$ + +$$\mu_{A * B}(x, z) = \sup_y \mu_A(x, y)\mu_B(y, z)$$ + +Максиминная композиция особенно важна для [[Нечеткий вывод|нечеткого вывода]]. + +## Связанные заметки +- [[Теория нечетких множеств]] +- [[Функция принадлежности]] +- [[Нечеткий вывод]] diff --git a/90 Library/Math/Теория нечетких множеств/Нечеткий вывод.md b/90 Library/Math/Теория нечетких множеств/Нечеткий вывод.md new file mode 100644 index 0000000..54511ac --- /dev/null +++ b/90 Library/Math/Теория нечетких множеств/Нечеткий вывод.md @@ -0,0 +1,69 @@ +--- +status: seed +type: concept +tags: + - math + - mephi + - fuzzy-sets +created: 2026-05-29 +updated: 2026-05-29 +title: Нечеткий вывод +source: "[[МИАД_Л3_нечеткий_вывод.pdf]]" +--- + +# Нечеткий вывод + +Нечеткий логический вывод — это аппроксимация зависимости выходной лингвистической переменной от входных переменных через базу знаний и операции над нечеткими множествами. + +## Нечеткая и лингвистическая переменная + +Нечеткая переменная задаётся кортежем $\langle X, U, \tilde{X} \rangle$, где: +- $X$ — имя переменной; +- $U$ — универсум; +- $\tilde{X}$ — нечеткое множество, ограничивающее значения переменной. + +Лингвистическая переменная задаётся кортежем $\langle \beta, T, U, G, M \rangle$, где: +- $\beta$ — имя переменной; +- $T$ — терм-множество; +- $U$ — универсум; +- $G$ — синтаксическая процедура образования новых значений; +- $M$ — семантическая процедура, сопоставляющая значениям нечеткие переменные. + +Например, значения лингвистической переменной «возраст»: «молодой», «среднего возраста», «пожилой». + +## Импликация + +В нечеткой логике импликация может задаваться разными способами. В лекции используются: +- импликация Мамдани — минимум функций принадлежности; +- импликация Ларсена — произведение функций принадлежности. + +## Композиционное правило вывода + +Если $A$ — нечеткое подмножество универсума $U$, а $F$ — нечеткое подмножество $U \times V$, то результат вывода: + +$$B = A \circ F$$ + +При импликации Мамдани обычно используется максиминная композиция: + +$$\mu_B(v) = \max_u \min(\mu_A(u), \mu_F(u, v))$$ + +## Этапы нечеткого вывода + +1. Фаззификация — вычисление степени истинности предпосылок правил для конкретных входных значений. +2. Импликация — применение степени истинности предпосылки к заключению правила. +3. Композиция — объединение результатов правил в одно нечеткое множество для выходной переменной. +4. Дефаззификация — необязательное преобразование нечеткого результата в четкое значение. + +## Алгоритмы + +**Мамдани:** заключение правила отсекается минимумом, результаты правил объединяются максимумом. + +**Ларсен:** заключение масштабируется произведением, композиция может выполняться максимумом или суммированием. + +**Цукамото:** заключения должны иметь монотонные функции принадлежности; для каждого правила получается четкое значение, итог считается как взвешенное среднее. + +## Связанные заметки +- [[Теория нечетких множеств]] +- [[Нечеткие отношения]] +- [[Функция принадлежности]] +- [[Логические операции над нечеткими множествами]] diff --git a/90 Library/Math/Теория нечетких множеств/Определение нечеткого множества.md b/90 Library/Math/Теория нечетких множеств/Определение нечеткого множества.md index dfac22f..231c4dd 100644 --- a/90 Library/Math/Теория нечетких множеств/Определение нечеткого множества.md +++ b/90 Library/Math/Теория нечетких множеств/Определение нечеткого множества.md @@ -1,12 +1,14 @@ --- -status: seed +status: processing type: concept tags: - math + - mephi - fuzzy-sets created: 2026-02-17 -updated: 2026-05-07 +updated: 2026-05-29 title: Определение Нечеткого Множества +source: "[[МИАД_Л1.pdf]]" --- # Определение Нечеткого Множества @@ -21,6 +23,10 @@ title: Определение Нечеткого Множества Нечеткое множество $A$ на универсуме ($U$) - это совокупность пар вида $u,\mu_{A}(u)$, где $\mu_{A}(u)$ - [[Функция принадлежности|функция принадлежности]] нечеткого множества $A:U \to [0,1]$. +Нечеткая логика удобна, когда нужно формализовать качественные понятия естественного языка: «большой», «молодой», «популярный». Такое понятие сначала задаётся функцией принадлежности, а затем используется как математический объект. + +Плюс подхода — описание задачи языком, близким к естественному. Минус — зависимость модели от ЛПР или экспертов: вид и параметры функции принадлежности выбираются субъективно. + Примеры: 1) $U = (a,b,c,d,e,f)$, то $A = (\frac{0}{a},\frac{1}{b}, \frac{0.5}{c}, \dots)$ 2) $U=\{a,b,c,d,e\};\ A=\{\{a,0\}, \{b,0.1\},\{c,0.5\},\{d,0.9\},\{e,1\}\};$ diff --git a/90 Library/Math/Теория нечетких множеств/Теория нечетких множеств.md b/90 Library/Math/Теория нечетких множеств/Теория нечетких множеств.md index 42ec043..a580d44 100644 --- a/90 Library/Math/Теория нечетких множеств/Теория нечетких множеств.md +++ b/90 Library/Math/Теория нечетких множеств/Теория нечетких множеств.md @@ -1,12 +1,12 @@ --- -status: stable +status: processing type: moc tags: - math - mephi - fuzzy-sets created: 2026-05-02 -updated: 2026-05-07 +updated: 2026-05-29 title: Теория Нечетких Множеств --- @@ -16,6 +16,8 @@ title: Теория Нечетких Множеств - [[Доказательство законов Де Моргана]] - [[Коэффициенты функций принадлежности]] - [[Логические операции над нечеткими множествами]] +- [[Нечеткие отношения]] +- [[Нечеткий вывод]] - [[Определение нечеткого множества]] - [[Функция принадлежности]] diff --git a/90 Library/Math/Теория нечетких множеств/Функция принадлежности.md b/90 Library/Math/Теория нечетких множеств/Функция принадлежности.md index c82e520..ef7135c 100644 --- a/90 Library/Math/Теория нечетких множеств/Функция принадлежности.md +++ b/90 Library/Math/Теория нечетких множеств/Функция принадлежности.md @@ -1,13 +1,16 @@ --- -status: stable +status: processing type: concept tags: - math - mephi - fuzzy-sets created: 2026-02-17 -updated: 2026-05-07 +updated: 2026-05-29 title: Функция принадлежности +source: + - "[[МИАД_Л1.pdf]]" + - "[[МИАД_Л2.pdf]]" --- # Функция принадлежности @@ -17,6 +20,15 @@ title: Функция принадлежности - **Прямые** - эксперт самостоятельно задает функцию. (исп. для измеримых понятий - рост, время, скорость и т.д.) - **Косвенные** - характеристики выделяются исходя из попарных сравнений объектов. +Перед построением функции принадлежности важно понять шкалу измерения признака: +- номинальная — категории без порядка; +- порядковая — категории упорядочены, но расстояния между ними не интерпретируются; +- интервальная — имеют смысл разности значений; +- относительная — имеют смысл и разности, и отношения; +- дихотомическая — частный случай номинальной шкалы с двумя значениями. + +Прямые методы обычно применяются для признаков в относительной шкале. Косвенные методы применяются, когда данные качественные или категориальные; распространённый вариант — парные сравнения по шкале Саати. + ## Типовые формы кривых ### Треугольная (trimf) @@ -42,4 +54,3 @@ title: Функция принадлежности ## Связанные заметки - [[Метрические алгоритмы]] — $\hat{P}_c(x)$ в kNN возвращает значение в [0,1], аналогично μ_A; оба представляют "мягкую" принадлежность классу - [[Линейные модели]] — сигмоидальная функция принадлежности = та же сигмоида в логистической регрессии - diff --git a/90 Library/Programming/Ruby On Rails/Capistrano deploy через systemd.md b/90 Library/Programming/Ruby On Rails/Capistrano deploy через systemd.md new file mode 100644 index 0000000..6b83957 --- /dev/null +++ b/90 Library/Programming/Ruby On Rails/Capistrano deploy через systemd.md @@ -0,0 +1,42 @@ +--- +status: seed +type: guide +tags: + - programming + - ruby-on-rails + - deploy +created: 2026-05-29 +updated: 2026-05-29 +title: Capistrano deploy через systemd +source: "[[Команды для деплоя с помощью Capistrano]]" +--- + +# Capistrano deploy через systemd + +Заметка про выдачу минимальных `sudo`-прав для деплоя Rails-приложения через Capistrano, когда сервисы управляются через `systemd`. + +## Sudoers + +В `/etc/sudoers` задаётся alias для команд, которые Capistrano может выполнять без пароля: + +```sudoers +Cmnd_Alias PUMA_CONTROL = /usr/bin/mv /tmp/navigation_backend_puma_production.service /etc/systemd/system/, /usr/bin/mv /tmp/navigation_backend_puma_production.socket /etc/systemd/system/, /bin/systemctl daemon-reload, /bin/systemctl enable navigation_backend_puma_production, /bin/systemctl start navigation_backend_puma_production, /bin/systemctl stop navigation_backend_puma_production, /bin/systemctl restart navigation_backend_puma_production, /bin/systemctl enable navigation_backend_puma_production.socket, /bin/systemctl restart navigation_backend_sidekiq_production.service, /bin/systemctl restart navigation_backend_solid_queue_production.service, /bin/systemctl restart solid_queue +deploy ALL = NOPASSWD: PUMA_CONTROL +``` + +Где: +- `deploy` — пользователь, от имени которого выполняется деплой; +- `navigation_backend` — имя приложения в service/socket unit-файлах. + +## Команды деплоя + +```bash +cap production puma:install +cap production deploy +``` + +`puma:install` кладёт `systemd` unit-файлы, после чего `deploy` перезапускает Puma и фоновые сервисы без интерактивного ввода пароля. + +## Связанные заметки +- [[Ruby On Rails]] +- [[Sidekiq - основа работы]] diff --git a/90 Library/Programming/Ruby On Rails/Ruby On Rails.md b/90 Library/Programming/Ruby On Rails/Ruby On Rails.md index 2b07959..1653d38 100644 --- a/90 Library/Programming/Ruby On Rails/Ruby On Rails.md +++ b/90 Library/Programming/Ruby On Rails/Ruby On Rails.md @@ -1,11 +1,11 @@ --- -status: stable +status: processing type: moc tags: - programming - ruby-on-rails created: 2025-12-17 -updated: 2026-05-07 +updated: 2026-05-29 title: Ruby On Rails --- @@ -14,6 +14,7 @@ title: Ruby On Rails %% Begin Waypoint %% - [[Active Storage]] - [[API импорт в Rails через runner]] +- [[Capistrano deploy через systemd]] - [[Rails credentials edit не открывает редактор]] - [[Sidekiq - основа работы]] diff --git a/00 Inbox/Команды для деплоя с помощью Capistrano.md b/99 System/Archive/Команды для деплоя с помощью Capistrano.md similarity index 100% rename from 00 Inbox/Команды для деплоя с помощью Capistrano.md rename to 99 System/Archive/Команды для деплоя с помощью Capistrano.md diff --git a/00 Inbox/МИАД_Л1.pdf b/99 System/Archive/МИАД_Л1.pdf similarity index 100% rename from 00 Inbox/МИАД_Л1.pdf rename to 99 System/Archive/МИАД_Л1.pdf diff --git a/00 Inbox/МИАД_Л2.pdf b/99 System/Archive/МИАД_Л2.pdf similarity index 100% rename from 00 Inbox/МИАД_Л2.pdf rename to 99 System/Archive/МИАД_Л2.pdf diff --git a/00 Inbox/МИАД_Л3_нечеткий_вывод.pdf b/99 System/Archive/МИАД_Л3_нечеткий_вывод.pdf similarity index 100% rename from 00 Inbox/МИАД_Л3_нечеткий_вывод.pdf rename to 99 System/Archive/МИАД_Л3_нечеткий_вывод.pdf diff --git a/00 Inbox/МИАД_Л4_иерархии.pdf b/99 System/Archive/МИАД_Л4_иерархии.pdf similarity index 100% rename from 00 Inbox/МИАД_Л4_иерархии.pdf rename to 99 System/Archive/МИАД_Л4_иерархии.pdf diff --git a/INDEX.md b/INDEX.md index 930c12b..7f45cdb 100644 --- a/INDEX.md +++ b/INDEX.md @@ -1,6 +1,6 @@ --- -generated: 2026-05-26 -total: 456 +generated: 2026-05-29 +total: 461 --- # Vault Index @@ -11,10 +11,10 @@ total: 456 | Параметр | Значение | |----------|----------| -| Всего заметок | 456 | -| status: processing | 34 | -| status: seed | 217 | -| status: stable | 112 | +| Всего заметок | 461 | +| status: processing | 39 | +| status: seed | 220 | +| status: stable | 109 | | status: — | 93 | ## Заметки @@ -197,7 +197,7 @@ total: 456 | `04 Tools/StudyTracker/StudyTracker.md` | 🎓 Трекер Обучения | stable | database | tracker, education | | `04 Tools/🛠️ Неоконченные заметки.md` | 🛠️ Неоконченные заметки | stable | database | dashboard | -### 90 Library (229) +### 90 Library (233) | `90 Library/Containers/Apache Mesos.md` | Apache Mesos | stable | concept | devops, containerization | | `90 Library/Containers/Docker Swarm.md` | Docker Swarm | stable | concept | devops, containerization, docker | @@ -255,8 +255,8 @@ total: 456 | `90 Library/Finance/Налоги/Методы признания доходов и расходов.md` | Методы Признания Доходов И Расходов | seed | concept | finance, taxes | | `90 Library/Finance/Налоги/Налог на добавленную стоимость.md` | Налог На Добавленную Стоимость | seed | concept | mephi, finance, taxes | | `90 Library/Finance/Налоги/Налог на доходы физических лиц (НДФЛ).md` | Налог На Доходы Физических Лиц (НДФЛ) | processing | concept | mephi, tax, finance, taxes, ndfl | -| `90 Library/Finance/Налоги/Налог на имущество ФЛ.md` | Налог На Имущество ФЛ | seed | concept | finance, taxes | | `90 Library/Finance/Налоги/Налог на имущество организаций.md` | Налог На Имущество Организаций | seed | concept | finance, taxes | +| `90 Library/Finance/Налоги/Налог на имущество ФЛ.md` | Налог На Имущество ФЛ | seed | concept | finance, taxes | | `90 Library/Finance/Налоги/Налог на прибыль.md` | Налог На Прибыль | seed | concept | finance, taxes, profit-tax | | `90 Library/Finance/Налоги/Налоговая декларация.md` | Налоговая Декларация | processing | concept | mephi, tax, finance, taxes | | `90 Library/Finance/Налоги/Налоговая нагрузка.md` | Налоговая Нагрузка | seed | concept | finance, taxes | @@ -302,6 +302,7 @@ total: 456 | `90 Library/Machine Learning/Предобработка данных для нейронных сетей.md` | Предобработка данных для нейронных сетей | seed | concept | machine-learning, neural-networks, preprocessing, normalization | | `90 Library/Machine Learning/Сеть Хопфилда.md` | Сеть Хопфилда | seed | concept | machine-learning, neural-networks, associative-memory | | `90 Library/Machine Learning/Сеть Хэмминга.md` | Сеть Хэмминга | seed | concept | machine-learning, neural-networks, associative-memory | +| `90 Library/Math/Метод анализа иерархий.md` | Метод анализа иерархий | seed | concept | math, mephi, decision-making | | `90 Library/Math/Статистика/Временные ряды/TS и DS ряды.md` | TS И DS Ряды | stable | concept | math, mephi, ml, statistics, time-series | | `90 Library/Math/Статистика/Временные ряды/Автокорреляционная (ACF) и частная автокорреляционная (PACF) функции.md` | Автокорреляционная (ACF) И Частная Автокорреляционная (PACF) Функции | processing | concept | math, mephi, statistics, time-series, autocorrelation | | `90 Library/Math/Статистика/Временные ряды/Автокорреляционная функция (АКФ).md` | Автокорреляционная Функция (АКФ) | stable | concept | math, ml, mephi, statistics, time-series, autocorrelation | @@ -369,10 +370,12 @@ total: 456 | `90 Library/Math/Статистика/Факторный анализ/Этапы ФА. Выделение факторов.md` | Этапы ФА. Выделение Факторов | seed | concept | math, mephi, statistics, factor-analysis | | `90 Library/Math/Теория нечетких множеств/Доказательство законов Де Моргана.md` | Доказательство законов Де Моргана | seed | concept | math, fuzzy-sets | | `90 Library/Math/Теория нечетких множеств/Коэффициенты функций принадлежности.md` | Коэффициенты функций принадлежности | seed | concept | math, mephi, fuzzy-sets | -| `90 Library/Math/Теория нечетких множеств/Логические операции над нечеткими множествами.md` | Логические операции над нечеткими множествами | seed | concept | math, fuzzy-sets | -| `90 Library/Math/Теория нечетких множеств/Определение нечеткого множества.md` | Определение Нечеткого Множества | seed | concept | math, fuzzy-sets | -| `90 Library/Math/Теория нечетких множеств/Теория нечетких множеств.md` | Теория Нечетких Множеств | stable | moc | math, mephi, fuzzy-sets | -| `90 Library/Math/Теория нечетких множеств/Функция принадлежности.md` | Функция принадлежности | stable | concept | math, mephi, fuzzy-sets | +| `90 Library/Math/Теория нечетких множеств/Логические операции над нечеткими множествами.md` | Логические операции над нечеткими множествами | processing | concept | math, mephi, fuzzy-sets | +| `90 Library/Math/Теория нечетких множеств/Нечеткие отношения.md` | Нечеткие отношения | seed | concept | math, mephi, fuzzy-sets | +| `90 Library/Math/Теория нечетких множеств/Нечеткий вывод.md` | Нечеткий вывод | seed | concept | math, mephi, fuzzy-sets | +| `90 Library/Math/Теория нечетких множеств/Определение нечеткого множества.md` | Определение Нечеткого Множества | processing | concept | math, mephi, fuzzy-sets | +| `90 Library/Math/Теория нечетких множеств/Теория нечетких множеств.md` | Теория Нечетких Множеств | processing | moc | math, mephi, fuzzy-sets | +| `90 Library/Math/Теория нечетких множеств/Функция принадлежности.md` | Функция принадлежности | processing | concept | math, mephi, fuzzy-sets | | `90 Library/Networking/Ethernet.md` | Ethernet | stable | concept | network, networking, ethernet | | `90 Library/Networking/LAN vs WAN.md` | LAN Vs WAN | stable | concept | network, networking | | `90 Library/Networking/MAC-адрес.md` | MAC-адрес | stable | concept | networking | @@ -421,15 +424,16 @@ total: 456 | `90 Library/Other/Сканер отпечатка пальцев.md` | Сканер Отпечатка Пальцев | processing | knowledge | other | | `90 Library/Programming/Ruby - массивы.md` | Ruby - массивы | processing | knowledge | programming, ruby | | `90 Library/Programming/Ruby - основы языка.md` | Ruby - основы языка | processing | knowledge | programming, ruby | -| `90 Library/Programming/Ruby On Rails/API импорт в Rails через runner.md` | API импорт в Rails через runner | seed | guide | programming, ruby-on-rails, api | | `90 Library/Programming/Ruby On Rails/Active Storage.md` | Active Storage | processing | concept | programming, ruby-on-rails | +| `90 Library/Programming/Ruby On Rails/API импорт в Rails через runner.md` | API импорт в Rails через runner | seed | guide | programming, ruby-on-rails, api | +| `90 Library/Programming/Ruby On Rails/Capistrano deploy через systemd.md` | Capistrano deploy через systemd | seed | guide | programming, ruby-on-rails, deploy | | `90 Library/Programming/Ruby On Rails/Rails credentials edit не открывает редактор.md` | Rails credentials edit не открывает редактор | seed | guide | programming, ruby-on-rails, debug | -| `90 Library/Programming/Ruby On Rails/Ruby On Rails.md` | Ruby On Rails | stable | moc | programming, ruby-on-rails | +| `90 Library/Programming/Ruby On Rails/Ruby On Rails.md` | Ruby On Rails | processing | moc | programming, ruby-on-rails | | `90 Library/Programming/Ruby On Rails/Sidekiq - основа работы.md` | Sidekiq - Основа Работы | processing | concept | programming, ruby-on-rails | | `90 Library/Sport/L-карнитин.md` | L-карнитин | seed | concept | gym, БАД, sport, supplements | | `90 Library/Sport/Креатин.md` | Креатин | seed | concept | gym, БАД, sport | -### 99 System (59) +### 99 System (60) | `99 System/Archive/31, 32 - Налоги 1.md` | 31, 32 - Налоги | seed | knowledge | study, taxes | | `99 System/Archive/31, 32 - Налоги.md` | 31, 32 - Налоги | seed | knowledge | study, taxes | @@ -441,21 +445,22 @@ total: 456 | `99 System/Archive/Infrastructure.md` | Infrastructure | seed | concept | — | | `99 System/Archive/OSINT - Зачет.md` | OSINT - Зачет | processing | knowledge | mephi, study, osi | | `99 System/Archive/Rails credentials edit не открывает редактор.md` | Rails credentials edit не открывает редактор | seed | concept | — | +| `99 System/Archive/reader.md` | — | seed | concept | — | | `99 System/Archive/Ruby - массивы.md` | Ruby - массивы | seed | concept | — | | `99 System/Archive/Ruby - основы языка.md` | Ruby - основы языка | seed | concept | — | | `99 System/Archive/Upgrade Homelab.md` | Upgrade Homelab | processing | project | homelab, hardware | -| `99 System/Archive/reader.md` | — | seed | concept | — | | `99 System/Archive/Алгоритм обратного распространения ошибки для произвольного числа слоев НС.md` | Алгоритм обратного распространения ошибки для произвольного числа слоев НС | seed | concept | — | | `99 System/Archive/Алгоритм обучения сети Кохонена.md` | Алгоритм обучения сети Кохонена | seed | concept | — | | `99 System/Archive/Анализ типа фин. устойчивости.md` | Анализ типа фин. устойчивости | seed | concept | — | | `99 System/Archive/В случае ошибок на принтере Kyocera FS-1020MFP.md` | В случае ошибок на принтере Kyocera FS-1020MFP | seed | concept | — | -| `99 System/Archive/ВДО no кредитам.md` | — | seed | concept | — | | `99 System/Archive/Введение в сетевую безопасность.md` | Введение в сетевую безопасность | processing | concept | — | +| `99 System/Archive/ВДО no кредитам.md` | — | seed | concept | — | | `99 System/Archive/Знания Ruby.md` | Знания Ruby | seed | concept | — | | `99 System/Archive/Идеи для статьи.md` | Идеи Для Статьи | — | — | — | | `99 System/Archive/Идея сети кохонена.md` | Идея сети кохонена | seed | concept | — | | `99 System/Archive/Идея.md` | — | seed | concept | — | | `99 System/Archive/Итераторы для обработки массивов Ruby.md` | Итераторы для обработки массивов Ruby | seed | concept | — | +| `99 System/Archive/Команды для деплоя с помощью Capistrano.md` | — | seed | concept | — | | `99 System/Archive/КР - Кохонен.md` | КР - Кохонен | seed | concept | — | | `99 System/Archive/КР - Персептрон.md` | КР - Персептрон | seed | concept | — | | `99 System/Archive/КР - Хопфилд.md` | КР - Хопфилд | seed | concept | — | @@ -469,8 +474,8 @@ total: 456 | `99 System/Archive/Подготовка Speaking.md` | Подготовка Speaking | seed | concept | — | | `99 System/Archive/Подготовка к защите ЛР2.md` | Подготовка к защите ЛР2 | processing | lab | mephi | | `99 System/Archive/Поздравления с НГ.md` | — | processing | lab | — | -| `99 System/Archive/РИАС - база.md` | РИАС - База | seed | knowledge | mephi, study | | `99 System/Archive/Работа с API для проекта Attendance Mephi.md` | — | seed | concept | — | +| `99 System/Archive/РИАС - база.md` | РИАС - База | seed | knowledge | mephi, study | | `99 System/Archive/Сети Хопфилда и Хэмминга.md` | Сети Хопфилда и Хэмминга | seed | concept | — | | `99 System/Archive/Сравнение хранилищ секретов.md` | Сравнение Хранилищ Секретов | seed | knowledge | il | | `99 System/Archive/УИР.md` | УИР | seed | concept | — |