Vladislav
это "C# в браузере"?
ага, ну на самом деле дотнет в браузере)
Vladislav
они просто за шаблонизатор взяли C# разор
Vladislav
cshtml который
Romɑn
Have a SAFE trip to F#
Будет статья? Можем сразу перевести, Хабр ничего не знает о SAFE, хватит это терпеть
Hog
Будет статья? Можем сразу перевести, Хабр ничего не знает о SAFE, хватит это терпеть
ой... я попробую. Всё моё писательство укладывается в README.md к проекту :)
Hog
Переводить, кстати, не потребуется - статью (если решусь) могу сразу по-русски писать :)
Romɑn
Переводить, кстати, не потребуется - статью (если решусь) могу сразу по-русски писать :)
Тут как тебе удобно. Но если у тебя теперь английский второй родной, то ты нужен нам в переводах, хотя бы как ревьюер)
Romɑn
Готов поучаствовать. Что требуется?
Пока аккаунт на гитхабе) или почта, можно в личку.
Nikolay
А в rider'e есть code lens для F#?
Nikolay
Или как оно называется
Romɑn
А в rider'e есть code lens для F#?
В планах на 2018.3 релиз, если я правильно помню
Hog
А в rider'e есть code lens для F#?
мне вообще он сыроватым показался :( c Идеей не сравнить :(
Romɑn
мне вообще он сыроватым показался :( c Идеей не сравнить :(
Так и разница в возрасте огромна. Зато есть ещё одна ИДЕ которая f# поддерживает
Romɑn
пока что VS Code + Ionide покрывает все мои потребности
Та же фигня, хотя ionide, конечно, тупит иногда. особенно с fable
Hog
Та же фигня, хотя ionide, конечно, тупит иногда. особенно с fable
Иногда бесит, конечно - пол экрана красных червяков, а FAKE всё собирает
Romɑn
Иногда бесит, конечно - пол экрана красных червяков, а FAKE всё собирает
Ага именно это с ним и бывает. Какой-то кэш там точно есть, который не понимает что пора бы уже почиститься)
Hog
Не помогает :(
Romɑn
Не помогает :(
Вот да. Там что-то не везде это работает.
Ayrat
Никто не замечал что fsautocomplete.exe течет? Через пару часов начинает выедать оперативу и проц
Ayrat
Это вскод
Hog
Это вскод
Хм... я несколько дней не перезапускался - утром на работе гляну. Тормозов вроде не замечал...
x
почему все используют в домене источники данных и считают это нормальным?
А о чем речь? Ddd? Тогда возможно потому что данных дофига, и не очень понятно какие из них понадобятся, поэтому догружаются в процессе работы логики?
Vladyslav
А о чем речь? Ddd? Тогда возможно потому что данных дофига, и не очень понятно какие из них понадобятся, поэтому догружаются в процессе работы логики?
С точки зрения бизнеса все эти репозитории не существуют. А в ddd модель долженп отражать реальную суть дел
x
С точки зрения бизнеса все эти репозитории не существуют. А в ddd модель долженп отражать реальную суть дел
это правда. Я дошел до того что заряжаю домен либо словарями, когда нужные данные известны заранее, либо функциями (по типу дай мне по набору айди набор обьектов) - домен не знает о репозиториях, в функции и словари легко засунуть данные для юнит тестов
x
с академической точки зрения домен не pure, конечно
x
в туториалах MS рекомендуют обьявлять интерфейсы репозиториев в домене, кстати. Я пока не знаю что лучше
Nikolay
Репозитории ужасны :)
x
но это немного геморно на этапе разработки: вместо того чтобы фугануть весь интерфейс репозитория с ненужными методами (а также теми, которые что-то меняют в базе), нужно из каждого репозитория вписать нужные функции. Либо сразу результат запроса в виде коллекции или словаря
Vladyslav
типа того
а если нужны транзакции. есть способ увязать эти обращения? и это используется в домене?
x
так у тебя логика именно сложного апдейта где-то снаружи?
Vladyslav
не, у меня ничего нет) я теоретически спрашиваю)
x
ну если в общем, то я бы написал домен который применяет бизнеслогику, выплёвывает какой-то агрегат, а его сохранением уже занимаются края системы, где есть репозитории, юнит оф ворки и тому подобное
Vladyslav
а, например, если нужно создать уникального по мейлу пользователя
Vladyslav
домену что делать?
x
Func<string userMail, ICollection<string> existingUserMails, IUser created user> CreateUniqueUser
x
точнее возвращаться будет Option<IUser>
x
если он есть ) я в C# сижу, у меня всё самодельное
Doge
Func<string userMail, ICollection<string> existingUserMails, IUser created user> CreateUniqueUser
Ага, а если существующих записей - миллиарды?
x
эксепшенов стараюсь не бросать из бизнес логики
x
Ага, а если существующих записей - миллиарды?
тогда бизнес-условие уникальности возлагается на плечи базы данных )
x
ну или что там есть
Doge
тогда бизнес-условие уникальности возлагается на плечи базы данных )
И как тогда спроектируешь чистую бизнес-логику?
x
никак, мы живём в неидеальном мире )
x
ну хотя может есть какой-то ответ, просто я не знаю
Doge
никак, мы живём в неидеальном мире )
Ну решение есть, если что, как такое делать
x
о, а расскажи
Vasily
Чую,ща в бой комонадки пойдут
Doge
о, а расскажи
На меня опять тут набросятся, конечно же, но вот из того, что сработает в F# - есть Free монады всегда.
x
вроде есть. А можно какой-то минимальный пример? с тем же уникальным емейлом по миллиардам записей
Vasily
С комонадами тема в том, что хранится не запись,а контекст ее получения
Vasily
И это, кстати, открывает некоторые возможности
Vasily
Надо Ivan саммонить
Vladyslav
С комонадами тема в том, что хранится не запись,а контекст ее получения
типо как если бы пример выше переделать в Func<string, IEnumerable<string>>, где IEnumerable на самом деле IQueryble?
Vasily
Ну не так немного
Nikolay
monads
Vladislav
M o n a d s
Vasily
По факту у тебя есть контекст, откуда надо получить значение, и правило, как его вытащить
Vasily
Плюс lazy ячейка для знания
Vasily
Значения
Vasily
Т.е. в памяти ты хранишь не объект, а путь к нему
Vladyslav
а с контекстом если ли гарантия, что можно сделать все те же манипуляции с базой как и без этих исхищрений
Vasily
Вопроса не понял
Vladyslav
источник данных не будет ли проблемой в реализации такой фишки
x
На скале сойдёт или на F#/С# нужен?
я, конечно, лучше всего понимаю C#
Vladyslav
а я не знаю) чисто вопрос)
Vasily
Ну ты сформулируй опасения
Vladyslav
транзакции