TGViewer
Журнал инженера-программиста Журнал инженера-программиста @software_engineer_notes · 247 subscribers
Post #370 188
(начало)

Выбор идеи для пет-проекта на Go


Я как раз в новостях прочитал про очередное OSINT-расследование по GPS-координатам из фоток. Любопытно. Почему бы не анализировать EXIF и прочие метаданные?

К тому же это не накладывало на меня никаких обязательств, так как это хоть и не создание 100500-й версии ToDo-списков или домашних финансов, но различных бесплатных EXIF-сервисов в интернете просто море, практически в каждом графическом редакторе есть просмотр и изменение мета-тегов, уже не говоря про мегапопулярную опенсурсную утилиту ExifTool.


Собрал для реализации короткий список типов изображений, которые поддерживают именно EXIF мета-теги: JPEG, TIFF, PNG и WebP. Небольшой список. Ведь некоторые популярные форматы (такие как BMP) вообще не содержат встроенных метаданных. А другие же (как GIF) могут содержать лишь метки XMP, но их можно засунуть почти всюду и я решил не распыляться.

Хотя именно для GIF я хотел сделать исключение и даже добавил его в детектирование типов файлов для извлечения меток, но потом о нем позорно забыл. Это к слову, о необходимости иметь проигнорированный мною PRD (концепция, требования и поведение) даже на микро-уровнях пет-проектов.


Поскольку я все равно "вскрывал" бинарники картинок и вытаскивал EXIF, то решил заодно вытащить другие популярные (благодаря Photoshop) форматы: IPTC и XMP.

Библиотечные функции анализа файлов сами по себе не интересны и потому к ним нужен интерфейс. Я выбрал все возможные варианты: работа в консоли с аргументами командной строки, работа в консоли в режиме каналов (Piping), работа как web-сервер и работа в привычном оконном графическом интерфейсе.

Я старался максимально опираться на стандартную библиотеку, но там не предусмотрели работу с GUI и пришлось выбирать среди ряда популярных вариантов:
- Wails, что-то типа Electron - нужно описать HTML-интерфейс, который будет работать поверх встроенных WebView2/WebKit;
- Gio, который использует нативные графические элементы из DirectX, Metal и Vulkan/OpenGL, что полнофункционально, но каждая из платформ требует отдельную разработку;
- Fyne, требующий декларативное описание интерфейсов, которые будут выглядеть плюс-минус похожи на всех платформах, но требуют определенный компилятор C для сборки под нужную архитектуру.

Поскольку десктопные вебаппы меня всегда бесили, а с почти нативной разработкой интерфейса связываться не хотелось, то я выбрал последний вариант - Fyne.

Но полностью от веб-интерфейса не отказался. Для демонстрации работы в режиме веб-сервиса добавил демо-страницу, которая демонстрировала работу с API на примере анализа предложенного изображения.


#AI #ИИ #эксперимент #обучение
  • 👍 2
More from @software_engineer_notes
  1. Oct 3, 2026"Вы автоматизируете хаос" - этим страхом любят пугать своих бизнес-заказчиков консалтеры,…
  2. Sep 28, 2026Уже второй проект на работе делаю в методике "парного программирования" с Claude Code. И с…
  3. Sep 13, 2026За последний месяц произошло много событий, но наиболее интересным является использование…
  4. Sep 1, 2026Самая обычная бумажная книга учета - это пока лучший инструмент фиксации проектных изменен…
  5. Aug 31, 2026Очень показательная причина моей нелюбви реализации сравнения/объединения конфигураций в 1…
  6. Aug 29, 2026О концепции LLM-Wiki я впервые прочитал на X (Twitter). Чтобы позже ознакомится детальнее,…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →