SlideShare ist ein Scribd-Unternehmen logo
1 von 40
Downloaden Sie, um offline zu lesen
Как мы учились
чинить самолеты
в воздухе
Евгений Коломеец
eugene.kolomeetz@gmail.com
Copyright © 2017 Virtuozzo. All rights reserved.
Обзор
➢ Что такое “Live Patching”?
➢ Для чего это нужно?
➢ Состояние процесса
➢ Что мы можем патчить?
➢ Когда патч может быть приложен?
➢ Структура бинарного патча
➢ Динамические библиотеки
➢ Символы ELF
➢ Приложение патча
➢ Создание патча
2
Что такое “Live Patching”?
➢ Замена части “логики” в процессе
➢ Сохраняя состояние процесса
➢ Делая это безопасно
3
Для чего это нужно?
➢ Уменьшение времени простоя из-за критических уязвимостей за счёт:
➢Отсутствия рестарта сервисов
➢Нет необходимости в миграции
➢ Примеры утилит для live patching:
➢Kpatch, Kgraft, Ksplice для ядра
➢Pannus, Ksplice, LibCare для юзерспейса
4
Состояние процесса
➢ “Карточный домик”:
➢части сильно связаны между собой
➢ Изменяется во время выполнения
➢ Состоит из:
➢Статически выделенных переменных
➢Динамически выделенных переменных
➢Стека
5
Что мы можем патчить?
➢ Не любые изменения кода
➢ Фундаментальные ограничения:
➢Изменившийся размер данных
➢Другой порядок полей в структуре
➢ Требуется ревью кода :(
6
Когда патч может быть приложен?
➢ Требуется остановка процесса
➢ Не в любой момент времени:
➢Изменяемый код может выполняться
➢На него могут быть ссылки на стеке
➢ Необходим анализ стека:
➢ “поймать” процесс в “подходящем” месте
7
Когда патч может быть приложен?
8
g(void)
{
. . .
f();
}
f(void)
{
. . .
}
Когда патч может быть приложен?
9
g(void)
{
. . .
f();
}
f(void)
{
. . .
}
Поток остановлен здесь
Когда патч может быть приложен?
10
g(void)
{
. . .
f();
}
f(void)
{
. . .
}
Поток остановлен здесь
f()Вызывается новая версия
Когда патч может быть приложен?
11
g(void)
{
. . .
f();
}
f(void)
{
. . .
}
Поток остановлен здесь
f()Вызывается новая версия
,Возврат по адресу
сохранённому на стеке
Когда патч может быть приложен?
12
g(void)
{
. . .
f();
}
f(void)
{
. . .
}
Поток остановлен здесь
f()Вызывается новая версия
Исполняется код
старой версии f()
,Возврат по адресу
сохранённому на стеке
Структура бинарного патча
➢ Код заменяется на уровне функций:
➢Надёжно
➢Просто
➢ Формат: ELF dynamic shared object
➢Загружается в адресное пространство процесса
➢Дополнительная секция с метаданными
➢ Список адресов символов
➢ build-id
13
Динамическая библиотека: исходный код
14
extern int var;
int f(void)
{
return var + 1;
}
Динамическая библиотека: структуры данных ELF
15
Global offset table
Code
f(void)
Address slot
Динамическая библиотека: структуры данных ELF
16
Relocation table Global offset table
Symbol table Code
f(void)
Address slot
"var"
idx offsetaddend
Символы ELF: static
17
a.c b.c
libx.so
static int var; static int var;
f(void) g(void)
Символы ELF: default
18
libx.so
int var;
f(void)
Символы ELF: default
19
libx.so
int var;
f(void) g(void)
liby.so
Символы ELF: interposition
20
libx.so
int var;
f(void)
int var;
g(void)
liby.so
Символы ELF: hidden
21
libx.so
int var;
f(void)
int var
__attribute__
((visibility ("hidden"));
g(void)
liby.so
Метаданные патча
22
Index in patch
symbol table
Symbol address
in target
1 0x1234
2 0x5678
Метаданные патча
23
Function address
in target
Function address
in patch
0x1234 0x5678
0xABCD 0x4321
Приложение патча
24
Target process
f(void)
int var
Приложение патча
25
Target process
f(void)
int var
Patch object
Address slot
f(void)
&var
Приложение патча
26
Target process
f(void)
int var
Patch object
Address slot
f(void)
&var
JUMP
Приложение патча
27
Target process
f(void)
int var
Patch object
Address slot
f(void)
Создание патча: исходный код
28
/* Original code, in file a.c */
static int var;
static int f(void)
{
printf("%dn", var);
return var--;
}
Создание патча: исходный код
29
/* Desired code */
static int var;
static int f(void)
{
printf("%dn", var);
return var++;
}
Создание патча: исходный код
30
/* Patch code, in file patch.c */
#include <vzp.h>
VZP_FILE("a.c")
VZP_STATIC_VAR_REF(int, var);
static int f(void)
{
printf("%dn", var);
return var++;
}
Создание патча: сборка
31
# gcc -fpic -shared -O0 -g patch.c -o libpatch.so
Создание патча: сборка
32
# gcc -fpic -shared -O0 -g patch.c -o libpatch.so
# python nsbgen.py generate /path/to/binary libpatch.so
Создание патча: сборка
33
# gcc -fpic -shared -O0 -g patch.c -o libpatch.so
# python nsbgen.py generate /path/to/binary libpatch.so
# nsb -f libpatch.so -p 1234
Заключение
➢ Требуется ревью кода :)
34
Заключение
➢ Требуется ревью кода :)
➢ Используется стандартное ядро!
35
Заключение
➢ Требуется ревью кода :)
➢ Используется стандартное ядро!
➢ Бинарники собираются как обычно!
36
Заключение
➢ Требуется ревью кода :)
➢ Используется стандартное ядро!
➢ Бинарники собираются как обычно!
➢ Libcompel используется для:
➢Останова процесса
➢Перезапуска процесса
➢Загрузки кода патча
➢Source: https://github.com/xemul/criu/tree/criu-dev
37
Заключение
➢ Требуется ревью кода :)
➢ Используется стандартное ядро!
➢ Бинарники собираются как обычно!
➢ Libcompel используется для:
➢Останова процесса
➢Перезапуска процесса
➢Загрузки кода патча
➢Source: https://github.com/xemul/criu/tree/criu-dev
➢ Libunwind используется для анализа стека
➢Source: http://git.savannah.gnu.org/cgit/libunwind.git
38
Заключение
➢ Требуется ревью кода :)
➢ Используется стандартное ядро!
➢ Бинарники собираются как обычно!
➢ Libcompel используется для:
➢Останова процесса
➢Перезапуска процесса
➢Загрузки кода патча
➢Source: https://github.com/xemul/criu/tree/criu-dev
➢ Libunwind используется для анализа стека
➢Source: http://git.savannah.gnu.org/cgit/libunwind.git
➢ Source: https://github.com/virtuozzo/nsb
39
Thanks for your attention.
Q&A. Thanks!

