These are chat archives for synrc/n2o

15th
Oct 2015
Andy
@m-2k
Oct 15 2015 11:50
Yo! Скачал ща последний кондиционер от 8 окт - всё снова работает, кошер. а, не, нихера, на локалхост не применяется тварина
Andy
@m-2k
Oct 15 2015 14:36
@5HT я багу в bert.js случайно только что нашел
dec(new Uint8Array([131,110,8,0,149,109,219,5,117,66,12,20]).buffer);
{t: 110, v: undefined} = $5
binary_to_term(<<131,110,8,0,149,109,219,5,117,66,12,20>>).
1444602650855959957
Alexandr
@alle-ox
Oct 15 2015 14:40
@m2k ну 110 это же bignum
Andy
@m-2k
Oct 15 2015 14:44
чот я ща ваще прикола не оч понимаю
Alexandr
@alle-ox
Oct 15 2015 14:50

нету для него декодера и энкодера. ну на gist есть вариант. но после определенного момента он начинает глючить
https://gist.github.com/alle-ox/d1cc9800ccd8ede70908
тесты проходит на 12F

uni(5) -> rnd(16#800000000000,16#7FFFFFFFFFFFF).

с 12 F работает, если добавить 13, то тест падает

Andy
@m-2k
Oct 15 2015 14:51
да не, походу не в этом проблема
Alexandr
@alle-ox
Oct 15 2015 14:51
из него взять en_110 и big. и в din добавить case для 110
для 111( LARGE_BIG_EXT) еще не реализовано.
а в чем еще может быть проблема? если 110 header не обрабатывается.
Namdak Tonpa
@5HT
Oct 15 2015 14:56
все верно бигнамов счас нет в bert.js
alle-ox обещал :-)
Andy
@m-2k
Oct 15 2015 15:12
тут походу не в числах дело
просто стечение обстоятельств
dec(new Uint8Array([131,104,18,100,0,5,98,111,97,114,100,100,0,9,117,110,
  100,101,102,105,110,101,100,100,0,9,117,110,100,101,102,
  105,110,101,100,100,0,4,102,101,101,100,100,0,9,117,110,
  100,101,102,105,110,101,100,100,0,9,117,110,100,101,102,
  105,110,101,100,100,0,9,117,110,100,101,102,105,110,101,
  100,106,100,0,5,102,97,108,115,101,100,0,9,117,110,100,
  101,102,105,110,101,100,110,8,0,149,109,219,5,117,66,12,
  20,100,0,5,102,97,108,115,101,100,0,9,117,110,100,101,
  102,105,110,101,100,100,0,5,102,97,108,115,101,100,0,5,
  102,97,108,115,101,109,0,0,0,0,109,0,0,0,0,109,0,0,0,0]).buffer);
RangeError: Out of bounds access
column: 36
line: 40
message: "Out of bounds access"
sourceURL: "http://localhost:8000/n2o/protocols/bert.js"
stack: "getUint8@[native code]↵din@http://localhost:8000/n2o/protocols/bert.js:40:36↵run@http://localhost:8000/n2o/protocols/bert.js:39:51↵din@http://localhost:8000/n2o/protocols/bert.js:44:60↵dec@http://localhost:8000/n2o/protocols/bert.js:35:97↵eval code↵eval@[native code]↵_evaluateOn↵_evaluateAndWrap↵evaluate"
Прототип RangeError
@5HT можешь понять в чем прикол?
rp(term_to_binary({board,undefined,undefined,feed,undefined,undefined,undefined,[],false,undefined,1444602650855959957,false,undefined,false,false,<<>>,<<>>,<<>>})).
.
Namdak Tonpa
@5HT
Oct 15 2015 15:15
число большое же
1444602650855959957
{board,undefined,undefined,feed,undefined,undefined,
       undefined,[],false,undefined,1444602650855959957,false,
       undefined,false,false,<<>>,<<>>,<<>>}
