
SHIPPERING
17.02.2018
00:36:31
И мы начинаем наш шипперинг
Кто сегодня ходил за гаражи?
Кого все кругом подозревают в близости?
Мы раскрыли вас, ребята: @safinalexey + @Gleber1 = ♥

Google


Дмитрий
17.02.2018
00:44:17
Тут не завтипы, тут всё гораздо проще
Мне сложно объяснять абстрактно, поэтому сразу перейду к примеру
Akka.FSM (aka Finite State Machine)
У нас есть условная переходная функция, сильно-сильно перегруженная (это же скала, ну) и пара типов в ней
Первый тип — это тип входящего сообщения, второй тип — текущее состояние стейта
Допустим, турникет. Он считает число монеток и может быть включен-выключен
type Coins = number
type Open =.boolean
State
= Offline
|.Online Open Coins
Тогда его состояние можно регулировать с помощью ряда сообщений
Message
= Run Coins
| Halt
| InsertCoin Coins
when( Offline ) {
case Event( Run, Coins c ) => {
log "going online"
goto Online false c
}
case Event( _ ) => log "I'm offline"
}
when( Online, Open open Coins coins ) => {
case Event( Run, _ ) => log "I'm already online"
case Event( Halt ) => goto Offline
case Event( InsertCoin, Coins c ) => goto Online true coins + c
}
То есть типизированный стейт так же может описываться более чем одним типом данных, и работает это всё с матчингом не только по типу сообщения но и по типу состояния
возьмем типичный пример - турникет
у него два состояния: открыт и закрыт
и два экшона: дать монетку и толкнуть
(открыт, дать монетку) -> открыт
(открыт, толкнуть) -> закрыт
(закрыт, дать монетку) -> открыт
(закрыт, толкнуть) -> закрыт
я хочу расширить это тем, что например если я положу две монетки подряд, то я могу и толкнуть минимум два раза подряд
(открыт_n, дать монетку) -> открыт_n+1
(открыт_0, толкнуть) -> закрыт
(открыт_n+1, толкнуть) -> открыт_n
(закрыт, дать монетку) -> открыт_0
(закрыт, толкнуть) -> закрыт
Я открыл параллельно тексту выше репу Akka.FSM И ТЫ НЕ ПОВЕРИШЬ ? https://github.com/gianlo/Akka.FSM.Examples/tree/master/Turnstile.Scala
Первым же кликом открыл именно это)


kana
17.02.2018
01:11:58
ну турникет - это такой туду-список в fsm

Дмитрий
17.02.2018
01:12:14
А, тогда логично)

kana
17.02.2018
01:12:28
чет очень примитивное набросал, сейчас буду курить машинки кметта
https://gist.github.com/kana-sama/1a96fa932cd6c5e9687a3a1ba2bf4a0c

Google

Дмитрий
17.02.2018
01:16:00
Кмк, в случае машинок проблема вся в способе имплементации — не оч понятно какой API будет удачнее всего смотреться в жс. Поэтому я решил последовательно приближаться к желаемому результату в виде Akka.FSM не форсируя события.
Так что пока что я в effector имею статичный Redux стейт, общий один на всех)

Den
17.02.2018
03:12:13

andretshurotshka?❄️кде
17.02.2018
03:21:07
?

Дмитрий
17.02.2018
05:51:12
^
Это синтаксис скалы помноженный на моё незнание этого языка)

Den
17.02.2018
06:02:00

andretshurotshka?❄️кде
17.02.2018
06:02:32
>goto
go опять победил

Anton
17.02.2018
06:40:56
https://twitter.com/marijnjh/status/964437691055136768

andretshurotshka?❄️кде
17.02.2018
06:43:39
сабжекты

Дмитрий
17.02.2018
06:47:24

andretshurotshka?❄️кде
17.02.2018
06:55:18
>без next
>подключаешь most-subject

Дмитрий
17.02.2018
07:07:16
Я не планирую его использовать нигде кроме низкоуровневых вещей)

