SlideShare une entreprise Scribd logo
1  sur  57
Télécharger pour lire hors ligne
Опыт использования Erlang
в разработке многопользовательской игры.
Юра Жлоба aka yzh44yzh
Многопоточность
Распределенность
Устойчивость к ошибкам
Горячее обновление кода
Кратенько про Erlang
Кратенько про нас
Кратенько про проект
А теперь переходим к сути :)
Многопоточность. Теория и практика.
Распределенность (только теория).
Устойчивость к ошибкам. Теория и практика.
Горячее обновление кода. Теория и практика.
Борьба за качество проекта.
Недостатки Erlang.
Выводы.
Многопоточность. Теория.
О, это оооочень сложно!
Мютексы там, семафоры всякие,
критические секции
“Java Concurrency in Practice”
нужно выучить назубок
А иначе страшные dead lock будут
преследовать вас в ночных кошмарах
Многопоточность. Теория.
Многопоточность бывает разная.
Бывает такая, которая простая :)
Многопоточность. Теория.
Легкие потоки
Эффективные планировщики
Изолированные области памяти
Изолированные сборщики мусора
Обмен сообщениями
Многопоточность. Практика.
Процессы – кирпичики архитектуры
Сотни и тысячи процессов в одном проекте
Многопоточность. Практика.
Сходство с ООП:
Инкапсуляция состояния
Публичные и приватные функции
Отправка сообщений вместо вызовов функций
Полиморфизм функций и модулей
Даже конструкторы и деструкторы есть
И даже фабрика :)
Многопоточность. Практика.
Dead lock, Race condition
Бывают, да. Но они не совсем не страшные.
Многопоточность. Практика.
Как выглядит эффективный сервер
если он написан не на Erlang?
(Ruby, Python, Node.js etc)
Многопоточность. Практика.
Например, так:
Несколько нод, по одной на каждое ядро
Rabbit MQ, чтобы наладить коммуникацию
Nginx на входе
Redis для in-memory кеширования
Многопоточность. Практика.
Все это заменяет одна нода на Erlang
Проще в разработке,
в развертывании,
в диагностике проблем,
в поддержке.
Распределенность
Решение высокого уровня
Сетевая прозрачность
Просто посылаем сообщение процессу в другой
ноде так же, как и процессу в своей ноде
Распределенность
Безопасность на куках
Доверенная зона, где все процессы
и все функции доступны
Распределенность
Но и собственное решение
с предоставлением внешнего АПИ
не запрещается делать :)
Устойчивость к ошибкам. Теория.
3 уровня защиты:
Изоляция потоков
Супервайзеры
Распределенность
Устойчивость к ошибкам. Практика.
Нет волшебной таблетки
От бага в бизнес-логике
никакой супервайзер не спасет
Нода не падает,
Но отказ в обслуживании ничем не лучше
Устойчивость к ошибкам. Практика.
Let it crash
или
try/catch, где надо
Горячее обновление кода. Теория.
Жизнь и смерть Erlang-процесса
Как изменить неизменяемое состояние?
Горячее обновление кода. Теория.
Бесконечная рекурсия
Хвостовая, без накопления памяти на стеке
Горячее обновление кода. Теория.
Аргументы функции и все переменные в ней неизменны
А состояние процесса меняется. Чудо :)
Горячее обновление кода. Теория.
Горячая загрузка модуля меняет код его функций
Но состояние процесса остается прежним
В какой-то момент процесс покидает старую
функцию loop, и входит в новую функцию loop
Горячее обновление кода. Теория.
В простом случае все просто
Но бывают сложные случаи :)
Горячее обновление кода. Теория.
Изменилась структура данных
Изменилось дерево супервайзеров
Разное время обновления процессов
Горячее обновление кода. Практика.
Юзаем локально, в ходе разработки
Написал код, загрузил, поглядел как работает
Перезапускать сервер
при каждом изменении в коде – лишнее.
Горячее обновление кода. Практика.
Выкатываем фичу в production
Потому что не хотим рестартовать сервер
Потому что там всегда есть игры,
которые прервутся
Горячее обновление кода. Практика.
Имеем нестабильный production сервер
И пользователей в роли бета-тесторов
(и они не счастливы выполнять эту роль :)
Горячее обновление кода. Практика.
Отдельный тестовый сервер
Нестабильные изменения выкатываем на него
Горячее обновление кода. Практика.
Production сервер обновляем редко
Горячее обновление не получается
из-за “сложных случаев”
Обновление – это всегда рестарт
Горячее обновление кода. Практика.
Сохранение состояний игр перед рестартом
Восстановление после рестарта
Горячее обновление кода. Практика.
И что теперь?
Горячее обновление не нужно?
Горячее обновление кода. Практика.
Ну можно выкатывать быстрые,
не опасные фичи, мелкие фиксы
Если не хочется ждать 2 недели
до конца спринта.
Горячее обновление кода. Практика.
Но еще есть супер полезное применение ...
Горячее обновление кода. Практика.
Диагностика проблем прямо в production
Создание новых средств диагностики
И внедрение их налету
Борьба за качество проекта
Тестировать сложно
И вручную, и автоматически
Оба варианта стоят времени и усилий
Борьба за качество проекта
Хорошо иметь функцию без побочных эффектов
Написал юнит-тест
Проверил правильные, неправильные
и граничные входящие данные
И уверен, что функция всегда работает как надо
Борьба за качество проекта
Вот бы весь проект состоял из чистых функций!
Но, черт возьми, повсюду полно побочных
эффектов. Кишмя кишат. Печаль :(
Побочные эффекты:
послали данные в сокет
записали чего-то в файл
вывели сообщение на консоль
сохранили данные в базу
запустили новый процесс
послали сообщение другому процессу
Страшная тайна программирования
Об этом не пишут в книгах ...
Страшная тайна программирования
Побочный эффект -- это смысл работы любой
программы, это и есть то полезное, что она делает.
Примите это :)
Борьба за качество проекта
Тестируем работу с базой данных
К черту моки!
Будем тестировать работу с базой данных,
а не с моками!
Борьба за качество проекта
Отдельная тестовая база
DROP TABLE, CREATE TABLE,
наполнение таблиц тестовыми данными
Перед каждым тестом
Борьба за качество проекта
Тестируем функции,
которые реально читают из базы и пишут в базу
Да, это не быстро
Зато тестируем то, что надо :)
Борьба за качество проекта
Тестируем взаимодействие процессов
В тестах подымаем дерево супервайзеров
Запускаем процессы
Заставляем их посылать сообщения друг другу
Борьба за качество проекта
Творится синхронное и асинхронное невесть что
А тест должен это как-то проверять
(асинхронное сразу не проверишь, подождать надо)
Придумай, как проверять.
Ты ведь инженер, это твоя работа :)
Борьба за качество проекта
Надеюсь, эти тесты не сильно
зависят от фазы луны :)
Мои худо-бедно работают,
и местами что-то проверяют
Борьба за качество проекта
Более-менее нормальное покрытие тестами
стоит дорого.
А их еще поддерживать надо,
обновлять при изменениях в коде.
Борьба за качество проекта
Большая компания наймет
отдельных людей для этого.
А что делать маленькой компании?
Нас всего трое, как тестировать?
Борьба за качество проекта
Тестовый клиент
Отдельное консольное приложение
Умеет создавать десятки и сотни подключений
И через них дергать все АПИ сервера
Борьба за качество проекта
Два режима работы:
Полу-ручной
Стресс-тест
Борьба за качество проекта
Выявил и устранил проблемы в архитектуре
Нашел и оптимизировал узкие места
Пофиксил баги
Сплю спокойно :)
Недостатки Erlang
Малое количество разработчиков
Не является языком общего назначения
Динамическая типизация
Библиотеки третьих сторон
не production ready
Выводы
Будем ли мы применять Erlang
в следующих проектах?
Выводы
Однозначно да :)
Вопросы? :)

