
Александр
26.03.2018
10:13:00
было бы на сях, можно было был про NIF подумать

Dmitry
26.03.2018
10:13:26
Ну, подразуемвается наверное, что ты запушкаешь го в докере как микросервис
И это правильный подход к изготовлению софта в 2018 году

Александр
26.03.2018
10:13:48
ну это очень серъёзное усложнение с точки зрения архитектуры + лишние точки отказа + нагрузка на админов

Google

Dmitry
26.03.2018
10:14:44
Я тоже так считаю

Igor
26.03.2018
10:14:48

Alex
26.03.2018
10:14:53
запустить +1 сервис - нагрузка на админов?..

Dmitry
26.03.2018
10:15:02
Но альтернатива - переписать чихуянихуя на эликсире

Александр
26.03.2018
10:15:03
ну надо мониторить что он работает

Vladimir
26.03.2018
10:15:05
где докер, там кубернетис, а потом тянем за собой etcd/консул и вот это всё.

Александр
26.03.2018
10:15:08
надо его разворачивать
и разработчикам отдельно в том числе
ну в серъёзной компании да
где отдельные крутышы devops

Alex
26.03.2018
10:15:49

Александр
26.03.2018
10:15:50
но так не у всех

Google

Vladimir
26.03.2018
10:16:01
ну дык мы всегда серьёзная компания по дефолту-то =)

Dmitry
26.03.2018
10:16:11
Если начнёшь - уже не остановиться, это факт

Vladimir
26.03.2018
10:16:14
не докер композ же юзать на проде)

Dmitry
26.03.2018
10:16:35
Просто хуле кзлы переписали на Го, если было на C++ всё норм
Это не мой немой вопрос

Александр
26.03.2018
10:16:56

Alex
26.03.2018
10:16:56
потому что го проще для мелкой сетевой фигни

Dmitry
26.03.2018
10:17:14
Ну так эликсир ещё проще

Александр
26.03.2018
10:17:17
вот и нашли причину, чтобы переписать =)

Alex
26.03.2018
10:17:26
угу
очень проще
я про язык говорить не буду, но напомню вам одно слово
РЕЛИЗЫ

Dmitry
26.03.2018
10:17:59
Я думаю что парсить bittorent протокол через бинарный паттерн матчинг - это вообще то, где beam себя проявляет
На самом деле на Го сделали, потому что охера программистов на Го

Александр
26.03.2018
10:18:59
РЕЛИЗЫ
у меня коллега полдня билдил го проектик под линукс на маке с непривычки =) (кстати, так и не справился)
так что релизы понятие растяжимое
а если учесть что надо докер контейнеры насовать и.т.п. как выше обсудили, то тема релизов становится ещё интереснее =)

Dmitry
26.03.2018
10:20:00
Причём большинство из них, являясь не очень то профессионалами в программировании (ибо Го лёгкий как яйца карлика), пытаются запихнуть их любимы "Го" везде

Google

Dmitry
26.03.2018
10:55:11
Ребят, а ГенСервер же пока не обработает один запрос, за другой не берется?
если handle_call использовать

Evgeny
26.03.2018
10:58:49
так что если в handle_call самому себе call сделать, то заблочится.

Dmitry
26.03.2018
11:00:42
а я тогда не понимаю вот одного
defmodule GS do
use GenServer
def handle_call({:time, i}, _from, _state) do
IO.inspect i
for i <- 0..1000000000000000 do
i*300
end
{:ok, i, nil}
end
end
GenServer.start(GS, name: GS)
for i <- 0..10 do
spawn fn ->
GS.handle_call({:time, i}, nil, nil)
end
end
for i <- 0..1000000000000000 do
i*300
end выполняется очень долго, но когда в цикле делаю 10 handle_call получаю сразу все inspect’ы

Анастасия
26.03.2018
11:13:16
GS.handle_call({:time, i}, nil, nil) -> GS.call ?

Dmitry
26.03.2018
11:18:49
похоже на правду, напишу если не поможет)
спасибо

