These are chat archives for synrc/n2o

8th
Sep 2015
Andy
@m-2k
Sep 08 2015 01:23
сука беллар, заставляет меня нервничать
Снимок экрана 2015-09-08 в 4.22.41.png
АХАХАХАХАХ
СУКА ДАААА
Снимок экрана 2015-09-08 в 4.27.20.png
Namdak Tonpa
@5HT
Sep 08 2015 05:48
это на последнем n2o?
Andy
@m-2k
Sep 08 2015 08:45
На последнем, но он тут ни при чем
Namdak Tonpa
@5HT
Sep 08 2015 08:45
я ж просто в последнем #binary убрал
и перевожу все на #ftp
а сколько bpg.js и worker.js занимает?
Andy
@m-2k
Sep 08 2015 08:46
Вот у меня скоро будут вопросы
Namdak Tonpa
@5HT
Sep 08 2015 08:46
может сделать биндинги в shen к твоему worker.js
Andy
@m-2k
Sep 08 2015 08:46
Воркер столько же
Bpg.js пару строк
Namdak Tonpa
@5HT
Sep 08 2015 08:47
чтобы типа пишешь на эрланге spawn(fun A() -> A() end). и оно воркера создавало на клиенте
ты не бойся я если шо твой код верну
просто хотел посмотреть как оно будет выглядеть если голое все
Andy
@m-2k
Sep 08 2015 08:48
Но через шен не будет кешироваться
Namdak Tonpa
@5HT
Sep 08 2015 08:48
мне это штука с 132 не нравится
с таким же успехом ты мог бы определить свой бинарный участок в BERT кадре
Andy
@m-2k
Sep 08 2015 08:49
132?
Namdak Tonpa
@5HT
Sep 08 2015 08:49
ну помнишь ты придумал маркер бинарный
Andy
@m-2k
Sep 08 2015 08:49
А, да
Namdak Tonpa
@5HT
Sep 08 2015 08:49
131 — берт
132 — твой
Andy
@m-2k
Sep 08 2015 08:49
Я тоже об этом вчера подумал
Раньше я этого не понимал )
Namdak Tonpa
@5HT
Sep 08 2015 08:49
так вот там для этого мы счас заинтродюсили структуру #ftp
посмотри или она тебе подходит
если есть вопросы по ней я отвечу
пока по ней не написал документации
так как реализации пока нет
ну т.е. ты согласен, что это надо было удалить? :-)
Andy
@m-2k
Sep 08 2015 08:50
Да, конечно
Разве что для контроллеров
Станков например
Namdak Tonpa
@5HT
Sep 08 2015 08:51
для микро-котроллеров :-)
Andy
@m-2k
Sep 08 2015 08:52
Которые умеют в js лол
У меня пока и без шена реализации нет, это на эрлаче надо тестить а его переписать неплохо бы под СПА и даркнет
Andy
@m-2k
Sep 08 2015 08:57
А это значит что надо половину выкинуть а половину переписать
Уваров кстати мегакрут
Namdak Tonpa
@5HT
Sep 08 2015 08:58
кто такой Уваров и что выкинуть?
Andy
@m-2k
Sep 08 2015 08:58
Уваров это тот кто ux на unidata написал
Михаил Уваров
Namdak Tonpa
@5HT
Sep 08 2015 08:59
ну я ж ux юзаю в pie
суть же N2O что при переходе с DTL на SPA не надо ничего перерписывать
чуть чуть main/0 модифицировать и все
Andy
@m-2k
Sep 08 2015 09:02
Сделаю ща страничку с 50 bpg, потестирую на ней
Yuriy Al. Shirokov
@yashrk
Sep 08 2015 09:08
Почитал код https://github.com/synrc/skyline. Я чего-то не понял или там весь контент захардкожен и реальных обращений к базе не делается?
Если да, то вопрос: есть ли где-то доступные для чтения исходники проекта с реальным применением kvs
(не знаю, не оффтопик ли, но отдельного чата по kvs вроде нету)
Namdak Tonpa
@5HT
Sep 08 2015 09:09
в skyline нет kvs
kvs есть в n2o/sample
Yuriy Al. Shirokov
@yashrk
Sep 08 2015 09:09
Угу, спс, пойду почитаю
Смутило вот это:
-include_lib("kvs/include/product.hrl").
-include_lib("kvs/include/comment.hrl").
-include_lib("kvs/include/entry.hrl").
-include_lib("kvs/include/feed.hrl").
Namdak Tonpa
@5HT
Sep 08 2015 09:11
ну там же просто рекорды объявлены
схема базовая в kvs живет
Yuriy Al. Shirokov
@yashrk
Sep 08 2015 09:12
O'k.
Namdak Tonpa
@5HT
Sep 08 2015 09:12
вот например банковская схема:
https://github.com/spawnproc/db
чтобы не плодить репозиториев было принято решение поставлять kvs вместо со схемой которая полходит 80% всем социальным сайтам
влключая интернет магазины и блоги
а поскольку skyline это магазин то и показывается пример работы с этой схемой
там просто kvs:put/1 или kvs:add/1 любого рекорда и оно в базе
можно еще на https://github.com/erlang-synrc/cms посмотреть
но оно пока на новых n2o не работает
когда заработает перенесем в synrc/cms
Yuriy Al. Shirokov
@yashrk
Sep 08 2015 09:15
О-о, то что надо, спасибо! Мне пускать не нужно, я думаю, чтения кода будет достаточно
Namdak Tonpa
@5HT
Sep 08 2015 09:16
в cms все есть
админка роли ACL посты древовидные каменты
Andy
@m-2k
Sep 08 2015 09:16
и даже права доступа
Namdak Tonpa
@5HT
Sep 08 2015 09:16
заливка блюреев
paypal
авторизация facebook и твиттер
вообще ВСЕ!
:-)
и это все занимает 2000 строк
сейчас мы работаем над тем чтобы починить заливку файлов
и тогда перейдем к портированию cms
но в 2.9 cms еще не будет
возможно к новому году
2.12
у n2o еще не было декабрьских релизов :-)
для cms надо название какое-то нормальное
Yuriy Al. Shirokov
@yashrk
Sep 08 2015 09:36
Да, с кодом cms сильно понятнее, как что делать. Оценил kvs_acl
Andy
@m-2k
Sep 08 2015 09:40
главная фишка kvs - фиды (#iterator.feed_id)
двусвязные цепочки записей внутри таблиц с метаинформацией в #feed, #log, etc…
Andy
@m-2k
Sep 08 2015 10:47
@5HT итак, как отправить файл? :smile:
Namdak Tonpa
@5HT
Sep 08 2015 10:48
ну бери пакуй в #ftp
self() ! #ftp{}.
и оно скинет в сокет #ftp
а на клиенте просто $file.do = function(x) { console.log(x); }
Andy
@m-2k
Sep 08 2015 10:49
а, точн
Namdak Tonpa
@5HT
Sep 08 2015 10:49
и пиши там обработчик
Andy
@m-2k
Sep 08 2015 10:57
event(init) ->
   ***
    BpgImg=file:read_file(hd(BpgThumbFileList)),
    self() ! #ftp{data=BpgImg},
    ok;
так не уезжает чот
Namdak Tonpa
@5HT
Sep 08 2015 11:00
а n2o_file есть в протоколах?
он получает это?
Andy
@m-2k
Sep 08 2015 11:00
<script>protos = [$client,$bert]; N2O_start();</script>
Namdak Tonpa
@5HT
Sep 08 2015 11:00
этого на клиенте достаточно
n2o_file же не дописаный
там у меня стрикт не все открытый релей
там надо сначала init
сделать апотом send
кароче n2o_file же еще не начинали писать даже :-)
сделай из него релей
себе
n2o_bpg
Andy
@m-2k
Sep 08 2015 11:01
как
Namdak Tonpa
@5HT
Sep 08 2015 11:02
ну выброси тупо весь код оттуда
и поставь шо приходит то и уходит
Andy
@m-2k
Sep 08 2015 11:02
что такое релей йопта
Namdak Tonpa
@5HT
Sep 08 2015 11:02
релей — это типа что пришло то и ушло
без логики
Andy
@m-2k
Sep 08 2015 11:02
n2o_file можно как-то переопределить?
могу прям в сорцах пофиксать
Namdak Tonpa
@5HT
Sep 08 2015 11:03
можно конечно
   application:set_env(n2o,protocols,[ n2o_heart,
                                 n2o_nitrogen,
                                 n2o_client,
                                 n2o_file  ]).
