Общие

MS SWIT 2012

22-23 Марта я имел возможность поучаствовать в одном из самых больших ивентов организованных компанией Microsoft Ukraine – MS SWIT 2012. В этот раз, XP Injection являлась медия партнером мероприятия, а я лично выступил там с докладом.


ms swit 2012

Около 2 лет назад, я присутствовал на первом MS SWIT 2010. В те дни главной темой всей конференции были облака и облачные технологии. На этот раз, «шум стоял» вокруг Windows 8, Market Place и Metro-style приложений. Конечно же, облачные технологии не были лишены внимания и на этой конференции.

Мне очень понравился вступительный доклад первого дня, который сделал Вольфганг Эберманн, вице-президент Майкрософт. Действительно, Майкрософт предлагает новые уникальные возможности для разработчиков под платформы Windows 8 и Windows Phone. Недавно, Украина вошла в список стран с официальной поддержкой Market Place. Это реальный шанс для многих попробывать свои силы в мобильной разработке, с возможность заработать на этом. А благодаря новым стратегиям Майкрософт, в области принятия открытых стандартов, таких как HTML5, EcmaScript – разработка под эти платформы выглядит действительно привлекательно.

Большое внимание было уделено свежим релизам таких продуктов, как: Share Point, SQL Server Denali, Windows Server 8 и т.д. Учитывая то, что я более сфокусирован на технологиях веб разработки, не могу сказать, что эти технологии были крайне интересны мне, но тем не менее, всегда полезно держать глаза открытыми и знать что происходит вокруг.

В первый день было дейсвительно много народу. Поэтому на «громкие» доклады надо было приходить заранее, чтобы успеть занять место. Во второй день, как мне показалось – людей было меньше. Поэтому, все те кто не пришли, могут начинать жалеть, самое интересное было именно во второй день.

Мой доклад был посвящен новому релизу ASP.NET MVC4 с фокусом на разработку мобильных веб приложений. Я бы сказал, что это была самая большая аудитория, перед которой я когда либо выступал. Мне кажется, что в зале было 150-200 человек.

Будучи вдохновенным выступлением Стива Сандерсена на TechDays 2012, я решил сделать свой доклад в подобном стиле. А именно, разработать простое мобильное веб приложения прямо по ходу доклада. Я решил сделать мобильный клиент к известному порталу http://asp.net. Не обошлось без недочетов: во первых, я немного затянул со вступильной частью (моя обычная проблема), во вторых во время доклада у меня на минуту пропал интернет, что заставило меня немного поволноваться и нарушило темп. Тем не менее, я надеюсь, что раскрыл те важные темы как CSS3 Media Queries, Display Modes, jQuery Mobile.

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


asp.net portal mobile

Что касается самого приложения – оно выйдет в свет в конце следующей недели. Исходники вы сможете найти на гитхабе, буду рад форкам и пул реквестам.

Оригинал статьи – http://www.beletsky.net/2012/03/ms-swit-2012.html.

Старт проекта. Как это делать?

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

Вопрос. Как это делать? Т.е. Как делать ваш проект? Предположим, что заказчик понимает зачем делать, и что у вас уже есть хотя бы предварительные требования, т.е. что делать с точки зрения результата проекта.

Приведу немного перефразированные случаи из жизни:

  • Стартап, заказчик имеет ограниченный бюджет, которого хватит на несколько месяцев, понимает идею продукта и полностью доступен для коммуникаций. Всем ясно, что за этот бюджет скорее всего можно получить только неплохой прототип, судьбу которого далее решает инвестор.
  • Переделка довольно сложного бизнес приложения на новые технологии. Никакой документации к существующему приложению нет. Бизнес-область компании-исполнителю незнакома. Во что выльется переделка – изначально сложно даже предположить. Но скорее всего много относительно возможностей заказчика. На стороне заказчика есть специалисты по старым технологиям, которые могут в какой-то мере саботировать проект.
  • Поддержка и развитие системы с множеством версий для разных заказчиков. Долгосрочное (годы) сотрудничество, важность накопления знаний внутри команды по предметной области. Наличие другой команды-конкурента, команды могут сравниваться по производительности по количественным показателям. Заказчик диктует свои стандарты кодирования и подход к архитектурным решениям продукта. Довольно большая доля бизнеса для компании-исполнителя.

