
Sergey
06.07.2018
12:49:38
ставишь какую-нибудь хрень которая сгенерит тебе и админку и т.д. и вжух у тебя готовый круд
не нужны слои, и прочие хрени

Artem
06.07.2018
12:49:55
Yii :D

Maksim
06.07.2018
12:50:14
2

Google

Maksim
06.07.2018
12:50:25
или там 3й уже есть..._)

Sergey
06.07.2018
12:50:36
и часто в приложении это добрая половина всей логики. Но только есть другая половина. И почему-то люди выбирают всегда один подход для всего приложения. и как следствие либо подход будет слишком сложен для большей части приложения либо слишком простым и в итоге будет рости случайная сложность
ну короч все это уже высокие материи
видосик посмотри

Artem
06.07.2018
12:50:42

Sergey
06.07.2018
12:50:52
когда мы бухали

Sergey
06.07.2018
12:52:08
хм.... обе статьи...
не очевидно, это больше про дизайн нежели про круд
какая собственно круду разница будет у листа кнопка удалить или нет

Sergey
06.07.2018
12:56:41
ну то есть то как ты строишь работу с данными это тоже дизайн в каком-то смысле
https://cqrs.wordpress.com/documents/task-based-ui/ - вот тут лучше

Google

Sergey
06.07.2018
12:57:39
там картинка есть которая показывает разницу между CRUD и task based ui
и глянув на эту разницу возможно ты докадаешься как это аффектит архитектуру твоего приложения

Roman
06.07.2018
13:00:32
протестую, там 3 картинки
глянув на одну ничего не понятно

Sergey
06.07.2018
13:01:43
дельное замечание

Sergey
06.07.2018
13:05:57
насколько я понимаю подразумевается вид CRUD карточки сущности и табличка с ссылкой?
я кажется начинаю понимать о чем это

Maksim
06.07.2018
13:07:28
так быстро это не работает)

Sergey
06.07.2018
13:08:33
т.е. противопоставляется дизайн в котором есть только круд формы, дизайну, где есть еще другие виды отображения более удобные?

Елнур
06.07.2018
13:10:29
Пример с изменением адреса пользователя:
CRUD UI:
- Есть список адресов
- Можно посмотреть детали адреса
- Можно добавить адрес
- Можно редактировать
- Можно удалить
TaskBased UI:
А что вообще значит редактировать адрес? Может это:
- Пользователь сменил свой офис в другое местоположение
- В почтовом индексе адреса была опечатка, и нужно подкорректировать
- Другая причина
RoleBased UI:
- Админ может делать все что в круд
- Обычный пользователь может добавить, редактировать после одобрения
В RoleBasedUI можно еще комбинировать из CRUD & TaskBasedUI

Sergey
06.07.2018
13:11:59
2й пункт не понятен
про TB UI
а RB UI вообще отсылка к безопасности а не к UI, как я это вижу

Sergey
06.07.2018
13:14:29

Sergey
06.07.2018
13:14:48
стоп
с точки зрения круда дизайн не сильно важен

Sergey
06.07.2018
13:15:18

Sergey
06.07.2018
13:15:22
в том же круде можно запросить табличку с ссылками на тоже удаление и т.д.

Sergey
06.07.2018
13:15:28

Google

Sergey
06.07.2018
13:15:45
https://cqrs.files.wordpress.com/2010/11/image6.png?w=425&h=263&zoom=2
видишь картинку?
это классический CRUD

Sergey
06.07.2018
13:16:10
вижу
это карточка обьекта

Sergey
06.07.2018
13:16:17
видишь поле статуса? на основе значения этого поля определяется опубликована запись или нет. А видишь ниже поле Deactivation comment
оно имеет смысл только и только тогда, когда у тебя выбран нужный статус

Sergey
06.07.2018
13:16:33
да вижу

Sergey
06.07.2018
13:16:50
вот, то есть что делать с данными мы решаем не на основе определенного действия, а на основе пришедших данных
в этом суть CRUD

Sergey
06.07.2018
13:17:05
хм... что мешает запрашивать комент при выборе статуса

Sergey
06.07.2018
13:17:23

Sergey
06.07.2018
13:17:58
а JS зачем? на сервере очевидно проверка нужна на состояние

Sergey
06.07.2018
13:18:08
а теперь сравни с таким вариантом:
https://cqrs.files.wordpress.com/2010/11/image7.png?w=445&h=184&zoom=2
где у тебя есть кнопка Deactivate, по нажатию на которую будет форма с нужным полем
а на сервере будет отдельный обработчик именно этой ситуации