Andy
@m-2k
Sep 08 2015 11:13
не совсем понял что там поменять надо
есть пример другого файла?
Namdak Tonpa
@5HT
Sep 08 2015 11:14
есть в папке protocols :-)
это все примеры протоколов
Andy
@m-2k
Sep 08 2015 11:14
это что за хуйня
proc(init,Async) ->  {ok, Async};
Namdak Tonpa
@5HT
Sep 08 2015 11:14
не это все тебе не нужно
это все выбрасывай
это ж асинхронный воркер для заливки файлов
типа когда клиент шлет #ftp с init то оно создает под супервизором воркера
а дальше при #ftp с send оно общается с этим воркером
это все тебе не нужно
а может и нужно
Andy
@m-2k
Sep 08 2015 11:15
разве?
Namdak Tonpa
@5HT
Sep 08 2015 11:16
это нужно когда ты гигибайты чанкуешь
а когда по 1 картике мегабайтной то не очень
Andy
@m-2k
Sep 08 2015 11:16
кстати надо сделать так чтобы если че страница закрылась - воркер помирал (опционально)
Namdak Tonpa
@5HT
Sep 08 2015 11:16
там будут таймаукты конечно
этой хуйне же два дня от роду :-)
Andy
@m-2k
Sep 08 2015 11:18
info(#ftp{data=Bin}=FTP, Req, #cx{}=State) ->
    wf:info(?MODULE,"File Transfer Init: ~p~n",[size(Bin)]),
    {reply,Bin,Req,State};
так что ли
Namdak Tonpa
@5HT
Sep 08 2015 11:19
нет {reply,FTP,Req,State}
релей полный
что пришло то ушло
клиент может только #ftp #bin #io получать
пока
Andy
@m-2k
Sep 08 2015 11:20
Error in process <0.676.0> with exit value:
{badarg,[{erlang,iolist_to_binary,
                 [{ftp,undefined,undefined,undefined,undefined,undefined,
                       undefined,undefined,
                       {error,enoent},
                       undefined,undefined,undefined}],
                 []},
Namdak Tonpa
@5HT
Sep 08 2015 11:21
покажи свой wf:config(n2o,formatter)
Andy
@m-2k
Sep 08 2015 11:21
{ok,bert}
я уже проверял
Namdak Tonpa
@5HT
Sep 08 2015 11:22
счас гляну
у меня ошибки нет
смотри у себя
ищи кто iolist_to_binary пытается сделать
Andy
@m-2k
Sep 08 2015 11:30
а чо у меня такой файл не хочет читаться "apps/review/priv/static/bpg-thumb/129580_original.bpg"
из консоли читается а из event нет
Namdak Tonpa
@5HT
Sep 08 2015 11:31
нашел кто iolist_to_binary делает?
Andy
@m-2k
Sep 08 2015 11:31
ща поищу
         {cowboy_websocket,websocket_send,2,
                           [{file,"deps/cowboy/src/cowboy_websocket.erl"},
Namdak Tonpa
@5HT
Sep 08 2015 11:34
а бля
Andy
@m-2k
Sep 08 2015 11:34
то есть ftp не проходит формат
Namdak Tonpa
@5HT
Sep 08 2015 11:34
     {reply,wf:format(FTP),Req,State}.
:-)
Andy
@m-2k
Sep 08 2015 11:34
ЛОЛ
Namdak Tonpa
@5HT
Sep 08 2015 11:35
бля гиттер сука няшный
Andy
@m-2k
Sep 08 2015 11:35
гуд
wf_convert:BERT {ftp,_,_,_,_,_,_,_,_,_,_,_}: {ftp,undefined,undefined,
                                              undefined,undefined,undefined,
                                              undefined,undefined,<<>>,
                                              undefined,undefined,undefined}
Namdak Tonpa
@5HT
Sep 08 2015 11:35
как сюда бабки заплатить?
Andy
@m-2k
Sep 08 2015 11:35
в гитлер?
Namdak Tonpa
@5HT
Sep 08 2015 11:35
да
Andy
@m-2k
Sep 08 2015 11:36
я не платил
Namdak Tonpa
@5HT
Sep 08 2015 11:36
уже плачу
Andy
@m-2k
Sep 08 2015 11:39
BpgThumb=filelib:wildcard("apps/review/priv/static/bpg-thumb/*.bpg"),
BpgImg=file:read_file(hd(BpgThumb)),
ебать я лох
{ok,BpgImg}=file:read_file(hd(BpgThumb)),
wf_convert:BERT {ftp,_,_,_,_,_,_,_,_,_,_,_}: {ftp,undefined,undefined,
                                              undefined,undefined,undefined,
                                              undefined,undefined,
                                              <<66,80,71,251,32,0,134,118,133,
                                                25,0,3,146,71,64,68,1,193,144,
                                                149,129,18,0,0,1,38,1,175,23,
                                                128,250,134,176,80,79,186,238,
                                                152,18,249,145,27,129,119,43,
Namdak Tonpa
@5HT
Sep 08 2015 11:41
надо в wf_format там ~n поставить после }:
Andy
@m-2k
Sep 08 2015 11:42
надо вообще size выводить
а то зашквар на стопицот экранов
Namdak Tonpa
@5HT
Sep 08 2015 11:42
там в #ftp есть size
там и offset есть
11 полей, карл!
Andy
@m-2k
Sep 08 2015 11:43
не
вместо бинаря его размер логировать
size(#ftp.data)
Namdak Tonpa
@5HT
Sep 08 2015 11:44
надо сделать чтобы в #ftp по дефаулту [] вместо undefined были
[] — это N2O-шый undefined
Ибо:
> term_to_binary([]).
<<131,106>>
> term_to_binary(<<>>).
<<131,109,0,0,0,0>>
двухбайтовый nil :-)
Andy
@m-2k
Sep 08 2015 11:45
еще надо сделать чтобы в wf:info можно было fun() пускать чтобы данные за зря не обрабатывать если лог отключен
Namdak Tonpa
@5HT
Sep 08 2015 11:45
мысль здравая
Andy
@m-2k
Sep 08 2015 11:46
ну это для расширенного лога, кошерного, так то я просто обычно переменные в ~p вывожу
но раньше case всякие вставлял, потом опомнился
что примечательно, теперь у меня сафари не зависает при декоде bpg если dev-консоль открыта :smile:
а то я даже firefox расчехлил вчера
в n2o.js есть парсеры bert для человека?
или по старинке x.value[0][8].value
Namdak Tonpa
@5HT
Sep 08 2015 11:53
по старинке
если хочешь можешь попробовать переписать
Andy
@m-2k
Sep 08 2015 11:53
не
оверхед на доступ
динамические имена это жопа
это как в erlang
element_by_name(Name,Record) ->
    Fields=record_fields(element(1,Record)),
    element(index_of(Name,Fields,2),Record).

setelement_by_name(Name,Record,Value) ->
    Fields=record_fields(element(1,Record)),
    setelement(index_of(Name,Fields,2),Record,Value).

record_fields(RecordName) ->
    case RecordName of
        query         -> record_info(fields,query);
        route         -> record_info(fields,route);
        st            -> record_info(fields,st);
        chapter       -> record_info(fields,chapter);
        theme         -> record_info(fields,theme);
    end.
работает в 10 медленнее захаржкоженого getelement/setelement
Namdak Tonpa
@5HT
Sep 08 2015 11:56
это написал непросветленный человек
Andy
@m-2k
Sep 08 2015 11:57
это я написал
Namdak Tonpa
@5HT
Sep 08 2015 11:57
удали это :-)
если хочешь по именам в рантайме доступать быстро
то это нужно parse_transform писать
или заюзать synrc/rest
который будет генеририровать простыню
Andy
@m-2k
Sep 08 2015 11:58
парс трансформ я хотел заюзать но не въехал в него
Namdak Tonpa
@5HT
Sep 08 2015 11:58
field(name) -> #record.name;
field(id) -> #record.id.
и тогда будет просто:
element_name(N,R) -> element(field(N),R).
setelement_name(N,R,V) -> setelement(field(N),R,V).
не может быть два подчеркивания в имени :-)
Andy
@m-2k
Sep 08 2015 12:01
сделай модуль и закинь в extra )
а я заюзаю
пока в bpg застрял :smile:
Namdak Tonpa
@5HT
Sep 08 2015 12:01
я счас книгу книгу пишу, некогда :-)
это простейший parse_transform
напиши его сам!
это нужно в kvs закомитить
Andy
@m-2k
Sep 08 2015 12:21
в каком формате бинарь приезжает?
я вижу текст какой-то
а нужен ArrayBuffer, не?
function de_bin(S) {
    var Size = ltoi(S, 4);
    S = S.substring(4);
    return { value: bin(S.substring(0, Size)), rest: S.substring(Size) }; };
