HolyJS 2016 Piter

5 июня 2016
Санкт-Петербург, Россия
Смотреть
В избранное

Алексей Федоров

Лидер сообщества в JUG.ru

Денис Мишунов

Разработчик в Digital Garden AS

Виктор Русакович

Разработчик в GP Software.travel

Maurice de Beijer

Software architect and developer в ABL - The Problem Solver

Вячеслав Лапин

Разработчик в EPAM

О мероприятии

5 июня в Петербурге прошла большая JavaScript-конференция HolyJS. На конференции было более 20 технических докладов, море общения с коллегами и возможность обсудить наболевшее с JavaScript-экспертами.

Для кого

  • Техническим директорам
  • Тимлидам
  • Разработчикам
  • Программистам
  • QA
Поделиться

Расписание

Развернуть все
пятница, 5 июня
День -365
Получить доступ ко всем докладам
Куплено
В корзине
0 ₽
0 ₽
0 $
0 $
0 €
0 €
Куплено
В корзине
0 ₽
0 ₽
0 $
0 $
0 €
0 €

Денис Мишунов

Разработчик в Digital Garden AS

В погоне за производительностью: психология пользователя

«Страница должна загружаться быстрее чем за одну секунду; количество серверных запросов должно быть сведено к минимуму; CSS и JS файлы должны быть сжаты и не превышать 50 килобайт…», — это лишь малая часть технических решений и рекомендаций, которыми нас снабжает индустрия в погоне за производительностью. Но во всем этом есть одна проблема — пользователям нет никакого дела до килобайтов, миллисекунд и количества запросов. Производительность — это не математика. Производительность — это восприятие. Именно восприятие создает впечатление медлительности сайта с малым количеством серверных запросов, в то время как сайт, возвращающий результаты поиска в течение секунд, может восприниматься как достаточно быстрый для пользователя. В докладе будут рассмотрены психологические и технические теории, приемы и примеры, позволяющие управлять восприятием пользователя.

Куплено
В корзине
0 ₽
0 ₽
0 $
0 $
0 €
0 €
Секция 1

Виктор Русакович

Разработчик в GP Software.travel

Реактивное программирование — управляем потоками данных

Доклад о достаточно редком подходе к программированию в JavaScript — реактивном программировании. Реактивный подход рассматривает сами данные как источник для действий. Мы лишь создаем потоки таких данных, которые, проходя через условия, выборки, объединения с другими потоками, управляют нашим приложением. Реактивный подход может помочь в больших проектах с множеством источников данных. При этом обработка данных происходит асинхронно и с зависимостью от данных других источников. Например, приложение со множеством независимых модулей: расписание, корзина, дополнительные услуги, календарь. Расскажу о том, как сложность переноса связей в JavaScript решается с помощью reactive extensions (RxJS).

Куплено
В корзине
0 ₽
0 ₽
0 $
0 $
0 €
0 €
Секция 2

Maurice de Beijer

Software architect and developer в ABL - The Problem Solver

Event-Sourcing your React-Redux applications

Most React-Redux applications just store the work in progress as is in a database. It is fine to treat data in a simple CRUD fashion like this with a smaller application. But yet this is not optimal when applications get more complex. Use the Command Query Responsibility Segregation (CQRS) design pattern for more complex applications. More so, combining this with Event-Sourcing (ES) is an even more powerful solution. Further, Event-Sourcing ensures that every action, which led up to the current state, is stored as a separate domain event. This collection of domain events is then used as the write model in the CQRS model. These same events are then launched into a secondary database to build the read model for the application. During this session, Maurice de Beijer explains why you might want to use Event-Sourcing. He further explains how to get started with this design in your React and Redux applications.

Куплено
В корзине
0 ₽
0 ₽
0 $
0 $
0 €
0 €
Секция 3

Вячеслав Лапин

Разработчик в EPAM

Низкоуровневое программирование в браузере — готовимся использовать WebAssembly

