Обновить
64K+

.NET *

Хаб со знаниями про .NET

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

Остановили Python, .NET продолжил работать: как изолировать ИИ без лишних микросервисов

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

Остановил Python сервис с моделью машинного обучения, .NET API продолжил работать и вернул HTTP 503. После восстановления Python запрос снова завершился с HTTP 200, без перезапуска основного приложения.

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

Как это устроено

Новости

Сортировка слиянием, часть 2

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

Это продолжение статьи «Сортировка слиянием — не так просто, как кажется». Там я довёл тестовое задание — отсортировать 100 ГБ строк вида число. текст за час — до 32 минут: пайплайн из пяти стадий на Channels, Brotli, sort keys во временных файлах. Сортировка, конечно же, с учетом культуры.

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

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

Итог: 100 ГБ случайных строк (худший случай для сжатия) на обычном HDD — за 52 минуты.

Рассказываю, как код к этому пришёл: тут и предложение из комментариев, которое сработало слишком хорошо, и CSR-раскладка, которую подсказал ИИ, и малоизвестные части .NET.

Читать далее

Неожиданный антивайб разработки через ИИ-агентов

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

Менеджеры считают, что ИИ-агенты ускорят разработку в десять раз. Математика говорит, что ускорится только написание. Проверять смысл по-прежнему будут люди, с конечной скоростью, и очередь выстроится к самым опытным. PostgreSQL 19 не вышел в срок. Не потому, что ИИ нашёл много багов, а потому что ИИ научился генерировать правдоподобные отчёты быстрее, чем люди успевают их читать. В статье разбираю, почему так, где настоящий предел и что меняется.

Читать далее

Бекап Яндекс 360 в обычную папку: почта, Диск, контакты и календарь

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

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

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

Читать далее

ShittyMaze: жизнь и страдания vr инди‑разработчика

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

Расскажу, жив ли vr gamedev в россии в 2к26. Приятного чтения.

Эта статья является продолжением моего предыдущего материала, — советую ознакомиться, там я расписываю, как зарождалась идея и как пользоваться KNI чтобы билдить c#‑ игру под разные платформы.

Читать далее

Библиотека EMX Controls для Avalonia UI — Обновление 1.5 — Октябрь 2026

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

Друзья, мы готовимся к очередному релизу библиотеки контролов EMX Controls для Avalonia UI. В этом обновлении мы добавили одну из самых полезных функций в контролах Data Grid и Tree List, расширили визуальные темы, включили сервисы для работы с окнами и диалогами и многое другое.

Читать далее

Создаём DSL на C#: генерация кода, BlackSilence и Hot Reload

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

Пам пам пам пам, пара пам пам пам, кхм кхм, к сути, вот и все заключительная часть о том как создать свой dsl на c#.

Читать далее

Собеседования на программиста в эпоху AI

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

Есть ли теперь вообще толк от собесов, проверяющие знание теории? И как их теперь проводить, когда по ту сторону уже сидит не только кандидат, но и live-агент, отвечающий на вопрос быстрее, чем вы успели его закончить. Толк есть, но только не в том виде, как мы привыкли. Об этом далее.

Читать далее

От школьного «Коммерсанта» до собственной экономической игры: проект, к которому я вернулся через семь лет

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


В 2019 году я решил написать экономическую игру. План казался скромным: взять идею любимого «Коммерсанта» времён MS‑DOS, добавить несколько банков, новости и чуть более осмысленное поведение цен.

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

Проект отправился в папку со старыми поделками.

В 2026 году я нашёл его снова. За это время успел пройти путь от начинающего разработчика до ведущего инженера‑программиста. Посмотрел на старый код, вспомнил, что хотел сделать, и решил вернуться к идее. Но теперь — не ради улучшенной копии игры из детства, а ради собственной экономической стратегии.

Это первая статья о проекте: откуда он появился, какую игру я хочу получить, что в ней уже работает и куда я собираюсь двигаться дальше.

Читать далее

От Architecture Baseline к рабочему Full Stack MVP: как не усложнить архитектуру раньше времени

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

Architecture Baseline определяет границы системы и ключевые архитектурные решения. Но настоящая проверка начинается тогда, когда эта архитектура превращается в работающий код.

В этой статье про переход к первой Full Stack вертикали Enterprise GenAI Platform: React, ASP.NET Core, EF Core и PostgreSQL, модуль Chats, границы frontend и backend, observability, автоматические проверки и End-to-End acceptance.

