Union Type, TPT, DDD, ORM и RDBMS

Объединения и pattern-matching широко используются в функциональном программировании для повышения надежности и выразительности программ.


Классический пример удачного использования объединений для моделирования бизнес-процессов – корзина и состояние заказа. Пользователь в праве добавлять и убирать товары, пока не оплатил заказ. Но сама операция модификации оплаченного заказа лишена смысла. Также лишена смысла операция Remove для пустой корзины. Тогда логично вместо общего класса Cart определить интерфейс ICartState и объявить по одной реализации для каждого состояния. Более подробно данный подход изложен текстом здесь и в видео-формате вот тут.


Недавно у нас возникла задача спроектировать структуру БД для специализированной CRM/ERP. Первый подход к моделированию договоров оказался не удачным, из-за того что сторонами договоров могут выступать как физические, так и юридические лица из России и других стран мира. ИНН необходим продавцу, чтобы получить оплату, но не всегда нужен полкупателю (для идентификации личности чаще используются паспортные данные). Формат реквизитов отечественных и зарубежных юр.лиц не совпадает. Не помогало делу и то, что ИП являются физическими лицами, но «прикидываются» юридическими.


На ретроспективе мы разобрали ошибки первоначального дизайна и наметили направление рефакторинга. Всех, заинтересовавшихся нашей историей, прошу под кат.
Читать дальше →
Union Type, TPT, DDD, ORM и RDBMS
Source: habrahabr

Microsoft патентует облачную технологию родительского контроля

Microsoft получила патент на новую систему родительского контроля Real-Time Parental Monitoring, которая позволит установить рамки общения детей в сети. Виртуальный «надзиратель» будет работать на всех […]
Microsoft патентует облачную технологию родительского контроля
Source: 4pda

Цитата #443609

vvv: …Объявление, которое гласит, что Институт высшей магии и чародейства ищет
студентов-добровольцев на кафедру прикладного вампиризма.
ddd: Прикладного? Это как? Сначала прикладом бьют?
vvv: Нет, это когда ты сразу берёшь и сосёшь, и только потом тебе объясняют, что надо было сосать, как и у кого…
Цитата #443609
Source: bash

Цитата #443608

XXX: Имхо, философия — это наука объясняющая одни непонятные слова другими непонятными словами…
YYY: Да ну брось, философия это вторая пропедевтика!
XXX: Вот об этом я и говорю…
Цитата #443608
Source: bash

Цитата #443607

С чата в телеграме:
SP: Мне вчера в затылок голубь влетел, думаю это знак
Andrew S: энгрибердс
Al: Теперь мы знаем кто тут у нас свинья
Цитата #443607
Source: bash

Пост №2996047

Автор: Darth Jerrod

Развернуть { «@context»: «http://schema.org», «@type»: «BlogPosting», «mainEntityOfPage»:{ «@type»:»WebPage», «@id»:»/post/2996047″ }, «headline»: «показалось :: собака (собакен, собакены, собаки, щенки, щенок, собака, ) :: живность :: tumblr», «image»: { «@type»: «ImageObject», «url»: «http://img0.joyreactor.cc/pics/post/full/%D1%81%D0%BE%D0%B1%D0%B0%D0%BA%D0%B0-%D0%B6%D0%B8%D0%B2%D0%BD%D0%BE%D1%81%D1%82%D1%8C-%D0%BF%D0%BE%D0%BA%D0%B0%D0%B7%D0%B0%D0%BB%D0%BE%D1%81%D1%8C-tumblr-3674792.jpeg», «height»: 640, «width»: 640 }, «datePublished»: «2017-02-20T08:35:29+03:00», «dateModified»: «2017-02-20T08:35:29+03:00», «author»: { «@type»: «Person», «name»: «Darth Jerrod» }, «publisher»: { «@type»: «Organization», «name»: «JoyReactor.cc», «logo»: { «@type»: «ImageObject», «url»: «http://joyreactor.cc/images/joyreactor_ie6.png», «width»: 207, «height»: 54 } }, «description»: «» }
Комментировать 
Пост №2996047
Source: Joyreactor

Пост №2996043

Автор: VenomRebornZ

Развернуть { «@context»: «http://schema.org», «@type»: «BlogPosting», «mainEntityOfPage»:{ «@type»:»WebPage», «@id»:»/post/2996043″ }, «headline»: «Dragonking737 :: slack wyrm :: joshua-wright (slack wyrm) :: Смешные комиксы (веб-комиксы с юмором и их переводы)», «image»: { «@type»: «ImageObject», «url»: «http://img1.joyreactor.cc/pics/post/full/slack-wyrm-%D0%9A%D0%BE%D0%BC%D0%B8%D0%BA%D1%81%D1%8B-joshua-wright-Dragonking737-3674807.jpeg», «height»: 1350, «width»: 1080 }, «datePublished»: «2017-02-20T08:27:27+03:00», «dateModified»: «2017-02-20T08:27:27+03:00», «author»: { «@type»: «Person», «name»: «VenomRebornZ» }, «publisher»: { «@type»: «Organization», «name»: «JoyReactor.cc», «logo»: { «@type»: «ImageObject», «url»: «http://joyreactor.cc/images/joyreactor_ie6.png», «width»: 207, «height»: 54 } }, «description»: «» }
Комментировать 
Пост №2996043
Source: Joyreactor

Пост №2996041

Автор: Greydark

Развернуть { «@context»: «http://schema.org», «@type»: «BlogPosting», «mainEntityOfPage»:{ «@type»:»WebPage», «@id»:»/post/2996041″ }, «headline»: «синий кит :: Вк», «image»: { «@type»: «ImageObject», «url»: «http://img0.joyreactor.cc/pics/post/full/%D1%81%D0%B8%D0%BD%D0%B8%D0%B9-%D0%BA%D0%B8%D1%82-%D0%92%D0%BA-3674782.jpeg», «height»: 899, «width»: 1280 }, «datePublished»: «2017-02-20T08:16:22+03:00», «dateModified»: «2017-02-20T08:16:22+03:00», «author»: { «@type»: «Person», «name»: «Greydark» }, «publisher»: { «@type»: «Organization», «name»: «JoyReactor.cc», «logo»: { «@type»: «ImageObject», «url»: «http://joyreactor.cc/images/joyreactor_ie6.png», «width»: 207, «height»: 54 } }, «description»: «» }
Комментировать 
Пост №2996041
Source: Joyreactor

Приложение Microsoft GazeSpeak поможет людям с боковым амиотрофическим склерозом

Microsoft разработала мобильное приложение GazeSpeak, которое поможет людям, страдающим заболеванием двигательных нейронов (более известным как боковой амиотрофический склероз), общаться с помощью движений […]
Приложение Microsoft GazeSpeak поможет людям с боковым амиотрофическим склерозом
Source: 4pda