Как стать автором
Поиск
Написать публикацию
Обновить
35.31

C# *

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

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

Реверсивный Proxy в C#

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

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

Сегодня расскажу о паттерне «Реверсивный Proxy» на примере онлайн‑магазина кормов для котиков. Суть паттерна проста: вместо обычного прокси, который просто передаёт вызовы, мы можем динамически менять логику выполнения методов. Под катом — теория, примеры и объяснение кода.

Читать далее

XR-технологии на практике: создаем иммерсивное приложение в Unity

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

Будущее за иммерсивными технологиями? Уже сейчас они стремительно развиваются и находят применение в различных сферах жизни — здравоохранении, образовании, развлечениях и бизнесе. Расширенная реальность, XR (Extended Reality) открывает новые горизонты взаимодействия человека с окружающим миром, объединяя виртуальную (VR), дополненную (AR) и смешанную реальность (MR). 

Привет, Хабр! Меня зовут Андрей, я С#-разработчик в компании SimbirSoft. В этой статье хочу поделиться практикой создания простых приложений в Unity, где реализуются XR-технологии. Для наглядности и более детального понимания особенностей разработки рассмотрим их применение в промышленной сфере на примере станка TV16. По нашему замыслу (с командой) с помощью XR-технологий можно демонстрировать его потенциальным клиентам, а также обучать новых сотрудников.

Читать далее 🦾

Сортируем сотни млн строк в разы быстрее библиотечных алгоритмов. А не замахнуться ли нам на ммм… на O(n)?

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

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

Кто-то в личное время покоряет Эверест, кто-то стрит-драйвит, кто-то на нижней Волге ловит спиннингом судаков и жерехов (я тоже, кстати, раз в году), кто-то разводит мадагаскарских шипящих тараканов, а кто-то развлекает себя эзотерикой. А я вот внерабочее время развлекаю себя тем, что напрягаю свой мозг математическими и алгоритмическими проблемами. Придумываю что-нибудь эдакое, необычное. Жаль, что за эту деятельность не платят. Говорят, такое напряжение мозга поможет в старости спастись от болезни Альцгеймера. Во всяком случае, весьма на это надеюсь.

И, рассуждая совсем о другой проблеме, но где имеет место быть сортировка большого количества объектов, в плане алгоритма сортировки объектов, меня осенило. Быстренько проверил кодом — ого, работает! Рассчитываю, что вам понравится.

Читать далее

Task Parallel Library в C#

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

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

Если ты всё ещё пишешь код на Thread или ThreadPool, пора остановиться и подумать. Зачем вручную управлять потоками, ловить дедлоки и страдать от гонок данных, если можно просто... не страдать?

Сегодня разберём Task Parallel Library (TPL) в C# — единственно правильный способ писать многопоточный код в 2025 году.

Читать далее

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

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

Всем привет! Многие сталкиваются с трудностями на собеседовании на вопросе по типу "Расскажите о порядке иницализации в C#". Либо банально когда видят квиз, стараются вспомнить, а что там должно инициализироваться? Сегодня многие вспомнят, а кто-то узнает о порядке инициализации. Затронем не только классы, а также структуры, а точнее - ключевое слово default для них.

Сделаем следующие классы и посмотрим, что будет при создании объекта B:

Читать далее

Новые интересные диагностики в PVS-Studio 7.35

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

С релизом PVS-Studio 7.35 в анализаторе появилось много новых диагностических правил. Вас ждёт: много MISRA для C, новые Unity-диагностики для C# и покрытие OWASP Top 10 для Java и многое другое!
Подробности вы сможете узнать в этой заметке.

Читать далее >>>

Универсальный индекс по документам на эластике

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

Всем привет. Меня зовут Женя Редько, я работаю в ядре Диадока — это сервис электронного документооборота от Контура. В моей подкоманде Документов мы занимаемся основными бизнес-сценариями Диадока. 

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

Читать далее

PropertyBitPack: Упаковка свойств в поля

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

Доброго времени суток дорогие читатели, короче в декабре 24 года разбирался в коде рослин, и жутко понравилось то как команда рослин уместила 12 булевых свойств и одно байтовое, в единственное ushort поле. Ну и на основе этого быстренько за месяц создал простенькую библиотеку, авось людям это будет нужно.

Читать далее

Отключение http-метрик в ASP.NET Core

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

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

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

От dotnet restore до publish, и что это значит для докера и построения CI/CD-пайплайна

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

