@prophp7

Страница 1069 из 1387
Denis 災 nobody
11.05.2018
07:29:50
как можно объединить xhprof дампы?

Denis 災 nobody
11.05.2018
07:30:39
Его же можно использовать для постоянного запуска, но он тогда спамит отчётами

Maksim
11.05.2018
07:32:04
это ж php, язык полавинчатых и необдуманных решений
ну, они, вроде как, начали делать что-то вменяемое в последние годы. Но трейты... я так и не понял их предназначения( лень в обдумывании разве что закрывать

Google
Dmitry
11.05.2018
07:33:02
хомячки кинулись прятать под этот соус недостатки архитектуры; гуру начали заявлять про N методов на класс, мол, всё чётенько... в итоге в трейты унесли всё то, что не хочется показывать :)
в итого все равно все в выигрыше. Теперь на слабых проектах при изменениях тебе не надо лазить по всему проекту и менять что то в 30 местах, есть трейт :)

Maksim
11.05.2018
07:33:35
точнее так: что бы изменения затронули только 15)

Denis 災 nobody
11.05.2018
07:33:56
И как посмотреть, если mysqli.... 60% времени проца ест, почти секунду - какой там запрос

Dmitry
11.05.2018
07:34:04
угу. особенно круто получится, если из 30 мест надо поменять в 15
даже тут проще получается, накинул иф и готово

Maksim
11.05.2018
07:34:19
даже тут проще получается, накинул иф и готово
ты не чувствуешь печали в этом?)

Denis 災 nobody
11.05.2018
07:34:58
Ihor
11.05.2018
07:35:04
show full processlist?
в секунду тяжко будет )

Dmitry
11.05.2018
07:35:16
ты не чувствуешь печали в этом?)
печаль была когда я недавно проект доделывал, там в 20 местах подключение к бд с логином и паролем. Вот что бы поменять их прошлось пол часа убить )

Google
Denis 災 nobody
11.05.2018
07:35:42
Хотя можно курл & и шоу

slowlog?
Он уже умеет 0.5?

Dmitry
11.05.2018
07:36:12
выносить коннект к бд в трейт - ну такое себе решение :)
я бы не против был, если бы он просто инклудом сделан был где то

выносить коннект к бд в трейт - ну такое себе решение :)
просто понмание как надо приходит не быстро, а иногда совсем не приходит. Но трейты позволяют сделать код более "чистым" читабельным

Maksim
11.05.2018
07:38:27
согласен с последним постом на половину)

Борис
11.05.2018
07:49:49
просто понмание как надо приходит не быстро, а иногда совсем не приходит. Но трейты позволяют сделать код более "чистым" читабельным
Только если трейт написан ну ООООчень продуманно, и несет чисто реализацию какого-то технического интерфейса. (например, в каком-то дополнительном экстеншне доктрины такие есть) А когда условный "я ж программист" начинает хреначить в трейты "патамушта красива" то ну его нахер

Maksim
11.05.2018
07:53:35
т.е. лучше копипаста?
лучше с мозгами подходить к решению задачи) а они редко подразумевают под собой копипасту)

Dmitry
11.05.2018
07:54:35
лучше с мозгами подходить к решению задачи) а они редко подразумевают под собой копипасту)
лучше сразу писать идеально и без багов и так что бы переделывать вообще не приходилось. Но я что то такого в реальной жизни не видел ;)

Борис
11.05.2018
07:54:52
т.е. лучше копипаста?
Такое чувство, что у тебя есть только две лопаты, копипаста и трейты?

Dmitry
11.05.2018
07:55:32
Maksim
11.05.2018
07:56:32
давай от обратного: до появления трейтов вера в каких богов запрещала мерзким человекам прятать копипасту с помощью доступных вариантов?)

Dmitry
11.05.2018
07:56:44
Вы просто абстрагируйтесь и представьте, вы пришли на новый для вас проект. Вам надо допиливать функционал и вносить правки. С чем удобнее будет работать с кучей копипасты или с трейтами

Maksim
11.05.2018
07:56:54
да бля

Борис
11.05.2018
07:57:07
Опять копипаста :( Ну вынеси ты общий код в другой класс, который делает то, что тебе нужно

Maksim
11.05.2018
07:57:18
если в эти трейты запрятана бездумная копипаста, то я лучше первый вариант выберу

Dmitry
11.05.2018
07:57:47
вот, так все и делали. 100 уровней наследования

с трейтами работать попроще будет

Maksim
11.05.2018
07:58:06
а в чём разница между трейтом и utils классом?)

Google
Anton Saprykin
11.05.2018
07:58:08
Если бы да кабы

Dmitry
11.05.2018
07:58:27
а в чём разница между трейтом и utils классом?)
он может включать контекст класса

Maksim
11.05.2018
07:58:42
а трейты часто у тебя завязаны на контекст класса?)

или там всё же копипаста запрятана?)

Dmitry
11.05.2018
07:59:15
Maksim
11.05.2018
07:59:34
ну, значит ты не прячешь копипасту, а код неправильный пишешь) только и всего)