это то о чем я думаю?
Andy
@m-2k
Sep 08 2015 12:34
@5HT нужен ArrayBuffer ориджинал
без itoa
Andy
@m-2k
Sep 08 2015 12:40
$file.do = function(ftp) {
    w2.postMessage({type:'bpg_image', img:str2ab(ftp.value[0][8].value)});
};


function str2ab(str) {
  var buf = new ArrayBuffer(str.length);
  var bufView = new Uint8Array(buf);
  for (var i=0, strLen=str.length; i<strLen; i++) {
    bufView[i] = str.charCodeAt(i);
  }
  return buf;
};
@5HT хотелось бы без str2ab, можно? :smile:
Andy
@m-2k
Sep 08 2015 12:52
Мужик, это божественно :smile:
Снимок экрана 2015-09-08 в 15.52.09.png
НИКАКИХ ЛАГОВ БЛЯДЬ
<img src=""></img>  сосёт
<canvas> - ЖИР
Andy
@m-2k
Sep 08 2015 13:24
если юзать 2 процесса - прирост 14% по производительности
Namdak Tonpa
@5HT
Sep 08 2015 14:01
А как ArrayBuffer прислать?
попробуй пожалуйста поиграйся
Andy
@m-2k
Sep 08 2015 14:01
оно так и приезжает
даже в Blob
который потом хуячится в ArrayBuffer а тот преврящается в строку какого-то хера
как я понял весь пакет превращается в строку а потом режется на куски
Namdak Tonpa
@5HT
Sep 08 2015 14:02
ну вот надо сделать чтобы так не было
Andy
@m-2k
Sep 08 2015 14:02
а надо наоборот
Namdak Tonpa
@5HT
Sep 08 2015 14:02
надо чтобы оставался blob
и у Binary были два мотода доступа
Andy
@m-2k
Sep 08 2015 14:02
резать ArrayBuffer и конвертить потом строки в строки, числа в числа
Namdak Tonpa
@5HT
Sep 08 2015 14:02
value который blob отдает
и другой какакой-то value (если он вообще нужен) для [12,4,6] вот этой ебалы
Andy
@m-2k
Sep 08 2015 14:03
http://wg.oftn.org/projects/core-estimator/demo/ чекает машину из браузера на количество ядер
если api недоступно подключает искуственный интеллект )
Andrii Sergiienko
@fycth
Sep 08 2015 14:04
магия
Namdak Tonpa
@5HT
Sep 08 2015 14:04
так шо почекаешь Binary.value ?
поиграйся с ним
Andy
@m-2k
Sep 08 2015 14:04
да его не почекать
надо bert.js переписывать
Namdak Tonpa
@5HT
Sep 08 2015 14:04
перепиши!
Andy
@m-2k
Sep 08 2015 14:04
да бля
Namdak Tonpa
@5HT
Sep 08 2015 14:05
пзязя
Andy
@m-2k
Sep 08 2015 14:05
сук )
Namdak Tonpa
@5HT
Sep 08 2015 14:05
я тут сильно занят
Andy
@m-2k
Sep 08 2015 14:05
ок, вечером
Namdak Tonpa
@5HT
Sep 08 2015 14:06
de_bin просто переписать надо и все
и посмотреть что будет если там просто блобы оставить
задача простая
bert.js надо сократить в 2 раза
Andy
@m-2k
Sep 08 2015 14:15
нет
de_bin уже работает со строкой
ты читаешь что я пишу?
Namdak Tonpa
@5HT
Sep 08 2015 14:15
прости
Andy
@m-2k
Sep 08 2015 14:15
ггггг
Namdak Tonpa
@5HT
Sep 08 2015 14:16
de_inner?
Andy
@m-2k
Sep 08 2015 14:16
надо бы сделать в n2o опцию ограничивающую пропускную способность для ивентов с клиента
я уже придумал как
Namdak Tonpa
@5HT
Sep 08 2015 14:17
в #ftp протоколе я думал rate поле внести
но потом переименовал его в priority
Andy
@m-2k
Sep 08 2015 14:18
для пользовательских ивентов, любых
Namdak Tonpa
@5HT
Sep 08 2015 14:19
предлагаю как в монго
if (rand() > 0.1) send
:-)
Andy
@m-2k
Sep 08 2015 14:19
азаза
Namdak Tonpa
@5HT
Sep 08 2015 14:21
так шо ты предлагаешь, говори
Andy
@m-2k
Sep 08 2015 14:21

