These are chat archives for synrc/n2o

7th
Sep 2015
Namdak Tonpa
@5HT
Sep 07 2015 03:25
пофиксал в документации что нада запускать ./sample repl
это нововведене пару дней назад было
напоминаю что существует список стабильных релизов
https://github.com/synrc/n2o/releases
но спасибо за bugfixing в мастере
Namdak Tonpa
@5HT
Sep 07 2015 03:38
теперь в документации по mad все выглядит так:
    $ ./mad app sample
    $ cd sample
    $ ../mad deps compile plan bundle sample
    $ ./sample repl
кроме того я пофиксал mad rel добавив vm.args
хотя теперь./sample repl набирать не обязательно, но для ./review repl обязательно
непонятно как сделать лучше
вроде как полностью проксировать все команды mad типа ./review start, ./review repl это же круто в бандле
ну ладно время покажет как лучше
пока в sample поставил main(A) -> mad_repl:main(A,[]). для ./sample
а в review оставил main(A) -> mad:main(A).
Сегодня закончил переписывание XHR fallback
Namdak Tonpa
@5HT
Sep 07 2015 03:45
Получилось 35 строк
% WebSocket

websocket_info(I,R,S)        -> ws(n2o_proto:info(I,R,S)).
websocket_handle(D,R,S)      -> ws(n2o_proto:stream(D,R,S));
websocket_handle(_,R,S)      -> {ok,R,S,hibernate}.
websocket_init(T,R,O)        -> ws(n2o_proto:init(T,R,O,ws)).
websocket_terminate(_,R,S)   -> n2o_proto:terminate(R,S).

ws({ok,R,S})                 -> {ok,R,S,hibernate};
ws({shutdown,R,S})           -> {shutdown,R,S};
ws({reply,{binary,Rep},R,S}) -> {reply,{binary,Rep},R,S,hibernate};
ws({reply,Rep,R,S})          -> {reply,{text,Rep},R,S,hibernate}.
Вот это все, что нужно было бы для N2O, если б не нужен был XHR
XHR чуть больше занимает
% XHR

init(T,R,O)                        -> upgrade(cowboy_req:header(<<"upgrade">>,R),{T,R,O}).
websocket(R,<<"websocket">>)       -> {upgrade, protocol, cowboy_websocket};
websocket(R,_)                     -> down(reply([],R,501)).
upgrade({undefined,R},{T,R,O})     -> initialize(T,R,O);
upgrade({B,R},_) when is_binary(B) -> websocket(R,cowboy_bstr:to_lower(B)).

handle(R,S)                  -> body(cowboy_req:body(R),S).
info(M,R,S)                  -> xhr(n2o_proto:info(M,R,S)).
terminate(_,R,S)             -> n2o_proto:terminate(R,S).
initialize(T,R,O)            -> application:set_env(n2o,formatter,json),
                                xhr(n2o_proto:init(T,R,O,xhr)).

body({ok,D,R2},S)            -> xhr(n2o_proto:stream({type(D),D},R2,S));
body(R,S)                    -> {ok,R,S}.
down(R)                      -> {shutdown,R,undefined}.
reply(D,R,Code)              -> {ok,R2}=cowboy_req:reply(Code,[],D,R), R2.

type(<<"N2O,",_/binary>>)    -> text;
type(<<"PING">>)             -> text;
type(_)                      -> binary.

