Вокруг все чаще говорят, что ИИ скоро будет писать код за нас. Логичный вопрос — нужны ли тогда паттерны? Зачем разбираться в паттернах GoF, если нейросеть и так сгенерирует рабочий код по описанию?
У меня ощущение обратное.
Я плотно вошел в разработку в 2019 году. Переходил из 1С в .NET. Книги по паттернам GoF у меня были, но долго лежали как «книга на полке». Казалось, они оторваны от повседневных задач. Теорию вроде понимал, но не видел, где это реально применяется.
Все поменялось, когда я стал использовать ИИ как инструмент для обучения. Просил давать задачи, искать проблемы в решениях, объяснять, почему в одном месте уместен Strategy, а в другом лучше Mediator. Через практику и обсуждение паттерны перестали быть абстракцией.
Чем проще генерировать код, тем важнее понимать его форму и границы. Иначе не ускоришь разработку, а ускоришь накопление технического долга.
Из этого и вырос мой pet-project gofinsights.com. Я делаю его тренажером по паттернам проектирования. Не просто «прочитал и забыл», а через практику, сравнение решений и постепенное распознавание типовых архитектурных ходов.
Сейчас там есть интерактивный квиз, где можно проверить базу и не перепутать Factory Method с Abstract Factory. Дальше хочу развивать проект в сторону более глубокого ИИ-разбора. Чтобы можно было не только узнавать паттерн, но и разбирать кодовые запахи, причины проблем и возможную эволюцию решений.
Как вы это видите? Паттерны проектирования все еще рабочая база для разработчика? Или с появлением ИИ они станут менее важны?
Лог в реальном времени: берём госзаказ и закрываем его агентной разработкой
На днях Оскар Хартманн довольно жёстко высказался за вайбкодинг. Тем временем на Пикабу из 45 программистов в профессиональном сообществе вайбкодят только 9. В госсекторе — единицы.
Пока остальные спорят, костыли это или нет — я берусь за реальный тендер и публикую всё как есть.
Подписывайтесь — первый пост как только войду в торги на понижение.
Разрываем шаблоны: строим график с разрывом всего на 65 строк
Иногда нужно скрыть часть графика используя линию обрыва, чтобы показать данные с сильно различающимися значениями. Например, когда один язык программирования популярнее остальных в разы.
Самые ходовые решения этой проблемы — разорванная ось (broken axis) или отдельные бины для аномалий. Проблема в том, что в Matplotlib нет готовой «кнопки» для создания гистограммы с разрывом. Но это легко* собирается руками на уровне нескольких осей.
Вот три рабочих подхода — выбирайте под свою задачу.
Официальный пример из документации Matplotlib. 🔗 Ссылка на гайд. Отлично работает, когда выбросы зашкаливают по одной оси (X или Y). В посте разбирается как раз такой случай: гистограмма с волнистой линией обрыва.
Библиотека brokenaxes делает почти всё сама. Устанавливается стандартно через pip. Вариант для тех, кто не хочет углубляться в ручную настройку.
Логарифмическая шкала (часто — самый простой выход) Если выбросы строго положительные и отличаются на порядки, иногда достаточно двух строк: plt.xscale(«log») или plt.yscale(«log»). Никаких разрывов, никакой ручной работы — при этом график остаётся чистым и читаемым.
import matplotlib.patches as mpatches
import matplotlib.pyplot as plt
import numpy as np
from matplotlib.path import Path
def plot_broken_axis(
labels: list[str],
values: tuple[float, ...],
ylim_low=(0, 12),
ylim_high=(20, 25),
**kwargs,
):
"""
Строит график с разрывом оси.
Валидирует входные данные и инкапсулирует логику отрисовки.
"""
if len(labels) != len(values):
raise ValueError("Длины labels и values не совпадают")
fig, (ax_high, ax_low) = plt.subplots(
nrows=2, figsize=(7, 4), gridspec_kw={"height_ratios": [1, 2]}
)
# Настройки столбцов
kwargs.setdefault("color", "skyblue")
kwargs.setdefault("edgecolor", "black")
kwargs.setdefault("alpha", 0.85)
ax_low.bar(labels, values, **kwargs)
ax_high.bar(labels, values, **kwargs)
fig.subplots_adjust(hspace=0.0)
# Настройка осей
ax_low.set_ylim(*ylim_low)
ax_high.set_ylim(*ylim_high)
ax_high.set_title("График с разрывом")
ax_low.set_ylabel("Рейтинг в %")
ax_low.set_xlabel("Языки")
ax_high.spines["bottom"].set_visible(False)
ax_low.spines["top"].set_visible(False)
ax_high.tick_params(axis="x", bottom=False, labelbottom=False)
# Рисуем разрыв оси (волна)
offset, n_points = 0.03, 33
pts = np.linspace(-offset, 1 + offset, n_points)
wave = np.array([1 + (0, offset, 0, -offset)[i % 4] for i in range(n_points)])
path = Path(list(zip(pts, wave)), [Path.MOVETO] + [Path.CURVE3] * (n_points - 1))
opts = dict(transform=ax_low.transAxes, clip_on=False, zorder=10)
ax_low.add_patch(mpatches.PathPatch(path, lw=6, **opts))
ax_low.add_patch(mpatches.PathPatch(path, lw=3, edgecolor="white", **opts))
return fig
if __name__ == "__main__":
langs = ["Python", "C", "C++", "Asm"]
pops = (21.8, 11.1, 8.6, 1.1)
# Стиль xkcd
with plt.xkcd(scale=1, length=300, randomness=30):
plt.rcParams["font.family"] = "Comic Sans MS"
# Вызов функции
fig = plot_broken_axis(langs, pops)
plt.show()
Наконец-то поднял публичную демку Aximo на Hugging Face Spaces 🎙️
Это локальный speech-to-text API, который работает на CPU, использует Parakeet v3 и позволяет тестировать транскрибацию прямо из браузера через Swagger UI с записью с микрофона, о котором писал в одном из своих предыдущих постов.
Вчера проводила эксперимент с 5 нейронками об отключении мобильного интернета и об ограничении вообще интернета в стране Х. Были задействованы DeepSeek, Yandex, Kimi, Gemini и GPT. То есть, разные нейронки, обученные на разных культурных корпусах, США, Китай, Россия. Язык русский.
Так вот, все 5 нейронок согласились что интернет можно отключать только в кратковременных случаях, если есть угроза жизни. Ограничивать также можно, но если это пропорционально соответствует угрозе, что пока не доказано. Самый сок!
Во всех опросах Алиса/Яндекс рассказывала как это плохо ограничивать интернет в целях безопасности, но ставила 8/10 «ЗА». Все остальные ставили 2-3/10.
Вы понимаете парадокс? Алиса говорит, что ограничения ужасны для безопасности, образования, медиа, науки, права, экономики, медицины (особенно она отметила что нельзя ограничивать доступ к глобальной медицине), но голосовала ЗА!
Подумайте, какой приоритет встроен в итоговую оценку.А теперь главное: ИИ встраивается сейчас везде, в бизнес, в банки, в госуправление, в места, где принимаются критические решения. Что посоветует Алиса, если она подробно описывает медленную деградацию системы, но в итоговой оценке всё равно поддерживает ограничения? Какие критические решения могут приниматься с таким "технологическим суверенитетом”?
Тут в ленту прилетела новость, которая касается всех постгресменов, кто пользуется pgbackrest-ом для создания резервных копий. Либо собирается им пользоваться. А именно, создатель и разработчик проекта закончил работу над ним: https://github.com/pgbackrest/pgbackrest#notice-of-obsolescence. Грусть, печаль, тоска, тлен и безысходность. :( И статью править, и исходный материал в ЖЖ.
Сейчас довольно много предложений по покупке курсов о «промпт-инженеринге». Я много работал и работаю с ИИ, но ещё больше — без него (примерно в десять раз). Готов поделиться рабочим рецептом, который позволит писать мастерские промпты. Прям лучшие. Это скорее даже фундаментальный принцип.
Делюсь опытом совершенно бесплатно. Всё оказалось довольно просто. Чтобы уверенно управлять ИИ и писать сильные, работающие промпты, вы должны хорошо разбираться в том, о чём просите нейросеть. Вот такой простой и совершенно бесплатный совет — не благодарите. Надеюсь, сэкономил ваши деньги.
Прототип советского скафандр «Кречет» для Луны появился на Ebay. Комплект скафандра оценили в $350 тыс. В описании товара говорится, что некоторые элементы скафандра в советское время были изъяты для использования в разработке других моделей. По словам продавца, на отдельных элементах костюма есть царапины, незначительные загрязнения и следы длительного хранения.
Проект «Кречет» по назначению так и не пригодился. Лунную программу в СССР свернули, а в рамках разработки такого скафандра в конце 1960-х было сделано несколько экземпляров. Позже наработки «Кречета» стали основой для серии скафандров «Орлан», которые использует «Роскосмос».
OpenAI выпустила гайд по работе с промптами на GPT-5.5 — старые правила больше НЕ работают. Разработчики прямо говорят: «забудьте всё, чему учились раньше»:
Основное правило — чем проще, тем лучше.
Не нужно расписывать шаги — модель сама решает, как выполнить задачу.
Перегруз инструкциями снижает качество ответа.
Не копируйте старые «простыни» промптов.
Формулируйте цель и ожидаемый результат.
OpenAI советует начинать с минимального промпта, а потом уже аккуратно добавлять детали и разгоняться. Модель в целом начала лучше понимать намерение и держать контекст.
Чернобыльское лето 1986 года, когда все киевские одноклассники разъехались по разным концам СССР подальше от радиации, было для меня супер-продуктивным в смысле изучения программирования. Я ходил в контору человека по фамилии Долина, бывшего полковника танковых войск из Донецка, который переквалифицировался в компьтеризатора украинского образования. Там я работал на компьютерах MSX Yamaha, выучил программирование на Си. Компилятор назывался ASCII C (сейчас в комментах появятся умники которые будут мне говорить, что ASCII это кодировка, а я им буду кидать ссылку что это еще и японская компания).
Долине мое увлечение Си не нравилось, он хотел чтобы я больше писал программ на Бейсике, которые он демонстрировал людям из украинских министерств и студии мультфильмов (некоторые программы были графические). Кроме графики я сделал еще например программу которая фиксировала в реальном времени действия футболистов во время матча, через нажатия клавиш наблюдателем. Контора Долины была у стадиона, оттуда доносились вопли болельщиков. Долина это показывал кому-то по спортивной линии.
В конце лета я полетел на Новосибирскую Летнюю Школу Юных Программистов, где выучил ассемблер Z80 и сделал поддержку параллельного выполнения нескольких Си функций с помощью переключения контекстов в обработчике прерывания по таймеру. С сохранением регистров в дексрипторе задачи в списке задач. За это я получил диплом первой степени. По-моему дипломы вручал академик Ершов, хотя может я путаю и мы встретились с ним в академгородке куда на тоже возили.
На школе было невероятное количество комаров, а также красивая девочка из Томска, которая мне нравилась, и ее подружка, которой нравился я. Из Украины еще был юный гений из Харькова, который постоянно спорил со мной, что персоналки фигня, а мейнфреймы - это круто. Так как я успел поработать и на мейнфреймах, споры были довольно развесистые.
Еще там я увидел первые советские программы западного качества - редактор tor(?), программу низкоуровневой работы с диском и оконный отладчик. Они были написаны на Си и ассемблере аккуратно, как примеры в западных книжках. Советский код который я видел до этого (и большинство после этого) был написан тяп-ляп. Писали эти программы местные аспиранты которые были также преподавателями школы.
Помимо этих программ я привез на флоппи-дисках со школы CP/M (хуже файловая система чем в MSX-DOS), среду Turbo Pascal, интерпретатор Lisp, компилятор Nevada Fortran, еще два компилятора Си (Aztec C и BDS C) и даже компилятор с подмножества языка Ada, который я знал теоретически, но никогда не использовал.
29 лет спустя, в 2017 году я приехал на ту же новосибирскую школу в качестве инструктора по Verilog и FPGA. Еще там был Борис Файфель который учил детей Лиспу или чему-то такому.
На митапе обсудим реальные кейсы: от высоконагруженной модерации с векторным поиском и AIOps-подходов к управлению ML-сервисами до практики построения RAG-систем, тонкостей реранкинга и реальных этапов запуска LLM-продуктов.
Когда: 20 мая, старт в 15:00 Где: Москва + онлайн
Что в программе?
«Векторный поиск в модерации контента: как поместить более 200 моделей в 1 ансамбль» | Wildberries & Russ
«Внедрение AIOps Практик для контроля и повышения общей утилизации ресурсов для тысяч продуктовых сервисов» | Wildberries & Russ
«RAG, который не галлюцинирует (почти)» | MWS
«Что на самом деле представляет запуск продуктов на базе LLM» | Wildberries & Russ
Кейсы в секции Fast Track: «Промптить нельзя файнтюнить» — Как мы поставили запятую и обучили BerryLM», «Text is All You Need. Отекстовка потока видеоклипов в платформе Wibes», «Эволюция поиска вакансий на Avito: ML‑оптимизации в Avito Работе»
И финал — дискуссия про применение AI в разных продуктах и процессах с экспертами из Wildberries & Russ, Сбера, Альфа‑Банка и red_mad_robot
SimpleOne выпустила платформу 1.32.0: быстрые переносы конфигураций, точнее SLA, удобная работа с каталогом услуг
Компания сосредоточилась на крупных внедрениях: упрощает миграцию между средами, повышает точность отчётов и делает каталог услуг проще в сопровождении.
Главное в 1.32.0:
Перенос больших пакетов настроек между средами (разработка → тест → прод) теперь идёт в фоновом и не блокирует систему — можно переносить даже пакеты от 100 000 записей
Новый виджет для контроля таких переносов: кто запустил, на каком этапе, ссылки на детали
SLA-таймеры теперь учитывают паузы, которые случились ещё до старта замера: отчёты становятся точнее, особенно при миграции данных из других систем
К каждому типу запроса в каталоге услуг можно привязать свой рабочий процесс без условной логики и дублирования
Зависшие фоновые задачи восстанавливаются за 1 минуту вместо часа
Исправлены ошибки миграции, работы клиентских скриптов и усилена безопасность интеграции с LDAP
«Лента» использует GPU VK Tech для персонализации клиентских предложений
Розничная сеть «Лента» внедряет решение для персонализации клиентских предложений на базе больших языковых моделей с использованием облачных GPU от VK Cloud. Технология позволяет формировать обезличенные цифровые профили покупателей и использовать их для создания релевантных предложений в CRM-коммуникациях.
Инфраструктура VK Cloud обеспечивает необходимую вычислительную мощность для работы языковых моделей и масштабирования решения. Для дальнейшего развития проекта компания рассматривает расширение использования GPU-ресурсов, включая увеличение количества видеокарт для работы с полной активной клиентской базой.
В основе решения — концепция «цифрового клона» клиента. Модель на основе чековых данных за последние 90 дней формирует расширенный профиль покупателя: оценивает его предпочтения и потенциальные сценарии потребления. На базе этих профилей генерируются персональные предложения — от скидок на релевантные товары до рекомендаций рецептов и сопутствующих покупок.
Обработка данных осуществляется с соблюдением требований безопасности: персональная информация не используется напрямую, все данные обезличиваются, а доступ к инфраструктуре и моделям строго контролируется. Это позволяет компании внедрять современные ИИ-решения без риска для конфиденциальности клиентов.
Вы заметили, что теперь на leetcode необходимо указать номер телефона для "обеспечения безопасности учётной записи и подтверждения личности":
Add your phone number to secure your account and verify your identity.
А если не укажете, то не сможете: - участвовать в соревнованиях; - создавать комментарии в дискуссиях; - публиковать решения; - даже плюсовать полезные комментарии.
Я поискал, но сходу не нашёл официальной новости с разъяснениями. Однако, судя по комментам, некоторые пользователи довольны, считая, что эта мера поможет уменьшить количество читеров.
Что думаете? Не давать плюсовать комменты -- это, на мой взгляд, перебор.
Продажи в найме и в своём деле — разные навыки. Я узнал это через несколько лет впустую.
Меня зовут Максим. Здесь начинаю тред о предпринимательстве с точки зрения человека, который умел продавать. Не метафорически — буквально: из последнего — медицинское оборудование, клиники, Москва, проектные сделки. В пиковые месяцы больше миллиона на процентах. Несколько сделок на том рынке помнят до сих пор.
А потом вышел в своё и не смог позвонить клиенту.
Я уже писал об этом развёрнуто: для интроверта пятнадцать лет «умения продавать» на самом деле были комбинацией навыка и внешней конструкции, которая каждый раз выталкивала меня в разговор. В найме она есть. В своём деле — нет. Результат: несколько лет не на лень, а на иллюзию занятости.
Я придумал механику и заложил её в Founder Mode — бот с тремя вопросами: приоритет недели, было ли движение, что остановило. Никакой методологии. Он делает то, что раньше делал работодатель: создаёт маленький внешний взгляд, перед которым неловко бездействовать.
Карточки выходят каждый день в Telegram. На Хабре — по понедельникам: итог недели и один приоритет, реальные сложности.
Теперь про продукт.
Я делаю перекус для тех, кто не успевает позавтракать. Не «полезный» как ярлык — конкретный состав: медленная глюкоза, жиры, клетчатка, полный аминокислотный профиль. Несколько итераций состава, несколько волн дегустаций — вкус 9,1/10.
Потом инсайт: продукт точно попадает в школьников. Появилась обратная связь, первые предзаказы. Я решил взять грант «Социальный контракт» на масштабирование.
Карточка этой недели — ниже. Это живой опыт, не кейс из прошлого.
Оффлайн проект "Полезные сладости"
Если вы сейлз, который думает о своём деле — скорее всего, узнаете здесь что-то своё.
AI-агент уничтожил производственную базу данных SaaS. За 9 секунд
Jer Crane, основатель PocketOS, сервиса для компаний по аренде автомобилей. Агент Cursor (на базе Claude Opus) работал в staging-среде, наткнулся на ошибку credentials и сам решил "починить" проблему: удалил Railway-volume одним GraphQL-запросом.
Токен, который он нашёл в случайном файле, был создан для управления доменами. Но Railway не разграничивает права токенов: каждый из них фактически является root-доступом. Никакого подтверждения не потребовалось.
Бэкапы? Они хранились в том же volume и ушли вместе с данными. Последний восстановимый бэкап был трёхмесячной давности. Когда Jer спросил агента, почему он так поступил, тот ответил письменно и перечислил все правила безопасности, которые нарушил: угадывал вместо того, чтобы проверять, выполнил деструктивное действие без запроса, не прочитал документацию перед удалением и не спросил разрешения.
Итог: малый бизнес потерял данные клиентов за три месяца. Люди приходили в субботу забирать арендованные машины и не находили своих записей. Главный вывод: системные промпты не могут быть единственным слоем защиты. Безопасность должна быть встроена в API, токены и обработчики деструктивных операций, а не в текст, который модель "должна прочитать и соблюдать".
Если вы используете Railway и AI-агенты в проде, сегодня хороший день проверить скоупы токенов и то, где реально хранятся ваши бэкапы