Евгений
Alexander
не знаю
Anonymous
У меня тоже
Alexander
мне зачастую не нравятся излишне полиморфные стеки
Aragaer
я для сборки проекта переключаюсь в консоль и там запускаю.
Alexander
но хорошего обоснования я дать не могу
Alexander
при том, что всегда можно подняться куда надо
Aragaer
то есть я на емакс перешел в том числе и ради консоли, но потом понял, что проще нажать вин-таб, вверх и энтер
Alexander
как через monad-control так и lift
Alexander
при этом без косячных реализаций как в lifted-async например
Aragaer
хотя и пытался в емаксе делать свои же собственные биндинги
Alexander
с другой стороны я не считаю эти аргументы хорошими
Aragaer
настроил, но не привык
доня.
ну то есть я нажимаю F5,F6,F7,F8 для сборки, запуска, тестирования и линта например
Евгений
но хорошего обоснования я дать не могу
А ты щас на чём-то кроме хаскеля пишешь? Вообще единственная проблема в том, что можно случайно не поместиться в System F2 и тогда нужно будет руками типы разрешать
доня.
конкретные команды определены в локальном vimrc, который запускается из глобального и игнорируется гитом
Евгений
Тут про хаскель, а вы редакторосрач продолжаете
Евгений
Мне кажется, что у тебя какой-то страх перед абстрактным полиморфизмом, по-крайней мере я других источников не вижу для твоего скепсиса
Евгений
Либо приведи хармфул код
Влод
как вы относитесь к функциям полиморфным по монадке, т.е. MonadIO m => ... -> m a, а не ... -> IO a
А раз уж начал вбрасывать, можешь примерно сориентировать зачем это?
Alexander
ну например для работы с базой которое тонкое FFI над IO делать MonadIO везде
Vasiliy
А в идрисе чокак с system f?
я читал, что в идрисе нечто совершенно отличное от system f, но я в теории вообще никак, так что никак прокомментировать не могу
Vasiliy
при этом без косячных реализаций как в lifted-async например
а что именно косячного в lifted-async? какие-то конкретные косяки, какая-то фундаментальная проблема?
Alexander
оно не для всех монад справедливо
Alexander
у которых есть MonadBaseControl IO
Alexander
раньше еще всякие баги были но поправили их
Vasiliy
это типа State, когда неизвестно, какой в итоге стейт получится?
Alexander
когда есть зависимость от ThreadId или мутабельный стейт
Alexander
например в ResourceT есть зависимость, что все треды форкающиеся должны инкрементить счетчик
Alexander
и декрементить по завершению
Alexander
этого в lifte-async не будет
Alexander
или в Process тоже получится что 1 ProcessID будет у двух тредов
Alexander
со всеми радостями
Vasiliy
гм, ну это уже какие-то изощрённые ситуации, походу
Vasiliy
во всяком случае, у меня не было необходимости иметь дело с ThreadId
Vasiliy
и, надеюсь, не придётся, хотя угроза нависла
Vasiliy
сопсна, вопрос такой - есть задача сделать простенький супервизор процессов
Vasiliy
сходу нагуглился Angel, но он сделан в виде приложения, а мне бы что-то библиотечное, чтоб в свой сервис встроить https://github.com/MichaelXavier/Angel
Vasiliy
вопрос такой - насколько много подводных камней, если делать всё самому?
Vasiliy
возможно, проще будет взять этого ангела и вырефачить что-то в библиотеку?
Зигохистоморфный
квык чек ин жс :D https://github.com/jsverify/jsverify
Alexander
Vasiliy там неявные зависимости могут быть
Alexander
why not use systemd?
Alexander
или s6?
Vasiliy
systemd олрэди ин юз, но с ним возникают проблемы
Vasiliy
нужно иметь возможность из приложения запускать/останавливать сервисы, переходить между таргетами итд
Vasiliy
вариант1, который сейчас в работе - дёрганье systemctl с аргументами, вариант2 - dbus api, с которым тоже куча приколов
Alexander
мы sytemctl дергали
Alexander
но нам не нужны были нотификации о смерти и т.п.
Alexander
дешево и сердито, если прав хватает
Vasiliy
ну вот конкретная задача, после которой я задумался о собственном супервизоре - нужно через http-интерфейс залить бэкап в базу
Alexander
+ в systemd уже принесли временные и параметрические юниты
Vasiliy
ну что там - считали бэкап, положили все сервисы, которые сейчас с базой работают, залили бэкап, подняли всё обратно
Vasiliy
я это делал дня три
Vasiliy
вот, собственно, и появились мысли, что зоопарк и субд и демонов проще мониторить руками, чем systemd
Евгений
Управлять докерконтейнерами в сотню раз проще чем процессамм
Vasiliy
но докер добавит кучу своего геморроя...
Vasiliy
поясню ситуацию - есть основной, так сказать, продукт, с которым работают простые люди, есть демон, который помогает этим людям выполнять административные функции без залезания в консоль
Vasiliy
этот демон занимается обновлениями, бэкапами, перезапуском этого продукта итд
Vasiliy
продукт - типа LAMP из пачки демонов
Vasiliy
собственно, про демона и вопрос - сейчас управление процессами сводится к тыканию systemctl, но с ним вылезают разные приколы, возникла мысль сделать своего супервизора
Евгений
но докер добавит кучу своего геморроя...
Какого? Требования по ресурсам только чуть возрастут
Max
Контейнеризация - это тема.
Max
Но...
Max
Есть и минусы.
Alexander
ну если четко понимать что нужно и как это делается, то можно запилить лучше для себя
Alexander
хотя бы на основе чего-либо мелкого
Dmitry
всё таки, как лучше делать многопоточное приложение, которое что-то там читает, считает и пишет на диск? мне кажется, что считать и писать в одном потоке нецелесообразно - судя по простоям, которые видно в графике загрузки, причем простои довольно одинаковые, периодичные и синхронные. Не лучше ли писать в одном потоке, считать в куче других - и между ними сделать какой-нибудь channel / queue ?
Dmitry
т.е тупо генерить ленивый список, нарезать на чанки и потом писать - кажется не слишком оптимальным решением
Dmitry
вопрос - стоит ли связываться со всякими синхронизированными очередями/каналами, не вносят ли они в нашем уютненьком слишком большой оверхед?
Евгений
Лучше писать в n потоках, где n количество ядер