Рубрики
Без рубрики

Syndicate: прототип, требования и дизайн

Я сделал это для людей, которые пишет слова, которые они делятся с другими: … помечены с Showdev, Python, ThinkDeep, Development.

Изготовление «синдиката» (4 части серии)

Я сделал это для людей, которые пишет слова, которые они делятся с другими:

Dabrady/Syndicate

Простая реализация модели публикации контента POSSE

Он распространяет копии контента, который вы автоматически создаете различные сайты публикации.

Мне потребовалось неделю целесообразных вечеров и выходных преданного взлома, чтобы полировать его по своему вкусу; И еще неделя, чтобы написать об этом.

Вот как я начал.

После моего Первоначальные исследования и настройки Я хотел начать спецификацию фактический вещь, которую я намеревался построить. Я начал, преобразуя мою реализацию «Привет, мир!» Учебник действий докера в проект Python, который будет работать в докеренном контейнере.

Первая задача, которую я преодолел, нашел изображение докера, которое фактически запускает Python. Как оказывается, альпийский Изображение, используемое в руководстве, не приходит с установленным python, поэтому мне нужно либо установить его, либо искать другой контейнер, который с ним пришел. Я решил сначала второй подход, и простой поиск «Python Docker Image» привел меня к … Python Docker Image Отказ

Сначала я просто поменял мой альпийский Изображение для Python: 3 изображение, но что значительно увеличило время сборки действия (на 2 или 3 раза 😬) Так что я был сразу скептически использовать его. К счастью, я решил прочитать за пределы «Как использовать это изображение» раздел документации, и обнаружил пару «легких» версий. Поскольку у меня еще нет никаких проектных зависимостей, я решил попробовать использовать Python: 3-ALPINE Из-за его похвастания характеристики производительности, а затем забыть об этом, пока он больше не работал. Это сделало вещь, и время моей базовой сборки было всего около 6 секунд.

Теперь, когда у меня был действие GitHub, наращивающее контейнер, который мог бы запустить Python, мне нужно было выяснить, как использовать Dev.to API. Я обнаружил ранее. Но что более важно, мне нужно было выяснить, как это сделать в Python , в идеале, используя какую-то стандартную или каноническую библиотеку.

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

Я начал знакомиться с Запросы и API dev.to, преобразовав мой существующий код действия в простой прототип. Учитывая мою неопытую в основном все в этом проекте, я решил начать здание чего-то, что будет реагировать на то, чтобы вытащить фиксацию моему репозитории GitHub, выявив мои посты от Dev.to и вытеснив свои названия. Чтение от Dev было простейшим взаимодействием с API, который казался, что он также сделает для хорошего упражнения.

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

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

Это решение оказалось вполне ценным. Это дало мне небольшое, но хорошо развивающееся упражнение, в котором я выяснил, как моя общая логика приложений может течь, и изучила такие вещи, как напечатать в журнал рабочего процесса GitHub; Как прочитать информацию из среды рабочего процесса GitHub; И как использовать Pтойцы для записи спецификаций для моего кода.

К концу этого упражнения у меня было:

И давайте не пропустить вид на опыт, полученный с помощью самого Python!

Я был доволен своим прототипом, и я узнал много полезных вещей. На данный момент я приостановил развитие, чтобы принять запас, где я был и где мне нужно было идти.

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

Первоначальные требования

  • Мой MVP (и, возможно, первый выпуск) будет поддерживать только dev.to
  • Нужно было легко добавить поддержку для публикации на новые платформы
  • Учитывая файл markdown, нужно иметь возможность создать черновик на dev.to с его содержанием
  • Учитывая (предположительно измененное) файл markdown, ранее синхронизированные для dev.to, ему нужно было уметь заменить синдицированную копию с новой версией
  • Учитывая коммит, который вызвал рабочий процесс, используя Синдикат Действие, необходимо иметь возможность идентифицировать и извлекать содержимое добавленных/модифицированных файлов для синдиката от этого фиксации
  • Необходимо иметь возможность идентифицировать файлы, которые были синдицированы для данного силоса ранее, чтобы решить, создать ли проект или толкать обновление

Технический дизайн высокого уровня

  • Синдикат будет разработан в качестве действия GitHub, который будет включен в рабочий процесс GitHub для управления синдикацией содержания
  • Входные данные:
    • Список платформ «Silo» для синдиката к
    • Любые секреты, необходимые для использования API, связанные с данными силосами
  • Выходы:
    • Краткое изложение файлов, добавленных/измененных на каждой платформе SILO
  • Механизмы взаимодействия с определенным силосом должны быть инкапсулированы в своих собственных файлах «адаптера» с одной точкой входа; Syndicate.elsewhere Функция будет нести ответственность за привлечение соответствующих адаптеров и агрегирующих выходов
  • Синдицированные файлы будут «помечены» с уникальными указанными идентификаторами (предположительно) самими бункерами в разделе «Проект» API; Эта метка позволит действию распознавать файлы в репо, который уже существует на данном силосе

Видя, что он выложен на бумаге (да, что еще существует) было взволновано! Я потрошен прототипом, который я создал, сохраняя только основную структуру и проводку вместе с некоторыми из более полезных фрагментов кода в качестве комментариев и установить на работу.

Изготовление «синдиката» (4 части серии)

Оригинал: “https://dev.to/daniel13rady/syndicate-prototype-requirements-and-design-455k”