A64m
вот ORF и аналогичными костыльками что-то особо не пользуются пока
Leonid 🦇
ORF бесполезный же, не?
A64m
бесполезный - понятие растяжимое
A64m
либа вроде generic-lens полезнее, но там понятные проблемы с компиляторными тормозами (предположительно, конечно, но как иначе-то)
Denis
fast-logger - годная штука?
Viacheslav
я использую logging-effect
Kirill
у fast-logger заморочки с многопоточным логгированием
Denis
да, там было про порядок записей в логе
Denis
а где нет таких заморочек?
Kirill
вроде умные люди katip советовали :)
Kirill
а в кардане вашем нет логгирования?
Denis
там свой велосипед, Серокельцы что-то своё сделали
Denis
мне нужно готовое решение
Anonymous
ReaderT (Text -> IO ()) ?
Kirill
на хакидж выложили хоть?
Kirill
ну и катип вроде готовый
Kirill
@qnikst тыж за katip ратовал?
Anonymous
У katip год назад лог был не сильно читаемый, скажем так.
Alexander
понапишут на закрытых TF кода, а потом кроме Verb ничего не подходит
я когда auth патчил перевел часть на открытые
Alexander
катип норм
Alexander
jq wtf
Anonymous
[timestamp][severity][thread][some][thing][else]:me ssage that you are supposed to read
Leonid 🦇
норм пацаны логают json
Anonymous
Literally. Его, наверное, можно застроить, но искаропки выглядит примерно так
Leonid 🦇
нормально выглядит
Alexander
kir при тебе же ещё у нас json лог был
Alexander
или ещё нет?
Anonymous
Ну или в базу лог писать. Если честно, я json-лога не помню. Наверное, всё-таки после меня уже)
Alexander
вообще стандартный несколько жутковат в основном своим ордерингом
Alexander
т.е. [timestamp][namespace][tags] message было бы норм
Alexander
а там было сначала то, что часто менятся, потом, что редко
Alexander
слоан правда потом требовал назад простые логи
Alexander
не json
Anonymous
Вообще, в идеале, логи надо класть в базу и читать отдельной программой
Alexander
одно другому не мешает
Alexander
у нас какая-то тулза все в стекдрайвер кладет
Alexander
дурацкая тулза, лучше бы мы сами процессили
Alexander
в общем если нужно структурированное логирование контексты теги и это все то katip норм
Alexander
Насколько эти расширения распространены?
Вообще, мы вот это взяли на вооружение: https://gist.github.com/mtesseract/1b69087b0aeeb6ddd7023ff05f7b7e68 Хорошо работает.
Alexander
> 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.
Влод
в общем у меня есть множество своих репов которые я добавляю в extra-deps с указанием тега также их все в кабале добавляю и один из них стек не видит. то есть реп скачал, а зависимость такую не находит In the dependencies for yyy-0.1.0.0: xxx needed, but the stack configuration has no specified version как бы мне диагностировать что пошло не так
Leonid 🦇
с Fields только бесит что их надо все объявить (что бесит), или для каждого рекорда генерть в отдельном сплайсе (что очень долго(
Влод
можно у стека спросить какие ему доступны зависимости?
Alexander
Итого у нас есть: AppName.Context.Domain.всякие_файлы_для_типов.hs AppName.Context.Domain.hs -- Содержит референсы на доменные типы AppName.Context.Lens.hs -- линзы. Импортирует AppName.Context.Domain.hs
Leonid 🦇
concat <$> sequence [ makeFields ''Foo, makeField ''Bar....] компилируется быстрее чем makeFields ''Foo makeFields ''Bar ...
Leonid 🦇
но для дублирующихся полей надо определять HasFoo класс заранее
Alexander
Гмм
Alexander
А оно того стоит вообще? У нас пачки makeFields, и все дела. (Точнее, пачки `makeFieldsNoPrefix`)
Alexander
😣 У нас другое в разы замедляет компиляцию. А именно, Type Families для рекордов.
Leonid 🦇
ну вы еще vinyl затащите к себе
Leonid 🦇
вообще да, TH очень тормозит если в одном модуле. если по разным то не так страшно
Denis
https://twitter.com/dshevchenko_biz/status/981925201880469505
Alexander
😞
Alexander
К счастью, удалось убедить любителя тайпмагии, что это лучше не пускать в бизнеслогику, а оставить для маппинга БД
Alexander
Там сущий ад. Opaleye+vinyl+кастомные надстройки
Alexander
o.O
Alexander
Ну и да, Сервант ещена закуску
Alexander
сервант норм
Alexander
винил тоже норм
Alexander
сервант норм
Это ты еще не пробовал Сервант + freer эффекты
Alexander
freer не нужен
Alexander
точнее я не знаю пока ни одного юзкейса где freer нужен, а правильного mtl не хватит
Alexander
У нас норм зашел, который от Takt
Alexander
у олега в статье было что-то, но я не уверен что я оценил
Alexander
Ну моки писать хорошо
Leonid 🦇
винил тоже норм
Смотря сколько и какого размера рекорды. У меня было такое что 8 модулей с операциями с БД компилировались минут 15
Leonid 🦇
день убил на бойлерплейт и переписал на рекорды обычные. теперь тормозят только makeFields, но всего 30 сек (4 минуты весь проект на 8 ядрах)
Denis
а вот кстати, коллеги, какие ghc-options нужны для ускорения компиляции?
Denis
вернее так: на какие опции нужно обратить внимание прежде всего?
Denis
понятно, что убрать оптимизацию
Denis
что ещё?
Alexander
-fno-code
Влод
Ну моки писать хорошо
сложностью управлять
Alexander
для моков free(r) не обязателен
Alexander
с handle/servce pattern или mtl все прекрасно делатеся
Denis
-fno-code
Да, знаю про такое. А ещё что?