В Windows 95 был странный эффект: если перезагружать систему с зажатым Shift, появлялась надпись «Windows is restarting», и перезапуск занимал заметно меньше времени. Для многих это выглядело как полумистический хак, хотя на самом деле там работала вполне конкретная логика в старом 16-битном коде.
При обычном перезапуске Windows 95 инициировала полноценный холодный ребут — то есть машина проходила полный цикл начальной инициализации BIOS и заново загружала систему с нуля.
При перезапуске с зажатым Shift вместо этого вызывался старый 16-битный ExitWindows со специальным EW-флагом, который говорил ядру не перезагружать железо, а только выгрузить саму Windows и вернуться.
📍 Навигация: Вакансии • Задачи • Собесы
#async_news
Please open Telegram to view this post
VIEW IN TELEGRAM
❤15💯2👍1🥰1
ToLookup — это не только группировка данных. Метод создаёт индексированную структуру, что делает его быстрой альтернативой GroupBy в некоторых сценариях.
Допустим, у вас есть список чисел и нужно найти те, что встречаются больше одного раза.
Стандартный подход через GroupBy:
public static IEnumerable<int> FindDuplicates_GroupBy(List<int> data)
{
return data.GroupBy(x => x)
.Where(g => g.Count() > 1)
.Select(g => g.Key);
}
Работает, но
GroupBy выполняется лениво — при каждой итерации происходит перегруппировка.Решение через ToLookup:
public static IEnumerable<int> FindDuplicates_Lookup(List<int> data)
{
var lookup = data.ToLookup(x => x);
return lookup.Where(g => g.Count() > 1)
.Select(g => g.Key);
}
ToLookup создаёт индекс сразу и дальнейшие операции работают с готовой структурой в памяти.
📍 Навигация: Вакансии • Задачи • Собесы
#sharp_view
Please open Telegram to view this post
VIEW IN TELEGRAM
❤8
This media is not supported in your browser
VIEW IN TELEGRAM
Пятница, 19:00. Худшее время для деплоя, но идеальное, чтобы наконец подружить .NET-приложение с нейронками через современные RAG-инструменты.
Как интегрировать LLM в проект и заставить её работать с вашими специфичными данными? Разберёмся на примере концепции RAG.
Программа открытого урока:
— сравнение
— работа с векторными БД и эмбеддингами;
— демонстрация пайплайна, который «читает» документацию в PDF.
Один из спикеров — Алексей Яндутов, ML-инженер в поиске Яндекса.
Это вводное занятие к большому курсу «Разработка AI-агентов». Мы ориентируемся на разработчиков, а не на «промпт-инженеров».
Записаться на урок
Как интегрировать LLM в проект и заставить её работать с вашими специфичными данными? Разберёмся на примере концепции RAG.
Программа открытого урока:
— сравнение
RAG и Fine-tuning: архитектурный выбор;— работа с векторными БД и эмбеддингами;
— демонстрация пайплайна, который «читает» документацию в PDF.
Один из спикеров — Алексей Яндутов, ML-инженер в поиске Яндекса.
Это вводное занятие к большому курсу «Разработка AI-агентов». Мы ориентируемся на разработчиков, а не на «промпт-инженеров».
Записаться на урок
proglib.academy
Курс| Разработка AI-агентов
Курс про контролируемую разработку AI-агентов: качество, стоимость, наблюдаемость и тестирование. С первого занятия — практическая работа.
❤1
Не спешите отвечать, код вполне может содержать намеренные ошибки. На интервью ценят скорость, но лучше ответить без ошибок.
Посмотреть ответ 👉
📍 Навигация: Вакансии • Задачи • Собесы
#dotnet_challenge
Please open Telegram to view this post
VIEW IN TELEGRAM
🥱20🌚1
Наткнулись на статью, которая ставит под сомнение один из главных технологических трендов последних лет — отказ от XML в пользу JSON.
XML был отвергнут не из-за технической неполноценности, а потому что победил JavaScript.
Что мы потеряли, отказавшись от XML:
• Схемы и валидация — XSD позволяет проверять типы и структуру данных на уровне документа, до парсинга. JSON Schema существует, но это сторонняя надстройка, которая так и не стала стандартом.
• Пространства имён — можно комбинировать документы из разных схем без конфликтов. В JSON приходится импровизировать с префиксами.
• Комментарии — в XML они есть изначально. JSON их запрещает, потому что они усложняют парсинг.
• Самодокументирование — XML-документ содержит или явно ссылается на свою схему. В JSON приходится гадать, что значит
"status": 1.Вместо того чтобы использовать XML, мы потратили миллиарды на создание библиотек валидации, TypeScript, генераторов API-клиентов — по сути, воссоздавая то, что уже было в XML.
Microsoft, несмотря на все критику, продолжали использовать XML для MSBuild, WPF, и системы конфигурации .NET Framework. Переход на JSON в .NET Core случился не потому что XML был плох, а под давлением модных трендов.
📍 Навигация: Вакансии • Задачи • Собесы
#il_люминатор
Please open Telegram to view this post
VIEW IN TELEGRAM
👍26🤔6
Рынок IT вакансий в 2026 году переполнен кандидатами с похожими PDF резюме. Рекрутеры тратят на просмотр отклика секунды, и стандартный формат часто теряется в потоке.
Новые форматы самопрезентации помогают выделиться и сразу показать навыки разработчика. Например, резюме в виде changelog'а.
Если стандартное резюме не приносит откликов, имеет смысл попробовать хотя бы один из нестандартных форматов и добавить его к привычному PDF.
📍 Навигация: Вакансии • Задачи • Собесы
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
Задачи копятся, а ты всё ещё вручную «жаришь» контроллеры под каждый промпт?
Это работа в забегаловке. Настоящий Шеф не пишет услуги вечно — он проектирует Систему. 💠
В понедельник, 26 января, стартует интенсив по разработке ИИ-агентов. Мы научим создавать автономные решения в экосистеме .NET, которые закроют рутину, пока ты занимаешься архитектурой.
В программе:
— мультиагентные системы в
— сложная логика в
—
Записаться на курс
Это работа в забегаловке. Настоящий Шеф не пишет услуги вечно — он проектирует Систему. 💠
В понедельник, 26 января, стартует интенсив по разработке ИИ-агентов. Мы научим создавать автономные решения в экосистеме .NET, которые закроют рутину, пока ты занимаешься архитектурой.
В программе:
— мультиагентные системы в
CrewAI: делегирование рутины и контроль логики;— сложная логика в
LangGraph: стейт-менеджмент и работа с графами;—
tool use интеграция: связь агентов с вашим API, БД и облаком. ⚡️Записаться на курс
🥱5❤1
Выходные выходными, но новости должны быть по расписанию.
— Быстрая загрузка Windows 95
— NBomber 6.2.0
— Ghostty почти запретил ИИ-генерированный код
Разработчик терминала Ghostty Митчелл Хашимото ужесточил правила: теперь любой PR с кодом от ИИ вроде Claude или Cursor требует раскрытия использования модели, полного тестирования человеком и предварительного одобрения issues, а нарушителей грозит бан и публичное осмеивание.
— Microsoft выпустили WinApp
Новый открытый инструмент WinApp CLI упрощает жизнь разработчикам на кросс-платформенных фреймворках вроде Electron, Rust или Dart, избавляя от ручной настройки SDK, манифестов, сертификатов и упаковки в MSIX.
— Chrome в Windows 11 скоро позволит перетаскивать несколько файлов из веб-приложений в Проводник
📍 Навигация: Вакансии • Задачи • Собесы
#async_news
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3
Завтра стартуем: курс по разработке ИИ-агентов в .NET 💠
Хватит писать бойлерплейт — переходите к архитектуре автономных систем. Мы научим проектировать мультиагентные связки на
👉 Успейте занять место до начала занятий
Хватит писать бойлерплейт — переходите к архитектуре автономных систем. Мы научим проектировать мультиагентные связки на
CrewAI, управлять стейтом в LangGraph и подключать нейросети к вашим API и облаку.👉 Успейте занять место до начала занятий
🌚7👾2
Разбираем типичную ошибку, которая встречается даже в коде крупных проектов.
Код с подвохом:
struct StackValue
{
public override bool Equals(object obj)
{
if (Object.ReferenceEquals(this, obj))
return true;
if (!(obj is StackValue))
return false;
var value = (StackValue)obj;
return this.Kind == value.Kind
&& this.Flags == value.Flags
&& this.Type == value.Type;
}
}
На первый взгляд всё логично: сначала быстрая проверка через ReferenceEquals, если не сработала — сравниваем по полям.
В чём подвох
ReferenceEquals принимает параметры типа object. Когда вы передаёте структуру, происходит боксинг: значение копируется в хип и оборачивается объектом.Что происходит при вызове
Equals:• this упаковывается в новый объект
• Создаётся уникальная ссылка в heap
• Сравниваются две разные ссылки
• Результат всегда false
В современных версиях .NET есть правило CA2013, которое отлавливает подобные случаи.
📍 Навигация: Вакансии • Задачи • Собесы
#il_люминатор
Please open Telegram to view this post
VIEW IN TELEGRAM
👍20🥱3❤1
Классические design patterns из Банды четырёх часто вредят cloud-native приложениям.
Большинство классических паттернов проектирования создавались для in-process объектно-ориентированных систем — а не для распределённых, подверженных сбоям облачных окружений.
Но в 2026 году всё ещё встречаются облачные системы, построенные на репозиториях повсюду, синглтонах как кеше и фасаде, оборачивающем HTTP-вызовы.
Классические паттерны из книги Банды Четырёх предполагают общую память, быстрые вызовы методов, стабильные процессы, редкие сбои и единый блок развёртывания. Облачные системы предполагают противоположное: распределённую память, сетевые вызовы с задержками, временные процессы, постоянные частичные сбои и множество независимых сервисов.
Синглтон: самый опасный паттерн
Синглтон кажется удобным для глобального состояния в одном процессе. В облаке каждый под имеет свой экземпляр, и состояние рассинхронизируется при масштабировании. Холодные старты сбрасывают данные, а поды работают с разными версиями.
Репозиторий тормозит запросы
Репозиторий абстрагирует данные, чтобы домен оставался чистым. В распределённых системах это плодит лишние вызовы через сеть, N+1 проблемы и перерасход ресурсов БД. Каждый запрос добавляет задержку и траты.
Лучше ориентироваться на запросы: оптимизировать чтение, использовать CQRS для доминирующего чтения и принимать форму данных как часть дизайна. Доступ к БД становится ключевой частью архитектуры, а не скрытой деталью.
Фабрика усложняет жизнь
Фабрики прячут создание объектов и типы. В облаке они дублируют DI-контейнеры, маскируют жизненный цикл и ломают трассировку. Если код полон фабрик, локаторов и инъекций, ясность теряется.
Платформы вроде Kubernetes берут управление lifecycle на себя. Делайте ресурсы явными, отдавайте композицию контейнерам и избегайте лишних прослоек.
Обдумывайте контекст перед копипастой паттернов. Это спасёт от боли при росте нагрузки.
💬 Был у вас шаблон, который подставил вас в облаке?
📍 Навигация: Вакансии • Задачи • Собесы
#sharp_view
Please open Telegram to view this post
VIEW IN TELEGRAM
😁8❤4👍2🥱1
C#-разработчик? Пора осваивать AI-агентов
Экосистема
Начинаем сегодня в 19:00 МСК.
Основные темы:
— путь от базовых промптов до мультиагентных систем;
— использование инструментов и планирование задач;
— деплой и масштабирование своих ИИ-решений;
— работа с векторными хранилищами данных.
Занять место
Экосистема
.NET активно интегрирует ИИ (например, через Semantic Kernel). Наш курс поможет вам понять фундаментальные принципы построения автономных систем.Начинаем сегодня в 19:00 МСК.
Основные темы:
— путь от базовых промптов до мультиагентных систем;
— использование инструментов и планирование задач;
— деплой и масштабирование своих ИИ-решений;
— работа с векторными хранилищами данных.
Занять место
😁7
🛠 PostgreSQL как Dead Letter Queue
История о том, как в Wayfair отказались от Kafka DLQ в пользу PostgreSQL и получили более управляемую систему обработки сбоев.
Проблема: события падают, а видимости нет
Сбои встречались везде: API для обогащения данных падали или тормозили, консьюмеры крашились посреди обработки, события приходили с битыми или отсутствующими полями. Всё это находилось вне прямого контроля команды, но требовало изящной обработки.
Первая попытка: Kafka как DLQ
Логичным решением было использовать сам Kafka в качестве Dead Letter Queue. Общий паттерн: если событие не обработалось, отправляем его в отдельный топик DLQ.
Но быстро стало ясно, что это не лучший вариант. Kafka отлично двигает данные, но когда сообщения попадают в DLQ-топик, с ними сложно работать:
• Нельзя просто взять и выполнить запрос «покажи всё, что упало вчера»
• Нет нормальной фильтрации по причине сбоя
• Чтобы повторить обработку конкретного набора событий, нужны кастомные консьюмеры
• Для любого анализа требуется дополнительный инструментарий
Для системы, генерирующей критичные бизнес-отчёты, такое отсутствие видимости стало серьёзной проблемой.
Решение: PostgreSQL как первоклассный DLQ
Вместо публикации сбойных событий в топик Kafka, начали сохранять их прямо в таблицу DLQ в PostgreSQL. CloudSQL уже использовался как основное хранилище, так что операционно это почти ничего не добавило. Концептуально же сбои стали первоклассными гражданами системы, а не непрозрачными сообщениями, потерянными в потоке.
Дизайн-решения
• payload как JSONB — сохраняет сырое событие без жёсткой схемы. Можно хранить любую структуру и при этом эффективно запрашивать.
• Простая модель состояний — только PENDING и SUCCEEDED. Минимализм делает жизненный цикл события понятным.
• retry_after — предотвращает агрессивные повторы, когда зависимые системы нестабильны.
• retry_count — позволяет ограничивать количество попыток без внешнего состояния. Если событие не обработалось за 240 попыток — возможно, с ним что-то фундаментально не так.
• Временные метки — делают аудит и операционный анализ простым делом.
Целью не было заменить Kafka на PostgreSQL. Kafka остался основой для высокопроизводительного приёма событий, а PostgreSQL взял на себя то, что умеет лучше всего — долговременность, запросы и наблюдаемость вокруг сбоев.
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека шарписта
#il_люминатор
История о том, как в Wayfair отказались от Kafka DLQ в пользу PostgreSQL и получили более управляемую систему обработки сбоев.
Проблема: события падают, а видимости нет
Сбои встречались везде: API для обогащения данных падали или тормозили, консьюмеры крашились посреди обработки, события приходили с битыми или отсутствующими полями. Всё это находилось вне прямого контроля команды, но требовало изящной обработки.
Первая попытка: Kafka как DLQ
Логичным решением было использовать сам Kafka в качестве Dead Letter Queue. Общий паттерн: если событие не обработалось, отправляем его в отдельный топик DLQ.
Но быстро стало ясно, что это не лучший вариант. Kafka отлично двигает данные, но когда сообщения попадают в DLQ-топик, с ними сложно работать:
• Нельзя просто взять и выполнить запрос «покажи всё, что упало вчера»
• Нет нормальной фильтрации по причине сбоя
• Чтобы повторить обработку конкретного набора событий, нужны кастомные консьюмеры
• Для любого анализа требуется дополнительный инструментарий
Для системы, генерирующей критичные бизнес-отчёты, такое отсутствие видимости стало серьёзной проблемой.
Решение: PostgreSQL как первоклассный DLQ
Вместо публикации сбойных событий в топик Kafka, начали сохранять их прямо в таблицу DLQ в PostgreSQL. CloudSQL уже использовался как основное хранилище, так что операционно это почти ничего не добавило. Концептуально же сбои стали первоклассными гражданами системы, а не непрозрачными сообщениями, потерянными в потоке.
Дизайн-решения
• payload как JSONB — сохраняет сырое событие без жёсткой схемы. Можно хранить любую структуру и при этом эффективно запрашивать.
• Простая модель состояний — только PENDING и SUCCEEDED. Минимализм делает жизненный цикл события понятным.
• retry_after — предотвращает агрессивные повторы, когда зависимые системы нестабильны.
• retry_count — позволяет ограничивать количество попыток без внешнего состояния. Если событие не обработалось за 240 попыток — возможно, с ним что-то фундаментально не так.
• Временные метки — делают аудит и операционный анализ простым делом.
Целью не было заменить Kafka на PostgreSQL. Kafka остался основой для высокопроизводительного приёма событий, а PostgreSQL взял на себя то, что умеет лучше всего — долговременность, запросы и наблюдаемость вокруг сбоев.
📍 Навигация: Вакансии • Задачи • Собесы
#il_люминатор
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6👍3🤔3
Работа с железом через .NET — это не просто про серверы и веб-приложения. С библиотекой Gpio вы можете управлять физическими устройствами напрямую с Raspberry Pi или других одноплатников.
Рассмотрим базовый пример: как заставить мигать светодиод.
Что понадобится
Минимальный набор компонентов: Raspberry Pi (или аналог с поддержкой .NET), светодиод на 5 мм, резистор 330 Ом, макетная плата и провода.
Как это работает
Схема собирается просто: плата подключается к аноду светодиода (длинная ножка), катод идёт через резистор на землю. Резистор ограничивает ток и защищает светодиод от выгорания.
В коде всего несколько строк:
using var controller = new GpioController();
controller.OpenPin(18, PinMode.Output);
bool ledOn = true;
while (true)
{
controller.Write(18, ledOn ? PinValue.High : PinValue.Low);
Thread.Sleep(1000);
ledOn = !ledOn;
}
В цикле мы записываем значение «включено» или «выключено», меняем состояние каждую секунду.
Приложение компилируется как self-contained и разворачивается на устройстве. После назначения прав на выполнение (
chmod +x) запускаете исполняемый файл — и светодиод начинает мигать с интервалом в секунду.📍 Навигация: Вакансии • Задачи • Собесы
#sharp_view
Please open Telegram to view this post
VIEW IN TELEGRAM
👍22❤🔥4🤔4❤1😁1
🐳 Docker для быстрого запуска сервисов локально
Docker это платформа для запуска приложений в контейнерах. Контейнер получает собственные зависимости, сетевую конфигурацию и порты и при этом не вмешивается в окружение хоста.
Предположим, вам нужно быстро поднять MongoDB локально, не устанавливая ее системным пакетом.
Достаточно выполнить:
Эта команда скачает официальный образ mongo с Docker Hub и запустит контейнер. Флаг
Так вы получаете рабочую MongoDB без отдельной установки сервера, настройки сервисов и борьбы с конфликтами версий.
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека шарписта
#sharp_view
Docker это платформа для запуска приложений в контейнерах. Контейнер получает собственные зависимости, сетевую конфигурацию и порты и при этом не вмешивается в окружение хоста.
Предположим, вам нужно быстро поднять MongoDB локально, не устанавливая ее системным пакетом.
Достаточно выполнить:
docker run -p 27017:27017 mongo
Эта команда скачает официальный образ mongo с Docker Hub и запустит контейнер. Флаг
-p 27017:27017 пробрасывает порт на хост, то есть вы обращаетесь к базе на localhost:27017.Так вы получаете рабочую MongoDB без отдельной установки сервера, настройки сервисов и борьбы с конфликтами версий.
📍 Навигация: Вакансии • Задачи • Собесы
#sharp_view
Please open Telegram to view this post
VIEW IN TELEGRAM
💯15🥱3👍1👏1
🛋 Работа в кайф
Продуктивность — это не про силу воли и мотивацию. Это про то, как вы обустроили своё рабочее место. Синий свет экрана, температура в комнате, даже то, сколько воды вы выпили за день — всё это напрямую влияет на работу вашего мозга.
➡️ В статье 10 базовых советов по обустройству вашего рабочего места
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека шарписта
Продуктивность — это не про силу воли и мотивацию. Это про то, как вы обустроили своё рабочее место. Синий свет экрана, температура в комнате, даже то, сколько воды вы выпили за день — всё это напрямую влияет на работу вашего мозга.
📍 Навигация: Вакансии • Задачи • Собесы
Please open Telegram to view this post
VIEW IN TELEGRAM
💯7
C#/.NET-разработчик — до 300 000 ₽ и удалёнка.
С# разработчик — от 200 000 ₽ и снова удалёнка.
.NET Developer — внезапный офис в Новосибирске.
📍 Навигация: Вакансии • Задачи • Собесы
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4❤2
AI-агенты в экосистеме .NET: расширяем границы возможного
Интеграция ИИ в энтерпрайз-продукты требует понимания того, как работают автономные системы. Изучите общие принципы построения агентских систем, чтобы внедрять их в свои проекты.
Курс «Углубленные AI-агенты» даст вам глубокую экспертизу в актуальном стеке.
На обучении вас ждёт:
— проектирование автономных агентских систем;
— освоение
— интеграция RAG и инструментов планирования;
— 13 живых вебинаров и поддержка менторов.
Поток уже стартовал, присоединяйтесь сейчас.
🚀 Записаться на основной курс
Если сомневаетесь — просто посмотрите вводное занятие.
Интеграция ИИ в энтерпрайз-продукты требует понимания того, как работают автономные системы. Изучите общие принципы построения агентских систем, чтобы внедрять их в свои проекты.
Курс «Углубленные AI-агенты» даст вам глубокую экспертизу в актуальном стеке.
На обучении вас ждёт:
— проектирование автономных агентских систем;
— освоение
LangGraph, CrewAI и AutoGen;— интеграция RAG и инструментов планирования;
— 13 живых вебинаров и поддержка менторов.
Поток уже стартовал, присоединяйтесь сейчас.
🚀 Записаться на основной курс
Если сомневаетесь — просто посмотрите вводное занятие.
❤🔥2❤1😁1