Как стать автором
Обновить
93.36
Рейтинг

C# *

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

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

Алгоритмы сортировки и их производительность

Алгоритмы *C# *
Из песочницы

Здравствуйте, давно читаю Хабр и все хотел написать кому-нибудь статью, но не знал с чего начать и о чем писать. Но решил что тянуть кота за причинное место. Надо просто взять и написать обзор о чем то что я знаю и что будет просто для начало. Поэтому решил описать алгоритмы сортировки в размере 37 штук. Я понимаю, что на Хабре есть подобные статьи, одна постараюсь их добавить количеством алгоритмов и приведением небольшого числа графиков.

Читать далее
Всего голосов 65: ↑64 и ↓1 +63
Просмотры 11K
Комментарии 20

Новости

Сортировки в C#: OrderBy.OrderBy или OrderBy.ThenBy? Разбираемся, что эффективнее и почему

Блог компании PVS-Studio Программирование *.NET *C# *

Предположим, есть задача: нужно отсортировать коллекцию по нескольким ключам. В C# это можно сделать с помощью вызовов OrderBy().OrderBy() или OrderBy().ThenBy(). Но в чём разница между этими вызовами? Чтобы ответить на этот вопрос, придётся покопаться в исходниках.


0991_OrderBy_ThenBy_ru/image1.png


Статья состоит из трёх основных разделов:


  • Предыстория. Для тех, кто любит затравки. История о том, откуда вообще возникла идея провести исследование и изучить, в чём разница между OrderBy().OrderBy() и OrderBy().ThenBy().
  • Сравнение эффективности. Изучаем отличия типов сортировок с точки зрения производительности и потребления памяти.
  • Отличия в поведении. Погружаемся в исходники .NET и разбираемся, из-за чего возникают отличия в эффективности работы рассматриваемых способов сортировки.
Читать дальше →
Всего голосов 25: ↑25 и ↓0 +25
Просмотры 4.2K
Комментарии 10

Как я научил нейросеть распознавать каракули. Введение

Блог компании SkillFactory C# *Машинное обучение *Научно-популярное Искусственный интеллект
Перевод

К старту нашего флагманского курса по Data Science делимся расшифровкой видео от Себастьяна Лагу — разработчика игр, тьютора и популяризатора IT, который на своём YT-канале собрал уже около миллиона подписчиков. За подробностями, объяснениями и иллюстрациями от автора приглашаем под кат.


Прочитать первую часть
Всего голосов 33: ↑33 и ↓0 +33
Просмотры 6.4K
Комментарии 21

Arduino + Unity. Радио fpv-машинка на геймпаде

C# *Unity *Разработка под Arduino *DIY или Сделай сам
Из песочницы

Привет. Расскажу про то, как сделал машинку на Arduino-контроллере, а Unity принимал сигналы с геймпада, управлял машиной по радиоканалу, отображал пользовательский интерфейс и изображение fpv-камеры.

Читать далее
Всего голосов 12: ↑10 и ↓2 +8
Просмотры 4.7K
Комментарии 8

Введение в ARFoundation

Блог компании OTUS .NET *C# *Unity *
Tutorial

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

Читать далее
Всего голосов 9: ↑9 и ↓0 +9
Просмотры 645
Комментарии 0

Паттерн внедрение зависимостей в .NET nanoFramework для микроконтроллеров

Блог компании Timeweb Cloud Программирование *C# *Программирование микроконтроллеров *DIY или Сделай сам
Tutorial
.NET nanoFramework Weatherstation

Сегодня сломаем привычный мир инженеров и разработчиков встраиваемых систем на микроконтроллерах. В .NET существует замечательный паттерн программирования, как внедрение зависимостей (Dependency injection, DI). Суть паттерна заключается в предоставление механизма, который позволяет сделать взаимодействующие в приложение объекты слабосвязанными. Эти объекты будут связаны между собой через абстракции, например, через интерфейсы, что делает всю систему более гибкой, более адаптируемой и расширяемой. Но когда ведется разработка для микроконтроллеров, все зависимости обычно жестко завязаны на используемых устройствах, и замена датчика иногда приводит к существенному переписыванию программного кода. Напишем приложение на .NET nanoFramework для микроконтроллера ESP32, используя паттерн DI с возможностью легкой замены датчиков и LCD экрана.
Читать дальше →
Всего голосов 9: ↑8 и ↓1 +7
Просмотры 1.8K
Комментарии 9

Использование GitHub в обучении студентов. Автоматизация проверок. Часть I

.NET *C# *GitHub *Учебный процесс в IT DevOps *
Tutorial