Как говаривал старина Дарвин:«Выживает не сильнейший, а тот, кто лучше приспосабливается к изменениям». Сегодня индустрию гонят вперёд большие нагрузки — разработчики стараются как можно быстрее отображать страницы, пересылать данные на сервер и реагировать на действия пользователя. Уже продолжительное время JavaScript занимает место основного клиентского языка в Web`е, практически всё, что не JavaScript, сегодня так или иначе компилируется в JavaScript. JS, несмотря на свои недостатки, выстоял в своё время под натиском VBScript`а, практически сразил Flash... и вот на горизонте появляется новая не-JS-технология для Client-side`а: WebAssembly! Будучи плодом коллективных усилий всех ведущих игроков рынка — Google, Mozilla, Apple и Microsoft, можно с уверенностью сказать, что эта технология получит широчайшую поддержку и с ней не будет тех проблем совместимости, что были ранее в JS.

Мы попробуем заглянуть за горизонт и исследуем на примере уже включённой экспериментальной поддержки в браузерах, какие новые возможности открывает эта технология для нас, разработчиков; попробуем прикинуть типичные задачи, в которых она даст нам выигрыш, а также посмотрим в действии несколько примеров, чтобы заранее подготовиться к грядущим изменениям.

Куплено
В корзине
0 ₽
0 ₽
0 $
0 $
0 €
0 €
Секция 1

Никита Прокопов

Разработчик в Cognician

Данные на фронтенде

Проблему рендеринга современные приложение решили достаточно хорошо. Следующая большая нерешенная область — управление данными. Это состояние приложения, датасеты, БД, внешние источники. Их нужно хранить, делать выборки, синхронизировать, доставлять, подписываться, компенсировать, решать конфликты, гарантировать корректность. В докладе мы попытаемся спрогнозировать, какие качества мы хотим получить от приложений будущего, и посмотрим, какие инструменты есть для подобных архитектур уже сейчас. Например, встраиваемые клиентские БД. Ключевые слова: CRDTs, OT, Datomic/DataScript, RethinkDB, Meteor, CouchDB/PouchDB, Swarm.js.

Куплено
В корзине
0 ₽
0 ₽
0 $
0 $
0 €
0 €
Секция 2

Dino Esposito

CTO в JetBrains

JavaScript Device Detection

Web gurus determined that processing the user agent of the browser is a pointless approach to adapt the user experience to the actual device being used to navigate the site. All that matters-they say-is the screen width and for that we have CSS media queries and even higher level frameworks such as Bootstrap. Media queries are not pure gold and while they sometimes offer a quick and acceptable solution media queries completely fail the point of detecting whether the device is mobile or not. For a media query expression a mobile phone and a resized browser window are just the same. This may or may not be an issue for all applications but if you want to intelligently serve ad hoc markup from the server or request ad hoc content (i.e., images) for the device you must be informed about the form factor of the device and process the user agent. Should you do that yourself? That's crazy, but a JavaScript-based solution exists for both the client and the server (node.js environment). The talk presents a couple of JavaScript frameworks to perform effective device detection and image processing.

Куплено
В корзине
0 ₽
0 ₽
0 $
0 $
0 €
0 €
Секция 3

Сергей Звягин

Ведущий разработчик в DevExpress
и ещё 1
докладчик

Опыт тестирования JavaScript: юнит-тесты, велосипеды, моки, боль и сравнение скриншотов

В рамках доклада мы поделимся реальным опытом тестирования JavaScript-кода в одной команде разработчиков: от распараллеливания и синхронизации юнит-тестов и самописной реализации моков до функциональных тестов с попиксельным сравнением скриншотов и фермой мобильных устройств.

Куплено
В корзине
0 ₽
0 ₽
0 $
0 $
0 €
0 €
Секция 1

Роман Дворнов

Руководитель фронтенд-разработки в Avito

CSSO: история ускорения

CSSO — инструмент для минификации CSS, который недавно вернулся к активной разработке. Зачем?

Дело в том, что минификация CSS — задача сложная. Сейчас нет идеального минификатора: чтобы и эффективным был, и делал все правильно. Ведь нужно учитывать не только особенности CSS, который постоянно меняется, но и уровень его поддержки браузерами, их баги, префиксы, хаки и т.д. Все это требует решения ряда непростых задач. Поговорим об этом, а также о принципах работы CSS-минификаторов, новых идеях и развитии CSSO.

Куплено
В корзине
0 ₽
0 ₽
0 $
0 $
0 €
0 €
Секция 2

Михаил Дружинин

Технический менеджер в Luxoft

Порталы на JavaScript: зачем, как, и надо ли оно?

Часто в крупных организациях встречается необходимость объединить несколько продуктов под общим пользовательским интерфейсом. Либо один проект вырастает до состояния, когда в нём есть уже несколько полунезависимых модулей. С ростом размера увеличивается и сложность поддержки и тестирования такого решения.

В рамках доклада мы разберемся с тем, когда и зачем могут потребоваться такие решения. Мы рассмотрим несколько различных подходов для ведения такого рода проектов. В качестве одного из них будет рассмотрен фреймворк OpenF2. Мы пройдём через плюсы и минусы подходов и разберёмся, когда каждый из них стоит применять.

Куплено
В корзине
0 ₽
0 ₽
0 $
0 $
0 €
0 €
Получить доступ ко всем докладам
Куплено
В корзине
0 ₽
0 ₽
0 $
0 $
0 €
0 €
Секция 3

Алексей Симоненко

Веб-евангелист и сооснователь в HTML Academy

Как я перестал верить технологиям

Технологии призваны приводить процессы к автоматизации для повышения эффективности человеческой деятельности. Однако, постоянная смена технологий, как правило, даёт обратный результат.

В рамках доклада я объясню, почему нельзя использовать все технологии подряд, и почему такой метод с большой вероятностью окажется бесполезным и неэффективным — расскажу, почему нельзя менять эмбер на ангуляр, потом на реакт, а потом обратно на ангуляр; почему нельзя прыгать с препроцессора на препроцессор. Хочу, чтобы разработчики обращали внимание на то, что если у технологии сильный маркетинг, то это не означает её эффективность в реальных проектах. Я поделюсь своим опытом и примерами, когда постоянная смена технологий не помогла проектам выстрелить и сделать их прорывными.

Куплено
В корзине
0 ₽
0 ₽
0 $
0 $
0 €
0 €
Секция 1

Алексей Иванов

Фронтенд-разработчик в Evil Martians

CSS-в-JS, HTML-в-JS, ВСЁ-в-JS. Все гораздо проще, когда всё вокруг JavaScript

Я расскажу о всяких полезных штуках, которые мы получаем, начав писать весь фронтенд на одном языке вместо нескольких.

А именно:

граф зависимостей,

dead-code elimination,

tree shaking,

сжатие и очистка css,

автоматические неймспейсы для css и js, etc.

Я расскажу, что именно нужно сделать для воплощения всех этих возможностей на вашем сервере.

Несмотря на то, что отдельные технологии у всех на слуху, о связях между ними и всех возможных путях их применения мало кто думает.

Поэтому доклад будет о том:

Как перестать волноваться, не забыл ли ты добавить в сборку нужные CSS- и JavaScript-файлы?

Как удалить из сборки неиспользуемые селекторы в CSS и неиспользуемые функции в JavaScript?

Как минифицировать имена CSS-классов, а потом поменять их в HTML и JavaScript, ничего не сломав и не забыв?

Как сделать сборку, в которой будет только тот CSS и JavaScript, который нужен для текущей страницы?

Как исключить конфликты в именах CSS-классов без BEM?

Я расскажу, как эти проблемы решаются в современных веб-приложениях в браузере и что нужно сделать, чтобы эти решения можно было перенести на сервер.

Куплено
В корзине
0 ₽
0 ₽
0 $
0 $
0 €
0 €
Секция 2

Михаил Новиков

СТО в Reindex

Удобные API с GraphQL

Когда мы пишем приложения, особенно веб, обычно мы получаем данные с API. Часто это будет REST API. REST — это красиво, но при разработке он начнет мешать, так как немного вьюшек можно нарисовать данными из одного ресурса, и обычно разработчик использует связанные данные из нескольких источников. Как правило, в такой ситуации в API добавляют разворот вложенных данных. Потом еще один. Потом еще пару параметров. А потом поверху всего этого накручивается возможность выбора датасета. В конечном итоге выходит толстенный эндпоинт, разработчик бекенда вас ненавидит, и в какой-то момент вы все равно будете вызывать несколько эндпоинтов со своего фронтенда.

Приложение усложняется и тормозит. Таким образом, любой проект с REST API вырождается в либо толстый и глючный бакенд, либо толстый и глючный фронтенд. А обычно и в то, и в то.

Но решение есть. В 2015 году Facebook представил GraphQL — новый подход к API, который они активно используют в продакшене. GraphQL — это стандарт из двух частей: язык для описания возможностей сервера и язык запросов к серверу на их основе. С помощью GraphQL можно одним запросом взять все данные, которые нужны вам для вьюшки. GraphQL-запрос проверяется на основе схемы и позволяет доставать только нужные (в том числе вложенные) данные. Если нужно что-то еще, достаточно добавить это в запрос, при этом не нужно беспокоить бакендера. В итоге запросы заточены под ваше приложение, а сервер — под доступные данные.

Кроме этого, с GraphQL очень удобно оборачивать и совмещать legacy API. Вместо того, чтобы переписывать весь свой старый Drupal магазин, можно поставить перед ним GraphQL Gateway и быстро сделать новое React Native приложение на его основе. GraphQL, а особенно его JS-имплементация graphql-js, позволяет делать API, независимые от источника, быстро и удобно.

В докладе я расскажу подробно про GraphQL, как с его помощью быстро и эффективно делать удобные API.

Куплено
В корзине
0 ₽
0 ₽
0 $
0 $
0 €
0 €
Секция 3

Анастасия Горячева

Разработчик в Avito

МРТ для данных

Человеческий мозг устроен сложно. Если с ним что-то не так, то для диагностики используют магнитно-резонансный томограф.
Большие одностраничные приложения тоже устроены сложно. Чтобы их починить или обвесить новым функционалом, требуется вникнуть в их устройство. Для этого нередко приходится засучивать рукава и с головой погружаться в самую глубь проекта. И немалая часть проблем связана именно с бизнес логикой и потоками данных. Но что если у нас будет возможность проникнуть в структуру данных, способ увидеть связи между ними и отслеживать то, как они влияют друг на друга? Такой способ, чтобы не требовалось вскрытия черепной коробки — все как с МРТ (магнито-резонансная томография).
В докладе речь пойдет о собственных разработках в этой области.

Куплено
В корзине
0 ₽
0 ₽
0 $
0 $
0 €
0 €
Секция 1

Виктор Грищенко

Разработчик в Swarm

Swarm: синхронизируем рой устройств

Мы живём в мире, где телефон, телевизор, часы, автомобиль — это компьютеры. Мы видим всё больше устройств, чаще мобильных, с беспроводным подключением. Итого: сложная логика на клиенте, ненадёжная связь, зоопарк устройств и версий, и раздающий данные сервер. Границы условны, потому что приложения могут перетекать с устройства на устройство или работать на нескольких устройствах одновременно.

Но как синхронизировать данные между серверами, между устройствами, между пользователями? Как обеспечить максимальную автономность приложений?

Distributed systems — это хардкор, как базы данных или криптография. Нужен готовый инструмент, который делает сложное простым.

Такой, как Swarm.

Куплено
В корзине
0 ₽
0 ₽
0 $
0 $
0 €
0 €
Секция 2

Василика Климова

Разработчик в Artec Group

Практическое применение WebGL

В докладе я покажу, что WebGL — это не так страшно и сложно, как многие думают. Я продемонстрирую, как написать несколько несложных шейдеров, которые позволяют преобразовать текстуру 3D-моделей.

Из доклада вы узнаете, как на практике можно применять:

  • технологию WebGL
  • библиотеку Three.js
  • язык шейдеров GLSL
Куплено
В корзине
0 ₽
0 ₽
0 $
0 $
0 €
0 €
Секция 3

Алексей Охрименко

Senior JavaScript developer в IPONWEB

Парсеры – это Спарта

В докладе мы с вами:

  1. Узнаем, что такое парсеры и грамматики, как они работают и какие бывают;
  2. Рассмотрим реальные примеры использования парсеров:
    • продвинутая валидация
    • наследование e2e тестов
    • e-mail rfc 822 валидатор
    • html && markdown парсер
    • умный input (aka JIRA issue filter, Apple email search);
  3. Напишем свой парсер АСТ (абстрактного синтаксического дерева), используя Recursive Descendant Parser (Метод рекурсивного спуска);
  4. Напишем свой генератор парсеров, используя PEG (Parsing Expression Grammar).

И все это простым и понятным для всех языком!

Куплено
В корзине
0 ₽
0 ₽
0 $
0 $
0 €
0 €
Секция 1

Евгений Гусев

Разработчик в Wrike

Angular 2: знакомый герой, новые надежды

Со времени своего появления в 2009 году Angular пережил несколько фаз развития. Поначалу он потрясал умы своими возможностями, однако со временем начал отставать от своих конкурентов. Сейчас же от прошлого величия осталась лишь тень, былой Angular уже не может соперничать с такими титанами, как React или Polymer (по крайней мере по популярности). Сможет ли вторая версия исправить недостатки первой и дать новую надежду? Поговорим о новом фреймворке и нашем опыте его использования в Wrike.

Куплено
В корзине
0 ₽
0 ₽
0 $
0 $
0 €
0 €
Секция 2

Кирилл Сухомлин

Разработчик в EPAM Systems

Откуда берутся js-фичи

Доклад попадает в две из предложенных категорий:

JS и спецификация ECMAScript

Практика применения ES6 и ES7

План таков:

  • Немного истории стандартизации js.
  • Как на самом деле происходит добавление фич в спецификацию, и что это может значить для простых программистов в их работе.
  • Разберём несколько конкретных примеров длинного и тернистого пути.
  • Нужен ли будет babel, когда все браузеры начнут поддерживать es6? Спойлер: нужен.
Куплено
В корзине
0 ₽
0 ₽
0 $
0 $
0 €
0 €
Секция 3

Николай Рыжиков

Разработчик в HealthSamurai

JS внутри PostgreSQL

JavaScript покинул браузер и захватывает мир, исполняясь даже в холодильниках. Оказывается, на JS может вполне программировать внутри PostgreSQL, благодаря расширению plv8. В вашем арсенале разработчика будет поддержка бинарного типа данных JSONB и гибкая система индексирования. В презентации мы с вами познакомимся с этими возможностями. В режиме live-кодинга я покажу, как можно сделать no-backend приложение на PostgreSQL. При этом мы не будем отклоняться от привычного процесса разработки node.js-приложений (написание тестов, модули (ES6))

Я также расскажу о производительности данного решения. Мы обсудим возможность создания полностью изоморфных приложений, с возможностью иметь общий код на клиенте, сервере и в базе данных.

Куплено
В корзине
0 ₽
0 ₽
0 $
0 $
0 €
0 €
Получить доступ ко всем докладам
Куплено
В корзине
0 ₽
0 ₽
0 $
0 $
0 €
0 €
Секция 1

Станислав Гуменюк

Разработчик в SEMrush

Инфраструктура распределённых приложений на Node.js

Как на Node.js пройти путь от примитивного приложения «Hello world» до распределённого решения, состоящего из микросервисов?

Мы пройдём жизненный цикл продукта, начав с простого приложения на Node.js. Научимся его правильно запускать и будем постепенно добавлять элементы, убирая при этом ненужные. Так, к нашему приложению присоединится гипервизор, а само оно будет разделено на части, где каждая сущность будет управлять своей частью приложения.

Построив, таким образом, архитектуру на чистом Node.js, мы займёмся развитием приложения, добавим современные технологии и применим новые подходы к организации инфраструктуры. В частности, научимся доставлять окружение и приложения при помощи Ansible, запакуем приложение в Docker, попутно обсудим, зачем он нужен и что может дать при разработке фронтенда. И, наконец, решим проблему поиска запущенных сервисов и отслеживания их статусов, используя Consul.

Куплено
В корзине
0 ₽
0 ₽
0 $
0 $
0 €
0 €
Секция 2

Дмитрий Локтев

Разработчик в Indie

Gradual typing in JavaScript

«Статическая типизация» — это же про энтерпрайз с мощной текучкой кадров и требуемым сроком поддержки кода в 10 лет. Или не всегда?

Даже если вам хорошо в JavaScript без всяких типов, вам, скорее всего, не помешает в них разобраться — например, в случае, если вы собираетесь контрибьютить в крупный open source проект.

Я покажу, что такое постепенная типизация с точки зрения повседневной работы. Какую пользу и какие компромиссы предоставляют доступные инструменты (Flow и TypeScript).

В докладе будут примеры реального использования в продакшене, сравнение с линтерами, юнит-тестами и полноценными статически типизированными языками.

Куплено
В корзине
0 ₽
0 ₽
0 $
0 $
0 €
0 €
Секция 3

Игорь Зотов

Разработчик в Амперка

Iskra JS: JavaScript в микроконтроллере

В 2003-м году представить было нельзя, что игру можно писать на чём-то кроме C/C++. Потом в движках появились встроенные скрипт машины. А затем и создание полноценного продукта стало возможным и вовсе без Си. Java, C#, Ruby, Python, JavaScript - железо стало тянуть «медленные языки». DIY электроника претерпевает те же изменения: становятся доступными более быстрые и мощные микроконтроллеры, позволяющие тратить время на креатив, а не на поиск багов. Простой и ёмкий JavaScript снижает порог вхождения в разработку домашней электроники.
В докладе будет рассмотрена платформа Espruino, особенности программирования микроконтроллеров на JS, среда разработки и поддерживаемое железо.

Куплено
В корзине
0 ₽
0 ₽
0 $
0 $
0 €
0 €

Вячеслав Егоров

Разработчик в Google

Производительность JavaScript через подзорную трубу

Каждый день инженеры-компиляторщики по всему миру увлеченно стучат по своим клавиатурам, разгоняя исполнение JavaScript в совершенно различных браузерах и даже на сервере.

Общественность, программирующая на JavaScript, однако же, часто отстает в своем понимании от стремительного прогресса, происходящего во внутренностях JS движков.

Этот доклад старается покрыть отставание и продемонстрировать, что знание этих самых внутренностей важно не только для написания быстрого JavaScript кода, но и просто для того, чтобы достоверно измерить разницу между «быстрым»и «медленным».

Куплено
В корзине
0 ₽
0 ₽
0 $
0 $
0 €
0 €

Алексей Федоров

Лидер сообщества в JUG.ru

Закрытие

Куплено
В корзине
0 ₽
0 ₽
0 $
0 $
0 €
0 €

Билеты

Видеозапись
Доступ к записям всех докладов
Куплено
В корзине
0 ₽
0 ₽
0 $
0 $
0 €
0 €

Организатор

JUG.ru
https://jugru.org

Организационный комитет: JUG.ru, info@jugru.org, 78126802918

Похожие мероприятия

2-3 июня 2017
Докладов 27
Просмотров 11
java, javascript, код, по, программирование, разработка, скрипт, софт, тестирование
7-8 апреля 2017
Докладов 31
Просмотров 8
java, javascript, qa, по, программирование, разработка, софт, тестирование
4 апреля 2017
Докладов 16
Просмотров 6
java, javascript, qa, код, по, программирование, разработка, скрипт, тестирование
показать ещё