2. О себе
15 лет преподаю
ИМИТ, ФКН ОмГУ
ИТ-компании
Школа программиста
11 лет разрабатываю ПО
разработчик, архитектор,
PM, руководство до 70
человек
Тюменцев Евгений
8. Требуется все больше разработчиков
«Ну а здесь, знаешь ли,
приходится бежать со всех
ног, чтобы только остаться
на том же месте, а чтобы
попасть в другое место
нужно бежать вдвое
быстрее.»
Алиса в Зазеркалье, Льюис
Кэролл
9.
10. Логика Хоара
1969 г. An Axiomatic Basis for
Computer Programming
1971 г. Procedures and Parameters:
An Axiomatic Approach
1980 г. премия Тьюринга
1990 г. Медаль “Пионер
компьютерной техники”
2000 г. рыцарский титул за заслуги в
области образования и
компьютерной техники, премия
Киото
Чарльз Хоар
11. Факты о логике Хоара
Если использовать
1. статическое связывание
2. Рекурсию
3. Вложенные процедуры
4. Процедуры, принимающие в качестве
параметров процедуры.
5. Глобальные переменные
то не существует полной системы аксиом.
12. Логика Хоара часто противоречива
⊢ 𝐿 𝞿 и ⊢ 𝐿 `𝞿
Значит, что любое изменение в коде надо
тестировать!
22. Результаты применения json
• Всего 6 запросов к БД описывают все операции с
данными
• Известно время выполнения всех запросов
23. Результаты применения json
• Всего 6 запросов к БД описывают все операции с
данными
• Известно время выполнения всех запросов
• Скорость выполнения запросов не зависит от
квалификации программиста
24. Результаты применения json
• Всего 6 запросов к БД описывают все операции с
данными
• Известно время выполнения всех запросов
• Скорость выполнения запросов не зависит от
квалификации программиста
• Структура БД не меняется – не нужны миграции
25. Результаты применения json
• Всего 6 запросов к БД описывают все операции с
данными
• Известно время выполнения всех запросов
• Скорость выполнения запросов не зависит от
квалификации программиста
• Структура БД не меняется – не нужны миграции
• Можно хранить одновременно несколько версий
одних данных
26. Результаты применения json
• Всего 6 запросов к БД описывают все операции с
данными
• Известно время выполнения всех запросов
• Скорость выполнения запросов не зависит от
квалификации программиста
• Структура БД не меняется – не нужны миграции
• Можно хранить одновременно несколько версий
одних данных
• БД легко масштабируется, так как структура базы
однородная
27. Интерфейс работы с данными
interface IObject
{
object getValue(string name);
void setValue(string name, object val);
}
class Field<T>
{
public Field(string name) {…}
public abstract T this[IObject o]
{
get;
set;
}
}
Генерация строго типизированных
оберток для IObject по интерфейсам
interface MyObj
{
int A
{
get;
}
string B
{
get;
set;
}
}
28. Процессоры уже не те!
Herb Sutter, 2005 The Free Lunch Is
Over A Fundamental Turn Toward
Concurrency in Software
“The bad news is that, at least in the
short term, the growth will come mostly
in directions that do not take most
current applications along for their
customary free ride.”
31. Акторы – альтернатива многопоточности
Carl Hewitt,
Peter Bishop,
Richard Steiger
A Universal Modular ACTOR
Formalism for Artificial Intelligence
1973
32. Что такое актор?
Актор – вычислительная
сущность, которая может
за один шаг
• Отправить конечное число
сообщений другим акторам
• Создать конечное число
акторов
• Выбрать поведение для
приема следующего
сообщения
40. Методы обнаружения разладки
Карты Шухарта
Все процессы подвержены вариабельности.
Управляемое явление - используя прошлый опыт
можно предсказать, каких его вариаций можно
ожидать в будущем.
ГОСТ Р 50779.42-99 (ISO 8258-91)
выявление точек выхода
процесса из стабильного
состояния для установления
причин появившегося
отклонения и их устранения.
45. Преимущества библиотеки
конфигураций
• Быстро клонировать
• Автоматический деплой
• Можно выставлять время
обновления
• Автоматический откат
• Ни одна конфигурация не теряется
• Можно иметь одновременно
сервера, которые работают с
разными версиями данных
{
‘actors’: [{
‘name’: ‘emailSender’,
‘smtp’: …,
},
{
‘name’: ‘dailyReport’,
…
}
‘messagePaths’: [{
‘name’: ‘newAd’,
…
}],
‘enpoints’: […]
}
46. Преимущества решения
• Любое приложение в
состоит из стандартных и
простых блоков
• Компоновать блоки
между собой можно без
программирования
• Возможности системы
ограничены только
набором готовых блоков
• Блоки можно
разрабатывать
независимо друг от друга
47. Существующие внедрения – портал
бесплатных объявлений и новостей
• Команда – 5 студентов без опыта
работы и филолог
48. Существующие внедрения – портал
бесплатных объявлений и новостей
• Команда – 5 студентов без опыта
работы и филолог
• Среднее время открытия страницы
уменьшено с 4,5 с до 400 мс
49. Существующие внедрения – портал
бесплатных объявлений и новостей
• Команда – 5 студентов без опыта
работы и филолог
• Среднее время открытия страницы
уменьшено с 4,5 с до 400 мс
• Количество ошибок по сравнению с
предыдущей версией уменьшилось в
1000 раз!
50. Существующие внедрения – портал
бесплатных объявлений и новостей
• Команда – 5 студентов без опыта
работы и филолог
• Среднее время открытия страницы
уменьшено с 4,5 с до 400 мс
• Количество ошибок по сравнению с
предыдущей версией уменьшилось в
1000 раз!
• Количество серверов уменьшено с 15
до 3!
51. Существующие внедрения – портал
бесплатных объявлений и новостей
• Команда – 5 студентов без опыта
работы и филолог
• Среднее время открытия страницы
уменьшено с 4,5 с до 400 мс
• Количество ошибок по сравнению с
предыдущей версией уменьшилось в
1000 раз!
• Количество серверов уменьшено с 15
до 3!
• Объявление можно подавать
простым текстом вместо длинной
формы: “Двушка в Советском округе,
улица Мира, 64, в районе ост. Политех,
50/34/8, 3/5п, не требует ремонта,
санузел раздельный, хрущевка.”
52. Test configuration:
server station:
desktop workstation
CPU - Intel(R) Core(TM) i3 CPU 530 @ 2.93GHz
Memory - 8 Gb
OS - Debian 8.2 jessie
GUI - none
client station:
notebook Dell Inspirion N5050
CPU - Intel(R) Core(TM) i5-2450M processor (2.50 GHz with Turbo Boost up to 3.10 GHz)
Memory - 4 Gb
OS - Mint 17.2 Cinnamon 64-bit 2.6.11
network device:
D-Link DES-1005A 10/100 Fast Ethernet Switch
Существующие внедрения –
банерокрутилка
54. Существующие внедрения –
кроссплатформенное приложение
• Приложение считает время по каждой
задаче программиста, снимает
скриншоты, мониторит активность
клавиатуры и мыши
• Интерфейс написан на HTML5 и CSS3
• Бизнес-логика написана на нашей
библиотеке
• Приложение работает без изменений
под Mac, Window, Linux (кроме методов
снятия скриншота и логирования
активности – это малая часть – до 40 ч
работы – по сравнению со всем
приложением)