Я сделал вещь! Это календарь для конференций технических конференций по программному обеспечению в Великобритании, но данные хранятся в файле CSV, к которому кто-либо может отправлять запросы на тягу.
На самом деле мне не нравится собираться все так, но они приличный способ изучать вещи. Если у меня есть бюджет обучения и разработки, доступное через мою работу, то я хочу убедиться, что я получаю максимальную из этого.
Есть множество блогов сообщений, перечисляющих хорошие конференции для разработчиков, но всякий раз, когда я смотрю на них, я нахожу, что я только что пропустил конференцию, я получил бы самую ценность, или она возрастела. Последние пару мест, которые я работал, у нас были внутренние списки интересных конференций, но даже так, я обычно не смогу смотреть на них в нужное время. Я подумал, что лучший способ отслеживать было бы сочетать его с моим календарем, поэтому я могу посмотреть, что подходит и игнорирует события в прошлом.
Я хочу избежать низкого качества и устаревшей информации, поэтому я решил ограничить свой календарь к событиям, которые подтвердили даты, и вы можете купить билеты, а не предполагать, что конференции будут работать каждый год.
Я решил сохранить данные в репозитории GitHub, потому что я думаю, что это хороший простой способ управлять открытыми данными. Для кого-нибудь легко внести свой вклад, и я могу просмотреть вклад, как они приходят.
Это довольно произвольное ограничение – я живу в Великобритании, поэтому это события (обычно), наиболее удобные, чтобы добраться до меня, и я подумал, что если бы я не ограничивал приспособление, там будет слишком много событий для календарь будет полезен на практике. Если вы хотите то же самое для других областей, я рекомендую высказать репо и создать еще один календарь. Мне было бы интересно узнать, если вы сделаете это!
Вы можете импортировать события в приложение календаря, используя ICAL экспорт . Вы также можете Просмотр календаря напрямую Отказ
Вы можете добавить события по Сделать запрос на тягу против файла CSV .
Я действительно ненавижу Google API
Я написал какой-то код для интерфейса с API Google Calendar. Это была самая сложная часть проекта, потому что документация API Google заставляет меня заплакать. Код мне нужно было настроить клиент (который я закончил копирование из другого проекта):
self.calendar_id = os.environ['CALENDAR_ID'] client_secret_dict = ast.literal_eval(os.environ['CLIENT_SECRET_JSON']) credentials = ServiceAccountCredentials.from_json_keyfile_dict( client_secret_dict, scopes=self.SCOPES) http = credentials.authorize(Http()) self.calendar = build('calendar', 'v3', http=http)
Секрет клиента – учетные данные для учетной записи службы, который настроен в Google Cloud. Затем я предоставил этот счет чтения/записи/записи на календаре в самом календаре Google. Это взяло меня некоторое время, чтобы выяснить.
NamedTupes отлично работает для сопоставления данных
Я представляю события, используя NamedTuple
:
class Event(NamedTuple): """ A calendar entry for a conference """ start_date: date end_date: date website: Optional[str] description: str title: str
Именованный кортеж – это вид типа ценностей – означает, что два экземпляра считаются равными, если все его поля равны.
Это полезно при сравнении того, что находится в файле CSV, к какому Google Calendar. Это означает, что я могу использовать события в качестве клавиш в словари и использовать набор арифметики на них:
events_to_remove = existing_event_set - desired_events events_to_add = desired_events - existing_event_set ids_to_remove = {existing_events[event] for event in events_to_remove}
Это позволило мне разбить мой код на следующие шаги:
- Прочитайте все от CSV и все от API
- Работайте, что нужно изменить
- На самом деле выполнять изменения
Это оказалось довольно хорошим узором, который облегчил установку тестирования моего кода.
Действия GitHub действительно удобны
Я использую два Действия GitHub Рабочие процессы на этом проекте:
- один для непрерывной интеграции (запуск тестов, когда я нажимаю код)
- один для фактически синхронизации календаря Google
Это второй раз, когда я использовал действия GitHub, и я думаю, что это фантастически. В прошлом я, вероятно, использовал бы что-то вроде Heroku, чтобы на самом деле запустить скрипт, но приятно не настроить другой сервис, и я могу сделать его только спусковым крючком, когда код/данные изменения.
Оригинал: “https://dev.to/matmooredev/a-shared-calendar-for-software-engineering-conferences-in-the-uk-5581”