Ласкаво просимо до dev.net.ua Увійти | Приєднатися | Допомога | Увійти Live ID
в Пошук

Александр Кондуфоров

  • Слайдкаст по принципам проектирования

    При помощи PowerPoint'а, пары программ по редактированию и конвертации звука и такой-то матери я наконец-то слепил свой первый слайдкаст и выложил его на Slideshare. Это слайдкаст с недавнего доклада по принципам проектирования и длится он аж три четверти часа, что сильно уменьшает его шансы быть прослушанным вами :). Вопросы-ответы в середине и конце пришлось выкинуть, т.к. вопросов не слышно - микрофон был только у меня.

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

    Смотреть слайдкаст...

  • Архитектура по Фаулеру

    Пару дней назад наткнулся на статью Фаулера "Кому нужен архитектор?" ("Who Needs an Architect?"). Ей уже сто лет в обед, но я ее первый раз вижу.

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

    "Whether something is part of the architecture is entirely based on whether the developers think it is important. People who build “enterprise applications” tend to think that persistence is crucial. When they start to draw their architecture, they start with three layers. They will mention “and we use Oracle for our database and have our own persistence layer to map objects onto it.” But a medical imaging application might include Oracle without it being considered part of the architecture. That is because most of the complication is in analyzing the images, not in storing them. Fetching and storing images is done by one little part of the application and most of the developers ignore it."

    Читать полностью...
  • Качественный код и проектирование

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

    Под внутренним качеством подразумевается не качество самого приложения (внешнее качество), то есть отсутствие ошибок, соответствие требованиям, простоту использования и т.д., а качество кода этого самого приложения.

    Свойства качественного кода

    Какими же свойствами обладает качественный код:

    • расширяемость, гибкость (extensibility, agility)
    • ремонтопригодность (maintainability)
    • простота (simplicity)
    • читабельность, понятность (readability, clarity)
    • тестируемость (testability)

    Конечно, это не все полезные свойства, которыми может обладать код, но мы пока остановимся на этих. Эти свойства без преувеличения можно назвать ценностями кода, потому что код, ими обладающий, является по-настоящему ценным :)

    Читать полностью...

  • Быстрый взгляд на NDC 2009

    В начале июня в Норвегии прошла Norwegian Developers Conference 2009 (NDC). И по-моему, прошла достаточно незаметно для многих из нас. Вместе с тем, список докладчиков и темы докладов были на очень высоком уровне, поэтому нужно срочно исправлять положение.

    Просто для примера, докладчики (те, что у меня на слуху):

    • Robert C. Martin
    • Ayende Rahien
    • Scott Hanselman
    • Ted Neward
    • Phil Haack
    • Jeremy D. Miller
    • Tim Huckaby
    • Rockford Lhotka
    • Roy Osherove
    • Glenn Block
    • Scott Bellware
    • и многие другие
    Читать полностью...
  • Новые возможности LINQ to SQL в .NET 4.0

    Вдогонку к моей предыдущей заметке предлагаю посмотреть список новых возможностей LINQ to SQL в .NET 4.0. Переводить не буду, просто дам ссылку на заметку Damien Guard из Microsoft, который работает над этим продуктом:

    LINQ to SQL changes in .NET 4.0

    Приятно, что L2S тоже развивается, пусть и не такими семимильными шагами как EF, NH и некоторые другие ORM. Я уже когда-то писал на тему развития этих технологий, а именно почему EF больше повезло в плане развития (и, соответственно, финансирования). По всей видимости, L2S будет тихим сапом поддерживаться и понемногу развиваться еще пару версий, а потом просто остановится, когда EF станет достаточно взрослым, продвинутым и быстрым, чтобы удовлетворить требования разработчиков, использующих L2S вместо EF или NH.

    Оригинал заметки для комментирования

  • Entity Framework 4.0: выходим на зрелый уровень

    Я уже полгода не работаю с Entity Framework, но по былой памяти интерес все равно сохраняется. Как-то совсем упустил из виду, что вместе с выходом Visual Studio 2010 Beta 1 вышла и первая бета Entity Framework 4.0. Более того, спустя месяц ADO.NET team выпустил еще и Entity Framework 4.0 Feature CTP 1 (скачать можно здесь). В CTP 1 вошли еще три новые фичи, которые не успели довести до выхода VS 2010 Beta 1: Self Tracking Entities (о которых я уже немного рассказывал), POCO Template и Code Only.

    Что это значит? Это значит, что в релизной версии 2010-й студии в составе .NET 4.0 этих фич тоже не будет. Daniel Simmons в подкасте .NET Rocks #451 как-то достаточно неясно сказал, что они вроде бы войдут в какой-то следующий релиз после VS 2010, хотя сам EFv4 будет релизиться вместе со студией. Ну, да это не так важно.

    А важно вот что: в следующей версии EF разработчики проделали достаточно серьезную работу. Они действительно учли многие комментарии и критику, которые обрушились на первую версию EF, поэтому вторая версия EF с физическим номером 4.0 (Microsoft снова извратила нумерацию с целью упростить жизнь своим sales) будет ощутимо солиднее. Что же мы получим в новой версии:

    Читать полностью...

  • Ошибки технических менеджеров проектов

    В своей прошлой заметке я немного упомянул проблему перехода с технической карьерной лестницы на менеджерскую. Этот переход не так прост, как кажется многим техническим лидам. Очень часто он воспринимается просто как добавление новых обязанностей по общению с заказчиком, принятию каких-то проектных решений, а также как дополнительная ответственность. В том, что управление проектами - это абсолютно другая область знаний и навыков, которую необходимо изучать, отдают себе отчет не все. Как минимум, до первого заваленного проекта :)

    Об общих ошибках управления проектами написано уже очень много, поэтому я не хотел бы повторяться. Об этом можно почитать здесь, здесь, а также в куче других мест - достаточно лишь погуглить по ключевым словам. Я же хотел бы остановиться на некоторых ошибках, которые свойственны именно бывшим техническим лидам, ставшим менеджерами проектов или начинающим выполнять эту роль в дополнение ко своим текущим обязанностям. Причем говорить я буду о бывших программистах, а не о QA, BA или ком-то другом, потому что:

    • я на практике сталкивался в основном с PM, которые в прошлом были программистами, а не QA или BA - банально нет подобного опыта, поэтому мало о чем могу сказать
    • на мой взгляд, PM из бывших QA и BA не будут совершать часть из перечисленных ниже ошибок, просто по тому что они специфичны для программистов
    • я сам - программист, поэтому мне проще основываться еще и на своем личном опыте и своих ошибках :)
    Читать полностью...
  • Должен ли PM быть техническим специалистом?

    Я уже не первый раз сталкиваюсь с вопросом, должен ли PM быть технически подкованным человеком или нет. Иными словами, должен ли у него быть опыт работы программистом или QA, для того, чтобы успешно вести проекты, связанные с разработкой ПО. И собственно, вопрос здесь даже не в том, возможно это или нет - опыт показывает, что есть нетехнические PM, которые с разной степенью успешности ведут проекты. Но в то же время тот же опыт показывает, что а) таких людей довольно мало, б) им иногда бывает сложнее, в) общественное мнение в лице различных IT-специалистов иногда отрицает эффективность такого PM. Столкнувшись с этим вопросом, я решил провести небольшой опрос среди моих друзей и сотрудников (бывших и нынешних). Выборка была порядка 20 человек (знаю, нерепрезентативная, но я и не старался делать соцопрос, скорее, получить дополнительную пищу для размышлений), люди абсолютно разного уровня и позиций: программисты, QA, BA, девлиды/тимлиды различного плана, и несколько ребят, которые так или иначе выполняют функции PM на своих проектах или ими являются. Задавал я, как правило, один и тот же вопрос, в краткой форме приведенный в заголовке данной заметки, а потом, по ходу дела, спрашивал детальнее, уточнял подробности, иногда дискутировал :) Ответы были разными, некоторые совпадали с моим мнением, некоторые - нет. Но в любом случае, я благодарен всем, кто согласился ответить на эти вопросы, в независимости от точки зрения, т.к. вы помогли мне увидеть бОльшую картину, чем была у меня в голове до опроса. Все-таки опыт у разных людей разный, поэтому одна голова - хорошо, а двадцать лучше. Также я немного потерроризировал гугл, а также сайты вроде www.stackoverflow.com, www.rsdn.ru и прочие уважаемые ресурсы.

    Читать полностью...

  • Список интересных подкастов: выпуск #2

    Где-то 3 месяца назад я написал первый выпуск списка интересных подкастов. Время идет, новые подкасты появляются и прослушиваются. Подошло время второго выпуска, надеюсь, вам понравится:

    В гостях у Карла и Ричарда человек, который не нуждается в особом представлении: Дино Эспозито. Дино рассказывает о том, чем занимается в данный момент времени, об архитектуре веб-приложений (и не только), сравнивает ASP.NET и ASP.NET MVC, а также немного проходится по другим веб-технологиям и библиотекам: AJAX, jQuery, Silverlight. Хороший подкаст для тех, кто хочет немного расширить свой кругозор и, возможно, узнать что-то новенькое.

    Читать полностью...

  • NHibernate – где узнать больше?

    Я вот довольно много пишу про Entity Framework и LINQ to SQL, но мало про другие ORM, особенно про NHibernate. Исправляюсь.

    Ни для кого ни секрет, что несмотря на то, что NHibernate – это очень мощный ORM, он достаточно сложен в освоении. Как модно сейчас говорить, у него слишком крутая кривая обучения (learning curve), на которую многим тяжело забраться, особенно в условиях сжатых сроков и рисков. И несмотря на то, что у наших друзей из java-community O/R Mappers в целом, и Hibernate в частности пользуются популярностью уже давно, бОльшая часть .NET-программистов не пользовались этим продуктом, а многие даже и не знали о нем до выхода аналогов от Microsoft: LINQ to SQL и Entity Framework. К сожалению, .NET-сообщество программистов слишком часто не обращает внимания на то, что исходит не от Microsoft, или не доверяет этому, поэтому до недавнего времени NHibernate был интересен лишь очень небольшому проценту посвященных.

    К слову, во многом это именно наша локальная проблема. В других странах существует так называемое ALT.NET-сообщество (в основном, опенсорсной направленности), которые проводят свои конференции и встречи, обсуждая на них альтернативные инструменты и подходы к разработке приложений, отличающиеся от инструментов и подходов Microsoft, тем самым рекламируя их и продвигая. Многие из лидеров этого сообщества выступают с критикой продуктов от Microsoft, являясь по своей сути оппозицией в терминах, понятных нашей стране :) К слову сказать, благодаря этой “оппозиции” мы имеем достаточно серьезное движение Microsoft навстречу сообществу, более серьезное внимание к нуждам программистов, открытые исходные коды и целые проекты, идущие по open-source лицензиям.

    Читать полностью...

  • Список интересных подкастов: выпуск #1

    Недавно прослушал несколько интересных подкастов. Хотел бы поделиться некоторыми наиболее интересными на мой взгляд:

    Carl, Richard и Ward Bell обсуждают вопросы использования ORM в целом и Entity Framework в частности. Послушав этот подкаст, вы узнаете какие проблемы есть у Entity Framework v1.0 (дизайнер, POCO, etc.), еще раз про ситуацию с LINQ to SQL и Entity Framework, о которой я уже писал, почему NHibernate, несмотря на свои функциональные преимущества, не очень популярен в широких кругах программистов, когда стоит использовать ORM, когда не стоит, а также какие есть проблемы разработки RIA приложений, в частности проблема единственности модели данных, когда и на сервере, и на клиенте приходится делать одинаковую модель, чем тут может быть полезен DevForce .NET Silverlight-разработчикам (хотя после выхода RIA Services часть проблемы с моделью вроде бы как уходит).

    Читать полностью...

  • ASP.NET MVC: такие разные модели

    Как известно, ASP.NET MVC основан на паттерне Model-View-Controller. Первым компонентом этого паттерна является модель, которую я бы и хотел рассмотреть сегодня поподробнее.

    Модель - это самый абстрактный компонент шаблона MVC. Моделью может быть все, что угодно, что не является контроллером и представлением :) На самом деле, модель - это то, что мы привыкли называть данными, и бизнес-логика, которая работает с этими данными, состояниями приложения и т.д. То есть, в терминах 3-звенной архитектуры, моделью можно назвать вашу бизнес-логику и все то, что лежит ниже ее, то есть слой доступа к данным и сами эти данные. А в терминах DDD моделью, наверно, можно назвать слой ваших сервисов и все, что под ним: репозитории, инфраструктуру и т.д. Причем данные эти могут находится абсолютно где угодно, а не только в базе данных: где-то на веб-сервисах, в файловой системе, распределенном кеше или даже в конфигурационном файле.

    В ASP.NET MVC же модель - это несколько более широкое понятие, так как различных моделей в ASP.NET MVC не одна, а целых две. То, что мы рассмотрели выше, называется моделью предметной области, или доменной моделью (Domain Model). Однако есть еще одна модель - т.н. модель представления (View Model). Что же это такое?

    Читать дальше...

  • Entity Framework vNext: сущности, сами отслеживающие свои изменения

    Команда ADO.NET продолжает свой эксперимент по публичному проектированию следующей версии Entity Framework. Надо сказать, что результаты пока что весьма спорны: с одной стороны, они действительно публикуют все идеи и предлагают их обсуждать, с другой - очень часто возникает впечатление, что все решения уже приняты, и максимум, на что можно рассчитывать - это какие-то незначительные изменения в деталях.

    Вот, например, одно из последних нововведений - это концепция сущности, которая сама отслеживает свои изменения. Я поначалу не до конца понял идею и до середины статьи думал, что ADO.NET team решил реализовать сделать свою версию Castle ActiveRecord, воспользовавшись одноименным паттерном. Однако потом я-таки въехал в идею - никакого Active Record там нет. Смысл в том, что теперь у разработчиков появится возможность сгенерировать достаточно "умные" сущности (при помощи T4), которые будут сами отслеживать свое состояние и фиксировать изменения. Сохранять изменения в таких сущностях вы сможете просто вызвав метод ApplyChanges у ObjectContext, которому вы можете передать подобный объект (да, наверно, и коллекцию). Кроме того, если вы просто создадите эту сущность, она будет жить с состоянием Added до тех пор, пока кто-то не решит записать ее в базу. Фактически, теперь вы можете создать сущность при помощи одного контекста, а потом сохранить при помощи другого, то есть сущность становится намного более независимой от контекста, который ее породил. В статье подобная сущность даже называется POCO-объектом, хотя все-таки до true POCO там еще далеко.

    Читать полностью...

  • Материалы доклада по ASP.NET MVC

    Как я и обещал, выкладываю материалы доклада по ASP.NET MVC, который я делал в прошедшую пятницу, 20 марта, на очередной встрече UNETA в Харькове.

    Презентация:

    Читать полностью...

  • ASP.NET MVC 1.0 released

    Я еще не нашел официального подтверждения, но на Microsoft Downloads он уже висит:

    http://www.microsoft.com/downloads/details.aspx?FamilyID=53289097-73ce-43bf-b6a6-35e00103cb4b&displaylang=en

    Думаю, в ближайшее время об этом будет официально объявлено на MIX'09 :)

    Вдобавок хотел бы напомнить, что в эту пятницу, 20 марта, я буду делать доклад по ASP.NET MVC на харьковской UNETA. Какое приятное совпадение, правда? :) Так что с одной стороны поздравляю всех, что ЭТО произошло, а с другой приглашаю на нашу встречу. С учетом того, что второй доклад будет по Silverlight, а докладчиками будут Сергей Лутай и Андрей Каща, уверен, что будет очень интересно.

    Приходите.

    А здесь можно оставить комментарии, если есть желание.

Більше повідомлень Наступна сторінка »