Contenu connexe

Tendances

что и почему вы должны программировать на Erlang.максим лапшин. зал 4
что и почему вы должны программировать на Erlang.максим лапшин. зал 4что и почему вы должны программировать на Erlang.максим лапшин. зал 4
что и почему вы должны программировать на Erlang.максим лапшин. зал 4
rit2011
 
CodeFest 2014. Каплуновский Б. — Использование асинхронного I/O для снижения ...
CodeFest 2014. Каплуновский Б. — Использование асинхронного I/O для снижения ...CodeFest 2014. Каплуновский Б. — Использование асинхронного I/O для снижения ...
CodeFest 2014. Каплуновский Б. — Использование асинхронного I/O для снижения ...
CodeFest
 
DUMP-2015: «DevOps-практики в разработке решений для бизнеса» Максим Пашук, 2...
DUMP-2015: «DevOps-практики в разработке решений для бизнеса» Максим Пашук, 2...DUMP-2015: «DevOps-практики в разработке решений для бизнеса» Максим Пашук, 2...
DUMP-2015: «DevOps-практики в разработке решений для бизнеса» Максим Пашук, 2...
it-people
 
ELK: менеджмент логов, быстрая локализация проблем / Сергей Шумов (News360)
ELK: менеджмент логов, быстрая локализация проблем / Сергей Шумов (News360)ELK: менеджмент логов, быстрая локализация проблем / Сергей Шумов (News360)
ELK: менеджмент логов, быстрая локализация проблем / Сергей Шумов (News360)
Ontico
 
