Обновить
125.78

C# *

Объектно-ориентированный язык программирования

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

Преимущества функционального программирования на примерах C#

Время на прочтение7 мин
Количество просмотров8.3K
Функциональное программирование (ФП) — это парадигма, в которой упор делается на использование функций для решения задач, а не на состояние и изменяемые данные. В последние годы ФП завоевало популярность среди разработчиков благодаря многочисленным преимуществам, которые позволяют использовать его для разработки сложных систем. В этой статье мы расскажем о преимуществах функционального программирования и о том, почему вам стоит рассмотреть возможность его использования в вашем следующем проекте.
Читать дальше →

Реализация обмена сообщениями через MassTransit

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

Всем привет! Меня зовут Валерия, я Backend-разработчик компании Bimeister. В этой статье я хочу вам рассказать про наш опыт работы с обменом данных через MassTransit.

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

Читать далее

Конкурентная очередь с приоритетами (неудачно)

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

Делая свой очередной пет-проект подумал, что мне нужна конкурентная очередь с приоритетами. Оказалось она была не нужна, но желание ее реализовать никуда не ушло.

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

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

Здесь описал свою реализацию и сделал сравнение с блокирующей реализацией.
Критика (даже не конструктивная) приветствуется.

Читать далее

Бессильный сборщик мусора или неуправляемая память в .NET

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

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

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

Читать далее

Unity: Как реализовать бесконечный ListView с изображениями?

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

В этой статье я расскажу, как реализовать бесконечный ListView c изображениями.

Для реализации задуманного будем использовать Unity UI Toolkit в паре с UnityMvvmToolkit. Я уже писал про UnityMvvmToolkit статью вот здесь. С тех пор API притерпел значительные изменения, а точнее, произведен переход на реактивные свойства, плюс появилась поддержка генераторов исходного кода...

Читать далее

ChatGPT в написании юнит тестов

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

Добро пожаловать в мир инновационных подходов к тестированию программного обеспечения! В данной статье я хочу поделиться своим опытом использования ChatGPT — мощной модели искусственного интеллекта — для написания Unit‑тестов.

Так начал статью ИИ по моей просьбе составить вступление к эссе о том, как использовать ChatGPT при написании Unit‑тестов. Видимо, все‑таки придется писать самому, ибо градус пафоса зашкаливает, а высокопарность вызывает испанский стыд.

В этой статье я расскажу о своих наблюдениях и размышлениях при написании Unit‑тестов с помощью ChatGPT. Я рассмотрю, как использовать ChatGPT для генерации тестовых сценариев, формулировки вопросов о правильности кода, создания заглушек (moq).

Для начала давайте вспомним, что такое Unit‑тесты.

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

При построении запроса для написания Unit‑тестов следует учитывать несколько основных принципов, которые обеспечат эффективность и качество ваших тестов. Вот некоторые из них:

Читать далее

Обзор подозрительных мест в исходном коде MassTransit

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

MassTransit — Open Source платформа распределённых приложений для .NET. В этой статье мы расскажем о проблемных местах в коде проекта. С поиском таких мест нам поможет статический анализатор. Приятного чтения :).

Читать далее

Fancy Widgets — виджеты рабочего стола на AvaloniaUI

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

Привет, Хабр!

Около трёх месяцев назад, я и мой друг - начинающие .NET разработчики, решили разработать свои виджеты на рабочий стол Windows, так как официальных нормальных виджетов нет (те что в Windows 11 не считаются). Недавно мы выпустили наш проект в релиз, пока что есть 2 виджета (Погода и Заметки), но вскоре их может быть больше! Проект называется Fancy Widgets и мы хотим поделиться им с вами. Вы можете попробовать наши виджеты, скачав их с нашего сайта https://fancy-widgets.onrender.com. Это наш pet-проект и поэтому он ни на что не претендует, мы просто делали его для себя и для удовольствия. Но мы будем рады услышать ваше мнение и предложения по улучшению нашего продукта. Вы можете оставить свои комментарии под этой статьей или написать нам на нашу почту fancy.widgets.help@gmail.com. Цель этой статьи - вкратце рассказать о нашем проекте и о сложностях, которые возникли у нас при разработке. Мы надеемся, что вы найдете нашу статью интересной и полезной. Приятного чтения! ?

Читать далее

Базы Данных + Telegram Бот на C#. SKitLs Framework v.2

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

Не так давно опубликовал статью об экспресс-создании бота для Telegram на фреймворке SKitLs.Bots.Telegram. С тех пор внутренний состав фреймворка солидно изменился, вместе с тем были выпущены предварительные версии *.BotProcesses и *.DataBases и вторая версия ядра фреймворка.

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

Читать далее

JsonProperty.EFCore: Упрощаем работу с JSON-полями в Entity Framework Core

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

