2020 年第 36 周

这周做了什么

PM2

PM2 是用来管理,监控 Node.js 服务和进程的,当然它也支持监控 bash 程序。

在这之前我们使用node app.js来启动一个 Node.js 服务。如果想要保证这个服务在 SSH 窗口退出后保持运行,我们需要将其放在 Screen 或者 Tmux 中。

有了 PM2 后,执行pm2 app.js就可以启动 Node.js 程序了。退出 ssh 窗口也不会中止app.js。PM2 还提供了查看app.js的日志,重启,中止程序的功能。我们也可执行pm2 plus以登录 PM2 账号,这样就可以在 PM 官网的仪表盘上管理和监控我们的服务。

如果想要传入参数,可以执行以下命令。pm2 start app.js --name my-api -- --port 4000。这样就传入了port参数给 Node,并且将app.js这个进程命名为 my-api。

Steam 挂卡&卖卡

Steam 挂卡通过使用 Steam 机器人 24 小时不间断玩游戏来获取集换卡片。卖卡就是将这些集换卡片在市场卖出。如果用 Steam 令牌添加了新设备,集换卡片七天内不能交易。

ASF 是比较热门的挂卡程序。我们可以选择在本地挂卡或者在 VPS 上进行挂卡。本地不可能 24 小时开机,所以我选择在 VPS 上进行挂卡。教程 1教程 2

在教程 1 当中,作者将 ASF 程序放在另一个 Screen 中运行。像上一节描述的那样,我么可以用 PM2 来达到更好的效果。pm2 ./ArchiSteamFarm

Pixiv

写了一个脚本把点赞的图收集起来,每周都可以回顾一下过去一周点赞的图,好好的欣赏,评价一下。至于怎么评价可以看怎么判断画的是神作,还是被无脑吹捧的狗屎。由于点赞列表数据里不含时间,所以就增量更新。以前下载到哪里,我们就把在那之后的点赞的图下载一遍。图片相关信息就直接写进图片元数据中,这样移动起来比较方便。

图片元数据的格式分为 EXIF,IPTC,XMP 这几种格式。每一种格式有着自己的数据规范。比如 EXIF 是没有 Title 这一栏的,但是 XMP 却有。对比了他们所提供的格式和我自己所获取的图片数据,我选择 XMP。

虽然将所有图片信息写入元数据方便图片的移动,但我比较担心读取和写入数据时的性能开销。如果影响不大,这个方法比把数据单独写入数据库要简洁很多。即便图片改了名字,元数据也不会丢。

这个 工具 可以在线查看元数据。

Star Renegade

像素风,回合制,Roguelike,RPG 游戏。虽然是像素风格,光影却是正常的。打击特效和音效做的不错,但是看上那么多遍还是会疲劳。

作为一个 Roguelike 游戏,随机的成分并不是特别多,地图虽然是随机,但是 Boss 和资源变化并不大。在每次旅途中会有装备,等级,和队友互相之间的好感系统。这个养成系统感觉是很 RPG 的。但这个 RPG 是在 Roguelike 的框架下,也就是每次死亡,装备,等级,好感都会重置,需要重新获取。由于回合制的节奏,以及 RPG 的机制,每一把的时间都特别长,大概在三个小时左右,这还是打到一大半的位置。

地图与其他简洁明了的 Roguelike 不同,这款游戏并没有地图,取而代之的是 2D RPG 游戏的那种设计。玩家可以在区域内走来走去。整个大区域被划分成更加细小的区划,通过限制玩家进入新的区划的次数来限制玩家的行动点。整个大区域的设计更像是图,而不是 Slay the Spire 那样的树。Star Renegade 通过这种方式更好的展示了游戏的美术设定,玩家也可以与区域中的一些物品进行互动,从而触发一些关于背景文化的对话。这样的坏处就是玩家不容易看清图的结构,游戏的节奏也会被拉慢,因为玩家在游戏战斗之间需要探索。

游戏中独特的扎营机制也放缓了游戏节奏。消耗完三个行动点,玩家就需要扎营,等待新的一天。在扎营期间,玩家可以培养人物之间的好感,使用各种 Buff 的卡片。

相比 Slay the Spire,选择节点,打怪,选择节点,打怪,这款游戏的节奏慢了很多。打一把需要更长的时间。那么每一把之后,玩家会变强从而在下一次走的更远吗?我个人觉得不怎么会。每一把之后的结算所能获取的东西并不多,我至今还卡在第三关。每一次花费两三个小时来到第三关,然后死亡,然后重来,最后放弃。我想这是游戏节奏的问题,又或者是去掉 Roguelike 可以解决的问题。

