Все потоки
Поиск
Написать публикацию
Обновить
270.82

C# *

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

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

JSON в Unity за 10 минут

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

JSON - это популярный текстовый формат, который используется для обмена данными. Он был разработан на основе JavaScript синтаксиса, но является полностью независимым от языка, что позволяет использовать его почти в любом программном окружении.

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

Читать далее

Hangfire + Multi Tenancy

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

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

Читать далее

Nuke, AppVeyor, GitVerse

Время на прочтение11 мин
Количество просмотров921

Недавно я работал над небольшим собственным проектом, представляющим собой Roslyn-генератор интерфейсов только для чтения для существующих классов. Когда я посчитал, что пришло время выкладывать результаты в виде NuGet-пакета, я решил, что нужно создать автоматизированный конвейер сборки. В прошлом я уже решал такую задачу с помощью AppVeyor. Но на этот раз имелись некоторые отличия. Во-первых, в прошлом я использовал Cake для описания задач сборки. На этот раз я решил попробовать Nuke. Последний обещает лучшую интеграцию с Visual Studio. Кроме того, я решил попробовать русский аналог GitHub — GitVerse. Что из этого получилось, читайте ниже.

Читать далее

OpenCV на С# (OpenCVSharp)

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

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

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

Читать далее

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

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

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

Читать далее

Как отлаживать плагины в Revit: ускоряем разработку

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

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

Читать далее

Многофакторное аппроксимирование на платформе .Net. Часть первая. Теория

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

Двухфакторная аппроксимация и ее реализация на платформе .net при помощи open source приложения RefressionFromExel.

Читать далее

Test Doubles в интеграционных тестах на ASP.NET Core

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

Интеграционные тесты (англ. Integration tests) занимают промежуточное положение между модульными и сквозными. Они отлично подходят на роль приёмочных тестов backend-сервиса.

Но что делать, если тестируемый сервис активно использует внешние API? Заменять их тестовыми дублёрами.

В статье мы разберём конкретный пример на .NET 8 и ASP NET Core и напишем для него приёмочные тесты.

Читать далее

Как ограничить количество одновременно выполняемых задач в фоне

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

Написание этой статьи навеяно статьёй "Task изнутри: управление потоками в .NET и создание своих планировщиков". Одна из проблем озвученная в данной статье это ограничение числа одновременно выполняемых задач.
В указанной статье для таких целей использовался кастомный планировщик. Полагаю многим пришла в голову мысль о возможности создании решения на основе SemaphoreSlim, а я же решил его воплотить и проверить насколько проще такое решение, чем кастомный планировщик.

Читать далее

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

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


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

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

Нейросети против Тинькоф-контеста

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

Недавно я проходил контест задач от т-банка и это было не слишком сложно, поэтому я решил посмотреть, как наши нейросети, а именно GigaChat от сбера и алиса от яндекса(платная версия), справятся с ними...

Читать далее

Мой опыт в переводе между типами С++ и С#

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

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

Читать далее

Орфография в 1С через COM на C#

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

Всем привет, недавно столкнулся с задачей проверки орфографии и исправления опечаток в 1С. Посмотрев варианты решений (MS Word, Yandex, т.д.), понял, что они мне не подходят. Решил копнуть глубже. Лично мне понравилось решение на базе спелчекера, встроенного в Windows. Поскольку в 1С нет возможности напрямую обратиться к этому функционалу ОС, я реализовал его в виде DLL на языке C# и сделал COM‑обертку. COM‑объект подключил в 1С.

В итоге получилась вот такая простая форма, на которой при нажатии кнопки «Проверить опечатки» текст в Строке ввода анализируется и исправляется.

Читать далее

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

Java и C#. История одного вдохновения

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

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

Читать далее

Разбираемся с паттерном REPR в ASP.NET Core

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

В этой статье мы рассмотрим паттерн проектирования REPR (request‑endpoint‑response — «запрос‑конечная_точка‑ответ»), как он упрощает разработку API и как его можно реализовать на C#.

Читать далее

Парсинг математических выражений AngouriMath, DynamicExpresso и MathExpressionEval

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

Пожалуй большинство программистов так или иначе сталкивались с с++. Как и я большинство таких людей начинали познавать с++ через его великого основателя Бьярне Страуструпа. Одна из его энциклопедий по с++ начиналась с калькулятора. С подобной задачей написания калькулятора для расчета выражений нам довелось столкнуться в рамках одного из спринтов только уже на c#. (AngouriMath, DynamicExpresso, MathExpressionEval)

Читать далее

KatWalk C2: ч.4: поиграемся с прошивкой

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

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

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

Давайте что-нибудь в нём пропатчим!

Календарь семьи на MudBlazor с авторизацией и развертыванием на Ubuntu

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

Введение:

MudBlazor - это амбициозная библиотека компонентов для Blazor, основанная на дизайне Material и с акцентом на простоту использования и четкую структуру. Она идеально подходит для разработчиков .NET, которые хотят быстро создавать веб-приложения, не сталкиваясь с проблемами CSS и JavaScript. MudBlazor полностью написан на C#, что позволяет вам легко адаптировать, исправлять или расширять фреймворк. https://mudblazor.com/

Задачей была разработать полезное приложение для нашей семьи, названное "Семейный календарь", которое объединяет функциональность от Google, Yandex и Mail для удобного ведения семейного расписания. Я хотел создать приложение, которое позволит нам легко планировать и отслеживать события, задачи и важные даты в нашей семье.

Читать далее

Async/await, There is no thread – легко обмануть тех, кто сам обманываться рад

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

Когда нам показывают на некотором примере, что асинхронная операция не создает потока, нам пытаются внушить, что асинхронная операция НИКОГДА не создает потока и в принципе не может его создать, но это не правда! Простой пример с работающим кодом доказывает обратное. Давайте разберем этот пример.

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

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

Читать далее

Rule-based AI + Unity

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

Привет! В прошлой статье мы уже говорили про искусственный интеллект и трудности его выбора. В этой мы поговорим как начать его писать так чтобы потом не выстрелить себе в жопу ногу.

Читать далее

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