
Pavel
28.03.2018
09:14:11
фак

Alexey
28.03.2018
09:14:25
ясно

?
28.03.2018
10:03:57
как заставить translation:update находить ключи, которые формируются динамически? есть какой-нибудь тру вэй для этого?

darkwoolf
28.03.2018
10:05:47
оффтоп

Google

Sergey
28.03.2018
10:06:11
оффтоп
можешь просто скинуть ссылку на хабр, хотя вчера ее скидывали

Konstantin
28.03.2018
10:16:11
у меня где-то был пример на nikic/php-parser, который из какой-то жопы достает ключи по какой-то относительно хитрой схеме
если хочешь, я в течение дня тебе его скину и попробую разъяснить
там от силы 200 loc

?
28.03.2018
10:17:43
скинь :3
я попробую сперва сам разобраться

Konstantin
28.03.2018
10:17:59
чуть попозже, ок? только собираюсь в офис

?
28.03.2018
10:18:03
окок

Konstantin
28.03.2018
10:18:09
если к 16 часам по мск не пришлю, пингани тут, плз

?
28.03.2018
10:18:19
хорошо

Sergey
28.03.2018
10:46:15
там Фаулер собирается новое издание Рефакторинга выпустить
отрефакторит Рефакторинг

Google

Konstantin
28.03.2018
10:46:36
кто то еще и старое не дочитал
кто где книжки кстати покупает?

Bohdan
28.03.2018
10:51:02
торренты наше все
700 человек гет

keyed
28.03.2018
10:53:40
Hi

Konstantin
28.03.2018
12:19:15
хорошо
https://gist.github.com/sc0rp10/90a3f516ca3c4456f464b18cc886d0af
в общем виде оно как-то так выглядит.
в визиторе разбираешь свой кусок AST и достаешь всё что нужно из него
там в целом не особо сложно, максимум за полчаса можно разобраться

?
28.03.2018
12:22:59

Konstantin
28.03.2018
12:23:50
вот еще если чо
http://symfony.com/doc/current/reference/dic_tags.html#translation-extractor

?
28.03.2018
12:25:58

Konstantin
28.03.2018
12:26:18
скорее всего найдет, но если нет - то translation.extractor

?
28.03.2018
12:26:18
есть где-нибудь дока про экстрактор этот?

Konstantin
28.03.2018
12:26:32
вот выше ссылка
там прям минимальная дока нужна, оно всё очень простое и тупое. тебе единственное что надо - из своего экстрактора вернуть список строк. где ты его возьмешь - ваще неважно, хоть регулярками из джаваскрипта напарсишь

?
28.03.2018
12:38:34

Konstantin
28.03.2018
12:43:14
но ваще, не знаю, насколько тебе это релевантно, но мало ли кому-то пригодится: всегда избегайте динамических строк, пусть даже ценой дублирования кода
{{ 'foo.' ~ bar ~ '.message' | trans }} - плохо
{% if bar == 'bar' %}
{{ 'foo.bar.message' | trans }}
{% elseif bar == 'baz' %}
{{ 'foo.baz.message' | trans }}
{% elseif bar == 'abc' %}
{{ 'foo.abc.message' | trans }}
{% endif %}
лучше

Dinar
28.03.2018
12:44:22
Потому что..?

Google

Konstantin
28.03.2018
12:45:24
потому что очень легко выстрелить себе в ногу, тк тут не работает тулинг в виде экспорта, поиска пропущенных, непереведенных итд. т.е. в таком случае разработчики сами гарантируют, что все строки есть в проекте и никак это достоверно проверить нельзя
у меня, допустим, падает билд, если среди т.н. "критических" строк есть пропуски - это очень удобно

Dinar
28.03.2018
12:45:51
Ну если это того стоит :)
Вообще больше выглядит как подстравивание под инструмент.

Konstantin
28.03.2018
12:46:10
если использовать вот такие конкатенации, физически нереально будет что-то гарантировать

Dinar
28.03.2018
12:46:11
Но я понимаю.

Konstantin
28.03.2018
12:46:26
да нет никакой другой возможности это сделать, увы
и не инструменты плохие, инструменты можно свои написать
оверхед тут не особо большой - ну чуть больше строк в шаблонах, ну ладно. кто там их считает, взамен получаются надежные гарантии того, что ты на сайте не напишеь 10М пользователей app.hello.message, %username%