Как видно, ситуации совершенно разные, и подход – «Как делать» – тоже будет разный. И лучше договориться о нем заранее. На что обратить внимание:

  • Необходимость разбить проект на фазы, например: передачи знаний, выяснения требований, прототипа, проектирования, выполнения, внедрения и т.п. Соответственно в каждой фазе будут совершенно разные результаты работы, состав команды, продолжительность, тип контракта, методология.
    • Когда необходимо разбивать на фазы? Когда требования неясны, новая и сложная предметная область, новая технология, требуется получить точные оценки и планы работ, внедрение или долгое или отложено во времени, заказчик или исполнитель не готов делать сразу весь проект и т.п.
  • Необходимость договориться о процессах работы – это собственно процессы, поддерживающие методологии, стандарты, технологии. Обычно у компании-исполнителя есть определенные внутренние договоренности «как делать» те или иные инженерные и управленческие практики. У заказчика тоже могут быть свои соображения и по поводу процессов, и по поводу методологий, и по поводу инструментария. Сам по себе проект тоже накладывает определенные условия.
    • Задача компании-исполнителя, а особенно ответственного менеджера проекта – установить процессы, которые были бы в первую очередь полезны конкретному проекту, учитывая процессные требования как заказчика, так и компании исполнителя.
  • Необходимость понять политические факторы проекта. Их может быть великое множество. Давайте посмотрим. Кому проект выгоден, а кому может быть и не выгоден? Даже есть такое понятие «murder board». Невыгоден – пользователям заказчика, работу которых автоматизируют, т.е. вероятны сокращения штата; ит-шникам заказчика, которые «застряли» на устаревших технологиях или дорого обходятся заказчику; представители подразделений и других проектов заказчика, у которых ваш проект «отбирает» финансирование, т.е. те, кто напрямую не заинтересован в проекте. Со стороны компании-исполнителя тоже может быть набор политических факторов, таких как приоритетность заказчика или направления бизнеса среди других; состояние финансовых и договорных отношений; наличие и квалификация специалистов определенного направления и т.п.
    • По политическим факторам скорее всего нужно уделить внимание двум аспектам: а) скажем так – психологической готовности их нейтрально воспринимать; б) выбору правильных способов коммуникации и эскалации, причем с уклоном в более формальные методы.

В следующей статье рассмотрим дисциплину Управление Конфигурациями, и почему важно уделить ей внимание на старте проекта.

Оригинал статьи здесь.

Облачная разработка в «Клубе анонимных разработчиков» 29 марта

Очень хотелось провести 14-ую встречу клуба пораньше, но не сложилось. Поэтому в очередной раз мы соберем разработчиков пообщаться и послушать выступления докладчиков 29 марта. В этот раз темой выбрана облачная разработка. Будут обсуждаться вопросы построения приложений с облачной архитектурой, а также провайдеры облачных платформ.

Одним из докладчиков станет Николай Алименков. Он расскажет о своем двухлетнем опыте разработки проекта полностью на платформе Amazon Web Services (AWS). Николай расскажет о преимуществах и недостатках данного решения, о важных моментах, которые стоит учитывать при переходе на облачную инфраструктуру. Также участники смогут узнать об особенностях использования различных облачных сервисов от Amazon и задать любые вопросы на данную тему.

Виктор Цикунов и Антон Бойко представят участникам сервис Windows Azure. Помимо краткого обзора Windows Azure будут затронуты темы создания распределенных приложений, нагрузочного тестирования приложений, автоматического масштабирования ресурсов. В рамках этого выступления не планируется показывать слайды – только живые демонстрации. Поэтому выступление получится более чем практическим.

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

Итак, встреча пройдет в четверг 29 марта. Место проведения мы объявим ближе к дате мероприятия. Это связано с тем, кто число членов клуба постоянно растет и мы рискуем не влезть в уютный Киевский офис компании DataArt. Этот офис полюбился членам клуба своей уютной обстановкой и наличием всего необходимого для продуктивного общения. Но, по итогам прошлых встреч, есть риск, что все желающие не поместятся.

Официальное начало встречи по-прежнему в 19:00, завершение в 23:00. Стоимость участия 80 гривен при оплате заранее, 120 гривен при оплате на месте. Пива, пиццы и кофе с печеньками хватит на всех. Регистрация обязательна. Все детали по оплате будут высланы вам после успешного прохождения регистрации. Количество мест ограничено 60 участниками.

Отчет о конференции Selenium Camp 2012

Selenium Camp 2012

В конце прошлой недели прошла вторая по счету конференция Selenium Camp. В этот раз конференция растянулась на два дня – 24 и 25 февраля. Первый день был целиком посвящен обучению. Мы организовали 3 потока мастер-классов и тренингов на целый день для более 50 участников. Программа получилась достаточно насыщенной: «Написание тестов с нуля на базе WebDriver и Java», «Selenium против AJAX», «Пробуем Selenium на практике», «Миграция с Selenium 1.0 на Selenium 2.0 (aka WebDriver)», «Тестирование веб приложений с WebDriver/Selenium».

Вечером того же дня ребята из automated-testing.info организовали посиделки тестировщиков. В качестве приглашенных докладчиков выступили David Burns и Алексей Баранцев. Было очень интересно послушать историю о развитии Selenium/WebDriver и получить множество полезных советов от людей, которые напрямую занимаются разработкой этого замечательного инструмента.

В это же время велась активная подготовка зала в БЦ «Парус» для основного дня конференции. А принять в гости предстояло около 350 участников. Зимой в Киеве очень мало площадок готовы принять комфортно такое количество людей. Мы приложили максимум усилий, чтобы все чувствовали себя свободно. Поэтому пришлось ограничить количество участников и отказать многим из тех, кто пытался зарегистрироваться в последнюю неделю.