Weitere ähnliche Inhalte

Was ist angesagt?

Александр Тарасенко, Использование python для автоматизации отладки С/C++ код...
Александр Тарасенко, Использование python для автоматизации отладки С/C++ код...Александр Тарасенко, Использование python для автоматизации отладки С/C++ код...
Александр Тарасенко, Использование python для автоматизации отладки С/C++ код...Sergey Platonov
 
Tech Talks @NSU: Как приручить дракона: введение в LLVM
Tech Talks @NSU: Как приручить дракона: введение в LLVMTech Talks @NSU: Как приручить дракона: введение в LLVM
Tech Talks @NSU: Как приручить дракона: введение в LLVMTech Talks @NSU
 
Использование C++ для низкоуровневой платформозависимой разработки — Кирилл ...
 Использование C++ для низкоуровневой платформозависимой разработки — Кирилл ... Использование C++ для низкоуровневой платформозависимой разработки — Кирилл ...
Использование C++ для низкоуровневой платформозависимой разработки — Кирилл ...Yandex
 
Павел Довгалюк, Обратная отладка
Павел Довгалюк, Обратная отладкаПавел Довгалюк, Обратная отладка
Павел Довгалюк, Обратная отладкаSergey Platonov
 
Юнит-тестирование и Google Mock. Влад Лосев, Google
Юнит-тестирование и Google Mock. Влад Лосев, GoogleЮнит-тестирование и Google Mock. Влад Лосев, Google
Юнит-тестирование и Google Mock. Влад Лосев, Googleyaevents
 
