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

推荐订阅源

Blog — PlanetScale
Blog — PlanetScale
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Vercel News
Vercel News
B
Blog
腾讯CDC
P
Proofpoint News Feed
Google DeepMind News
Google DeepMind News
N
Netflix TechBlog - Medium
L
LangChain Blog
F
Fortinet All Blogs
T
The Blog of Author Tim Ferriss
人人都是产品经理
人人都是产品经理
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
I
InfoQ
IT之家
IT之家
酷 壳 – CoolShell
酷 壳 – CoolShell
aimingoo的专栏
aimingoo的专栏
D
DataBreaches.Net
Stack Overflow Blog
Stack Overflow Blog
The Cloudflare Blog
Last Week in AI
Last Week in AI
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
博客园 - 三生石上(FineUI控件)
T
Tailwind CSS Blog

夜行人

回家路上 第一期的直播演示项目 震动检测器 正能量 在线参观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 美国之行 三门问题的程序模拟
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

参考