Erlyvideo — сервер потокового видео.
Erlyvideo — сервер потокового видео.Erlyvideo — сервер потокового видео.
Erlyvideo — сервер потокового видео.
Max Lapshin
 
Golang в действии: Как нам удается писать highload приложение на (не?)подходя...
Golang в действии: Как нам удается писать highload приложение на (не?)подходя...Golang в действии: Как нам удается писать highload приложение на (не?)подходя...
Golang в действии: Как нам удается писать highload приложение на (не?)подходя...
Daniel Podolsky
 
История проекта, который никогда не падает / Андрей Шетухин
История проекта, который никогда не падает / Андрей ШетухинИстория проекта, который никогда не падает / Андрей Шетухин
История проекта, который никогда не падает / Андрей Шетухин
Ontico
 

Tendances (19)

Erlang railsclub - 1
Erlang   railsclub - 1Erlang   railsclub - 1
Erlang railsclub - 1
 
Erlang, который мы потеряли
Erlang, который мы потерялиErlang, который мы потеряли
Erlang, который мы потеряли
 
что и почему вы должны программировать на Erlang.максим лапшин. зал 4
что и почему вы должны программировать на Erlang.максим лапшин. зал 4что и почему вы должны программировать на Erlang.максим лапшин. зал 4
что и почему вы должны программировать на Erlang.максим лапшин. зал 4
 
Erlang ruby
Erlang rubyErlang ruby
Erlang ruby
 
CodeFest 2014. Каплуновский Б. — Использование асинхронного I/O для снижения ...
CodeFest 2014. Каплуновский Б. — Использование асинхронного I/O для снижения ...CodeFest 2014. Каплуновский Б. — Использование асинхронного I/O для снижения ...
CodeFest 2014. Каплуновский Б. — Использование асинхронного I/O для снижения ...
 
Алексей Федоров
Алексей ФедоровАлексей Федоров
Алексей Федоров
 
Константин Осипов
Константин ОсиповКонстантин Осипов
Константин Осипов
 
DUMP-2015: «DevOps-практики в разработке решений для бизнеса» Максим Пашук, 2...
DUMP-2015: «DevOps-практики в разработке решений для бизнеса» Максим Пашук, 2...DUMP-2015: «DevOps-практики в разработке решений для бизнеса» Максим Пашук, 2...
DUMP-2015: «DevOps-практики в разработке решений для бизнеса» Максим Пашук, 2...
 
ELK: менеджмент логов, быстрая локализация проблем / Сергей Шумов (News360)
ELK: менеджмент логов, быстрая локализация проблем / Сергей Шумов (News360)ELK: менеджмент логов, быстрая локализация проблем / Сергей Шумов (News360)
ELK: менеджмент логов, быстрая локализация проблем / Сергей Шумов (News360)
 
Erlyvideo — сервер потокового видео.
Erlyvideo — сервер потокового видео.Erlyvideo — сервер потокового видео.
Erlyvideo — сервер потокового видео.
 
