Обновить
79.48

.NET *

Хаб со знаниями про .NET

Сначала показывать
Порог рейтинга
Уровень сложности

Refit в .NET: обзор библиотеки для упрощения работы с REST API

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров8.6K

В этом обзоре мы познакомимся с библиотекой Refit для .NET, которая значительно упрощает работу с REST API.

Refit позволяет разработать типобезопасные http клиенты с использованием интерфейсов и атрибутов, что делает код более читаемым и удобным для сопровождения.

Читать далее

Личный опыт: добавление микроразметки на сайт

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров2.2K

Микроразметка сайта: личный опыт и решения. Никита Неминущий, ведущий инженер-программист «Выберу.ру», рассказывает о том, как на их сайте была реализована микроразметка и какие трудности пришлось преодолеть. Узнайте, как микроразметка влияет на поисковую выдачу и какие инструменты помогли упростить процесс ее добавления.

Ознакомиться

Может ли C# догнать C?

Уровень сложностиСредний
Время на прочтение12 мин
Количество просмотров11K

Современное сообщество программистов разбито на два лагеря - на тех, кто любит языки программирования с управляемой памятью, и тех кто их не любит. Два лагеря яро спорят друг с другом, ломая копья по поводу преимуществ в каком-то из аспектов программирования. Языки с неуправляемой памятью представляются как более быстрые, управляемые, контролируемые. А языки с управляемой памятью считаются более удобными в разработке, в то время как их отставание по скорости выполнения и потребляемой памяти считается несущественным. В этой статье мы проверим, так ли это на самом деле. Со стороны олдскульных языков программирования выступит мастодонт мира разработки - С.

Сторону языков последних поколений будет представлять С#.

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

Читать далее

Разработка бота для Telegram на платформе .NET

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров8.2K

Введение

Telegram — один из самых популярных мессенджеров в мире, предлагающий такие функции, как групповые чаты, каналы, голосовые и видеозвонки, а также возможность создания ботов. В данной статье мы не будем ставить цель показать, как создать с нуля приложение a-la "Hello, World!", а изучим более сложный пример готовой реализации бота на платформе .NET с использованием современных технологий и практик разработки, локализацией, поддержкой пожертвований в Telegram Stars и т.д.

Читать далее

Что не так с .NET в Yandex Cloud Functions

Уровень сложностиСредний
Время на прочтение9 мин
Количество просмотров3.9K

В статье объясню специфику Яндекс Функций. Покажу свой эксперимент с запуском приложений, которые опубликованы разными способами — в том числе с использованием AOT-компиляции. А в конце — сравнение результатов и выводы.

Интересны особенности работы .NET в Yandex Cloud Functions? Добро пожаловать под кат.

Хочу разобраться

Бескультурная сказка про Dottrace

Уровень сложностиСредний
Время на прочтение9 мин
Количество просмотров5.1K

Короткая зарисовка о том, почему важно осознанно писать каждую строчку кода, каждый символ. А заодно и небольшой мастер-класс по использованию dottrace и класса string одновременно.

Читать далее

Как ускорить сборку Docker-образов в GitLab: стратегии кэширования с Docker Buildx

Уровень сложностиСложный
Время на прочтение16 мин
Количество просмотров13K

Скорость сборки Docker-образов играет важную роль в CI/CD, особенно для микросервисов, где частые обновления и тестирования требуют быстрой доставки изменений.

Одним из решений для оптимизации сборок является Docker Buildx — расширение к стандартной команде docker build. Docker Buildx предлагает дополнительные возможности, такие как кэширование слоев образов, что помогает значительно сократить время сборки за счет повторного использования неизменных слоев. В отличие от стандартного процесса сборки, Docker Buildx предоставляет более гибкое управление кэшем, поддерживает мультиархитектурные сборки и работу с несколькими платформами.

В этой статье мы сосредоточимся на том, как эффективно настроить и использовать кэширование с Docker Buildx в CI/CD пайплайнах на GitLab. Мы рассмотрим примеры, когда кэширование позволяет ускорить сборку, и ситуации, когда его лучше отключить для гарантии корректности итогового образа.

Читать дальше →

Третье издание книги «ASP.NET Core в действии» в правильном переводе команды DotNetRu

Время на прочтение6 мин
Количество просмотров13K

Привет, на связи лингвисты инженеры сообщества DotNetRu. 3 года назад мы рассказывали о книге «ASP.NET Core в действии». А сегодня мы рады представить третье издание этой полезной и информативной книги.

Как и в прошлый раз, первый вариант перевода был подготовлен силами  издательства «ДМК Пресс», затем практикующие разработчики нашего сообщества перечитали текст, внесли правки, проверили код и рисунки, после чего книга отправилась в печать. Опыт выпуска предыдущих книг уже показал, что такое тесное сотрудничество положительно сказывается на качестве перевода. Ниже краткое содержание книги и несколько слов от команды переводчиков.

