Pavel
да любой. module X = ....
Pavel
и пускай в нем что надо
Vasily
Ну, это понятно
Vasily
В общем, чую,пора про лайфтайм читать приложений
Vasiliy
А в жирафе query параметры только так можно вытаскивать?
Vasiliy
https://github.com/giraffe-fsharp/Giraffe/blob/master/DOCUMENTATION.md#query-strings
Ayrat
там вроде можно прям в модель биндить
Ayrat
из квери
Ayrat
https://github.com/giraffe-fsharp/Giraffe/blob/master/DOCUMENTATION.md#binding-query-strings
Ayrat
>=> bindQuery<Car> (Some british) (fun car -> Successful.OK car)
Ayrat
но надо указывать культуру-шмультуру
Vasiliy
🤔 как это расстраивает, либо неправильно готовлю. Надо читать лучше. потому что когда ты видишь сигнатуру метода GetProcResult(DateTime startDate, DateTime endDate, string company, int? limit, int? offset) ты видишь параметры А вот тут нифига ты не видишь let getProcResult = fun (next : HttpFunc) (ctx : HttpContext) ->
Ayrat
так эта
Ayrat
ты не пробовал писать нормально?)))
Ayrat
let getProcResult (next : HttpFunc) (ctx : HttpContext) =
Vasiliy
Стиль с гитхаба стянул) И смысл, мне же надо 2 параметра начало и конец. А тут как то надо танцевать
Ayrat
я чот не понял тогда что тебя расстраивает
Vasiliy
разница между синтаксисом C# и F# 😂
Ayrat
Я наверное опять ничерта не понял, но ты можешь всё видеть и в F#!!11
Ayrat
(или я опять нихуя не понял?)
Vasiliy
Т.е. вот чувак сюда посмотрит, и поймет что это запрос GET и два квери параметра [HttpGet] GetProcResult(DateTime startDate, DateTime endDate)
Vasiliy
А посмотрит сюда и ничего не увидит, ибо параметры вытягиваются ниже. let getProcResult = fun (next : HttpFunc) (ctx : HttpContext) Короче надо читать мануал, фигную я наверное творю просто
Vladyslav
ну так перенеси их выше
Vladyslav
а вообще такой способ деляют еще для создания типа на сигнатуру функции
Vladyslav
видел чтобы в C# было? class UserWorkflow : Func<UserRequest, ValidationCheck, UserRequest>
Vladyslav
надо видеть параметры - переноси выше. Да и твой аргумент про что чувак видит функцию и все понимает немного не совсем правильный в рамках сайд-эффектов и исключений
Vasiliy
я в целом) нашел какой то issue, ладно придется нафшарпить в прод позже
Ayrat
фу как низко
Ayrat
фшарпь пока молодой!
Vladislav
пока мозг не закостенел
Vladislav
и объекты не кажутся удобными...
Анна
Ну чо вы по больному :(
Vasiliy
да нафшапрлю, просто в свою время, сейчас все же работать уже надо.
Ayrat
Ну чо вы по больному :(
у тебя всё впереди!
Анна
Я только выгляжу молодо!
Vladislav
Я только выгляжу молодо!
плюсы убили твою душу?
Ayrat
а в душе уже понимаешь что повидала какое-то дерьмо?
Анна
Чего я только не повидала
Анна
Vladislav
сейчас наблюдаю и пытаюсь приручать систему с кастомной системой сборки
Vasiliy
https://cdn.jpg.wtf/futurico/ac/ee/1555400024-acee993dab66b95edaaa371ef7e7743a.jpeg?w=700
Vasiliy
лучшая промо-кампания
Vladislav
^ вот так
Romɑn
Как они дерутся в пластиковых шлемах?
Romɑn
Александр Овечкин весело проводит время в НХЛ. Его зачем-то задирал 19-летний Андрей Свечников из «Каролины», Саша обиделся и уложил молодого парня поспать. не лезь, дебил, оно тебя сожрет
Ayrat
Говорят это его 4ый махач за ВСЮ карьеру
Romɑn
я бы фактивы по дракам на льду делал )
Ayrat
я про Овечкина если что
Romɑn
я понял
Hog
https://twitter.com/k_cieslak/status/1118143500078460932?s=12
Ayrat
интересную багу откопал. Предположим есть рекорды, у которых должен быть метод который создаёт нам некое ID из полей этого рекорда. чтобы сувать всё в редис например. И вот положим есть такой рекорд: type Foo = { value : decimal } member x.Key = string x.value Предплоложим даже у нас есть два инстанса этого рекорда let foo1 = { value = 10.0M } let foo2 = { value = 10M } и вот мы отображаем эту хреноту на фронте, где видим такое: value = 10 (это типа 10.0) value = 10 (это типа 10) мы не охреневаем потому что в реальном примере там сильно больше полей и таки строчки различаются, но те самые колонки которые отвечают за создание ключа выглядят абсолютно идентично (но на самом деле они разные - 10.0 и 10) И вот с фронта прилетает запрос, отредактируй ПЕРВУЮ модель (которая 10.0) и в теле: было: { value = 10 } стало: { value = 10.5 } ну, недолго думая бек выдирает по ключу "10" какую-то модель и редачит её, отдаёт СУКСЕС. Фронт радостно отображает (реакт же!) value = 10.5 (это типа была модель с ключом 10.0) value = 10 (это типа была модель с ключом 10) После рефреша страницы получаем value = 10 (это модель с ключом 10.0) value = 10.5 (это модель с ключом 10)
Ayrat
при этом все довольны.
Ayrat
а на самом деле нет
Aleksandr
А почему эти два инстанса вообще должны быть разными?
Aleksandr
10M = 10.0M
Aleksandr
Там же просто коллизия
Aleksandr
Он и берет при этом первое попавшееся
Aleksandr
Ибо нехер) коллизия
Romɑn
никто не пробовал анонимные рекорды между сборками передавать и вдруг кто пробвоал их в C# передавать, есть результаты?
Ayrat
toString у них разный поэтому лежат эти два заколиженных рекорда с разными ключами
Ayrat
математически это один и тот же decimal спору нет
Ayrat
но мы в редис кладём ключи строками
x
мде
Vasily
Переопредели equality
Ayrat
Переопредели equality
На беке все ок! Рекорды разные
Ayrat
Фронт пидор обрезает флоат часть при запросе и мы начинаем ссылаться не туда
Ayrat
Обрезает только в случае .000
Vasily
Пидора ведь даже не накажешь
Ayrat
Типа так меньше байт пересылается. ОПТИМИЗАЦИЯ
Vasily
Ты начинаешь познавать энтерпрайз
Vasily
Языки разные, проблемы одинаковые
Roman
Фронт пидор обрезает флоат часть при запросе и мы начинаем ссылаться не туда
по-моему в этой истории пидор тот, кто исторически сложил логику, что 10M <> 10.0M
Roman
но может я не прав
Roman
и уже не разложить?