These are chat archives for synrc/n2o

12th
Sep 2015
Andy
@m-2k
Sep 12 2015 05:00
Класс
Andy
@m-2k
Sep 12 2015 07:04
по логу MAD невозможно понять что ошибка произошла в .hrl файле:
Compiling /apps/erlach/src/spa.erl
Line 37: {undefined_record,act}
spa.erl:
36: %     case (Route#route.render):init(Route) of
37: %         {redirect,Postback} ->
38: %             {redirect,Postback};
web.hrl:
37:    action   = view :: action() | #act{},
Namdak Tonpa
@5HT
Sep 12 2015 08:44
ну я показываю то что мне compile возвращает
-define(COMPILE_OPTS(Inc, Ebin, Opts, Deps),
       [return_errors, {i, [Inc]}, {outdir, Ebin}] ++ Opts++Deps).
можешь поиграться с этими опциями в mad_erl.erl
я посчитал что лучше ошибки получать в виде эрланг структур чем чтобы эрланг их на консоль выводил
Andy
@m-2k
Sep 12 2015 08:46
так-то да
Namdak Tonpa
@5HT
Sep 12 2015 08:46
Вот тут может я что-то режу, посмотри
ret({error,Errors,_}) ->
    [ [ mad:info("Line ~p: ~p~n",[Line,R]) || {Line,_,R} <- Reports]
      || {_,Reports} <- Errors ], true;
это ниже в файле по тексту строки которые собвстенно эту ошибку выводят
там видешь два раза _ — может там что-то вкусное и интересное :-)
Andy
@m-2k
Sep 12 2015 08:47
ага
файл например
Namdak Tonpa
@5HT
Sep 12 2015 08:48
ну поиграйся и покажи сюда самый хипстерский вариант вывода
а то у меня нет ни одного проекта с ошибками :-)
Andy
@m-2k
Sep 12 2015 08:48
попозже, ща spa пытаюсь запустить
Namdak Tonpa
@5HT
Sep 12 2015 08:48
давай
Andy
@m-2k
Sep 12 2015 08:49
кстати почему main вызывается
у меня роутинг тока на ws настроен
Namdak Tonpa
@5HT
Sep 12 2015 08:49
main для ws тоже вызывается
до event(init)
Andy
@m-2k
Sep 12 2015 08:50
я вижу. а зачем
Namdak Tonpa
@5HT
Sep 12 2015 08:50
это ж n2o_nitrogen протокол
чтобы забиндить ивенты для контролов
Andy
@m-2k
Sep 12 2015 08:50
а в инит нельзя забиндить?
Namdak Tonpa
@5HT
Sep 12 2015 08:50
ты типи повторяешь контролы которые уже в HTML статичном лежат
можно, но тогда один и тот же код не будет работать в SPA и DTL
фишка в том что без изменения кода N2O работает в двух режимах
как показано в review примере
это гениальная хуйня :-)
просто поставь main() -> [].
Andy
@m-2k
Sep 12 2015 08:52
я не вижу разницы между тем чтобы посылать js через main или init
Namdak Tonpa
@5HT
Sep 12 2015 08:52
разницы нет никакой
Andy
@m-2k
Sep 12 2015 08:53
какая разница, биндить раньше или позже на 1 ms
Namdak Tonpa
@5HT
Sep 12 2015 08:53
все прийдет в ответ на N2O, протокольный хендшейк
я же говорю еще раз
Andy
@m-2k
Sep 12 2015 08:53
что за DTL режим
Namdak Tonpa
@5HT
Sep 12 2015 08:53
можно, но тогда один и тот же код не будет работать в SPA и DTL
фишка в том что без изменения кода N2O работает в двух режимах
DTL режима это серверные страницы, как у тебя erlach написан
когда все через n2o_cowboy проходит
и вся страница HTML генерируется в main/0
Т.е. твой erlach можно без изменения кода запустить в SPA режиме
только HTML страницы подправить.
Andy
@m-2k
Sep 12 2015 08:56
мне кажется нет смысла формировать стейт в мэин и потом его в ws процесс прокидвать
Namdak Tonpa
@5HT
Sep 12 2015 08:57
это нужно для DSL/DTL режима потому что страница рендерится в одном процессе а ивенты в другом
для SPA режима все в одном процессе происходит
поэтому в SPA режиме нет никакиъ transition процессов
Andy
@m-2k
Sep 12 2015 08:58
у меня не получится запустить в spa режиме так как он на это не расчитан
я ща код почти полностью буду переписывать
на новую модель рендеринга
Namdak Tonpa
@5HT
Sep 12 2015 08:59
да тебе страницы надо менять а не код :-)
но можно конечно сделать чисто SPA приложене
так код будет короче
Andy
@m-2k
Sep 12 2015 09:00
мне это и надо, я не буду генерить до выдачи html
Namdak Tonpa
@5HT
Sep 12 2015 09:00
ты же когда-то говорил что DTL/DSL режим наше всё
Andy
@m-2k
Sep 12 2015 09:00
да, но тут будет дарк нет
чтобы не кешировалось поисковиками
с другой стороны ссылки я поддерживать буду, но отдаваться они будут все статикой а потом уже наполняться контентом
Namdak Tonpa
@5HT
Sep 12 2015 09:02
та ты можешь и файлы в static фолдере через file:write_file перезаписывать
после каждого апдейта
Andy
@m-2k
Sep 12 2015 09:03
могу, но мне наоборот это не надо
Namdak Tonpa
@5HT
Sep 12 2015 09:03
ну тогда просто удаляй все из main и биндься в event(init)
Andy
@m-2k
Sep 12 2015 09:04
у меня есть второй проект - там оба режима поддерживаются
я ща оттуда все перенес и перенесу рендеринг в ws процесс и все
но там всё настолько функционально что кода дохуя переписывать, чтобы все паттерны поддерживать
Namdak Tonpa
@5HT
Sep 12 2015 14:17
котаны кому не впадло вичитайте главу
Yuriy Al. Shirokov
@yashrk
Sep 12 2015 14:51
«N2O application server implemented to support N2O protocol protocol defenition in Erlang which is widely used in enterprise applications.» — не распарсил, это опечатка или «(N2O protocol) (protocol definition)», whatever it means?
И кстати в любом случае опечатка: «defenition» вместо «definition» (пулл-реквест в 1 байт как-то странно делать)
Andy
@m-2k
Sep 12 2015 14:56
сделай полбайта
Andy
@m-2k
Sep 12 2015 15:22
@5HT у меня на маке после этой ошибки Segmentation fault: 11 :smile:
то есть эту хуйню js посылает
Namdak Tonpa
@5HT
Sep 12 2015 15:26
@yashrk спасибо
@m-2k какую хуйню?
после фикса все ок?
или до фикса валится VM?
я вообще не понимаю как это может VM завалить
Andy
@m-2k
Sep 12 2015 15:30
ток что пофиксал как upack(<<>>) -> <<>>;
но сегфолтится не от этого )
Namdak Tonpa
@5HT
Sep 12 2015 15:31
так я ж это пофиксал уже
Andy
@m-2k
Sep 12 2015 15:31
я думал ты не стал
Namdak Tonpa
@5HT
Sep 12 2015 15:32
stream({binary,<<>>},R,S) -> nop(R,S);
stream({binary,D},R,S)    -> push(upack(D),R,S,protocols(),[]);
Andy
@m-2k
Sep 12 2015 15:32
+stream({binary,<<>>},R,S) -> nop(R,S); это?
ок
Namdak Tonpa
@5HT
Sep 12 2015 15:32
ага
зачем NOP по протокольному стеку передавать
сразу назад
Andy
@m-2k
Sep 12 2015 15:32
да я так, быстрофикснул
Namdak Tonpa
@5HT
Sep 12 2015 15:32
так а от чего segfault ?
Andy
@m-2k
Sep 12 2015 15:32
хз
где то я накосячил
Namdak Tonpa
@5HT
Sep 12 2015 15:33
В эрланге segfault так редки как звезды днем на небе
как ты это получил?
Andy
@m-2k
Sep 12 2015 15:33
какие erl вызываются после Req1 = wf:header(<<"Access-Control-Allow-Origin">>, ConfigOrigin, NewCtx#cx.req),
у меня между этим и до main/init
Namdak Tonpa
@5HT
Sep 12 2015 15:34
ковбой
Andy
@m-2k
Sep 12 2015 15:34
сегфолты можно также сделать через новые функции времени
Andy
@m-2k
Sep 12 2015 15:34
достаточно пару десятков тысяч раз подряд вызвать
Namdak Tonpa
@5HT
Sep 12 2015 15:34
ану пример
ты как эрланг ставил?
Andy
@m-2k
Sep 12 2015 15:35
через kerl
Namdak Tonpa
@5HT
Sep 12 2015 15:35
на маке?
Andy
@m-2k
Sep 12 2015 15:35
тоже
Namdak Tonpa
@5HT
Sep 12 2015 15:35
я через brew ставил
ану дай с временем сниппет я у себя запущу
Andy
@m-2k
Sep 12 2015 15:36
ну там кажется переполнение памяти было
Namdak Tonpa
@5HT
Sep 12 2015 15:36
где в ковбое?
Andy
@m-2k
Sep 12 2015 15:37
на серваке свободных 300мб было
Namdak Tonpa
@5HT
Sep 12 2015 15:37
или NOP бесконечно по стеку бегал?
шо у тебя за сервак?
где ты такое взял? :-)
Andy
@m-2k
Sep 12 2015 15:37
нет, я говорю о двух разных сегфолтах
Namdak Tonpa
@5HT
Sep 12 2015 15:38
@yashrk а по тексту все понятно?
Andy
@m-2k
Sep 12 2015 15:44
n2o_proto:init откуда вызывается?
Namdak Tonpa
@5HT
Sep 12 2015 15:44
из ковбоя
Andy
@m-2k
Sep 12 2015 15:44
что после нее дергается
Namdak Tonpa
@5HT
Sep 12 2015 15:44
хуй его знает, надо в код ковбоя смотреть
Andy
@m-2k
Sep 12 2015 15:44
да не в ковбое а в n2o
n2o_document?
Namdak Tonpa
@5HT
Sep 12 2015 15:46
нет
n2o_document это другой эндпойнт
он в SPA не работает
Andy
@m-2k
Sep 12 2015 15:47
а кто тогда main вызывал
Namdak Tonpa
@5HT
Sep 12 2015 15:48
SPA: cowboy -> n2o_stream -> n2o_proto -> n2o_nitrogen -> main/0
SSP: cowboy -> n2o_cowboy -> n2o_document -> main/0
Andy
@m-2k
Sep 12 2015 15:50
короче после n2o_proto:init хз когда падает
10 минут назад все работало, пару строчек поменял ток
Namdak Tonpa
@5HT
Sep 12 2015 15:57
может смержить n2o_proto в n2o_stream ?
Andy
@m-2k
Sep 12 2015 15:58
?
Namdak Tonpa
@5HT
Sep 12 2015 15:58
ну просто они раньше большие были
с час n2o_proto 15 строчек
Andy
@m-2k
Sep 12 2015 16:03
Валится после ws({ok,R,S}) -> wf:info(?MODULE,"DEBUG: ~p",[25]),{ok,R,S,hibernate};
не мержил
Namdak Tonpa
@5HT
Sep 12 2015 16:03
убери hibernate
попробуй
Andy
@m-2k
Sep 12 2015 16:03
а что поставить заместо
Namdak Tonpa
@5HT
Sep 12 2015 16:03
{ok,R,S}
Andy
@m-2k
Sep 12 2015 16:04
не помогло
где дальше посмотреть можно?
Namdak Tonpa
@5HT
Sep 12 2015 16:07
счас отвечу на письмо скотту
и посмотрю в исходниках ковбоя
6 мин
Namdak Tonpa
@5HT
Sep 12 2015 16:17
дальше по стеку после вызова websocket_init
идет websocket_handshake
потом loop
шото там какая-то хуйня написана
таймер на каждый конешин создается зачем-то
вот основной цикл вебсокетов
абсолютно грустная хуйня
которая ждет чтобы ее переписали нахуй
Namdak Tonpa
@5HT
Sep 12 2015 16:23
наверно этот процесс ловит какую-то хуйню
слишком сложный протокол тут у него с таймерами
и медленный
шо ебануть свой WS сервер по быстрому за выходные?
:-)
на ranch
пока
пока ничего не меняя
Andy
@m-2k
Sep 12 2015 16:45
внезапно
Erlang/OTP 18 [erts-7.0] [source] [64-bit] [smp:4:4] [async-threads:10] [hipe] [kernel-poll:false]

