
Pavel
27.01.2017
11:50:03
Да, отлично
Но имхо в finally как раз делать такие проверки не логично - там должно быть нечто, инвариантное к предыдущей ситуации в коде.

Adel
27.01.2017
11:51:23
+1

Dmitry
27.01.2017
11:54:40
это ты сейчас так заумно сказал "ифы в файнали недопустимы"? :)

Google

Pavel
27.01.2017
11:55:49
Не совсем, инвариантно - значит независимо от того что там было до - исключение или return или все в порядке - в finally должен быть один и тот же уютный код
Если там ифы будут из-за другой логики, то почему бы нет

Dmitry
27.01.2017
11:57:47
какие ваши доказательства

Pavel
27.01.2017
11:58:59
Клянусь святым асинхронным генератором

Dmitry
27.01.2017
12:04:25
асинхронные клятвы не принимаются, а то знаем вас... оставят вместо клятвы банальный promise и свялят

Adel
27.01.2017
12:10:37
)))

dypa
27.01.2017
12:25:17
Коллеги - как думаете стоит проводить DevConf в этом году? Что нового появилось с прошлой что хотелось бы узнать, обсудить и прочее?
не был ни на одной конфе, но:
1) невозможно разоравться между всеми залами, а послушать полезно всё
2) скучные доклады лично для меня
сначала читают changelog, и статьи из wikipedia, потом приходит мастодонт и рассказывает как у них всего много (но не рассказывает про архитектуру) и обязательно начинается пиар фреймворка нужного 3,5 людям на планете.
только не подумай что я говорю что всё говно и всё плохо, вы молодцы.
ps открыл секцию по golang - там описания в разы интереснее - люди делятся реальными проблемами.
pss лично мне понравился формат fwdays

Dmitry
27.01.2017
12:26:26
да в общем почему я на всякие хайлоады и риты перестал ходить... вроде даже интересная тема, а по итогам - ничего нового

Pavel
27.01.2017
12:26:35
+
Получается что интереснее компактные целевые митапы
Где 3-4 доклада по 20 минут

Dmitry
27.01.2017
12:27:49
ну и работу еще искать, которая все эти конфы оплачивала, своего бабла жалко

dypa
27.01.2017
12:27:53

Google

dypa
27.01.2017
12:28:20

Dmitry
27.01.2017
12:29:06
ну я понимаю их... ибо они дохрена стоят, а по первости - может даже и полезный опыт

dypa
27.01.2017
12:32:32
добавлю, на конференцию сеньоры ходят послушать про архитектуру, опыт решения сложных проблем (для @confguru)

Eugene
27.01.2017
12:32:53
или просто выпить

dypa
27.01.2017
12:33:27
хотя лично мне комфортнее всегда посмотреть запись, всегда можно сделать паузу и обдумать, перемотать назад если не понял глубокой мысли автора

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

Pavel
27.01.2017
12:36:32
Имхо доклады должны быть не техническими а больше пропагандистско-эмоциональными, чтобы зажечь желание копаться в теме дальше

Dmitry
27.01.2017
12:37:31
о, да... потом такой вот напропагандированный приходит в офис и тимлид берет больничный... на время, пока не выветрится

Pavel
27.01.2017
12:37:37
Может он даже в этом чате есть

Dmitry
27.01.2017
12:38:27
ddd ваще срамные буквы ;) сразу отказ на собеседовании ;)

Alexandr
27.01.2017
12:38:40

Pavel
27.01.2017
12:38:52
Есть хорошие технические тулзы про которые никто не знает, им бы не помешало пиара и презентаций

Dmitry
27.01.2017
12:39:18
хабр читай ;)

Pavel
27.01.2017
12:40:44
Да там мало по пхп
Вот сколько появилось тулз за последнее время, никто про них не рассказывает

dypa
27.01.2017
12:41:02
спасибо
главное учитывать мое мнение слишком сильно - тк я 146% не заплачу за билет на devconf ближайшие 3 года

Dmitry
27.01.2017
12:41:53
;)

Google

Dmitry
27.01.2017
12:42:03
и мое слишком сильно учитывайте ;)

dypa
27.01.2017
12:43:31

Alexandr
27.01.2017
12:46:30

dypa
27.01.2017
12:49:18
ман можно пересказать в формате: самые интересные грабли
вон @chebotarevp поднимал вопрос использования amphp на проде если я верно помню

Dmitry
27.01.2017
12:51:31
когда все баги в проекте исправлены - наберите composer update для загрузки новых багов

Pavel
27.01.2017
12:51:36
да
ни одного доклада по асинхронности ваще =)
Хотя эта тема уже с 2015 года развивается

Dmitry
27.01.2017
12:52:23
потому что все, кто развивает асинхронность на пхп - быстро сваливают на что-то более подходящее ;)

dypa
27.01.2017
12:52:31
по сути с приходом php7, пхп может быть как нода

Pavel
27.01.2017
12:52:58

Dmitry
27.01.2017
12:53:40
не релоадь на горячую ;)
не так много причин горячего релоада

Adel
27.01.2017
12:54:34
Докладчик про ДДД которого уволили - это Иван Матвеев :) и он сейчас в хорошей конторке работает

Dmitry
27.01.2017
12:54:54
а уволил его григори? ;)