Регистрация прошла успешно, без каких-либо очередей и суеты. Все получили яркие пакеты с материалами конференции, красочные бейджи и смогли вдоволь пообщаться за утренним кофе в холле. Холл в это время напоминал муравейник, который просто гудел от общения. В этом году мы впервые поменяли формат печатной программы конференции. Теперь она является одновременно и блокнотом для заметок. Участники могут делать заметки непосредственно около доклада, что позволяет структурировать записи и получить в итоге персональную «книгу участника».

Я открыл конференцию словами благодарности докладчикам за проделанную работу (а им пришлось пройти 4 этапа ревью), волонтерам за огромную помощь в подготовке конференции и организаторам за их огромные усилия по организации мероприятия. Украинские компании практически не поддерживают мероприятия для тестировщиков – в этот раз нас поддержала только компания SysIQ (наш постоянный партнер по различным конференциям), за что ей огромное спасибо. Я также рассказал о составе пакета участника и продемонстрировал карточки благодарности докладчикам. Это теперь обязательный атрибут каждой нашей конференции. Участники могут выбрать понравившиеся им доклады и написать слова благодарности докладчику. Вы не представляете как это приятно и сколько сил дает выступающим!

В этом году мы заключили договоренность с Mail.RU Group и компанией Воля об обеспечении надежного и быстрого интернета на конференции. Интернет держался стабильно и не падал на протяжении всего дня. По холлу постоянно бродили работники компании и проверяли качество соединения. Лично у меня были небольшие перебои утром, но оказалось, что они были вызваны настройками одного из ноутбуков в холле, который пытался раздавать интернет.

Программа конференции в этом году была на голову выше чем в прошлом. Это лично мое мнение. Доклады стали гораздо более техническими, практическими и злободневными. В этом году уже 3 иностранных докладчика посетили конференцию. Также в составе докладчиков было 3 члена команды разработки Selenium/WebDriver. Это очень здорово, потому что участники имели возможность из первых уст узнать подробности развития инструмента, ближайшие планы, технические детали.

Мы старались как могли сбалансировать нагрузку в программе между тремя потоками. Но все равно маленькую и уютную сцену для мастер-классов, рассчитанную на 50 человек, то и дело участники норовили расширить дополнительными стульями. Не переживайте, все доклады записывались на видео и будут выложены на сайте конференции в течение нескольких недель. Маленькая сцена пригодилась еще раз ближе к вечеру – на ней устроили серию Lighting Talks. Нашлось 5 желающих выступить с мини-докладами. Это очень здорово, когда у участников есть чем поделиться.

У меня самого в этот день было 2 доклада, поэтому мне удалось побывать далеко не на всех выступлениях. Из увиденного очень понравились доклады David Burns «The road to a standard» и «Selenium против AJAX» от Алексея Баранцева. David рассказал о текущем состоянии дел в продвижении WebDriver в качестве стандарта W3C. Это очень важное направление, потому что оно может революционным образом облегчить жизнь всех, кто тестирует приложения в браузерах. Производители будут сами заботиться о поддержании стандарта, что сделает тестирование проще, быстрее и стабильнее. Леша отлично рассказал технический доклад о тонкостях и особенностях работы WebDriver с AJAX приложениями. Огромное количество полезных советов, идей, известных проблем и обходных маневров к ним. Отличный доклад!

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

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

Незаметно подошел момент закрытия конференции. Кроме традиционных слов благодарности докладчикам, волонтерам, организаторам, спонсорам и всем присутствующим, у нас был заготовлен розыгрыш призов. Это было чрезвычайно весело и интересно. Мы заранее огласили, что только заполненные анкеты обратной связи смогут участвовать в розыгрыше призов. Некоторые участники не вняли нашей просьбе, поэтому не всегда приз уходил с первой попытки. В общей сложности мы разыграли 3 книги, Amazon Kindle Touch и 1 сертификат на посещение любого тренинга от XP Injection. Компания SysIQ вдобавок разыграла 25 прикольных футболок, билет на конференцию SQADays 11, сертификат на курсы английского языка и лицензию на Intellij IDEA.

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

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

Мы будем рады увидеть всех в следующем году на Selenium Camp 2013 и на других наших мероприятиях!

Успешное выступление на онлайн конференции Auto ConfeT&QA 2012

онлайн конференция Auto ConfeT&QA

13-15 февраля с 17 до 19 часов по московскому времени проходила онлайн конференция для специалистов по автоматизации тестирования – Auto ConfeT&QA. Организаторы собрали докладчиков из России, Украины и Беларуси, которые представили на суд слушателей 10 докладов. Уровень организации был достаточно высоким, докладчикам помогали подготовиться к выступлению, репетировали с ними доклады, делали ревью презентаций. В результате все выступили достойно.