Максим Лапшин. Erlang production
Максим Лапшин. Erlang productionМаксим Лапшин. Erlang production
Максим Лапшин. Erlang production
 
Golang в действии: Как нам удается писать highload приложение на (не?)подходя...
Golang в действии: Как нам удается писать highload приложение на (не?)подходя...Golang в действии: Как нам удается писать highload приложение на (не?)подходя...
Golang в действии: Как нам удается писать highload приложение на (не?)подходя...
 
Лев Валкин — Кое-что про Erlang
Лев Валкин — Кое-что про ErlangЛев Валкин — Кое-что про Erlang
Лев Валкин — Кое-что про Erlang
 
SECON'2016. Тюменцев Евгений, Разработка надежных параллельных, распределенны...
SECON'2016. Тюменцев Евгений, Разработка надежных параллельных, распределенны...SECON'2016. Тюменцев Евгений, Разработка надежных параллельных, распределенны...
SECON'2016. Тюменцев Евгений, Разработка надежных параллельных, распределенны...
 
Как сделать ваш JavaScript быстрее / Роман Дворнов (Авито)
Как сделать ваш JavaScript быстрее / Роман Дворнов (Авито)Как сделать ваш JavaScript быстрее / Роман Дворнов (Авито)
Как сделать ваш JavaScript быстрее / Роман Дворнов (Авито)
 
История проекта, который никогда не падает / Андрей Шетухин
История проекта, который никогда не падает / Андрей ШетухинИстория проекта, который никогда не падает / Андрей Шетухин
История проекта, который никогда не падает / Андрей Шетухин
 
My talk on HBase ops engineering at TBD Jun 2016
My talk on HBase ops engineering at TBD Jun 2016My talk on HBase ops engineering at TBD Jun 2016
My talk on HBase ops engineering at TBD Jun 2016
 
Пайплайн машинного обучения на Apache Spark / Павел Клеменков (Rambler&Co)
Пайплайн машинного обучения на Apache Spark / Павел Клеменков (Rambler&Co)Пайплайн машинного обучения на Apache Spark / Павел Клеменков (Rambler&Co)
Пайплайн машинного обучения на Apache Spark / Павел Клеменков (Rambler&Co)
 
SECON'2016. Васильков Василий, Серверное программирование сегодня
SECON'2016. Васильков Василий, Серверное программирование сегодняSECON'2016. Васильков Василий, Серверное программирование сегодня
SECON'2016. Васильков Василий, Серверное программирование сегодня
 

Similaire à Юрий Жлоба - Опыт использования Erlang в разработке многопользовательской игры.

Android: Как написать приложение, которое не тормозит
Android: Как  написать приложение, которое не тормозитAndroid: Как  написать приложение, которое не тормозит
Android: Как написать приложение, которое не тормозит
Elena Kotina
 

Similaire à Юрий Жлоба - Опыт использования Erlang в разработке многопользовательской игры. (20)

XP Days Ukraine 2014 - Refactoring legacy code
XP Days Ukraine 2014 - Refactoring legacy codeXP Days Ukraine 2014 - Refactoring legacy code
XP Days Ukraine 2014 - Refactoring legacy code
 
запахи кода
запахи кодазапахи кода
запахи кода
 
Плюсы и минусы Go для разработчиков на C++, Вячеслав Бахмутов
Плюсы и минусы Go для разработчиков на C++, Вячеслав БахмутовПлюсы и минусы Go для разработчиков на C++, Вячеслав Бахмутов
Плюсы и минусы Go для разработчиков на C++, Вячеслав Бахмутов
 
Рефакторинг и второе рождение проекта на примере Zend Framework 2.0
Рефакторинг и второе рождение проекта на примере Zend Framework 2.0Рефакторинг и второе рождение проекта на примере Zend Framework 2.0
Рефакторинг и второе рождение проекта на примере Zend Framework 2.0
 
Лев Казаркин, Удивительные приключения регистров SSE или в поисках одного бага
Лев Казаркин, Удивительные приключения регистров SSE или в поисках одного багаЛев Казаркин, Удивительные приключения регистров SSE или в поисках одного бага
Лев Казаркин, Удивительные приключения регистров SSE или в поисках одного бага
 
