Обновить
64.06

C# *

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

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

UNITY: Реализация движений для динамичного шутера. Часть 2

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

С момента прошлой статьи прошло достаточно много времени и я заметил одну интересную вещь: немало людей добавили статью в закладки, несмотря на небольшое число отметок “нравится”. Это убедило меня в полезности материала и потому я решил написать вторую часть.

Читать далее

Новости

Minecraft на Unity. Построение одного чанка

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

Я начал разработку Minecraft на движке Unity. Пока не решил, какие механики я повторю из оригинала, а какие добавлю от себя. Но сегодня я вам расскажу о моей логике построения чанка.

Далее предоставлю полный скрипт для построения чанка.

Читать далее

Serialize Reference. Познаем грани

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

Абстракции… Абстракций много не бывает!

SerializeReference в Unity интересная штука, а что если попробовать использовать ее чуть дальше базовой реализации?

Читать далее

JsonToLinq – автоматическая конвертация фильтров из JSON в LINQ Expression деревья

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

Используй JSON для создания LINQ-выражений!

Если черный ящик поддерживает входные сигналы в форме JSON, то им могут пользоваться самые разные клиенты!

Читать далее

Дышать или не дышать? Как я написала библиотеку и Telegram-бота для мониторинга воздуха в Ташкенте

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

Доброго времени суток, уважаемые хабровчане! Я живу в Ташкенте.

Как превратить беспокойство о качестве воздуха в полезный Open Source проект?

Читать далее

Как поменяется .NET и C# в ближайшие годы?

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

Внимание! Эта статья не является «серьезной аналитикой». Только мои мысли и наблюдения.

Любите наблюдать за развитием дотнета? Вот, и я люблю. В данный момент не существует опубликованного списка изменений для будущих .NET 11 и C# 15, не говоря уж о более поздних версиях. Даже Devblogs пока хранит молчание. Благо, что C# - быстро развивающийся язык, и кое-что мы можем понять даже сейчас, если посмотрим, над чем активно ведется работа, а так же по запрашиваемым сообществом фичам.

Читать далее

Топ-10 ошибок, найденных в C# проектах за 2025 год

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

В 2025 году команда PVS-Studio продолжила разбирать код открытых C#-проектов. За год было обнаружено немало дефектов, и из всего этого разнообразия мы выбрали 10 наиболее любопытных. Надеемся, что этот обзор будет не только интересным, но и полезным — приятного чтения!

Читать далее

Dynamic в C#: когда использовать

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

В 2010 году в C# 4.0 появилось ключевое слово dynamic. Тогда казалось, что это очень круто — наконец‑то можно обойти строгую типизацию там, где она откровенно мешает. Прошло пятнадцать лет, и эйфория давно улеглась. Теперь dynamic воспринимается скорее как специализированный инструмент с узкой областью применения.

Читать далее

Вайбкодинг: от Unity до AI, или Почему мы ненавидим инструменты, которые снижают порог входа

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

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

Сегодня я хочу поговорить о самом вайбкодинге как о явлении, вызывающем бурю эмоций в IT-сообществе. Этот термин, придуманный и популяризированный Андреем Карпатым в начале 2025 года, быстро стал нарицательным. Для одних это будущее, для других — синоним «говнокода». Но так ли страшен вайбкодинг, как его малюют?

Читать далее

Раскрываем мощь Zlib и немного Brotli в .NET

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

В .NET Core 2.1 Microsoft добавила поддержку Brotli-компрессии, предоставив разработчикам привычный контракт на базе Stream.

Идея проста: вы оборачиваете поток с несжатыми или сжатыми данными в BrotliStream и читаете или пишете данные, как обычно.

Читать далее

Как я писал систему, которая упростит поиск квартиры мечты

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

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

Объявления в России принято искать на многочисленных площадках с недвижимостью: Циан, Авито, Дом Клик и так далее У каждой свои механики и множество объектов недвижимости. Я пытался просмотреть все, которые подходили по параметрам «станция метро», «время до метро», «максимальная цена», «минимальная площадь». Но вскоре понял, что это занимает слишком много времени ежедневно.

Читать о приключении на 20 минут

Ваш кэш в .NET не защищён от cache stampede

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

У вас есть запрос к базе данных или к платному API, и вы кэшируете результат? Для кэша используете ConcurrentDictionary или MemoryCache?

У кэша, построенного на этих классах, есть одна неприятная проблема: отсутствие защиты от давки кэша (cache stampede). При определённой нагрузке кэш будет многократно выполнять один и тот же запрос из-за отсутствия координации между потоками и репликами. В этой статье я наглядно покажу, как давка кэша влияет на C# приложение и что с этим делать.

Читать далее

Await своими руками в C#

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

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

Многим кажется, что await работает только с Task и ValueTask, но на самом деле язык позволяет сделать любой объект ожидаемым — нужно лишь реализовать определённый паттерн.

Итак, зачем нужен свой await? Бывают случаи, когда вам хочется написать асинхронный метод, но результат приходит не из готового Task или таймера. Например, ждёте какое-то событие, изменение файла, считывание из сокета, или просто хотите встроить задержку без запуска Task. Когда вы пишете await expr, компилятор в глубине понимает так: берётся результат expr.GetAwaiter(), затем вызывается awaiter.IsCompleted. Если false, он подписывается на awaiter.OnCompleted, когда завершится, и потом берёт awaiter.GetResult().

Читать далее

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

Гайд: Как прострелить ноги unsafe кодом в C#

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

ДИСКЛЕЙМЕР: Это статья является ручным переводом оригинальной статьи с небольшими пояснениями. Поводом для перевода стало слишком частое использование unsafe кода в других статьях о C# на русском языке в том числе тут на хабре.

Читать далее

Оптимизация памяти в C# (и немного в Unity): эффективные методы и стратегии

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

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

Язык программирования C#, несмотря на то, что обеспечивает автоматическое управление памятью с помощью механизма сборки мусора (GC), требует от разработчиков специальных знаний и навыков для оптимизации работы с памятью.

Читать далее

Оптимизация загрузки CPU в C# (и немного в Unity): ключевые подходы и стратегии на примерах

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

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

Читать далее

I'm on the stairs to hell

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

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

Читать далее

Логирование с Serilog: как повысить отказоустойчивость и скорость

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

Когда логов становится слишком много, а сеть или облачный приёмник начинает тормозить, даже самый надёжный логгер может превратиться в источник проблем. Наша команда столкнулась с тем, что память забивалась логами, и это приводило к OutOfMemoryException и аварийному закрытию приложений.

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

Читать далее

Структура кода в папке Domain по DDD

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

В слое Domain 90% проектов с тактическим DDD забыли о самом главном. Сегодня мы вспомним то о чем забыли или узнаем то чего не знали.

Читать далее

DeepSeek + Unity: Как заставить ИИ рисовать схемы и не сойти с ума от веселья

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

Приветствую. Решил в данной статье поделиться информацией относительно приложения, которое я пишу на UNITY. Как-то запала мне мысль...

От детского конструктора до симуляции лампового усилителя за три минуты и одну шутку

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

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