Pavel
28.03.2018
13:35:40
Кто-нибудь сталкивался в compiller pass с тем что не отрабатывает
$definition->addMethodCall('addApiHandler', [new Reference($id)]);
Никаких ошибок и эксепшенов
Трото метод не вызывается

Vladislav
28.03.2018
13:39:21
Почисть кеш
И компайлер пас делает билд сервиса. Он его не инстанциирует
И когда у тебя компайлер пас вызывается ? Там 4 состояния

Pavel
28.03.2018
13:41:01
Почисть кеш
делаю так
php bin/console cache:clear --env=test --no-warmup

Vladislav
28.03.2018
13:41:47
Почитай доку )) там есть до оптимизации и после
Как ты знаешь что метод не вызывается ?

Google

Konstantin
28.03.2018
13:43:40

Pavel
28.03.2018
13:44:31

Konstantin
28.03.2018
13:45:08
какой именно метод должен вызваться?

Pavel
28.03.2018
13:45:09
в аналогичных работает вызов

Konstantin
28.03.2018
13:45:20
addApiHandler?

Pavel
28.03.2018
13:45:21

Konstantin
28.03.2018
13:45:34
он должен вызваться, когда ты затребуешь этот сервис из контейнера

Admin
ERROR: S client not available

Konstantin
28.03.2018
13:45:42
а не в момент компиляции контейнера

Pavel
28.03.2018
13:47:52

Konstantin
28.03.2018
13:48:10
слушай, если я тебе отвечу "потому что это так работает" - это не покажется грубостью?

Pavel
28.03.2018
13:48:18
lazy load?

Konstantin
28.03.2018
13:48:29
типа того
ты можешь открыть скомпилированный файл контейнера (валяется в кеше - там просто пхп-класс читаемый)
и увидеть, в каком месте появились вызовы твоего метода

Bohdan
28.03.2018
13:49:02

Konstantin
28.03.2018
13:49:03
и сразу все станет ясно

Bohdan
28.03.2018
13:49:09
как-то напоролся

Pavel
28.03.2018
13:49:59

Konstantin
28.03.2018
13:51:10
стоит один раз просто понять как это работает и дальше интуитивно будешь понимать, где компайл-тайм, а где ран-тайм

Google

smile
28.03.2018
13:54:34
Всем привет, может кто подсказать какой-то годный агрегатор/менеджер кронов? - хз как это правильно назвать. Что хотелось бы от него:
- смотреть аналитику чё когда реально запускалось, чё сколько работало
- смотреть аналитику чё сколько выжирало памяти/сколько запросов делалось
- посмотреть какие кроны работали одновременно
- устанавливать время запуска (от интерфейса вебмина и залипания опций выбора часов/минут у меня уже кровоточат глаза и дергается рука)
и т.д.

Konstantin
28.03.2018
13:56:13
мы свой написали, прям почти под все требования подходит, кроме редактирования из веб-морды
но, к сожалению, его отчуждать будет сложно, поэтому, не поделюсь

smile
28.03.2018
13:56:44

Konstantin
28.03.2018
13:57:17
но могу сказать, что кода там не особо много - 500 строк в сумме на silex-е
но правда часть кода - это сам супервайзор и много чего делает паппет и консул

smile
28.03.2018
13:58:26
а то чёт я погуглил, ничего готового адекватного не нашел.... неужели всё так печально.... казалось задача которую точно уже должен был ктото решить

Pavel
28.03.2018
14:03:31

Konstantin
28.03.2018
14:04:53

Pavel
28.03.2018
14:05:32

smile
28.03.2018
14:06:15

Pavel
28.03.2018
14:06:37
? туплю сегодня

Dmitriy
28.03.2018
14:06:58
можете извратиться и jenkins заюзать )

Konstantin
28.03.2018
14:07:49
как по дезигну лучше сделать - /shops/150/categories или /categories?shop=150 ?
не могу решить что выбрать

smile
28.03.2018
14:10:06

Konstantin
28.03.2018
14:11:10
что выбирать - сам решай, исходя из ситуации