Программирование {BookFlow}
16.2K subscribers
1.58K photos
470 videos
145 files
2.1K links
Мы публикуем лекции и книги по программированию, видеоуроки, доклады с IT конференций, новости технологий.

Группа в https://vk.com/bookflow.

По всем вопросам @evgenycarter

РКН https://clck.ru/3KoAbH
Download Telegram
В чём разница между аутентификацией на сессиях и JWT?

Многие разработчики не знают об этом различии, хотя оно критически важно.

Большинство веб-приложений используют один из двух подходов к аутентификации:
сессии (где состояние хранится на сервере) или JWT (где состояние передаётся вместе с клиентом).

1. Аутентификация на основе сессий

Когда пользователь входит в систему, бэкенд генерирует случайный session ID, сохраняет его в кэше или базе данных и устанавливает этот ID как HttpOnly cookie в браузере. При каждом запросе браузер отправляет cookie, сервер находит соответствующую запись и восстанавливает пользовательский контекст.

Такой подход:
• сохраняет чувствительные данные на сервере;
• позволяет мгновенно завершить сессию удалением записи.

Преимущества сессий:
🔹 Мгновенная деактивация доступа (“выйти отовсюду”) — одной строкой: просто удалить запись из Redis или SQL.
🔹 Секреты никогда не покидают сервер, что снижает риск утечки.
🔹 Отлично подходит для малых и средних систем, где кэш — не узкое место.

Но: при горизонтальном масштабировании понадобятся «липкие» сессии или реплицированный кэш, что добавляет задержки и усложняет инфраструктуру.

2. Аутентификация с помощью JWT (JSON Web Token)

После входа сервер подписывает JWT, содержащий:
• заголовок (например, alg, typ),
• полезную нагрузку (claims — sub, role и т.д.),
• цифровую подпись.

JWT — это просто base64-строка (не шифрованная): любой может прочитать данные, но подделать их может только владелец секрета. Сервер не хранит состояние — любой узел может локально проверить подпись и доверять данным.

Преимущества JWT:
🔸 Беспамятный (stateless): не требует общего хранилища, подходит для микросервисов и edge-нод.
🔸 Удобен для SPA и мобильных приложений, напрямую работающих с бэкендами.
🔸 Лёгкий: помещается в заголовок Authorization или cookie.

Минус: JWT нельзя отозвать после выдачи — он действителен до истечения срока, так что «экстренный выход» или блокировка аккаунта требуют дополнительной логики.

Вывод:
• Если главное — возможность немедленно отозвать доступ, выбирай сессии.
• Если нужна масштабируемость без состояния, выбирай JWT, но помни, что токены нельзя «забрать обратно» после их выдачи.

👉 @Bookflow
👍101
🚀 Как улучшить производительность API?
Оптимизация API — ключ к быстрой и стабильной работе приложений. Вот 5 проверенных техник:

1️⃣ Пагинация (Pagination)
Разбиваем большой объем данных на страницы.
🔹 Уменьшает нагрузку
🔹 Позволяет обрабатывать большие выборки

2️⃣ Асинхронное логирование (Async Logging)
Сохраняем логи в буфер, а затем на диск.
🔹 Меньше задержек
🔹 Выше пропускная способность

3️⃣ Кэширование (Caching)
Часто используемые данные храним в кэше, а не в БД.
🔹 Быстрый доступ
🔹 Меньше запросов к базе данных

4️⃣ Сжатие данных (Payload Compression)
Сжимаем запросы и ответы.
🔹 Уменьшение объема трафика
🔹 Быстрая загрузка/выгрузка

5️⃣ Пул соединений (Connection Pool)
Повторно используем открытые соединения с БД.
🔹 Снижение накладных расходов
🔹 Повышение эффективности

📌 Используй эти подходы, чтобы ускорить свой API и улучшить пользовательский опыт.

👉 @Bookflow
🔥6👍52
⚠️ До старта курса «Administrator Linux. Basic» осталось совсем немного. Набор закрывается 27 июня.

👉 Успейте пройти вступительный тест и получить запись двух вебинаров бесплатно:
— «Что нужно знать, когда переходишь с Windows на Linux. Базовые понятия Linux, работа в консоли с базовыми командами»
— «Вся правда о рынке труда или как быть востребованным в современных реалиях»

