@proelixir

Страница 756 из 1045
Maria
12.10.2017
18:00:08
Приглашаем на 6ой Elixir митап! Встречаемся 19 октября в Рамблере. Обсудим CouchDB, мониторинг Elixir приложений. А вишенкой станет доклад: "Критика Erlang после 10 лет в продакшн". Приходите! ? регистрация: https://rambler-co-e-org.timepad.ru/event/587676/ наш сайт: http://elixir-lang.moscow/ анонс: https://habrahabr.ru/company/rambler-co/blog/339234/

Nick
12.10.2017
18:51:54
Уууу

Slava
12.10.2017
18:52:35
Действительно лучше не сумму двух чисел пусть антиспам бот спрашивает, а что-нибудь простенькое по эликсиру.

Типа: На каком языке/платформе основан эликсир? 1. Java 2. Erlang 3. Magic Едва ли рандомный спамер ответит правильную цифру

Google
Ар? Тем?
12.10.2017
19:00:59
PHP

Nikolay
12.10.2017
19:03:11
Petooh

Yuri
12.10.2017
19:38:07
))

Константин
13.10.2017
00:38:19
Пишут что админское сообщение будет помечаться

А я не вижу(

Alexander
13.10.2017
01:53:35
Я вижу :)

Константин
13.10.2017
02:42:51
На линуксовом еще не сделали))

Igor
13.10.2017
06:48:41
Доброго дня! Появилась такая задача. Есть некоторая нода (назовём её main), на которой запущено приложение с GenServer. Приложение контролирует очередь, принимает запросы на заполнение некоторыми значениями. Есть несколько нод, которые должны получать самое последнее значение из этой очереди, осуществлять некоторые вычисления с ним и возвращать результирующее значение на main-ноду. Т.е. всегда высший приоритет отдаётся последнему пришедшему значению. Необходимо скоординировать расчёт с помощью Elixir. Пока склоняюсь к использованию модуля https://github.com/joekain/BlockingQueue (через push\pop вполне реализуется приоритизация). Но может быть существуют более продвинутые решения?

Igor
13.10.2017
06:58:21
Может принимать. Расчёт на одной ноде может занимать 10 секунд. За 10 секунд может прийти до 50ти новых значений. И каждая не-main-нода должна обращаться к main за порцией новых значений и получать последние, не попавшие в обработку другими нодами. Если бы требовалась последовательная обработка, без учета приоритета, я бы мог использовать exq, но этот модуль реализует только LIFO, а тут по сути, нужен FIFO порядок.

Alexey
13.10.2017
07:37:09
так это back pressure? gen_stage?

Google
Igor
13.10.2017
07:50:01
так это back pressure? gen_stage?
Да, теперь кажется, что gen_stage самое подходящее решение. Спасибо, буду пробовать.

Marsel
13.10.2017
14:06:22
iex(10)> Stream.chunk_every([1, 2, 3, 4, 5, 6, 7], 2) |> Enum.to_list [[1, 2], [3, 4], [5, 6], '\a']

что это за '\a' ?

Taras ?
13.10.2017
14:08:28
это эрланг ?

Marsel
13.10.2017
14:10:40
можно ссылку или название, куда можно сходить прочитать про это?)

illiatshurotshka❄️
13.10.2017
14:11:24
Andrey
13.10.2017
14:11:35
iex(1)> [char] = '\a' '\a' iex(2)> char 7

Marsel
13.10.2017
14:12:13
хах, понял, спасибо

illiatshurotshka❄️
13.10.2017
14:12:21
просто репл по-дефолту такие списки показывает как эрланг строки

Andrey
13.10.2017
14:13:16
https://elixir-lang.org/getting-started/binaries-strings-and-char-lists.html#charlists

Taras ?
13.10.2017
14:17:09
Maria
13.10.2017
14:21:54
А какие планы на афтерпати?
Афтерпати будет, а вот конкретно планы, возможно, только на месте организуются :-) Я уточню

Alexey
13.10.2017
15:25:20
видеотрансляция будет?

Slava
13.10.2017
15:30:40
эрланг-консоль 1> [72,101,108,108,111,32,87,111]. "Hello Wo"
Напомните плиз как это выключается в iex'e? Где-то видел, но не помню где и не сохранил команду

В смысле, чтобы цифры а листе оставались цифрами

Taras ?
13.10.2017
15:35:25
хз как iex в эрланге так тыкаю 1> A = [72,101,108,108,111,32,87,111]. "Hello Wo" 2> io:format("~p~n",[A]). "Hello Wo" ok 3> io:format("~s~n",[A]). Hello Wo ok 4> io:format("~w~n",[A]). [72,101,108,108,111,32,87,111] ok 5> io:format("~ts~n",[A]). Hello Wo ok

Slava
13.10.2017
15:53:22
пару вариантов нашел: 1. IEx.configure inspect: [char_lists: false] It is documented and it can be set with ~/.iex.exs 2. iex(3)> inspect [27, 35, 51], char_lists: :as_lists "[27,35,51]"

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

Alexey
13.10.2017
19:07:08
Коллеги. тут в дикой природе удалось отловить хаскеллиста и допросить про зеленые процессы

Google
Alexey
13.10.2017
19:07:34
протокол допроса

