Skip to content

Instantly share code, notes, and snippets.

@Rhincodon
Rhincodon / DDD Question.md
Last active November 8, 2017 10:33
Немного о DDD [перевод]

Источник

Вопрос о DDD:

Я пытаюсь учиться DDD, но я очень запутался в некоторых терминах, которые используются для описания некоторых вещей, они заставляют мой маленький мозг жариться как маленькое яйцо.

  • Что такое логика домена, слой домена, бизнес-логика, бизнес-слой, модель домена, объект домена, событие домена, эксперт по доменам, ядро домена?
  • Как обнаружить всё это в моём коде?
  • Laravel сделан над этими DDD понятиями? (я часто вижу такие вещи как сервисы, репозитории и др)
  • Где я могу научиться DDD очень простым способом? (Я имею ввиду реально очень простым способом)
@Rhincodon
Rhincodon / repository-pattern.md
Last active January 10, 2016 02:25
Паттерн Репозиторий

Источник

«Репозиторий обычно используется как хранилище данных, часто для обеспечения безопасности или сохранности» — Википедия.

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

Репозиторий как коллекция

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

@Rhincodon
Rhincodon / ddd.md
Created March 5, 2015 18:06
DDD [Перевод]

Источник

Вопрос

Привет, Jeffrey.

Было бы здорово если бы вы сделали скринкаст по DDD. Я уже начал изучать и читать о DDD, но это кажется мне трудным и сложным для понимания. Я верю что вы можете помочь нам лучше понять DDD.

Спасибо.

Ответ

@Rhincodon
Rhincodon / ddd-structure.md
Last active January 15, 2017 11:52
Структура приложения и пространств имён при DDD

Источник

Вопрос

Как лучше организовать структуру моего приложения используя DDD и Laravel 4 или 5?

Ответ

Я обычно разделяю большие приложения на 4-5 пространств имён, которые привязаны к глобальному app пространству имён. Например, я хочу создать приложение ToDo List, так что базовое пространство имён будет ToDo.

@Rhincodon
Rhincodon / ddd-Quickly-Intro.md
Last active November 29, 2015 20:30
DDD Quickly. Вступление.

Источник:Вступление

Вступление

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

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

Разработка ПО — это искусство, и как любое искусство, оно не может быть изучено и освоено с помо

@Rhincodon
Rhincodon / eloquent-tricks.md
Last active January 10, 2016 02:20
Трюки Eloquent для лучших репозиториев

Источник

Трюки Eloquent для лучших репозиториев

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

В типичном приложении вы, вероятно, имеете множество Репозиториев для работы с вашей системой хранения. Когда вы используете Laravel, вы проводите много времени работая с Eloquent. Тем не менее, поверьте мне, когда у вас есть множество Репозиториев, вам быстро надоедает многократно писать одни и те же методы для доступа к данным.

В этом руководстве я хочу рассмотреть некоторые паттерны для абстракции основных методов, которые вы больше не будете повторять в каждой реализации ваших Репозиториев. Я также покажу, как мы можем использовать гибкость Eloquent и его Query Builder для написания действител

@Rhincodon
Rhincodon / repository-advantages.md
Last active January 10, 2016 02:05
Преимущества использования Репозиториев

[Источник] (http://culttt.com/2014/09/08/benefits-using-repositories)

В чём преимущества использования Репозиториев

Что такое репозитории?

Если вы читали мои предыдущие посты, то вы, наверное, уже знаете, что из себя представляют репозитории.

Но понимаете ли вы, что является причинами для использования Репозиториев? Хотя для некоторых причины использования паттерна очевидны, я думаю, многие люди всё ещё ищут их.

If you have two days to learn the very basics of modelling, Domain-Driven Design, CQRS and Event Sourcing, here's what you should do:

In the evenings read the [Domain-Driven Design Quickly Minibook]{http://www.infoq.com/minibooks/domain-driven-design-quickly}. During the day watch following great videos (in this order):

  1. Eric Evans' [What I've learned about DDD since the book]{http://www.infoq.com/presentations/ddd-eric-evans}
  2. Eric Evans' [Strategic Design - Responsibility Traps]{http://www.infoq.com/presentations/design-strategic-eric-evans}
  3. Udi Dahan's [Avoid a Failed SOA: Business & Autonomous Components to the Rescue]{http://www.infoq.com/presentations/SOA-Business-Autonomous-Components}
  4. Udi Dahan's [Command-Query Responsibility Segregation]{http://www.infoq.com/presentations/Command-Query-Responsibility-Segregation}
  5. Greg Young's [Unshackle Your Domain]{http://www.infoq.com/presentations/greg-young-unshackle-qcon08}
  6. Eric Evans' [Acknowledging CAP at the Root -- in the Domain Model]{ht
// Get the queryString module from:
// https://github.com/sindresorhus/query-string
console.log(location.href);
// http://sindresorhus.com/?foo=bar
console.log(location.search);
// ?foo=bar
var parsed = queryString.parse(location.search);
<?
if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true) die();
if(!is_array($arParams["GROUP_PERMISSIONS"]))
$arParams["GROUP_PERMISSIONS"] = array(1);
if(empty($arParams["SITE_LIST"]))
$arParams["SITE_LIST"] = "";
$arParams["USE_ZIP"] = $arParams["USE_ZIP"]!="N";
$arParams["EXPORT_PAYED_ORDERS"] = (($arParams["EXPORT_PAYED_ORDERS"]=="Y")?true:false);