Я тоже принимал участие в качестве докладчика с докладом «TDD c помощью функциональных тестов на WebDriver». Я давно хотел выступить на данную тему и как раз представилась неплохая возможность это сделать. TDD (Test Driven Development) является популярным подходом среди разработчиков. Сначала пишется тест, а только потом на основании этого теста пишется реализация. Эта практика дает много преимуществ, позволяя сосредоточиться на небольшом аспекте функциональности и автоматизировать проверку правильности его реализации. Таким образом, разработчик сразу думает о вариантах использования и реализует минимальный необходимый функционал.

TDD можно применять не только на уровне модульных тестов, но и на уровне функционального тестирования. Это дает возможность задуматься о структуре и особенностях функциональности еще до ее реализации. Вам не придется мучиться в попытках протестировать приложение, которое не задумывалось для тестирования (сложные локаторы, непонятная структура страниц, запутанные связки элементов). В качестве сопутствующего эффекта, TDD позволяет сократить время на ручную проверку разработчикам и автоматизировать 100% функциональных тестов.

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

Доступен слайдкаст доклада:

Так как я показывал живую демонстрацию, то посмотреть доклад в полном объеме можно на видеозаписи:

Лично мне понравилось несколько докладов. Отлично выступил Алексей Баранцев на тему «Разработка стратегии автоматизации». Леша очень опытный докладчик, особенно в онлайн режиме. Доклад был насыщен полезными советами, которые помогут многим начать автоматизировать и снизить риски провала.

Яркий и живой доклад получился также у Ольги Киселевой, которая выступала первый раз. У нее была очень спорная тема «Можно ли писать автотесты на родном языке?», которая вызвала много споров и дискуссий. Но сам доклад никого не оставил равнодушным.

Еще я для себя отметил доклад «Обходные пути в автоматизированом тестировании», с которым выступал Дмитрий Жарий. Не всегда получается жить в идеальном мире и к нему приходится приспосабливаться. Именно о таких способах обходить препятствия и рассказывалось в докладе. Просто и со вкусом.

Остальные докладчики тоже молодцы. Спасибо всем за подготовку и потраченное время!

Организаторы проводили голосование среди участников за лучший доклад на конференции. Результаты опубликовали сегодня. С отрывом в один голос я занял второе место после Алексея Баранцева. Леша благородно отказался от приза по причине причастности к организации конференции. В результате, первый приз достался мне – игровая приставка Xbox 360 + сенсор Kinect. Я несказанно рад этому факту! Значит, мои усилия были интересны людям и приносят пользу. А теперь мое выступление принесло пользу и мне лично. ;)

Я буду с удовольствием выступать в очередной онлайн конференции из этой серии – Chief ConfeT&QA. На этот раз с докладом «Жизнь без тестировщиков: миф или реальность?». Не подумайте, я не против тестировщиков. Наоборот – я за то, чтобы они занимались интересной работой и приносили большую пользу проекту. Подробности можно будет услышать на моем выступлении.

Участники задавали достаточно много вопросов после доклада. Ниже вы можете найти мои ответы:

Вопрос: Какими средствами CI докладчик пользуется (советует пользоваться) наряду с TDD?

Лично я уже давно почти везде пользуюсь TeamCity (http://www.jetbrains.com/teamcity/). Отличный UI, множество уникальных фичей, отличная интеграция с различными IDE, поддержка для практически всех известных мне инструментов, классная архитектура и т.д. Бесплатная версия подойдет для большей части проектов и не вызовет проблем или нехватки чего-то. На втором месте Jenkins (http://jenkins-ci.org/). Основной аргумент за него – бесплатный с огромным сообществом, а это значит куча плагинов под все, что только можно придумать. Но UI достаточно беден и нужно конфигурировать плагины самостоятельно.

Вопрос: А если ошибки возникнут потом при эксплуатации? Те тесты, которые не предусмотрели в «чек-листе», согласованном с клиентом?

То, что мы не предусмотрели, не могло быть реализовано. Оно должно быть реализовано как отдельная доработка. А там действует все тот же TDD. На любой баг или недоработку сначала пишем тест, а потом уже начинаем работу…

Вопрос: По факту все же получается, что тест пишется паралельно с реализацией?

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

Вопрос: А какую test management system посоветуете?

В идеале – никакую. Я уже говорил о дублировании усилий на поддержку тестов и тест кейсов. Я вижу этот процесс как полную автоматизацию, поэтому предлагаю избегать использования test management систем. Они заведомо склоняют нас к дублированию.

Вопрос: Авто тесты лучше писать до разработки приложения или после и кто должен за это отвечать?

Конечно же их лучше писать до разработки. В этом и есть подход TDD. Таким образом вы сможете получить весь спектр преимуществ, о которых я упоминал в докладе.

Вопрос: Что делать если UI достался от legacy проекта?

Legacy код будет проблематичным для всех, включая тестировщиков. Но TDD заставляет работать над проблемами всей командой. Разработчики будут помогать победить проблемы. Вам придется разработать с течением времени тонкую прослойку над вашим нетестируемым UI и в будущем будет на порядок легче.

Вопрос: Опиши детальнее возможности инструмента testdox.

TestDox – это очень простой, но удобный инструмент. Он ставится как плагин к IDE и позволяет разбирать названия тестовых методов на слова. Таким образом можно включать гораздо больше полезных данных в название теста, причем писать просто на английском языке, избегая особенностей языка программирования (подчеркиваний, camel case и прочих). Поддерживается редактирование, список тестов, создание новых тестов. Таким образом, данный плагин приближает вас на шаг к тестам в качестве документации. Остается только подключить мозг. :)