andretshurotshka?❄️кде
17.02.2018
07:08:49
в xstream есть imitate для такого

Дмитрий
17.02.2018
07:46:23
> Note, though, that imitate() does not support MemoryStreams
Мне что-нибудь попроще плиз)

andretshurotshka?❄️кде
17.02.2018
07:48:27
че)
memorystream это как behavioursubject
вроде

Den
17.02.2018
07:54:59
Привет
А treact работает?

Google

andretshurotshka?❄️кде
17.02.2018
07:55:26
да
(нет)

Den
17.02.2018
07:55:55
Какой бранч?

andretshurotshka?❄️кде
17.02.2018
07:55:59
media-preview

Den
17.02.2018
07:56:04
О

Дмитрий
17.02.2018
08:02:18

Den
17.02.2018
08:06:57

andretshurotshka?❄️кде
17.02.2018
08:09:18
npm run start:dev
@Piterden

Den
17.02.2018
08:26:51
Спс
@Piterden
https://www.npmjs.com/package/telegram-typings

andretshurotshka?❄️кде
17.02.2018
08:52:43
м?
это для ботов

Den
17.02.2018
08:53:10
Гист видел?
https://gist.github.com/Piterden/9520388a5de85e371a3912415db37033

andretshurotshka?❄️кде
17.02.2018
08:54:31
для TL напишешь парсер с AST?)
https://github.com/goodmind/language-typelanguage
https://core.telegram.org/mtproto/TL-formal

illiatshurotshka❄️
17.02.2018
08:55:15

Google

andretshurotshka?❄️кде
17.02.2018
08:55:51

illiatshurotshka❄️
17.02.2018
08:56:04

andretshurotshka?❄️кде
17.02.2018
08:56:16
>как без него

illiatshurotshka❄️
17.02.2018
08:56:34
жсон схема его не отменяет
или стоп
жсон вместо тл?

Den
17.02.2018
08:57:20
YAML

Дмитрий
17.02.2018
08:57:28

illiatshurotshka❄️
17.02.2018
08:57:39
ну это совсем другое решение

Дмитрий
17.02.2018
08:57:47
Нет, то же самое

illiatshurotshka❄️
17.02.2018
08:57:56
?♂️

Den
17.02.2018
08:57:56
Вид сбоку

illiatshurotshka❄️
17.02.2018
08:58:15
со стороны парсинга, про которую речь, совсем другое

Дмитрий
17.02.2018
08:58:17
?♂️
TL — это запись синтаксиса, она не связана с бинарным представлением напрямую

illiatshurotshka❄️
17.02.2018
08:58:41

Den
17.02.2018
08:58:43

illiatshurotshka❄️
17.02.2018
08:59:44
я не знаю причем здесь yaml

Den
17.02.2018
09:00:02
Там не API описано

Google

Den
17.02.2018
09:00:18
Синтаксис

andretshurotshka?❄️кде
17.02.2018
09:00:58
https://github.com/telegramdesktop/tdesktop/blob/dev/Telegram/Resources/scheme.tl

Den
17.02.2018
09:01:53
Он есть в JSON
Первый

andretshurotshka?❄️кде
17.02.2018
09:02:05
там не все данные
и с жсон неудобно

Den
17.02.2018
09:03:19
Всмысле?

andretshurotshka?❄️кде
17.02.2018
09:03:22
ща
"type": "flags.0?Vector<InputDocument>" как минимум это приходится парсить

Den
17.02.2018
09:06:23
Альтернатива?

andretshurotshka?❄️кде
17.02.2018
09:06:36
полноценный AST

Den
17.02.2018
09:22:48

andretshurotshka?❄️кде
17.02.2018
09:23:04
это где

Den
17.02.2018
09:23:57

andretshurotshka?❄️кде
17.02.2018
09:24:17
код конструктора
для сериализации

Den
17.02.2018
09:25:00
Показать пример результата можешь?
@goodmind