А вы с какими флагами BEAM запускали? '+K true', как водится, не поставили?
+K true, enable kernel poll
Один из самых важных флагов запуска, который должен быть выставлен в любом production и писькомерном окружении — включает использование epoll/kqueue. Без него всякие изменения не имеют смысла.
Возможно, для адекватности сравнения стоит поставить +stbt db. Я точно не помню, как себя ведет планировщик Go, но если он закрепляет треды планировщика на ядрах, то этот флаг нужен, чтобы включить аналогичное поведение в BEAM. Это второй кандидат на звание must have флага.
Успехов написать весь монструозный и неадекватныйвеликолепный и непревзойденный стек протоколов, используемый WebRTC. Кстати, стандарт требует кодировать видео отдельно для каждого пира, можно для комплекта еще и кодек на ноде заимплементить.
У нас с коллегой вчера вышел мини-спор по моей позиции, после чего я могу сказать, что так и быть, своп не абсолютное зло и имеет право быть включенным. Конечно, в этом случае принимающий решение должен отчетливо понимать, чего хочет этим добиться.
Моя изначальная позиция объясняется некоторым bias-ом, сложившимся за то время, которое я работал с видеостримингом, где в случае нехватки памяти своп делает только хуже.
Для справедливости замечу, что это совсем не новый синтаксис.
Синтаксис \\ для default arguments появился в 0.12.3(февраль 2014), а сами аргументы по умолчанию были уже в первом публичном релизе 0.5.0(май 2012).
Это терминоложеская проблема, но формулировка и вправду не очень. Правильной формулировкой, на мой взгляд, является "WebRTC — SIP-телефон без SIP в браузере".
На мой взгляд, здравомыслящемум человеку это и так понятно, и конкретные тулзы тут вообще ни при чем.
Вообще, я этот пост читал сразу после написания и мне хотелось разбить себе лицо руками — это просто эталон хипстерства. "Давайте мы сначала сделаем фронтенд на ненужном нам new and shiny реакте, потом удивимся, что так трудно, перепишем на new and shiny фениксе и напишем пост, какой замечательный феникс и как трудно с реактом".
Это вообще беда elixir-комьюнити. Я смотрю за статьями на хабре, смотрю в elixir subreddit, и это какой-то ад — толковых постов почти нет, везде какой-то треш и полное непонимание того, как надо писать на Erlang.
Либо предсказуемый эксепшн про несуществующий процесс, либо мне вернут nil прекрасные разработчики stdlib. Либо там наворотили что-то совсем невероятное, и тогда я сдаюсь.
Вообще, это выглядит вполне обычной проблемой — обычный gen_server поведет себя точно так же.
Про агенты — ну давайте все же будем снисходительны. Это далеко не худший способ написать простое хранилище стейта с синхронизированным доступом и несложной логикой.
завтра выйдет версия Phoenix, работающая поверх другого веб-сервера
Вероятность этого события стремится к нулю.
cowboy это фактически единственный живой веб-сервер для erlang.
Plug так интересно задизайнен, что у них нет ни своей реализации websockets, ни даже API для protocol upgrade. plug-websocket использует cowboy напрямую, как работает Phoenix.Transports.WebSocket я навскидку не могу разобраться.
А вы с какими флагами BEAM запускали? '+K true', как водится, не поставили?
Один из самых важных флагов запуска, который должен быть выставлен в любом production и писькомерном окружении — включает использование epoll/kqueue. Без него всякие изменения не имеют смысла.
Возможно, для адекватности сравнения стоит поставить
+stbt db
. Я точно не помню, как себя ведет планировщик Go, но если он закрепляет треды планировщика на ядрах, то этот флаг нужен, чтобы включить аналогичное поведение в BEAM. Это второй кандидат на звание must have флага.Успехов написать весь
монструозный и неадекватныйвеликолепный и непревзойденный стек протоколов, используемый WebRTC. Кстати, стандарт требует кодировать видео отдельно для каждого пира, можно для комплекта еще и кодек на ноде заимплементить.Потому что шаблоны компилируются в эрланговский байткод, а зависимости между ними, конечно же, никто не отслеживает.
У нас с коллегой вчера вышел мини-спор по моей позиции, после чего я могу сказать, что так и быть, своп не абсолютное зло и имеет право быть включенным. Конечно, в этом случае принимающий решение должен отчетливо понимать, чего хочет этим добиться.
Моя изначальная позиция объясняется некоторым bias-ом, сложившимся за то время, которое я работал с видеостримингом, где в случае нехватки памяти своп делает только хуже.
Весь мой опыт подсказывает, что включенный своп на продакшн сервере — просто невыносимо отвратительная идея, классический такой антипаттерн.
Система, в которой гуляет oom-killer, все равно остается значительно более доступной, предсказуемой и отзывчивой, чем система ушедшая в своп.
Может, но что именно сгенерит компилятор я так сходу не скажу.
Для справедливости замечу, что это совсем не новый синтаксис.
Синтаксис
\\
для default arguments появился в 0.12.3(февраль 2014), а сами аргументы по умолчанию были уже в первом публичном релизе 0.5.0(май 2012).Я как человек со стороны, так до сих пор и не понял, чем в общем случае ГД отличается от обычного продакта.
Это терминоложеская проблема, но формулировка и вправду не очень. Правильной формулировкой, на мой взгляд, является "WebRTC — SIP-телефон без SIP в браузере".
Позволю себе напомнить, что крылья сделал Дедал, а Икар прославился нарушением техники безопасности.
А чем вам, скажем, Clojurescript не угодил? Вот уж что точно не JS.
Еще вроде Scala и Kotlin компилируются в JS.
На мой взгляд, здравомыслящемум человеку это и так понятно, и конкретные тулзы тут вообще ни при чем.
Вообще, я этот пост читал сразу после написания и мне хотелось разбить себе лицо руками — это просто эталон хипстерства. "Давайте мы сначала сделаем фронтенд на ненужном нам new and shiny реакте, потом удивимся, что так трудно, перепишем на new and shiny фениксе и напишем пост, какой замечательный феникс и как трудно с реактом".
Дальше пост можно не читать, все и так понятно.
Это вообще беда elixir-комьюнити. Я смотрю за статьями на хабре, смотрю в elixir subreddit, и это какой-то ад — толковых постов почти нет, везде какой-то треш и полное непонимание того, как надо писать на Erlang.
Заглянул. Ничего там особенного, обычный noproc вылетит, вполне предсказуемо.
Либо предсказуемый эксепшн про несуществующий процесс, либо мне вернут nil прекрасные разработчики stdlib. Либо там наворотили что-то совсем невероятное, и тогда я сдаюсь.
Вообще, это выглядит вполне обычной проблемой — обычный gen_server поведет себя точно так же.
Про агенты — ну давайте все же будем снисходительны. Это далеко не худший способ написать простое хранилище стейта с синхронизированным доступом и несложной логикой.
В переводные посты, как и в весь хабр, я смотрю больше по привычке. Ну и в камментах иногда бывает интересно.
Отлично, просто отлично. С учетом отсутствия в эрланге нормального встроенного регистратора это очень интересное предложение.
Вообще, знаете, я вот смотрю на переводные посты про Elixir, смотрю в /r/elixir, и это все какой-то ад. Полезных постов незначительно больше нуля.
Вероятность этого события стремится к нулю.
Phoenix.Transports.WebSocket
я навскидку не могу разобраться.