💪 Курс построен так, чтобы даже без опыта в Linux вы быстро вошли в профессию. В программе только актуальное: Bash, сети, логика работы ОС, файловые системы и автоматизация.

👉 Пройдите бесплатное вступительное тестирование сегодня и получите запись двух вебинаров: https://vk.cc/cN8W0l

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
1
This media is not supported in your browser
VIEW IN TELEGRAM
🚀 Google представляет Gemini CLI – ваш агент‑ассистент в терминале

Сегодня, 25 июня 2025 года, Google выпустила в превью-режиме открытый исходный код инструмента Gemini CLI — AI‑агента, который интегрируется прямо в терминал и работает от модели Gemini 2.5 Pro.

💡Основное:
🔘Мощная модель Gemini 2.5 Pro с контекстом до 1 000 000 токенов
🔘Бесплатная лицензия Gemini Code Assist (личный аккаунт Google)
🔘Лимит — 60 запросов/мин и 1 000/день

⚙️ Возможности:
🔘Понимание, генерация и правка кода
🔘Выполнение команд в терминале (ReAct loop)
🔘Поиск в Google, подключение через MCP, сценарии, управление файлами
🔘Создание изображений и видео через Veo и Imagen AI прямо из терминала

🌐 Открытый и расширяемый:
🔘Лицензия Apache 2.0
🔘Код доступен на GitHub — можно проверять, улучшать и интегрировать в свои системы

🎯 Зачем это нужно:
🔘Улучшает опыт разработчика — теперь “домом” становится терминал с AI‑помощником
🔘Идеален для кросс‑платформенных сценариев, CI/CD и автоматизации задач
🔘Google явно пытается опередить аналогичные инструменты вроде Anthropic Claude Code или GitHub Copilot за счёт бесплатного и открытого подхода


📥 Как начать:
1. Перейдите в репозиторий на GitHub
2. Установите через команду
3. Авторизуйтесь через личный Google‑аккаунт — и получите полную функциональность

https://blog.google/technology/developers/introducing-gemini-cli-open-source-ai-agent/

👉 @Bookflow
Please open Telegram to view this post
VIEW IN TELEGRAM
👍63🔥1
Открытая трансляция главного зала! Лучшие эксперты об управлении в IT и не только!

26 и 27 июня на Saint TeamLead Conf 2025 при поддержке Garage Eight пройдет бесплатная онлайн-трансляция главного зала конференции. Вас ждут инсайты от лучших экспертов в области управления командами.

Среди спикеров:

1) Андрей Смирнов (Викенд в IT) с докладом «Как нанимать, чтобы потом не пришлось увольнять»

2) Евгений Антонов (Yandex Infrastructure) с докладом «Тимлид: есть ли свет в конце тоннеля?»

3) Александр Бондаренко (Garage Eight) с докладом «Жизненный цикл процесса: как создавать, внедрять и завершать процессы в команде»

4) Павел Алферов (Школа управления СКОЛКОВО) с докладом «Принятие решений в условиях неопределенности. Инструменты для разных условий»

Подробности и расписание на сайте: https://tglink.io/da3bd6515978?erid=2W5zFK5k4Fr

#реклама
О рекламодателе
👍21🔥1💩1
5 нормальных форм баз данных, которые должен знать каждый разработчик

👉 @Bookflow
👍132🔥2🤮1
Соберите идеальный CI/CD-пайплайн за 8 шагов!

Ваш CI/CD — это фундамент быстрой и надежной разработки. Но как сделать его мощным, безопасным и быстрым без лишней сложности?

💫Мы подготовили чек-лист из 8 ключевых этапов — от MVP до оптимизации скорости и безопасности. С ним вы:

✔️Запустите рабочий пайплайн быстро и без лишнего перфекционизма.
✔️Добавите проверки и тесты, чтобы ловить ошибки до продакшена.
✔️Настроите ветвление и версионирование как в топовых командах.
✔️Оптимизируете хранение артефактов и ускорите сборки
✔️Закроете уязвимости и избавитесь от опасных практик вроде dind.
✔️Упростите поддержку с помощью шаблонов и DRY-принципов.
Сократите время деплоя и увеличите частоту релизов.
✔️Подготовитесь к масштабированию с GitOps и Kubernetes.

Используйте этот чек-лист во время сборки или запуска — и ваш CI/CD станет быстрее, безопаснее и удобнее!
➡️ Забирайте чек-лист в боте и начинайте прямо сейчас
1
Что такое DevSecOps?