говорят тебе :-)
Andy
@m-2k
Oct 15 2015 15:15
нет прикол не в этом
Namdak Tonpa
@5HT
Oct 15 2015 15:15
а в чем?
Andy
@m-2k
Oct 15 2015 15:15
я хз
Namdak Tonpa
@5HT
Oct 15 2015 15:15
:-)
Andy
@m-2k
Oct 15 2015 15:16
если убрать последние три <<>> - все ок
Namdak Tonpa
@5HT
Oct 15 2015 15:16
хм
Andy
@m-2k
Oct 15 2015 15:18
но так rp(term_to_binary({board,<<>>})). работает
Namdak Tonpa
@5HT
Oct 15 2015 15:19
а вджваваскрипте 131,109,0,0,0,0 это работает?
Andy
@m-2k
Oct 15 2015 15:19
а ща ваще бомба
Namdak Tonpa
@5HT
Oct 15 2015 15:19
у меня все ок
Andy
@m-2k
Oct 15 2015 15:19
так тоже работает
rp(term_to_binary({board,undefined,undefined,feed,
undefined,undefined,undefined,[],false,undefined,1444602650856326582,
false,undefined,false,false,<<>>,<<>>,<<>>})).
Namdak Tonpa
@5HT
Oct 15 2015 15:20
так а чем бы оно не работало
Andy
@m-2k
Oct 15 2015 15:20
??
ты опять не читаешь что я пишу?
Namdak Tonpa
@5HT
Oct 15 2015 15:21
я читаю копипащу себе
запускаю и у меня все ок :-)
и не могу понять что я не то делаю
Andy
@m-2k
Oct 15 2015 15:21
dec(new Uint8Array([131,104,18,100,0,5,98,111,97,114,100,100,0,9,117,110,
  100,101,102,105,110,101,100,100,0,9,117,110,100,101,102,
  105,110,101,100,100,0,4,102,101,101,100,100,0,9,117,110,
  100,101,102,105,110,101,100,100,0,9,117,110,100,101,102,
  105,110,101,100,100,0,9,117,110,100,101,102,105,110,101,
  100,106,100,0,5,102,97,108,115,101,100,0,9,117,110,100,
  101,102,105,110,101,100,110,8,0,149,109,219,5,117,66,12,
  20,100,0,5,102,97,108,115,101,100,0,9,117,110,100,101,
  102,105,110,101,100,100,0,5,102,97,108,115,101,100,0,5,
  102,97,108,115,101,109,0,0,0,0,109,0,0,0,0,109,0,0,0,0]).buffer);
это ок?
Namdak Tonpa
@5HT
Oct 15 2015 15:21
нет конечно потому что бигинтов нет в bert.js
:-)
Andy
@m-2k
Oct 15 2015 15:22
СУКА
Namdak Tonpa
@5HT
Oct 15 2015 15:22
я же третий раз уже говорю
Andy
@m-2k
Oct 15 2015 15:22
читай по буквам
Namdak Tonpa
@5HT
Oct 15 2015 15:22
:-)
Andy
@m-2k
Oct 15 2015 15:22
ТАК РАБОТАЕТ
rp(term_to_binary({board,undefined,undefined,feed,
undefined,undefined,undefined,[],false,undefined,1444602650856326582,
false,undefined,false,false,<<>>,<<>>,<<>>})).
ТУТ ПРОСТО ЧИСЛО ДРУГОЕ
Namdak Tonpa
@5HT
Oct 15 2015 15:22
ну а как связаны работа в эрланг консоли с работой в джаваскрипт консоли?
Andy
@m-2k
Oct 15 2015 15:22
тебе js код дать?
или ты сам
Namdak Tonpa
@5HT
Oct 15 2015 15:23
зачем?
зачем мне жс код если я знаю что бигинты не декодируются :-)
ты дай мне тапл без бигинтов который не декодируется тогда поговорим
Andy
@m-2k
Oct 15 2015 15:23
dec(new Uint8Array([131,104,18,100,0,5,98,111,97,114,100,100,0,9,117,110,
  100,101,102,105,110,101,100,100,0,9,117,110,100,101,102,
  105,110,101,100,100,0,4,102,101,101,100,100,0,9,117,110,
  100,101,102,105,110,101,100,100,0,9,117,110,100,101,102,
  105,110,101,100,100,0,9,117,110,100,101,102,105,110,101,
  100,106,100,0,5,102,97,108,115,101,100,0,9,117,110,100,
  101,102,105,110,101,100,110,8,0,182,5,225,5,117,66,12,
  20,100,0,5,102,97,108,115,101,100,0,9,117,110,100,101,
  102,105,110,101,100,100,0,5,102,97,108,115,101,100,0,5,
  102,97,108,115,101,109,0,0,0,0,109,0,0,0,0,109,0,0,0,0]).buffer);
