
Sergey
14.05.2018
22:01:29
ой короч я не шарю в ECS что бы тебе что-то за нее вещать, у меня это в todo
а то всякий раз как всякие гем деверы появляются я проигрываю ибо не могу парировать в силу скудных знаний
может через пол годика доберусь

Kirill
14.05.2018
22:02:36
ну я хотел что-то вроде такого запилить:
https://gist.github.com/SerafimArts/262d38931372713f24b2775e9b002529#file-entityinterface-php-L51-L58

Google

Kirill
14.05.2018
22:03:45
но получилось, что-то невменяемое, потому что нужны ещё какие-то "провайдеры", которые на основе этого AST будут фигачить компоненты
а системы превращаются в валидаторы
короче, хрень, опять тупик
так что забей)

Sergey
14.05.2018
22:05:09
ну ладно но занятно)

Kirill
14.05.2018
22:05:59
я уже месяца два пытаюсь придумать как это реструктурировать так, чтобы потом не тошнило от кода
=\

Sergey
14.05.2018
22:37:17
я плохо понимаю задачу


Kirill
14.05.2018
22:52:15
@fes0r я тоже) Там надо долго рассказывать о том, что было, что стало и какие проблемы я пытаюсь решить сейчас.
Короче, в любом многопроходном инкрементальном компиляторе есть две особенности:
1) Наличие кучи со структурами
2) Наличие на руках исходного кода (в любом виде), т.е. по факту желательно резидентное поведение
У каждой структуры можно вывести несколько "характеристик" (т.е. компонентов или аттрибутов, пофигу на термины, отсюда мои заморочки про EAV/ECS) - это:
1) Наличие приоритета/очереди сборки. Все дефинишены располагаются наверху кучи, все вызовы - внизу.
2) Наличие отладочного стека (в т.ч. позиции структуры в исходнике)
3) Наличие контекста выполнения, сам контекст стековый (файл, стек вызовов, набор переменных)
4) Возможность смены контекста (объявление каких-то типов или модуля/неймспейса).
5) Возможность вызовов типов внутри контекста
6) Возможность получения отношений для линкера (или автолоадинг, как угодно можно называть). Вызов типов должно идти вверх по стеку контекстов, вплоть до глобального и пытаться резолвить типы оттудова
7) Возможность объявления типов внутри.
8) Наличие на руках AST
Для примера, объявление неймспейса должно:
1) Создавать (изменять) новый контекст.
2) Допускать создание дефинишенов внутри.
А типа/объекта:
1) Создавать контекст
2) Допускать создание дефинишенов
3) Возвращать отношения (типы в полях, интерфейсы и прочее).
4) Иметь первоочередной приоритет при добавлении в очередь.
Сообщенька выше - это не повод подумать, а просто я жалуюсь, ибо сложна %)


Евгений
15.05.2018
07:41:26
Если вам предстоит работать с людьми, которые обучались в Skillup, гоните их ссаными тряпками
или бегите оттуда
бегите и не оглядывайтесь

Google

Evgeniy
15.05.2018
07:42:33
ты думаешь не реально стать программистом за 24 часа или за неделю ?)
или сколько там идут их курсы)
желающих войти в айти много же ))

Евгений
15.05.2018
07:43:33
Нам с пацанами «повезло» вдвойне, приходиться работать с бабой, которая там на ТЕСТИРОВЩИКА училась
это ад

Evgeniy
15.05.2018
07:43:52
проблема не в том где человек учился
а проблема в том что после курсов людей берут на мидлов
или упаси боже сеньоров

Евгений
15.05.2018
07:44:13

Evgeniy
15.05.2018
07:44:30
если человек только входит в айти лучшая должность это стажер
вместо тысячи курсов иди стажером хоть куда имхо
платить за обучение не надо
если ты адекватный предложат позицию джуниора, а пока не предложили можешь пилить таски что тебе дали (не дадут ничего критичного)
зато будут обучать и узнаешь как оно на самом деле

Roman
15.05.2018
07:52:48
нужен совет: хочу некий кусок кода вынести для повторного использования, но при етом сделать его максимально гибким. Меня смущают ивенты. Если комуто потребуется использовать мой метод без ивентов? Как их можна вынести? в переменную, clouser? или не парится и пусть не слушают их если не нужно?
$dispatcher->dispatch(Event\Events::handleEvent($type), $handleEvent);
$em = $this->getDoctrine()->getManager();
$em->persist($entity);
$em->flush();
$persistEvent = new Event\PersistEvent($request, $entity);
$dispatcher->dispatch(Event\Events::persistEvent($type), $persistEvent);
....

Maksim
15.05.2018
07:55:03
кажется, суть событий ты не до конца понимаешь
событие - это оповещение о том, что что-то произошло. Его слушают только заинтересованные. И с момента публикации события, ты на его судьбу кладёшь большой болт. Кто и как его потом будет обрабатывать - не вопрос для кода, который его паблишет.

