我的生活架构

2021-01-29 11:09:48

这是2019年职位的更新版本,我的生活架构,您可以在这里找到。

自动化是我的最爱。就像这篇文章顶部的图一样,我不确定最终是否会节省我的时间,但是它给了我很多学习的机会,因为试图构建一个具有漂亮架构的弹性软件,一个不断发展的项目将帮助我提高工作效率,这将不断推动我学习更多。我希望借此可以激发您实现生活的一部分自动化。

基础:我的自动化所基于的代码。它还将解释我对自动化的思考背后的基本思想。

操作:我所构建的一些自动化概述。如果您正在寻找自己的灵感来建造自己的东西,这是一个去的地方。

其他软件:并非我构建的所有内容都可以在我构建的框架内运行。我还构建了其他一些很酷的实用程序来帮助我的日常生活。

我的自动化的核心和基础称为Atlas。从连接到服务到处理错误,Atlas都可以处理运行我的自动化所需的一切。

Atlas的核心是一个简单的想法:动作。我可能想自动化的任何事情都是一个动作。它将代表我使用的在线服务。一些操作会自行检查是否需要运行(为发送的电子邮件添加提醒)。该动作还可以决定要运行的频率,从每15分钟一次到每周一次。其他我只想在需要它们时运行(检查系统的正常运行时间)。

有些人需要输入才能正确地完成工作(将待办事项添加到我的待办事项列表中)。最复杂的动作具有某种状态,因为它们需要的输入更加复杂。

要构建此状态,我使用chatbot界面,在其中发出命令,系统解析我的输入,更新状态并执行下一步,逐步构建状态,直到完成操作所需的所有必要属性为止。下图对此流程进行了说明

例如,当我想将一个任务添加到特定任务列表时,我首先编写该任务的内容,并将其添加到状态中。它通过一些示例任务列表回答询问我要将其添加到哪个项目。我回覆"撰写网志"。在“更新状态”中在流程的一部分中,任务列表的标题随后在内部转换为列表的内部ID。这样,我和其他使用该系统的人都不需要知道确切的内部构造。

Atlas始终是另一个项目的一部分。它包装在Ares中,Ares是一个连接Atlas和Microsoft Bot Framework的项目,使它可以作为聊天机器人使用,在我的情况下,可以作为Telegram聊天机器人使用,在其中您可以要求它执行操作。它也可以作为Azure函数运行,可以作为Web-api使用。我已使用此API来构建iOS快捷方式,以通过手机运行并观看操作,并创建了Windows应用程序,以便可以从笔记本电脑运行任何操作。 Azure函数还会在计时器触发器上运行,每15分钟执行一次以执行相关操作。

建立自己的自动化系统的问题之一是事情正在崩溃。不断。我正在连接17个在线服务,并且拥有35.000+行代码,这意味着可能会损坏某些东西。大多数错误发生在操作内,因为它们最经常调用外部服务并进行更改(并因此中断)。为确保一项操作不会破坏整个系统,这些操作在try-catch块中运行。

动作崩溃后,自动化将开始运行以处理崩溃。独立运行的动作将开始向我发送消息,告诉我在四次失败的运行后它已损坏,因此超时和其他临时问题不会困扰我。它还会自动限制自身运行,以指数方式延迟其下一次运行,以确保它不会破坏任何内容,并且不会给我造成垃圾邮件。

崩溃10次后,我的自动化程序会自动创建一个GitHub问题,其中包含崩溃的操作名称和堆栈跟踪。它甚至会尝试在GitHub链接中的代码中生成一个认为该问题根源的网址。

一次崩溃后,Telegram聊天机器人会询问用户是否要发布GitHub问题,因为这被认为更为重要。

现在,您对基础知识有了很好的了解,我们可以讨论很酷的部分。

我喜欢听很多音乐。去年,我花了98.960分钟收听了Spotify,这是目前最受欢迎的流媒体服务之一。为了帮助我从他们的服务中获得最大收益,我运行了很多自动化程序来帮助我。

为了帮助您查找新音乐,Spotify为您提供了两个自动生成的个性化播放列表。一个包含有来自新歌手的新音乐的Discover Weekly播放列表和一个包含本周发行音乐的Release Radar播放列表。两者都很好,但是有一个问题,它们从非常响亮的活力跃升到宁静的钢琴音乐。如果您正在收听,这将非常刺耳。为了解决这个问题,我从播放列表中下载了所有歌曲,并获得了歌曲的功能。这些功能由Spotify提供,并包含能量,舞蹈性,生动性和响度。我按响度排序所有歌曲,然后将它们放入新的播放列表中。这样,我可以从很大声到很安静地听音乐。

拥有歌曲功能后,您可以考虑更大的想法。 Spotify可以从我所有保存的音乐中提取功能。由此您可以生成播放列表。但是,要做到这一点,您将需要找到完美的设置来创建一个不错的播放列表。为此,我创建了一个名为Playlister的Windows应用程序,下面将进一步解释。使用Playlister,我创建了名为Summer,W​​inter,Piano和Energy的播放列表。每周,Atlas都会从Spotify下载我所有保存的歌曲,并通过播放列表的每个经过微调的过滤器运行它们,并使用我添加的新歌曲更新每个歌曲,并删除不再喜欢的歌曲。因此,如果我想听让我大肆宣传的音乐,我会听一听Energy播放列表,其中包含我喜欢的歌曲,经过我的调整后,可以认为它充满了活力。

