Dr. Friedrich
я от тебя хотел тайное место логов
Help → Show Log in File Manager Но хрен ты в тех логах без бутылки разберёшься.
Ayrat
понимаю. я просто поищу по ключевому слову analyze
Dr. Friedrich
Ну, единственная надежда — эксепшены посмотреть
Dr. Friedrich
Если эксепшен падает, то наверняка починят!
Igor
Чем хуже?
Ну хотя бы тем что в open и module alias не умеет
Igor
Хотя это отдельная печальная тема, в ocaml open можно хоть внутри функции делать)
Ilya
Ну хотя бы тем что в open и module alias не умеет
Так в F# 5 будет для статиков. Проблема решена?
Igor
Посмотрим, когда выйдет
Nuxs🏴‍☠️
Зачем статические классы в F#?
Ilya
Про алиасы хз. Надо посмотреть.
Nuxs🏴‍☠️
Реально, для этой штуки же есть модули
Nuxs🏴‍☠️
Хотя бы просто для формальности порядок соблюдать
Ilya
Зачем статические классы в F#?
Согласен. Вообще не надо из фшарпа дотнет-библиотеки использовать, особенно стандартные.
Ilya
И ни в коем случае не надо писать код на фшарпе, который будет удобно из сишарпа вызывать.
Nuxs🏴‍☠️
Вот
Nuxs🏴‍☠️
Человек дело говорит
Ilya
Предлагаю вообще закрыть фшарп и уйти в окамл. В знак протеста.
🇺🇦 Дмитрий
Ну и тем кто пишет на окамле/ др ml языках - модули ближе PS вообще практически классы не юзал последние пару лет
как ты так пишешь? у тебя одни модули юзают другие? Почему у меня ощущение что это капец какая связанность ещё и не явная
Igor
Да, одни модули - бью на проекты - иногда прикидываю зависимости через параметры функции Спасибо f# что запрещает циклические зависимости (и проектам в солюшине) https://fsharpforfunandprofit.com/posts/recipe-part3/
Nuxs🏴‍☠️
А вообще, много ли библиотек на фшарпе используются шарпистами?
Pavel S
Реально, для этой штуки же есть модули
В статик классе можно перегрузки функции делать
Nuxs🏴‍☠️
И да, модули в C# не видно?
Ilya
А вообще, много ли библиотек на фшарпе?
Ayrat
факой акку собирают
Ilya
Этот ещё... нбомбер тогда.
Ayrat
ну в основном наоборот, т.к. из фшарпа надо специально себя ограничивать чтобы сишарписты могли пользоваться
Igor
а как работаешь с вещами которые должны быть в одном екземпляре на запрос (scoped) ты их кидаешь по параметрам?
В целом да, но тк это обычно фигня с сайд эффектами, она не глубоко прокидывается
🇺🇦 Дмитрий
я просто не пойму как можно написать это модулем и удобно юзать, вот логгер закидывать в receive методе вообще не очень как то
🇺🇦 Дмитрий
окей, а транзакцию к примеру
🇺🇦 Дмитрий
хочу на начале её создать, потом в конце commit сделать
Ayrat
окей, а транзакцию к примеру
я не вижу транзакции
🇺🇦 Дмитрий
тут нет, а вообще
🇺🇦 Дмитрий
мне transaction прокидывать параметрами?
Ayrat
ничерта не понял!
Ayrat
сойду за умного и промолчу
🇺🇦 Дмитрий
вот хочу я вызвать череду insert в бд я создаю транзакцию и начинаю её кидать каждому методу в параметр чтоб он под ней сделал инсерт?
Ayrat
да не, в модуле можно сделать: let insert data = … let bulkInsert datum = let transaction = … for data in datum do insert data transaction.Commit()
Ayrat
ну или чот такое, сам там придумай, я не программист
Ilya
Всегда подозревал, что ты просто притворяешься им!
Igor
Да котлинист/yaml-лист залетный 😏
Vasily
Судя по характеру вопросов, @BashkaMen чот недопонимает
Roman
ну или чот такое, сам там придумай, я не программист
Я запутался в твоей карьере. Кто ты сейчас?
🇺🇦 Дмитрий
Судя по характеру вопросов, @BashkaMen чот недопонимает
да я не понимаю почему все время я учился уходить от статики и не использовать глобально состояние, а тут мне говорят что держать коннекшн в модуле это норм и норм его кидать параметрами по коду
Vasily
Статика плохо, когда у тебя чот там постоянно меняется
Roman
Senior YAML Engineer
О, ты ж можешь dsl на фарше написать
Vasily
Ну и в ООП есть мантра
Ayrat
О, ты ж можешь dsl на фарше написать
за меня уже написали!!11 на ямле =(
Vasily
Я лично не вижу проблем сделать логер статиком
Vasily
Как и обращение к бд
Vasily
Снимает кучу геморроя
🇺🇦 Дмитрий
согласен
Anatoly
Я лично не вижу проблем сделать логер статиком
Я вижу, если нет способа прокинуть нормально контекст без передачи в каждый logger.info
Ayrat
да, глобал стейт
Ayrat
(какой ужас)
Ilya
Шаред мемори.
Ayrat
module Whatever = let mutable logger = defaultLogger
Ayrat
ну то есть серьёзно, не похуй ли чо там
🇺🇦 Дмитрий
ILogger<MailReader> превратится в шаред ILogger то-есть отказывщись от классов мы уже потеряли, а что мы получили ?
Ayrat
просто прокидывать один логгер в класс подозрительно
Ayrat
я б на месте статик сделал
Ayrat
но тогда неясно зачем класс, у тебя там вроде стейта нет
🇺🇦 Дмитрий
let clients = ConcurrentDictionary()
Ayrat
логгер это не стейт. во всяком случае не бизнес стейт
🇺🇦 Дмитрий
вот мой стейт
Ayrat
ладно, ладно, оставь класс)
🇺🇦 Дмитрий
и то я понимаю что есть вариант этот стейт принимать как параметр, но бля каша получается :(
Vladimir
Когда юзаешь мейлбокс это даже паттерн - обернуть его в класс, так у меня сделано везде
Vladimir
хотя бы потому что мейлбокс не может сам себе сообщение послать без этого
Anatoly
делай логер мутабельным
отлично работает в многопоточной среде, да.
Roman
за меня уже написали!!11 на ямле =(
Сильно. А ты напиши свой дсл поверх их дсл поверх ямла на фарше!!111
Anatoly
и часто ты логер меняешь?)
на каждый входящий реквест у меня новый контекст