没有程序员鼓励师?我们可以自己造一个啊!

2,662 阅读5分钟
原文链接: zhuanlan.zhihu.com
本文作者夏蕾,来自陆金所大前端团队,没有追求的厨师当不好码农,包子,小蕾蕾,高冷姐,外号持续更新中,本文编译自 tiny-care-terminal

tiny-care-terminal 这个项目我看到的时候平静已久的肾上腺素突然有了一丝波动,要知道如我一般的女程序员,每天对着的死板如达康书记的电脑,突然之间达康书记变成了温柔精分的张若昀,这种时候心情还是很难平静的吧。男程序员同胞请自动脑补女教导主任和霓虹老师的差异。话不多说,正式来介绍 tiny-care-terminal。

tiny-care-terminal

tiny-care-terminal 是一个小型的 dashboard。当程序员工作的时候,她会推送一些萌萌的,暖心的提示来给程序员减压(是不是很赞?)。tiny-care-terminal 推送的内容包括以下三点:

  • @tinycarebot, @selfcare_bot, @magicrealismbot 这三个 Twitter 账号上面的最新发布。前两个账号主要提示程序员要注意休息啦、多喝水啦、站起来远眺来放松眼睛啦等信息(好有女友力/男友力),第三个账号主要推送一些奇闻异事。当然,如果你不喜欢这些现有的推送,可以自己配置推送机器人;
  • git 账号的上面的 commit。当程序员觉得自己一天都无所事事(空虚)的时候,很有可能是因为感觉到自己并没有提交非常有价值的核心代码。往往这个时候,我们会忽略自己在高楼大厦平地起的过程中做的细微的工作。tiny-care-terminal 希望可以帮助到产生类似的负面情绪的程序员;
  • 天气。忽略看天气预报,忘记带伞的宝宝经常会被淋到哦。

tiny-care-terminal 长得如下图所示的样子,每20分钟更新一次。(好像也不是很美?自己动手,丰衣足食啦。毕竟我们是万能的呢!)

使用教程

1. npm全局安装 tiny-care-terminal、git-standup

npm install -g tiny-care-terminal

npm install -g git-standup

提示:目前 tiny-care-terminal 还不支持使用 yarn, 先坚挺的使用 npm 来安装吧。作者大大表示会 fix 的。

2. 设置环境变量

安装完 npm 包后,需要设置系统的环境变量。

由于 os 和 shell 太多,作者并没有覆盖到所有的。使用 tiny-care-terminal 的时候必须把修改的环境变量拷贝到系统路径下。例如,

  • 使用 zsh 的选手,修改根目录下的 .zshrc 文件。
  • 使用 bash 的选手,修改 bash_profile 文件。
  • 使用 fish 的选手,在~/.config/fish/config.fish 文件中配置 -gx。

听说二逼青年用 bash,普通青年用 zsh,文艺青年用 fish。各位选手对号入座吧。

环境变量的设置是非常重要的,所以必须保证这些修改为全局的。检查环境变量是否设置正确可以在终端打印出来。比如echo $TTC_WEATHER.

配置 tiny-care-terminal

所有的配置都可以在示例文件 sample.env 中找到,这个文件并没有被项目所使用,只是列出了可以拷贝到rc文件中的环境变量名。

  • TTC_BOTS,可配置三个Twitter账号。
  • TTC_SAY_BOX,parrot | bunny | llama | cat, 配置推送信息的动物。
  • TTC_REPOS,设置git仓库,不同的仓库以逗号分隔。
  • TTC_REPOS_DEPTH,git仓库的最大深度(默认为1)。深度越大,获取结果的速度越慢并且结果会被缓存。
  • TTC_WEATHER,配置天气的位置。比如将值设置为Paris可获取巴黎的天气信息。也可使用邮编来设置,但不保证总是能获取到正确的天气,所以最好使用地址。
  • TTC_CELSIUS,默认是true。
  • TTC_APIKEYS,如果不想使用Twitter api,将值设置为false。
  • TTC_UPDATE_INTERVAL, 更新频率,默认20分钟更新一次。

