SimpleX
Строгие поля
blkmrkt
а конкретный тип это не строго чтоль?
blkmrkt
хотя с памятью все ок по-моему. Слева я вырубил старую версию, справа врубил новую с Data.Text
Vladimir
Конкретный тип - это лениво)
Vladimir
Везде, где структуры ленивые
blkmrkt
а, он не выделяет память если этого не нужно делать?
Vladimir
Да как раз там проблема с тем, что он выделЯет памЯть под thunk'и
Vladimir
И может где-то перерасход получиться
Vladimir
Как я понял
blkmrkt
интересно, мой процесс хаскеля делает реквесты через прокси в 500 потоков, однако в один если сделать netstat -p | grep *ip* | wc -l, он показывает 5тыс-6тыс открытых сокетов
blkmrkt
кто-нибудь деплоит хаскель в докере? если да, то стоит ли весь тулчейн и сборку пихать внутрь докера, либо лучше просто копировать бинарники?
Donat
> весь тулчейн и сборку пихать внутрь докера это будет очень долго и больно)
Судзумия
Особенно с учётом того, что тулчейн гигабайт весит
blkmrkt
не стоит ну точнее как в один контейнер стоит, но в нем только собирать, а деплоить другой
вот я тоже так хочу, но не могу сообразить как достать артефакты из CircleCI и положить их в новый имаж
Alexander
у нас был
Alexander
нужно отдельно контейнеры для сборки и деплоя
Alexander
второй или docker tar (или как он там) или отдельн получать
Alexander
@blkmrkt ну ты можешь сделать tar и потом объявить это новым образом
Alexander
впрочем у нас дкер только для тестов был
Misha
а скажите, программисты, а чем вообще плох orphan instance? Вот есть у меня какой-то тип T и определять для него FromRow/ToRow из postgresql-simple было бы логично в модуле, в котором есть зависимости от postgresql-simple а не в том, где T изначально определен. Почему warning? Какие потенциальные проблемы из этого?
Anatolii
ну ты двух местах можешь определить для своего типа инстансы
Anatolii
потом заимпортить это в третье
Misha
ну в этом третьем он мне скажет что конфликт
Misha
то есть просто "как-то неаккуратненько" или там реально может что-то рухнуть во время линкинга или что-то такое?
Vladimir
На SO какой-то дикий вопрос есть на эту тему
Vladimir
Ответ, то есть
Anatolii
я так никогда не делал
Anatolii
я когда варнинги вижу
Anatolii
понимаю что что-то не то делаю
Anatolii
но я думаю что он ничего не скажет
Anatolii
и результат будет не предсказуем
Vladimir
Типа, непонятно, какие инстансы использовать и может быть такое, что ты случайно используешь не то инстанс, который хотел и все может бабахнуть из-за косяков в нем
Misha
пошел читать
Misha
конечно понятно почему это плохо, но без них код становится ужасным
Misha
или просто некомпилируемым
Misha
все зависимости в одном месте, в итоге модуль, который будет компилироваться и ghc и ghcjs будет зависеть вообще от всего, а должен наоборот, не зависеть ни от чего, по возможности
Misha
а
Misha
а вот это интересно
Misha
просто возьмет первый попавшийся?
Anatolii
я для каждой такой сущности создаю модуль
Anatolii
и там описываю сущности
Anatolii
мне наоборот нравится что все в одном месте
Anatolii
я потом через 1 модуль все эти сущности реимпорт делаю
Anatolii
правда насчет GHCJS - действительно не приятно будет
Anatolii
но я таким не занимался сезе
Misha
ну это не совсем вопрос вкуса, это скорее вопрос того, как работать с зависимостями
Anatolii
ну у теябю все равно все приложение зависит от этого всего
Anatolii
а ты игрался с GHCJS?
Misha
только начал
Anatolii
а там есть что-то типа лайврелоада страницы?
Misha
и только на днях заставил это добро работать с reflex
Misha
хороший вопрос
Anatolii
ну во время разработки что-то поменял чуток
Misha
вроде как есть, но я до этого не дошел пока
Anatolii
и чтобы быстро результат увидеть
Misha
да, я понял, но не знаю
Anatolii
интересно
Misha
подозреваю, что все плохо
Misha
или это может сделать Luite но для остальных это сильно сложно
Misha
самый облом для меня оказался, что официальный servant-client не поддерживает ghcjs
Misha
чего я собственно хотел
Misha
то есть чтобы клиент генерировал ClientM, работающий через xmlHttpRequest
Misha
но этого пока нет, есть целых две сторонние имплементации для старых версий серванта, но они не компилируются с новым
Misha
так что там все очень сырое пока
Misha
и уж тем более live reload
Misha
с другой стороны, куча народу это пилит сейчас, так что скоро все будет круто, думаю
Alexander
просто возьмет первый попавшийся?
да причем может одновременно 2 разных, если не повезёт с инлайнами
Misha
красиво
Misha
то есть я в общем верю, что это сделано for a reason, но это брутальщина какая-то конечно
Misha
А может кто-нибудь посмотреть вот на это http://lpaste.net/340541 и сказать, почему это плохо? Идея в том, что мы берем значение либо из кэша, либо делаем так, чтобы только первый запросивший клиент инициировал long IO action, а остальные блокировались на TMVar и ждали, пока IO action закончится, и потом все одновременно получали бы это значение. Я тут сильно подозреваю, что изобрел велосипед с додекаэдральными колесами. Есть ли какие-то хорошие библиотеки для этого?
SimpleX
А зачем так делать?
SimpleX
Ты хочешь запоминать результат долгого вычисления, это называется memoization
Konstantin
ну я так понял, что остальные треды должны ждать вычисления, а не повторять его
Konstantin
до мемоизации
SimpleX
https://hackage.haskell.org/package/io-memoize-1.1.1.0/docs/System-IO-Memoize.html
SimpleX
Внутрь не заглядывал
SimpleX
eagerlyOnce как раз то, что нужно
Misha
во! спасибо, посмотрю