定制与分发

v3.7.2 版本之后,引入了一个钩子(hook): Adapter 在启动时,将加载app_settings.py文件。

app_settings.py 可以是任意 Python 脚本!

文件位置

app_settings.py 的位置在不同系统下位置不同。

Windows

在 Windows 系统下,位于 src 目录下

MacOS

在 MacOS 系统下,位于 CodeLab-Adapter.app/Contents/Resources/

典型应用场景

初始化配置信息

app_settings.py 优先级高于user_settings.py, 兼容user_settings.py的所有配置参数。

所以你可以使用该钩子配置 Adapter 的行为(诸如开启局域网访问权限,将其作为局域网消息中心)

重新分发 Adapter

近期我们发布了 Adapter 完整版, 将 Adapter Node 的环境(嵌入了 Python 解释器和依赖包)打包分发,用户不需要在本地安装 Python,即可运行 Adapter Node。

这项工作的最初动机是简化 DynamicTable 的使用,由于 DynamicTable 希望进入家庭,开箱可用是设计目标之一。所以我们选择将 环境和 Adapter 整体分发。

目前 Python 社区打包分发的机制五花八门,我几乎试遍了所有的机制。目前最喜欢的技巧是在 hack CMU 的 Calypso 软件时学来的:,它的内部 Python 环境十分复杂,但却做到了开箱可用。

这项工作的一个产物是,开发者可以将 Adapter 的自定义插件,连同整个环境一起分发! Jypyterlab 、 OpenCV 、Tensorflow、 Numpy 等等这些复杂依赖,都能做到开箱可用。

你无需支出什么工作,便可把定制后的整个开发/教学 Python 环境分发给用户。

以上这些都基于app_settings.py钩子!

生命周期

利用这个钩子,也可以改变 Adapter 的运行生命周期,如果你愿意基于 Adapter 构建可扩展的 Python/Scratch 环境,将变得极其简易。

我看到目前 STEAM/编程教育许多团队在环境打包上,投入了很多人力,但灵活性做的很差。

将其视为 hack 机制, WTFPL

Adapter 主页

如果你想修改软件启动时打开的页面,只需要修改 WEB_UI_ENDPOINT 即可,诸如: WEB_UI_ENDPOINT = "https://www.codelab.club/", 每次打开软件都将自动打开CodeLab主页

白名单(允许无 token 使用)

用户配置文件或者app_settings.py修改USER_WHITELIST_HOSTNAME即可。

形如

USER_WHITELIST_HOSTNAME = ["codelab.club"]