Обзор конференции YAC2014

| Категории: YAC2014
Александр Кременец

Иллюстрация блокнота

Makeomatic на YAC2014

30 октября прошла очередная ежегодная конференция Яндекса Yet Another Conference 2014. Программа была довольно насыщенная, почти все время доклады шли параллельно в 5 потоков (3 зала, воркшопы, подиум). На момент написания заметки, была еще доступна ссылка с программой.

И через 2 недели после конференции (в середине ноября) обещали выложить лекции на странице технологий Яндекса.

Программа YAC2014

Организаторы структурировали программу так, что если вас интересует какой-то конкретный аспект разработки (backend, администрирование, мобильная разработка и т.д.), то вы выбираете свой путь и идете по нему в течение всего дня, не теряя лекции и не разрываясь между залами. Тем не менее, у меня так не получилось, и, просмотрев внимательно программу за день до начала, я понял, что все- таки разрываюсь между направлениями, и составил свое собственное расписание. Может быть, мне повезло, но расписание мне показалось очень сбалансированным и удобным по времени. Причем во время конференции все, посещенные мной, доклады производили впечатление идеально вписанных в отведенное время. Очевидно, что все докладчики очень тщательно готовились.
Точно не скажу, но, как мне показалось, примерно половина докладов презентовали представители Яндекса, а другая половина была от приглашенных специалистов (из громких компаний, к примеру, представители из Docker, Facebook, Netflix).

####Ближе к делу
Сразу скажу, что пересказывать доклады я не буду, поскольку лекции будут выложены, и я позволю себе ограничиться рекомендацией к просмотру тех или иных тем.

Структуру оставляю в хронологическом порядке. И имейте в виду, что, по меньшей мере, половину докладов я физически не имел возможности посетить, так что я и сам полезу смотреть лекции после их публикации.

Секретный доклад

Секретный доклад был посвящен двум развивающимся (уже вполне развившимся, но продолжающим эволюционировать) технологиям Яндекса - Яндекс.Диктовке, и Метрике (в контексте мобильных приложений).

####Яндекс.Диктовка

Яндекс.Диктовка- это приложение, созданное на базе API Yandex SpeechKit. Сейчас доступна в Yandex.Store, вот-вот дождется аппрува в App Store.Были рассмотрены элементы системы, этапы ее работы в процессе коммуникации с человеком (распознавание, активация, озвучивание, выделение смысловых объектов).

####Мобильная метрика

Мобильная метрика- мощный инструмент для тестирования и продвижения приложений. Осуществляет анализ данных в real-time (что является большим шагом вперед, поскольку раньше многие жаловались на низкую скорость работы метрики).

Была описана, разработанная в Яндексе, clickHouse, столбцовая СУБД. В двух словах, суть в том, что столбцовые СУБД лучше для аналитики, экономят ресурсы при поиске выборки, поскольку с диска считываются только нужные столбцы (не готов дискутировать на эту тему, за дополнительной информацией лучше обратиться сначала к оригинальной лекции). Был предоставлен ряд тестов, где clickHouse показывала лучшие данные в сравнении с аналогичными СУБД. Кроме того, как еще один способ оптимизации, был упомянут метод приближенного выбора, что позволяет получать значительный рост производительности при незначительной потери точности.

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

Настоящее и будущее рекомендательных систем

(Михаил Ройзнер)
Я раньше не касался этой темы, поэтому пошел послушать не из профессиональной необходимости, а просто ради интереса, и не пожалел. Доклад определенно предполагал таких слушателей, как я.

Михаил начал доклад с экскурса в историю. Одним из основополагающих в этой сфере событий считается конкурс, организованный компанией Netflix, основанный в 2006 и закончившийся в 2009 году (Netflix Prize).
Задание было сформулированное предельно просто: “улучшить точность рекомендаций на 10%, в качестве приза было обещано 1 млн. долларов”
Источник

В результате, разработчики пришли к выводу, что наилучший результат дает композиция различных алгоритмов (User-based, Item-based, SVD, RBM), и именно сочетание алгоритмов позволило преодолеть барьер в 10%, в то время как по отдельности методы давали 5-8%. Однако, Netflix так и не внедрили эти методы, они плохо масштабировались и их было тяжело улучшить.

Далее приведу несколько тезисов, которые мне запомнились и показались интересными.

  • Не имеет смысла рекомендовать популярное
  • Не имеет смысла рекомендовать очень похожие товары
  • Доверие (нужно, чтобы пользователь поверил в то, что рекомендации должны ему подойти, то есть включить знакомые пользователю элементы)
  • Объяснение рекомендаций (почему был рекомендован тот или иной товар).

Какие-то факты откровенно удивили, например, сервис персонального радио Pandora выделили 450 атрибутов треков (i.e. тональность, инструменты, голос вокалиста), и профессионалы (люди) прослушивают треки и размечают их атрибутами, которые потом используются для подбора плейлиста.

В то время как Spotify извлекают атрибуты треков с помощью нейронных сетей.

Ebay занялись рекомендацией одежды. Фотографии из блогов о моде => распознавание предметов => модель сочетаемости одежды по ее характеристикам. У них есть приложения по подбору одежды.
И просто оставлю здесь кусок конспекта.

1
LDA (скрытое распределение Дирихле). Если согласовать LDA с SVD, они будут влиять друг на друга, улучшая качество друг друга.