Собеседование на позицию Java Developer
Собеседование на позицию Java DeveloperСобеседование на позицию Java Developer
Собеседование на позицию Java Developer
 
Вячеслав Бахмутов
Вячеслав БахмутовВячеслав Бахмутов
Вячеслав Бахмутов
 
MagicPlot @ UXSPb @ IT Global Meetup #7
MagicPlot @ UXSPb @ IT Global Meetup #7MagicPlot @ UXSPb @ IT Global Meetup #7
MagicPlot @ UXSPb @ IT Global Meetup #7
 
Плюсы и минусы Go для разработчиков на C++, Вячеслав Бахмутов
Плюсы и минусы Go для разработчиков на C++, Вячеслав БахмутовПлюсы и минусы Go для разработчиков на C++, Вячеслав Бахмутов
Плюсы и минусы Go для разработчиков на C++, Вячеслав Бахмутов
 
Tech Talks @NSU: Проходим тест Джоэла
Tech Talks @NSU: Проходим тест ДжоэлаTech Talks @NSU: Проходим тест Джоэла
Tech Talks @NSU: Проходим тест Джоэла
 
Android: Как написать приложение, которое не тормозит
Android: Как  написать приложение, которое не тормозитAndroid: Как  написать приложение, которое не тормозит
Android: Как написать приложение, которое не тормозит
 
Как сделать ваш JavaScript быстрее
Как сделать ваш JavaScript быстрееКак сделать ваш JavaScript быстрее
Как сделать ваш JavaScript быстрее
 
Проходим тест Джоэла
Проходим тест ДжоэлаПроходим тест Джоэла
Проходим тест Джоэла
 
Python и высокая нагрузка
Python и высокая нагрузкаPython и высокая нагрузка
Python и высокая нагрузка
 
Sivko
SivkoSivko
Sivko
 
Внедрение параллельного рендеринга в игровой движок
Внедрение параллельного рендеринга в игровой движокВнедрение параллельного рендеринга в игровой движок
Внедрение параллельного рендеринга в игровой движок
 
Как перестать хранить секреты в git и начать использовать Hashicorp Vault
Как перестать хранить секреты в git и начать использовать Hashicorp VaultКак перестать хранить секреты в git и начать использовать Hashicorp Vault
Как перестать хранить секреты в git и начать использовать Hashicorp Vault
 
Олег Миколайченко "Как перестать хранить секреты в git и начать использовать ...
Олег Миколайченко "Как перестать хранить секреты в git и начать использовать ...Олег Миколайченко "Как перестать хранить секреты в git и начать использовать ...
Олег Миколайченко "Как перестать хранить секреты в git и начать использовать ...
 
Олег Антонян
Олег АнтонянОлег Антонян
Олег Антонян
 
Дмитрий Прокофьев: Эволюция системы синхронизации данных между сервисами
Дмитрий Прокофьев: Эволюция системы синхронизации данных между сервисамиДмитрий Прокофьев: Эволюция системы синхронизации данных между сервисами
Дмитрий Прокофьев: Эволюция системы синхронизации данных между сервисами
 

Plus de IT Share

Святослав Панкратов - Оптимизация арта для браузерных проектов на юнити
Святослав Панкратов - Оптимизация арта для браузерных проектов на юнитиСвятослав Панкратов - Оптимизация арта для браузерных проектов на юнити
Святослав Панкратов - Оптимизация арта для браузерных проектов на юнити
IT Share
 
Иван Воронов - Пара вещей, которые упростили бы мою гейм-дизайнерскую жизнь, ...
Иван Воронов - Пара вещей, которые упростили бы мою гейм-дизайнерскую жизнь, ...Иван Воронов - Пара вещей, которые упростили бы мою гейм-дизайнерскую жизнь, ...
Иван Воронов - Пара вещей, которые упростили бы мою гейм-дизайнерскую жизнь, ...
IT Share
 
Александр Яцукевич - Визуальные эффекты в гейм-дизайне
Александр Яцукевич - Визуальные эффекты в гейм-дизайнеАлександр Яцукевич - Визуальные эффекты в гейм-дизайне
Александр Яцукевич - Визуальные эффекты в гейм-дизайне
IT Share
 
