Как стать автором
Обновить

26 сентября приглашаем на оффлайн-митап HOT Backend&Web в Краснодаре

Время на прочтение 2 мин
Количество просмотров 810
PHP *Анализ и проектирование систем *Конференции Микросервисы *
Привет, Хабр! Для всех разработчиков Backend и Web, кто соскучился по живым докладам и плодотворному общению в комьюнити, мы проводим новый митап в Краснодаре — с соблюдением необходимых требований безопасности. Спикеры SimbirSoft и других IT-компаний представят несколько докладов и ответят на вопросы. Ждем 26 сентября, участие бесплатное.

Читать дальше →
Всего голосов 5: ↑4 и ↓1 +3
Комментарии 0

Fwdays'20: Node.js Middleware – никогда больше

Время на прочтение 1 мин
Количество просмотров 4.2K
Разработка веб-сайтов *JavaScript *Node.JS *Конференции
В конце сентября в онлайне прошла конференция JavaScript Fwdays'20 Autumn, на которой я сделал доклад про проблемы мидлваров. После доклада меня почти каждый день просят ссылку на видео. И вот, наконец, его выложили в открытый доступ. Доклад чуть больше часа.

Читать дальше →
Всего голосов 11: ↑7 и ↓4 +3
Комментарии 0

Drink&Talk: приглашаем разработчиков C# на встречу

Время на прочтение 1 мин
Количество просмотров 598
Блог компании Positive Technologies Программирование *.NET *C# *Карьера в IT-индустрии

Где собираются лучшие C# разработчики? На нашем митапе, который пройдет 2 февраля в Нижнем Новгороде! Встречаемся в 18:30 в баре Talk&More🍺.

На следующий день, 3 февраля, участники митапа посетят наш офис, где смогут пройти собеседование с руководителями разработки и стать частью команды!

Зарегистрироваться
Рейтинг 0
Комментарии 0

ALT.NET, Питер, Четверг, 19 марта, 19-00, Компьютерная академия SoftJoys

Время на прочтение 1 мин
Количество просмотров 880
.NET *
Не трудно догадаться, что многие разработчики стремятся к совершенствованию в своём любимом деле (разве нет?). Многие из вас постоянно слышат о новых для себя технологиях и методологиях разработки программного обеспечения, однако, не все находят время и стимул для того, чтобы ознакомиться с ними (примером тому являются методологии TDD, BDD, DDD, ORM, DSL, AOP, Design Patterns и т.д., а так же сопутствующие им инструменты).
Читать дальше →
Всего голосов 4: ↑3 и ↓1 +2
Комментарии 3

Третья встреча Петербургской группы ALT.NET

Время на прочтение 1 мин
Количество просмотров 741
.NET *
Третья встреча Петербургской группы ALT.NET, посвященная разработке под ASP.NET MVC, пройдет в четверг, 2го Апреля в 19:00.
Читать дальше →
Всего голосов 5: ↑3 и ↓2 +1
Комментарии 0

3я встреча Петербургской группы ALT.NET

Время на прочтение 1 мин
Количество просмотров 433
Я пиарюсь
2 апреля 2009 (четверг) в 19.00

Доклад на тему ASP.NET MVC

1. Краткое Введение в ASP.NET MVC
2. DDD в ASP.NET MVC
3. SharpArchitecture
4. Spark
5. Patterns

регистрация
следить за событием
Всего голосов 1: ↑0 и ↓1 -1
Комментарии 0

5я встреча Петербургской группы ALT.NET

Время на прочтение 1 мин
Количество просмотров 459
.NET *
5я встреча Петербургской группы ALT.NET пройдет в четверг, 7го Мая в 19:00.
Встречи группы проходят по адресу Биржевая Линия дом 14, офис 409 (4й этаж).
Программа 19:00 – 21:00 — Паттерны Repository и Specification.
Применение Linq2xxx (на примере Linq to NHibernate), Артем Смирнов
Читать дальше →
Всего голосов 2: ↑1 и ↓1 0
Комментарии 1

Учимся проектировать на основе предметной области (DDD: Domain Driven Design)

Время на прочтение 8 мин
Количество просмотров 210K
Java *.NET *

1. Введение



В данной статье я хотел бы рассказать об этих трёх буквах, постоянно находящихся на слуху, но для многих являющихся тайной за семью печатями, а так же привести ряд ресурсов, с которыми неплохо было бы познакомиться при желании продолжить развитие в проектировании на основе предметной области (DDD: Domain Driven Design).


Читать дальше →
Всего голосов 66: ↑54 и ↓12 +42
Комментарии 25

Вы подготовились к приходу AutoMapper?

Время на прочтение 4 мин
Количество просмотров 37K
.NET *

Введение

Данная статья предназначена к прочтению разработчикам и архитекторам распределенных систем на платформе .NET. В ней будет рассмотрен гибкий каркас для объектно-объектного преобразования (далее маппинга). Так же будут рассмотрены некоторые аспекты Domain-Driven Design’а.
Читать дальше →
Всего голосов 34: ↑23 и ↓11 +12
Комментарии 37

