Kakadu
А можно сделать норм интеграцию с IDE без ghc-mod?
A64m
т.е. сбилдить https://github.com/haskell/haskell-ide-engine он и ghc-mod соберет
Maxim
ну так может прям сразу hie и юзать?
Alexander
@chshersh а вы не ходите low level фунции с co-log-core
A64m
или прямо hie и использовать
Alexander
которые с буфферами работать могут и/или CString
Alexander
это все из base
Dmitrii
Тогда отлично! С удовольствием приму)
Alexander
ок, попробую
Alexander
наверное сначала правда с message что-нить сделаю
Alexander
ты видет Seq в di?
Alexander
или как в катипе сделано
Alexander
в общем смысл в том, что к каждому сообщению прицепляется контекст, состоящий из двух частей
Alexander
1. namespace - просто строки, типа app.somecomponent.subcomponent.action
Alexander
2. metadata - грубо говоря куча значений строка:значение
Alexander
и то и другое формирует стек
Alexander
т.е. можно делать что-то (в monadic подходе):
addNamespace "subcomponent" $ do
addContext "foo" "bar" $ do
addContext "bar" "baz" $ do
debug "message"
Alexander
тогда в логе будет {namespace="subcomponent", data={"foo":"bar", "bar":"baz"}, message="message"}
Alexander
это очень круто, т.к. можно по разным плоскостям логи искать
Alexander
например если у тебя теги это user и projet
Alexander
то ты можешь найти все логи по проекту или все логи по юзеру, в этих всяких кибанах
Alexander
собственно это то, что мне от логгера сильно надо
Alexander
concurrency и это
Alexander
в катипе в дополнение к этому ещё куча тишнего типа processId, threadId ещё какая-то радость, которая вполне упихивается в контекст
Alexander
unrelated: о вышел пост про mtl done right
Alexander
related: в катипе в общем это сделано жирным типом данных который сериализуется врятли эффективно
в di сделано логично стеком, но не хватает интерфейса
Алексей
В профиле аллокиций катип был вполне себе виден
Alexander
Alexander
tweag.io блог
Alexander
@PineappleZombie я не представляю как дефолтный работает
Alexander
у нас то в alphasheets был переписан так что через encoding все делает
Alexander
и куча ненужных фильтраций убрано
Alexander
но все равно этого недостаточно
Алексей
У меня всё сделано крайне тупо
Алексей
и в лоб
Alexander
в другом проекте где части магии нету, у меня не возникало желания смотреть профиль
Alexander
6к+ rps который там выжимался и gc ~1мс меня устраивал
Alexander
а если исправлять то reencoding json-овый
elton
здарова мужики, а можно как-то на сабже кастомные http-заголовки отправлять без дожидания тела отета?
Alexander
Alexander
elton
ну тип как requests.get в питоне
Alexander
можно ли как-то получить разпарсить и получить заголовок сообщения, до того, как все тело получено?
Alexander
https://hackage.haskell.org/package/http-client-0.5.13.1/docs/Network-HTTP-Client.html#v:responseOpen
elton
Alexander
https://hackage.haskell.org/package/http-client-0.5.13.1/docs/Network-HTTP-Client.html#v:responseHeaders
Alexander
requests.get в питоне делает не это
elton
Alexander
это отправить сообщение со своими headers (немного не то, что вы спросили)
elton
Alexander
HTTP.addRequestHeaders из той же либы
Alexander
в каком виде нужно ответ получить, чтобы я полный пример написал, просто байтоданные норм, или сразу для json?
A64m
> We open a new chapter in software architectures for effect handling
ничего себе заявка
elton
Андрей
A64m
на комитет совсем не похоже
Alexander
import Network.HTTP.Simple
httpNoBody $ setRequestHeaders [("Authorization", "Bearer sdfjslkdfjls")] "http://example.com"
Alexander
да наш блог наверняка
Alexander
я там на спивака наругался, что там весьма много спорных заявок
Alexander
@tripstervomit это http-conduit пакет, можно http-client он более низкоуровневый
Kirill
а wreq уже отмер или как?
Kirill
вспоминается ещё req от твоего "сослуживца" @qnikst
A64m
вроде нет
A64m
ОСалливан его кому-то отдал, так что там видно что работа какая-то идет
Alexander
wreq с линзами
Alexander
как первую либу я даже не знаю можно ли его предлагать
Alexander
кто тут auth0 спрашивал?
Alexander
https://github.com/alasconnect/auth0
A64m
не ожидал, что хаскелист станет такие вещи делать, конечно
https://haskell-code-explorer.mfix.io/package/lens-4.16.1/show/src/Control/Lens/Indexed.hs#L425
Cheese
A64m
речь не про строку, а про то, что ее показывает
Artem
Всем привет.
Есть ли в Haskell способ сделать деструктуризацию значения из конструктора полиморфно?
Хотелось бы вместо этого:
chatId' = (\(ChatId id) -> show id) . chatId . messageChat <$> mСделать что-то вроде этого:
chatId' = show . UNPACK_CONSTRUCTOR_FN . chatId . messageChat <$> m
Alexander
generic-lens
Cheese
Alexander
если newtype там, то использовать coerce
Alexander
и не мучаться
Alexander
если много конструкторов, то generic-lens