Обновить
256K+

Проектирование и рефакторинг *

Реорганизация кода

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

Как можно писать логи

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

За свой многолетний опыт я не встречал основательного подхода к логам приложений.
Часто я слышал фразы: "что нужны логи", "логи плохие" и т.д.
Но они слишком общие и могут означать все и ничего одновременно.

Предлагаю детально разобраться, как именно можно писать логи в этой статье.

Читать далее

Новости

Тест для «сеньора»: в каком типе данных хранить номер паспорта?

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

Простой вопрос, который разделяет инженеров и «операторов фреймворков»

Дисклеймер для опытных: если вы знаете ответ – внутри реальный кейс, как этот баг сломал мой паспорт в проде, и история с собеседования, от которой хочется плакать.

Читать далее

Как доверить ИИ рефакторинг кода: простой пример на Java

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

В этой статье мы рассмотрим, как при помощи искусственного интеллекта отрефакторить множественные файлы на Java. Действуем по такому сценарию:

Есть компания, которая при работе с микросервисами на Java использует собственную библиотеку, управляющую флагами для переключения фич. Теперь решено мигрировать на  Unleash, где работа с флагами переключения фич организована удобнее, а также предусмотрено поэтапное включение фич.

Читать далее

Многослойные печатные платы: как устроено производство и на что обратить внимание проектировщику

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

Рассказ технолога о том, как делают сложные платы и почему там все не как в двухслойках.

Мы уже много говорили про проектирование отверстий, про разницу между высокоскоростными и высокочастотными платами. Но сегодня заберемся в самую глубину — буквально. Поговорим о многослойных печатных платах.

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

Почему многослойка — это отдельный мир?

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

Читать далее

Три задачи требований к данным

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

Я перепробовал несколько способов вести документацию по базе данных — и у каждого были свои проблемы: информации недостаточно, сложно поддерживать, непонятна команде. Хуже всего, что плохая документация по БД тянет за собой проблемы с требованиями к данным — а это не только таблицы, но и миграции, и данные в коде. В какой-то момент я понял, что пытался решить одним документом три разные задачи.

Читать далее

# 10 ошибок рефакторинга

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

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

Читать далее

Почему так сложно создавать событийно-ориентированные системы?

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

Приветствуем, Хабр.

Сегодня мы хотим напомнить вам об одной важной книге, которую в очередной раз допечатали в январе текущего года: «Создание событийно‑управляемых микросервисов». Мы пытаемся развить эту тему в разрезе «для начинающих архитекторов», рады были бы пообщаться с потенциальным автором, который также разделяет наш интерес. Чтобы был более понятен интересующий нас уровень сложности и круг тем, предлагаем ознакомиться с переводным обзором этой темы; статья сентябрьская, найдена в блоге «The Scalable Thread».

Читать далее

Codemod в JavaScript: как менять сотни файлов кода с помощью jscodeshift

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

Всем привет! Меня зовут Саша. Я тимлид команды разработки личного кабинета пользователя в Банки.ру.

В какой-то момент я понял, что мы тратим слишком много времени на однотипные изменения в коде: обновления зависимостей, правки после breaking changes, синхронизация между проектами. Всё это делается через поиск, регулярки и ручное редактирование и быстро начинает масштабироваться в боль.

В статье разобрал, как можно подойти к этому иначе: использовать codemod и jscodeshift, чтобы автоматизировать такие изменения и применять их сразу ко всей кодовой базе. Как это работает через AST, и посмотрим на примере, как писать свои трансформации.

Читать далее

Хроники Agent Driven Development трансформации .1: улучшаем agent feedback loop

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

Как перевести продакшен-проект на рельсы agent-driven development - когда LLM-агенты становятся полноценными участниками разработки, а не просто подсказчиками в автокомплите ? Реальный опыт на реальном проекте !

Продолжаем улучшать Feedback Loop. В предыдущей статье я ускорил прогон тестов в 6 раз. Теперь — следующий шаг: LLM-агент генерирует тесты. Два подхода (sprint-driven и coverage-driven), шестиуровневый pipeline верификации, двух-агентная архитектура, оптимизация feedback loop — и 68 тестовых файлов на выходе с acceptance rate 86.8% при ревью живыми разработчиками.

В статье — конкретика: как анализировал покрытие и свежесть документации, как ускорял компиляцию для агента, на чём экономил токены, и что сказала команда на code review.

Читать далее

Владение и локальность

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

Итак, Вы – руководитель разработки (главный инженер, архитектор и т.п.) большой системы. После здравых размышлений Вы (обосновано) выбираете для системы микросервисную архитектуру. Далее Вы (и опять обоснованно) разделяете систему на микросервисы, продумываете API, рисуете стрелочки и диаграммы и можно программировать.

Можно? Наверное, но лучше сначала рассмотреть принципы владения данными, обеспечения передачи данных потребителям, поддержки версионирования контрактов данных.

