Python AST / Николай Карелин / VPI Development Center [Python Meetup 27.03.15]Python Meetup
Python AST: между исходным текстом и байт-кодом / Николай Карелин / Системный архитектор VPI Development Center
Николай познакомит слушателей с деталями устройства Python AST и, в частности, расскажет некоторые интересные факты о работе диалекта Hy.
Python Meetup - встречи минского сообщества любителей языка программирования Python.
Присоединяйся к нам!
Мы в twitter: https://twitter.com/pythonminsk
Мы на youtube: http://www.youtube.com/pythonMinsk
Мы на slideshare: http://www.slideshare.net/MinskPythonMeetup
Python AST / Николай Карелин / VPI Development Center [Python Meetup 27.03.15]Python Meetup
Python AST: между исходным текстом и байт-кодом / Николай Карелин / Системный архитектор VPI Development Center
Николай познакомит слушателей с деталями устройства Python AST и, в частности, расскажет некоторые интересные факты о работе диалекта Hy.
Python Meetup - встречи минского сообщества любителей языка программирования Python.
Присоединяйся к нам!
Мы в twitter: https://twitter.com/pythonminsk
Мы на youtube: http://www.youtube.com/pythonMinsk
Мы на slideshare: http://www.slideshare.net/MinskPythonMeetup
Работа с ошибками. Как ловить исключения и что потом с ними делать (Григорий ...IT-Доминанта
Григорий Петров - Технический евангелист / NPTV / Россия, Москва
В своем докладе Григорий расскажет о том, зачем в программах обрабатывать ошибки, какие они бывают и что нам предлагает python для работы с ними.
http://www.it-sobytie.ru/events/2040
Очередной скучный доклад про логгированиеPython Meetup
Стас Рудаков, компания СООО "Гейм Стрим"/Wargaming.net
Значение логов очень часто недооценивается, а зря. Доклад с оживленным диспутом со всеми участниками митапа, чтобы разобраться: как, куда и зачем писать логи. Помимо этого затронут вопрос, как из логов выжать больше информации.
"Модифицируй это!" или "Больше магии Python с помощью изменения AST"PyNSK
Докладчик:
Александр Маршалов (ЦФТ)
Описание: Мы узнаем, что из себя представляет дерево синтаксического разбора (AST / Abstract Syntax Tree) в языке Python
и какие магические возможности можно получить с помощью модификации AST.
Поиск паттернов (Data Mining: Pattern Discovery) / Константин Игнатов (Qrator...Ontico
HighLoad++ 2017
Зал «Найроби+Касабланка», 7 ноября, 11:00
Тезисы:
http://www.highload.ru/2017/abstracts/3037.html
Паттерн — это повторяющаяся структура в данных. Это может быть подмножество, подстрока, подпоследовательность, последовательность или множество подстрок, подграф, элемент изображения или видео-фрагмент.
Чаще всего находят все достаточно часто встречающиеся паттерны в датасете и сортируют их по частоте появления. Так, например, можно найти наиболее встречаемые юзкейсы в логах работы системы.
...
РусКрипто CTF 2010 Full Disclosure (мастер класс)Dmitry Evteev
В презентации рассмотрены следующие вопросы:
- технические и организационные подробности подготовки и проведения РусКрипто CTF 2010
- заложенные уязвимости, пути их обнаружения и эксплуатации
- хронология событий на РусКрипто CTF 2010 и не найденные игроками уязвимости
Артем Первухин "Язык программирования GO"
В докладе будет рассказано, чем сможет заинтересовать Python-разработчика язык программирования Go. Будут описаны базовые идиомы языка Go и даны ответы на следующие вопросы: Насколько применим к Go "Zen of Python"? Какая у этого языка область применения? В чём можно выиграть, использовав Go вместо Python?
"Почему язык 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-компилятор.
Распространено мнение, что навык пакетирования своих наработок необходим только гуру в Open Source. Стас развенчал этот миф и показал несколько практических задач, решаемых при помощи пакетирования кода.
Aviasales: миграция поискового движка в docker / Дмитрий Кузьменков (Aviasales)Ontico
* Yasen (Yet Another Search Engine) – первоначальная архитектура поискового движка.
* Немного о старой схеме деплоя и её боли – buildbot, chef, git, monit, haproxy.
* Docker – простота и мощь в одной команде.
* Настраиваем запуск демона – что нужно знать.
* Dockerfile – проблемы и решения.
* Swarm, Kubernetes, Rancher – обзор вариантов оркестрации.
* Простой путь – docker-compose, и как его готовить.
* Разбираемся с сетью – bridge, host, overlay, macvlan, none.
* Root или не root в контейнере? Выбираем подходящее решение.
* Shared volumes и проблема права доступа к файлам.
* User namespaces – как и зачем?
* Docker и linux capabilities – добавляем безопасности.
* Нюансы ограничения ресурсов контейнеру: memory, cpu, swap.
* Stateful & Stateless в docker
* Автоматизация деплоя через docker-compose.
* Итоговая архитектура и процесс выкатки в production.
Докладчик:
Владимир Донец (kwimba.ru)
Описание: Слышали про магию в Python? Одно из магических заклинаний называется дескрипторы. Мощная фича языка, которая позволяет определять свое поведение атрибута объекта при доступе к этому атрибуту.
Сложно звучит? А вы знали, что дескрипторами уже наверняка пользовались, если хотя бы раз писали на Python. Я расскажу о том, что такое дескрипторы и как их осознанно можно применять в собственном коде.
Видео доклада: https://www.youtube.com/watch?v=slnQBoxsHPU
Rust - системный язык программирования, который быстро исполняется, предотвращает почти все падения, и устраняет гонки по данным.
Как он этого достигает? Про это доклад.
Сравнение форматов и библиотек сериализации / Антон Рыжов (Qrator Labs)Ontico
В эпоху распределённых архитектур и микросервисов как никогда актуальными становятся вопросы — как эффективно сериализовать и передать данные. Большинство решает данный вопрос просто — используют стандартный, универсальный и всем понятный формат JSON. Другие же, ориентируясь на производительность, ищут в интернете бенчмарки и выбирают protobuf или msgpack.
Мы протестировали разные реализации статически (thrift, protocol buffers) и динамически (json, msgpack) типизированных протоколов для python; сравнили их производительность в разных сценариях, возможности, внутреннее устройство, удобство разработки.
Я расскажу о результатах нашего исследования, особенностях "приготовления" библиотек и выявленных подводных камнях.
[Defcon Russia #29] Михаил Клементьев - Обнаружение руткитов в GNU/LinuxDefconRussia
Руткиты в мире основанных на ядре Linux операционных систем уже не являются редкостью. Рассказ будет о том, как попытки в современных реалиях определить то, скомпрометирована ли система, привели к неожиданному результату.
Оптимизация высоконагруженных ASP.NET приложений, работающих с MS SQL Server ...Stas Vyschepan
Вы разрабатываете веб-приложения и используете хранимые процедуры? Вы пишите SELECT … WITH(NOLOCK)? Вы считаете, что ORMы снижают быстродействие приложений? Тогда этот доклад для вас!
В докладе будут развенчаны популярные мифы о применении библиотек Object-Relational Mapping (ORM) в ASP.NET при работе с Microsoft SQL Server. Также будут рассмотрены конкретные методики увеличения быстродействия работы с данными в веб-приложениях.
Докладчик:
Александр Сапронов
Описание:
Мы рассмотрим популярные библиотеки для функционального программирования на Python — fn.py, functools, itertools, funcy, hask, Toolz. Узнаем возможности каждой из библиотеки, а также как в динамическом язык имитировать мощную систему типов. Затронем характеристики функционального программирования и проверим помогают ли библиотеки выполнить.
Работа с ошибками. Как ловить исключения и что потом с ними делать (Григорий ...IT-Доминанта
Григорий Петров - Технический евангелист / NPTV / Россия, Москва
В своем докладе Григорий расскажет о том, зачем в программах обрабатывать ошибки, какие они бывают и что нам предлагает python для работы с ними.
http://www.it-sobytie.ru/events/2040
Очередной скучный доклад про логгированиеPython Meetup
Стас Рудаков, компания СООО "Гейм Стрим"/Wargaming.net
Значение логов очень часто недооценивается, а зря. Доклад с оживленным диспутом со всеми участниками митапа, чтобы разобраться: как, куда и зачем писать логи. Помимо этого затронут вопрос, как из логов выжать больше информации.
"Модифицируй это!" или "Больше магии Python с помощью изменения AST"PyNSK
Докладчик:
Александр Маршалов (ЦФТ)
Описание: Мы узнаем, что из себя представляет дерево синтаксического разбора (AST / Abstract Syntax Tree) в языке Python
и какие магические возможности можно получить с помощью модификации AST.
Поиск паттернов (Data Mining: Pattern Discovery) / Константин Игнатов (Qrator...Ontico
HighLoad++ 2017
Зал «Найроби+Касабланка», 7 ноября, 11:00
Тезисы:
http://www.highload.ru/2017/abstracts/3037.html
Паттерн — это повторяющаяся структура в данных. Это может быть подмножество, подстрока, подпоследовательность, последовательность или множество подстрок, подграф, элемент изображения или видео-фрагмент.
Чаще всего находят все достаточно часто встречающиеся паттерны в датасете и сортируют их по частоте появления. Так, например, можно найти наиболее встречаемые юзкейсы в логах работы системы.
...
РусКрипто CTF 2010 Full Disclosure (мастер класс)Dmitry Evteev
В презентации рассмотрены следующие вопросы:
- технические и организационные подробности подготовки и проведения РусКрипто CTF 2010
- заложенные уязвимости, пути их обнаружения и эксплуатации
- хронология событий на РусКрипто CTF 2010 и не найденные игроками уязвимости
Артем Первухин "Язык программирования GO"
В докладе будет рассказано, чем сможет заинтересовать Python-разработчика язык программирования Go. Будут описаны базовые идиомы языка Go и даны ответы на следующие вопросы: Насколько применим к Go "Zen of Python"? Какая у этого языка область применения? В чём можно выиграть, использовав Go вместо Python?
"Почему язык 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-компилятор.
Распространено мнение, что навык пакетирования своих наработок необходим только гуру в Open Source. Стас развенчал этот миф и показал несколько практических задач, решаемых при помощи пакетирования кода.
Aviasales: миграция поискового движка в docker / Дмитрий Кузьменков (Aviasales)Ontico
* Yasen (Yet Another Search Engine) – первоначальная архитектура поискового движка.
* Немного о старой схеме деплоя и её боли – buildbot, chef, git, monit, haproxy.
* Docker – простота и мощь в одной команде.
* Настраиваем запуск демона – что нужно знать.
* Dockerfile – проблемы и решения.
* Swarm, Kubernetes, Rancher – обзор вариантов оркестрации.
* Простой путь – docker-compose, и как его готовить.
* Разбираемся с сетью – bridge, host, overlay, macvlan, none.
* Root или не root в контейнере? Выбираем подходящее решение.
* Shared volumes и проблема права доступа к файлам.
* User namespaces – как и зачем?
* Docker и linux capabilities – добавляем безопасности.
* Нюансы ограничения ресурсов контейнеру: memory, cpu, swap.
* Stateful & Stateless в docker
* Автоматизация деплоя через docker-compose.
* Итоговая архитектура и процесс выкатки в production.
Докладчик:
Владимир Донец (kwimba.ru)
Описание: Слышали про магию в Python? Одно из магических заклинаний называется дескрипторы. Мощная фича языка, которая позволяет определять свое поведение атрибута объекта при доступе к этому атрибуту.
Сложно звучит? А вы знали, что дескрипторами уже наверняка пользовались, если хотя бы раз писали на Python. Я расскажу о том, что такое дескрипторы и как их осознанно можно применять в собственном коде.
Видео доклада: https://www.youtube.com/watch?v=slnQBoxsHPU
Rust - системный язык программирования, который быстро исполняется, предотвращает почти все падения, и устраняет гонки по данным.
Как он этого достигает? Про это доклад.
Сравнение форматов и библиотек сериализации / Антон Рыжов (Qrator Labs)Ontico
В эпоху распределённых архитектур и микросервисов как никогда актуальными становятся вопросы — как эффективно сериализовать и передать данные. Большинство решает данный вопрос просто — используют стандартный, универсальный и всем понятный формат JSON. Другие же, ориентируясь на производительность, ищут в интернете бенчмарки и выбирают protobuf или msgpack.
Мы протестировали разные реализации статически (thrift, protocol buffers) и динамически (json, msgpack) типизированных протоколов для python; сравнили их производительность в разных сценариях, возможности, внутреннее устройство, удобство разработки.
Я расскажу о результатах нашего исследования, особенностях "приготовления" библиотек и выявленных подводных камнях.
[Defcon Russia #29] Михаил Клементьев - Обнаружение руткитов в GNU/LinuxDefconRussia
Руткиты в мире основанных на ядре Linux операционных систем уже не являются редкостью. Рассказ будет о том, как попытки в современных реалиях определить то, скомпрометирована ли система, привели к неожиданному результату.
Оптимизация высоконагруженных ASP.NET приложений, работающих с MS SQL Server ...Stas Vyschepan
Вы разрабатываете веб-приложения и используете хранимые процедуры? Вы пишите SELECT … WITH(NOLOCK)? Вы считаете, что ORMы снижают быстродействие приложений? Тогда этот доклад для вас!
В докладе будут развенчаны популярные мифы о применении библиотек Object-Relational Mapping (ORM) в ASP.NET при работе с Microsoft SQL Server. Также будут рассмотрены конкретные методики увеличения быстродействия работы с данными в веб-приложениях.
Докладчик:
Александр Сапронов
Описание:
Мы рассмотрим популярные библиотеки для функционального программирования на Python — fn.py, functools, itertools, funcy, hask, Toolz. Узнаем возможности каждой из библиотеки, а также как в динамическом язык имитировать мощную систему типов. Затронем характеристики функционального программирования и проверим помогают ли библиотеки выполнить.
Руслан Гроховецкий "Как Python стал делать погоду в Яндексе"Yandex
2 июля 2011, Я.Субботник в Екатеринбурге
Руслан Гроховецкий "Как Python стал делать погоду в Яндексе"
О докладе:
Про Python и Django: зачем нужна красота и простота перфекционистам с дедлайнами, на примере Яндекс.Погоды.
Когда число сервисов, которые делаются в Яндексе, стало возрастать, дедлайны — поджимать, а от процесса разработки требовалось стать более гибким, возникла потребность в свежих решениях. В докладе на примере Яндекс.Погоды рассказывается, как в Яндексе делают сервисы с помощью языка Python и веб-фреймворка Django.
Дмитрий Прокопцев, Яндекс
Речь пойдёт о, наверное, одном из самых важных и в то же время сложных нововведений в С++11 — R-ссылках (rvalue references). Мы рассмотрим базовые правила работы с такими ссылками и связанные с ними новые концепции языка: перемещение классов, универсальные ссылки и перенаправление вызовов.
Мы все допускаем ошибки при программировании и тратим массу времени на их устранение.
Один из методов который позволяет быстро диагностировать дефекты – статический анализ исходного кода.
Языки C, C++ и C++0x как набор ножей по дереву. С их помощью создаются великолепные изделия, но немного неаккуратности и можно глубоко порезаться. Одной из самых ранних методик обнаружения ошибок в коде программ является статический анализ кода. Запуская анализ сразу после написания нового кода или во время ночных сборок, можно выявить множество ошибок еще до этапа тестирования. Это сокращает стоимость и время их исправления. Также могут быть обнаружены дефекты, редко проявляющие себя, которые могут являться головной болью на протяжении многих месяцев сопровождения программы.
В докладе будет продемонстрировано множество примеров ошибок в известных open source программах и библиотеках, которые можно обнаружить с помощью статических анализаторов.
Обобщенное программирование в C++ или как сделать свою жизнь проще через стра...corehard_by
Обобщенное программирование - это подход к программированию, когда алгоритм пишется без указания конкретных типов данных. Используя данный подход можно значительно увеличить количество повторно используемого кода. В C++ данный подход реализуется за счет механизма шаблонов. В данном докладе рассмотрим некоторые возможности по обобщенному программированию, которые предоставляет C++. На конкретных примерах рассмотрим, как они могут упростить нам жизнь и с какими трудностями приходится сталкиваться при их использовании.
3. Томита-парсер
Инструмент для извлечения фактов
• В основе парсера лежит алгоритм GLR – парсинга
(http://ru.wikipedia.org/wiki/GLR-парсер)
• Автор алгоритма - Масару Томита, мы назвали
парсер в его честь.
• Извлечение фактов - извлечение структурированных
данных из текста на естественном языке.
• Извлечение фактов происходит при помощи
контекстно-свободных грамматик и словарей
ключевых слов.
5. Что делает томита-парсер?
Томита-парсер
Тяжёлый труд
облагораживает тяжёлый | труд
tomitaparser.exe
хороший | человек
хорошего человека
Исходный текст Факты
словари
и грамматики
6. Наша задача
Заполнение «карточки фильма»
информацией, извлеченной из
текста на естественном языке
название
жанр
год
оригинальное название
режиссер
7. Откуда берется исходный текст?
• из одного текстового файла
• из нескольких текстовых файлов
• папка
• .tar архив
• из STDIN
8. Исходный текст input.txt
Фильм Оливера Стоуна "Александр" основан на
реальной жизни одного из самых выдающихся людей в
истории.
«Титаник» (Titanic) — фильм-катастрофа 1997 года,
снятый Джеймсом Кэмероном, в котором показана
гибель легендарного лайнера «Титаник». Главные роли
в фильме исполнили Кейт Уинслет (Роза Дьюитт
Бьюкейтер) и Леонардо Ди Каприо (Джек Доусон).
«Неприкасаемые» (Intouchables) — трагикомедийный
фильм 2011 года, основанный на реальных событиях.
Главные роли исполняют Франсуа Клюзе и Омар Си,
удостоенный за эту актёрскую работу национальной
премии «Сезар».
9. Правила в Томите
Грамматика состоит из правил, которые
описывают цепочки
В правиле есть левая и правая часть,
разделенные символом ->
В левой части стоит один нетерминал, правая
состоит из терминалов и нетерминалов.
S -> Noun;
16. Результат output.txt
Фильм Оливера Стоуна "Александр" основан на реальной
жизни одного из самых выдающихся людей в истории .
"Титаник" ( Titanic ) — фильм-катастрофа 1997 года ,
снятый Джеймсом Кэмероном , в котором показана
гибель легендарного лайнера "Титаник" .
Главные роли в фильме исполнили Кейт Уинслет ( Роза
Дьюитт Бьюкейтер ) и Леонардо Ди Каприо ( Джек Доусон
).
«Неприкасаемые" ( Intouchables ) — трагикомедийный
фильм 2011 года , основанный на реальных событиях .
Главные роли исполняют Франсуа Клюзе и Омар Си ,
удостоенный за эту актёрскую работу национальной
премии "Сезар" .
24. Операторы
Позволяют получить более удобную сокращенную
запись правил грамматики
* — символ повторяется 0 или более раз
S -> Adj* Noun;
=
S -> Noun;
S -> Adj Noun;
S -> Adj Adj Noun;
…
25. Операторы
+ — символ повторяется 1 или более раз
S -> Adj+ Noun;
=
S -> Adj Noun;
S -> Adj Adj Noun;
S -> Adj Adj Adj Noun;
…
26. Операторы
() — символ входит в правило 0 или 1 раз
S -> (Adj) Noun;
=
S -> Noun;
S -> Adj Noun;
33. Результат output.txt
Фильм Оливера Стоуна "Александр" основан на реальной жизни одного из
самых выдающихся людей в истории .
Film
{
Name = Оливер Стоуна "Александр“
}
"Титаник" ( Titanic ) — фильм-катастрофа 1997 года , снятый Джеймсом
Кэмероном , в котором показана гибель легендарного лайнера "Титаник" .
Film
{
Name = Titanic
}
Film
{
Name = 1997
}
Film
{
Name = Джеймс Кэмероном
}
34. Результат output.txt
Главные роли в фильме исполнили Кейт Уинслет (
Роза Дьюитт Бьюкейтер ) и Леонардо Ди Каприо (
Джек Доусон ) .
Film { Name = Кейт Уинслет}
Film { Name = Роза Дьюитт Бьюкейтер}
Film { Name = Леонардо Ди Каприо}
Film { Name = Джек Доусон}
51. Посмотрим еще раз на входной
файл
Фильм Оливера Стоуна "Александр" основан на реальной
жизни одного из самых выдающихся людей в истории.
"Титаник" (Titanic) — фильм-катастрофа 1997 года, снятый
Джеймсом Кэмероном, в котором показана гибель
легендарного лайнера «Титаник». Главные роли в фильме
исполнили Кейт Уинслет (Роза Дьюитт Бьюкейтер) и
Леонардо Ди Каприо (Джек Доусон).
«Неприкасаемые»(Intouchables) — трагикомедийный
фильм 2011 года, основанный на реальных событиях.
Главные роли исполняют Франсуа Клюзе и Омар Си,
удостоенный за эту актёрскую работу национальной
премии «Сезар».
52. Надо учесть:
1. После названия фильма на русском может идти
оригинальное название в скобках. А может и не
идти
2. Между названием и дескриптором может стоять
тире
3. Дескриптор может быть как после, так и перед
названием
66. Включение грамматик
Правила, которые могут использоваться во многих
грамматиках, целесообразно выделять в отдельную
грамматику.
Например, грамматика дат.
74. Томита-парсер
Что можно извлечь?
Объекты в тексте: Связи между этими объектами:
- даты - События
- адреса
- телефоны - Мнения и отзывы
- ФИО
- название товара - Контактные данные
- действие
- тональность… - Объявления
Объект 1 Объект 2 Тип связи
Яндекс Аркадий Волож директор
75. Извлечение фактов в Яндексе
В проекте Яндекс.Новости
для извлечения адресов
для геопривязки
сюжетов
для выделения
компаний и персон