Как стать автором
Обновить
57.43

C# *

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

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

Сравнение 2х нишевых библиотек для написания миграций в монго

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

В работе веб-разработчика (в частности бекенд-разработчика) встречается много разных интересных и уникальных задач. В этой статье речь пойдёт о такой теме как написание миграций документно-ориентированной БД mongo. Как и в любой задаче у нас имеется несколько вариантов решения проблемы. Мы подробно разберём примеры использования 2х разных c#-библиотек, не углубляясь в детали реализации. Посмотрим их плюсы и минусы и выберем 1 из них для выполнения поставленной задачи. В конце нас ждёт небольшое сравнение производительности, так что пристегнитесь, ведь будет интересно.

Пристегнуться!

Новости

Инновационные технические решения и баги в исходном коде PowerShell

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

PowerShell — известный инструмент от Microsoft. Но какие секреты сможет найти статический анализатор в его исходном коде? Посмотрим в этой статье.

Читать далее

Локальный AI-ассистент в почте: инструкция по применению

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

Привет, Хабр! Это Eppie – p2p децентрализованная почта. У нас новости: мы добавили в Eppie ИИ. Сейчас расскажем, зачем, и как им пользоваться.

Локальный ИИ == приватный ИИ

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

Читать далее

Многопоточность. Снизу вверх. Потоки в языке C#

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

Привет, Хабр! Это Дмитрий Бахтенков. Добро пожаловать в третью часть цикла статей «Многопоточность. Снизу вверх»! Мы уже разобрали процессор и операционную систему, а сегодня поговорим про использование потоков в .NET с помощью языка программирования C#.

Эта статья — обзор основных возможностей взаимодействия с потоками в .NET.

Читать далее

Истории

Тест от айти-джинна: справишься с рабочими задачами аналитика, тимлида, тестировщика?

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

Вечер пятницы, пустой коворкинг, посиделки над пет-проектом после работы. Накопилась усталость, навалились проблемы, выгорание не за (вы)горами. Очень сильно хочется кофе: он нужен любой ценой,. Даже сильнее хочется чего-то нового в жизни.

Знакомая ситуация? Тогда, айтишник, тебе повезло — под катом ты встретишь IT-джинна, который предлагает всем, кто ждёт перемен или просто хочет развлечься, отправиться в увлекательное путешествие: испытать силы и знания в трёх направлениях работы с продуктами компании Контур. 

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

В этом тесте ты сам выбираешь, каким будет твоё приключение. А джинн подстрахует в случае ошибки. Стартуем?

Начать квест

Событийный диспетчер отложенных задач на C#: консолидация и дедупликация данных в текущей инстанции

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

Всем привет, меня зовут Артур Богданов. Я занимаюсь проектированием, разработкой и оптимизацией высоконагруженных веб-приложений на ASP.NET Core.

Хочу поделиться с сообществом своей разработкой, которая позволяет использовать несколько фоновых задач (или «раннеров») для отложенной обработки консолидированных данных. Раннеры построены на шаблоне PubSub для асинхронного ожидания новых задач, что делает этот подход более реактивным, но менее ресурсоемким.

Читать далее

Шахматный советник для тех, кто зевает и не любит читеров

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

Это новый вариант статьи, уже выложенной на Хабре. Та статья писалась на эмоциях, сразу после первых декабрьских версий. Нынешняя — это результат трехмесячных воскресных посиделок в Visual Studio. Тут и параллельные процессы и манипуляции в js и даже примитивный шахматный движок на C#.

Погнали

Кроссплатформенный терминал Modbus TCP / RTU / ASCII с открытым исходным кодом: Часть 4

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

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

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

Подробнее читайте в этой статье!

Читать далее

C#: использование Unit test с Apache Ignite

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

Привет всем! Меня зовут Артём, я работаю в t2 разработчиком .Net и по собственному опыту знаю, что одним из ключевых показателей качества кода является покрытие кода тестами. В этой статье поговорим конкретно о Unit-тестах и разберёмся, как покрыть юнит тестами код, имеющий зависимости от внешнего ресурса со статическими методами.

Интересно? Пойдём под кат!