В этой статье мы рассматриваем два принципа: «Данными владеет только владелец» и «Локальность данных». Понимание принципов, понимание возможностей проектирования доступов к данным позволит Вам спроектировать устойчивые и надежные системы. 

Читать далее

Идеальный Open Source проект, что ты такое?

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

В данной статье вы познакомитесь с типичными ошибками и привлекающими внимание подходами, которые можно встретить в разных Open Source проектах. Без воды, только конкретные комментарии. Будет полезно и для своих проектов.

Читать далее

Как я пришел от architecture as code к живой архитектурной модели

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

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

Читать далее

Халява уходит из разработки Агентов

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

Сегодня каждый норовит написать универсального агента и объявить это революцией. Рынок переполнен поделками вроде OpenClaw и его клонов: IronClaw, ZeroClaw, MicroClaw, NullClaw, GitClaw, AstrBot, GripAi, Moltis...

Все идут одной и той же дорогой: используют готовые MCP и дают агентам shell-оболочку. Да, это легко собрать. Да, весело. Можно хайпануть в соцсетях. Но это тупиковый путь.

В статье разберем все грехи status quo и предложим другой подход, более требовательный к компетенциям в области разработки ПО.

Читать далее

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

Цена контекста в агентной разработке: почему bottleneck — не код, а внимание человека

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

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

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

И именно здесь ломается наивный human-in-the-loop, а большой diff - является лишь симптомом. Настоящее узкое место - стоимость повторного входа в контекст: формально человек остаётся в процессе, но фактически его роль всё чаще сводится к механическому одобрению, в свою очередь дефицитом становится не машинная производительность, а человеческое внимание.

Читать далее

А как насчёт дрейфа?

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

Дрейф модели — это риск того, что со временем ответы LLM на одни и те же входные данные начнут меняться. Для системы, которая должна давать стабильные заключения по договорам, это критично.

Читать далее

ИИ-агент сказал «сделано». Но сделал ли он на самом деле?

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

На прошлой неделе Хабр опубликовал материал о том, как компании платят до 300 000 рублей в месяц за «скрытый аутсорс» задач в ChatGPT. История получила резонанс — но обсуждение ушло не туда. Говорили о доверии, об этике, о трудовом договоре.

Никто не спросил о главном: а как вы вообще проверяете, что задача была выполнена — агентом или человеком? И была ли она выполнена вообще?

В открытом демо-пайплайне dcl-eval-pipeline-demo я показала, как аудировать поведение агентов на практике. Теперь разберём, почему это критично и как построить полноценный слой верификации — вплоть до готового инструмента, который можно скачать и запустить прямо сейчас.

Это не риторический вопрос. Это архитектурная дыра, которая сейчас присутствует практически в каждой агентной системе. Называется она fabricated execution — ситуация, когда агент возвращает результат, не выполнив задачи, или выполнив что-то принципиально другое, оформив под видом запрошенного.

Что такое DCL?

Skaro — AI-оркестратор полного цикла разработки

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

Всем привет!

Некоторое время назад я опубликовал статью о своём опыте AI-кодинга и поделился рабочими практиками. В комментариях нашёл много полезного — в частности, упоминания методологии SDD.

Это натолкнуло меня на идею: собрать инструмент, который позволяет управлять и автоматизировать процесс разработки, основанной на спецификациях и контроле генерации кода. Я приступил к реализации — очень плотно и почти без сна за все эти дни o_O.

Основная идея проста: разработчик формирует спецификации, ИИ генерирует код. Принципы — не терять и не размывать контекст, контролировать структуру и качество кода.

Читать далее

Тест-кейсы из функциональных требований

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

Пользовательское требование описывает, что нужно пользователю. Критерии приёмки — фиксируют, как это проверить. Но между «что нужно» и задачей в Jira — пропасть. Чтобы её закрыть, я пишу функциональные требования — с use case'ами, из которых тестировщик может собрать тест-кейсы, а разработчик — понять ожидаемое поведение системы.

Читать далее

Хроники Agent Driven Development трансформации .0: Как ускорить тесты проекта в 6 раз: от 10 минут к 101 секунде

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

Почти 800 тестов, 10 минут на прогон, каждый пуш — ожидание на CI. Знакомо? Рассказываю, как довёл время до 101 секунды: снижение таймаутов, параллелизм ScalaTest, shared Testcontainers и защита от регрессий. Scala, SBT, PostgreSQL, GraalVM — конкретные шаги и подводные камни.

Читать далее

Паттерны проектирования

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

Маленькая шпаргалка для тех, кто хочет понять что это и как называется. Изначальная цель написания - предоставить заинтересованным лицам краткую справку и возможность более эффективно воспользоваться поисковыми системами. Здесь перечислены как классические паттерны и антипаттерны проектирования от банды четырёх (GoF), так и прочие общепринятые.

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