Обновить
64K+

C# *

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

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

Программируем без IDE или применение qwen и qwen coder для написания софта

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

Сейчас мы попробуем быстро написать сканер ntfs alternate data streams потоков, на не совсем тривиальном стеке и архитектуре. Сделал я это в первую очередь для тестирования возможностей моделей семейства qwen.

Краткое пояснение для тех, кто не работал в это сфере. NTFS (аббревиатура от англ. new technology file system — «файловая система новой технологии») — стандартная файловая система для семейства операционных систем Windows NT. Одним из ее малоизвестных свойств является наличие альтернативных потоков данных (англ. Alternate Data Streams, ADS), который представляют собой метаданные, связанные с объектом файловой системы NTFS. Таким образом к файлу можно прикрепить еще несколько потоков данных которые будут не видны стандартными средствами ОС.

Читать далее

Новости

Динамический метод численного интегрирования Гаусса‑Лежандра на C#: вычисляем узлы и веса «на лету» без переполнения

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

Существуют ряд распространенных методов численного интегрирования с постоянным шагом: метод прямоугольников, трапеций Симпсона (парабол). Но оказывается, что в некоторых случаях гораздо эффективнее использовать методы с переменным шагом. Сегодня мы как раз рассмотрим один из таких методов – метод Гаусса-Лежандра. 

Читать далее

TermForge: SSH, файлы и Docker в одном рабочем пространстве

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

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

Читать далее

FAIRouter вышел на NuGet. Выбираем языковую модель под задачу в несколько строк на C#

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