История одной автоматизации в BIM-проекте: от скриптов в Dynamo до собственного плагина и SQL Server

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

Всем привет! Меня зовут Кирилл Якименко, я – BIM-эксперт компании КРОК, работаю с BIM-технологиями уже около 6 лет, входил даже в клуб Autodesk Expert Elite. В КРОК я занимаюсь тем, что внедряю BIM технологии, развиваю и поддерживаю их применение.

Сегодня я вам расскажу о том, какой путь прошел КРОК в эволюции автоматизации процессов в Revit, как большой и тяжелый проект нам помогал в этом, а не мешал.

Читать далее

OpenCV на С# (OpenCVSharp)

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

Вероятно после прочтения заголовка у многих возникнет вопрос как OpenCV связан с C#, почему не python? На самом деле ответ простой, потому что нет такого опыта программирования на python, а потребность в OpenCV возникла. OpenCV - прекрасная библиотека для обработки изображений. А OpenCVSharp - это оболочка .NET для библиотеки компьютерного зрения OpenCV, которая позволяет нам с комфортом использовать её из приложения .NET на Windows, Linux или других OS.

Для начала вспомним о том, что изображение в коде выглядит как набор двухмерных матриц яркостей палитры RGB. Всегда возникает вопрос, как с этим работать? Библиотека OpenCV предоставляет прекрасные возможности для обработки изображений, а также покадровой обработки видео. 

Читать далее

Представление иерархии и выполнение иерархических запросов в ClickHouse с использованием хешей

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

Привет, Хабр! Достаточно часто используются иерархические фильтры или отчеты с иерархией, и представление иерархии может быть актуально как для UI (например, иерархических фильтров), так и для отчетов или дашбордов. Если рассматривать только структуру запроса с иерархией, без расчета промежуточных итогов и т.д., то сохранение структуры иерархического UI элемента при большом уровне вложенности, а также передача этой иерархии с UI на бэкенд и дальше, например, в виде SQL запроса в СУБД может быть относительно нетривиальной задачей. При относительно большом уровне вложенности (например, иерархия в 10 уровней), при решении «в лоб» и сохранении всех 10 выбранных значений на последнем уровне иерархии, станет неудобно хранить и передавать в качестве параметров с UI на бэкенд (для 1000 строк и 10 уровней вложенности может быть уже условно 10000 параметров), также растет и количество параметров в SQL, и проблемы усугубляются в случае микросервисной архитектуры, когда запрос SQL не сразу отправляется, например, в ClickHouse, а ещё эти 10000 параметров «путешествуют» из UI в один или несколько микросервисов, пока не попадут в ClickHouse. В связи с этим хочу рассмотреть одно из возможных решений проблемы с помощью хеширования на примере C# и ClickHouse, но это «не идеи, проверенные на продакшене», больше тема к обсуждению. Тем, кому интересно решение проблем иерархических запросов на примере C# и ClickHouse — добро пожаловать под кат :)

Читать далее

Мои правила

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

Можно считать эту статью второй частью в неком цикле про мои принципы в работе. В первой части я писал про какие-то неважные для меня вещи на примере code-style. Теперь логично рассказать о том, что для меня важно, про некоторые правила, которые помогают мне в работе. Это не только про написание кода, но и про процесс разработки в целом.

Читать далее

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

8 апреля
Конференция TEAMLY WORK MANAGEMENT 2025
МоскваОнлайн
25 – 26 апреля
IT-конференция Merge Tatarstan 2025
Казань
20 – 22 июня
Летняя айти-тусовка Summer Merge
Ульяновская область

Архитектура диалоговой системы в Unity

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

Когда я начинал разработку своей игры, то не смог найти каких‑то внятных гайдов с описанием архитектуры диалоговой системы. Зачастую авторы упоминали верстку да логику UI, но не отвечали на вопросы «как менять сюжетные стейджи», «как работать с разными типами диалогов», «как менять статус персонажам на сцене» и т. п. Мне не хватало найденной информации и я потратил какое‑то время на написание диалоговой системы самостоятельно. Для опыта конечно же… но и, будем честными, денег я зажал на готовые плагины. Надеюсь, что эта статья поможет таким же новичкам в Unity как и я, кто решил учиться разработке через практику и прототипирование. Небольшая оговор очка: я занимаюсь автоматизацией тестирования и мой основной язык python. Так что заранее прошу извинить за не самые лучшие конструкции C#. Также хочу упомянуть, что статья эта не про код, а про архитектуру, так что первого в принципе будет не так уж и много. А что за игру я делаю? Сюжетное 2д приключение, где я решил брать не механиками, а историей.