xhr({ok,R,S})                -> {ok,R,S};
xhr({shutdown,R,S})          -> {shutdown,R,S};
xhr({reply,D,R,S})           -> {ok,reply(D,R,200),S}.
Сравните с тем, что было до этого:
https://github.com/synrc/n2o/blob/2.8/src/endpoints/cowboy/bullet_handler.erl
Теперь можно делать персистентные XHR процессы под супервизором.
Namdak Tonpa
@5HT
Sep 07 2015 03:51
А то шото N2O мало занимает, всего 968 строк.
asakura-kazumi
@asakura-kazumi
Sep 07 2015 06:20
Чертова финалка. Кучу времени отнимает. А на N2O я пока забил. Сначала научусь рисовать толково
В Final Fantasy XIV: A Realm Reborn рубиться начал
Namdak Tonpa
@5HT
Sep 07 2015 08:10
@fycth а ты шото по стартапу WebRTC своему делаешь?
Alex Radetsky
@radetsky
Sep 07 2015 08:29
Всем привет! Вы меня сейчас начнёте гнобить, но я такую багу нашел :) Правда в старой версии, в новых не проверял еще.
Namdak Tonpa
@5HT
Sep 07 2015 08:29
давай давай!
Alex Radetsky
@radetsky
Sep 07 2015 08:31
Суть проблемы в том, что при wf:?UPDATE_DOM сначала передаются bindings, а потом уже сами элементы. Таким образом не срабатывают postback-и, потому что на элементы не вешаются bind.
bind не куда вешаться, зато элементы отображаются.
Namdak Tonpa
@5HT
Sep 07 2015 08:32
это пофиксано
Alex Radetsky
@radetsky
Sep 07 2015 08:32
Круто. Спасибо. Я так и знал. :)
Namdak Tonpa
@5HT
Sep 07 2015 08:32
мы запускаем процесс в нем рендерим а потом результаты в wf:wire уже вставляем
потому что там последовательность событий неправильная была
и lists:reverse не помогал :-)
это кстати пофиксано было в 1.5
сейчас на дворе 2.8 :-)
но ты можешь просто спиздить код
счас покажу
вот тут должно быть все понятно
Alex Radetsky
@radetsky
Sep 07 2015 08:35
В целом да, понятно. Спасибо.
Я обошел эту проблему тем, что генерю через ?UPDATE_DOM только те части, которые не содержат postback. Остальное прячу до времени использования.
Namdak Tonpa
@5HT
Sep 07 2015 08:36
isolated rendering это называется
если поискать то на эти грабли многие ставали :-)
Alexandr
@alle-ox
Sep 07 2015 09:02
@5HT а откуда информация что websocket на ipad2 не работает?
Namdak Tonpa
@5HT
Sep 07 2015 09:22
я незнаю может работает :-)
Alexandr
@alle-ox
Sep 07 2015 09:23
странно desktop safari по xhr работает
Namdak Tonpa
@5HT
Sep 07 2015 09:23
ну pubsub не работает сейчас в XHR
и не работал никогда
ни в N2O ни в bullet
я же специально скоро буду делать чтобы работал
Alexandr
@alle-ox
Sep 07 2015 09:24
в sample?
Namdak Tonpa
@5HT
Sep 07 2015 09:24
ну sample испольузет pubsub поэтому XHR там не работает
проблема ж в том что ковбоя процесс который обслуживает XHR реквест сразу умирает
а мы в нем подписываемся wf:reg
поэтому если мы шлем wf:send, то получаель оказывается давно мертв
так без пабсаба если организовать то можно, только код не будет красивый
поэтому я хочу решить проблему на корню
и делать персистентные процессы под супервизором для каждого session_id
Vitaly Shutko
@sokal32
Sep 07 2015 09:26
а этот xhr вообще кому-то нужен?
Namdak Tonpa
@5HT
Sep 07 2015 09:26
китайцам
Alexandr
@alle-ox
Sep 07 2015 09:26
помойму мы о разном говорим.
если sample открываешь в chrome, работает по ws
Namdak Tonpa
@5HT
Sep 07 2015 09:27
и там где по каким либо причинам банят веб сокеты
Alexandr
@alle-ox
Sep 07 2015 09:27
если в safari, то по xhr
Vitaly Shutko
@sokal32
Sep 07 2015 09:27
у bullet есть fallback к long polling
Namdak Tonpa
@5HT
Sep 07 2015 09:27
не раотает он
Vitaly Shutko
@sokal32
Sep 07 2015 09:27
но в safari вроде как работает
ws
Namdak Tonpa
@5HT
Sep 07 2015 09:27
если использовать pubsub
посмотри в логах каждый раз новый pid
это не LONG
это very SHORT :-)
LONG — это когда после первого XHR INIT дальше процесс живет и не умирает
пока его JavaSrcipt пингует полингом
bullet сосет хуй
Мы с Лоиком говорили на эту тему
он сказал что писать не будет ничего )
Vitaly Shutko
@sokal32
Sep 07 2015 09:30
я сейчас кстати пишу порт ranch/cowboy на php
Namdak Tonpa
@5HT
Sep 07 2015 09:30
лучше N2O пиши
Vitaly Shutko
@sokal32
Sep 07 2015 09:30
та я вообще не понимаю где у него ветка с cowboy 2
я хотел пуллреквестов парочку послать
Namdak Tonpa
@5HT
Sep 07 2015 09:30
зачем вебсервер?
Vitaly Shutko
@sokal32
Sep 07 2015 09:30
чтобы писать n2o нужен веб-сервер
в php нет ничего людского
Namdak Tonpa
@5HT
Sep 07 2015 09:30
там же должен быть какой-то libuv для PHP
PHPreact или как оно
Vitaly Shutko
@sokal32
Sep 07 2015 09:31
а преславутый ratchet даже не поддерживает передачу бинарных данных (facepalm)
Namdak Tonpa
@5HT
Sep 07 2015 09:31
тебе надо libuv + PHP
Vitaly Shutko
@sokal32
Sep 07 2015 09:31
ну мне срать на винду так что я заюзал libevent
Namdak Tonpa
@5HT
Sep 07 2015 09:31
без libuv это все не имеет смысла
а ну ок
главное чтобы что то типа этого было
Vitaly Shutko
@sokal32
Sep 07 2015 09:31
да
Namdak Tonpa
@5HT
Sep 07 2015 09:31
ну да тогда надо и сервер свой писать
Vitaly Shutko
@sokal32
Sep 07 2015 09:31
ну так я портирую ranch и cowboy
Namdak Tonpa
@5HT
Sep 07 2015 09:31
ок, скажешь куда донейтить
Vitaly Shutko
@sokal32
Sep 07 2015 09:31
а потом уже на нем буду писать фрейм
)))
Namdak Tonpa
@5HT
Sep 07 2015 09:32
но мне нужен бренд n2o.php потом
так то понятн что нада сначала веб сервер написать
но нельзя ли как-то nginx заюзать тут?
Vitaly Shutko
@sokal32
Sep 07 2015 09:33
ну что сказать, я в n2o неплохо разобрался, но если писать n2o.php то к тебе будет много вопросов)
nginx конечно да
Namdak Tonpa
@5HT
Sep 07 2015 09:33
задавай их счас
Vitaly Shutko
@sokal32
Sep 07 2015 09:33
nginx -> ranch -> cowboy -> n2o
Namdak Tonpa
@5HT
Sep 07 2015 09:33
я написал вебсокет хендлер короче чем у тебя в смузи
Vitaly Shutko
@sokal32
Sep 07 2015 09:34
та я когда еще раз посмотрю на n2o, подниму свои схемы как там проходит пакет откуда и куда, тогда задам
Namdak Tonpa
@5HT
Sep 07 2015 09:34
```
% WebSocket

websocket_info(I,R,S)        -> ws(n2o_proto:info(I,R,S)).
websocket_handle(D,R,S)      -> ws(n2o_proto:stream(D,R,S));
websocket_handle(_,R,S)      -> {ok,R,S,hibernate}.
websocket_init(T,R,O)        -> ws(n2o_proto:init(T,R,O,ws)).
websocket_terminate(_,R,S)   -> n2o_proto:terminate(R,S).

ws({ok,R,S})                 -> {ok,R,S,hibernate};
ws({shutdown,R,S})           -> {shutdown,R,S};
ws({reply,{binary,Rep},R,S}) -> {reply,{binary,Rep},R,S,hibernate};
ws({reply,Rep,R,S})          -> {reply,{text,Rep},R,S,hibernate}.
в n2o_proto делается обход протоколов
info(M,R,S)               -> push(M,R,S,protocols(),[]).
stream(<<>>,R,S)          -> nop(R,S);
stream({text,_}=M,R,S)    -> push(M,R,S,protocols(),[]);
stream({binary,D},R,S)    -> push(upack(D),R,S,protocols(),[]);
stream(_,R,S)             -> nop(R,S).

nop(R,S)                  -> {reply,<<>>,R,S}.
reply(M,R,S)              -> {reply,M,R,S}.
push(_,R,S,[],_)          -> nop(R,S);
push(M,R,S,[H|T],Acc)     ->
    case H:info(M,R,S) of
         {unknown,_,_,_}  -> push(M,R,S,T,Acc);
         {reply,M1,R1,S1} -> reply(M1,R1,S1);
                        A -> push(M,R,S,T,[A|Acc]) end.
короче написать просто невозможно :-)
все ясно как божий день
можешь сворачивать свой форк ))
Vitaly Shutko
@sokal32
Sep 07 2015 09:36
у меня попроще)
-> cowboy's magic
-> bullet_handler:handle (endpoints/cowboy/bullet_handler.erl:92)
-> n2o_bullet:stream (endpoints/cowboy/n2o_bullet.erl:12)
-> n2o_websocket:stream (endpoints/n2o_websocket.erl:13)
-> push message to all enabled protocols (endpoints/n2o_websocket.erl:7,38)
-> protocols process message (protocols/n2o_*, example - protocols/n2o_binary.erl:8,14)
Namdak Tonpa
@5HT
Sep 07 2015 09:36
этого нет
таких файлов в n2o уже нет
Vitaly Shutko
@sokal32
Sep 07 2015 09:36
оу
выпал из жизни)
Namdak Tonpa
@5HT
Sep 07 2015 09:36
ты старый n2o переписываешь :-)
у тебя не короче
Vitaly Shutko
@sokal32
Sep 07 2015 09:36
та я не переписываю пока)
Namdak Tonpa
@5HT
Sep 07 2015 09:36
почитай то что я в чате написал
это ВЕСЬ код
Vitaly Shutko
@sokal32
Sep 07 2015 09:37
ок, щя посм
Namdak Tonpa
@5HT
Sep 07 2015 09:37
ну там ебала в init еще стоит с Allow Content Origin
но то я вообще вынесу в утилиты
у тебя протоколов нет в смузи поэтому и сравнивать нужно не с n2o приложениями, а с n2o протоколами
цепочку вызовов
тут n2o_stream -> n2o_proto -> n2o_client
Vitaly Shutko
@sokal32
Sep 07 2015 09:39
смузи это штука почти лишенная архитектуры, просто маленькая прослоечка перед cowboy
я ее не сравниваю с n2o
Namdak Tonpa
@5HT
Sep 07 2015 09:41
у тебя sm_websocket -> sm_protcol -> sm_file
теже самые три пацана
че не сравнивать
n2o это тоже маленькая прослоечка
просто инфраструктуры побольше
а так разницы я не вижу
Vitaly Shutko
@sokal32
Sep 07 2015 09:42
ну вот да, в smoothie кроме sm_websocket и sm_request больше ничего и нету
а в n2o есть еще куча всего
Namdak Tonpa
@5HT
Sep 07 2015 09:42
ну я тебе предлагаю сделать смузи более совместимым на уровне кода с n2o
я тебе предлагаю пиздить явно охуенный код
Vitaly Shutko
@sokal32
Sep 07 2015 09:43
))
Namdak Tonpa
@5HT
Sep 07 2015 09:43
мне это выгодно
Vitaly Shutko
@sokal32
Sep 07 2015 09:43
я на досуге склоню текущую версию n2o, посмотрю что там к чему
Namdak Tonpa
@5HT
Sep 07 2015 09:43
ты можешь например выбросить обход протоколов n2o_proto напирмер
но сделать совместимые форматетры
понятно что в смузи не будет джаваскрипта и нитрогеновского АПИ
но протоколы можно было бы сделать одинковые
теперь все равно нужно атачится к сессии будет как то
N2O,SESSION_ID
PING PONG нужен
IO
вот я тебе предлагаю эту хуйню
парю N2O протокол без зазрения всякой совести
:-)
Vitaly Shutko
@sokal32
Sep 07 2015 09:46
я тебя понял)
Namdak Tonpa
@5HT
Sep 07 2015 09:47
тогда можно было бы напиздить скриптов n2o и посадить на смузи
было бы охуенно
Vitaly Shutko
@sokal32
Sep 07 2015 09:47
я только вот одного не понимаю, почему ты не юзаешь behaviour, почему не пишешь specs, почему сделал n2o монолитным?
Namdak Tonpa
@5HT
Sep 07 2015 09:48
что значит монолотным любой файл из handler/*.erl заменяемый почти
бехевиорами и колбеками я тоже упарывался как и ты по началу
пока решил не избавится от этого ОТП-шного говна
у меня sctrict API через экспорты
если ты подключаешь -export(?API) ты обязан реализовать его точно также как и в случае колбеков и бихевиоров
только кода в разы меньше
Vitaly Shutko
@sokal32
Sep 07 2015 09:49
ну мож там что изменилось, но раньше я не мог заменить n2o_mq на свой mq
потому что все было вшито
Namdak Tonpa
@5HT
Sep 07 2015 09:49
уже можешь
Vitaly Shutko
@sokal32
Sep 07 2015 09:50
и это всех компонентов касается?
Namdak Tonpa
@5HT
Sep 07 2015 09:50
да, это даже в документации написано
:-)
должно быть возможным заменить любой файл n2o
через application:set_env(n2o,option,file).
в рантайме
если это нет так, то это по какому-то недосмотру
или никому нахуй не надо
Vitaly Shutko
@sokal32
Sep 07 2015 09:52
ну это хорошо
Namdak Tonpa
@5HT
Sep 07 2015 09:52
mq добавил недавно, да
но это была ошибка что оно не так
там же это одной строчкой добавляется
Vitaly Shutko
@sokal32
Sep 07 2015 09:52
ладно, посмотрю сначала на то что изменилось в n2o за последние пол года, потом будет о чем поговорить
Namdak Tonpa
@5HT
Sep 07 2015 09:53
протоколы протоколы протоколы
если бы я для каждой хуйни писал supervisor и behavior я бы ебанулся
именно поэтому в BPE и N2O я скрываю OTP апи как можн глубже
Namdak Tonpa
@5HT
Sep 07 2015 09:58
в примерах wf:async воркеры работают например под супервизором
но ты этого даже не замечаешь
ты просто пишешь:
    event(init) -> wf:async("counter",fun loop/1);
    event(inc)  -> wf:send(counter,up),
                   n2o_async:send("counter",up).

    loop(init)  -> wf:reg(counter), put(counter,0);
    loop(up)    -> C = get(counter) + 1,
                   put(counter,C),
                   wf:update(display,
                      #span{id=display,body=wf:to_binary(C)}),
                   wf:flush().
вот loop работает как gen_server
ты можешь к нему обращаться как хочешь:
    > wf:async("ho!", fun(X) -> io:format("Received: ~p~n",[X]) end).

    > pid(0,507,0) ! "hey".
      Received: "hey"
      ok

    > n2o_async:send("ho!","hola").
      Received: "hola"
      ok

    > gen_server:call(pid(0,507,0),"sync").
      Received: "sync"
      ok
Vitaly Shutko
@sokal32
Sep 07 2015 10:02
выглядит прикольно
Namdak Tonpa
@5HT
Sep 07 2015 10:03
поэтому -behavior -сallback и вся OTP срань идет нахуй. Она конечно присутсвует, но по минимуму. Вот у тебя sm_protocol.erl только для того чтобы интерфейс объявить
бред же йобаный фашистов скандинавских
Vitaly Shutko
@sokal32
Sep 07 2015 10:04
но зато так проще понимать код
мне вот не нравится то как написан n2o, бо хрен поймешь иногда
шо это в жопу за агрументы N, C ,A
Namdak Tonpa
@5HT
Sep 07 2015 10:04
почему не написать -define(SM,[supports_format/1,encode/2,decode/2]).
Vitaly Shutko
@sokal32
Sep 07 2015 10:04
и я должен пол часа сидеть шобы понять
Namdak Tonpa
@5HT
Sep 07 2015 10:04
а в include файле -export(?SM) просто и все
и я заменил твой файл двумя строчками
Vitaly Shutko
@sokal32
Sep 07 2015 10:05

почему не написать -define(SM,[supports_format/1,encode/2,decode/2]).

тогда export будет неявным, и опять нужно копать hrl файл чтобы понять что это за макрос

вот по n2o доки подробной нет, поэтому единственный вариант это смотреть код, значит код должен быть понятным
Namdak Tonpa
@5HT
Sep 07 2015 10:06
ну охуеть, а файл с калбеками копать не надо :-)
файл лучше чем 2 строки )
Vitaly Shutko
@sokal32
Sep 07 2015 10:06
но там хоть написано -behaviour(module), значит я знаю в каком конкретно файле
Namdak Tonpa
@5HT
Sep 07 2015 10:07
перед -export(SM) будет идти -include
Vitaly Shutko
@sokal32
Sep 07 2015 10:07
include может быть и не один)
ну это вопрос удобства работы с кодом
Namdak Tonpa
@5HT
Sep 07 2015 10:08
ну пиши колбеки, че :-)
Vitaly Shutko
@sokal32
Sep 07 2015 10:08
вот код смузи может понять даже человек который прогает на erlang два дня
поэтому мы его и написали
но вот насчет более приблизить архитектуру smoothie к n2o, эта идея мне в принципе нравится, думаю было бы неплохо
Namdak Tonpa
@5HT
Sep 07 2015 10:10
да мне похуй на архитектуру, делай как хочешь, главное чтобы спецификацию N2O HEART протол поддержать
можешь даже отдельным репозиторием хуйнуть если это так мерзко для тебя :-)
там три текстовых сообщения "PING" "PONG" "N2O," и одно дополнительное JSON/BERT {IO,EVAL,DATA}
Vitaly Shutko
@sokal32
Sep 07 2015 10:11
ок)
Namdak Tonpa
@5HT
Sep 07 2015 10:12
N2O можешь на SM поменять
только чтобы оно четырехбайтовое было
Vitaly Shutko
@sokal32
Sep 07 2015 10:12
не, нужно уметь маскироваться под n2o)
Namdak Tonpa
@5HT
Sep 07 2015 10:12
у меня N2O с запятой
а ну тогда вообще заебись
я раньше назвал IO DATA CODATA
но подумал что CODATA как то вообще жестко для джаваскриптеров )
эта хуйня даже хаскелистам нравится
IO их любимое слово тип 1 и 0
и в этом сообщении алгоритмы и структуры данных
Vitaly Shutko
@sokal32
Sep 07 2015 10:16
{IO,EVAL,DATA} это типа для реализации HATEOAS нужно?
Namdak Tonpa
@5HT
Sep 07 2015 10:16
ты можешь EVAL в любом виде передавать
хоть в виде AST
типобезопасного с валидацией
это тема будущих исследований
главное что это универсальный RPC протокол
с красивым именем
хипстерским
IO
Vitaly Shutko
@sokal32
Sep 07 2015 10:17
))
Namdak Tonpa
@5HT
Sep 07 2015 10:18
у нас мы гарантируем что все что на клиент приходит это безопасно
поэтому мы шлем прямо eval
а со стороны клиента ты не можешь хуйню прислать
во-первых есть стрикт по модулям
есть [safe]
и также есть AES/CBC pickle
это хуйню верифицировали несколько раз
две канторы
Vitaly Shutko
@sokal32
Sep 07 2015 10:20
и также есть AES/CBC pickle
это шифрование всего что передается по IO?
Namdak Tonpa
@5HT
Sep 07 2015 10:23
пока только по PICKLE протколу нитрогеновскому
а так ничего не мешает шифровать IO
оно не сообщения сами шифрует а типа поля сообщений
так внутри PICKLE едет зашифрованый EV
Namdak Tonpa
@5HT
Sep 07 2015 10:31
@alle-ox не понимаю в чем у тебя проблемы
ws-safari.png
у меня сафари и вебсокеты и XHR все работает
Alexandr
@alle-ox
Sep 07 2015 10:49
да я уже понял, что все работает, во вкладке Timeline -> Network, были запросы XHR. это меня и смутило.
Namdak Tonpa
@5HT
Sep 07 2015 10:49
ну да, в сафари так
Alexandr
@alle-ox
Sep 07 2015 10:49
блин почему в Safari нету гуи для дебага websocket, как в Chrome
Namdak Tonpa
@5HT
Sep 07 2015 10:55
ой та все ж в консоли и так видно
Namdak Tonpa
@5HT
Sep 07 2015 11:42
вкомитили этот календарь в synrc/nitro
еще не почистили но зато из коробки никакого jQuery
Andrii Sergiienko
@fycth
Sep 07 2015 13:43
@5HT ага делаю. Последние полгода для литовцев делал стартап на WebRTC, но они че-то второй месяц никак не доделают свои UI и не запустятся хотя бы в публичную бету. Кстати ж, все как надо - WebRTC + n2o
@5HT а свой стартап пилю, но медленно - вечно часов в сутках не хватает. Но в этом году контора сворачивается, - так что я уже начал пилить быстрее :)
Andy
@m-2k
Sep 07 2015 14:27
OOOAoaaooAA какой няшный календарик
Namdak Tonpa
@5HT
Sep 07 2015 14:49
@fycth есть иделя для стартапа, лайв стриминг с peer to peer клиентами в современных браузерах
у меня тут есть заказчики
с встраиванием рекламы в стрим на клиенте и т.д.
хочешь попиздеть по скайпу на это тему на неделе?
Andy
@m-2k
Sep 07 2015 14:52
видос?
Andy
@m-2k
Sep 07 2015 14:58
кто-нибудь понимает как в daat поисковых алгоритмах рейтинг высчитывается?
читал спеки - нихера не понял
Andy
@m-2k
Sep 07 2015 15:03
@5HT теперь же не надо свои supervisor'ы писать, достаточно async заюзать?
Andrii Sergiienko
@fycth
Sep 07 2015 16:11
@5HT оно пока достаточно рогатое. Стандарт до сих пор в драфте - поэтому каждый релиз что-то ломается и половина фич работает (или НЕ работает) по-разному в разных браузерах. Поэтому надо заранее быть готовым к тому что обязательно будут "нюансы". Насчет попиздеть - давай попиздим. Мож че с того и вырастет.
Namdak Tonpa
@5HT
Sep 07 2015 16:22
@m-2k ага, не надо, все уже написано в n2o_async
будет три типа вооркеров в 2.9
file, xhr и вебовые async
и все будут создаваться под n2o супервизором
@fycth ок я тебя сведу с @proger
Haskell language features and standard libraries in pure Python.