1444602650856326582 - это бигинт?
Namdak Tonpa
@5HT
Oct 15 2015 15:24
да
{board,undefined,undefined,feed,undefined,undefined,
       undefined,[],false,undefined,1444602650856326582,false,
       undefined,false,false,<<>>,<<>>,<<>>}
опять бигинт
Andy
@m-2k
Oct 15 2015 15:24
код выше не выдает ошибок
Namdak Tonpa
@5HT
Oct 15 2015 15:24
ну случайность
это ж джаваскрипт :-)
Andy
@m-2k
Oct 15 2015 15:24
ошибка ваще не на бигинте если ты стек почитаешь
не случайность
у меня по всей базе ошибок нет
только на одной записи
Namdak Tonpa
@5HT
Oct 15 2015 15:25
хм
Andy
@m-2k
Oct 15 2015 15:25
function din()  { var c=sx.getUint8(ix++),
ошибка здесь выявляется
message: "Out of bounds access"
по третьему разу ток не заставляй меня копипастить, ок?
Namdak Tonpa
@5HT
Oct 15 2015 15:26
ну допустим
Andy
@m-2k
Oct 15 2015 15:27
чо допустим, мне кажется самое простое это код bert.js посмотреть
Namdak Tonpa
@5HT
Oct 15 2015 15:27
но я же говорю тебе что поскольку бигинтов нет то оно просто хавает ноп
и весь декодер на шифте ломается
Andy
@m-2k
Oct 15 2015 15:27
ААААААА
какого хуя тогда с другими бигинтами работает?
Namdak Tonpa
@5HT
Oct 15 2015 15:27
надо поставить в декодере case 110: ;
и что-то там написать
хз
единственаая хуйня как это пофиксать
это написать поддержку бигинтов
так как мы не можем угадать сколько байт пропустить
а так до этого использование бигинтов запрещено по n2o протоколу :-)
это слишком жирные структуры
:-)
так шо выпиливай бигинты ))
Andy
@m-2k
Oct 15 2015 15:29
а ну да
{t: 104, v: [{t: 100, v: "board"}, {t: 110, v: undefined}, {t: 8, v: undefined}]} = $4
оно прост найобывается
но не всегда проявляется
надо заглушку сделать
Namdak Tonpa
@5HT
Oct 15 2015 15:30
JavaScript — оно просто наебывается
Andy
@m-2k
Oct 15 2015 15:30
чтобы байты пропускало
Namdak Tonpa
@5HT
Oct 15 2015 15:30
ну как ты сделаешь?
а сколько?
Andy
@m-2k
Oct 15 2015 15:30
которые для бигинта
Namdak Tonpa
@5HT
Oct 15 2015 15:30
а типа по формуле высчитывать
ну можно
Andy
@m-2k
Oct 15 2015 15:30
ну бля канешн
Namdak Tonpa
@5HT
Oct 15 2015 15:30
типа число не считать а только количество байт
Andy
@m-2k
Oct 15 2015 15:30
да
пропускать
Namdak Tonpa
@5HT
Oct 15 2015 15:30
хачь!
Andy
@m-2k
Oct 15 2015 15:30
чтобы не разъезжался хвост
я не хач
:smile:
это норм что из клауз данные в сокет уезжают как #io.data?
зачем они вообще там
Namdak Tonpa
@5HT
Oct 15 2015 15:34
ага
Andy
@m-2k
Oct 15 2015 15:34
тип везде ok дописывать?
Namdak Tonpa
@5HT
Oct 15 2015 15:34
ну шо вернешь
поэтому счас дохуя там не возвращай :-)
Andy
@m-2k
Oct 15 2015 15:35
ну я так и наткнулся на эту хуйню )
Namdak Tonpa
@5HT
Oct 15 2015 15:35
ну мне кажется тупо игнорировать этот ответ
поэтому я решил его преедавать
пусть клиент, если хочет, сможет оттуда что-то взять
Andy
@m-2k
Oct 15 2015 15:35
ад, теперь везде эти ok будут
Namdak Tonpa
@5HT
Oct 15 2015 15:35
:-)
возвращай []
это самый короткий байт 106
Andy
@m-2k
Oct 15 2015 15:36
все равно говно )
Namdak Tonpa
@5HT
Oct 15 2015 15:36
нормально
[]. — это как квадрат
Andy
@m-2k
Oct 15 2015 15:36
я к тому что надо не забывать это делать
а не то что квадрат
Namdak Tonpa
@5HT
Oct 15 2015 15:37
може бы ты бигинты написал?
Andy
@m-2k
Oct 15 2015 15:37
я не силен в математике
лучше ты )
ты пофиксаешь bert.js?
Alexandr
@alle-ox
Oct 15 2015 15:45
если дадите пару дней, будет поддержка bignum. сейчас более-менее свободен от работы.
Andy
@m-2k
Oct 15 2015 15:45
сделай если не трудно
:+1:
Namdak Tonpa
@5HT
Oct 15 2015 16:09
помни лимиты
5 строчек
:-)
Namdak Tonpa
@5HT
Oct 15 2015 16:22
оно
только эту всю хуету надо в 5 строчек уложить
джаваскриптовых
Andy
@m-2k
Oct 15 2015 16:27
не это не то
внутри beam это ж не как число хранится
Namdak Tonpa
@5HT
Oct 15 2015 16:27
** Load a bignum from bytes
что тебе еще нада :-)
Andy
@m-2k
Oct 15 2015 16:40
5> term_to_binary(10000000000). 
<<131,110,5,0,0,228,11,84,2>>

