
Сергей
29.09.2018
14:37:59

Александр
29.09.2018
14:38:25
Загрузка файла может быть ресурсом
Обновление списка, например
Есть ресурс - урок - у него создание, обновление, отображение и удаление. Но бизнес хочет уметь обновлять несколько уроков за раз при нажатии кнопки сохранить, изменив названия нескольких уроков, например. Вот роут обновления списка уроков - не ресурс, хотя по идее можно завернуть его в ресурс и прострелить ногу

Google

Сергей
29.09.2018
14:42:07

Александр
29.09.2018
14:42:52
Не ресурсные действия, я хз как из назвать по-другому)

Сергей
29.09.2018
14:44:17
Но контроллер то будет LessonController?

Александр
29.09.2018
14:53:27
Ресурс списка. Создание списком, обновление, удаление и тп. Не стоит этого делать

Сергей
29.09.2018
15:04:09

Alexander
29.09.2018
15:07:53
Подскажите пожалуйста, у ларки есть по умолчанию переменная $error, как в эту переменную добавить ошибку при добавлении в базу(не заполнено обязательное поле), не использую validate, а с помощью try/catch?

Алексей
29.09.2018
15:10:31
сделать валилацию)
я не уверен, но вроде $error достается из сесии, попробуй посмотреть

f4rt~
29.09.2018
15:11:22

(;¬_¬)
29.09.2018
15:12:45

Alexander
29.09.2018
15:13:19

(;¬_¬)
29.09.2018
15:13:57
если ресурс, то всё равно у тебя уже rest, если я правильно понимаю. а если у тебя rest, то почему не воспользоваться преимуществами всяких js херней

Google

Александр
29.09.2018
15:14:08

(;¬_¬)
29.09.2018
15:15:21
и тебе останется только сказать что вот это вот я не смог обновить, проверьте и поправьте

f4rt~
29.09.2018
15:16:12
зачем же такой оверхед

(;¬_¬)
29.09.2018
15:16:16
понятно, что если у тебя есть условие "либо всё, либо ничего" тогда да, такой вариант не вариант

f4rt~
29.09.2018
15:16:30
я все ждал что кто то накинет за то, что нельзя модицифировать множество ресурсов одновременно одним запросом

(;¬_¬)
29.09.2018
15:17:03
если у него 100 одновременно правится уроков - да, это не вариант
а если 3-5, почему нет

f4rt~
29.09.2018
15:17:27
ну почему же

(;¬_¬)
29.09.2018
15:18:57

f4rt~
29.09.2018
15:19:00
если учитель заболел но на неделе у него 100 уроков, получается классическая n+1 на каждый такой случай

(;¬_¬)
29.09.2018
15:19:34
та пиздец, Валер, там проще отдельный блок сделать "замена учителя с ДАТА до ДАТА"
либо отмена урока
даже если брать по 12 уроков в день - 70 =)

f4rt~
29.09.2018
15:20:47

(;¬_¬)
29.09.2018
15:21:06

f4rt~
29.09.2018
15:21:20
ну так или иначе всегда модифицируем больше одного ресурса
например когда удаляем автора у поста

Google

f4rt~
29.09.2018
15:21:32
с каким нить cascade all
в любой соц.сети можно выбрать N сообщений и удалить
и таких примеров с любыми итемами сотни, другое дело что это очень хорошо ложиться на graphql

Сергей
29.09.2018
15:22:17
Интересно какой роут должен быть в таком случае, /lessons/update ?

f4rt~
29.09.2018
15:22:30
что бы сохранить структуру одинаковой для всех запросов подобного плана)

(;¬_¬)
29.09.2018
15:23:00

f4rt~
29.09.2018
15:23:18
когда мне нужно что то в админке удалить и нет кнопки выбрать все или по фильтрам я очень расстраиваюсь

(;¬_¬)
29.09.2018
15:24:11
плюс наверняка у тебя что-то уже зачитаное на эту тему есть
раз ты так уверен =)

f4rt~
29.09.2018
15:24:37
потом менять что то используя коллекцию юзеров/учителей/etc

(;¬_¬)
29.09.2018
15:25:05
да, уродливо и старо, но работает

f4rt~
29.09.2018
15:25:19
просто такие штуки дадут тебе sdl
где ты напишешь один query resolver
и он будет у тебя работать
у тебя не будет изменений по структуре принимаемых/отдаваемых данных ты всегда будешь оперировать не какими-то атомарными штуками в голове, а конкретными схемами, типами

Сергей
29.09.2018
15:26:17
Не понимаю проблемы, ну передадим мы в action список ИД-шников и обновим в цикле

