
Big_Shark
15.06.2017
23:59:52
Но мне кажется тут еще от типов аргументов зависит, и от сколько из них реквайред

Sergey
15.06.2017
23:59:52
не сильно много времени на это уходит, а профит заметный
это чуть удобнее фабрик или DTO голых

Google

Sergey
16.06.2017
00:00:34
но да, бывают нюансы
к слову может плагин для шторма реально написать....

Big_Shark
16.06.2017
00:02:46
@fes0r спасибо, пойду дальше мучать код

Sergey
16.06.2017
00:03:04
последний кусочек кода

Jan
16.06.2017
00:04:16
@fes0r а как ты реализовал доменные события и их обработку?

Sergey
16.06.2017
00:06:43
trait DomainEvents {
private $events;
protected function remember(DomainEvent $event)
{
$this->events[] = $event;
}
public function releaseEvents(): array
{
[$events, $this->events] = [$this->events, []];
return $events;
}
}
а дальше как обычные ивенты.

Jan
16.06.2017
00:08:05
У тебя собственный UoW?

Sergey
16.06.2017
00:08:07
просто некоторые в очередь скидываю

Jan
16.06.2017
00:08:41
Ну, я понял, что доктрина. Просто я еще не постиг дзен её внутренностей.

Sergey
16.06.2017
00:08:55
$uow->getIdentityMap() если я правильно помню

Google

Sergey
16.06.2017
00:13:13
доктрина штука относительно простая в этом месте
там вся сложность с проксями, гидрацией и прочей магией
вот там реально без пол литра не разберешься
а общие принципы - в целом норм

Ad
16.06.2017
09:43:35
Добрый день. Подскажите, пожалуйста, а можно как-то делать оптимизацию изображения по его URL? То есть я делаю вот так для стандартного вывода в твиге:
<img class="article-image" src="{{ image(article.thumb.src).resize(700).jpeg('85') }}" title="{{ article.thumb.title }}" class="img-responsive">
можно ли как-то туда подставить URL просто?
Я понимаю, что теоретически я могу в контроллере распарсить, и передать отдельной переменной, но может другие варианты есть?

Dinar
16.06.2017
09:46:35
Ресайзи при загрузке :)
Либо кешируй.

Ad
16.06.2017
09:47:35
Кэшировать вроде как и так кэширую.

Dinar
16.06.2017
09:48:16
А тебе надо именно чтобы линк был?
Тогда сделай экшн, в котором сделаешь ресайз, но сам экшн закешируй.
И все. Пропиши урол на этот экшн.

Ad
16.06.2017
09:49:27
А тебе надо именно чтобы линк был?
проще говоря у меня текст статьи. Народ в него пихает картинки, кто в PNG размером в тыщу метров, кто что. Я пытаюсь это дело загнать и проресайзить.

Dinar
16.06.2017
09:49:33
Я правда не знаю, зачем такая сложность, если можно просто ресайзнуть сразу при загрузке. Или места мало?
А при пихании не ресайзится?

Ad
16.06.2017
09:50:05
При пихании не ресайзится.

Dinar
16.06.2017
09:50:41
Так ты же его принимаешь. Сделай ресайз при принятии картинки

Ad
16.06.2017
09:51:16
Не могу, оно сторонней фигнёй пихается.

Dinar
16.06.2017
09:51:44
А сторонняя фигня - это что?

Google

Ad
16.06.2017
09:51:52
В голову приходит только идея менять на лету URL'ы на что-то типа '/optimize?domain.com/images/huy.jpg'
То есть он напрямую URL вставляет, и всё, на этом его работа заканчивается.

Dinar
16.06.2017
09:53:49
Просто ты же понимаешь, что фронтэнд твой файл не кладет в ФС. Ты его на бэкэнде принимаешь где-то.

Ad
16.06.2017
09:54:22
ну как бы да. но на бэкэнде просто текст статьи прилетает. возможно, надо процессить именно перед загрузкой в базу
Но как тогда будет работать ассетик этот? загадки...

Dinar
16.06.2017
09:54:37
Но ты название файла присылаешь с Бэкэнда.
он до загрузки его знать не может.
Либо он продублирован на фронте

Ad
16.06.2017
09:55:52
Может натурально, менять регэкспом картинки на /resize.... а по этому адресу их автоматом ресайзить? Хотя стоп, так все равно ассетик не сработает
И в кэш не положится.

Dinar
16.06.2017
09:58:31
Я бы смотрел в сторону бэкэнда.

Dinar
16.06.2017
09:58:35
Там все должно быть.

Ad
16.06.2017
09:59:43
Вопросы, вопросы...

Dinar
16.06.2017
10:00:17
Просто изучи этот плагин. Посмотри доку.