DevSecOps возник как естественная эволюция практик DevOps с акцентом на интеграцию безопасности в процессы разработки и развертывания программного обеспечения. Термин "DevSecOps" объединяет практики разработки (Dev), безопасности (Sec) и операций (Ops), подчеркивая важность безопасности на протяжении всего жизненного цикла разработки программного обеспечения.

Диаграмма выше показывает важные концепции в DevSecOps:

1. Автоматизированные проверки безопасности
2. Непрерывный мониторинг
3. Автоматизация CI/CD
4. Инфраструктура как код (IaC)
5. Безопасность контейнеров
6. Управление секретами
7. Моделирование угроз
8. Интеграция с обеспечением качества (QA)
9. Сотрудничество и коммуникация
10. Управление уязвимостями

👉 @Bookflow
👍31
💡 Топ-15 строительных блоков системного дизайна, которые стоит знать:

1. Балансировщик нагрузки (Load Balancer): Распределяет входящий трафик между несколькими серверами, предотвращая перегрузку одного из них. Повышает доступность, устойчивость к сбоям и уменьшает время отклика.

2. API-шлюз (API Gateway): Единая точка входа для всех клиентских запросов в архитектуре микросервисов. Обрабатывает маршрутизацию, аутентификацию, ограничение частоты запросов и агрегацию данных.

3. DNS (Система доменных имён): Преобразует читаемые доменные имена в IP-адреса.

4. Кэш (Cache): Хранит часто запрашиваемые данные в памяти. Существенно снижает задержки и нагрузку на базу данных.

5. CDN (Сеть доставки контента): Доставляет статический контент (изображения, CSS, JS и т.п.) с серверов, расположенных ближе к пользователю. Снижает задержки и расход трафика, особенно на глобальном уровне.

6. База данных (Database): Основное хранилище данных. Может быть SQL или NoSQL в зависимости от требований. Поддерживает запросы, индексацию, транзакции и надёжность.

7. API (Программные интерфейсы): Определяют, как сервисы взаимодействуют между собой, часто через HTTP или gRPC. Обеспечивают модульность и чёткое разделение ответственности.

8. Микросервисы (Microservices): Разделяют монолитное приложение на независимо развёртываемые сервисы. Повышают гибкость, изоляцию ошибок и масштабируемость.

9. Ограничитель запросов (Rate Limiter): Контролирует количество запросов от пользователя или сервиса в заданный период. Защищает API от злоупотреблений и обеспечивает справедливость.

10. Объектное хранилище (Object Storage): Хранит большие бинарные объекты (изображения, видео, резервные копии) с высокой доступностью и надёжностью. Примеры — AWS S3, Google Cloud Storage и др.

11. Очередь сообщений (Message Queue): Обеспечивает асинхронную коммуникацию между сервисами через очередь (например, Kafka, RabbitMQ). Позволяет слабо связать компоненты и справляться с пиками нагрузки.

12. Шардинг (Sharding): Разделение больших объёмов данных между несколькими базами или таблицами. Обеспечивает масштабирование и повышение производительности запросов.

13. Репликация (Replication): Копирование данных между узлами базы данных. Повышает отказоустойчивость и производительность чтения.

14. Консистентное хеширование (Consistent Hashing): Метод распределения данных между узлами с минимальными изменениями при масштабировании. Часто используется в кэшировании и распределённых хранилищах.

15. Система мониторинга (Monitoring System): Отслеживает состояние системы, собирает логи и метрики, отправляет оповещения при сбоях или аномалиях. Критически важна для наблюдаемости, отладки и обеспечения доступности.

👉 @Bookflow
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥82
Антипаттерн: "Сначала MVP — потом нормальная схема"

Частая ошибка при старте проекта — отложить продумывание структуры базы «на потом»:

«Сейчас сделаем быстро MVP, а потом приведём БД в порядок».


И вот что часто происходит:
– MVP превращается в продакшн без переработки схемы.
– Костыли начинают множиться.
– Появляется технический долг, который сложно погасить: миграции становятся болью, связи — запутанными, а данные — ненадёжными.

Типичные симптомы:
— nullable-поля без нужды
— дублирование данных
— универсальные таблицы вроде entities или attributes
— "магические" значения в enum-полях
— отсутствие внешних ключей и индексов

Как избежать:

