本文作者夏蕾,来自陆金所大前端团队,没有追求的厨师当不好码农,包子,小蕾蕾,高冷姐,外号持续更新中,本文编译自 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。希望有机会看到文章的各位可以尝试着一起去扩展功能哦,顺便学习下新技术!!!😝