Dmitry
26.03.2018
11:20:51
@Virviil Так или иначе переписывать кусок софта, который уже работает и используется в production-е без проблем на другом языке и легко интегрируется (Go - как микросервис и без всяких докеров легко интегрируется - я в своей жизни не встречал ничего, что можно было так легко брать, качать бинарник и запускать, как софт на Go) - для этого должны быть очень везкие причины. Есть много библиотек, где не хватает maintainer-ов или времени или разработчиков на Elixir-е, зачем плодить еще больше таких же библиотек, которых некому мейнтейнить? И в данном случае нет вопроса, что же Chihaya не умеет, зачем нужна была бы версия на Elixir-е?

Dmitry
26.03.2018
11:21:51
Мое дела предложить
Но я бы поучаствовал
Если бы кто нибудь этим занялся

Evgeny
26.03.2018
11:42:02
банальный вопрос, что делает receive с сообщениями, которые не матчатся? Просто удаляет их из очереди?

Dmitry
26.03.2018
11:42:49
помогло

Dmitry
26.03.2018
11:44:07
Eugene Остаются висеть на вечно, пока их не накопится много и vm не прибьет OOM-killer.

Александр
26.03.2018
11:45:00

Evgeny
26.03.2018
11:45:42

Александр
26.03.2018
11:47:21
я эту книгу с одного захода прочитал

Google

Александр
26.03.2018
11:47:49
там с картинками всё классно разжёвано
дока у эрланга недружелюбная, да

Evgeny
26.03.2018
11:48:06
не, уже все ясно
Интересно, однако. Получается, что задавая нулевые таймауты, можно выгрести из очереди сначала все сообщения одного типа, потом другого и так далее. Хех.
И еще. Насколько я понял GenServer по умолчанию генерит некий умолчальный handle_info, который все неизвестные сообщения выбрасывает из очереди.
А если я задам некий handle_info реагирующий на определенный тип сообщений, то будет ли опять сгенерирован умолчальный handle_info для левых сообщений или таки этот "спам" будет засирать мою любимую очередь?

Dmitry
26.03.2018
12:00:04
GenServer в Elixir-е да, и будет все эти сообщения в лог отправлять: received unexpected message in handle_info/2:
Нет, сгенерирован не будет.
Но если не будет catch_all функции, то он просто крэшнится при получении не подходящего сообщения.
GenServer всегда все сообщения из очереди выгребает.

Dmitry
26.03.2018
12:13:32
А насколько большая очередь может быть?
настолько - насколько оперативы хватит?)

Dmitry
26.03.2018
12:19:42
@JustStealIt Ага, пока OOM не прибил VM.

Scas
26.03.2018
13:13:15
кстати из этого следует что если у вас что то ушло в рекурсию и проебались условия выхода то пока они не сожрут память и VM не прибьет ООМ
они будут занимать память и крутиться вечно

Vladimir
26.03.2018
13:13:58
Потому мониторинг - обязательная вещь.

Alex
26.03.2018
13:56:39
Антибот?))

Taras ?
26.03.2018
13:57:59

Dmitriy
26.03.2018
14:38:23
Привет! Можете посоветовать библиотеку клиент для Phoenix на Objective-C ? Взаимодействие с каналами феникса (чат)

foracall
26.03.2018
14:41:27

Dmitriy
26.03.2018
14:42:50
там какой-то особенный формат сообщений. На js у меня сходу не получилось написать. Только с использованием оф библиотеки
для swift есть, думал для objective-c есть что путнее

Google

Dmitriy
26.03.2018
14:43:38
готовое в смысле

foracall
26.03.2018
14:45:15
jetfire/README.md at master · acmacalister/jetfire · GitHub
https://github.com/acmacalister/jetfire/blob/master/README.md

Dmitriy
26.03.2018
14:48:24
спасибо, попробую!

$ergi0
26.03.2018
14:52:06
Подскажите, а когда в тестах для феникса нужен контекст %{conn: conn}?
Мне пишет ворнинг, что нужно использовать build_conn, как начинаю его использовать, пишет, что conn is unused

Alex
26.03.2018
14:53:57
хотя, это предложение наверняка очень опоздало

Dmitriy
26.03.2018
14:55:26

Alex
26.03.2018
14:56:50
вообще не используй каналы феникса. и феникс по сути тоже.
херовый какой-то совет получился

Dmitriy
26.03.2018
14:57:31
ну нет. Я уже написал сервер работающий. На каналах все завязано, вся маршуртизация
это пусть мобильные разработчики разбираются ))

Alex
26.03.2018
14:57:56
ну вот в этом и проблема, да