
Urmat
24.01.2018
05:52:33
Теперь нужно разбить путь файла логирования на папки. Хотелось бы видеть путь примерно такого создержания var/logs/2018/01/24/banking.log Можно ли это сделать в yml файле?

Andrew
24.01.2018
05:57:28

Andrew
24.01.2018
06:02:44
Скажите пожалуйста можно ли ограничит обьект
* @ORM\Column(type="object", length=55, unique=true)

Google

Andrew
24.01.2018
06:03:31

Andrew
24.01.2018
06:05:25
Я так понимаю это метод который валидирует данные при создании обьекта?

Andrew
24.01.2018
06:10:43
Я так понимаю это метод который валидирует данные при создании обьекта?
нет, это сеттер в котором ты тайпхинтишь тип обьекта который ты ожидаешь в сущности. У тебя два способа валидации — явный и неявный. Явный — использовать тайпхинты или делать в сеттере instanceof и бросать эксепшн, неявный — заязать всякие симфони валидаторы. Доктрине все равно на тип обьекта, она его засериализует и засунет в бд. Можно еще сделать свой кастомный тип поля, в котором ты будешь делать все эти проверки, но имхо это не то.

Andrew
24.01.2018
06:11:57
Я понял, спасибо)

Artem
24.01.2018
07:08:30
кто на чем асинхронные веб-приложения пишет?

Эмин
24.01.2018
07:10:11
go

Mikhail
24.01.2018
07:10:22
нода

Sergey
24.01.2018
09:01:10
котлин)

Bohdan
24.01.2018
09:03:30
осталось выбрать, че дальше глянуть - го или котлин

Sergey
24.01.2018
09:12:47
и то и то смотри
полезно)

Sergey
24.01.2018
09:12:48

Google

Sergey
24.01.2018
09:13:00
недельку на одном. недельку на другом)

Vladislav
24.01.2018
09:22:40

Sergey
24.01.2018
09:23:15

Vladislav
24.01.2018
09:23:23
ладно, я хотел набросить с самого утра

Daniel
24.01.2018
09:28:37
Ребята, а можете рассказать как вы покрываете код тестами после того как сделали новую фичу (или перед)? Как апишки тестируете?

Sergey
24.01.2018
09:29:50
(правда e2e только начинаем писать)

Sergey
24.01.2018
09:30:23
а e2e как пишите?

Daniel
24.01.2018
09:30:31
Вот у нас в проекте тестится если POST запрос на создание, то мы сендим JSON, далее проверяем респонс по собственной либе:
{
"id": "@integer@",
"comment": "my test message",
"createdBy": {
"id": "@integer@",
"email": "admin@stfalcon.com"
},
"createdAt": "@string@"
}
Ну тут типа независимы от createdAt, и id, которые динамичны.

Sergey
24.01.2018
09:30:33
полный blackbox и тестируете из отдельного приложения?
всякими селениумами

Sergey
24.01.2018
09:31:06

Sergey
24.01.2018
09:31:34
хреново что он на ноде)
а как поднимаете инфраструктуру?

Sergey
24.01.2018
09:31:45

Daniel
24.01.2018
09:31:51
Что есть E2E? Проход сценария от начала до конца?

Sergey
24.01.2018
09:31:55

Daniel
24.01.2018
09:32:00
Всякие клики по кнопочкам и ассерты?

Sergey
24.01.2018
09:32:04

Google

Sergey
24.01.2018
09:32:40
ну и интеграционные тесты API тоже)
(бо баг может быть в приложеньке использующей API)

Daniel
24.01.2018
09:33:16
Ну вот да, в остальном только отнимает время и ограничивает
А как такие кейсы придумать разработчику? Не ответственность ли это QA?
Как бы это он всякое говно выдумывает, сценарии и т.п.

Sergey
24.01.2018
09:33:41
начать со смоук тестинга можно
и базовых сценариев
без негатива
ну т.е если есть регистрация, то проверяем что она проходит
если есть поиск и фильтрация, то они должны работать
а детали это к юнит тестам и интеграционным

Sergey
24.01.2018
09:34:48
и этим и закончить) негативы не через e2e должны идти. Да даже с позитивными можно смело ограничиться не просто позитивными, а теми позитивными которые составляют хэпи пас пользователя (то что большинство юзает всегда)

Sergey
24.01.2018
09:35:09
да, я за эти базовые и говорю
чуть больше чем смоук тестирование

Sergey
24.01.2018
09:35:32
пробежаться что бы убедиться что ты не сломал фичи которые дают тебе большую часть прибыли)_

Daniel
24.01.2018
09:36:32
А негатив тестерам руками проверять?

Sergey
24.01.2018
09:36:43
юнит тестами
более детальными
тестеры эксплоринг тестированием заниматься должны

Google

Sergey
24.01.2018
09:37:37
маленькое уточнение - для юнит тестов нужен тестируемый код, то есть код с довольно низкой связанностью
большинство на этом погорают и переключаются на интеграционные

Daniel
24.01.2018
09:37:51
Негатив == исключительные ситуации?

Alex
24.01.2018
09:37:58
опять за тесты разговарием :) Привет всем!

Sergey
24.01.2018
09:38:23
надо по if-ам смотреть короч)

Sergey
24.01.2018
09:43:53
puppeteer а как у него с асинхронностью?

Admin
ERROR: S client not available

Sergey
24.01.2018
09:43:55
всякими реактами