Наш open source маршрутизатор ИИ-моделей FAIRouter (C# версия) вышел на NuGet. Цель проекта обеспечить оптимальный баланс скорости, стоимости и качества, т.е. получать ответ достаточного качества быстрее и дешевле. Показываю, как поставить пакет, отправить первый запрос, обучить маршрутизатор LLM и агентов на отзывах, а также подключить своих кандидатов.

Читать далее

Интеграция без хаоса: почему настроить обмены между системами недостаточно

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

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

Читать далее

Заметочник для Windows на Markdown без WebView: C#, Avalonia и AvaloniaEdit, запуск за секунду

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

Я хотел заметочник, где заметки — обычные .md-файлы в обычной папке, есть [[ссылки]] с обратными ссылками и поиск, а текст сразу выглядит оформленным, без отдельной панели предпросмотра. И чтобы он запускался быстро, не тащил в память целый браузер и не требовал аккаунта. Готовые варианты почти все построены на WebView или Electron. Я написал свой: Leaflet, C# и Avalonia, без единой веб-страницы внутри. Расскажу, как он устроен и где пришлось повозиться.

Читать далее

Статистика скачиваний релизов GitHub одним окном: WinForms-утилита в одном .cs-файле без Visual Studio

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

GitHub показывает звёзды и форки, но не показывает, сколько раз скачали файлы из релизов. Цифра есть в API, поле download_count у каждого ассета. Я захотел видеть её сразу по всем своим проектам, да ещё с историей, и написал утилиту. Ниже — как она устроена и на что я налетел.

Читать далее

Где Runtime Async в .NET 11 экономит память, а где нет

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

В.NET 11 привычный механизм async/await меняется: управление приостановкой методов переходит к рантайму, а JIT получает новые возможности для оптимизации. Но насколько это снижает аллокации в реальном коде и почему результаты замеров иногда противоречат друг другу? Разбираем Runtime Async на примере бенчмарков, сравниваем результаты с классической реализацией и выясняем, в каких сценариях выигрыш действительно заметен.

Изучить результаты тестов

Маршрутизатор языковых моделей изнутри. От вектора задачи до судьи и обучения на отзывах

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

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

Читать далее

.NET MAUI-приложение падает после сборки в Xcode 27: UIScene, плавающая панель iOS 26 и что ещё пришлось поправить

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

Собрала .NET MAUI-приложение в Xcode 27, поставила на iPad — и оно упало сразу при запуске. А после того как я это починила, оказалось, что интерфейс не дружит с плавающей панелью вкладок из iOS 26: под ней пустая полоса, линия-разделитель висит в воздухе, карта обрезается.

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

Спойлер: платформенного кода получилось немного — один класс на 60 строк, один стиль и пара файлов для запуска. А ушло на всё два с половиной дня

Узнать, как это задизайнено

DDD в веб-консоли для LDAP: что сработало, что пришлось выкинуть и почему границы слоёв теперь проверяют тесты

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

Axia — open-source веб-консоль для Active Directory и OpenLDAP на .NET 10. Начиналась она с учебного DDD: агрегаты, доменные события, MediatR. После нескольких ревью безопасности от этого осталась половина. Главная причина: данные принадлежат каталогу, а не нам, и агрегат User с инвариантами оказался фикцией. Рассказываю, что окупилось (value objects, порты и адаптеры, тесты на границы слоёв), что пришлось выкинуть (аудит на доменных событиях) и почему самое важное правило безопасности так и не поместилось в домен.

Читать далее

Валидация JSON во входящих REST-запросах DATAREON Platform

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

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

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

Читать далее

C# теперь в GigaIDE: бесплатно и в одном окне

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

Типичная картина: в одном проекте Backend на Java, вспомогательные сервисы на Python, интерфейс на TypeScript, а один микросервис — на C#. Знакомо? Последний компонент часто означает вторую IDE, другие горячие клавиши, отдельные настройки и постоянные переключения между средами. В GigaIDE появилась поддержка C# и .NET. C# больше не требует отдельной IDE: разработка ведётся в единой среде, без переключений и потери контекста. Функция доступна бесплатно в Community-режиме.

Читать далее

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

Почему тормозят списки в .NET MAUI: замеры на слабом планшете и что реально помогло

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

В прошлой статье я рассказывала, как переводила приложение для торговых представителей с Xamarin.Forms на .NET MAUI. Там был короткий раздел про жалобы агентов на «тормоза»: бенчмарки показывали, что логика работает быстро, а проблема была в отрисовке списков. В этой статье — подробно: как я это мерила, что делала три с половиной месяца и что в итоге получилось в цифрах.

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

Узнать, что горит

Вайбкодинг: что дальше?

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

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

Читать далее

Публикуем .NET MAUI‑приложение в RuStore: от унаследованного Xamarin‑проекта до первого релиза

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

Миграция с Xamarin.Forms на.NET MAUI, десятки тысяч строк чужого кода, несколько неудачных попыток переписывания и первая публикация приложения в RuStore. Расскажу, как проходил этот путь, с какими трудностями столкнулась и что стоит учесть при подготовке Android‑приложения к публикации. А в конце — о том, что ждёт впереди: переход на новую версию на iPad.

Читать про миграцию и RuStore

Почему число это плохой адрес для инструкции?

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

В какой-то момент HydraScript перестал справляться со своей основной задачей — выполнять программы. Статический анализ падал на корректном коде, и его пришлось отключить. Кодогенерация назначала инструкциям неверные адреса: виртуальная машина зацикливалась или падала с исключением.

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

Читать далее

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

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

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

Читать далее

Scrutor: логирование отменённых HTTP-запросов

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

Представьте клиент-серверную архитектуру, где фронтенд написан на React, бэкенд — на ASP.NET Core, а для логирования на стороне бэкенда используется NLog.

Иногда может происходить следующий сценарий: пользователь находится на веб-странице и выполняет какое-то действие (например, нажимает на кнопку «Обновить»). В этот момент фронтенд присылает HTTP запрос на бэкенд, и по какой-то причине этот запрос начинает долго обрабатываться на бэкенде. В это время пользователь уходит со страницы, браузер присылает отмену запроса, бэкенд получает сигнал отмены (CancellationToken), выбрасывается OperationCanceledException, и в логи улетает полноценная ошибка.

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

Рассказываю, почему стандартные фильтры NLog или кастомные Middleware не решают эту проблему системно. Разбираем, как с помощью библиотеки Scrutor динамически декорировать ILoggerProvider и глушить логи отмен на уровне рантайма без размазывания try/catch по контроллерам. Внутри — анализ подводных камней, бенчмарки и ссылка на репозиторий с тестами.

Читать далее

Оптимизируем отпуск как инженеры: искусство продавать выходные

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

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

А я задался вопросом - можно ли найти оптимальный отпуск под запросы и открыл VS Code\Jupiter с F# (пока оно еще работает). Всё живёт в Jupyter-ноутбуке с ядром .NET Interactive — да, F# умеет в ноутбуки, питонисты, не ревнуйте.

Спойлер: солвер нашёл способ заработать на отпуске 85 тысяч. Мне не понравилось.

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