惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

宝玉的分享
宝玉的分享
S
SegmentFault 最新的问题
Google DeepMind News
Google DeepMind News
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
aimingoo的专栏
aimingoo的专栏
The Cloudflare Blog
博客园 - Franky
阮一峰的网络日志
阮一峰的网络日志
I
InfoQ
V
V2EX
P
Proofpoint News Feed
F
Fortinet All Blogs
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
酷 壳 – CoolShell
酷 壳 – CoolShell
D
DataBreaches.Net
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
L
Lohrmann on Cybersecurity
Recent Announcements
Recent Announcements
Latest news
Latest news
P
Palo Alto Networks Blog
博客园_首页
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
S
Securelist
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
博客园 - 【当耐特】
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
MongoDB | Blog
MongoDB | Blog
Blog — PlanetScale
Blog — PlanetScale
NISL@THU
NISL@THU
博客园 - 聂微东
Hugging Face - Blog
Hugging Face - Blog
V
Visual Studio Blog
云风的 BLOG
云风的 BLOG
P
Privacy & Cybersecurity Law Blog
C
Cybersecurity and Infrastructure Security Agency CISA
Cisco Talos Blog
Cisco Talos Blog
月光博客
月光博客
Security Latest
Security Latest
P
Proofpoint News Feed
小众软件
小众软件
T
Threat Research - Cisco Blogs
A
About on SuperTechFans
博客园 - 三生石上(FineUI控件)
C
Cisco Blogs
T
The Exploit Database - CXSecurity.com
爱范儿
爱范儿
罗磊的独立博客
Project Zero
Project Zero
W
WeLiveSecurity
U
Unit 42

夜行人

回家路上 第一期的直播演示项目 震动检测器 正能量 在线参观CodeLab Neverland 发布 CodeLab Adapter 3.3.1 DynamicTable 之 纸糊方向盘 CodeLab DynamicTable: 一个可实施的技术方案 CodeLab Insight 发布 Alpha 版 情人节 Home Assistant 周报 && IoT 周报 (02) Joplin: 关注隐私的 Evernote 开源替代软件 浏览器的未来与 Web 传感器 Home Assistant 周报 && IoT 周报 (01) 百宝箱(01) 论自由 介绍 WebThings Home Assistant 周报 && iot 周报 (00) 百宝箱(00) 毛姆读书心得 传世之作 周末徒步 CodeLab Adapter ❤️ Jupyter/Python 航班 躲雨 夏令营途中 [译]思想--作为一种技术 The future of coding 美国之行 三门问题的程序模拟 从Python转向Pharo https://blog.just4fun.site/post/iot/iot-open-source-projects/ Python异步编程笔记 https://blog.just4fun.site/post/iot/iot-open-source-hardware-community/ 万物积木化开发者社区 CodeLab ❤️ Blender Scratch3技术分析之云变量 API(第7篇) [译]对管道(Pipes)的偏爱 [译]提出正确的问题比得到正确答案更重要 蓝牙设备与Scratch3.0 创建你的第一个Scratch3.0 Extension Scratch3技术分析之项目内部数据(第6篇) Scratch3技术分析之社区 API(第5篇) Scratch3技术分析之User API(第4篇) Scratch3技术分析之项目主页API(第3篇) Scratch3技术分析之静态资源API(第2篇) Scratch3.0、micro:bit与Windows7 https://blog.just4fun.site/post/iot/zerynth-vs-micropython/ 核聚变、方所与半宅空间 可视化编程为何是个糟糕的主意 codelab.club周末聚会 关于codelab.club '下一件大事'是一个房间 Hungry Robot - Eat everything 编程作为一种思考方式 今日简史 史蒂夫·乔布斯传 罗素自选文集 https://blog.just4fun.site/post/edx/tianjin-scratch-ai/ https://blog.just4fun.site/post/edx/richie-cms-openedx/ 徒步武功山 WebUSB与micro:bit 积木化编程与3D场景 夜宿武功山顶 scratch3-adapter接入优必选Alpha系列机器人 https://blog.just4fun.site/post/edx/video-migration-note/ scratch3-adapter重构笔记 https://blog.just4fun.site/post/edx/edx-community-members/ 两种硬件编程风格的比较 使用micro:bit自制PPT翻页笔 柏拉图对话集 scratch3.0 + micro:bit 七月电影放映计划 非营利组织的管理 Screenly--用树莓派让任何屏幕变为可编程的数字标牌 以最佳实践开始你的Django项目 micro:bit与事件驱动 为Scratch3.0设计的插件系统(上篇) OCR应用一例 近两年读过的一些好书 blockly开发之使用python驱动浏览器中的turtle(2) 牛顿新传 文学理论入门 逻辑的引擎 人生的意义 blockly开发之生成并运行js代码(1) blockly开发之hello world(0) micro:bit使用笔记 神器之Termux https://blog.just4fun.site/post/iot/micropython-notes/ Cozmo what is this Scratch的前世今生 下段旅程 我行在远方 爆裂 途中杂记 https://blog.just4fun.site/post/edx/open-edx-startup/ cozmo系列之入门 - 有性格且可编程的机器人 PaperWeekly开发笔记 创业二三事
发布 CodeLab Adapter 3.7
种瓜 · 2020-11-03 · via 夜行人