Ansible

Ansible 是一个来自 Red Hat 的运维工具。它可以自动化,批量进行许多操作。它适合用来在已有的服务器上安装和管理软件。

我日常会用到 VPS,并在上面安装或者管理软件。常用的软件也就那几个。那么我们可以把这几个软件的安装和管理写成 Ansible Playbook。以后我们就不再需要重复安装和管理软件的步骤,只需要执行 Playbook 就可以了。用自动化解放了我们的双手。

Ansible 的 Playbook 编写采用渐进式,用户需要写下每一步需要做什么。Ansible 有丰富的 Role(库,插件,比如 安装 Node.js),组件支持,大部分操作都可以用现成的 Role 或者组件实现,不需要自己额外进行编写。

Ansible 没有 Master 的概念,任何一个节点都可以推送命令。Ansible 通过 SSH 连接上节点后,执行对应的命令。由于采用 SSH 进行命令推送,接受命令推送的节点不需要安装 Ansible 客户端。

因此对于我来说最好的实践便是在本地安装好 Ansible,注意它不支持 Windows。将常用的软件配置写成 Ansible Playbook。介于丰富的组件和 Role,这并不难。每当有新的 VPS 时,我们执行相应的 Ansible Playbook 就可以完成所有工作。比如我写了 Tiny Tiny Rss,Unblock Netease Music 的 Playbook,如果以后更换 VPS 就可以很方便的安装这些软件。

我们可以把用到的 Role 放到 Requirement.yml 中,这可以保证换个环境,安装完依赖后,我们之前写的 Playbook 还可以正常运行。

最后推荐一个 视频教程,视频教程虽然看起来慢但是比较容易理解使用者的思路,易于模仿。

这周看了什么

  • 回到夏天: 作曲:爱写歌的小田,作词:雷壮、爱写歌的小田,编曲:罗洋(卡其漠)。然而这个旋律从头到尾就没怎么变过。
  • Trasfer: 这个工具整合了所有主流的文件分享工具,比如 airpotal,奶牛快传等。文件的分享和下载可以通过命令行完成。传输方法不是点对点,因此借助第三方服务器需要消耗更多的时间。如果想要点对点,节省时间的传输方式可以用 WinSCP 等软件采用 SFTP 的传输方式。
  • Batch Git Pull: 批量更新 Git 仓库。我想很少有人一次性更新所有仓库吧。对于那些不怎么维护的 Git 仓库,更新了之后只会徒增 bug。那些正在维护的仓库,应该会一个个的更新,慢慢解决 Bug。
  • Tabnine: 非常好用的 AI 自动补全。当别人只能一个词一个词补全的时候,它可以补全整句话。连for语句也可以帮你补全,list 的 index 也可以帮我补全。
  • Applied ML: 大公司发的人工智能文章。
  • Hero Pattern: 可以自定义的 SVG 几何背景图。
  • autoscrapper: 一个智能的爬虫库。用户将目标告诉它,这个库会返回类似的结果。比如要抓取一个博客中所有文章的标题,用户可以将一个文章的标题告诉它,它便输出所有标题。
  • 怎么判断画的是神作,还是被无脑吹捧的狗屎: 这个视频讲述了作者自己如何判断一幅画好看不好看。
    • 艺术元素:
      • 线条
      • 明暗和颜色
      • 主体形状
      • 材质
      • 空间
    • 艺术原理:
      • 平衡
      • 引导线(视线运动)
      • 对比
        • 颜色明暗
        • 颜色冷暖
        • 颜色饱和
      • 风格统一
      • 规则变化(不重复和呆板)
        • 软的线条和硬的线条组合
        • 直和弯的组合
    • 数据指标:
      • 初次观看时长
      • 重复观看次数
      • 观看后的思考
  • Thoughts on the market: Morgan Stanley 对于市场的分析。
  • MyFonts: 识别图片中的字体。
  • 《乔布斯传》作者沃尔特,艾萨克森:“一个具有强烈个性的人身上集合了人文和科学的天赋后所产生的创造力,是在 21 世纪建立创新型经济的关键因素。”

下周做什么

  • GRE 备考
  • 极简欧洲史
  • Pixiv 完善
  • 图片展示网站 UI 设计
  • 整理手机浏览器标签页

This blog is under a CC BY-NC-SA 3.0 Unported License
本文链接:https://www.inevitable.tech/posts/1c32c9b8/