делаем конфиг

decimator() -> [{Record,Count,Interval}].

потом чекаем ивент перед тем как сделать apply, если он =:= Record то сравниваем с ETS таблицей где каунтеры

Namdak Tonpa
@5HT
Sep 08 2015 14:21
так это можно в стейте протокола хранить
так быстрее будет чем ETS
Andy
@m-2k
Sep 08 2015 14:21
тебе виднее
Namdak Tonpa
@5HT
Sep 08 2015 14:22
и контролировать не только rate и еще size месаджей
Andy
@m-2k
Sep 08 2015 14:22
если процесс протокола один, то да
Namdak Tonpa
@5HT
Sep 08 2015 14:22
чтобы гарантировать что ты не выйдешь за отведенные тебе гигабиты в секунду
нет, канала
соединения
Andy
@m-2k
Sep 08 2015 14:22
чекать бинарь с клиента до binary_to_term?
Namdak Tonpa
@5HT
Sep 08 2015 14:23
пофиг внутри какие месаджы ты шлешь io, ftp
даже внутрь не заглядывать
просто смотреть на сайз, брать сколько передалось за последнюю секунду
и смотреть что бы это не превышало threshold
Andy
@m-2k
Sep 08 2015 14:23
я не про файлы ща
а про логику
Namdak Tonpa
@5HT
Sep 08 2015 14:23
про любые масаджи
еще до протокола вообще
Andy
@m-2k
Sep 08 2015 14:23
чтобы админку например не спамили
тут размером не обойтись
Namdak Tonpa
@5HT
Sep 08 2015 14:24
и типа выставлять по дефаулут 10КБит/c для WS канала
9600 БОД!
Andy
@m-2k
Sep 08 2015 14:24
буквально вчера про это читал в гуглгруппах
там опять лапшин :smile:
Namdak Tonpa
@5HT
Sep 08 2015 14:25
ну это интересно сделать в N2O
Andy
@m-2k
Sep 08 2015 14:25
спрашивал как ему канал порезать на передачу архива
Namdak Tonpa
@5HT
Sep 08 2015 14:25
я бы даже бросил то чем я счас занимаюсь :-)
для твоих телок это надо
Andy
@m-2k
Sep 08 2015 14:25
ему посоветовали настроить линукс
Namdak Tonpa
@5HT
Sep 08 2015 14:25
для передачи файлов тоже
ну у нас LING, у нас может и не быть линукса
Andy
@m-2k
Sep 08 2015 14:26
еще скинули пару тулз на эрланге, одна с большой историей даже
Namdak Tonpa
@5HT
Sep 08 2015 14:26
на прикладном уровне такое правда не делается
обычно
но мы можем попробовать
пинги у нас есть, бекпрешур тоже можно сделать :-)
QoS
Namdak Tonpa
@5HT
Sep 08 2015 14:28
ну может оно там что-то и решает
но эти все ссылки говно
автора этих библиотек не просветленные люди
сделаем!
Andy
@m-2k
Sep 08 2015 14:28
кода дохуя?
Namdak Tonpa
@5HT
Sep 08 2015 14:29
кода дохуя
ets таблицы
мы это все сделаем на 10 строчек
Andy
@m-2k
Sep 08 2015 14:30
главное чтобы можно было например учитывать кол-то event(login) по сессиям и всего за период
я хотел сделать так например
event(#auth{evt=login})
decimator() -> [{auth,10,60}].
вопрос в том еще, как чела уведомить что он заебал перелогиниваться
Namdak Tonpa
@5HT
Sep 08 2015 14:36
это ты на прикладном уровне хочешь сделать?
сообщения считать?
я в synrc/games вел статистику по принятым сообщениям
Andy
@m-2k
Sep 08 2015 14:37
нет, в ядре, но чтобы можно было пользоваться всем
вести статистику и я могу
Namdak Tonpa
@5HT
Sep 08 2015 14:38
нужна статистика по протколам
и наверно надо делать QoS по каждому протоколу
а не только общий QoS
чтобы heart протокол не терялся среди переданных гигабайт bin протокола
как в эрланге чтобы пинги не терялись :-)
Andy
@m-2k
Sep 08 2015 14:39
поэтому надо хорошо помедитировать
не только базовую логику захардкодить а еще и прикладного уровня
Namdak Tonpa
@5HT
Sep 08 2015 14:40
я вот счас как раз иду на совещание по ftp протоколу
прикладной уровень не должен ничего про это знать
Andy
@m-2k
Sep 08 2015 14:40
он должен ей пользоваться
Namdak Tonpa
@5HT
Sep 08 2015 14:40
у нас же свой протокольный стек вместо IP - BERT, вместо TCP - N2O
Andy
@m-2k
Sep 08 2015 14:40
делать свои ограничения
Namdak Tonpa
@5HT
Sep 08 2015 14:41
с конфигов пусть стартуют и через init контструкторы передается
чтобы каждый раз это проверять на каждом месадже
Andy
@m-2k
Sep 08 2015 15:38
ебать bert.js неканонiчен
колхоз какой-то :smile:
challenge accepted
Namdak Tonpa
@5HT
Sep 08 2015 15:42
берт {io,<<>>,<<>} должен кодироваться как простой массив
['io',bin(),bin()] а не как {type:Tuple,...}
вот так делай
Andy
@m-2k
Sep 08 2015 15:43
я с декодера начал
Namdak Tonpa
@5HT
Sep 08 2015 15:43
ну вот я про него и говорю
Andy
@m-2k
Sep 08 2015 15:44
а в чем прикол?
это грязный хак?
Namdak Tonpa
@5HT
Sep 08 2015 15:45
так декодер компактнее получится
и доступаться можно будет не x.value с разу x[0] == 'io'
Andy
@m-2k
Sep 08 2015 15:45
а ща не так работает?
Namdak Tonpa
@5HT
Sep 08 2015 15:45
счас все пакуется в Json, а я хочу чтобы как в WAMP все паковалось в Array
Andy
@m-2k
Sep 08 2015 15:46
то есть туплы в массивы представлять?
Namdak Tonpa
@5HT
Sep 08 2015 15:46
ну туплы и так в массивах
просто один уровень убрать чтобы они сразу в массиве были
хотя тогда нужно будет вводить ограничение что bert декодер top level будет всегда тапл
я готов пойти на такое ограничение
Главное — размер кода
все остальное это слова
тот подход который даст минимальный размер кода и победит
чтобы это было максимально совместимым с этим
видишь как у них
[HELLO, Realm|uri, Details|dict]
это же наш
{hello,uri,[{}]}
понимаешь о чем я?
Andy
@m-2k
Sep 08 2015 15:51
нет. через 3 часа повтори, я как раз до таплов доберусь
Ilya Gorskin
@Revent
Sep 08 2015 17:05
@5HT а для постгреса и иже с ними планируется унифицированный интерфейс?
Namdak Tonpa
@5HT
Sep 08 2015 17:05
не планируется
Ilya Gorskin
@Revent
Sep 08 2015 17:06
а почему?
Namdak Tonpa
@5HT
Sep 08 2015 17:07
потому что использовать SQL имея в руках Эрланг, это как использовать COBOL имея на руках Pascal
Ilya Gorskin
@Revent
Sep 08 2015 17:07
хм
Namdak Tonpa
@5HT
Sep 08 2015 17:07
Мы выбрасываем SQL везде где только можно, а к нам постоянно приходят и спрашивают когда вы сделаете поддержку SQL в KVS :-)
есть в KVS store_sql.erl шото там даже работало
но не дописали
я ничего обещать не могу, хотите делайте я расскажу как
но это все не одобряю
нужен человек глубоко знающий SQL и глубоко понимающий KVS
чтобы написать эффективный kvs:add
Ilya Gorskin
@Revent
Sep 08 2015 17:09
не я не про kvs я вообще в целом как к фреймворку
Namdak Tonpa
@5HT
Sep 08 2015 17:10
а как может быть SQL в целом?
SQL это способ хранения, за хранение отвечает KVS
Ilya Gorskin
@Revent
Sep 08 2015 17:10
ну тогда вопрос снимаю :)
Ilya Gorskin
@Revent
Sep 08 2015 17:12
а graphdb?
Namdak Tonpa
@5HT
Sep 08 2015 17:13
KVS это и есть graphdb
Ilya Gorskin
@Revent
Sep 08 2015 17:13
в чистом виде? :)
Namdak Tonpa
@5HT
Sep 08 2015 17:13
в грязном
Ilya Gorskin
@Revent
Sep 08 2015 17:14
надо тогда поплотнее с ней пообщаться .
Namdak Tonpa
@5HT
Sep 08 2015 17:14
пообщайся, только секс на первом свидании не предлагай
Ilya Gorskin
@Revent
Sep 08 2015 17:16
у меня идея зреет давно вернее несколько идей и в них идеально graphdb вписывается вот только выбрать не могу какая именно
Andy
@m-2k
Sep 08 2015 17:16
интересно, я вот мерял redis через lo, а если померять через unix socket сравнится ли она с mnesia
Ilya Gorskin
@Revent
Sep 08 2015 17:17
через lo вообще не надо работать это моветон
Andy
@m-2k
Sep 08 2015 17:17
нихуя себе
ты ща про графовые базы загоняешь и лечишь что lo - моветон?
Ilya Gorskin
@Revent
Sep 08 2015 17:18
а что хорошего в lo?
Andy
@m-2k
Sep 08 2015 17:23
то что eredis не умеет в unix sock и чтобы заюзать надо ставить сборку китайца :smile:
Ilya Gorskin
@Revent
Sep 08 2015 17:24
и это печально :)
Namdak Tonpa
@5HT
Sep 08 2015 17:29
хаха счас закомичу SQL драйвер для KVS который умеет kvs:get/kvs:put
надо будет kvs:add вынести в API специально для SQL
чтобы можно было его эффективно написать
Namdak Tonpa
@5HT
Sep 08 2015 17:40
Вот держите
играйтесь
поддержка SQL в KVS :-)
Namdak Tonpa
@5HT
Sep 08 2015 17:47
надо просто чувака который сильно хочет SQL в KVS
который доведет это до ума
@m-2k ну шо есть уже шо показать?
bert.js новый?
Andy
@m-2k
Sep 08 2015 18:24
нет пока, я ток на работу добрался
тут точно не надо return?
Andy
@m-2k
Sep 08 2015 18:29
могу тебя тоже самое спросить на тему ftp и дециматора )
Namdak Tonpa
@5HT
Sep 08 2015 18:33
надо return :-)
Andy
@m-2k
Sep 08 2015 18:33
да я уже понял :smile:
LTUPLE в de_inner нет :smile:
Andy
@m-2k
Sep 08 2015 18:53
у меня ща такое же чувство когда я render_actions переписывал )
Andy
@m-2k
Sep 08 2015 19:02
походу это надолго. ну зато js выучу :smile:
Namdak Tonpa
@5HT
Sep 08 2015 19:14
мне кажется ltoa там лишняя совершенно
Andy
@m-2k
Sep 08 2015 19:14
да
вот оно все написано в функциональном стиле
у js равне нет проблем с накаливанием контекста?
мож переписать это всё за один проход через for?
Namdak Tonpa
@5HT
Sep 08 2015 19:15
мегамот хочешь заебашить? :-)
Andy
@m-2k
Sep 08 2015 19:15
xt
Namdak Tonpa
@5HT
Sep 08 2015 19:15
switch по типу все равно нада
и каждый тип отдельно декодировать
Andy
@m-2k
Sep 08 2015 19:16
свич да, я про списки и туплы
они же рекурсию делают
de_tuple
Namdak Tonpa
@5HT
Sep 08 2015 19:16
с этим проблем в V8 не будет
Andy
@m-2k
Sep 08 2015 19:16
ну ок
Namdak Tonpa
@5HT
Sep 08 2015 19:16
какая там рекурсия я тебя умоляю
Andy
@m-2k
Sep 08 2015 19:16
оставлю так
Namdak Tonpa
@5HT
Sep 08 2015 19:16
вложенность максимальная у нас 3 ))
Andy
@m-2k
Sep 08 2015 19:17
тут не важна вложенность а объем данных который копируется из контекста в контекст
переменные клонируются при рекурсии?
отвечай, знаток V8
а если это 20МБ файл который на 3-й вложенности
3 раза скопируется?
чот эрланг не генерит SMALL_ATOM_EXT
 term_to_binary({sas,100,200}).   => <<131,104,3,100,0,3,115,97,115,97,100,97,200>>