Часть 1. Планирование архитектуры

Без четкого ТЗ результат ХЗ. Для начала планируем и фиксируем, что хочется вообще сделать. На моем примере:

1) Система линейная, диалоги без вариантов ответа;

2) Каждая сцена — это грубо говоря отдельная игра, которая не связана с другими сценами, их все можно запускать независимо. Сохранения реализованы в момент перехода между сценами;

3) На каждой сцене есть n стейджей. На каждом стейдже m диалогов. Заканчиваются стейджи — на этой сцене заканчивается сюжет, можно переходить на новую сцену;

Читать далее

Графический переполох: что таит в себе ScottPlot?

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

ScottPlot — библиотека под .NET для построения графиков. Из-за специфики подобных проектов их код нередко бывает запутанным. Сегодня мы попробуем распутать его и отыскать проблемные места с помощью статического анализатора

Читать далее

Уменьшаем размер двоичного файла на C# в 90 раз

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

Я написал на C# консольный клон Wordle, но попытался сделать двоичный файл максимально крошечным.

Я взял популярную игру Wordle с такими правилами:

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

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

В работе с консолью мне помогла игра Console Games - Snake

Проект запускается в новой консоли dotnet.

Читать далее

Не только для «обхода». Что такое Http Upgrade и как его использовать в .NET

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

Недавно на Хабре вышел обзор того-о-чём-не-стоит-говорить-в-этом-блоге. И, в числе прочих способов того-о-чём-не-стоит-говорить, автор упомянул использование «транспорта HttpUpgrade».

Так как я использую заголовок Upgrade на практике, меня смутило, что в поиске в русскоязычном сегменте интернета найти корректное описание механизма непросто. Конечно, метод является достаточно редко используемым «вчистую» (то есть не в паре с протоколом WebSocket), но тем не менее.

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

Я расскажу о том, что есть «HttpUpgrade», как наш ЦК использует его для создания соединения, по которому клиент и сервер могут обмениваться пакетами: клиент запрашивает видео, а сервер передаёт клиенту пакеты. Ну и разумеется, поделюсь кодом клиента и сервера, создающим между собой «апгрейднутое» соединение в .NET 8.

Меня зовут Андриевский Леонид, я тимлид команды .NET в ЦК Видеонаблюдения Ростелеком. Давайте приступим!

Читать далее

Введение в микросервисы C# + шаблон

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

Думаешь, микросервисы — это сложно? В этой статье я коротко и простыми словами объясняю как написать микросервис на .NET, какие технологии использовать и как избежать типичных ошибок.

📌 Что разберем:

Как правильно разделять логику: CQRS, слои приложения

Какие инструменты использовать: MediatR, MassTransit, MinimalApi и др.

Настройка инфраструктуры: базы данных, документирование API

Практические примеры: разберем код, покажу, как все работает

Начать изучение

Автоматизируй всё! Настройка CI-CD в Unity Часть вторая. Сборка Unity Cloud build

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

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

Собираешь билды вручную и теряешь кучу времени? Эта статья позволит тебе автоматизировать процесс сборок в с помощью Unity Cloud Build. Одна кнопка — и билд готов!

В этой статье мы по шагами пройдемся и настроим сборку на Unity Cloud build.

Читать далее

Разбор рендера фейковых теней (и не только) в Танки Онлайн

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

Привет! Меня зовут Артур, я работаю разработчиком в команде Unity компании Альтернатива Гейм. В этой статье я расскажу, как мы реализовали технику фейковых blob-теней в нашей игре Танки Онлайн на Nintendo Switch, используя проекционные меши, а также о том, какие еще применения мы нашли для этой техники.

Читать далее
1
23 ...