
Pavel
20.07.2018
08:21:41
А уже сделали новую систему 2018+, при этом некоторые клиенты хотят работать на старых и все три надо обязательно поддерживать.

Stepanos
20.07.2018
08:27:19

Pavel
20.07.2018
08:32:49
Тогда стори будут в 2 раза дольше делаться

Ievgenii
20.07.2018
08:32:58

Google

Pavel
20.07.2018
08:33:05
Да и тесты там такие что тоже хрен поймешь. Тесты тоже надо документировать

Stepanos
20.07.2018
08:33:53
:) оу, тестьі и есть лучшая документация... Я в D либки как раз по тестам начинаю вникать

Pavel
20.07.2018
08:34:11
Вот на среднем проекте у нас все было очень хорошо с девопсом, хорошее покрытие, тесты юнитовые, функциональные, немного приемочных, на каждый коммит прогон тестов. Но и там было малореально что-то понять стороннему человеку.

Stepanos
20.07.2018
08:35:09
> Но и там было малореально что-то понять стороннему человеку.
:) то есть не программисту?

Pavel
20.07.2018
08:35:19
Программисту тоже

Stepanos
20.07.2018
08:35:31
что вьі там пишете такое масштабное?

Pavel
20.07.2018
08:38:29
Оно настолько непонятное что не описать в одном абзаце )

Dark
20.07.2018
08:40:15
Не удивительно, что код сторонний человек не прочитает

Pavel
20.07.2018
08:42:22
В общем результат то на самом деле простой. Мы генерим pdf документы которые выглядят приблизительно так http://www.labchem.com/tools/msds/msds/LC26750.pdf
В базе есть тысячи компонентов из которых делаются товары/продукты, также в базе лежат тысячи продуктов от разных компаний. Каждый компонент в продукте может иметь разные физико-химические свойства, выжигать глаза, отравлять среду и т.д. Есть международные стандарты на то как описывать такие продукты. Называется MSDS, OSHA и т.д. Есть десятки шаблонов PDF документов, которые могут быть на десятках языков. Мы генерим описание компонентов продукта во всех этих комбинациях.
У компонентов есть разные категории, классификации, ярлычки и т.д. которые навешиваются в документ по определенным правилам.
Примерно так выглядит граф принятия решений на одном из пяти шагов визарда создания продукта. На скрине две ветви из четырех.

Google

Pavel
20.07.2018
08:48:32
Там десятки классов, констант всяких. Даже если все это покрыть тестами то любой прогер все равно хрен поймет какой во всем этом смысл и что вообще происходит.

Dark
20.07.2018
08:49:02
Конечно, не поймет
Это же узкоспециализированный продукт

Pavel
20.07.2018
08:50:08
Ага, у нас есть несколько слоев аналитиков и менеджеров, которые нам говорят - "пойди вот туда и добавь такую то опцию в 16 секцию для Канады на французском и китайском языке" Мы просто это имплементируем.

Denis
20.07.2018
08:50:19

Pavel
20.07.2018
08:50:42
Новая на C#+angular, и тут вроде как бы Entity Framework

Denis
20.07.2018
08:50:59
То что вот вы описали делается обычными средствами за месяц
а если на ORM то года за 3
:)

Pavel
20.07.2018
08:51:26

Denis
20.07.2018
08:51:33
Зачем?

Pavel
20.07.2018
08:51:38
Ну затем, так сказали.

Denis
20.07.2018
08:51:43
Понятно

Pavel
20.07.2018
08:51:50
То есть автор может захотеть откатить содержимое компонентов документа на полгода назад.

Denis
20.07.2018
08:51:52
Надо миграции для БД, а версионировать не надо

Pavel
20.07.2018
08:52:06

Denis
20.07.2018
08:52:24

Pavel
20.07.2018
08:52:29
Правки в компонентах и документах вносятся слоями через ревизии, у каждой правки есть ответственные авторы.

Denis
20.07.2018
08:52:35

Google