Вопрос: Что ты думаешь по поводу BDD?

BDD – отличная практика, которая является подмножеством TDD. Вместо тестов рекомендуется начинать с поведенческих шаблонов приложения, причем оформлять их в человеческом виде (в основном предложениями английского языка). Не всегда дополнительные расходы времени на специализированный инструмент действительно оправданы. Если никто со стороны бизнеса не заглядывает в эти тесты, то возможно стоит перейти на уровень технических тестов с DSL.

Вопрос: Прокомментируй еще раз рекомендации с чего начать.

Начать стоит с того, чтобы осознать четко для себя зачем и почему стоит работать по TDD. После этого стоит донести свои мысли и идеи до всех членов команды. Причем не то, что вы собираетесь работать по TDD, а то, какие преимущества могли бы получить все от этого. Если у вас получится это сделать, то все будут хотеть применить TDD. А потом дело лишь в стратегии. Вам нужно найти удобный момент и начать внедрение. Поддержка команды поможет вам сделать это достаточно быстро (я имею ввиду начать). А дальше у вас будет освобождаться все больше времени за счет 100% автоматизации новой функциональности и вы сможете укрепить свои позиции. И не забудьте подготовиться морально к тому, что придется поломать мозг, как свой так и коллег. :) Удачи!

Microsoft SWIT 2012 в Киеве

22 и 23 марта в Киеве пройдёт крупнейшая техническая конференция Microsoft в Украине – Microsoft SWIT 2012, на которой в течение двух дней будет представлено более 50 докладов по новейшим технологиям. Доклады будут проводиться ведущими экспертами международного уровня, с которыми будет организована возможность интенсивного общения.

Благодаря посещению конференции участники смогут

  • Одними из первых узнать детальную информацию о развитии, настоящем и будущем всего спектра технологий Microsoft.
  • Задать детальные вопросы и обсудить с сотрудниками Microsoft и ведущими индустриальными экспертами представленные анонсы, доклады, продукты и программы.
  • Посещая доклады,  узнать наиболее современные лучшие практики, решения и способы оптимизации использования всего спектра технологий Microsoft.
  • Общаясь на докладах и в зоне «спроси эксперта» установить полезные контакты с ведущими специалистами Microsoft, индустриальными экспертами, представителями партнеров Microsoft, а также коллегами по индустрии.
  • Посещая партнерскую выставку, ознакомиться с решениями ведущих ИТ-компаний Украины и установить деловые контакты для решения производственных задач.

Это знаковое мероприятие в Восточной Европе и каждый IT-шник, причастный к продуктам Microsoft просто обязан его посетить.

В рамках конференции будут покрыты следующие темы

  • Облачные вычисления;
  • Языки и инструменты разработки ПО;
  • Архитектура приложений и систем;
  • Мобильная платформа Windows Phone;
  • Информационная безопасность;
  • Управление ИТ-инфраструктурой;
  • Технологии виртуализации;
  • Бизнес-решения;

Один из тренеров нашего центра, Александр Белецкий, выступит на конференции с докладом «ASP.NET MVC 4 для разработчиков мобильных приложений». С некоторых пор, мобильные платформы являются неотемлимой частью нашей жизни. Актуальность разработки под них растет каждый день. Отвечая современным требования веб-фреймворк компании Майкрософт ASP.NET MVC версии 4 включил ряд расширений, облегчающий и расширяющий арсенал инструментов разбработки для мобильных устройств.

На докладе будет рассмотрена текущая реализация ASP.NET MVC 4 CTP (Community Technical Preview), которая доступна для скачивания и использования, в том числе: расширения темплейтов проектов, шаблон проекта для мобильного устройства, jQuery Mobile, режимы екранов (Display Modes), CSS3 media queries.

Двухдневная программа конференции включает

  • Пленарный доклад о стратегии развития технологий Microsoft;
  • Более 50 докладов, сгруппированных по трекам;
  • Лабораторные классы hands-on-lab по новым программным разработкам;
  • Круглые столы с участием ведущих экспертов Microsoft и индустрии;
  • Зону «Спроси эксперта»;
  • Выставку новинок и решений от ведущих технологических компаний Украины;
  • Демо-зону стартапов BizSpark и не только.

Программа конференции поделена на 4 потока. Это позволит каждому участнику найти для себя доклады по интересам.

Регистрация на конференцию уже открыта. Подробная информация и расписание докладов будут доступны на официальном сайте конференции – http://www.msswit.in.ua. До встречи!

