Size: a a a

2020 March 11

a

arikai in ErlangRus
Źmićer Rubinštejn
Я так понимаю, что нету ADT потому что на другой ноде может не быть такого типа
Скорее всего. И не забываем про хот релоад, гарантии которого нужно соблюдать до сих пор.
источник

a

arikai in ErlangRus
В этом плане можно покопать в сторону комментариев на тему статической типизации, в том числе и от самого Джо
источник

СИ

Сергей Иванов in ErlangRus
Yuri Zhloba
Ну мы не заморачиваемся с лицензиями. Если надо, я могу добавить MIT.
А потом wg тебя притянут?
источник

AK

Aleksey Kluchnikov in ErlangRus
если сейчас форкнешь то нет
источник

AK

Aleksey Kluchnikov in ErlangRus
считай что опубликовано в открытом источнике
источник

YZ

Yuri Zhloba in ErlangRus
Сергей Иванов
А потом wg тебя притянут?
Чисто теоретически это возможно)
источник

YZ

Yuri Zhloba in ErlangRus
Есть некая процедура согласования кода для выкладывания в open source.  И эти либы, в аккаунте wgnet, не проходили ее.
источник

YZ

Yuri Zhloba in ErlangRus
Так что лицензии у них действительно нет.
источник

SP

Sergey Prokhorov in ErlangRus
arikai
Наверное поэтому в Эрланг тащат фичи с Эликсира (числа вида 1_000, документация), и в целом количество контрибьютеров Эрланга увеличилось благодаря новой крови и увеличении использования низлежащей технологии впринципе

Я ничего не упустил?
я 1_000 не из Elixir а Rust утащил!!
источник

SP

Sergey Prokhorov in ErlangRus
я бы не советовал =) Оно вроде работает, но писалось скорее не для продакшна а как демка (не самая удачная)
источник

SP

Sergey Prokhorov in ErlangRus
Simon
то что мне надо, только вот ни слова о лицензии под которой она опубликована ((
epgsql_pool конечно работает, но скрывает некоторые приятные фичи epgsql и добавляет доп оверхед в виде процесса-прослойки. Я бы советовал просто засунуть "сырой" epgsql cоnection под нормальный пул типа github.com/seth/pooler, а абстракции наворачивать уже если уверен что они нужны
источник

SP

Sergey Prokhorov in ErlangRus
Sergey Prokhorov
epgsql_pool конечно работает, но скрывает некоторые приятные фичи epgsql и добавляет доп оверхед в виде процесса-прослойки. Я бы советовал просто засунуть "сырой" epgsql cоnection под нормальный пул типа github.com/seth/pooler, а абстракции наворачивать уже если уверен что они нужны
у меня штук 5 сервисов есть которые так работают без каких-то проблем. Переживают рестарты БД без последствий (остановил постгрес - в мониторинге лампочка покраснела; запустил - снова зелёная)
источник

SP

Sergey Prokhorov in ErlangRus
в простейшем виде у меня есть в проекте модуль

-module(my_db).
-export([start_link/1, with_connection/1]).


start_link(Opts) ->
   epgsql:connect(Opts).

with_connection(Fun) ->
   C = pooler:take_member(?MODULE, {1, sec}),
   true = (C =/= error_no_members),
   Res =
       try Fun(C)
       catch Err:Reason ->
               pooler:return_member(?MODULE, C, fail),
               erlang:raise(Err, Reason, erlang:get_stacktrace())
       end,
   pooler:return_member(?MODULE, C, ok),
   Res.

и его можно использовать как
my_db:with_connection(
   fun(C) ->
       {ok, _, Rows} = epgsql:equery(C, "SELECT * FROM users"),
       <...>
   end).
источник

SP

Sergey Prokhorov in ErlangRus
ну и где-то в application start коллбеке что-то типа
    DbPool = [{name, my_db},
             {start_mfa, {my_db, start_link, [EpgsqlOpts]}}
             | PoolExtraOpts],
   pooler:new_pool(DbPool),
источник

YZ

Yuri Zhloba in ErlangRus
epgsql_pool реализует пинг и реконнект. Причем, реконнект не только если есть явная ошибка в соединении, но и если пинг не ответил.
источник

YZ

Yuri Zhloba in ErlangRus
А пинг, это отправка запроса select 1; каждые N  секунд.
источник

YZ

Yuri Zhloba in ErlangRus
Таким образом пул знает не только то, что в tcp соединении нет явных проблем, но и то, что БД действительно отвечает на запросы.
источник

SP

Sergey Prokhorov in ErlangRus
так то да, но в более-менее нагруженном приложении там сотни обращений к пулу в секунду. При использовании round-robin а не стека дополнительный ping раз в 5 секунд вряд-ли успеет заметить проблемы раньше чем приложение
источник

SP

Sergey Prokhorov in ErlangRus
хотя лишним тоже не назовёшь конечно
источник

YZ

Yuri Zhloba in ErlangRus
Ну зависит от сценариев использования. У нас "нагруженое" приложение, это 2-3к rps запросов в бд. Больше нам не надо.
источник