These are chat archives for synrc/n2o

8th
Oct 2016
Namdak Tonpa
@5HT
Oct 08 2016 13:10
:resource is the module
n2o_static is a wrapper to be able to load files from ETS filesystem that cached during startup from escriptize application
if you don't need this functionality you can switch back to raw cowboy_static, no problem
Andy
@m-2k
Oct 08 2016 13:11
когда syn 1.5 вкомитишь? хочу по феншую без gproc
и еще mad пофиксай
молю
лол
Namdak Tonpa
@5HT
Oct 08 2016 13:12
а что с mad ?
Andy
@m-2k
Oct 08 2016 13:12
там что то наебнулось когда аккумулятор вызова приложений работает
не запускаются зависимости
у меня подозрение что там чек только первой вложенности без рекурсии
Namdak Tonpa
@5HT
Oct 08 2016 13:13
я помню шо там mad com bun вместе неработает или что-то типа этого
Andy
@m-2k
Oct 08 2016 13:13
не
Namdak Tonpa
@5HT
Oct 08 2016 13:13
у этого чело с pgsql ?
Andy
@m-2k
Oct 08 2016 13:13
я ж тестил с чуваком из epgsql
Namdak Tonpa
@5HT
Oct 08 2016 13:13
счас гляну
Andy
@m-2k
Oct 08 2016 13:13
да, там реал бага
Namdak Tonpa
@5HT
Oct 08 2016 13:14
какую депсу вкатить чтобы потестировать?
epgsql ?
Andy
@m-2k
Oct 08 2016 13:14
да
и поясни как работает строка когда ты в application:start пихаешь тапл с конфигом. это где-то описано в доке по эрлангу?
я так понял ты чекаешь все приложения и сканишь их конфиги чтобы ENV наполнить?
в mad_repl.erl
Namdak Tonpa
@5HT
Oct 08 2016 13:15
все я чекаю, смотрю на pgsql
Apps couldn't be loaded: [ssl,public_key,asn1]
Andy
@m-2k
Oct 08 2016 13:15
lf
Namdak Tonpa
@5HT
Oct 08 2016 13:16
ну pgsql написан не по спецификации
Andy
@m-2k
Oct 08 2016 13:16
по спекам
Namdak Tonpa
@5HT
Oct 08 2016 13:16
штуки типа rebar такую хуйню хавают
а я нет
Andy
@m-2k
Oct 08 2016 13:16
не
Namdak Tonpa
@5HT
Oct 08 2016 13:16
:-)
Andy
@m-2k
Oct 08 2016 13:16
нихуя
читай лог выше
Namdak Tonpa
@5HT
Oct 08 2016 13:16
читал
Andy
@m-2k
Oct 08 2016 13:16
в ssl есть зависимости от всех дочерних app-сов
:-)
Namdak Tonpa
@5HT
Oct 08 2016 13:17
я для системных не раскручиваю
только для приложенческих
так что хуй вам :-)
Andy
@m-2k
Oct 08 2016 13:17
ну это не проблемы системных приложений чел
Namdak Tonpa
@5HT
Oct 08 2016 13:17
там уменя видел перечисление системных
так это и не с системным проблема, а просто в pgsql надо перечислить для корректного запуска
Andy
@m-2k
Oct 08 2016 13:18
почему не раскручиваешь?
Namdak Tonpa
@5HT
Oct 08 2016 13:18
там какая-то трабла с эти есть, типа код еще писать надо
Andy
@m-2k
Oct 08 2016 13:18
в epgsql перечислено все что нужно
epgsql/epgsql#102
ты шо такой упоротый то?
epgsql похуй на asn1 и прочее, он зависит только от ssl, а уж как запустить ssl - проблема mad
или ты говна въебал?
application:ensure_all_started тогда сделай чтобы с зависимостями запускалось для тех кого не раскручиваешь, в чем проблемс?
Namdak Tonpa
@5HT
Oct 08 2016 13:22
ага
Andy
@m-2k
Oct 08 2016 13:23
лучшее решение рождается в споре лiл
Namdak Tonpa
@5HT
Oct 08 2016 13:28
так а issue вы завели?
Andy
@m-2k
Oct 08 2016 13:28
зах
ишью должно было быть на n2o_static
так как там какая-то спорная херня была
Namdak Tonpa
@5HT
Oct 08 2016 13:29
блядь шо это
+   case is_tuple(_A) of
 +      true -> % If _A is app descriptor we extend the env information
 +          AppName = element(2, _A),
 +          SysConfigs = lists:flatten(lists:filtermap(
 +                    fun({Elem,Rest}) -> case Elem == AppName of
 +                        true -> { true, Rest };
 +                        _    -> false
 +                    end end, Config)),
 +          A = setelement(3, _A, lists:map(fun({K,V}) ->
 +                           case K == env of
 +                             true -> { K, V ++ SysConfigs };
 +                             _    -> { K, V }
 +                           end
 +                          end, element(3, _A)));
 +      false -> A = _A end,
