
Дмитрий
12.12.2017
02:31:36
Вот как пример глобальный в рамках проекта newtype https://github.com/zerobias/telegram-mtproto/blob/feature/mtproto3/packages/telegram-mtproto/src/newtype.h.js
Ввиду чего я работаю не с number[] number[], а вижу что одно это CryptoKey (который по прежнему и для нас и для флоу остаётся массивом чисел, а второе — это список уникальных айдишников UID[]
CryptoKey UID[]
vs
number[] number[]

Maxim
12.12.2017
02:35:57
Opaque типы конечно фича

Google

Maxim
12.12.2017
02:36:30
А вот то, что у тебя на ноуте 4 флоу не тормозят - подозрительно)

andretshurotshka?❄️кде
12.12.2017
02:37:05
Втф тут было

Дмитрий
12.12.2017
02:37:07
Просто я разобрался в причине и решил проблему общим образом

Denis
12.12.2017
02:37:08
на моем маке тоже много чего не тормозит

kana
12.12.2017
02:37:08
так я говорю, может он использует флоу-демон, который работает в фоне
а вот в вебшторме флоу по дефолту просто тупо перезапускается каждый раз каждые пару секунд и все виснет

Maxim
12.12.2017
02:37:38
Может я его не правильно готовлю, пока не готов принять флоу со всеми его детскими болезнями

Дмитрий
12.12.2017
02:37:53
Ты думаешь в вс коде он не перезапускается?)
Я просто решил его не спрашивать

Denis
12.12.2017
02:39:08
5 intellij idea, 2 виртуалки, 8 докеров, 100500 вкладок

Дмитрий
12.12.2017
02:39:35
У меня не особо мощный ноут, к слову

Maxim
12.12.2017
02:39:43

Google

Дмитрий
12.12.2017
02:40:09

Maxim
12.12.2017
02:40:46
Не на то ответил

Дмитрий
12.12.2017
02:40:52
Ну лан)

Maxim
12.12.2017
02:41:13

Дмитрий
12.12.2017
02:42:53
Закрыл редактор и вписал в package.json "flow": "pm2 start flow"
После чего любые поползновения редакторов пресекаются на корню, я даже не впоминаю об этом
А сервер, запущенный (или моментально перезапущеный, как это делает pm2) нормальным образом будет работать нормально и без проблем
Редакторы просто вынуждены работать с инстансом, который запустили не они

Maxim
12.12.2017
02:45:47
Гм.. зачем то же они запускают разные

Alice
12.12.2017
02:45:50

Дмитрий
12.12.2017
02:46:13

Maxim
12.12.2017
02:46:32
Еслинт - это 1/100 того чего мне надо

Дмитрий
12.12.2017
02:46:46
Да, по ряду причин редакторы запускают сервер криво. Просто не давайте редакторам запускать сервер)

Maxim
12.12.2017
02:46:47

andretshurotshka?❄️кде
12.12.2017
02:47:50

Alice
12.12.2017
02:49:18
Ой, не правила.
УСТАВ.
Там это называлось УСТАВОМ.

Denis
12.12.2017
02:59:08
https://www.youtube.com/watch?v=B0i5w94_430

Google

kana
12.12.2017
03:03:56

andretshurotshka?❄️кде
12.12.2017
03:05:32
фига я проспал срач
>политика запрещена
?

Дмитрий
12.12.2017
03:10:58
Называть друг друга мудаками — не политика ?
https://github.com/andywer/gear
Опа

andretshurotshka?❄️кде
12.12.2017
03:12:42
/stat@combot

Combot
12.12.2017
03:12:42
combot.org/chat/-1001071213089

andretshurotshka?❄️кде
12.12.2017
03:13:02
>37%

Denis
12.12.2017
03:33:39
effin не зашел?)

kana
12.12.2017
03:34:00
не, я еще не пробовал, я просто открыл vscode а там это
и я продолжил реализовывать разные эффекты
сейчас механизм эксепшенов допишу и посмотрю effin

Denis
12.12.2017
03:34:33

andretshurotshka?❄️кде
12.12.2017
03:35:42
https://twitter.com/YuriyBogomolov/status/940239567764017152
https://mobile.twitter.com/YuriyBogomolov/status/940232525821218816 топ

