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

推荐订阅源

让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Microsoft Azure Blog
Microsoft Azure Blog
大猫的无限游戏
大猫的无限游戏
月光博客
月光博客
V
V2EX
PCI Perspectives
PCI Perspectives
Latest news
Latest news
博客园 - 三生石上(FineUI控件)
C
CERT Recently Published Vulnerability Notes
W
WeLiveSecurity
Last Week in AI
Last Week in AI
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
P
Palo Alto Networks Blog
T
The Exploit Database - CXSecurity.com
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
WordPress大学
WordPress大学
V
Vulnerabilities – Threatpost
H
Heimdal Security Blog
Attack and Defense Labs
Attack and Defense Labs
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
Hacker News: Ask HN
Hacker News: Ask HN
博客园 - 叶小钗
V
Visual Studio Blog
Jina AI
Jina AI
P
Proofpoint News Feed
罗磊的独立博客
SecWiki News
SecWiki News
J
Java Code Geeks
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
L
LINUX DO - 热门话题
Security Archives - TechRepublic
Security Archives - TechRepublic
The Hacker News
The Hacker News
Hugging Face - Blog
Hugging Face - Blog
N
News and Events Feed by Topic
NISL@THU
NISL@THU
T
Tailwind CSS Blog
T
Tenable Blog
Recent Commits to openclaw:main
Recent Commits to openclaw:main
Recent Announcements
Recent Announcements
H
Hacker News: Front Page
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
T
Tor Project blog
宝玉的分享
宝玉的分享
Help Net Security
Help Net Security
S
Security Affairs
Microsoft Security Blog
Microsoft Security Blog
Google DeepMind News
Google DeepMind News
F
Fortinet All Blogs
G
GRAHAM CLULEY

夜行人

回家路上 第一期的直播演示项目 震动检测器 正能量 在线参观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/ 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开发笔记 创业二三事 blockly与结对编程
scratch3-adapter重构笔记
种瓜 · 2018-09-16 · via 夜行人

文章目录

近期在重构codelab-adapter,目前的最新版本是0.1.1, 我们计划在10月份发布0.2.0

这次重构带来的改变包括:

  • 本地SSL安全证书
  • 引入json-rpc,鼓励开发者使用json-rpc简化插件的开发
  • 引入Scratch Link模式(目前scratch3-adapter在开发模式下允许切换为Scratch Link模式,与官方Scratch Link保持相同的架构,官方暂未开放Scratch Link,我做了逆向分析。)
  • 允许在GUI面板上启停插件
  • 发布不同平台的安装包(exe/dmg/Python package)
    • 在跨平台软件分发这块,很多地方参考了mu
  • 在插件方面,添加了优必选alpha系列机器人的支持

缘起

近期使用官方七月底发布的Scratch Link,我很喜欢这个软件,对它做了不少分析,Scratch Link有许多聪明的设计,准备把这些好的主意移植到scratch3-adapter上。当然也有一些我们不喜欢的地方,我们准备做些有趣的探索和调整。

目标

此次重构的主要目标是提升软件易用性,muScratch Link在易用性方面都做得非常好,这两个软件是我们主要的学习对象。

重大变更

下边记录重构前后,发生的一些大的变更

本地SSL安全证书

我在为Scratch3.0设计的插件系统(下篇)中描述了codelab-adapter的架构设计,其中提到:scratch3-adapter中包含了一个websocket-server

逆向分析Scratch Link可以看到,它内部也包含了一个websocket-server,使用的是Telegraph

当我们从https网站访问本地websocket-server服务时,如果本地websocket-server服务没有采用SSL安全证书,会给用户增加操作步骤(需要用户确认继续访问),体验不够友好,问题的描述和解决方案我都写在本地https/wss服务与SSL安全证书

引入json-rpc

scratch3-adapter受ROS影响很深,ROS本质上是一个消息系统。

我很喜欢Smalltalk的设计原则中的这条:

计算应该被视为可通过发送消息来统一调用的对象的内在功能。

Scratch的第一个版本由Smalltalk的方言Squeak写成,受Smalltalk影响极深。可以看到Scratch3.0依然保持着这条设计原则。

我希望scratch3-adapter能延续Smalltalk的设计原则。所以消息会一直作为核心要素。

我相信这条原则是scratch3-adapter达成它的目标将万物积木化的核心所在。

但原始的消息对于大多开发者来说,可能过于原始了,所以我们决定学习Scratch Link,在消息之上抽象出RPC,方便开发者写自定义的插件。当然这个特性是可选的,是否使用json-rpc由开发者自行决定。我原本计划在消息之上添加自定义协议,后来发现json-rpc就是我想要的,所以就不重造轮子了。

Scratch Link模式

Scratch Link本身非常简单,我大约使用100代码实现了它的功能。这部分作为Scratch Link模式,开发模式下可以启用,Scratch Link模式很简单,不包含ZeroMQ,它的核心是websocket-server + json-rpc

我们来演示scratch3-adapter的Scratch Link模式下,如何完美替代官方的Scratch Link。

我们让scratch3-adapter模拟成Scratch Link,欺骗前端说它已经搜索到了micro:bit。实际上我们连电脑的蓝牙都没打开。

接着让我们点击连接,再次成功骗过前端

我比较坚持引入ZeroMQ,所以scratch3-adapter默认不采用Scratch Link模式,而将ZeroMQ作为架构的核心部分(默认模式)。对于异步任务、分布式组件、协同控制,ZeroMQ都能帮上大忙。ZeroMQ会让scratch3-adapter极为灵活,如果之后要引入复杂的机器人、AI、飞行器矩阵,ZeroMQ会让这些事变得简单。我希望提供一个强大、灵活而开放的架构。

jupyter架构的核心元素之一便是ZeroMQ,jupyter如此健壮的原因之一便是ZeroMQ。我在jupyter notebook架构分析做了讨论

允许在GUI面板上启停插件

重写了插件管理系统,支持线程管理。于是可以在GUI面板上随意启停插件。而不必反复重启软件

软件安装包

为了让软件更加易于使用,我们决定提供各个平台的安装包,windows下为exe,macOS下为dmg,linux下可以选择python package或者打包好的软件。

这部分主要学习了mu-editor

参考