This commit is contained in:
parent
320a20c2b4
commit
c334cee3d8
42
dev/efficiency/TechTalk.md
Normal file
42
dev/efficiency/TechTalk.md
Normal file
@ -0,0 +1,42 @@
|
||||
---
|
||||
aliases:
|
||||
tags:
|
||||
- maturity/🌱
|
||||
date: 2024-11-24
|
||||
---
|
||||
TechTalk — это особенный формат общения для технических специалистов. Здесь можно не только обменяться знаниями и опытом, но и обсудить актуальные тенденции, новые технологии и подходы.
|
||||
|
||||
TechTalk может быть как внутренним мероприятием в компании, так и публичным событием, доступным для широкой аудитории.
|
||||
|
||||
- **Внутренние TechTalks**: Отличная возможность для команды делиться своими наработками, исследовать новые технологии и находить свежие идеи для решений задач. Это также способствует развитию корпоративной культуры и укреплению связей между сотрудниками.
|
||||
- **Публичные TechTalks**: Открывают доступ к опыту ведущих экспертов отрасли, позволяя участникам узнать о лучших практиках и наработках, а также вдохновиться чужими успехами. Это также хороший способ для компаний заявить о себе на рынке.
|
||||
|
||||
**Преимущества TechTalk**
|
||||
1. **Обмен опытом и знаниями**: Главная ценность TechTalk заключается в обмене опытом и знаниями. ==Участники делятся не только успехами, но и неудачами==, что помогает другим избегать подобных ошибок в своих проектах.
|
||||
2. **Интерактивное взаимодействие**: В отличие от стандартных докладов на конференциях, TechTalks более интерактивны и предполагают обсуждение и вопросы, что помогает углубляться в детали и находить новые точки зрения на уже знакомые темы.
|
||||
3. **Профессиональное развитие**: Такие мероприятия позволяют развивать навыки публичных выступлений, улучшать коммуникативные навыки и становиться более уверенным в своих знаниях.
|
||||
4. **Культура открытости**: Создание атмосферы, где каждый может свободно поделиться своими идеями и обсудить волнующие вопросы, способствует развитию культуры открытости и инноваций в компании.
|
||||
|
||||
**Недостатки TechTalk**
|
||||
1. **Требует времени и подготовки**: Организация и проведение TechTalk требует значительных временных и организационных затрат. Нужно подготовить материалы, организовать пространство и время для мероприятия.
|
||||
2. **Не все участники готовы выступать**: Не всем специалистам комфортно выступать перед аудиторией, что может создавать препятствия для обмена знаниями.
|
||||
3. **Перегруз информацией**: Иногда в рамках TechTalk может быть представлено слишком много информации, что затрудняет усвоение материала, особенно если тематика сложная или новая для участников.
|
||||
|
||||
**Как организовать успешный TechTalk**
|
||||
1. **Определение темы**: Тема должна быть актуальной и интересной для аудитории. Лучше всего выбирать темы, которые позволяют участникам делиться практическим опытом.
|
||||
2. **Подготовка спикеров**: Спикерам нужно заранее помочь в подготовке материалов и презентации. Это может включать репетиции и предоставление обратной связи.
|
||||
3. **Интерактивный формат**: Включайте вопросы и обсуждения, чтобы аудитория могла активно участвовать в процессе. Это делает мероприятие более живым и полезным для всех участников.
|
||||
4. **Продолжительность**: Не затягивайте мероприятие. Оптимальная продолжительность TechTalk — 30-60 минут, чтобы участники не теряли интерес и могли усвоить представленный материал.
|
||||
***
|
||||
## Мета информация
|
||||
**Область**:: [[../../meta/zero/00 Эффективная разработка|00 Эффективная разработка]]
|
||||
**Родитель**::
|
||||
**Источник**::
|
||||
**Создана**:: [[2024-11-24]]
|
||||
**Автор**::
|
||||
### Дополнительные материалы
|
||||
-
|
||||
|
||||
### Дочерние заметки
|
||||
<!-- QueryToSerialize: LIST FROM [[]] WHERE contains(Родитель, this.file.link) or contains(parents, this.file.link) -->
|
||||
|
@ -1,12 +1,13 @@
|
||||
---
|
||||
aliases:
|
||||
- рефакторинг
|
||||
tags:
|
||||
- maturity/🌱
|
||||
date: 2024-11-24
|
||||
---
|
||||
Рефакторинг — это процесс улучшения существующего кода **без изменения его функциональности**.
|
||||
|
||||
Регулярный рефакторинг помогает избавиться от неудачных решений, которые усложняют понимание системы. Устраняя технический долг, команда уменьшает количество контекста, который необходимо удерживать в голове, и делает код понятнее.
|
||||
Регулярный рефакторинг помогает избавиться от неудачных решений ([[../../muesli/Исторически так сложилось|Исторически так сложилось]]), которые усложняют понимание системы. Устраняя технический долг, команда уменьшает количество контекста, который необходимо удерживать в голове, и делает код понятнее.
|
||||
***
|
||||
## Мета информация
|
||||
**Область**:: [[../../meta/zero/00 Эффективная разработка|00 Эффективная разработка]]
|
||||
|
70
dev/java/ResultSet.md
Normal file
70
dev/java/ResultSet.md
Normal file
@ -0,0 +1,70 @@
|
||||
---
|
||||
aliases:
|
||||
tags:
|
||||
- maturity/🌱
|
||||
date: 2024-11-24
|
||||
---
|
||||
`ResultSet` — это интерфейс, используемый для хранения и управления результатами SQL-запроса типа SELECT к базе данных. Он позволяет Java-программе извлекать и обрабатывать данные, возвращаемые запросом.
|
||||
|
||||
- **Получение данных**: при выполнении запроса SELECT база данных возвращает данные в виде таблицы. `ResultSet` предоставляет доступ к этим данным в Java-коде.
|
||||
- **Обработка данных**: интерфейс включает методы для навигации по строкам и извлечения значений из текущей строки.
|
||||
- **Управление данными**: `ResultSet` также позволяет перемещать курсор по строкам данных и получать доступ к столбцам по имени или индексу.
|
||||
|
||||
Создание и выполнение запроса
|
||||
```java
|
||||
Statement stmt = connection.createStatement();
|
||||
ResultSet rs = stmt.executeQuery("SELECT * FROM employees");
|
||||
```
|
||||
|
||||
Обработка данных
|
||||
```java
|
||||
while (rs.next()) {
|
||||
int id = rs.getInt("id");
|
||||
String name = rs.getString("name");
|
||||
double salary = rs.getDouble("salary");
|
||||
System.out.println("ID: " + id + ", Name: " + name + ", Salary: " + salary);
|
||||
}
|
||||
```
|
||||
## Основные методы
|
||||
Эти методы являются ключевыми для работы с объектом `ResultSet`, позволяя эффективно взаимодействовать с базой данных:
|
||||
|
||||
`next()` — перемещает курсор к следующей строке.
|
||||
|
||||
```java
|
||||
rs.next();
|
||||
```
|
||||
|
||||
`getInt()`, `getString()`, `getDouble()` и другие get-методы — извлекают данные из текущей строки.
|
||||
|
||||
```java
|
||||
int id = rs.getInt("id");
|
||||
String name = rs.getString("name");
|
||||
double salary = rs.getDouble("salary");
|
||||
```
|
||||
|
||||
`close()` — закрывает ResultSet и освобождает связанные с ним ресурсы.
|
||||
|
||||
```java
|
||||
rs.close();
|
||||
```
|
||||
|
||||
`getMetaData()` — возвращает объект `ResultSetMetaData`, содержащий метаданные о результирующем наборе данных, такие как количество столбцов и их типы.
|
||||
|
||||
```java
|
||||
ResultSetMetaData metaData = rs.getMetaData();
|
||||
int columnCount = metaData.getColumnCount();
|
||||
```
|
||||
|
||||
***
|
||||
## Мета информация
|
||||
**Область**:: [[../../meta/zero/00 Java разработка|00 Java разработка]]
|
||||
**Родитель**:: [[../../../../knowledge/dev/java/other/Java Database Connectivity|Java Database Connectivity]]
|
||||
**Источник**::
|
||||
**Создана**:: [[2024-11-24]]
|
||||
**Автор**::
|
||||
### Дополнительные материалы
|
||||
-
|
||||
|
||||
### Дочерние заметки
|
||||
<!-- QueryToSerialize: LIST FROM [[]] WHERE contains(Родитель, this.file.link) or contains(parents, this.file.link) -->
|
||||
|
62
dev/linux/Диагностика Linux.md
Normal file
62
dev/linux/Диагностика Linux.md
Normal file
@ -0,0 +1,62 @@
|
||||
---
|
||||
aliases:
|
||||
tags:
|
||||
- maturity/🌱
|
||||
date: 2024-11-24
|
||||
---
|
||||
Linux предоставляет широкий спектр утилит для мониторинга системы, отладки и устранения неисправностей. Эти инструменты могут помочь в диагностике проблем с процессами, памятью, сетью и другими аспектами системы. Рассмотрим основные категории утилит, которые часто используются для отладки.
|
||||
|
||||
- [[Проверка свободного места на дисках]]
|
||||
## Мониторинг процессов и системы
|
||||
- **top** и **htop**: отображают информацию о текущем использовании системных ресурсов в реальном времени, включая процессы, загрузку ЦП и память.
|
||||
- **ps aux**: выводит список всех запущенных процессов с подробной информацией.
|
||||
- **lsof**: отображает открытые файлы и процессы, которые их используют.
|
||||
- **strace** и **ltrace**: позволяют отслеживать системные вызовы и сигналы для процесса.
|
||||
- **vmstat**: предоставляет информацию о виртуальной памяти и процессах.
|
||||
- **iostat**: выводит статистику ввода/вывода по устройствам.
|
||||
## Отладка аварийных завершений и дампов памяти
|
||||
- **dmesg**: выводит сообщения из буфера ядра, полезно для диагностики аппаратных проблем.
|
||||
- **journalctl**: позволяет просматривать системные логи, включая сообщения ядра и системных служб.
|
||||
- **gdb**: отладчик, позволяющий анализировать дампы памяти и выполнять отладку приложений.
|
||||
## Сетевая отладка
|
||||
- **ping** и [[../../../../knowledge/dev/network/Анализ маршрута до интернет ресурса|traceroute]]: позволяют проверять доступность хостов и отслеживать маршрут до них.
|
||||
- **mtr**: комбинирует возможности ping и [[../../../../knowledge/dev/network/Анализ маршрута до интернет ресурса|traceroute]] для непрерывной диагностики сети.
|
||||
- **netstat** (или **ss**): выводит информацию об открытых портах и активных соединениях.
|
||||
- **tcpdump**: захватывает и отображает сетевые пакеты для анализа.
|
||||
- **nmap**: инструмент для сканирования сети и оценки безопасности.
|
||||
- **ip addr show**: отображает все сетевые интерфейсы и их IP-адреса.
|
||||
## Отладка файлов и дисков
|
||||
- **fsck**: проверяет и исправляет ошибки файловой системы.
|
||||
- [[Диагностика HDD c использованием S.M.A.R.T.|smartctl]]: выводит информацию о состоянии жестких дисков, используя данные S.M.A.R.T.
|
||||
- **badblocks**: ищет поврежденные блоки на диске.
|
||||
- **df** и [[Проверка свободного места на дисках|du]]: отображают информацию о дисковом пространстве в системе.
|
||||
- **lsblk**: выводит информацию об устройствах хранения и их разделах.
|
||||
- **mount** и **umount**: позволяют подключать и отключать файловые системы.
|
||||
## Мониторинг системных ресурсов
|
||||
- **sar**: собирает и сохраняет информацию о системной активности.
|
||||
- **free**: выводит информацию о доступной и использованной памяти.
|
||||
- **iostat** и **mpstat**: показывают статистику ввода/вывода и процессорной активности.
|
||||
- **pidstat**: предоставляет статистику по процессам.
|
||||
## Отладка ядра и модулей
|
||||
- **uname**: выводит информацию о ядре и версии операционной системы.
|
||||
- **lsmod**: отображает загруженные модули ядра.
|
||||
- **modinfo**: выводит подробную информацию о модулях ядра.
|
||||
- **dmesg | grep \<module\>**: помогает находить сообщения ядра, связанные с определенным модулем.
|
||||
|
||||
|
||||
***
|
||||
## Мета информация
|
||||
**Область**:: [[../../meta/zero/00 Linux|00 Linux]]
|
||||
**Родитель**::
|
||||
**Источник**::
|
||||
**Создана**:: [[2024-11-24]]
|
||||
**Автор**::
|
||||
### Дополнительные материалы
|
||||
-
|
||||
|
||||
### Дочерние заметки
|
||||
<!-- QueryToSerialize: LIST FROM [[]] WHERE contains(Родитель, this.file.link) or contains(parents, this.file.link) -->
|
||||
<!-- SerializedQuery: LIST FROM [[]] WHERE contains(Родитель, this.file.link) or contains(parents, this.file.link) -->
|
||||
- [[Проверка свободного места на дисках]]
|
||||
<!-- SerializedQuery END -->
|
||||
|
45
dev/linux/Проверка свободного места на дисках.md
Normal file
45
dev/linux/Проверка свободного места на дисках.md
Normal file
@ -0,0 +1,45 @@
|
||||
---
|
||||
aliases: []
|
||||
tags:
|
||||
- maturity/🌱
|
||||
date:
|
||||
- - 2024-08-21
|
||||
---
|
||||
Посмотреть общее свободно дисковое место в системе
|
||||
```shell
|
||||
df -h
|
||||
```
|
||||
## Поиск больших директорий
|
||||
Чтобы найти, какие директории занимают больше всего места, используйте команду `du`:
|
||||
```bash
|
||||
du -h --max-depth=1 / | sort -hr | head -n 20
|
||||
```
|
||||
|
||||
Эта команда просканирует корневой каталог `/`, подсчитает размер всех подкаталогов (глубина сканирования ограничена одним уровнем с помощью `--max-depth=1`), отсортирует их по убыванию размера (`sort -hr`), и выведет 20 самых больших директорий.
|
||||
|
||||
Если хотите просканировать определенный каталог (например, домашний каталог), замените `/` на путь к этому каталогу:
|
||||
```bash
|
||||
du -h --max-depth=1 /home | sort -hr | head -n 20
|
||||
```
|
||||
|
||||
После определения самой большой директории нужно проанализировать уже ее и так далее.
|
||||
|
||||
В анализе может помочь [Структура хранения файлов в Linux](Структура%20хранения%20файлов%20в%20Linux.md)
|
||||
## Поиск больших файлов
|
||||
Чтобы найти самые большие файлы на сервере, используйте команду `find`:
|
||||
```
|
||||
sudo find / -type f -exec du -h {} + | sort -rh | head -n 20
|
||||
```
|
||||
|
||||
Эта команда найдет все файлы на сервере, подсчитает их размер, отсортирует по убыванию размера и выведет 20 самых больших файлов.
|
||||
***
|
||||
## Мета информация
|
||||
**Область**:: [[../../meta/zero/00 Linux|00 Linux]]
|
||||
**Родитель**:: [[Диагностика Linux]]
|
||||
**Источник**::
|
||||
**Автор**::
|
||||
**Создана**:: [[2024-08-21]]
|
||||
### Дополнительные материалы
|
||||
-
|
||||
### Дочерние заметки
|
||||
<!-- QueryToSerialize: LIST FROM [[]] WHERE contains(Родитель, this.file.link) or contains(parents, this.file.link) -->
|
26
education/knowledgebase/Obsidian.md
Normal file
26
education/knowledgebase/Obsidian.md
Normal file
@ -0,0 +1,26 @@
|
||||
---
|
||||
aliases:
|
||||
tags:
|
||||
- maturity/🌱
|
||||
date: 2024-11-24
|
||||
---
|
||||
## Полезные трюки
|
||||
- [[Встраиваем поиск Omnisearch по базе знаний в поисковик]]
|
||||
## Обучающие материалы для новичков
|
||||
- [Настройка obsidian с нуля. Все функции.](https://m.vk.com/video-211759547_456239067)
|
||||
***
|
||||
## Мета информация
|
||||
**Область**:: [[../../meta/zero/00 База знаний|00 База знаний]]
|
||||
**Родитель**::
|
||||
**Источник**::
|
||||
**Создана**:: [[2024-11-24]]
|
||||
**Автор**::
|
||||
### Дополнительные материалы
|
||||
- [Управление личными делами в Obsidian (прототип) / Habr](https://habr.com/en/articles/833654/)
|
||||
|
||||
### Дочерние заметки
|
||||
<!-- QueryToSerialize: LIST FROM [[]] WHERE contains(Родитель, this.file.link) or contains(parents, this.file.link) -->
|
||||
<!-- SerializedQuery: LIST FROM [[]] WHERE contains(Родитель, this.file.link) or contains(parents, this.file.link) -->
|
||||
- [[Встраиваем поиск Omnisearch по базе знаний в поисковик]]
|
||||
<!-- SerializedQuery END -->
|
||||
|
@ -0,0 +1,31 @@
|
||||
---
|
||||
aliases:
|
||||
tags:
|
||||
- maturity/🌱
|
||||
date: 2024-11-24
|
||||
---
|
||||
Т.е. мы что-то ищем в сети, и одновременно видим на этом же экране все релевантные заметки из нашей локальной базы знаний. Такое можно вполне организовать и в Obsidian.
|
||||
|
||||
Алгоритм активации этой функции:
|
||||
- Установите последнюю версию Omnisearch
|
||||
- Активируйте опцию Enable HTTP Server, порт оставьте по умолчанию 51361
|
||||
- Установите [Tampermonkey](https://www.tampermonkey.net/) или любой другой менеджер пользовательских скриптов. Плагин нужно устанавливать в режиме разработчика, иначе работать не будет.
|
||||
- Установите скрипт под ваш поисковик:
|
||||
- [Kagi](https://github.com/scambier/userscripts/raw/master/dist/obsidian-omnisearch-kagi.user.js)
|
||||
- [Google](https://github.com/scambier/userscripts/raw/master/dist/obsidian-omnisearch-google.user.js)
|
||||
- [DuckDuckGo](https://github.com/scambier/userscripts/raw/master/dist/obsidian-omnisearch-ddg.user.js)
|
||||
- [Bing](https://github.com/scambier/userscripts/raw/master/dist/obsidian-omnisearch-bing.user.js)
|
||||
|
||||
***
|
||||
## Мета информация
|
||||
**Область**:: [[../../meta/zero/00 База знаний|00 База знаний]]
|
||||
**Родитель**:: [[Obsidian]]
|
||||
**Источник**::
|
||||
**Создана**:: [[2024-11-24]]
|
||||
**Автор**::
|
||||
### Дополнительные материалы
|
||||
-
|
||||
|
||||
### Дочерние заметки
|
||||
<!-- QueryToSerialize: LIST FROM [[]] WHERE contains(Родитель, this.file.link) or contains(parents, this.file.link) -->
|
||||
|
@ -5,7 +5,8 @@ zero-link:
|
||||
- "[[00 Разработка]]"
|
||||
---
|
||||
- [Структура хранения файлов в Linux](Структура%20хранения%20файлов%20в%20Linux.md)
|
||||
- [Проверка свободного места на дисках](Проверка%20свободного%20места%20на%20дисках.md)
|
||||
- [[../../dev/linux/Диагностика Linux|Диагностика Linux]]
|
||||
- [Проверка свободного места на дисках](../../dev/linux/Проверка%20свободного%20места%20на%20дисках.md)
|
||||
|
||||
CentOS:
|
||||
- [Настройка прокси на CentOS 7 и 8](../../dev/linux/centos/Настройка%20прокси%20на%20CentOS%207%20и%208.md)
|
||||
|
9
meta/zero/00 База знаний.md
Normal file
9
meta/zero/00 База знаний.md
Normal file
@ -0,0 +1,9 @@
|
||||
---
|
||||
aliases:
|
||||
tags:
|
||||
- type/zero-link
|
||||
date:
|
||||
- - 2023-12-17
|
||||
---
|
||||
## Полезные материал
|
||||
- [Rethinking my PKM part 5: How do you organize your notes? - YouTube](https://www.youtube.com/watch?v=AtdAAD47aQY). Автор рассказывает какие бывают структуры личных баз знаний. Какие структуры связей можно выстраивать в заметках.
|
@ -8,6 +8,7 @@ aliases:
|
||||
- база данных
|
||||
- базу данных
|
||||
- Реляционная база данных
|
||||
- базами данных
|
||||
linked:
|
||||
- "[[../../../../_inbox/00 In-memory СуБД|00 In-memory СуБД]]"
|
||||
---
|
||||
|
@ -24,9 +24,9 @@ date: 2024-11-12
|
||||
|
||||
**Как бороться с наследием прошлого**
|
||||
1. **Документировать решения**: Поддержка документации помогает понимать, почему определённое решение было принято, и облегчает пересмотр устаревших подходов. Например, Architecture decision log
|
||||
2. **Регулярные ревизии кода**: Периодически пересматривайте старый код, чтобы выявлять и устранять неэффективные решения.
|
||||
2. [[../dev/efficiency/Рефакторинг кода|Рефакторинг кода]]: Периодически пересматривайте старый код, чтобы выявлять и устранять неэффективные решения.
|
||||
3. **Постоянное обучение команды**: Обучение помогает разработчикам понимать современные подходы и технологии, что позволяет быстрее определять устаревшие паттерны.
|
||||
4. **Открытые обсуждения**: Создайте культуру, где команда может открыто задавать вопросы о текущих решениях и предлагать улучшения. Например TechTalk
|
||||
4. [[../dev/efficiency/TechTalk|TechTalk]]: Создайте культуру, где команда может открыто задавать вопросы о текущих решениях и предлагать улучшения.
|
||||
***
|
||||
## Мета информация
|
||||
**Область**:: [[../meta/zero/00 Головные мюсли|00 Головные мюсли]], [[../meta/zero/00 Разработка|00 Разработка]]
|
||||
|
25
muesli/Контрасты Цивилизации.md
Normal file
25
muesli/Контрасты Цивилизации.md
Normal file
@ -0,0 +1,25 @@
|
||||
---
|
||||
aliases:
|
||||
tags:
|
||||
- maturity/🌱
|
||||
- content/muesli
|
||||
date: 2024-11-24
|
||||
---
|
||||
Мы, как человеческий вид, достигли удивительных высот. Мы научились летать в космос, создавать межпланетные аппараты и возвращать ракеты обратно на стартовую площадку. Мы стоим на пороге освоения других планет, уже обсуждая возможности поселений на Марсе и путешествий за пределы нашей Солнечной системы. Эти достижения впечатляют своей масштабностью и инженерным искусством. Они символизируют невероятный прогресс, которого мы достигли за какие-то несколько сотен лет, начиная с того момента, когда человек впервые понял, как использовать огонь или колесо.
|
||||
|
||||
Но вместе с тем, на нашей планете по-прежнему есть люди, живущие так, как жили их предки тысячи лет назад. Изолированные племена, которые никогда не имели контакта с современной цивилизацией, продолжают жить охотой, собирательством и шаманскими практиками. Они не знают, что где-то в небесах пролетают гигантские ракеты, что люди совершают выходы в открытый космос и отправляют роботов на другие планеты. Для них нет понятия глобальной экономики, интернета или даже электричества — они живут в гармонии с природой, сохраняя традиции, которые передавались из поколения в поколение.
|
||||
|
||||
Такие племена — это напоминание о том, каково было наше прошлое, и, возможно, о том, что мы теряем, гоняясь за прогрессом. Они напоминают нам, что есть и другие способы жить — не в окружении гаджетов и технологий, а в мире, где главный ресурс — это время, природа и общение с близкими. Эта мысль заставляет задуматься: а так ли однозначен наш прогресс, или же мы что-то упускаем, устремляясь к звездам?
|
||||
***
|
||||
## Мета информация
|
||||
**Область**:: [[../meta/zero/00 Головные мюсли|00 Головные мюсли]]
|
||||
**Родитель**::
|
||||
**Источник**::
|
||||
**Создана**:: [[2024-11-24]]
|
||||
**Автор**::
|
||||
### Дополнительные материалы
|
||||
-
|
||||
|
||||
### Дочерние заметки
|
||||
<!-- QueryToSerialize: LIST FROM [[]] WHERE contains(Родитель, this.file.link) or contains(parents, this.file.link) -->
|
||||
|
@ -22,7 +22,7 @@ date: 2024-11-23
|
||||
==Это не обязательно плохо или хорошо — это просто реальность современных проектов.== Однако, странно продолжать говорить о применении объектно-ориентированного программирования, если оно фактически перестает соответствовать своим основным принципам.
|
||||
***
|
||||
## Мета информация
|
||||
**Область**:: [[../meta/zero/00 Разработка|00 Разработка]]
|
||||
**Область**:: [[../meta/zero/00 Головные мюсли|00 Головные мюсли]], [[../meta/zero/00 Разработка|00 Разработка]]
|
||||
**Родитель**::
|
||||
**Источник**::
|
||||
**Создана**:: [[2024-11-23]]
|
||||
|
Loading…
Reference in New Issue
Block a user