Учебный Центр ФОРС
IT и технологии
Курсы и сертификация по PostgreSQL, Oracle, Astra Linux, РЕД ОС, DevOps и другим направлениям. УЦ ФОРС — ваш путь к профессиональному росту в IT 📍 г. Москва, ул. Авиамоторная, дом 8, стр. 12, 5 эт.
Загружаем канал…
Сайт использует необходимые cookie. Яндекс Метрика и пиксель VK Рекламы включатся, только если вы нажмёте «Хорошо». Политика конфиденциальности
IT и технологии
Курсы и сертификация по PostgreSQL, Oracle, Astra Linux, РЕД ОС, DevOps и другим направлениям. УЦ ФОРС — ваш путь к профессиональному росту в IT 📍 г. Москва, ул. Авиамоторная, дом 8, стр. 12, 5 эт.
⚡️ Специальные цены на обучение в УКЦ ФОРС: Администрирование PostgreSQL 16. Базовый курс. 5-7 августа (скидка - 25%) Стоимость 24 000, по акции 18 000. Программа курса Администрирование PostgreSQL 16. Настройка и мониторинг. 10-13 августа (скидка - 25%) Стоимость 32 000, по акции 24 000. Программа курса Администрирование PostgreSQL 16. Резервное копирование и репликация. 22-23 июня (скидка - 25%) Стоимость 16 000, по акции 12 000. Программа курса PostgreSQL 16. Оптимизация запросов. 06-08 июля (скидка - 25%) Стоимость 30 000, по акции 22 500. Программа курса Разработка серверной части приложений PostgreSQL 16. Базовый курс. 23-26 июня (скидка - 30%) Стоимость 40 000, по акции 28 000. Программа курса Разработка серверной части приложений PostgreSQL 16. Расширенный курс. 07-10 сентябр…
Читать целикомГотовы прокачать навыки в работе с YDB на реальных кейсах? 23 июня стартует наш новый практический курс «Администрирование кластера YDB». Это не просто сухая теория, а практическое обучение на реальных примерах. Мы собрали сценарии, максимально приближенные к «боевым», чтобы вы научились не просто настраивать систему, но и уверенно действовать в нестандартных ситуациях. Что будет на курсе: 🔹Минимум лекций, максимум практики: под руководством нашего эксперта пройдёте путь от первой настройки до глубокой диагностики. 🔹Реальные задачи: будете обновлять версии, устранять сбои, масштабировать кластер и настраивать мониторинг. 🔹Результат: вы получите сертификат учебного центра ФОРС, подтверждающий практический опыт по администрированию кластера YDB. Для кого: курс будет полезе…
Читать целиком🛠️ 📌 Июнь в Учебном центре ФОРС: PostgreSQL, Linux, Oracle, безопасность, Ansible — и многое другое В июне собрали насыщенный репертуар курсов для администраторов, разработчиков, аналитиков и специалистов по инфраструктуре. Основные направления месяца: 🐘 PostgreSQL Базовое и расширенное администрирование, настройка и мониторинг, оптимизация запросов, резервное копирование и репликация, разработка серверной части приложений, миграция с Oracle на Postgres, кластерные технологии и курс для аналитиков и разработчиков. 🛡 Безопасность Курс по безопасной разработке программного обеспечения — для тех, кто хочет учитывать требования безопасности уже на этапе проектирования и написания кода. ⚙️ Ansible Полное погружение в автоматизацию с использованием Ansible — практический курс для специа…
Читать целикомВ двух отчётах одна и та же метрика показывает разные цифры. SQL-запросы написаны без ошибок. Данные берутся из одной системы. Но в одном отчёте «активный клиент» — это тот, кто сделал заказ за 30 дней, а в другом — тот, кто просто заходил в сервис. Формально оба отчёта могут быть корректными. Проблема в другом: команда не договорилась о смысле метрики. Что стоит проверить: — как именно определяется показатель; — какие фильтры применяются до расчёта; — какие JOIN могут размножать строки; — где учитываются исключения и статусы; — одинаково ли понимают метрику аналитики, BI, продукт и руководители; — есть ли единый источник описания метрик. Типичная ошибка — считать, что достаточно «подтянуть SQL». В корпоративной аналитике важны не только запросы, но и правила интерпретации данных. Ес…
Читать целикомБаза PostgreSQL растёт быстрее, чем ожидалось, а место на диске заканчивается. Первая мысль — расширить диск. Иногда без этого не обойтись. Но сначала стоит понять, что именно растёт: полезные данные, индексы, TOAST, bloat или временные файлы. Что проверить: — какие таблицы и индексы занимают больше всего места; — не растут ли индексы быстрее самих таблиц; — есть ли большие значения, часть хранения которых может приходиться на TOAST; — не накопились ли мёртвые строки после частых UPDATE и DELETE; — успевает ли autovacuum обрабатывать активно изменяемые таблицы; — нет ли долгих транзакций или сессий idle in transaction, которые мешают очистке старых версий строк; — не создают ли тяжёлые запросы много временных файлов; — изменился ли характер нагрузки: больше обновлений, удалений, массовы…
Читать целикомCI/CD уже внедрили, но релизы всё ещё зависят от ручных действий. Сборка проходит в pipeline. Часть тестов автоматизирована. Артефакты собираются. Но перед выкладкой команда всё равно уточняет в чате: какие переменные обновить, кто проверяет миграции, кто смотрит логи, кто подтверждает успех и что делать при сбое. В такой ситуации проблема не обязательно в конкретном инструменте. Часто процесс поставки просто не собран в общую практику. Признаки, что команде нужно выравнивать подход: — релиз зависит от нескольких опытных специалистов; — порядок действий не описан или регулярно меняется; — rollback не отработан как понятный сценарий; — pipeline покрывает только часть процесса; — DevOps, разработка и эксплуатация по-разному понимают зоны ответственности; — новые участники долго включаютс…
Читать целикомСообщение пришло повторно — бонусы начислились дважды Ночью очередь доставила событие оплаты, а утром в заказе оказалось два одинаковых начисления бонусов. Повторной доставки никто не ждал, но побочное действие сработало второй раз. Вымышленный сценарий. RabbitMQ, AMQP 0-9-1, ручные подтверждения; очередь сохраняется при отключении потребителя. Здесь обработчик получает сообщение order.paid и начисляет бонусы по заказу: { "type": "order.paid", "order_id": 51234, "amount": 1500 } Обработчик зафиксировал начисление в базе и попытался отправить ручной ack. Соединение с брокером закрылось прежде, чем брокер получил подтверждение. Неподтверждённое сообщение вернулось в очередь, и брокер доставил его повторно — возможно, другому потребителю. Незащищённый обработчик выполнился снова и начисли…
Читать целикомТом подключён, но данные не сохраняются. Куда пишет контейнер? Пересоздали контейнер приложения — пользовательские данные пропали, а внутри каталога тома пусто. Разберёмся на вымышленном стенде: один контейнер, один том, один путь записи. Артефакт. В compose.yaml том подключён к каталогу /var/lib/app: services: app: image: registry.example.com/stand/app:1.0 volumes: - app-data:/var/lib/app volumes: app-data: При этом приложение настроено писать в другое место. В его конфигурации задан каталог данных — параметр storage.dataDir (имя вымышленное, это не стандарт Docker, а настройка конкретного приложения): storage: dataDir: /opt/app/data Восстановим картину до пересоздания. Команды только читают каталоги; для них нужны работающий сервис app, sh и ls внутри Linux-конт…
Читать целикомСвободные блоки есть, а сервису писать некуда Сервис работает под непривилегированным пользователем и получает ошибку записи. GNU df показывает Avail = 0, хотя полный счётчик свободных блоков ещё положительный. На ext4 такую разницу может объяснять резерв блоков. Проверка состоит из двух шагов. 1. Найдите файловую систему реального пути записи. Уточните путь в конфигурации приложения и сопоставьте его с монтированием. Ниже — вымышленный пример; для своего сервиса подставьте фактические значения: systemctl cat myapp.service findmnt -T /var/lib/myapp # TARGET SOURCE FSTYPE OPTIONS # / /dev/mapper/vg0-applv ext4 rw,relatime Unit-файл помогает разобраться в запуске сервиса, но путь записи может находиться в конфигурации самого приложения. Если сервис изолирован, отдельно проверьте,…
Читать целикомФункция с SECURITY DEFINER сделала не то, что ожидали Функция для отчёта доступна, но сумма получена из другой таблицы. На ревью проверьте, какой объект она нашла по имени. SECURITY DEFINER означает выполнение с правами владельца функции. В показанном SQL-теле AS $$…$$ неквалифицированное имя orders разрешается по действующему search_path при выполнении. Учебный пример для PostgreSQL 18: две схемы с таблицами orders и одна функция. Все объекты создаёт и вызывает одна роль в отдельной учебной базе, где этих схем ещё нет. CREATE SCHEMA sales; CREATE TABLE sales.orders (id bigint, amount numeric); INSERT INTO sales.orders VALUES (1, 1000); CREATE SCHEMA staging; CREATE TABLE staging.orders (id bigint, amount numeric); INSERT INTO staging.orders VALUES (1, 5); SET search_path = sales, pg…
Читать целикомИИ прочитал документ. Кто разрешил ему создать заявку? Сотрудник просит найти порядок оформления доступа. Помощник читает документ с посторонней инструкцией оформить заявку на изменение прав и пытается выбрать инструмент создания заявки. Сотрудник просил справку. Это вымышленная учебная ситуация. Косвенная prompt injection действует через читаемый материал: он может повлиять на выбор модели, но не должен давать ей полномочия. Развилка: подготовить черновик для обсуждения или создать запись в рабочей системе. Для этого сценария руководитель задаёт три ограничения: 1. Разрешённые материалы, данные и поля определяет приложение. Помощник может подготовить черновик. 2. Создание требует подтверждения конкретного содержимого уполномоченным сотрудником: системы, прав, получателя и основания. …
Читать целикомРазрешение просрочено, документ остался: чего не гарантирует TTL? TTL в MongoDB удаляет данные в фоне. Документ может ещё существовать после истечения срока. Поиск по ID поэтому не доказывает, что разрешение действует. Учебный пример для MongoDB 8.0: обычная отдельная коллекция permits_demo, чтение с primary. Вымышленный документ: { _id: "demo-permit", expiresAt: ISODate("2026-10-08T10:00:00Z") } expiresAt должен быть BSON Date. Индекс учебной коллекции: db.permits_demo.createIndex( { expiresAt: 1 }, { expireAfterSeconds: 0 } ); Проверка в 10:01 UTC: const now = ISODate("2026-10-08T10:01:00Z"); db.permits_demo.findOne({ _id: "demo-permit" }); // Ещё может вернуть документ. db.permits_demo.findOne({ _id: "demo-permit", expiresAt: { $gt: now } }); // Для этого документа ожидае…
Читать целиком