Обновить
105.51

C# *

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

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

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

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


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

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

Поймай уязвимость своими руками: пользовательские аннотации C# кода

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

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

Читать далее

Как и зачем использовать Template Method в C#

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

Template Method (он же «Шаблонный метод») — это паттерн проектирования, который определяет скелет алгоритма в методе, оставляя определенные шаги подклассам. Проще говоря, есть базовый алгоритм, но мы можно менять детали, переопределяя части этого алгоритма в наследниках.

Классический пример — процесс заказа товара в интернет-магазине. Независимо от того, какой у вас магазин, шаги примерно одинаковые: проверка наличия товара, оплата, упаковка и доставка. Но в зависимости от специфики магазина, эти шаги могут отличаться в деталях.

Template Method позволяет создать базовую структуру этих шагов и менять конкретные реализации без изменения самой структуры. В этой статье мы рассмотрим, как реализовать этот паттерн на C#.

Читать далее

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

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

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

Читать далее

К чистому коду через рефакторинг

Время на прочтение13 мин
Охват и читатели4.1K
Чистые функции — это такие методы, при выполнении которых не возникает побочных эффектов. В функциональном программировании чистые функции — скорее правило, чем исключение. Но в большинстве объектно-ориентированных языков с ними приходится сталкиваться нечасто, или, как минимум, они редко считаются предпочтительным вариантом. В дотнет-среде серьёзный акцент делается на внедрении зависимостей и более-менее обширных абстракциях, использующих интерфейсы.

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

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

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

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

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

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

Читать далее

EnJoyTheVR: доступная виртуальная реальность на базе смартфонов

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

Всем привет! Меня зовут Евгений, я разработчик приложения EnJoyTheVR – приложения, которое позволяет погружаться в виртуальную реальность с 6DOF отслеживанием движений головы и рук прямо через ваш смартфон. В этой статье хотел бы рассказать о проекте, его задумке, этапах разработки, а также поделиться положительными и отрицательными моментами.

Сейчас почти каждый знает, что такое VR, но не у всех есть возможность приобрести дорогостоящее оборудование для полного погружения в виртуальную реальность. Уже давно существует такая штука, как Google Cardboard, но большинство приложений, созданных под него, обладают ограниченным функционалом — они предлагают лишь базовое отслеживание головы и зачастую простое взаимодействие. В отличие от них, EnJoyTheVR предоставляет полноценное 6DOF-отслеживание как головы, так и рук, что делает опыт гораздо более реалистичным и насыщенным.

Именно эта идея и легла в основу моего школьного проекта :) Посмотрим, насколько удалось ее реализовать.

Читать далее

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

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

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

Читать далее

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

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

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

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

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

Читать далее

Что нового в Unity 6? Обзор нововведений и ошибок в исходном коде

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

Наконец, состоялся релиз Unity 6! Разработчики называют эту версию самой стабильной версией за всё время существования движка. Почему бы нам не убедиться в этом с помощью статического анализатора кода? А заодно проведём краткий обзор основных фич и улучшений, привнесённых обновлением.

Читать далее

Как сделать управление персонажем в Unity – урок для детей и подростков

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

Сегодняшний урок подойдет для ребят 10–14 лет с минимальным опытом. Благодаря пошаговой инструкции можно разобраться в управлении персонажами на простых примерах и понять, как работать с некоторыми важными инструментами среды Unity.

Платформа «Юнити» предназначена для разработки игр. Она обрела популярность и стала востребованной благодаря ряду известных проектов, скажем, Pokémon GO с аудиторией более 65 млн игроков в месяц.

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

Готовы? Тогда поехали. Впереди 3 интересных и важных шага. 

Читать далее

Реализуем паттерн Unit of Work в ASP.NET Core

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

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

Сегодня разберём, как реализовать паттерн Unit of Work в ASP.NET Core. Вместо долгих теоретических рассуждений, посмотрим, зачем он вообще нужен, и как правильно его применить на практике.

Читать далее

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

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

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

Читать далее

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

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

Время на прочтение7 мин
Охват и читатели8.9K

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

Читать далее

Экспорт данных из базы данных в Excel на C#: 5 проверенных методов

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

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

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

Читать далее

Название имеет значение: как отладить Blazor WebAssembly приложение, переименовав браузер

Уровень сложностиПростой
Время на прочтение2 мин
Охват и читатели1.6K

У нашей команды появилась необходимость отлаживать Blazor WebAssembly приложения в Яндекс.Браузере. Но возникла проблема: Visual Studio упорно не хотел вставать на точки останова. Таких проблем не было ни с Edge, ни с Chrome, хотя все три браузера основаны на Chromium. Полез разбираться, как и что там происходит, хотя в успех особо не верил.

Читать далее

ConcurrentBag в C#

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

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

В многопоточном программирование постоянно нужно решать задачи, связанные с доступом к данным из нескольких потоков одновременно. И тут очень кстати ConcurrentBag — коллекция, которая была добавлена в .NET Framework 4.0 специально для таких случаев. Она подходит для ситуаций, где порядок элементов не важен. Если нужно просто кидать данные в мешок, пока куча потоков их туда же добавляет.

Поэтому ConcurrentBag создана для сценариев, где один и тот же поток часто и добавляет, и извлекает данные. Поэтому эта коллекция идеальна для паттернов типа Producer-Consumer, где один поток наполняет коллекцию, а другой извлекает данные для дальнейшей обработки. Но самое классное, что работает она по принципу work-stealing.

Читать далее

Осваиваем Playables API для анимации в Unity

Уровень сложностиСложный
Время на прочтение3 мин
Охват и читатели1.4K

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

Читать далее

Как я переходил с Built-In на URP в Unity и обратно с помощью Chat GPT

Время на прочтение3 мин
Охват и читатели2.2K

Недавно я решил перевести свой проект с классического Built-In рендеринга на URP (Universal Render Pipeline) в Unity. Как и многие разработчики, я был вдохновлён обещаниями улучшенной производительности и современного внешнего вида графики, особенно для мобильных устройств. Однако, после нескольких дней экспериментов, я был вынужден вернуться обратно на Built-In Pipeline. В этом процессе мне активно помогал Chat GPT, который стал настоящим ассистентом и даже спасителем в самых сложных ситуациях. Вот мой опыт и основные причины, которые привели меня к возврату на старую систему.

Читать далее

Пул объектов и фабрика в Unity. От теории к практике

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

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

Читать далее

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