Введение в Rich Domain Model

Время на прочтение 5 мин
Количество просмотров 22K
Разработка веб-сайтов *
В последнее время можно услышать много аббревиатур, которые оканчиваются на DD: TDD, BDD, FDD, etc. Меня заинтересовал один из представителей «DD-семейства» — DDD, Domain Driven Development. Я не стану описывать здесь все тонкости этой методологии, ведь всю необходимую информацию можно легко найти в сети. Моя цель — рассказать о наиболее важной концепции DDD, о Rich Domain Model и на небольшом примере показать основные нюансы реализации.
Читать дальше →
Всего голосов 11: ↑8 и ↓3 +5
Комментарии 12

Донецкий кофе-и-код — дайджест и анонс

Время на прочтение 1 мин
Количество просмотров 671
Я пиарюсь
В последнее время мы не объявляли наши встречи на Хабре — навряд ли их анонс столь актуален для всего Хабра. Но вот слайды докладов и сопутствующие ссылки, быть может, многим на Хабре покажутся интересными. Поэтому делаю небольшой дайджест. Следуйте по ссылкам, если какие-то темы вызывают интерес.

Читать дальше →
Всего голосов 30: ↑25 и ↓5 +20
Комментарии 16

Николай Гребнев (CUSTIS) — Что такое DDD? — доклад с конференции ADD

Время на прочтение 16 мин
Количество просмотров 14K
Блог компании Лаборатория тестирования Анализ и проектирование систем *TDD *
Туториал
Есть такая конференция ADD (Application Developer Days) на которой любят всякие архитектурные штуки для разработки ПО обсуждать, обычно эти штуки заканчиваются тоже на xDD — DDD, TDD, MDD и т.д.

Вот к примеру на прошлой конференции задались вопросом, а что такое DDD (Domain Driven Design)?
А Николай Гребнев из CUSTIS — встал и ответил.

Видео доклада:


Читать дальше →
Всего голосов 28: ↑23 и ↓5 +18
Комментарии 10

Введение в CQRS + Event Sourcing: Часть 1. Основы

Время на прочтение 8 мин
Количество просмотров 174K
Разработка веб-сайтов *.NET *Проектирование и рефакторинг *
В первый раз я услышал о CQRS, когда устроился на новую работу. В компании, в которой работаю и по сей день, мне сразу сказали что на проекте, над которым я буду работать используется CQRS, Event Sourcing, и MongoDB в качестве базы данных. Из этого всего я слышал только о MongoDB. Попытавшись вникнуть в CQRS, я не сразу понял все тонкости данного подхода, но почему-то мне понравилась идея разделения модели взаимодействия с данными на две — read и write. Возможно потому что она как-то перекликалась с парадигмой программирования “разделение обязанностей”, возможно потому что была очень в духе DDD.

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

Сразу хочу уточнить что я работал только со связкой CQRS + Event Sourcing, и никогда не пробовал просто CQRS, так как мне кажется что без Event Sourcing он теряет очень много бенефитов. В качестве CQRS фреймворка я буду использовать наш корпоративный Paralect.Domain. Он чем-то лучше других, чем то хуже. В любом случае советую вам ознакомиться и с остальными. Я здесь упомяну только несколько фреймворков для .NET. Наиболее популярные это NCQRS, Lokad CQRS, SimpleCQRS. Так же можете посмотреть на Event Store Джонатана Оливера с поддержкой огромного количества различных баз данных.

Начнем с CQRS


Что же такое CQRS?
CQRS расшифровывается как Command Query Responsibility Segregation (разделение ответственности на команды и запросы). Это паттерн проектирования, о котором я впервые услышал от Грега Янга (Greg Young). В его основе лежит простое понятие, что вы можете использовать разные модели для обновления и чтения информации. Однако это простое понятие ведет к серьёзным последствиям в проектировании информационных систем. (с) Мартин Фаулер
Читать дальше →
Всего голосов 22: ↑20 и ↓2 +18
Комментарии 15

Введение в CQRS + Event Sourcing: Часть 2

Время на прочтение 8 мин
Количество просмотров 47K
Разработка веб-сайтов *.NET *Проектирование и рефакторинг *
В прошлой статье я начал с основ CQRS + Event Sourcing. В этот раз я предлагаю продолжить и более подробно посмотреть на ES.

В примере который я выкладывал с моей прошлой статьей магия Event Sourcing’а была скрыта за абстракцией IRepository и двумя методами IRepository.Save() и IRepository.GetById<>().
Для того чтобы поподробнее разобраться что происходит я решил рассказать о процессе сохранения и загрузки агрегата из Event Store на примере проекта Lokad IDDD Sample от Рината Абдулина. У него в аппликейшен сервисах идет прямое обращение к Event Store, без дополнительных абстракций, поэтому все выглядит очень наглядно. Application Service — это аналог CommandHandler, но который обрабатывает все комманды одного агрегата. Такой подход очень удобный и мы тоже на него в одном проекте перешли.
Читать дальше →
Всего голосов 14: ↑13 и ↓1 +12
Комментарии 39