Главный вопрос “как перейти от архитектурной модели к реализации, не разрушив её преждевременным усложнением”.

Читать далее

N‑tier, Clean Architecture и Vertical Slice: практическое сравнение для.NET

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

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

Большинство .NET-разработчиков знакомятся с этими тремя архитектурами в одном и том же порядке: N-tier — в первых проектах, Clean Architecture — когда её приносит команда или шаблон, и Vertical Slice — когда о ней упоминают на код-ревью или в докладе на конференции. Каждую из них подают как улучшение предыдущей. На практике они отвечают на несколько разные вопросы, и правильный выбор зависит скорее от проекта, чем от того, какая из них новее.

Читать далее

«С/у», «Кладовка» и 638 кодов МССК: подбираем коды помещений для ЦИМ АГР

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

Меня зовут Кирилл, я работаю BIM‑менеджером, писал эту статью совместно со своей коллегой Анастасией @nobimnolife. Помучавшись с разработкой ЦИМ без какой‑либо автоматизации, вместе мы подготовили плагин IDS Core. В этой статье – способы подбора кода без ИИ, метод Левенштейна и сила общего труда.

С 2026 года архитектурно-градостроительное решение в Москве сдаётся вместе с цифровой информационной моделью в IFC. У каждого помещения в ней должны быть заполнены два свойства: RUS_MSSK_SpaceAndZone_Code и RUS_MSSK_SpaceAndZone_Name — код и наименование по Московской строительной системе классификаторов (МССК), раздел «Помещения и зоны». В жилом доме это сотни помещений, и называются они в модели так, как привыкла мастерская: «С/у», «Кладовка», «ПУИ/Мусороудаление (К1)», «Элетрощитовая жилой части». Классификатор таких имён не знает, а проверяющие на вопрос «а если нужного нет?» отвечают честно: берите близкое по смыслу.

Мы решили, что «близкое по смыслу» можно хотя бы частично посчитать. Ниже — как устроен классификатор, на чём ломается наивный поиск похожих строк, где пригодился Левенштейн и почему точность упирается не в алгоритм, а в людей.

Читать далее

ASP.NET Core: сохраняем логи Serilog из контейнера Docker на хосте

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

Serilog - популярная система логирования для ASP.Net Core (MVC) приложений, которая легко подключается и имеет гибкие настройки. При запуске в Docker (и далее в Kubernetes) важно, чтобы система логирования записывала вывод в stdout, чтобы к ним имели доступ стандартные команды, напр.

docker logs {container_name}

Хорошая новость - при использовании обычного ConsoleSink (вывод в консоль), логи автоматически становятся доступными для docker logs. Не очень хорошая новость - если вы также используете FileSink (вывод в файлы) и хотите хранить эти файлы на хосте,чтобы после перезапуска контейнера они не потерялись, то придется повозиться. Точнее, возможно придется - если вы следуете рекомендациям по безопасности и запускаете процесс внутри контейнера не под root-ом. Но обо всем по порядку.

Читать далее

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

AS4 в.NET без Java‑шлюза: ebMS 3.0, WS‑Security и неотрекаемые квитанции шагом маршрута

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

AS4: подписанный и зашифрованный обмен документами с гос- и корпоративными системами ЕС. Теперь нативный коннектор redb.Route, без Java MSH.

Если искать ...

Читать далее

Два часа выгрузки ради пустого параметра: проверяем ЦИМ для АГР внутри Revit

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

Меня зовут Кирилл, я работаю BIM‑координатором, писал эту статью совместно со своей коллегой Анастасией. Помучавшись с разработкой ЦИМ без какой‑либо автоматизации, вместе мы подготовили плагин IDS Core. В этой статье — проблемы, которые нас натолкнули на создание нужных инструментов. Мы оба давно работаем в BIM, и в начале 2026 года перед нами появилась новая задача: нужно было научиться стабильно готовить модели в IFC под новые требования ДГП.

С января 2026 года архитектурно‑градостроительные решения в Москве сдаются вместе с цифровой информационной моделью в IFC. Требования к ней описаны машиночитаемо — файлами IDS, проверяет их сервис «Строим просто». Схема, в общем, понятная. Пока не начнёшь ей пользоваться.

Читать далее

DotNext 2026

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

