Day3 自订电脑开机讯息

上一回,我提到 CC: Tweaked 的 Computer 方块有许多基础指令
但我不打算逐一介绍各个指令用法
请大家自行用 help 查询唷!

开机讯息怎麽产生的

今天开始,我们来抽丝剥茧,看看这个「Computer」到底是怎麽写出来的?
首先,就从自订电脑开机讯息开始!
但是在自订开机讯息之前,必须先了解开机讯息怎麽产生的
用 ls / dir 指令简单浏览一下,可以看到根目录有个 rom 资料夹
应该可以理解为电脑的核心程序码
rom 底下有一些资料夹和两个档案 motd.txt 和 startup.lua
startup.lua 可容易理解为开机後自动执行的程序码
那麽 motd.txt 呢?
MOTD 据说是 Message of the day 的缩写

试着查看 motd.txt 内容

cd rom/
edit motd.txt

发现第 14 行有一段文字就是上一篇文章的电脑开机讯息
Use "monitor" to run a program on a attached monitor.

如果你用 reboot 指令,或是快速键 ctrl + t 按压约 2 秒重新开机
会发现每次的开机讯息是随机的
除此之外,motd.txt 还有一段文字如下
You can disable these messages by running "set motd.enable false".

所以我已经很确定几件事:

  1. motd.txt 存放开机讯息,并且每次随机从里面挑一行显示
  2. 输入 set motd.enable false 就可以关闭开机讯息

另外,执行 motd 後,也会随机显示开机讯息

有了这些资讯後,再试着回到 startup.lua 寻找 motd 关键字,发现以下这段

-- Show MOTD
if settings.get("motd.enable") then
    shell.run("motd")
end

也就是说,开机後执行 startup.lua 并判断 motd.enable 环境变数,如果 motd.enable 是 true,就在当前的 shell window 执行 motd 指令,随机显示一条开机讯息。

可以自订开机讯息吗?

自订开机讯息只是我一开始的假设与期望,那麽实际上可以做到吗?
我们来看看 rom/programs/motd.lua 内容

local date = os.date("*t")
if date.month == 1 and date.day == 1 then
    print("Happy new year!")
elseif date.month == 12 and date.day == 24 then
    print("Merry X-mas!")
elseif date.month == 10 and date.day == 31 then
    print("OOoooOOOoooo! Spooky!")
else
    local tMotd = {}

    for sPath in string.gmatch(settings.get("motd.path"), "[^:]+") do
        if fs.exists(sPath) then
            for sLine in io.lines(sPath) do
                table.insert(tMotd, sLine)
            end
        end
    end

    if #tMotd == 0 then
        print("missingno")
    else
        print(tMotd[math.random(1, #tMotd)])
    end
end

大家看到这段程序码,有会心一笑吗 :)
作者在这里埋了些趣味,例如在圣诞夜开机,电脑就会跟你说 Merry X-mas!
接着下半段的程序码,没有完全看懂没关系
但应该可以大概猜出来,它会去读取 motd.path 变数,来取得开机讯息档的路径
可想而知,motd.path 的预设值是 /rom/motd.txt

那我们直接改看看吧!
(set 是 CC: Tweaked 用 Lua 设计的指令,请用 help set 查询说明)

set motd.path "/mymotd.txt"
edit mymotd.txt

在 mymotd.txt 写下
Hello Egg ! Welcome to 2021 ironman competition. Come on and good luck !
重新开机後就可以看到这个画面啦!

只能用这种笨方法写 Code 吗?

今天的分享到这里,但有人觉得在 CC: Tweaked Computer 里面写 Code 很笨拙吗?
没有快速键或指令可以方便搜寻档案内的文字
也没办法像 vim 那样,快速浏览档案、删除整行、选择范围、搜寻取代 ...
几乎什麽工具指令都没有(或只是我不知道?如果你们知道,请跟我说,谢谢~)
这样写 Code 太没效率了 ><

下一回,我们来寻找更适当的开发工具,请期待~


<<:  DAY18-动态规划(一)

>>:  Day10 Kibana - 过滤器

人脸辨识的流程--人脸识别

人脸辨识系统有三个步骤,人脸侦测、特徵撷取、人脸识别。 人脸识别(Face recognition)...

Linux 解压缩 .zip 档案

下载压缩及解压缩工具 yum install zip unzip 将 data 目录下所有档案压储到...

Fluentd Bit

在 Fluentd Bit 中可以使用 read 或 socket 方式处理日志 read 用於读容...

掌握SEO优化3大要点,让搜寻引擎知道「我就是你要的网站!」

网站上线後,开始接触网站经营相关的资讯时,才发现经营网站没那麽简单? 网站最重要的工作就是招揽潜在客...

DAY11 资料前处理-资料不平衡处理方法

试想一下,如果有个模型号称有99%的准确率,那这个模型好不好呢?答案是不一定,在处理分类问题时,我们...