0,3, - это не SATOM
Andy
@m-2k
Sep 08 2015 19:22
да и вообще 100 -это не satom
Namdak Tonpa
@5HT
Sep 08 2015 19:24
хз
а может SATOM это когда [compressed] ставишь в term_to_binary?
Andy
@m-2k
Sep 08 2015 19:24
compressed это ж вроде gzip
term_to_binary({sas,100,200},[compressed]).
<<131,104,3,100,0,3,115,97,115,97,100,97,200>>
похуй
ты мне про стек вызовов говори
ты же Крестопомидор :smile:
по мне так легко было машину рекурсией в сях нагнуть
думаю js это что-то похожее
Namdak Tonpa
@5HT
Sep 08 2015 19:27
я в жизни строчки на С++ не написал!
свят свят свят
кароче я знаю как bert.js переписать
Andy
@m-2k
Sep 08 2015 19:28
я тоже
Namdak Tonpa
@5HT
Sep 08 2015 19:28
если тебе влень я могу ебануть!
Andy
@m-2k
Sep 08 2015 19:28
я уже пишу
Namdak Tonpa
@5HT
Sep 08 2015 19:28
или давай кто быстрее и лучше напишет :-)
я тоже!
Andy
@m-2k
Sep 08 2015 19:28
ггг
сук
я не хочу рекурсию блядь
Namdak Tonpa
@5HT
Sep 08 2015 19:29
пиши как хочешь
главное! чтобы кода меньше было
Andy
@m-2k
Sep 08 2015 19:29
ну и пох
Namdak Tonpa
@5HT
Sep 08 2015 19:29
если по бенчмаркам кто-то будет просасывать на 15% то я выберу все равно где меньше кода :-)
так а я не понял
че надо с собой этот ArrayBuffer таскать и слайсить его?
пушо типизированный массив слайсить не получается
ты уже придумал как тут быть?
или просто index передавать в стек?
я кароче буду в параметры передавать Uint8Array и index
и просто по тупому попытаюсь переписать bert.js
а ты можешь свои не-рекурсивные технологии применять
потом померяем
Andy
@m-2k
Sep 08 2015 19:34
ггг
ОКАЙ
Namdak Tonpa
@5HT
Sep 08 2015 19:34
до утра кто проиграет тот напишет статью про это
Andy
@m-2k
Sep 08 2015 19:35
как соснул?
Namdak Tonpa
@5HT
Sep 08 2015 19:35
:-)
Andy
@m-2k
Sep 08 2015 19:35
в атоме какая кодировка?
Namdak Tonpa
@5HT
Sep 08 2015 19:35
хуй его знаю
я нихуя не помню :-)
Andy
@m-2k
Sep 08 2015 19:36
вот и я
Namdak Tonpa
@5HT
Sep 08 2015 19:36
так шо мы в одинаковых условиях
я и джаваскрипта незнаю
каждый раз заново его учу
если бы я знал джаваскрипт то точно этой всей хуйни с substring тут не было :-)
Andy
@m-2k
Sep 08 2015 19:36
 term_to_binary({'хуй',100,200},[compressed]).
