|
Персональные инструменты |
![]() |
||
|
![]() |
![]() ADD 2011: Отчёт Русецкого ГеоргияМатериал из CustisWiki
Гостиница (бизнес-отель «Карелия»): Весьма неплохая (на фоне отстойной гостинице в Ярославле, где проводилась ADD-2010, просто отличная). Правда, обещанный WiFi работал только в холле гостиницы, в номере не работал. Организация: Общее впечатление: организовано на хорошем уровне, доклады читались в трёх секциях, места всем хватало (единственно — секция B располагалась в переходе между зданиями, не очень удобный зал). Обеды, кофе-брейки также без нареканий — всё на уровне. А вот качество докладов, на мой взгляд, хуже, чем на предыдущей конференции ADD. Содержание
День 1Language Oriented Programming (LOP) в действии (или как мы это делаем в JetBrains)Доклад читал человек из JetBrains — Максим Мазин, один из разработчиков YouTrack, активно участвующий в разработке предметно-ориентированных языков для нужд JetBrains. В докладе речь шла о применении DSL для разработки приложений. То есть перед началом разработки осуществляется формализация предметной области в виде неких языковых правил и конструкций. А программа пишется уже на разработанном языке. В результате, исходный код получается максимально компактным и понятным. Однако, обозначенный подход не пользуется популярностью в силу высокой сложности разработки собственного компилятора для разработанного языка и отсутствию удобных IDE для работы с этим языком. В качестве решения, JetBrains предлагает свой продукт — среду языко-ориентированного программирования Meta Programming System(MPS). Эта среда предоставляет удобные механизмы для разработки собственного DSL и создания с его помощью программ в современном IDE. В частности, багтрекер YouTrack разработан именно с использованием MPS. В качестве иллюстрации своих слов, докладчик показал небольшое расширения для языка Java, добавляющее конструкцию для синхронизации доступа к разделяемым ресурсам — synchronized. Работает это следующим образом:
Говоря о препроцессоре, докладчик отдельно упомянул, что, несмотря на текстовое представление внедряемых в язык узлов, они не является текстом (?!). Каждый узел «живёт» в своей ячейке, отображаемой с помощью текстового представления, а проекционный редактор MPS занимается изменением непосредственно абстрактного синтаксического дерева. В настоящий момент реализован ряд расширений языка Java с использованием MPS:
MPS — опенсорсный бесплатный продукт, поэтому с его использованием можно разрабатывать свои DSL для любых задач. На вопрос одного из участников конференции о языковых расширениях для .NET/C# — сказали, что если в JetBrains будет разрабатываться проект на .NET, очень возможно, что они появятся, но пока нет ;(. Уже после доклада, на стенде JetBrains разработчики продемонстрировали работу с MPS (в докладе этого не было, только слайды). Продукт выглядит интересно, наверное, имеет смысл посмотреть-изучить. Кстати, хотелось бы отдельно отметить работу стенда JetBrains на конференции. Там присутствовали разработчики основных продуктов компании: Resharper, YouTrack, dotCover, Teamcity, можно было задать вопросы, получить ответы и скидку на лицензии Resharper и Teamcity. Разработчик Resharpera в ответ на мой вопрос о разрабатываемой в компании замене ставшего платным Reflector-а, по секрету ;) сообщил о том, что их бесплатный декомпилятор dotPeek почти готов и вот-вот (в течение одной-двух недель) появиться на сайте компании по программе Early Access. Показал его в работе (почти один в один Reflector) и пообещал тесную интеграцию с 6 м Resharper-ом. Облачная инфраструктура AWSДокладчики — Леонид Выгодский и Сергей Волков (читал один из них). Доклад посвящён крупнейшей облачной платформе — Amazon Cloud Service. Были кратко рассмотрена AWS, какие сервисы предоставляются, сколько чего стоит, выполнено сравнение с Google App Engine. AWS — пожалуй старейший облачный сервис (запущен в 2006 году — EC2, S3). Доступны следующие основные услуги: IaaS (Infrastructure as a service http://ru.wikipedia.org/wiki/Infrastructure_as_a_service, предоставление инфраструктуры), PaaS (Platform as a service, предоставление интегрированной платформы для разработки, тестирования, развертывания и поддержки веб-приложений как услуги, http://ru.wikipedia.org/wiki/PaaS) и SaaS (Software as a Service, http://ru.wikipedia.org/wiki/SaaS). Платформы: *nix и Windows. Всё за деньги, хотя бесплатно доступна минимальная конфигурация. Докладчик рассказал о территориальном делении амазоновских облаков на регионы и зоны, о доступных способах хранения данных в облаке и поделился соображениями о выборе конфигурации для создании отказоустойчивого решения. Оказывается, предоставляемый VPS instance — весьма ненадёжная штука, может быть потушен в любой момент, при этом пользовательские данные, сохранённые на HDD instance-а будут потеряны (?!). Для большей надёжности рекомендовал использовать минимум 2 инстанса, инстансы в 2х различных зонах или 2х различных регионах (с соответствующем ростом надёжности). Надёжное хранение данных достуно с использованием Elastic Block Storage (EBS) или Simple Storage Service (и то и другое — платно, в отличие от HDD инстанса). Также, докладчик упомянул про службу балансировки нагрузки между пользовательскими инстансами (Elastic Load Balancer) и службу автоматического управления количеством запущенных экземпляров в зависимости от нагрузки. В целом, очень интересный сервис для хостинга приложений. Из плюсов:
Минусы:
Интерфейсы: битва за право влиянияДокладчик — Ольга Павлова из Usability Lab. Рассказ про проектирование взаимодействия. Мне показались знакомыми основные идеи, озвученные в докладе — читал их в книжке Алана Купера «Об интерфейсе. Основы проектирования взаимодействия». Укажу основные моменты доклада.
Time management для программистаПошёл на доклад, полагая, что будет доклад о персональном time-management-е. Однако, докладчик рассказал об управлении рабочим временем с позиции менеджера. По докладу показалось, что автор придерживается авторитарного стиля управления. Часть обозначенных проблем и их решений банальны, тем не менее, есть интересные мысли/советы. Проблемы:
Пожиратели времени:
Принципы эффективной работы:
Советы:
Взаимодействие дизайнера и программистаДокладчик — Александр Черный, разработчик программ для iPhone. Его доклад — описание проблем, возникших у разработчиков с приходом дизайнера и описание, как они их решали. Честно говоря, скучновато. Автор приводит названия софтин, которые использовались для разработки внешнего вида интерфейса, говорит о специфических проблемах при разработке UI под iPhone (разрешения, шрифты, цвета и т. п.). Также даёт немного советов из собственного опыта по инструментам проектирования UI:
Считает, что дизайн по почте — отстой (подтверждаю, тоже был такой негативный опыт). Свободные лицензии: улыбнитесь тому, кто сидит в прудуДокладчик — Михаил Шигорин, участник ALT Linux Team. Цель доклада — прояснить текущее положение дел с лицензиями на ПО. Софтверная лицензия включает в себя:
Различные лицензии отличаются набором прав и ограничений. Проприетарная
Shareware
Non-free/freeware
Public Domain
С исходными кодами — вид СПО Free/permissive
Free / Copyleft
Докладчик отметил, что Open Source — всего лишь исходники, с ними могут не передаваться права («бесплатный != свободный»). Интересная аналогия Free Software с общественно-полезными сущностями (дороги и т. п.) Касательно отношения бизнеса к свободным лицензиям. По мнению докладчика, часто применяемая парадигма «закрыть, а то сопрут» неверна, спереть можно код, а не опыт и знания. Улучшение взаимодействия между разработкой и тестированиемДоклад немного маркетинговый, про использование ПО от HP для управления процессом разработки. Добрую треть доклада рассказывалось про эволюцию процесса разработки с ростом компании. Сначала просто отдел разработки, затем появление отдела QA, в котором в свою очередь появляются подразделения ручного тестирования, автоматизации тестирования и т. п. В общем, делается вывод, что с ростом компании увеличивается сложность процессов => сложность управления компанией => нужна автоматизация. Были отмечены тенденции:
И описаны взаимодействия между участниками процесса разработки. Собственно, взаимодействия могут осуществляться с использованием ПО от HP, весь процесс разработки отражается там. Как результат — управление качеством на всех этапах разработки. MongoDBMongoDB — современная нереляционная документо-ориентированная база данных. Eё можно считать золотой серединой между реляционными DB и чистыми хранилищами key-value (как memcached). Основные качества:
Масштабирование:
Данные разбиваются на блоки (chunks) размером < 64Mb или 100000 объектов. В фоновом режиме работает балансировщик. Где использовать:
Взаимоотношения заказчика и исполнителя на проектеБольшой рассказ про взаимоотношения заказчика и исполнителя в сфере разработки ПО, богато украшенный примерами из жизни. Несмотря на то, что любой проект — совместное детище заказчика и разработчика, и никто не может сказать заранее, где возникнут проблемы, часто заказчик требует указания сроков и бюджета («Я не знаю, что мне нужно сделать, но мне нужны точные сроки и бюджет.»). Отсюда: Цель разработчика — сделать заказчика счастливым за определённые срок и бюджет (при этом, как ни странно, не столь важна реализованная функциональность). Перед тем, как браться за разработку, нужно выяснить бизнес-задачу заказчика, возможно она решается значительно проще, чем видится заказчику. Необходимо сказать об этом последнему — иначе велик риск неудовлетворения заказчика от выполненной работы. В начале проекта необходимо выяснить:
В процессе разработки нужно активно взаимодействовать с заказчиком, стремясь достичь единого понимания целей, рисков, точности оценок. Крайне желательно знать, что можно урезать при необходимости, что можно перенести на потом (но при этом всё же сделать), то есть иметь представление о приоритетах задач. Также является важным документирование в процессе работы над проектом.
Для контроля процесса разработки применяются различные инструменты. Некоторые из них, которые применяются в компании докладчика:
Если клиент не верит в предъявленные трудозатраты, можно:
Что касается вопросов применяемой архитектуры и компонентов:
Сделать больше, чем просили — напрашиваться на проблемы. Особенно этого не любят западные заказчики («зачем вы сделали, то, что мы не просили, и кто за это заплатит?») После завершения проекта нужно собраться и проанализировать сделанное с точки зрения архитектуры, финансов, сроков, навыков, коммуникаций и организации. День 2Разработка приложений с использованием Windows Workflow FoundationДокладчик — Максим Игнатов, руководитель проектов компании e-Legion. Windows Workflow Foundation (WWF) удобно применять при разработке приложений, автоматизирующих длительные бизнес-процессы (документооборот и т. п.). Для таких процессов характерны набор состояний, в каждом из которых процесс может находиться неопределённо долгое время и ограниченный набор переходов между этими состояниями. Состояние процесса сохраняется в БД. В компании докладчика WWF была применена для разработки приложения, автоматизирующего какие-то процессы в отделе персонала. Целью доклада было заявлено показ узких мест WWF и решений возникших проблем. Вначале докладчик рассказал про разработанную систему, затем немного рассказал про подходы к использованию WWF при разработке приложений.
Далее был рассказ про возникшие при использовании WWF проблемы, связанные с миграцией сохранённых процессов при изменении Workflow. В целом, ИМХО, технология заслуживает внимания и изучения. Эффективная разработка бизнес-приложений на Silverlight и WPFДоклад оказался посвящён использованию фреймворка Prism 4 для разработки бизнес-приложений. Отмеченные особенности Prism:
Prism позволяет строить приложения с использованием компонентного подхода — из независимых единиц (модулей). Модули не ссылаются друг на друга. Prism использует подход Dependency Injection для инстанциирования модулей (и применят MS-овский IoC-контейнер Unity). Далее было интересно: докладчик порекомендовал начинать разработку приложения с UI (???), рассказал немного про связывание UI с модулями и конфигурацию контейнера Unity. Затем продемонстрировал приложение Asteros Contact, на примере которого рассказал о реализации Master-Details формы с использованием View Injection (честно говоря, не впечатлило). И, наконец, указал главный, по его мнению, недостаток MVVM — «всё взаимодействие идёт через ViewModel, на которую ложиться слишком много ответственности». В общем, за исключением некоторых базовых вещей о MVVM и Prism — доклад ни о чём. Техника и проблемы пэкеджинга бизнес-приложений для WindowsДоклад об организации процесса разработки и выпуска готовых к развёртыванию пакетов программ. Не зацепило. Были какие-то рекомендации, вроде:
и т. п. В конце доклада продемонстрировал утилиту собственной разработки (на базе Excel 2010), позволяющую просматривать содержимое msi-пакета. Первый опыт внедрения WPF в сложной системе (С++ и COM)Докладчик — Михаил Павлов. Цель доклада — рассказать о проблемах на этапе внедрения WPF и сформулировать рекомендации по повышению эффективности разработки. В начале своего рассказа, автор немного рассказал о проекте, которым занимался. Приложение — тренажёр рубки корабля, было написано на C++/COM/MFC/ATL/WTL/OpenGL. На слайде была обозначена какая-то плюшевая структура, судя по которой и по перечню используемых технологий, приложение чуть менее чем на 100 % состояло из сказочного кода. Были обозначены проблемы продолжения разработки с использованием указанных технологий:
Было поставлено требование: поддержка .NET в ядре приложения. Для перехода на новую платформу одному программисту было дано техзадание: «садись, разбирайся, потом расскажешь, что там накопал». Попробовали, и, почему то решили делать визуалку на WinForms + WPF. Объяснение такое: на WPF сложно и долго делать простые окошки (?), на WinForms наоборот — почти нереально сделать сложные кастомные интерфейсы. Плюс к этому, выяснилось, что Expression Blend, который пытались применять, генерирует на выходе XAML, который содержал много лишнего(?). Ну и хотелось использовать имеющиеся нативные наработки в областе интерфейса (решили на WPF формы кидать WinFormsHost, а в нем через Interop использовать нативный контрол). Конечно, не видя приложения трудно делать какие-то выводы, но подобная архитектура как минимум настораживает.
В результате, после первой попытки огребли проблем. Тогда решили следовать
Проблемы перевода:
Ну и в конце докладчик посоветовал с самого начала разработки сформировать библиотеку WPF стилей. Хотел задать автору вопросы о том, чем ему не угодил Expression Blend и какие недостатки в WPF он обнаружил, но, поскольку доклад затянулся, а я не хотел опоздать на следующий, пришлось убежать раньше времени. Жалею, что в презентации отсутствовали эпические скриншоты нового WPF интерфейса, очень хотелось на них посмотреть. Nemerle Deep DiveДокладчик — ведущий программист проекта Nemerle Владислав Чистяков. Доклад длился 3 часа, но, по-моему, почти всё, что было прочитано и показано на 2х последних докладах — специфика разработки, интересная тем, кто уже программирует на Nemerle. По словам докладчика, Nemerle — гибридный язык, отчасти императивный, отчасти функциональный, отчасти метаязык, расширяемый с помощью макросов. Создан как язык, на который несложно перейти программистам, разрабатывающим приложения на C#. Ядро языка Типы: C# и ML. Выражения: ML Операторы: C (C#) Макросы: LISP Поддерживается indent-стиль кодирования. Макросы языка служат для:
Существующие макро-библиотеки:
Расширения:
Во второй части автор рассказал про тип variant — аналог union в C. Основную часть оставшегося времени подробно рассказал про pattern matching — технологию, которая позволяет, если я правильно понял, реализовать двойную диспетчеризацию. Язык интересный, но неясны перспективы развития (поддерживается де-факто сообществом, но что будет завтра — непонятно). Вероятно, поэтому ничего не слышно про применение Nemerle в коммерческих проектах. По словам автора, язык будет развиваться. Посмотрим. Nemerle.Peg — .NET генератор парсеров шаговой доступностиДоклад начался долгим рассказом про то, как докладчик делал какой-то опрос на хабре. Затем, ближе к теме, рассказал немного о парсерах, упомянул ANTLR — основной конкурент Nemerle.Peg (Peg — Parser Expression Grammar). Привёл для сравнения, статистику по количеству строк кода, необходимых для реализации парсера на ANTLR и Nemerle.Peg, по которой получилось, что последний в 4 раза лаконичнее. Дальше начался livecoding, от простых примеров написания парсера с использованием Nemerle.Peg до парсера JSON. Поскольку про Nemerle я знаю только то, что рассказал Чистяков на предыдущих докладах, понял только, что Nemerle.Peg действительно позволяет написать лаконичный и эффективный парсер.
Любые правки этой статьи будут перезаписаны при следующем сеансе репликации. Если у вас есть серьезное замечание по тексту статьи, запишите его в раздел «discussion».
|
![]() |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
![]() |