Использование ASP.NET MVC валидационного механизма, без ASP.NET MVC

В своей практике использования фреймворка ASP.NET MVC, я очень привык к DataAnnotations аттрибутам, для валидации классов модели. В самом деле, это отличный подход. Аннотируешь модель соответвующими аттрибутами, всю остальную работу делает фреймворк. Простым вызовом ModelState.IsValid внутри екшина, можно узнать состояние модели.

Во время реализации одной из фич, для candidate я подумал, что мне нужна похожая валидационная модель, для моих классов, но без использования самого MVC фреймворка. А именно, для класса типа Github.cs я хочу знать, «сконфигурирован» он или нет. И «сконфигурирован» == «валиден», в моем контексте. Вместо того, чтобы писать кастомный код, который бы проверял все свойства на предмет заполненности, я хотел сделать тоже, что делает ASP.NET MVC, через DataAnnotations. Самое крутое, что это оказалось возможным, причем сделать это очень просто.

Простое начало

Предположим, есть такая модель:

public class SimpleModel
{
	[Required]
	public string SomeProperty { get; set; }

	[Range(0,50)]
	public int SomeAnotherProperty { get; set; }
}
    

Если, наша цель, просто получить ответ «да» или «нет» (валидна или нет), мы можем сделать такую функцию:

public bool ValidateSimpleModel(SimpleModel validate)
{
	return Validator.TryValidateObject(validate, new ValidationContext(validate, null, null), null);
}
    

Validator это статический класс, находящийся в неймспейсе DataAnnotations. Он принимает целевой объект, валидационный контекст и коллекцию результатов валидации. Но в силу того, что он лишь «пытается» выполнить валидацию, почти все эти параметры могуть быть null.

Использование результатов валидации

Если нужна более специфическая информация, как – какое именно свойство невалидно, то можно использовать ICollection<ValidationResult>.

public ICollection<ValidationResult> ValidateSimpleModel(SimpleModel validate)
{
	var validationResults = new List<ValidationResult>();
	Validator.TryValidateObject(validate, new ValidationContext(validate, null, null), validationResults);

	return validationResults;
}

В том случае, когда объект находится в невалидном состоянии, этот метод вернет коллекцию ValidationResult, которая содержит всю релевантную информацию.

Оборачиваем все в екстеншн метод

Наконец-то, я сделал просто екстеншн метод, с помощью которого можно применить DataAnnotations валидацию, к любому объекту:

public static class ValidatorExtensions
{
    public static bool TryValidateObject(this object validate)
    {
        return Validator.TryValidateObject(validate, new ValidationContext(validate, null, null), null);
    }
}
    

Теперь, модель может иметь метод IsValid() типа:

public bool IsValid()
{
 return this.TryValidateObject();
}
    

Для той простой задачи, которую я пытался решить, это сработало просто отлично!

Оригинал статьи – http://www.beletsky.net/2012/01/using-aspnet-mvc-validation-mechanism.html

Пишем приложение для Windows Phone 7 «с нуля»

Мы продолжаем серию встреч «Клуба анонимных разработчиков» на тему Windows Phone 7. 7 февраля прошла первая из них (12-ая встреча клуба). Эта встреча клуба, 13-ая по счету, будет проходить в сотрудничестве с порталом Windows Phone 7 Rocks. Это отличная новость для всех .NET-чиков и .NET-чиц Киева, потому что у вас появилась замечательная возможность послушать и поучиться у профессионалов в этой области, которых не так уж много. И все это в рамках формата «Клуба анонимных разработчиков» с непринужденной обстановкой и отличной атмосферой.

В этот раз ребята решили начать с самого главного – как начать писать приложения под Windows Phone 7. Платформа совсем новая и очень мало людей умеют это делать вообще, а еще меньше умеют это делать правильно. В докладе будет продемонстрирована разработка контентного приложения для Windows Phone. Будут затронуты такие темы:

  • UI / UX
  • полезные инструменты и библиотеки для Windows Phone
  • паттерн MVVM
  • работа с данными – загрузка, обработка, сохранение
  • отладка, подготовка к публикации

В роли докладчиков выступят Михаил Галушко и Александр Краковецкий. Они оба являются авторами многочисленных статей на сайте Windows Phone 7 Rocks. Александр является автором и идеологом сайтов Windows Phone 7 Rocks и Microsoft User Group Community. Оба начали изучать технологию Windows Phone с момента ее появления на свет. На данный момент уже опубликовали несколько приложений.

Эта встреча обещает получиться более практической и участники получат ответы на многие вопросы, связанные со стартом разработки приложений под Windows Phone 7. Итак, встреча пройдет в четверг 1 марта. Место проведения мы объявим ближе к дате мероприятия. Это связано с тем, кто число членов клуба постоянно растет и мы рискуем не влезть в уютный Киевский офис компании DataArt. Этот офис полюбился членам клуба своей уютной обстановкой и наличием всего необходимого для продуктивного общения. Но, по итогам прошлых встреч, есть риск, что все желающие не поместятся.