Andy
@m-2k
Oct 08 2016 13:29
это разве не ты писал?
Namdak Tonpa
@5HT
Oct 08 2016 13:29
@mudyc why do you think this is good code to have in repo ? :-)
Andy
@m-2k
Oct 08 2016 13:30
странно что там A инициализируется небезопасно
Namdak Tonpa
@5HT
Oct 08 2016 13:31
а нахуйя это?
что оно делает?
я просто поставил ensure_all_started и все ок
Andy
@m-2k
Oct 08 2016 13:32
ты меня спрашиваешь? тут конфиг вычитывается вроде
вложенный
я просто поставил ensure_all_started и все ок
в моем варианте тоже
если ты посмотришь
но чел написал что не учитываются конфиги вложенных приложений при составления ENV
что я и ожидал, поэтому забил хуй так как не понял прикола с запихиванием конфига целиком в application:start
и вообще что там за механизм смерживания конфигов из разных мест
Namdak Tonpa
@5HT
Oct 08 2016 13:34
так а твой код заметно отличается
Andy
@m-2k
Oct 08 2016 13:35
я отрефакторил мальца
Namdak Tonpa
@5HT
Oct 08 2016 13:35
давайл лучше ты ебани PR
я свой удалил нахуй
Andy
@m-2k
Oct 08 2016 13:35
не, я не разобрался как это всё работает
Namdak Tonpa
@5HT
Oct 08 2016 13:35
а я сам могу!
та я понял
я все поня
Andy
@m-2k
Oct 08 2016 13:36
ну и поясни
Namdak Tonpa
@5HT
Oct 08 2016 13:36
это та хуня шо он хотел, место разрыва
Andy
@m-2k
Oct 08 2016 13:36
почему там то атом то конфиг в start пихвается
Namdak Tonpa
@5HT
Oct 08 2016 13:36
чтобы сеттинги выставленные в sys.config срабатывали до старта приложений
Andy
@m-2k
Oct 08 2016 13:36
но application:start принимает ток атомы
Namdak Tonpa
@5HT
Oct 08 2016 13:36
а аппликейшин контроллер может как атомы так и app.src целиком понимать
не
он может и так и так
Andy
@m-2k
Oct 08 2016 13:36
в доках не написано
Namdak Tonpa
@5HT
Oct 08 2016 13:37
там все ок написано
есть я видел на какой-то странице
но это да, полудокументированые фичи
это же внутринности ремоутинга
Andy
@m-2k
Oct 08 2016 13:37
а как там конфиги собираются?
Namdak Tonpa
@5HT
Oct 08 2016 13:37
спиздил твой PR :-)
сам
Andy
@m-2k
Oct 08 2016 13:37
они мержатся вообще?
у меня код который конфиги проебывает
надо прост пофиксать
я там нихуя из ф-ии не возвращаю
и запуск без конфигов происходит
так как в консоли у меня она падала когда я в start конфиг пихал и не потестил как следует
Namdak Tonpa
@5HT
Oct 08 2016 13:39
вытащил вашу хуйню
Apps couldn't be loaded: [ssl,public_key,asn1]
опять
Andy
@m-2k
Oct 08 2016 13:39
какую
мад пересобрал?
Namdak Tonpa
@5HT
Oct 08 2016 13:41
все работает
Andy
@m-2k
Oct 08 2016 13:41
код покажи
конфиги приложений тоже поддягивает?
Namdak Tonpa
@5HT
Oct 08 2016 13:42
@mudyc we rewrote you code, and thus accepted, thanks :-)
ну там его проблемы я глубоко не понял
но если ему это нада, пусть пользуется
Andy
@m-2k
Oct 08 2016 13:42
@seb3s
hi
this fixes the app loading but breaks the sys.config
i get
application:get_env(pgapp, pools).
{ok,[]}
where I should have :
application:get_env(pgapp, pools).
{ok,[{epgsql_pool,[{size,4},{max_overflow,20}],
[{host,"localhost"},
{port,5432},
.....
don't know why
Namdak Tonpa
@5HT
Oct 08 2016 13:43
@seb3s you problem is also fixed, thanks for reporting
Andy
@m-2k
Oct 08 2016 13:43
вложенные конфиги работают?
я так понял что у него sys.config внутри epgsql
и он не мержится в ENV
ты это почекал?
Namdak Tonpa
@5HT
Oct 08 2016 13:52
не не там бред написал
счас я перепишу чтобы его epgsql pool подтягивался :-)
Andy
@m-2k
Oct 08 2016 13:53
так в чем проблемс?
с этими конфигами
Namdak Tonpa
@5HT
Oct 08 2016 14:04
> application:get_env(epgsql,pool).
{ok,[]}
все работает
> application:which_applications().
[{tcp,"TCP Server","1.0"},
 {sh,"SH External Shell Port","2.3"},
 {mad,"MAD Erlang/OTP Containers","2.3"},
 {bson,"BSON are JSON-like objects with a standard binary serialization. See bsonspec.org",
       "git"},
 {active,"ACT VXZ Continuous Compilation","0.9"},
 {epgsql,"PostgreSQL Client","3.2.0"},
 {ssl,"Erlang/OTP SSL application","8.0.2"},
 {inets,"INETS  CXC 138 49","6.3.3"},
 {fs,"FS VXZ Listener","1.10"},
 {public_key,"Public key infrastructure","1.2"},
 {asn1,"The Erlang ASN1 compiler version 4.0.4","4.0.4"},
 {crypto,"CRYPTO","3.7.1"},
 {stdlib,"ERTS  CXC 138 10","3.1"},
 {kernel,"ERTS  CXC 138 10","5.1"}]
Andy
@m-2k
Oct 08 2016 14:06
where I should have :
application:get_env(pgapp, pools).
{ok,[{epgsql_pool,[{size,4},{max_overflow,20}],
[{host,"localhost"},
{port,5432},
.....
не вижу сходства :-)
Namdak Tonpa
@5HT
Oct 08 2016 14:06
ну я просто свой пример поставил
я ж не вытаскивал его pgapp
Andy
@m-2k
Oct 08 2016 14:07
бля ну напиши хоть пару параметров там
а то [] может откуда угодно взяться
Namdak Tonpa
@5HT
Oct 08 2016 14:07
это я пока гружу env из .app файла
а он еще вроде хотел чтобы в этот момент я мержил из sys.config оверрайды
счас еще это сделаю
Andy
@m-2k
Oct 08 2016 14:08
окейлетсгоу джастдуит родинагордитсятабойсынок
Namdak Tonpa
@5HT
Oct 08 2016 14:11
Here is code of the solution:
acc_start(A,Acc,Config) ->
    application:ensure_all_started(A), Acc.

load_apps([],Config,_Acc) ->
    lists:foldl(fun(A,Acc) -> case lists:member(A,system()) of
         true -> load_config(Config,[]),
                 acc_start(A,Acc,Config);
            _ -> X = load_config(A),
                 {application,Name,Map} = X,
                 [ application:set_env(Name,K,V) || {K,V} <- proplists:get_value(env,Map,[]) ],
                 load_config(Config,[]),
                 case X of
                      [] -> acc_start(A,Acc,X);
                      _E -> acc_start(_E,Acc,X) end end end,[], applist());
load_apps(["applist"],Config,Acc) -> load_apps([],Config,Acc);
load_apps(Params,_,_Acc) -> [ application:ensure_all_started(list_to_atom(A))||A<-Params].
we dont need to merge env settings from system applications so we skip it
for user applications we merge .app (taken through load_config/1) and sys.config (taken from load_config/2) just before application start
Andy
@m-2k
Oct 08 2016 14:15
срочно нужен стартап по производству мониторов высотой в одну строку и бесконечно скроллирующихся горизонтально
Namdak Tonpa
@5HT
Oct 08 2016 14:16
не нихуя
у него еще одна проблема была
что бы в init приложения при старте преедавался смерженый конфиг
Andy
@m-2k
Oct 08 2016 14:16
ну пиздец
а как иначе
Namdak Tonpa
@5HT
Oct 08 2016 14:16
оригинального приложения и sys.config
Andy
@m-2k
Oct 08 2016 14:16
ну да
а разве это не логично?
Namdak Tonpa
@5HT
Oct 08 2016 14:17
да но нахуй если мы выставили в ENV
бери себе их в init через application:get_env
а он именно хочет, чтобы блядь приложение через тапл стартовалось
он себе проблемы на голову создает
Andy
@m-2k
Oct 08 2016 14:17
а в чем разница
Namdak Tonpa
@5HT
Oct 08 2016 14:17
вместо того чтобы решить задачу
разница в том что в его случае надо писать дохуя системного кода
Andy
@m-2k
Oct 08 2016 14:18
я не думаю что он хочет именно этого, он хочет чтобы у него конфиги работали
Namdak Tonpa
@5HT
Oct 08 2016 14:18
а если в init приложениях юзать тупо application:get_env то все ок
нет
Andy
@m-2k
Oct 08 2016 14:18
а он что юзает
Namdak Tonpa
@5HT
Oct 08 2016 14:18
он хочет чтобы говно-прилоежния которые не читают кофиги из env
получались их при старте их тапла
Andy
@m-2k
Oct 08 2016 14:19
а как принято?
и так и так, видимо и надо писать много кода? )
Namdak Tonpa
@5HT
Oct 08 2016 14:21
init([]) ->
    {ok, Pools} = application:get_env(pgapp, pools),
    PoolSpec = lists:map(fun ({PoolName, SizeArgs, WorkerArgs}) ->
                             PoolArgs = [{name, {local, PoolName}},
                                         {worker_module, pgapp_worker}] ++ SizeArgs,
                             poolboy:child_spec(PoolName, PoolArgs, WorkerArgs)
                         end, Pools),
    {ok, { {one_for_one, 10, 10}, PoolSpec} }.
вот эта хуйня будет работать
это супервизор pgapp
с тем кодом что я закомитил
Andy
@m-2k
Oct 08 2016 14:22
ну и норм
не?
Namdak Tonpa
@5HT
Oct 08 2016 14:23

...
 {application,Name,Map} = load_config(A),
[ application:set_env(Name,K,V) || {K,V} <- proplists:get_value(env,Map,[]) ],
                 load_config(Config,[]),
...
load_config(AppConfigs,[]) ->
    [ [ application:set_env(App,K,V) || {K,V} <- Cfg] || {App,Cfg} <- AppConfigs]
Andy
@m-2k
Oct 08 2016 14:23
или по спекам надо еще в инит передавать?
Namdak Tonpa
@5HT
Oct 08 2016 14:23
этого ДОСТАТОЧНО!
все мержится, все работает
главное пользоваться application:get_env в init
ENJOY!
Andy
@m-2k
Oct 08 2016 14:24
тогда сидим и ждем проектов кто юзает не env а init :-)
Namdak Tonpa
@5HT
Oct 08 2016 14:25
ждем
Andy
@m-2k
Oct 08 2016 14:25
ты в коде комент оставь что в init нихуя не передается
чтобы потом не ебаться
Namdak Tonpa
@5HT
Oct 08 2016 14:25
а ты видишь параметры у инити где оно передается? :-)
с таплом тот чувак перемудрил
я юзаю эту хуйню только для депенденси чекинга
> mad_resolve:triples().
Andy
@m-2k
Oct 08 2016 14:26
я не вникал в эту тему, ты говори, но вопросы не задавай
Namdak Tonpa
@5HT
Oct 08 2016 15:13
$ git clone git://github.com/epgsql/pgapp.git && cd pgapp
$ mad dep com pla rep
> application:get_env(pgapp,pools).
{ok,[]}
> q().
$ cp pgapp.config.sample sys.config
$ mad rep
> application:get_env(pgapp,pools).
{ok,[{pool1,[{size,10},{max_overflow,20}],
            [{host,"localhost"},
             {database,"db1"},
             {username,"user"},
             {password,"pass"}]},
     {pool2,[{size,5},{max_overflow,10}],
            [{host,"localhost"},
             {database,"db2"},
             {username,"user"},
             {password,"pass"}]}]}
new code is here
This message was deleted
load(_,A,Acc,Config) ->
    {application,Name,Map} = load_config(A),
    NewEnv = lists:foldl(fun({Name,E},Acc2) ->
             lists:foldl(fun({K,V},Acc1)    -> set_value(K,1,Acc1,{K,V}) end,Acc2,E);
                                   (_,Acc2) -> Acc end, proplists:get_value(env,Map,[]), Config),
    acc_start({application,Name,set_value(env,1,Map,{env,NewEnv})},Acc).

load_apps([],Config,Acc)             -> [ load(lists:member(A,system()),A,Acc,Config) || A <- applist()];
load_apps(["applist"],Config,Acc)    -> load_apps([],Config,Acc);
load_apps(Params,_,_Acc)             -> [ application:ensure_all_started(list_to_atom(A))||A<-Params].

set_value(Name,Pos,List,New)         -> add_replace(lists:keyfind(Name,Pos,List),Name,Pos,List,New).
add_replace(false,Name,Pos,List,New) -> [New|List];
add_replace(_____,Name,Pos,List,New) -> lists:keyreplace(Name,Pos,List,New).
Andy
@m-2k
Oct 08 2016 15:17
ты скажи работает теперь или нет
хмм, как коротко записано
теперь лучше
Namdak Tonpa
@5HT
Oct 08 2016 15:18
ну работает все
я же показал воспроизведение
pgapp сразу начинает стартовать и конектится на эти пулы
т.е. оно попадает в init
заебок
Namdak Tonpa
@5HT
Oct 08 2016 15:24
load(_,A,Acc,Config) ->
    {application,Name,Map} = load_config(A),
    NewEnv = merge(Config,Map,Name),
    acc_start({application,Name,set_value(env,1,Map,{env,NewEnv})},Acc).

merge(Config,Map,Name) ->
    lists:foldl(fun({Name,E},Acc2)   ->
    lists:foldl(fun({K,V},Acc1)      -> set_value(K,1,Acc1,{K,V}) end,Acc2,E);
                          (_,Acc2)   -> Acc2 end, proplists:get_value(env,Map,[]), Config).

acc_start(A,Acc) ->
    application:ensure_all_started(A), Acc.
короче уже вряд ли получится
Andy
@m-2k
Oct 08 2016 15:28
куда короче-то, узбогойси
1475932615813-0.jpg
rusjava8
@rusjava8
Oct 08 2016 19:59
:'(