Ad
16.06.2017
10:02:23
Просто изучи этот плагин. Посмотри доку.
Хорошо, тогда сформулирую по-другому. В контроллере на бэкэнде у меня есть URL. Могу ли я его как-то сконвертировать в объект и передать во фронт, чтобы там его обработать средствами assetic?
{% image '@AppBundle/Resources/public/images/example.jpg'
filter='jpegoptim' output='/images/example.jpg' %}
<img src="{{ asset_url }}" alt="Example"/>
{% endimage %}
Теоретически, вот если бы у меня была возможность подставить вместо @AppBundle/Resources/public/images/example.jpg свой URL (или просто указать свой бандл и путь, сработает? то это бы решило проблему.
Наполовину.
Но блин, делать это для каждого изображения... а вдруг PNG? А вдруг гиф?
В принципе, читаю сейчас доку по вот этому, может быть оно мне поможет на уровне контроллера решить.
https://github.com/Gregwar/ImageBundle

Google

Andrew
16.06.2017
10:32:47

Ad
16.06.2017
10:33:34
Потому что иначе получится - вот я выдрал первое, оптимизировал, вывел, а потом мне надо выкусывать это первое из текста, чтобы оно не получилось два раза
Но как это сделать - я без понятия от слова вообще.

Andrew
16.06.2017
10:35:34
можно повесить prePersist event, который у тебя будет парсить на тему img src и заменять сорс на нужный. Или на лету менять через dom crawler
наверное есть смысл делать через domcrawler


Ad
16.06.2017
10:36:31
можно повесить prePersist event, который у тебя будет парсить на тему img src и заменять сорс на нужный. Или на лету менять через dom crawler
вот второе у меня, в принципе, есть.
$c = new HtmlPageCrawler($oneNews->getContent());
foreach ($c->filter('img') as $newsImg)
{
$newsImg = HtmlPageCrawler::create($newsImg);
$newsImg->filter('img')->removeAttribute('style');
$newsImg->filter('img')->removeAttribute('width');
$newsImg->filter('img')->setAttribute('alt', $oneNews->getTitle());
$newsImg->filter('img')->addClass('img-responsive img-pim center-block thumbnail');
$newsImg->filter('img')->wrap('<a href="' . $newsImg->filter('img')->getAttribute('src') . '" data-toggle="lightbox" data-title="' . $oneNews->getTitle() . '">');
}
$oneNews->setContent(mb_convert_encoding($c->saveHTML(), 'UTF-8', 'HTML-ENTITIES'));
Получается, что остаётся просто туда ресайз запихать.

Admin
ERROR: S client not available

Andrew
16.06.2017
10:37:32
ресайз будет при первом запросе к тому урлу

Alex
16.06.2017
10:39:07
ресайз on demand, по-взрослому. Причем размеры требуемые можно передавать в URL-е, а ресайзить с помощью nginx

Andrew
16.06.2017
10:39:34
тут еще @fes0r кидал ссылку на альтернативное решение - микросервис на го для ресайза, не могу найти

Ad
16.06.2017
10:39:38

Alex
16.06.2017
10:40:18
URL или nginx конфигурация?

Ad
16.06.2017
10:40:53
Вообще пока не допираю. Смотри выше - вот у меня домкраулер получает и проходит в фориче все img src

Dinar
16.06.2017
10:40:58
Проблема простая. решение простое.
Зачем городить какие-то микросервисы?
Вы же не Гугл, как в статье говорится одноименной :)

Google

Dima
16.06.2017
10:43:52
день добрый, мож подскажет кто как настроить EAGER_FETCH для dev и test окружения, во время дебага наблюдать пустые коллекции вложенных энити уже обрыдло. Самостоятельно не нагуглилось

Sergey
16.06.2017
10:45:59
например с какой целью тебе это вообще смотреть?
нельзя ли воспользоваться возможностью выполнять выражения в xdebug
что бы инициализировать коллекцию
а так - делать разное поведение в зависимости от окружения - плохая идея, очень плохая

Dima
16.06.2017
10:54:55

Ivan
16.06.2017
10:55:53

Dinar
16.06.2017
10:58:56

Ivan
16.06.2017
11:15:44
+ ещё смотреть $_REQUEST['XDEBUG_SESSION'] или $_ENV['XDEBUG_CONFIG'] как условие для FETCH_EAGER

Sergey
16.06.2017
11:15:56
ну и опять же - с eager load ты можешь потенциальных проблем не найти или наоборот словить то с чем проблем на самом деле нет
меньше вариаций - меньше боли

Ivan
16.06.2017
11:19:30
или это плохо?

Sergey
16.06.2017
11:19:54
а просто вызовы сервисов

Ivan
16.06.2017
11:20:08
так и подумал

Sergey
16.06.2017
11:20:30
ну то есть я реально как-то размышял на эту тему - в пределах бизнес транзакции все что дергается всеравно должно относиться именно к этой логике
и там неиболее явный способ лучше