
Андрей
19.09.2018
08:24:47
даже не выкладывал его, в проекте прямо сидит.ино не на сабже, хотя там алгоритм простой.

Dmitry
19.09.2018
08:24:56
btw, а есть ли хаскельное решение для генерации шелл-скриптов - типа mina ?
ну хаскельное, что бы руби не таскать
алсо - shake годная вещь, или нет?

Google


A64m
19.09.2018
08:49:37
фактически решено добавлять только всякие фичи для облегчения деланья рекордов в библиотеке
надо будет, кстати, восстановить как к такому пришли
какое-то время гендри делал именно рекорды, не безымянные, просто полиморфизм для существующих рекордов, сначала по мотивам допотопного пропозала спж, делал чуть ли не для каждого релиза гхц начиная с 7.8 но никуда они не попали (тут тоже надо выяснить почему именно)
и однажды волков запостил на реддите (это чуть ли не самое популярное на хаскельреддите) пост про "решение проблемы рекордов" в комментариях там началос обсуждание в ходе которого гендри вдруг решил, что надо делать не рекорды за раз, а некоторый набор условно-общеполезных фич
сначала это набор должен был весь попасть в один релиз 8.0
но волшебный класс для перегрузки полей не успел
до следующей версии уже понаписали либ с лейблами (одна из набора фич, которая в 8.0 попала), так что задуманный гендри инстанс испортил бы все эти либы (соотвественно при обсуждении пропозала решили этот инстанс не добавлять).
бабах!
из n пирожков собрать задуманную гендри собачку больше нельзя.
(может и к лучшему - но это уже другой вопрос)


Andrei
19.09.2018
09:01:21

Александр
19.09.2018
09:02:21

Alexander
19.09.2018
09:02:40
вот кстати с парой сотен роутов у серванта могут быть некоторые проблемы
из-за времени компиляции
но там можно и нужно типы дробить на части

A64m
19.09.2018
09:03:05

Александр
19.09.2018
09:03:22
Я не занимался оценкой хаскельных серверов

A64m
19.09.2018
09:04:07

Anton
19.09.2018
09:04:32
Я однажды переигрался и 250 эндпойнтов итого не слинковалось, т.к. GHC выжрал 16гб RAM
Потом просто разбил на подсервисы

Google

Leonid
19.09.2018
09:05:25
вот так ghc улучшает архитектуру!

Alexander
19.09.2018
09:05:35
но serve (Proxy @ все подсервисы были)

Andrei
19.09.2018
09:05:48
выглядит дороговато

Alexander
19.09.2018
09:06:24
всё работает поверх варпа из этих
смотришь что тебе вообще нужно делать

Andrei
19.09.2018
09:06:37

A64m
19.09.2018
09:07:15
фича, которая несколько ослабила бы проблему влезания в 16гб (но это не точно) может будет в 8.8, она бы может и в 8.6 успела, но похоже что тех что гхц пишет проблема особо не волнует

Александр
19.09.2018
09:07:20

Alexander
19.09.2018
09:07:21
т.к. сервант это про 1. encoding/decoding 2. авторизацию 3. генерацию документации/swagger/ 4. генерацию тестов 5. решения кучи вопросов на соотвествие RFC

Andrei
19.09.2018
09:07:24

Anton
19.09.2018
09:07:31
Но я усугубил себе проблему, т.к. на type level конкатил Symbol для тэгов доступа

Alexander
19.09.2018
09:08:02
если тебе нужно это, то сервант это отличное решение
т.к. скорее всего если ты будешь писать на чем-то более низкоуровневом ты просто забьешь на соотвествие стандартам
т.е. разные content-type, 406 при невозможности отдать другой, 407 если данные кривые и т.п.
авторизация мне не до конца там понравилась, но хватило для всех проектов
у @VividDesires было что-то на эту тему хорошее
а ещё клиент у серванта автоматом
что полезно для интеграционных тестов

Anton
19.09.2018
09:11:51
У меня там скорее plug-and-play либа для авторизации

Google

Alexander
19.09.2018
09:11:55
т.е. сервант убирает кучу бойлерплейта и облегчает интеграцию

Anton
19.09.2018
09:11:56
servant-auth-token

Alexander
19.09.2018
09:11:57
а да
у меня то станрдатный servant-auth с jwt

Anton
19.09.2018
09:12:39
Оно скорее было сделано, чтобы между своими проектами переиспользовать стандартную способ авторизации/групп доступа/восстановлений паролей и т.п.