Филипп Торчинский «Анализ производительности и отладка приложений с помощью D...
Филипп Торчинский «Анализ производительности и отладка приложений с помощью D...Филипп Торчинский «Анализ производительности и отладка приложений с помощью D...
Филипп Торчинский «Анализ производительности и отладка приложений с помощью D...Yandex
 
REPL в Node.js: улучшаем быт разработчик
REPL в Node.js: улучшаем быт разработчикREPL в Node.js: улучшаем быт разработчик
REPL в Node.js: улучшаем быт разработчикIT61
 
WebCamp 2016: Python.Максим Климишин.Типизированный Python
WebCamp 2016: Python.Максим Климишин.Типизированный PythonWebCamp 2016: Python.Максим Климишин.Типизированный Python
WebCamp 2016: Python.Максим Климишин.Типизированный PythonWebCamp
 
C++ CoreHard Autumn 2018. Кодогенерация C++ кроссплатформенно. Продолжение - ...
C++ CoreHard Autumn 2018. Кодогенерация C++ кроссплатформенно. Продолжение - ...C++ CoreHard Autumn 2018. Кодогенерация C++ кроссплатформенно. Продолжение - ...
C++ CoreHard Autumn 2018. Кодогенерация C++ кроссплатформенно. Продолжение - ...corehard_by
 
Generalized Tabular LL-Analysis
Generalized Tabular LL-AnalysisGeneralized Tabular LL-Analysis
Generalized Tabular LL-AnalysisIosif Itkin
 
Евгений Зуев, С++ в России: Стандарт языка и его реализация
Евгений Зуев, С++ в России: Стандарт языка и его реализацияЕвгений Зуев, С++ в России: Стандарт языка и его реализация
Евгений Зуев, С++ в России: Стандарт языка и его реализацияPlatonov Sergey
 
Программирование Linux
Программирование LinuxПрограммирование Linux
Программирование LinuxAnthony Shoumikhin
 
Построение компилятора на базе LLVM — Павел Сычев
 Построение компилятора на базе LLVM — Павел Сычев Построение компилятора на базе LLVM — Павел Сычев
Построение компилятора на базе LLVM — Павел СычевYandex
 
ekbpy'2012 - Марк Коренберг - Системное программирование на Питоне
ekbpy'2012 - Марк Коренберг - Системное программирование на Питонеekbpy'2012 - Марк Коренберг - Системное программирование на Питоне
ekbpy'2012 - Марк Коренберг - Системное программирование на Питонеit-people
 
SWIG — cоздание мультиязыковых интерфейсов для C/C++ библиотек
SWIG — cоздание мультиязыковых интерфейсов для C/C++ библиотекSWIG — cоздание мультиязыковых интерфейсов для C/C++ библиотек
SWIG — cоздание мультиязыковых интерфейсов для C/C++ библиотекPython Meetup
 
JIT-компиляция в виртуальной машине Java (HighLoad++ 2013)
JIT-компиляция в виртуальной машине Java (HighLoad++ 2013)JIT-компиляция в виртуальной машине Java (HighLoad++ 2013)
JIT-компиляция в виртуальной машине Java (HighLoad++ 2013)aragozin
 
Программирование Linux
Программирование LinuxПрограммирование Linux
Программирование LinuxAnthony Shoumikhin
 
Алексей Рагозин (Deutsche Bank)
Алексей Рагозин (Deutsche Bank)Алексей Рагозин (Deutsche Bank)
Алексей Рагозин (Deutsche Bank)Ontico
 

Was ist angesagt? (20)

Александр Тарасенко, Использование python для автоматизации отладки С/C++ код...
Александр Тарасенко, Использование python для автоматизации отладки С/C++ код...Александр Тарасенко, Использование python для автоматизации отладки С/C++ код...
Александр Тарасенко, Использование python для автоматизации отладки С/C++ код...
 
Tech Talks @NSU: Как приручить дракона: введение в LLVM
Tech Talks @NSU: Как приручить дракона: введение в LLVMTech Talks @NSU: Как приручить дракона: введение в LLVM
Tech Talks @NSU: Как приручить дракона: введение в LLVM
 
C++ exceptions
C++ exceptionsC++ exceptions
C++ exceptions
 
Использование C++ для низкоуровневой платформозависимой разработки — Кирилл ...
 Использование C++ для низкоуровневой платформозависимой разработки — Кирилл ... Использование C++ для низкоуровневой платформозависимой разработки — Кирилл ...
