@prophp7

Страница 1262 из 1387
Nurik
15.08.2018
16:11:03
Dmitry
15.08.2018
16:12:02
или что под "дистра(ой)" имелось в виду?)

Google
Nurik
15.08.2018
16:12:18
Со своим пакетным менеджером.

Dmitry
15.08.2018
16:12:43
https://www.ubuntu.com/download ?

например как этот?

Vitaly
15.08.2018
16:13:08
Ну это понятно, собрать из сорцов. Но при чем тут пакеты дистра ?
Потому, что это удобно. Один раз пакет собрал, потом не паришься с systemd и прочими вещами.

Dmitry
15.08.2018
16:13:11
в нем apt менеджер есть

Nurik
15.08.2018
16:14:09
Потому, что это удобно. Один раз пакет собрал, потом не паришься с systemd и прочими вещами.
Ну я не спорю, что удобно. Я больше про то, а насколько это правильно в вакансии PHP. Если это норм, то ок.

Vitaly
15.08.2018
16:14:45
В таких ситуациях, в большинстве случаев помогает гугл, если в иксах не полный ноль.

Dmitry
15.08.2018
16:16:12
вообще имхо самому себе локально надо уметь окружение развернуть для работы. На серверах и сервисах это уже больше имхо девопс задача крутить, но иногда все равно опять же приходится. Но где-то это может входить в обязанности

В таких ситуациях, в большинстве случаев помогает гугл, если в иксах не полный ноль.
+. Если нужно чтото установить не совсем уж экзотическое - в гугле можно найти мануал как это сделать. Я в принципе, только так и умею собирать пакеты :) Да и не нужно мне запоминать детали, мне проще загуглить, когда требуется. А требуется не так часто, по крайней мере пока не сталкивался с такой необходимостью

т.е. тут имхо больше про наличие опыта, потому как иногда не все как в мануале идет :)

Nurik
15.08.2018
17:17:47
вообще имхо самому себе локально надо уметь окружение развернуть для работы. На серверах и сервисах это уже больше имхо девопс задача крутить, но иногда все равно опять же приходится. Но где-то это может входить в обязанности
да, я в общем-то не против того, чтобы собирать себе окружение. Но собирать пакеты ос, это что-то для меня необычное в требованиях, поэтому и решил спросить. Ну т.е. как бы это нормальное требование, написать там конфиг systemd ну или демона какого-нибудь и потом завернуть это в пакет.

Google
Nurik
15.08.2018
17:26:36
Потому, что это удобно. Один раз пакет собрал, потом не паришься с systemd и прочими вещами.
Это удобно только для дистрибуции. Но не совсем удобно потом это саппортить, потому что нужно прикручивать скрипт для авто билдов, чтобы были актуальные пакеты. + что гораздо сложнее, как-то разруливать конфликты в зависимостях. Лучше и удобнее оперировать воспроизводимыми окружениями. Но конечно это субъективно.

