Из презентации вы узнаете:
— как работает database/sql;
— интерфейс и реализации database/sql/driver;
— обзор популярных ORM и что с ними не так;
— как мы делали свой лучший ORM;
— и почему столько раз его переделывали.
Сравнение форматов и библиотек сериализации / Антон Рыжов (Qrator Labs)Ontico
В эпоху распределённых архитектур и микросервисов как никогда актуальными становятся вопросы — как эффективно сериализовать и передать данные. Большинство решает данный вопрос просто — используют стандартный, универсальный и всем понятный формат JSON. Другие же, ориентируясь на производительность, ищут в интернете бенчмарки и выбирают protobuf или msgpack.
Мы протестировали разные реализации статически (thrift, protocol buffers) и динамически (json, msgpack) типизированных протоколов для python; сравнили их производительность в разных сценариях, возможности, внутреннее устройство, удобство разработки.
Я расскажу о результатах нашего исследования, особенностях "приготовления" библиотек и выявленных подводных камнях.
Леонид Васильев "Python в инфраструктуре поиска"Yandex
Леонид Васильев "Python в инфраструктуре поиска"
Я.Субботник в Санкт-Петербурге
О докладе:
Что такое инфраструктура поиска. Какие задачи приходится решать. Какие инструменты для управления кластером используются в поиске. Как они устроены изнутри. Что можно посоветовать проектам с большой инфраструктурой. Какие существуют open-source аналоги.
Андрей Дроздов "Создание высокопроизводительных rest api на tarantool"Tanya Denisyuk
Тезисы:
За последние 2 года экосистема tarantool пополнилась огромным количеством батареек: дисковое хранение, lua-шардинг, работа со схемами данных и версиями, nginx upstream модуль. Используя эти компоненты, можно создавать высокопроизводительные приложения без использования дополнительных технологий.
В докладе будет описан опыт использования Tarantool для разработки performance-critical restful api: расскажу в чем плюсы и минусы текущей реализации lua-шардинга, как создать restful api прямо в базе данных и почему это быстрее многих популярных решений на примере реальных данных. Кроме того, будет рассмотрен подход использования avro схем для валидации, версионирования и хранения json документов в Tarantool. Для наглядности во время доклада будет разработан микросервис и проведено нагрузочное тестирование.
Мониторинг ожиданий в PostgreSQL / Курбангалиев Ильдус (Postgres Professional)Ontico
В многоядерных высоконагруженных системах с высокой конкурентностью часто бывает сложно определить, чем занят отдельный процесс PostgreSQL. Он может находиться в ожидании локов высокого уровня, таких как локи таблиц, внутренних локов, используемых для синхронизации процессов, ввода-вывода и многих других.
В настоящий момент среди всех событий ожидания мониторить можно только локи высокого уровня с помощью представлений PostgreSQL. Другие типы ожиданий требуют использования низкоуровневых утилит типа perf, systemtap и других. Эти утилиты требуют специальных знаний и могут быть платформозависимыми. В то же время другие enterprise базы данных уже включают в себя инструменты для мониторинга ожиданий.
Мы разработали патч, который реализует мониторинг ожиданий в PostgreSQL. С минимальной настройкой (несколько конфигурационных параметров) этот патч показывает полную информацию о текущих ожиданиях в режиме реального времени и с небольшим оверхедом на всю систему. Этот патч уже работает на продакшен серверах Яндекса и показал свою полезность.
Из презентации вы узнаете:
— как работает database/sql;
— интерфейс и реализации database/sql/driver;
— обзор популярных ORM и что с ними не так;
— как мы делали свой лучший ORM;
— и почему столько раз его переделывали.
Сравнение форматов и библиотек сериализации / Антон Рыжов (Qrator Labs)Ontico
В эпоху распределённых архитектур и микросервисов как никогда актуальными становятся вопросы — как эффективно сериализовать и передать данные. Большинство решает данный вопрос просто — используют стандартный, универсальный и всем понятный формат JSON. Другие же, ориентируясь на производительность, ищут в интернете бенчмарки и выбирают protobuf или msgpack.
Мы протестировали разные реализации статически (thrift, protocol buffers) и динамически (json, msgpack) типизированных протоколов для python; сравнили их производительность в разных сценариях, возможности, внутреннее устройство, удобство разработки.
Я расскажу о результатах нашего исследования, особенностях "приготовления" библиотек и выявленных подводных камнях.
Леонид Васильев "Python в инфраструктуре поиска"Yandex
Леонид Васильев "Python в инфраструктуре поиска"
Я.Субботник в Санкт-Петербурге
О докладе:
Что такое инфраструктура поиска. Какие задачи приходится решать. Какие инструменты для управления кластером используются в поиске. Как они устроены изнутри. Что можно посоветовать проектам с большой инфраструктурой. Какие существуют open-source аналоги.
Андрей Дроздов "Создание высокопроизводительных rest api на tarantool"Tanya Denisyuk
Тезисы:
За последние 2 года экосистема tarantool пополнилась огромным количеством батареек: дисковое хранение, lua-шардинг, работа со схемами данных и версиями, nginx upstream модуль. Используя эти компоненты, можно создавать высокопроизводительные приложения без использования дополнительных технологий.
В докладе будет описан опыт использования Tarantool для разработки performance-critical restful api: расскажу в чем плюсы и минусы текущей реализации lua-шардинга, как создать restful api прямо в базе данных и почему это быстрее многих популярных решений на примере реальных данных. Кроме того, будет рассмотрен подход использования avro схем для валидации, версионирования и хранения json документов в Tarantool. Для наглядности во время доклада будет разработан микросервис и проведено нагрузочное тестирование.
Мониторинг ожиданий в PostgreSQL / Курбангалиев Ильдус (Postgres Professional)Ontico
В многоядерных высоконагруженных системах с высокой конкурентностью часто бывает сложно определить, чем занят отдельный процесс PostgreSQL. Он может находиться в ожидании локов высокого уровня, таких как локи таблиц, внутренних локов, используемых для синхронизации процессов, ввода-вывода и многих других.
В настоящий момент среди всех событий ожидания мониторить можно только локи высокого уровня с помощью представлений PostgreSQL. Другие типы ожиданий требуют использования низкоуровневых утилит типа perf, systemtap и других. Эти утилиты требуют специальных знаний и могут быть платформозависимыми. В то же время другие enterprise базы данных уже включают в себя инструменты для мониторинга ожиданий.
Мы разработали патч, который реализует мониторинг ожиданий в PostgreSQL. С минимальной настройкой (несколько конфигурационных параметров) этот патч показывает полную информацию о текущих ожиданиях в режиме реального времени и с небольшим оверхедом на всю систему. Этот патч уже работает на продакшен серверах Яндекса и показал свою полезность.
Отказоустойчивая обработка 10M OAuth токенов на Tarantool / Владимир Перепели...Ontico
Многие современные высоконагруженные системы построены с использованием очередей. Не является исключением и внутренний сервис обработки OAuth токенов, который создала наша команда. Исключением является то, что и в качестве основного хранилища, и в качестве всех очередей используется один и тот же продукт - Tarantool. Более того, мы поставили себе амбициозную цель по отказоустойчивости - полную доступность сервиса, когда уходят любые два из трёх датацентров, и успешно её достигли.
При решении мы столкнулись с массой интересных инженерных задач и в нашем докладе мы расскажем вам о том, какие технологии и подходы использовались. В частности, рассмотрим более детально такие вещи, как:
- создание deadline очереди и проблемы, с ней связанные;
- создание кольцевой очереди;
- интеграция между собой шардинга, Raft и очередей;
- как мы победили split brain ;)
Основы индексирования и расширенные возможности EXPLAIN в MySQL / Василий Лук...Ontico
Индексы
- типы индексов;
- типы доступа к таблице;
- составные индексы (когда они работают);
- получение информации об индексе (show index; - описание формата);
- примеры с поиском по нескольким полям и сортировкой: какие индексы будут использоваться, а какие нет;
- что делать в случае нескольких условий по диапазону;
- как сервер выбирает индекс, который будет использован;
- директивы use/force/ignore index.
EXPLAIN
- как работает оптимизатор запросов;
- недостатки explain;
- explain extended;
- получение sql запроса, восстановленного из плана;
- формат выводимой explain информации:
-- что означает каждый столбец;
-- какие значения принимает (для extra только самые часто встречающиеся);
-- на что обратить внимание с точки зрения производительности;
-- как правильно читать план-разбор сложного примера с join-ами, подзапросами (обычными и from) и union-ами;
- новые возможности explain в последних версиях.
Практические примеры (исходный запрос, план, оптимизация, итоговый план) для разных случаев оптимизации:
1. добавление индексов;
2. эквивалентное изменение запроса: or --> union, подзапрос --> join;
3. разбиение запроса на несколько с сохранением промежуточных данных во временной таблице;
4. изменение структуры данных;
5. использование пользовательских переменных.
Доклад Антона Поварова на Tarantool Meetup. "Tarantool в Badoo: хранение исто...Badoo Development
Каждый день на badoo.com пользователи просматривают порядка 100 миллионов профилей других юзеров. Мы храним счетчики и полную историю посещений за последние 90 дней, с некоторой агрегацией - это около 5 миллиардов ивентов. Система обрабатывающая этот поток данных создана давно и пережила несколько инкарнаций, становясь все ближе к базе данных.
В какой-то момент мы решили перестать изобретать велосипед, отказались от демонов на C+sqlite, не стали делать на mysql-ях, редисах и мемкешах, а взяли и запилили на Tarantool.
Рассказываем почему Tarantool, как шардим, реплицируем (все просто) и как плавно это дело внедрили на живой системе без downtime.
«Парсим CSS», Роман Дворнов (Avito)
В ходе работы над CSSO мне пришлось погрузиться в процесс парсинга CSS. В результате парсер (тот, что в CSSO) был не раз переписан. Пришло время сделать его отдельным инструментом. Новый быстрый детальный парсер CSS, его AST, области применения и кое-что ещё.
Практика совместного использования Lua и C в opensource спам-фильтре Rspamd /...Ontico
В данном докладе я расскажу о том, как Lua помогает расширять функционал Rspamd, позволяя людям без особых знаний С писать эффективные правила фильтрации спама. Также будут рассмотрены особенности внедрения Lua в C код и основные приемы, применяемые при написании API для Lua приложений. Отдельное внимание будет уделено документации к Lua API, которая является одним из необходимых компонентов для opensource приложения.
Кроме этого, отдельная часть доклада посвящена анализу производительности Lua: использованию LuaJIT, сравнению вызовов C функций через FFI с традиционным вызовом, оптимизации строковых операций и таблиц в Lua.
В заключение будут рассмотрены некоторые открытые вопросы: будущее языка, наличие нескольких диалектов, статический анализ Lua стека, а также вопросы безопасности при JIT компиляции.
"Почему язык Lua — это интересно?", Ник Заварицкий, (Mail.ru Group)Badoo Development
DevConf 2016
"Почему язык Lua — это интересно?", Ник Заварицкий, (Mail.ru Group)
Lua — высокоуровневый язык, похожий на Python/JS, но существенно более простой. Он гибкий и при этом очень быстрый.
Возможно, вы слышали про OpenResty. Это решение для разработки Nginx модулей на Lua. Cloudflare, крупнейший CDN/anti-DDOS провайдер, как раз работает на OpenResty.
На скоростях 10/100Gb сетевой стек в ядре Linux становится “узким местом”. Есть ряд технологий для выноса обработки пакетов из ядра в userspace; например Snabb Switch. Последний написан целиком на Lua и справляется с потоком в 200+Gb.
Как на счет менее экзотических применений? На Lua есть свой Node.js (luvit.io). Lua есть в БД Tarantool. У нас была задача валидации данных на соответствие схеме; мы переписали валидацию с Си на Lua и получили ускорение в 4 раза (за счет JIT-компиляции).
Lua набирает популярность и он объективно хорош. Что будет в докладе:
1) Краткое введение в Lua: мы убедимся в том, что язык простой и там есть все необходимое на каждый день.
2) Секция Lua WAT (смешные контр-интуитивные особенности языка, 0 and 1 == 0)
3) Поговорим о том, почему Tarantool использует LuaJIT, а не V8.
4) Разберемся, почему именно Lua такой быстрый, и как работает трассирующий JIT-компилятор.
Разработка real-time приложений с RethinkDB / Илья Вербицкий (Независимый кон...Ontico
RethinkDB - это распределенное документо-ориентированное хранилище данных с открытым исходным кодом. Данная система ориентирована на разработку систем обработки данных реального времени, позволяя клиентскому приложению подписываться на изменение тех или иных данных.
В данном докладе я бы хотел осветить не только вопросы разработки приложений на базе RethinkDB, но и поговорить о том, как все это работает. Мы поговорим о ReQL (язык запросов), “changefeeds”, индексах, шардинге, репликациях, а также затронем вопросы особенностей проектирования баз данных под данную платформу.
PostgreSQL: практические примеры оптимизации SQL-запросов / Иван Фролков (Po...Ontico
Довольно часто как адинистраторы, так и разработчики жалуются на низкую производительность приложений, работающих с базой данных, и нередко при этом ищут решения возникших проблем с помощью различных настроек как СУБД, так и операционной системы, пренебрегая при этом самым действенным способом - оптимизацией запросов к собственно БД.
Тому, как понимать, где же узкие места, и как их можно попробовать избежать на примере PostgreSQL и посвящен этот доклад.
Хранение json-документов в Tarantool / Андрей Дроздов (Mail.ru Group)Ontico
AVRO - система сериализации данных, созданная сообществом Apache Hadoop. Включает в себя различные структуры данных, компактный формат хранения в бинарном виде, язык описания схем данных и правила миграции данных между разными версиями схемы. С помощью инструментария AVRO можно валидировать данные по схеме, совершать преобразования из одной версии в другую и даже восстанавливать неполные данные при помощи значений по-умолчанию. Поддержка Apache AVRO была добавлена в Tarantool в этом году и уже используются в production.
Tarantool можно использовать как документо-ориентированную СУБД. В докладе я расскажу про подход к версионированию данных, разработанный командой tarantool: использование avro схемы для валидации входных данных, преобразования от одной версии к другой в runtime, оптимальное хранение версий документа, изменение схемы данных без избыточности и проблем в предыдущих версиях.
Также я расскажу, как применять этот подход для создания бэкендов restful api прямо в базе данных (без дополнительной разработки). Для наглядности мы сравним получившуюся систему с популярными веб-фреймворками: django-rest-framework, go-restful, node.js и посмотрим, кто окажется в лидерах по производительности. Кроме того, во время выступления я покажу live пример создания restful api на стеке технологий tarantool в облаке amazon.
сравнение производительности СУБД MySQL и PostgreSQL для "типичной задачи стартапа".
Презентация сопровождала тестовую online-сессию и потому не содержит результатов тестирования.
Из презентации вы узнаете:
— как мы пришли к Go, оставив идею использования Node.js, Scala или Rust;
— про первый сервис, который мы написали на Go и запустили в продакшен;
— про ошибки, с которыми сталкивались под нагрузкой;
— про оптимизации, которые мы сделали и еще планируем сделать;
— про тестирование и предотвращение тестирования на продакшене (в частности, websocket'ов).
"Formal verification of C code" Efremov D.V.
The talk covers the issue of developing correct software applying one of the types of static code analysis. The speaker will also address the matters of using such methods, their weaknesses and limitations, as well as the results they can guarantee.
PHDays VII, PDUG section, Moscow, May 24 2017.
"Формальная верификация кода на языке Си" Ефремов Д.В.
Доклад посвящен разработке корректного программного обеспечения с применением одного из видов статического анализа кода. Будут освещены вопросы применения подобных методов, их слабые стороны и ограничения, а также рассмотрены результаты, которые они могут дать. На конкретных примерах будет продемонстрировано, как выглядят разработка спецификаций для кода на языке Си и доказательство соответствия кода спецификациям.
Доклад представлен на конференции PHDays VII (2017) 24 мая в секции PDUG.
Отказоустойчивая обработка 10M OAuth токенов на Tarantool / Владимир Перепели...Ontico
Многие современные высоконагруженные системы построены с использованием очередей. Не является исключением и внутренний сервис обработки OAuth токенов, который создала наша команда. Исключением является то, что и в качестве основного хранилища, и в качестве всех очередей используется один и тот же продукт - Tarantool. Более того, мы поставили себе амбициозную цель по отказоустойчивости - полную доступность сервиса, когда уходят любые два из трёх датацентров, и успешно её достигли.
При решении мы столкнулись с массой интересных инженерных задач и в нашем докладе мы расскажем вам о том, какие технологии и подходы использовались. В частности, рассмотрим более детально такие вещи, как:
- создание deadline очереди и проблемы, с ней связанные;
- создание кольцевой очереди;
- интеграция между собой шардинга, Raft и очередей;
- как мы победили split brain ;)
Основы индексирования и расширенные возможности EXPLAIN в MySQL / Василий Лук...Ontico
Индексы
- типы индексов;
- типы доступа к таблице;
- составные индексы (когда они работают);
- получение информации об индексе (show index; - описание формата);
- примеры с поиском по нескольким полям и сортировкой: какие индексы будут использоваться, а какие нет;
- что делать в случае нескольких условий по диапазону;
- как сервер выбирает индекс, который будет использован;
- директивы use/force/ignore index.
EXPLAIN
- как работает оптимизатор запросов;
- недостатки explain;
- explain extended;
- получение sql запроса, восстановленного из плана;
- формат выводимой explain информации:
-- что означает каждый столбец;
-- какие значения принимает (для extra только самые часто встречающиеся);
-- на что обратить внимание с точки зрения производительности;
-- как правильно читать план-разбор сложного примера с join-ами, подзапросами (обычными и from) и union-ами;
- новые возможности explain в последних версиях.
Практические примеры (исходный запрос, план, оптимизация, итоговый план) для разных случаев оптимизации:
1. добавление индексов;
2. эквивалентное изменение запроса: or --> union, подзапрос --> join;
3. разбиение запроса на несколько с сохранением промежуточных данных во временной таблице;
4. изменение структуры данных;
5. использование пользовательских переменных.
Доклад Антона Поварова на Tarantool Meetup. "Tarantool в Badoo: хранение исто...Badoo Development
Каждый день на badoo.com пользователи просматривают порядка 100 миллионов профилей других юзеров. Мы храним счетчики и полную историю посещений за последние 90 дней, с некоторой агрегацией - это около 5 миллиардов ивентов. Система обрабатывающая этот поток данных создана давно и пережила несколько инкарнаций, становясь все ближе к базе данных.
В какой-то момент мы решили перестать изобретать велосипед, отказались от демонов на C+sqlite, не стали делать на mysql-ях, редисах и мемкешах, а взяли и запилили на Tarantool.
Рассказываем почему Tarantool, как шардим, реплицируем (все просто) и как плавно это дело внедрили на живой системе без downtime.
«Парсим CSS», Роман Дворнов (Avito)
В ходе работы над CSSO мне пришлось погрузиться в процесс парсинга CSS. В результате парсер (тот, что в CSSO) был не раз переписан. Пришло время сделать его отдельным инструментом. Новый быстрый детальный парсер CSS, его AST, области применения и кое-что ещё.
Практика совместного использования Lua и C в opensource спам-фильтре Rspamd /...Ontico
В данном докладе я расскажу о том, как Lua помогает расширять функционал Rspamd, позволяя людям без особых знаний С писать эффективные правила фильтрации спама. Также будут рассмотрены особенности внедрения Lua в C код и основные приемы, применяемые при написании API для Lua приложений. Отдельное внимание будет уделено документации к Lua API, которая является одним из необходимых компонентов для opensource приложения.
Кроме этого, отдельная часть доклада посвящена анализу производительности Lua: использованию LuaJIT, сравнению вызовов C функций через FFI с традиционным вызовом, оптимизации строковых операций и таблиц в Lua.
В заключение будут рассмотрены некоторые открытые вопросы: будущее языка, наличие нескольких диалектов, статический анализ Lua стека, а также вопросы безопасности при JIT компиляции.
"Почему язык Lua — это интересно?", Ник Заварицкий, (Mail.ru Group)Badoo Development
DevConf 2016
"Почему язык Lua — это интересно?", Ник Заварицкий, (Mail.ru Group)
Lua — высокоуровневый язык, похожий на Python/JS, но существенно более простой. Он гибкий и при этом очень быстрый.
Возможно, вы слышали про OpenResty. Это решение для разработки Nginx модулей на Lua. Cloudflare, крупнейший CDN/anti-DDOS провайдер, как раз работает на OpenResty.
На скоростях 10/100Gb сетевой стек в ядре Linux становится “узким местом”. Есть ряд технологий для выноса обработки пакетов из ядра в userspace; например Snabb Switch. Последний написан целиком на Lua и справляется с потоком в 200+Gb.
Как на счет менее экзотических применений? На Lua есть свой Node.js (luvit.io). Lua есть в БД Tarantool. У нас была задача валидации данных на соответствие схеме; мы переписали валидацию с Си на Lua и получили ускорение в 4 раза (за счет JIT-компиляции).
Lua набирает популярность и он объективно хорош. Что будет в докладе:
1) Краткое введение в Lua: мы убедимся в том, что язык простой и там есть все необходимое на каждый день.
2) Секция Lua WAT (смешные контр-интуитивные особенности языка, 0 and 1 == 0)
3) Поговорим о том, почему Tarantool использует LuaJIT, а не V8.
4) Разберемся, почему именно Lua такой быстрый, и как работает трассирующий JIT-компилятор.
Разработка real-time приложений с RethinkDB / Илья Вербицкий (Независимый кон...Ontico
RethinkDB - это распределенное документо-ориентированное хранилище данных с открытым исходным кодом. Данная система ориентирована на разработку систем обработки данных реального времени, позволяя клиентскому приложению подписываться на изменение тех или иных данных.
В данном докладе я бы хотел осветить не только вопросы разработки приложений на базе RethinkDB, но и поговорить о том, как все это работает. Мы поговорим о ReQL (язык запросов), “changefeeds”, индексах, шардинге, репликациях, а также затронем вопросы особенностей проектирования баз данных под данную платформу.
PostgreSQL: практические примеры оптимизации SQL-запросов / Иван Фролков (Po...Ontico
Довольно часто как адинистраторы, так и разработчики жалуются на низкую производительность приложений, работающих с базой данных, и нередко при этом ищут решения возникших проблем с помощью различных настроек как СУБД, так и операционной системы, пренебрегая при этом самым действенным способом - оптимизацией запросов к собственно БД.
Тому, как понимать, где же узкие места, и как их можно попробовать избежать на примере PostgreSQL и посвящен этот доклад.
Хранение json-документов в Tarantool / Андрей Дроздов (Mail.ru Group)Ontico
AVRO - система сериализации данных, созданная сообществом Apache Hadoop. Включает в себя различные структуры данных, компактный формат хранения в бинарном виде, язык описания схем данных и правила миграции данных между разными версиями схемы. С помощью инструментария AVRO можно валидировать данные по схеме, совершать преобразования из одной версии в другую и даже восстанавливать неполные данные при помощи значений по-умолчанию. Поддержка Apache AVRO была добавлена в Tarantool в этом году и уже используются в production.
Tarantool можно использовать как документо-ориентированную СУБД. В докладе я расскажу про подход к версионированию данных, разработанный командой tarantool: использование avro схемы для валидации входных данных, преобразования от одной версии к другой в runtime, оптимальное хранение версий документа, изменение схемы данных без избыточности и проблем в предыдущих версиях.
Также я расскажу, как применять этот подход для создания бэкендов restful api прямо в базе данных (без дополнительной разработки). Для наглядности мы сравним получившуюся систему с популярными веб-фреймворками: django-rest-framework, go-restful, node.js и посмотрим, кто окажется в лидерах по производительности. Кроме того, во время выступления я покажу live пример создания restful api на стеке технологий tarantool в облаке amazon.
сравнение производительности СУБД MySQL и PostgreSQL для "типичной задачи стартапа".
Презентация сопровождала тестовую online-сессию и потому не содержит результатов тестирования.
Из презентации вы узнаете:
— как мы пришли к Go, оставив идею использования Node.js, Scala или Rust;
— про первый сервис, который мы написали на Go и запустили в продакшен;
— про ошибки, с которыми сталкивались под нагрузкой;
— про оптимизации, которые мы сделали и еще планируем сделать;
— про тестирование и предотвращение тестирования на продакшене (в частности, websocket'ов).
"Formal verification of C code" Efremov D.V.
The talk covers the issue of developing correct software applying one of the types of static code analysis. The speaker will also address the matters of using such methods, their weaknesses and limitations, as well as the results they can guarantee.
PHDays VII, PDUG section, Moscow, May 24 2017.
"Формальная верификация кода на языке Си" Ефремов Д.В.
Доклад посвящен разработке корректного программного обеспечения с применением одного из видов статического анализа кода. Будут освещены вопросы применения подобных методов, их слабые стороны и ограничения, а также рассмотрены результаты, которые они могут дать. На конкретных примерах будет продемонстрировано, как выглядят разработка спецификаций для кода на языке Си и доказательство соответствия кода спецификациям.
Доклад представлен на конференции PHDays VII (2017) 24 мая в секции PDUG.
Доклад посвящен разработке корректного программного обеспечения с применением одного из видов статического анализа кода. Будут освещены вопросы применения подобных методов, их слабые стороны и ограничения, а также рассмотрены результаты, которые они могут дать. На конкретных примерах будет продемонстрировано, как выглядят разработка спецификаций для кода на языке Си и доказательство соответствия кода спецификациям.
Зачем тестировать? Тестирование в интерпретаторе и доктесты. Модуль unittest. Пакет py.test - на порядок лучше. Тестирование свойств и пакет hypothesis.
Евгений Рыжков, Андрей Карпов Как потратить 10 лет на разработку анализатора ...Platonov Sergey
Кто-то верно подметил, что разработчики статических анализатора часто сталкиваются с "проблемой айсберга". Им сложно объяснить разработчикам, почему сложно написать и развивать статические анализаторы кода. Дело в том, что сторонние наблюдатели видят только вершину всего процесса, так как им доступен для изучения только простой интерфейс, который предоставляют анализаторы для взаимодействия с миром. Это ведь не графический редактор с сотнями кнопок и рычажков. В результате и возникает ощущение, что раз прост интерфейс взаимодействия, то и прост продукт. На самом деле статические анализаторы кода — это сложные программы, в которых живут и взаимодействуют разнообразнейшие методы поиска дефектов. В них реализуется множество экспертные системы, выдающие заключения о коде на основе как точных, так и эмпирических алгоритмах. В парном докладе, основатели анализатора PVS-Studio расскажут о том, как незаметно потратить 10 лет, чтобы написать хороший анализатор. Дьявол кроется в деталях!
Лекция #5. Введение в язык программирования Python 3Яковенко Кирилл
Web-программирование
Лекция #5. Введение в язык программирования Python 3
Цикл лекций читается в Омском государственном университете им. Ф.М.Достоевского на факультете компьютерных наук.
Лектор: Яковенко Кирилл Сергеевич.
Руслан Гроховецкий "Как Python стал делать погоду в Яндексе"Yandex
2 июля 2011, Я.Субботник в Екатеринбурге
Руслан Гроховецкий "Как Python стал делать погоду в Яндексе"
О докладе:
Про Python и Django: зачем нужна красота и простота перфекционистам с дедлайнами, на примере Яндекс.Погоды.
Когда число сервисов, которые делаются в Яндексе, стало возрастать, дедлайны — поджимать, а от процесса разработки требовалось стать более гибким, возникла потребность в свежих решениях. В докладе на примере Яндекс.Погоды рассказывается, как в Яндексе делают сервисы с помощью языка Python и веб-фреймворка Django.
Similar to 2014-11-01 03 Николай Линкер. Open your clojure (20)
Алексей рассказывает, почему Тим Кук верит в светлое будущее дополненной реальности. Объясняет, как работает ARKit, и показывает несколько вдохновляющих примеров.
Речь пойдет о фреймворке под названием Texture (a.k.a AsyncDisplayKit/ASDK). Создатели этого фреймворка пытаются изменить старый синхронный способ работы с UI на современный многопоточный. Спикер расскажет о том, как устроен этот фреймворк, о его преимуществах и недостатках, подводных камнях и реальном опыте использования. После этого доклада все, кто его слушали, смогут создавать приложения на основе Texture и быть уверенными в том, что экран будет обновляться со скоростью 60FPS независимо от сложности UI.
Илья Сиганов, разработчик 7bits, аспирант по Информатике и Выч. Технике ОмГУ ФКН
Вы наверное наслышаны об успехах так называемого машинного обучения. Его используют для перевода текстов, синтеза голоса, распознавания речи, показа рекламы. Да чему только уже не научили компьютер! Мне стало безумно интересно как в принципе происходит обучение компьютера, каким задачам его можно обучить, а каким нельзя, по крайней мере пока.
В своей лекции я расскажу на настоящих примерах то, как может проходить обучение, с какими трудностями сталкиваются дата-саентисты и к чему всё это машинное обучение приведёт
2017 04-08 03 Максим Верзаков. Docker — жизнь, вселенная и все остальноеОмские ИТ-субботники
Максим Верзаков, разработчик Crystalnix
Мы не боимся использовать Docker, и неплохо в этом преуспеваем. Я расскажу, как еще можно использовать Docker и почему это удобный инструмент не только для разработки, но и для жизни.
2016-12-03 01 Вадим Литвинов. От 2D к 3D обзор методов реконструкции поверхно...Омские ИТ-субботники
Докладчик: Вадим Литвинов, Hola Networks Ltd., Новосибирск.
«Надоели Ангуляры и Аджайлы? Устал от Scrum и NoSQL? Тогда приходи и мы погрузимся в увлекательный мир математики и увидим как с её помощью можно просто и элегантно решать сложные задачи.
Конкретно на этом докладе мы поговорим о том, как воссоздать 3D модель поверхности по видеозаписи.
О себе: родился и живу в Новосибирске, но молодость свою провел во Франции, где я прожил суммарно 15 лет. Несмотря на то что я закончил институт по специальности
“Компьютерные сети и связь”, админ из меня не вышел. Занимался я в основном
научными вычислениями. Защитил диссер по машинному зрению. Работал над многими интересными вещами от расчетов сопромата до робототехники. Самый мой любимый проект это разработка прототипа машины без водителя в 2010/11 годах. В настоящий момент работаю над Video CDN нового поколения в Hola Networks Ltd.»
Докладчик: Алексей Городецкий, ОмГУ, Great Fruit, Омск.
«Закончил ОмГУ ФКН, на данный момент обучаюсь в аспирантуре там же. В ИТ за деньги лет 6 — с осени первого курса. Так вышло, что занимался абсолютно разными вещами — админил и патчил Asterisk в службе такси, участвовал в разработке складских систем для небезызвестных колбасных картелей (см. программировал в морозилках и тому подобные страдания), занимался веб разработкой. На данный момент работаю в ОмГУ — занимаюсь корпоративными системами и электронными сервисами студента. В качестве развлечений участвую порой в хакатонах (обычно в команде с небезызвестным человеком-хакатоном), а так же в game джемах.
Как и любой другой сегодняшний программист, программировал на довольно большом количестве языков — на функциональных, на скриптовых, на мейнстримовых. Честно говоря, результат меня совсем не удовлетворил, как, думаю, и многих многих других. Именно по этой причине сегодня так много молодых и по-своему интересных языков. По моему мнению, сегодняшние мейнстримовые языки имеют 4 очень серьезные проблемы:
— менеджмент памяти
— проблема простоты, минимальности покрытия возможностями при сохранении выразительности
— композиция, модульность, масштабируемость
— возможности unit тестирования
В аспирантуре занимаюсь изучением этих вопросов. В своем докладе расскажу про инфраструктуру для создания компиляторов LLVM, некогда созданную аспирантом из Иллиноиса, Крисом Латтнером, сейчас работающим в Apple Inc. Логическим продолжением его деятельности стало создание языка Swift. Мы рассмотрим сегодняшние методологии построения компиляторов, используя инфраструктуру LLVM. На примере создания фронтенда достаточно простого языка, мы получим представление о системе команд LLVM, об утилитах, входящих в стандартный пакет LLVM, о FFI с libc и прочих скользких ситуациях, о которых часто представление имеют только системные программисты.
Если вас интересуют языки программирования, а также, возможно, накопилось некоторое количество боли и стресса от использования тех языков, с которыми вы вынуждены работать, то добро пожаловать на баркемп, на котором мы и обсудим такие вещи как:
— более подробно о LLVM и компиляторах
— перегрузка операторов
— вывод типов
Если останутся силы, то мы сможем обсудить 4 проблемы, обозначенных мною выше, тщательно запротоколировать все мнения и, возможно, прийти к какому-то консенсусу.»
Докладчик: Евгений Тюменцев, HWdTech, Омск.
«Будет дано небольшое введение в теорию формальных языков программирования. Разобран пример построения транслятора для небольшого языка программирования и рассказано, как это можно применять на проектах или, например, при выполнении лабораторных работ в ВУЗе
Опыт работы в ИТ-отрасли 12 лет. Был программистом, системным архитектором, руководителем проектов. Специализируюсь на разработке серверных, многопоточных, высокопроизводительных приложений.
16 лет преподаю в ОмГУ (ИМИТ, ФКН). Читаемые дисциплины: Проектирование ПО, разработка серверов и серверных приложений. Руковожу курсовыми и дипломными работами.»
2016-11-12 02 Николай Линкер. Чему Java может поучиться у Haskell и наоборотОмские ИТ-субботники
Николай Линкер, Backend-developer, ISS Art
С детства любил математику, это и определило мою профессию. Закончил матфак ОмГУ, уже 16 лет разрабатываю ПО, постоянно ищу новые решения. Довелось поработать с широким диапазоном языков и предметных областей. Детально разбирался с графическими библиотеками, компиляторами и сетевыми протоколами. В докладе расскажу, что заслуживает распространения из Haskell в традиционные языки, вроде Java, и что в Java удалось лучше, чем в Haskell.
2016-11-12 03 Максим Дроздов. Навести порядок быстро, или как спасти оценки н...Омские ИТ-субботники
Максим Дроздов, Project Manager, ISS Art.
Работаю в ИТ более 8 лет. Руковожу большими и интересными проектами. Навожу порядок в процессах и снижаю энтропию :) Professional Scrum Master. Работал программистом и люблю это дело. Образование — прикладные математика и физика.
Источник радости для меня — настраивать процессы и видеть слаженную команду, где учитывают мнение каждого участника и всю энергию направляют на доставку качественного продукта в соответствии с целями проекта.
В своем докладе хочу показать, что навести порядок в сложном проекте могут простые и широко известные средства, которые нужно правильно применять.
Непомнящих Егор, Web-developer, ISS Art.
JS, Java, Iron Maiden. Практически вся моя жизнь связана так или иначе с IT — с 11 класса и до 5 курса я лидировал на олимпиадах, но погрузился в профессию уже на работе в ISS Art’е. Мною реализованы ряд интересных проектов — от мелких поделок на гитхабе, до крупных бизнес-порталов, системы мониторинга и прогнозирования состояния оборудования, векторного графического редактора для Flash-версии Google Maps, сложного плагина для SketchUp на Ruby и Unity-клиента для просмотра зданий под десктопными и мобильными платформами.
В общем, повидал всякие front-end’ы, не только Web. Буду рад поделиться опытом с коллегами по цеху. В докладе расскажу о том, как сократить объем кода вашего front-end'а на 7%.
11. Функциональный
•Функции –главная движущая сила
•Неизменяемые коллекции
•Структуры данных объявляются, не присваиваются
•Контролируемое изменение данных (atoms, STM)
12. Функциям здесь хорошо
•(*42 42)
•(fn [x] (* x x))
•((fn [x] (* x x)) 42) ; => выдаст число
•(def sq (fn [x] (* x x)))
•(defn sq [x] (* x x))
•#(* % %) ; лямбдочка, 1 параметр
•#(* %1 %2) ; лямбдочка, 2 параметр
15. Как выглядит программа на Clojure
•Вначале идёт неймспейс
•Потом декларация(-ии) require
16. Как выглядит программа на Clojure
•Потом определяются функции, константы и может быть макросы
17. Тёплое ламповое коммьюнити
•Замечательный доклад, программирование в реальном времениhttp://jokerconf.com/#ryzhikov
•http://clojure.org
•http://tryclj.org
•Коммьюнити менее фрагментировано по сравнению со Scala