
Sergey
19.01.2018
18:16:43
особенно сложно соблюдать баланс между "и бизнесу хорошо и проект не в говне"
надо учиться приоритизировать, анализировать риски, принимать риски...

Батманов
19.01.2018
18:17:47
А будет ли полезен такой опыт? )

Sergey
19.01.2018
18:18:04
да, ты не можешь научиться делать хорошо не испытав проблем "когда делали плохо"

Google

Sergey
19.01.2018
18:18:30
ну то есть... намного быстрее наступить на грабли оставленные перед тобой, нежели еще и тратить время на расставление своих граблей)
но опять же - что бы был профит - надо учиться анализировать ситуацию и все такое что нифига не просто
другой вопрос что сам проект и его специфику надо учитывать

Батманов
19.01.2018
18:20:46
А задавать всю конфигу в константах это норм?)

Sergey
19.01.2018
18:20:51
ну то есть если владельцам пофигу, и пользователям пофигу... то .... ну и еще есть теория разбитых окон которая еще усугубляет
начни с простого - посмотри че там как, потом уже думай норм или нет. Оно же работает
дальше смотри что тебе неудобно
и не смотреть неудобно а работать с этим
например - не стоит сразу впиливать ларавели или симфони - можно заюзать отдельные компоненты
так же не стоит сразу лепить DI - можно начать с сервис локаторов
ну и тесты....
и не юниты а e2e

Google

Sergey
19.01.2018
18:23:08
ну то есть когда ты работаешь с легаси надо прорабатывать цели и план как этой цели достич... а это сложна

Батманов
19.01.2018
18:24:50
Боюсь что в таких проектах в основном занимаются затычкой проблем, если до сих пор никаких серьезных шагов про структуре не было сделано. Вот это меня пугает)

Sergey
19.01.2018
18:27:10

Батманов
19.01.2018
18:31:33

Artem
19.01.2018
18:58:17
вопрос
меня есть функция get
get_groups*
в ней я делаю запрос к бд
как мне в другом файле вывести эти значения?

Sergey
19.01.2018
19:10:20


Nurik
19.01.2018
19:31:23
Не удержался))
Боюсь что в таких проектах в основном занимаются затычкой проблем, если до сих пор никаких серьезных шагов про структуре не было сделано. Вот это меня пугает)
Есть много факторов. Если ты сможешь приподнести руководству, то что изменения в структуре, повлекут за собой, существенное сокращение времени в дальнейшем, при добавлении другого фуникцонала, при условии, что проект будет еще долго жить, и если при этом всё будет понято, то в этом случае, можно начинать что-то делать. Если же всем и на всё пофиг, то ты можешь создать чисто для себя поле для экспериментов, где будешь решать те или иные проблемы, постепенно переписывая кодовую базу. Подними локально проект и экспериментируй. Это крутой опыт.
Мне кажется, у каждого должен быть такой "франкенштейн", чтобы потом можно было на любой говнокод смотреть, не с позиции плющегося, а с позиции, человека, который знает, как можно это улучшить. Потому что платят по большому счету, за траблшутинг.


Егор
20.01.2018
09:17:20
Тут кто-то практикует переиспользование правил валидации для бекенда и фронта? Используете ли json-schema? Изоморф не предлагать, бекенд на PHP, фронт на любом популярном JS фреймворке, интересуют любые мнения.

Bohdan
20.01.2018
09:21:22
я, пытаюсь
на беке ещё не сделал, фронт уже готов

Егор
20.01.2018
09:25:00
а как правила валидации решил делать общими между беком и фронтом?

Sergey
20.01.2018
09:25:03

Google

Sergey
20.01.2018
09:26:25
когда у тебя форма на UI мэпится на запрос 1:1

Andrew
20.01.2018
09:26:30
formapro/JsFormValidatorBundle: The Javascript validation for Symfony 2 and 3 forms
https://github.com/formapro/JsFormValidatorBundle

Егор
20.01.2018
09:26:32
А нужны как раз сложные случаи, с использованием anyOf и oneOf из json-schema: https://spacetelescope.github.io/understanding-json-schema/reference/combining.html#anyof

Sergey
20.01.2018
09:26:52

Bohdan
20.01.2018
09:27:05

Sergey
20.01.2018
09:27:12

Bohdan
20.01.2018
09:27:19
я для себя решил по ним проверять только простые штуки

Oleksii
20.01.2018
11:56:58
Ув. Народ. Недавно узнал про тригеры в СУБД. И подумал, если сделать обновление timestamps через них а не в коде. Как думаете, это целесообразно для проекта где записываются в базу много данных?

