@oop_ru

Страница 293 из 785
Илья
15.07.2017
09:36:29
libgdx простенький

более менее

Sergey
15.07.2017
14:54:56
Андрэ
15.07.2017
15:15:06
ок. сорри

Google
Dmitry
16.07.2017
19:20:49
Помогите разобраться с проектированием апи, ну или киньте ссылочку на соответствующий чатик, где можно задать вопрос. В общем есть 3 типа файлов — бинарный (у него есть ссылка на скачивание, вес, майм и немного служебных полей), картинка (добавляются поля с шириной, высотой) и видео (добавляется продолжительность и поле с превью). Собственно вопрос — в ответе на запрос может возвращаться массив со всеми тремя типами файлов одновременно, как лучше сформировать json объекты для каждого из типов, чтобы было меньше боли при дальнейшей работе с ними на фронте/мобилках?

Roquie
16.07.2017
19:48:52
GET example.com/v1/array_of_types { "data": [ { "type": "binary", // other fields for binary type }, { "type": "image", // other fields for img type }, { "type": "video", // other fields for video type }, ], }

@basavind вот так норм

Sergey
16.07.2017
19:49:47
> как лучше сформировать json объекты для каждого из типов А как бы ты на клиенте это проще и удобнее разруливал бы?

Roquie
16.07.2017
19:50:15
Dmitry
16.07.2017
19:50:30
ага, есть такой вариант, а не проблематично потом парсить в первую очередь type для того, чтобы сконструировать объект определенного типа?

Dmitry
16.07.2017
19:51:00
вот и я о том же

Mykola
16.07.2017
19:51:15
тут лучше под либу подстраиваться конкретную

которая умеет в десериализацию

Dmitry
16.07.2017
19:51:45
ммм.. ну например под gson на андройде есть идеи?

Roquie
16.07.2017
19:51:45
ага, есть такой вариант, а не проблематично потом парсить в первую очередь type для того, чтобы сконструировать объект определенного типа?
В чем проблема сделать 3 обработчика для каждого из типов? Унификация здесь не особо то и нужна, как я понял.

Google
Sergey
16.07.2017
19:52:17
ммм.. ну например под gson на андройде есть идеи?
вбиваешь в гугл Gson map to object discriminator

Dmitry
16.07.2017
19:52:35
ну блин, я не к тому про gson написал :)

Sergey
16.07.2017
19:53:01
там есть возможность в рантайме выбирать мэппер

RuntimeTypeAdapter

Dmitry
16.07.2017
19:53:24
В чем проблема сделать 3 обработчика для каждого из типов? Унификация здесь не особо то и нужна, как я понял.
проблема в том, что надо сначала распарсить json, прочитать type и только после этого сконструировать объект соответствующего типа

Sergey
16.07.2017
19:53:42
для iOS под objective-c не знаю, под свифт есть шикарная либка которая это тоже умеет

Roquie
16.07.2017
19:54:03
Не вижу здесь проблемы. Сделать фабрику и по типу создавать нужный объект.

Sergey
16.07.2017
19:54:08
проблема в том, что надо сначала распарсить json, прочитать type и только после этого сконструировать объект соответствующего типа
так проблемы нет распарсить и прочитать. Или ты думаешь gson мэпит тебе сразу на объекты? там промежуточные структуры как бы

они уже потом мэпятся на твои объекты

Roquie
16.07.2017
19:56:01
Сергей дело говорит. Я недавно делал приложение для iOS, ты все руками забиваешь в структуру и на выходе получаешь коллекцию объектов.

Dmitry
16.07.2017
19:56:13
в таком случае можно чуть подробней почему для мобилок не особо и как это не особо можно улучшить?

если для мобилок - не особо.

Sergey
16.07.2017
19:56:42
не особо проблематично. Для всего остального темболее.

в целом для твоей задачи других вариантов на самом деле у тебя нет

Dmitry
16.07.2017
19:58:18
скорее всего да

спасибо за помощь!

Артур Евгеньевич
17.07.2017
19:26:00
Парни, давайте поговорим за АОП

Кто юзал, какие впечатления, какие подводные камни

Aleh
17.07.2017
19:26:24
И зачем

Артур Евгеньевич
17.07.2017
19:26:48
Мне сейчас надо сделать иерархическое рекурсивное удаление всех дочерних сущностей, но не хочупилить сервис под это дело

Google
Артур Евгеньевич
17.07.2017
19:27:30
И вот думаю здорово было бы сделать аннотацию, которая при попытке удалить сущность, перехватывала бы вызов и запускала метод удаления у "детей" с определенным интерфейсом

Также думаю внедрить аннотации для авторизации

а то проверки всех прав смотрятся печально

Артур Евгеньевич
17.07.2017
19:29:28
да на пхп но какая разница

da horsie
17.07.2017
19:29:38
"This allows behaviors that are not central to the business logic (such as logging) to be added to a program without cluttering the code core to the functionality."

Артур Евгеньевич
17.07.2017
19:29:53
Ну да это сквозная функциональность

логирование, кеширование, транзакции, авторизация и т.д

da horsie
17.07.2017
19:30:16
Ты уверен, что твоя задача "is not central to the business logic"?

Артур Евгеньевич
17.07.2017
19:31:13
Ты уверен, что твоя задача "is not central to the business logic"?
задача про удаление, конечно же не удовлетворяет хтому условию

но тем не менее мне кажется хорошо ляжет такой подход...или как лучше сделать

Артур Евгеньевич
17.07.2017
19:32:01
сначала пытался вынести в трейт этот метод(там еще логирование и авторизация как раз есть)

также были планы создать сервис MassDeletetor

там в любом случае рефлексию придется юзать, чтоы понять потомков сущности

Aleh
17.07.2017
19:33:01
А почему просто не сделать это в репозитории явно?

Артур Евгеньевич
17.07.2017
19:33:33
Aleh
17.07.2017
19:33:47
для каждой сущности что ли?
Для тех, что тебе надо

Артур Евгеньевич
17.07.2017
19:34:08
ну там порядка 6 сущностей таких

я бы хотел убрать дублирвоание

Google
Admin
ERROR: S client not available

Артур Евгеньевич
17.07.2017
19:35:52
да и логировние с авторизацией добавлять если это еще +2 зависимости к сервису

Ну а если отвлечься от моей конкретики, какие еще могут быть подводные камни?

походу надо создать чатик по АОП

?

Sergey
17.07.2017
20:51:06
Кто юзал, какие впечатления, какие подводные камни
есть задачи для которых это полезно, завязывать на это бизнес логику - очень плохая идея.

походу надо создать чатик по АОП
это по сути использование проксей и все, это не заслуживает отдельного чатика

я бы хотел убрать дублирвоание
вынеси это как отдельный сервис

+ не факт что там есть дублирование если это разные сущности

ну то есть если "пользователи" твоих фич разные, то даже тот факт что они один в один не означает что есть дублирование

Артур Евгеньевич
17.07.2017
20:52:22
ну там просто нужно проставить флг is_deleted = 1

Sergey
17.07.2017
20:52:35
ну так нет дублирования

Артур Евгеньевич
17.07.2017
20:52:39
и пройтись по потомкам

Sergey
17.07.2017
20:52:55
просто метод который выставляет флаг, и у каждой сущности он свой потому что работает со своим стейтом. Нет дублирования

Артур Евгеньевич
17.07.2017
20:53:03
а также проверить привелегии и алогировать что было удалено

Sergey
17.07.2017
20:53:04
и пройтись по потомкам
каким таким потомкам?

Артур Евгеньевич
17.07.2017
20:53:20
каким таким потомкам?
по подчиненным сущностям

Sergey
17.07.2017
20:53:28
а также проверить привелегии и алогировать что было удалено
проверка привелегий на уровень выше, доменные ивенты

по подчиненным сущностям
каким таким подчиненным сущностям и на кой черт тебе что-то с ними делать если ты корень агрегата пометил как удаленный

Артур Евгеньевич
17.07.2017
20:54:02
курс-курсФилиала-расписание-уроки

Google
Sergey
17.07.2017
20:54:04
давай конкретнее

так ты удаляешь курс или урок?

Артур Евгеньевич
17.07.2017
20:54:34
Я все могу удалять

Иначлаьно задача вот в чем:

Sergey
17.07.2017
20:54:46
ну прекрасно, я пока дублирования не увидал

удаление разных штук - разные штуки

для этой задачи уж точно AOP не нужон. AOP хорошо для инфраструктуной шляпы. Типа @transactional

а тебе надо просто не лениться

Страница 293 из 785