Sergey
24.01.2018
09:45:08
а как у хрома со всякими асинхронностями? а как у селениума?) да никак, пиши сам слипы все эти и ожидания.
ну либо обертки готовые юзай
https://github.com/GoogleChrome/puppeteer/issues/704
waitForFunction и waitForNavigation есть
ну короч норм все

Sergey
24.01.2018
09:47:02
вот где мне пригодится kotlin/js

Sergey
24.01.2018
09:47:09
может быть)
хз как по мне на js такие штуки писать проще)
есть еще неплохие доклады от фэйсбука где они рассказывают как они упрощали жизнь с e2e

Sergey
24.01.2018
09:49:54
над глянуть


Yuriy
24.01.2018
11:17:48
Добрый день буду рад подсказкам с доктриной
вот моя схема
http://prntscr.com/i4uv69
мне нужно к имеющей выборке добавить выборку данных о складе, т.е. связать еще 2 таблицы
нативный sql:
SELECT (p0_.product_id) AS sclr_0, p0_.product_sn_id AS product_sn_id_1, p0_.sn AS sn_2, p1_.price_value AS price_value_3, p2_.name AS name_4, c3_.code AS code_5, p0_.comment AS comment_6, w.name
FROM prices p1_
INNER JOIN product_sn p0_ ON p1_.product_sn_coll = p0_.product_sn_id
INNER JOIN price_type p2_ ON p1_.price_type_coll = p2_.price_type_id
INNER JOIN currency c3_ ON p1_.currency_coll = c3_.currency_id
— подвязка склада
INNER JOIN product_to_warehouse ptw ON p0_.product_sn_id = ptw.product_sn_coll
INNER JOIN warehouses w ON ptw.warehouse_coll = w.warehouse_id
WHERE p0_.product_id = '2'
но с доктриной все печально.
$query2 = $em2
->select('(psn.productId)', 'psn.productSnId as productSnId', 'psn.sn', 'p.priceValue', 'pt.name as priceType', 'cur.code','psn.comment')
->from('TBundle:Prices', 'p')
->innerJoin('p.productSnColl', 'psn')
->innerJoin('p.priceTypeColl', 'pt')
->innerJoin('p.currencyColl', 'cur')
->where('psn.productId = :productId')
->setParameter('productId', $productId)
->getQuery()
->getResult()
;
Как подвязать склады в доктрине?

Google


Andrew
24.01.2018
11:25:05
Добрый день буду рад подсказкам с доктриной
вот моя схема
http://prntscr.com/i4uv69
мне нужно к имеющей выборке добавить выборку данных о складе, т.е. связать еще 2 таблицы
нативный sql:
SELECT (p0_.product_id) AS sclr_0, p0_.product_sn_id AS product_sn_id_1, p0_.sn AS sn_2, p1_.price_value AS price_value_3, p2_.name AS name_4, c3_.code AS code_5, p0_.comment AS comment_6, w.name
FROM prices p1_
INNER JOIN product_sn p0_ ON p1_.product_sn_coll = p0_.product_sn_id
INNER JOIN price_type p2_ ON p1_.price_type_coll = p2_.price_type_id
INNER JOIN currency c3_ ON p1_.currency_coll = c3_.currency_id
— подвязка склада
INNER JOIN product_to_warehouse ptw ON p0_.product_sn_id = ptw.product_sn_coll
INNER JOIN warehouses w ON ptw.warehouse_coll = w.warehouse_id
WHERE p0_.product_id = '2'
но с доктриной все печально.
$query2 = $em2
->select('(psn.productId)', 'psn.productSnId as productSnId', 'psn.sn', 'p.priceValue', 'pt.name as priceType', 'cur.code','psn.comment')
->from('TBundle:Prices', 'p')
->innerJoin('p.productSnColl', 'psn')
->innerJoin('p.priceTypeColl', 'pt')
->innerJoin('p.currencyColl', 'cur')
->where('psn.productId = :productId')
->setParameter('productId', $productId)
->getQuery()
->getResult()
;
Как подвязать склады в доктрине?
если тебе нужен отчет — делай SQL запрос, доктрина не о выборках а об обьектах и связях между ними, которые можно сохранить в сторадже. Непонятно, что печально с доктриной, не получается сделать запрос через DQL?


Alan
24.01.2018
11:28:03
а почему цены отдельной сущностью? не usd_price, rub_price ?)

Andrew
24.01.2018
11:29:18
ну или есть желание поиграть в нормализацию

Alan
24.01.2018
11:30:09
ну колонку добавить удалить тоже можно, а связи сильно упрощает и код

Роман
24.01.2018
11:30:45
Ребят посоветуйте мониторинг производительности symfony

$iD
24.01.2018
11:32:27
мб тебе профайлер просто нужен

Sergey
24.01.2018
11:32:43

Andrew
24.01.2018
11:32:44

Alan
24.01.2018
11:32:48
blackfire
если прям мониторить то там тариф выше с тестами
или newrelic

$iD
24.01.2018
11:33:20
xhprof туда же

Sergey
24.01.2018
11:33:21
возможно достаточно писать в логи время обработки запросов и оттуда сделать себе график по интерсующим тебя эндпоинтам
если чет более серьезное то пушить в прометеус и в графане выводить

Роман
24.01.2018
11:34:02

Sergey
24.01.2018
11:34:17
https://www.martin-helmich.de/en/blog/monitoring-nginx.html

Andrew
24.01.2018
11:34:18
кстати https://tideways.io/ кто-то юзал?