Pavel
27.01.2017
12:56:50
Подожди, он же тут писал вроде?
Помню даже аватарку его, в смокинге

dypa
27.01.2017
12:57:26
а по тонкой настройке php-fpm было что нить толковое?

Google

Dmitry
27.01.2017
12:58:04
гм, а что там тонко настраивать... фикачишь стресс-лоадером и смотришь, при каком числе воркеров загнется все
хотя рассказать можно было бы, но там доклада то на 15 минут

Pavel
27.01.2017
12:59:05
не релоадь на горячую ;)
Вот есть у меня допустим асинхронный движок воркера, который написан на пхп с компосером. И есть сами воркеры, который являются частью проекта. Они со своим компосером тоже, и когда движок инклюдит эти файлы воркеров, то могут возникнуть конфликты неймспейсов

Alex
27.01.2017
13:00:33

Dmitry
27.01.2017
13:00:43
можно упростить до "у меня есть два проекта со своими композерами, и я хочу из первого сделать инклуд второго". И сразу "шооооо?!" ;)
вообще для пхп воркеров асинхронный движок на пхп... это какой-то изврат... воркеры, то поди, как отдельный процесс каждый работают?

Pavel
27.01.2017
13:05:05

Dmitry
27.01.2017
13:07:06
в тредах?

Admin
ERROR: S client not available

Pavel
27.01.2017
13:07:39
Ну если что вычислительное попалось - можно тред или процесс породить, а так в одном треде все можно делать
Как нода и поступает
Короче што я распинаюсь, в раби уже такое вовсю реализовано https://github.com/mperham/sidekiq

Dmitry
27.01.2017
13:10:19
ну вот и получится, что почти все задачи или по отношению cpu/io ближе к cpu или же ты выносить io bound в отдельный асинхронный сервис и сливаешь ему
вот офигенный пример, да ;) сделали из руби какой-то мультитул, и в итоге никому она не нужна

Pavel
27.01.2017
13:11:52
На ней работает гитлаб если я правильно помню

Dmitry
27.01.2017
13:12:40
гитлаб? это тот, у которого мои пуши пары файлов по 20 секунд уходят и сохранение страницы в вики секунд 40?
а все потому-что приходит радостый юниор вася, херачит математику, и вся твоя асинхронность виснет

Pavel
27.01.2017
13:13:40
У нас на прошлой работе очень была такая потребность - 5-6 проектов было, на каждом 3-5 воркеров работает. Письма рассылают, счетчики обновляют, рейтинги пересчитывают в базе и т.д. Это запускалось просто как 5 консольных команд например. Отмасштабировать это нельзя было, посмотреть статистику по выполняющимся задачам - тоже, следить за падающими демонами нужно.

Dmitry
27.01.2017
13:13:58
а потом девопс носится по офису с матерными воплями

Google

Pavel
27.01.2017
13:14:41
Не утрируй, у нас было все нормально ;) Мы сами там и девопсили и код писали и носились с воплями.

Dmitry
27.01.2017
13:14:50
пффф... следить за твоим супер-пупер асинхронным мультитулом не нужно?

Pavel
27.01.2017
13:15:21

Dmitry
27.01.2017
13:15:36
прекрасно масшабируется, просто нужно смотреть сервисно-ориентированно, есть сервисы, есть менеджер задач, который рассовывает их по сервисам
в опенсорсе демоны не падают! ;)

Pavel
27.01.2017
13:16:16
В семерке - не падают ;)
Можно отловить любой throwable

Dmitry
27.01.2017
13:16:48
аааха ;) таже out of memory?

Pavel
27.01.2017
13:17:25
Да это забарывается ловко

Dmitry
27.01.2017
13:18:01
ну да... достаточно лишь сразу писать идеальный код, и все ;)

Pavel
27.01.2017
13:18:23
Один легковесный процесс-контроллер порождает второй процесс с воркерами, сам не жрет память и следит за ними
Если надо еще воркеров порождает, зависшие убивает, релоадит и все остальное

Dmitry
27.01.2017
13:18:53
с тредами? ;)

Pavel
27.01.2017
13:19:41
с процессами. У них разные пространства памяти.

Dmitry
27.01.2017
13:21:17
и каждый процесс в event loop и выполняет разные задачи?

Pavel
27.01.2017
13:21:39
Да там насколько хватит фантазии придумать
Может одну блокирующую задачу, может несколько асинхронно. Это уже дело техники.

Dmitry
27.01.2017
13:22:04
не надо фантазии, нужно архитектуру под задачи строить, а не задачи под архитектуру

Pavel
27.01.2017
13:22:44
Отдельный проект строится универсально для всех задач и не зависит от архитектуры
По умолчанию можно сажать каждый воркер в свой процесс и пусть он работает синхронно в один тред.

Dmitry
27.01.2017
13:26:09
да просто у тебя фантазия приведет к невменяемому коду. "Может одну блокирующую задачу, может несколько асинхронно. " - вот как это? У тебя 10 воркеров, как ты поймешь, что у тебя 5-й воркер занят блокирующей задачей, и, хотя сейчас по rr его очередь, нужно его пропустить?
да только таймаутом, значит у тебя каждая блокирующая будет замедлять распределение задач