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

Sergey
11.05.2018
07:30:14

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

Maksim
11.05.2018
07:32:04

Google

Dmitry
11.05.2018
07:33:02

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

Maksim
11.05.2018
07:34:19

Shmaltorhbooks
11.05.2018
07:34:35
slowlog?

Denis 災 nobody
11.05.2018
07:34:58

Ihor
11.05.2018
07:35:04

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

Ihor
11.05.2018
07:35:28

Maksim
11.05.2018
07:35:42

Google

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

Dmitry
11.05.2018
07:36:12

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

Борис
11.05.2018
07:49:49

Dmitry
11.05.2018
07:50:38

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

Dmitry
11.05.2018
07:54:35

Борис
11.05.2018
07:54:52

Maksim
11.05.2018
07:55:12

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

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 Проверяет что был создан юзер, там могут ошибки вылетить, ексепшены. Возможно стоит добавить параметры какие, для наглядности

Sergey
11.05.2018
08:44:48

Ihor
11.05.2018
08:45:02

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)));
ток мне надо будет тебе вопросы позадавать