|
| 1 | +--- |
| 2 | +title: 发布 CodeLab Adapter 3.3.1 |
| 3 | +author: CodeLab |
| 4 | +date: 2020-06-07 |
| 5 | +tags: ["codelab"] |
| 6 | +--- |
| 7 | + |
| 8 | +<img className="img-responsive" src="http://adapter.codelab.club/img/WechatIMG1946.jpeg" /> |
| 9 | + |
| 10 | +> 技术使普通的物理材料(纸和泥土,卡片和玩具车)栩栩如生。 – Dynamicland |
| 11 | +
|
| 12 | +3.3.1 包含以下重大更新。 |
| 13 | + |
| 14 | +<!--truncate--> |
| 15 | + |
| 16 | +# 重大更新 |
| 17 | + |
| 18 | +## DynamicTable |
| 19 | + |
| 20 | +`3.3.1` 支持 DynamicTable。 |
| 21 | + |
| 22 | +DynamicTable 的核心是[node_physical_blocks](https://github.com/CodeLabClub/codelab_adapter_extensions/blob/master/nodes_v3/node_physical_blocks.py) 插件, 该插件已经内置在 `3.3.1` 版本中。 |
| 23 | + |
| 24 | +DynamicTable 是: |
| 25 | + |
| 26 | +- 集体想象的产物。 |
| 27 | +- 是一个工具包(toolkit),而不是一个 APP |
| 28 | + - 鼓励创作者使用剪刀、纸张、玩具等事物进行创作。 |
| 29 | +- 是一种开放的可编程环境 |
| 30 | + - 使用 Scratch 即时构建应用程序。 |
| 31 | + - 基于 CodeLab Adapter 连接万物 |
| 32 | + - 与 CodeLab 可编程空间拥有一样的设计理念,可以视为它的一个 micro 版本 |
| 33 | +- 实物与虚拟事物融合在桌面上,可交互 |
| 34 | + - 交互的规则由用户自定义 |
| 35 | + - 在环境中,洞悉(seeing)事物的内部/运行状态,以便于创作者真正理解复杂事物 |
| 36 | + |
| 37 | +我们先来看几个在 DynamicTable 构建的项目: |
| 38 | + |
| 39 | +<video width="80%" src="https://adapter.codelab.club/video/1590154622682774.mp4" controls="controls"></video> |
| 40 | + |
| 41 | +<video width="80%" src="https://adapter.codelab.club/video/1589459621915320.mp4" controls="controls"></video> |
| 42 | + |
| 43 | +<video width="80%" src="https://adapter.codelab.club/video/1590665913541756.mp4" controls="controls"></video> |
| 44 | + |
| 45 | +关于 DynamicTable 的更多信息, 请参考: |
| 46 | + |
| 47 | +- [CodeLab DynamicTable: A Seeing World](https://www.codelab.club/blog/codelab-dynamictable-a-seeing-world/) |
| 48 | +- [CodeLab DynamicTable: 一个可实施的技术方案](https://www.codelab.club/blog/codelab-dynamictable-an-instance/) |
| 49 | + |
| 50 | +## 新的 Web UI |
| 51 | + |
| 52 | +> Adapter 缺乏一个体面的 UI. |
| 53 | +
|
| 54 | +和许多开源项目一样,CodeLab Adapter 的 UI 有些简陋。 |
| 55 | + |
| 56 | +近期我们的合作方 Longan 团队正将 CodeLab Adapter 实施于商业项目,他们为 Adapter 重新设计了 UI: |
| 57 | + |
| 58 | + |
| 59 | + |
| 60 | +新的 UI,致力于对用户更加友好和可理解,大家如果有什么更好的建议, 欢迎在 [issue](https://github.com/CodeLabClub/codelab_adapter_extensions/issues) 中反馈,我们会持续迭代它。 |
| 61 | + |
| 62 | +## 新增插件 |
| 63 | + |
| 64 | +### node_physical_blocks 插件 |
| 65 | + |
| 66 | +主要用于构建 DynamicTable。前边已经论述。 |
| 67 | + |
| 68 | +当然该插件也可以用于其他用途。 |
| 69 | + |
| 70 | + |
| 71 | + |
| 72 | +诸如周末活动的参与者 @taotao 今天在 Neverland 里编程时发现,在他没有动手拧动贴有 marker 的纸质方向盘时,marker 的角度信息仍然会发生细微变化,一开始我们都感到疑惑,以为是个bug。但经过排查,发现原因是因为摄像机能捕获到肉眼不可见的 marker 位置变化, 而 marker 的位置变化则由桌面的微小震动引起(通过实验获知),所以它可以用于检测桌子的震动! |
| 73 | + |
| 74 | + |
| 75 | +以上是程序代码,从舞台区的变量值,可以看到精度很高,能检测微小的震动引起的 marker 空间位置变化信息。而 Scratch 的动态交互式风格,让@taotao 在 debug 时发现了这个细微变化,提出这个看起来像是 bug 的问题,它实际是一个发现! |
| 76 | + |
| 77 | +如果进一步放大震动,甚至有可能用于检测地震。 |
| 78 | + |
| 79 | +这是我们设计 node_physical_blocks 插件时,未曾想到的应用场景,由一个编程入门者的疑惑引起的发现。 |
| 80 | + |
| 81 | +我试着从今天的例子中,寻找原因。CodeLab 的活动围绕项目以及编程者的兴趣展开,由于其非体系化的结构,允许编程者自由探索活动过程的意外问题,而不是急着抵达某种教科书预设的知识或是算法技巧。 |
| 82 | + |
| 83 | +### node_eim_monitor 插件 |
| 84 | + |
| 85 | +如果你是新手,想使用 Python 增强 Scratch,[EIM Monitor](https://adapter.codelab.club/extension_guide/eim_monitor/) 插件可能是最佳选择。 |
| 86 | + |
| 87 | +EIM Monitor 致力于在灵活与简易之间取得一个平衡,让新手能够轻松起步。 |
| 88 | + |
| 89 | +此前 EIM Monitor 只有 Extension 版本。如果你想引入 Python 社区的第三方库,它便无法满足。 |
| 90 | + |
| 91 | +于是我们构建了 EIM Monitor 的 [Node](https://adapter.codelab.club/dev_guide/Adapter-Node/) 版本, 保持 EIM Monitor 简易性的同时,允许用户使用 Python 社区的任何第三方库。 |
| 92 | + |
| 93 | +### Yanshee 插件 |
| 94 | + |
| 95 | + |
| 96 | + |
| 97 | +[Yanshee](https://www.ubtechedu.com/show-59.html) 是一个开源人形机器人教学平台, 面向高中和大学生开发,提供专业开源学习软件。 |
| 98 | + |
| 99 | +Yanshee 是一个开放的硬件平台,采用 Raspberry Pi + STM32 开放式硬件平台架构,内嵌陀螺仪,开放 GPIO 接口。 |
| 100 | + |
| 101 | +采用基于 Linux 的开源软件架构,支持用户直接调用并集成海量的 Raspberry Pi 的开源软件模块 |
| 102 | + |
| 103 | +<video width="50%" src="https://adapter.codelab.club/video/1589960907435316.mp4" controls="controls"></video> |
| 104 | + |
| 105 | +## 分离 Adapter client |
| 106 | + |
| 107 | +重构前端 adapter client,使其独立成一个类:[codelab_adapter_client.js](https://github.com/CodeLabClub/scratch3_eim/blob/v3/codelab_adapter_base.js), 方便第三方开发者集成,或用于自定义 UI。 |
| 108 | + |
| 109 | +目前 EIM 插件和 Web UI 都在使用它,源码是开放的。 |
| 110 | + |
| 111 | +## 增强自省能力 |
| 112 | + |
| 113 | +CodeLab Scratch EIM 插件增加了 `is Adapter running` 积木,从而允许用户动态得获取 Adapter 运行情况。 |
| 114 | + |
| 115 | + |
| 116 | + |
| 117 | +典型的用例是,当项目被社区用户打开时,可以告知用户是否需要启动 Adapter。 |
| 118 | + |
| 119 | +Adapter Version 目前已经添加到 env 中,可供外部应用程序查询,以便于协同合作。 |
| 120 | + |
| 121 | +## 提升安全性 |
| 122 | + |
| 123 | +- 提升所有用到 `eval` 函数的插件的安全性。 |
| 124 | +- 除了一些受信任域名,从其他域名连接 Adapter,需要手动输入 token(在 Web UI 中可以获取)。 |
| 125 | + |
| 126 | +# 插件增强 && bug 修复 |
| 127 | + |
| 128 | +- 修复关闭 node 引起的问题。 |
| 129 | +- 修复 node_minecraft 和 node_raspberrypi 的 bug。在 Scratch 中填入设备 IP,而不需要手动修改 Adapter 插件。 |
| 130 | +- 增强 CodeLab Scratch json 插件,并[添加社区文档](https://adapter.codelab.club/extension_guide/json/). |
| 131 | +- [@Hanson 同学](http://www.concentric-circle.com/author/admin/)为我们构建了 Box2D 插件的 [文档](https://adapter.codelab.club/extension_guide/Box2D/) |
| 132 | +- Cozmo/Vector 社区用户@moxley71提到说 `I’ve been playing with the Codelabs setup for Vector, but I am unable to work out how to return status variables from Vector.`,我们之前只在 Cozmo 中完成这个功能,此次更新,将 Cozmo 的 sensor/event 迁移到了 Vector 插件中。 |
| 133 | + - 哈哈,也贴上@moxley71看到我们的更新后的吹捧 `Wow, fantastic response time. I wasn’t expecting this to be looked at, let alone addressed for at least a week. You sir, are a star! ` |
| 134 | +- 改进 extension_webserver 插件:[文档](https://adapter.codelab.club/extension_guide/webserver/),用户可以在 Adapter 中轻松构建自己的第一个网站。 |
| 135 | + |
| 136 | +# 开始使用 |
| 137 | + |
| 138 | +[下载最新 Adapter](https://adapter.codelab.club/user_guide/install/)。 |
| 139 | + |
| 140 | +配合 [CodeLab Scratch](http://scratch3v3.codelab.club/) 使用时,建议刷新浏览器缓存。 |
0 commit comments