Использование C++ для низкоуровневой платформозависимой разработки — Кирилл ...
 
Павел Довгалюк, Обратная отладка
Павел Довгалюк, Обратная отладкаПавел Довгалюк, Обратная отладка
Павел Довгалюк, Обратная отладка
 
Юнит-тестирование и Google Mock. Влад Лосев, Google
Юнит-тестирование и Google Mock. Влад Лосев, GoogleЮнит-тестирование и Google Mock. Влад Лосев, Google
Юнит-тестирование и Google Mock. Влад Лосев, Google
 
Филипп Торчинский «Анализ производительности и отладка приложений с помощью D...
Филипп Торчинский «Анализ производительности и отладка приложений с помощью D...Филипп Торчинский «Анализ производительности и отладка приложений с помощью D...
Филипп Торчинский «Анализ производительности и отладка приложений с помощью D...
 
REPL в Node.js: улучшаем быт разработчик
REPL в Node.js: улучшаем быт разработчикREPL в Node.js: улучшаем быт разработчик
REPL в Node.js: улучшаем быт разработчик
 
WebCamp 2016: Python.Максим Климишин.Типизированный Python
WebCamp 2016: Python.Максим Климишин.Типизированный PythonWebCamp 2016: Python.Максим Климишин.Типизированный Python
WebCamp 2016: Python.Максим Климишин.Типизированный Python
 
C++ CoreHard Autumn 2018. Кодогенерация C++ кроссплатформенно. Продолжение - ...
C++ CoreHard Autumn 2018. Кодогенерация C++ кроссплатформенно. Продолжение - ...C++ CoreHard Autumn 2018. Кодогенерация C++ кроссплатформенно. Продолжение - ...
C++ CoreHard Autumn 2018. Кодогенерация C++ кроссплатформенно. Продолжение - ...
 
Generalized Tabular LL-Analysis
Generalized Tabular LL-AnalysisGeneralized Tabular LL-Analysis
Generalized Tabular LL-Analysis
 
Евгений Зуев, С++ в России: Стандарт языка и его реализация
Евгений Зуев, С++ в России: Стандарт языка и его реализацияЕвгений Зуев, С++ в России: Стандарт языка и его реализация
Евгений Зуев, С++ в России: Стандарт языка и его реализация
 
Программирование Linux
Программирование LinuxПрограммирование Linux
Программирование Linux
 
Построение компилятора на базе LLVM — Павел Сычев
 Построение компилятора на базе LLVM — Павел Сычев Построение компилятора на базе LLVM — Павел Сычев
Построение компилятора на базе LLVM — Павел Сычев
 
ekbpy'2012 - Марк Коренберг - Системное программирование на Питоне
ekbpy'2012 - Марк Коренберг - Системное программирование на Питонеekbpy'2012 - Марк Коренберг - Системное программирование на Питоне
ekbpy'2012 - Марк Коренберг - Системное программирование на Питоне
 
SWIG — cоздание мультиязыковых интерфейсов для C/C++ библиотек
SWIG — cоздание мультиязыковых интерфейсов для C/C++ библиотекSWIG — cоздание мультиязыковых интерфейсов для C/C++ библиотек
SWIG — cоздание мультиязыковых интерфейсов для C/C++ библиотек
 
JIT-компиляция в виртуальной машине Java (HighLoad++ 2013)
JIT-компиляция в виртуальной машине Java (HighLoad++ 2013)JIT-компиляция в виртуальной машине Java (HighLoad++ 2013)
JIT-компиляция в виртуальной машине Java (HighLoad++ 2013)
 
Программирование Linux
Программирование LinuxПрограммирование Linux
Программирование Linux
 
Алексей Рагозин (Deutsche Bank)
Алексей Рагозин (Deutsche Bank)Алексей Рагозин (Deutsche Bank)
Алексей Рагозин (Deutsche Bank)
 
Funny JS #1
Funny JS #1Funny JS #1
Funny JS #1
 

Andere mochten auch

Как мы сделали многопользовательскую браузерную игру для HL++ с воксельной гр...
Как мы сделали многопользовательскую браузерную игру для HL++ с воксельной гр...Как мы сделали многопользовательскую браузерную игру для HL++ с воксельной гр...
Как мы сделали многопользовательскую браузерную игру для HL++ с воксельной гр...Ontico
 
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)Ontico
 
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)Ontico
 
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...Ontico
 