1. Минимум нормализации — с самого начала. Даже для MVP важно заложить понятную структуру.
2. Используй миграции сразу. Даже если это скрипт в папке migrations/, а не полноценный tool.
3. Заведи ER-диаграмму. Она не обязана быть идеальной, но уже поможет избежать хаоса.
4. Смотри в будущее. Планируешь рост? Подумай о расширяемости схемы.
5. Не стесняйся рефакторить. Лучше на раннем этапе изменить структуру, чем через год бояться сломать прод.

👉 MVP не должен значить "без архитектуры". Плохая схема — это замедление развития и боль на каждый новый фичереквест.

Сохрани, если строишь новый проект — пригодится.

#db

👉 @Bookflow
👍7💯1
Media is too big
VIEW IN TELEGRAM
Но что же такое коды Хэмминга?

Истоки коррекции ошибок.

👉 @Bookflow
👍6👎1
Как работают цифровые подписи?

👉 @Bookflow
6👍4
Новая вакансия! Стажёр, мечтающий построить карьеру в ИТ

📍 Локация: вся Россия и всемирная сеть Интернет
График: свободный
Опыт: необязателен, но желание и любопытство — строго необходимо.

📝 Задачи:
– листать свежие стажировки и откликаться по ссылкам,
– читать истории других стажёров,
– заглядывать на вебинары, хакатоны и карьерные мероприятия,
– задавать вопросы и учиться.

💡 От нас:
– возможность трудоустройства в атомной отрасли,
– шанс поработать под руководством топовых ИТ-экспертов
– сообщество таких же увлечённых молодых специалистов.

Подписывайтесь на ИТ-стажировки Росатома и следите за обновлениями.
3💩3
Media is too big
VIEW IN TELEGRAM
BIOS и UEFI / стадии UEFI / драйвера и протоколы

Сергей Пушкарёв — руководитель отдела разработки BIOS в YADRO.
Сергей начал работу с BIOS и UEFI ещё в университете и может очень много рассказать об этой области.

С Еленой Лепилкиной и Антоном Афанасьевым наш герой во всех подробностях разобрал, что происходит на самом низком уровне софта после того, как пользователь нажимает кнопку включения компьютера. Параллельно осветил разные подходы и типичные проблемы разработки в своей сфере, тонкости взаимодействия драйверов, а также разницу между BIOS и UEFI. А напоследок ответил, к чему приводят баги в BIOS и как стараются их избежать, если цена ошибки слишком высока.

0:00 - Тизер
1:12 - Представление Сергея Пушкарева
2:11 - Карьерный путь Сергея
4:50 - История развития BIOS и UEFI и разница между ними
11:28 - Достоинства UEFI
14:14 - Стадии работы UEFI
15:09 - Что работает до UEFI
18:25 - стадия SEC и режим Cache-Is-RAM
22:58 - стадия PEI
27:54 - переход в 64-битный режим
28:42 - PE-файлы,Terse Executable и вопросы производительности
30:46 - DXE стадия и запуск драйверов
33:02 - Протоколы для взаимодействия драйверов
37:58 - Эволюция спецификации: новые архитектуры, Device path для нового железа
40:31 - Загрузка ноутбука через Wi-Fi, разница драйверов Linux и UEFI
42:58 - Работа разработчиков BIOS
44:06 - Баги в UEFI
46:45 - Разработка UEFI под новую платформу
50:38 - Взаимодействие BIOS с BMC, Redfish
53:22 - Разработка драйвера на EDK2
59:55 - Нужен ли ассемблер разработчику BIOS
1:04:13 - Как поменялся процесс загрузки с приходом UEFI
1:05:51 - Взаимодействие BIOS и операционной системы
1:07:20 - Как UEFI работает на ARM
1:11:29 - VFR - DSL-язык для описания меню
1:14:23 - Активное использование Open-Source
1:16:22 - Рынок компаний разработчиков UEFI
1:20:33 - Разработка UEFI для системы, которой нет в железе
1:21:37 - Баги в релизах и процесс тестирования
1:25:59 - Дальнейшее развитие BIOS: ускорение работы, драйверы на Rust
1:35:07 - Заключение

источник

👉 @Bookflow
🔥83👍2
Media is too big
VIEW IN TELEGRAM
Ядро в операционной системе: Скрытая мощь, управляющая каждым компьютером!