Выложу здесь в одну статью серию постов из моего ТГ канала про то, как в этом году прошёл DotNext.

25 и 26 сентября в Москве прошла очередная конференция DotNext. Вернулся и делюсь впечатлениями. Я уже писал, какие доклады хочу посетить, однако, по ходу несколько раз передумал. На этот раз решил посетить несколько воркшопов, т.к. они не записываются на видео, а доклады можно посмотреть в записи позже. Воркшоп отличается от доклада тем, что на нём разбирается конкретный практический пример, а аудитория активно участвует, задавая вопросы или предлагая решения. Раньше они меня пугали своей продолжительностью. Доклады длятся по часу, а воркшоп – это обычно от полутора часов и дольше. ИЧСХ, в начале каждого воркшопа любой докладчик считает своим долгом упомянуть, что времени у нас очень мало 😉. Хочу признать, что я много потерял, не посещая воркшопы раньше. Это отличный опыт практики и командной работы.

Первым был воркшоп от Андрея Цветцих (они с братом Денисом завсегдатаи различных конференций) «Паттерны асинхронного взаимодействия в распределенных системах». Мы разбирали пример реализации сервиса уведомлений (например, по e-mail) о событиях. Как настроить передачу информации в сервис рассылки? Какие данные передавать? Как реализовать гарантии доставки и избежать отправки дублирующих сообщений? Возможно ли реализовать доставку «exactly-once»? Интересно, что здесь нет единственно верного решения. Каждое решение – компромисс со своими плюсами и минусами.

Читать далее

Поменяли object на Lock, и два потока встретились в критической секции

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

В .NET 9 появился новый примитив синхронизации System.Threading.Lock, и многие команды начали заменять привычные object-замки на новый тип в поисках более предсказуемого поведения и производительности. Но такая замена меняет саму механику работы lock: достаточно одного места, где экземпляр потеряет свой тип, чтобы два участка кода перестали синхронизироваться между собой.

В статье разберемся, как именно устроена новая модель блокировок в C#, где компилятор помогает заметить проблему, а где она остаётся скрытой, и стоит ли переходить на Lock ради заявленных преимуществ.

Разобраться глубже

О пользе ограничений в MSSQL

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

Мы привыкли, что ограничения (CONSTRAINT) — это способ указания допустимых значений для столбцов, ограничение уникальности и создание связей между таблицами. Это отличный способ поддерживать целостность данных, предотвращая некорректные операции. Но помимо этого, ограничения также помогают оптимизатору запросов генерировать более эффективный план выполнения. Как именно? Читайте ниже.

Читать далее

RCE из одного XML‑тега: разбираем небезопасную десериализацию XmlSerializer с нуля

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

Дисклеймер. Все описанное выполнялось в изолированной лаборатории на вымышленном приложении, которое я собрал специально для статьи. Совпадения имен с реальными продуктами случайны. Материал образовательный — для AppSec, .NET-разработчиков и всех, кому интересно, как «сохранить объект в файл» превращается в удаленное выполнение кода. Не применяйте это к системам, на которые у вас нет письменного разрешения.

Есть распространенный страх: анализ защищенности — это что-то темное, для избранных, с ассемблером и магией. На деле большая часть работы — это чтение кода по понятным правилам. Сейчас разберем реальный по механике баг (небезопасная десериализация в .NET → выполнение произвольной команды) так, будто читаем букварь: сначала буквы, потом слоги, потом целые слова.

К концу статьи вы будете уметь: декомпилировать .NET-приложение, находить в нем точки сериализации и десериализации, читать свойства и сеттеры, отличать безобидный класс от «gadget» и по одной строчке понимать, есть ли уязвимость. Все воспроизводится на приложенном стенде.

Про цвет. Листинги с подсветкой даны картинками. Цвета: желтый — имя класса/тип, синий — имя свойства, зеленый — значение (данные), красный — опасное место (sink, уязвимая строка, побочный эффект). В «было/стало» красный — что убираем, зеленый — что ставим.

Читать далее

Как на wine.co.za упростили поиск по архиву из примерно 145 тысяч записей с помощью Manticore Search

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

На wine.co.za данные хранятся в MariaDB, раз в день копируются в Manticore, а сайт обращается к поиску через библиотеку для .NET. Разбираем, как устроен поиск по архиву из примерно 145 тысяч записей и что изменилось для посетителей и небольшой ИТ-команды.

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