我(过去)花费大量时间骑自行车和乘火车旅行。我有一个数据计划,但是不想超支它。这导致我需要Spotify下载很多音乐。但是,我也想带很多新音乐。我可以下载所有音乐,但是手机没有足够的存储空间。为了解决这个问题,Atlas每晚都会更新播放列表,其中包含我过去4周内添加的所有歌曲。然后,我告诉Spotify始终保持下载此播放列表。这会导致我的最新歌曲几乎总是更新的播放列表。

在上一段中,我解释了我无法将每首歌曲都下载到手机中。但是,我可能想偶尔听一次随机选择的音乐。音乐不在我自动生成的播放列表之一或任何其他列表中。此外,即使我有互联网,有时我也会感觉洗牌并不是完全随机的。最后,它也按响度排序,如果我需要集中精力,我可以从响亮开始,以平静的音乐结束。为了解决这些问题,Atlas每天晚上都会拿走我保存的所有音乐,随机挑选50首歌曲,并将其添加到按响度排序的播放列表中,这样我就可以随时聆听自己喜欢的一些随机音乐。

Spotify具有一项称为Release Radar的功能,您可以每周在此聆听您所关注的艺术家那一周发出的音乐或可能会觉得有趣的音乐。很棒,我从中得到了很多新音乐,但是它可能会错过我喜欢的歌手,如果某个歌手发行了整张专辑,它只会在播放列表中显示一首歌曲,我绝对可以理解,但是我不要因此,我创建了一个Atlas行动,每个星期五都会检查我关注的所有艺术家。如果他们在上周发布了任何新音乐,并将这些歌曲放入了一个名为“完全释放雷达”的播放列表中,那么我确实对此有一个概述。另外,另一个操作是检查我是否添加了新歌手的音乐并自动关注它们,因此此列表在不断扩大。

任务列表对我来说是必须的。我忘记了很多事情,任务列表使我能够跟踪所有需要做的事情。为了帮助我,我使用Todoist。

也许有人知道,每个星期五,我都会打扫房间。这非常好,因为在一周中我不必考虑保持所有物品的清洁,因为在星期五我还是会对其进行清洁,也不必在一周中的某个时间强制使用它。清洁是我必须经常进行的事情,并且有预定的任务清单。尽管我尝试在星期五进行,但可能会在另一天发生。为了能够快速开始所有这些任务,我有一个Action,可以随时导入模板。模板用TaskPaper编写,这是一种简化的记录任务的方式,可以创建所有项目和任务。这些配置文件存储在我的OneDrive中,因此我可以随时随地编辑,删除或添加任何新列表。

在GitHub上,我目前有7个存储库,这些存储库中有我计划在一天之内解决的问题。为了在一处跟踪此情况,我将它们同步到Todoist,在这里可以在单独的项目中看到它们。这只是一种方法,因为我既不想在Todoist中创建问题,也无法解决问题。

从我的任务列表中进行工作时,可以将该工作分为两个主要类别:今天需要完成的工作和您计划今天进行的工作。在Todoist中,按到期日期可以轻松管理第一个。第二个由我自己管理,带有标签@today。然后会向我显示带有该标签并有今天的截止日期的所有任务,我将在当天进行工作。为了帮助我管理这项计划的工作,我运行了一些自动化程序。每天晚上都会执行一次动作,该动作:

使用截止日期今天更新所有任务,使用标签@planned更新该任务以删除该截止日期,并添加标签@yesterday

这样可以确保当我醒来时,我确切地知道我一天需要做什么。

我所有的朋友都知道,我每次有晚餐/会议/聚会都会发送日历邀请。我发现这使每个人都具有相同的基本真理,因此毫无疑问何时召开会议。因此,我做了很多,并使用自动化来简化它。

在Outlook中,您还可以存储一个人的住所。当我在朋友处开会时,他们的地址在我的系统中,我只需要在活动的位置字段中输入该人的姓名,Atlas就会添加该人的确切地址。在这些锁定时间内,会议现在处于联机状态。如果我在日历事件中将“ @ {Teams}”作为位置,它将为我创建一个新的团队会议,并将链接添加到日历事件中。

就像这个星球上的每个其他人一样,我记得生日很可怕。为了确保我不会忘记购买礼物,我会在一个人生日前一周提醒一次,然后在当天提醒自己,祝他们生日快乐。

我使用收件箱为零,这导致我移动已完成的电子邮件或与存档文件夹不再相关的电子邮件。要删除该文件夹中可能存在未读电子邮件的OCD小东西,它只是将该文件夹中的所有内容都标记为已读。

