Получи случайную криптовалюту за регистрацию!

codaza

Логотип телеграм канала @codaza — codaza C
Логотип телеграм канала @codaza — codaza
Адрес канала: @codaza
Категории: Технологии
Язык: Русский
Количество подписчиков: 5.10K
Описание канала:

Канал о разработке на платформе .NET с использованием языка программирования C#. Рассматриваются актуальные подходы и современные методологии разработки.
YouTube:
https://www.youtube.com/c/codaza-channel
Контакты:
codaza.channel@gmail.com

Рейтинги и Отзывы

4.00

2 отзыва

Оценить канал codaza и оставить отзыв — могут только зарегестрированные пользователи. Все отзывы проходят модерацию.

5 звезд

0

4 звезд

2

3 звезд

0

2 звезд

0

1 звезд

0


Последние сообщения

2022-08-31 11:00:53
#капитану_на_заметку

Всем привет!

Комментирование исходного кода — это здорово! Открыл исходник и вот он комментарий. Но как прокомментировать SQL-запрос, отправляемый к базе данных, когда мы используем Entity Framework?

Запросы к базе данных могут анализироваться не только разработчиком приложения, но и администратором базы данных. Хотелось бы показать всем разработчикам цель того или иного SQL-запроса без длительного анализа.

Entity Framework предлагает отличный метод TagWith(), который поможет добавить комментарий к SQL-запросу. Комментарий поможет раскрыть намерение запроса и поможет при анализе не только вам, но и разработчикам баз данных.

Вот и всё. Вы и ваша команда великолепны!

+1 к искусству качественного логирования
1.4K viewsedited  08:00
Открыть/Комментировать
2022-08-24 11:01:59
#капитану_на_заметку

Всем привет!

Большинство web-сервисов предоставляют возможности для интеграции через REST API. За примерами далеко ходить не надо: Google, GitHub, YouTube, Facebook и много-много других — все предоставляют возможность взаимодействия через некоторое API.

Читая документацию на API, вы можете столкнуться с требованием к частоте запросов. Например, максимальная частота запросов не должна превышать 55 в секунду с одного IP-адреса.

Главный вопрос для нас: как добиться выполнения этих требований быстро и просто? Желательно еще, чтобы без смс и регистрации

Существует очень классная библиотека — RateLimiter. Вам просто нужно завести некоторую переменную-ограничитель с указанием той периодичности, которая требуется и дальше пользоваться ей везде перед запросом. Причем вы можете организовывать составные ограничители (например, не более 10 запросов в секунду + не более 1000 запросов в сутки).

Познакомиться подробнее с RateLimiter можно тут.

+1 в сундучок с инструментами юного разработчика
1.9K views08:01
Открыть/Комментировать
2022-08-17 11:00:13
#капитану_на_заметку

Всем привет!

Мы постоянно пользуемся конфигурационными файлами в наших приложениях. В конфигах мы храним строку соединения с базой данных, токены, логины и прочее. Бывает так, что конфигурация содержит в себе два и более логически связанных параметра. Например, такое может произойти, когда нам нужно иметь возможность задать значения для логина и пароля от какого-нибудь API.

В таких случаях, в appsettings.json, параметры следует выделять в отдельную логическую секцию. Далее, чтобы каждый раз не запрашивать параметры по одному так:

configuration.GetValue("MyConfig:Parameter1");

существует очень удобный способ проецирования вложенной структуры конфигурационного файла, на класс в C#. Для этого нужно выполнить 4 простых шага (см. картинку). После чего, значения параметров будут удобно расположены в объекте.

Такой подход существенно упрощает работу с вложенными структурами в конфигурации вашего приложения.

Вот и всё. Вы великолепны!

+1 к простым решениям
3.0K views08:00
Открыть/Комментировать
2022-08-11 11:00:16
#капитану_на_заметку

Всем привет!

Entity Framework Core — суперпопулярное решение для работы с базами данных в ASP.NET. При исполнении запросов к базе данных, нередко появляются самые разные ошибки ("Timeout expired", "Transaction was deadlocked" и пр.). Обычным решением в борьбе с такими ошибками, является применение политики повторов. Проще говоря, делается повторная попытка выполнения SQL-запроса через некоторый Timeout.

Для решения этой несложной задачи, начинающими (и не очень ) разработчиками, придумывается огромное количество "велосипедов". Однако существует стандартное решение — EnableRetryOnFailure. Данный метод позволяет настроить контекст на использование стратегии повторов. Это делается очень просто в файле Program.cs.

В конфигурации есть возможность задать максимальное количество повторных попыток, максимальную задержку между повторными попытками и дополнительные номера ошибок для обработки.

Подробнее можно прочитать в официальной документации.

