
Denis
05.04.2018
14:31:31
а где нет таких заморочек?

Kirill
05.04.2018
14:32:00
вроде умные люди katip советовали :)
а в кардане вашем нет логгирования?

Denis
05.04.2018
14:32:35
там свой велосипед, Серокельцы что-то своё сделали

Google

Denis
05.04.2018
14:32:40
мне нужно готовое решение

kir
05.04.2018
14:33:19
ReaderT (Text -> IO ()) ?

Kirill
05.04.2018
14:33:20
на хакидж выложили хоть?
ну и катип вроде готовый
@qnikst тыж за katip ратовал?

kir
05.04.2018
14:34:27
У katip год назад лог был не сильно читаемый, скажем так.

Alexander
05.04.2018
14:34:34
катип норм
jq wtf

Kirill
05.04.2018
14:35:25

kir
05.04.2018
14:36:19
[timestamp][severity][thread][some][thing][else]:me
ssage that you are supposed to read

Leonid
05.04.2018
14:36:32
норм пацаны логают json

kir
05.04.2018
14:36:58
Literally. Его, наверное, можно застроить, но искаропки выглядит примерно так

Google

Leonid
05.04.2018
14:37:09
нормально выглядит

Alexander
05.04.2018
14:37:11
kir при тебе же ещё у нас json лог был
или ещё нет?

kir
05.04.2018
14:37:39
Ну или в базу лог писать.
Если честно, я json-лога не помню. Наверное, всё-таки после меня уже)

Alexander
05.04.2018
14:37:47
вообще стандартный несколько жутковат в основном своим ордерингом
т.е. [timestamp][namespace][tags] message было бы норм
а там было сначала то, что часто менятся, потом, что редко
слоан правда потом требовал назад простые логи
не json

kir
05.04.2018
14:40:29
Вообще, в идеале, логи надо класть в базу и читать отдельной программой

Alexander
05.04.2018
14:42:32
одно другому не мешает
у нас какая-то тулза все в стекдрайвер кладет
дурацкая тулза, лучше бы мы сами процессили
в общем если нужно структурированное логирование контексты теги и это все то katip норм

Александр
05.04.2018
15:05:57
> In order to prevent these issues, I suggest to put all lens definitions in one module named e.g. Lenses. This module imports all desired types and uses makeFieldsNoPrefix for generting the lens type classes and instances.

? animufag ?
05.04.2018
15:10:15
в общем у меня есть множество своих репов которые я добавляю в extra-deps с указанием тега
также их все в кабале добавляю и один из них стек не видит. то есть реп скачал, а зависимость такую не находит
In the dependencies for yyy-0.1.0.0:
xxx needed, but the stack configuration has no specified version
как бы мне диагностировать что пошло не так

