Дмитрий Макаренков - видео - все видео

Новые видео из канала RuTube на сегодня - 22 April 2026 г.

Дмитрий Макаренков
  04.12.2025
Дмитрий Макаренков
  09.09.2025

Видео на тему: Дмитрий Макаренков - видео


Курс Zabbix. 10. Интеграция с Grafana / Grafana Integration with Zabbix Настраиваем и тестируем интеграцию Zabbix и Grafana 1. Ознакомились с БП Интеграции Zabbix с платформой визуализации данных Grafana с помощью плагина Zabbix 2. Настроили мониторинг данных из Zabbix как с помощью собственной панели, так и с использованием трех готовых коробочных решений, поставляемых вместе с Zabbbix plugin'ом 3. Убедились в том, что взаимодействие между сервером Grafana и плагином Zabbix, а также плагином Zabbix и сервером Zabbix осуществляется по REST API с блоком данных в формате JSON 4. Отметили, что использование Grafana требует определенного опыта, но предоставляет широкие возможности, в частности, эффективным может быть мониторинг данных, собираемых с нескольких систем Zabbix в режиме реального времени Презентацию можно скачать здесь: https://www.dmpsy.ru/training/lectures/lecture_10_zabbix_72_integrating_grafana.pdf Материалы курса на VPS-сервере: https://www.dmpsy.ru/training/ Сервер Grafana (admin / Lecturer): https://www.dmpsy.ru/grafana http://www.dmpsy.ru:3000/grafana Сервер Zabbix (Visitor01 / Lecturer): https://www.dmpsy.ru/zabbix Поддержать автора: https://www.donationalerts.com/r/dmitrymak Хронометраж 0:00:00 Предварительные замечания 0:00:12 Целевая аудитория 0:00:39 План лекции 0:02:10 Введение 0:03:02 Интеграция с Grafana. Общие положения 0:04:51 Добавление пользователя Grafana на сервере Zabbix 0:09:14 Установка docker на Ubuntu и запуск Grafana 0:14:15 Настройка интеграции Grafana с Zabbix 0:17:08 Настройка панелей мониторинга Zabbix в Grafana 0:22:21 Демонстрация работы Grafana на тестовом стенде 0:26:02 Итоги тестирования БП Интеграции с Grafana 0:27:40 Подведем итоги 0:30:08 Приложение 1. Установка Grafana в контейнере podman на Ubuntu 0:30:56 Приложение 2. Конфигурация nginx для запуска grafana и zabbix по https Timing 0:00:00 Preliminary Notes 0:00:12 Target Audience 0:00:39 Agenda 0:02:10 Introduction 0:03:02 Grafana Integration with Zabbix. General Info 0:04:51 Adding a Grafana User on the Zabbix Server 0:09:14 Installing Docker on Ubuntu and Running Grafana 0:14:15 Configuring Grafana Integration with Zabbix 0:17:08 Configuring Zabbix Dashboard and Panels in Grafana 0:22:21 Demonstrating Grafana on a Test Environment 0:26:02 Grafana Integration Testing Results 0:27:40 Summary & Closing Сomments 0:30:08 Annex 1. Installing Grafana in a podman container on Ubuntu 0:30:56 Annex 2. Configuring nginx to run grafana and zabbix over https We configured and tested the Zabbix - Grafana integration 1. Familiarized ourselves with the Zabbix and Grafana integration workflow via the Zabbix plugin 2. Configured Zabbix data monitoring using both our own dashboard and three out-of-the-box dashboards provided by the Zabbix plugin 3. Confirmed that interactions between the Grafana server and the Zabbix plugin, as well as between the Zabbix plugin and the Zabbix server, are performed via a REST API with a JSON data block 4. Noted that using Grafana requires some experience but offers a wide range of capabilities. Particularly, real-time monitoring of data collected from multiple Zabbix systems can be effective. The presentation can be downloaded here: https://www.dmpsy.ru/training/lectures/lecture_10_zabbix_72_integrating_grafana.pdf Training materials on the VPS server: https://www.dmpsy.ru/training/ Grafana server (admin / Lecturer): https://www.dmpsy.ru/grafana http://www.dmpsy.ru:3000/grafana Zabbix server (Visitor01 / Lecturer): https://www.dmpsy.ru/zabbix/ Donate the author: https://www.donationalerts.com/r/dmitrymakКурс Zabbix. 9. Отчеты Zabbix / Zabbix Reports Настраиваем и тестируем отчеты Zabbix 1. Ознакомились с БП Генерации отчетов по расписанию в системе Zabbix 2. Настроили оповещения администраторов по e-mail 3. Настроили отсылку еженедельных отчетов администратору тестового стенда Презентацию можно скачать здесь: https://www.dmpsy.ru/training/lectures/lecture_09_zabbix_72_reports.pdf Материалы курса на VPS-сервере: https://www.dmpsy.ru/training/ Сервер Zabbix (Visitor01 / Lecturer): https://www.dmpsy.ru/zabbix/ Поддержать автора: https://www.donationalerts.com/r/dmitrymak Хронометраж 0:00:00 Предварительные замечания 0:00:16 Целевая аудитория 0:00:35 План лекции 0:01:11 Введение 0:01:55 Отчеты (scheduled reports) Zabbix. Общие положения 0:03:39 Установка Zabbix Web Service и настройка отчетов. Последовательность действий 0:04:38 Установка Google Chrome из командной строки, без GUI 0:05:30 Установка и настройка Zabbix Web Service 0:08:18 Настройка компонентов БП генерации отчетов "end-to-end" 0:15:04 Настройка и генерация тестового отчета 0:17:44 Демонстрация конфигурации РМ и работы отчета Zabbix на тестовом стенде 0:23:16 Итоги тестирования БП Генерации отчетов 0:24:37 Подведем итоги Timing 0:00:00 Preliminary Notes 0:00:16 Target Audience 0:00:35 Agenda 0:01:11 Introduction 0:01:55 Zabbix Scheduled Reports. General Info 0:03:39 Installing Zabbix Web Service and Configuring Reports. Sequence of actions 0:04:38 Installing Google Chrome from the Command Line, Without a GUI 0:05:30 Installing and Configuring Zabbix Web Service 0:08:18 Configuring Report Generation Components 0:15:04 Configuring and Generating a Test Report 0:17:44 Demonstrating the Report Configuration and Zabbix Report Operation 0:23:16 Report Generation Results & Discussion 0:24:37 Summary & Closing Сomments We configured and tested Zabbix reports 1. Familiarized ourselves with the Zabbix scheduled report generation workflow 2. Configured email notifications for Zabbix administrators 3. Set up sending weekly reports to the testbed administrator The presentation can be downloaded here: https://www.dmpsy.ru/training/lectures/lecture_09_zabbix_72_reports.pdf Training materials on the VPS server: https://www.dmpsy.ru/training/ Zabbix server (Visitor01 / Lecturer): https://www.dmpsy.ru/zabbix/ Donate the author: https://www.donationalerts.com/r/dmitrymakКурс Zabbix. 8. Использование карт сети Zabbix / Using Zabbix Network Maps Создаем и тестируем карту сети Zabbix 1. Ознакомились с основными операциями БП Работа с картами 2. Создали тестовую карту, добавили фигуру, узлы сети и установили связь между последними 3. Научились экспортировать и импортировать карты в одном из трех (YAML, XML, JSON) возможных форматов 4. Отметили, что набор операций достаточен для создания карт, но может быть трудоемким для разветвленных сетей, поэтому хотелось бы иметь автоматизацию процесса генерации и обновления карты на основе данных низкоуровневого обнаружения (LLD), а также интеграцию со Structurizr и архитектурной моделью C4 Презентацию можно скачать здесь: https://www.dmpsy.ru/training/lectures/lecture_08_zabbix_72_using_maps.pdf Материалы курса на VPS-сервере: https://www.dmpsy.ru/training/ Сервер Zabbix (Visitor01 / Lecturer): https://www.dmpsy.ru/zabbix/ Поддержать автора: https://www.donationalerts.com/r/dmitrymak Хронометраж 0:00:00 Предварительные замечания 0:00:14 Целевая аудитория 0:00:24 План лекции 0:00:59 Введение 0:01:46 БП Работа с картами. Общие положения 0:02:48 Основные операции по работе с картами Zabbix 0:03:08 Создание карты 0:04:21 Добавление фигуры 0:05:08 Добавление узла сети 0:05:47 Добавление связи 0:07:07 Экспорт и импорт карт 0:08:53 Демонстрация карт тестового стенда Zabbix 0:10:35 Итоги тестирования БП Работа с картами 0:12:09 Подведем итоги Timing 0:00:00 Preliminary Notes 0:00:14 Target Audience 0:00:24 Agenda 0:00:59 Introduction 0:01:46 Working with Maps Business Process. General Info 0:02:48 Basic Operations for Working with Zabbix Maps 0:03:08 Creating a Map 0:04:21 Adding a Shape 0:05:08 Adding a Host 0:05:47 Adding a Link 0:07:07 Exporting and Importing Maps 0:08:53 Demonstrating the Zabbix Testbed Maps 0:10:35 Results & Discussion of Working with Maps 0:12:09 Summary & Closing Сomments We created and tested a Zabbix Network Map 1. Familiarized ourselves with the basic Zabbix map operations 2. Created a test map, added a shape, hosts, and established links between them 3. Learned how to export and import maps in one of three possible formats (YAML, XML, JSON) 4. Noted that the set of operations is sufficient for creating maps, but can be time-consuming for complex networks. Therefore, we would suggest to automate the process of generating and updating maps based on low-level discovery (LLD) data, as well as to integrate with Structurizr and the C4 architectural model The presentation can be downloaded here: https://www.dmpsy.ru/training/lectures/lecture_08_zabbix_72_using_maps.pdf Training materials on the VPS server: https://www.dmpsy.ru/training/ Zabbix server (Visitor01 / Lecturer): https://www.dmpsy.ru/zabbix/ Donate the author: https://www.donationalerts.com/r/dmitrymakКурс Zabbix. 7. Использование Zabbix Java Gateway / Using Zabbix Java Gateway Настраиваем и тестируем JMX-интерфейс мониторинга приложений Java MBeans и их атрибутов 1. Ознакомились с интерфейсом JMX, предоставляемым Zabbix Java Gateway к приложениям Java (MBeans) 2. Настроили мониторинг атрибутов тестового JMX-приложения 3. Сконфигурировали и проанализировали полученные результаты низкоуровневого обнаружения объектов JMX-интерфейса и их атрибутов 4. Отметили, что Java Gateway обладает необходимым и достаточным набором средств для обнаружения и мониторинга объектов Java JMX и их атрибутов, при этом операции изменения значений этих атрибутов платформой Zabbix не поддерживаются, что выглядит вполне логичным и обоснованным Презентацию можно скачать здесь: https://www.dmpsy.ru/training/lectures/lecture_07_zabbix_72_using_java_gateway.pdf Архив тестового JMX-приложения: https://www.dmpsy.ru/training/lectures/examples.tar.gz Материалы курса на VPS-сервере: https://www.dmpsy.ru/training/ Сервер Zabbix (Visitor01 / Lecturer): https://www.dmpsy.ru/zabbix/ Поддержать автора: https://www.donationalerts.com/r/dmitrymak Хронометраж 0:00:00 Предварительные замечания 0:00:26 Целевая аудитория 0:00:56 План лекции 0:01:55 Введение 0:02:23 Мониторинг JMX-приложений. Общие положения 0:04:35 Установка и настройка Zabbix Java Gateway. Последовательность действий 0:05:29 Установка Java Gateway из пакетов Zabbix 0:06:42 Настройка Java Gateway 0:08:14 Сборка и настройка JMX-приложения 0:11:55 Запуск JMX-приложения 0:13:38 Настройка JMX-интерфейса и элементов данных MBean 0:19:48 Использование jmx-ключей для низкоуровневого обнаружения (low-level discovery) 0:21:25 Итоги тестирования объектов JMX-интерфейса с Java Gateway 0:22:09 Демонстрация мониторинга JMX-приложения в режиме реального времени 0:28:24 Подведем итоги Timing 0:00:26 Preliminary Notes 0:00:30 Target Audience 0:00:56 Agenda 0:01:55 Introduction 0:02:23 Monitoring JMX Applications. General Info 0:04:35 Installing and Configuring Zabbix Java Gateway. Sequence of Actions 0:05:29 Installing Java Gateway from Zabbix Packages 0:06:42 Configuring Java Gateway 0:08:14 Building and Configuring a JMX Application 0:11:55 Launching the JMX Application 0:13:38 Configuring the JMX Interface and MBean data items 0:19:48 Using JMX Keys for Low-Level Discovery 0:21:25 Summary of Testing JMX Interface Objects with Java Gateway 0:22:09 Demo of Real-Time JMX App Monitoring 0:28:24 Summary & Closing Сomments We configured and tested the JMX interface for monitoring Java MBeans and their attributes 1. Familiarized ourselves with the JMX interface provided by Zabbix Java Gateway to Java applications (MBeans) 2. Configured attribute monitoring for a test JMX application. 3. Configured and analyzed the results of low-level discovery of JMX interface objects and their attributes 4. Noted that Java Gateway has the necessary and sufficient set of tools for discovering and monitoring Java JMX objects and their attributes. However, the Zabbix platform supports no operations for changing the values of these attributes, which seems quite logical and justified. The presentation can be downloaded here: https://www.dmpsy.ru/training/lectures/lecture_07_zabbix_72_using_java_gateway.pdf Training materials on the VPS server: https://www.dmpsy.ru/training/ Zabbix server (Visitor01 / Lecturer): https://www.dmpsy.ru/zabbix/ Donate the author: https://www.donationalerts.com/r/dmitrymakКурс Zabbix. 6. Настройка оповещений Telegram Webhook / Configuring Telegram Webhook Alerts Рассматриваем способы оповещения администраторов Zabbix с фокусом на настройку бота в группе мессенджера Telegram 1. Ознакомились со способами оповещения администраторов системы мониторинга Zabbix 2. Используя Telegram Webhook, настроили оповещения ботом @moscowzabbixadmin о нештатных ситуациях на тестовом стенде Zabbix участников группы Moscow Zabbix Training 3. Обсудили "за" и "против" использования Telegram Webhook: все положительно, если не придется переходить на другой мессенджер. В любом случае, сообщения платформы - это всего лишь общеизвестный POST/JSON, хорошо поддающийся тонкой настройке Презентацию можно скачать здесь: https://www.dmpsy.ru/training/lectures/lecture_06_zabbix_72_configuring_alerts.pdf Материалы курса на VPS-сервере: https://www.dmpsy.ru/training/ Сервер Zabbix (Visitor01 / Lecturer): https://www.dmpsy.ru/zabbix/ Поддержать автора: https://www.donationalerts.com/r/dmitrymak Хронометраж 0:00:00 Предварительные замечания 0:00:30 Целевая аудитория 0:01:03 План лекции 0:01:30 Введение 0:02:35 Оповещения Zabbix (alerts). Общие положения 0:04:29 Средства связи Zabbix (media types) 0:06:37 Создание группы Moscow Zabbix Training в Telegram 0:07:10 Создание бота - адресата сообщений с платформы Zabbix 0:08:21 Добавление бота в группу Moscow Zabbix Training 0:08:57 Тестирование работоспособности бота 0:09:59 Активирование среды оповещения (media type) Telegram 0:10:50 Тестирование работоспособности Telegram Webhook 0:12:07 Активирование действий триггеров и оповещений администратора 0:13:20 Проверка функциональности: добавляем тестовый триггер 0:16:20 Итоги тестирования. Перспективен ли Telegram Webhook? 0:18:29 Краткий экскурс по рабочим местам настройки оповещений на Zabbix Frontend 0:21:58 Подведем итоги Timing 0:00:00 Preliminary Notes 0:00:30 Target Audience 0:01:03 Agenda 0:01:30 Introduction 0:02:35 Zabbix Alerts. General Info 0:04:29 Zabbix Media Types 0:06:37 Creating the Moscow Zabbix Training Group in Telegram 0:07:10 Creating a Bot to Receive Messages from the Zabbix Server 0:08:21 Adding the Bot to the Moscow Zabbix Training Group 0:08:57 Testing the Bot 0:09:59 Enabling the Telegram Media Type 0:10:50 Testing Telegram Webhook Functionality 0:12:07 Enabling Trigger Actions and Administrator Alerts 0:13:20 Functionality Testing: Adding a Test Trigger 0:16:20 Testing Summary: Is Telegram Webhook Promising? 0:18:29 A brief tour of Zabbix Frontend alert configuration modules 0:21:58 Summary & Closing Сomments We explored ways to alert Zabbix administrators, focusing on configuring a bot in a dedicated Telegram messenger group 1. Learned about ways to alert Zabbix monitoring system administrators 2. Using Telegram Webhook, configured the @moscowzabbixadmin bot to notify participants of abnormal situations on the Zabbix testbed in the Moscow Zabbix Training group 3. Discussed the pros and cons of using Telegram Webhook: all positive, as long as we don't have to switch to another messenger. In any case, platform messages are simply the well-known POST/JSON format, which can be fine-tuned promptly The presentation can be downloaded here: https://www.dmpsy.ru/training/lectures/lecture_06_zabbix_72_configuring_alerts.pdf Training materials on the VPS server: https://www.dmpsy.ru/training/ Zabbix server (Visitor01 / Lecturer): https://www.dmpsy.ru/zabbix/ Donate the author: https://www.donationalerts.com/r/dmitrymakКурс Zabbix. 5. Использование шаблонов / Using Templates Рассматриваем структуру данных и способы использования шаблонов в Zabbix 1. Ознакомились со структурой данных и основными бизнес-процессами (операциями) по созданию, изменению и удалению шаблонов и их групп 2. Изучили возможности экспорта и импорта шаблонов 3. Узнали о преднастроенных (out-of-the-box) шаблонах, существенно упрощающих процесс настройки узлов сети (хостов) 4. Отметили, что использование "коробочных" шаблонов с последующим (при необходимости) экспортом, редактированием и повторным импортом в систему - ключ к оптимизации мониторинга хостов в Zabbix Презентацию можно скачать здесь: https://www.dmpsy.ru/training/lectures/lecture_05_zabbix_72_using_templates.pdf Материалы курса на VPS-сервере: https://www.dmpsy.ru/training/ Сервер Zabbix (Visitor01 / Lecturer): https://www.dmpsy.ru/zabbix/ Поддержать автора: https://www.donationalerts.com/r/dmitrymak Хронометраж 0:00:00 Предварительные замечания 0:00:53 Целевая аудитория 0:01:16 План лекции 0:01:43 Введение 0:02:11 Шаблоны Zabbix. Общие положения 0:04:18 Группы шаблонов Zabbix 0:06:17 Создание группы шаблонов Moscow Testbed Templates 0:07:17 Создание шаблона в группе Moscow Testbed Templates 0:09:36 Создание узла HP Server и подключение шаблона 0:10:33 Отсоединение шаблона от узла HP Server 0:11:24 Массовое обновление (mass update) хостов шаблоном 0:12:53 Массовое обновление (mass update) шаблонов 0:14:32 Экспорт и импорт шаблонов 0:17:03 Шаблоны Zabbix "из коробки" и их группы по назначению (scope) 0:21:03 Изменения шаблонов при обновлении (upgrade) системы Zabbix 0:22:11 Подведем итоги Timing 0:00:00 Preliminary Notes 0:00:53 Target Audience 0:01:16 Agenda 0:01:43 Introduction 0:02:11 Zabbix templates. General Info 0:04:18 Zabbix Template Groups 0:06:17 Creating the Moscow Testbed Templates Template Group 0:07:17 Creating a Template in the Moscow Testbed Templates Group 0:09:36 Creating an HP Server host and linking a template 0:10:33 Unlinking a template from an HP Server node 0:11:24 Mass updating hosts with a template 0:12:53 Mass updating templates 0:14:32 Exporting and importing templates 0:17:03 Out-of-the-box Zabbix templates and their scope groups 0:22:11 Summary & Closing Сomments We explored the data structure and use of templates in Zabbix 1. Become familiar with the data structure and the main business processes for creating, editing, and deleting templates and their groups 2. Explored the export and import capabilities of templates 3. Learned about out-of-the-box templates, which significantly simplify the process of configuring Zabbix hosts. 4. Noted that using out-of-the-box templates, followed by (if necessary) exporting, editing, and re-importing them into the system, is the key to optimizing host monitoring in Zabbix. The presentation can be downloaded here: https://www.dmpsy.ru/training/lectures/lecture_05_zabbix_72_using_templates.pdf Training materials on the VPS server: https://www.dmpsy.ru/training/ Zabbix server (Visitor01 / Lecturer): https://www.dmpsy.ru/zabbix/ Donate the author: https://www.donationalerts.com/r/dmitrymakКурс Zabbix. 4. Установка и настройка агентов / Installing and Configuring User Agents Рассматриваем основные особенности архитектуры и установки - настройки User Agents на Windows и macOS 1. Обсудили базовый функционал и архитектуру компонентов Zabbix Agent / Zabbix Agent 2, поддерживаемые платформы и способы установки агентов 2. Прошли все этапы установки и настройки User Agent на пользовательских машинах Windows 11 и macOS BigSur 3. Выявили необходимость установки Proxy server для обслуживания узлов подсетей, расположенных за Firewall'ом и недоступных поэтому основному серверу Zabbix Презентацию можно скачать здесь: https://www.dmpsy.ru/training/lectures/lecture_04_zabbix_72_user_agents_installation.pdf Материалы курса на VPS-сервере: https://www.dmpsy.ru/training/ Сервер Zabbix (Visitor01 / Lecturer): https://www.dmpsy.ru/zabbix/ Поддержать автора: https://www.donationalerts.com/r/dmitrymak Хронометраж 0:00:00 Введение 0:00:20 Целевая аудитория 0:00:32 План лекции 0:01:47 Предварительные замечания 0:02:17 Агенты Zabbix. Общие положения 0:05:14 Агенты Zabbix. Архитектура решения 0:07:02 Поддерживаемые платформы и варианты установки 0:08:43 Способы установки User Agent на платформе Windows 0:09:50 Установка User Agent на Windows 11 0:15:58 Тестирование User Agent на Windows 11 0:18:27 Способы установки User Agent на платформе macOS 0:19:48 Установка User Agent на macOS 0:26:25 Тестирование User Agent на macOS 0:30:07 Подведем итоги Timing 0:00:00 Introduction 0:00:20 Target Audience 0:00:32 Agenda 0:01:47 Preliminary Notes 0:02:17 Zabbix User agents. General info 0:05:14 Zabbix User agents. Architecture 0:07:02 Supported Platforms and Installation Options 0:08:43 User Agent Installation Methods on Windows 0:09:50 Installing User Agent on Windows 11 0:15:58 Testing User Agent on Windows 11 0:18:27 User Agent Installation Methods on macOS 0:19:48 Installing User Agent on macOS 0:26:25 Testing User Agent on macOS 0:30:07 Summary & Closing Сomments We explored the key architecture and installation features of User Agents on Windows and macOS 1. Discussed the basic functionality and architecture of Zabbix Agent / Zabbix Agent 2 components, supported platforms, and agent installation methods 2. Went through all the steps for installing and configuring User Agents on Windows 11 and macOS BigSur machines 3. Identified the need to install a proxy server to service nodes on subnets located behind a firewall and therefore inaccessible to the main Zabbix server The presentation can be downloaded here: https://www.dmpsy.ru/training/lectures/lecture_04_zabbix_72_user_agents_installation.pdf Training materials on the VPS server: https://www.dmpsy.ru/training/ Zabbix server (Visitor01 / Lecturer): https://www.dmpsy.ru/zabbix/ Donate the author: https://www.donationalerts.com/r/dmitrymakКурс NextJS. 18. "Классическое" развертывание приложения Next.js / The "classic" app deployment Установили приложение Next.js на VPS-сервере 1. Развернули приложение Next.js в заявленной "классической" конфигурации: - Сервер nginx - Приложение Next.js под управлением менеджера pm2 - БД Postgres в контейнере docker - pgAdmin в контейнере docker 2. Подробно разобрали все этапы настройки данной конфигурации Презентацию можно скачать здесь: https://dmpsy.club/references/NextJS/lesson_018_classic_deployment_rus.pdf Ссылка на GitHub: https://github.com/DmitryMakar/nextjs-lesson-016.git Поддержать автора: https://www.donationalerts.com/r/dmitrymak Хронометраж 0:00:00 Введение 0:00:26 Целевая аудитория 0:00:43 План работы 0:01:13 "Классическое" развертывание приложения. Постановка задачи 0:03:55 Настраиваем проект 0:05:50 Устанавливаем и настраиваем pm2 0:12:14 Устанавливаем и настраиваем сервер nginx 0:20:57 Тестируем проект в эксплуатационном варианте (демо) 0:24:49 Подведем итоги Timing 0:00:00 Introduction 0:00:26 Target audience 0:00:43 Agenda 0:01:13 "Классическое" развертывание приложения. Постановка задачи 0:03:55 Configuring the project 0:05:50 Installing and configuring pm2 0:12:14 Installing and configuring the nginx server 0:20:57 Demo testing the project in production 0:24:49 Summary & Closing comments Installed the Next.js application on a VPS server 1. Deployed the Next.js application in the promised "classic" configuration: - nginx server - Next.js application under pm2 manager control - Postgres DB in a docker container - pgAdmin in a docker container 2. Thoroughly analyzed all the steps of setting up this configuration The presentation can be downloaded here: https://dmpsy.club/references/NextJS/lesson_018_classic_deployment_rus.pdf GitHub link: https://github.com/DmitryMakar/nextjs-lesson-016.git Donate the author: https://www.donationalerts.com/r/dmitrymakКурс Zabbix. 3. Создание узлов, элементов данных, пользователей Zabbix / Creating hosts, items, and users Работаем с основными сущностями Zabbix: User(Пользователь), Host(Узел сети), Item(Элемент данных) 1. Обсудили структуру данных Пользователей (Users), Узлов сети (Hosts) и Элементов данных (Items) реализованную в решении Zabbix 2. Создали пользователя Student01 группы Students c ролью Student, узел сети astralinux для мониторинга контейнера podman Astra Linux, а также элемент данных SNMP для отслеживания времени, прошедшего после перезагрузки сервера Linux на тестовом стенде 3. Заметили, что в каждой из трех рассмотренных сущностей есть наиболее существенная структурная составляющая: для узлов сети - интерфейс(ы), для элементов данных - тип, для пользователей - также их тип. У двух последних тип, в конечном счете, определяет предопределенный набор объектов, с которыми будет работать создаваемый пользователь или элемент данных, что четко разграничивает область применения и упрощает настройку 4. Настроили работу с Zabbix и материалами курса по https через nginx Презентацию можно скачать здесь: https://www.dmpsy.ru/training/lectures/lecture_03_zabbix_72_hosts_items_users_configuration.pdf Материалы курса на VPS-сервере: https://www.dmpsy.ru/training/ Поддержать автора: https://www.donationalerts.com/r/dmitrymak Хронометраж 0:00:00 Введение 0:00:33 Целевая аудитория 0:00:43 План лекции 0:01:20 Предварительные замечания 0:01:48 Пользователи Zabbix. Общие положения 0:02:55 Структура данных пользовательской записи в Zabbix 0:06:27 Создание пользователя из группы Students с ролью Student 0:09:07 Демонстрация создания пользователя из группы Visitors 0:16:58 Узлы сети (Hosts). Общие положения 0:18:15 Структура данных записи о хосте в Zabbix 0:22:32 Создание записи о хосте astralinux, отслеживаемого агентом Zabbix 0:25:14 Демонстрация мониторинга узла сети astralinux 0:28:08 Элементы данных (Items). Общие положения 0:30:37 Типы элементов данных 0:31:22 Создание элемента данных типа SNMP 0:34:11 Демонстрация работы элемента данных SysUptime 0:35:45 Zabbix теперь работает через nginx по протоколу https :) 0:37:43 Подведем итоги Timing 0:00:00 Introduction 0:00:33 Target audience 0:00:43 Agenda 0:01:20 Preliminary notes 0:01:48 Zabbix users. General info 0:02:55 Zabbix user record data structure 0:06:27 Creating a user from the Students group with the Student role 0:09:07 Demo of creating a user from the Visitors group 0:16:58 Zabbix hosts. General info 0:18:15 Zabbix host record data structure 0:22:32 Creating a record for the astralinux host monitored by the Zabbix User agent 0:25:14 Demo of the astralinux host monitoring 0:28:08 Zabbix Items. General info 0:30:37 Item types 0:31:22 Creating an SNMP Zabbix item 0:34:11 Demo of the SysUptime item 0:35:45 Zabbix now works through nginx via the https protocol :) 0:37:43 Summary & Closing Сomments Working with the main Zabbix entities: User, Host, and Item 1. Discussed the data structure of Users, Hosts, and Items implemented in the Zabbix solution 2. Created the Student01 user in the Students group with the Student role, the host for monitoring an astralinux podman container, and an SNMP item for tracking the time elapsed since rebooting a Linux server on a testbed 3. We noted that each of the three entities discussed has a key structural component: for hosts, the interface(s), for items, the type, and for users, also their type. For the latter two, the type ultimately defines a predefined set of objects with which the created user or item will work, which clearly delineates the scope and simplifies configuration 4. We set up Zabbix and course materials access through HTTPS via nginx The presentation can be downloaded here: https://www.dmpsy.ru/training/lectures/lecture_03_zabbix_72_hosts_items_users_configuration.pdf Training materials on the VPS server: https://www.dmpsy.ru/training/ Donate the author: https://www.donationalerts.com/r/dmitrymakКурс NextJS. 17. Итоги курса. Дальнейшие шаги / Training Summary. Next Steps Подводим итоги базового курса, даем полезные ссылки и ставим задачи на будущее Презентацию можно скачать здесь: https://dmpsy.club/references/NextJS/lesson_017_next_steps_rus.pdf Поддержать автора: https://www.donationalerts.com/r/dmitrymak Хронометраж 0:00:00 Введение 0:00:33 Целевая аудитория 0:01:02 План работы 0:02:50 Сводка пройденного курса 0:11:06 Продолжаем изучать и начинаем разрабатывать на Next.js 0:12:19 Полезные ссылки и дополнительные темы 0:15:34 Интересные шаблоны приложений 0:16:59 Подведем итоги Timing 0:00:00 Introduction 0:00:33 Target Audience 0:01:02 Agenda 0:02:50 Next.js Course Summary 0:11:06 Continue Learning and Begin Developing with Next.js 0:12:19 Useful Links and Follow-Up Topics 0:15:34 Promising Next.js App Templates 0:16:59 Summary & Closing comments We summarize the basic Next.js course of 16 lectures, provide useful links, and set tasks for the future. The presentation can be downloaded here: https://dmpsy.club/references/NextJS/lesson_017_next_steps_rus.pdf Donate the author: https://www.donationalerts.com/r/dmitrymakКурс Zabbix. 2. Установка Zabbix 7.2 на Ubuntu 24.04 LTS / Installing Zabbix 7.2 on Ubuntu 24.04 LTS Обсуждаем варианты установки Zabbix 7.2 на различные платформы 1. Выбрали три варианта установки Zabbix на PC (win/mac): - в контейнер VirtualBox готовый образ Zabbix Appliance - в контейнер VirtualBox с полной установкой Ubuntu + Zabbix Server - в контейнер podman Astra Linux + Zabbix Server 2. Подробно разобрали установку Zabbix 7.2 на Ubuntu 24.04 LTS Noble 3. Сконфигурировали nginx на переадресацию http: port 80 (nginx,http) -﹥ port 8080 (zabbix) Презентацию можно скачать здесь: https://www.dmpsy.ru/training/lectures/lecture_02_zabbix_72_installation_Ubuntu.pdf Материалы курса на VPS-сервере: https://www.dmpsy.ru/training/ Поддержать автора: https://www.donationalerts.com/r/dmitrymak Хронометраж 0:00:00 Введение 0:00:46 Целевая аудитория 0:01:14 План лекции 0:02:21 Варианты установки Zabbix 0:06:23 Предварительные замечания 0:07:49 Подготовительные шаги 0:10:14 Установка системы мониторинга Zabbix 7.2 на Ubuntu 24.04 LTS 0:16:02 Демонстрация Zabbix Frontend и nginx 0:21:25 Подведем итоги Timing 0:00:00 Introduction 0:00:37 Target audience 0:01:20 Agenda 0:02:21 Zabbix Installation Options 0:06:23 Preliminary Notes 0:07:49 Preparatory Steps 0:10:14 Installing Zabbix 7.2 Monitoring System on Ubuntu 24.04 LTS 0:16:02 Zabbix Frontend and Nginx Demo 0:21:25 Summary & Closing comments Discussing Zabbix 7.2 installation options for various platforms 1. We chose three options for installing Zabbix on a PC (Windows/Mac): - in a VirtualBox container using a pre-built Zabbix Appliance image - in a VirtualBox container with a full Ubuntu installation + Zabbix Server - in a podman container using Astra Linux + Zabbix Server 2. We covered installing Zabbix 7.2 on Ubuntu 24.04 LTS Noble in detail. 3. We configured Nginx to forward http traffic: port 80 (nginx,http) -﹥ port 8080 (zabbix) The presentation can be downloaded here: https://www.dmpsy.ru/training/lectures/lecture_02_zabbix_72_installation_Ubuntu.pdf Training materials on the VPS server: https://www.dmpsy.ru/training/ Donate the author: https://www.donationalerts.com/r/dmitrymakКурс Zabbix. 1. Обзор системы мониторинга Zabbix 7.2 / Zabbix 7.2 Network Monitoring System Review Обсуждаем систему мониторинга сети Zabbix, ее назначение и архитектуру 1. Сделали общий обзор проекта Zabbix: назначение системы мониторинга 2. Обсудили архитектуру решения Zabbix в контексте модели C4: внешние интерфейсы (С1), основные составляющие системы и их взаимодействие между собой (C2) 3. Выяснили, что распределенная архитектура Zabbix может быть логически стройно разбита на 4 группы: - управляющие и мониторинговые модули (Zabbix Frontend, API Server, Web Service) - серверные модули (Zabbix Server, Zabbix Proxy) - коллекторы данных (User Agent / Agent 2, Java Gateway, Zabbix Sender) - служебные утилиты (Zabbix Get, Zabbix JS) Презентацию можно скачать здесь: https://www.dmpsy.ru/training/lectures/lecture_01_zabbix_72_review.pdf Материалы курса на VPS-сервере: https://www.dmpsy.ru/training/ Поддержать автора: https://www.donationalerts.com/r/dmitrymak Хронометраж 0:00:00 Введение 0:00:51 Целевая аудитория 0:01:25 План работы 0:03:45 Введение. О проекте Zabbix 0:05:52 Архитектура решения Zabbix 0:08:22 Диаграмма системного контекста (C1). Внешние интерфейсы 0:10:47 Диаграмма контейнеров (C2). Внутренняя структура решения 0:11:35 Web-интерфейс системы мониторинга - Zabbix Frontend 0:13:33 Zabbix server - центральное звено системы мониторинга 0:14:52 Zabbix proxy - дополнительный серверный узел 0:17:01 Zabbix Web Service - сервис генерации отчетов 0:18:14 Zabbix Java Gateway - сервис мониторинга JMX-приложений 0:20:21 Zabbix User Agent (2) - агенты - коллекторы данных с хостов сети 0:22:43 Zabbix Sender - утилита - "информатор" сервера или прокси 0:23:35 Zabbix Get - утилита проверки работоспособности агентов 0:25:03 Демонстрация тестовой среды Zabbix 0:29:35 Подведем итоги Timing 0:00:00 Introduction 0:00:51 Target audience 0:01:25 Agenda 0:03:45 Introduction. About the Zabbix Project 0:05:52 Zabbix Solution Architecture 0:08:22 System Context Diagram (C1). External Interfaces 0:10:47 Container Diagram (C2). Internal structure of the solution 0:11:35 Web interface of the monitoring system - Zabbix Frontend 0:13:33 Zabbix server - the central part of the monitoring system 0:14:52 Zabbix proxy - an additional server node 0:17:01 Zabbix Web Service - a report generation service 0:18:14 Zabbix Java Gateway - a JMX application monitoring service 0:20:21 Zabbix User Agent (2) - agents, the data collectors from network hosts 0:22:43 Zabbix Sender - a server or proxy "informant" utility 0:23:35 Zabbix Get - a utility for troubleshooting User agents 0:25:03 Zabbix test environment demo 0:29:35 Summary & Closing comments Discussing the Zabbix network monitoring system, its purpose, and architecture 1. Provided a general overview of the Zabbix project: the purpose of the monitoring system 2. Discussed the Zabbix solution architecture in the context of the C4 model: external interfaces (C1), the main components of the system and their mutual interactions (C2) 3. Concluded that the distributed architecture of Zabbix can be logically divided into 4 groups: - Management and monitoring modules (Zabbix Frontend, API Server, Web Service) - Server modules (Zabbix Server, Zabbix Proxy) - Data collectors (User Agent / Agent 2, Java Gateway, Zabbix Sender) - Service utilities (Zabbix Get, Zabbix JS) The presentation can be downloaded here: https://www.dmpsy.ru/training/lectures/lecture_01_zabbix_72_review.pdf Training materials on the VPS server: https://www.dmpsy.ru/training/ Donate the author: https://www.donationalerts.com/r/dmitrymakКурс NextJS. 16. Метаданные приложения / Adding metadata Добавляем метаданные в наше приложения Next.js 1. Разобрались в назначении и роли метаданных (metadata) для SEO 2. Узнали о различных типах метаданных 3. Добавили изображения Open Graph средствами Metadata 4. Добавили favicon с помощью metadata 5. Применили title.template для гибкой настройки заголовков страниц приложения 6. Протестировали проект в эксплуатационном варианте Презентацию можно скачать здесь: https://dmpsy.club/references/NextJS/lesson_016_adding_metadata_rus.pdf Ссылка на GitHub: https://github.com/DmitryMakar/nextjs-lesson-016.git Поддержать автора: https://www.donationalerts.com/r/dmitrymak Хронометраж 0:00:00 Введение 0:00:25 Целевая аудитория 0:00:48 План работы 0:03:35 Назначение и важность метаданных для эффективного SEO 0:05:07 Типы метаданных 0:06:54 Способы добавления метаданных в приложение Next.js 0:11:33 Добавляем изображения Open Graph и favicon 0:14:09 Добавляем метаданные title и description 0:19:49 Тестируем проект 0:24:58 Полезные ссылки 0:25:57 Подведем итоги Timing 0:00:00 Introduction 0:00:25 Target audience 0:00:48 Agenda 0:03:35 What is metadata and why is it important? 0:05:07 Metadata types 0:06:54 Adding metadata to a Next.js app 0:11:33 Favicon and Open Graph images 0:14:09 Page title and description 0:19:49 Testing the project 0:24:58 Useful links 0:25:57 Summary & Closing comments Adding Metadata to our Next.js app 1. Understood the purpose and role of metadata for SEO 2. Learned about the various metadata types 3. Added Open Graph images using Metadata 4. Added a favicon using metadata 5. Applied title.template for flexible customization of app page titles 6. Tested the project in production The presentation can be downloaded here: https://dmpsy.club/references/NextJS/lesson_016_adding_metadata_rus.pdf GitHub link: https://github.com/DmitryMakar/nextjs-lesson-016.git Donate the author: https://www.donationalerts.com/r/dmitrymakКурс NextJS. 15. Аутентификация пользователей / Adding authentication Реализуем аутентификацию пользователей приложения Next.js с помощью NextAuth.js 1. Обсуждаем термины аутентификации и авторизации 2. Реализуем аутентификацию пользователей функциями signIn и signOut из NextAuth.js 3. Выясняем, как использовать middleware для перенаправления пользователей и защиты маршрутов 4. Применяем хук useActionState для возвращения ошибок авторизации в форму login Презентацию можно скачать здесь: https://dmpsy.club/references/NextJS/lesson_015_adding_authentication_rus.pdf Ссылка на GitHub: https://github.com/DmitryMakar/nextjs-lesson-015.git Поддержать автора: https://www.donationalerts.com/r/dmitrymak Хронометраж 0:00:00 Введение 0:00:22 Целевая аудитория 0:00:42 План работы 0:03:32 Понятия аутентификации и авторизации пользователей 0:05:38 Аутентификация пользователей. Постановка задачи 0:08:01 Создаем маршрут /login 0:09:43 Настраиваем NextAuth.js 0:12:38 Добавляем опцию pages 0:13:45 Защищаем маршруты средствами Next.js Middleware 0:17:12 Хешируем пароли пользователей 0:20:14 Настраиваем провайдера Credentials и функцию signIn 0:23:13 Реализуем серверное действие authenticate 0:24:43 Используем хук useActionState 0:26:55 Реализуем функцию выхода signOut() 0:28:08 Схема взаимодействия компонентов при аутентификации 0:30:45 Запускаем приложение на сервере разработки 0:32:33 Запускаем приложение в эксплуатационном варианте 0:33:23 Демонстрация аутентификации: разработка / эксплуатация 0:42:31 Полезные ссылки 0:43:32 Подведем итоги Timing 0:00:00 Introduction 0:00:22 Target audience 0:00:42 Agenda 0:03:32 Authentication vs. Authorization 0:05:38 User authentication. Statement of the problem 0:08:01 Create the /login route 0:09:43 Setting up NextAuth.js 0:12:38 Adding the pages option 0:13:45 Protecting the routes with Next.js Middleware 0:17:12 Password hashing 0:20:14 Configuring the Credentials provider and the signIn functionality 0:23:13 Implementing the authenticate server action 0:24:43 Applying the useActionState hook 0:26:55 Adding the signOut functionality 0:28:08 Diagram of components' interaction during authentication 0:30:45 Launching the app on the dev server 0:32:33 Lunching the app in production 0:33:23 Authentication demo: development / production 0:42:31 Useful links 0:43:32 Summary & Closing comments We implement user authentication of the Next.js application using NextAuth.js: 1. Discuss the terms of authentication and authorization 2. Implement user authentication with the signIn and signOut functions from NextAuth.js 3. Find out how to use Next.js middleware to redirect users and protect routes 4. Apply the useActionState hook to return authorization errors to the login form The presentation can be downloaded here: https://dmpsy.club/references/NextJS/lesson_015_adding_authentication_rus.pdf GitHub Link: https://github.com/DmitryMakar/nextjs-lesson-015.git Donate the author: https://www.donationalerts.com/r/dmitrymakКурс NextJS. 14. Улучшение доступности приложения / Improviьg accessibility Обсуждаем понятие доступности (accessibility) и аспекты ее реализации в Next.js Валидируем значения, введенные в поля формы создания и редактирования инвойсов: 1. Непосредственно в формах с помощью атрибутов HTML required (валидация на клиентской стороне) 2. С помощью проверок схемы Zod, происходящей в Server Actions (валидация на серверной стороне) Возникающие при проверке ошибки возвращаются в форму через хук useActionState и отображаются под полями с ошибочными значениями в виде aria-labels с описанием соответствующей ошибки Используем инструмент lint для проверки кода приложения Презентацию можно скачать здесь: https://dmpsy.club/references/NextJS/lesson_014_improving_accessibility_rus.pdf Ссылка на GitHub: https://github.com/DmitryMakar/nextjs-lesson-014.git Поддержать автора: https://www.donationalerts.com/r/dmitrymak Хронометраж 0:00:00 Введение 0:00:36 Целевая аудитория 0:00:55 План работы 0:03:03 Реализация доступности (accessibility) в приложениях Next.js 0:05:45 Улучшение доступности приложения. Постановка задачи 0:08:08 Проверка значений непосредственно в форме (Client-side validation) 0:13:38 Схема взаимодействия компонентов при серверной валидации 0:17:45 Валидация на серверной стороне: форма создания инвойса 0:23:06 Валидация на серверной стороне: форма редактирования инвойса 0:28:19 Используем next lint для проверки кода приложения 0:32:01 Заключительные операции. Домашнее задание 0:33:05 Полезные ссылки 0:34:18 Подведем итоги 0:34:54 Заключительные замечания Timing 0:00:00 Introduction 0:00:36 Target audience 0:00:55 Agenda 0:05:45 Improving accessibility of an app. Statement of the problem 0:08:08 Client-side form validation 0:13:38 Interaction of components during server-side form validation 0:17:45 Invoice creation form server-side validation 0:23:06 Invoice edit form server-side validation 0:28:19 Using next lint to check the app code 0:32:01 Final operations and homework 0:33:05 Useful links 0:34:18 Summary 0:34:54 Closing comments We discuss the concept of accessibility and aspects of its implementation in Next.js We validate the values entered in the fields of the invoice creation / edit forms: 1. Directly in the forms using HTML required attributes (client-side validation) 2. Using Zod schema checks performed within Server Actions (server-side validation) The validation errors are returned to the form via the useActionState hook and displayed below fields with erroneous values as aria-labels with an explanation of the corresponding error We use the lint tool to check the application code The presentation can be downloaded here: https://dmpsy.club/references/NextJS/lesson_014_improving_accessibility_rus.pdf GitHub Link: https://github.com/DmitryMakar/nextjs-lesson-014.git Donate the author: https://www.donationalerts.com/r/dmitrymakКурс NextJS. 13. Обработка ошибок / Handling Errors Разбираем, как следует обрабатывать ошибки, используя операторы try/catch JavaScript и API Next.js для работы с нештатными ситуациями в приложении Next.js Источником серьезных ошибок и аварий являются критичные операции. В нашем случае, это CRUD-транзакции в БД. Подобные операции следует заключать в блок try/catch ровно так же, как это принято в классическом JavaScript и многих ЯВУ Сгенерированная блоком try/catch ошибка, при этом, не должна нарушать работу веб-интерфейса приложения: пользователь должен получить внятное пояснение о возникшей нештатной ситуации и рекомендации по дальнейшим действиям Указанный механизм реализован в Next.js двумя способами: 1. С помощью файла error.tsx (для обработки всех ошибок, возникающих на данном сегменте маршрута) 2. С помощью функции notFound() для обработки ошибки 404, возникающей при обращении к несуществующему ресурсу, например, при попытке отредактировать отсутствующую запись в БД Презентацию можно скачать здесь: https://dmpsy.club/references/NextJS/lesson_013_handling_errors_rus.pdf Ссылка на GitHub: https://github.com/DmitryMakar/nextjs-lesson-013.git Поддержать автора: https://www.donationalerts.com/r/dmitrymak Хронометраж 0:00:00 Введение 0:00:25 Целевая аудитория 0:00:39 План работы 0:02:51 Обработка ошибок в Next.js. Постановка задачи 0:05:07 Добавляем блоки try/catch в серверные действия 0:12:21 Симулируем ошибку при попытке удаления инвойса 0:19:23 Обрабатываем ошибки с помощью файла error.tsx 0:26:28 Обрабатываем ошибку 404 с помощью функции notFound 0:36:41 Домашнее задание 0:38:15 Подведем итоги 0:38:41 Полезные ссылки для дальнейшего чтения 0:39:18 Заключительные замечания Timing 0:00:00 Introduction 0:00:25 Target audience 0:00:39 Agenda 0:02:51 Handling errors in Next.js. Statement of the problem 0:05:07 Adding try/catch to Server Actions 0:12:21 Simulating an invoice deletion error 0:19:23 Handling all errors with error.tsx 0:26:28 Handling 404 errors with the notFound function 0:36:41 Homework 0:38:15 Summary 0:38:41 Further reading 0:39:18 Closing comments Let's look at how to handle errors using JavaScript try/catch operators and the Next.js API to handle abnormal situations in a Next.js application The source of serious errors and crashes are critical operations. In our case, these are CRUD transactions in the database. Such operations should be enclosed in a try/catch block in exactly the same way as in classic JavaScript and many other programming languages The error generated by the try/catch block, however, should not disrupt the operation of the application's web interface: the user should receive a clear explanation of the abnormal situation that has arisen and recommendations for further actions This mechanism is implemented in Next.js in two ways: 1. Using the error.tsx file (to handle all errors that occur on this route segment) 2. Using the notFound() function to handle the 404 error that occurs when accessing a non-existent resource, for example, when trying to edit a missing record in the database The presentation can be downloaded here: https://dmpsy.club/references/NextJS/lesson_013_handling_errors_rus.pdf GitHub Link: https://github.com/DmitryMakar/nextjs-lesson-013.git Donate the author: https://www.donationalerts.com/r/dmitrymakКурс NextJS. 12. Изменение данных в БД / Mutating Data 1. Используем серверные действия (Server Actions) для создания, изменения и удаления данных в БД на примере инвойсов 2. Обсуждаем особенности передачи данных из формы на сервер адресату - серверной функции 3. Доопределяем функцию SA с помощью bind и пересылаем с ней дополнительные переменные (например, Invoice ID), не содержащиеся в явном виде в полях формы и не попадающие поэтому в объект formData - стандартный входной параметр SA 4. Применяем revalidatePath для очистки и обновления кэша и redirect для безусловного перенаправления пользователя на другую страницу 5. Проверяем и преобразовываем типы данных с помощью структур пакета zod 6. Создаем и используем динамические маршруты Презентацию можно скачать здесь: https://dmpsy.club/references/NextJS/lesson_012_mutating_data_rus.pdf Ссылка на GitHub: https://github.com/DmitryMakar/nextjs-lesson-012.git Поддержать автора: https://www.donationalerts.com/r/dmitrymak Хронометраж 0:00:00 Введение 0:00:30 Целевая аудитория 0:00:54 План работы 0:03:33 Серверные действия по изменению данных в БД. Постановка задачи 0:05:30 Вызов server action из компонента form. Обновление кэша 0:08:40 Создание инвойса. Последовательность реализации 0:10:15 Создание инвойса. Страница генерации счета в сегменте create 0:16:22 Создание инвойса. Создаем SA (createInvoice) и извлекаем данные 0:23:45 Создание инвойса. Проверяем и преобразуем данные для БД 0:29:29 Создание инвойса. Загружаем счет в БД 0:34:23 Создание инвойса. Очищаем кэш и возвращаемся к странице инвойсов 0:37:50 Схема взаимодействия компонентов при создании инвойса 0:39:40 Редактирование инвойса. Последовательность реализации 0:42:26 Редактирование инвойса. Создаем динамический сегмент маршрута 0:45:16 Редактирование инвойса. Делаем запрос в БД по Invoice id и заполняем форму 0:52:05 Редактирование инвойса. Передаем UUID инвойса в SA updateInvoice 0:55:57 Редактирование инвойса. Добавляем функцию SA updateInvoice 1:03:40 Схема взаимодействия компонентов при изменении инвойса 1:06:00 Удаление инвойса 1:13:50 Схема взаимодействия компонентов при удалении инвойса 1:14:55 Демонстрация работы в production 1:18:00 Подведем итоги 1:19:21 Заключительные замечания Timing 0:00:00 Introduction 0:00:30 Target audience 0:00:54 Agenda 0:03:33 Server actions (SA) to mutate DB data. Statement of the problem 0:05:30 Invoking SA from an HTML form. Revalidating cache 0:08:40 Creating an invoice. Implementation steps 0:10:15 Creating an invoice. Invoice generation page in the create route segment 0:16:22 Creating an invoice. Code the createInvoice SA and extract data 0:23:45 Creating an invoice. Validate and prepare the data to be inserted into DB 0:29:29 Creating an invoice. Commit the invoice to DB 0:34:23 Creating an invoice. Revalidate cache and get back to invoices 0:37:50 The diagram of component interaction when creating an invoice 0:39:40 Updating an invoice. Implementation steps 0:42:26 Updating an invoice. Create a dynamic route segment with the Invoice id 0:45:16 Updating an invoice. Fetch the invoice by its id and populate the form 0:52:05 Updating an invoice. Pass the Invoice id to the updateInvoice SA 0:55:57 Updating an invoice. Implementing the updateInvoice SA function 1:03:40 The diagram of component interaction when updating an invoice 1:06:00 Deleting an invoice 1:13:50 The diagram of component interaction when deleting an invoice 1:14:55 Production build demo 1:18:00 Summary 1:19:21 Closing comments 1. Using server actions to create, change and delete DB data exemplified by invoices 2. Discussing the specifics of transferring data from a form to the server addressee, the server action function 3. Extending the SA function using bind and sending additional variables with it (for example, Invoice ID) that are not explicitly contained in the form fields and therefore falls no into the formData object, the standard SA input parameter 4. Using revalidatePath to clear the cache and unconditionally redirect the user to another page 5. Validating and converting data types using zod package structures 6. Creating and using dynamic routes The presentation can be downloaded here: https://dmpsy.club/references/NextJS/lesson_012_mutating_data_rus.pdf GitHub Link: https://github.com/DmitryMakar/nextjs-lesson-012.git Donate the author: https://www.donationalerts.com/r/dmitrymakКурс NextJS. 11. Поиск и постраничный вывод / Search & Pagination 1. Используем API Next.js для редактирования строки URL в клиентских (client-side) компонентах: хуки useSearchParams, usePathname и useRouter 2. Реализуем поиск и постраничный вывод (pagination) с пересылкой параметров поиска в (запросе GET) URL в строке браузера 3. Извлекаем параметры URL из SearchParams и обновляем (server-side) таблицу инвойсов по результатам соответствующего запроса в БД 4. Решаем проблему отсутствия обновления данных в статических страницах применением динамического рендеринга к маршруту /dashboard Презентацию можно скачать здесь: https://dmpsy.club/references/NextJS/lesson_011_search_and_pagination_rus.pdf Ссылка на GitHub: https://github.com/DmitryMakar/nextjs-lesson-011.git Поддержать автора: https://www.donationalerts.com/r/dmitrymak Хронометраж 0:00:00 Введение 0:02:05 Целевая аудитория 0:02:26 План работы 0:05:56 Реализация поиска и постраничного вывода в Next.js. Постановка задачи 0:08:58 Преимущества использования параметров поиска URL 0:10:39 Заготовка страницы Invoices 0:13:01 Используем клиентские хуки Next.js (useSearchParams, usePathname, useRouter) 0:12:42 Поиск. Последовательность реализации 0:15:37 Поиск. Захватываем пользовательские данные 0:18:48 Поиск. Добавляем параметр поиска (query) в URL 0:24:15 Поиск. Синхронизируем URL и input 0:28:34 Поиск. Обновляем таблицу инвойсов 0:34:12 Поиск. Решаем проблему излишних запросов к БД (Excessive Bouncing) 0:39:29 Постраничный вывод 0:52:20 Схема взаимодействия компонентов страницы инвойсов 0:58:21 Решаем проблему статической компиляции Dashboard 1:11:42 Статический, динамический рендеринг и PPR 1:16:57 Подведем итоги 1:18:24 Заключительные замечания Timing 0:00:00 Introduction 0:02:05 Target audience 0:02:26 Agenda 0:05:56 Search & Pagination in Next.js. Statement of the problem 0:08:58 Benefits of using URL search parameters 0:10:39 Invoices page starting code 0:13:01 Next.js client-side API hooks (useSearchParams, usePathname, useRouter) 0:12:42 Search. Implementation steps 0:15:37 Search. Capturing the user’s input 0:18:48 Search. Adding the query URL param 0:24:15 Search. Synchronizing URL and input 0:28:34 Search. Updating the invoice table 0:34:12 Search. Excessive bouncing issue 0:39:29 Pagination 0:52:20 Component interaction diagram 0:58:21 Dashboard static compilation issue 1:11:42 Static, dynamic rendering and PPR 1:16:57 Summary 1:18:24 Closing comments 1. Using the Next.js API to edit the URL string in client-side components, the useSearchParams, usePathname, and useRouter hooks 2. Implementing search and pagination with transferring search parameters in the invoice page URL 3. Extracting URL parameters (query, page) from SearchParams and updating the (server-side) invoice table based on the corresponding DB query results 4. Fixing the issue of missing DB data updates in static pages by applying dynamic rendering to the /dashboard route The presentation can be downloaded here: https://dmpsy.club/references/NextJS/lesson_011_search_and_pagination_rus.pdf GitHub Link: https://github.com/DmitryMakar/nextjs-lesson-011.git Donate the author: https://www.donationalerts.com/r/dmitrymakКурс NextJS. 9. Потоковый вывод страниц и компонентов / Streaming Pages & Components Изучаем потоковый вывод и варианты его применения в NextJS: реализуем его средствами loading.tsx (применительно к целой странице) и (для отдельного компонента). Используем "скелеты загрузки" (loading skeletons) в качестве заставок. Применяем группы маршрутов (route groups) для ограничения области действия loading.tsx. Обсуждаем, где следует размещать границы Презентацию можно скачать здесь: https://dmpsy.club/references/NextJS/lesson_009_streaming_rus.pdf Ссылка на GitHub: https://github.com/DmitryMakar/nextjs-lesson-009.git Поддержать автора: https://www.donationalerts.com/r/dmitrymak Хронометраж 0:00:00 Введение 0:00:16 Целевая аудитория 0:00:41 План работы 0:03:39 Потоковый вывод страниц и компонентов в NextJS. Постановка задачи 0:05:06 Два способа реализации потокового вывода в NextJS 0:06:34 Потоковый вывод страницы панели мониторинга (Dashboard) 0:06:49 Запуск рабочей среды проекта 0:12:42 Потоковый вывод страницы Dashboard (продолжение) 0:17:42 Вывод заставки (loading skeleton) страницы Dashboard 0:21:24 Ограничиваем область действия заставки с помощью route group 0:25:46 Потоковый вывод компонентов оборачиванием их в 0:27:52 Потоковый вывод компонента 0:35:37 Потоковый вывод компонента 0:39:27 Эффективная группировка и вывод однородных компонентов 0:40:35 Потоковый вывод компонента 0:45:10 Останов и очистка рабочей среды проекта 0:50:03 Оптимальное расположение границ 0:52:40 Подведем итоги 0:54:12 Заключительные замечания Timing 0:00:00 Introduction 0:00:16 Target audience 0:00:41 Agenda 0:03:39 What is streaming in NextJS. Statement of the problem 0:05:06 Two ways of NextJS streaming implementation 0:06:34 Streaming the Dashboard page 0:06:49 Launching a project testbed 0:12:42 Streaming the Dashboard page (cont.) 0:17:42 Streaming a loading skeleton of the Dashboard page 0:21:24 Restricting the loading skeleton scope with a route group 0:25:46 Streaming components with the wrapper 0:27:52 Streaming the component 0:35:37 Streaming the component 0:39:27 Efficient grouping and streaming of similar components 0:40:35 Streaming the component 0:45:10 Stopping and removing the project testbed 0:50:03 Optimal placement of boundaries 0:52:40 Summary 0:54:12 Closing comments We study NextJS streaming and its use cases: implementing it using loading.tsx for the entire page and for a single component. We apply loading skeletons as placeholders as well as route groups to limit the loading.tsx scope. We also discuss best practices of boundaries placement The presentation can be downloaded here: https://dmpsy.club/references/NextJS/lesson_009_streaming_rus.pdf GitHub Link: https://github.com/DmitryMakar/nextjs-lesson-009.git Donate the author: https://www.donationalerts.com/r/dmitrymakКурс NextJS. 8d. Эскиз контейнеризации и развертывания / Learning NextJS. Containerization & Deployment at a Glance Обсуждаем 2-контейнерную архитектуру приложения NextJS (Web-приложение и его схема БД). Редактируем dockerfile приложения, настраиваем и запускаем тестовую среду из трех Docker-контейнеров: NextJS (nexxt_container), PostgreSQL (postgres_container) и pgAdmin (pgadmin_container) Презентацию можно скачать здесь: https://dmpsy.club/references/NextJS/lesson_008d_containerization_and_deployment_rus.pdf Материалы лекции: https://dmpsy.club/references/NextJS/lesson_008d.tar Поддержать автора: https://www.donationalerts.com/r/dmitrymak Хронометраж 0:00:00 Введение 0:00:55 Целевая аудитория 0:01:17 План работы 0:03:42 Контейнеризация и развертывание приложения NextJS. Постановка задачи 0:06:02 Подготовительные шаги 0:07:05 Создаем образ standalone-приложения (без коннекта к БД) 0:08:00 Запускаем контейнер с приложением nexxtapp 0:09:02 Завершаем работу с приложением nexxtapp 0:10:13 Демонстрация создания образа и работы с nexxtapp 0:20:03 Результаты контейнеризации standalone-приложения nexxtapp 0:23:58 Целевая архитектура: отдельные контейнеры для приложения и БД 0:25:54 Стенд для приложения NextJS с коннектом к БД PostgreSQL и pgAdmin 0:28:36 Диаграмма развертывания стенда (deployment diagram) 0:29:48 Разворачиваем стенд для приложения NextJS 0:32:24 Работаем с контейнерами: NextJS (nexxt_container) 0:33:41 Работаем с контейнерами: PostgreSQL (postgres_container) 0:34:18 Работаем с контейнерами: pgAdmin (pgadmin_container) 0:35:11 Завершаем работу со стендом NextJS + PostgreSQL + pgAdmin 0:36:20 Демонстрация работы стенда 1:05:46 Кратко о текущей конфигурации docker-compose.yaml 1:09:05 Диаграмма контекста (C1) стенда NextJS + PostgreSQL + pgAdmin 1:09:55 Диаграмма контейнеров (C2) стенда NextJS + PostgreSQL + pgAdmin 1:10:30 Диаграмма компонента (C3) стенда NextJS + PostgreSQL + pgAdmin 1:11:38 Диаграмма развертывания стенда NextJS + PostgreSQL + pgAdmin 1:12:34 Развитие текущей реализации стенда 1:16:01 Подведем итоги 1:17:45 Заключительные замечания Timing 0:00:00 Introduction 0:00:55 Target audience 0:01:17 Agenda 0:03:42 Containerizing and deploying a NextJS application. Problem statement 0:06:02 Preliminary steps 0:07:05 Create a standalone application image (without a DB connection) 0:08:00 Launch a container with the nexxtapp application 0:09:02 Stop and remove the nexxtapp application 0:10:13 Live demo of the nexxtapp operations 0:20:03 Summary of the standalone app containerization 0:23:58 Target architecture: separate containers for the application and the database 0:25:54 Testbed for the NextJS application with PostgreSQL DB and pgAdmin 0:28:36 Testbed deployment diagram 0:29:48 Deploying the testbed for the NextJS application 0:32:24 Testing containers: NextJS (nexxt_container) 0:33:41 Testing containers: PostgreSQL (postgres_container) 0:34:18 Testing containers: pgAdmin (pgadmin_container) 0:35:11 Stopping and removing the NextJS + PostgreSQL + pgAdmin testbed 0:36:20 Live demo of the testbed 1:05:46 First glance at the docker-compose.yaml configuration 1:09:05 Context diagram (C1) of the NextJS + PostgreSQL + pgAdmin testbed 1:09:55 Container diagram (C2) of the NextJS + PostgreSQL + pgAdmin testbed 1:10:30 Component diagram (C3) of the NextJS + PostgreSQL + pgAdmin testbed 1:11:38 Deployment diagram of the NextJS + PostgreSQL + pgAdmin testbed 1:12:34 Testbed improvement tasks 1:16:01 Summary 1:17:45 Closing comments Discussing the 2-container architecture of the NextJS application (Web application and its DB schema). Editing the application's dockerfile, setting up and running a test environment of three Docker containers: NextJS (nexxt_container), PostgreSQL (postgres_container), and pgAdmin (pgadmin_container) The presentation can be downloaded here: https://dmpsy.club/references/NextJS/lesson_008d_containerization_and_deployment_rus.pdf Lecture files: https://dmpsy.club/references/NextJS/lesson_008d.tar Donate the author: https://www.donationalerts.com/r/dmitrymak