Шаблон проектирования «Спецификация»

Время на прочтение 4 мин
Количество просмотров 58K
Анализ и проектирование систем *.NET *Проектирование и рефакторинг *
Предпринимая попытки постичь DDD вы наверняка натолкнетесь на этот паттерн, который часто тесно используется вместе с другим, не менее интересным, паттерном «Репозиторий». Этот паттерн предоставляет возможность описывать требования к бизнес-объектам, и затем использовать их (и их композиции) для фильтрации не дублируя запросы.

Пример


Давайте для примера спроектируем домен для простого группового чата: у нас будут три сущности: Группа и Пользователь, между которыми связь многие-ко-многим (один пользователь может находиться в разных группах, в группе может быть несколько пользователей) и Message представляющий собой сообщение, которое пользователь может написать в какой-либо группе:
Читать дальше →
Всего голосов 31: ↑26 и ↓5 +21
Комментарии 64

Программисты и человеческий фактор

Время на прочтение 7 мин
Количество просмотров 13K
Разработка веб-сайтов *Программирование *

Введение

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

технарь

Миф о технаре

Итак, я бросаю вызов утверждению, что программист — технарь. Не в частном смысле, а в общем. То есть, я не пытаюсь доказать, что нельзя найти программиста, который является технарем. Я утверждаю, что свойство «технарь» для программиста ни необходимо, ни достаточно.
Читать дальше →
Всего голосов 44: ↑10 и ↓34 -24
Комментарии 21

Anemic Domain Model [Перевод]

Время на прочтение 4 мин
Количество просмотров 35K
Проектирование и рефакторинг *
Из песочницы
На фоне своего увлеченного изучения DDD, я прочел статью Мартина Фаулера от 25 Ноября 2003 года Anemic Domain Model. Иногда для лучшего понимания материала я перевожу его на русский язык. Вот я и решил поделиться переводом.
Перевод авторский и местами очень смысловой.

Ссылка на оригинал.

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



Бледная Доменная Модель

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

Узнать немного о DDD
Всего голосов 13: ↑9 и ↓4 +5
Комментарии 3

Ubiquitous Language и Bounded Context в DDD

Время на прочтение 3 мин
Количество просмотров 49K
Разработка веб-сайтов *Программирование *Проектирование и рефакторинг *

Domain-Driven Design: Tackling Complexity in the Heart of Software Эванса — лучшая книга о проектировании действительно больших enterprise-приложений, что я читал. Видимо это мнение разделяют многие другие разработчики и проектировщики, потому что Entity и ValueObject, Repository и Specification встречаются почти в каждой большой кодовой базе. Но вот незадача, Ubiquitous Language (единый язык) и Bounded Context (контекст предметной области) в чужом коде я не видел ни разу. И здесь зарыта очень большая собака.
Выкапываем собаку
Всего голосов 23: ↑16 и ↓7 +9
Комментарии 41

Рентабельный код

Время на прочтение 12 мин
Количество просмотров 65K
Разработка веб-сайтов *Проектирование и рефакторинг *
Туториал


Жили-были в двух соседних деревушках Вилларибо и Виллабаджо две команды разработчиков. И те и другие делали ревью кода, писали тесты, приводили рефакторинг, но через год разработки в Вилларибо уже выпустили релиз и вышли в продакшн, а в Виллабаджо все еще проводят рефакторинг и чинят баги. В чем же дело?

Разработка ПО – область, подверженная рискам. В нашей сфере при наступлении одного или нескольких рисков, срок поставки рабочей версии может сдвинуться не на привычные и комфортные 10-20%, а на все 150-300%. И надо признаться, что это далеко не предел.

Мы можем либо скрестить пальцы и надеяться, что удача будет сопутствовать проекту во всем, либо признать, что по статистике большая часть проектов по разработке ПО «проваливается» и предпринять дополнительные усилия по ослаблению возможных рисков.
Моя практика показывает, что клиенты крайне неохотно работают по схеме T&M и чаще предпочитают Fixed Price. В условиях зафиксированной стоимости наступление рискового случая означает автоматическое снижение рентабельности проекта: сотрудники получают зарплату ежемесячно, а не за сданные проекты.

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

Почему об этом следует думать разработчику, если есть менеджер?
  1. Не секрет, что если факап случится, менеджмент примет единственное «супер-умное» решение: «давайте поработаем сверхурочно и в выходные»
  2. Премии сотрудники получают тоже обычно за в срок сданные, а не за проваленные проекты
  3. Чувство сделанного дела, в конце концов. Гораздо приятнее сдать проект во время и видеть улыбку клиента, чем с опозданием в полгода отвязаться от «трудного ребенка»

С моей точки зрения спокойная рабочая обстановка вместо авралов и бонусы – неплохая мотивация, чтобы начать заботиться об этом.
Читать дальше →
Всего голосов 76: ↑68 и ↓8 +60
Комментарии 26