Eshell V7.0  (abort with ^G)
1> Key=<<"+lWPP1qAImMHna5xezExow==">>.
* 1: syntax error before: '<'
1> Key= <<"+lWPP1qAImMHna5xezExow==">>.
<<"+lWPP1qAImMHna5xezExow==">>
2> crypto:hash(sha, << Key/binary, "258EAFA5-E914-47DA-95CA-C5AB0DC85B11" >>).
Segmentation fault: 11
что это за говнокод вообще
наверн придется ноут ребутнуть )
Eshell V7.0  (abort with ^G)
1> crypto:hash(sha, <<  "258EAFA5-E914-47DA-95CA-C5AB0DC85B11" >>).           
<<41,248,125,64,139,12,85,151,37,235,17,15,99,19,199,205,
  111,18,103,204>>
на дебиане все ок
ПИЗДЕЦ
что блять КРИПТОПРОЦЕССАР атказал? :smile:
Andy
@m-2k
Sep 12 2015 16:54
после ребута все ок
@5HT жаль что бага не в ковбое да? )))
Namdak Tonpa
@5HT
Sep 12 2015 18:26
жаль
но все равно от переписывания это его не спасет
Andy
@m-2k
Sep 12 2015 18:32
так, поскольку у меня spa, походу откладываются body и html
Namdak Tonpa
@5HT
Sep 12 2015 18:32
:-)
Andy
@m-2k
Sep 12 2015 18:49
возможно стоило бы такую тему в kvs вкомитить
list(Table,FeedId) ->
    Count=undefined,
    case kvs:get(feed,{Table,FeedId}) of
        {ok, F} -> kvs:entries(F,Table,Count);
        _ -> [] end.
