Часть 2 из 3 — Сеанс кодирования на Go — интерфейс командной строки Cobra + Viper для анализа текстовых файлов, извлечения данных Twitter, экспорта в файлы различных форматов и экспорта в Apache Cassandra.
ОБНОВЛЕННЫЕ ЧАСТИ:
- Twitz Coding Session in Go — Cobra + Viper CLI для парсинга текстовых файлов
- Сессия кодирования Twitz в Go — Cobra + Viper CLI с первоначальной установкой Twitter + Cassandra (этот пост)
- Сессия кодирования Twitz в Go — подведение итогов Cobra + Viper CLI + извлечение данных из Twitter
Обновленные ссылки на каждую часть будут размещены внизу этого поста, когда я их опубликую. Для кода, письменного прохождения и т.п. прокрутите вниз под видео и временные метки.
Собираем CLI, устанавливаем Cassandra, настраиваем Twitter API, ENV Vars и т. д.
0:04 Пипецкое вступление. Просто стандартная роковая мелодия.
3:40 Краткое резюме. Ознакомьтесь с предыдущей записью «Сессия кодирования Twitz в Go — Cobra + Viper CLI для разбора текстовых файлов» из этой серии.
4:30 Начало выполнения команды twitz parse
для экспорта в XML, JSON и CSV (текст уже экспортировался в предыдущей сессии). Этот сегмент также включает в себя ряд рефакторингов для очистки функций, выделения управляющих структур и повышения читабельности кода.
В итоге рефакторинга twitz parse
получилось вот так. Завершенный список составляется путем вызова функции buildTwitterList()
, которая фактически находится в файле helpers.go. Затем распечатывает этот список как есть и проверяет, нужно ли выполнять экспорт файла. Если для экспорта файла задан параметр конфигурации, то этот процесс начинается с вызова exportParsedTwitterList(exportFilename string, exportFormat string, ... etc ... )
. Затем простое одноуровневое управление структурой if then else для определения формата экспорта данных и вызов соответствующей функции экспорта для фактического экспорта данных и записи файла в базовую систему. Есть еще кое-какой рефакторинг, который можно было бы сделать, но на данный момент это довольно хорошо подчищено, учитывая разбрызгивание кода, с которого я начал сначала.
50:00 Я выполняю быструю установку одного узла Apache Cassandra, который позже буду использовать для разработки. Я также быстро покажу, как запускать и останавливать постустановочную установку.
Ссылка: Apache Cassandra, Страница загрузки и инструкции по установке.
53:50 Выбор библиотеки API go-twitter для Go. Я просматриваю несколько очень быстро, просто чтобы убедиться, что это та библиотека, которую я хочу использовать.
Ссылка: библиотека go-twitter
56:35 На этом этапе я рассказываю, как установить приложение Twitter в интерфейсе API. Это ключевая часть серии, в которой я рассматриваю потребительские ключи, токен доступа и секреты токенов доступа, а также где они находятся в интерфейсе Twitter и как их нужно сбросить, если они только что показали ключи в потоке. (как я только что сделал, шокеры!)
57:55 Здесь я обсуждаю и показываю, где настроить переменные среды внутри Goland IDE для построения и выполнения CLI. Как только они будут настроены, они станут основным механизмом, который я использую в среде IDE для тестирования CLI по мере создания дополнительных функций.
1:00:18 Обновление команды twitz config
для отображения ключей, которые мы только что добавили в качестве переменных среды. Я настроил их также с некоторым синтаксическим анализом строки и обрезанием конца секретов, чтобы не отображалось все значение переменной, а было достаточно, чтобы подтвердить, что это действительно заданная конфигурация или переменная среды.
1:16:53 На данный момент я работаю над дополнительным рефакторингом функций, чтобы очистить существующий беспорядок в коде. Используя метод извлечения Goland и другие инструменты, я работаю над несколькими попытками рефакторинга, которые очищают код.
1:23:17 Копирование конфигурации сборки в Goland. Удобная маленькая вещь, которую вы можете сделать, когда у вас есть куча параметров конфигурации сборки.
1:37:32 В этой части видео я смотрю на пример app-auth в библиотеке кода, но я должен добавить оговорку, у меня возникают проблемы, используя точный пример. Но я работаю над этим и добираюсь до первых сообщений об ошибках, с которыми кто-либо может столкнуться, пока они не используют одни и те же примеры. Однако я исправлю их на следующем сеансе, однако этот фрагмент видео обеспечивает основу для моих ожидающих PR и связанных с ними работ, которые я отправлю в репозиторий.
Оставшаяся часть видео пытается выяснить, что именно происходит с ошибкой, а что нет.
Я включу рабочий код findem
в следующий пост этой серии. А пока смотрите финал и наслаждайтесь!
1:59:20 Подведение итогов видео и расписание предстоящих стримов на Twitch.
ОБНОВЛЕННЫЕ ЧАСТИ СЕРИИ