Всем привет! Когда я узнаю, что человек передо мной начинает изучать c# - первым делом я его спрашиваю, как ему язык, на чем раньше программировал и прочее. И в какой то момент разговоры доходят до докера\пайплайнов => многие ребята (которые не пробовали это раньше) начинают нехотя избегать эту тему, считая её чересчур скучной, странной и вообще "это уже какой то девопс". Хотя на деле - зная базово, что значат папки в твоем проекте на компе - можно освоить базовые основы красивой работы докера (+ можно пришить пайплайны, основной мотив у них один). Поэтому сегодня я попытаюсь привлечь ваше внимание к базовым командам dotnet`а.

Все изучать и делать будем сразу в докере. Создаем такой докерфайл:

Читать далее

Стыковка космических аппаратов в Unity

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

Моделирование процесса стыковки космических аппаратов в Unity с использованием физики и решения задачи оптимизации.

Читать далее

Фрактальный декоратор в C#

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

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

Сегодня разберём паттерн «Фрактальный декоратор» — способ рекурсивного декорирования объектов, позволяющий динамически добавлять уровни логики без изменения базового кода.

Читать далее

Сгенерировать 100 млн случайных строк менее чем за минуту

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

Зачастую в программисткой практике необходимо нагенерировать множество случайных строк. Либо для тестового примера, либо как источник обезличивания, либо просто, чтобы наполнить разработческую БД. Задача, в принципе, понятная и легкая для любого уровня программиста. Но если это нужно сделать быстро, например, если набор случайных строк нужен здесь и сейчас, то можно использовать предлагаемое решение. Строки получаются разной длины, со 100%-ной хаотичностью (полностью несортированные). Выглядят эти строки вот так (спойлер):

Читать далее

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

Нюансы кастования в C#

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

Всем привет. Не так давно добавлял поддержку кастования через 'as' к себе в компилятор и задался вопросом — в каких случаях я получу Compile Time ошибку? Если заинтересовал — прошу под кат.

Читать далее

Делегаты в C# подробнее

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

Как они работают под капотом? Что именно происходит при "замыканиях", грамотное обращение со структурами при работе с делегатами.

На что нужно обращать внимание.

Читать далее

В Microsoft тоже ошибаются. Проверяем MSBuild

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

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

Читать далее

Кто сильнее: XDocument или XmlDocument, или как я приручал табличные редакторы

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

Привет! Я Кирилл Пронин, разработчик PIX RPA из PIX Robotics. В этой статье расскажу о том, как мы учили наш продукт работать с импортозамещенными табличными редакторами в Linux-подобных операционных системах, кто сильнее - XDocument или XmlDocument, и какие лайфхаки я унес с собой.

Читать далее

Условия в играх

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

Игры во многом построены на условиях. Если скорость больше нуля, надо сменить айдл анимацию на что‑то другое. Если хп меньше нуля, персонаж считается мертвым. Если у персонажа 10 клыков, он может сдать квест. Если в руках лазер, надо зажать ЛКМ для непрерывной стрельбы. С ружьем обычно так не получается, здесь одно нажатие — один выстрел. Если в руках молоток, то всё превращается в гвозди.

Если задача на реализацию системы активных умений может восприниматься как что‑то, для чего может потребоваться гибкая система. Особенно если по диздоку ясно, что их будет много и они будут сложно устроены. То задача на «запускать катсцену при входе в уровень» так воспринимается не всегда, так как это может показаться разовой отдельной задачей.

В какой‑то момент таких условий в мета геймлее становится много, и хочется их как‑то структурировать. И эта статья как раз может в этом помочь

Читать далее

Мне всё равно, какой у вас код-стайл

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

Привет, Хабр. Меня зовут Рогатнев Сергей. Я работаю в Контуре ведущим разработчиком уже более 7 лет. За это время я поработал как минимум над десятью разными проектами в разных командах. Это были и проекты с историей на 10 лет, и стартапы, делающие свои первые шаги. Где-то я был всего 2–3 месяца, а где-то задерживался на пару лет. Такой формат работы позволил мне увидеть совершенно разные подходы к работе и написанию кода. За это время я адаптировался к переходам и смене команд, но мой собственный code style практически исчез, потому что нет двух команд с одинаковым стилем.

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

Читать далее

CodeSigning для разработчиков под Windows по новым правилам

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

С 1.06.2023 году вступили в действие новые требования к сертификатам для подписи кода (aka CodeSigning), которые значительно осложнили жизнь разработчиков ПО. Суть изменений - прощай старый добрый PFX, закрытые ключи теперь должны быть неизвлекаемыми и некопируемыми. Примеры изменений у поставщиков: раз, два, три - в общем-то у всех одно и тоже.

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

Безопасность должна быть более безопасной

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