Andrew
15.08.2018
18:20:59
Вечер добрый, скажите пожалуйста ,как задокументировать, что то динамическое выкидывает ексепшен внутри метода? /** @throws AssertionFailedException */ $this->commandBus->dispatch( Так как команды разные, то и ексепшены внутри их могут быть разные, однако рнрstorm не видит этого и при попытке поймать ексепшен говорит что Exception 'AssertionFailedException' is never thrown in the corresponding try block less... (Ctrl+F1 Alt+T) The inspection reports catch clauses with exceptions which are never thrown from the corresponding try block.

Andrew
15.08.2018
18:24:22
В данном пакете есть магия

protected static function createException($value, $message, $code, $propertyPath = null, array $constraints = array()) { $exceptionClass = static::$exceptionClass; return new $exceptionClass($message, $code, $propertyPath, $value, $constraints); }

Хотя вот нашел родительский

Ексепшен

class InvalidArgumentException extends \InvalidArgumentException implements AssertionFailedException

Он уже казан в док блоке выше к методу

* @throws \Assert\InvalidArgumentException

И все равно рнрstorm говорит что ексепшен AssertionFailedException нигде не создан.

* @throws \InvalidArgumentException тоже не работает

Kirill
16.08.2018
09:36:27
Ну, раз уж пошла пляска про исключения - какие exception вы документируете в докблоках? Все? Как насчет Runtime исключений? Logic исключений? Видел мнение, что, так как Logic исключения - это ошибка в самом коде, какая-то в недоработка в логике, их нужно по-тихому залогировать, но не документировать, так как они не являются частью ожидаемого потока выполнения программы. То есть если существуют какие-то недоработки в коде, то их нужно залогировать и исправить, а не документировать

Google
Evgeniy
16.08.2018
10:10:43
или например FileNotFoundException extends InvalidArgumentException ведь о наличие или отсутсвия файла можно узнать в рантайме

потому что под файлом понимается обычная строка

но при этом это все от LogicException идет

Kirill
16.08.2018
10:25:47
Очевидно, FileNotFoundException не должен экстендить InvalidArgumentException. Далее - если InvalidArgumentException extends LogicException , то его тоже логировать не стоит. Далее - если же речь идет о несоответствии значений чего-либо ожидаемому, стоит использовать UnexpectedValueException extends RuntimeException Пример из документации PHP http://php.net/manual/en/class.invalidargumentexception.php - The InvalidArgumentException class. Exception thrown if an argument is not of the expected type. Если мы ожидаем аргумент одного типа (речь необязательно о встроенном типе данных), а приходит другой - это ошибка логики программы. Мы её по-тихому логируем и исправляем, это не должна быть часть обычного потока выполнения, который мы должны документировать. http://php.net/manual/en/class.unexpectedvalueexception.php Exception thrown if a value does not match with a set of values. Typically this happens when a function calls another function and expects the return value to be of a certain type or value not including arithmetic or buffer related errors. То есть проблема уже не с типом, а со значением. Это рантайм ошибка, её появление является частью логики программы. Логируем, возможно, возвращаем посетителю, документируем в докблоке. В чем я неправ?

Evgeniy
16.08.2018
10:27:11
Очевидно, FileNotFoundException не должен экстендить InvalidArgumentException. Далее - если InvalidArgumentException extends LogicException , то его тоже логировать не стоит. Далее - если же речь идет о несоответствии значений чего-либо ожидаемому, стоит использовать UnexpectedValueException extends RuntimeException Пример из документации PHP http://php.net/manual/en/class.invalidargumentexception.php - The InvalidArgumentException class. Exception thrown if an argument is not of the expected type. Если мы ожидаем аргумент одного типа (речь необязательно о встроенном типе данных), а приходит другой - это ошибка логики программы. Мы её по-тихому логируем и исправляем, это не должна быть часть обычного потока выполнения, который мы должны документировать. http://php.net/manual/en/class.unexpectedvalueexception.php Exception thrown if a value does not match with a set of values. Typically this happens when a function calls another function and expects the return value to be of a certain type or value not including arithmetic or buffer related errors. То есть проблема уже не с типом, а со значением. Это рантайм ошибка, её появление является частью логики программы. Логируем, возможно, возвращаем посетителю, документируем в докблоке. В чем я неправ?
FileNotFound это опять же пример если мы ожидаем аргумент string пришел string но в текущем окружение этого файла нет или прав недостаточно на его чтение это FileNotFoundException ок ненаследуемся мы от InvalidArgumentException то в каких случаях он будет вообще вылетать ? https://3v4l.org/Jrv78 тут TypeError а не InvalidArgumentException, в каком случае по вашим словам должен возникать InvalidArgumentException ? "это не должна быть часть обычного потока выполнения" исключение это как раз таки способ сообщить что то внезапно не так и мы не знаем как с этим поступить, а вот как обрабатывать каждое исключение вопрос открытый и сильно зависит от конкретной ситуации

Kirill
16.08.2018
10:31:20
Файла может не быть по 1000 причин. Не все из них - ошибка логики программы. Я выше упомянул, что InvalidArgumentException это совсем не обязательно про встроенные типы данных. Например проверка на instanceof выдала неожиданный результат, но мы не можем проверить значение декларацией типов...

Evgeniy
16.08.2018
10:32:39
так если ты делаешь проверку в коде программы на типы значит ты ожидаешь что сюда может придти посторонее так и обработать это надо там если ты проверил все возможные типы а там что то посторонее и кидать InvalidArgumentException ну ок, но это опять же частности

Kirill
16.08.2018
10:34:03
У вас есть универсальный гидратор. Ожидаемый тип объекта задается динамически. Значит, декларацией типов значения не проверить. Как такой вариант применения для InvalidArgumentException?

Evgeniy
16.08.2018
10:34:50
вот пример InvalidArgumentException о котором вы говорите, но его описывают в Throws https://github.com/PHP-DI/PHP-DI/blob/master/src/Container.php#L121

а вот исключения возникающие в Runtime да возможно стоит делать как в java и не описывать я все таки в этом вопросе склонен довериться опыту java потому что это тонка грань это чисто мое имхо, а LogicException мне кажется стоит описывать в блоке throws и писать что именно не так как в ссылке с примером. и возможно даже phpstorm не просит вылавливать или документировать RuntimeException (доп ургумент) а раз так делают большинство, то код будет более привычен большинству

Kirill
16.08.2018
10:42:30
если он универсален значит он работает от того значения что ему переданно, разве нет ?
Могут быть несоответствия типов создаваемого объекта и полученных данных. Содержимое массива и т.д. То, что не всегда можно проверить декларацией типов. Согласен насчет тонкой грани - поэтому и был задан вопрос. И ещё нужно решить, для чего же тогда UnexpectedValueException :)

