vault backup: 2026-06-03 14:09:18
This commit is contained in:
@@ -0,0 +1,46 @@
|
||||
---
|
||||
status: stable
|
||||
type: concept
|
||||
tags:
|
||||
- devops
|
||||
- containerization
|
||||
created: 2026-02-13
|
||||
updated: 2026-05-07
|
||||
title: Apache Mesos
|
||||
---
|
||||
|
||||
# Apache Mesos
|
||||
|
||||
- инструмент менеджмента кластерных решений по оркестрации контейнерных и не-контейнерных нагрузок.
|
||||
|
||||
Архитектура основана на трех составляющих:
|
||||
|
||||

|
||||
|
||||
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]]
|
||||
@@ -0,0 +1,59 @@
|
||||
---
|
||||
status: stable
|
||||
type: concept
|
||||
tags:
|
||||
- devops
|
||||
- containerization
|
||||
- docker
|
||||
created: 2026-02-13
|
||||
updated: 2026-05-07
|
||||
title: Docker Swarm
|
||||
---
|
||||
|
||||
# Docker Swarm
|
||||
|
||||
- встроенное в docker решение по обеспечению оркестрации контейнеров
|
||||
- оркестрирует только контейнеры и причем только docker
|
||||
- но весь прост в освоении
|
||||
|
||||

|
||||
|
||||
Архитектура делится на:
|
||||
|
||||
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
|
||||
@@ -0,0 +1,51 @@
|
||||
---
|
||||
status: stable
|
||||
type: concept
|
||||
tags:
|
||||
- devops
|
||||
- containerization
|
||||
created: 2026-02-13
|
||||
updated: 2026-05-07
|
||||
title: HashiCorp Nomad
|
||||
---
|
||||
|
||||
# HashiCorp Nomad
|
||||
|
||||
**nomad** - фреймворк для построения кластерных решений, поддерживает не только контейнерные нагрузки, но и не-контейнерные. Существуют платные и бесплатные версии продукта.
|
||||

|
||||
Существует возможность установки расширений:
|
||||
|
||||
- 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]]
|
||||
@@ -0,0 +1,42 @@
|
||||
---
|
||||
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]]
|
||||
+92
@@ -0,0 +1,92 @@
|
||||
---
|
||||
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 - основы]]
|
||||
@@ -0,0 +1,66 @@
|
||||
---
|
||||
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)
|
||||
|
||||