Sergey
06.07.2018
13:18:50
это круд, только списка со ссылкой на деактивейт

Sergey
06.07.2018
13:19:24

Sergey
06.07.2018
13:19:38
ну правильно это конкретно READ списка

Google

Sergey
06.07.2018
13:19:39
то есть идея в том, что разные данные меняются по разным причинам и разными людьми
меняешь все данные за одну операцию даже если цель у пользователя была снять публикацию записи - это круд. А если у тебя операция записи изолирована от других и меняет маленький кусочек стэйта в рамках выделенного юзкейса - это уже не CRUD
для осознания этого тебе надо понимать как твои пользователи работают с приложением. Практически никогда человек не меняет имя товара одновременно со снятием его с продажи. Обычно сначала снимаешь с продажи и потом меняешь. Иногда есть ряд жестких ограничений на эту тему
иногда этим вообще разные люди занимаются
а стало быть разные уровни доступа нужны. а стало быть нужно больше проверок в случае с CRUD
иногда одна и та же операция для разных ролей требует разных данных


Sergey
06.07.2018
13:22:59
ну да

Sergey
06.07.2018
13:23:19
в этом прикол, в том что бы максимально дробить операции записи и оставлять отправку форм только для самых простых случаев

Admin
ERROR: S client not available

Sergey
06.07.2018
13:23:57
это открывает целый спект возможностей архитектурных на сервере. В этом проявляется связь UI и архитектуры приложения
не в том что UI напрямую влияет на код приложения (хотя часто это так, подсознательно, декомпозиция по UI называется), а в том, насколько изолированы друг от друга операции записи

Sergey
06.07.2018
13:24:39
хм...

Sergey
06.07.2018
13:25:16
опять же на эту тему что бы совсем до экстрима довести
https://www.youtube.com/watch?v=Fuac__g928E
там на примере амазона хорошо демонстрируется что тебе дает разделение на отдельные действия
в конечном итоге все эти MVC и ADR не важны если у тебя связанность системы по данным есть

Sergey
06.07.2018
13:26:25
ок тогда я до ознакомления отойду ибо чувствую у меня непосредственно с терминологией проблема

Sergey
06.07.2018
13:26:58

Maksim
06.07.2018
13:27:19
у эйчаров это разные вещи)

Google

Sergey
06.07.2018
13:27:39
ну бля там ни одной похожей буквы
еще бы

Roman
06.07.2018
13:28:16
у некоторых эйчаров java и javascript это одно и то же.
потому что много похожих буков
правда ecmascript и javascript иногда разные =(

Oleg
06.07.2018
13:41:34
у них сравнение с начала слова идет)))

F01134H
06.07.2018
14:52:39
чуваки, нужно придумать тестовое задание, что бы человек показал не только свои знания, но и способность использовать готовые решения
чет в голову ничего не идет

Alexander
06.07.2018
14:54:45

Evgenii
06.07.2018
14:54:57

F01134H
06.07.2018
14:55:01
еп

Evgenii
06.07.2018
14:55:15
тогда ты должен сам знать

F01134H
06.07.2018
14:55:31
спасибо, вместо этого можно было промолчать
не тревожить воду так сказать

Evgenii
06.07.2018
14:55:45
либо тогда не придумывай

F01134H
06.07.2018
14:56:01
можешь прост замолчать?)

Evgenii
06.07.2018
14:56:14
без проблем

Maksim
06.07.2018
15:01:06
спасибо, вместо этого можно было промолчать
у одной из питерских контор есть простенькое тестовое:
Сделать миграцию, создающую таблицу operations с полями id, sum , created
Сделать миграцию, создающую таблицу archive с полями operation_id, sum, created, archived
Сделать миграцию, содержащую таблицу events с полями id, data (JSONB)
Сделать http API, которое принимает на вход число и создает запись в operation с соответствующей суммой.
После вставки в operations , срабатывает триггер в базе. Он вызывает хранимую процедуру, которая запаковывает все данные из новой строки в JSONB и заносит их в events.
Сделать демона, который непрерывно читает таблицу events и заносит ее данные в redis или rabbitMQ
Сделать демона , который читает redis или rabbitMQ и заносит данные в archive
фреймворк любой подставь) в оригинале был ларавел

Victor
06.07.2018
15:02:31

Artem
06.07.2018
15:10:04
Всем привет!
Кто может подсказать, если ли поднобные библиотеки, как эта: fingerprintjs2, только на php?

Vitaly
06.07.2018
15:17:10