Andy
@m-2k
Sep 12 2015 19:02
а, энтри ж поддерживает, так и знал что опять буду все переписывать )
entries({error,_},_,_,_)      -> [];
entries({ok,Container},N,C,Driver) -> entries(Container,N,C,Driver);
Namdak Tonpa
@5HT
Sep 12 2015 19:06
:-)
synrc — история непрерывного совершенствования!
Andy
@m-2k
Sep 12 2015 19:07
ага, да я прост въехать никак не мог в эти энтри
хотя бы буквы проставить по нормальному
а то N - это Table
Namdak Tonpa
@5HT
Sep 12 2015 19:08
N — это Name
но можно и на T поменять
Andy
@m-2k
Sep 12 2015 19:08
T - это TopId
ад короче, но больше всего понравилось
entries(A,B,C)     -> entries (A,B,C, #kvs{mod=?DBA}).
Namdak Tonpa
@5HT
Sep 12 2015 19:16
это техническая простыня враппер
нахуй там вобще что-то кроме букв
Andy
@m-2k
Sep 12 2015 19:41
вывод в mad поменял, но ниче не поменялось
нужно делать make?
Namdak Tonpa
@5HT
Sep 12 2015 19:42
что не поменялось?
какой make?
mad пересобирать нужно только если ты бинарник запускаешь
если ты из active то достаточно тот mad который в deps возле active
Andy
@m-2k
Sep 12 2015 19:45
=ERROR REPORT==== 12-Sep-2015::22:39:10 ===
erlach_spa:dynamic_navigation error: {error,{error,function_clause}}
Namdak Tonpa
@5HT
Sep 12 2015 19:46
а строка где?
Andy
@m-2k
Sep 12 2015 19:47
это ошибка рантайма
в каком файле вывод рантайма? )
Namdak Tonpa
@5HT
Sep 12 2015 19:51
хм
это все что там есть?
Andy
@m-2k
Sep 12 2015 19:51
где
Namdak Tonpa
@5HT
Sep 12 2015 19:51
в полях ошибки
Andy
@m-2k
Sep 12 2015 19:51
да
нет
это то что выводится
при компиляции я фиксаю
а это рантайм, где он выводится?
Namdak Tonpa
@5HT
Sep 12 2015 19:53
я не понииаю что это
Andy
@m-2k
Sep 12 2015 19:53
понятно написал? )
Namdak Tonpa
@5HT
Sep 12 2015 19:53
где строка
:)
Andy
@m-2k
Sep 12 2015 19:53
кароче я ща фиксаю вывод при компиляции
а это ошибка при рантайме
где в mad выводятся ошибки рантайма
или это все в одном месте
Namdak Tonpa
@5HT
Sep 12 2015 19:54
все в одном
Andy
@m-2k
Sep 12 2015 19:54
нет
в разных
Namdak Tonpa
@5HT
Sep 12 2015 19:55
ну еще mad info есть
но они ж повсюду
Andy
@m-2k
Sep 12 2015 19:55
а не
это я сам вывожу
Namdak Tonpa
@5HT
Sep 12 2015 19:55
:-)
Andy
@m-2k
Sep 12 2015 19:55
у меня тут try catch
ты убрал пиздоблядскую хуйню которая на страницу сыпалась?
если например в main ошибка
Namdak Tonpa
@5HT
Sep 12 2015 19:56
error_page ?
Andy
@m-2k
Sep 12 2015 19:56
да
Namdak Tonpa
@5HT
Sep 12 2015 19:56
а зачем?
а как ошибки видеть?
Andy
@m-2k
Sep 12 2015 19:57
это же говно для девелопа
а чо их в консоль нельзя ?
Namdak Tonpa
@5HT
Sep 12 2015 19:57
в продакшине не должно быть ошибок
Andy
@m-2k
Sep 12 2015 19:57
поржал что ли
Namdak Tonpa
@5HT
Sep 12 2015 19:57
можно и нужно в консоль
даже issue такой есть
Andy
@m-2k
Sep 12 2015 19:58
но у тебя все проекты без ошибок?
:smile:
Namdak Tonpa
@5HT
Sep 12 2015 19:58
все
до error_page не добраться ни в одном
в этом вроде как и смысл продакшина
выкатить проект без 400 и 500 ?
не?
Andy
@m-2k
Sep 12 2015 20:00
да, но стресс тестирование не покрывает живых пользователей
так что логирование в браузер должно быть убрано
Namdak Tonpa
@5HT
Sep 12 2015 20:00
ну а как живые пользователя тебе сообщат об ошибке если ее не увидят?
если логирование в браузере убрано и на странице нет собщения об ошибке?
Andy
@m-2k
Sep 12 2015 20:01
они должны увидеть страницу-заглушку а лог ты посмотреть в лог-файле
Namdak Tonpa
@5HT
Sep 12 2015 20:01
ну вот и переопределяй error_page
и ставь erroring модуль
Andy
@m-2k
Sep 12 2015 20:01
а как
Namdak Tonpa
@5HT
Sep 12 2015 20:02
n2o erroring
и в error_page #alert вайрь
Andy
@m-2k
Sep 12 2015 20:03
сколько всего делать надо...
а как же клац-клац :smile:
Namdak Tonpa
@5HT
Sep 12 2015 20:04
да дахуя
я не понимаю шо ты ноешь
я сделал стектрейсы в эрланге размером с твит соощение
которые прекрасно работают на динамических страницах
естественно что в spa режиме они не работают
erroring модуль переопределяется если тебе не нравится краткий формат
и не хватает сообщения в логе
я могу передалать это чтобы красиво всё было
счас ухожу вернусь домой прееделаю получше
#alert вайрить это ок ?
Andy
@m-2k
Sep 12 2015 20:08
нет это говно
Namdak Tonpa
@5HT
Sep 12 2015 20:08
а как?
Andy
@m-2k
Sep 12 2015 20:08
ниче не надо я пошутил
я ща mad пофиксаю
Namdak Tonpa
@5HT
Sep 12 2015 20:11
надо
надо надизайнить модный алерт
который гарантировано по центру будет
или спиздить у кложи
Andy
@m-2k
Sep 12 2015 20:12
3 строчки через flexbox
и он по центру
Namdak Tonpa
@5HT
Sep 12 2015 20:12
дай сампл
Andy
@m-2k
Sep 12 2015 20:12
алерт ток не делай
в рот ебал его закрывать
#ctn {
            display: flex; display: -webkit-flex;
            align-items: center; -webkit-align-items: center;
            justify-content:center; -webkit-justify-content:center;
        }
