
Ilya
05.12.2016
14:10:15
ну максимум 30 минут еще на его настройку

Aleh
05.12.2016
14:10:51
д-д-д-докер

Pavel
05.12.2016
14:10:56
Ну эт DO, а я ж "экономлю" в OVH
Прост пока веб сервер поставишь заного, пока протестишь его работу пройдет не один день. А ведь еще есть таски

Google

Aleh
05.12.2016
14:13:54
не один день ?

Konstantin
05.12.2016
17:45:48
жесть)

Ilya
05.12.2016
18:33:28
потратил оплачиваемую работодателем неделю времени
@
отчитался об экономии в 2$ в месяц

Valentin
05.12.2016
18:34:44
За пять лет окупится
А там, того глядишь, и Лексус можно купить. Смотрите в перспективе

Ilya
05.12.2016
18:37:31
лучше позиционировать это как обучение себя девопсу, а не экономия
тогда будет положительный оттенок)

Sergey
05.12.2016
19:54:03
пыщ
ооооо
наконец бан прошел)

Dmitriy
05.12.2016
19:54:35
ща исправим =)

Sergey
05.12.2016
19:54:44
удачи)

Google

Dmitriy
05.12.2016
19:58:42

Sergey
05.12.2016
20:06:12
до 7.1 уже пообновлялись?

Dmitriy
05.12.2016
20:06:38
не
она только вышла
даже в репах нету

Sergey
05.12.2016
20:07:55
в репах уже давно лежит

Dmitriy
05.12.2016
20:09:01
зависит от ос =)

Sergey
05.12.2016
20:09:15
на убунте и в brew на маках уже есть

Dmitriy
05.12.2016
20:09:42
в остальных то нету

Sergey
05.12.2016
20:09:57
остальные это что? федора или центос?
фря?

Dmitriy
05.12.2016
20:10:09
deb, centos

Sergey
05.12.2016
20:10:36
ну для deb есть же пакетик https://launchpad.net/~ondrej/+archive/ubuntu/php

Dmitriy
05.12.2016
20:10:49
это не дебиан

Sergey
05.12.2016
20:11:02
разве не подойдет на него?

Dmitriy
05.12.2016
20:11:39
может. но так делать нельзя

Sergey
05.12.2016
20:12:51
дебиан у меня всегда ассоциировался со слоупоком в плане пакетов

Dmitriy
05.12.2016
20:13:33
бывает

Sergey
05.12.2016
20:14:01
там хоть можно поставить ну не знаю, 3й питон или 7ю джаву из пакетов?)

Dmitriy
05.12.2016
20:14:26
да да

Google

Andrew
05.12.2016
20:16:03
хм, 7.1 нет
отбой

Dmitriy
05.12.2016
20:17:50

Andrew
05.12.2016
20:20:32
чет странно, обычно оперативно пакуют
https://github.com/gplessis/dotdeb-php/issues/155

Ivan
05.12.2016
20:27:02
ребята, использовать эксепшны для валидации реквеста - это ОК?

Sergey
05.12.2016
20:27:31
в плане?

Ivan
05.12.2016
20:30:51
пользователь шлёт данные, при валидации, если какой-то атрибут запроса не валиден, выбрасывать исключение, которое ловить где-нибудь выше и отдавать юзеру ответ с ошибкой
либо пытаться изменить сущность, которая при попытке перейти в невалидное состояние выбрасывает исключение

Sergey
05.12.2016
20:32:00
а что если надо будет все невалидные поля сразу показать?

Ivan
05.12.2016
20:32:17
туго тогда

Sergey
05.12.2016
20:32:29
ну и вообще эксепшены для такого это не очень

Ivan
05.12.2016
20:32:30
надо валидировать предварительно запрос

Sergey
05.12.2016
20:32:33
это по сути бизнес логика
а эксепшены это для исключительной логики, а не то что вызвал юзер в принципе

Ivan
05.12.2016
20:34:09
то есть эксепшены должны обозначать, что разработчик должен пофиксить код ?
ну либо что-то само поднимется
то есть не должно такого быть, что какой-то пользовательский запрос может постоянно гонять исключения по системе?
я не имею ввиду uncaught exception

Google

