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

C# *

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

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

Немного размышлений о домене и инфре

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

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

Для быстрой реализации этого, надо, как минимум, создать 3 проекта: проект с формочками, проект с доменное логикой, там, где будут манипуляции с объектами: вставкой, удалением и.т.д. И проест с инфраструктурой: работой с бд, файловой системой и.т.д. 

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

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

Итого так реализуется основное ядро чистой архитектуры. Но что дальше? 

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

Читать далее

Может ли C# догнать C?

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

Современное сообщество программистов разбито на два лагеря - на тех, кто любит языки программирования с управляемой памятью, и тех кто их не любит. Два лагеря яро спорят друг с другом, ломая копья по поводу преимуществ в каком-то из аспектов программирования. Языки с неуправляемой памятью представляются как более быстрые, управляемые, контролируемые. А языки с управляемой памятью считаются более удобными в разработке, в то время как их отставание по скорости выполнения и потребляемой памяти считается несущественным. В этой статье мы проверим, так ли это на самом деле. Со стороны олдскульных языков программирования выступит мастодонт мира разработки - С.

Сторону языков последних поколений будет представлять С#.

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

Читать далее

Разработка бота для Telegram на платформе .NET

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

Введение

Telegram — один из самых популярных мессенджеров в мире, предлагающий такие функции, как групповые чаты, каналы, голосовые и видеозвонки, а также возможность создания ботов. В данной статье мы не будем ставить цель показать, как создать с нуля приложение a-la "Hello, World!", а изучим более сложный пример готовой реализации бота на платформе .NET с использованием современных технологий и практик разработки, локализацией, поддержкой пожертвований в Telegram Stars и т.д.

Читать далее

«Удалённо» управляем компьютером с доступом в BIOS

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


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

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

Но как это сделать? Вот этим мы тут и будем заниматься…
Читать дальше →

Что не так с .NET в Yandex Cloud Functions

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

В статье объясню специфику Яндекс Функций. Покажу свой эксперимент с запуском приложений, которые опубликованы разными способами — в том числе с использованием AOT-компиляции. А в конце — сравнение результатов и выводы.

Интересны особенности работы .NET в Yandex Cloud Functions? Добро пожаловать под кат.

Хочу разобраться

Бескультурная сказка про Dottrace

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

Короткая зарисовка о том, почему важно осознанно писать каждую строчку кода, каждый символ. А заодно и небольшой мастер-класс по использованию dottrace и класса string одновременно.

Читать далее

Управление зависимостями с Autofac в C#

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

Привет, Хабр! Сегодня у нас на повестке дня библиотека Autofac — один из самых популярных инструментов для внедрения зависимостей в C#. Разберемся, как она помогает упорядочить код и сделать проект более управляемым.

Читать далее

Третье издание книги «ASP.NET Core в действии» в правильном переводе команды DotNetRu

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

Привет, на связи лингвисты инженеры сообщества DotNetRu. 3 года назад мы рассказывали о книге «ASP.NET Core в действии». А сегодня мы рады представить третье издание этой полезной и информативной книги.

Как и в прошлый раз, первый вариант перевода был подготовлен силами  издательства «ДМК Пресс», затем практикующие разработчики нашего сообщества перечитали текст, внесли правки, проверили код и рисунки, после чего книга отправилась в печать. Опыт выпуска предыдущих книг уже показал, что такое тесное сотрудничество положительно сказывается на качестве перевода. Ниже краткое содержание книги и несколько слов от команды переводчиков.

Читать далее

ActiveSession — новая библиотека. Общее описание

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

imageНу вот, я наконец-то сделал ее — первую версию библиотеки ActiveSession для ASP.NET Core. И для того, чтобы описать эту библиотеку, я написал эту статью.


Библиотека ActiveSession дает возможность, пока пользователь работает с веб-приложением в браузере, выполнять код на сервере в фоновом режиме. А результаты работы этого кода — и промежуточные, и окончательные — веб-приложение может потом получать через дополнительные запросы к серверу. Причем, этот код обрабатывает данные и выполняет операции, специфичные именно для этого конкретного экземпляра веб-приложения и работающего с ним конкретного пользователя: для разных пользователей, работающих с разными экземплярами, независимо выполняются разные, не связанные друг с другом экземпляры фоновой программы.
Если вам нужны (или просто интересны) такие возможности — читайте эту статью дальше.

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

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

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


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

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

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

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

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

Читать далее

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

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

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

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

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

Читать далее

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

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

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

Читать далее

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

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

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

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

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

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

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

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

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

Читать далее

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

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

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

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

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

Читать далее

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

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

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

Читать далее

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

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

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

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

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

Читать далее

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

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

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

Читать далее

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

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

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

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

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

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

Читать далее

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