Читать далее

ActiveSession — новая библиотека. Общее описание

Уровень сложностиСредний
Время на прочтение35 мин
Количество просмотров2.4K

imageНу вот, я наконец-то сделал ее — первую версию библиотеки ActiveSession для ASP.NET Core. И для того, чтобы описать эту библиотеку, я написал эту статью.


Библиотека ActiveSession дает возможность, пока пользователь работает с веб-приложением в браузере, выполнять код на сервере в фоновом режиме. А результаты работы этого кода — и промежуточные, и окончательные — веб-приложение может потом получать через дополнительные запросы к серверу. Причем, этот код обрабатывает данные и выполняет операции, специфичные именно для этого конкретного экземпляра веб-приложения и работающего с ним конкретного пользователя: для разных пользователей, работающих с разными экземплярами, независимо выполняются разные, не связанные друг с другом экземпляры фоновой программы.
Если вам нужны (или просто интересны) такие возможности — читайте эту статью дальше.

Читать дальше →

Использование библиотеки ActiveSession

Уровень сложностиСложный
Время на прочтение57 мин
Количество просмотров821


Сама по себе эта статья не является самостоятельным произведением. По факту она служит дополнением к основной, обзорной, статье по новой библиотеке ActiveSession. Эта библиотека предназначена для использования в веб-приложениях, серверная часть которых написана на ASP.NET Core. В основной статье рассказано, какую задачу решает эта библиотека, и как подключить ее к приложению. А эта статья рассказывает более подробно, как использовать эту библиотеку в обработчиках запросов к серверной части приложения из браузера.
Если вы уже заинтересовались библиотекой ActiveSession, то добро пожаловать дальше. Только перед этим рекомендуется прочитать основную статью: в ней объяснены те понятия, которые нужны для лучшего понимания того, что написано в этой статье.

Читать дальше →

Обзор нововведений в C# 13

Уровень сложностиСредний
Время на прочтение10 мин
Количество просмотров18K

Совсем скоро выйдет новая версия языка C#, а мы продолжаем серию ежегодного обзора нововведений. Изменений в этом году больше, чем в прошлом, что радует. Есть как важные изменения, так и весьма узкоспециализированные. Давайте посмотрим на них более детально.

Читать далее

Валидация модели данных в ASP.NET Core 8.0 на основе HTMX

Уровень сложностиПростой
Время на прочтение13 мин
Количество просмотров3.8K

Валидация данных на стороне сервера с HTMX 2.0. Разбираемся с валидацией модели данных на основе платформы ASP.NET Core.

В статье мы освоим базовую реализацию валидации данных на стороне сервера. На стороне сервера мы используем самый простой способ коммуникации - HTTP.

Знакомство с гипермедийными системами на ASP.NET Core 8.0.

Читать далее

Гибкая фильтрация EFCore с помощью Expression

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров5.2K

Фильтрация данных в EntityFramework — это довольно простая задача, которую можно легко решить с помощью метода Where() в LINQ. Однако если поля для фильтрации как и значения приходят к нам динамически, и тем более если фильтровать приходится по вычисляемым в рантайме значениям - возникают некоторые трудности с их обработкой. В статье рассказываю как я делал динамическую фильтрацию по вычисляемым в рантайме полям с помощью Expression trees и EntityFramework.

Читать далее

Ближайшие события

Как сократить размеры логов без потери функциональности

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров4.5K

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

Когда речь идёт о небольшом локальном сервисе с нагрузкой 10 запросов в день, можно позволить себе писать в логи всё: от полного текста запроса до полного текста ответа с кучей промежуточной информации (что пришло из базы, какой запрос послали во внешний сервис и что получили в ответ и т.д.). Когда же речь об относительно высоконагруженном сервисе, обрабатывающем порядка 1000 rps даже малая часть этой информации за пару дней запросто может вызвать переполнение современного жёсткого диска.

Возникает логичный вопрос: как логировать только нужную информацию?

Читать далее

RxJS Interop в Angular 18: основные изменения и преимущества

Уровень сложностиСредний
Время на прочтение9 мин
Количество просмотров4.2K

✏️ 🔥 Я написал новую статью об одной из интересных функций в Angular 18: RxJS Interop. В статье рассматривается, как RxJS Interop эволюционировал с Angular 16 до 18, какие новые возможности он приносит и как его можно использовать в вашем коде.

🚀 Если вы разработчик Angular и хотите улучшить свои реактивные паттерны, эта статья для вас!

✨ Основные моменты:

- 🔄 Бесшовная конвертация между Signals и Observables.

