«Организация Frontend-разработки на крупном проекте» — Дмитрий Кузнецов2ГИС Технологии
Как создать Front End-команду для высоконагруженного проекта? Спикер расскажет, как можно выстроить эффективный процесс фронтенд-разработки с упором на технические аспекты: — Команда фронтенд-разработчиков. Зоны ответственности между теми, кто программирует UI (верстальщики), и теми, кто отвечает за бизнес-логику (Javascript-программисты). Идеальный состав команды. — Настроенный технологический процесс. Модульная организация (подготовка дизайна → разработка формата данных → создание шаблона → навешивание событий → тесты). — Разработка вместе с тестированием Unit-/DOM-тесты и подход PixelPerfect. — Вёрстка независимыми блоками и встроенный в приложение режим для вёрстки блоков.
В своей работе мы постоянно используем инструменты, призванные облегчить нам жизнь. Но как хорошо мы ими на самом деле владеем? И почему мы пренебрегаем их суперсилами? Например, Chrome DevTools — это не только отладчик и инспектор HTML. Но когда у нас в руках молоток, кругом мерещатся гвозди. Десятки мегабайт и процентов загрузки процессора на вкладку браузера — верный признак того, что пора учиться пользоваться микроскопом.
Роман предложит освоить что-то посложнее молотка и расскажет о том, какую реальную пользу можно получить от профилирования, как найти в огромном отчёте проблему с кодом и что лучше — написать в коде десяток console.log или async debug.
Как мы разрабатываем новый фронтенд / Филипп Нехаев (Tinkoff.ru)Ontico
Недавно запустили новый сайт Тинькофф.
У нас есть желание поделиться с аудиторией подходом и опытом разработки большого изоморфного приложения на React.js и Flux. Меньше чем за год мы разработали новый сайт и интернет-банк, заложив платформу на ближайшие несколько лет для быстрой разработки фронтенда новых продуктов.
Сейчас tinkoff.ru насчитывает более 3000 компонентов и сотни страниц.
Vue.js и его брат-близнец Vue-server.js / Андрей Солодовников (НГС)Ontico
Современный Веб всё больше стремится к динамичным, похожим на приложения, сайтам.
Оперативно строить быстрый и динамичный интерфейс на проекте N1.RU нам помогает Vue.js.
Однако, как и многие современные библиотеки и фреймворки, Vue.js не умеет рендериться на сервере.
При этом иметь такую возможность бывает полезно по нескольким причинам: начиная от вопросов SEO и заканчивая красотой загрузки страницы.
Чтобы реализовать такую возможность для Vue.js мы создали его дополнение — Vue-server.js.
Я расскажу о том, что умеет Vue.js, что у нашего дополнения "под капотом", почему мы выбрали такой путь и как, вообще, всё это работает. А ещё попробую дать критическую оценку проделанной работе.
55+1 прием для улучшения Javascript-кода / Татьяна Бабич (Simbirsoft)Ontico
В докладе будут рассмотрены приемы, практики и «фишки», которые полезно использовать для создания любого Frontend-приложения.
Мы поговорим об организации модульности и компонентов на примере приложений с Angular, React и Polymer. Обсудим, как использовать особенности JavaScript, и рассмотрим особые случаи, когда фреймворки действительно приходят на помощь.
«Организация Frontend-разработки на крупном проекте» — Дмитрий Кузнецов2ГИС Технологии
Как создать Front End-команду для высоконагруженного проекта? Спикер расскажет, как можно выстроить эффективный процесс фронтенд-разработки с упором на технические аспекты: — Команда фронтенд-разработчиков. Зоны ответственности между теми, кто программирует UI (верстальщики), и теми, кто отвечает за бизнес-логику (Javascript-программисты). Идеальный состав команды. — Настроенный технологический процесс. Модульная организация (подготовка дизайна → разработка формата данных → создание шаблона → навешивание событий → тесты). — Разработка вместе с тестированием Unit-/DOM-тесты и подход PixelPerfect. — Вёрстка независимыми блоками и встроенный в приложение режим для вёрстки блоков.
В своей работе мы постоянно используем инструменты, призванные облегчить нам жизнь. Но как хорошо мы ими на самом деле владеем? И почему мы пренебрегаем их суперсилами? Например, Chrome DevTools — это не только отладчик и инспектор HTML. Но когда у нас в руках молоток, кругом мерещатся гвозди. Десятки мегабайт и процентов загрузки процессора на вкладку браузера — верный признак того, что пора учиться пользоваться микроскопом.
Роман предложит освоить что-то посложнее молотка и расскажет о том, какую реальную пользу можно получить от профилирования, как найти в огромном отчёте проблему с кодом и что лучше — написать в коде десяток console.log или async debug.
Как мы разрабатываем новый фронтенд / Филипп Нехаев (Tinkoff.ru)Ontico
Недавно запустили новый сайт Тинькофф.
У нас есть желание поделиться с аудиторией подходом и опытом разработки большого изоморфного приложения на React.js и Flux. Меньше чем за год мы разработали новый сайт и интернет-банк, заложив платформу на ближайшие несколько лет для быстрой разработки фронтенда новых продуктов.
Сейчас tinkoff.ru насчитывает более 3000 компонентов и сотни страниц.
Vue.js и его брат-близнец Vue-server.js / Андрей Солодовников (НГС)Ontico
Современный Веб всё больше стремится к динамичным, похожим на приложения, сайтам.
Оперативно строить быстрый и динамичный интерфейс на проекте N1.RU нам помогает Vue.js.
Однако, как и многие современные библиотеки и фреймворки, Vue.js не умеет рендериться на сервере.
При этом иметь такую возможность бывает полезно по нескольким причинам: начиная от вопросов SEO и заканчивая красотой загрузки страницы.
Чтобы реализовать такую возможность для Vue.js мы создали его дополнение — Vue-server.js.
Я расскажу о том, что умеет Vue.js, что у нашего дополнения "под капотом", почему мы выбрали такой путь и как, вообще, всё это работает. А ещё попробую дать критическую оценку проделанной работе.
55+1 прием для улучшения Javascript-кода / Татьяна Бабич (Simbirsoft)Ontico
В докладе будут рассмотрены приемы, практики и «фишки», которые полезно использовать для создания любого Frontend-приложения.
Мы поговорим об организации модульности и компонентов на примере приложений с Angular, React и Polymer. Обсудим, как использовать особенности JavaScript, и рассмотрим особые случаи, когда фреймворки действительно приходят на помощь.
В последнее время тема пиринговых технологий становится очень популярной. Уже не первый день работают такие проекты как криптовалюта Bitcoin, микроблоги Twister и мессенджер Tox. Теперь дошло дело и до децентрализованного веба.
Доклад посвящен новому open-source проекту — base.network — распределенному независимому пиринговому вебу. Расскажу про общую схему работы сети, немного о работе с криптографией на JavaScript, о создании приложений на JavaScript без использования центральных серверов.
Доклад о подходе к отслеживанию потоков данных, формирующих окружение, в котором пользователь решает свои задачи.
На примере реализации для конкретного фреймворка будет озвучена идея, как сделать инструмент для отслеживания изменений данных на странице приложения для вашего технологического стека.
Целевая аудитория
Разработчики крупных web-приложений, регулярно сталкивающиеся с проблемой, как уследить за изменением большого количества данных, формирующих интерфейс пользователя, решающих задачу эффективно разобраться с потоками данных для устранения неполадок приложения.
Человеческий организм устроен сложно. Если с ним что-то не так, то для диагностики используют магнитно-резонансный томограф.
Большие одностраничные приложения тоже устроены сложно. Чтобы их починить или обвесить новым функционалом, требуется вникнуть в их устройство. Для этого нередко приходится засучивать рукава и с головой погружаться в самую глубь проекта. И немалая часть проблем связана именно с бизнес логикой и потоками данных. Но что если у нас будет возможность проникнуть в структуру данных, способ увидеть связи между ними и отслеживать то, как они влияют друг на друга? Такой способ, чтобы не требовалось вскрытия скальпелем - все как с МРТ.
В докладе речь пойдет о собственных разработках в этой области.
Радости и гадости регрессионного тестирования вёрстки / Алексей Малейков (HTM...Ontico
Совместно с университетом ИТМО мы запустили курс, посвященный основам HTML и CSS. Уже на момент регистрации на этот курс записалось более 12 тысяч студентов. Перед нами стояла задача разработать систему, которая будет автоматически проверять итоговые проекты на соответствие заранее подготовленному макету. В качестве основной техники для проверки было выбрано регрессионное тестирование.
В каждом проекте мы проверяли разметку, сетку и стилевое оформление не только страницы целиком, но и отдельных блоков. Одной из главных проблем был поиск этих самых блоков, так как о том, какой будет верстка студентов, мы не знали ничего — ни какие теги они использовали, ни какие классы и идентификаторы были задействованы. Имели только общее представление о структуре.
В докладе я расскажу, от чего мы отталкивались при построении этой системы, как мы разбирали и анализировали проекты. Какие инструменты и технологии мы для этого использовали и почему. Какие подводные камни вылезали, и какие возникали проблемы.
Рендеринг может больше: vue.js vs React, Андрей СолодовниковDevDay
О том, как перестать вручную контролировать DOM, писать логику навигаций и почему DOM-шаблонизация — это классно, а так же немного самокритики и сравнительных тест-кейсов.
Как мы ускоряли WebGL / Мстислав Живодков (2GIS)Ontico
Если вы захотите сделать веб-приложение с использованием технологии WebGL, скорее всего, вы захотите также, чтобы это приложение было отзывчивым и быстро работало даже на медленных компьютерах.
Но если вы простой фронтендер, занимаетесь js, html и css, то 3D-графика для вас покажется совершенно иным миром со своими законами. Так это случилось с нами во время разработки нашего продукта.
Поэтому в докладе я хочу рассказать:
1. О новых проблемах, с которыми мы столкнулись по вине WebGL;
2. О различных методах оптимизации, которые мы успешно и не очень опробовали на проекте, а также наглядно показать их действие на рабочих примерах;
3. Приведу другие способы ускорения, до которых у нас пока ещё просто не добрались руки.
Использование компонентного подхода это тяжеловесно, медленно, не гибко. Так ли это?
Доклад с фестиваля 404, Самара, 13 октября 2013
Видео: https://www.youtube.com/watch?v=QpZy0WW0Ig4
Для того чтобы охватывать широкую аудиторию, WebGL приложение должно быть не только быстрым, но и стабильным.
В этом докладе мы обсудим проблемы, которые возникли у нас при разработке API панорам, и как мы их решали. Также затронем опыт других компаний и посмотрим, как помогают разработчику в достижении стабильности популярные открытые библиотеки.
Шаблонизаторы упрощают процесс формирования HTML и только. Но браузеру нужен совсем не HTML, а DOM. Необходимо преобразование. И вот тут начинается самое интересное: танцы с бубном и стрельба по ногам. В докладе пойдёт речь об общепринятом подходе получения DOM фрагмента, постпроцессинге и альтернативах. Сравним, измерим и узнаем как это делать быстрее всего.
Basis.js - почему я не бросил разрабатывать свой фреймворк (extended)Roman Dvornov
Опенсорсный JavaScript-фреймворк с нестандартными подходами, ориентированный на разработку одностраничных приложений. Обновление шаблонов и стилей без перезагрузки страницы, развитые механизмы работы с данными, высокая производительность, инструменты разработчика и многое другое.
Доклад с конференции WSD, Санкт-Петербург, 8 июня 2013
Видео: http://www.youtube.com/watch?v=cVbbkwkhNQg
Подводные камни, костыли и полученный опыт.
В первую очередь, рассказ ориентирован на тех, кто хочет заменить сборку Грантом или Гальпом на вебпак. Я рассмотрю тонкости настройки и необычные проблемы, с которыми мы столкнулись, ибо стандартные ситуации хорошо описаны на просторах интернета.
В последнее время тема пиринговых технологий становится очень популярной. Уже не первый день работают такие проекты как криптовалюта Bitcoin, микроблоги Twister и мессенджер Tox. Теперь дошло дело и до децентрализованного веба.
Доклад посвящен новому open-source проекту — base.network — распределенному независимому пиринговому вебу. Расскажу про общую схему работы сети, немного о работе с криптографией на JavaScript, о создании приложений на JavaScript без использования центральных серверов.
Доклад о подходе к отслеживанию потоков данных, формирующих окружение, в котором пользователь решает свои задачи.
На примере реализации для конкретного фреймворка будет озвучена идея, как сделать инструмент для отслеживания изменений данных на странице приложения для вашего технологического стека.
Целевая аудитория
Разработчики крупных web-приложений, регулярно сталкивающиеся с проблемой, как уследить за изменением большого количества данных, формирующих интерфейс пользователя, решающих задачу эффективно разобраться с потоками данных для устранения неполадок приложения.
Человеческий организм устроен сложно. Если с ним что-то не так, то для диагностики используют магнитно-резонансный томограф.
Большие одностраничные приложения тоже устроены сложно. Чтобы их починить или обвесить новым функционалом, требуется вникнуть в их устройство. Для этого нередко приходится засучивать рукава и с головой погружаться в самую глубь проекта. И немалая часть проблем связана именно с бизнес логикой и потоками данных. Но что если у нас будет возможность проникнуть в структуру данных, способ увидеть связи между ними и отслеживать то, как они влияют друг на друга? Такой способ, чтобы не требовалось вскрытия скальпелем - все как с МРТ.
В докладе речь пойдет о собственных разработках в этой области.
Радости и гадости регрессионного тестирования вёрстки / Алексей Малейков (HTM...Ontico
Совместно с университетом ИТМО мы запустили курс, посвященный основам HTML и CSS. Уже на момент регистрации на этот курс записалось более 12 тысяч студентов. Перед нами стояла задача разработать систему, которая будет автоматически проверять итоговые проекты на соответствие заранее подготовленному макету. В качестве основной техники для проверки было выбрано регрессионное тестирование.
В каждом проекте мы проверяли разметку, сетку и стилевое оформление не только страницы целиком, но и отдельных блоков. Одной из главных проблем был поиск этих самых блоков, так как о том, какой будет верстка студентов, мы не знали ничего — ни какие теги они использовали, ни какие классы и идентификаторы были задействованы. Имели только общее представление о структуре.
В докладе я расскажу, от чего мы отталкивались при построении этой системы, как мы разбирали и анализировали проекты. Какие инструменты и технологии мы для этого использовали и почему. Какие подводные камни вылезали, и какие возникали проблемы.
Рендеринг может больше: vue.js vs React, Андрей СолодовниковDevDay
О том, как перестать вручную контролировать DOM, писать логику навигаций и почему DOM-шаблонизация — это классно, а так же немного самокритики и сравнительных тест-кейсов.
Как мы ускоряли WebGL / Мстислав Живодков (2GIS)Ontico
Если вы захотите сделать веб-приложение с использованием технологии WebGL, скорее всего, вы захотите также, чтобы это приложение было отзывчивым и быстро работало даже на медленных компьютерах.
Но если вы простой фронтендер, занимаетесь js, html и css, то 3D-графика для вас покажется совершенно иным миром со своими законами. Так это случилось с нами во время разработки нашего продукта.
Поэтому в докладе я хочу рассказать:
1. О новых проблемах, с которыми мы столкнулись по вине WebGL;
2. О различных методах оптимизации, которые мы успешно и не очень опробовали на проекте, а также наглядно показать их действие на рабочих примерах;
3. Приведу другие способы ускорения, до которых у нас пока ещё просто не добрались руки.
Использование компонентного подхода это тяжеловесно, медленно, не гибко. Так ли это?
Доклад с фестиваля 404, Самара, 13 октября 2013
Видео: https://www.youtube.com/watch?v=QpZy0WW0Ig4
Для того чтобы охватывать широкую аудиторию, WebGL приложение должно быть не только быстрым, но и стабильным.
В этом докладе мы обсудим проблемы, которые возникли у нас при разработке API панорам, и как мы их решали. Также затронем опыт других компаний и посмотрим, как помогают разработчику в достижении стабильности популярные открытые библиотеки.
Шаблонизаторы упрощают процесс формирования HTML и только. Но браузеру нужен совсем не HTML, а DOM. Необходимо преобразование. И вот тут начинается самое интересное: танцы с бубном и стрельба по ногам. В докладе пойдёт речь об общепринятом подходе получения DOM фрагмента, постпроцессинге и альтернативах. Сравним, измерим и узнаем как это делать быстрее всего.
Basis.js - почему я не бросил разрабатывать свой фреймворк (extended)Roman Dvornov
Опенсорсный JavaScript-фреймворк с нестандартными подходами, ориентированный на разработку одностраничных приложений. Обновление шаблонов и стилей без перезагрузки страницы, развитые механизмы работы с данными, высокая производительность, инструменты разработчика и многое другое.
Доклад с конференции WSD, Санкт-Петербург, 8 июня 2013
Видео: http://www.youtube.com/watch?v=cVbbkwkhNQg
Подводные камни, костыли и полученный опыт.
В первую очередь, рассказ ориентирован на тех, кто хочет заменить сборку Грантом или Гальпом на вебпак. Я рассмотрю тонкости настройки и необычные проблемы, с которыми мы столкнулись, ибо стандартные ситуации хорошо описаны на просторах интернета.
Тимофей Чаптыков «Верстальщик должен быть ленивый»DevDay
Большую часть рабочего времени мы занимаемся не написанием новой функциональности, а тестированием, исправлением ошибок, рефакторингом. При этом писать классные фичи всем нравится гораздо больше, чем искать причину очередного хитроумного бага. Как сделать так, чтобы ошибок стало меньше, и мы могли тратить время на то, что доставляет удовольствие?
Регрессивное тестирование особенно важно во фронтенд-приложениях, где велика связность сразу трёх технологий: HTML, CSS и JavaScript. Мы расскажем о юнит-тестах, которые проверяют часть приложения (блок, модуль и т.п.) по всем этим параметрам: размеры и другие CSS-свойства; наличие или отсутствие определённых элементов и их атрибутов; отработка кликов и других событий; и многое другое. Покажем примеры тестов, типичные ошибки и реальные баги.
A talk about humanitarian mapping with OpenStreetMap. This was August 9th 2011 at an event organised by <a>Article25</a>, <a>sponge network</a>, and <a>RIBA knowledge communities</a>.
Партицирование и миграции данных на примере PostgreSQL — Денис Иванов, 2ГИС2ГИС Технологии
- Автоматическое распределение данных по партициям, а также чтение, обновление и удаление данных без единой правки кода.
- Автоматическое обновление структур партиций (индексы, ограничения (constraints), триггеры, правила (rules) и т.д.).
- Удобные и гибкие миграции для больших команд с большим количеством данных, хранимых процедур, представлений, таблиц, типов, миграций, дельт и т.п. Как это всё организовать и поддерживать?
- Инструменты и утилиты, которые мы используем для вышеперечисленных целей.
Год от года многие программисты решают одни и те же задачи, но не всегда среди огромного многообразия решений можно найти что-то подходящее. Вот и мы не смогли найти ни одной библиотеки логирования для C++, которая удовлетворяла бы всем нашим требованиям. Теперь у нас есть свой велосипед, и мы расскажем, чем он лучше других.
Continuous Delivery, или волшебная кнопка для релизов по запросу — Денис Яков...2ГИС Технологии
Для нас CD — это когда менеджер или релиз-менеджер с помощью одной «кнопки» может выкатить весь продукт «в бой». При высокой связности, распределённости продукта и всех проверках выполнить такую задачу непросто, и делается это небыстро.
На примере Справочного API 2ГИС я расскажу, как мы сделали для менеджеров эту «кнопку». Расскажу про workflow, о том, как мы используем Jenkins для сборки, Rundeck для администрирования релиза, Яндек.Танк для нагрузок, Chef для конфигурирования серверов.
Highway to Continuous Integration — Денис Трифонов, 2ГИС2ГИС Технологии
В своем докладе я поделюсь опытом внедрения Continuous Integration в наши процессы. Я расскажу, как мы используем Jenkins в качестве CI-сервера, какие задачи мы решаем с его помощью и с помощью других инструментов.
Вот основные из них:
— развертывание и конфигурирование приложений и тестов с помощью Open Stack и Chef;
— запуск функциональных тестов с помощью PHPUnit и параллельное выполнение с помощью Paratest;
— обновление окружения и тестирование задачи в ветке с последующим вливанием в master-ветку;
— ежедневная регрессия на master-ветке и откат до состояния последнего релиза, а также тестирование развертывания с нуля.
Я затрону интеграцию с JIRA для наших процессов и решения других задач для разработки и тестирования.
Разработка Web-приложений на Angular JS. Архитектурные семинары SoftengiSoftengi
Разработка Web-приложений на Angular JS — доклад Бориса Левицкого, архитектора ПО в команде портфеля проектов Enviance компании Softengi.
Видео с докладом от автора можно посмотреть по ссылке: http://youtu.be/oTXxrmIxo8Y
Презентация ответит на вопросы:
- что такое Angular?
- для чего он используется и что с ним можно делать?
- как работает Data-Binding?
- кастомные фильтры
- структура Angular приложения
Архитектурные семинары Softengi - еженедельные встречи, на которые приглашаются ведущие разработчики/архитекторы Softengi и других компаний нашего консорциума Intecracy Group.
Все проведенные семинары мы записывали, и теперь хотим поделиться опытом и знаниями с такими же профессионалами.
Подписывайся на канал Softengi https://www.youtube.com/user/softengi и узнай первым о новых семинарах.
http://www.softengi.com
Alasql.js - SQL база данных на JavaScript / Андрей Гершун (МАГ КОНСАЛТИНГ)Ontico
AlaSQL - это библиотека для обработки данных с помощью языка SQL, которая написана на JavaScript и может работать в браузере (в том числе, и в режиме WebWorker) или Node.js. Библиотека может быть использована в приложениях для обработки данных, а также для решения задач ETL (extract-transform-loading), таких как приложения бизнес-аналитики.
Тезисы - http://frontendconf.ru/2015/abstracts/1713
2. ДОКЛАДЧИК
С 2011 года работаю в 2ГИС
API справочника API карт Карты 2ГИС
>5 млн >8 млн >3 млн
Разрабатывал АСУ ТП Спикер CodeFest
для горно-шахтного 2012
оборудования
WWW.2GIS.RU
9. АРХИТЕКТУРА CLIENT-SIDE APP
Пользователь
API API API API API
Транспорта пробок <Место для
вашего сервиса>
Справочник Карт +1
2ГИС Онлайн
WWW.2GIS.RU
20. ПОЧЕМУ KNOCKOUT?
• Активно развивается
Удобное разделение
логики и шаблонов
WWW.2GIS.RU
21. ПОЧЕМУ KNOCKOUT?
• Активно развивается
• Удобное разделение логики и шаблонов
Функционален, есть
декларативные биндинги
WWW.2GIS.RU
22. ПОЧЕМУ KNOCKOUT?
• Активно развивается
• Удобное разделение логики и шаблонов
• Функционален, есть декларативные
биндинги
Низкий порог вхождения
WWW.2GIS.RU
23.
24. MVVM
UI Logic Business Logic
View Model
ViewModel
Application Logic
WWW.2GIS.RU
62. KO.COMPUTED
1. Не наблюдайте один computed внутри другого
2. Не меняйте observable внутри computed
Используйте computed только там,
где это необходимо
WWW.2GIS.RU