Всем привет! Хочу рассказать о шаблонизаторе сообщений, который я разработал для нашей CRM, и о том, как он менялся по мере появления новых задач. Началось всё с напоминания о встрече. Имя клиента, дата, адрес. Несколько значений нужно вставить в текст и отправить сообщение. Если вы делали уведомления, задача наверняка знакома. На первый взгляд, обсуждать тут почти нечего.
Рубрика «.net»
Что стоит за простым уведомлением: история разработки шаблонизатора на C#
2026-09-11 в 10:38, admin, рубрики: .net, C#, dynamics crm, email, parser, sms, sql, templates, уведомления, шаблонизаторОтбор акций на .NET: 14,5 млн баров в SQLite, фильтр, который мерил не в тех единицах, и перестановочный тест
2026-09-11 в 9:26, admin, рубрики: .net, C#, sqlite, анализ данных, бэктест, временные ряды, оптимизация, отбор акций, параллельные вычисления, перестановочный тестКаждый вечер мне нужно ответить на один вопрос: на какие бумаги из примерно тринадцати тысяч имеет смысл потратить время сегодня. Не «какие вырастут» — этого никто не знает, — а на каких стоит нарисовать уровень и поставить заявку.
Чему десять лет в разработке научили меня о технологиях
2026-08-06 в 6:49, admin, рубрики: .net, карьера, опыт, разработка, софт-скиллыРазмышления фулстек-инженера, который начинал с небольших сайтов, а закончил системами для банков, государства и маркетплейсов.
Ленивый LINQ: разбираем yield и ленивые вычисления по кирпичикам
2026-07-21 в 12:09, admin, рубрики: .net, C#, deffered execution, ienumerable, linq, yield, итераторы, компилятор, ленивые вычисления, отложенные вычисленияВведение
Каждый C#-разработчик хотя бы раз писал что-то вроде:
var result = numbers.Where(x => x > 10).Select(x => x * 2).Take(5);
И почти каждый на старте карьеры удивлялся, узнав, что эта строчка ничего не вычисляет. Ни один элемент коллекции ещё не тронут, ни один предикат не вызван — вся цепочка спит. Вычисления начнутся только тогда, когда мы начнём перебирать result в foreach или вызовем .ToList().
FOG Prime: локальный помощник для стабильной работы Discord и YouTube в Windows
2026-07-18 в 9:21, admin, рубрики: .net, Discord, dpi, github, open source, windivert, windows, YouTube, сети
Когда Discord внезапно теряет голосовую связь, а YouTube открывается через раз, пользователю обычно предлагают длинную инструкцию: проверить DNS, перебрать параметры, запустить несколько скриптов и каким-то образом не запутаться в результатах. Читать полностью »
Код — больше не первая стадия: эксперимент с агентами
2026-06-22 в 10:35, admin, рубрики: .net, ai-агенты, C#На предыдущей работе был простой подход: используем любые ИИ‑инструменты — главное результат. Что приводило к тому, что разработчик не мог внятно объяснить, для чего это написано. Главное, что тесты проходят? А то, что находится в чёрном ящике — дело второстепенное.
На текущей работе к ИИ отношение осторожное. По моим наблюдениям многие используют как чат, а не как агент. Есть определенные модули, которые не должны утечь. Мне стало интересно разобраться насколько можно автоматизировать генерацию кода.
Я вижу четыре основных варианта использования ИИ в разработке:
Idempotency keys: 5 граблей, которые мы поймали на проде
2026-05-27 в 1:32, admin, рубрики: .net, api, C#, idempotency, intent-key, race condition, грабли, идемпотентность, платежи, распределенные системыПятница, 23:47. PagerDuty: “Платёж AmEx, провайдер вернул 5xx три раза подряд, билеты не зарезервированы.” Открываю логи – действительно 3 ответа провайдера с 5xx, ни одной успешной транзакции по нашей базе. Закрываю как временный сбой на стороне провайдера, пишу короткую сводку в дежурный чат и иду досматривать. Через 40 минут второй алерт – уже от ночной поддержки: клиент прислал скрин выписки, 3 списания подряд за одну бронь. У клиента рейс через 6 часов, ему нужна действующая бронь и подтверждение, что он завтра нормально улетит, а не тикет в поддержку.
Голос в текст, текст в перевод: строим десктопное приложение для распознавания речи с Azure Speech SDK и NAudio
2026-05-12 в 9:15, admin, рубрики: .net, avaloniaui, azure speech services, C#, naudio, reactiveui, диаризация, распознавание речи, транскрибацияТы только что получил задачу перенести сервис на gRPC - и думаешь, что это просто «взял protobuf, описал контракты, запустил кодогенерацию«? Так думал и я. До тех пор, пока не столкнулся с тем, что decimal в protobuf попросту не существует, nullable int превращается в нечто с флагом HasValue вместо привычного int?, а два enum в одном файле могут убить сборку из‑за конфликта имён значений — и компилятор скажет тебе об этом совсем не очевидно.»