Иногда перед разработчиками встает задача использования JSON-полей в Entity Framework Core. Традиционный подход с использованием Fluent API требует написания дополнительного кода, что может усложнить проект. Пакет JsonProperty.EFCore решает эту проблему. Эта статья расскажет о пользе JsonProperty.EFCore и о том, как он упрощает работу с JSON-полями, что делает его удобным инструментом для разработчиков.

Читать далее

Всегда ли в C# есть упаковка при конкатенации со строкой и интерполяции?

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

Разработчики на C# хорошо знакомы с термином "упаковка". Она может быть явной, а может быть незаметна. Например, к упаковке приводит сложение значимого типа со строкой. Или не приводит. Такая вот "упаковка Шрёдингера". В заметке попробуем разобраться с этой неопределённостью.

Читать далее

Экспресс создание Telegram бота на C#

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

В данном материале рассматривается реализация телеграм-бота с помощью фреймворка SKitLs.Bots.Telegram, позволяющего абстрагироваться от однообразной if-else архитектуры и качественно перейти на новый, нелинейный, уровень архитектуры реализации ботов.

В качестве фундамента материала взята идея написание простого бота для отображения текущей погоды в указанном городе с помощью API сервисов Яндекса "Геокодер" и "Погода".

Читать далее

Сказ о том, как я гугловского динозаврика в стиле игр Nokia 3310 делал (C#, Windows Forms)

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

В данной статье я поведаю вам о том, как я делал известную и встроенную в браузере Google Chrome игру “Dino Runner” в стиле игр Nokia 3310 с использованием Windows Forms API на языке C#. Я расскажу, с какими трудностями столкнулся, как решал те или иные проблемы и так далее…

Читать далее

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

Сказ о том, как мы игру в команде делали

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

Сказ о том, как мы игру в команде делали

Меня зовут Юрий, недавно мне исполнилось 17 лет, и я программист. В основном делаю Windows Forms приложения (C#). С марта 2022 года я активно начал заниматься программированием, сначала на PascalABC.NET, а затем перешёл на C# в августе того же года...

Читать далее

Элегантные «квантовые» микросервисы

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

Статья описывает кейс разработки микросервисной системы. При работе над системой была использована теория, описанная в статье "Математические аспекты хорошего кода".

В рамках этого кейса описаны:

Снижение когнитивной нагрузки на программиста

"Квантовая" архитектура

Автоматическая обработка данных

Аспектно-ориентированное программирование

Генерация кода (T4)

Метапрограммирование

Межсервисное взаимодействие

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

Q: Почему "квантовые"?
A: Потому что являются одновременно микросервисами и монолитом.

Читать далее

Особенности разработки автотестов различными инструментами, а также статистика по использованию

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

Попробуем разобраться в автоматизации тестирования ПО, сделаем обзор сервисов для автоматического тестирования, выясним, какой язык программирования лучше подходит для QA Automation. Вся информация основана в том числе на реальных событиях и моём реальном опыте.

Читать далее

GraphQL в .NET: Пагинация

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

В этой статье мы поговорим о пагинации на GraphQL.

Одним из наиболее эффективных способов работы с GraphQL является взаимодействие при помощи интерфейса IQueryable. Наш второй проект в репозитории (002_GraphQLWithEFCore) посвящен обеспечению взаимодействия GraphQL с EF Core (Entity Framework (EF) Core — это простая, кроссплатформенная и расширяемая версия популярной технологии доступа к данным Entity Framework с открытым исходным кодом).

Читать далее

ReactiveValidation 2.0: валидация данных в Avalonia и WPF

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

Всем привет!
5 лет назад я рассказывал, как написал библиотеку для валидации данных в WPF. Всё это время активно развивался и продолжает развиваться другой десктоп фреймворк - Avalonia UI. Мне очень хотелось поддержать также и его, что и было сделано во второй версии библиотеки. Помимо этого, туда вошли другие интересные фичи.

Чтобы не было необходимости перечитывать предыдущую статью (тем более, многое поменялось с тех пор), под катом есть практически всё, что умеет библиотека на данный момент.

Читать далее

До последнего байта: минимальный вариант Hello World для .NET

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

Вот вам тупой вопрос, который вы сами, наверное, никогда себе не задавали. Каково минимальное количество байт, которые необходимо сохранить в исполняемом .NET-файле, чтобы CLR напечатала "Hello, World!" в консоли стандартного вывода?

Читать далее

Движок для матч-3 батлера, или Что делает каждый разработчик мобильных игр

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

Как вы знаете, разработчики игр делятся на два типа: те, кто делает ААА, и те, кто делает крайне простые матч-3. Здесь я расскажу в хронологической последовательности, как оптимизировал самый простой в мире жанр. Постараюсь далее уменьшить количество иронии. Заинтересованных приглашаю ознакомиться с моим путем

Читать далее

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