Size: a a a

2020 February 11

DF

Denis Fakhrtdinov in ErlangRus
git blame?
источник

СИ

Сергей Иванов in ErlangRus
источник

AK

Aleksey Kluchnikov in ErlangRus
он же не обязательно новый, просто база выросла и вылезло
источник

AK

Aleksey Kluchnikov in ErlangRus
да, все надо подкастыливать, деанонимизировать
источник

a

arikai in ErlangRus
Aleksey Kluchnikov
А не прав я был, анонимные функции тоже не передаются
Что это значит?
источник

EM

Evgeny M. in ErlangRus
Yuri Zhloba
Ок, сделать можно так: прочитать модули с диска в память. Передать их на другую ноду. Там их интерпретировать как модули. Ну и вызывать в них функции. Я подозреваю, что вы будете первопроходцем на этом пути. Потому что остальных устраивает вариант задеплоить одинаковые модули на все машины, и загрузить их на старте ноды.
не, не будет. У меня похожим способом сделана лицензионная защита
источник

AK

Aleksey Kluchnikov in ErlangRus
это значт что анонимную фуну на соседнюю ноду через rpc не передать
источник

a

arikai in ErlangRus
Нода a:
iex(a@sakuya.local)13> :rpc.call(:"b@sakuya.local", IO, :inspect, [self()])             #PID<11343.110.0>


Нода b:
iex(b@sakuya.local)16> send pid(11343,110,0), fn -> 42 end
#Function<21.126501267/0 in :erl_eval.expr/5>


Нода a:
iex(a@sakuya.local)14> (receive do f -> f.() end)
42
источник

AB

Alexey Bolshakov in ErlangRus
Aleksey Kluchnikov
где написал там и запустил - хорошая парадигма
а не пробовал их сохранять в dets а потом, после перезапуска подгружать и еще раз запускать? ))
источник

SP

Sergey Prokhorov in ErlangRus
у нас в системе есть возможность запускать ad-hoc сниппеты на прод-нодах. Реализовано как git репозиторий, в который ты коммитишь модуль с экспортированной фкнецией run/0 и есть ansible таск который может это запускать. Таск примерно такое делает:
Mod = '{{ jira_ticket }}',
ErlFile = "{{ home }}/cc_modules/{{ jira_ticket }}.erl",
BeamBin =
   case compile:file(ErlFile, [binary, return_errors]) of
   {ok, _, BeamBin_} -> BeamBin_;
   {error, Errors, Warnings} ->
       Log("compilation error.~nErrors:~n~p~nWarnings:~n~p",
           [Errors, Warnings]),
       error({compilation_error, FErrors})
end,
{LoadResult, _} = rpc:multicall(
   Nodes, code, load_binary,
   [Mod, "{{ jira_ticket }}.beam", BeamBin],
   RpcTimeout),
lists:all(fun({module, Mod}) -> true;
            (_)             -> false
         end,
         LoadResult)
   orelse error("Failed to load module"),
источник

a

arikai in ErlangRus
@Stofeles Откуда такая информация, что лямбду нельзя передавать на другую ноду?
источник

AK

Aleksey Kluchnikov in ErlangRus
arikai
@Stofeles Откуда такая информация, что лямбду нельзя передавать на другую ноду?
вот сижу тестирую
источник

AK

Aleksey Kluchnikov in ErlangRus
через рпц не лезет, сейчас попробую в пид послать
источник

SP

Sergey Prokhorov in ErlangRus
т.е. компилирует .erl файл (с таким же успехом может компилировать строку) в beam in-memory и загружает этот beam на каждую ноду через RPC
источник

СИ

Сергей Иванов in ErlangRus
Sergey Prokhorov
т.е. компилирует .erl файл (с таким же успехом может компилировать строку) в beam in-memory и загружает этот beam на каждую ноду через RPC
удобно троянов коммитить )
источник

a

arikai in ErlangRus
Aleksey Kluchnikov
через рпц не лезет, сейчас попробую в пид послать
Почему она вдруг не должна лезть?
источник

AK

Aleksey Kluchnikov in ErlangRus
(tt1@bone)4> tt1:t().
{badrpc,{'EXIT',{undef,[{#Fun<tt1.0.16580879>,[aa],[]},
                       {rpc,'-handle_call_call/6-fun-0-',5,
                            [{file,"rpc.erl"},{line,197}]}]}}}
источник

AK

Aleksey Kluchnikov in ErlangRus
говорит undef
источник

SP

Sergey Prokhorov in ErlangRus
Сергей Иванов
удобно троянов коммитить )
ну там код-ревью и доступ к запуску только у админов
источник

a

arikai in ErlangRus
Aleksey Kluchnikov
через рпц не лезет, сейчас попробую в пид послать
Как rpc реализован?
источник