3.7 包含以下更新。

重大更新

统一 Python 环境

太多选择,有时候是一种心理负担

CodeLab Adapter 的扩展系统之前最大的问题是: Python 环境不统一。 一会儿是 Adapter 内置的 Python(用于打包),一会儿是用户本地的 Python(用于运行 Adapter Node),一会儿又是完整版里自带的 Python(内置 Node 的依赖)。当事情有太多的选择,时常让人不知所措,很多用户在选择困难中,花费了许多时间。

3.7 版本中(完整版), Adapte 内部只有一个 Python(>=3.7), 这个环境内置了许多常用第三方库,在自定义插件时,可以使用到它们:

  • codelab-adapter-client
  • Flask
  • ipython
  • jupyterlab
  • mcpi
  • numpy
  • opencv-contrib-python
  • paho-mqtt
  • Pillow
  • prompt-toolkit
  • protobuf
  • PyAutoGUI
  • pyserial
  • pyzmq
  • requests
  • uflash
  • websockets

更多的内置库参考: CodeLab Adapter wiki

Extension 与 Node

在新的 Python 环境中, Adapter Extension 和 Adapter Node 有什么区别呢?

它们处于同样的 Python 环境。唯一的区别是,Adapter Extension 以线程方式启动, Adapter Node 所在的脚本以进程启动: python xxx.py,在类结构上,Adapter Extension 是 Adapter Node 的子类。Adapter Node 只是普通的 Python 脚本,可以使用本地 Python 启动它(这对于调试很有帮助)。也可以在多台机器上分布式运行(可以是局域网,也可以运行在互联网)。目前Neverland 2.0就是一个范例: 在文档里的简单 demo 中,涉及 3 台计算机直接的消息通信,整个过程简单而快速。

小图标

有若干用户来信提到这个需求: 让 CodeLab Adapter 像 Scratch Link 一样,运行的时候在桌面显示一个小图标,以便于用户管理它(手动关闭它或者打开 WebUI 界面)。

Windows 下:

MacOS 下:

右键小图标,可以做到:

  • 打开 WebUI
  • 关闭 CodeLab Adapter

前端更新提醒

之前 Adapter 搭配的 CodeLab Scratch 因为缓存问题,需要用户主动刷新。这造成许多困扰,用户无从直到我们何时更新了积木,每次清楚浏览器缓存又导致加载缓慢。

在当前版本之后的版本中,前端 UI 会主动提醒用户何时应该更新

ps:如果你之前打开过 CodeLab Scratch,此次需要做最后一次手动浏览器缓存刷新

内置 mDNS 服务

Adapter 3.7 中内置了 mDNS 服务,方便在局域网中以可编程方式发现设备。

Neverland 2.0 插件中使用到它:

当 Adapter 以 NEVERLAND_HUB 模式 启动时,Adapter 将作为空间中的主节点 ,并广播出自己的 mDNS 服务。我们可以在 Scratch 中发现了连接它。

只要安装codelab_adapter_client,你可以让自定义的 Adapter Node 也拥有广播和发现 mDNS 的能力,这对于提供 C 端产品很有用。

这部分相关源码参考: codelab-mdns-*

内置 OSC 服务

OSC (Open Sound Control)是一种用于将声音合成器、计算机和其他多媒体设备联网的协议,用于音乐表演或表演控制等目的。OSC 的优势包括互操作性,准确性,灵活性以及增强的组织和文档。

Adapter 同时内置 OSC server 和 OSC client!

通过兼容这个标准协议,我们可以使用几乎所有市面上主流的 OSC client。

如此一来,CodeLab Adapter 甚至可以接管整个音乐厅!

以下是利用 OSC client 做的一个例子(高速刷新):

