Sucha's Blog ~ Archive for November, 2022

22年11月29日 周二 23:40

上线 mooncake 主页 https://moocscript.fun

周末忙着将 mooncake 的主页 https://moocscript.fun 上线了。

蛮早就知道了 browser 上直接能跑的 Lua VM https://fengari.io,而 mooncake 是一个纯 Lua 的 transpiler,除了可以通过 fengari 在浏览器里直接运行,还能直接操作 javascript 对象。

当然 fengari 也有一些限制,比如没有 io 库。而在 mooncake 这边,则需要将分开的工程文件 parser、compiler、core、class、utils 集成到一起,主要是在 HTML 加载一次就行了,分开的库耗费时间。

另外一方面,项目本身在不断的发展,因此这个集成需要做成自动化的,既然自动集成的步骤少不了,不如就都合在一起算了。还有,除了需要翻译到 fengari 能识别的 Lua,还需要加上 fengari 环境特别的变量,以及 loader 使用到的接口,才能最终支持 HTML 语法的脚本接口,比如:

<script src="/path/to/hello-word.mooc" type="application/mooc"></script>

<script type="application/mooc">
import Core from "moocscript.core"
print("hello, world ! from " .. Core.version())
</script>

所以,也看了不少 fengari 上面的 javascript 代码,基本上也就是标准的 Lua 上 require 函数的 searcher / loader 的实现了。

这些 fengari 环境上的特别的变量,以及 loader 接口,算是粘合整个支撑环境的胶水代码,代码不多,但花了不少时间探索。

上面说的这些工作,当然不会是一个周末就搞定,当然也不可能每个周末都搞。

而上周末的工作,仅仅只是 HTML 页面的搭建,比如 UI,比如创建 browser 上面直接可以运行的例子,将 onclick 事件绑定到暴露到 window 的各种 moocscript 函数,还有比如 window.alert 之类的 Lua/mooncake 跟 browser javascript 的 fengari-interop 例子。

还加上了日间/夜间模式,之前在本主页尝试过的哈哈哈。

有了这个网站后,非 io 库相关的例子代码,其实都能直接在浏览器上面跑了,玩这个脚本语言,也不需要再下载一个 Lua 解释器,以及 mooncake 的支持库。

由于不需要后端 API 接口,简单的静态页面就够了,所以直接使用了 github pages 托管的 project repo,反正这些代码也是需要上传到 github 上的。还有,域名国内买的,主要是便宜。

项目主页 https://moocscript.fun 顶级域名后缀表达了要义,have fun ~

22年11月26日 周六 09:48

笑傲江湖

我记得大学时候就看过,在当时功能机上面那么小的屏幕、那么小的字、那么长的小说居然看完了。

不过具体故事情节到现在已经忘了,所以才有这么个又看一次。笑傲江湖电视剧我不记得有没有看过,林青霞的电影我倒是看过的,前几个月还重温了一下。

故事虽然从福州的福威镖局开始,但主线始围绕华山派大弟子令狐冲展开。练武之人,始终逃不过一个武林盟主、武功最强,为此江湖可谓是血雨腥风。多少人为了武功最强舍弃一切,最后的《葵花宝典》跟前面的《辟邪剑谱》算是首尾呼应。

反而是中心人物令狐冲,看似任性妄为、桀骜不驯、处处留情,倒是最看重道义两字,有情有义。

在故事后面,任我行没能跟令狐冲来一场打斗,我觉得有些遗憾,也许是作者不想在后面喧宾夺主了,毕竟有一个最大的反转坏蛋岳不群作为对立面就够了吧。