Подключился, работает, спасибо. Дарёному коню в зубу не смотрят, но что за странная реклама? Примерно раз в 50 сообщений добавляется в ответ от модели и ломает json объект, который я ожидаю в респонсе.
Keep your family safe online with SentryPC parental control—monitor and manage kids’ computer time effortlessly, [Learn more](https://api.llm7.io/redirect/200613)
Бывает и на русском
Управляйте безопасностью и временем работы за ПК вашего ребенка с SentryPC — удобным решением для заботливых родителей! [Learn more](https://api.llm7.io/redirect/200613)"
В первой части статьи вы так расписывали удобство Mapster'a что в нём не надо явно конфигурацию прописывать. Но ведь в продакшене в любом случае эти правила должны быть явно прописаны, чтобы иметь возможность вызвать AssertConfigurationIsValid. Да и про киллер-фичу с генерацией моделек у мапстера ни слова.
Graphql это язык запросов к вашему приложению, он никак не зависит от IQueryable или чего-то ещё — вы сами выбираете (=реализуете) какую фильтрацию поддерживаете.
То есть, он не течёт*, там строгая схема, которую вы сами обязались реализовать.
В HotChocolate (реализация gql для дотнет) 11 версии ребята вообще отказались от IQueryable.
(*может течь, если уровень вложенности select'a становится больше какого-то, задаваемого разработчиком, уровня)
В целом положительные.
Но у нас не как у Джими Богарда с его vertical features.
У нас "почти clean" — сборка с апп сервисами и в ней свои фичи, сборка презентейшн — либо напрямую юзает классы (дто) из апп сервисов, либо добавляет свои фичи (например, для graphql).
Кроме размещения фич в одном файле, не стесняемся пользоваться nested классами — меньше проблем с придумыванием имён и меньше нейм-конфликтов. Если класс получается большим из-за nested-классов, то делаем класс partial и выносим в отдельный файл.
Раньше вообще делали так, тоже неплохо было, но не прижилось почему-то:
Заголовок спойлера
public class CreateAccount
{
public class Command : MediatR.IRequest<Result>
{
public string Name { get; }
}
public class Result
{
public Account Account { get; set; }
}
// dto
public class Account
{
}
public class Mappings : Profile
{
}
public class Validation : AbstractValidator<Command>
{
}
public class Handler : IRequestHandler<Command, Result>
{
}
}
Подключился, работает, спасибо.
Дарёному коню в зубу не смотрят, но что за странная реклама? Примерно раз в 50 сообщений добавляется в ответ от модели и ломает json объект, который я ожидаю в респонсе.
Keep your family safe online with SentryPC parental control—monitor and manage kids’ computer time effortlessly, [Learn more](https://api.llm7.io/redirect/200613)
Бывает и на русском
Управляйте безопасностью и временем работы за ПК вашего ребенка с SentryPC — удобным решением для заботливых родителей! [Learn more](https://api.llm7.io/redirect/200613)"
Спасибо!
Вы планируете это дальше развивать или отключите через какое-то время? Можно ли на проде для пет-проекта заюзать?
А думали ли в сторону монетизации проекта? Только реклама или есть ещё какие-то пути? Или проект просто для личного удовлетворения?
а с точки зрения terms of use телеграма - насколько такой скрапинг легитимен?
по этому поводу есть хорошая статья
https://blog.ploeh.dk/2024/06/03/youll-regret-using-natural-keys/
Кажется, теорема Гёделя математически доказывает, что не всё можно доказать математически
В первой части статьи вы так расписывали удобство Mapster'a что в нём не надо явно конфигурацию прописывать. Но ведь в продакшене в любом случае эти правила должны быть явно прописаны, чтобы иметь возможность вызвать AssertConfigurationIsValid.
Да и про киллер-фичу с генерацией моделек у мапстера ни слова.
Не знаю, я вот очень люблю джунов и стажёров.
Это же идеальные исполнители на огромную кучу мелких задач и мелкого техдолга.
Зачем вы так про GraphQL?
Graphql это язык запросов к вашему приложению, он никак не зависит от IQueryable или чего-то ещё — вы сами выбираете (=реализуете) какую фильтрацию поддерживаете.
То есть, он не течёт*, там строгая схема, которую вы сами обязались реализовать.
В HotChocolate (реализация gql для дотнет) 11 версии ребята вообще отказались от IQueryable.
(*может течь, если уровень вложенности select'a становится больше какого-то, задаваемого разработчиком, уровня)
Для фильтров хорошо подходит спецификация (но согласен, там тоже текучесть).
При должном усилии можно подружить с чистым sql.
Мсье знает толк
Лучше тогда
$appsettings.{Environment.MachineName}.json
и его в .gitignore.appsettings.Development.json всё-таки шарить удобно внутри команды.
Я возможно чего-то не понимаю, но как при правильно настроенном CSP можно слить JWT из local storage на сторонний сервер?
В целом положительные.
Но у нас не как у Джими Богарда с его vertical features.
У нас "почти clean" — сборка с апп сервисами и в ней свои фичи, сборка презентейшн — либо напрямую юзает классы (дто) из апп сервисов, либо добавляет свои фичи (например, для graphql).
Кроме размещения фич в одном файле, не стесняемся пользоваться nested классами — меньше проблем с придумыванием имён и меньше нейм-конфликтов. Если класс получается большим из-за nested-классов, то делаем класс partial и выносим в отдельный файл.
Раньше вообще делали так, тоже неплохо было, но не прижилось почему-то:
Плюсы медиатра в том, что очень легко решать cross cutting concerns, у marshinov хорошие статьи были на эту тему.
Сейчас используем такой
извращённыйинтересный подход:В каждом файле "фичи" лежат классы для реквеста, респонса, хендлера и делегат (
GetAutomationStatistics
в примере).Затем этот делегат через рефлексию регистрируется в IoC с помощью такого класса:
Ну и эти делегаты потом уже можно инжектировать в другие хендлеры/сервисы.
Я имел ввиду, что такой подход с инжекцией медиатра, вместо явных зависимостей имеет те же проблемы, что и использование сервис локатора.
Это про то, что теперь вместо пяти разных сервисов, можно заинжектить какой-нибудь
IMediator
и юзать его?Если да, то есть мнение, что это тот же service locator.
react-admin хорош, если все формы простые и одинаковые.
Чуть шаг в сторону и начинаются костыли и баги
Почему не воспользовались AppMetrics?