Антон Пискунов. Независимый разработчик.
«BeeGo для веб-приложений, API и демонов»
- Почему BeeGo? vs Revel and another guys.
- Что мы пишем на BeeGo? Наш личный опыт.
- Как написать облачный стартап и инфраструктурные сервисы на BeeGo за две недели.
- Sweet API, нэймспейсы и автодокументация.
- Демонизация BeeGo, к чему мы пришли?
- Разработчики, мэйнтейнинг, существующие проблемы
http://go-meetup-spb.timepad.ru/event/169777/
Антон Пискунов. Независимый разработчик.
«BeeGo для веб-приложений, API и демонов»
- Почему BeeGo? vs Revel and another guys.
- Что мы пишем на BeeGo? Наш личный опыт.
- Как написать облачный стартап и инфраструктурные сервисы на BeeGo за две недели.
- Sweet API, нэймспейсы и автодокументация.
- Демонизация BeeGo, к чему мы пришли?
- Разработчики, мэйнтейнинг, существующие проблемы
http://go-meetup-spb.timepad.ru/event/169777/
- почему PHP программисты снискали дурную славу;
- что делать, чтобы стать хорошим программистом;
- как писать идеальный код;
- что такое командная разработка проекта;
- учет позиции бизнеса при разработке проекта;
- основные задачи, который должен решать программист;
D2D Pizza JS Илья Беда "Куда мы все катимся?"Dev2Dev
Окружение JavaScript, наверно, самая быстроразвивающаяся отрасль в мире разработки программного обеспечения. Все слышали шутку про книгу “36 новых JavaScript фреймворков, выпущенных в марте”, и это не далеко от правды.
В своем обзорном докладе я расскажу о своем пути во frontend. О том, как вижу современную индустрию, о существующих проблемах и путях их решения. Все не так уж радужно, как может показаться. Надеюсь, мой доклад позволит вам взглянуть на мир JavaScript с другой стороны или, по крайней мере, задуматься о том, в правильном ли направлении вы движетесь?
Доклад с конференции D2D Pizza JS - http://dev2dev.ru/events/8/
Плюсы и минусы Go для разработчиков на C++, Вячеслав БахмутовYandex
В докладе речь пойдёт о языке Go. Вячеслав расскажет о внутреннем устройстве языка (структуре, оптимизации, сборщике мусора и т.д.), о том, как и почему Go используют в Яндексе и что о нём говорят разработчики на С++. Отдельно Вячеслав остановится на многопоточном программировании и особенностях отладки и профилирования в Go.
Быстрое расширение Robot Framework под свои нужды с использованием Pythonautomated-testing.info
Быстрое расширение Robot Framework под свои нужды с использованием Python, Михаил Поляруш
Когда мы начинаем заниматься автоматизацией тестирования ПО, мы редко знаем и понимаем, что нам надо будет делать, а тем более, как это нужно реализовать. Потому, выбираем самые простые решения, которые иногда даже не подразумевают программирования. Вы считаете, что успешная автоматизация может быть без программирования? Я уверен, что НЕТ, и с уверенностью могу сказать, что процесс автоматизации с помощью python и RobotFramework может значительно упростить Вам жизнь. Убедитесь в том, что архитектура RobotFramework очень гибкая, а python – лучший друг автоматизатора. Вас ждет увлекательная теория и много практики в живую.
Эволюция проекта
Автоматизация бизнес-процессов
Очевидные решения
Продвинутые решения: Gearman, phpDaemon и другие
Очереди сообщений
Процессы в PHP - готовые решения (связки Очередь + Процессы)
Результаты удивляют
Проблемы и трудности, с которыми столкнулись
Кирилл Черятов. Эволюция системы логирования интеграционного ПО. Сокращаем вр...ScrumTrek
Автоматизация бизнес-процессов часто подразумевает интеграцию большого количества IT систем. При производстве такого ПО серьезной проблемой является сбор и анализ логов систем. Эта проблема актуальная и для системы FORIS, которая поддерживает бизнес МТС.
Мы разберем проблемы, которые подтолкнули к разработке системы Central Logging, обозначим решение этих проблем, узнаем, какое отношение имеет игра пинг-понг к разработке программного обеспечения, а так же, как Central Logging помогла нам меньше играть в пинг-понг и больше времени тратить на разработку новых задач для заказчика.
Эксплуатация container-based-инфраструктур / Николай Сивко (okmeter.io)Ontico
HighLoad++ 2017
Зал «Мумбай», 7 ноября, 10:00
Тезисы:
http://www.highload.ru/2017/abstracts/2899.html
На каждой конференции мы слушаем интереснейшие доклады про CI/CD, service discovery, docker, kubernetes и т.д. Практически все эти доклады рассказывают нам о "разработческой" стороне проблемы: как собрать образ контейнера, быстро его протестировать и задеплоить, как контейнеры друг о друге узнают, как добавится новый upstream в конфиг nginx и т.д.
Но никто нам не рассказал, как потом с этим "облачным" счастьем жить (тем более под нагрузкой).
...
- почему PHP программисты снискали дурную славу;
- что делать, чтобы стать хорошим программистом;
- как писать идеальный код;
- что такое командная разработка проекта;
- учет позиции бизнеса при разработке проекта;
- основные задачи, который должен решать программист;
D2D Pizza JS Илья Беда "Куда мы все катимся?"Dev2Dev
Окружение JavaScript, наверно, самая быстроразвивающаяся отрасль в мире разработки программного обеспечения. Все слышали шутку про книгу “36 новых JavaScript фреймворков, выпущенных в марте”, и это не далеко от правды.
В своем обзорном докладе я расскажу о своем пути во frontend. О том, как вижу современную индустрию, о существующих проблемах и путях их решения. Все не так уж радужно, как может показаться. Надеюсь, мой доклад позволит вам взглянуть на мир JavaScript с другой стороны или, по крайней мере, задуматься о том, в правильном ли направлении вы движетесь?
Доклад с конференции D2D Pizza JS - http://dev2dev.ru/events/8/
Плюсы и минусы Go для разработчиков на C++, Вячеслав БахмутовYandex
В докладе речь пойдёт о языке Go. Вячеслав расскажет о внутреннем устройстве языка (структуре, оптимизации, сборщике мусора и т.д.), о том, как и почему Go используют в Яндексе и что о нём говорят разработчики на С++. Отдельно Вячеслав остановится на многопоточном программировании и особенностях отладки и профилирования в Go.
Быстрое расширение Robot Framework под свои нужды с использованием Pythonautomated-testing.info
Быстрое расширение Robot Framework под свои нужды с использованием Python, Михаил Поляруш
Когда мы начинаем заниматься автоматизацией тестирования ПО, мы редко знаем и понимаем, что нам надо будет делать, а тем более, как это нужно реализовать. Потому, выбираем самые простые решения, которые иногда даже не подразумевают программирования. Вы считаете, что успешная автоматизация может быть без программирования? Я уверен, что НЕТ, и с уверенностью могу сказать, что процесс автоматизации с помощью python и RobotFramework может значительно упростить Вам жизнь. Убедитесь в том, что архитектура RobotFramework очень гибкая, а python – лучший друг автоматизатора. Вас ждет увлекательная теория и много практики в живую.
Эволюция проекта
Автоматизация бизнес-процессов
Очевидные решения
Продвинутые решения: Gearman, phpDaemon и другие
Очереди сообщений
Процессы в PHP - готовые решения (связки Очередь + Процессы)
Результаты удивляют
Проблемы и трудности, с которыми столкнулись
Кирилл Черятов. Эволюция системы логирования интеграционного ПО. Сокращаем вр...ScrumTrek
Автоматизация бизнес-процессов часто подразумевает интеграцию большого количества IT систем. При производстве такого ПО серьезной проблемой является сбор и анализ логов систем. Эта проблема актуальная и для системы FORIS, которая поддерживает бизнес МТС.
Мы разберем проблемы, которые подтолкнули к разработке системы Central Logging, обозначим решение этих проблем, узнаем, какое отношение имеет игра пинг-понг к разработке программного обеспечения, а так же, как Central Logging помогла нам меньше играть в пинг-понг и больше времени тратить на разработку новых задач для заказчика.
Эксплуатация container-based-инфраструктур / Николай Сивко (okmeter.io)Ontico
HighLoad++ 2017
Зал «Мумбай», 7 ноября, 10:00
Тезисы:
http://www.highload.ru/2017/abstracts/2899.html
На каждой конференции мы слушаем интереснейшие доклады про CI/CD, service discovery, docker, kubernetes и т.д. Практически все эти доклады рассказывают нам о "разработческой" стороне проблемы: как собрать образ контейнера, быстро его протестировать и задеплоить, как контейнеры друг о друге узнают, как добавится новый upstream в конфиг nginx и т.д.
Но никто нам не рассказал, как потом с этим "облачным" счастьем жить (тем более под нагрузкой).
...
Функциональное программирование в браузере / Никита ПрокоповOntico
Писать веб-приложение — то еще занятие: медленно, сложно. Особенно трудно, если вы взялись за большой интерфейс.
В докладе мы ответим на следующие вопросы:
— Что такое функциональное программирование?
— Как функциональный подход помогает делать веб-приложения?
— Что в ФП хорошо ложится на специфику интерфейсостроения?
— Как может выглядеть архитектура современного фронтенд приложения, использующего ФП?
— Какие есть истории успеха и живые примеры?
На примерах из ClojureScript, JavaScript, Elm и React.js.
Назад в будущее! …и другие мысли о подготовке программистов в ВУЗахDennis Schetinin
Как бы вы охарактеризовали сегодняшнюю ситуацию в сфере разработки программного обеспечения?
Автор считает, что ее без особой натяжки можно назвать стагнацией, и предлагает поразмышлять над одной из возможных причин: подготовкой программистов в ВУЗах…
JavaScript завтра / Сергей Рубанов (Exante Limited)Ontico
За последние несколько лет в мире js-разработки особое внимание получили такие проекты как AtScript, TypeScript, SoundScript, Flow, Traceur, Babel, каждый из которых пытается предоставить разработчикам некую "улучшенную" версию JavaScript. Комитет TC39 также стал очень активен и разработал стратегию развития стандарта ECMAScript с более частыми релизами. Движки JavaScript стремительно приближаются к полной поддержке ES6. Огромное количество JS-фреймворков и библиотек выбирают следующую версию стандарта уже сегодня. Это означает, что необходимо уже сегодня обратить внимание на происходящее в мире JavaScript-разработки и разобраться, что ждет язык завтра.
В своем докладе я постараюсь дать ответы на следующие вопросы:
- почему такие фреймворки и библиотеки как Angular, Ember, React начали активно и кардинально меняться;
- почему новая версия стандарта языка ES6 так долго внедряется вендорами браузеров и как TC39 решил ускорить процесс стандартизации и внедрения последующих версий ECMAScript;
- почему CoffeeScript больше не "just JavaScript", и действительно ли он сделал такой значимый вклад в следующую версию JavaScript;
- почему были созданы AtScript, TypeScript, Flow, чем каждый из них отличается от остальных, и как они влияют на дальнейшее развитие JavaScript;
- что такое Strong Mode и SoundScript;
- как начать писать ES6+ код уже сегодня.
Алексей Романчук «Реактивное программирование»DevDay
Старые подходы к построению программных систем не так актуальны для создания современных решений. В дополнение к масштабируемости добавляются требования отзывчивости, отказоустойчивости и событийности. Пытаться работать на родном старом или посмотреть в сторону новых технологий? В своем выступлении я расскажу про концепцию reactive programming. Какие технологии реализуют концепцию и как сделать первые шаги в этом новом прекрасном мире.
Based on the core.async library Clojure allows a CSP programming style, so your system is made up of asynchronous, lightweight processes which communicate through channels.
The talk shows common pitfalls in classic OO GUI
approaches and shows how to tackle some of these problems in a fundamentally simpler way.
Статический анализ кода: борьба с удорожанием ошибокAndrey Karpov
Нет смысла говорить, что "надо писать код без ошибок". Ошибки были, есть и будут. Все хорошо понимают, что ошибки следует исправлять. Люди забывают, что ошибка должна быть исправлена с минимальными временными и денежными затратами!
Что такое REPL, как он устроен и какие крутые возможности в нём заложены. Поговорим о выполнении кода в REPL и о том как работает автокомплит в динамических языках. Ответим на вопрос что такое vm.runInContext, перехватим парочку промисов, сделаем вывод результатов действительно приятным и даже узнаем как подгрузить нужные модули и не подать виду. В заключение рассмотрим потрясающие возможности, которые даёт нам инфраструктура npm и как это всё можно использовать в работе.
Доклад ориентирован на тех, кому небезынтересен мир Node.js, но будет доступен также и более широкому кругу JS-разработчиков. Надеюсь, для кого-нибудь этот доклад станет очередной ступенькой в изучении любимого языка.
Николай Сивко "Хорошо поддерживаемое в продакшне приложение"Tanya Denisyuk
Исторически сложилось так, что одни люди разрабатывают приложения (Dev), а другие эксплуатируют их в продакшне (Ops). И у последних есть немало проблем с тем, что невозможно понять, что происходит.
Причем это касается как собственных разработок, так и популярных open source решений.
Я расскажу, как устроена диагностика у некоторых популярных софтин:
- nginx
- postgresql
- mongodb
Мы попробуем разобраться, что там сделано хорошо, и чего не хватает для полного счастья.
Во второй части доклада мы поговорим про то, как нужно инструментировать собственное приложение для прозрачной работы в продакшне:
- что считать и зачем: ошибки, тайминги, разные состояния приложения,
- инструментарий: your_lang-metrics, your_lang-statsd-client, логи,
- как не перемудрить и не убить прод диагностикой.
Может показаться, что этот доклад про DevOps, но нет - про docker не будет ни слова :)
Дмитрий Лукьяненко: Первый фреймворк на Selenium + TestNGDataArt
Дмитрий Лукьяненко, QA Automation рассматривает:
- Selenium IDE;
- Selenium WebDriver;
- Page Obgect Pattern;
- Page Factory Pattern;
- локаторы;
- как построить фреймворк и куда его можно дальше развивать.
Разработка портируемой инфраструктуры New Relic — контейнеры, CoreOS и прочие...Ontico
HighLoad++ 2017
Зал «Кейптаун», 7 ноября, 17:00
Тезисы:
http://www.highload.ru/2017/abstracts/2897.html
Нашей группе было поручено создать новый самостоятельный “регион” для всех продуктов New Relic, предназначенный для обслуживания европейских клиентов, подпадающих под ограничения GDPR. Здесь следует отметить, что так как наша компания предоставляла свои услуги исключительно через “облако” (SaaS), то хорошо выработанных процессов для настройки всей инфраструктуры “с нуля” у нас не было.
...
Как построить свой фреймворк для автотестов?Dmitry Buzdin
Мы пройдемся по всем основным блокам построения тестового фреймворка и тому, как они связаны между собой. Вы научитесь собирать свое решение по автоматизации из библиотек с открытым кодом и делать так, чтобы они дополняли друг друга.
Читабельные отчеты для автоматизации на C# / Gallio / BDDfyDmytro Zharii
Мой доклад про создание читабельных отчетов для автоматизации тестирования на .NET/C# + Webdriver + Gallio Icarus/MbUnit + BDDfy
Доклад был сделан специально для онлайн конференции Auto ConfeT&QA, прошедшей в октябре 2012 года.
http://confetqa.ru/
======================================
См. также:
Gallio Icarus:
http://gallio.org
BDDfy – фреймворк для БыДиДификации кода :)
Страница проекта на Github:
http://teststack.github.com/TestStack.BDDfy/
Описание на английском:
http://www.mehdi-khalili.com/bddify-in-action/introduction
PHP libevent Daemons. A high performance and reliable solution. Practical exp...Arvids Godjuks
It is considered (rigthly in most cases) that it's a bad manner to implement a daemon using PHP. It's OK for prototyping but no-no for production. That were our thoughts when we've started to implement a new version of browser game. It was planned to describe an interface to communicate with daemon that will be then rewritten in pure C.
However, fist libevent PHP daemon performance tests forced us to think if we really need to rewrite it in C. What was the performance? Are there memory leaks? All these will be covered in the speech.
You will also learn about problems, features and how a real project results.
11. # Сильные стороны Clojure
## Concurrency
Иммутабельные персистентные
структуры данных
Явная модель изменений,
высокоуровневые примитивы,
транзакционная память
Проще, предсказуемее, компонуемее
12. # Сильные стороны Clojure
## Обработка данных
Дата-центричная философия
Удобная стандартная библиотека
ФП — композиция кусков
Extensible Data Notation
13. # Сильные стороны Clojure
## Язык общего назначения
Небольшой, выразительный
Компактный синтаксис
Динамический полиморфизм, без ООП
Компонуемые абстракции,
открытость, расширяемость
Кодогенерация (порой)
14. # Сильные стороны Clojure
public class StringUtils {
public static boolean isBlank(String str) {
int strLen;
if (str == null || (strLen = str.length()) == 0) {
return true;
}
for (int i = 0; i < strLen; i++) {
if ((Character.isWhitespace(str.charAt(i)) == false)) {
return false;
}
}
return true;
}
} [](){} ×28
17. # Анатомия Clojure
(defn blank? [s]
(every? #(Character/isWhitespace %) s))
списки
вектор
код
как данные
18. # Clojure как Java
Уважает платформу
Прямой interop в Java
Генерация .class =>
дергаем Clojure из Java-проекта
Lein работает прямо
с Maven-репозиториями
19. # Clojure как Java
Писать Java на Clojure проще, чем
на самой Java
Разгоняется до скорости Java
20. # Clojure как Python
Динамическая компиляция
Быстрое прототипирование
Быстрее, чем в Питоне (REPL)
Компактнее и лаконичнее,
чем в Питоне (ФП)
Потенциал для оптимизации
21. # Clojure как Bash*
Удобный перочинный нож
Особенно если запущен REPL
Особенно хорошо — разбор,
анализ и трансформация данных
* Обобщенный
22. # Clojure как JavaScript
## ClojureScript
Clojure в браузере
23. # ClojureScript
## Зачем?
Писать web и не сойти с ума
Трудно масштабировать JS проект:
нужна хорошая архитектура
нужна жесткая дисциплина
нужна согласованность по тулзам
Проблема не в синтаксисе
30. Не надо ждать стандартов 2 года
Не надо ждать смерти IE 7..10 лет
Не надо ждать библиотек 0..∞
Уже сегодня, уже сейчас
# ClojureScript
## Компиляция
Destucturing
Compact function syntax
Vararg parameters
Modules/imports
Lexical scope
Real data structures
Array comprehensions
Maps with non-string keys
For-of
Multiline strings
33. # Clojure сообщество,
## или зачем интересоваться Clojure
Clojure сделает из вас более
лучшего инженера
Много хорошего кода
Правильные ценности
Правильная философия
34. # Clojure сообщество,
## или зачем интересоваться Clojure
Площадка для экспериментов
Крайне полезные лекции!
Мало сил — приходится искать
хорошие решения
35. # Clojure сообщество
## Доклады Rich Hickey про CS
Hammock-driven development
Are we there yet?
Simple made easy
TBD (так вот называется,
о дизайне систем)
39. — несложно, дело привычки
— читать сложнее Erlang-а
— Python (2,3)
Java, Erlang (4)
Clojure(6,7)
— примерно Ruby (без Rails)
— очень зависит от автора
# Clojure в Echo
## Насколько сложно читать?
40. — очень легко
— легче, чем в ООП языках
— меньше кода, только суть
— упирается в понимание кода
— Проблем с отладкой нет
(отладочная печать она и в Африке
отладочная печать)
# Clojure в Echo
## Насколько сложно писать?
41. — неделя
— от недели и больше
— недели две
— с учетом, что есть опыт в ФП
# Clojure в Echo
## Когда начинает получаться?
42. — concurrency примитивы
— двухсторонний interop
— meta параметры
— идеология
# Clojure в Echo
## Наиболее сложные области
43. — гибкость, лаконичность
— особенно чувствуется при
переключении на другой язык
— скорость написания кода
(«опа—опа и готово»)
— java—библиотеки
— удобна для файлов конфигурации
# Clojure в Echo
## Полезно
44. — скобки (1 чел.)
— привязанность к Java (2 чел.)
— непрозрачность кода из—за
макросов (2 чел.)
— медленный старт, тяжеловесность
платформы (2 чел.)
# Clojure в Echo
## Что раздражает?
45. — Большая неограниченная свобода.
Можно писать как угодно, в любом
стиле. Зеркало разработчика.
— Идеальна для соло проектов и
плоха для командной разработки.
— Писать на Clojure очень легко,
поэтому мы так много пишем и
переписываем то, что пишем.
# Clojure в Echo
## Общее впечатление
46. # Clojure в Echo
## Twitter Storm
Начиналось всё хорошо
47. # Clojure в Echo
## Twitter Storm
Фреймворк, не библиотека
Всё делает сам
Нужно интегрировать с ним тулзы
Нужно специальное тестирование
48. # Clojure в Echo
## Twitter Storm
Не переконфигурируется на лету
Баги в реализации (leaks, deploy)
Фиксирует версии библиотек
(zookeeper, clojure, логгинг, вебстек?)
Заменили на plain old functions
+ систему управления кластером
(скоро)
49. # Clojure в Echo
## Midje: unit-testing
Начиналось всё хорошо
50. # Clojure в Echo
## Midje: unit-testing
Простые тесты писать проще*
(is (= (:peer res) :p1))
(fact
res => (contains {:peer :p1}))
* Ну не сложнее точно
51. # Clojure в Echo
## Midje: unit-testing
Простые тесты писать проще*
(is (= (:peer res) :p1))
(fact
res => (contains {:peer :p1}))
* Ну не сложнее точно
52. # Clojure в Echo
## Midje: unit-testing
(fact
res => (contains {:peer :p1}))
Поведение неконсистентно
Обычная clojure не подходит
Свои checkers писать нереально
Адское макропрограммирование
Нет junit.xml вывода
и даже автор не представляет, как его добавить
53. # Clojure в Echo
## Midje clojure.test: unit-testing
(is (= (:peer res) :p1))
Прямой, тупой, бесхитростный
Расширяется во все стороны
Чистая дистилированная clojure
Нет mocking, только bindings :(
54. # Clojure в Echo
## Положительный опыт
clojure.data.*
clojure.tools.*
http.async.client
riemann
clj-redis
clj-oauth
amotoen
nippy
ring
compojure
clojurescript
enfocus
jayq
shoreleave