These are chat archives for synrc/n2o

16th
Feb 2016
Yuriy Al. Shirokov
@yashrk
Feb 16 2016 08:36

Продолжу всё-таки. Раз фикса ещё долго не будет, придётся что-то с чтением файлов сделать на своей стороне. Вот такая затычка это пиздец или не пиздец:

%% Workaround for bundle files encoding bug
correct_unicode(StrangeString) ->
    try list_to_binary(unicode:characters_to_list(StrangeString))
    catch
        error:badarg -> StrangeString
    end.

?

Namdak Tonpa
@5HT
Feb 16 2016 08:45
пиздец еще, try убирай
Yuriy Al. Shirokov
@yashrk
Feb 16 2016 09:58
Так там и будет error:badarg
Namdak Tonpa
@5HT
Feb 16 2016 10:00
от неправильной строки?
Yuriy Al. Shirokov
@yashrk
Feb 16 2016 10:01
Ща, отойти надо, минут через 20-30 всё подробно расскажу
Namdak Tonpa
@5HT
Feb 16 2016 10:02
в любом случае фикс должен быть в 1 строчку
Yuriy Al. Shirokov
@yashrk
Feb 16 2016 10:58

@5HT Итак, ещё раз. Что происходит: сделаем такойsys.config:

[{n2o, [{port,8001},{route,routes},{log_modules,sample}]},
 {sample, [{cyr_string, <<"Юникод"/utf8>>}]}].

Запустим бандл:

1> {ok, Str} = application:get_env(sample, cyr_string).
{ok,<<"Юникод"/utf8>>}
2> list_to_binary(unicode:characters_to_list(Str)).
<<"Юникод"/utf8>>
3>

Теперь подложим бандлу внешний sys.config с тем же содержимым (или просто запустим REPL):

1> {ok, Str} = application:get_env(sample, cyr_string).
{ok,<<"Юникод"/utf8>>}
2> list_to_binary(unicode:characters_to_list(Str)).          
** exception error: bad argument                                                                                                                                            
     in function  list_to_binary/1                                                                                                                                          
        called as list_to_binary("Юникод")

Кстати, отдельно смешно вот что:

3> is_list(unicode:characters_to_list(Str)).
true

Но дело не в этом.
Я не хочу фиксить mad, ни однострочными фиксами, ни многострочными: я не понимаю, как он работает, и не готов прямо сейчас в этом разбираться. Я хочу чем-то заткнуть эту дырку со своей стороны, пока ты или любой другой из авторов фреймворка не пофиксите mad так, как вам нравится.
Вопрос к чатику был исключительно в том, как вам такое решение и можно ли лучше.

Namdak Tonpa
@5HT
Feb 16 2016 15:03
я ж ответил :-) решение хуйовое, можно и нужно лучше )
однострочное
любое решение не однострочное — хуйовое
Yuriy Al. Shirokov
@yashrk
Feb 16 2016 15:04
Зашибись. Осталось понять, как выяснить, побита ли кодировка, без исключения и в одну строку
Namdak Tonpa
@5HT
Feb 16 2016 15:05
не нужно думать о том побита ли кодировка или нет
нужно найти просто куда втавить строчку или удалить, чтобы все заработало
mad_repl:load_file("sys.config") надо искать
возможно он неправильно читает файл
в load_config/0 делается application:set_env поебаного юникода из файла
вот в этом месте в mad_repl надо фиксать
а не хуйней заниматься
Namdak Tonpa
@5HT
Feb 16 2016 15:16
пофиксал
Yuriy Al. Shirokov
@yashrk
Feb 16 2016 15:16
Ггг, а ведь и правда в самом mad можно одной строчкой.
diff --git a/src/provision/mad_repl.erl b/src/provision/mad_repl.erl
index 45a2f56..adcfb6c 100644
--- a/src/provision/mad_repl.erl
+++ b/src/provision/mad_repl.erl
@@ -31,7 +31,7 @@ load_config() ->
    Apps = case Config of
         [] -> case mad_repl:load_file("sys.config") of
               {error,_} -> [];
-              {ok,Bin} -> parse(binary_to_list(Bin)) end;
+              {ok,Bin} -> parse(unicode:characters_to_list(Bin)) end;
       File -> case file:consult(File) of
               {error,_} -> [];
               {ok,[A]} -> A end end,
Так же?
Namdak Tonpa
@5HT
Feb 16 2016 15:16
я уже это закомитил минуту назад
Yuriy Al. Shirokov
@yashrk
Feb 16 2016 15:17
О. Спасибо.
Namdak Tonpa
@5HT
Feb 16 2016 15:18
стоять
я какую-то хуйню закомитил
а, это @AstRonin шо то там поменял :-)
Roman
@AstRonin
Feb 16 2016 17:24
угу, осторожней там :)
Namdak Tonpa
@5HT
Feb 16 2016 17:35
я ж замержил был эту штуку
Roman
@AstRonin
Feb 16 2016 17:42
угу, я давно добавлял, а вот сам mad помоему ты не компилил...
Namdak Tonpa
@5HT
Feb 16 2016 17:43
ну уже закомпилил