В конце декабря 2020 года я написал несколько статей на Хабре по своему опыту использования GitHub в обучении студентов (ссылки на них будут в конце сей статьи).

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

Для меня при обучении программированию важно, чтобы студенты умели не только правильно решать задания, но и красиво писать код. В обучении и проверки заданий я использую EditorConfig, dotnet cli и GitHub Actions. Но обо всём по порядку.

Читать далее
Всего голосов 7: ↑7 и ↓0 +7
Просмотры 2K
Комментарии 0

PowerShell, HTML Agility Pack: получение значения атрибута HTML-элемента

Программирование *.NET *PowerShell *C# *
Tutorial

Рассмотрено два способа получения значения атрибута HTML-элемента на HTML-странице в скрипте на языке PowerShell с помощью методов объектов из библиотеки HTML Agility Pack.

Показан прямой доступ к значениям атрибутов с помощью выражения вида $node.Attributes. Далее большая часть статьи посвящена методам GetAttributeValue из библиотеки HTML Agility Pack. Освежаю в памяти, что такое «полиморфизм» и как он реализован в библиотеке для данного метода. Также будет немного затронуто понятие «обобщенного метода» («generic method») в языке C#.

Читать далее
Всего голосов 1: ↑1 и ↓0 +1
Просмотры 715
Комментарии 0

Топ вещей из Java, которых мне не хватает в C#

Программирование *Java *C# *

Спор "Java vs. C#" существует чуть меньше, чем вечность. Есть много статей, затрагивающих разные участки его спектра: Что есть в C# чего нет в Java, что языки друг у друга позаимствовали, у одних LINQ, у других обратная совместимость, в общем, тысячи их.

Однако, я никогда не видел, чтобы писали о чём-то, что в Java, с точки зрения фич языка есть, чего в C# нет. Впрочем, я здесь не для того, чтобы спорить. Эта статья призвана выразить моё субъективное мнение и заполнить небольшой пробел по теме, озвученной в заголовке.

Читать далее
Всего голосов 27: ↑24 и ↓3 +21
Просмотры 16K
Комментарии 53

Телепортация игрока в Unity с OpenXR

Блог компании OTUS Разработка игр *C# *Unity *
Tutorial

Продолжим серию статей про OpenXR. В конце концов получим контроллер игрока, обладающий базовыми навыками — перемещением, поворотом и взаимодействием с объектами. В этой же мы сделаем телепортацию игрока и его поворот.

Читать далее
Всего голосов 9: ↑9 и ↓0 +9
Просмотры 1.1K
Комментарии 1

ML.NET: можно ли доверять машинному обучению Microsoft?

Блог компании PVS-Studio C# *Машинное обучение *

В 2018 году Microsoft разработали ML.NET – фреймворк машинного обучения для .NET разработчиков. За прошедшее время эта библиотека претерпела существенные изменения и обзавелась новыми функциями для выявления закономерностей в данных. Посмотрим, как это отразилось на качестве её исходного кода.

Читать далее
Всего голосов 12: ↑12 и ↓0 +12
Просмотры 2.4K
Комментарии 1

Как я портирую код с помощью Hebron

Open source *.NET *C *C# *

В своей предыдущей статье я упомянул Hebron - утилиту для портирования кода с C на C# или на Rust.

В этой статье хотелось бы подробно расписать - как я с ней работаю.

Написанное можно воспринимать как своего рода мануал на тот случай, если кто-нибудь тоже захочет что-нибудь портануть.

Итак, портирование осуществляется в 4 шага:

Читать далее
Всего голосов 15: ↑15 и ↓0 +15
Просмотры 3.2K
Комментарии 3

Вероятно вам не нужен MediatR

Программирование *.NET *C# *ООП *
Перевод

MediatR - это очень популярная библиотека, которая используется для уменьшения зависимостей между объектами. Она популяризует архитектуру, основанную на крайне значимых принципах проектирования:

препятствование прямому общению между объектами для уменьшения связности;

нацеливание на Message-Oriented архитектуру;

поддержка асинхронного внутреннего обмена сообщениями;

ориентирование на переиспользование объектов.

Эти практики не пустое слово для меня. Кроме того, кажется, что такой способ создания программного обеспечения должен быть совершенно очевидным. Без сомнения, библиотека MediatR очень успешна и широко применяется разработчиками, которые разделяют эти ценности.

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

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

Также стоит отметить, что эта статья не покрывает положительные аспекты библиотеки, а фокусируется только на недостатках.

Читать далее
Всего голосов 16: ↑16 и ↓0 +16
Просмотры 5.5K
Комментарии 12