<<X3:40>> = <<2,84,11,228,0>>.
<<2,84,11,228,0>>

13> X3.
10000000000
Namdak Tonpa
@5HT
Oct 15 2015 16:40
ну да эрланг прикольный :-)
на джаваскрипте так сделай ))
Andy
@m-2k
Oct 15 2015 16:41
надо сначала понять чо да как )))
Namdak Tonpa
@5HT
Oct 15 2015 16:41
блядь да в школе такое все дети пишут в 8 классе
Andy
@m-2k
Oct 15 2015 16:41
байтойобство
ну эт вспоминать над :smile:
Namdak Tonpa
@5HT
Oct 15 2015 16:42
я в восьмом классе такое помню писал
Andy
@m-2k
Oct 15 2015 16:42
у меня в школе все в дум ебашились
Namdak Tonpa
@5HT
Oct 15 2015 16:42
когда факториал захотел длинный
я тоже ебашился
Andy
@m-2k
Oct 15 2015 16:49
parseInt("0000001001010100000010111110010000000000", 2);
10000000000
так норм или это пиздец?
а, над заглянуть в js декодер АХАХАХА
Alexandr
@alle-ox
Oct 15 2015 16:58
ну у меня как раз была идея превращать число в binary, а потом уже делать бинарное деление(с остатком), потому что в текущем варианте на gist только в энкодере есть баг.
Andy
@m-2k
Oct 15 2015 16:58
о каком gist речь?
Namdak Tonpa
@5HT
Oct 15 2015 17:00
андрюха допиши
вот смотри код даже есть
function en_110(o) { var s = [];o.v<0 ? s.push(1) : s.push(0);for(i=0;o.v!==0;i++){
             s.push(o.v % 256);o.v = Math.floor(o.v / 256);}return [110,i,s];}