Google

f4rt~
29.09.2018
15:26:34


Игорь
29.09.2018
15:27:07
Нужно создать класс для парсинга данных, точнее правильно организовать код который я написал для парсинга данных с сайта (тематика - аниме сериалы).
То что у меня было https://github.com/kiteggrad/Nanidub/blob/master/library/AnimeParser.php
Суть - классу при создании передаётся ссылка. Внутри класса есть 3 основные функции:
1 - получить ссылки на все итересующие страницы с сайта,
2 - спарсить данные со страницы(получает url) эта функция вызывается в конструкторе.
3 - добавить спарсеные данные в БД
Внутри класса так-же определены переменные типа $name, $author, $descriprion ... В них отправляются данные с вывода 2-й функции и берутся для 3-й
Вне класса(в том же файле) определенны множество вспомогательных функций, которые используются в 3-х функцих класса
В другом чате телеграмма мой подход к написанию естественно раскритиковали и дали много советов
Из того что понял:
- сохранение в базу данных должно происходить в модели
- нужно создать отдельный класс Parser от которого будут наследоваться другие классы для парсинга аниме с разных сайтов (например AnidubParser и YummyParser) должен принимать документ в формате строки.
- сделать класс обвертку http транспорта для "возможности подменить источник данных Например, не ХТТП, а из очереди данные получить, или из файла", выводит строку для класса Parser - полезно для написания тестов (как мне пояснили).
- класс парсера должен возвращать объект ParsedDocument в котором определенны поля $name, $author и т.п.
По итогу это всё должно выглядеть как-то так:
$parser = new AnidubParser() // наследуется от Parser
$animeSource = new AnimeSource(url, файл или ещё что) // класс который преобразует поступающие данные встроку для классов от Parser
$parsedDocument = $parser->feed($animeSource) // скармливаем парсеру данные
$anime = new Anime () // модель главной таблицы
$anime->saveParsed($parsedDocument) // сохраняем спаршеное в бд
Пишу сюда потому что в другом чате уже всех задолбал вопросами, а ответа правильно ли я всё понял в итоге не получил
Надеюсь на вашу помощь


(;¬_¬)
29.09.2018
15:27:24
Нужно создать класс для парсинга данных, точнее правильно организовать код который я написал для парсинга данных с сайта (тематика - аниме сериалы).
То что у меня было https://github.com/kiteggrad/Nanidub/blob/master/library/AnimeParser.php
Суть - классу при создании передаётся ссылка. Внутри класса есть 3 основные функции:
1 - получить ссылки на все итересующие страницы с сайта,
2 - спарсить данные со страницы(получает url) эта функция вызывается в конструкторе.
3 - добавить спарсеные данные в БД
Внутри класса так-же определены переменные типа $name, $author, $descriprion ... В них отправляются данные с вывода 2-й функции и берутся для 3-й
Вне класса(в том же файле) определенны множество вспомогательных функций, которые используются в 3-х функцих класса
В другом чате телеграмма мой подход к написанию естественно раскритиковали и дали много советов
Из того что понял:
- сохранение в базу данных должно происходить в модели
- нужно создать отдельный класс Parser от которого будут наследоваться другие классы для парсинга аниме с разных сайтов (например AnidubParser и YummyParser) должен принимать документ в формате строки.
- сделать класс обвертку http транспорта для "возможности подменить источник данных Например, не ХТТП, а из очереди данные получить, или из файла", выводит строку для класса Parser - полезно для написания тестов (как мне пояснили).
- класс парсера должен возвращать объект ParsedDocument в котором определенны поля $name, $author и т.п.
По итогу это всё должно выглядеть как-то так:
$parser = new AnidubParser() // наследуется от Parser
$animeSource = new AnimeSource(url, файл или ещё что) // класс который преобразует поступающие данные встроку для классов от Parser
$parsedDocument = $parser->feed($animeSource) // скармливаем парсеру данные
$anime = new Anime () // модель главной таблицы
$anime->saveParsed($parsedDocument) // сохраняем спаршеное в бд
Пишу сюда потому что в другом чате уже всех задолбал вопросами, а ответа правильно ли я всё понял в итоге не получил
Надеюсь на вашу помощь
вопрос-то в чем?


Игорь
29.09.2018
15:28:53

(;¬_¬)
29.09.2018
15:29:12

Игорь
29.09.2018
15:29:28

(;¬_¬)
29.09.2018
15:29:43
@oneerror подтверди

f4rt~
29.09.2018
15:30:22
не могу
мне не нрав

