Auto | arch-x1: 2026-06-03 21:34:10

This commit is contained in:
Dmitry
2026-06-03 21:34:10 +03:00
parent b0e229d980
commit 68ce894541
141 changed files with 1 additions and 10750 deletions
@@ -1,46 +0,0 @@
---
status: stable
type: concept
tags:
- devops
- containerization
created: 2026-02-13
updated: 2026-05-07
title: Apache Mesos
---
# Apache Mesos
- инструмент менеджмента кластерных решений по оркестрации контейнерных и не-контейнерных нагрузок.
Архитектура основана на трех составляющих:
![Picture background|200](Apache%20Mesos_mesos.png)
1. Узлы управления (master node)
2. Рабочие узлы (agent)
3. Фреймворки (framework)
Одновременно могут использоваться несколько фреймворки - именно они запускают рабочие нагрузки.
Фреймворки состоят из:
1. Планировщик фреймворка (scheduler)
2. Исполнитель фреймворка (executor)
Планировки устанавливается на всех узлах, а исполнитель выполняет задачи на рабочих узлах.
Master-узлы предоставляют ресурсы используемым фреймворкам, а Scheduler фреймворка выбирает, на каких ресурсах agent-узлов Executor будет выполнять рабочее задание.
Популярные фреймворки:
1. Marathon (оркестрация контейнерных нагрузок) 
2. Apache Aurora (оркестрация рабочих cron-заданий) - deprecated*
3. Mesosphere dc/os (операционная система на базе Apache mesos и Marathon. 
Имеется community и enterprise-версии. ) - deprecated
4. Mesosphere dc/os 2.0 (Kubernetes-совместимый фреймворк - nobest (не готово)
Другие решения:
[[Docker Swarm]]
[[Kubernetes]]
[[HashiCorp Nomad]]
@@ -1,59 +0,0 @@
---
status: stable
type: concept
tags:
- devops
- containerization
- docker
created: 2026-02-13
updated: 2026-05-07
title: Docker Swarm
---
# Docker Swarm
- встроенное в docker решение по обеспечению оркестрации контейнеров
- оркестрирует только контейнеры и причем только docker
- но весь прост в освоении
![Picture background|200](Docker%20Swarm_daf199465f470.jpg)
Архитектура делится на:
1. Узлы управления (master)
2. Рабочие узлы (worker)
Docker Swarm не поддерживает шаблонизацию
---
Swarm поддерживает следующие типы сетей:
- bridge
- overlay
- ingress (overlay с возможностью балансировки трафика)
В Swarm есть поддержка **service-discovering** (обнаружение сервисов)
Работа с персистентным хранением решается через Volumes.
Нет автоскейлинга (масштабирования)
Зато есть поддержка паттерна **rolling update** (постепенное обновление сервисов без downtime)
Docker Swarm хорошо интегрируется с инструментами мониторинга.
Существует встроенное хранилище секретами - docker secrets.
Есть mTLS
Сетевые политики (network policy) не поддерживаются.
Другие решения:
[[Apache Mesos]]
[[Kubernetes]]
[[HashiCorp Nomad]]
## Связанные заметки
- [[Сегментация сети]] — network policy в Swarm (не поддерживается нативно) решает ту же задачу изоляции трафика, что VLAN в физической сети
- [[CA и NGINX]] — встроенный mTLS между нодами Swarm использует ту же PKI-инфраструктуру, что и SSL-сертификаты в NGINX
@@ -1,51 +0,0 @@
---
status: stable
type: concept
tags:
- devops
- containerization
created: 2026-02-13
updated: 2026-05-07
title: HashiCorp Nomad
---
# HashiCorp Nomad
**nomad** - фреймворк для построения кластерных решений, поддерживает не только контейнерные нагрузки, но и не-контейнерные. Существуют платные и бесплатные версии продукта.
![Picture background|200](HashiCorp%20Nomad_nomad.svg)
Существует возможность установки расширений:
- consul (service-discovering)
- vault (secret management)
- prometheus, grafana, ELK (monitoring, logging, etc)
- и т.д.
Установка nomad проста, но с увеличением расширений _сложность администрирования возрастает_.
Архитектура представляет собой совокупность управляющих (server) и управляемых (clients) узлов.
В Nomad используется концепция "job-tasks", где task - это атомарная единица работы, выполняемая выполняемая тем или иным драйвером:
- docker 
- qemu
- java
- etc
---
Nomad не поддерживает использование шаблонизаторов.
Для работы с манифестами nomad использует проприетарный язык HCL с ограниченной возможностью двусторонней конвертации HCL в json и yml.
Nomad поддерживает использование CNI-плагинов, и имеется поддержка CSI (Container Storage Interface)
Nomad поддерживает горизонтальное и вертикальное скалирование:
1. Горизонтальное - создание новых инстансов для балансировки нагрузки.
2. Вертикальное - увеличение ресурсов у уже существующих инстансов.
3. Кластерное скалирование - увеличение рабочих и управляющих узлов.
Другие решения:
[[Docker Swarm]]
[[Kubernetes]]
[[Apache Mesos]]
@@ -1,42 +0,0 @@
---
status: stable
type: moc
tags:
- devops
- container
- kubernetes
created: 2026-02-13
updated: 2026-05-07
title: Kubernetes
---
# Kubernetes
K8s — система оркестрации контейнеров. Кластер состоит из двух плоскостей:
- **[[Control Plane - Плоскость управления]]** — master-узлы: etcd, kube-api-server, kube-scheduler, kube-controller-manager, cloud-controller-manager
- **[[Data Plane - Плоскость данных]]** — worker-узлы: kubelet, kube-proxy, CRI/CNI/CSI
![[Pasted image 20260429091836.png]]
## Рабочие нагрузки
- [[Deployment и ReplicaSet]] — развёртывание, rolling update, rollback, scaling
## Хранение данных
- [[PV, PVC]] — персистентное хранилище: Persistent Volume и Persistent Volume Claim
## Альтернативные решения
- [[Docker Swarm]]
- [[Apache Mesos]]
- [[HashiCorp Nomad]]
## Источники
[[Devops вводный 9 урок. Введение в Kubernetes. Компоненты control и Data plane.pdf]]
## Связанные заметки
- [[Шаблонизатор Helm]]
@@ -1,92 +0,0 @@
---
status: seed
type: guide
tags:
- devops
- kubernetes
- helm
created: 2025-12-17
updated: 2026-05-07
title: Шаблонизатор Helm
---
# Шаблонизатор Helm
**Helm** — менеджер пакетов и шаблонизатор для развёртывания приложений в [[Kubernetes]].
Helm помогает описывать, устанавливать, обновлять и удалять приложения через готовые или собственные Helm charts.
## Зачем нужен Helm
Helm позволяет:
- искать готовые charts;
- устанавливать приложения в Kubernetes;
- обновлять релизы;
- удалять приложения;
- переиспользовать шаблоны манифестов;
- параметризовать установку через values.
## Helm chart
**Helm chart** — пакет с шаблонами Kubernetes-манифестов, значениями по умолчанию и метаданными приложения.
Chart можно:
- найти в публичном chart-репозитории;
- создать самостоятельно под своё приложение.
## Базовый workflow
Добавить chart-репозиторий:
```sh
helm repo add bitnami https://charts.bitnami.com/bitnami
```
Обновить индекс репозиториев:
```sh
helm repo update
```
Найти chart:
```sh
helm search repo bitnami
```
Установить приложение:
```sh
helm install my-mysql bitnami/mysql
```
Посмотреть доступные параметры:
```sh
helm show values istio/base
```
Установить или обновить значения через `--set`:
```sh
helm install istiod istio/istiod --set requests.cpu=300m
```
Посмотреть установленные релизы:
```sh
helm list
```
Обновить релиз:
```sh
helm upgrade istiod istio/istiod --set requests.cpu=600m
```
## Связанные заметки
- [[Kubernetes]]
- [[DevOps - основы]]
@@ -1,66 +0,0 @@
---
status: stable
type: concept
tags:
- devops
created: 2025-12-17
updated: 2026-05-07
title: DevOps - основы
---
# DevOps - Основы
Конспект урока: [Devops вводный 1 урок. Что такое Devops и история его развития.pdf](#root/4yWHzaG6M7iE/SWLwobVesSih/pRoFr75wb413/O6DeMoaS4kWb)
## Возникновение DevOps
**DevOps** - _методология взаимодействия_ специалистов по разработке с экспертами по информационно-технологическому обслуживанию, а также взаимная интеграция их рабочих процессов для обеспечения высокого качества продукта.
### Инфраструктура Как Код (IaC)
Подход к развертыванию, работе и настройке инфраструктуры в виде файлов конфигурации и систем управления конфигурацией.
DevOps-инженер управляет инфраструктурой и конфигурацией с помощью декларативных подходов.
- Управление инфраструктурой 
- Стандартизация образов
- Использование инструментов для декларативного управления инфраструктурой, конфигурацией и сервисами (Ansible, Terraform).
[[IaC - основы]]
### Непрерывная Сборки И Доставка (развертывание) (CI/CD)
Методология разработки и деплоя, подразумевающая автоматическую сборку, тестирование и развертывание программного кода.
- Технологии контейнеризации (Docker, Podman)
- Микросервисная архитектура
- Обеспечение непрерывной доставки продукта
- Обеспечение безопасности контейнеров и микросервисов
### Мониторинг, Логирование, Аудит, Трассировка
- Принципы работы систем мониторинга
- Инструменты логирования и аудита
- Сбор и обработка логов приложений и инфраструктуры
- Трассировка приложений в контексте взаимодействия с командами разработки
### Контейнерная Оркестрация
- Оркестрация контейнерных и неконтейнерных нагрузок
- Обеспечение ИБ контейнеров и оркестраторов
- Развертывание и администрирование высоконагруженных кластеров
- Интеграция оркестраторов с инструментами CI/CD
## Инструментарий
1. Системы контроля версий (Git, SVC)
2. CI/CD (**Gitlab Ci**, Jenkins, Teamcity)
3. Контейнеризация (**Docker**, Podman, Cri-o)
4. Оркестрация (**Kubernetes**, Swarm, Nomad, Mesos)
5. Управление конфигурацией (**Ansible**, Chef, Puppet)
6. Управление инфраструктурой (**Terraform**, Cloudformation)
7. Мониторинг (Prometheus, Loki, Grafana, …)
8. Безопасность (Trivy, Clair, Falco, Kube-hunter, …)
9. DevSecOps-анализ (SAST, SCA, DAST, IAST, RASP)
![](DevOps_image.png)
@@ -1,50 +0,0 @@
---
status: seed
type: moc
tags:
- finance
- investments
created: 2026-05-18
updated: 2026-05-18
title: База инвестора
---
# База инвестора
Навигационная заметка по инвестициям. Общая логика: сначала цель, горизонт и [[Риск-профиль инвестора]], потом структура [[Инвестиционный портфель|портфеля]], затем выбор классов активов и конкретных инструментов.
Не является индивидуальной инвестиционной рекомендацией.
## Базовый маршрут
1. Определить цель и горизонт.
2. Оценить [[Риск-профиль инвестора]].
3. Собрать [[Инвестиционный портфель]] из ролей: ликвидность, защита, доход, рост, валютная защита.
4. Выбрать инструменты: [[Облигации]], [[Акции]], [[Инвестиционные фонды]], [[Золото в портфеле]], [[Криптовалюты как инвестиционный актив]].
5. Настроить правила управления: [[Управление инвестиционным портфелем]], ребалансировка, календарь событий, фиксация доходности.
6. Отдельно отделять инвестирование от [[Трейдинг|трейдинга]].
## Карта заметок
- [[Риск-профиль инвестора]] — готовность и возможность принимать риск.
- [[Инвестиционный портфель]] — структура портфеля, диверсификация, роли активов.
- [[Управление инвестиционным портфелем]] — что делать после сборки портфеля, как ребалансировать и реагировать на события.
- [[Облигации]] — долговые инструменты, дюрация, купоны, флоатеры, ВДО.
- [[Акции]] — доля в бизнесе, типы акций, факторы цены.
- [[Оценка акций]] — мультипликаторы, фундаментальный анализ и красные флаги.
- [[Индексное инвестирование]] — покупка рынка через индексы и фонды.
- [[Дивидендный портфель]] — акции как источник денежного потока.
- [[Инвестиционные фонды]] — фонды, комиссии, репликация, ошибка слежения.
- [[Золото в портфеле]] — защитный актив и способы инвестирования.
- [[Криптовалюты как инвестиционный актив]] — биткоин, Ethereum, стейблкоины, волатильность.
- [[Трейдинг]] — технический анализ, новости, объем, риск-контроль.
- [[Инсайдерская торговля и манипулирование рынком]] — нечестные практики и признаки подозрительного поведения.
## Связанные заметки
- [[Производные финансовые инструменты]] — деривативы, опционы и инструменты с иной природой риска.
- [[Налог на доходы физических лиц (НДФЛ)]] — налоги с инвестиционного дохода.
- [[Налоговые вычеты]] — инвестиционные и прочие вычеты.
- [[Бухгалтерский баланс]] — база для анализа долговой нагрузки и капитала.
- [[Отчет о финансовых результатах]] — прибыль, выручка и финансовая динамика бизнеса.
- [[Экономическая безопасность - база]] — макроэкономический контекст.
@@ -1,62 +0,0 @@
---
status: seed
type: concept
tags:
- finance
- investments
- portfolio
created: 2026-05-18
updated: 2026-05-18
title: Инвестиционный портфель
source:
- "[[458a0596-ee1c-43dc-9c4e-de29c9df919c]]"
- "[[4a28d0a1-8393-4b0c-b528-ec4d42dca0f0]]"
- "[[e74de470-d705-4000-80d0-5daecd564267]]"
---
# Инвестиционный портфель
Инвестиционный портфель — набор активов, собранный под цель, горизонт и [[Риск-профиль инвестора]]. Успех зависит не от одной удачной идеи, а от доходности и устойчивости всего набора активов.
## С чего начать
1. Определить цель: накопление капитала, защита от инфляции, пассивный доход, обучение рынку.
2. Определить горизонт: когда деньги понадобятся.
3. Определить риск-профиль.
4. Разложить портфель по ролям активов.
5. Задать правила пополнения, ребалансировки и фиксации прибыли.
## Роли активов
- ликвидность: кэш, денежный рынок, короткие [[Облигации]];
- защита: ОФЗ, надежные облигации, [[Золото в портфеле]];
- доход: корпоративные облигации инвестиционного уровня, [[Дивидендный портфель]];
- рост: [[Акции]], фонды акций, индексные инструменты;
- валютная защита: замещающие/квазивалютные облигации, золото, частично [[Криптовалюты как инвестиционный актив]].
## Диверсификация
Диверсификация снижает риск, потому что разные активы реагируют на события по-разному. Полезно диверсифицировать:
- по классам активов;
- по эмитентам;
- по секторам;
- по валютам;
- по срокам погашения облигаций;
- по стратегиям.
## Практические правила
- Не начинать с плечей и сложных инструментов.
- Не концентрироваться в одном эмитенте или секторе.
- Не покупать длинные облигации без понимания дюрации.
- Не держать весь портфель в одном классе активов.
- Фиксировать причину покупки до сделки.
- Отделять инвестиционную стратегию от [[Трейдинг|трейдинговой]].
## Связанные заметки
- [[База инвестора]]
- [[Управление инвестиционным портфелем]]
- [[Индексное инвестирование]]
- [[Инвестиционные фонды]]
@@ -1,67 +0,0 @@
---
status: seed
type: concept
tags:
- finance
- investments
- crypto
created: 2026-05-18
updated: 2026-05-18
title: Криптовалюты как инвестиционный актив
source:
- "[[1287aee9-73d3-439d-b028-069f9b713000]]"
- "[[5366a61b-61ca-4e2f-b445-928ea32d2209]]"
- "[[54b7b330-e96b-4b89-93c6-bab34e127186]]"
---
# Криптовалюты как инвестиционный актив
Криптовалюты — высоковолатильный класс активов, где инвестиционная логика смешивается с технологией, ликвидностью, регуляторным риском и рыночной спекуляцией.
## Биткоин как цифровое золото
Сходства с золотом:
- ограниченное предложение;
- сложно добывается;
- делимость и переносимость;
- нет единого центра;
- ценность поддерживается общественным консенсусом.
Отличия:
- история биткоина намного короче;
- выше волатильность;
- больше технологических и регуляторных рисков;
- хранение требует цифровой безопасности.
## Ethereum
Ethereum отличается от биткоина тем, что используется как инфраструктура для приложений: смарт-контракты, DeFi, токены, стейблкоины и другие сценарии. Его ценность сильнее зависит от полезности сети и спроса на транзакции.
## Консервативная крипта
В материалах выделяются более осторожные крипто-подходы:
- ограниченная доля крипты в портфеле;
- фокус на наиболее ликвидных активах;
- стейблкоины и цифровые валютные депозиты как отдельный рискованный инструмент;
- избегание покупки через сомнительные Telegram/P2P-схемы;
- учет юридических и операционных рисков.
## Риски
- высокая волатильность;
- регуляторные ограничения;
- риск потери ключей;
- риск биржи/кастодиана;
- риск мошенничества;
- риск стать участником сомнительной сделки при покупке через непрозрачные каналы;
- технологические риски, включая будущие угрозы криптографии.
## Связанные заметки
- [[База инвестора]]
- [[Производные финансовые инструменты]]
- [[OSINT - Зачет]]
- [[Трейдинг]]
@@ -1,53 +0,0 @@
---
status: seed
type: concept
tags:
- finance
- investments
- risk
created: 2026-05-18
updated: 2026-05-18
title: Риск-профиль инвестора
source:
- "[[a5d627bd-c616-43bb-8490-bdeef3f27d15]]"
- "[[e74de470-d705-4000-80d0-5daecd564267]]"
---
# Риск-профиль инвестора
Риск-профиль описывает, какую просадку инвестор реально может выдержать финансово и психологически. Это первичный фильтр для выбора портфеля, а не формальность из анкеты брокера.
## Из чего складывается
- готовность к риску: реакция на волатильность, прошлый опыт, склонность к панике;
- возможность риска: стабильность дохода, финансовая подушка, долги и обязательства;
- цель: горизонт инвестирования и требуемая доходность.
## Типовые профили
| Профиль | Цель | Комфортная просадка | Типовая структура |
|---|---|---:|---|
| Консервативный | сохранить капитал | 5-15% | облигации, денежный рынок, золото, минимум акций |
| Умеренный | баланс риска и доходности | 15-35% | акции + облигации, часть защитных активов |
| Агрессивный | максимальный рост | 30-60% | высокая доля акций, активные идеи, выше волатильность |
Разные источники дают разные границы просадок. Практичнее фиксировать не название профиля, а максимальную приемлемую просадку в процентах и рублях.
## Связь со стилем
- Консерватору логичен пассивный стиль и надежные инструменты.
- Умеренный профиль допускает пассивную базу и активные идеи.
- Агрессивный профиль может использовать активные стратегии и [[Трейдинг]], если есть время, навык и дисциплина.
## Ошибки
- выбирать риск-профиль "на росте рынка", когда просадок ещё не было;
- считать доходность без риска;
- держать агрессивный портфель без финансовой подушки;
- подменять стратегию эмоциями и FOMO.
## Связанные заметки
- [[База инвестора]]
- [[Инвестиционный портфель]]
- [[Управление инвестиционным портфелем]]
@@ -1,87 +0,0 @@
---
status: seed
type: guide
tags:
- finance
- trading
- risk
created: 2026-05-18
updated: 2026-05-18
title: Трейдинг
source:
- "[[64674bde-a499-4e2c-9395-223d057af808]]"
- "[[c26f22d5-f84f-41dd-a74f-274ff248cec2]]"
- "[[eb2b3804-7372-434a-a89f-a1027dfa9ee3]]"
- "[[e3621adb-fddb-45e8-bf26-6028a5ac5a71]]"
- "[[d9e79104-3d7b-4aa8-b525-0a5ab36a9771]]"
- "[[54b7b330-e96b-4b89-93c6-bab34e127186]]"
---
# Трейдинг
Трейдинг — активная торговля, где результат зависит от стратегии, риск-контроля, исполнения и дисциплины. Это отдельная деятельность, а не ускоренная версия инвестирования.
## Чем трейдер отличается от инвестора
- Трейдер работает с движением цены и ликвидностью.
- Инвестор работает с бизнесом, активом и горизонтом.
- Трейдер не получает гарантированную зарплату от рынка.
- Издержки, налоги и ошибки исполнения сильнее влияют на результат.
## Типы стратегий
Направленные:
- скальпинг;
- интрадей;
- свинг-трейдинг;
- торговля на пробой уровня;
- торговля по новостям.
Ненаправленные:
- арбитраж;
- спреды;
- торговля волатильностью;
- опционные стратегии.
## Технический анализ
Теханализ пытается прогнозировать цену по прошлым движениям графика. Его сила — в визуальных паттернах, уровнях, трендах, индикаторах и объемах. Ограничение: он не видит фундамент, новости и действия крупных участников.
Практическое правило: технический сигнал должен подтверждаться контекстом, ликвидностью, объемом и риск-планом.
## Объем
Объем показывает, сколько единиц актива было куплено и продано за период. Через объем можно косвенно оценивать, насколько "настоящим" выглядит движение цены.
Базовые идеи:
- рост цены на сильном объеме убедительнее роста на пустом рынке;
- пробой уровня без объема чаще ложный;
- резкий объем около новости может указывать на смену ожиданий;
- объем не дает точный прогноз, но помогает оценивать качество движения.
## Уроки Market Wizards
- Волатильность не равна риску: низкая волатильность может скрывать большой хвостовой риск.
- Если новость против позиции, а рынок почти не падает, это может быть сильным сигналом.
- Если новость за позицию, а рынок реагирует слабо, стоит насторожиться.
- Нельзя рисковать всем ради одной сделки.
- Риск-контроль важнее правоты в прогнозе.
## Риск-контроль
- заранее определять риск на сделку;
- сопоставлять объем позиции с волатильностью инструмента;
- не использовать плечо без понятного сценария;
- не выдумывать сделки, если сетапа нет;
- избегать инструментов, риск которых не понятен;
- вести журнал сделок.
## Связанные заметки
- [[База инвестора]]
- [[Акции]]
- [[Производные финансовые инструменты]]
- [[Криптовалюты как инвестиционный актив]]
@@ -1,62 +0,0 @@
---
status: stable
type: moc
tags:
- finance
- taxes
created: 2026-05-02
updated: 2026-05-07
title: Налогообложение в России
---
# Налогообложение в России
## Основы системы
- [[Сущность и история налогов]]
- [[Функции налогов и экономические циклы]]
- [[Законодательная база]]
- [[Налоговая система (Классификация налогов)]]
- [[Субъекты налоговой системы (права и обязанности)]]
- [[Государственный бюджет]]
- [[Кривая Лаффера]]
## Налоги с организаций
- [[Налог на прибыль]]
- [[Налогоплательщики и объекты налога на прибыль организаций]]
- [[Доходы в целях налога на прибыль]]
- [[Расходы в целях налога на прибыль]]
- [[Методы признания доходов и расходов]]
- [[Разница метода по отгрузке и по оплате]]
- [[Налог на добавленную стоимость]]
- [[Налог на имущество организаций]]
- [[Акцизы]]
- [[Специальные налоги организаций]]
- [[Страховые взносы]]
## Налоги с физических лиц
- [[Налог на доходы физических лиц (НДФЛ)]]
- [[Налог на имущество ФЛ]]
- [[Налоговые вычеты]]
## Специальные режимы и пошлины
- [[Специальные налоговые режимы]]
- [[Таможенные пошлины]]
- [[Государственная пошлина]]
## Контроль, декларирование, ответственность
- [[Налоговая декларация]]
- [[Налоговая нагрузка]]
- [[Налоговый контроль (камеральные, выездные проверки)]]
- [[Ответственность (санкции, административная и уголовная)]]
## Прочее
- [[Производные финансовые инструменты]]
## Смежные темы
- [[Бухгалтерский баланс]] — бухучёт и налоговый учёт пересекаются в части налога на прибыль
- [[Отчет о финансовых результатах]]
## Связанные заметки
- [[31, 32 - Налоги]]
- [[Налоги - Организационные моменты]]
- [[Налоги - СР2]]
@@ -1,43 +0,0 @@
---
status: seed
type: concept
tags:
- homelab
created: 2026-02-12
updated: 2026-05-25
title: Проблемы дистрибутивов
---
# Проблемы дистрибутивов
## Arch Linux
- Из-за слишком новой версии OpenSSL не запускаются проекты на RoR
**Решение**: Запускать их из под контейнера
**Update**: Проблема снята.
- Пока абсолютный лидер!
## NixOS
- Невозможно установить новейшую версию пакетов, даже с nix-ld
- Сложность разворачивания окружений
- Заморочки для workflow
## Fedora
- SELinux.
- недоступность репозиториев без VPN
## Ubuntu
- Устаревшие пакеты (не решается даже PPA)
- Нестабильная работа (что странно, лол)
- SNAP-пакеты вовсюду, господи...
- Но хорош как серверное решение
## VanillaOS
- Проблема аналогична NixOS - сложность с установкой приложений
- Особенно, неясно, как поставить VirtualBox (но Virt-Manager лучше)
## PopOS
- База - Ubuntu, что дает свои фишки в работе
- COSMIC иногда лагает, все же
- Вышла стабильная версия на 24.04 с хорошей поддержкой NVIDIA, можно на ПК в будущем
## Связанные заметки
- [[Docker - Дополнительные знания]] — "запускать Rails из под контейнера" — прямой кейс отсюда; контейнер решает проблему несовместимости версий OpenSSL
- [[Ruby On Rails]] — проекты на RoR не запускаются на Arch из-за OpenSSL; решение — запуск в изолированном контейнере
@@ -1,43 +0,0 @@
---
status: stable
type: concept
tags:
- os
- linux
created: 2025-12-17
updated: 2026-05-07
title: Command Help
---
# Command Help
Command Help в Linux — это ряд встроенных средств для получения справочной информации по командам, их опциям и примерам использования прямо из терминала.
## Основные Способы Получения Справки
- **man** — показывает подробный справочник (manual page) по выбранной команде, включая синтаксис, описание, параметры, примеры и ссылки на связанные команды. Например: `man ls`.
- **--help** — быстро выводит основные параметры и краткое описание команды, например: `ls --help`.
- **help** — используется для получения информации о встроенных командах оболочки (shell built-ins), например: `help cd`.
- **tldr** — выводит краткие, практичные примеры использования популярных команд в лаконичном виде, если установлен соответствующий пакет.
## Структура Документации Man
Man-страницы обычно содержат следующие разделы:
- NAME: имя и краткое описание команды.
- SYNOPSIS: шаблон вызова с аргументами.
- DESCRIPTION: подробная информация о работе команды.
- OPTIONS: полный список параметров и их значения.
- EXAMPLES: примеры реального использования.
- SEE ALSO: связанные команды и файлы.
## Навигация В Справке
В man-страницах перемещаться можно с помощью стрелок, пробела (пролистать страницу), Enter (строка), символов j/k, b/Space, q для выхода и / для поиска по тексту документации.
## Применение
Эти команды критичны для изучения синтаксиса, параметров и назначения любых команд Linux, а также для самостоятельного освоения терминала. Даже опытные специалисты используют их для поиска редких параметров или тонкостей работы системных утилит.
## Связанные заметки
- [[Linux]]
@@ -1,39 +0,0 @@
---
status: stable
type: concept
tags:
- os
- linux
created: 2025-12-17
updated: 2026-05-07
title: Command Path
---
# Command Path
Command Path - это переменная окружения в ОС на базе Linux, обозначается _PATH_. Представляет из себя упорядоченный список каталогов, в которых оболочка самостоятельно ищет бинарные файлы программ, которые были вызваны без указания абсолютного пути.
Содержит пути каталогов, разделенных двоеточием:
```text
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
```
Для просмотра переменной PATH, можно использовать команду _echo_: `echo $PATH`
> [!attention] Порядок расположения При наличии бинарных файлов с одинаковым названием (одинаковые программы), оболочка запустит тот, что находится раньше при сплошном чтении переменной PATH
Временно добавить путь в PATH можно командой `export PATH=<путь к программе>:$PATH`, тогда путь будет добавлен в начало переменной, перед основным содержанием.
Для постоянного добавления, используются файлы конфигурации оболочки `.bashrc, .zshrc` и файлы конфигурации системы `/etc/profile`.
Для удобного поиска каталога программы в переменной PATH используется утилита `which`.
```text
$ which bash
> /bin/bash
```
Другие переменные окружения - [[Environment Variables]]
## Связанные заметки
- [[Linux]]
@@ -1,35 +0,0 @@
---
status: stable
type: concept
tags:
- os
- linux
created: 2025-12-17
updated: 2026-05-07
title: Environment Variables
---
# Environment Variables
Переменные окружения в Linux - это именованные переменные, содержащие значения, определяющие характер работы программ и процессов во время работы системы. Они хранят в себе настройки, информацию о пользователе и др.информацию, которая может потребоваться в ходе работы.
Каждая переменная имеет имя и значение, записываются в таком формате: `NAME=VALUE` При запуске нового процесса, большинство переменных наследуются от родительского процесса. 
**Основные переменные:**
|Name|Value|
|---|---|
|PATH|Список каталогов для команд - [Command Path](Command Path)|
|HOME|Домашняя директория текущего пользователя (~)|
|USER|Имя текущего пользователя|
|SHELL|Оболочка по умолчанию для тек.пользователя|
|LANG|Язык интерфейса (локализация)|
|PWD|Текущая рабочая директория (`pwd`)|
|Для просмотра всех доступных переменных окружения, используется утилита `env`/`printenv`||
Для задания новой переменной окружения, используется синтаксис: `export NAME=VALUE` - для текущей сессии. `echo 'export NAME=VALUE' >> ~/.bashrc` - для текущего пользователя на постоянной основе.
## Связанные заметки
- [[Images, Dockerfile - Docker]] — инструкция `ENV` в Dockerfile задаёт переменные окружения внутри контейнера; тот же механизм, что `export` в Linux
## Связанные заметки
- [[Linux]]
@@ -1,71 +0,0 @@
---
status: stable
type: concept
tags:
- os
- linux
created: 2025-12-17
updated: 2026-05-07
title: File Permissions
---
# File Permissions
В системах Linux права и привилегии присваиваются файлам и каталогам в виде разрешений. Эти разрешения указывают, кто может _читать_, _писать_ или _выполнять_ (запустить) их. В Linux существует три типа пользователей: **владельцы**, **группы** и **другие**, которые могут иметь другой набор разрешений.
**Права (permissions)** — указывают, кто и что может делать с файлом или директорией:
- `r` (read) — чтение содержимого файла или просмотр списка файлов в директории.
- `w` (write) — запись/изменение содержимого файла или добавление/удаление файлов в директории.
- `x` (execute) — запуск файла как программы или возможность "войти" в директорию (`cd`).
**Категории пользователей:**
- **owner (u)** — владелец файла.
- **group (g)** — члены группы, связанной с файлом.
- **others (o)** — все остальные пользователи.
`-rwxr--r-- 1 root root 4096 Jan 1 12:00 filename`
- → это обычный файл (d будет означать директорию).
- rwx → владелец может читать, писать, исполнять.
- r-- → группа может только читать.
- r-- → остальные могут только читать.
## Основные Команды
- `chmod` → изменение прав (permissions).
```bash
chmod 600 <path_to_file>
chmod o+r -R <path_to_dir>
```
- `chown` → изменение владельца (owner).
```bash
chown <user> <path>
chown <user>:<group> <path>
```
- `chgrp` → изменение группы.
```bash
chgrp <group> <file>
```
## Особые Биты
Кроме стандартных rwx есть **особые флаги**:
- **SUID (set user ID,** `**s**`**)** — исполняемый файл запускается с правами владельца.
Пример: `/usr/bin/passwd` запускается с правами root, хотя ты обычный пользователь.
- **SGID (set group ID)** — аналогично, но для группы. У директорий — новые файлы наследуют группу.
- **Sticky bit (**`**t**`**)** — на директориях запрещает пользователям удалять чужие файлы. Классический пример: `/tmp`.
## Связанные заметки
- [[Volume - Docker]] — uid/gid и права доступа в Docker Volumes определяются Linux-правами; проблема "root как владелец" решается через userns-remap + chown
- [[Modules - Ansible]] — модуль `user` управляет uid/gid; `file`/`copy` задают владельца и режим файлов через те же chmod/chown
- [[Сегментация сети]] — принцип наименьших привилегий: на уровне ФС — rwx для owner/group/others; на уровне сети — VLAN для Admin/Employee/Guest
## Связанные заметки
- [[Linux]]
@@ -1,23 +0,0 @@
---
status: stable
type: moc
tags:
- admin
- os
- linux
created: 2025-12-17
updated: 2026-05-07
title: Linux
---
# Linux
%% Begin Waypoint %%
- [[Command Help]]
- [[Command Path]]
- [[Environment Variables]]
- [[File Permissions]]
- [[Redirects]]
- [[Super-user]]
%% End Waypoint %%
@@ -1,39 +0,0 @@
---
status: stable
type: concept
tags:
- os
- linux
created: 2025-12-17
updated: 2026-05-07
title: Redirects
---
# Redirects
В системах на базе ядра Linux существуют 3 стандартных потока данных:
1. stdin - стандартный поток ввода (с клавиатуры, например)
2. stdout - стандартный поток вывода (вывод программы)
3. stderr - стандартный поток ошибок
Можно с ними работать, управляя данными в этих потоках. Например, вывод одной команды перевести на вход другой команды.
- `>` — вывод stdout в файл (создаёт новый файл или перезаписывает существующий):
`ls > output.txt`.
- `>>` — добавляет stdout к концу файла:
`echo "new" >> output.txt`.
- `<` — перенаправляет stdin из файла:
`wc -l < file.txt`.
- `2>` — вывод stderr в файл:
`ls nonexist 2> errors.txt`.
- `2>&1` — объединяет потоки ошибок и вывода, часто с последующим перенаправлением:
`ls file1 file2 > result.txt 2>&1`.
- `&>` — краткая запись для объединённого перенаправления stdout и stderr:
`command &> alloutput.txt`.
**Pipeline** 
Существует понятие конвеера - перенаправление выхода предшевствующей команды на вход следующей: `ls | grep user`
## Связанные заметки
- [[Linux]]
@@ -1,27 +0,0 @@
---
status: stable
type: concept
tags:
- os
- linux
created: 2025-12-17
updated: 2026-05-07
title: Super-user
---
# Super-user
Super-user (суперпользователь, root) в linux - это пользователь, обладающий всей полнотой власти и полномочий (все системы и данные полностью подчиняются суперпользователю).
По _best prictice_, работать из под рута неправильно. Правильно, создать пользователя администратора и добавить его в группу _sudo_ (_wheel_ для RHEL).
Утилиты для работы с рут-доступом:
1. `sudo` - временное выполнение команды из под рута `sudo -i` - интерактивный доступ к рут-пользователю
2. `su`/`su -` - переход к root. `su - user` - переход под юзера.
## Связанные заметки
- [[Docker - Дополнительные знания]] — "не запускать контейнер от root" — прямое применение принципа least privilege; rootless Podman реализует его на уровне демона
- [[Modules - Ansible]] — `become: true` в Ansible — это sudo под капотом; позволяет выполнять задачи с привилегиями root
## Связанные заметки
- [[Linux]]
@@ -1,284 +0,0 @@
---
status: processing
type: concept
tags:
- machine-learning
- neural-networks
created: 2025-12-17
updated: 2026-05-14
source: "[[МИАД_Л5_нейронки.pdf]]"
title: Нейронные сети
---
# Нейронные сети
Нейронные сети - модели машинного обучения, вдохновлённые принципами работы биологических нейронов. Их основа - набор связанных искусственных нейронов, которые преобразуют входной вектор $X$ в выходной вектор $Y$.
## Два направления в ИИ
В исследованиях искусственного интеллекта можно выделить два направления:
1. **Моделирование результатов естественного мышления**
- важен результат;
- внутренние механизмы не обязательны;
- цель - получить поведение, похожее на поведение естественных интеллектуальных систем.
Примеры: системы нечёткого вывода, экспертные системы, построенные по принципу баз знаний.
2. **Моделирование механизмов естественного мышления**
- важны нейрофизиологические и психологические механизмы;
- цель - воспроизвести эти механизмы техническими средствами.
Нейронные сети относятся ко второму направлению.
## Биологический нейрон
![[Pasted image 20260410103922.png]]
Входные сигналы дендритного дерева взвешиваются и суммируются на пути к аксону, где генерируется выходной импульс. Выходной сигнал проходит по ветвям аксона и достигает синапсов, соединяющих аксоны с дендритами других нейронов.
Типы нейронов:
1. **Рецепторные** - вводят в мозг сенсорную информацию от органов чувств.
2. **Промежуточные** - трансформируют сигналы от рецепторных нейронов и передают их дальше.
3. **Эффекторные** - формируют необходимое действие.
В 1957 году Фрэнк Розенблатт предложил модель персептрона. С 1970-х годов нейросетевое направление начало активно развиваться.
Одна из классических задач нейронных сетей - распознавание образов: букв, лиц, объектов и т.д.
## Искусственный нейрон
Искусственный нейрон состоит из трёх основных элементов:
- умножители, или синапсы;
- сумматор;
- нелинейный преобразователь, или функция активации.
![[Pasted image 20260410105854.png]]
Функцию активации часто называют блоком нелинейного преобразования.
![[Pasted image 20260410110002.png]]
Взвешенная сумма входов:
$$
S=\sum\limits_{i=1}^{n}\omega_i x_i+b
$$
где:
- $x_i$ - входной сигнал;
- $\omega_i$ - вес входа;
- $b$ - смещение (*bias*).
Смещение можно интерпретировать как порог срабатывания нейрона.
## Функции активации
Функция активации добавляет нелинейность. Без неё многослойная сеть сводилась бы к одному линейному преобразованию, а значит не могла бы эффективно моделировать сложные зависимости.
### Сигмоида
Функцией активации нейрона часто является сигмоида.
![[Pasted image 20260410110555.png]]
Для логистической функции:
$$
f'(x)=a f(x)(1-f(x))
$$
Если $a=1$, то:
$$
y'=y(1-y)
$$
То есть производную можно вычислить через уже полученное значение функции. Это удобно для [[Обратное распространение ошибки|обратного распространения ошибки]].
![[Pasted image 20260413130714.png]]
### Гиперболический тангенс
В качестве функции активации также используется гиперболический тангенс:
$$
\operatorname{th}(x)
=
\frac{\operatorname{sh}(x)}{\operatorname{ch}(x)}
=
\frac{e^x-e^{-x}}{e^x+e^{-x}}
=
\frac{e^{2x}-1}{e^{2x}+1}
$$
Как и логистическая функция, гиперболический тангенс является S-образной функцией, но он симметричен относительно начала координат. В точке $0$ его значение равно $0$.
### Бинарная функция
Для сети Хопфилда может использоваться бинарная функция активации:
$$
y_i =
\begin{cases}
1, \\
-1
\end{cases}
$$
![[Pasted image 20260413131243.png]]
В другом варианте бинарная функция возвращает:
$$
y =
\begin{cases}
1, & S \ge \theta \\
0, & S < \theta
\end{cases}
$$
где $\theta$ - порог.
## Модели нейронных сетей
Любая нейронная сеть выполняет нелинейное преобразование:
$$
Y=F(X)
$$
Сеть преобразует входной вектор:
$$
X=(x_1,x_2,\dots,x_n)
$$
в выходной вектор:
$$
Y=(y_1,y_2,\dots,y_m)
$$
Конкретный вид преобразования зависит от архитектуры сети, весов и функций активации.
Преимущество нейронных сетей - обучаемость. Веса сети можно представить как набор матриц. Суть обучения сводится к настройке этих весов так, чтобы для входного объекта $X$ сеть выдавала выход $Y$, близкий к правильному ответу $D$.
## Ассоциативная память
Отдельный класс составляют сети ассоциативной памяти, например [[Сеть Хопфилда]] и [[Сеть Хэмминга]]. Они ориентированы на хранение эталонных образов и распознавание входного сигнала по близости к этим эталонам.
Их особенность в том, что весовые коэффициенты рассчитываются один раз перед началом функционирования сети. После задания весов они обычно не корректируются: сеть не обучается итеративно в привычном смысле, а хранит набор эталонов и сопоставляет с ними входной образ.
Пусть известен набор эталонных образов: изображений, звуков, бинарных векторов или других сигналов. Сеть должна по входному, возможно искажённому, сигналу восстановить соответствующий эталонный образ, указать номер наиболее близкого эталона или показать, что подходящего эталона нет.
По смыслу входной образ работает как ключ, по которому сеть "вспоминает" ближайший сохранённый образ.
| Сеть | Что выдаёт | Когда удобна |
|---|---|---|
| [[Сеть Хопфилда]] | восстановленный образ | когда нужно получить полный эталон |
| [[Сеть Хэмминга]] | номер ближайшего эталона | когда достаточно классифицировать вход |
Обе сети относятся к моделям ассоциативной памяти, но решают задачу на разном уровне: сеть Хопфилда восстанавливает состояние, а сеть Хэмминга выбирает ближайший сохранённый образ.
## Переобучение и обобщение
**Обобщение** — способность сети делать точный прогноз на данных, не входивших в обучающую выборку.
**Переобучение** возникает, если алгоритм обучения работает слишком долго или сеть слишком сложна для объёма данных: сеть "запоминает" обучающие примеры вместо того, чтобы выявить общую зависимость. Симптом: ошибка на обучающей выборке продолжает убывать, а ошибка на тестовой — перестаёт убывать или растёт.
Сети с большим числом весов моделируют более сложные функции и сильнее склонны к переобучению. Сети с малым числом весов могут оказаться недостаточно гибкими.
**Способы борьбы**:
- **Кросс-проверка** — часть обучающей выборки резервируется как тестовая и не участвует в обучении. Если тестовая ошибка перестаёт убывать, обучение останавливают.
- Уменьшение числа скрытых нейронов и/или слоёв.
- Ограничение числа эпох обучения.
**Эмпирическое правило** для выбора размера сети и объёма данных:
$$
2 \cdot (I + H + O) \le F \le 10 \cdot (I + H + O)
$$
$$
\frac{F}{10} - I - O \le H \le \frac{F}{2} - I - O
$$
где $I$ — число входов, $H$ — число скрытых нейронов, $O$ — число выходов, $F$ — число обучающих примеров.
## Этапы решения практических задач
1. **Формализация задачи** — определить, какой смысл вкладывается в компоненты входного вектора $X$ и выходного вектора $Y$.
2. **Подготовка данных** — собрать или сгенерировать обучающую выборку.
3. **Предобработка данных** — нормировка, кодирование нечисловых переменных, проверка коррелируемости, анализ периодичности. Подробнее: [[Предобработка данных для нейронных сетей]].
4. **Задание структуры сети** — выбор числа слоёв, числа нейронов в каждом слое и вида функций активации.
5. **Обучение сети** — настройка весов, контроль переобучения, возможное включение шумов в обучающий процесс.
6. **Использование сети** — применение обученной модели к новым данным.
## Формализация задач
Многослойный перцептрон вычисляет отображение $X \to Y$. Поэтому любая задача для НС сводится к выбору смысла входного и выходного векторов. Жёстких рецептов нет — это экспертная задача.
### Классификация
Вход $X$ — вектор признаков объекта. Выход — вектор вероятностей принадлежности к $M$ классам:
$$
C = (c_1, c_2, \dots, c_M), \quad 0 \le c_m \le 1, \quad \sum_{m=1}^M c_m = 1
$$
Кодировать номер класса одним выходом — некорректно: сеть интерполирует между числами классов и может относить объект к классу с промежуточным номером.
### Прогнозирование временного ряда
Для прогнозирования функции $f(t)$ используется **метод окон**: скользящее окно $W_i$ размера $n$ формирует входной вектор из исторических значений, а окно $W_o$ размера $m$ — целевой вектор (значения через интервал прогнозирования $\delta_0$).
$$
X = \bigl(f(t_0),\, f(t_0 - \delta_1),\, \dots,\, f(t_0 - \delta_1 - \dots - \delta_n)\bigr) \to Y = f(t_0 + \delta_0)
$$
### Аппроксимация многомерной функции
Для функции $Y = f(X)$ с $N_I$ входами и $N_O$ выходами строится сеть с $N_I$ входами и $N_O$ выходами. Сеть обучается на известных значениях функции.
## Обучение с учителем
Процесс обучения с учителем:
$$
X^{(1)} \rightarrow D^{(1)} \approx Y^{(1)}
$$
$$
X^{(2)} \rightarrow D^{(2)} \approx Y^{(2)}
$$
$$
\vdots
$$
$$
X^{(p)} \rightarrow D^{(p)} \approx Y^{(p)}
$$
Нейронные сети применяются для задач классификации, прогнозирования, распознавания образов и других задач приближения сложных функций.
Для многослойных сетей основной алгоритм вычисления градиентов - [[Обратное распространение ошибки]]. Для сети с произвольным числом слоёв схема вынесена в [[Backpropagation для многослойной нейронной сети]].
## Персептрон
Базовая однослойная модель классификации вынесена в отдельную заметку [[Персептрон]]. Она показывает, как нейронная сеть может разделять пространство признаков гиперплоскостью и почему линейная разделимость является важным ограничением простых моделей.
## Связанные заметки
- [[Обратное распространение ошибки]]
- [[Backpropagation для многослойной нейронной сети]]
- [[Персептрон]]
- [[Сеть Хопфилда]]
- [[Сеть Хэмминга]]
- [[Нейронная сеть Кохонена]]
- [[Предобработка данных для нейронных сетей]]
- [[Обучение без учителя. Алгоритм Хебба]]
- [[Линейные модели]]
@@ -1,42 +0,0 @@
---
status: stable
type: moc
tags:
- math
- statistics
- time-series
created: 2026-02-13
updated: 2026-05-07
title: Временные Ряды
---
# Временные Ряды
%% Begin Waypoint %%
- [[Автокорреляционная (ACF) и частная автокорреляционная (PACF) функции]]
- [[Автокорреляционная функция (АКФ)]]
- [[Авторегрессия AR]]
- [[Белый шум]]
- [[ВР - основы]]
- [[Лаговый оператор]]
- [[Модели АРПСС. Методология Бокса-Дженкинса]]
- [[Модели скользящего среднего]]
- [[Моделирование временных рядов]]
- [[Общая схема методологии Бокса-Дженкинса]]
- [[Определение временного ряда, виды и особенности]]
- [[Определение порядков АР и СС]]
- [[Переход к стационарным разностям]]
- [[Порядок интегрированности ряда]]
- [[Проверка адекватности и выбор модели]]
- [[Процедура Доладо — Дженкинса — Сосвилла — Ривера]]
- [[Процесс ARIMA]]
- [[Разложение Вольда]]
- [[Скользящее среднее MA]]
- [[Случайное блуждание]]
- [[Смешанные модели (ARMA)]]
- [[Стационарность - ВР]]
- [[Стационарность. Строгая и слабая стационарность]]
- [[Тесты на единичный корень и Дики-Фуллер]]
- [[Частная автокорреляционная функция]]
- [[TS и DS ряды]]
%% End Waypoint %%
@@ -1,22 +0,0 @@
---
status: stable
type: moc
tags:
- math
- statistics
- discriminant-analysis
created: 2026-02-13
updated: 2026-05-07
title: Дискриминантный Анализ
---
# Дискриминантный Анализ
%% Begin Waypoint %%
- [[Параметрический дискриминантный анализ в случае нормального закона распределения классов]]
- [[Построение оптимальной процедуры классификации]]
- [[Принципы дискриминантного анализа]]
- [[Условие отнесения объекта к классу в случае двух признаков]]
- [[Функция потерь]]
%% End Waypoint %%
@@ -1,34 +0,0 @@
---
status: stable
type: moc
tags:
- math
- mephi
- statistics
- cluster-analysis
created: 2026-05-02
updated: 2026-05-07
title: Кластерный Анализ
---
# Кластерный Анализ
%% Begin Waypoint %%
- [[Агломеративные (иерархические) методы]]
- [[Дивизимные методы]]
- [[Интерпретация результатов кластеризации]]
- [[Итерационная классификация. Метод K-средних (K-means)]]
- [[Классификация]]
- [[Критерии определения оптимального числа классов]]
- [[Наивный Байесовский алгоритм]]
- [[Понятие однородности объектов]]
- [[Постановка задачи Кластерного анализа]]
- [[Расстояние между классами объектов]]
- [[Расстояние между объектами]]
- [[Функционалы качества разбиения]]
%% End Waypoint %%
## Контекст
- [[Классификация]] — типология задач классификации: кластерный vs. дискриминантный анализ
- [[Дискриминантный анализ]] — классификация с обучающей выборкой (в отличие от кластерного)
@@ -1,27 +0,0 @@
---
status: processing
type: moc
tags:
- math
- mephi
- fuzzy-sets
created: 2026-05-02
updated: 2026-05-29
title: Теория Нечетких Множеств
---
# Теория Нечетких Множеств
%% Begin Waypoint %%
- [[Доказательство законов Де Моргана]]
- [[Коэффициенты функций принадлежности]]
- [[Логические операции над нечеткими множествами]]
- [[Нечеткие отношения]]
- [[Нечеткий вывод]]
- [[Определение нечеткого множества]]
- [[Функция принадлежности]]
%% End Waypoint %%
## Контекст
- [[Кластерный анализ]] — нечёткая кластеризация (fuzzy c-means) использует функцию принадлежности
@@ -1,60 +0,0 @@
---
status: stable
type: moc
tags:
- network
- networking
created: 2026-05-02
updated: 2026-05-07
title: Networking - MOC
---
# Networking — MOC
## Модели и концепции
- [[Модель OSI]]
- [[Инкапсуляция данных]]
- [[LAN vs WAN]]
- [[Иерархическая модель Cisco]]
- [[Режимы передачи данных в сетях]]
- [[Сегментация сети]]
## Физический и канальный уровень
- [[Ethernet]]
- [[Витая пара]]
- [[MAC-адрес]]
- [[Широковещательные и коллизионные домены. Коммутация.]]
- [[Широковещательные и коллизионные домены. Маршрутизация.]]
- [[Сетевые устройства]]
- [[Базовая настройка коммутатора]]
## Сетевой уровень
- [[IP-адрес]]
- [[IPv6]]
- [[VLSM]]
- [[NAT]]
- [[Коммутатор L3 vs Маршрутизатор]]
## Транспортный уровень
- [[TCP vs UDP]]
## Протоколы
- [[ARP]]
- [[ICMP - Internet Control Messag]]
- [[DNS]]
- [[DHCP]]
- [[VPN]]
## VLAN
- [[VLAN]]
## Router-on-a-Stick
- [[Router-on-a-Stick]]
## Безопасность
- [[DHCP-snooping]]
- [[Dynamic ARP Inspection]]
## Прочее
- [[Утилита Ping]]
- [[Пример настройки DHCPv6]]
@@ -1,24 +0,0 @@
---
status: stable
type: moc
tags:
- network
- networking
- roas
created: 2025-12-17
updated: 2026-05-07
title: Router-on-a-Stick
---
# Router-on-a-Stick
%% Begin Waypoint %%
- [[Настройка коммутатора Cisco (Router-on-a-Stick)]]
- [[RoaS - Base]]
%% End Waypoint %%
## Контекст
- [[VLAN]] — RoaS используется именно для маршрутизации между VLAN на одном физическом интерфейсе
- [[DHCP]] — часто настраивается совместно: разные VLAN получают адреса из разных пулов
- [[Коммутатор L3 vs Маршрутизатор]] — альтернатива RoaS для крупных сетей
@@ -1,22 +0,0 @@
---
status: stable
type: moc
tags:
- network
- networking
- vlan
created: 2025-12-17
updated: 2026-05-07
title: VLAN
---
# VLAN
%% Begin Waypoint %%
- [[VLAN - диапазоны]]
- [[VLAN - история и trunk]]
- [[VLAN - настройка Cisco]]
- [[VLAN - полная настройка Cisco]]
- [[VLAN - Base]]
%% End Waypoint %%
@@ -1,27 +0,0 @@
---
status: stable
type: concept
tags:
- network
- networking
- protocols
- icmp
created: 2025-12-17
updated: 2026-05-07
title: ICMP - Internet Control Message
---
# ICMP - Internet Control Message
ICMP - расшифровывается как Internet Control Message Protocol - протокол служебных сообщений на сетевом уровне. Используется на третьем уровне модели [[Модель OSI|OSI]]. ICMP позволяет определить, может ли достичь пакет адреса назначения в установленные временные рамки (TTL). ICMP используют маршрутизаторы и др. устройства третьего уровня.
Для демонстрации работы протокола, можно взять в пример утилиту `ping`, которая позволяет проверить сетевую связность между узлами. 
С помощью TTL - time to live - можно понять, сколько переходов между маршрутизаторами (или "хопов") потребовалось пакету, если есть петля в настройках маршрутизаторов, то TTL быстро закончится и не будет зацикливания и траты ресурсов, а полное использование 128 хопов - явление редкое, поэтому с большой долей вероятности это означает петлю.
Вторым важным примером использования является утилита `traceroute`, которая позволяет просмотреть список "хопов" пакета от отправителя к получателю.
## Темная Сторона ICMP
С помощью этого протокола можно не только проверять "жив ли хост?", но и проводить полноценные атаки на сеть. Такие атаки, зачастую, связаны с атакой типа DOS (Denial-Of-Service - отказ в обслуживании). Например, огромное количество пинг-запросов на хоста с разных источников. В итоге, хост пытается ответить всем и перегружается.
Так же, раньше была популярна атака **Ping of Death**. Если кратко, ее суть заключалась в следующем: злоумышленник намеренно отправляет пакет больше максимального размера. Такой пакет фрагментируется на сети на несколько частей, прилетает в буфер устройства и попадает в очередь на сборка пакета "воедино". Переполнение этой очереди приводило к подвисанию хоста и полному отказу в работе.
@@ -1,83 +0,0 @@
---
status: stable
type: knowledge
tags:
- other
created: 2026-02-27
updated: 2026-05-07
title: Гайд на научников
---
# Гайд
## 🎓 Аспиранты как научные руководители
Важное уточнение: аспиранты могут официально курировать дипломы специалистов и бакалавров.
- **Малькута:** Специализация — **NLP** (обработка естественного языка) и **LLM** (языковые модели).
- **Волков:** Специализация — **Криптовалюты** (защита, анализ, блокчейн).
- **Крючков:** Специализация — **Мобильная разработка**.
> _Примечание: Крючкова просили лишний раз не беспокоить, обращаться только при сильном желании делать проект именно по мобилкам._
---
## 🏛️ Ключевые руководители: Стили и подходы
### **Дженни Владимировна Домашова**
- **Стиль работы:** Командный ("Проектный офис").
- **Кому подходит:** Тем, кто **не определился с темой**. Она сама выдает задачу.
- **Особенности:** Крупный проект делится на части (например: один обучает модель, второй — инженерит, третий — тестирует). Практикуется наставничество (прикрепление старшего студента/тьютора).
- **Защита:** Максимально лояльна. "Бьется за своих студентов как львица".
### **Виктор Юрьевич Радыгин**
- **Стиль работы:** Индивидуальный.
- **Кому подходит:** Тем, у кого есть **свое понимание темы** и желание заниматься реальной разработкой (информационные системы и др.).
- **Особенности:** Очень занят. Требует проактивности от студента — нужно **напоминать о себе раз в месяц**, чтобы получать план и консультации.
- **Защита:** Его студентов обычно не "топят" в силу его авторитета.
---
## 🛡️ Информационная безопасность (ИБ) и Сети
|Руководитель|Специализация|Резюме|
|---|---|---|
|**Иванов**|ИБ (любое направление), Криптография|Отличный вариант для ИБ, хотя и "своеобразный".|
|**Вавренюк**|Сети, Операционные системы|Рекомендуемый вариант по данному профилю.|
Экспортировать в Таблицы
> **Важный нюанс:** Иванов и Вавренюк — доценты, но **не входят в состав комиссии**. Это означает, что на защите не будет "своего" человека, который прикроет от сложных вопросов.
---
## ⚠️ Репутационные риски и переходы
1. **Лояльность и "месть":**
- Переход **от Радыгина к Домашовой** (например, НИР у Виктора, диплом у Евгении) — **безопасно**.
- Переход **от Домашовой к Радыгину****не рекомендуется**, возможна негативная реакция со стороны Домашовой.
2. **Нежелательные руководители:** * **Алейников** и **Рычков** — крайне не рекомендуются ("мрак").
---
## 📌 Итоговые рекомендации по выбору
1. **Нет темы и нужен контроль?** — Домашова Д.В.
2. **Есть идея и готов к самостоятельности?** — Радыгин В. Ю. (не забывать писать ему!).
3. **Интересует узкий профиль (AI/Crypto)?** — Малькута или Волков.
4. **Хардкорная ИБ или Сети?** — Иванов или Вавренюк (но готовиться к защите серьезно).
@@ -1,172 +0,0 @@
---
status: processing
type: knowledge
tags:
- programming
- ruby
created: 2026-05-17
updated: 2026-05-26
title: Ruby - массивы
source:
- "[[Ruby - массивы]]"
- "[[Итераторы для обработки массивов Ruby]]"
---
# Ruby — массивы
Массив в Ruby — экземпляр класса `Array`. Поскольку массивы являются объектами со своими методами, работа со списками данных упрощается.
Связанные темы: [[Ruby - основы языка]]
## Создание массива
```ruby
a1 = [1, 2, 3] # литерал
a2 = %w{word1 word2} # массив строк без кавычек
a3 = ['start', nil, 5, [1, 2]] # разнотипные элементы, вложенный массив
a4 = Array.new # пустой массив
a5 = Array.new(3) # [nil, nil, nil]
a6 = Array.new(5, "Test") # ["Test", "Test", ...]
a7 = Array.new(5) { |i| i * i } # [0, 1, 4, 9, 16]
a8 = Array.[](1, 'a', /^A/) # через метод класса
```
Ruby поддерживает многомерные массивы с элементами разной размерности.
## Индексация
```ruby
a[0] # первый элемент
a[-1] # последний элемент
a[-2] # предпоследний
```
### Размер
```ruby
a.size # количество элементов
a.length # синоним size
```
## Поиск элементов
```ruby
a.include?(obj) # => true / false
a.index(obj) # индекс первого вхождения или nil
```
## Добавление элементов
```ruby
a << 4 # в конец
a += [5] # объединение
a.push(6) # в конец (синоним: append)
a.unshift(0) # в начало (сдвигает остальные вправо)
a.insert(2, x) # вставить перед элементом с индексом 2
```
## Удаление элементов
```ruby
a.delete(obj) # удалить все вхождения obj
a.delete_at(index) # удалить по индексу
a.delete_if { |x| block } # удалить все, подходящие под условие
a.shift # удалить и вернуть первый элемент
a.pop # удалить и вернуть последний элемент
```
## Срезы
```ruby
a[1..3] # диапазон индексов
a[1, 3] # начиная с индекса 1, длиной 3
a.values_at(0, 2, 4) # элементы по перечисленным индексам или диапазонам
a.first(n) # первые n элементов
a.last(n) # последние n элементов
```
## Полезные методы
```ruby
a.flatten # развернуть многомерный массив в одномерный
a.flatten! # то же, но изменяет сам массив
a.sample # случайный элемент
a.sample(n) # n случайных элементов
a.select { |x| block } # массив элементов, для которых block == true
```
## Итераторы
`each` перебирает элементы массива:
```ruby
ary.each { |item| block }
```
Пример:
```ruby
arr.each do |x|
if x > 0 && x % 5 == 0
arr_out << x
end
end
```
`each_index` перебирает индексы:
```ruby
ary.each_index { |index| block }
```
Похожий проход по индексам:
```ruby
(0...arr.size).each do |i|
if arr[i] > 0 && arr[i] % 5 == 0
arr_out << arr[i]
end
end
```
### Поиск минимума, максимума и индексов
Императивный вариант:
```ruby
a = gets.chomp.split.map { |i| i.to_i }
p a
max = min = a[0]
maxi = mini = 0
for i in 1...a.size
if a[i] > max
max = a[i]
maxi = i
end
if a[i] < min
min = a[i]
mini = i
end
end
puts "Максимальное число: #{max}, индекс: #{maxi}"
puts "Минимальное число: #{min}, индекс: #{mini}"
```
Через методы массива:
```ruby
a = gets.chomp.split.map { |i| i.to_i }
p a
max = a.max
min = a.min
maxi = a.index(max)
mini = a.index(min)
```
@@ -1,293 +0,0 @@
---
status: processing
type: knowledge
tags:
- programming
- ruby
created: 2026-05-17
updated: 2026-05-26
title: Ruby - основы языка
source:
- "[[Ruby - основы языка]]"
- "[[Знания Ruby]]"
---
# Ruby — основы языка
Ruby — объектно-ориентированный язык, но допускает процедурный стиль написания кода. Всё является объектом, включая числа и булевы значения.
Связанные темы: [[Ruby On Rails]]
## Синтаксис
- Знак препинания в конце строки не нужен
- Отступы не несут синтаксического смысла (в отличие от Python)
- Несколько команд в одной строке разделяются через `;`
```ruby
puts "Hello World!"
puts 42; puts "next line"
```
## Комментарии
```ruby
# однострочный комментарий
=begin
многострочный
комментарий
=end
```
## Типы данных
```ruby
"Hello".class # => String
true.class # => TrueClass
5.class # => Integer
6.4.class # => Float
nil.class # => NilClass
```
### Именование
- Переменные — с маленькой буквы: `my_var`
- Классы — с большой буквы: `MyClass`
- Ключевые слова языка использовать нельзя
### Преобразование типов
**Явное:**
| Метод | Что делает |
|--------|-----------------------------------------|
| `to_i` | к целому числу (дробная часть отсекается) |
| `to_f` | к вещественному числу |
| `to_s` | к строке |
**Неявное:** при математических операциях `Integer + Float``Float`.
## Значения по умолчанию
Для присваивания значения по умолчанию часто используют `||=`:
```ruby
a ||= 'что-то'
# то же самое, что:
a = a || 'что-то'
```
Это работает из-за того, что в Ruby только `nil` и `false` считаются falsey. Все остальные значения, включая `0`, пустую строку и пустой массив, в условиях считаются truthy.
Ограничение: `||=` не подходит, если `false` — допустимое сохранённое значение.
## Предикаты
В Ruby проверки часто оформляют методами-предикатами с `?` на конце:
```ruby
0.zero? # => true
1.zero? # => false
2.positive? # => true
8.even? # => true
8.odd? # => false
''.empty? # => true
'wow'.empty? # => false
something.nil?
items.any?
items.empty?
```
## Управляющие конструкции
```ruby
# if без ветвления
if a > 0
action
end
# if-elsif-else
if a > 0
...
elsif a == 0
...
else
...
end
# unless — выполнится, если условие ложно
unless a > 0
action
end
# case
case a
when 1 then puts "один"
when 2 then puts "два"
else puts "другое"
end
```
### Альтернативные условия
Тернарный оператор — короткая форма `if/else`, когда нужно выбрать одно из двух значений:
```ruby
condition ? value_if_true : value_if_false
```
Пример:
```ruby
age = 20
status = age >= 18 ? 'adult' : 'minor'
# => "adult"
```
Обычный `if/else` для того же случая:
```ruby
status =
if age >= 18
'adult'
else
'minor'
end
```
Тернарный оператор удобен, когда обе ветки короткие и возвращают простые значения:
```ruby
message = user.nil? ? 'Гость' : user.name
price = discount ? base_price * 0.9 : base_price
```
Если логика занимает несколько строк, лучше использовать обычный `if/else`. Вложенные тернарные операторы тоже лучше не писать: они быстро становятся нечитаемыми.
Плохой вариант:
```ruby
result = a > 0 ? 'positive' : a < 0 ? 'negative' : 'zero'
```
Постфиксный `if` используют для коротких выражений:
```ruby
do_something if num.zero?
```
`unless` выполняет блок, если условие ложно:
```ruby
unless something.zero?
do_something
end
```
Сложные условия внутри `unless` лучше не писать: `unless a && b` читается хуже явного `if`.
## Логические операторы
```ruby
true && false # => false
false || true # => true
!true # => false
```
Сравнение с логическими значениями строгое:
```ruby
true == 1 # => false
false == nil # => false
```
Логические операторы возвращают не обязательно `true` или `false`, а последнее вычисленное значение:
```ruby
0 && 'one' # => "one"
nil && false # => nil
```
## Оператор `<=>`
`<=>` называют spaceship-оператором. Он возвращает `-1`, `0` или `1` и часто используется при сортировке:
```ruby
1 <=> 1 # => 0
2 <=> 1 # => 1
1 <=> 2 # => -1
```
## Строки
Конкатенация:
```ruby
name = 'H' + 'e' + 'x' + 'l' + 'e' + 't'
name = 'H' 'e' 'x' 'l' 'e' 't'
```
Интерполяция работает только в двойных кавычках:
```ruby
greeting = "hello #{name}"
line_feed = "one line\nanother one"
```
Полезные методы:
```ruby
name = 'ruby'
name.upcase # => "RUBY"
name.include?('ru')
name.capitalize # => "Ruby"
name.length # => 4
```
Срезы:
```ruby
name = 'ruby'
name[1] # => "u"
name[-1] # => "y"
name[0, 2] # => "ru"
name[0..-2] # => "rub"
name[-4..] # => "ruby"
name[/ru/] # => "ru"
```
Пример маскирования номера карты:
```ruby
def prepare_card_for_display(num)
"**#{num[-4..]}"
end
```
## Циклы
| Оператор | Назначение |
|----------|-----------|
| `loop` | бесконечный цикл; выход через `break` |
| `while` | цикл с условием выполнения |
| `until` | цикл, пока условие ложно |
| `for` | итератор по перечислимому объекту |
| `next` | пропустить текущий шаг |
| `redo` | повторить текущий шаг заново |
**Диапазоны в `for`:**
```ruby
for i in 1..5 # от 1 до 5 включительно
for i in 1...5 # от 1 до 4 (5 не входит)
```
**Деление с остатком:**
```ruby
x, r = x.divmod(n)
```
@@ -1,74 +0,0 @@
---
status: seed
type: guide
tags:
- programming
- ruby-on-rails
- api
created: 2026-05-25
updated: 2026-05-25
title: API импорт в Rails через runner
source: "[[Работа с API для проекта Attendance Mephi]]"
---
# API импорт в Rails через runner
Памятка по ручному запуску импортов в [[Ruby On Rails]]-проекте Attendance Mephi для [[НИР]].
## Контекст
Импорт запускается через `bin/rails runner`:
```sh
/home/ada/.local/bin/mise exec ruby -- bin/rails runner '...'
```
Актуальный семестр берется из `Term.actual`. Для старта `2026-02-07` код семестра: `20252`.
## Credentials
```yaml
api:
home_mephi:
host:
code:
token:
students_mephi:
host:
username:
password:
```
См. также: [[Rails credentials edit не открывает редактор]].
## Endpoints
```text
GET {home_mephi.host}/study_groups.json?term_code=20252&code=...&token=...
GET {home_mephi.host}/tutors.json?term_code=20252&code=...&token=...
GET {students_mephi.host}/get_list_by_group_name?group=...&term=20252
GET {home_mephi.host}/tutors/{staff_id}/schedules.json?term_code=20252&date=YYYY-MM-DD&code=...&token=...
```
`students_mephi` использует Basic Auth: `username/password`.
## Ручная загрузка
```sh
/home/ada/.local/bin/mise exec ruby -- bin/rails runner 'ImportGroupsService.execute'
/home/ada/.local/bin/mise exec ruby -- bin/rails runner 'ImportTutorsService.execute'
/home/ada/.local/bin/mise exec ruby -- bin/rails runner 'ImportStudentsService.execute'
/home/ada/.local/bin/mise exec ruby -- bin/rails runner 'term = Term.actual; ImportDisciplineService.execute(nil, term)'
```
Расписание на сегодня:
```sh
/home/ada/.local/bin/mise exec ruby -- bin/rails runner 'term = Term.actual; ImportScheduleService.execute(Date.today, term)'
```
Расписание за весь семестр до сегодня:
```sh
/home/ada/.local/bin/mise exec ruby -- bin/rails runner 'term = Term.actual; finish = [term.get_finish_date, Date.today].min; (term.start_date..finish).each { |date| ImportScheduleService.execute(date, term) unless date.wday == 0 }'
```
@@ -1,42 +0,0 @@
---
status: seed
type: guide
tags:
- programming
- ruby-on-rails
- deploy
created: 2026-05-29
updated: 2026-05-29
title: Capistrano deploy через systemd
source: "[[Команды для деплоя с помощью Capistrano]]"
---
# Capistrano deploy через systemd
Заметка про выдачу минимальных `sudo`-прав для деплоя Rails-приложения через Capistrano, когда сервисы управляются через `systemd`.
## Sudoers
В `/etc/sudoers` задаётся alias для команд, которые Capistrano может выполнять без пароля:
```sudoers
Cmnd_Alias PUMA_CONTROL = /usr/bin/mv /tmp/navigation_backend_puma_production.service /etc/systemd/system/, /usr/bin/mv /tmp/navigation_backend_puma_production.socket /etc/systemd/system/, /bin/systemctl daemon-reload, /bin/systemctl enable navigation_backend_puma_production, /bin/systemctl start navigation_backend_puma_production, /bin/systemctl stop navigation_backend_puma_production, /bin/systemctl restart navigation_backend_puma_production, /bin/systemctl enable navigation_backend_puma_production.socket, /bin/systemctl restart navigation_backend_sidekiq_production.service, /bin/systemctl restart navigation_backend_solid_queue_production.service, /bin/systemctl restart solid_queue
deploy ALL = NOPASSWD: PUMA_CONTROL
```
Где:
- `deploy` — пользователь, от имени которого выполняется деплой;
- `navigation_backend` — имя приложения в service/socket unit-файлах.
## Команды деплоя
```bash
cap production puma:install
cap production deploy
```
`puma:install` кладёт `systemd` unit-файлы, после чего `deploy` перезапускает Puma и фоновые сервисы без интерактивного ввода пароля.
## Связанные заметки
- [[Ruby On Rails]]
- [[Sidekiq - основа работы]]
@@ -1,70 +0,0 @@
---
status: seed
type: guide
tags:
- programming
- ruby-on-rails
- debug
created: 2026-05-20
updated: 2026-05-20
title: Rails credentials edit не открывает редактор
source: "[[99 System/Archive/Rails credentials edit не открывает редактор|Rails credentials edit не открывает редактор]]"
---
# Rails credentials edit не открывает редактор
Заметка фиксирует кейс, когда `bin/rails credentials:edit` в [[Ruby On Rails]] завершается без открытия редактора и без явной ошибки.
## Симптом
Команда:
```bash
bin/rails credentials:edit
```
сразу печатает:
```text
File encrypted and saved.
```
При этом редактор не открывается, а credentials фактически не меняются.
## Причина
Rails 7.x выбирает редактор через helper `rails/command/helpers/editor.rb` и берёт `$VISUAL` приоритетнее `$EDITOR`.
Если переменная окружения `$VISUAL` установлена, например в `zed` или `code`, значение `$EDITOR` игнорируется. Если указанный в `$VISUAL` редактор не найден или не может быть запущен, системный вызов завершается с ошибкой, но Rails может молча продолжить выполнение и сохранить файл без изменений.
Связанный контекст: [[Environment Variables]] и [[Command Path]].
## Решение
На один запуск явно сбросить `$VISUAL` и задать рабочий редактор:
```bash
VISUAL="" EDITOR="nano" bin/rails credentials:edit
```
Можно заменить `nano` на любой редактор, который доступен в текущем окружении.
## Диагностика
Проверить, не установлен ли `$VISUAL`:
```bash
echo "VISUAL='$VISUAL'"
```
Проверить, находится ли редактор в `PATH`:
```bash
which nano
```
Если используется GUI-редактор вроде `code` или `zed`, отдельно проверить, что его CLI-команда доступна из той же shell-сессии, где запускается Rails.
## Практический вывод
Для `credentials:edit` важен не только `$EDITOR`, но и `$VISUAL`. Если Rails ведёт себя так, будто файл был сохранён без редактирования, сначала проверить переменные окружения редактора и доступность команды редактора через `PATH`.
@@ -1,21 +0,0 @@
---
status: processing
type: moc
tags:
- programming
- ruby-on-rails
created: 2025-12-17
updated: 2026-05-29
title: Ruby On Rails
---
# Ruby On Rails
%% Begin Waypoint %%
- [[Active Storage]]
- [[API импорт в Rails через runner]]
- [[Capistrano deploy через systemd]]
- [[Rails credentials edit не открывает редактор]]
- [[Sidekiq - основа работы]]
%% End Waypoint %%