Dmitry
11.05.2018
07:59:45
или там всё же копипаста запрятана?)
трейт это и есть по сути копипаста. Но изолированная в одном месте

Maksim
11.05.2018
08:00:00
как угодно :)

Dmitry
11.05.2018
08:00:50
ну, значит ты не прячешь копипасту, а код неправильный пишешь) только и всего)
что значит не правильный код? Код легко читается, легко поддерживается, выдает верный результат. С чего он не правильный?

Benjamin
11.05.2018
08:02:13
Есть ресурсы, где можно продать уже готовые бизнес-проекты (работающие веб-приложения)?

Maksim
11.05.2018
08:03:47
Я выше пример привёл с изменением поведения) как-то слово "легко" нихера не подходит) Впрочем ладно, я уже всё понял)

Arthur
11.05.2018
08:04:38
А в других языках есть аналоги трейтов? Чтобы посмотреть как правильно

Dmitry
11.05.2018
08:07:24
Evgeniy
11.05.2018
08:08:53
трейты в rust и scala

множественное наследование в плюсах

Sergey
11.05.2018
08:24:55
трейты в rust и scala
трейты в rust и scala это... немного другая штука чем в php. Что до множественного наследования в плюсах - все хорошо если бы не protected.

Evgeniy
11.05.2018
08:25:32
да там не немного а там очень другая штука

Sergey
11.05.2018
08:25:51
это больше на миксины походит, примешивание поведения.

в целом мне нравится идея, при которой "требуемое поведение" подмешивается клиентским кодом а не самим классом (как происходит в случае php-ных трейтов).

Andrew
11.05.2018
08:35:59
Привет, подскажите пожалуйста, нормальный ли это код, я с тестами и Doubles пока первый раз сталкиваюсь

Google
Andrew
11.05.2018
08:35:59
$user = $this->createMock(User::class); $stub = $this->getMockBuilder(UserFactoryInterface::class) ->setMethods(['register']) ->disableOriginalConstructor() ->getMock(); $stub->expects($this->once()) ->method('register') ->will($this->returnValue($user)); $this->assertSame($user, $stub->register([]));

Sergey
11.05.2018
08:37:19
ммм.... непонятно что он проверяет....

ну и через профета ты мог бы записать это как: $stub = $this->prophenize(User::class) $sub->register()->willReturn($user); $sub->revial();

Evgeniy
11.05.2018
08:38:36
Кто то имел опыт со swoole сокетами? Как их протестировать нагрузочным тестированием. Ab же вроде только для http

Sergey
11.05.2018
08:39:03
там хоть на lua можно сценарии написать

Andrey
11.05.2018
08:39:27
wrk тема

Sergey
11.05.2018
08:39:30
а так решений для нагрузочного тестирования с поддержкой web-socket тьма

Admin
ERROR: S client not available

Evgeniy
11.05.2018
08:39:57
Подскажите какое то или где посмотреть

Sergey
11.05.2018
08:40:04
https://artillery.io/ - я вот это юзал

Evgeniy
11.05.2018
08:40:07
Или wrk умеет?

Andrew
11.05.2018
08:41:58
@fes0r Проверяет что был создан юзер, там могут ошибки вылетить, ексепшены. Возможно стоит добавить параметры какие, для наглядности

Andrew
11.05.2018
08:45:08
А как тогда протестировать Factory?

Что фабрика делает что должна и как должна

Там ведь зависимости всякие есть

Sergey
11.05.2018
08:45:34
а там есть логика?

Google
Sergey
11.05.2018
08:45:38
ну мол if-ы всякие

или нет?

Andrew
11.05.2018
08:45:48
не

Sergey
11.05.2018
08:46:02
ну значит это не надо покрывать юнитами, покрой e2e один позитивный сценарий создания пользователя и все

Andrew
11.05.2018
08:46:07
Форматирование данных, типа никнейм приводим к слагу, кодируем пароль

Sergey
11.05.2018
08:46:36
и список того что ты хочешь проверить)

Andrew
11.05.2018
08:46:45
ща

Sergey
11.05.2018
08:46:54
на gist какой закинь

Alexander
11.05.2018
08:47:16
а в чем вообще сложность в тестировании фабрики?

Andrew
11.05.2018
08:47:59
https://paste.ofcode.org/cuZXyRjiwKSXa79ZJnxLJG

Я не нашел образцов на гитхабе

открыл доклад который генерирует

Sergey
11.05.2018
08:48:39
> stringHelper

Andrew
11.05.2018
08:48:40
phpunit —coverage-html coverage

Sergey
11.05.2018
08:48:41
ох, найс

Maksim
11.05.2018
08:48:46
UserDTO прям в глаз бьёт... простите, что не в тему

Sergey
11.05.2018
08:48:55
> $activationToken = preg_replace('/\//', '', base64_encode(random_bytes(55)));

Я не нашел образцов на гитхабе
ты не против если я этот код разберу в виде мини статьи на gist сегодня?

ток мне надо будет тебе вопросы позадавать

Страница 1069 из 1387