Из презентации вы узнаете:
— как мы пришли к Go, оставив идею использования Node.js, Scala или Rust;
— про первый сервис, который мы написали на Go и запустили в продакшен;
— про ошибки, с которыми сталкивались под нагрузкой;
— про оптимизации, которые мы сделали и еще планируем сделать;
— про тестирование и предотвращение тестирования на продакшене (в частности, websocket'ов).
Оптимизация высоконагруженных ASP.NET приложений, работающих с MS SQL Server ...Stas Vyschepan
Вы разрабатываете веб-приложения и используете хранимые процедуры? Вы пишите SELECT … WITH(NOLOCK)? Вы считаете, что ORMы снижают быстродействие приложений? Тогда этот доклад для вас!
В докладе будут развенчаны популярные мифы о применении библиотек Object-Relational Mapping (ORM) в ASP.NET при работе с Microsoft SQL Server. Также будут рассмотрены конкретные методики увеличения быстродействия работы с данными в веб-приложениях.
Что такое REPL, как он устроен и какие крутые возможности в нём заложены. Поговорим о выполнении кода в REPL и о том как работает автокомплит в динамических языках. Ответим на вопрос что такое vm.runInContext, перехватим парочку промисов, сделаем вывод результатов действительно приятным и даже узнаем как подгрузить нужные модули и не подать виду. В заключение рассмотрим потрясающие возможности, которые даёт нам инфраструктура npm и как это всё можно использовать в работе.
Доклад ориентирован на тех, кому небезынтересен мир Node.js, но будет доступен также и более широкому кругу JS-разработчиков. Надеюсь, для кого-нибудь этот доклад станет очередной ступенькой в изучении любимого языка.
Из презентации вы узнаете:
— как мы пришли к Go, оставив идею использования Node.js, Scala или Rust;
— про первый сервис, который мы написали на Go и запустили в продакшен;
— про ошибки, с которыми сталкивались под нагрузкой;
— про оптимизации, которые мы сделали и еще планируем сделать;
— про тестирование и предотвращение тестирования на продакшене (в частности, websocket'ов).
Оптимизация высоконагруженных ASP.NET приложений, работающих с MS SQL Server ...Stas Vyschepan
Вы разрабатываете веб-приложения и используете хранимые процедуры? Вы пишите SELECT … WITH(NOLOCK)? Вы считаете, что ORMы снижают быстродействие приложений? Тогда этот доклад для вас!
В докладе будут развенчаны популярные мифы о применении библиотек Object-Relational Mapping (ORM) в ASP.NET при работе с Microsoft SQL Server. Также будут рассмотрены конкретные методики увеличения быстродействия работы с данными в веб-приложениях.
Что такое REPL, как он устроен и какие крутые возможности в нём заложены. Поговорим о выполнении кода в REPL и о том как работает автокомплит в динамических языках. Ответим на вопрос что такое vm.runInContext, перехватим парочку промисов, сделаем вывод результатов действительно приятным и даже узнаем как подгрузить нужные модули и не подать виду. В заключение рассмотрим потрясающие возможности, которые даёт нам инфраструктура npm и как это всё можно использовать в работе.
Доклад ориентирован на тех, кому небезынтересен мир Node.js, но будет доступен также и более широкому кругу JS-разработчиков. Надеюсь, для кого-нибудь этот доклад станет очередной ступенькой в изучении любимого языка.
#RuPostges в Yandex, эпизод 3. Что же нового в PostgreSQL 9.6Nikolay Samokhvalov
Первый релиз-кандидат версии 9.6 вышел 1 сентября, а это значит, что совсем скоро будет полноценный релиз. Все вокруг уже успели обсудить новинки, и теперь уже стыдно ничего не знать о таких вещах, как параллелизация выполнения запросов, pushdown для FDW, мониторинг waitlocks, полнотекстовый поиск по фразам или магический \gexec в psql. Чтобы никому не приходилось краснеть, мы быстро пройдёмся по всем основным и интересным моментам версии 9.6.
SWIG — cоздание мультиязыковых интерфейсов для C/C++ библиотекPython Meetup
"SWIG — cоздание мультиязыковых интерфейсов для C/C++ библиотек", Алексей Черкес
Кратко рассказано о том, что такое биндинг и Pуthon c API. Краткий обзор средств биндинга для Python. SWIG: что такое, зачем нужен, особенности, схема работы утилит, порядок запуска и сборки, принципы работы, как происходит сопоставление объектных моделей С++ и целевого языка. Примеры на Python и C#. Опыт применения, плюсы/минусы.
Reinventing the wheel - why do it and how to feel good about it - Julik Tarkh...Ruby Meditation
Talk of Julik Tarkhanov, senior backend engineer, WeTransfer, Amsterdam, at Ruby Meditation #28 Kyiv 26.10.2019
Next conference - http://www.rubymeditation.com/
It is often a choice, sometimes a whim, and sometimes an act of desperation. We idolise reuse while sometimes the road not taken is just as exciting. Let's chat about where it is appropriate to "do the thing again", take the scenic route and enjoy the view.
Announcements and conference materials https://www.fb.me/RubyMeditation
News https://twitter.com/RubyMeditation
Photos https://www.instagram.com/RubyMeditation
The stream of Ruby conferences (not just ours) https://t.me/RubyMeditation
* The channel of the organizers of the meetup https://t.me/incredevly
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Ontico
HighLoad++ 2017
Зал «Кейптаун», 8 ноября, 18:00
Тезисы:
http://www.highload.ru/2017/abstracts/2854.html
Из этого доклада вы узнаете о возможностях репликации и автофейловера PostgreSQL, в том числе о возможностях, ставших доступных в PostgreSQL 10.
Среди прочих, будет затронуты следующие темы:
* Виды репликации и решаемые с ее помощью проблемы.
* Настройка потоковой репликации.
* Настройка логической репликации.
* Настройка автофейловера / HA средствами Stolon и Consul.
После прослушивания доклада вы сможете самостоятельно настраивать репликацию и автофейловер PostgreSQL.
Язык Lua — секреты производительности / Ник Заварицкий (Mail.ru)Ontico
Lua — высокоуровневый язык, похожий на Python/JS, но существенно более простой. Он гибкий и при этом очень быстрый.
Многие слышали про OpenResty. Это решение для разработки Nginx модулей на Lua. Cloudflare, крупнейший CDN/anti-DDOS провайдер, как раз работает на OpenResty.
У нас была задача валидации данных на соответствие схеме; мы переписали валидацию с Си на Lua и получили ускорение в 4 раза (за счет JIT-компиляции).
Что будет в докладе:
* краткое введение в язык Lua;
* как работает трассирующий JIT-компилятор Lua;
* как писать быстрый код, искать и устранять проблемы с производительностью;
* наш опыт: как мы ускорились в 4 раза, переписав валидацию с Си на Lua.
Python&Printer / Андрей Пучко / penta.byPython Meetup
Андрей рассказал о личном опыте сражений за печать отчетов из программ на Python. Речь шла о полезных инструментах и форматах документов (PDF, RTF, DOCX, XLS, ODT, HTML) которые можно готовить к печати при помощи Python.
Пайплайн машинного обучения на Apache Spark / Павел Клеменков (Rambler&Co)Ontico
В докладе рассмотрим нашу старую архитектуру пайплайна машинного обучения, обратим внимание на ее недостатки как с точки зрения инфраструктуры и автоматизации, так и с точки зрения настройки моделей машинного обучения и проведения экспериментов. Разберемся с архитектурой Apache Spark, и почему мы решили его использовать. Подробно ознакомимся с новой архитектурой нашего пайплайна и тем, как она позволила оптимизировать обнаружение и устранение проблем, ускорила и упростила работу data scientist'ов по проведению экспериментов и доведения их до продакшена. Также затронем вопросы написания тестов и процесса разработки ПО на больших данных.
#RuPostges в Yandex, эпизод 3. Что же нового в PostgreSQL 9.6Nikolay Samokhvalov
Первый релиз-кандидат версии 9.6 вышел 1 сентября, а это значит, что совсем скоро будет полноценный релиз. Все вокруг уже успели обсудить новинки, и теперь уже стыдно ничего не знать о таких вещах, как параллелизация выполнения запросов, pushdown для FDW, мониторинг waitlocks, полнотекстовый поиск по фразам или магический \gexec в psql. Чтобы никому не приходилось краснеть, мы быстро пройдёмся по всем основным и интересным моментам версии 9.6.
SWIG — cоздание мультиязыковых интерфейсов для C/C++ библиотекPython Meetup
"SWIG — cоздание мультиязыковых интерфейсов для C/C++ библиотек", Алексей Черкес
Кратко рассказано о том, что такое биндинг и Pуthon c API. Краткий обзор средств биндинга для Python. SWIG: что такое, зачем нужен, особенности, схема работы утилит, порядок запуска и сборки, принципы работы, как происходит сопоставление объектных моделей С++ и целевого языка. Примеры на Python и C#. Опыт применения, плюсы/минусы.
Reinventing the wheel - why do it and how to feel good about it - Julik Tarkh...Ruby Meditation
Talk of Julik Tarkhanov, senior backend engineer, WeTransfer, Amsterdam, at Ruby Meditation #28 Kyiv 26.10.2019
Next conference - http://www.rubymeditation.com/
It is often a choice, sometimes a whim, and sometimes an act of desperation. We idolise reuse while sometimes the road not taken is just as exciting. Let's chat about where it is appropriate to "do the thing again", take the scenic route and enjoy the view.
Announcements and conference materials https://www.fb.me/RubyMeditation
News https://twitter.com/RubyMeditation
Photos https://www.instagram.com/RubyMeditation
The stream of Ruby conferences (not just ours) https://t.me/RubyMeditation
* The channel of the organizers of the meetup https://t.me/incredevly
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Ontico
HighLoad++ 2017
Зал «Кейптаун», 8 ноября, 18:00
Тезисы:
http://www.highload.ru/2017/abstracts/2854.html
Из этого доклада вы узнаете о возможностях репликации и автофейловера PostgreSQL, в том числе о возможностях, ставших доступных в PostgreSQL 10.
Среди прочих, будет затронуты следующие темы:
* Виды репликации и решаемые с ее помощью проблемы.
* Настройка потоковой репликации.
* Настройка логической репликации.
* Настройка автофейловера / HA средствами Stolon и Consul.
После прослушивания доклада вы сможете самостоятельно настраивать репликацию и автофейловер PostgreSQL.
Язык Lua — секреты производительности / Ник Заварицкий (Mail.ru)Ontico
Lua — высокоуровневый язык, похожий на Python/JS, но существенно более простой. Он гибкий и при этом очень быстрый.
Многие слышали про OpenResty. Это решение для разработки Nginx модулей на Lua. Cloudflare, крупнейший CDN/anti-DDOS провайдер, как раз работает на OpenResty.
У нас была задача валидации данных на соответствие схеме; мы переписали валидацию с Си на Lua и получили ускорение в 4 раза (за счет JIT-компиляции).
Что будет в докладе:
* краткое введение в язык Lua;
* как работает трассирующий JIT-компилятор Lua;
* как писать быстрый код, искать и устранять проблемы с производительностью;
* наш опыт: как мы ускорились в 4 раза, переписав валидацию с Си на Lua.
Python&Printer / Андрей Пучко / penta.byPython Meetup
Андрей рассказал о личном опыте сражений за печать отчетов из программ на Python. Речь шла о полезных инструментах и форматах документов (PDF, RTF, DOCX, XLS, ODT, HTML) которые можно готовить к печати при помощи Python.
Пайплайн машинного обучения на Apache Spark / Павел Клеменков (Rambler&Co)Ontico
В докладе рассмотрим нашу старую архитектуру пайплайна машинного обучения, обратим внимание на ее недостатки как с точки зрения инфраструктуры и автоматизации, так и с точки зрения настройки моделей машинного обучения и проведения экспериментов. Разберемся с архитектурой Apache Spark, и почему мы решили его использовать. Подробно ознакомимся с новой архитектурой нашего пайплайна и тем, как она позволила оптимизировать обнаружение и устранение проблем, ускорила и упростила работу data scientist'ов по проведению экспериментов и доведения их до продакшена. Также затронем вопросы написания тестов и процесса разработки ПО на больших данных.
JS Lab2017_Под микроскопом: блеск и нищета микросервисов на node.js GeeksLab Odessa
JS Lab2017, 25 марта, Одесса
Под микроскопом: блеск и нищета микросервисов на node.js
Илья Климов (CEO at Javascript.Ninja)
"- Что это?
- Микросервис!
- И что он делает?
- Микропадает".
Про микросервисы сейчас не рассуждает только ленивый. Все рассказывают про то, как микросервисы спасают от сложности разработки, снижают время развертывание и повышают общую надежность систем. Этот доклад - про подводные камни, которые ждут оседлавших волну этого хайпа с Node.JS. Мы поговорим про ошибки, которые стоили мне и моей компании бессонных ночей, потерянной прибыли и, временами, веры в могущество микросервисной архитектуры.
Все материалы: http://jslab.in.ua/
Организаторы: http://geekslab.org.ua/
JS Lab2017_Lightning Talks_PostCSS - there is a plugin for thatGeeksLab Odessa
JS Lab2017, 25 марта, Одесса
Lightning Talks
PostCSS - there is a plugin for that (Сергей Лысенко)
Все материалы: http://jslab.in.ua/
Организаторы: http://geekslab.org.ua/
JS Lab2017, 25 марта, Одесса
React Fiber
Алексей Заславский (Front-End developer at WebbyLab)
В докладе будет рассмотрен новый экспериментальный алгоритм построения и сравнения Virtual DOM, который появится в новой версии React. Рассмотрим основные проблемы текущей реализации и как React Fiber позволяет их решить.
Все материалы: http://jslab.in.ua/
Организаторы: http://geekslab.org.ua/
JS Lab2017_Алексей Зеленюк_Сбалансированное окружение для вашей продуктивностиGeeksLab Odessa
JS Lab2017, 25 марта, Одесса
Алексей Зеленюк (Application Architect at Eleks Software)
Сбалансированное окружение для вашей продуктивности
Для построения больших веб-приложений необходим хороший фундамент: процесс сборки, тестирования и интеграции, анализа качества кода и отладки. Новые технологии и безнес-требования создают новые требования к окружению, усложняя его. Как построить надежное окружение, сохранив при этом его гибкость и простоту?
JS Lab2017_Юлия Пучнина_PhaserJS и что он умеетGeeksLab Odessa
JS Lab2017, 25 марта, Одесса
Юлия Пучнина (JS Engineer at Lifestreet Media)
PhaserJS и что он умеет
Написание игр очень отличается от привычной веб-разработки. Во-первых, это красиво: много графики, много эффектов. Во-вторых, это интересно: очень много задач, связанных с производительностью, ведь нам нужно чтоб игры не лагали ни на одном устройстве. PhaserJS дает отличную возможность писать игры практически без боли!
Все материалы: http://jslab.in.ua/
Организаторы: http://geekslab.org.ua/
JS Lab2017, 25 марта, Одесса
Евгений Сафронов (Senior developer at DataArt)
Тестирование Javascript кода. Инструменты, практики, тренды
О тестах и качестве с различных точек зрения и ракурсов. Тестирование, выполняемое разработчиками. Основные тренды, методы и инструменты для тестирования Javascript кода. Лучшие практики и подходы.
Все материалы: http://jslab.in.ua/
Организаторы: http://geekslab.org.ua/
JS Lab2017_Роман Якобчук_Почему так важно быть программистом в фронтенде GeeksLab Odessa
JS Lab2017, 25 марта, Одесса
Почему так важно быть программистом в фронтенде
Роман Якобчук (Senior Software Engineer at RevJet)
Может это неприятно слышать, но большинство фронтендщиков далеки от программирования. Проблема совершенно не новая, она всем известна, но почему-то лучше не становится. Фреймворки заменили необходимость понимать базовые принципы: паттерны, алгоритмы, структуры данных…Или так только кажется? Мы попробуем разобраться что пошло не так, и как быстро можно стать более ценным специалистом.
Все материалы: http://jslab.in.ua/
Организаторы: http://geekslab.org.ua/
JS Lab2017_Виталий Лебедев_Практические сложности при разработке на node.js GeeksLab Odessa
JS Lab2017, 25 марта, Одесса
Виталий Лебедев (Software Developer at DataArt)
Практические сложности при разработке на node.js
В этом докладе я расскажу, с какими непосредственными практическими сложностями можно встретиться при разработке на node.js, в силу тех или иных ограничений самого node.js, и какие для этих задач существуют возможные решения.
Все материалы: http://jslab.in.ua/
Организаторы: http://geekslab.org.ua/
JS Lab2017, 25 марта, Одесса
Андрей Кучеренко (Lead Software Engineer at EPAM Systems)
Разработка мультипакетных приложения: причины, способы, риски
Доклад раскроет тему разработки многопакетных приложений на javascript. Доклад сделан на основе реального опыта внедрения подобной разработки на проекте.
Все материалы: http://jslab.in.ua/
Организаторы: http://geekslab.org.ua/
JS Lab2017, 25 марта, Одесса
Сергей Селецкий (Senior Frontend Engineer at Lohika)
System.js и jspm. Что они могут дать для вашего проекта. Преимущества и недостатки. Как это работает с ES6. Примеры сборки проекта.
Все материалы: http://jslab.in.ua/
Организаторы: http://geekslab.org.ua/
Руслан Гроховецкий "Как Python стал делать погоду в Яндексе"Yandex
2 июля 2011, Я.Субботник в Екатеринбурге
Руслан Гроховецкий "Как Python стал делать погоду в Яндексе"
О докладе:
Про Python и Django: зачем нужна красота и простота перфекционистам с дедлайнами, на примере Яндекс.Погоды.
Когда число сервисов, которые делаются в Яндексе, стало возрастать, дедлайны — поджимать, а от процесса разработки требовалось стать более гибким, возникла потребность в свежих решениях. В докладе на примере Яндекс.Погоды рассказывается, как в Яндексе делают сервисы с помощью языка Python и веб-фреймворка Django.
«Статический анализ: гордость и предубеждения», Алексей Кузьменко, аналитик И...Mail.ru Group
Анализ кода — один из эффективных подходов к выявлению дефектов на этапе разработки программного обеспечения. Это позволяет избежать тривиальных и не очень ошибок, которые могут приводить к появлению уязвимостей. Существует ряд подходов, применяемых в анализаторах, на основании которых производится анализ, позволяющий снижать риски. Однако возникает ряд предубеждений, ведь не всегда предупреждение анализатора является реальным дефектом, тем более, что не всякий дефект является уязвимостью.
Докладчик:
Александр Сапронов
Описание:
Мы рассмотрим популярные библиотеки для функционального программирования на Python — fn.py, functools, itertools, funcy, hask, Toolz. Узнаем возможности каждой из библиотеки, а также как в динамическом язык имитировать мощную систему типов. Затронем характеристики функционального программирования и проверим помогают ли библиотеки выполнить.
В очередной раз убедился, что программисты пишут программы совершенно безалаберно. И работают они не благодаря их заслугам, а благодаря удачному стечению обстоятельств и заботе разработчиков компиляторов в Microsoft или Intel. Да, да, именно они заботятся и в нужный момент подставляют костылики нашим кривобоким программкам.
Статический и динамический полиморфизм в C++, Дмитрий ЛевановYandex
На примере некоторых архитектурных решений Крипты Дмитрий расскажет о способах реализации полиморфного поведения в программах на C++, о преимуществах и недостатках этих способов, а также о новых возможностях C++11.
Николай Паламарчук "Functional Programming basics for PHP developers"Fwdays
Functional Programming becomes very popular nowadays. What is it? Is it a hype or panacea? Should you deal with it as a PHP programmer? Let's find out!
Статический и динамический полиморфизм в C++, Дмитрий ЛевановYandex
На примере некоторых архитектурных решений Крипты Дмитрий расскажет о способах реализации полиморфного поведения в программах на C++, о преимуществах и недостатках этих способов, а также о новых возможностях C++11.
Нас окружает мир сетей, мобильных устройств, сайтов, облаков. Чтобы работать с этим миром, придумано невероятное количество технологий и языков программирования. Есть ли среди них место для языков Си/Си++? Стоит ли тратить время на их изучение, стоит ли использовать их в своих проектах? Не пора ли этим языкам на пенсию? Эти темы в своем докладе обсудит Андрей Карпов, активно участвующий в жизни сообщества Си++-программистов. Забегая вперед можно утверждать - языки Си/Си++ живее всех живых. Андрей расскажет о развитии языка и новых возможностях, появившихся в Си++11. Многие возможности существенно облегчают работу программиста и сокращают объем кода.
Универсальный сигнатурный анализ кода на C#, Java, PHPИван Кочуркин
В данном докладе затронуты такие темы, как теория и проблемы парсинга, построение и обход абстрактных синтаксических деревьев (AST) и разработка предметно-ориентированного языка (DSL).
Рассматриваются такие проблемы парсинга, как разбор контекстно-зависимых языков, обработка ошибок и др. В качестве примера применения теории приведена грамматика PHP, разработанная для генератора парсеров ANTLR.
Далее рассматриваются структура унифицированного AST, методы его обхода и сопоставления с паттернами.
Завершающей частью презентации является описание DSL, разработанного с целью записи существующих и будущих паттернов. Также приведены примеры некоторых паттернов для лучшей усвояемости материала.
Производительность Unity3D: подводные камни / Алексей Чубарь (BIT.GAMES)Ontico
Unity3D - это внушительный набор средств для кроссплатформенной разработки игр и 3D-приложений. Однако ряд его особенностей может привести к внезапному падению производительности продукта на мобильных платформах.
Где же прячутся подводные камни? Как обеспечить оптимальный user experience на старом смартфоне? Каких "граблей" стоит избегать при написании кода и подготовке графики? Рассмотрим на примере RPG "Гильдия Героев" для Android и iOS.
WebCamp2016, 29 июля, Одесса
Андрей Копёнкин CTO, FlyElephant
Оптимизируем мобильный веб полностью
В докладе поговорим об инициативе Accelerated Mobile Pages, о преимуществах её использования, что она из себя представляет и как она ускоряет отображение веб-страниц для портативных устройств
Website: http://webcamp.in.ua/devops.html#theme
Facebook: https://www.facebook.com/WebCamp/
VK: https://vk.com/webcamp
Twitter: https://twitter.com/WebCampOdessa
Youtube: http://bit.ly/2bsQ0LO
WebCamp2016:Front-End_Юрий Артюх_Современные подходы в версткеWebCamp
WebCamp2016, 29 июля, Одесса
Юрий Артюх Chief Technology Officer, Coderiver
Современные подходы в верстке
В 2016 верстка трансформируется, о том как ее автоматизировать, и выжить верстальщику среди реактов, ангуларов и прочего и будет рассказ.
Website: http://webcamp.in.ua/devops.html#theme
Facebook: https://www.facebook.com/WebCamp/
VK: https://vk.com/webcamp
Twitter: https://twitter.com/WebCampOdessa
Youtube: http://bit.ly/2bsQ0LO
WebCamp2016:Front-End_Роман Якобчук_Relay, GraphQL и остальные радости соврем...WebCamp
WebCamp2016, 29 июля, Одесса
Роман Якобчук (Senior Software Engineer, RevJet)
Relay, GraphQL и остальные радости современного React
После бури различных библиотек, направлений и обновлений в мире React, которая обрушилась на нас в прошлом году, мы почувствовали некоторое затишье. Действительно за последние полгода мы уже успели немного заскучать, это прекрасный момент выдохнуть и разобраться с технологиями которые выпустил Facebook для фетчинга данных в React (GraphQL, Relay), и тем, на что это вдохновило комьюнити.
Website: http://webcamp.in.ua/devops.html#theme
Facebook: https://www.facebook.com/WebCamp/
VK: https://vk.com/webcamp
Twitter: https://twitter.com/WebCampOdessa
Youtube: http://bit.ly/2bsQ0LO
WebCamp2016:BizDev_Алексей Иваница_Как построить и монетизировать мобильный п...WebCamp
WebCamp2016:BizDev, 31 июля, Одесса
Алексей Иваница (Product Manager, Readdle)
Как построить и монетизировать мобильный продукт
Расскажу о создании продукта на ранних стадиях, как анализировать поведения пользователей в нем и как его монетизировать.
Website: http://webcamp.in.ua/devops.html#theme
Facebook: https://www.facebook.com/WebCamp/
VK: https://vk.com/webcamp
Twitter: https://twitter.com/WebCampOdessa
Youtube: http://bit.ly/2bsQ0LO
WebCamp 2016: BizDev. Андрей Моспан: Правда ли, что продукт стоит ровно столь...WebCamp
Итак, у Вас есть продукт. Как понять сколько можно и сколько нужно брать за него денег? Как бы не продешевить? Знайте, Вы не один, кто задается таким вопросом и способов решить эту дилемму придумано уже довольно много. Поговорим о некоторых из них, и может быть уже завтра Вы начнете зарабатывать на своем продукте в разы больше!
WebCamp 2016: BizDev. Марина Никитчук : Искусство продажи мечты, а не сервиса.WebCamp
Почему BizDev это про увлечённость в процессе достижения бизнес-результатов, про любовь к экспериментам и жажду историй. Как научиться любить людей и перестать их продавать.
WebCamp 2016: BizDev. Александр Борняков: Маркетинг в США: как привлечь к себ...WebCamp
The document outlines an agenda to target the US B2B audience with 3 sections: 1) Analyze the competitive landscape and products, 2) Play to strengths and share tasks, 3) Track results and next steps. The first section involves analyzing competitors, products, and sales. The second section focuses on defining the niche, proving uniqueness, gaining recognition from opinion leaders. The third section is about tracking social recognition, leads, partnerships as measures of success and planning future market analysis, events, and standards.
WebCamp 2016: DevOps. Ярослав Погребняк: Gobetween - новый лоад балансер для ...WebCamp
Сравним монолитную и микросервисную архитектуры, увидим почему существующие решения (nginx, haproxy) плохо справляются с потребностями микросервисов, и рассмотрим опыт создания собственного open-source лоад балансера.
WebCamp 2016: DevOps. Николай Дойков: Опыт создания клауда для потокового вид...WebCamp
История развития и построения решения для потокового видео. Подходы к построению географически распределенного Docker Swarm кластера и остальных компонент данного проекта.
WebCamp 2016: DevOps. Егор Лопатин и Юрий Железко: How we build and deploy ou...WebCamp
В этом докладе мы расскажем свою историю про то, как автоматические сборки и развертывания пришли на смену ручному труду разработчиков и операционных инженеров. Это позволило нам увеличить предсказуемость наших релизов и увеличить доверие к команде.
WebCamp 2016: Front-end. Виталий Бобров: JavaScript для мобильной разработки.WebCamp
Это доклад о том, почему стоит рассматривать написание приложений на JavaScript как серьезную альтернативу для некоторых задач. Будет раскрыты особенности современных платформ: Cordova (на примере Ionic Framework), Native Script и React Native, почему стоит обратить на них внимание и в каких проектах они станут отличным выбором для команды разработчиков и клиента.
WebCamp 2016: Front-end. Андрей Ситник: Stylelint — как и зачем линтить CSSWebCamp
ESLint уже стал стандартом и большинство команд линтит JS. Но что с CSS? Андрей Ситник рассмотрит все линтеры для CSS. На примере Stylelint и Stylefmt покажет как линтер может повышать качество кода и решать социальные проблемы команды.
WebCamp 2016: PHP. Александр Шкарбалюк: SSO: Кому оно нужно и как его готовить?WebCamp
В чем отличие SSO от OAuth? Плюсы и минусы. Что и как выбрать? Безопасность и лучшие практики аутентификации. Как реализовать прозрачный “log-in” без редиректов: особенности кросс-доменного общения.
WebCamp 2016: PHP. Николай Паламарчук: PHP и микросервисыWebCamp
Микросервисная архитектура - способ разграничения ответственности между компонентами системы за определённые функции. Во первых, попробуем разобраться что это такое и когда стоит вообще с этим связываться. А потом рассмотрим особенности разработки микросервисов на PHP.
WebCamp 2016: PM. Яна Пролис: "Вредные" советы по конфликтам в команде и комп...WebCamp
— Вы не любите конфликты?
— Да вы просто не умеете их готовить!
Многие из нас считают, что конфликты это плохо и, что их отсутствие это признак здоровой атмосферы в команде и вселенского счастья. Так вот нет! В докладе мы обсудим типологию конфликтов, их уровни урегулирования, виды власти и реальные кейсы по циклу жизни конфликтов. После этого доклада вы точно полюбите конфликты! :)
WebCamp 2016: PM. Дмитрий Пискарев: Способы мотивации и продления LTV сотрудн...WebCamp
1. Как подобрать людей, которые будут эффективно работать над продуктом-монстром?
2. Какую систему для их развития построить? Личный опыт:
2.1. Мотивация, повышение зарплаты, личностное развитие.
2.2. LTV сотрудника
2.3. "План Б".
3. Какие критические бреши в такой системе могут возникнуть и как их избежать?
WebCamp 2016: PM. Евгений Лабунский: Командная безответственностьWebCamp
База доклада основывается на понятиях вовлеченности команды в принятие решений, автономии развития и построении связей, эмоциональном интеллекте. Мы будем говорить о работе с командой и создании окружения, которое будет стимулировать рост ответственности команды с одной стороны, и о действиях которые порождают безответственность. Будем говорить о примерах из моей практики по борьбе с проблемой безответственности, сопротивления переменам.
2. ‣ 12+ лет опыта, 7 лет с Python, 6 с JS
‣ Работал в oDesk, Helios, 42cc.
‣ Соорганизатор PyCon Ukraine, KyivJS
‣ CTO в CartFresh
Обо мне
3. ‣ Стартап по доставке продуктов на дом
‣ Работаем как CartFresh (Boston, US) и ZAKAZ.UA
(Киев, Днепр, Одесса, Харьков)
‣ Apache CouchDB, Apache Solr, Redis
‣ python back-end
CartFresh
4. Эта презентация не о
‣ автогенерации кода
‣ поиске серебряной пули
‣ проверке типов в рантайме
‣ статически типизированным питоне
5.
6. ‣ Немного зачем это надо
‣ Как это выглядит
‣ Тулы и как можно пользоваться на практике
Содержание
8. Пусть в некой деревне живёт брадобрей, который
бреет тех и только тех, которые не бреются сами.
Бреет ли брадобрей сам себя?
Парадокс Рассела
9. ‣ В 1908 Russell & Whitehead доставили “"ramified" theory of types”
‣ В 1920-х Leon Chwistek and Frank P. Ramsey доставили "simple
type theory”
‣ 1940 Alonzo Church "A Formulation of the Simple Theory of Types”
‣ 1972 Girard–Reynolds discovered System F (polymorphic lambda
calculus)
История
10. ‣ Пацаны обратили внимание, что у простой теории
типов есть интересные свойства и может быть
просто расширена до поддержки Декартового
произведения и дизъюнктного объединения
‣ Поэтому простую теорию типов используют в
дизайне языков программирования
‣ А System F помогла улучшила простую теорию типов
и такое полезное свойство, как полиморфизм
Теория
11.
12. ‣ Python will remain a dynamically typed language, and
the authors have no desire to ever make type hints
mandatory, even by convention
PEP 484
def f(x: str) -> str:
13. Gradual Typing
‣ Разработана в 2006 году Jeremy Siek и Walid Taha
‣ Идея состоит в том, чтобы позволить части кода
быть динамически типизированным, а части –
статически
14. Нафига
‣ Статическое описание типа аргументов и
возвращаемого значения функций упрощает чтение
кода и помогает формировать документацию
‣ Поможет обнаружить баги за меньшее количество
времени
‣ Поможет найти сложновоспроизводимые баги
быстрее
15. Напоминаю, чтение кода
‣ IBM 1989: 50% of the effort in accomplishing a task for the
programmer is towards understanding the system
‣ Bell Labs 1992: 60%-80% of their time understanding code,
20% as the developers gain experience with current
codebase
‣ National Research Council 1997 (Canada): over 25% of their
time either searching for or looking at code
‣ Peter Hallam 2006: 70% during personal experiment
‣ Microsoft 2007: 65% (survey)
16. Что было
‣ PyCharm умел делать статический анализ контекста
использования переменных. Мог трекать до 60%
случаев. Похоже на Facebook’s flow для JavaScript
‣ Prospector – смесь статического анализатора с PyLint
‣ In-house tools по анализу docstring etc.
18. Определение в контексте Python:
Предполагается, что тип – это множество значений и
множество функций, к которым можно применить эти
значения.
19. Gradual Typing
‣ Тип t1 консистентен с типом t2 если t1 это подтип t2
(но не наоборот!)
‣ Any консистентен со всеми типами (но не является
подтипом)
‣ Все типы являются подтипом Any
20. Отношение между подтипами
‣ Каждый тип является подтипом самого себя
‣ Множество значений уменьшается с увеличением
количества функций, которые работают с этим
подтипом
21. Типы vs Классы
Классы являются фабриками объектов, определенных
с помощью class . Класс – динамическая/runtime
концепция
22. Аннотации
‣ Аннотации типов являются опциональными
‣ Никак не влияют на выполнение
‣ lambda-функции не поддерживают аннотации
23. Синтаксис
def f(x: int) -> int:
return x + 1
print(f(1))
def f1(x: int) -> int:
y = "1" # type: int
return x + y
print (f(2))
24. Python 2
def embezzle(account, funds=1000000, *fake_receipts):
# type: (str, int, *str) -> None
"""Embezzle funds from account using fake
receipts."""
return None
print embezzle(1, 1000)
# hints11.py, line 9: Argument 1 to "embezzle" has
incompatible type "int";
expected "str"
25. Граф анализа
from typing import List, Any
def append_pi(lst: List[float]) -> None:
lst += [3.14]
append_seven(lst)
def append_seven(lst):
lst.append("7")
my_list = [1, 3, 5] # type: List[float]
append_pi(my_list)
print (my_list)
# [1, 3, 5, 3.14, '7']
27. Граф анализа
from typing import List, Any
def append_pi(lst: List[float]) -> None:
lst += [3.14]
def append_seven(lst):
lst.append("7")
append_pi(lst)
my_list = [1, 3, 5] # type: List[float]
append_seven(my_list)
print (my_list)
# [1, 3, 5, '7', 3.14]
28. Какие бывают
‣ Встроенные классы (int, bool etc.)
‣ Абстрактные классы
‣ Дополнительно из модуля typing: None , Any , Union ,
Tuple , Callable, Sequence, Dict
‣ Динамически вычисленные типы не работают
29. Алиасы
from typing import TypeVar, Iterable, Tuple
Url = str
def fetch(url: Url):
pass
T = TypeVar('T', int, float, complex)
def inproduct(v: Iterable[Tuple[T, T]]) -> T:
return sum(x*y for x, y in v)
print(inproduct(((1, 1.3),)))
# 1.3
30. Дженерики
‣ TypeVar – фабрика для создания
параметризированных дженериков, напр. AnyStr =
TypeVar('AnyStr', str, bytes)
‣ def concat(x: AnyStr, y: AnyStr) -> AnyStr –
ограничения на тип сразу на оба аргумента
31. Дженерики
from typing import TypeVar
AnyStr = TypeVar('AnyStr', str, bytes)
def concat(x: AnyStr, y: AnyStr) -> AnyStr:
return x + y
print(concat("_(*~", "*)_/"))
# _(*~*)_/
concat(b"_(*~", "*)_/")
# TypeError: string argument without an encoding
# hints4.py, line 17: Type argument 1 of "concat" has
incompatible value
"object"
32. Отношение между подтипами
from typing import List
class User(int):
pass
my_list = [1, 3, 5] # type: List[int]
my_list.append(User())
print(my_list)
# [1, 3, 5, 0]
my_list2 = [1] # type: List[User]
print (my_list2)
# hints2.py, line 14: List item 1 has incompatible
type "int"
33. Forward references
class Tree:
def __init__(self, left: Tree, right: Tree) -> None:
self.left = left
self.right = right
Это не будет работать
34. Forward references
class Tree:
def __init__(self, left: ‘Tree’, right: ‘Tree’) -> None:
self.left = left
self.right = right
Это не будет работать
35. Union
from typing import Union, Sequence
class Employee(str): pass
def employees(e: Union[Employee, Sequence[Employee]]) -> None:
if isinstance(e, Employee):
e = [e]
for _ in e:
print("Employee: {}".format(_))
employees(Employee("Max K"))
# Employee: Max K
employees([Employee("Max K"),
Employee("Dima Y")])
# Employee: Max K
# Employee: Dima Y
38. Переменные
x = [] # type: List[Employee]
x, y, z = [], [], [] # type: List[int], List[int], List[str]
x, y, z = [], [], [] # type: (List[int], List[int], List[str])
x = [
1,
2,
] # type: List[int]
39. Stub-files
‣ Расширения
‣ Third-party модули без типов
‣ Standard library модули
‣ Модули, которые должны поддерживать Python 2 и 3
‣ Модули, которые используют аннотации в другом
контексте