(;¬_¬)
29.09.2018
15:30:49

Сергей
29.09.2018
15:30:54
и Route::post('/lessons/update')

Игорь
29.09.2018
15:31:29

(;¬_¬)
29.09.2018
15:31:42

Игорь
29.09.2018
15:31:46

(;¬_¬)
29.09.2018
15:31:54
обновление происходит PUT запросами ;)

Сергей
29.09.2018
15:32:13

(;¬_¬)
29.09.2018
15:32:41

Google

Сергей
29.09.2018
15:34:47

(;¬_¬)
29.09.2018
15:35:32

f4rt~
29.09.2018
15:37:24
Можно поподробнее пожалуйста?
сильная связь,инстанцирование сущностей прям в объекте,хотя бы промисы есть, не увидел ни одного генератора, useragent как и все параметры клиента можно подменить только исправив текущий код, а не заинжектив штуки извне, проебан cs, причем так сильно что аж больно, мне не нравится нейминг, не ф-ций. а классов, половина из них может меняться по некоторым причинам извне, видно в целом что ты владеешь языком, но не умеешь такие вещи структурировать и компоновать хотя бы логически;
куда бесполезных иф елсе, вместо early return при цикломатической сложности, отсутствует понимание как использовать структуры данных, dto/config class
хз не могу это нормально читать

Сергей
29.09.2018
15:37:36

(;¬_¬)
29.09.2018
15:38:09
Я так делаю
если ты так делаешь, то знаешь же что обновление это put\patch ;)

Nioray
29.09.2018
15:38:11
Привет всем. А нужно делать в модели методы по типу get"Property" . или лучше не писать лишний код и просто к свойству обращатся.

f4rt~
29.09.2018
15:38:18
сильная связь,инстанцирование сущностей прям в объекте,хотя бы промисы есть, не увидел ни одного генератора, useragent как и все параметры клиента можно подменить только исправив текущий код, а не заинжектив штуки извне, проебан cs, причем так сильно что аж больно, мне не нравится нейминг, не ф-ций. а классов, половина из них может меняться по некоторым причинам извне, видно в целом что ты владеешь языком, но не умеешь такие вещи структурировать и компоновать хотя бы логически;
куда бесполезных иф елсе, вместо early return при цикломатической сложности, отсутствует понимание как использовать структуры данных, dto/config class
чувство будто бы писали два разных человека

Сергей
29.09.2018
15:38:38

(;¬_¬)
29.09.2018
15:38:57
я знаю что форма всё равно постом уйдет. не постом\гетом только жс может отправить

f4rt~
29.09.2018
15:39:50
сильная связь,инстанцирование сущностей прям в объекте,хотя бы промисы есть, не увидел ни одного генератора, useragent как и все параметры клиента можно подменить только исправив текущий код, а не заинжектив штуки извне, проебан cs, причем так сильно что аж больно, мне не нравится нейминг, не ф-ций. а классов, половина из них может меняться по некоторым причинам извне, видно в целом что ты владеешь языком, но не умеешь такие вещи структурировать и компоновать хотя бы логически;
куда бесполезных иф елсе, вместо early return при цикломатической сложности, отсутствует понимание как использовать структуры данных, dto/config class
можно добавить еще что то вроде нет батч процесинга итемов в базу, у тебя какая-то неправильная хвостовая рекурсия

(;¬_¬)
29.09.2018
15:40:39


Игорь
29.09.2018
15:40:56
сильная связь,инстанцирование сущностей прям в объекте,хотя бы промисы есть, не увидел ни одного генератора, useragent как и все параметры клиента можно подменить только исправив текущий код, а не заинжектив штуки извне, проебан cs, причем так сильно что аж больно, мне не нравится нейминг, не ф-ций. а классов, половина из них может меняться по некоторым причинам извне, видно в целом что ты владеешь языком, но не умеешь такие вещи структурировать и компоновать хотя бы логически;
куда бесполезных иф елсе, вместо early return при цикломатической сложности, отсутствует понимание как использовать структуры данных, dto/config class
Это написанно про код на репозитории? Он мне самому нисколько не нравится, вот и пытаюсь научиться писать нормально.
И да, пожалуй у меня уйдёт некоторое время на понимание данного текста -_-

(;¬_¬)
29.09.2018
15:41:02

f4rt~
29.09.2018
15:41:24
ты как мин. явно можешь больше чем половина челов в этом чате, просто еще не знаешь об этом

Сергей
29.09.2018
15:41:42

Игорь
29.09.2018
15:41:45

(;¬_¬)
29.09.2018
15:41:51