Roman
15.05.2018
07:58:18
я понимаю, ето. но если его ктото обрабатывает гглобально, то слать я его не хочу когда попало
ладно оставлю как есть

Bohdan
15.05.2018
08:18:28

Google

Roman
15.05.2018
08:22:44
ок спс

Valentin
15.05.2018
08:22:50
Это уже не событие будет, но судя по всему тебе подойдёт

F01134H
15.05.2018
08:50:28
Хм, а нормальная ли практика проверять if ($statement), учитывая что $statement не булево значение, а какой-нибудь null?
мб правильнее будет if (null !== $statement)
+ сразу видно, что проверка на null идет, а не на false

Егор
15.05.2018
09:00:33
А ещё лучше не писать методы, которые могут вернуть как null, так и false

F01134H
15.05.2018
09:01:10
ну я тащемто и не про метод говорю
вот есть у меня свойство класса, оно может быть null или ссылаться на какое то значение. Как правильнее будет чекнуть

Evgeniy
15.05.2018
09:30:41

F01134H
15.05.2018
09:30:52
я знаю про is_null

Evgeniy
15.05.2018
09:30:53
null !== null всегда

F01134H
15.05.2018
09:31:02
чоо

Evgeniy
15.05.2018
09:31:15
хотя это же пхп может быть тут так можно)
чоо
в нормальных языках или бд проверку на нулл надо специальным образом делать

F01134H
15.05.2018
09:33:04
null === null

Evgeniy
15.05.2018
09:33:18
но я бы не приучался так делать)))

F01134H
15.05.2018
09:33:34
ок, спасибо за совет

Ігор ツ
15.05.2018
09:33:45
Всем привет. Поможет кто перепилить маленькую функцию для вордпрес? Работает но не так как нужно.

Google

Andrey
15.05.2018
10:44:41
доброго времени суток
использует друг PHpOfficeWord
при попытке сохранить файл ошибка, Fatal error: Uncaught PhpOffice\PhpWord\Exception\Exception: Could not close zip file result_of_calculation.docx
да, права поставили полные
прикол в том что если быстро нажимать сохранить файл, то через раз сохраняет, а через раз ошибку выбирает что не хватает прав

Alexander
15.05.2018
11:00:53
Так может там попытка в один и тот же файл писать одновременно?

Andrey
15.05.2018
11:12:58

Виктор
15.05.2018
11:15:57
"прикол в том что если быстро нажимать сохранить файл"
Сами же пишете. Файл не мгновенно же формируется

Alexander
15.05.2018
11:21:40

Andrey
15.05.2018
11:27:52

Alexander
15.05.2018
11:28:49

Admin
ERROR: S client not available

Anton
15.05.2018
13:17:42
Всем привет. Народ помогите решить проблему пожалуйста.
Где-то что-то течет, понять не могу. Ларка с доктриной. Вот из самих логов инфа https://paste.laravel.io/8a850ab6-e4fc-410b-ae0d-3ae6bb1ba946
В какую сторону копать подскажите пожалуйста.

Evgeniy
15.05.2018
13:21:47
ну вообще не сильно течет
в логах это не понятно где нет полного stacttrace ошибки

Борис
15.05.2018
13:22:35
Добавь памяти до гигов 2 (вдруг ничего не течет, просто 600 мб хватит). Если хватит, ставь профайлер, смотри почему столько жрет. Если не хватит, значит дело совсем плохо и будет какой-нибудь жирный цикл, рекурсия. Ее искать просто дебагером

Anton
15.05.2018
13:27:00

Evgeniy
15.05.2018
13:27:34
из лога nginx

Anton
15.05.2018
13:27:55

Evgeniy
15.05.2018
13:28:05
request: "POST /graphql
верней тут ошибка

Andrew
15.05.2018
13:28:11

Anton
15.05.2018
13:28:28
он не может вызывать, т.к. это SPA, там nginx просто одает html напрямую

Борис
15.05.2018
13:28:44

Google

Evgeniy
15.05.2018
13:28:49
пост запрос приходит при вставке чего то
попробуй поднять лимит как уже писали выше

Anton
15.05.2018
13:29:31

Evgeniy
15.05.2018
13:29:48
на момент ошибки
1. надо научиться повторять ошибку
2. смотреть отладку и профайлер

Anton
15.05.2018
13:30:35
Поднять лимит не так просто, его по просту нету на проде. плюс проблема носит хаотичный характер, я не могу её воспроизвести, вижу только в логах

Борис
15.05.2018
13:30:52
Значит добавь больше логов

Виктор
15.05.2018
13:30:57
залогируйте post данные

Anton
15.05.2018
13:32:03

Evgeniy
15.05.2018
13:32:38
ротация логов спасет
и сохраняй в error.log
делаешь log_format свой
потом в error_log /var/log/...../error.log new_log_format;
[$request_body] - Это все тело

Andrew
15.05.2018
13:37:26
да банально тот же sentry подрубить и мониторить ошибки
я правда не помню, он memory exhausted ошибки ловит или нет
ну или bugsnag