Официальное начало встречи по-прежнему в 19:00, завершение в 23:00. Стоимость участия 80 гривен при оплате заранее, 120 гривен при оплате на месте. Пива, пиццы и кофе с печеньками хватит на всех. Регистрация обязательна. Все детали по оплате будут высланы вам после успешного прохождения регистрации. Количество мест ограничено 60 участниками.

Отчет о 12-ой встрече «Клуба анонимных разработчиков»

Вчера состоялась 12-ая встреча нашего «Клуба анонимных разработчиков». Эта встреча открыла серию встреч на тему Windows Phone 7. Все встречи данной серии будут проходить в сотрудничестве с порталом Windows Phone 7 Rocks.

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

Открыл встречу автор и идеолог сайтов Windows Phone 7 Rocks и Microsoft User Group Community Александр Краковецкий. Он уже давно изучает платформу и представил свой доклад «А вы уже были в Metro?». В докладе Александр рассказал о новом языке дизайна Metro, который используется для разработки интерфейсов в Windows Phone 7, а также будущей версии Windows 8. На примерах продемонстрировал типичные ошибки при проектирование мобильных приложений для данной платформы. Вот презентация этого выступления:

Второй доклад был более технический. Михаил Галушко выступил на тему «Хранение данных в Windows Phone». Доклад посвящен вопросам работы с данными в Windows Phone приложениях. Участники смогли больше узнать о возможных вариантах хранилищ, сравнительном анализе их возможностей и рекомендациях по выбору того или иного решения. Презентация этого доклада также доступна:

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

Дополнительную информацию вы можете найти в Twitter по хештегу #uadevclub. Можно почитать о ходе встречи, найти интересные цитаты, советы и факты о рассматриваемых технологиях. Присоединяйтесь и обсуждайте вместе с нами!

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

Следующая встреча запланирована на конец февраля. Следите за анонсами и не пропустите начало регистрации!

Доклад «Pomodoro: 2 years later…» на конференции IT Brunch

В эту субботу, 4 февраля, мы провели очередную онлайн конференцию на платформе IT Brunch. В этот раз она называлась «Time Management» и собрала тех, кто интересуется управлением собственным временем. На конференцию зарегистрировалось 562 человека, а количество одновременно слушающих участников доходило до 260. Почитать комментарии участников, найти полезную информацию и проследить за ходом конференции можно в ленте Twitter.

Я выступил на конференции с докладом «Pomodoro 2 года спустя». Почти 2 года назад я стал применять технику Pomodoro для лучшего управления рабочим временем. Данная техника мне помогает и по сей день. В докладе я рассказал, что и как поменялось для меня за это время, почему я по-прежнему пользуюсь этой техникой и как она помогает мне в реальной жизни. Я уже подготовил слайдкаст для всех, кто не смог принять участие в конференции, но интересуется данной темой:

Есть еще видео-вариант:

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

Вопрос: Что значит Помодоро должен закончится? Получить результат или просто нужно прерваться для отдыха?
Ответ: Это означает, что вы должны оторваться от работы и сделать перерыв. Обычно, когда Pomodoro завершается, я в голове подвожу мини итог и прикидываю что буду делать в следующем Pomodoro. Но это отнюдь не значит, что все задачи длиной в один Pomodoro.

Вопрос: Эстимейтите ли Вы количество помодоров для одной задачи?
Ответ: Обязательно! Это неотъемлемая часть техники Pomodoro. Ежедневные оценки личных задач сильно поднимают уровень точности оценок.

Вопрос: Как синхронизировать помидоры с коллегами? Часто кто-то приходит с вопросом посередине помидора.
Ответ: Вы должны попытаться «защитить» текущий Pomodoro от вторжения извне. Отложите решение вопроса, если он не супер срочный. Но обязательно вернитесь к вопросу, когда Pomodoro будет завершен. Если у вас в команде несколько человек использует технику Pomodoro, то предложите синхронизировать расписание. Это поможет вам не только не отвлекать друг друга во время сфокусированной работы, но и делать перерывы вместе.

Вопрос: А что если помодоро кончился быстрее 25 минут?
Ответ: Ничего страшного. Вы можете либо устроить перерыв пораньше либо взять еще небольшую задачу до конца Pomodoro. Самое главное чтобы вы проанализировали почему так произошло и следующий раз не допустили такого при планировании. Мелкие задачи обычно группируют.

Вопрос: Стоит ли пробовать разные отрезками времени для помодоро – 10/25/50 минут? И для каких задач нужны длинные и короткие помодоры?
Ответ: Длина Pomodoro должна быть не слишком короткой, чтобы вы успевали что-то значимое сделать, но и не чересчур большой, потому что частота прерываний будет увеличиваться, а гибкость в вашей работе будет уменьшаться. Но это достаточно индивидуально. Длина 25 была выбрана для удобства планирования рабочего дня. С перерывом в 5 минут получается, что один Pomodoro занимает полчаса.

