TL;DR
- Tooling ускоряет разработку, когда нужно часто повторять рутинные действия.
- Опасность рутины заключается в снижении концентрации, что приводит к появлению ошибок и неточностей.
- Часто кажется, что дествие занимает мало времени, поэтому не следует его автоматизировать даже если требуется его повторить более одного раза, но ошибка заключается в том, что через пару дней/недель вы упустите контекст задачи и её выполнение будет занимать не 5 минут, а пару часов.
Зачем нам это?
- Инструменты снижают время погружения в контекст, повышая концентрацию на результате.
- Инструменты уменьшают число ошибок от ручной работы (копипаст, неверные фильтры, забытые условия).
- Инструменты могут быть лучшим Readme проекта. Вместо того, чтобы объяснять, как добавить новый обработчик в код, можно написать скрипт генерации шаблона с опросником.
- Tooling помогает приучать себя следовать принципу DRY(Don’t Repeat Yourself).
Практический вывод: если действие повторяется регулярно и требует погружения к контекст — лучше его
автоматизировать, чем писать инструкцию по его выполнению.
Пример: Integerfinder->
- Были: текстовые логи, бинарные данные из потока;
- Требовалось: быстро определить смещения и размеры полей в структурах
- Осложнялось: наличием битовых полей, неизвестной разрядностью, неизвестным порядком байт
Утилита была написана при реверс‑инжиниринге утраченного бинарного протокола.
Что делает инструмент:
- Сканирует бинарный файл и ищет числа разных типов/разрядностей.
- Поддерживает разные порядки байт (включая “swap” режим).
- Может находить пересечения с числами из текстового лога (фильтрация кандидатов).
- Может показать места (offset/длина), где встречается заданное число.
Пару полей можно было искать вручную, но для полного разбора протокола нужно не случайное совпадение, а статистически подтверждённый факт.
# Примеры сценариев использования (схематично)
# 1) Вывести список найденных чисел по типам:
./integerfinder -f ../test.hex -l
# 2) Оставить только те числа, которые встречаются в тексте (логе):
./integerfinder -f ../test.hex -t test.log
# 3) Найти позиции/смещения, где встречается заданное число:
./integerfinder -f ../test.hex -i 72208
Чем это полезно в работе: когда нужно сопоставить значения из логов с байтами в дампе, инструмент
позволяет подготовить отчет по каждому бинарному пакету. А это уже не совпадение. Это уже статистика!