Leonid
05.04.2018
15:10:16
с Fields только бесит что их надо все объявить (что бесит), или для каждого рекорда генерть в отдельном сплайсе (что очень долго(

? animufag ?
05.04.2018
15:10:41
можно у стека спросить какие ему доступны зависимости?

Google

Александр
05.04.2018
15:11:02
Итого у нас есть:
AppName.Context.Domain.всякие_файлы_для_типов.hs
AppName.Context.Domain.hs -- Содержит референсы на доменные типы
AppName.Context.Lens.hs -- линзы. Импортирует AppName.Context.Domain.hs

Leonid
05.04.2018
15:12:07
concat <$> sequence [ makeFields ''Foo, makeField ''Bar....] компилируется быстрее чем
makeFields ''Foo
makeFields ''Bar
...
но для дублирующихся полей надо определять HasFoo класс заранее

Александр
05.04.2018
15:13:24
Гмм
А оно того стоит вообще? У нас пачки makeFields, и все дела. (Точнее, пачки `makeFieldsNoPrefix`)
? У нас другое в разы замедляет компиляцию. А именно, Type Families для рекордов.

Leonid
05.04.2018
15:57:19
ну вы еще vinyl затащите к себе
вообще да, TH очень тормозит если в одном модуле. если по разным то не так страшно

Denis
05.04.2018
16:04:08
https://twitter.com/dshevchenko_biz/status/981925201880469505

Александр
05.04.2018
16:19:58
?
К счастью, удалось убедить любителя тайпмагии, что это лучше не пускать в бизнеслогику, а оставить для маппинга БД
Там сущий ад. Opaleye+vinyl+кастомные надстройки

Alexander
05.04.2018
16:23:23
o.O

Александр
05.04.2018
16:26:04
Ну и да, Сервант ещена закуску

Alexander
05.04.2018
16:26:21
сервант норм
винил тоже норм

Александр
05.04.2018
16:28:00

Alexander
05.04.2018
16:28:15
freer не нужен

Google

Alexander
05.04.2018
16:28:43
точнее я не знаю пока ни одного юзкейса где freer нужен, а правильного mtl не хватит

Александр
05.04.2018
16:28:46
У нас норм зашел, который от Takt

Alexander
05.04.2018
16:29:03
у олега в статье было что-то, но я не уверен что я оценил

Александр
05.04.2018
16:30:00
Ну моки писать хорошо

Leonid
05.04.2018
16:32:08
винил тоже норм
Смотря сколько и какого размера рекорды. У меня было такое что 8 модулей с операциями с БД компилировались минут 15
день убил на бойлерплейт и переписал на рекорды обычные. теперь тормозят только makeFields, но всего 30 сек (4 минуты весь проект на 8 ядрах)

Denis
05.04.2018
17:02:31
а вот кстати, коллеги, какие ghc-options нужны для ускорения компиляции?
вернее так: на какие опции нужно обратить внимание прежде всего?
понятно, что убрать оптимизацию
что ещё?

Alexander
05.04.2018
17:03:42
-fno-code

? animufag ?
05.04.2018
17:04:02

Alexander
05.04.2018
17:04:21
для моков free(r) не обязателен
с handle/servce pattern или mtl все прекрасно делатеся

Denis
05.04.2018
17:05:36

Александр
05.04.2018
17:05:59
Да, делается. Но с freer моки - это паттерн-матчинг.
Правда, если много бизнес-логики вовлечено, то там все начинает плохо выглядеть

Alexander
05.04.2018
17:06:02
там для специализаций отлючения было что-то
я кстати ищу кейсы где freer будет лучше, пока знаю 0
freer+effects

Google

Александр
05.04.2018
17:07:17
А я, в свою очередь, не вижу предмета спора. Дело вкуса. По крайней мере до тех пор, пока сообщество прочно не поймет плюсы и минусы

Alexander
05.04.2018
17:09:01
какой спор, я ж вроде вопрос задал и интересуюсь

Александр
05.04.2018
17:09:18
Не вижу в сообщении знака вопроса ;)
Я человек простой, - вижу вопрос, отвечаю. Не вижу - не отвечаю

Alexander
05.04.2018
17:10:10
...я кстати ищу кейсы где freer будет лучше, пока знаю 0 <- не спор а призвание делиться такими кейсами
free(r) <-> final tagless конвертируются в обе стороны

Александр
05.04.2018
17:11:09
Я все же не смогу ответить удовлетворительно, потому что это ж надо несколько кейсов иметь, сравнивать их, понимать. У меня пока только 1.

Alexander
05.04.2018
17:11:17
т.е. из одного другое можно легко сделать

Александр
05.04.2018
17:11:23
(На самом деле, больше, но то уже из другой оперы)

Alexander
05.04.2018
17:12:34
тогда возникает вопрос, может один из вариантов лучше

Александр
05.04.2018
17:12:35
Просто для информации: наши freer-языки - это такие:
OrderL
RestaurantL
CompanyL
...
Каждый из них что-то умеет по своему контексту. А есть контексты более верхнего уровня, они уже пользуют эти вот языки

kana
05.04.2018
17:12:55
у олега точно был пейпер, показывающий проблемы инициальных интерпретаторов (фри[р]) и как терминальные интерпретаторы (финал тэглесс) их решают

Alexander
05.04.2018
17:13:00
MonadOrder, MonadRestaurant, MonadCompany

Александр
05.04.2018
17:13:24

Alexander
05.04.2018
17:13:26
@kana_sama у него было и наоброт
exteff.pdf
когда он extensible-effects вводил, показывал как в mtl у нас чепуха получается, а с эффектами и free все хорошо

kana
05.04.2018
17:14:10
ну эксэфф это пара страниц, а там было штук 50 наверное

Alexander
05.04.2018
17:14:24
12
одна из проблем freer что они тормозят

kana
05.04.2018
17:14:51
а ты вычел код, референсы, опен юнионы и прочее подводящее к теме?
там про плюсы/минусы фри-эффектов пара страниц, но цифра таки с головы

Александр
05.04.2018
17:15:08
Если искать проблемы, то их для любого подхода, наверное можно найти пачку на 50 страниц. Но это ж все лирика.