Files
SecondBrain/.obsidian/workspace.json
T
2026-05-28 13:20:40 +03:00

422 lines
120 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"main": {
"id": "5324373015726ba8",
"type": "split",
"children": [
{
"id": "7285c3349cfcdac4",
"type": "tabs",
"children": [
{
"id": "44e5aceda7b172df",
"type": "leaf",
"pinned": true,
"state": {
"type": "terminal:terminal",
"state": {
"terminal:terminal": {
"cwd": "/home/ada/Documents/Vaults/SecondBrain",
"focus": false,
"profile": {
"args": [
"--login"
],
"executable": "/usr/bin/zsh",
"followTheme": true,
"name": "ZSH",
"platforms": {
"darwin": false,
"linux": true
},
"pythonExecutable": "python3",
"restoreHistory": true,
"rightClickAction": "copyPaste",
"successExitCodes": [
"0",
"SIGINT",
"SIGTERM"
],
"terminalOptions": {
"fontFamily": "FiraCode Nerd Font Mono",
"documentOverride": null
},
"type": "integrated",
"useWin32Conhost": false
},
"profileSourceId": "7004edff-76db-412f-95d3-5fd8e180d055",
"serial": {
"columns": 109,
"data": "\r\n\u001b[2m╭───────────────────────────────────────────────────╮\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 NEW: Codex can now generate and use memories. Try it now with \u001b[36m/memories\r\n\r\n\u001b[39;48;5;239m\u001b[109X\r\n\u001b[1;2m \u001b[22;22mingest\u001b[101X\r\n\u001b[109X\r\n\u001b[0m\r\n\u001b[2m• \u001b[0mСначала проверю \u001b[36mINDEX.md\u001b[0m, входящие файлы и доступные шаблоны. После этого дам план ingest и остановлюсь на\r\n подтверждение перед правками.\r\n\r\n\u001b[2m•\u001b[0m \u001b[1mExplored\r\n\u001b[22;2m └ \u001b[36;22mRead\u001b[0m INDEX.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 grep\u001b[38;2;147;153;178m --\u001b[38;2;235;160;172mfiles\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m'99 System/Template'\r\n\u001b[39;2m └ /usr/bin/grep: option '--files' is ambiguous; possibilities: '--files-with-matches'\r\n\u001b[0m \u001b[2m'--files-without-match'\r\n\u001b[0m \u001b[2mUsage: grep [OPTION]... PATTERNS [FILE]...\r\n\u001b[0m \u001b[2mTry 'grep --help' for more information.\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;172mfiles\u001b[38;2;205;214;244m \u001b[38;2;166;227;161m'00 Inbox'\r\n\u001b[39;2m └ /usr/bin/grep: option '--files' is ambiguous; possibilities: '--files-with-matches'\r\n\u001b[0m \u001b[2m'--files-without-match'\r\n\u001b[0m \u001b[2mUsage: grep [OPTION]... PATTERNS [FILE]...\r\n\u001b[0m \u001b[2mTry 'grep --help' for more information.\r\n\r\n─────────────────────────────────────────────────────────────────────────────────────────────────────────────\r\n\r\n• \u001b[36;22mrg\u001b[0m в этом окружении подменён на \u001b[36mgrep\u001b[0m, поэтому для списка файлов перехожу на \u001b[36mfind\u001b[0m. Индекс прочитан частично,\r\n этого достаточно, чтобы сверить существующие темы после просмотра inbox.\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 find \u001b[38;2;166;227;161m'99 System/Template'\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mtype\u001b[38;2;205;214;244m f\r\n\u001b[39;2m └ 5F 1D:\r\n\r\n\u001b[0m \u001b[2m./ Base Note.md Contact Template.md Daily Note.md Study Item.md Travel Item.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 find \u001b[38;2;166;227;161m'01 Ideas'\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mtype\u001b[38;2;205;214;244m f\r\n\u001b[39;2m └ 1F 1D:\r\n\r\n\u001b[0m \u001b[2m./ Идея от 2026-05-14.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 find \u001b[38;2;166;227;161m'00 Inbox'\u001b[38;2;147;153;178m -\u001b[38;2;235;160;172mtype\u001b[38;2;205;214;244m f\r\n\u001b[39;2m └ 3F 1D:\r\n\r\n\u001b[0m \u001b[2m./ В случае ошибок на принтере Kyocera FS-1020MFP.md Знания Ruby.md Итераторы для обработки массивов\r\n\u001b[0m \u001b[2mRuby.md\r\n\r\n\u001b[31;1;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[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/Template'\u001b[38;2;205;214;244m -maxdepth 1 -type f -print\r\n\u001b[39;2m └ 99 System/Template/Daily Note.md\r\n\u001b[0m \u001b[2m99 System/Template/Base Note.md\r\n\u001b[0m \u001b[2m99 System/Template/Contact Template.md\r\n\u001b[0m \u001b[2m99 System/Template/Travel Item.md\r\n\u001b[0m \u001b[2m99 System/Template/Study Item.md\r\n\r\n\u001b[32;1;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 └ 00 Inbox/В случае ошибок на принтере Kyocera FS-1020MFP.md\r\n\u001b[0m \u001b[2m00 Inbox/Итераторы для обработки массивов Ruby.md\r\n\u001b[0m \u001b[2m00 Inbox/Знания Ruby.md\r\n\r\n─────────────────────────────────────────────────────────────────────────────────────────────────────────────\r\n\r\n• \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;1;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;1;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[1;22mViewed Image\r\n\u001b[22;2m └ 99 System/Cache/Pasted image 20260526203807.png\r\n\r\n• \u001b[1;22mViewed Image\r\n\u001b[22;2m └ 99 System/Cache/Pasted image 20260526203848.png\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/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;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/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;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;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: \"<page url>\"\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;1;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;1;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;1;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[1;22mEdited\u001b[0m 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;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/Итераторы для обработки массивов 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;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/В случае ошибок на принтере 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;1;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[1;22mAdded\u001b[0m /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 <module>\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[1;22mEdited\u001b[0m /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;1;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;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;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;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\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[1;22mEdited\u001b[0m 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[22m \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\u001b[2A\u001b[50D\u001b[0m",
"rows": 31,
"scrollLine": -1
}
}
},
"pinned": true,
"icon": "terminal",
"title": "Terminal: SecondBrain"
}
},
{
"id": "df1bd513cd92a47d",
"type": "leaf",
"state": {
"type": "markdown",
"state": {
"file": "AGENTS.md",
"mode": "preview",
"source": false,
"backlinks": false
},
"icon": "lucide-file",
"title": "AGENTS"
}
},
{
"id": "1040e2dbdf162887",
"type": "leaf",
"state": {
"type": "markdown",
"state": {
"file": "AGENTS.md",
"mode": "source",
"source": false,
"backlinks": false
},
"icon": "lucide-file",
"title": "AGENTS"
}
},
{
"id": "9400008114670d00",
"type": "leaf",
"state": {
"type": "markdown",
"state": {
"file": "90 Library/HomeLab/Infrastructure — ada-dev.md",
"mode": "preview",
"source": false,
"backlinks": false
},
"icon": "lucide-file",
"title": "Infrastructure — ada-dev"
}
},
{
"id": "6c2844bb20623fd4",
"type": "leaf",
"state": {
"type": "markdown",
"state": {
"file": "AGENTS.md",
"mode": "preview",
"source": false,
"backlinks": false
},
"icon": "lucide-file",
"title": "AGENTS"
}
},
{
"id": "98b697a77d37adeb",
"type": "leaf",
"state": {
"type": "markdown",
"state": {
"file": "00 Inbox/Команды для деплоя с помощью Capistrano.md",
"mode": "preview",
"source": false,
"backlinks": false
},
"icon": "lucide-file",
"title": "Команды для деплоя с помощью Capistrano"
}
}
],
"currentTab": 5
}
],
"direction": "vertical"
},
"left": {
"id": "a9c2d5e65288011a",
"type": "split",
"children": [
{
"id": "383cca303cf4b57d",
"type": "tabs",
"children": [
{
"id": "27e6486165131cfa",
"type": "leaf",
"state": {
"type": "file-explorer",
"state": {
"sortOrder": "alphabetical",
"autoReveal": true
},
"icon": "lucide-folder-closed",
"title": "Files"
}
},
{
"id": "66079465678173e5",
"type": "leaf",
"state": {
"type": "search",
"state": {
"query": "tag:#gym",
"matchingCase": false,
"explainSearch": false,
"collapseAll": false,
"extraContext": false,
"sortOrder": "alphabetical"
},
"icon": "lucide-search",
"title": "Search"
}
},
{
"id": "c2541ce190da912e",
"type": "leaf",
"state": {
"type": "bookmarks",
"state": {},
"icon": "lucide-bookmark",
"title": "Bookmarks"
}
},
{
"id": "673ce6e6c09cfc9c",
"type": "leaf",
"state": {
"type": "tag",
"state": {
"sortOrder": "frequency",
"useHierarchy": true,
"showSearch": false,
"searchQuery": ""
},
"icon": "lucide-tags",
"title": "Tags"
}
}
]
}
],
"direction": "horizontal",
"width": 242.5
},
"right": {
"id": "38c591aa0966839e",
"type": "split",
"children": [
{
"id": "86a193b1d3159ff8",
"type": "tabs",
"dimension": 44.97282608695652,
"children": [
{
"id": "753db948dab04823",
"type": "leaf",
"pinned": true,
"state": {
"type": "calendar",
"state": {},
"pinned": true,
"icon": "lucide-ghost",
"title": "calendar"
}
},
{
"id": "394fb6e28d09b8f3",
"type": "leaf",
"state": {
"type": "all-properties",
"state": {
"sortOrder": "frequency",
"showSearch": false,
"searchQuery": ""
},
"icon": "lucide-archive",
"title": "All properties"
}
},
{
"id": "e51be669e29cd994",
"type": "leaf",
"state": {
"type": "backlink",
"state": {
"file": "03 Journal/2026/03 - March/31.03.26 - Tuesday.md",
"collapseAll": false,
"extraContext": false,
"sortOrder": "alphabetical",
"showSearch": false,
"searchQuery": "",
"backlinkCollapsed": false,
"unlinkedCollapsed": true
},
"icon": "links-coming-in",
"title": "Backlinks for 31.03.26 - Tuesday"
}
},
{
"id": "86ea4ddeaafff092",
"type": "leaf",
"state": {
"type": "outgoing-link",
"state": {
"file": "90 Library/02 DevOps/Контейнеризация/Docker/Docker - Дополнительные знания.md",
"linksCollapsed": false,
"unlinkedCollapsed": true
},
"icon": "links-going-out",
"title": "Outgoing links from Docker - Дополнительные знания"
}
},
{
"id": "a0ffd3bace615787",
"type": "leaf",
"state": {
"type": "outline",
"state": {
"file": "90 Library/11 Machine Learning/Обратное распространение ошибки.md",
"followCursor": false,
"showSearch": false,
"searchQuery": ""
},
"icon": "lucide-list",
"title": "Outline of Обратное распространение ошибки"
}
},
{
"id": "d0b123940c0cc598",
"type": "leaf",
"state": {
"type": "file-properties",
"state": {
"file": "00 Inbox/Git.md"
},
"icon": "lucide-info",
"title": "File properties for Git"
}
},
{
"id": "de69f2d686f1c18c",
"type": "leaf",
"state": {
"type": "excalidraw-sidepanel",
"state": {},
"icon": "excalidraw-icon",
"title": "Excalidraw Sidepanel"
}
}
],
"currentTab": 6
},
{
"id": "953ae0f10eedfdc6",
"type": "tabs",
"dimension": 55.02717391304348,
"children": [
{
"id": "294b81fcbc79c560",
"type": "leaf",
"pinned": true,
"state": {
"type": "graph",
"state": {},
"pinned": true,
"icon": "lucide-git-fork",
"title": "Graph view"
}
},
{
"id": "ecfba1f8b8cc0897",
"type": "leaf",
"state": {
"type": "git-view",
"state": {},
"icon": "git-pull-request",
"title": "Source Control"
}
}
],
"currentTab": 1
}
],
"direction": "horizontal",
"width": 261.5,
"collapsed": true
},
"left-ribbon": {
"hiddenItems": {
"switcher:Open quick switcher": false,
"graph:Open graph view": false,
"canvas:Create new canvas": false,
"daily-notes:Open today's daily note": false,
"templates:Insert template": false,
"command-palette:Open command palette": false,
"markdown-importer:Open format converter": false,
"random-note:Open random note": false,
"audio-recorder:Start/stop recording": false,
"bases:Create new base": false,
"omnisearch:Omnisearch": false,
"templater-obsidian:Templater": false,
"obsidian-git:Open Git source control": false,
"obsidian-excalidraw-plugin:New drawing": false,
"terminal:Open terminal": false
}
},
"active": "98b697a77d37adeb",
"lastOpenFiles": [
"AGENTS.md",
"90 Library/Programming/Ruby - основы языка.md",
"90 Library/Programming/Ruby - массивы.md",
"99 System/Archive/В случае ошибок на принтере Kyocera FS-1020MFP.md",
"99 System/Archive/Итераторы для обработки массивов Ruby.md",
"99 System/Archive/Знания Ruby.md",
"90 Library/Other/Kyocera FS-1020MFP — ошибки.md",
"00 Inbox/Знания Ruby.md",
"00 Inbox/Итераторы для обработки массивов Ruby.md",
"99 System/Cache/Pasted image 20260526204029.png",
"99 System/Cache/Pasted image 20260526203848.png",
"99 System/Cache/Pasted image 20260526203807.png",
"99 System/Archive/Работа с API для проекта Attendance Mephi.md",
"90 Library/Programming/Ruby On Rails/API импорт в Rails через runner.md",
"90 Library/HomeLab/Infrastructure — ada-dev.md",
"00 Inbox/Работа с API для проекта Attendance Mephi.md",
"INDEX.md",
"00 Inbox/Hello.md",
"00 Inbox/Подготовка Speaking.md",
"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/Archive/31, 32 - Налоги.md",
"99 System/Cache/Pasted image 20260521134256.png",
"99 System/Cache/Pasted image 20260521134238.png",
"99 System/Cache/Pasted image 20260521134228.png",
"99 System/Cache/Pasted image 20260521134207.png",
"99 System/Cache/Pasted image 20260521133832.png",
"99 System/Cache/Pasted image 20260521133824.png",
"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",
"99 System/Archive/eba27a8b-3c53-46ee-adc0-c9888ff705e1.pdf",
"99 System/Archive/eb2b3804-7372-434a-a89f-a1027dfa9ee3.pdf",
"99 System/Archive/e3621adb-fddb-45e8-bf26-6028a5ac5a71.pdf",
"99 System/Archive/d9e79104-3d7b-4aa8-b525-0a5ab36a9771.pdf",
"00 Inbox/Untitled.canvas"
]
}