Закончился доклад рассуждениями о перспективах, о том, что одновременное использование данных о погоде, физическом состоянии человека (например, данные спортивных и медицинских гаджетов), данные о местоположении и прочее открывают широкие перспективы для рекомендательных систем. Появляется вопрос: “Как не отпугнуть человека тем, что компьютер владеет о нем огромным количеством информации?”

Документация интерфейсов

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

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

От пояса с инструментами к полноценной лаборатории

Здесь я выложу слегка отредактированный конспект со ссылками на упомянутые блоги и технологии.

Source-map-visualization
post-css принимает source map от препроцессора

Терминал (окружение, сборка тестирование)

https://mathiasbynens.be/
http://zachholman.com/
http://ohmyz.sh/

  • Yeoman
  • Grunt task runner
  • Gulp- сборщик на основе streaming-а (проблема в том, как передавать source map)
  • Broccoli - сборщик на основе файловой системы (есть кеширование, работает быстро)
    Можно их всех использовать одновременно (напр. модуль Broccoli в Broccoli)

Тестирование

  • DalekJS - кроссбраузерное тестирование
  • PhantomCSS - визуальное тестирование на регрессии

Браузеры, редакторы, песочницы

  • Песочницы CodePen, JS Bin, jsFiddle, Dabblet, CSSDeck
  • Поддержка препроцессоров csspre.com/convert
  • Получение диффа отредактированного кода (History в панели хрома)
  • Tincr, Chrome Workspaces, Emmet LiveStyle (!)
  • CSS Shapes (правим объекты в браузере, изменения сразу отображаются в коде). Моментальная обратная связь

Перспективы

  • Промежуточные шаги в картах кода
  • Более глубокая интеграция инструментов в ОС
  • Emmet LiveStyle с поддержкой препроцессоров

Открытый код Томита-парсера

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

inFront: на передовой событий в мире фронтенда

Эту лекцию имеет смысл посмотреть для расширения кругозора и получения кратких обзоров о frontend (в основном) конференциях по всему миру. Раз уж я что-то (не все) записал, оставлю здесь конспект для общего представления. Отдельно обращаю внимания (я например не знал, что все так удобно) на доступность видео со многих конференций на vimeo.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
fronteers (весной заявка, осенью конференция, Амстердам)
campJS
lanyrd.com - подписаться на спикера
eventbrite.com
smashingmagazine.xom - web dev web design
texh.yandex.ru
Подкасты, видео
vimeo.com/fronteer …..
.. (много еще конференций на vimeo)
radio.js
node.js podcast
Блоги, журналы, etc
Smashing magazine
html5 weekly
javascript weekly
fronender magazine
codeacandemy
html academy
w3schools
html5 rocks
khan academy
coursera

Далее мой roadmap привел меня в секцию администрирования, на доклад бывшего сотрудника яндекса (сейчас он работает в Facebook) на тему: “кэширование”.

Кэширование в Facebook: делаем граф быстрее

Это был интересный доклад. Советую его посмотреть. Если лекцию не выложат, тогда я пересмотрю и структурирую записи. В настоящий момент я понимаю, что как бы я ни старался, ценнее будет посмотреть оригинал.

Были рассмотрены вопросы, решаемые кэшированием, акцент на то, что для некоторых систем (в частности Facebook) кэширование из способа оптимизации превращается в жизненную необходимость. Было сформулировано какими требованиями должен обладать идеальный cache и как это решается в Facebook, с помощью разработанного ими (но opensource) протокола Mcrouter.

Далее по расписанию для меня самым интересным показался доклад ребят из Яндекса (Александр Денисов, Евгений Дымов) про использование JavaScript в iOS.

Зачем нужен JavaScript в iOS-приложениях

Пытаюсь подыскать новые слова, но не нахожу. Этот доклад тоже был интересным и, конечно, его стоит посмотреть всем, кто связан с разработкой по iOS, в особенности нативной.

Были рассмотрены способы использования WebView, преимущества WKWebView (released in iOS8) над UIWebView. WKWebView быстрее, имеет более богатый API, хотя, строго говоря, большую часть его функционала можно (и, видимо, пока придется, поскольку iOS7) реализовать посредством UIWebView.

Во второй части доклада был рассмотрен фреймворк (не уверен в терминологии) JavaScriptCore и написана игра c логикой на JavaScript, но с нативной отрисовкой.
Темп доклада был достаточно высокий, очевидно из-за жесткого тайминга, так что эта лекция у меня в списке к просмотру после публикации.

Разработка со скоростью света

(Станислав Жуковский)
Вдохновляющая речь о прелестях независимой разработки. Как не терять вдохновения, и насколько это реально сделать рабочую программу самому или небольшой командой. Перечень полезных инструментов (не гарантирую, что все вспомню).

  • Cocoa Controls
  • CocoaPods
  • Parse - БД в облаке
  • decksetapp.com - утилита для создания презентаций на markdown.

Заключение

На этом содержательная часть моего доклада заканчивается. К сожалению, за кадром осталась значительная часть, возможно более интересная, поскольку в результате я понял, что посетил наименее наукоемкие темы, больше по инструментарию и каким-то прикладным (на базовом уровне) вещам, в то время как в других докладах рассматривались темы по машинному обучению, обходу свежего контента, AI, так что я с не меньшим интересом жду публикаций материалов конференции. Еще раз приведу ссылку страницы технологий Яндекса.

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