* 1: illegal atom
я тоже его нихуя не знаю
Namdak Tonpa
@5HT
Sep 08 2015 19:37
как это вообще продержалось два года, господи какой стыд и срам
Andy
@m-2k
Sep 08 2015 19:37
ага
я тоже ща подахуел какое это говно
поэтому так мало node.js-ёбов пересело на n2o :smile:
Namdak Tonpa
@5HT
Sep 08 2015 19:38
ну ниче
счас будет старое доброе байтоёбство!
Andy
@m-2k
Sep 08 2015 19:38
ага
Namdak Tonpa
@5HT
Sep 08 2015 19:38
я убираю нахуй BERT = 131
Andy
@m-2k
Sep 08 2015 19:38
почему
Namdak Tonpa
@5HT
Sep 08 2015 19:38
буду хардкодить константы в коде чтобы кода меньше было
бугага
бампинг кода
Andy
@m-2k
Sep 08 2015 19:39
АХАХАХАХАХА
так напиши B=131
Namdak Tonpa
@5HT
Sep 08 2015 19:39
так шо смотри там, битва будет жесткой
Andy
@m-2k
Sep 08 2015 19:39
я прост тогда uglify.js заюзаю )
Namdak Tonpa
@5HT
Sep 08 2015 19:39
нет код должен читатся
но мерять будем после uglify, да
Andy
@m-2k
Sep 08 2015 19:43
код должен быть канонiчным - это прежде всего
надо скорость мерять и память
но я хз как :smile:
Namdak Tonpa
@5HT
Sep 08 2015 19:43
код должен быть таким чтобы можно было на шен его сгенерировать!
в цикле, как
Uint8ClampedArray !
Andy
@m-2k
Sep 08 2015 19:46
что это за говно
оно кстати в bpg есть
Namdak Tonpa
@5HT
Sep 08 2015 19:47
я на нем буду писать
:-)
Andy
@m-2k
Sep 08 2015 19:47
пиши, хули
Namdak Tonpa
@5HT
Sep 08 2015 19:47
а ты на чем?
Andy
@m-2k
Sep 08 2015 19:49
угадай
Namdak Tonpa
@5HT
Sep 08 2015 19:49
а не надо Uint8Array просто
Andy
@m-2k
Sep 08 2015 19:49
arrayBuffer
Namdak Tonpa
@5HT
Sep 08 2015 19:49
так по нему нельзя ж идексировать
Andy
@m-2k
Sep 08 2015 19:49
всё можно
Namdak Tonpa
@5HT
Sep 08 2015 19:49
приходит же ArrayBuffer
Andy
@m-2k
Sep 08 2015 19:49
ТОЛЬКО ХАРДКОР СУКА
Namdak Tonpa
@5HT
Sep 08 2015 19:49
прямо в канал
Andy
@m-2k
Sep 08 2015 19:49
ДА
Namdak Tonpa
@5HT
Sep 08 2015 19:49
но как?
Andy
@m-2k
Sep 08 2015 19:50
ща я тебя ткну )
погоди
Namdak Tonpa
@5HT
Sep 08 2015 19:50
слайсить будешь?
как ты шото из ArrayBuffer шото прочитать можешь?
Мог еще год назад лол
:smile:
я тогда нереально упоролся
Namdak Tonpa
@5HT
Sep 08 2015 19:53
и шо это типа самое быстрое шо может быть?
Andy
@m-2k
Sep 08 2015 19:53
да
написано же
Namdak Tonpa
@5HT
Sep 08 2015 19:54
так а DataView же слайсить не разрешает
тебе придется слайсить ArrayBuffer и опять new DataView делать
шо будешь делать?
Andy
@m-2k
Sep 08 2015 19:55
слайсить
Namdak Tonpa
@5HT
Sep 08 2015 19:55
а Uint8Array это и есть DataView наследник
Andy
@m-2k
Sep 08 2015 19:56
мне нужен ArrayBuffer для BPG мне пох )
делай как начал, потом сравним
есть ли выигрыш
в скорости
мне прост интересно упороться
Namdak Tonpa
@5HT
Sep 08 2015 19:57
ну так я ж о чем и говорю:
a = buf; // ArrayBuffer
b = new DataView(a);
b[0] == 131; // BERT
c = buf.slice(1);
d = new DataView(c);
d[0] == 106; // []
придется после каждого слайса сново DataView обертку делать
Andy
@m-2k
Sep 08 2015 19:59
я хз
а не я прогнал
> x.getUint8(0);
< 131
> x.getUint8(1);
< 104
Andy
@m-2k
Sep 08 2015 20:02
не прогнал что
параметр - offset в байтах
getUint32(10) - прочитает 4 байта, первые 10 пропустит
а ты блять из строки конвертил - пиздец! :smile:
Namdak Tonpa
@5HT
Sep 08 2015 20:03
это не я
это я код переписал который был в nitrogen
бездумно
Andy
@m-2k
Sep 08 2015 20:03
ад
я с самого начала подозревал что ты хуйню запостил
даже спросил, ты меня уверовал что всё ок )
Namdak Tonpa
@5HT
Sep 08 2015 20:04
на бля смотри
ебанистика годами тут!
:-)
Andy
@m-2k
Sep 08 2015 20:08
мне кажется когда он это писал - не было FileReader и опции asArrayBuffer
это ж только недавно появилось
Namdak Tonpa
@5HT
Sep 08 2015 20:08
возможно
Andy
@m-2k
Sep 08 2015 23:17
function de_list(S) {
    ****
    for (i = 0; i < Size; i++) { **** }
    LastChar = S[0];
    if (LastChar !== NIL) { throw ("BERT: Wrong NIL."); }
term_to_binary([x|10]).   
<<131,108,0,0,0,1,100,0,1,120,97,10>>
расти лох
написано же Tail is the final tail of the list; it is NIL_EXT for a proper list, but may be anything type if the list is improper (for instance [a|b]).