
Sergey
02.02.2017
08:32:11
и мне ок с этим

da horsie
02.02.2017
08:32:57

Sergey
02.02.2017
08:33:29
во вторых что в этом такое, это ж UI

Google

Sergey
02.02.2017
08:34:01
ну то есть
представь что ты пишешь приложение с GUI
будь то web + react или ангуляры или Qt
у тебя есть UI фреймворк
и хочешь ты или нет но Ui у тебя будет на него завязан

da horsie
02.02.2017
08:34:26
я понимаю

Sergey
02.02.2017
08:34:47
что до "прослойки" - если вдруг станет что-то страшное ты всегда можешь сверху накрутить адаптеров
так что нет, это не влияет на архитектуру приложения ровным счетом никак
к слову
вот тут вчера говорили про soft delete
что мол не нужен он
у меня тут кейс интересный всплыл на днях
soft insert)

Google

Sergey
02.02.2017
08:36:49
ну тип юзер регается, вводит дохера всякой инфы, потом он должен активировать аккаунт и только после этого он считается зарегистрированным в системе
пихать сущность User прям в базу низя потому что тогда придется расставлять условия для выборок (которых не мало)
с другой стороны хрен его знает на каком уровне сохранять результат операций.

da horsie
02.02.2017
08:37:41
значит это не юзер

Sergey
02.02.2017
08:37:44
по сути единственный норм вариант - сериализация и хранение на файловой системе

da horsie
02.02.2017
08:37:56
соседняя таблица?

Sergey
02.02.2017
08:38:10
ну или в соседней таблице, но это надо тогда заводить такую же сущность

da horsie
02.02.2017
08:38:25
ну вот я вчера буквально слушал
про софт делит
дескать дело просто в неправильном именовании
мы не удаляем сотрудников, а увольняем
не удаляем товар со склада, а продаем

Sergey
02.02.2017
08:39:50
ну вот я не могу пока придумать адекватного термина

da horsie
02.02.2017
08:40:31
инициализируем процесс регистрации
new SignupProcess
signupProcess->toUser()
signupProcess->complete()
->cancel()
initialize

Google

da horsie
02.02.2017
08:42:13
expire
->getStage()
->advanceTo($nextStage)

Sergey
02.02.2017
08:44:18
ну это понятно)
а что если точек входа в процесс 3?
ну или как.... просто разные наборы данных которые ведут к одному результату
тип 3 роли пользователя

da horsie
02.02.2017
08:45:14
что это меняет?

Sergey
02.02.2017
08:45:19
ну так....
ладно, всеравно рефакторить в "процесс" времени нет
пойду дальше лепить кастыли

da horsie
02.02.2017
08:45:43
для разных ролей разные стратегии

da horsie
02.02.2017
08:46:24
new SignupProcess(new ManagerUserStrategy())
new SignupProcess(new RegularUserStrategy())

Sergey
02.02.2017
08:47:19
я понял)
ну а я просто сериализую юзера вместо вставки в базу
и при вактивации продолжаю с этого места
не так красиво но зато делается за 2 часа
а с учетом того что процесс регистрации будет еще раза 2-3 переделываться ближайший месяц
пока не вижу смысла заморачиваться

Google

0x9d8e
02.02.2017
10:51:55
Люди, посдкажите. Есть долги жирный скрипт, выполняющийся ночами и ночами же падающий (а днём не падает, лол). Хочу его залогировать по самые помидоры.
Хочу в логгере автоматом в каждую строку писать вначале что-то типа "03:45:51 \import\prepare_good\line#37: ".
Стек вызовов и номер строки где оно вызывается я могу только через исключение получить или можно более адекватно? Можно ли делать new Exception без throw?

Artem
02.02.2017
10:58:02
debug_backtrace() и debug_print_backtrace()
а new Exception без throw делать можно. В т.ч. и для получения стектрейса

0x9d8e
02.02.2017
11:01:51
Спс

F01134H
02.02.2017
11:01:56
вроде жеж исключения создаются без throw какие то, типо дефолтных

Artem
02.02.2017
11:03:30
создание исключения и их отправка - разные операции. Исключение - это обычный объект, с ним можно делать всё что угодно, хоть передавать аргументами, хоть возвращать

Admin
ERROR: S client not available

0x9d8e
02.02.2017
11:03:46
я так понял debug_backtrace почти идентичен Exception::getTrace()?

Artem
02.02.2017
11:03:58
во многих языках throw можно делать вообще на что угодно, включая примитивы

0x9d8e
02.02.2017
11:04:53
Во многих это скорее всего в джаве?

Artem
02.02.2017
11:07:31
js, c++, в руби по-моему тоже, хотя тут могу ошибаться

Viktor
02.02.2017
11:08:29
ну, в плюсцах то не удивительно... там можно различными путями отстрелить себе яйцы...

Artem
02.02.2017
11:08:31
в ерланге вроде тоже

Viktor
02.02.2017
11:08:56
ну а в жсе нет интерфейсов, и проблематично будет обобщить под Throwable

Artem
02.02.2017
11:09:31
есть семейство Error и instanceof, проблемы тут нет, было бы желаение

Viktor
02.02.2017
11:10:19
нууу... на счет жс странно в общем-то... но да, можно выкинуть что угодно...

Artem
02.02.2017
11:10:23
давно ли в php Throwable появился. 100 лет обходились Exception как-то

Viktor
02.02.2017
11:11:59
но в любом случае - все бросаемое должно быть экземпляром Exception. в общем, не смотря на отсутствие Throwable ограничитель все равно был

Artem
02.02.2017
11:12:14
да и какая, в сущности, разница. В пхп сделали так, в JS по-другому. Где-то вообще исключений нет

Viktor
02.02.2017
11:12:39
угу, в голанге например...

Google

Artem
02.02.2017
11:13:13
да, прямо скажем, в JS тоже исключения вырождаются из-за асинхронности

Andrii
02.02.2017
11:13:31

Artem
02.02.2017
11:14:09
да нет, не наоборот. Один интерфейс Promise в ES6 чего стоит. catch() не сделал - не проблема, работаем дальше

Andrii
02.02.2017
11:14:39
Одна из фич async/await паттерна - можно юзать трай кеч

Artem
02.02.2017
11:15:00
async+await ещё нет

Andrii
02.02.2017
11:15:19
В хроме уже есть

Artem
02.02.2017
11:15:26
вот когда будет это в принятои стандарте, тогда и можно будет говорить

Andrii
02.02.2017
11:15:30
Для всего остального есть бабел...
Вот и говорю что это не вырождение, а просто небольшой перекур

Artem
02.02.2017
11:16:26
я на это надеюсь :)

Артур Евгеньевич
02.02.2017
15:24:50
Парни кто нибудь делал сервис для сравнения объектов в php и как вы в этом случае обходились без перегрузки операторов?

0x9d8e
02.02.2017
15:28:31
Сравнение, типа > < === и всё такое?
Как-то пришлось некое подобие арифметики с объектами делать, я там просто нафигачил методов типа add, difference, moreThan, lessThan, eq и т.п.
Возвращали они либо булин либо новый объект того-же класса
типа
if($foo->moreThan($bar) {
$qwe = $foo->add($bar);
} else {
$qwe = $foo->difference($bar);
}
$qwe = $qwe->percentOf($foo);
Думаю можно и отдельный класс запилить, который бы выполнял такие операции (по методу на каждую) над какими-то объектами. Прост принимал бы пару операндов и всё.

Sergey
02.02.2017
15:37:41
хороший пример - класс денег