Клевакичев и Кравченко - Игровой баланс, методы его поиска и последующее тира...
Клевакичев и Кравченко - Игровой баланс, методы его поиска и последующее тира...Клевакичев и Кравченко - Игровой баланс, методы его поиска и последующее тира...
Клевакичев и Кравченко - Игровой баланс, методы его поиска и последующее тира...
IT Share
 
Сергей Сверчков - Оцениваем решения NoSQL: какая база данных подходит для ваш...
Сергей Сверчков - Оцениваем решения NoSQL: какая база данных подходит для ваш...Сергей Сверчков - Оцениваем решения NoSQL: какая база данных подходит для ваш...
Сергей Сверчков - Оцениваем решения NoSQL: какая база данных подходит для ваш...
IT Share
 
Роман Белешев - Online backup: технологии хранения больших объемов данных
Роман Белешев - Online backup: технологии хранения больших объемов данных Роман Белешев - Online backup: технологии хранения больших объемов данных
Роман Белешев - Online backup: технологии хранения больших объемов данных
IT Share
 
Кирилл Алешин - Big Data и Lambda архитектура на практике
Кирилл Алешин - Big Data и Lambda архитектура на практикеКирилл Алешин - Big Data и Lambda архитектура на практике
Кирилл Алешин - Big Data и Lambda архитектура на практике
IT Share
 

Plus de IT Share (14)

Cоветs по оптимизации игр, Александр Дежурко
Cоветs по оптимизации игр, Александр ДежуркоCоветs по оптимизации игр, Александр Дежурко
Cоветs по оптимизации игр, Александр Дежурко
 
Citrus Game Engine, Юрий Шумовский
Citrus Game Engine, Юрий ШумовскийCitrus Game Engine, Юрий Шумовский
Citrus Game Engine, Юрий Шумовский
 
Pooling is magic, Максим Клыга
Pooling is magic, Максим КлыгаPooling is magic, Максим Клыга
Pooling is magic, Максим Клыга
 
Святослав Панкратов - Оптимизация арта для браузерных проектов на юнити
Святослав Панкратов - Оптимизация арта для браузерных проектов на юнитиСвятослав Панкратов - Оптимизация арта для браузерных проектов на юнити
Святослав Панкратов - Оптимизация арта для браузерных проектов на юнити
 
Иван Воронов - Пара вещей, которые упростили бы мою гейм-дизайнерскую жизнь, ...
Иван Воронов - Пара вещей, которые упростили бы мою гейм-дизайнерскую жизнь, ...Иван Воронов - Пара вещей, которые упростили бы мою гейм-дизайнерскую жизнь, ...
Иван Воронов - Пара вещей, которые упростили бы мою гейм-дизайнерскую жизнь, ...
 
Александр Яцукевич - Визуальные эффекты в гейм-дизайне
Александр Яцукевич - Визуальные эффекты в гейм-дизайнеАлександр Яцукевич - Визуальные эффекты в гейм-дизайне
Александр Яцукевич - Визуальные эффекты в гейм-дизайне
 
Клевакичев и Кравченко - Игровой баланс, методы его поиска и последующее тира...
Клевакичев и Кравченко - Игровой баланс, методы его поиска и последующее тира...Клевакичев и Кравченко - Игровой баланс, методы его поиска и последующее тира...
Клевакичев и Кравченко - Игровой баланс, методы его поиска и последующее тира...
 
Сергей Сверчков - Оцениваем решения NoSQL: какая база данных подходит для ваш...
Сергей Сверчков - Оцениваем решения NoSQL: какая база данных подходит для ваш...Сергей Сверчков - Оцениваем решения NoSQL: какая база данных подходит для ваш...
Сергей Сверчков - Оцениваем решения NoSQL: какая база данных подходит для ваш...
 
Роман Белешев - Online backup: технологии хранения больших объемов данных
Роман Белешев - Online backup: технологии хранения больших объемов данных Роман Белешев - Online backup: технологии хранения больших объемов данных
Роман Белешев - Online backup: технологии хранения больших объемов данных
 
