Компания "Ленвендо" занимается созданием, развитием и поддержкой крупномасштабных онлайн-проектов.
Сегодня «Ленвендо» отвечает за работу ресурсов «Эльдорадо», «Связной», HomeMe, Газпромбанк, Эхо Москвы в Петербурге.
Moбильная база данных Realm. Прошло ли время SQLite?Олег Чебулаев
- Обзор систем хранения данных
- Что такое Realm?
- Realm изнутри и почему он такой быстрый
- Сравнение производительности мобильных баз данных
- Практика использования
Выбираем СУБД для хранения временных рядов / Павел Филонов (Лаборатория Каспе...Ontico
Проблема мониторинга целостности технологических процессов на индустриальных объектах связана с обработкой большого объема показаний различных датчиков (температура, давление, управляющие сигналы и т.д.). Каждый из таких сенсоров порождает временной ряд, который может быть использован как для потоковой обработки, так и для проведения исторического анализа и расследования инцидентов. Здесь возникает задача хранения показаний за некоторый период времени. При этом потоки данных могут достигать десятков тысяч показаний в секунду, а период хранения достигать нескольких месяцев или даже лет. При таких условиях необходимо предельно аккуратно выбирать СУБД для хранения временных рядов, которая правильно впишется в нефункциональные требования.
В качестве конкурсантов выступят: OpenTSDB, InfluxDB, MongoDB, PostgreSQL и еще несколько "чёрных лошадок".
В докладе будет рассмотрен многокритериальный подход к выбору с учетом таких показателей как:
* зависимость пропускной способности на запись от различных параметров;
* время исполнения запроса на чтение;
* степень сжатия данных;
* пропускная способность при нагрузочном тестировании.
В докладе предлагается не только привести получившиеся числа, но и обсудить почему они получились именно такими.
Компания "Ленвендо" занимается созданием, развитием и поддержкой крупномасштабных онлайн-проектов.
Сегодня «Ленвендо» отвечает за работу ресурсов «Эльдорадо», «Связной», HomeMe, Газпромбанк, Эхо Москвы в Петербурге.
Moбильная база данных Realm. Прошло ли время SQLite?Олег Чебулаев
- Обзор систем хранения данных
- Что такое Realm?
- Realm изнутри и почему он такой быстрый
- Сравнение производительности мобильных баз данных
- Практика использования
Выбираем СУБД для хранения временных рядов / Павел Филонов (Лаборатория Каспе...Ontico
Проблема мониторинга целостности технологических процессов на индустриальных объектах связана с обработкой большого объема показаний различных датчиков (температура, давление, управляющие сигналы и т.д.). Каждый из таких сенсоров порождает временной ряд, который может быть использован как для потоковой обработки, так и для проведения исторического анализа и расследования инцидентов. Здесь возникает задача хранения показаний за некоторый период времени. При этом потоки данных могут достигать десятков тысяч показаний в секунду, а период хранения достигать нескольких месяцев или даже лет. При таких условиях необходимо предельно аккуратно выбирать СУБД для хранения временных рядов, которая правильно впишется в нефункциональные требования.
В качестве конкурсантов выступят: OpenTSDB, InfluxDB, MongoDB, PostgreSQL и еще несколько "чёрных лошадок".
В докладе будет рассмотрен многокритериальный подход к выбору с учетом таких показателей как:
* зависимость пропускной способности на запись от различных параметров;
* время исполнения запроса на чтение;
* степень сжатия данных;
* пропускная способность при нагрузочном тестировании.
В докладе предлагается не только привести получившиеся числа, но и обсудить почему они получились именно такими.
Tech Talks @NSU: Что такое Highload? Секреты высокой нагрузки.Tech Talks @NSU
http://techtalks.nsu.ru
Видеозапись: http://www.youtube.com/watch?v=6PDtlAzFRlE
11 ноября 2014. Что такое Highload? Секреты высокой нагрузки. (Олег Федосеев, НГС)
«Если вы интересуетесь веб-разработкой, то вы наверняка слышали слово "highload". Это модно, это интересно, все хотят это попробовать на себе. Но мало кто знает, что на самом деле значит "highload" или "высокие нагрузки" и что нужно знать, чтобы правильно "готовить" высоконагруженный проект. Мы поговорим о том, что же такое highload, узнаем, с какими проблемами может сталкнуться условный веб-проект при росте нагрузки и попробуем решить эти проблемы. Также мы обсудим, какие подходы и инструменты должен знать веб-разработчик, чтобы успешно справиться с любыми нагрузками.»
Лекция прочитана в рамках проекта Tech Talks @NSU – серии открытых лекций о разработке ПО и карьере в IT, проводимых в Новосибирском государственном университете.
Подробности: http://techtalks.nsu.ru
Эволюция клиентской разработки: от веба ко "всеобщей мобилизации” или mobile-...Pavel Dovbush
История развития проекта с точки зрения клиентских технологий - от веб-сайта к появлению мобильных клиентов и смещению фокуса к mobile-first разработке. Общие черты нашей архитектуры и их отличия от стандартных решений.
Единый протокол общения с приложениями iOS/Android/WindowsMobile/MobileWeb/Web и особенности реализации для JavaScript платформ (десктопные и мобильные браузеры).
Изменение процесса разработки и подходов к реализации нового функционала для переключения на mobile-first стратегию.
"Распределенные" вычисления на мобильных платформах. Зачем еще нужен "металли...Ontico
В какой-то момент кто-то в интернете решил: всё, что мы можем вычислить, мы должны вычислить где-то на “большой мощной машине”. Так родилась заново идея “тонкого клиента”, поработившая сознание разработчиков современных веб-приложений. Всё, на что способно пользовательское приложение, в 90% кейсов сегодня - красиво отрисовать контент по данным, рассчитанным удаленной машиной в одном из дата-центров. При этом сложность расчетов и разнообразие данных растет быстрее, чем линейно, требуя все больше вычислительных ресурсов “больших мощных машин”, а также усилий по их проектированию, разработке, сопровождению, что в конечном счете приводит ко все более возрастающей стоимости владения. Однако, при этом растет разнообразие и, что немаловажно, мощность клиентских мобильных девайсов - основных потребителей того самого контента.
Парадокс заключается в том, что рост этот не приводит к очередной смене парадигмы разработки, никто не хочет переносить вычисления к клиенту и тем самым снижать возрастающие затраты эксплуатации. Отчасти это объясняется понятным образом: ресурсы мобильных устройств ограничены памятью и временем работы от аккумулятора, их хочется экономить.
Однако, чем дальше развивается эта аппаратно-программная история, тем всё менее убедительно выглядят такие аргументы. Пора запустить очередную фазу развития спирали - вернуться к разговору о новых “толстых клиентах” с новыми знаниями о том, как экономить исчерпаемые ресурсы их аппаратной части. И да - клиентов много, их вычисления нам ничего не стоят.
В этом докладе будет рассказано о том:
- почему уже хорошо перемещать вычисления к мобильному клиенту, а не нагружать серверную часть;
- какие средства доступны для разработчика на одной из мобильных платформ;
- какие трюки позволят сократить время вычислений и энергопотребление;
- почему быстро - не всегда энергоэффективно.
А также немного поговорим о вычислительной моде. Модные API прямо в телефоне:
- CNN (сверточная нейронная сеть) с железным ускорением.
- Металлические сети компараторов.
Piterpy #2. Быстродействие Python в Web. Постреляем по веб-серверу?Ivan Tsyganov
В докладе рассматривается как поведет себя простое python3 приложения на различных конфигурациях (uwsgi, gunicorn (Eventlet, Gevent)) в связке с различными хранилищами (MySQL, MariaDB, PostrgeSQL, MongoDB) под нагрузкой. Как средство генерации нагрузки использовался Яндекс.Танк.
Антон Щербаков, Отказоустойчивость на примере aviasales — почему даже если на...Tanya Denisyuk
В докладе на примере системы метапоиска aviasales будет рассмотрен переход от монолитной архитектуры RoR приложения к многозвенной системе внутренней разработки на базе tornado/python в целях ослабления зависимостей между подсистемами, упрощения контроля за потоком данных и изоляции потенциальных аварийных ситуаций.
Будут рассмотрены побочные эффекты этого перехода, такие как устойчивость к пиковым нагрузкам, упрощение схемы выкатки обновлений и сокращение потребляемых машинных ресурсов.
Михаил Табунов, Аналитическая платформа на несколько миллиардов событий в месяцTanya Denisyuk
Доклад про:
– развитие архитектуры этой системы, как менялись и как будут меняться требования к такого рода системам
– анализ подходящих под эту систему БД, с их проблемами, и опытом реальной эксплуатации
– почему мы остановились на MongoDB, со всеми минусами и плюсами
– немного про команду, трудозатраты и поддержку
– как мы используем эту систему и как она помогает растить наши продукты
Как 100 000 раз в секунду выбирать правильный рекламный материал? Programmati...Ontico
Число запросов на показ рекламы и число рекламных кампаний постоянно растет. Начиная с 2013 года, мы наблюдаем рост этих показателей в десятки раз.
Так как нагрузка на нашу систему пропорциональна произведению этих чисел, такой рост создает для нас множество сложных и интересных задач.
Некоторые из этих задач, про которые расскажем:
- Как из тысяч рекламных материалов выбрать наиболее релевантный для пользователя и делать это 100 000 раз в секунду?
- Как реализовать таргетирование рекламных кампаний так, чтобы общая производительность почти не зависела от общего количества этих кампаний?
- Как эффективно запрашивать данные из внешних сервисов, когда таких запросов надо делать миллионы раз в секунду?
- Как оставаться в рамках 50 мс на ответ даже в моменты пиковой нагрузки, в разы превышающей нормальную?
- Как измерять и мониторить нагруженность в разрезе по потокам и автоматически реагировать на перегрузки?
- Как сразу видеть эффект от оптимизации или негативное влияние новой функциональности на нагрузку?
NodeJS в HighLoad проекте / Акрицкий Владимир (iAge Engineering)Ontico
NodeJS — достаточно молодой фреймворк, и пока не каждый решается использовать его в продакшене, а тем более в highload.
В течение последнего года мы разрабатывали проект DMP (Data Management Platform), используя NodeJS для прототипирования. На данный момент проект в большей степени все еще остался на JS и без труда справляется с текущими нагрузками в 10 000 запросов в секунду.
В докладе я расскажу, почему остановились именно на NodeJS и совсем не жалеем об этом.
К сожалению, никакое дело не обходится без граблей и костылей. Я расскажу обо всех встретившихся проблемах и уделю особое внимание проблемам со спагетти-кодом, утечками и нехваткой памяти. Как мы убили немало времени, тщетно ища источник проблем, и какие правила мы составили для себя на будущее, чтобы не повторить своих ошибок.
Расскажу немного о применении микросервисов для решения проблемы спагетти-кода.
И, как итог, опишу ряд рекомендаций, которые помогут избежать большой траты времени при использовании NodeJS.
Адаптивная оптимизация запросов в реляционных СУБД / Олег Иванов (Postgres Pr...Ontico
Как известно, SQL - декларативный язык. В SQL-запросе заданы операции и свойства данных, над которыми эти операции должны быть выполнены. Но за выбор конкретного алгоритма выполнения запроса отвечает СУБД. В реляционных СУБД эти алгоритмы называются планами выполнения запроса, а процесс поиска наиболее быстрого плана - оптимизацией запроса. От выбора правильного плана существенно зависит скорость и эффективность выполнения запроса, а, значит, и производительность всей СУБД.
Наиболее популярным методом оптимизации запросов в современных реляционных СУБД является стоимостная оптимизация запросов, которая впервые была предложена в System R. В докладе описывается метод стоимостной оптимизации, рассматривается, какую статистику и как использует этот метод для оптимизации запросов. Затем разбираются основные недостатки стоимостной оптимизации и существующие подходы к их исправлению.
Основная тема доклада - адаптивная оптимизация запросов. Адаптивная оптимизация запросов - это новый подход, основанный на стоимостной оптимизации, но позволяющий избавиться от некоторых ее недостатков. Основная идея адаптивной оптимизации запросов - использование при оптимизации запросов статистики выполнения, собранной во время предыдущего исполнения похожих запросов. В отличие от адаптивной оптимизации, в классической стоимостной оптимизации используется только предварительно собранная статистика по данным.
В докладе рассматривается конкретный способ адаптивной оптимизации, основанный на методах машинного обучения. Для него приводятся результаты сравнения адаптивной и стоимостной оптимизации на примере СУБД PostgreSQL, обсуждаются плюсы и минусы адаптивной оптимизации, возможности её применения.
DUMP-2015: «Как размножаются программисты» Николай Ясинский, Сигнал, Казань it-people
Выступление на DUMP-2015.
Видео доклада: https://youtu.be/j1tJ9m3ypIM?list=PLRdS-n5seLRrR2gBuM7Kt1yIizNGIrnM9
Организатор конференции: IT-People.ru
Сайт конференции: www.dump-conf.ru
Tech Talks @NSU: Что такое Highload? Секреты высокой нагрузки.Tech Talks @NSU
http://techtalks.nsu.ru
Видеозапись: http://www.youtube.com/watch?v=6PDtlAzFRlE
11 ноября 2014. Что такое Highload? Секреты высокой нагрузки. (Олег Федосеев, НГС)
«Если вы интересуетесь веб-разработкой, то вы наверняка слышали слово "highload". Это модно, это интересно, все хотят это попробовать на себе. Но мало кто знает, что на самом деле значит "highload" или "высокие нагрузки" и что нужно знать, чтобы правильно "готовить" высоконагруженный проект. Мы поговорим о том, что же такое highload, узнаем, с какими проблемами может сталкнуться условный веб-проект при росте нагрузки и попробуем решить эти проблемы. Также мы обсудим, какие подходы и инструменты должен знать веб-разработчик, чтобы успешно справиться с любыми нагрузками.»
Лекция прочитана в рамках проекта Tech Talks @NSU – серии открытых лекций о разработке ПО и карьере в IT, проводимых в Новосибирском государственном университете.
Подробности: http://techtalks.nsu.ru
Эволюция клиентской разработки: от веба ко "всеобщей мобилизации” или mobile-...Pavel Dovbush
История развития проекта с точки зрения клиентских технологий - от веб-сайта к появлению мобильных клиентов и смещению фокуса к mobile-first разработке. Общие черты нашей архитектуры и их отличия от стандартных решений.
Единый протокол общения с приложениями iOS/Android/WindowsMobile/MobileWeb/Web и особенности реализации для JavaScript платформ (десктопные и мобильные браузеры).
Изменение процесса разработки и подходов к реализации нового функционала для переключения на mobile-first стратегию.
"Распределенные" вычисления на мобильных платформах. Зачем еще нужен "металли...Ontico
В какой-то момент кто-то в интернете решил: всё, что мы можем вычислить, мы должны вычислить где-то на “большой мощной машине”. Так родилась заново идея “тонкого клиента”, поработившая сознание разработчиков современных веб-приложений. Всё, на что способно пользовательское приложение, в 90% кейсов сегодня - красиво отрисовать контент по данным, рассчитанным удаленной машиной в одном из дата-центров. При этом сложность расчетов и разнообразие данных растет быстрее, чем линейно, требуя все больше вычислительных ресурсов “больших мощных машин”, а также усилий по их проектированию, разработке, сопровождению, что в конечном счете приводит ко все более возрастающей стоимости владения. Однако, при этом растет разнообразие и, что немаловажно, мощность клиентских мобильных девайсов - основных потребителей того самого контента.
Парадокс заключается в том, что рост этот не приводит к очередной смене парадигмы разработки, никто не хочет переносить вычисления к клиенту и тем самым снижать возрастающие затраты эксплуатации. Отчасти это объясняется понятным образом: ресурсы мобильных устройств ограничены памятью и временем работы от аккумулятора, их хочется экономить.
Однако, чем дальше развивается эта аппаратно-программная история, тем всё менее убедительно выглядят такие аргументы. Пора запустить очередную фазу развития спирали - вернуться к разговору о новых “толстых клиентах” с новыми знаниями о том, как экономить исчерпаемые ресурсы их аппаратной части. И да - клиентов много, их вычисления нам ничего не стоят.
В этом докладе будет рассказано о том:
- почему уже хорошо перемещать вычисления к мобильному клиенту, а не нагружать серверную часть;
- какие средства доступны для разработчика на одной из мобильных платформ;
- какие трюки позволят сократить время вычислений и энергопотребление;
- почему быстро - не всегда энергоэффективно.
А также немного поговорим о вычислительной моде. Модные API прямо в телефоне:
- CNN (сверточная нейронная сеть) с железным ускорением.
- Металлические сети компараторов.
Piterpy #2. Быстродействие Python в Web. Постреляем по веб-серверу?Ivan Tsyganov
В докладе рассматривается как поведет себя простое python3 приложения на различных конфигурациях (uwsgi, gunicorn (Eventlet, Gevent)) в связке с различными хранилищами (MySQL, MariaDB, PostrgeSQL, MongoDB) под нагрузкой. Как средство генерации нагрузки использовался Яндекс.Танк.
Антон Щербаков, Отказоустойчивость на примере aviasales — почему даже если на...Tanya Denisyuk
В докладе на примере системы метапоиска aviasales будет рассмотрен переход от монолитной архитектуры RoR приложения к многозвенной системе внутренней разработки на базе tornado/python в целях ослабления зависимостей между подсистемами, упрощения контроля за потоком данных и изоляции потенциальных аварийных ситуаций.
Будут рассмотрены побочные эффекты этого перехода, такие как устойчивость к пиковым нагрузкам, упрощение схемы выкатки обновлений и сокращение потребляемых машинных ресурсов.
Михаил Табунов, Аналитическая платформа на несколько миллиардов событий в месяцTanya Denisyuk
Доклад про:
– развитие архитектуры этой системы, как менялись и как будут меняться требования к такого рода системам
– анализ подходящих под эту систему БД, с их проблемами, и опытом реальной эксплуатации
– почему мы остановились на MongoDB, со всеми минусами и плюсами
– немного про команду, трудозатраты и поддержку
– как мы используем эту систему и как она помогает растить наши продукты
Как 100 000 раз в секунду выбирать правильный рекламный материал? Programmati...Ontico
Число запросов на показ рекламы и число рекламных кампаний постоянно растет. Начиная с 2013 года, мы наблюдаем рост этих показателей в десятки раз.
Так как нагрузка на нашу систему пропорциональна произведению этих чисел, такой рост создает для нас множество сложных и интересных задач.
Некоторые из этих задач, про которые расскажем:
- Как из тысяч рекламных материалов выбрать наиболее релевантный для пользователя и делать это 100 000 раз в секунду?
- Как реализовать таргетирование рекламных кампаний так, чтобы общая производительность почти не зависела от общего количества этих кампаний?
- Как эффективно запрашивать данные из внешних сервисов, когда таких запросов надо делать миллионы раз в секунду?
- Как оставаться в рамках 50 мс на ответ даже в моменты пиковой нагрузки, в разы превышающей нормальную?
- Как измерять и мониторить нагруженность в разрезе по потокам и автоматически реагировать на перегрузки?
- Как сразу видеть эффект от оптимизации или негативное влияние новой функциональности на нагрузку?
NodeJS в HighLoad проекте / Акрицкий Владимир (iAge Engineering)Ontico
NodeJS — достаточно молодой фреймворк, и пока не каждый решается использовать его в продакшене, а тем более в highload.
В течение последнего года мы разрабатывали проект DMP (Data Management Platform), используя NodeJS для прототипирования. На данный момент проект в большей степени все еще остался на JS и без труда справляется с текущими нагрузками в 10 000 запросов в секунду.
В докладе я расскажу, почему остановились именно на NodeJS и совсем не жалеем об этом.
К сожалению, никакое дело не обходится без граблей и костылей. Я расскажу обо всех встретившихся проблемах и уделю особое внимание проблемам со спагетти-кодом, утечками и нехваткой памяти. Как мы убили немало времени, тщетно ища источник проблем, и какие правила мы составили для себя на будущее, чтобы не повторить своих ошибок.
Расскажу немного о применении микросервисов для решения проблемы спагетти-кода.
И, как итог, опишу ряд рекомендаций, которые помогут избежать большой траты времени при использовании NodeJS.
Адаптивная оптимизация запросов в реляционных СУБД / Олег Иванов (Postgres Pr...Ontico
Как известно, SQL - декларативный язык. В SQL-запросе заданы операции и свойства данных, над которыми эти операции должны быть выполнены. Но за выбор конкретного алгоритма выполнения запроса отвечает СУБД. В реляционных СУБД эти алгоритмы называются планами выполнения запроса, а процесс поиска наиболее быстрого плана - оптимизацией запроса. От выбора правильного плана существенно зависит скорость и эффективность выполнения запроса, а, значит, и производительность всей СУБД.
Наиболее популярным методом оптимизации запросов в современных реляционных СУБД является стоимостная оптимизация запросов, которая впервые была предложена в System R. В докладе описывается метод стоимостной оптимизации, рассматривается, какую статистику и как использует этот метод для оптимизации запросов. Затем разбираются основные недостатки стоимостной оптимизации и существующие подходы к их исправлению.
Основная тема доклада - адаптивная оптимизация запросов. Адаптивная оптимизация запросов - это новый подход, основанный на стоимостной оптимизации, но позволяющий избавиться от некоторых ее недостатков. Основная идея адаптивной оптимизации запросов - использование при оптимизации запросов статистики выполнения, собранной во время предыдущего исполнения похожих запросов. В отличие от адаптивной оптимизации, в классической стоимостной оптимизации используется только предварительно собранная статистика по данным.
В докладе рассматривается конкретный способ адаптивной оптимизации, основанный на методах машинного обучения. Для него приводятся результаты сравнения адаптивной и стоимостной оптимизации на примере СУБД PostgreSQL, обсуждаются плюсы и минусы адаптивной оптимизации, возможности её применения.
DUMP-2015: «Как размножаются программисты» Николай Ясинский, Сигнал, Казань it-people
Выступление на DUMP-2015.
Видео доклада: https://youtu.be/j1tJ9m3ypIM?list=PLRdS-n5seLRrR2gBuM7Kt1yIizNGIrnM9
Организатор конференции: IT-People.ru
Сайт конференции: www.dump-conf.ru
Open source субд глазами обычного программистаSlach
Попытался "быстренько" пробежаться по всем СУБД с которыми работал за 20 лет и постараться вложить слушателям мысль что СУБД надо выбирать под нагрузку
и что для СУБД надо знать "алгоритмы" и "эксплуатацию"
Горизонтальное масштабирование: что, зачем, когда и как /Александр Макаров (Y...Ontico
Масштабирование — способность наращивать систему для обработки большего количества трафика, не теряя при этом пользовательские качества: скорость и отзывчивость.
Масштабирование различают двух типов: вертикальное (больше памяти, диска, лучше процессор) и горизонтальное (больше серверов в кластере).
- Зачем оно нужно, если и так всё работает?
- Когда? Мониторинг, необдуманные решения, оптимизация и жизнь с одним сервером.
- Типичная схема.
- Балансировка нагрузки.
- Какие, вообще, проблемы на стороне приложения?
- Почему PHP так хорош для масштабирования.
- Сессии.
- База данных.
- Файлы.
- Как быть со статистикой?
В презентации описан подход к оценке производительности hadoop кластера. Описаны вероятные узкие места, влияющие на производительность кластера. Приведен пример сравнения производительности двух кластеров на различном железе.
Сергей Чистович "Подходы к кешированию на UGC-сервисе"Yandex
Сергей Чистович "Подходы к кешированию на UGC-сервисе"
Я.Субботник в Санкт-Петербурге
О докладе:
Данные на UGC-сервисах очень быстро меняются, и у каждого пользователя они свои. Выборка этих данных – дорогостоящая операция, поскольку может определяться множеством параметров и сложными условиями. Что и как мы можем кешировать в этой непростой ситуации?
Pconnect: граната в руках обезьяны. Сергей Аверин, Badoo.
Persistent connect. Это всегда преподносится как plug'n'play. В учебниках информации очень мало. Но все всегда думают, что это «просто работает».
- Что это, вообще, такое, зачем было придумано и какие задачи призвано решать.
- О том, как этим всем пользуются, и что получается в итоге.
- О том, как, на самом деле, это работает. Про что не пишут в учебниках.
- Stateful-протоколы, пример с проблемами в mysql.
- В stateless-мире все не так уж солнечно.
- Большинство протоколов просто не рассчитано на pconnect. Баги в C++ софте (которые есть всегда) + pconnect + простоватый протокол = адская смесь. Каким должен быть протокол.
- Мелкие нюансы, из-за которых возникают проблемы.
- Connection pooling — что это и с чем его едят.
- Как со всем этим жить.
Similar to DUMP-2015: «Redis Кластер» Георгий Бажуков, Nevesta.info (20)
«Scrapy internals» Александр Сибиряков, Scrapinghubit-people
- Scrapy is a framework for web scraping that allows for extraction of structured data from HTML/XML through selectors like CSS and XPath. It provides features like an interactive shell, feed exports, encoding support, and more.
- Scrapy is built on top of the Twisted asynchronous networking framework, which provides an event loop and deferreds. It handles protocols and transports like TCP, HTTP, and more across platforms.
- Scrapy architecture includes components like the downloader, scraper, and item pipelines that communicate internally. Flow control is needed between these to limit memory usage and scheduling through techniques like concurrent item limits, memory limits, and delays between calls.
«Отладка в Python 3.6: Быстрее, Выше, Сильнее» Елизавета Шашкова, JetBrainsit-people
The document discusses debugging in Python 3.6. It describes tracing and frame evaluation debuggers. Tracing debuggers slow code execution significantly by calling the tracing function on every line. Python 3.6 introduced a new frame evaluation API that allows evaluating frames directly, avoiding the performance issues of tracing. The document demonstrates how to build a debugger using this approach, including setting breakpoints and stepping through code by inserting temporary breakpoints on each line. Frame evaluation allows building a debugger that is faster than tracing debuggers without significant performance penalties.
«Gevent — быть или не быть?» Александр Мокров, Positive Technologiesit-people
Gevent is a concurrency library for Python that uses greenlets, or lightweight coroutines, to provide asynchronous operations and non-blocking I/O. It allows developing highly concurrent applications using a simple and familiar synchronous style. The document compares gevent to other concurrency options like asyncio and discusses how it provides features like asynchronous task execution, event loops, and inter-greenlet communication using queues and callbacks.
«Что такое serverless-архитектура и как с ней жить?» Николай Марков, Aligned ...it-people
The document discusses what serverless computing is and how it can be used for building applications. Serverless applications rely on third party services to manage server infrastructure and are event-triggered. Popular serverless frameworks like AWS Lambda, Google Cloud Functions, Microsoft Azure Functions, and Zappa allow developers to write code that runs in a serverless environment and handle events and triggers without having to manage servers.
«Python на острие бритвы: PyPy project» Александр Кошкин, Positive Technologiesit-people
The document describes a talk on optimizing Python performance through just-in-time compilation. It discusses how the CPython interpreter works by evaluating bytecode through an evaluation loop. It then talks about how PyPy achieves faster performance through jit compilation of hot loops detected via tracing. The talk dives into the RPython language used to implement PyPy and shows an example of compiling a small Python program to C with RPython. It also discusses using partial evaluation to specialize an interpreter for constant inputs.
«PyWat. А хорошо ли вы знаете Python?» Александр Швец, Marilyn Systemit-people
The document appears to be a transcript of Python code being executed in an interactive Python shell. It contains examples testing the behavior of built-in functions and operators like sorted(), reversed(), isinstance(), sum(), float("nan"), is, min(), and comparisons like ==, <, on various data types including lists, tuples, and dictionaries.
«(Без)опасный Python», Иван Цыганов, Positive Technologiesit-people
The document discusses various security vulnerabilities in Python web applications. It begins with an overview of the OWASP Top 10 security risks, with sections focusing on risks related to using components with known vulnerabilities (A9) and insufficient attack protection (A7). For A9, it provides examples of vulnerabilities in popular Python packages and recommends checking changelogs and vulnerability databases. For A7, it recommends implementing attack protections like login attempts logging, rate limiting, and use of a web application firewall. The document also covers security misconfiguration (A5), giving examples like using default settings in production and exposing tracebacks.
«Как сделать так, чтобы тесты на Swift не причиняли боль» Сычев Александр, Ra...it-people
The document discusses best practices for writing tests in Swift, including recommendations to:
- Write clean, readable tests that focus on asserting a single truth
- Use a domain-specific language in tests for clarity
- Structure tests with "given-when-then"
- Mock dependencies through protocols to enable test isolation
- Favor partial mocks over fully mocking to limit complexity