从第二年开始在代尔夫特学习以来,每个星期四我和一群朋友聚在一起吃饭。从那时起,我每周都会发送邀请,并注明日期以及谁将主持该周。由于每周发出邀请有点烦人,有时我会很尴尬地忘记某人或使用错误的电子邮件地址,因此我将此操作设为“我可以触发以填写位置和标题”,其余部分将由我来处理。

最近,我收到了一些智能灯作为礼物。我现在有5个可调光灯和1个可以改变颜色的灯。显然,我使它自动化。

根据需要改变房间的灯光非常好。为此,我实现了情绪的概念。白天,我喜欢明亮的工作环境,所有灯光都充分发挥作用,并尽可能照亮我的房间。当我参加会议时,我有一种尝试最大化照明的心情,因此在视频通话中看起来尽可能的好。到了晚上,灯光昏暗了,所以我有点困了。最终,当我不在那里或睡着时,它会心情舒畅。

在有关Spotify的部分中,我们了解到您可以从歌曲中提取功能。而且,您还可以提取给定歌曲的节奏。这意味着您可以获得歌曲的节奏。通过Spotify,我们还可以查看正在播放的歌曲以及歌曲中的位置。接下来,通过接触智能灯泡,我们可以在歌曲的节拍上切换灯光。灯光会一一改变灯光的亮度,因此看起来就像是音乐的节奏从右到左。体验很棒,向您的房间的访客炫耀也很有趣。

观念已开始成为我掌握所有知识的基础。它包含我的博客文章,食谱,笔记,并用作我的Zettelkasten(至少我尝试这样做)。为了使事情井井有条,我运行了一些自动化程序。由于事实证明连接到Notion非常困难,因此我对它们的代码进行了反向工程,以便能够与该服务进行交互。

在概念中,我列出了我想要的所有配方。由于将它们放在一个网站上,使您无法从多个来源获得食谱,将它们放在“ Notion”中是最好的选择。使用自动化,我可以在几秒钟内导入新配方。

我正在尝试为我消耗的所有物品建立有用的知识库。随着年龄的增长,我意识到几年前阅读和听过的东西对我来说又是新事物,我想保留从文章和播客中学到的一些知识和智慧,以便我能够在以后使用它们。因此,我已经开始在Notion中收集它们,并且正在使用某种自动化为我准备一些模板。

正如您可能在“ Todoist”部分中阅读的那样,我列出了我每天要完成的任务。为了让我专注于这些任务,我为自己创建了一个起始页。它非常简约,并具有自动暗模式。打开新页面时,我也可以完成任务。一旦完成所有任务,它将从Unsplash加载随机图像作为背景。

为了帮助确定我今天要执行的任务,我创建了一个名为DailyTodo的通用Windows应用程序。我可以搜索任何任务,可以按项目或标签进行过滤。一旦选择了任务,它将在其上添加@today标签。这告诉我的系统我今天要执行此任务。然后,它还将在我的Windows操作中心中发出通知,并强制其停留在顶部。因此,如果在一天中的任何时候我想知道该怎么做,我都可以打开它并快速选择下一个任务。如您在下面的图片中还可以看到的那样,借助这些通知,我还可以快速完成或将其从一天中删除。

记住链接可能很困难。创建Microsoft团队链接时,它甚至可能不会作为某些软件的有效链接。为了帮助您,可以使用链接缩短器。已经存在很多链接缩短器,但是我喜欢负责我拥有的任何个人链接。因此,我创建了lnk.nntn.nl。例如,看一下我的简历。

如Microsoft部分所述,我有很多日历邀请。但是,有时您可能想创建一个事件,但不确定谁愿意露面。为了帮助解决该问题,我创建了一个网站,可以让人们注册日历中的任何事件。您写下您的电子邮件,它将发送给您日历邀请。如果这是您第一次使用它,它将要求我验证您的电子邮件,以便您不会向随机的人发送垃圾邮件。

是的,您没有看错。这个博客是我自动化的一部分。使用概念,我可以写任何我想要的博客文章。我使用Atlas从Notion中提取文本并将其转换为html,以显示在您现在正在阅读的博客上!

我自己的代码中更可爱的示例之一是Wallsetter。这是一个小型应用程序,我构建该应用程序后每两个小时设置一个新的锁定屏幕和墙纸。它从Unsplash获得了新图像,Unsplash是一个了不起的网站,可以免费使用图像。然后,Wallsetter可以对其应用各种效果。

最酷的是,对于锁定屏幕,它可以检查我的Trakt并查看今天播放的电视节目,或者昨天是否有我尚未看过的节目。然后它将获取该节目的图像并将其设置为我的锁定屏幕或墙纸。

但是,当前这不是我的设置,我用它来下载一只可爱的狗的图像,将其设置为我的墙纸,并将其黑白版本设置为锁定屏幕图像。它很棒,我对此很满意。

Spotify可以从我所有保存的音乐中提取功能。如前所述,您可以从中生成播放列表。但是,要做到这一点,您将需要找到完美的设置来创建一个不错的播放列表。为此,我创建了Playlister,这是一个通用的Windows应用程序,可让我玩下图右侧显示的所有功能。