Предварительная версия C# 11: обощённые типы для ML, обязательные члены и многое другое

Блог компании SkillFactory Open source *Программирование *.NET *C# *
Перевод


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

Узнать больше
Всего голосов 11: ↑8 и ↓3 +5
Просмотры 6.6K
Комментарии 24

Секретики Unity3d. Зачем нужен флаг STARTER_ASSETS_PACKAGES_CHECKED в стартовых ассетах

.NET *Разработка игр *C# *Unity *

Кто устанавливал офицальные ассеты от Unity "Starter Assets - Third Person Character Controller" или "Starter Assets - First Person Character Controller" возможно замечал что в настройках проета (Project settings -> Player -> Other settings -> Script Compilation) появляется флаг STARTER_ASSETS_PACKAGES_CHECKED, но зачем он нужен? Давайте разбираться.

Читать далее
Всего голосов 7: ↑5 и ↓2 +3
Просмотры 1.2K
Комментарии 7

Мой вклад в электронный документооборот

.NET *C# *

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

Читать дальше →
Всего голосов 4: ↑4 и ↓0 +4
Просмотры 3.7K
Комментарии 8

Чем опасны уязвимые зависимости в проекте и как с этим помогает SCA?

Блог компании PVS-Studio Информационная безопасность *Open source *Программирование *C# *

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

Читать далее
Всего голосов 3: ↑3 и ↓0 +3
Просмотры 774
Комментарии 2

StbSharp: история ненужного проекта

.NET *Разработка игр *C *C# *Unity *
Из песочницы

В этой статье я бы хотел рассказать о своем хобби проекте под названием StbSharp.

Итак, в 2016 году мне пришла в голову весьма банальная идея - сделать собственный игровой кросс-платформенный движок на C#. И я озаботился поиском кросс-платформенной же библиотеки для загрузки картинок. Внезапно выяснилось, что подходящей просто не существовало. Было множество платформо-зависимых решений(напр. System.Drawing). А так же имелась SixLabors.ImageSharp. Но она была в состоянии ранней альфы. Мне же хотелось работать с решением, проверенным временем. Так я пришёл к идее портировать stb_image.h (очень популярной в геймдеве single-header библиотеки для загрузки картинок) на C#.

"А разве не легче было написать биндинги для нативной библиотеки? Хоть для той же stb_image?",- задаст справедливый вопрос читатель. Да, легче. И правильнее. О чём, собственно, и говорит заголовок этой статьи. Конечно, использование биндингов доставляет некоторые неудобства в плане того, что необходимо доставить соответствующий нативный бинарник на устройство конечного пользователя. Однако эти неудобства с лихвой окупаются достоинствами. А именно лучшим перформансом и портируемостью.

Однако, проект показался мне столь интересным, что я проигнорировал эти справедливые возражения.

Читать далее
Всего голосов 37: ↑37 и ↓0 +37
Просмотры 5.5K
Комментарии 23

Как подружить Canvas и ItemsSource в WPF и AvaloniaUI

.NET *C# *
Tutorial

Предпосылки: понимая, что контейнеры компоновки в WPF не позволяют сделать привязки (Binding) к своим дочерним элементам, решил поэкспериментировать, а как же всё-таки подсунуть данные из View Model для формирования содержимого в эти самые контейнеры компоновки. Позже аналогичное решение было сделано для AvaloniaUI.

Кроме того, я стал регулярно обращать внимание на то, что подобные вопросы появлялись в телеграме в чатах pro.net и AvaloniaUI (RU), поэтому своё решение опубликовал на гитхабе. Но вопросы продолжают появляться регулярно, что и сподвигло меня написать статью на Хабре с пошаговым разбором, что делать.

Итак, если Вас эта тема заинтересовала, добро пожаловать под кат.

Читать далее
Всего голосов 12: ↑12 и ↓0 +12
Просмотры 1.4K
Комментарии 8

Опыт использования AutoFixture для генерации gRPC сообщений

.NET *TDD *C# *
Из песочницы

Думаю, большинство читателей согласится, что автоматизированное тестирование - полезный, а во многих областях даже необходимый, этап создания программ. А так как программисты - народ ленивый, то и инструментов, облегчающих этот этап существует немало. Одним из таких инструментов является AutoFixture - средство для генерации тестовых экземпляров. Этот инструмент уже не раз упомянался на Хабре, например тут. Далее я расскажу о том, с какой проблемой столкнулся в попытке применить AutoFixture в своей работе и как решил эту проблему.

Читать далее
Всего голосов 8: ↑8 и ↓0 +8
Просмотры 1.6K
Комментарии 2

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

Работа