Кирилл Алешин - Big Data и Lambda архитектура на практике
Кирилл Алешин - Big Data и Lambda архитектура на практикеКирилл Алешин - Big Data и Lambda архитектура на практике
Кирилл Алешин - Big Data и Lambda архитектура на практике
 
Максим Мельников - Wargaming Web
Максим Мельников - Wargaming WebМаксим Мельников - Wargaming Web
Максим Мельников - Wargaming Web
 
Никита Вельмаскин - Интерпретатор или думаем над скриптовым движком для Ваше...
Никита Вельмаскин -  Интерпретатор или думаем над скриптовым движком для Ваше...Никита Вельмаскин -  Интерпретатор или думаем над скриптовым движком для Ваше...
Никита Вельмаскин - Интерпретатор или думаем над скриптовым движком для Ваше...
 
«​Масштабируемый DevOps​» Александр Колесень
«​Масштабируемый DevOps​» Александр Колесень«​Масштабируемый DevOps​» Александр Колесень
«​Масштабируемый DevOps​» Александр Колесень
 
«От CMS к Highload: работа с backend» Алексей Сазанов, Александр Каскевич
«От CMS к Highload: работа с backend» Алексей Сазанов, Александр Каскевич«От CMS к Highload: работа с backend» Алексей Сазанов, Александр Каскевич
«От CMS к Highload: работа с backend» Алексей Сазанов, Александр Каскевич
 

Dernier

Cyberprint. Dark Pink Apt Group [RU].pdf
Cyberprint. Dark Pink Apt Group [RU].pdfCyberprint. Dark Pink Apt Group [RU].pdf
Cyberprint. Dark Pink Apt Group [RU].pdf
Хроники кибер-безопасника
 
2023 Q4. The Ransomware report. [RU].pdf
2023 Q4. The Ransomware report. [RU].pdf2023 Q4. The Ransomware report. [RU].pdf
2023 Q4. The Ransomware report. [RU].pdf
Хроники кибер-безопасника
 
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdfСИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
Хроники кибер-безопасника
 
CVE. The Fortra's GoAnywhere MFT [RU].pdf
CVE. The Fortra's GoAnywhere MFT [RU].pdfCVE. The Fortra's GoAnywhere MFT [RU].pdf
CVE. The Fortra's GoAnywhere MFT [RU].pdf
Хроники кибер-безопасника
 
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
Ирония безопасности
 
Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
Ирония безопасности
 

Dernier (9)

Cyberprint. Dark Pink Apt Group [RU].pdf
Cyberprint. Dark Pink Apt Group [RU].pdfCyberprint. Dark Pink Apt Group [RU].pdf
Cyberprint. Dark Pink Apt Group [RU].pdf
 
2023 Q4. The Ransomware report. [RU].pdf
2023 Q4. The Ransomware report. [RU].pdf2023 Q4. The Ransomware report. [RU].pdf
2023 Q4. The Ransomware report. [RU].pdf
 
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdfСИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
 
CVE. The Fortra's GoAnywhere MFT [RU].pdf
CVE. The Fortra's GoAnywhere MFT [RU].pdfCVE. The Fortra's GoAnywhere MFT [RU].pdf
CVE. The Fortra's GoAnywhere MFT [RU].pdf
 
Malware. DCRAT (DARK CRYSTAL RAT) [RU].pdf
Malware. DCRAT (DARK CRYSTAL RAT) [RU].pdfMalware. DCRAT (DARK CRYSTAL RAT) [RU].pdf
Malware. DCRAT (DARK CRYSTAL RAT) [RU].pdf
 
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
 
Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
 
MS Navigating Incident Response [RU].pdf
MS Navigating Incident Response [RU].pdfMS Navigating Incident Response [RU].pdf
MS Navigating Incident Response [RU].pdf
 
Ransomware_Q3 2023. The report [RU].pdf
Ransomware_Q3 2023.  The report [RU].pdfRansomware_Q3 2023.  The report [RU].pdf
Ransomware_Q3 2023. The report [RU].pdf
 

Юрий Жлоба - Опыт использования Erlang в разработке многопользовательской игры.