Merge branch 'origin/main' into main

This commit is contained in:
2026-05-17 22:14:03 +06:00
75 changed files with 650 additions and 1124 deletions
+6
View File
@@ -24,6 +24,12 @@ F2nj2XGJRjp
Уважаемые жители. Началось подключение услуг "Ростелеком". Заявки на подключение принимаются по номерам: 89139220044 Сергей и 89137448791 Иван.
Lucky Park
## Пожарная обработка
Ниомид — пожарообработка
Адрес: Станционная
Сайт: pilmatgost.ru
## Стоянка
0700756584 3к/мес
@@ -0,0 +1,20 @@
---
title: Алтай — заявление на замену счётчика
tags:
- family
- altai
- utilities
- todo
updated: '2026-05-17'
---
## Замена счётчика на Алтае
Подать через ЛК заявление на замену счётчика (на столбе).
**Основание:** ФЗ 522 — неисправность счётчика.
**Признаки неисправности:** при включении нескольких приборов — трещит, появляется запах.
## Связанные заметки
- [[family/documents/altai-house-inventory]]
+22
View File
@@ -15,6 +15,28 @@ related: "[[family/documents/altai-shopping]]"
- [ ] Ступень 1200х300х40 х6
- [ ] КИВ
## Гараж (замеры)
- Гараж от забора: 4700 мм, ширина гаража: 4500 мм
- Яма (колея траверсы): 790–1040 мм
- Длина на машину: 5.5 м
- Гараж Марьясовых — задний бампер впритирку
- Размер: 4300×6030 мм
- Гараж Степановых: 4×8 м
## Замеры (терраса, лестница, подоконники)
- Высота до земли, количество ступеней крыльца, террасы
- Расстояние от края столбов до дома (площадь террасы)
- Забор: въезд 4.1м, калитка 1180 мм, забор 35.5м
- Лестница: ступень 980×17, площадка 950×~2155 мм
- Подоконник дерево: 2м×8 шт, 0.7м×2 шт, 1м×2 шт
- Терраса от уровня пола (низ дверной коробки) до низа армопояса: 2830 мм
- От нивелира до пола: 50 мм
- Лаг 150 + доска 40
- Укладка, покраска ~1800₽/м²
- Котовник — растение, отгоняющее насекомых
## Связанные заметки
- [[family/documents/altai-shopping]]
+20
View File
@@ -56,6 +56,26 @@ VIN X4XPE18429WC93798
Крыша 100*140
Багажник высота 43
## Кофр
Размер: 54
## Антирадар
Doppler Pro WiFi
## ТО — пробеги и расходники
| Позиция | Пробег км |
|---|---|
| Масло | 270 000 |
| Фильтр воздушный | 262 200 |
| Фильтр топливный + свечи | 262 400 |
| Цепь | 184 640 |
| Кардан крестовина | 262 400 (246 000) — смазка раз в 10 000 км |
Масло: Liqui Moly Top Tec 5W-30, 4600 ₽
## Связанные заметки
- [[family/documents/altai-house-inventory]] — инвентарь дачи (связано с хозяйством)
+4
View File
@@ -51,6 +51,10 @@ updated: "2026-05-17"
- [ ] Слайсер
- [ ] Автомойка
## Лизе на день рождения (23 мая)
- [ ] Сухой лёд — эффект для праздника
## Список желаний
- [ ] Мухоморы
+9 -2
View File
@@ -56,9 +56,16 @@ related: "[[family/documents/trip-packing-list]]"
- [x] Тарелки
- [x] Туалетная бумага
## Связанные заметки
## Купить для похода
- [ ] **Jetboil** — компактная газовая горелка
## Лыжи
- Длина: 2050 мм
- Ширина: 44 / 48
- [[family/documents/trip-packing-list]]
## На Байкал (из Keep)
+26
View File
@@ -0,0 +1,26 @@
---
title: Праздничная еда и продукты
tags:
- family
- food
- newyear
- holiday
- lists
updated: '2026-05-17'
---
## Праздничные блюда (идеи)
Оливье, Имбирное печенье, Леденцы, Глинтвейн, Шарлотка, Пряничный домик, Бутер с красной рыбой, Сельдь под шубой, Виноград, Мандарины, Шампанское, Мясо по-французски, Арбуз, Яблоки, Ананас, Лакричные конфеты, Бальзамический соус people's, Запечённая картошка, Сельдерей, Чесночные гренки, Жареные крылья
## Продукты на Новый год (закупка)
**Еда:**
Хлеб, Шпроты, Майонез, Горошек, Холодец, Горчица, Колбаса, Чесночный соус, Лук зелёный, Салат, Огурцы, Помидоры, Мандарины, Сыр, Водка, Медовуха, Селёдка, Шампанское
**Прочее:**
Термос, Фляга, Колпак деда мороза, Батарейки, Ноут + кабель, Фотик, Пауэрбанк, Домашняя одежда, Подарки, Сапоги
## Связанные заметки
- [[family/documents/shopping-lists]]
+51
View File
@@ -0,0 +1,51 @@
---
title: 'Коды, ключи, пароли дома'
tags:
- family
- home
- sensitive
- access-codes
updated: '2026-05-17'
---
# Коды, ключи, пароли дома
Коды доступа, ключи активации и PIN-коды техники и помещений.
## Техника
| Устройство | Код / Ключ |
|---|---|
| Grohe — ключ активации | G4C-KG6P-07IU-P9F1 |
| Котёл Vaillant | Код 17 |
## Документы (чувствительные)
| Документ | Номер |
|---|---|
| ИНН (РФ) | 540700361442 |
| ИНН / ПИН КГ | 21108198750093 |
## Телефон
| Действие | Код |
|---|---|
| МТС тариф посекундный | `*111*881#` |
## Доступ к помещениям
| Место | Код |
|---|---|
| Лестница | 3698# |
| Садик | 1780# |
| Чемодан | 975 |
| Склад пароль | 240, #44, калитка 248 |
## Сейф
928509
878819
## Связанные заметки
- [[family/how-to/home-automation]] — управление домом
- [[family/documents/altai-house-inventory]] — инвентарь дома
+22
View File
@@ -174,6 +174,28 @@ related:
- [x] Я люблю свою родину
- [x] нетрезведь
## Рекомендации по жанрам
- Fear Factory (Carmageddon OST)
- Estopa (испанский)
- Extremo duro (испанская музыка)
## Плейлист застольный
- [ ] Малиновка
- [ ] Голая (Марина Голая)
- [ ] Выпьем за любовь
- [ ] Ничего не говори
- [ ] Осень (ДДТ)
- [ ] Выхода нет (Сплин)
- [ ] Родина (Louna)
- [ ] На теплоходе музыка
- [ ] Bohemian rhapsody
- [ ] Вечером на лавочке
- [ ] Темнота (Сектор Газа)
- [ ] Кукла колдуна
- [ ] Лирика
## Связанные заметки
- [[family/documents/movies-watchlist]]
+6
View File
@@ -154,6 +154,12 @@ updated: 2026-05-16
---
---
## 🏫 Школы
- **Вальдорфская школа** — изучить как вариант
## 🏆 Достижения
| Дата | Игра | Достижение |
@@ -1,8 +1,13 @@
---
title: "Конкурсы и игры на вечеринке"
aliases: ["конкурсы-и-игры-на-вечеринке", "keep-import"]
tags: ["sort", "keep-import"]
updated: "2026-05-17"
title: Конкурсы и игры на вечеринке
aliases:
- конкурсы-и-игры-на-вечеринке
- keep-import
tags:
- family
- entertainment
- party
updated: '2026-05-17'
---
# Конкурсы и игры на вечеринке
@@ -20,4 +25,4 @@ updated: "2026-05-17"
"Пьяные поэты-мимы": Участники должны написать стихотворение или короткий рассказ на заданную тему, используя только жесты и мимику. За каждый непонятный или несмешной жест автор выпивает.
"Пьяные поэты": Участники должны написать стихотворение или короткий рассказ на заданную тему, используя только слова, которые начинаются с определенной буквы. За каждое слово, не соответствующее условиям, автор выпивает.
"Пьяные поэты": Участники должны написать стихотворение или короткий рассказ на заданную тему, используя только слова, которые начинаются с определенной буквы. За каждое слово, не соответствующее условиям, автор выпивает.
+11 -4
View File
@@ -17,12 +17,8 @@ Cards against humanity игра
Футляр для инструментов BBQ
Бризер Funai? 41тыс
Посудомойка самсунг 48тыс
<<<<<<< HEAD
Направляйки для ящиков глубина 40см выдвижение на 24-25см х6 ящиков
Коврик под кота
=======
>>>>>>> nas/main
## Купить в Казахстане
Crocs
@@ -47,6 +43,17 @@ Crocs
Полотенца
Фабрика «Донецкая мануфактура» интернет-магазине фабрики — Cleanelly.
Меховые тапочки, жилетки «Мех Оретекс»
## Duty Free
Reese's
Hanuta
Fisherman's friend
Oliva cigars
Sal de Ibiza
Chocodate
Yeni Raki
Sheridan's
## Связанные заметки
- [[family/documents/shopping-order]] — онлайн-заказы
+134
View File
@@ -0,0 +1,134 @@
---
title: 'Node-RED: вентиляция по CO₂'
tags:
- family
- home
- automation
- nodered
- ventilation
updated: '2026-05-17'
---
Node-RED flow для управления вентиляцией по данным CO₂ датчиков.
## Структура
```
[room demand msgs]
(1) Demand Aggregator
(2) Intake Allocation
(3) Discretization per damper
(4) Intake Damper Outputs
(5) Exhaust Arbitration
(6) Exhaust Dampers
(7) Exhaust Fans
(8) Kitchen Hood
```
## 1. Demand Aggregator (stateful)
```js
let demands = flow.get("room_demands") || {};
demands[msg.room] = msg.raw_demand;
flow.set("room_demands", demands);
msg.demands = demands;
return msg;
```
## 2. Intake Allocation
Комнаты с intake дамперами: bedroom, kids, living. Приоритеты: living = 1.2, остальные = 1.0.
```js
const ROOMS = ["bedroom", "kids", "living"];
const PRIORITY = { bedroom: 1.0, kids: 1.0, living: 1.2 };
let weighted = {}, sum = 0;
for (let r of ROOMS) {
let d = msg.demands[r] || 0;
weighted[r] = d * (PRIORITY[r] || 1);
sum += weighted[r];
}
if (sum === 0) return null;
let allocation = {};
for (let r of ROOMS) { allocation[r] = 100 * weighted[r] / sum; }
msg.intake_pct = allocation;
return msg;
```
## 3. Discretization
**Bedroom/Kids** (0 / 33 / 66 / 100):
```js
function snap(x) {
if (x < 10) return 0;
if (x < 33) return 33;
if (x < 66) return 66;
return 100;
}
msg.payload = snap(msg.payload);
return msg;
```
**Living (dual-damper)**:
```js
let p = msg.payload;
let A = 0, B = 0;
if (p < 10) { A=0; B=0; }
else if (p < 30) { A=66; B=0; }
else if (p < 55) { A=66; B=66; }
else if (p < 80) { A=100; B=66; }
else { A=100; B=100; }
msg.damperA = A; msg.damperB = B;
return msg;
```
## 5. Exhaust Arbitration
```js
let d = msg.demands;
msg.exhaust = {
at2_1: Math.max(d.toilet || 0, d.shower || 0, d.kitchen || 0),
at2_2: Math.max(d.bathroom || 0, d.office || 0)
};
return msg;
```
## 7. Fan Speed
```js
function speed(d) {
if (d < 5) return 30;
if (d < 20) return 50;
if (d < 40) return 70;
return 100;
}
msg.payload = speed(msg.payload);
return msg;
```
## 8. Kitchen Hood (3-speed)
```js
let d = msg.demands.kitchen || 0;
if (d < 10) msg.payload = 0;
else if (d < 30) msg.payload = 1;
else if (d < 60) msg.payload = 2;
else msg.payload = 3;
return msg;
```
Gate: current_state (manual override → block automation).
Все дамперы: rate-limit 1 msg / 3060 s.
## Связанные заметки
- [[family/how-to/home-automation]] — общая автоматизация дома
+14
View File
@@ -300,6 +300,20 @@ docker run --rm ... media-pipeline:kraken \
`Karnavalnaya.noch.1956.BDRip.AVC.mkv` — есть в uTorrent и в Transmission на Кракене (`downloaded=0`). Файла нет нигде — **никогда не скачивался**.
## Текущий статус (2026-05-17, сессия 15)
### rsync финальный прогон (28 файлов)
Запущен rsync 28 медиафайлов отсутствующих на Кракене (скрипт `/tmp/rsync_missing28.sh`, tmux сессия rsync3):
**Фильмы (22):** Брат 2 (4K UpScale), Вивариум, Ворон, Голодные игры Баллада, Голый пистолет, Злая, Инвалид, Как взломать экзамен, Компаньон, Кошачьи миры Луиса Уэйна, Леон, Начало, Операция С Новым Годом, Особенности охоты (1995), Особенности охоты зимний период, Особенности рыбалки, Первый день моей жизни, Пираты, Планета обезьян, Самолетом поездом машиной, Тетрис, Знакомимся с кабанами
**Мультфильмы (5):** Despicable Me 4, Encanto, Inside Out, Le Grand Mechant Renard, Nehochuha
**Сериалы (1):** Fleabag
После завершения — прогнать `fix_torrent_case.py` ещё раз для привязки новых файлов к торрентам.
## Текущий статус (2026-05-16, сессия 14)
### Регрессия 278→194 — диагноз и фикс
@@ -1,9 +0,0 @@
---
title: "Grohe — ключ активации"
aliases: ["grohe-ключ-активации", "keep-import"]
tags: ["sort", "keep-import", "sensitive"]
updated: "2026-05-17"
---
# Grohe — ключ активации
G4C-KG6P-07IU-P9F1
-13
View File
@@ -1,13 +0,0 @@
---
title: "Да будь я евреем преклонных годов,"
aliases: ["keep-2023-09-13_15_03_43", "keep-import"]
tags: ["sort", "keep-import", "timestamped"]
updated: "2026-05-17"
---
# Цитаты
Да будь я евреем преклонных годов,
И то - nicht zweifelnd und bitter,
Немецкий я б выучил только за то,
Что им разговаривал Гитлер.
-18
View File
@@ -1,18 +0,0 @@
---
title: Боже боже боже наш хранитель
aliases:
- keep-2023-11-14_00_41_38
- keep-import
tags:
- sort
- keep-import
- timestamped
- мои-стихи
updated: 2026-05-17
---
# Боже боже боже наш хранитель
Боже боже боже наш хранитель
Боже боже боже круглый год
Боже он же наш освободитель
Боже он спасает наш народ
-11
View File
@@ -1,11 +0,0 @@
---
title: "Ниомид пожарообработка"
aliases: ["keep-2023-11-14_00_41_50", "keep-import"]
tags: ["sort", "keep-import", "timestamped"]
updated: "2026-05-17"
---
# Ниомид пожарообработка
Средство для пожарной/паразитной обработки древесины
Ниомид пожарообработка
Продажи: Станционная
pilmatgost.ru
-10
View File
@@ -1,10 +0,0 @@
---
title: "Вальдорфская школа"
aliases: ["keep-2023-11-14_00_42_01", "keep-import"]
tags: ["sort", "keep-import", "timestamped"]
updated: "2026-05-17"
---
# Вальдорфская школа
Вальдорфская школа
Идеи для домашнего обучения Лизы - изучить
-24
View File
@@ -1,24 +0,0 @@
---
title: Добро пожаловать к Карлу Марксу с теорией стоимости 🙂
aliases:
- keep-2023-11-14_00_42_02
- keep-import
tags:
- sort
- keep-import
- timestamped
- рассуждения
updated: 2026-05-17
---
# Добро пожаловать к Карлу Марксу с теорией стоимости 🙂
Добро пожаловать к Карлу Марксу с теорией стоимости 🙂
Ну во-первых, из золота делают много всякой высокотехнологичной хероты, так что это таки тоже товар. А ещё когда оно было деньгами, оно истералось, теряло форуму, тупо терялось, в частности поэтому "безопаснее" его было хранить в банке а платить расписками.
..чтобы что-то купить кто-то должен произвести эквивалентную стоимость. Стоимость производит только производительный труд. То есть ты добыл золото, а кто-то много еды, ты купил часть еды за своё золото, это должно быть эквивалентно тому что ты потратил свой труд на добычу этой еды.
..хоть золото при этом никуда не исчезает, у "них" тоже есть своё потребление, то есть стоимость потребляют (переводят в ничто) так или иначе все, только богатеет тот у кого труд производительней, то есть производятся излишки
То есть современная денежная система так изначально задумана (евреями, рокфеллерами, рептилоидами, нужное подчеркнуть), чтобы обеспечивать эксплуатацию рабочих, понижение цены труда и рост власти и капитала у буржуев.
Гипотетическая справедливая система должна устранить нетрудовые доходы (ссудный процент) и неэквивалентный обмен, уравняв в правах всех людей. То есть человек живущий в менее благоприятных условиях и производящий меньше должен иметь право на больший кусок пирога, а условно живущий на нефтяной вышке должен больше отдавать нежели получать, в среднем потребности всех будут удовлетворены. Это называется коммунизм - от каждого по способности, каждому по потребности.
Это миф, что потребности человека способны расти бесконечно, это потребности капитала растут бесконечно, потребности отдельного индивида поддаются расчету и прогнозу и ограничены биологически и наличным временем. Более того, они давно посчитаны крупными торговым сетями, а ещё есть "мода" и Джобсы с Масками которые объясняют людям их "реальные" потребности.
Короче, это не "ой, денег стало много, их цена упала, а цены выросли". Это так изначально задумано хозяевами этих денег.
-9
View File
@@ -1,9 +0,0 @@
---
title: "Jetboil"
aliases: ["keep-2023-11-14_00_42_12", "keep-import"]
tags: ["sort", "keep-import", "timestamped"]
updated: "2026-05-17"
---
# Jetboil
Jetboil - добавить в список заказать из Китая
-23
View File
@@ -1,23 +0,0 @@
---
title: "…. Помню-помню! А как же познакомились мы с Антоном? Да всё "
aliases:
- keep-2024-09-28_11_04_08
- keep-import
tags:
- sort
- keep-import
- timestamped
- поздравления
updated: 2026-05-17
---
# …. Помню-помню! А как же познакомились мы с Антоном? Да всё
…. Помню-помню! А как же познакомились мы с Антоном? Да всё просто — как будто судьба сама вывела нас на ту тропинку, по которой он однажды подошёл и сказал: «Ну что, пойдём?» И с тех пор и пошли, долго шли, ночами напролёт, то по городским улицам, то по полям, где туман укутывал нас, словно плед. Гуляли, а звёзды, казалось, специально выходили на небо только для того, чтобы осветить наш путь. Антон пел тогда, и не просто так — для меня. Да так пел, что даже ветер на мгновение стихал, слушая его голос. И понял я, что с таким человеком можно не только под звёздами, но и по всей жизни идти бок о бок.
Помню-помню, как жопку твою в фонтане мыл в Баден-Бадене, как будто это было вчера. А как же познакомились мы с Антоном? Да всё просто — как будто судьба сама вывела нас на ту тропинку, по которой он однажды подошёл и сказал: «Ну что, пойдём?» И с тех пор идём, только мы идём и поём, то по дворам колодезным, то по полям, стелемся туманом, словно песец пушистым хвостом укутывает нас.
Вот помню, как вчера, как мы Антоху в Турцию провожали — вся компания собралась, охранник у дома уже всех в лицо знает, машет рукой, как своим. Сели тогда на лавочку, конины наелись, и сидим, болтаем о всяком. Глаза блестят, как у детей, а душа поёт — такие моменты не забываются.
Антон пел тогда, и не просто так пел, а словно для меня пел. Ветер на мгновение стихал над мангалом, оставляя причудливые искры красным лисом улыбаться над углями при свете луны. И понял я тогда, что с таким человеком можно не только под звёздами, но и по всей жизни идти бок о бок.
Какой был скромный мальчик, и какой сейчас вырос! 😪 Человек с большой буквы, всегда знает, что сказать, как поддержать.
-23
View File
@@ -1,23 +0,0 @@
---
title: "Малиновка"
aliases: ["keep-2024-10-12_05_39_05", "keep-import"]
tags: ["sort", "keep-import", "timestamped"]
updated: "2026-05-17"
---
# Малиновка
Добавить в список караоке
Малиновка
Голая
Выпьем за любовь
Ничего не говори
Осень
Выхода нет
Родина лоуна
На теплоходе музыка
Bohemian rhapsody
Вечером на лавочке
Темнота сектор
Кукла колдуна
Лирика
-11
View File
@@ -1,11 +0,0 @@
---
title: "Льва толстого 106 геокулес 9.01 снять кардан 9:00"
aliases: ["keep-2024-11-02_00_03_55", "keep-import"]
tags: ["sort", "keep-import", "timestamped"]
updated: "2026-05-17"
---
# Ремонт карбюратора карданов Бишкек
Льва толстого 106 геокулес 9.01 снять кардан 9:00
Карданный 0556839969
-10
View File
@@ -1,10 +0,0 @@
---
title: "Google coursera по управлению проектами"
aliases: ["keep-2024-12-06_22_30_09", "keep-import"]
tags: ["sort", "keep-import", "timestamped"]
updated: "2026-05-17"
---
# Google coursera по управлению проектами
Google coursera по управлению проектами курс - в список дел на самообучение
Дилемма инноватора - курс? Книга? Уточнить
-13
View File
@@ -1,13 +0,0 @@
---
title: "Гараж от забора 4700, ширина гаража 4500"
aliases: ["keep-2025-01-20_16_59_24", "keep-import"]
tags: ["sort", "keep-import", "timestamped"]
updated: "2026-05-17"
---
# планирование гаража лаки парк
Гараж от забора 4700, ширина гаража 4500
Яма (колея траверсы) 790-1040
Длина на машину 5.5м
Гараж марьясовых - задний бампер впритирку
4300*6030
Гараж Степанов 4*8
-55
View File
@@ -1,55 +0,0 @@
---
title: Не покупают никакой еды -
aliases:
- keep-2025-02-04_12_19_41
- keep-import
tags:
- sort
- keep-import
- timestamped
- стихи
- мои-стихи
- мои-песни
updated: 2026-05-17
---
# Не покупают никакой еды -
Не покупают никакой еды -
Все экономят вынужденно деньги:
Корона косит стройные ряды,-
Но люди вновь смыкаются в шеренги.
Закрыт Вухань, Анталия горит
И в Дании поистребляли норок
Но наш мужик всё у станка стоит
И не пройдет к нам половецкий ворог
(Закрыт Кавказ, горит "Аэрофлот",
И в Астрахани лихо жгут арбузы,-
Но от станка рабочий не уйдет,
И крепнут как всегда здоровья узы.)
Убытки терпит целая страна,
Но вера есть, все зиждется в иконе,-
Объявлена народная война
Одной несчастной, бедненькой короне.
На трудовую вахту встал народ
В честь битвы с новоявленною порчей,-
Но пасаран, корона не пройдет,
Короне - нет, и все, и бал окончен!
Я погадал вчера на даму треф,
Назвав ее для юмора короной,-
И понял я: корона - это блеф,
Она теперь мне кажется палёной.
Во мне теперь прибавилось ума,
Себя я ощущаю просвещённо,
И понял я: корона - не чума,-
У каждого всегда своя корона!
Уверен я: короне скоро тлеть.
А ну-ка - залп из тысячи орудий!
Вперед! С Короны могут помереть
Лишь мы (те), некоронованные, люди.
-15
View File
@@ -1,15 +0,0 @@
---
title: "Масло 270000"
aliases: ["keep-2025-12-05_17_53_00", "keep-import"]
tags: ["sort", "keep-import", "timestamped"]
updated: "2026-05-17"
---
# Сервисный график BMW
Масло 270000
Фильтр возд 262200
Фильтр топливный, свечи 262400
цепь 184640
Кардан крестовина 262400 (246000) смазка раз в 10000
Liqui moly top tec 5W30 4600
-229
View File
@@ -1,229 +0,0 @@
---
title: "Below is the exact Node-RED flow construction, starting afte"
aliases: ["keep-2026-02-04_14_44_55", "keep-import"]
tags: ["sort", "keep-import", "timestamped"]
updated: "2026-05-17"
---
# Лаки Парк автоматизация приточной вентиляции Node-RED flow
Below is the exact Node-RED flow construction, starting after what you already have:
✔ CO₂ sensors
✔ target values
✔ per-room demand calculation (raw_demand, %)
No philosophy, no theory — only execution order and nodes.
FLOW OVERVIEW (WHAT YOU WILL BUILD)
[room demand msgs]
(1) Demand Aggregator
(2) Intake Allocation
(3) Discretization per damper
(4) Intake Damper Outputs
(5) Exhaust Arbitration
(6) Exhaust Dampers
(7) Exhaust Fans
(8) Kitchen Hood
1️⃣ Demand Aggregator (stateful)
Node
Function — Aggregate room demands
Inputs
Messages like:
msg.room = "bedroom"
msg.raw_demand = 12.3
Code
let demands = flow.get("room_demands") || {};
demands[msg.room] = msg.raw_demand;
flow.set("room_demands", demands);
msg.demands = demands;
return msg;
✅ One instance only
✅ All room demands feed into it
2️⃣ Intake Allocation (continuous %)
Node
Function — Intake allocation
Input
msg.demands = {
bedroom,
kids,
living,
kitchen,
...
}
Code
// rooms WITH intake dampers
const ROOMS = ["bedroom", "kids", "living"];
const PRIORITY = {
bedroom: 1.0,
kids: 1.0,
living: 1.2
};
let weighted = {};
let sum = 0;
for (let r of ROOMS) {
let d = msg.demands[r] || 0;
weighted[r] = d * (PRIORITY[r] || 1);
sum += weighted[r];
}
if (sum === 0) return null;
let allocation = {};
for (let r of ROOMS) {
allocation[r] = 100 * weighted[r] / sum;
}
msg.intake_pct = allocation;
return msg;
Output example:
intake_pct: {
bedroom: 35.2,
kids: 22.1,
living: 42.7
}
3️⃣ Discretization (critical)
3A — Bedroom / Kids (0 / 33 / 66 / 100)
Node
Function — Discrete damper (std)
Code
function snap(x) {
if (x < 10) return 0;
if (x < 33) return 33;
if (x < 66) return 66;
return 100;
}
msg.payload = snap(msg.payload);
return msg;
Wiring
change node before:
msg.payload = msg.intake_pct.bedroom
Duplicate for kids
3B — Living (dual-damper state machine)
Node
Function — Living dual damper logic
Input
msg.payload = intake_pct.living
Code
let p = msg.payload;
let A = 0, B = 0;
if (p < 10) {
A = 0; B = 0;
} else if (p < 30) {
A = 66; B = 0;
} else if (p < 55) {
A = 66; B = 66;
} else if (p < 80) {
A = 100; B = 66;
} else {
A = 100; B = 100;
}
msg.damperA = A;
msg.damperB = B;
return msg;
4️⃣ Intake Damper Outputs
Per damper
Call service (or number.set_value / cover.set_position):
Bedroom damper ← payload
Kids damper ← payload
Living damper A ← msg.damperA
Living damper B ← msg.damperB
Add rate-limit node before each:
1 msg / 3060 s
5️⃣ Exhaust Arbitration (shared logic)
Node
Function — Exhaust arbitration
Code
let d = msg.demands;
msg.exhaust = {
at2_1: Math.max(
d.toilet || 0,
d.shower || 0,
d.kitchen || 0
),
at2_2: Math.max(
d.bathroom || 0,
d.office || 0
)
};
return msg;
6️⃣ Exhaust Branch Dampers (ON/OFF)
Per branch
Function — Exhaust damper gate
Input
msg.raw_demand
Code
msg.payload = msg.raw_demand > 0 ? "ON" : "OFF";
return msg;
Branches:
Toilet → AT2-1
Shower → AT2-1
Kitchen exhaust → AT2-1
Bathroom → AT2-2
Office → AT2-2
7️⃣ Exhaust Fan Speed Control
Node
Function — Fan speed
Code
function speed(d) {
if (d < 5) return 30; // baseline
if (d < 20) return 50;
if (d < 40) return 70;
return 100;
}
msg.payload = speed(msg.payload);
return msg;
Apply separately to:
AT2-1 (msg.exhaust.at2_1)
AT2-2 (msg.exhaust.at2_2)
Add rate-limit (slow).
8️⃣ Kitchen Hood (3-speed)
Node
Function — Hood control
Code
let d = msg.demands.kitchen || 0;
if (d < 10) msg.payload = 0;
else if (d < 30) msg.payload = 1;
else if (d < 60) msg.payload = 2;
else msg.payload = 3;
return msg;
Gate with:
current_state (manual override active → block automation)
DONE — SYSTEM IS COMPLETE
You now have:
Central arbitration
Discrete damper logic
Shared exhaust handling
Passive intake correctness
Zero oscillation risk
Next steps (optional, later):
Trend-based exhaust boost
Door sensors
Manual override latches
@@ -1,11 +0,0 @@
---
title: "Performance review вопросы"
aliases: ["performance-review-вопросы", "keep-import"]
tags: ["sort", "keep-import"]
updated: "2026-05-17"
---
# Вопросы для Performance review из Lead Dev masterclass
- Are you happy with my work?
- What I suck at?
- How can I improve?
-9
View File
@@ -1,9 +0,0 @@
---
title: "Zoom ссылка"
aliases: ["zoom-ссылка", "keep-import"]
tags: ["sort", "keep-import"]
updated: "2026-05-17"
---
# Моя Zoom ссылка
https://duckduckgo.zoom.us/my/malex
@@ -1,11 +0,0 @@
---
title: "Алтай счётчик — заявление"
aliases: ["алтай-счётчик-заявление", "keep-import"]
tags: ["sort", "keep-import"]
updated: "2026-05-17"
---
# Алтай счётчик — заявление
Чтобы подать заявление на подключение электричества в домик на Алтае
ЛК, заявление на замену счётчика, на столбе. На основании ФЗ 522 из-за неисправности счётчика: когда включается несколько приборов трещит, появляется запах
-11
View File
@@ -1,11 +0,0 @@
---
title: "Антирадар"
aliases: ["антирадар", "keep-import"]
tags: ["sort", "keep-import"]
updated: "2026-05-17"
---
# Антирадар
Doppler pro wifi
Добавить в список заказать для мерседеса
-19
View File
@@ -1,19 +0,0 @@
---
title: "ИНН (второй)"
aliases: ["инн-второй", "keep-import"]
tags: ["sort", "keep-import", "sensitive"]
updated: "2026-05-17"
---
# ИНН Бишкек ПИН
21108198750093
Токтогула 43, кв.16
Код 67
Управление Государственной налоговой службы по Свердловскому району - аккумуляционный счет
4402041001000290
440001
Единый налог для субъектов малого
-9
View File
@@ -1,9 +0,0 @@
---
title: "ИНН"
aliases: ["инн", "keep-import"]
tags: ["sort", "keep-import", "sensitive"]
updated: "2026-05-17"
---
# ИНН РФ
540700361442
-10
View File
@@ -1,10 +0,0 @@
---
title: "Код котла Vaillant"
aliases: ["код-котла-vaillant", "keep-import"]
tags: ["sort", "keep-import", "sensitive"]
updated: "2026-05-17"
---
# Код котла Vaillant Лаки Парк
Котёл vaillant сервисное меню
Код 17
@@ -1,9 +0,0 @@
---
title: "Код от лестницы"
aliases: ["код-от-лестницы", "keep-import"]
tags: ["sort", "keep-import", "sensitive"]
updated: "2026-05-17"
---
# Код лестницы 5 подъезд Каралаева Бишкек
3698#
-9
View File
@@ -1,9 +0,0 @@
---
title: "Код садика"
aliases: ["код-садика", "keep-import"]
tags: ["sort", "keep-import", "sensitive"]
updated: "2026-05-17"
---
# Код садика Excellent
1780#
-9
View File
@@ -1,9 +0,0 @@
---
title: "Код чемодан"
aliases: ["код-чемодан", "keep-import"]
tags: ["sort", "keep-import", "sensitive"]
updated: "2026-05-17"
---
# Код от чемодана Samsonite
975
-10
View File
@@ -1,10 +0,0 @@
---
title: "Коды сейфа"
aliases: ["коды-сейфа", "keep-import"]
tags: ["sort", "keep-import", "sensitive"]
updated: "2026-05-17"
---
# Коды сейфа
928509
878819
@@ -1,9 +0,0 @@
---
title: "Контакт: Андрей Исаев DDG"
aliases: ["контакт-андрей-исаев-ddg", "keep-import"]
tags: ["sort", "keep-import"]
updated: "2026-05-17"
---
# Контакт: Андрей Исаев DDG
Коллега по DDG из Бишкека
-10
View File
@@ -1,10 +0,0 @@
---
title: "Кофр размер"
aliases: ["кофр-размер", "keep-import"]
tags: ["sort", "keep-import"]
updated: "2026-05-17"
---
# Кофр размер
Ширина кофра на bmw
54
@@ -1,9 +0,0 @@
---
title: "Лизе на день рождения"
aliases: ["лизе-на-день-рождения", "keep-import"]
tags: ["sort", "keep-import"]
updated: "2026-05-17"
---
# Лизе на день рождения идеи
Сухой лёд
-10
View File
@@ -1,10 +0,0 @@
---
title: "Лыжи — размеры"
aliases: ["лыжи-размеры", "keep-import"]
tags: ["sort", "keep-import"]
updated: "2026-05-17"
---
# Лыжи — размеры
Длина 2050
Ширина: 44; 48
@@ -1,9 +0,0 @@
---
title: "МТС тариф посекундный"
aliases: ["мтс-тариф-посекундный", "keep-import"]
tags: ["sort", "keep-import"]
updated: "2026-05-17"
---
# МТС тариф посекундный
Подключение через `*111*881#`
@@ -1,11 +0,0 @@
---
title: "Музыкальные жанры / рекомендации"
aliases: ["музыкальные-жанры-рекомендации", "keep-import"]
tags: ["sort", "keep-import"]
updated: "2026-05-17"
---
# Музыкальные жанры / рекомендации
Fear Factory (Carmageddon)
Estopa (Spanish)
Extremo duro (Spanish music)
@@ -1,30 +0,0 @@
---
title: "Праздничная еда список"
aliases: ["праздничная-еда-список", "keep-import"]
tags: ["sort", "keep-import"]
updated: "2026-05-17"
---
# Праздничная еда список
Оливье
Имбирное печенье
Леденцы
Глинтвейн
Водка
Шарлотка
Пряничный домик
Бутер с красной рыбой
Сельдь под шубой
Виноград
Мандарины
Шампанское
Мясо по французски
Арбуз
Яблоки
Ананас
Лакричный конфеты
Бальзамический соус people's
Запечённая картошка
Сельдерей
Чесночные гренки
Жареные крылья
@@ -1,41 +0,0 @@
---
title: "Продукты на Новый год"
aliases: ["продукты-на-новый-год", "keep-import"]
tags: ["sort", "keep-import"]
updated: "2026-05-17"
---
# Продукты на Новый год
-Хлеб
-Шпроты
-Майонез
Горошек
-Холодец
-Горчица
Колбаса
-Чесночный соус
-Лук зелёный
Салат
-Огурцы
-Помидоры
-Мандарины
-Сыр гейский
-Водка
-Медовуха
-Фляга
-Селёдка
-Шампанское
Термос
-Колпак деда мороза
Бант
-Бабочка
-Батарейки
Кровать надувная
-Ноут, кабель
Фотик
-Пауэрбанк
-Домашняя одежда
Подарки
Сапоги
@@ -1,24 +0,0 @@
---
title: "Список дел (замеры)"
aliases: ["список-дел-замеры", "keep-import"]
tags: ["sort", "keep-import"]
updated: "2026-05-17"
---
# Список дел (замеры)
Высота до земли, количество ступеней крыльца, террасы
Расстояние от края столбов до дома(площадь террасы)
забор: Въезд 4.1м, калитка 1180, забор 35.5м
Лестница:
Ступень 980 х17, площадка 950*~2155
Подоконник Дерево 2м: 8шт, 0.7м: 2шт, 1м: 2шт
Терраса от уровня пола (низ дверной коробки) до низа армопояса 2830
От нивелира до пола 50, чистый пол - под коробку двери
Лаг 150 + доска 40
Со стороны террасы +2см поднять лаги
Укладка, покраска ~1800₽/м2
Котовник растение отгоняющее насекомых
@@ -1,24 +0,0 @@
---
title: "Список дел (разное)"
aliases: ["список-дел-разное", "keep-import"]
tags: ["sort", "keep-import"]
updated: "2026-05-17"
---
# Список дел (разное)
Закопать яму/вывезти глину
Спилить берёзу
Мультируль
Настроить эмуляторы
Коптер
Камера вело, тормоза
Настроить ТВ пульт
Коробку поменять
Клипсы в авто поменять
Камера заднего вида
rutracker хранители https://rutracker.org/forum/viewtopic.php?t=3118460
Купить:
плавки
Сифон (газатор)
Ручка на перфоратор взамен сломанной
@@ -1,9 +0,0 @@
---
title: "Счётчик Каракол показание"
aliases: ["счётчик-каракол-показание", "keep-import"]
tags: ["sort", "keep-import"]
updated: "2026-05-17"
---
# Счётчик Каракол показание
172.23
-10
View File
@@ -1,10 +0,0 @@
---
title: "Трек-номер DHL"
aliases: ["трек-номер-dhl", "keep-import"]
tags: ["sort", "keep-import"]
updated: "2026-05-17"
---
# Трек-номер DHL
5867032404
Боконбаева
@@ -1,10 +0,0 @@
---
title: "Уроки истории номер"
aliases: ["уроки-истории-номер", "keep-import"]
tags: ["sort", "keep-import"]
updated: "2026-05-17"
---
# Уроки истории номер
Клим Жуков sponsr.ru
Последний просмотренный Русь 189
+8 -6
View File
@@ -1,14 +1,16 @@
---
title: "💬 Афоризмы и тосты"
aliases: ["Афоризмы", "Тосты", "Мысли", "Aphorisms", "aphorisms"]
title: "💬 Афоризмы и мысли"
aliases: ["Афоризмы", "Aphorisms", "aphorisms"]
tags: ["personal", "creative", "humor"]
updated: "2026-05-17"
related:
- "[[personal/creative/toasts]]"
- "[[personal/creative/poems]]"
- "[[personal/creative/songs]]"
---
# 💬 Афоризмы и тосты
# 💬 Афоризмы и мысли
## Тост
Без хуя бы - нихуя бы
> Стихи → [[personal/creative/poems]] | Тосты → [[personal/creative/toasts]] | Песни → [[personal/creative/songs]]
Глобально никаких перспектив. Осталось чуть-чуть.
@@ -1,8 +1,15 @@
---
title: "Генерация идей (творчество)"
aliases: ["генерация-идей-творчество", "keep-import"]
tags: ["sort", "keep-import"]
updated: "2026-05-17"
title: Генерация идей — методы и темы
aliases:
- генерация-идей-творчество
- keep-import
tags:
- personal
- creative
- ideas
- music
- poetry
updated: '2026-05-17'
---
# Генерация идей (творчество, процесс мозгового штурма)
@@ -81,4 +88,4 @@ updated: "2026-05-17"
1 объект + 1 искажение
→ «телефон, который отвечает сам»
1 временной сдвиг
→ «разговор из будущего с самим собой»
→ «разговор из будущего с самим собой»
@@ -0,0 +1,14 @@
---
title: Да будь я евреем (пародия на Маяковского)
tags:
- personal
- creative
- poetry
- humor
updated: '2026-05-17'
---
Да будь я евреем преклонных годов,
И то — nicht zweifelnd und bitter,
Немецкий я б выучил только за то,
Что им разговаривал Гитлер.
@@ -1,17 +1,12 @@
---
title: Осыпаются ресницы,
aliases:
- keep-2023-11-14_00_41_34
- keep-import
title: Крематорий на танцполе
tags:
- sort
- keep-import
- timestamped
- мои-стихи
- стихи
updated: 2026-05-17
- personal
- creative
- poetry
- humor
updated: '2026-05-17'
---
# Осыпаются ресницы,
Осыпаются ресницы,
Разбегаются глаза,
@@ -30,11 +25,11 @@ updated: 2026-05-17
Жизнь прекрасная нас ищет,
Нахер яхты, Феберже!
..жалко лишь, что на кладби́ще
..жалко лишь, что на кладбище
Нам не выспаться, уже..
Припев
*Припев:*
Крематорий на танцполе
Крематорий - жизнь моя
Крематорий жизнь моя
Не горю я по неволе
Мне Крематор нахуя
Мне Крематор нахуя
-142
View File
@@ -209,89 +209,6 @@ related: ["[[family/documents/karaoke-songs]]"]
Старая бы блядь
х2
## Самоизоляция
Баста карапузики
Кончилися танцы
Помирать так с музыкой
Зажигаем, братцы!
Эй вы, бронхиальные
Эй вы, астматичные
Эй вы ненормальные,
Пневмоатипичные
Эй вы объебошенные,
Пучащие глазки,
Мерзкие, непрошеные,
Надеваем маски!
[Эй, судьбою брошенные
Мерзкие букашки
Нищие, непрошенные,
Надеваем маски!]
Эй, ухнем!
Эй, охнем!
Пусть рухнем!
Зато не сдохнем!
Все переболевшие,
Сильные и хилые,
Ну, как очумевшие,
Отдыхаем, милые
Полуотмороженная
недопопуляция
выполняй положенную
самоизоляцию!
Эй, ухнем!
Эй, охнем!
Пусть рухнем!
Зато не сдохнем!
Все вы виноватые,
Суки, что чихали ртом,
Ну давай намазывай,
Руки санитайзером
Победим заразу мы
Классовой дистанцией
Захлебнись в сортире ты
Чтоб не заражаться!
[В том что покидали дом,
Нука обрабатывай
Руки санитайзером!
Нету голодающих,
Жральни позакрыты
Ну а всем нуждающимся -
Выдадим кредиты!
Эй, ухнем!
Эй, охнем!
Пусть рухнем!
Зато не сдохнем!
Всех вражин поборим мы
Внутренних, и внешних мы!
Половцы непрошены,
Будут все низвержены!
Победим Ковидину
Классовой дистанцией!
И поправки примем мы,
Мы на все согласные!
Ух, плато!
Эх, ой-ли?
Все всрато,
Зато не сдохли!]
## Птицы Рагнарёка
@@ -385,12 +302,7 @@ related: ["[[family/documents/karaoke-songs]]"]
## Реп
Делай добро и бросай его в воду
Зелень богатым работу народу
Смерть для солдата
Для зэка - свободу
Скажу своей Натусе я что чёдня на тусе я
И пусть не ждёт меня друзья моя фамилия
## Искупление
@@ -434,42 +346,6 @@ related: ["[[family/documents/karaoke-songs]]"]
Крой раскрывает кривые свершения
Под искрометной любви до скончания
## И много много радости Light
Пустой вокзал (Мечты причал)
Собака чует уфф.. палево в ночи
Дрова последние сгорают под окном
И кто-то заунывно воет из печи
Тихонько заползает счастие твой дом
А где-то там
В дремучей подворотне под Устюгом в тишине
Рисует дым зловещий ёлку на снегу
Лохмотья бархата запятнаны в вине
Заплешины мешка с заплаткой на боку
В далёкий путь
Заряжены олени и с дороги не свернуть
И где-то волки под прикрытием овец
Рога качаются на стуже и звезда
Лишь далеко в ночи пылающий фонарь нее
А дети ждут
И в маленьком сердечке расчленяет душу лёд
А жертвенное дерево тенями на стене
Игриво догорает в праздничном огне как будто старый дед кродется в новый год
И без пяти
Ленивая селёдка уползает под под ковёр
И нолиты спасительные шрамы на хрусталь
Но за окном всё снег и проклятый декабрь
Но скоро счастье хлопнет газом весь двор
Часы стучат
А это значит кто-то как обычно не успел
И кто-то неумело наступил на провода
И мы смеёмся нас переполняет детский смех
И с нами только радость, счастье, ёлка и звезда
## Песня
@@ -530,24 +406,6 @@ related: ["[[family/documents/karaoke-songs]]"]
У черного моря https://youtu.be/iIzjCEB0Nu8
## Идеи под песни
Моря и океаны
Бродяга Блядь
Бродяга Биль.. (принц и нищий)
Хомякадзе
Космонавтика
Про динозавров
Джунгли: тигры Пакистан храм
Черный плащ
Чуйская муха
Сон про инопланетян которые убивают взрослых и оставляют детей
## Группа/песня
+14
View File
@@ -0,0 +1,14 @@
---
title: Боже боже
tags:
- personal
- creative
- song
- satire
updated: '2026-05-17'
---
Боже боже боже наш хранитель
Боже боже боже круглый год
Боже он же наш освободитель
Боже он спасает наш народ
@@ -1,17 +1,14 @@
---
title: И много много радости
aliases:
- keep-2023-11-14_00_41_51
- keep-import
title: И много много радости (оригинал)
tags:
- sort
- keep-import
- timestamped
- мои-стихи
- мои-песни
updated: 2026-05-17
- personal
- creative
- song
- newyear
related:
- '[[personal/creative/songs/i-mnogo-radosti-light]]'
updated: '2026-05-17'
---
# И много много радости
И много много радости
Детишкам принесла
@@ -21,13 +18,13 @@ updated: 2026-05-17
(Когда) дрова последние сгорают под окном
(И) кто-то заунывно завывает из печи тихонько заползает смех, веселье с радостью в твой дом
А где-то там
А где-то там
В дремучей подворотне под Устюгом в тишине
Задумчиво рисует дым зловещий на снегу как будто бы лохмотья бархата запятнаны в вине
Заплешины мешка с кривой заплаткой на боку
Вперёд далёкий путь
Заряжены олени и налево и направо не свернуть и где-то волки закупают белый снег
Заряжены олени и налево и направо не свернуть и где-то волки закупают белый снег
Рога то вверх то в душу заползают и звезда
Всего лишь далеко в ночи пылающий (фонарь)
@@ -37,7 +34,7 @@ updated: 2026-05-17
Игриво догорает в светлом праздничном огне как будто старый дед кродется принести нам новый год
И без пяти
Ленивая селёдка уползает под под ковёр
Ленивая селёдка уползает под под ковёр
И нолиты спасительные шрамы на хрусталь
Но за окном всё стужа снег и проклятый декабрь но скоро счастье сдетонирует на весь наш тихий двор
@@ -45,4 +42,4 @@ updated: 2026-05-17
А это значит кто-то как обычно не успел
И кто-то неумело наступил на провода
И мы смеёмся нас переполняет детский смех
И с нами только радость, счастье, ёлка и звезда
И с нами только радость, счастье, ёлка и звезда
@@ -0,0 +1,34 @@
---
title: Не покупают никакой еды (COVID)
tags:
- personal
- creative
- song
- satire
updated: '2026-05-17'
---
Не покупают никакой еды —
Все экономят вынужденно деньги:
Корона косит стройные ряды,—
Но люди вновь смыкаются в шеренги.
Закрыт Вухань, Анталия горит
И в Дании поистребляли норок
Но наш мужик всё у станка стоит
И не пройдет к нам половецкий ворог
Убытки терпит целая страна,
Но вера есть, все зиждется в иконе,—
Объявлена народная война
Одной несчастной, бедненькой короне.
Я погадал вчера на даму треф,
Назвав ее для юмора короной,—
И понял я: корона — это блеф,
Она теперь мне кажется палёной.
Уверен я: короне скоро тлеть.
А ну-ка — залп из тысячи орудий!
Вперед! С Короны могут помереть
Лишь мы (те), некоронованные, люди.
@@ -1,17 +1,12 @@
---
title: Я хуярящий макет
aliases:
- keep-2023-11-14_00_41_25
- keep-import
tags:
- sort
- keep-import
- timestamped
- стихи
- мои-стихи
updated: 2026-05-17
- personal
- creative
- song
- rap
updated: '2026-05-17'
---
# Я хуярящий макет
Я хуярящий макет
Сам себе бестселлер
@@ -20,5 +15,5 @@ updated: 2026-05-17
Я хуярю в высоту
Feelин сраку хряку
И комиссией к хвосту
Жопа пуделяки
И комиссией к хвосту
Жопа пуделяки
@@ -1,21 +1,15 @@
---
title: Заходи на уголёк
aliases:
- keep-2023-11-14_00_41_56
- keep-import
tags:
- sort
- keep-import
- timestamped
- мои-песни
- мои-стихи
updated: 2026-05-17
- personal
- creative
- song
updated: '2026-05-17'
---
# Заходи на уголёк
Заходи на уголёк
Я дровишек приволок
Весёлый выдался у нас Рагнарёк
Весёлый выдался у нас Рагнарёк
В глухой деревеньке
Приводи с собой подруг
@@ -31,4 +25,4 @@ updated: 2026-05-17
Ещё пива ебану
Разговоры про войну
Я так люблю свою страну
Но ненавижу государство
Но ненавижу государство
+16
View File
@@ -0,0 +1,16 @@
---
title: Тост про Антона
tags:
- personal
- creative
- toast
updated: '2026-05-17'
---
Помню-помню! А как же познакомились мы с Антоном? Да всё просто — как будто судьба сама вывела нас на ту тропинку, по которой он однажды подошёл и сказал: «Ну что, пойдём?» И с тех пор и пошли, долго шли, ночами напролёт, то по городским улицам, то по полям, где туман укутывал нас, словно плед. Антон пел тогда, и не просто так — для меня. Да так пел, что даже ветер на мгновение стихал, слушая его голос. И понял я, что с таким человеком можно не только под звёздами, но и по всей жизни идти бок о бок.
Помню-помню, как жопку твою в фонтане мыл в Баден-Бадене, как будто это было вчера. Вот помню, как вчера, как мы Антоху в Турцию провожали — вся компания собралась, охранник у дома уже всех в лицо знает, машет рукой, как своим. Сели тогда на лавочку, конины наелись, и сидим, болтаем о всяком. Глаза блестят, как у детей, а душа поёт — такие моменты не забываются.
Антон пел тогда, и не просто так пел, а словно для меня пел. Ветер на мгновение стихал над мангалом, оставляя причудливые искры красным лисом улыбаться над углями при свете луны. И понял я тогда, что с таким человеком можно не только под звёздами, но и по всей жизни идти бок о бок.
Какой был скромный мальчик, и какой сейчас вырос! Человек с большой буквы, всегда знает, что сказать, как поддержать.
@@ -1,17 +1,11 @@
---
title: Счастья вам, здоровья, неба
aliases:
- keep-2023-11-14_00_41_21
- keep-import
title: Тост общий
tags:
- sort
- keep-import
- timestamped
- стихи
- мои-стихи
updated: 2026-05-17
- personal
- creative
- toast
updated: '2026-05-17'
---
# Счастья вам, здоровья, неба
Счастья вам, здоровья, неба
Мирного над головой
@@ -31,4 +25,4 @@ updated: 2026-05-17
Все желаю вам по два я
Двух котов, два одеяла
Две машин и гаража вам
И одной любви - навалом
И одной любви навалом
@@ -1,27 +1,20 @@
---
title: Поприветствуем!
aliases:
- keep-2025-02-13_00_29_53
- keep-import
title: Тост про Олега (Поприветствуем)
tags:
- sort
- keep-import
- timestamped
- поздравления
- мои-песни
updated: 2026-05-17
- personal
- creative
- toast
updated: '2026-05-17'
---
# Поприветствуем!
Поприветствуем!
Вот перед нами король вечеринок
Лучший для нас среди прочих блондинок
Лучший для нас среди прочих блондинок
Трезвый куражится словно бухой
Но был наш герой не с рожденья такой
Жил в эмиграции Павлиш Олег
Жил в эмиграции Павлиш Олег
Бросила жена он бухал как генсек
Сел на мели посредине Бали
Сел на мели посредине Бали
Ловил просветление с утра спохмели
Всёж иногда протрезвевшим он был
@@ -29,16 +22,16 @@ updated: 2026-05-17
Акции, фьючерсы, бабки, обнал
Бабов по пятницам практиковал
Но тут он решил переехать в Бишкек
Но тут он решил переехать в Бишкек
Чтоб на Бали не закончить свой век
Вобщем друзья завелися тут быстро,
Еще бы, уж год как тут живут программисты!
Еще бы, уж год как тут живут программисты!
Припев:
*Припев:*
И взвыла печень от бухла, дымится ум!
И краска жизни вдруг ушла от грустных дум
Но наш Олег - он парень цепкий, не дурак
Он чистит печень, карму, чакры, зодиак!
Но наш Олег он парень цепкий, не дурак
Он чистит печень, карму, чакры, зодиак!
Мантры, ашрамы, ретриты, посты,
Веганство, йога и дух чистоты.
@@ -47,11 +40,11 @@ updated: 2026-05-17
Снова с друзьями – но только без драмы,
С шутками, светом, без грязи и хлама.
"Всё трансцендентно!" заявит герой,
"Всё трансцендентно!" заявит герой,
"Теперь у меня позитивный настрой!"
Припев:
И вот собрались мы чтоб друга развязать
*Припев:*
И вот собрались мы чтоб друга развязать
Чтоб водкой, пивом, и Бишкеком накачать
Чтоб день рожденья закружил чад кутежа
И с кармой чистой ты усыновил бомжа!
И с кармой чистой ты усыновил бомжа!
+2
View File
@@ -122,6 +122,8 @@ related: "[[personal/documents/todo-list]]"
- [ ] Абдулла Аджалан демократическая конфедерация?
- [ ] Чё Гевара партизанская война
- [x] Сорокин метель
- [ ] Дилемма инноватора (Clayton Christensen)
- [ ] Google Project Management курс (Coursera)
- [x] Бегущий человек
+14
View File
@@ -10,6 +10,20 @@ related:
- [ ] immich to jellyfin tv
- [ ] скачать флибусту с обновлениями
- https://booktracker.org/viewforum.php?f=253
- [ ] Закопать яму / вывезти глину
- [ ] Спилить берёзу
- [ ] Мультируль
- [ ] Настроить эмуляторы
- [ ] Коптер
- [ ] Камера вело, тормоза
- [ ] Настроить ТВ пульт
- [ ] Коробку поменять (авто)
- [ ] Клипсы в авто поменять
- [ ] Камера заднего вида
- [ ] rutracker хранители: https://rutracker.org/forum/viewtopic.php?t=3118460
- [ ] Купить плавки
- [ ] Сифон (газатор)
- [ ] Ручка на перфоратор (взамен сломанной)
- [ ] objc.io Advanced Swift (in Downloads) videos -> watch; upload to truenas/edu ()
- [ ] Hermes memories -> obsidian, purge
- [ ] Смеситель
+19
View File
@@ -0,0 +1,19 @@
---
title: Маркс — теория стоимости (заметки из разговора)
tags:
- personal
- ideas
- economics
- marxism
updated: '2026-05-17'
---
Добро пожаловать к Карлу Марксу с теорией стоимости 🙂
Из золота делают много всякой высокотехнологичной хероты, так что это таки тоже товар. А ещё когда оно было деньгами, оно истиралось, теряло форму, тупо терялось, в частности поэтому «безопаснее» его было хранить в банке а платить расписками.
Чтобы что-то купить — кто-то должен произвести эквивалентную стоимость. Стоимость производит только производительный труд. Ты добыл золото, а кто-то много еды, ты купил часть еды за своё золото — это должно быть эквивалентно тому что ты потратил свой труд на добычу этой еды.
Хоть золото при этом никуда не исчезает, у «них» тоже есть своё потребление, то есть стоимость потребляют (переводят в ничто) так или иначе все, только богатеет тот у кого труд производительней — то есть производятся излишки.
3. То есть современная денежная система так изначально задумана (евреями, рокфеллерами, рептилоидами — нужное подчеркнуть), чтобы обеспечивать эксплуатацию рабочих, понижение цены труда и рост власти и капитала у буржуев. Гипотетическая справедливая система должна устранить это...
@@ -1,5 +1,5 @@
---
title: Media Pipeline — Multi-Tracker Support
title: Media Pipeline — Roadmap
created: '2026-05-17'
updated: '2026-05-17'
status: active
@@ -9,90 +9,77 @@ tags:
- rutor
- nnm-club
---
# Media Pipeline — Multi-Tracker Support
# Media Pipeline — Roadmap
## Текущее состояние
## ✅ Сделано
✅ Реализовано и задеплоено на Kraken:
- `TrackerPageParserRegistry` — dispatch по `url.host`, парсеры: Rutracker, Rutor, NNMClub, PirateBay, Nyaa
- `RutrackerPageParser` — CP1251 decode через `/usr/bin/iconv`, SwiftSoup парсинг
- Жанры извлекаются из `[...]` в заголовке топика, страны фильтруются
- KP/IMDb ID extraction работает
- `TorrentSourceStrategy` использует registry вместо прямого вызова `RutrackerAPI`
### Шаг A — Transmission flow + Rutracker парсинг
- `TrackerPageParserRegistry` — dispatch по `url.host`
- `RutrackerPageParser` — CP1251/iconv, SwiftSoup, жанры из заголовка топика, KP/IMDb IDs
- `TrackerMediaKind` — enum: movie/series/cartoon/documentary/music/audiobook/game/book/unknown
- `extractMediaKind` — детект по `BB.catId` / `FORUM_ID` на странице Rutracker (100+ forum IDs)
- `TorrentPageMetadataFact.mediaKind` + `TorrentLocator.torrentId` — пробрасывается через весь стек
- `QueryBuilderStrategy``torrentTitle` как предпочитаемый source для поиска
- Fallback NFO при unresolved + `torrentPageMetadata.hasRichData`
## Архитектура
### Шаг B — Структура парсеров других трекеров
- `RutorPageParser`, `NNMClubPageParser`, `PirateBayPageParser`, `NyaaPageParser` — структура реализована
- Требуют верификации на живых HTML (нет тестовых fixture)
### TrackerPageParser protocol
### Шаг C — DirectoryPolicy + transmissionMove
- `DirectoryPolicy` / `MatchPolicy` / `MoveStrategy` в конфиге — backward-compatible
- `FileAction.transmissionMove(torrentId:, from:, to:)` — Codable
- `ApplyPhase` — async execute, RPC → fallback filesystem
- `buildMovieActions` — читает policy, `needsSymlink`, `needsNFO`, `effectiveOutputDir`
- `kindKey` из реального `TrackerMediaKind``destination_by_kind`
- `transmissionMove` когда есть `torrentId`, иначе `move`
- `config.json` на Кракене — `directory_policies` для всех директорий
- Canonical маркер `.media-pipeline-canonical` для music/books/games пишется в `output` директорию рядом с файлом
```swift
public protocol TrackerPageParser: Sendable {
var supportedHosts: [String] { get }
func parse(data: Data, url: URL) throws -> TorrentPageMetadata
}
```
## ⚠️ Частично работает
### TrackerPageParserRegistry
### Фильмы из downloads
- `.mkv/.mp4` → scanner видит → регион → `transmissionMove``/media/movies/` → canonical marker → повторный run скипает ✅
- `TrackerMediaKind` детектится по forum_id → правильная `destination_by_kind`
```swift
public struct TrackerPageParserRegistry: Sendable {
public static let defaults: [TrackerPageParser] = [
RutrackerPageParser(),
RutorPageParser(),
NNMClubPageParser(),
PirateBayPageParser(),
NyaaPageParser(),
]
public func parser(for url: URL) -> TrackerPageParser?
}
```
### Музыка/книги/игры из downloads
- Scanner не видит `.mp3/.flac/.epub/.zip` — нет `videoExtensions` для аудио ❌
- Регион не создаётся → `buildMovieActions` не вызывается → файл остаётся в downloads
## Парсеры по трекерам
## 📋 Следующие шаги
### RutrackerPageParser ✅
- Encoding: Windows-1251 (через `/usr/bin/iconv` temp files — swift-corelibs-foundation не поддерживает CP1251 на Linux)
- Title selector: `#topic-title`, `h1.maintitle`, `a.topictitle`
- **Genres: из заголовка топика `[YEAR, жанр1, жанр2, ..., TECH-TAG]`** — не из поста
- Страны фильтруются через `countryNames: Set<String>` (30+ стран RU+EN)
- Poster: первый img в `div.post_body` не из rutracker UI
- IDs: `imdb.com/title/tt\d+`, `kinopoisk.ru/film/\d+`
### Шаг D — Audio/non-video scanner (приоритет)
Чтобы музыка/книги/игры из downloads реально перекладывались:
### RutorPageParser ✅ (структура реализована)
- Encoding: UTF-8
- Title: `h1.topic-header` / `div#topic-title`
- Genres: паттерн `Жанр:` в тексте
1. **`AudioClassifier`** — `isAudioFile()` для `.mp3/.flac/.m4a/.ogg/.aac/.wav/.opus`
2. **`NonVideoRegionBuilder`** — создаёт регионы для директорий без video но с audio/doc файлами
3. **`FileScanner`** — при наличии `TrackerMediaKind != .movie/.series` (из Transmission метаданных) создавать регион даже без video
4. **`buildAudioActions`** в `MediaFinalizer` — move + NFO рядом, без symlink, canonical marker рядом
5. **Альтернатива (проще)**: unsorted fallback — отдельный pass по `unsorted_dir` через Transmission API, для торрентов без региона вызывать `torrent-set-location` на основе `mediaKind` из страницы трекера
### NNMClubPageParser ✅ (структура реализована)
- Encoding: Windows-1251 (тот же iconv путь)
- Title: `h1.maintitle` / `a.maintitle`
### Шаг E — Верификация парсеров
- HTML fixture тесты для rutor, nnm-club на живых страницах
- Проверить `extractMediaKind` на реальных forum_id
### PirateBayPageParser ✅ (структура реализована)
- Encoding: UTF-8
- Title: `<h1 id="title">`
- Нет IMDb/KP ссылок обычно → только title/year из названия торрента
### NyaaPageParser ✅ (структура реализована)
- Encoding: UTF-8
- Аниме: title из `h3.panel-title`, AniDB ID если есть
### Шаг F — Series из downloads
- `buildSeriesActions` сейчас не читает policy → нет move для сериалов из downloads
- Нужно прокинуть `torrentURLFacts`/`torrentPageFacts` аналогично movie
## Ключевые питфоллы
- `extractGenres` должен парсить из **заголовка топика** (`#topic-title`), а не из тела поста — Rutracker кодирует жанры в `[YEAR, жанр, ...]` в title
- CP1251 decode: использовать `/usr/bin/iconv` через temp files — единственный способ на Linux
- Кеш хранит сырые байты (binary) — `grep` по кешу не работает для CP1251 файлов
- `TrackerParsers.swift` — боевой файл (используется в продакшне); `RutrackerAPI.swift` — legacy, параллельно существует
- CP1251: `/usr/bin/iconv` через temp files — единственный способ на Linux
- `extractGenres` — из заголовка топика `[YEAR, жанр, ...]`, не из тела поста
- `transmissionMove` генерируется только если scanner создал регион (нужен video файл)
- Canonical marker для music/books: `output == source dir` → повторный run скипает через `agentResolvedInLibrary`
- `allOutputDirs` в PipelineRunner не включает `directoryPolicies[].output` → нужно обновить
## Файлы
- `Sources/MediaSources/APIs/TrackerParsers.swift` все парсеры + registry (боевой)
- `Sources/MediaSources/APIs/RutrackerAPI.swift` — legacy парсер (используется в части flow)
- `Sources/MediaSources/Providers/TorrentSourceStrategy.swift` — dispatch через registry
- `Sources/MediaDomain/Facts/TorrentPageMetadataFact.swift` — модель: title, year, genres, posterURL, description, externalLinks
## Roadmap
- [ ] Шаг B — новые типы медиа: игры, музыка, книги (следующий)
- [ ] Реальные HTML fixture тесты для каждого трекера (rutor, nnm-club)
- [ ] Верификация RutorPageParser/NNMClubPageParser на живых торрентах
- [ ] `MediaKind` detection по категории торрента (напр. "Игры PC" → `.game`)
- `Sources/MediaSources/APIs/TrackerParsers.swift` — парсеры + registry + `extractMediaKind`
- `Sources/MediaDomain/Facts/TorrentPageMetadataFact.swift``TrackerMediaKind`, поля
- `Sources/MediaDomain/Facts/TorrentInfoURLFact.swift``torrentId: Int?`
- `Sources/MediaSources/Protocol/TorrentInfoProvider.swift``TorrentLocator.torrentId`
- `Sources/MediaPipeline/Config/Config.swift``DirectoryPolicy`, `MatchPolicy`, `MoveStrategy`
- `Sources/MediaPipeline/Apply/FileAction.swift``transmissionMove` case
- `Sources/MediaPipeline/Apply/ApplyPhase.swift` — async execute, RPC fallback
- `Sources/MediaPipeline/Apply/MediaFinalizer.swift` — policy-aware routing, torrent extractors
@@ -71,6 +71,7 @@ updated: "2026-05-17"
Блиц
Скар
Голлум
Буцефал
## Связанные заметки
- [[personal/projects/personal-os/obsidian-vault-strategy]] — стратегия развития vault
+14
View File
@@ -0,0 +1,14 @@
---
title: 'Контакт: Андрей Исаев (DDG Бишкек)'
aliases:
- контакт-андрей-исаев-ddg
- keep-import
tags:
- work
- contacts
- ddg
updated: '2026-05-17'
---
# Контакт: Андрей Исаев DDG
Коллега по DDG из Бишкека
@@ -0,0 +1,12 @@
---
title: Performance Review — вопросы
tags:
- work
- career
- review
updated: '2026-05-17'
---
- Are you happy with my work?
- What I suck at?
- How can I improve?
@@ -1,8 +1,14 @@
---
title: "Ошибки семинара"
aliases: ["ошибки-семинара", "keep-import"]
tags: ["sort", "keep-import"]
updated: "2026-05-17"
title: Ошибки семинара — разбор
aliases:
- ошибки-семинара
- keep-import
tags:
- work
- feedback
- speaking
- retrospective
updated: '2026-05-17'
---
# Ошибки семинара lead dev
Привязать к записи lead dev masterclass на truenas edu
@@ -23,4 +29,4 @@ Breakout rooms activities
Не хватает "волшебных пендалей"
Не хватает конкретных success stories с KPI
Не хватает конкретных success stories с KPI
+10
View File
@@ -0,0 +1,10 @@
---
title: Zoom — личная комната
tags:
- work
- meetings
- zoom
updated: '2026-05-17'
---
https://duckduckgo.zoom.us/my/malex