Sergey
05.12.2016
20:37:24
эксепшены это если система не может обработать какую-то ситуацию
ты запрашиваешь not null юзера по айдихе? эксепшен
закончилось место на диске? эксепшен
лежит какое-то апи или база? эксепшен
передают херню в параметрах где должен быть string допустим? тоже invalidparameter exception
ну и тд
а ловится и обрабатываться они могут на разных уровнях
но валидация явно не тот случай)

Ivan
05.12.2016
20:38:33
а route not found - это эксепшн?
или это не исключительная ситуация?

Sergey
05.12.2016
20:39:03
NotFoundHttpException)

Ivan
05.12.2016
20:39:08
я имею ввиду, подходит сюда эксепшн?
да я знаю, что их есть куча

Sergey
05.12.2016
20:40:22
там все что выше 400й ошибки это уже эксепшены

Admin
ERROR: S client not available

Ivan
05.12.2016
20:41:10
не, я всё понимаю, так в симфони и прочее, я просто думаю, в каких ситуациях правильно использовать эксепшн
MethodNotAllowedException - это же тоже похоже на валидацию запроса

Sergey
05.12.2016
20:43:46
ну так вышло что роутинг это сплошные исключительные ситуации)
но если юзер ввел хрень в полях, ты сам же формируешь ответ где указаны поля, какие ошибки и ему статус 400 выдаешь

Ivan
05.12.2016
20:47:34
эксепшены в бизнес логике в идеале(при отсутствии багов) никогда не должны выбрасываться, так?

Sergey
05.12.2016
20:47:43
я б наверное даже так сказал. http эксепшены должны быть выброшены только на уровне контроллера(не в сервисах), либо на уровне диспатчинга до контроллера
ну сложно даже придумать кейс где больше подходят эксепшены для описания бизнес логики
вон в go их вообще нет)
я вообще люблю эксепшены и мне лучше выбросить лишний раз эксепшен, чем вернуть богомерзкий null?

Taras
05.12.2016
20:55:03

Google

Sergey
05.12.2016
20:57:16
например кейс, у тебя есть класс куда передаешь аргумент, а он выбирает нужную тебе стратерию из доступных
если нет подходящих, вернуть null? ок, выясняй потом по логам откуда взялся вызов null вместо обьекта. когда можно выбросить эксепшен в котором будет сказано что нет такой стратегии для твоего кейса и хрена ты сюда вообще передал такой параметр?

Ivan
05.12.2016
20:57:41
так правильно, конечно
это эксепшн, который указывает на то, что ты должен пофиксить код

Sergey
05.12.2016
20:58:27
ну да, либо добавить новую стратегию, которая будет обрабатывать этот кейс, либо выяснить откуда взялся вызов с невалидным параметром
к примеру это мог быть null вызов ?
о валидации входящих данных

Ivan
05.12.2016
21:00:10
просто я тут захотел взять за правило использовать эксепшн только в случаях, когда необходимо править код (LogicException) и в некоторых ситуациях типа закончилось место на диске или сторонний сервис не доступен (RuntimeException)

Sergey
05.12.2016
21:00:14
$invoice = $order->getInvoiceById($shipmentId);
if (null === $invoice) {
throw new BadRequestHttpException('Invalid shipment id');
}
это прям в контроллере, на старте

Ivan
05.12.2016
21:00:38
вот такой эксепшн я бы бросал из getInvoiceById

Sergey
05.12.2016
21:00:53
да, именно
правда там перехват нужен был бы

Ivan
05.12.2016
21:01:17
ну http, да

Sergey
05.12.2016
21:01:17
иначе это 500я ошибка
try{
$invoice = $order->getInvoiceById($shipmentId);
}catch (NotFoundException $e){
throw new BadRequestHttpException('Invalid shipment id');
}
чета в таком духе

Ivan
05.12.2016
21:02:40

Sergey
05.12.2016
21:03:10
http://php.net/manual/en/spl.exceptions.php тут кстати если почитать о каждом эксепшене, там расписано в каком случае какой юзать
Exception that represents error in the program logic. This kind of exception should lead directly to a fix in your code.

Ivan
05.12.2016
21:05:12
да, видел это
что будет, если бросить LogicException вместо OutOfBoundsException ?