Roman
сейчас у нас почему-то все асинки мгновенно сразу по месту разворачиваются через RunSynchronously. Я не понял идею, но это намеренно, чтобы выпилить асинк из сигнатуры
Roman
типа разработчику так должно быть проще. Но то ли я не разработчик, то ли подход говно, но мне от этого тяжелее
Roman
про перформанс можете ничего не говорить, нас это не аффектит. У приложухи где-то 5 пользователей
Roman
АХАХАХАХАХАХАХА
у вас замарин, а мы себе сами проблемы создаем)
Vasily
у вас замарин, а мы себе сами проблемы создаем)
Ну, в создании проблем с нами тоже можно потягаться :)
Doge
Ну да, согласен. Хотя вместо тайп классов меня устроит видимость расширений типов при сртп. Контроль эффектов - ну хз, пока особо не сталкивался. Higher Kinded Data - не знаю, что за зверь, подозреваю, что метаданные
Higher Kinded Data, это когда у тебя используется HKT непосредственно в данных. Позволяет иногда любопытные трюки делать, типо данные, где часть полей обобщены от их потенциальной необязательности. data Configuration f = Configuration { requiredFieldZero :: String ,fieldOne :: f String ,fieldTwo :: f Int } -- получаем данные извне с незаполненными полями -- хотим замерджить их с дефолтными настройками -- и получить данные без незаполненных полей restoreConfiguration :: Configuration Maybe -> Configuration Identity -> Configuration Identity
Roman
ну можно было в таски конвертнуть хотя бы
я так понял, это ради того, чтоб ты мог вызвать функцию и получить результат, не задумываясь о том, есть ли там IO и если есть, то когда всю эту штуку запускать. Но я понимаю, что идея пиздец
Doge
Можно было бы синхронными и пользоваться
Roman
так много вопросов так мало ответов
Vasily
С другой стороны, я пишу проект с нуля, и у меня все равно говнокод
Vasily
Но я с ним борюсь
Romɑn
а чо?
Смешно же
Vasily
уменьшается со временем
НЕТ, ПРОСТО ПОЯВЛЯЕТСЯ БОЛЬШЕ ПРОБЕЛОВ
Крылатый
Пробелы — благо.
Danil
Как юнит тесты воздействуют на систему
Roman
сегодня я узнал, что apiKey для одного из сторонних сервисов у нас хранится в переменных среды
Roman
господи блять боже ну почему не конфиг-то а
Roman
у нас есть гопак
Vasily
Абсолютно ок для докера
Igor
Ilya
такого явно быть не должно =)
Хм, возможно, я что-то неправильно понимаю? Тесты с селениумом, ждём N секунд появление окна, например. Если окно не появилось, то причины возможны две: 1) на сайте что-то сломалось, то есть это бизнесовая ошибка; 2) в тесте что-то сломалось, а кнопка и не должна была появиться. И это уже не бизнес ошибка, наверное? В первом случае я бы предпочёл аккуратное сообщение, что кнопки не дождались, пытаясь выполнить бизнес-задачу по загрузке файла, а во втором — кровь, кишки и стектрейс.
Ilya
Я не про тесты, я про приложение. Тесты явно другой кейс и там как мне кажется обычного эксепшена всем хватит(с)
А, ну ок. Я тоже думал, что эксепшена хватит всем. А потом мне сказали, что эксепшены непонятные и лучше писать что-то нормальное. Ну то есть подход: разработчик сайта клиент, ему эксепшены и стектрейсы лучше не показывать.
Roman
https://12factor.net/ru/config
Но ключ апи не зависит от окружения же
Roman
В чем смысл класть его туда вместо старого доброго веб конфига?
Vasiliy
мы в secrets (ранчере) кладем и подключаем их как volume к докерам.
Mark
В чем смысл класть его туда вместо старого доброго веб конфига?
Там в статье два смысла приведено. 1) он не хранится в git, что представляет проблему безопасности. 2) админы могут поменять настройки, не трогая программистов, а изменения программистов не ломают настройки админов.
Romɑn
И что за ошибка
Romɑn
а еще точнее что тесты ожидают такое поведение, а оно иное
Romɑn
в общем это не совсем обычный кейс
Ilya
Эх, и когда уже общую теорию всего и вся выведут! Чтобы подставил и получил верный ответ-решение.
Bonart
Скала норм если пишешь как на котлине
Тогда просто котлин лучше
Roman
Там в статье два смысла приведено. 1) он не хранится в git, что представляет проблему безопасности. 2) админы могут поменять настройки, не трогая программистов, а изменения программистов не ломают настройки админов.
Но реальные значения в гит и так можно не пихать. Да и имхо админу поправить значение в веб конфиге поправить не сложнее, чем в переменной среды
Vasily
Для докера лучше в переменной
Roman
Ну у тебя это значение будет в докер файле в гите лежать же
Vasily
В чем профит?
Проще развертывание
Vasily
Это раз
Vasily
Во-вторых, выше тут уже приводили аргументы
Vasily
webconfig в докер подсунуть тяжело
Vasily
А переменную окружения в теории полегче
Vasily
Точнее, тут дело в переопределении
Anatoly
конфиг должен быть в файле - дефолтный
Vasily
Дефолтный, да
Vasily
Плюс переменные окружения
Anatoly
и считываться отовсюду потом
Anatoly
переменные окружения и-или параметры командной строки должны иметь наивысший приоритет
Vasily
На самом деле вроде в ранчере просто упор на переменные окружения
Vasily
С другой стороны, я всегда могу задать локально в конфиге то, что мне надо протестировать
Anatoly
В чем смысл класть его туда вместо старого доброго веб конфига?
вебконфиг статичен и не знает многого о рантайме, а некоторые параметры берутся только из рантайма
Mark
Но реальные значения в гит и так можно не пихать. Да и имхо админу поправить значение в веб конфиге поправить не сложнее, чем в переменной среды
Можно не пихать в гит значения, но они регулярно там оказываются. И если это опен-сорс проект, то их регулярно все узнают. Точно также, боевые настройки регулярно перезатираются настройками разработчиков. Мы в своё время на environment с большим облегчением перешли, потому что эти две проблемы просто неактуальны стали.
Anatoly
Anatoly
или там апи-ключи
Mark
Короче, есть основания и для такого решения, и достаточно весомые. Можно не принимать, но это не глупость.
Roman
или там апи-ключи
Как они зависят от рантайма?
Anatoly
Как они зависят от рантайма?
в одной среде - один ключ, в другой - другой, в третьей - третий.
Anatoly
у девелоперов на локальной машине - четвёртый
Mark
консул же гораздо интереснее, чем все эти ваши переменные окружения (для прода). или аналогичный k/v
а) я не знаю, что такое консул. б) я отвечал на конкретный вопрос почему в окружении, а не в web.config.