Leonid 🦇
а мне нужен server push
Alexander
но мы живём не в светлом будущем
Viacheslav
а мне нужен server push
server push зачем нужен?
Viacheslav
чет мне кажется, если нужен то эти проблема вебсокетами тоже не решить
Leonid 🦇
оповещать
Alexander
кстати, есть какие нибудь сервера в Haskell которые нормально полноценно поддерживают http2 позволяя использовать его фичи?
Leonid 🦇
вроде в warp что-то накостылили, но насколько я знаю не очень
Viacheslav
оповещать
поэтому нужно просто сделать API HTTP, реалтайм — websocket/longpoll
Leonid 🦇
и не всё
Leonid 🦇
я и делаю два апи
Leonid 🦇
один для туповатых скриптов, второй для гуёв
Viacheslav
кстати так и не понимаю чем например лучше websocket для подписок, чем нормально сделанный longpoll + keep-alive
Alexander
не вижу ни одного бонуса long poll по сравнению с websocket
Viacheslav
проще балансировать
Viacheslav
в разы
Leonid 🦇
и знаете что? Без RESTфульных урлов можно обойтись одним и тем-же кодом
Alexander
чем?
Alexander
по середине коммуникации на другой хостинг пошлёшь?
Viacheslav
а как будете перекидывать коннекшены с сервера на сервер, если их стало там слишком много?
Leonid 🦇
и вообще, не у всех тут вебскейл размером с гугла
Leonid 🦇
дисконнектишь нахрен и всё
Viacheslav
удобно конечно
Leonid 🦇
в сетевых делах клиент должен быть готов к дисконнекту
Viacheslav
надо только понять что пора дисконнектить vs round robin nginx + longpoll
Viacheslav
и семаника request/response строго проще, чем у вебсокетов (где судя по большинству примерно просто городя свою request/response семантику поверх стэйтфул соединения)
Alexander
если я правильно понимаю то Лонг пол это сервер не закрывает соединение и не говорит что сеанс завершён пока не захочет, так?
Viacheslav
обычно там лимит, например 20 секунд
Alexander
и соответственно клиент и сервер по нему могут досылать данные?
Viacheslav
Viacheslav
ну короче, непонятно просто стоит ли оно того
Leonid 🦇
В общем я в основном то против REST с параметрами в урлах. и CRUD через HTTP методы.
Leonid 🦇
/me в принципе доволен API у dropbox
Leonid 🦇
не json-rpc, ибо метод в урле. но так даже лучше
Слава
REST появился потому, что господа вебные-динамические на PHP, Python, Ruby и прочем мозге рака не осилили написать нормальные генераторы прокси по WSDL
sherzod
Подскажите, таплы это синтаксический сахар? Над чем?
Слава
А сейчас они изобретают Swagger
Leonid 🦇
Подскажите, таплы это синтаксический сахар? Над чем?
Скорее рекорды это синтаксический сахар над кортежами
sherzod
то есть кортежи (таплы?) это базовый элемент языка?
Kirill
Свагер же ещё в том году переименовали...
Leonid 🦇
то есть кортежи (таплы?) это базовый элемент языка?
Это анонимный тип product (как это по русски?)
Leonid 🦇
В общем у нас тут есть законники ЯП, пусть отдуваются
sherzod
Я просто не могу понять, вот не имея таплов я могу их построить используя ADT
A64m
синтаксический сахар для обычных АДТ с одним конструктором
A64m
да. Tuple2 a b, Tuple3 a b c и так далее
Слава
Свагер же ещё в том году переименовали...
Во что? Я вот прямо сейчас на нем пишу под AWS Gateway API и плююсь
sherzod
ааа пф. туплю конечно
A64m
т.е. названия конструкторов-то у них и после рассахаривания (,) (,,), сахаром является вот это вот применение к параметрам которое не (,) 1 True а (1,True)
sherzod
о это сразу ответило на мой следующий вопрос) хотел узнать "синтаксический элемент" ли языка возможность ставить нечто закрывающее (как ] или ) )
A64m
да, для простого труженика объявление таких конструкций недоступно
sherzod
ясно, спасибо
Кабачок
Я не должен писать такие вещи, но меня серьезно раздражает наличие Tuple3 & co в языке
Кабачок
Только Pair и Unit
Кабачок
(Сначала я написал в грубой форме)
Зигохистоморфный
Только Pair и Unit
и будешь делать Pair + Pair чтобы Tuple3 сделать?)
Кабачок
Да
A64m
Только Pair и Unit
представление в памяти не особо хорошее получается
Зигохистоморфный
Да
ну это понятно)
Зигохистоморфный
есть только 1, 0, +, *
Зигохистоморфный
и Fix
Кабачок
Зато потом можно добраться до любого элемента кортежа только с помощью fst и snd, а нормальное представление в памяти ВМ инженеры прикрутят.
A64m
даже безоверхедное может быть
A64m
не в смысле компайл-тайм, конечно
A64m
так для этого и надо чтоб они из вложенных пар состояли
Зигохистоморфный
A64m
дженерик представление-то как раз такое и есть из пар пар
A64m
Prelude GHC.Generics> from (1,True,"") M1 {unM1 = M1 {unM1 = M1 {unM1 = K1 {unK1 = 1}} :*: (M1 {unM1 = K1 {unK1 = True}} :*: M1 {unM1 = K1 {unK1 = ""}})}}
kalloc
Привет
kalloc
А чем вы UML рисуете ?
A64m
а мы рисуем?