Andy
@m-2k
Oct 15 2015 17:00
а без Math.pow разве никак?
<< >> всякими
Namdak Tonpa
@5HT
Oct 15 2015 17:01
<<<
Andy
@m-2k
Oct 15 2015 17:01
проблема в декодере или в энкодере
Namdak Tonpa
@5HT
Oct 15 2015 17:01
>
Andy
@m-2k
Oct 15 2015 17:01
<<_<<
_>>
Namdak Tonpa
@5HT
Oct 15 2015 17:01
парсер лох
Andy
@m-2k
Oct 15 2015 17:01
cerf
:smile:
Namdak Tonpa
@5HT
Oct 15 2015 17:02
пиши бигнам
не заставляйте меня опять с вами на перегонки писать эту хуйню )
напишите шото сами!
Andy
@m-2k
Oct 15 2015 17:02
я уже )
Uint8Array [0, 0, 228, 11, 84, 2] (6) = $3
Namdak Tonpa
@5HT
Oct 15 2015 17:02
большой бигнам ебани
это шо то лузерский какой-то нищий
Alexandr
@alle-ox
Oct 15 2015 17:03
это давно писал. и не особо силен в бинарных операциях js
Andy
@m-2k
Oct 15 2015 17:03
надо делать восходящее программированиэ, не пизди :smile:
Alexandr
@alle-ox
Oct 15 2015 17:10
@m-2k s.push(o.v % 256); он вот тут ломался возвращал не правильное значение
http://www.wolframalpha.com/input/?i=27155549637337042+%25+256&dataset=
и попробуй в консоли выполнить. из-за особенности хранение чисел в JS
Namdak Tonpa
@5HT
Oct 15 2015 17:11
а да я помню сошлись на том что джаваскрипт поломаный и забили :-)
Andy
@m-2k
Oct 15 2015 17:12
>>> - это что за оператор
Namdak Tonpa
@5HT
Oct 15 2015 17:13
вправо сдвиг, не?
Andy
@m-2k
Oct 15 2015 17:13
а >> тогда что
Andy
@m-2k
Oct 15 2015 17:14
да, нашел уже спс
Namdak Tonpa
@5HT
Oct 15 2015 17:15
единицы и нули
Andy
@m-2k
Oct 15 2015 17:41
(2<<(8*3)).toString(2)
"10000000000000000000000000"

(2<<(8*4)).toString(2)
"10"
кал какой-то
Namdak Tonpa
@5HT
Oct 15 2015 17:42
welcome to javascript
Andy
@m-2k
Oct 15 2015 17:42
:smile:
и как быть?
Andy
@m-2k
Oct 15 2015 17:55
dec(new Uint8Array([131,110,18,0,0,0,0,0,0,228,217,163,20,223,90,48,80,112,
                    98,188,122,11]).buffer).v === 1000000000000000000000000000040000000000000