Pavel
20.07.2018
08:52:57
Ну для схем мы юзали миграции и было нормально, однако это меньшая из проблем.

Stepanos
20.07.2018
08:56:16
а реализованьі алгоритмьі принятия решений на скриптовом язьіке?

Pavel
20.07.2018
08:59:27
На TypeScript
на стороне ангуляра
Ну еще этот граф дублируется в бекенде на C# конечно, потом он сериализуется и отправляется клиенту на фронт чтобы тот смог по шагам спрашивать вопросы

Ievgenii
20.07.2018
09:01:06
Нужно только захотеть.

Pavel
20.07.2018
09:01:28
Я за год где-то въехал.

Ievgenii
20.07.2018
09:01:30
НО! Тестов нет)))
У нас стадо тестировщиков)))

Pavel
20.07.2018
09:02:46

Ievgenii
20.07.2018
09:03:23

Ievgenii
20.07.2018
09:03:33
И последний раз ну ОЧЕНЬ сильно разнесли на модули
И в системе сейчас дохренищя моделуй с интерфейсами
И все что ты можешь накосячить сводится только к одному модулю
Ну или саб-модулю
На счет каких-то "законов", у нас их нет. Есть свод правил. которым нужно следовать и будет все хорошо
Вот для примера, сколько миграций за последние 2 года
Остальные были почищенны... Уж сильно больно на них смотреть)))

Google

Ievgenii
20.07.2018
09:08:31
Это еще впадло пулиться))))

Denis
20.07.2018
09:10:36
https://habr.com/post/417629/#comment_18901655 про дельфи мысль

Ievgenii
20.07.2018
09:16:57

Denis
20.07.2018
09:17:29
и как он вам?

Ievgenii
20.07.2018
09:17:33
Кто?

Denis
20.07.2018
09:17:35
чую, скоро мы тоже придём к миграциям
движок миграционный

Admin
ERROR: S client not available

Ievgenii
20.07.2018
09:17:44
Та норм
Что от него там нужно)))
В микросервисах сами написали
Там не так уж и сложно его сделать самому
Если нужно, конечно

Pavel
20.07.2018
09:18:58
По сути миграции это довольно примитивный механизм - пишешь 2 скрипта - один накатывает миграцию, другой откатывает. И тулза миграций просто следит какая миграция была выполнена а какая нет.
А вот если начинаются фичи сравнения схем БД и прочее, это уже гораздо жестче конечно

Stepanos
20.07.2018
09:19:31
а что используете? liqubase?

Pavel
20.07.2018
09:20:01
симфониевские миграции пляшут от ORM - сначала описываешь таблицы в виде классов, а по ним уже сравнивается схема и генерятся тексты sql запросов.

Oleg
20.07.2018
09:22:52
@chebotarevp а чем pdf-ки генерите?

Google

Pavel
20.07.2018
09:23:20
https://github.com/mpdf/mpdf

Evil
20.07.2018
10:48:32
Можно еще Aspose
https://www.aspose.com
Но он платный
pandoc.org
Идеально

Oleg
20.07.2018
11:44:01
про pandoc слышал
кстати, никто не сталкивался с необходимостью scp из кода вызвать?
есть ли может либа какая?
чтобы кроссплатформенно было

Pavel
20.07.2018
11:51:35
Я видел есть либа на си для работы с ssh и к ней D-биндинги

Filio
20.07.2018
12:26:18

Ievgenii
20.07.2018
13:22:48
)))

Maxim
20.07.2018
13:56:55
Ну так это же хорошо, что в D относительно лего делать C-биндинги)

Pavel
20.07.2018
14:08:35
Мне думается что не очень
Получается, для тех кто не знает си, вроде библиотека и на D написана, а в то же время подправить и развивать ее нельзя. Какой-то мутант.

Stepanos
20.07.2018
16:35:15
вайб уже собирается последним компилятором?

Denis
20.07.2018
16:38:36

Stepanos
20.07.2018
16:38:49
dmd

Pavel
20.07.2018
18:07:50

Ievgenii
20.07.2018
18:36:03