kana
12.12.2017
03:42:09
выкладывай gists)
да там ничего нового, если читал сорцы freer - https://gist.github.com/kana-sama/32614510e20e82e65c6732a8bc11f317#file-my-freer-without-optimisations-reader-state-writer-exception-hs-L150-L171
простенький exception с кетчингом ошибок
ну и пример использования - https://gist.github.com/kana-sama/32614510e20e82e65c6732a8bc11f317#file-my-freer-without-optimisations-reader-state-writer-exception-hs-L191-L213

Google

kana
12.12.2017
03:44:23
добавить эксепшены в хаскель - 10 строчек
добавить эксепшены в го - невозможно

andretshurotshka?❄️кде
12.12.2017
03:45:26

kana
12.12.2017
03:46:55
только не мог придумать нормальный синтаксис для try
если введут no-dollar-do, то можно будет так

Admin
ERROR: S client not available

andretshurotshka?❄️кде
12.12.2017
03:50:26
фп нужен для императивщины?)

kana
12.12.2017
03:50:30
да
не, не так
фп нужен, чтобы ввести императивщину
типа во всех языках есть if, а в языке L его нет, но мы его напишем в виде функции и будем юзать, вот наш if
нужно не забывать еще такие приколюхи, что запускать эффекты можно локально, не обязательно это делать в main

Дмитрий
12.12.2017
03:58:56
Хэндлер эффектов

kana
12.12.2017
04:07:49
ну все, пейпер freer прочитан, код тоже

adam
12.12.2017
04:08:00
прикольно

Denis
12.12.2017
04:11:29
мда) https://www.humblespark.com/blog/extensible-effects-in-node-part-1
@kana_sama кстати тут есть немного интересного
https://github.com/srijs/haskell-free-concurrent/blob/1a56280e8d63e037cf8f9e57aa17ac6a8ac817a5/src/Control/Concurrent/Free.hs#L29-L33

Даниил
12.12.2017
05:17:28
зачем эти ваши хаскели если всё уже есть в жс

Google

andretshurotshka?❄️кде
12.12.2017
05:39:56
лол

Юрий
12.12.2017
06:06:51

Gleb
12.12.2017
06:17:58
Решили epics еще подсократить
export const fetchSomeEpic = request({url: "/abcd"}, successActionCreator, failActionCreator/*опционально*/, cancelableActionCreator/*опционально*/)
Fail вообще не обрабатываются особенным образом они выше в рутовых эпиках
Ну и жирный request в котором идет и запрос и обработки какие то стандартные
.takeUntil(action$.ofActionCreator(cancelableActionCreator))
.retryWhen(tokenExpired)
надо нет оно вообще вот так делать ?

andretshurotshka?❄️кде
12.12.2017
06:40:50
что ты делаешь?

Gleb
12.12.2017
06:41:31
?
Цель - вообще отсутсвие дублирования за счет хайордер обзервабла
то есть по сути все эпики с простыми запросами имеют почти одинаковую структуру
.flatMap()
.takeUntil
.map()
Что если вынести это вообще отдельно в функцию и просто передать туда ActionCreator для success и fail
export const request = curry((httpConf, success, fail, cancel, action$, store, ) =>)
Плюс внутри request там mergeMap с success и например globalSuccess в конце, те какие то специфические экшны вернуть

Denis
12.12.2017
06:57:23
все на твой выбор
o.let(fnObs)


Gleb
12.12.2017
07:04:30
Угу lettable прикольня штука!)я в них как раз прокинул свою функцию поверх redux-act чтобы работать сохраняя тайпинги
export function ofAction <P,M>(actionCreator: ActionCreator<P, M>) {
return function ofActionOperatorFunction(source: ActionsObservable) {
return source.ofType(actionCreator.getType()) as Observable<ActionCreator<P, M>>
};
}
То есть выглядеть должно как то так?
pipe(
ofAction(anyActionCreator),
request(successActionCreator, failActionCreator)
)

Denis
12.12.2017
07:06:10
типа того
но вообще если нужно шарить эффект то лучше через publish с селектором

Gleb
12.12.2017
07:09:35
Да его как раз нужно шарить. То есть еще чище было бы если бы я писал
pipe(
ofAction(anyActionCreator),
request({url: "/any"}),
map(uccessActionCreator,)
)
И при том реквест например бы возвращал мне данные но и при этом паблишил global success

adam
12.12.2017
07:09:36

Gleb
12.12.2017
07:10:12
Как тогда должен выглдять request c publish/share можно пример пожалуйтса

Denis
12.12.2017
07:10:40
o.publish(s => shareYourEffect)