ADD-2011: Отчёт Виталия Филиппова
- Сайт: http://addconf.ru/add_2011
- Место проведения: Санкт-Петербург, гостиница «Карелия»
- Время проведения: 29-30 апреля 2011
Общие слова: за организацию «плюс», местами даже «большой плюс». Конкретные плюсы:
- Вкусная еда и бутербродики, повсеместно разложенные на столах, в процессе и вне процесса кофе-брейка. Очень удобно. Я, например, оба дня таки не осилил встать к началу, соответственно, пропустил оба завтрака и догонялся бутербродиками.
- Несколько Йот, разложенных в разных местах, потому что интернет от гостиницы был ужасен — то ли миллион точек доступа на 6-ом канале, забивающих друг друга, то ли просто канал отстойный.
- Во всех залах всё отлично видно и слышно, потому что один большой, а в двух других стояло по два экрана и проектора, особенно это было актуально для длинного зала-"кишки".
- Нормальная гостиница, всё отлично с размещением. Даже аэрохоккей в бильярдной был :) взрослый который, где шайба бешено летает, мы в него порубились.
Ещё такой плюс-минус ADD — это разношёрстность аудитории, приводящая, с одной стороны, к отсутствию целевой аудитории на многих докладах, но зато с другой, к очень интересным «случайным попаданиям». Можно считать фишкой.
День первый я слушал и мигрировал между залами нормально, а вот второй частично прошёл мимо меня, потому что:
- Пилил свой «блиц» доклад, получившийся не совсем блиц (или совсем не блиц) про архитектуру MediaWiki с рассказом под длинный-длинный скроллящийся список, потому что в последний момент было уже не до презентации.
- Уже в 18:00 надо было уходить, в 19:45 на Сапсан, а до вокзала ещё доехать надо.
Содержание
- 1 День первый
- 1.1 Облачная инфраструктура AWS
- 1.2 Processing и Fluxus
- 1.3 Веб-приложения на HTML5, как альтернатива нативным приложениям
- 1.4 Взаимодействие дизайнера и программиста
- 1.5 Свободные лицензии: улыбнись тому, кто сидит в пруду
- 1.6 Технологии улучшения взаимодействия между разработкой и тестированием (реклама)
- 1.7 MongoDB
- 1.8 Будущее ECMAScript
- 1.9 NoSQL-практикум: Промышленная автоматизированая измерительная система на CouchDB
- 1.10 Расширения в Opera 11
- 2 День второй
- 3 Жалею, что не послушал
День первый
Облачная инфраструктура AWS
Добротный рассказ про устройство популярного облака Amazon Web Services с точки зрения его пользователя. Хорошая оговорка была — …вы платите microsoftу… тьфу амазону… Позабавила реализация «невиртуализированных» («настоящих») дисков — они, типа, ненадёжные, и содержимое гробится при перезапуске. А виртуальные, типа, надёжные, но зато медленные, потому что по сети. Есть там и CDN. Есть готовые образы машин, триггеры (чтобы отлавливать ЛОР-эффект, он же хабраэффект), автоскейлинг и так далее.
В общем-то, по мне, облака не круты, пока ОС нельзя завернуть в один динамически хавающий ресурсы процесс, который можно размазывать по любому числу машин. В этом смысле правильная идея у гугла с их AppEngine.
Processing и Fluxus
Незачёт, к сожалению, не потому, что тема плохая, а потому, что рассказана слабо. Докладчик (Антон Котенко, iPark Ventures) слабовато подготовился, выбрал нетривиальную тему и самый сложный формат — live-coding. Ещё у него под убунтой глючило JackAudio и т. п., а он это был не в силах разрулить, в итоге зал, полный вендузятнегов, получил повод для насмешек. А на самом деле это могло бы решиться, если подойти и подготовиться заранее.
Processing’а не было вообще, был Fluxus. Fluxus — это такая среда live-coding’а для 3D графики и функционального языка Racket, выросшего из Scheme (всё — список, куча скобочек и т. п.). Консоль для ввода команд накладывается прямо на 3D-изображение, а само оно рендерится с помощью машины состояний, то есть, очень прикольно, что при внесении изменений они просто плавно «включаются» со следующего кадра без сброса текущего состояния сцены.
Аудитория, по ходу, в итоге вообще не особо вкурила, зачем он нужен, а всё потому, что как раз этому надо и было уделить пристальное внимание — например, объяснить, что такое Демосцена. Особенно в части Intro, когда есть от силы 64кб пространства, а в него надо упихнуть красивый видеоряд и музыку, и чтобы это всё и быстро вертелось, и красиво сочеталось. Вообще Fluxus позиционируется также для прототипирования игр (тут тоже было непонимание в глазах — типа нахрен это надо, когда есть готовые коммерческие движки), но просто основная фишка Fluxusа — это ФАН и это развивающийся продукт, а не готовый движок для игры. По мне, ещё надо было хотя бы кратко показать стандартные демо-ролики и сделать обзор возможностей, а не пытаться настрочить тривиальности в режиме лайв-кодинга.
GlebTarasov 20:15, 4 мая 2011 (MSD) Про эти демосцены была выставка в Гараже. Выставка, состоящая из волпейперов, полный отстой)
Веб-приложения на HTML5, как альтернатива нативным приложениям
Презентация в 14 слайдов из Google Docs, в принципе, просто попытка рассказать о базовых возможностях HTML5, о которых по-моему уже все слышали много раз — аудио-видео, геолокация, оффлайн, WebSQL, Indexed (вот разве что про оффлайн и базы эти было любопытно). А про, скажем, грид (<datagrid>), draggable, menu он не говорил. А под нативными приложениями понимаются в основном приложения для мобилок (и угадайте с трёх раз, каких). Они используют какой-то сервис по заворачиванию HTML5 в нативное приложение, пашет и там, и там. Одно и то же написать нативно и на HTML5 не пробовали, так что сравнения нет. Почему? Потому что выбор такой не вставал — типа я вебщик, нафига мне смотреть в сторону нативного софта. Ну и вывод соответствующий — типа, можно писать, да.
Взаимодействие дизайнера и программиста
Ещё один макофил, рассказ про дизайн программки под айфон. Ясно что используется куча разного софта (Абоде и не только), хотя местами даже бесплатного (Google SketchUp). Были некоторые рекомендации:
- Дизайн по почте must die, будет длинное и бесполезное обсуждение
- Самое классное взаимодействие — когда его нет :) когда дизайнер, он же и программист, и он знает минимум одного такого человека
- Точнее специфицировать и лучше чтобы дизайнер сам использовал то, под что дизайнит. Например экран 320х480, но 20 пикселей — это же строчка сверху! Но это не только к телефонам относится, а также и к сайтам, например, если он не сидит в контактах, то скорее всего пропустит какие-нибудь фишки использования.
Свободные лицензии: улыбнись тому, кто сидит в пруду
Рассказ про свободные лицензии, про их классификацию и про типичные заблуждения, спокойным как слон, чуваком. Название доклада от «некоторые считают … таким енотом в пруду с дубиной». :)
Ох, блин! Как же я его забыл спросить про его видение «свободного ПО && игр» — того, чего пока нет.
Классификация:
- Proprietary: ничего нельзя делать, полное г***о.
- Shareware: можно только распространять, но свободно использовать нельзя, и всё остальное тоже нельзя.
- Freeware: можно распространять и свободно использовать.
- Public Domain: типа «отказа» от авторских прав. Свободно, но не обязательно распространять с исходниками, и в части стран «отсутствие прав» не работает.
- Free/Permissive (BSD, MIT, Apache и т.д): BSD/MIT свободная, но не вирусная (разрешает линковаться с проприетарщиной) и очень кастрированная, не всё чётко регламентирует. Последнее немного исправлено в лицензии Apache.
- Copyleft (GPL): гарантия свободы. Нельзя распространять, сужая права получателя (например, обязательно по первому требованию давать исходники). Нельзя линковать с проприетарщиной. GPLv3: нельзя тивоизировать, нельзя устраивать патентное преследование. Тивоизация — если кто не знает, это встраивание в устройство, на котором софт должен запускаться, проверки ЭЦП, запрещающей прошивку модифицированного софта. Называется так, потому что первыми до этого додумались TiVo, а сейчас активно пытаются использовать различные производители смартфонов. У-Р-О-Д-Ы. Надо было Торвальдсу в 2006 году перевести-таки ядро Linux под GPLv3. :(. Ещё есть MPL, которая обеспечивает нестрогий копилефт, разрешает линковку с проприетарщиной, но зато из-за каких-то извращений несовместима с GPL.
Заблуждение главное — это «Закрыть, а то сопрут». Позиция «грёбаных менеджеров», которые хотят сесть жопой на своё ПО и рубить бабло. И в конце концов стать ненужными, проиграть на рынке и замедлить его развитие (заодно и снизив свою прибыль). Только они-то этого не понимают. А на самом деле код, который можно, в их терминах, «спереть», мало что значит. Главное — это видение развития, клиентская база, доверие, поддержка, know-how, сервисная модель. Без всего этого ваш код всё равно скорее всего станет никому не нужен.
Был вопрос про VLC в AppStore, ну ха-ха, конечно все ябблофилы ругают автора VLC, потому что он мог и не говорить «вас тут не сидело, не нарушайте GPL», и тогда до поры до времени порт VLC оставался бы в AppStore, но лично моё мнение — правильно сделал. Потому что для ябблофилов хорошая демонстрация того, чем является то, что они так любят. Яббл вообще вон «чёрный экран» и «скруглённые углы» своими патентами считают ;) не пойму я ни их пользователей, ни разработчиков (не пойму, почему они до сих пор есть!)
Технологии улучшения взаимодействия между разработкой и тестированием (реклама)
Адова дрянь, реклама совершенно уродского продукта, когда слышишь слово «бизнес-процессы», уже почти пора валить. Реклама какого-то инструмента. Тьфу.
MongoDB
Не «много», а «монго». (Не дибил, а диби…) =) MongoDB — это NoSQL-база, хранит хеши, ну в смысле вообще объекты с произвольным набором полей/вложенных структур данных (типа JSON). Был на небольшом кусочке, услышал в основном про автоматический шардинг — то есть масштабирование БД на набор серверов. Заключение — ну, оно это умеет и умеет прекрасно.
Будущее ECMAScript
Пришёл в середину, успел послушать про:
- let (вместо var), кстати, уже есть в SpiderMonkey в 4-ом Firefox’е.
- Pattern Matching — удобная «распаковка» структур данных.
- #-функции (sharp-функции). Типа, всё то же самое, но return не пишем (возвращаем а-ля перл последнее вычисленное значение), а this наследуется.
- Оператор rest (…), то есть переменное количество параметров функций.
- Модули — то есть «use …», автоматически с учётом зависимостей подключающий библиотеку. Актуально в общем-то скорее для node.js, чем для веба.
- Всё это будет через пару лет минимум, хотя в альфа-альфа режиме разные вещи то тут, то там появляются.
Вообще забавно наблюдать, как современные языки перемешиваются между собой и Perl’ом. В C# вон тоже что-то похожее происходит. :)
NoSQL-практикум: Промышленная автоматизированая измерительная система на CouchDB
Докладчик — с одной стороны, Капитан Очевидность, видимо не так давно открывший для себя базы данных. Создавайте индексы, смотрите планы запросов. O_o
Но зато рассказал про реализацию системы учёта показаний электросчётчиков на CouchDB — ещё одной NoSQL-базе. CouchDB — это не просто NoSQL-база данных, написанная на Erlang’е, она также содержит внутри себя сервер приложений, который может выполнять javascript, и благодаря этому оно простое и быстрое. Интерфейс к CouchDB — HTTP-запросы (методы GET, PUT, POST, DELETE). Правда, это вам не Mongo и масштабирование — не её сильная сторона — всё масштабирование сводится к мастер-мастер репликации. Но они и не масштабировались, по оценкам им надолго текущей архитектуры хватит.
Кратенько: там есть документы (просто хэш/словарь, какой термин кто больше любит), и дизайн-документы, которые представляют из себя какой-то код, который может, например, что-то агрегировать с помощью map-reduce (получится как бы «view»). Хранит всю историю изменений, вся БД в одном файле, который только растёт вперёд и его нужно время от времени перепаковывать — привет, ACID и MVCC (да, таки оно и есть), PostgreSQL и VACUUM. Есть индексы, правда, их заполнение происходит по требованию и поэтому если накапливается много обновлений — первый запрос будет подтормаживать. Это решается, по-видимому, просто регулярным дёрганьем view по расписанию. Ещё есть простой интерфейс типа «запросить все изменения с момента заданного sequence number», что позволяет легко делать всякие онлайн-обновляемые твиттеры-странички.
Прикольная штука, короче.
Расширения в Opera 11
А не было их. Вадим Макеев (pepelsbey) то ли заболел, то ли испугался, что его порвут озлобленные количеством багов пользователи Оперы (типа меня). Баги типа:
- Во ВСЕХ билдах Оперы под Linux новее 10.63 разломаны настройки шрифтов — либо они вообще не учитываются, либо учитываются, только если их передёргивать каждый раз при старте браузера
- Странные Баги с зависанием (скринкаст).
- Отсутствие публичного баг-трекера и какой-либо реакции на баг-репорты в комментах к их блогу
Поменьше бы им писать, а побольше тестить.
День второй
- «70 % чего?» или различные метрики измерения тестового покрытия
- Строки кода vs функции; какие подводные камни у каждого подхода; лучше комбинированный; у них в Oracle 70 % строк.
- Статический анализ C++ кода
- Опять этот лысый мужик, который на каждой конференции под видом чего-то полезного пиарит свой инструмент, который платный и только для Visual Studio. Презентация состояла из примеров ошибок, которые ловит статический анализ, в открытых проектах, и рекомендации «используйте это».
- Особенности масштабирования систем планирования и управления поставками
- То самое случайное 100 % попадание — компания делает почти то же, что и мы, только круче :) обслуживает крупные западные сети, планирует им поставки с помощью купленных библиотек с алгоритмами. Тоже используют этот дурацкий Oracle, который масштабировать настолько дорого,
что проще перейти на MySQL, и кучу Java-серверов приложений, которые как раз добавить дешевле. Собственно, заказчики консервативные и это предпочитают тоже. И объёмы данных у них огромные. И библиотеки прогнозные только под винду. - Автоматизированный ALM
- Ещё один рекламщик, на этот раз реклама какого-то инструмента для работы с баг-трекерами (прокся к баг-трекеру — сильно, ага?), который работает через BPEL BPMN и поэтому «сильно гибкий» (не смешите мои подковы).
- JDK 7 and Java SE 7
- Товарищ из Oracle, а соответственно раньше из Sun, долго общался с залом в режиме дискуссии на тему JDK, и что-то как-то совсем не результативно. Но, в общем-то, lambda-функции они сделать так и не осилили. Снова обещают в будущей версии.
Жалею, что не послушал
Жалею, что не послушал, и буду смотреть видео:
- (проспал) Language Oriented Programming (LOP) в действии
- (пилил свой доклад) Оптимизация LAMP-приложения на примере OpenX: разгоняемся до 1000 запросов в секунду
- (пилил свой доклад) Увеличиваем производительность MySQL в десятки раз используя HandlerSocket