- 📉 Оптимизированная производительность для управления реактивным состоянием.

- 💡 Использование операторов RxJS напрямую с Signals для упрощения и улучшения читаемости кода.

- 🔥 Упрощение интеграции с Firestore с помощью Signals для синхронной реактивности и более простого управления состоянием.

Читать далее

SolidModelBrowser — удобный просмотр STL, 3MF, OBJ, особенно для тех, у кого завёлся 3D принтер

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров12K

Началась эта история с того, что несколько лет назад я купил 3D принтер. Конечно, по началу не представлял толком, как эта технология работает, и насколько прочными и полезными будут его пластиковые изваяния. Однако, быстро натренировавшись и отрегулировав эту машинку, я был удивлён и вполне удовлетворён качеством пластиковых изделий, спайкой слоёв и точностью их геометрических размеров. Конечно, в последствии не обошлось без модернизаций аппарата, но сейчас не об этом.

Печатать игрушки с thingiverse мне, конечно, надоело быстро, да и брал я свой дрыгостол с большим прицелом на техничку. Принтер вскоре стал одной из любимых игрушек, а связка Blender+Cura позволяла лепить модели мелких деталей порой за считаные минуты, отправляя их затем на печать. Сломалось колёсико у дивана - не в магазин же бежать, отломилось какое-нибудь крепление или кронштейн - и уже гудит вентилятор хотэнда. Штырьки, подпятники, элементы механизмов, и конечно, куча всяких баночек и коробочек...

Библиотека STL и 3MF росла. И в какой-то момент стало понятно, что я не помню, в каком файле лежит та или иная деталь. Хоть файлы и имели осмысленные названия на английском, но я просто уже забыл, что и как назвал, и ориентироваться в разрастающейся свалке становилось всё труднее. Нужен был какой нибудь удобный просмотрщик. Вот так и зародился несколько лет назад проект Solid Model Browser.

Приложение создано на платформе WPF и работает под Windows. В окне отображается загруженная модель, панель инструментов-кнопочек, и файловая панель слева, меняющая свою прозрачность по мере её востребованности...

Читать далее

Как скопировать все пакеты с nuget.org

Время на прочтение8 мин
Количество просмотров2.5K

Допустим, вам захотелось, на всякий случай, сохранить копию всех пакетов nuget.org. Как обнаружить и скачать все пакеты не привлекая внимания админов сервиса?

Узнать как

Шестидесятилетний заключённый и лабораторная крыса. F# на Godot. Часть 2. Выражения

Уровень сложностиПростой
Время на прочтение16 мин
Количество просмотров2.3K

В прошлой части я говорил про адаптацию API Godot к F#. Далее в планах было разобраться с общей структурой приложения, но я столкнулся с необходимостью закрыть серьёзный пробел в публичном корпусе текстов. Так что в этой и последующих частях я буду объяснять нечто странное — как из обычной функции путём эволюции получается работающая программа на Godot.

На мой взгляд, у большинства F#-новичков тактический и стратегический уровень находятся в разных вселенных. Типа вот здесь в локальном пространстве у нас ФП, а на глобальном внезапно тащит только ООП. Это, конечно, хорошо, что мы можем склеивать две парадигмы, но мне кажется, что эта непреодолимая стена на границе сферы деятельности ФП не такая уж непреодолимая. Существование её обусловлено не объективными причинами, а недостатком опыта.

Читать далее

Моя работа позволяет использовать способности и приносить пользу обществу

Время на прочтение5 мин
Количество просмотров2.6K

Я начинал в 2004 году с позиции .NET программиста в сфере аутсорс-разработки для зарубежных заказчиков. Это заложило прочную основу моей карьеры в IT. Полученный опыт в Java и .NET применил в научном институте в Новосибирске, а затем  в университетах Германии и Швеции. Этот период значительно расширил мои технические навыки и кругозор. Следующим этапом стала работа в игровой индустрии, где я прошел путь от руководителя проектов до операционного и технического директора в сфере мобильной разработки. Потом вернулся к аутсорс-разработке для российских и зарубежных заказчиков, но уже в роли руководителя проектных офисов и директора производства. Сейчас занимаю позицию руководителя технологического направления (аналог локального CTO) в компании ЕВРАЗ.

Читать далее

Исходный код на прощание: разбор ошибок в проектах закрывшейся инди-студии

Время на прочтение7 мин
Количество просмотров12K

Инди-студия StarlightLabsCo закрылась, а разработчик и её основатель Харрис Ротаермель опубликовал исходный код своих проектов. Теперь желающие могут улучшать эти проекты или разрабатывать на их основе новые. Мы решили не оставаться в стороне и решили поискать ошибки в его проекте.

Читать далее

Вклад авторов