Обновить
256K+

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

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

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

Практики разработки на Python

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

Привет, Хабр! Меня зовут Роман, я программист в команде «Гравитон» и моя задача в компании — разработка API/CLI интерфейсов и приложений на языке Python.

Цель данной статьи в том, чтобы показать как через внедрение «типовых подходов» и вспомогательных библиотек/утилит очень сильно упрощается поддержка проекта в настоящем (при передаче другому человеку или разработке в команде) и в будущем (возобновили проект спустя время).

Первое, что нужно сказать — проект на Python это не только сам Python, но и множество технологий используемых вместе (Git, Docker, и т.д.). В этой статье мы сконцентрируемся на самом проекте, а именно с чего начать, что прикрутить, что учитывать при разработке.

Читать далее

Новости

# 10 ошибок API

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

40 000+ записей без пагинации, 200 OK вместо 400 Bad Request, SQL-запросы в ответах клиенту. Собрал 10 ошибок API из реальных проектов: монолитов, микросервисов, стартапах и энтерпрайза.

Читать далее

Протокол «Хаос-Река»: агентная симуляция, коэффициент Джини и одна незакрытая уязвимость

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

Предыдущие две статьи сформулировали гипотезу: распределённое сообщество IT-специалистов может координироваться без иерархии, зарплат и венчурного капитала — если протокол взаимодействия спроектирован правильно. Гипотеза красивая. Но красота — не аргумент. Нужна верификация. Здесь — первая попытка её провести: агентная симуляция на 500 независимых прогонов, математические метрики и один неудобный результат, который требует решения.

Читать далее

Система компоновки данных в 1С

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

Большинство знают базу: создал схему компоновки, написал запрос, перетащил поля в настройки — получил отчёт. Но СКД умеет гораздо больше! И многие задачи, которые решают кодом в модуле отчёта, на самом деле решаются средствами самой компоновки — проще, надёжнее и с бонусом в виде пользовательской настройки.

Разберём механизм и приёмы, которые экономят время и код.

Читать далее

Как видеонаблюдение незаметно съедает сеть

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

Видеонаблюдение умеет быть очень вежливым. Сначала оно тихо просит подключить еще пару камер. Потом добавить удаленный доступ. Потом аналитику. Потом второе рабочее место. Потом архив подольше. Потом мобильный просмотр. Потом облачное дублирование. А потом внезапно выясняется, что система, которую считали как “небольшую на 15 камер”, ведет себя как полноценная инфраструктура с десятками параллельных видеопотоков, конкуренцией за сеть, сервер, хранилище и внимание администратора.

Читать далее

Go и искусство ставить подножку разработчику: разоблачение

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

Язык проектировался простым, лёгким в освоении, готовым для написания сервисов с первого дня. Он мог бы таким и остаться, если бы не одна проблема. Проблема отбора.

Инженеры Google понимали, что без подводных камней, необходимости знать детали реализации языка и неконсистентного синтаксиса не о чем будет спрашивать на собеседовании.

Явно ставилась задача — сделать язык достаточно простым, но не настолько, чтобы собеседование мог пройти любой новичок.

Узнай тайны

Часть 5: Интеграция с устройствами «Умного дома» — от модели к реальному устройству

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

Что сработало хорошо

MQTT — надёжный и простой протокол для умного дома

Плагин-архитектура — легко добавлять новые устройства

Обработка ошибок — система устойчива к сбоям

Очередь команд — предотвращает конфликты

Что можно улучшить

Поддержка больше протоколов — Zigbee, Z-Wave, Matter

Голосовая обратная связь — подтверждение команд голосом

Сценарии — поддержка сложных сценариев (макросов)

Машинное обучение — адаптация под привычки пользователя

Советы для разработчиков

Начинайте с простого — начните с одного устройства, затем масштабируйте

Тестируйте надёжность — тестируйте в реальных условиях

Обрабатывайте ошибки — устройства могут быть недоступны

Документируйте API — облегчает добавление новых устройств

Читать далее

Конец эпохи вероятностного ИИ: почему гонка за GPU от Nvidia — это архитектурный тупик

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

Индустрия генеративного искусственного интеллекта больна. Симптомы этой болезни видны невооруженным глазом: шесть пальцев на руках, нарушенная геометрия объектов в движении и рассинхрон звука с артикуляцией (AV-desync). Но вместо того, чтобы лечить причину математикой, техногиганты пытаются заглушить боль грубой силой, заливая проблему деньгами и сжигая мегаватты энергии на кластерах Nvidia H100.

Сегодня мы наблюдаем классическую архитектурную ошибку: попытку решить фундаментальный математический изъян экстенсивным наращиванием "железа". И эта гонка приведет к неизбежному краху текущей бизнес-модели монополистов.

Читать далее

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

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

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

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

Читать далее

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

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

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

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

Читать далее

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

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

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

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

Читать далее

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

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

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

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

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

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

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

Читать далее

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

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

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

Читать далее

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

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

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

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

Читать далее

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

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

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

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

Читать далее

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

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

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

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

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

Читать далее

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

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

Как перевести продакшен-проект на рельсы 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.7K

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

Читать далее

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

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

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

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