Evgeniy
16.08.2018
10:44:23
ну тут описание вполне божественно http://php.net/manual/en/class.unexpectedvalueexception.php это когда вызвал другую функцию а она вернуло что то внезапно другое)))

Kirill
16.08.2018
10:44:30
вот пример InvalidArgumentException о котором вы говорите, но его описывают в Throws https://github.com/PHP-DI/PHP-DI/blob/master/src/Container.php#L121
Думаю, во внешнем интерфейсе стоит прописывать все возможные исключения. Можно сказать, в этом случае все исключения - чать ожидаемого потока выполнения

Evgeniy
16.08.2018
10:46:08
все исключения возникают в рантайме
поэтому в java есть еще те что возникают на компиляции )) но да это не та комната для обсуждения

Kirill
16.08.2018
10:46:35
https://github.com/symfony/symfony/pull/22231 что об этом скажете?

Evgeniy
16.08.2018
10:46:45
поэтому там начинают делить с обрабатываемых и нет и на уровне языка проверяют

https://www.tutorialspoint.com/java/images/exceptions1.jpg

Google
Pavel
16.08.2018
10:47:36
по psr <?= это хорошо или плохо ?

нашел в psr-1 , это н ормально

Kirill
16.08.2018
10:55:01
По ссылке: It's not a lack of interest in a complete contract, it's that it's different contracts for different targets. A \RuntimeException is for the application, which may handle it whereas \LogicException is for you as a developer. Ensuring that you don't get a \LogicException when running your application in production is your responsibility.

Kirill
16.08.2018
11:09:37
https://github.com/symfony/symfony/pull/22231#issuecomment-296229530 ссылка на коммент

Evgeniy
16.08.2018
11:19:47
а ну это чьето имхо

Kirill
16.08.2018
11:26:35
а ну это чьето имхо
Любое мнение - это чье-то имхо. Просто к некоторым прислушиваются, они даже чатики в телеграме открывают :D

Nikitcat
16.08.2018
11:28:07
Это субъективное мнение каждого. Имхо для ленивцев

Admin
ERROR: S client not available

Evgeniy
16.08.2018
11:28:51
и я такое пропустил при прочтение

Kirill
16.08.2018
12:09:08
Котаны. А подкиньте плиз ссылочки на либы для промизов. Что я вообще нашёл: 1) React - тру, но есть баги, не прокидываются исключения наружу (https://github.com/reactphp/promise/issues/128) 2) Amp - монстр. 3) Kraken - мёртвый 4) Guzzle - пока единственный вариант походу. Сейчас буду на посмотреть. Мб ещё есть что?

с газзлом такая же фигня

=\

мб это я дурак?

Пишу: $p = new Promise(); $p->then(function($v) { throw new \Exception('Example'); }); $p->resolve(23); И необработанное исключение тупо гасится, а не прокидывается наверх

Herman
16.08.2018
12:22:46
Я думаю что их нужно отлавливать на otherwise https://github.com/reactphp/promise#promiseinterfaceotherwise

Kirill
16.08.2018
12:23:28
@ball00n можно

но я не могу

точнее не так, у меня один обработчик исключений

Google
Kirill
16.08.2018
12:24:06
и для каждого промиза его присобачивать - проще убиться

Herman
16.08.2018
12:24:50
промисы чейнится должны вроде бы

Kirill
16.08.2018
12:24:59
спросил у наших фронтэндеров, говорят "да", исключение, если его никто не словил овервайзом - должно прокидываться наверх

т.е. и в реакте, и в газзле баги

да и если посмотреть, то там код внутренний почти идентичный

Herman
16.08.2018
12:25:58
я думаю что ты просто неправильно используешь библиотеку и не понимаешь промисов

Kirill
16.08.2018
12:26:39
ну напиши в консольке

let p = new Promise((c) => { setTimeout(() => c(), 1000); }); p.then(() => { throw new Error(); });

увидишь исключение

а теперь на газельке

$p = new Promise(); $p->then(function(): void { throw new \Exception('Example'); }); $p->resolve(23);

консоль пустая

пример с реактом выше по ссылке в иссью

ну т.е. тут не в неправильности использования, а в том, что реализация некорректная

Herman
16.08.2018
12:28:44
чейни промисы и все будет ок

Kirill
16.08.2018
12:28:56
да не могу я чейнить же

ну т.е. могу, конечно

Sergey
16.08.2018
12:29:47
консоль пустая
потому что надо сделать catch?

Kirill
16.08.2018
12:29:49
но код превратится в люты треш

Sergey
16.08.2018
12:30:01
но код превратится в люты треш
хочешь хорошо - делай хорошо

Kirill
16.08.2018
12:30:08
@fes0r если не делать кетч, то оно рендерится)

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