|
||||
@@ -0,0 +1,50 @@
|
||||
---
|
||||
status: seed
|
||||
type: moc
|
||||
tags:
|
||||
- finance
|
||||
- investments
|
||||
created: 2026-05-18
|
||||
updated: 2026-05-18
|
||||
title: База инвестора
|
||||
---
|
||||
|
||||
# База инвестора
|
||||
|
||||
Навигационная заметка по инвестициям. Общая логика: сначала цель, горизонт и [[Риск-профиль инвестора]], потом структура [[Инвестиционный портфель|портфеля]], затем выбор классов активов и конкретных инструментов.
|
||||
|
||||
Не является индивидуальной инвестиционной рекомендацией.
|
||||
|
||||
## Базовый маршрут
|
||||
|
||||
1. Определить цель и горизонт.
|
||||
2. Оценить [[Риск-профиль инвестора]].
|
||||
3. Собрать [[Инвестиционный портфель]] из ролей: ликвидность, защита, доход, рост, валютная защита.
|
||||
4. Выбрать инструменты: [[Облигации]], [[Акции]], [[Инвестиционные фонды]], [[Золото в портфеле]], [[Криптовалюты как инвестиционный актив]].
|
||||
5. Настроить правила управления: [[Управление инвестиционным портфелем]], ребалансировка, календарь событий, фиксация доходности.
|
||||
6. Отдельно отделять инвестирование от [[Трейдинг|трейдинга]].
|
||||
|
||||
## Карта заметок
|
||||
|
||||
- [[Риск-профиль инвестора]] — готовность и возможность принимать риск.
|
||||
- [[Инвестиционный портфель]] — структура портфеля, диверсификация, роли активов.
|
||||
- [[Управление инвестиционным портфелем]] — что делать после сборки портфеля, как ребалансировать и реагировать на события.
|
||||
- [[Облигации]] — долговые инструменты, дюрация, купоны, флоатеры, ВДО.
|
||||
- [[Акции]] — доля в бизнесе, типы акций, факторы цены.
|
||||
- [[Оценка акций]] — мультипликаторы, фундаментальный анализ и красные флаги.
|
||||
- [[Индексное инвестирование]] — покупка рынка через индексы и фонды.
|
||||
- [[Дивидендный портфель]] — акции как источник денежного потока.
|
||||
- [[Инвестиционные фонды]] — фонды, комиссии, репликация, ошибка слежения.
|
||||
- [[Золото в портфеле]] — защитный актив и способы инвестирования.
|
||||
- [[Криптовалюты как инвестиционный актив]] — биткоин, Ethereum, стейблкоины, волатильность.
|
||||
- [[Трейдинг]] — технический анализ, новости, объем, риск-контроль.
|
||||
- [[Инсайдерская торговля и манипулирование рынком]] — нечестные практики и признаки подозрительного поведения.
|
||||
|
||||
## Связанные заметки
|
||||
|
||||
- [[Производные финансовые инструменты]] — деривативы, опционы и инструменты с иной природой риска.
|
||||
- [[Налог на доходы физических лиц (НДФЛ)]] — налоги с инвестиционного дохода.
|
||||
- [[Налоговые вычеты]] — инвестиционные и прочие вычеты.
|
||||
- [[Бухгалтерский баланс]] — база для анализа долговой нагрузки и капитала.
|
||||
- [[Отчет о финансовых результатах]] — прибыль, выручка и финансовая динамика бизнеса.
|
||||
- [[Экономическая безопасность - база]] — макроэкономический контекст.
|
||||
+62
@@ -0,0 +1,62 @@
|
||||
---
|
||||
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. Задать правила пополнения, ребалансировки и фиксации прибыли.
|
||||
|
||||
## Роли активов
|
||||
|
||||
- ликвидность: кэш, денежный рынок, короткие [[Облигации]];
|
||||
- защита: ОФЗ, надежные облигации, [[Золото в портфеле]];
|
||||
- доход: корпоративные облигации инвестиционного уровня, [[Дивидендный портфель]];
|
||||
- рост: [[Акции]], фонды акций, индексные инструменты;
|
||||
- валютная защита: замещающие/квазивалютные облигации, золото, частично [[Криптовалюты как инвестиционный актив]].
|
||||
|
||||
## Диверсификация
|
||||
|
||||
Диверсификация снижает риск, потому что разные активы реагируют на события по-разному. Полезно диверсифицировать:
|
||||
|
||||
- по классам активов;
|
||||
- по эмитентам;
|
||||
- по секторам;
|
||||
- по валютам;
|
||||
- по срокам погашения облигаций;
|
||||
- по стратегиям.
|
||||
|
||||
## Практические правила
|
||||
|
||||
- Не начинать с плечей и сложных инструментов.
|
||||
- Не концентрироваться в одном эмитенте или секторе.
|
||||
- Не покупать длинные облигации без понимания дюрации.
|
||||
- Не держать весь портфель в одном классе активов.
|
||||
- Фиксировать причину покупки до сделки.
|
||||
- Отделять инвестиционную стратегию от [[Трейдинг|трейдинговой]].
|
||||
|
||||
## Связанные заметки
|
||||
|
||||
- [[База инвестора]]
|
||||
- [[Управление инвестиционным портфелем]]
|
||||
- [[Индексное инвестирование]]
|
||||
- [[Инвестиционные фонды]]
|
||||
+67
@@ -0,0 +1,67 @@
|
||||
---
|
||||
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 - Зачет]]
|
||||
- [[Трейдинг]]
|
||||
+53
@@ -0,0 +1,53 @@
|
||||
---
|
||||
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.
|
||||
|
||||
## Связанные заметки
|
||||
|
||||
- [[База инвестора]]
|
||||
- [[Инвестиционный портфель]]
|
||||
- [[Управление инвестиционным портфелем]]
|
||||
@@ -0,0 +1,87 @@
|
||||
---
|
||||
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
|
||||
|
||||
- Волатильность не равна риску: низкая волатильность может скрывать большой хвостовой риск.
|
||||
- Если новость против позиции, а рынок почти не падает, это может быть сильным сигналом.
|
||||
- Если новость за позицию, а рынок реагирует слабо, стоит насторожиться.
|
||||
- Нельзя рисковать всем ради одной сделки.
|
||||
- Риск-контроль важнее правоты в прогнозе.
|
||||
|
||||
## Риск-контроль
|
||||
|
||||
- заранее определять риск на сделку;
|
||||
- сопоставлять объем позиции с волатильностью инструмента;
|
||||
- не использовать плечо без понятного сценария;
|
||||
- не выдумывать сделки, если сетапа нет;
|
||||
- избегать инструментов, риск которых не понятен;
|
||||
- вести журнал сделок.
|
||||
|
||||
## Связанные заметки
|
||||
|
||||
- [[База инвестора]]
|
||||
- [[Акции]]
|
||||
- [[Производные финансовые инструменты]]
|
||||
- [[Криптовалюты как инвестиционный актив]]
|
||||
+62
@@ -0,0 +1,62 @@
|
||||
---
|
||||
status: stable
|
||||
type: moc
|
||||
tags:
|
||||
- finance
|
||||
- taxes
|
||||
created: 2026-05-02
|
||||
updated: 2026-05-07
|
||||
title: Налогообложение в России
|
||||
---
|
||||
|
||||
# Налогообложение в России
|
||||
|
||||
## Основы системы
|
||||
- [[Сущность и история налогов]]
|
||||
- [[Функции налогов и экономические циклы]]
|
||||
- [[Законодательная база]]
|
||||
- [[Налоговая система (Классификация налогов)]]
|
||||
- [[Субъекты налоговой системы (права и обязанности)]]
|
||||
- [[Государственный бюджет]]
|
||||
- [[Кривая Лаффера]]
|
||||
|
||||
## Налоги с организаций
|
||||
- [[Налог на прибыль]]
|
||||
- [[Налогоплательщики и объекты налога на прибыль организаций]]
|
||||
- [[Доходы в целях налога на прибыль]]
|
||||
- [[Расходы в целях налога на прибыль]]
|
||||
- [[Методы признания доходов и расходов]]
|
||||
- [[Разница метода по отгрузке и по оплате]]
|
||||
- [[Налог на добавленную стоимость]]
|
||||
- [[Налог на имущество организаций]]
|
||||
- [[Акцизы]]
|
||||
- [[Специальные налоги организаций]]
|
||||
- [[Страховые взносы]]
|
||||
|
||||
## Налоги с физических лиц
|
||||
- [[Налог на доходы физических лиц (НДФЛ)]]
|
||||
- [[Налог на имущество ФЛ]]
|
||||
- [[Налоговые вычеты]]
|
||||
|
||||
## Специальные режимы и пошлины
|
||||
- [[Специальные налоговые режимы]]
|
||||
- [[Таможенные пошлины]]
|
||||
- [[Государственная пошлина]]
|
||||
|
||||
## Контроль, декларирование, ответственность
|
||||
- [[Налоговая декларация]]
|
||||
- [[Налоговая нагрузка]]
|
||||
- [[Налоговый контроль (камеральные, выездные проверки)]]
|
||||
- [[Ответственность (санкции, административная и уголовная)]]
|
||||
|
||||
## Прочее
|
||||
- [[Производные финансовые инструменты]]
|
||||
|
||||
## Смежные темы
|
||||
- [[Бухгалтерский баланс]] — бухучёт и налоговый учёт пересекаются в части налога на прибыль
|
||||
- [[Отчет о финансовых результатах]]
|
||||
|
||||
## Связанные заметки
|
||||
- [[31, 32 - Налоги]]
|
||||
- [[Налоги - Организационные моменты]]
|
||||
- [[Налоги - СР2]]
|
||||
@@ -0,0 +1,43 @@
|
||||
---
|
||||
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; решение — запуск в изолированном контейнере
|
||||
@@ -0,0 +1,43 @@
|
||||
---
|
||||
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]]
|
||||
@@ -0,0 +1,39 @@
|
||||
---
|
||||
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]]
|
||||
@@ -0,0 +1,35 @@
|
||||
---
|
||||
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]]
|
||||
@@ -0,0 +1,71 @@
|
||||
---
|
||||
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]]
|
||||
@@ -0,0 +1,23 @@
|
||||
---
|
||||
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 %%
|
||||
@@ -0,0 +1,39 @@
|
||||
---
|
||||
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]]
|
||||
@@ -0,0 +1,27 @@
|
||||
---
|
||||
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]]
|
||||
@@ -0,0 +1,284 @@
|
||||
---
|
||||
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 для многослойной нейронной сети]]
|
||||
- [[Персептрон]]
|
||||
- [[Сеть Хопфилда]]
|
||||
- [[Сеть Хэмминга]]
|
||||
- [[Нейронная сеть Кохонена]]
|
||||
- [[Предобработка данных для нейронных сетей]]
|
||||
- [[Обучение без учителя. Алгоритм Хебба]]
|
||||
- [[Линейные модели]]
|
||||
+42
@@ -0,0 +1,42 @@
|
||||
---
|
||||
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 %%
|
||||
+22
@@ -0,0 +1,22 @@
|
||||
---
|
||||
status: stable
|
||||
type: moc
|
||||
tags:
|
||||
- math
|
||||
- statistics
|
||||
- discriminant-analysis
|
||||
created: 2026-02-13
|
||||
updated: 2026-05-07
|
||||
title: Дискриминантный Анализ
|
||||
---
|
||||
|
||||
# Дискриминантный Анализ
|
||||
|
||||
%% Begin Waypoint %%
|
||||
- [[Параметрический дискриминантный анализ в случае нормального закона распределения классов]]
|
||||
- [[Построение оптимальной процедуры классификации]]
|
||||
- [[Принципы дискриминантного анализа]]
|
||||
- [[Условие отнесения объекта к классу в случае двух признаков]]
|
||||
- [[Функция потерь]]
|
||||
|
||||
%% End Waypoint %%
|
||||
+34
@@ -0,0 +1,34 @@
|
||||
---
|
||||
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. дискриминантный анализ
|
||||
- [[Дискриминантный анализ]] — классификация с обучающей выборкой (в отличие от кластерного)
|
||||
+27
@@ -0,0 +1,27 @@
|
||||
---
|
||||
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) использует функцию принадлежности
|
||||
@@ -0,0 +1,60 @@
|
||||
---
|
||||
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]]
|
||||
+24
@@ -0,0 +1,24 @@
|
||||
---
|
||||
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 для крупных сетей
|
||||
@@ -0,0 +1,22 @@
|
||||
---
|
||||
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 %%
|
||||
+27
@@ -0,0 +1,27 @@
|
||||
---
|
||||
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**. Если кратко, ее суть заключалась в следующем: злоумышленник намеренно отправляет пакет больше максимального размера. Такой пакет фрагментируется на сети на несколько частей, прилетает в буфер устройства и попадает в очередь на сборка пакета "воедино". Переполнение этой очереди приводило к подвисанию хоста и полному отказу в работе.
|
||||
@@ -0,0 +1,83 @@
|
||||
---
|
||||
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. **Хардкорная ИБ или Сети?** — Иванов или Вавренюк (но готовиться к защите серьезно).
|
||||
@@ -0,0 +1,13 @@
|
||||
---
|
||||
status: processing
|
||||
type: knowledge
|
||||
tags:
|
||||
- other
|
||||
created: 2025-12-18
|
||||
updated: 2026-05-07
|
||||
title: Сканер Отпечатка Пальцев
|
||||
---
|
||||
|
||||
# Сканер Отпечатка Пальцев
|
||||
|
||||
Не надо бездумно пытаться включить fprint.service (утилиты для сканера отпечатка), это может сломать основную логику входа
|
||||
@@ -0,0 +1,172 @@
|
||||
---
|
||||
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)
|
||||
```
|
||||
@@ -0,0 +1,293 @@
|
||||
---
|
||||
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)
|
||||
```
|
||||
+74
@@ -0,0 +1,74 @@
|
||||
---
|
||||
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 }'
|
||||
```
|
||||
+42
@@ -0,0 +1,42 @@
|
||||
---
|
||||
status: seed
|
||||
type: guide
|
||||
tags:
|
||||
- programming
|
||||
- ruby-on-rails
|
||||
- deploy
|
||||
created: 2026-05-29
|
||||
updated: 2026-05-29
|
||||
title: Capistrano deploy через systemd
|
||||
source: "[[Команды для деплоя с помощью Capistrano]]"
|
||||
---
|
||||
|
||||
# Capistrano deploy через systemd
|
||||
|
||||
Заметка про выдачу минимальных `sudo`-прав для деплоя Rails-приложения через Capistrano, когда сервисы управляются через `systemd`.
|
||||
|
||||
## Sudoers
|
||||
|
||||
В `/etc/sudoers` задаётся alias для команд, которые Capistrano может выполнять без пароля:
|
||||
|
||||
```sudoers
|
||||
Cmnd_Alias PUMA_CONTROL = /usr/bin/mv /tmp/navigation_backend_puma_production.service /etc/systemd/system/, /usr/bin/mv /tmp/navigation_backend_puma_production.socket /etc/systemd/system/, /bin/systemctl daemon-reload, /bin/systemctl enable navigation_backend_puma_production, /bin/systemctl start navigation_backend_puma_production, /bin/systemctl stop navigation_backend_puma_production, /bin/systemctl restart navigation_backend_puma_production, /bin/systemctl enable navigation_backend_puma_production.socket, /bin/systemctl restart navigation_backend_sidekiq_production.service, /bin/systemctl restart navigation_backend_solid_queue_production.service, /bin/systemctl restart solid_queue
|
||||
deploy ALL = NOPASSWD: PUMA_CONTROL
|
||||
```
|
||||
|
||||
Где:
|
||||
- `deploy` — пользователь, от имени которого выполняется деплой;
|
||||
- `navigation_backend` — имя приложения в service/socket unit-файлах.
|
||||
|
||||
## Команды деплоя
|
||||
|
||||
```bash
|
||||
cap production puma:install
|
||||
cap production deploy
|
||||
```
|
||||
|
||||
`puma:install` кладёт `systemd` unit-файлы, после чего `deploy` перезапускает Puma и фоновые сервисы без интерактивного ввода пароля.
|
||||
|
||||
## Связанные заметки
|
||||
- [[Ruby On Rails]]
|
||||
- [[Sidekiq - основа работы]]
|
||||
+70
@@ -0,0 +1,70 @@
|
||||
---
|
||||
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`.
|
||||
+21
@@ -0,0 +1,21 @@
|
||||
---
|
||||
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 %%
|
||||
Reference in New Issue
Block a user