Ядро в операционной системе — это её сердце, невидимый, но жизненно важный слой, который обеспечивает работу всего: от приложений до оборудования.

В этом разборе я объясню:
Что такое ядро на самом деле
Как оно управляет временем ЦП, памятью, файлами и «железом»
В чём разница между монолитным и микроядром
Почему инженеры до сих пор помешаны на проектировании ядер
Где ещё встречаются «ядра» — например, в GPU и квантовых вычислениях

Будь ты системным инженером или просто интересующимся, как запускается твой компьютер — это видео проведёт тебя по архитектуре и внутреннему устройству ядра с понятными аналогиями и наглядными примерами.


🕒 Таймкоды:
0:00 – Вступление: Почему ядра важнее, чем ты думаешь
0:44 – Что такое ядро? (Пользовательский режим vs режим ядра)
1:32 – 4 ключевые задачи ядра (процессы, память, файловый ввод-вывод, прерывания)
3:30 – Почему инженеры так одержимы проектированием ядер
3:48 – Монолитное и микроядро: объяснение компромиссов
5:00 – Особые ядра: GPU, ИИ и квантовые системы
5:50 – Заключение: Биение сердца каждого компьютера

источник

👉 @Bookflow
👍91
🚀 Как выстроить архитектуру компании так, чтобы поддержать стратегические цели и цифровую трансформацию?

Корпоративная архитектура — это не просто набор диаграмм, а система доменов: бизнес-процессы, IT-сервисы, данные, инфраструктура.

На открытом уроке 22 июля в 19:00 МСК эксперты из Otus и Sila Union расскажут, как выделять эти домены и моделировать их в архитектурном репозитории.

🔹 Аналитики и бизнес-архитекторы узнают, как связать бизнес-процессы с IT-ландшафтом.

🔹 CTO и тимлиды получат инструменты для обоснованных инвестиций в цифровизацию.

🔹 CPO и продуктовые лидеры научатся проектировать масштабируемые продукты и интегрировать их в архитектуру.

Мероприятие проходит в преддверии старта курса «Enterprise Architect». Все участники получат скидку на обучение!

👉 Зарегистрируйтесь и расширьте свои архитектурные навыки: https://vk.cc/cNJ7pn

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
👍2
Media is too big
VIEW IN TELEGRAM
7 обязательных стратегий для масштабирования вашей базы данных

Смотеть на Rutube 📺

👉 @Bookflow
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥54
Media is too big
VIEW IN TELEGRAM
DevOps vs SRE vs платформенная инженерия — развенчание крупных заблуждений

Смотеть на Rutube 📺

👉 @Bookflow
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍1
This media is not supported in your browser
VIEW IN TELEGRAM
Параллелизм против Конкурентности — это не одно и то же

➡️𝐂𝐨𝐧𝐜𝐮𝐫𝐫𝐞𝐧𝐜𝐲 (Конкурентность):
Конкурентность означает, что приложение продвигается сразу по нескольким задачам одновременно.

Хотя одно ядро процессора может выполнять только одну задачу за раз, оно достигает конкурентности за счёт быстрого переключения между задачами.

Пример: Слушать музыку и писать код одновременно. Процессор так быстро переключается между задачами, что создаётся ощущение одновременного выполнения.

Основная цель конкурентности — максимально загрузить CPU, минимизируя время простоя.


➡️𝐏𝐚𝐫𝐚𝐥𝐥𝐞𝐥𝐢𝐬𝐦 (Параллелизм):
Параллелизм означает одновременное выполнение нескольких задач.

Для достижения параллелизма задачи разбиваются на независимые подзадачи и обрабатываются одновременно на нескольких CPU, ядрах или GPU.

Пример: Обучение модели глубокого обучения путём разбиения датасета на батчи и параллельной обработки каждого батча на разных GPU.

Цель параллелизма — увеличение скорости обработки за счёт параллельного выполнения задач.


Они не исключают друг друга:

- Можно иметь конкурентность без параллелизма.
- Можно иметь параллелизм без конкурентности.
- А можно совместить оба подхода для систем с высокой производительностью.

👉 @Bookflow
Please open Telegram to view this post
VIEW IN TELEGRAM
👍73🤡2🫡1💘1
Media is too big
VIEW IN TELEGRAM
7 концепций системного дизайна, объяснённые за 10 минут

Смотреть на Rutube 📺

👉 @Bookflow
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3❤‍🔥1