true
это нормально?
тут
1000000000000000000000000000000000000000000
приравнялся к
1000000000000000000000000000040000000000000
1000000000000000000000000000000000000000000 === 1000000000000000080000000000000000000000000 
true
Namdak Tonpa
@5HT
Oct 15 2015 17:58
вполне
чо
джаваскрипт же
Andy
@m-2k
Oct 15 2015 17:58
точность до 10^16
Namdak Tonpa
@5HT
Oct 15 2015 17:59
да
Andy
@m-2k
Oct 15 2015 17:59
дальше похуй ваще
надо бигнамы в стринг прост переводить
тогды
или нет
Namdak Tonpa
@5HT
Oct 15 2015 18:00
:-)
как расти
и делал
все в стрингах таскал
Andy
@m-2k
Oct 15 2015 18:00
зато хоть сравнить можно
Namdak Tonpa
@5HT
Oct 15 2015 18:00
правда тогда еще Binary повсеместно не было когда он нитроген писал
так я не понимаю в чем пробелма?
почему есть на гитхабе на джваскрипте либы которые переводят
а вы написать не можете ? :-)
Andy
@m-2k
Oct 15 2015 18:01
переводят что
Namdak Tonpa
@5HT
Oct 15 2015 18:01
бигнамы эрланговские
Alexandr
@alle-ox
Oct 15 2015 18:01
@5HT bignumber.js?
Andy
@m-2k
Oct 15 2015 18:01
вот ты передаешь на клиента 2 айди к формам 100000000000000000000000001 и 100000000000000000000000002
и тебе надо с них результат вернуть
вот тут ваще жир будет :smile:
Namdak Tonpa
@5HT
Oct 15 2015 18:02
нахуя я буду id элементам давать целочисленные ?
Andy
@m-2k
Oct 15 2015 18:02
а нахуй вообще числа тогда
Namdak Tonpa
@5HT
Oct 15 2015 18:02
@alle-ox ты что-то показывал
Andy
@m-2k
Oct 15 2015 18:02
если они числа только до 16 знака
Namdak Tonpa
@5HT
Oct 15 2015 18:03
блин ну это ж длинные числа, 8 байт тебе для чисел только дают
да и то не точные
в чем проблема нахуй вам в джаваскрипте сравнивать шото?
Andy
@m-2k
Oct 15 2015 18:03
в эланге то точные
Namdak Tonpa
@5HT
Oct 15 2015 18:03
тем более результат?
в эрланге GMP
бигнамы
это GNU библиотека
вот что надо смотреть
void bignum_to_bytes(bignum_t *bn, uint8_t *arr, int arr_size)
{
    assert(arr_size >= bn->used *2);
    uint8_t *p = arr+arr_size-1;
    int is_neg = bn->sign == MP_NEG;
    uint32_t carry = 1;
    for (int i = 0; i < bn->used; i++)
    {
        uint16_t d = bn->dp[i];
        if (is_neg)
            NEGATE_16(d, carry);
        uint8_t h = (uint8_t)(d >> 8);
        uint8_t l = (uint8_t)d;
        *p-- = l;
        *p-- = h;
    }
    //pad the rest with sign byte
    while (p >= arr && p < arr+arr_size)
        *p-- = (is_neg) ?255 :0;
}
красота же
в чем проблема почему так нельзя на джваскрипте написать?
Andy
@m-2k
Oct 15 2015 18:06
та да
Alexandr
@alle-ox
Oct 15 2015 18:06
@5HT была только библиотека которая производит деление с остатком для больших чисел
Namdak Tonpa
@5HT
Oct 15 2015 18:07
нам же только упаковку и распаковку из строки в строку
нам же не надо умножение этих чисел писать или не дай господи деление
Alexandr
@alle-ox
Oct 15 2015 18:08
но она тоже делает это через строку
Namdak Tonpa
@5HT
Oct 15 2015 18:08
так через строку и надо
что ты еще хочешь положить в v ?
байтойобство очередное? :-)
Andy
@m-2k
Oct 15 2015 18:09
@alle-ox в чем проблема ща у кода на гите
Alexandr
@alle-ox
Oct 15 2015 18:10
ломается на 15 знаках в числе
Namdak Tonpa
@5HT
Oct 15 2015 18:10
ну т.е. на джаваскриптовом пределе
очевидно же что нельзя джаваскрипт для этого использовать :-)
Alexandr
@alle-ox
Oct 15 2015 18:13
в библиотеке оно режется на несколько частей, и работают уже с ними.
Namdak Tonpa
@5HT
Oct 15 2015 18:13
в пять строчек можно уложиться я думаю
Andy
@m-2k
Oct 15 2015 18:21
чот я не понял а чего вы хотите добиться?
Namdak Tonpa
@5HT
Oct 15 2015 18:22
мне похуй я хочу бигнамы
Andy
@m-2k
Oct 15 2015 18:22
453647586909796564856374527368479586097 ==
453647586909796560000000000000000000000
true
Namdak Tonpa
@5HT
Oct 15 2015 18:22
:-)
вы как дети )
Andy
@m-2k
Oct 15 2015 18:22
во что конвертить то?
в число с нулями?
Alexandr
@alle-ox
Oct 15 2015 18:23
я в процессе :)
Andy
@m-2k
Oct 15 2015 18:26
если в js нельзя записать число с большей точностью чем на 16 порядков, то как его передать?
все равно что я пишу 123 а оно 100 присваивает
var b = bigint('782910138827292261791972728324982')
тут число указывается как строка
и нихера не теряется
надо так же или что
Namdak Tonpa
@5HT
Oct 15 2015 18:29
да в строке или в DataView
похуй только не числами джваскриптовыми
в массиве хоть
Andy
@m-2k
Oct 15 2015 18:30
а нахуй ты тогда когда я полчаса назад про это говорил расти упомянул?
Namdak Tonpa
@5HT
Oct 15 2015 18:30
ну что тогда бинарей не было
Andy
@m-2k
Oct 15 2015 18:30
да строки-бинари какая разница
я за логику базарил
@alle-ox ты сделаешь?
Namdak Tonpa
@5HT
Oct 15 2015 18:35
та говорит что уже заканчивает :-)
Andy
@m-2k
Oct 15 2015 19:55
@5HT если ты говоришь что надо писать фид-сервер который является колхозной заменой транзакций, то как быть если нод две и более?
Namdak Tonpa
@5HT
Oct 15 2015 19:56
шардинг
на каждом сервере свой диапазон айдишников
Andy
@m-2k
Oct 15 2015 20:01
не совсем понятно. вот две ноды, на каждой приложение и база. база на две ноды общая и сджоинена по сети
каждое приложение обрабатывает в один момент времени одну и ту же запись
Namdak Tonpa
@5HT
Oct 15 2015 20:02
ты че ебанулся
Andy
@m-2k
Oct 15 2015 20:02
хз
возможно :smile:
да нет, все верно. че не так написал?
Namdak Tonpa
@5HT
Oct 15 2015 20:09
нахуя двум нодам обрабатывать одну и туже запись если мы спецально запускаем в фид сервер процесс чтобы обособленно обслуживать определенную цепочку?
где твоя логика?
записи одной цепочки всегда обрабатываются на одном компьютере
это фундамент всего KVS
Andy
@m-2k
Oct 15 2015 20:10
хочешь сказать фид сервер только один на все ноды?
Namdak Tonpa
@5HT
Oct 15 2015 20:10
нет на каждой ноде есть фид сервер
просто на всех серверах могут быть разные цепочки
не обязательно все цепочки на одном сервере держать
Andy
@m-2k
Oct 15 2015 20:11
цепочки - таблицы в смысле?
Namdak Tonpa
@5HT
Oct 15 2015 20:11
next prev
не таблицы
цепочки на основе таблиц построены
что с тобой, парень?
ты понимаешь что такое шардинг?
Andy
@m-2k
Oct 15 2015 20:12
у меня пока нет фид сервера и я пытаюсь понять чо да как должно работть
Namdak Tonpa
@5HT
Oct 15 2015 20:12
держи все на одном компьютере
если не понимаешь что такое шардинг лучше ничего не пиши
:-)
у меня такие рекомендации обычно
Andy
@m-2k
Oct 15 2015 20:12
нет напишу блять
Namdak Tonpa
@5HT
Oct 15 2015 20:12
получится как с ACL
:-)
Andy
@m-2k
Oct 15 2015 20:13
а чо с ним
Namdak Tonpa
@5HT
Oct 15 2015 20:13
непришей пизде рукав
Andy
@m-2k
Oct 15 2015 20:13
который в kvs?
Namdak Tonpa
@5HT
Oct 15 2015 20:13
та да
Andy
@m-2k
Oct 15 2015 20:19
если горизонтально шардировать надвое то половина операций будет выполняться медленнее из-за подключения к другой ноде?
Namdak Tonpa
@5HT
Oct 15 2015 20:19
если вся цепочка на одной ноде то все операции в цепочке локальны
Andy
@m-2k
Oct 15 2015 20:20
я о том что например на ноде 2 мы хотим перезаписать запись которая храниться на ноде 1
Namdak Tonpa
@5HT
Oct 15 2015 20:21
нода 2 не может перезаписать запись если запись принадлежит цепочке которая управляется нодой 1
нода 2 модет только ноду 1 попросить изменить эту запись у себя в каком-то сервере этой цепочки которой эта запись принадлежит
Andy
@m-2k
Oct 15 2015 20:22
типа она отправит запрос фидсерверу на 1 ноде?
Namdak Tonpa
@5HT
Oct 15 2015 20:22
ага
Andy
@m-2k
Oct 15 2015 20:22
ну вот, отправка запроса по сетке ж
Namdak Tonpa
@5HT
Oct 15 2015 20:22
так ты не отправляй этот запрос
Andy
@m-2k
Oct 15 2015 20:22
каким хером
Namdak Tonpa
@5HT
Oct 15 2015 20:22
ты сразу по ID смотри записи какой ноде она принадлежит
и посылай сразу запрос на запись куда нужно
запрос на запись это сообщение KVS
{put,Table,Key,Value} — это же протокол удаленный
у нас все по сети в N2O :-)
посмотри как spawnproc/cr написан
может у тебя что-то прояснится
и вот это почитай http://synrc.com/apps/cr/doc/cr.htm
Andy
@m-2k
Oct 15 2015 20:25
ок
Namdak Tonpa
@5HT
Oct 15 2015 20:28
есть много техник как раскидать по нодах
можно ID mod N делить и остаток будет номер сервера где держать этот ключ
при N — количество серверов
можно хеш кольцо как CR
по-взрослому хеш кольцо нужно делать
Andy
@m-2k
Oct 15 2015 20:29
с хэшем можно ноды динамически втыкать?
Namdak Tonpa
@5HT
Oct 15 2015 20:30
смотря какую хеш функцию подберешь :-)
должна быть консистентная
у меня в CR консистентный
CR кстати как сервер цепочек нехуй делать можно использовать
Andy
@m-2k
Oct 15 2015 20:34
пили туториал
чот там кода много
Namdak Tonpa
@5HT
Oct 15 2015 20:34
cr_hash.erl маленький
кода много потому что это распределенная база данных и одновременно сервер распределенных KVS транзакций реализующий XA протокол
-define(RINGTOP, trunc(math:pow(2,160)-1)). % SHA-1 space