"Я когда-то пытался применить эрланг в своей работе, но столкнулся с нежеланием другого сотрудника изучать этот простой язык, а задача там была для двоих. Плюс не нашёл я там как в вебсервере, что был для эрланга, включить https. Короче, пришлось решать ту задачу на сишарпе и ASP.NET... Про эликсир слышал, но не интересовался. Говорят, это якобы новое поколение эрланга, но хз, вроде промышленных эрлангистов вполне устраивает эрланг... Касаемо многопоточности в хаскелле. Там есть "зелёные потоки" и процессы ОС, можно использовать и те и другие по желанию. Есть нюансы при компиляции многопоточной программы, но вполне решаемые (связано с опциями компилятора сколько потоков ОС выделять программе). Так как хаскель вообще ни разу не реал-таймный, то для эрлангистов он вряд ли представит интерес. К сожалению, хаскелл всё же так и остаётся академическим языком, промышленная его поддержка сильно не дотягивает до всяких сишарпов и VB... В многопоточных программах на хаскелле обычно используется обмен сообщениями через каналы между потоками, похоже на эрланг. Серьёзная разница в том, что хаскель статически типизирован, эрланг же динамически типизирован. В результате, когда разрабатываешь прогу не имея точно определённой архитектуры и раз и навсегда согласованных протоколов сообщений, то у меня лично в эрланге получалась потеря контроля над расхождениями в структуре сообщений — компилятор не помогал мне их находить, приходилось отлаживать. В хаскелле всё же для меня лично попроще в этом плане — если что не так то прога просто не компилируется..."

Alexey
13.10.2017
19:10:23
не смогу, я через вторые руки это узнал

maier
13.10.2017
20:04:35
"Я когда-то пытался применить эрланг в своей работе, но столкнулся с нежеланием другого сотрудника изучать этот простой язык, а задача там была для двоих. Плюс не нашёл я там как в вебсервере, что был для эрланга, включить https. Короче, пришлось решать ту задачу на сишарпе и ASP.NET... Про эликсир слышал, но не интересовался. Говорят, это якобы новое поколение эрланга, но хз, вроде промышленных эрлангистов вполне устраивает эрланг... Касаемо многопоточности в хаскелле. Там есть "зелёные потоки" и процессы ОС, можно использовать и те и другие по желанию. Есть нюансы при компиляции многопоточной программы, но вполне решаемые (связано с опциями компилятора сколько потоков ОС выделять программе). Так как хаскель вообще ни разу не реал-таймный, то для эрлангистов он вряд ли представит интерес. К сожалению, хаскелл всё же так и остаётся академическим языком, промышленная его поддержка сильно не дотягивает до всяких сишарпов и VB... В многопоточных программах на хаскелле обычно используется обмен сообщениями через каналы между потоками, похоже на эрланг. Серьёзная разница в том, что хаскель статически типизирован, эрланг же динамически типизирован. В результате, когда разрабатываешь прогу не имея точно определённой архитектуры и раз и навсегда согласованных протоколов сообщений, то у меня лично в эрланге получалась потеря контроля над расхождениями в структуре сообщений — компилятор не помогал мне их находить, приходилось отлаживать. В хаскелле всё же для меня лично попроще в этом плане — если что не так то прога просто не компилируется..."
assigns phoenix очень тяжело наверное будет реализовывать на статически типизированных языках, а это облегчает типизированный пайп строить для динамических структур))

Alexey
13.10.2017
20:07:33
добрый вечер! подскажите, пожалуйста. есть elixir приложение с cowboy без феникса. хочу, чтобы приложение отсылало 500 сообщение с текстом ошибки при возникновении этой ошибки. для этого использую Plug.ErrorHandler и метод handle_errors. проблема в том, что если падает не основной процесс, а дочерний, запущенный через Task.async, то handle_errors такую ошибку не ловит (там внутри стоит try/catch, который не срабатывает при падении связанного процесса). есть ли правильный способ, как поступать в таких ситуациях?

т.е. хочу я очень простую вещь - чтобы при возникновении ошибки, всегда отсылать клиенту 500 сообщение (в независимости от того, где именно произошла ошибка - в родительском процессе или дочернем)

Alexey
13.10.2017
20:20:49
так, конечно, сработает, но в эликсире/эрланге кругом процессы и выглядит немного странно, если мы вообще ничего не можем ответить клиенту при падении одного из них

Alexey
13.10.2017
20:21:46
так надо процессы по ОТП запускать

воркеры как ГС. запускаешь через sup start_child, ловишь их терминейт (нормальный или нет). принимаешь решение, че делать

Alexey
13.10.2017
20:26:31
это, наверно, правильней, но выглядит немного overkill для простой задачи - тут task кажется уместней. но если другого способа нет, то, наверно, сделают так. а когда "ловлю терминейт" - правильно ли будет заново зарейзить ошибку, чтобы она поймалась уже с помощью Plug.ErrorHandler (чтобы было одно место обработки ошибки и отсылки ответа с ошибкой)?

Alex
13.10.2017
20:32:09
самое главное чтобы все работало и было всем понятно

Alexey
13.10.2017
20:36:05
хочется не делать своих костылей, даже если не будут всем понятными, если есть идиоматические решения )

идею я понял - спасибо за ответы

Alex
13.10.2017
20:42:11
ОТП тебе подскажет путь)

Страница 756 из 1045