如果你使用 iPhone 或者其他支持压力输入的屏幕,可以通过按压力度控制画笔粗细。

建恩同学将 CodeLab Adapter 的 OSC 消息桥接到了 midi 协议, 进而可以与所有主流的专业音乐软件交互:

目前正与 Rick 一起探索在音乐领域的可能性(诸如与 vvvv 协同)。

可编程的固件刷入接口

1
2
3
from codelab_adapter.utils import flash_usb_microbit, flash_makecode_file
# flash_usb_microbit(py_file_path)
# flash_makecode_file(makecode_hex_path)

目前只支持 microbit 的自定义固件刷入,支持 micropython 和 makecode 两种固件刷入,也支持任何允许文件拖入式的固件刷入 (诸如CircuitPython),编程细节参考:flash_usb_microbit(firmware_path)

未来将支持更多固件的刷入。

新增插件

EasyOCR

EasyOCR是个有趣的 Python AI 项目, 足够简单,又足够有用, 支持 70 多种语言的开箱可用 OCR,包括中文,日文,韩文和泰文…

EasyOCR 的一层薄薄包装,将 EasyOCR 的能力引入 Adapter。

tensorflow-yolov4

基于 Tensorflow 2 的 YOLOv4 实现,小巧易用。

Neverland 2.0

Neverland 2.0 基于 mDNS 提高易用性,它是一个分布式系统,基于 Adapter 构建,在用户侧 Adapter 中,表现为一个内置插件。

拓扑图如下:

项目包含以下部分:

  • adapter master: 空间主节点,以 NEVERLAND_HUB 模式运行的 Adapter,运行在树莓派上
  • adapter node: 空间功能节点,运行在树莓派上。在我们的视频里,有一个节点连接了 makeymakey(makey node)
  • user client: 运行在用户计算机上的 Adapter

adapter master

ADAPTER_MODE=3 ./codelab-adapter

关于 Adapter 的模式

adapter node

python3 makey_node.py

user client

正常运行 Adapter 即可


我们正在新的办公室里实施 Neverland 2.0,它看起来就像可编程的 Teamlab:

Physical Blocks 2.0

physical blocks 2.0 是最新的 DynamicTable 插件。 新的更新我们都将在这个版本是进行,physical blocks 1.0 在未来将弃用。

使用 physical blocks,可以在一张桌子上对实物进行编程。

与 1.0 版本的区别?

标记列表默认是字符串(序列化之后),可以随意与 scrath 积木组合(诸如 xx 包含 xx 积木),避免因为操作 list 引起的崩溃(诸如将 list 保存为变量)。

在 2.0 中,直到主动使用 JSON parse 积木解析后,它才称为列表。相关操作参考:json 积木,也可参考前边的例子: physical-blocks2-spell-demo

此外 2.0 只使用一个积木更新数据,提高标签存在的稳定性(也提高速度),其中一种典型的编程模式是: 在一次更新数据之后的积木都对应更新瞬间的视野状态。而不像 1.0,每个积木都有各自瞬间的视野。 近期还将升级 pro 版本(商业合作伙伴)

插件增强 & bug 修复

Teachable Machine

Longan 团队已经将 Teachable Machine 部署到国内: Longan Teachable Machine, 并且内置支持 CodeLab Adapter, 开箱可用!

EIM

Scratch EIM 插件做了若干重要更新,诸如:

  • 添加特定类型插件的消息积木
  • 修复 rate limit 通知过于频繁问题
  • 添加 runtime 参数
  • 支持调试模式
  • 将 rate limit 机制添加在基础类中
  • 完善 message id 机制(uuid)
  • 修复 eim 消息作为变量显示在舞台区的问题(json 序列化)
  • 支持定制 message timeout 参数

EIM 的插件已经开源:

USB micro:bit

支持连接时自动检测与刷入固件。

这部分的插件已经开源:

micro:bit radio

支持连接时自动检测与刷入固件。

这部分的插件已经开源:

我的世界(minecraft)

感谢 @Lounsen 同学的 bug 反馈,目前已修复跨平台兼容问题。

不远的将来

我们正逐步将 Adapter、Scratch、Python、Smalltalk 进行融合,试图进一步提升编程环境的灵活性。 Smalltalk 是一片有着壮美景致的遗失世界。

Smalltalk & Scratch:

浏览器里的 Smalltalk & Scratch & CodeLab Adapter:

将 Python 提升到 Smalltalk-like 沉浸式编程环境:

更多的探索参考:Smalltalk 入门导览

开始使用

下载最新 Adapter

参考