Alexander
вообще в каких-то бананах и линзах про это было, там у нас с Ромой мнения по поводу библиотеки сошлись
Alexander
я не знаю, возможно, с каким-то мелким юзкейсом оно заработает, но при многопоточности отменах и возможных дисконнектах начинается радость
Alexander
это по опыту работы с amqp в двух независимых фирмах
Alexander
во второй с другой стороны был питон и там тоже не все было идеально
Alexander
ещё была какая-то веселуха с батчами и логикой подтверждения типа all or nothing
Alexander
но это уже приложение-проблемы были
Alexander
на вопрос, что прям хорошее и вообще что надо использовать, в общем случае я затрудняюсь ответить, знаю хорошие но непопулярные либы, так что с ними могут быть свои проблемы
Alexander
ну и вопрос, что нужно, т.к. rabbitmq и zeromq это разные категории
Alexander
наспамил и можно спать идти. но, если вам нужна хорошая консультация или прототип (или готовая система), то вы знаете куда обращаться ;)
Bogdan
Спасибо, Саша)
Dmitry
@dmalkr ты помнишь, что там у нас ещё веселого было?
Ну ты почти всё написал. Добавлю ещё, что неприятной неожиданностью было то, что отправлять сообщения обратно надо было в том же потоке, что и принято (или что-то подобное, не помню точно). Программа как-то странно глючила, пока я, наконец, не прочитал документацию на каждую функцию. Пришлось немного переделать архитектуру на менее удобную.
Alexander
ага вот async >>= waitCatch как раз чтобы в том же потоке был ответ
Alexander
но тогда у нас асинков не было, поэтому MVar-ами
Kirill
каменный век :)
Cheese
Alexander
ответ, который будет обработкой результата waitCatch будет в том же треде
Alexander
и.к. он bound и.к. вызывается из сей
Alexander
видимо выполнилось или вопрос остался?
Alexander
просто я не уверен что тут eta многие (хоть кто-нибудь) использует
Dmitry
Что такое "eta" ?
Maxim
А не тут его вообще кто-нибудь использует? :)
A64m
Dmitry
Интересно, а в этом бакенде GC чей? От jvm, или поверх него?
A64m
jvm
Leonid 🦇
думаю сделать глобальную _IS_DEV_ENV = unsafePerformIO $ chckIfDev <$> getEnv "ENVIRONMENT"
но испытываею угрызения. Забить на глупый внтуренний голос и залепить?
Евгений
Заведи ReaderT EnvType и работай в нём
Leonid 🦇
ломает такие вещи везде пробрасывать
Leonid 🦇
а чем плохо с переменной то?
Alexander
переменной настолько же плохо как и другие способы
Alexander
появляются пара веток и тестировать их и т.д.
Alexander
конкретно в этом случае и если используется только для отладочной печати и тестов - я проблем не вижу
Денис
unsafePerformIO нельзя же
Денис
Денис
а за unsafePerformIO тебя покарают боги
Alexander
меня не покарают
Alexander
я знаю как он работает когда и почему
Alexander
а тех, кого покарают - пусть network не пользуются
Alexander
и bytestring и vector
Alexander
там вообще inlineIO
Денис
чтобы их использовать не нужно знать как работает unsafePerformIO
Денис
и пока сам не вызваешь всё ок
Alexander
ReaderT, конечно, каноничнее, но в данном случае не даёт никаких плюсов, а только проблемы
Alexander
а вообще лучше так, почему нельзя использовать unsafePerformIO ?
Денис
название как бы намекает
Vladimir
можно, но там же внутренний голос, ему доводы нужны
Алексей
Ну тащемта окружение можно менять, так что совсем канонично-ортодоксально getEnv
Денис
На мой взгляд важный довод. Если название функции говорит, что она unsafe, то код без неё лучше.
Alexander
не катит
Alexander
вообще не логичный довод, ну разве если ты знакомишься с языком
Денис
названия это очень важно
Alexander
поскольку тогда одна часть программы может неявно менять поведение другой
Alexander
названия это очень важно
и.е. вы видите название и предлагаете на основе только этого, а не какого либо другого знания советы другим людям?
Alexander
не надо так
Алексей
unsafe = не пользуйся, не зная зачем и как работает
Vladimir
если переменная инициализируется только единожды, при первом обращении,то unsafe предочтительнее, в других
случаях надо думать
Алексей
Я б еще NOINLINE добавил к переменной
Alexander
да
Alexander
это обязательно
Vladimir
вот это отличное замечание
Alexander
ну там алиас
Alexander
вот эту штуку лучше точно использовать только если все понимаешь
Leonid 🦇
@astynax не знаю что ты меня пугал с формочками, я на Люсе с type Form e a = HtmlT (Reader FormEnv) a собрал тут на коленке. вроде хватает :)
Alexander
unsafe у unsafePerformIO т.к. через него можно сделать unsafeCoerce
Alexander
неожиданно и засегфолтитт программу
Alexander
с safe функциями этого не должно быть возможнр
Alexander
т.к. система типов должна быть sound
Alexander
и что же вы знаете?
Денис
что она плохая
Денис
и что почти всегда можно обойтись без неё
Alexander
(я очень не люблю когда люди говорят "это плохо, потому что это плохо", поэтому просто так не отстану)
Alexander
идеология в инженерных науках неприемлима
Alexander
чем она плохая?
Денис
вообще-то в программировании идеология это всё
Alexander
какие трейдофы мы получим если обойдёмся без неё
Alexander