Alexander
19.09.2018
09:12:46
авторизация или через OAuth или свою систему
но групп доступа и т.п. нету, обычно просто пачку пермишенов в jwt кладу

Iva
19.09.2018
09:14:12
кто-то с этими рфс запаривается?
т.к. сервант это про 1. encoding/decoding 2. авторизацию 3. генерацию документации/swagger/ 4. генерацию тестов 5. решения кучи вопросов на соотвествие RFC

Alexander
19.09.2018
09:14:26
мне кажется что почти никто

Anton
19.09.2018
09:14:28

Alexander
19.09.2018
09:14:46
но если не запариваться, то чужая либа может не работать правильно

Anton
19.09.2018
09:15:01
Было такое, что Android либа для json не могла парсить, например, не Object ответ от серваков

Alexander
19.09.2018
09:15:07
т.е. если тебе это бесплатно дается, то это просто лучше
вообще чем больше можно генерировать автоматом тем лучше
автомат дебажить может сложнее, зато он не ошибается
и все naming conventions и все такое
кстати наверное в следующем проекте я сделаю свой JSON+ в контент тайп, который бы enforc-ил конвенции по именованию и т.п.
мне кстати понравилось со swagger и quickcheck что он проверяет все эти encode.decode для всех типов в API
ещё мне нравится возможность сделать Raw

Google

Alexander
19.09.2018
09:17:38
правда там в клиенте какой-то дурной баг был
не знаю пофиксили или нет, он как-то неожиданно работал
@VividDesires так про сервисы, ты разбил по разным executables?

Anton
19.09.2018
09:20:32
по разным warp apps

Alexander
19.09.2018
09:20:32
или просто подтипам

Anton
19.09.2018
09:20:37
подтипы не сработали
они все всё равно линкуются в одном месте потом

Alexander
19.09.2018
09:20:56
а как роутил? через middleware?

Admin
ERROR: S client not available

Anton
19.09.2018
09:21:03
да

Alexander
19.09.2018
09:21:06
или на каждое свой warp.run был?

Anton
19.09.2018
09:21:24
я пробовал оба варианта, они неотличимо работают

Alexander
19.09.2018
09:21:41
ну warp run отожрет же порт?
т.е. свой инстанс сервера, а с middleware один торчит

Anton
19.09.2018
09:22:03
отожрёт, у меня там всё равно поверх reverse proxy был
тоже на warp написанный

Alexander
19.09.2018
09:22:24
угу

Anton
19.09.2018
09:22:28
т.к. nginx с C# работал ужасно

Alexander
19.09.2018
09:22:47
о у меня тут история классная была (надеюсь кончилась)
когда nginx при применении rewrite интерпретировал urlencoded урлу

Google

Alexander
19.09.2018
09:23:29
и посылал на бекенд уже раскодированный вариант, более того если там было // то он делал /

Anton
19.09.2018
09:23:49
боль

Alexander
19.09.2018
09:24:02
причем это было когда проект выкатили

Iva
19.09.2018
09:25:28
мне вот интересно, зачем вот это проксю в виде нгинкса делают?
не многовато ли оверхеда?

Anton
19.09.2018
09:25:54
и все хотят 80ый порт
а ещё легче https настроить и отдавать статику
у меня для acme была целая эпопея, чтобы warp научить работать с ними
Там тебе сначала дают самоподписанные сертификаты, ты делаешь запрос, если удачно зарегался, то у тебя теперь новые сертификаты и надо саморебутаться
А скоримть самоподписанный сертификат в http-client-tls ещё та задачка

Alexander
19.09.2018
09:27:56
особенно если у тебя за nginx несколько приложений
т.е. nginx обычно быстрее, чем http-reverse-proxy особенно если ssl

Anton
19.09.2018
09:29:05
У меня nginx коцал https для chrome, браузер отдавал магические NETWORK_ERR
это было последней каплей, чтобы от него избавиться

Alexander
19.09.2018
09:32:26
ещё в alphasheets я хочу убрать http-reverse proxy из приложения и перекинуть на nginx
т.к. он стабильная часть архитектуры и не убивается при обновлениях
в итоге всякие web-sockets смогут пережить обновление
а сейчас соединение рвется, юзер конечно не замечает, но все равно

Anton
19.09.2018
09:34:07
Вебсокеты и так постоянно рвутся