% Our consistent ring hash module consists of five functions
% Why need we have more?

key_of(Object) -> crypto:hash(sha, term_to_binary(Object)).
inc(N) -> ?RINGTOP div N.
fresh(N, Seed) -> {N, [{Int,Seed} 
                       || Int <- lists:seq(0,(?RINGTOP-1),inc(N))]}.
succ(Idx,{N,Nodes}) -> <<Int:160/integer>> =Idx,
                        {A,B}=lists:split((Int div inc(N))+1,Nodes), B++A.
это все по хеш кольцу
Andy
@m-2k
Oct 15 2015 20:38
ад
Namdak Tonpa
@5HT
Oct 15 2015 20:39
не для feed сервера CR забольшой
надо feed сервер написать на kvs:fold
    spawn(fun() -> case kvs:get(feed,Table) of
           {ok,Feed} -> kvs:fold(fun(A,Acc) -> {M,F} = application:get_env(bpe,process_worker,{?MODULE,worker}),
                                                M:F(A) end,[],
                        Table, Feed#feed.top,undefined, #iterator.prev,#kvs{mod=store_mnesia});
                  __ -> skip end end),
вот такое по таблицам надо написать
Oleg Zinchenko
@cystbear
Oct 15 2015 21:05

пили туториал

+1

Namdak Tonpa
@5HT
Oct 15 2015 21:06
не будет турториала CR слишком жирный для вебчика