Redis – это инструмент, который должен быть в арсенале любого разработчика. В докладе Роман расскажет, как Redis помогает Todoist обслуживать сотни тысяч пользователей и подкупает простотой и изяществом своих решений.
Автор: Роман Иманкулов (компания Doist.io).
Мы решили разнообразить митапы практическими проверками знаний. Николай Птущук проводит викторину, которая состоит из несложных задачек на знание html, css, js. За правильный ответ можно было получить презент.
Доклад посвящен обзору управлению ресурсами в С++.
Рассмотрено понятие ресурса, встроенные механизмы С++ и подходы к реализации собственных механизмов для безопасного управления этими ресурсами для защиты от пролетающих исключений.
Очередной скучный доклад про логгированиеPython Meetup
Стас Рудаков, компания СООО "Гейм Стрим"/Wargaming.net
Значение логов очень часто недооценивается, а зря. Доклад с оживленным диспутом со всеми участниками митапа, чтобы разобраться: как, куда и зачем писать логи. Помимо этого затронут вопрос, как из логов выжать больше информации.
В докладе рассмотрим и выясним, что такое async envenloop, что из себя представялет Twisted, когда он может понадобиться и чего от него не стоит ожидать; концепция Deferred; взаимодействие с RDBMS и другими синхронными библиотеками; Application Framework; Twisted Web и т.п.
Автор: Андрей Жлобич (Wargaming.net)
Про асинхронность / Максим Щепелин / Web Developer WargamingPython Meetup
Речь пойдет о двух языках: Python и Javascript. Максим расскажет об асинхронной работе Python и Javascript, что даст возможность слушателям приобщиться к особой касте разработчиков, работающих с Twisted.
Python&Printer / Андрей Пучко / penta.byPython Meetup
Андрей рассказал о личном опыте сражений за печать отчетов из программ на Python. Речь шла о полезных инструментах и форматах документов (PDF, RTF, DOCX, XLS, ODT, HTML) которые можно готовить к печати при помощи Python.
Machine learning with Python / Олег Шидловский / Doist [Python Meetup 27.03.15] Python Meetup
Machine learning with Python / Олег Шидловский / Web developer Doist
Олег расскажет о базовых концепциях Machine learning и покажет примеры работы с библиотеками, при помощи которых можно легко решать задачи, связанные с машинным обучением.
Python Meetup - встречи минского сообщества любителей языка программирования Python.
Присоединяйся к нам!
Мы в twitter: https://twitter.com/pythonminsk
Мы на youtube: http://www.youtube.com/pythonMinsk
Мы на slideshare: http://www.slideshare.net/MinskPythonMeetup
Быстрые конструкции в Python - Олег Шидловский, Python Meetup 26.09.2014Python Meetup
В своем докладе Олег расскажет о замене стандартных функций на более быстрые и об ускорении работы python. Также продемонстрирует несколько примеров быстрых конструкций python.
Мы решили разнообразить митапы практическими проверками знаний. Николай Птущук проводит викторину, которая состоит из несложных задачек на знание html, css, js. За правильный ответ можно было получить презент.
Доклад посвящен обзору управлению ресурсами в С++.
Рассмотрено понятие ресурса, встроенные механизмы С++ и подходы к реализации собственных механизмов для безопасного управления этими ресурсами для защиты от пролетающих исключений.
Очередной скучный доклад про логгированиеPython Meetup
Стас Рудаков, компания СООО "Гейм Стрим"/Wargaming.net
Значение логов очень часто недооценивается, а зря. Доклад с оживленным диспутом со всеми участниками митапа, чтобы разобраться: как, куда и зачем писать логи. Помимо этого затронут вопрос, как из логов выжать больше информации.
В докладе рассмотрим и выясним, что такое async envenloop, что из себя представялет Twisted, когда он может понадобиться и чего от него не стоит ожидать; концепция Deferred; взаимодействие с RDBMS и другими синхронными библиотеками; Application Framework; Twisted Web и т.п.
Автор: Андрей Жлобич (Wargaming.net)
Про асинхронность / Максим Щепелин / Web Developer WargamingPython Meetup
Речь пойдет о двух языках: Python и Javascript. Максим расскажет об асинхронной работе Python и Javascript, что даст возможность слушателям приобщиться к особой касте разработчиков, работающих с Twisted.
Python&Printer / Андрей Пучко / penta.byPython Meetup
Андрей рассказал о личном опыте сражений за печать отчетов из программ на Python. Речь шла о полезных инструментах и форматах документов (PDF, RTF, DOCX, XLS, ODT, HTML) которые можно готовить к печати при помощи Python.
Machine learning with Python / Олег Шидловский / Doist [Python Meetup 27.03.15] Python Meetup
Machine learning with Python / Олег Шидловский / Web developer Doist
Олег расскажет о базовых концепциях Machine learning и покажет примеры работы с библиотеками, при помощи которых можно легко решать задачи, связанные с машинным обучением.
Python Meetup - встречи минского сообщества любителей языка программирования Python.
Присоединяйся к нам!
Мы в twitter: https://twitter.com/pythonminsk
Мы на youtube: http://www.youtube.com/pythonMinsk
Мы на slideshare: http://www.slideshare.net/MinskPythonMeetup
Быстрые конструкции в Python - Олег Шидловский, Python Meetup 26.09.2014Python Meetup
В своем докладе Олег расскажет о замене стандартных функций на более быстрые и об ускорении работы python. Также продемонстрирует несколько примеров быстрых конструкций python.
Максим Барышников "Wargaming: тыл - фронту!"
Чтобы игра стала успешной (а из успешной превратилась в легендарную), недостаточно самой игры, сколь бы хороша она ни была. Помимо всего прочего, действительно массовой игре нужна очень развитая веб-часть. О ней и пойдет речь.
Почему я пишу хороший код, но его никто не ценит, кроме моей мамы / Павел Меш...Python Meetup
Со временем для разработчика становится недостаточно одних технических скиллов. Павел в своей презентации поделится болью, негативным опытом и полезными советами как избежать его же ошибок.
Распространено мнение, что навык пакетирования своих наработок необходим только гуру в Open Source. Стас развенчал этот миф и показал несколько практических задач, решаемых при помощи пакетирования кода.
Как скачать статистику игроков World of Tanks / Павел Пересторонин [Python Me...Python Meetup
Как скачать статистику игроков World of Tanks за одну ночь / Павел Пересторонин
Как при помощи Requests, Asyncio и Aiohttp перестать использовать многопоточный код? На примере Wargaming Public API Павел покажет, как однопоточный асинхронный код может оказаться эффективнее в исполнении и проще в отладке, чем наивный многопоточный.
Python Meetup - встречи минского сообщества любителей языка программирования Python.
Присоединяйся к нам!
Мы в twitter: https://twitter.com/pythonminsk
Мы на youtube: http://www.youtube.com/pythonMinsk
Мы на slideshare: http://www.slideshare.net/MinskPythonMeetup
Артем Первухин "Язык программирования GO"
В докладе будет рассказано, чем сможет заинтересовать Python-разработчика язык программирования Go. Будут описаны базовые идиомы языка Go и даны ответы на следующие вопросы: Насколько применим к Go "Zen of Python"? Какая у этого языка область применения? В чём можно выиграть, использовав Go вместо Python?
SWIG — cоздание мультиязыковых интерфейсов для C/C++ библиотекPython Meetup
"SWIG — cоздание мультиязыковых интерфейсов для C/C++ библиотек", Алексей Черкес
Кратко рассказано о том, что такое биндинг и Pуthon c API. Краткий обзор средств биндинга для Python. SWIG: что такое, зачем нужен, особенности, схема работы утилит, порядок запуска и сборки, принципы работы, как происходит сопоставление объектных моделей С++ и целевого языка. Примеры на Python и C#. Опыт применения, плюсы/минусы.
S.O.L.I.D. - Павел Кохан, Python Meetup 26.09.2014Python Meetup
Ежедневно разработчикам приходится писать десятки классов для разного рода функционала. Этот функционал может быть связан между собой или иметь разные функции. Нередко, сопровождая чужой код, программист, который более или менее понимает как должен реализовываться класс, видит картину, где, к примеру, класс «Товар» изменяет баланс клиента. По сути это в корне неверно!
Доклад будет рассматривать такую проблему как правильного написания классов. Данные 5 принципов можно применять к любому объектно-ориентированному языку, но в рамках Python meetup примеры будут продемонстрированы на python.
Данный доклад рассматривает 5 основных принципов, где каждая буква в аббревиатуре обозначает свой принцип.
S – Single responsibility principle (Принцип единой обязанности):
O – Open/Closed principle (Принцип Открытости/Закрытости)
L – Liskov substitution principle (Принцип постановки Барбары Лисков)
I – Interface segregation principle (Принцип разделения интерфейса)
D – Dependency inversion principle (Принцип инверсий зависимостей)
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
Роман Иманкулов, компания Doist.io.
Доклад об анализе данных и посвящен преимущественно тем, кто хочет попробовать, но не знает с чего начать. О том, кому это вообще надо, где брать данные, какие инструменты есть в распоряжении начинающего python-аналитика и какую пользу для себя из всего можно извлечь на старте.
Найти видео презентации можно здесь: http://habrahabr.ru/company/wargaming/
Асинхронное распределенное выполнение задач. Stdlib, Celery, RQ и собственные...Python Meetup
Автор: Роман Иманкулов (doist.io)
Когда необходимо заставить веб-приложение выполнить тяжелую работу без ухудшения user experience, или нужно по-быстрому собрать кластер на коленке, возникает потребность в распределенном выполнении очередей команд. В докладе будут рассмотрены варианты организации таких очередей подручными средствами, будет выяснено, чем так хорош Celery, есть ли у него достойные альтернативы, и как написать рабочий менеджер очередей в тридцать строчек кода.
Использование gevent для эмуляции высокой нагрузкиPython Meetup
Автор: Александр Колесень (SiliconMint)
Обязательное действие перед выпуском более-менее серьёзного проекта — тестирование производительности. На высоконагруженных проектах нужно точно знать, какую нагрузку они могут выдержать, причём заранее. Следовательно, нужен способ эмуляции высокой конкурентности, желательно чтобы в теории он позволял полностью загрузить канал траффиком. К тому же, неплохо было бы, чтобы для этого не нужно было использовать несколько десятков серверов. В докладе будет рассказано об опыте использования gevent для подобной задачи, что позволило бы обойтись одним t1.micro инстансом, с которого выполняется тестирование.
Автор: Андрей Нехайчик (Wargaming.net | COOO «Гейм Стрим»)
— Треды, отличия от потоков.
— Как использовать треды.
— Тестирование производительности (и облом).
— Представление GIL, как он работает.
— Освобождение по I/O, 100 тиков.
— Зачем нужен GIL.
— Проблемы переключения потоков (медленный захват).
— Проблема 100 тиков.
— Проблема отсутствия приоритетов и их типов.
— Новый GIL, 5 миллисекунд, drop_request.
— Когда drop_request не работает.
— Соревнование CPU и I/O тредов.
— Как борются с GIL: тезисы о numpy, Jython, multiprocessing.
В докладе раскрыты слабые места Python, проблемы с GC, функциональным стилем, реализацией стандартных структур данных и интерпретатора CPython.
Автор: Кирилл Лашкевич
Социальный игровой сервер на Python: от первого коммита до продакшенаPython Meetup
Важными потребностями современного человека являются: общение с другими людьми и игры. На стыке двух этих потребностей и возникли различные игровые приложения в социальных сетях. Обычно такие приложения требуют наличия серверной стороны, способной справляться с высокими нагрузками. В данном докладе Алексей делится опытом разработки серверов на Python для социальных игр, начиная от этапа разработки дизайнерского документа и заканчивая выпуском игры в продакшн и её дальнейшей поддержкой.
Автор: Алексей Романов
Почему стоит все чаще задумывать о поддержке Python 3 и с какими проблемами можно столкнуться при портировании. Рассмотрим на примерах из Sentry (https://github.com/getsentry/sentry) как добавить поддержку Python 3 с использованием 2to3 (http://docs.python.org/3.3/library/2to3.html), tox (http://tox.readthedocs.org/en/latest/) и six (http://pythonhosted.org/six/).
Автор: Никита Гришко (Wargaming.net)
9. USER TIMELINE И ЭКСПОНЕНЦИАЛЬНЫЙ РОСТ ДАННЫХ
fixedlist: решение в пару строк кода
defadd_to_timeline(user_id,record,max_records=100):
"""добавитьновуюзаписьвtimelineпользователя"""
redis.lpush('timeline:%s'%user_id,record)
redis.ltrim('timeline:%s'%user_id,0,max_records)
defget_timeline(user_id):
"""вернутьвсезаписиизtimeline"""
returnredis.lrange("timeline:%s"%user_id,0,-1)
.
12. СБОР И АНАЛИЗ СТАТИСТИКИ. RETENTION ANALYSIS
как понять, что вы на правильном пути
Кто из пользователей, активных в последнюю неделю/месяц/
год, по-прежнему активен?
Кто из сделавших действие X также выполнил действие Y?
Как это изменилось после того, как вы реализовали новую
фишку Z?
13. СБОР И АНАЛИЗ СТАТИСТИКИ. RETENTION ANALYSIS
битовые операции со строками
#отметимактивностьпользователя12328.03.2014
SETBITactive-2014-03-281231
#проверим,былили123активен1января2014
GETBITactive-2014-01-01123
#посчитемобщееколичествоактивныхпользователей1янв
BITCOUNTactive-2014-01-01
#ктозарегистрировалсявчера,азаплатилсегодня?
BITOPANDpaid-reportsigned-up-2014-03-27paid-2014-03-28
.
14. СБОР И АНАЛИЗ СТАТИСТИКИ. RETENTION ANALISYS
bitmapist: сбор статистики в Redis
#отметимактивностьпользователя
>>>bitmapist.mark_event('active',123)
#проверим,былли123активен1января2014
>>>activity=bitmapist.DayEvents('active',2014,1,1)
>>>123inactivity
True
#ктозарегистрировалсявчера,азаплатилсегодня?
>>>signed_up=bitmapist.DayEvents('signed_up',2014,3,27)
>>>paid=bitmapist.DayEvents('paid',2014,3,28)
>>>report=bitmapist.BitOpAnd(signed_up,paid)
>>>len(report)
5
15. СБОР И АНАЛИЗ СТАТИСТИКИ. RETENTION ANALYSIS
bitmapist.cohort: красивые таблички
>>>dates_data=get_dates_data(select1='task:updated',
select2='task:completed',
time_group='days')
>>>html_data=render_html_data(dates_data,time_group='days')
.