Valeriy
20.01.2018
11:57:15
может дедлочить

Sergey
20.01.2018
11:58:08
шутки ради можешь замутить тестовый стэнд и проверить "есть ли выхлоп".
спойлер - его не будет

Oleksii
20.01.2018
11:59:06
Хаха хаха. Спасибо) я понял

M
20.01.2018
11:59:56
Привет, подскажите как реализуется задача:
Есть некоторый поток данных, например возмем котировки с биржи, есть пользователи, которых нужно уведомить(либо сделать какое-то другое действие) при выполнении какого-либо условия по цене актива.

Maksim
20.01.2018
12:16:43
а что особенного в задаче? чёт не понятно...
слушаешь "некоторый" поток данных, рассылаешь команды/эвенты в зависимости от требуемого действия... нипанимать в общем в чём проблема :)
явно из-за таких биржестроителей я вчера на риплах 5 сотен потерял)

Sergey
20.01.2018
12:20:16
или что?

M
20.01.2018
12:22:01
Допустим подписка на 1000 событий с различными условиями, на каждый тик проверять эти 1000 подписок имхо тяжко, их нужно в памяти хранить, а чтобы если упадёт система, то можно было состояние восстановить из хранилища.

Google

M
20.01.2018
12:23:29
Думал может есть что-то уже готовое в плане алгоритма, чем просто держать в памяти все подписки и проверять на каждый тик весь массив

Sergey
20.01.2018
12:26:09
cqrs + event sourcing

Maksim
20.01.2018
12:26:30
о побольше команд басами обмазаться :)

Sergey
20.01.2018
12:26:30
идеально подойдет
пришел ивент - чето произошло - ты его сначала записал в лог, потом наложил на стэйт, стэйт в памяти.
периодически можно дампить снэпшеты стэйта (раз в час например или раз в 10 минут, смотря насколько нормально ты сможешь сделать стабильный демон))
если упало - поднимаешь со снэпшета и накладываешь ивенты из лога
большую часть времени у тебя все будет быстро

Admin
ERROR: S client not available

Bohdan
20.01.2018
12:28:40
и снепшоты должны уже складываться в базу?

Sergey
20.01.2018
12:28:45

Maksim
20.01.2018
12:28:57

Sergey
20.01.2018
12:29:15
ну то есть... снэпшет это тупо сериализованный стэйт
хоть json encode делай и пиши в файл
у тебя всеравно есть возможность по логу ивентов полностью стэйт восстановить
еще один вариант - держать 2 инстанса приложения
одну резервную которая тупо стэйт пилит
если одно упало - второе берет на себя управление пока первое восстанавливается
тогда снэпшеты можно будет реже делать

Google

Sergey
20.01.2018
12:31:58
что позитивно скажется на производительности
только тут надо по другому чуть делать - с сокета тебе будет команда приходить а система уже будет генерить ивенты новые
ну и в общем... все зависит от того как сделаешь, но схема рабочая, причем именно для таких штук собственно ее часто и юзают
типа микротрейдинга
за счет того что стэйт в оперативке лежит, нет смысла паралелить. А это значит сама система будет проще
ну и никаких ORM не надо
никаких там баз данных
разве что для стрима событий
но тут касандру можно жахнуть и вперед
запись/чтение будут преимущественно последовательными а значит максимально быстро

M
20.01.2018
13:23:05
Я не осилил понять с наскоку cqrs + event sourcing и как именно он будет применён в текущей задачи... Я нуб, у меня лапки.

Sergey
20.01.2018
13:28:33
короч, я в целом идею тебе указал. Она довольно гибкая и в целом идеально вписывается в задачу. А дальше уже сам.
ибо дальше надо слишком сильно углубляться в то что тебе надо сделать
а это по сути делать за тебя

M
20.01.2018
14:35:29
Да, спасибо за наводку, но без понимания CQRS + Event sourcing вряд ли получится запилить конфетку.
Попробую сделать попроще, хранить состояние в БД, при загрузке приложения ложить всё в память и прогонять массив проверяя выполнения условия. Сразу вижу, что вероятно упрусь в производительность, но все же попробую.

Maksim
20.01.2018
14:47:40
ну это вряд ли можно назвать попроще

Bohdan
20.01.2018
15:00:56
просто cqrs+es ломает мозг разработчикам, привыкшим к стандартному флоу работы с базой и реляциям

Maksim
20.01.2018
15:24:50
этого не отнять, сам проходил)

M
20.01.2018
15:57:43
Мозг ломает, согласен. Но что-то нашел похожее из Redux, я прав?

Wan
20.01.2018
16:22:05
привет
может не по теме, но js-ники должны быть тут