Вопрос: Успеваешь ли ты реально сделать 12 помодоро в день?
Ответ: 12 – это идеал, к которому нужно стремиться. Получится ли его достигнуть зависит от количества прерываний в вашей работе. Раньше я достаточно часто делал по 12 Pomodoro в день. Сейчас реже, но минимум 10 делаю каждый день.

Вопрос: Чем заниматься, если выполняешь задачу быстрее запланированного и в помодоро остается время?
Ответ: На этот вопрос я уже отвечал выше.

Вопрос: Т.е. если я неверно оценил задачу в помодорах, и не успел ее выполнить, я её просто бросаю и приступаю к следующей?
Ответ: Конечно нет. Вы должны остановиться и разобраться почему так произошло. После этого переоцените задачу и продолжайте работать над ней, если она до сих пор остается самой приоритетной. Я еще часто прибегаю к технике разбиения задачи на подзадачи. Если я не успел вложиться в оценку и вижу, что работы еще много, то я выделяю отдельную задачу на остаток работы и оцениваю ее отдельно. Главное – постараться не допускать такого в будущем.

Вопрос: Можно ли планировать разное количество помодоров в разные дни, например, 10 помодор в понедельник и 5 в пятницу, так как ты знаешь, что к пятнице твоя эффективность падает?
Ответ: Вы не планируете какое количество Pomodoro вы сделаете за день. Просто работаете по этой технике и смотрите сколько получается. Статистика легко покажет когда вы более эффективны, а когда менее. Но это лишь информация для анализа.

Вопрос: А не было проблем с перерывом между помодорами, с тем что он больше 5 минут? Как это побороть?
Ответ: Перерывы иногда и получаются больше 5 минут. Например, когда вы идете решать с кем-то вопрос, говорите по телефону или участвуете в неконтролируемом митинге. Тут скорее речь о том, что как минимум 5 минут вам нужно отдохнуть перед тем как браться снова за задачу. Длина перерывов будет влиять на количество Pomodoro, которые вы успеваете сделать за день. А это позволяет вам судить о собственной эффективности и работать над ее улучшением.

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

Вопрос: Можно ли считать перерывом между помодорами проверку почты и чатов?
Ответ: Самое главное – это отдых от той работы, которую вы делали во время Pomodoro. Поэтому вид активности во время перерыва очень сильно зависит от этого. Для некоторых задач предложенный тип перерыва уместен, но стоит его сменять как можно чаще, чтобы реальный отдых все таки был.

Вопрос: Как втиснуть в «поимодры» митинги по 1 часу?
Ответ: Вопрос в том, нужно ли втискивать. Если вы знаете, что у вас есть митинг на час, то в этот день вы просто сделаете меньше Pomodoro. Это не проблема. Как раз наоборот. Вы увидите какие внешние факторы мешают вам быть максимально эффективным.

Вопрос: Что, если ви не успели закончить активити в течении одного помодоро?
Ответ: Это снова повтор вопроса, на который я отвечал выше.

Вопрос: ТМ – нужно начинать применять с верху вниз. Т.е. начиная от топ-менеджеров и заканчивая рядовыми сотрудниками. По-другому любые техники – не очень эффективны. Коллеги, что вы думаете по этому поводу?
Ответ: Техника Pomodoro является личной, а не групповой. Поэтому может внедряться кем угодно вне зависимости от уровня. Конечно, если лидер команды или компании использует технику и люди видят ее пользу, то она гораздо быстрее распространится. А в остальном реально не вижу разницы.

Вопрос: Как быть если задача очень большая и сложная, что на старте не понятно как её разбить?
Ответ: Тут сама техника приходит к вам на помощь. Запрещено оставлять задачу без оценки или оценивать ее больше 8 Pomodoro. Это заставляет вас дробить задачи и оценивать их. Я часто использую исследовательский Pomodoro, целью которого как раз и служит более детальное изучение задачи с целью разбиения на подзадачи. Это может быть несколько Pomodoro, важно ограничивать подобные активности по времени.

Вопрос: А если часть большой задачи разбивается на целый помидор и на очень маленький (5-10) мин?
Ответ: Если такое случилось пару раз, то ничего страшного. Вы просто комбинируете ее с чем-то еще и заполняете Pomodoro. Если такое случается постоянно, то вам стоит задуматься над уменьшением длины Pomodoro. Возможно у вас мелкие задачи и вам не хватает гибкости, которую дает уменьшение длины.

Вопрос: Николай, работает ли на практике pomodoro для менеджеров? Как быть с митингами, общением с людьми?
Ответ: Я думаю, что работать будет замечательно и от этого выиграет вся команда. Ведь часто некоторые менеджеры бегают и всех отвлекают по своим делам. Это выводит человека из фокуса и ему требуется время, чтобы вернуться в фокус. Иногда много времени. Получается, что менеджеры тратят время других людей понапрасну. Техника Pomodoro поможет навести порядок и даст больше информации для анализа своей продуктивности.