-1 велосипед, который так и тянет написать
3.7K views08:00
Открыть/Комментировать
2022-08-03 11:00:39
#капитану_на_заметку

Всем привет!

Бывает так, что нужно прекратить ожидание ранее запущенной задачи (Task) через некоторый промежуток времени, так как её выполнение уже никого не интересует. Разумеется, этот вопрос можно решить через CancellationToken, но .NET6 подарил нам новый API, который поможет сделать это проще.

Класс Task предоставляет метод WaitAsync(), где мы можем передать время, через которое выполнение задачи нас не интересует. Через заданный промежуток времени, ожидание результата выполнения задачи будет прекращено, а также будет сгенерировано исключение TimeoutException.

Подробнее с Task.WaitAsync можно познакомиться в официальной документации.

Вот и всё. Вы великолепны!

+1 к простым решениям
4.3K views08:00
Открыть/Комментировать
2022-07-27 11:02:02 Всем привет!

Сегодня я хочу рассказать вам о том, как управлять конфигурационными данными приложения ASP.NET в development среде. Хранение секретных данных (логины, пароли, токены и пр.) никогда не должны попасть в общедоступный репозиторий. В ASP.NET существует удобный механизм, который решает эту задачу просто и понятно — User Secrets. Поэтому наливайте чайку и давайте посекретничаем

Приятного просмотра!



4.5K views08:02
Открыть/Комментировать
2022-07-21 11:00:24
#капитану_на_заметку

Всем привет!

Вам когда-нибудь приходилось делать поиск по строковому ключу в Dictionary? Главная проблема со строковыми ключами — непредсказуемость регистра (Premium, PREMIUM, PrEmIuM).

Можно придумать разные "велосипеды", которые помогут обойти эту проблему (например, везде делать String.ToLower()). Но зачем что-то делать, если можно этого не делать?

Существует классный способ решения вопроса: передать параметр StringComparer.CurrentCultureIgnoreCase в конструкторе Dictionary.

Вот и всё. Вы великолепны!

+1 к простым решениям
4.4K views08:00
Открыть/Комментировать
2022-07-14 11:00:06
#капитану_на_заметку

Всем привет!

Меня всегда восхищает красота и элегантность кода, который создают высококвалифицированные разработчики. Анализируя разные репозитории на GitHub, я всегда стараюсь примечать интересные конструкции и неожиданные решения.

Один из методов, который позволяет упростить сложные синтаксические конструкции в C# называется Pattern matching. Pattern matching предоставляет более краткий синтаксис для тестирования выражений и выполнения действий при их совпадении. Таким образом, вы сможете визуально проще проверять типы и свойства ваших переменных.

Pattern matching — это синтаксический сахар, который помогает сделать ваш код слаще

+1 к сладости вашего кода
4.6K views08:00
Открыть/Комментировать
2022-07-07 10:30:09
#капитану_на_заметку

Всем привет!

А вы знали, что Enum можно прокачать? Для этого нужно добавить атрибут [Flags] там, где мы делаем объявление перечисляемого типа. Это сделает возможным хранение не одного, а множества значений в одной переменной

Зачем это нужно? Очень нужно Вот несколько примеров:

- Файл или запись в базе данных может быть с правами доступа (только чтение, чтение + запись)
- Персонаж в игре может двигаться определённым образом (только вправо, вправо + вверх)
- Продукт может сочетать несколько характеристик (солёный, сладкий + острый)

Кроме того, хранение нескольких значений в одной переменной поднимает производительность приложения, так как используется меньше места под хранение и передачу данных.

+1 к тонкостям работы с перечисляемыми типами
4.1K views07:30
Открыть/Комментировать
2022-06-30 10:00:19
#капитану_на_заметку

Всем привет!

На технических собеседованиях часто можно услышать вопрос:
"Как улучшить производительность при конкатенации строк?"
И получить такой ответ:
"Использовать класс StringBuilder! Везде! Всегда!"

Ох... нет... Так это не работает. Но звучит обнадеживающе

Именно из-за этого ответа, на code review, мне нередко приходится видеть неразумное использование класса StringBuilder. Ненужно использовать StringBuilder на небольших наборах данных. Если у вас пapa-тpoйкa строк, воспользуйтесь обычном оператором "+". Мало того что это гораздо читабельнее, так еще и производительнее. Это ли не то, чего мы так хотим при создании качественного программного обеспечения?

StringBuilder нужен только когда у вас ну ооочень много строк (не три) — вот тогда есть смысл его использования. Неразумное использование StringBuilder может даже приводить к деградации производительности. Именно поэтому нужно всегда отслеживать производительность вашего ПО делая benchmarking.

+1 к работе со строками
4.1K views07:00
Открыть/Комментировать