Gobblin как ETL-фреймворк / Иван Ахлестин (Rambler&Co)
Gobblin как ETL-фреймворк / Иван Ахлестин (Rambler&Co)Gobblin как ETL-фреймворк / Иван Ахлестин (Rambler&Co)
Gobblin как ETL-фреймворк / Иван Ахлестин (Rambler&Co)Ontico
 
Защищаемость от DDoS на этапе проектирования системы / Рамиль Хантимиров (Sto...
Защищаемость от DDoS на этапе проектирования системы / Рамиль Хантимиров (Sto...Защищаемость от DDoS на этапе проектирования системы / Рамиль Хантимиров (Sto...
Защищаемость от DDoS на этапе проектирования системы / Рамиль Хантимиров (Sto...Ontico
 
Распределенный отказоустойчивый сервис финансовых транзакций / Алексей Бурыло...
Распределенный отказоустойчивый сервис финансовых транзакций / Алексей Бурыло...Распределенный отказоустойчивый сервис финансовых транзакций / Алексей Бурыло...
Распределенный отказоустойчивый сервис финансовых транзакций / Алексей Бурыло...Ontico
 
Состояние Состояния / Алексей Охрименко (IPONWEB)
Состояние Состояния / Алексей Охрименко (IPONWEB)Состояние Состояния / Алексей Охрименко (IPONWEB)
Состояние Состояния / Алексей Охрименко (IPONWEB)Ontico
 
Lambda architecture для realtime-аналитики — риски и преимущества / Николай Г...
Lambda architecture для realtime-аналитики — риски и преимущества / Николай Г...Lambda architecture для realtime-аналитики — риски и преимущества / Николай Г...
Lambda architecture для realtime-аналитики — риски и преимущества / Николай Г...Ontico
 
libfpta — обгоняя SQLite и Tarantool / Леонид Юрьев (Positive Technologies)
libfpta — обгоняя SQLite и Tarantool / Леонид Юрьев (Positive Technologies)libfpta — обгоняя SQLite и Tarantool / Леонид Юрьев (Positive Technologies)
libfpta — обгоняя SQLite и Tarantool / Леонид Юрьев (Positive Technologies)Ontico
 
Как мы поддерживаем 100 разных версий клиентов в Badoo / Ярослав Голуб (Badoo)
Как мы поддерживаем 100 разных версий клиентов в Badoo / Ярослав Голуб (Badoo)Как мы поддерживаем 100 разных версий клиентов в Badoo / Ярослав Голуб (Badoo)
Как мы поддерживаем 100 разных версий клиентов в Badoo / Ярослав Голуб (Badoo)Ontico
 

Andere mochten auch (11)

Как мы сделали многопользовательскую браузерную игру для HL++ с воксельной гр...
Как мы сделали многопользовательскую браузерную игру для HL++ с воксельной гр...Как мы сделали многопользовательскую браузерную игру для HL++ с воксельной гр...
Как мы сделали многопользовательскую браузерную игру для HL++ с воксельной гр...
 
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
 
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
 
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
 
Gobblin как ETL-фреймворк / Иван Ахлестин (Rambler&Co)
Gobblin как ETL-фреймворк / Иван Ахлестин (Rambler&Co)Gobblin как ETL-фреймворк / Иван Ахлестин (Rambler&Co)
Gobblin как ETL-фреймворк / Иван Ахлестин (Rambler&Co)
 
Защищаемость от DDoS на этапе проектирования системы / Рамиль Хантимиров (Sto...
Защищаемость от DDoS на этапе проектирования системы / Рамиль Хантимиров (Sto...Защищаемость от DDoS на этапе проектирования системы / Рамиль Хантимиров (Sto...
Защищаемость от DDoS на этапе проектирования системы / Рамиль Хантимиров (Sto...
 
Распределенный отказоустойчивый сервис финансовых транзакций / Алексей Бурыло...
Распределенный отказоустойчивый сервис финансовых транзакций / Алексей Бурыло...Распределенный отказоустойчивый сервис финансовых транзакций / Алексей Бурыло...
Распределенный отказоустойчивый сервис финансовых транзакций / Алексей Бурыло...
 
Состояние Состояния / Алексей Охрименко (IPONWEB)
Состояние Состояния / Алексей Охрименко (IPONWEB)Состояние Состояния / Алексей Охрименко (IPONWEB)
Состояние Состояния / Алексей Охрименко (IPONWEB)
 
Lambda architecture для realtime-аналитики — риски и преимущества / Николай Г...
Lambda architecture для realtime-аналитики — риски и преимущества / Николай Г...Lambda architecture для realtime-аналитики — риски и преимущества / Николай Г...
Lambda architecture для realtime-аналитики — риски и преимущества / Николай Г...
 
libfpta — обгоняя SQLite и Tarantool / Леонид Юрьев (Positive Technologies)
libfpta — обгоняя SQLite и Tarantool / Леонид Юрьев (Positive Technologies)libfpta — обгоняя SQLite и Tarantool / Леонид Юрьев (Positive Technologies)
libfpta — обгоняя SQLite и Tarantool / Леонид Юрьев (Positive Technologies)
 
Как мы поддерживаем 100 разных версий клиентов в Badoo / Ярослав Голуб (Badoo)
Как мы поддерживаем 100 разных версий клиентов в Badoo / Ярослав Голуб (Badoo)Как мы поддерживаем 100 разных версий клиентов в Badoo / Ярослав Голуб (Badoo)
Как мы поддерживаем 100 разных версий клиентов в Badoo / Ярослав Голуб (Badoo)
 

Ähnlich wie Как мы учились чинить самолеты в воздухе / Евгений Коломеец (Virtuozzo)

Caché Native Access. InterSystems Meetup 2014
Caché Native Access. InterSystems  Meetup 2014Caché Native Access. InterSystems  Meetup 2014
Caché Native Access. InterSystems Meetup 2014InterSystems
 
Исключения C++ через призму компиляторных оптимизаций. Роман Русяев ➠ CoreHa...
Исключения C++ через призму компиляторных оптимизаций. Роман Русяев ➠  CoreHa...Исключения C++ через призму компиляторных оптимизаций. Роман Русяев ➠  CoreHa...
Исключения C++ через призму компиляторных оптимизаций. Роман Русяев ➠ CoreHa...corehard_by
 
Командная строка Unix
Командная строка UnixКомандная строка Unix
Командная строка UnixYandex
 
Ошибки, которые сложно заметить на code review, но которые находятся статичес...
Ошибки, которые сложно заметить на code review, но которые находятся статичес...Ошибки, которые сложно заметить на code review, но которые находятся статичес...
Ошибки, которые сложно заметить на code review, но которые находятся статичес...Andrey Karpov
 
Евгений Рыжков, Андрей Карпов Как потратить 10 лет на разработку анализатора ...
Евгений Рыжков, Андрей Карпов Как потратить 10 лет на разработку анализатора ...Евгений Рыжков, Андрей Карпов Как потратить 10 лет на разработку анализатора ...
Евгений Рыжков, Андрей Карпов Как потратить 10 лет на разработку анализатора ...Platonov Sergey
 
Язык Lua — секреты производительности / Ник Заварицкий (Mail.ru)
Язык Lua — секреты производительности / Ник Заварицкий (Mail.ru)Язык Lua — секреты производительности / Ник Заварицкий (Mail.ru)
Язык Lua — секреты производительности / Ник Заварицкий (Mail.ru)Ontico
 
Как приручить дракона: введение в LLVM
Как приручить дракона: введение в LLVMКак приручить дракона: введение в LLVM
Как приручить дракона: введение в LLVMTech Talks @NSU
 
Александр Сомов "C++: препроцессор, компилятор, компоновщик"
Александр Сомов "C++: препроцессор, компилятор, компоновщик"Александр Сомов "C++: препроцессор, компилятор, компоновщик"
Александр Сомов "C++: препроцессор, компилятор, компоновщик"Yandex
 
64-битная версия Loki
64-битная версия Loki64-битная версия Loki
64-битная версия LokiTatyanazaxarova
 
Компилируемые в реальном времени DSL для С++
Компилируемые в реальном времени DSL для С++Компилируемые в реальном времени DSL для С++
Компилируемые в реальном времени DSL для С++corehard_by
 
SECON'2016. Чубарь Алексей, Мобильные грабли Unity
SECON'2016. Чубарь Алексей, Мобильные грабли UnitySECON'2016. Чубарь Алексей, Мобильные грабли Unity
SECON'2016. Чубарь Алексей, Мобильные грабли UnitySECON
 
Алексей Куканов — Параллелизм в C++: управляйте приложением, а не потоками!
Алексей Куканов — Параллелизм в C++: управляйте приложением, а не потоками!Алексей Куканов — Параллелизм в C++: управляйте приложением, а не потоками!
Алексей Куканов — Параллелизм в C++: управляйте приложением, а не потоками!Yandex
 
Андрей Субботин "Автоматизация локализации iOS-приложений"
Андрей Субботин "Автоматизация локализации iOS-приложений"Андрей Субботин "Автоматизация локализации iOS-приложений"
Андрей Субботин "Автоматизация локализации iOS-приложений"Yandex
 
PVS-Studio, решение для разработки современных ресурсоемких приложений
PVS-Studio, решение для разработки современных ресурсоемких приложенийPVS-Studio, решение для разработки современных ресурсоемких приложений
PVS-Studio, решение для разработки современных ресурсоемких приложенийOOO "Program Verification Systems"
 
Legacy: как победить в гонке (Joker)
Legacy: как победить в гонке (Joker)Legacy: как победить в гонке (Joker)
Legacy: как победить в гонке (Joker)Victor_Cr
 

Ähnlich wie Как мы учились чинить самолеты в воздухе / Евгений Коломеец (Virtuozzo) (20)

Caché Native Access. InterSystems Meetup 2014
Caché Native Access. InterSystems  Meetup 2014Caché Native Access. InterSystems  Meetup 2014
Caché Native Access. InterSystems Meetup 2014
 
Исключения C++ через призму компиляторных оптимизаций. Роман Русяев ➠ CoreHa...
Исключения C++ через призму компиляторных оптимизаций. Роман Русяев ➠  CoreHa...Исключения C++ через призму компиляторных оптимизаций. Роман Русяев ➠  CoreHa...
Исключения C++ через призму компиляторных оптимизаций. Роман Русяев ➠ CoreHa...
 
Командная строка Unix
Командная строка UnixКомандная строка Unix
Командная строка Unix
 
Ошибки, которые сложно заметить на code review, но которые находятся статичес...
Ошибки, которые сложно заметить на code review, но которые находятся статичес...Ошибки, которые сложно заметить на code review, но которые находятся статичес...
Ошибки, которые сложно заметить на code review, но которые находятся статичес...
 
Евгений Рыжков, Андрей Карпов Как потратить 10 лет на разработку анализатора ...
Евгений Рыжков, Андрей Карпов Как потратить 10 лет на разработку анализатора ...Евгений Рыжков, Андрей Карпов Как потратить 10 лет на разработку анализатора ...
Евгений Рыжков, Андрей Карпов Как потратить 10 лет на разработку анализатора ...
 
Enter: legacy code
Enter: legacy codeEnter: legacy code
Enter: legacy code
 
Язык Lua — секреты производительности / Ник Заварицкий (Mail.ru)
Язык Lua — секреты производительности / Ник Заварицкий (Mail.ru)Язык Lua — секреты производительности / Ник Заварицкий (Mail.ru)
Язык Lua — секреты производительности / Ник Заварицкий (Mail.ru)
 
Как приручить дракона: введение в LLVM
Как приручить дракона: введение в LLVMКак приручить дракона: введение в LLVM
Как приручить дракона: введение в LLVM
 
Александр Сомов "C++: препроцессор, компилятор, компоновщик"
Александр Сомов "C++: препроцессор, компилятор, компоновщик"Александр Сомов "C++: препроцессор, компилятор, компоновщик"
Александр Сомов "C++: препроцессор, компилятор, компоновщик"
 
64-битная версия Loki
64-битная версия Loki64-битная версия Loki
64-битная версия Loki
 
Async Python
Async PythonAsync Python
Async Python
 
Dsl for c++
Dsl for c++Dsl for c++
Dsl for c++
 
Компилируемые в реальном времени DSL для С++
Компилируемые в реальном времени DSL для С++Компилируемые в реальном времени DSL для С++
Компилируемые в реальном времени DSL для С++
 
SECON'2016. Чубарь Алексей, Мобильные грабли Unity
SECON'2016. Чубарь Алексей, Мобильные грабли UnitySECON'2016. Чубарь Алексей, Мобильные грабли Unity
SECON'2016. Чубарь Алексей, Мобильные грабли Unity
 
Алексей Куканов — Параллелизм в C++: управляйте приложением, а не потоками!
Алексей Куканов — Параллелизм в C++: управляйте приложением, а не потоками!Алексей Куканов — Параллелизм в C++: управляйте приложением, а не потоками!
Алексей Куканов — Параллелизм в C++: управляйте приложением, а не потоками!
 
JPHP
JPHPJPHP
JPHP
 
Андрей Субботин "Автоматизация локализации iOS-приложений"
Андрей Субботин "Автоматизация локализации iOS-приложений"Андрей Субботин "Автоматизация локализации iOS-приложений"
Андрей Субботин "Автоматизация локализации iOS-приложений"
 
PVS-Studio, решение для разработки современных ресурсоемких приложений
PVS-Studio, решение для разработки современных ресурсоемких приложенийPVS-Studio, решение для разработки современных ресурсоемких приложений
PVS-Studio, решение для разработки современных ресурсоемких приложений
 
iweb01
iweb01iweb01
iweb01
 
Legacy: как победить в гонке (Joker)
Legacy: как победить в гонке (Joker)Legacy: как победить в гонке (Joker)
Legacy: как победить в гонке (Joker)
 

Mehr von Ontico

One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...Ontico
 
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)Ontico
 
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)Ontico
 
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Ontico
 
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Ontico
 
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)Ontico
 
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...Ontico
 
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...Ontico
 
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)Ontico
 
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)Ontico
 
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...Ontico
 
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...Ontico
 
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)Ontico
 
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)Ontico
 
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...Ontico
 
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...Ontico
 
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...Ontico
 
Java и Linux — особенности эксплуатации / Алексей Рагозин (Дойче Банк)
Java и Linux — особенности эксплуатации / Алексей Рагозин (Дойче Банк)Java и Linux — особенности эксплуатации / Алексей Рагозин (Дойче Банк)
Java и Linux — особенности эксплуатации / Алексей Рагозин (Дойче Банк)Ontico
 
Как построить кластер для расчета сотен тысяч high-CPU/high-MEM-задач и не ра...
Как построить кластер для расчета сотен тысяч high-CPU/high-MEM-задач и не ра...Как построить кластер для расчета сотен тысяч high-CPU/high-MEM-задач и не ра...
Как построить кластер для расчета сотен тысяч high-CPU/high-MEM-задач и не ра...Ontico
 
Отказоустойчивая архитектура фронтальной системы банка / Роман Шеховцов, Алек...
Отказоустойчивая архитектура фронтальной системы банка / Роман Шеховцов, Алек...Отказоустойчивая архитектура фронтальной системы банка / Роман Шеховцов, Алек...
Отказоустойчивая архитектура фронтальной системы банка / Роман Шеховцов, Алек...Ontico
 

Mehr von Ontico (20)

One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
 
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
 
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
 
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
 
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
 
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
 
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
 
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
 
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
 
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
 
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
 
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
 
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
 
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
 
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
 
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
 
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
 
Java и Linux — особенности эксплуатации / Алексей Рагозин (Дойче Банк)
Java и Linux — особенности эксплуатации / Алексей Рагозин (Дойче Банк)Java и Linux — особенности эксплуатации / Алексей Рагозин (Дойче Банк)
Java и Linux — особенности эксплуатации / Алексей Рагозин (Дойче Банк)
 
Как построить кластер для расчета сотен тысяч high-CPU/high-MEM-задач и не ра...
Как построить кластер для расчета сотен тысяч high-CPU/high-MEM-задач и не ра...Как построить кластер для расчета сотен тысяч high-CPU/high-MEM-задач и не ра...
Как построить кластер для расчета сотен тысяч high-CPU/high-MEM-задач и не ра...
 
Отказоустойчивая архитектура фронтальной системы банка / Роман Шеховцов, Алек...
Отказоустойчивая архитектура фронтальной системы банка / Роман Шеховцов, Алек...Отказоустойчивая архитектура фронтальной системы банка / Роман Шеховцов, Алек...
Отказоустойчивая архитектура фронтальной системы банка / Роман Шеховцов, Алек...
 

Как мы учились чинить самолеты в воздухе / Евгений Коломеец (Virtuozzo)