Namdak Tonpa
@5HT
Sep 12 2015 20:14
а как окно закрывать?
Andy
@m-2k
Sep 12 2015 20:15
хз при чем тут окно ) ты ж в dom рендерил
Namdak Tonpa
@5HT
Sep 12 2015 20:15
типа нарисовать и все
screen of death ?
Andy
@m-2k
Sep 12 2015 20:16
канешн
время добавь до милисекунд да и все
Namdak Tonpa
@5HT
Sep 12 2015 20:16
так а HTML где?
Andy
@m-2k
Sep 12 2015 20:16
ctn это контейнер
внутри него все будет в центре
Namdak Tonpa
@5HT
Sep 12 2015 20:17
ну так это ж должно раотать в любоб контейнере
или мне фулскрин в z index надо и в нем уже показывать?
можно еще так
я не оч понимаю что ты хочешь
модальное окно?
а под ним че? пустой экран? :smile:
Namdak Tonpa
@5HT
Sep 12 2015 20:19
буря мглою хочу
чтобы появлялась поверх любого HTML
Andy
@m-2k
Sep 12 2015 20:19
так это ж ошибка в main
никакого html нет
Namdak Tonpa
@5HT
Sep 12 2015 20:20
ну в SPA есть
иначе кто N2O_start() вызывал?
Andy
@m-2k
Sep 12 2015 20:20
а в spa у меня ошибки логируются
они и в браузер могут выводиться в каком то случае?
Namdak Tonpa
@5HT
Sep 12 2015 20:20
там же надо для SPA и SSP режимой разные эроры выдывать
для SSP останется этот текст который тебе не нравится
а для SPA надо либо консоль лог вайринг слать безусловный
либо рисовтаь флексбокс
Andy
@m-2k
Sep 12 2015 20:21
я не оч понимаю о чем ты, но мне кажется больше так как ща )
так как я допускаю что если юзер нажал не ту кнопку то процесс тупо умрет
и ошибки ему не положено
хотя я зачем-то понаписывал try catch на каждый ивент
наверное надо, да
Namdak Tonpa
@5HT
Sep 12 2015 20:23
не надо это делать
не должен ты это делать
pickle direct обернуты уже в try catch
Andy
@m-2k
Sep 12 2015 20:24
в случае ошибки я делаю редирект на главную )
и логирую
Namdak Tonpa
@5HT
Sep 12 2015 20:24
они логируются
если n2o_nitrogen включить
только надо еще в сокет слать {error,_}
протокольное сообщение
через форматтер
либо вайрить console.log
Andy
@m-2k
Sep 12 2015 20:46
Compiling /apps/erlach/src/erlach_spa.erl
Line 32: "head mismatch" in "/apps/erlach/src/erlach_spa.erl"
Line 19: {undefined_function,{navigate,1}} in "/apps/erlach/src/erlach_spa.erl"
Line 22: {undefined_function,{navigate,1}} in "/apps/erlach/src/erlach_spa.erl"
Compiling /apps/erlach/src/erlach_main.erl
Line 109: ["syntax error before: ","'{'"] in "/apps/erlach/include/erlach.hrl"
Line 38: {undefined_record,render_event} in "/apps/erlach/src/erlach_main.erl"
Line 40: {undefined_record,render_event} in "/apps/erlach/src/erlach_main.erl"
ахуенчик
Compiling /apps/erlach/src/erlach_main.erl
Line 109: {undefined_record,act} in "/apps/erlach/include/erlach.hrl"