配置Twitter API 秘钥

tiny-care-terminal有两种获取推文的方式:

  • 使用Twitter API 秘钥
  • 使用爬虫抓取推文

作者更倾向于用户使用Twitter API keys。获取推文需要Twitter API keys。创建一个新的应用非常简单,点击打开创建地址。创建完毕后会得到4个值,将这4个值配置到环境变量里面即可。示例代码见sample.env 文件。

TTC_CONSUMER_KEY='...'

TTC_CONSUMER_SECRET='...'

TTC_ACCESS_TOKEN='...'

TTC_ACCESS_TOKEN_SECRET='...'

3、启动项目

tiny-care-terminal

按下esc或者q键可停止项目,r 键可刷新。

🆘启动后看不到git commit 的可能原因,

  • 没有安装 git-standup,那么再npm install -g git-standup 一下呗。
  • 没有设置git仓库,手动检查一下环境变量。在终端输入echo $TTC_REPOS检查一下,如果没有配置就配一下呗。
  • Windows系统可能不支持,因为bash的原因。
  • 使用yarn来安装依赖,作者大大说要使用npm啊(他的锅)。

照顾好你自己好吗?(比心💖)

终于可以开始自己造鼓励师了!

所以作为程序员当然要定制符合自己审美的鼓励师啦。因为 Twitter 被墙了,需要使用vpn来连接。推荐一个好用的 vpn。AppStore 搜索superVPN(码生遇到的最傻瓜的VPN)。

将项目下载到本地,git 链接为: notwaldorf/tiny-care-terminal

进入项目目录,npm install将项目所需的依赖下载下来。如果之前已经运行过tiny-care-terminal,这些依赖已经有了。

npm install

打开.bash_profile。如果根目录下面已经存在.bash_profile,

cd ~

open -e .bash_profile

如果根目录下面不存在.bash_profile

cd ~

touch .bash_profile

open -e .bash_profile

编辑完.bash_profile之后,保存并退出。保存过后.bash_profile 长这样。每修改一次.bash_profile,注意实时更新一下。

每修改一次.bash_profile,注意实时更新一下。

source .bash_profile

tiny-care-terminal看起来是个非常轻的项目,基于Node.js实现,项目的目录结构也非常简单。这里我使用的编辑器是WebStorm,大家随意。打开package.json可发现项目的主方法为care.js。通过package.json可发现作者使用了许多Node.js库。整个dashboard的布局使用的是blessed终端接口库,其他的库可以在修改或者使用到的时候一一了解。主要的js文件为以下三个,

  • care.js tiny-care-terminal主方法和入口
  • config.js 获取环境变量
  • twitterbot.js 获取Twitter推文方法

我的修改这个dashboard目的为修改布局的layout多出一栏可以推送其他信息。根据blessed库的特性,很容易作出修改。其他修改可参考blessed的api:chjj/blessed

首先修改parrotBox布局,再新增一列。

var parrotBox = grid.set(6, 6, 6, 3, blessed.box, makeScrollBox('  Parrot'));  

var zryBox = grid.set(6, 9, 6, 3, blessed.box, makeImageBox('  张若昀 '));

makeImageBox() 为新增的方法区分于makeScrollBox() 方法。

在doTheTweets()方法里面新增一个逻辑分支

else if(config.say === 'zry'){  

  parrotBox.content = catSay(tweet.text);  

  zryBox.content = zrySay(tweet.text);  

  screen.render();  

}

zrySay() 为新增的方法,具体内容可自定义发挥。

修改完成之后,新旧parrotBox布局对比如下图所示:

总结:

其实这只是一个程序员鼓励师的初级版本,但我认为这是个非常好的idea。希望有机会看到文章的各位可以尝试着一起去扩展功能哦,顺便学习下新技术!!!😝