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

推荐订阅源

V
Visual Studio Blog
S
Schneier on Security
博客园 - 聂微东
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
月光博客
月光博客
美团技术团队
Last Week in AI
Last Week in AI
罗磊的独立博客
小众软件
小众软件
Hugging Face - Blog
Hugging Face - Blog
大猫的无限游戏
大猫的无限游戏
V
V2EX
博客园_首页
博客园 - 司徒正美
IT之家
IT之家
S
SegmentFault 最新的问题
宝玉的分享
宝玉的分享
雷峰网
雷峰网
量子位
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
T
Tailwind CSS Blog
J
Java Code Geeks
博客园 - Franky
Apple Machine Learning Research
Apple Machine Learning Research
P
Privacy International News Feed
C
CERT Recently Published Vulnerability Notes
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
阮一峰的网络日志
阮一峰的网络日志
The Cloudflare Blog
AWS News Blog
AWS News Blog
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
T
Threat Research - Cisco Blogs
Jina AI
Jina AI
V
Vulnerabilities – Threatpost
酷 壳 – CoolShell
酷 壳 – CoolShell
L
LINUX DO - 最新话题
N
News and Events Feed by Topic
H
Hacker News: Front Page
腾讯CDC
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
WordPress大学
WordPress大学
爱范儿
爱范儿
T
Tor Project blog
博客园 - 【当耐特】
T
The Exploit Database - CXSecurity.com
K
Kaspersky official blog
Latest news
Latest news
博客园 - 叶小钗
Know Your Adversary
Know Your Adversary
有赞技术团队
有赞技术团队

夜行人

回家路上 第一期的直播演示项目 震动检测器 正能量 在线参观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开发笔记 创业二三事
Scratch3.0技术分析之后端API(第0篇)
种瓜 · 2019-01-06 · via 夜行人

近期我们计划对Scratch3.0做一系列的技术分析,这是这个系列的开篇。

我们致力于实现以下目标:

  • 理解Scratch3.0的架构设计
  • 理解Scratch拥有强大兼容性的原因
  • 梳理Scratch3.0产品背后使用的一些设计原则
    • 表现与实现的分离
    • 事件驱动
    • 面相对象
    • everything is a message
  • 按照Scratch一贯的设计原则,独立实现Scratch并未开源的部分。确保之后能随着Scratch一同升级,架构上保证向后兼容。
  • 顺着Scratch的思路,对Scratch作出改进。

总而言之,我们希望通过这些分析,获得定制scratch的能力,但同时又能与上游的官方版本保持兼容。我们重视官方对Scratch的改进。与其说我们重视他们技术能力,不如说我们重视他们对教育和社区的深刻理解,这些是极为稀缺的,它不是技术问题,也不是资金问题。我们希望能随时将官方的改进merge回我们调整后的项目中。我们不希望做出硬分叉。

Scratch3.0于2019.1.2如期而至。

Scratch3.0的GUI社区的前端都已开源:LLK

你可以在线体验一番.

目前Scratch3.0团队没有透露社区后端和GUI的存储部分是否有开源计划(我们之后将这两块统称为后端),我此前和Scratch3.0后端团队成员做过沟通,他提到Scratch3.0后端目前同时采用了新构建的REST API和之前遗留的Django server。他们陆续将一些基础服务从Django中迁出,转化为API对外提供服务。从我们之后的分析中可以知道,他们新的后端基于restify。我想官方的技术选型主要出于restify对REST的友好支持,以及restify应对高负载的能力,毕竟Scratch社区有3000万用户。

考虑到Scratch2.0的后端并未开源,3.0社区后端开源的概率估计也不大。个中原因可能是防止社区分裂。毕竟每家公司跑一个scratch社区挺奇怪的,它分裂了用户群。更何况,大多数的公司采取的教育策略,正是《终生幼儿园》所反对的。

除了Scratch3.0的社区后端,Scratch3.0的其他部分,官方都有计划开源,包括desktop,终生幼儿园小组正在和MIT校方沟通推进这件事,这些信息在scratch团队日常的讨论中有提到。

为何做这个分析

Scratch3.0的社区与插件系统,将开放到什么程度?官方的计划是什么?目前scratch团队并没有给出明确说明.他们在FAQ中提到说这部分的工作还在进展中。

我们(codelab.club)今年(2019)上半年有计划与scratch team碰个面,如果官方接受,我们希望将codelab-adapter集成到官方项目中。帮助Scratch3.0连接到更广阔的世界(education as life),同时建立Scratch3.0与Python(或者任何其他语言)的无缝连接。如果官方没太大合作意愿,也不愿开放接入机制,我们将独立构建用户社区。我们仍鼓励用户使用scratch官方社区(如果网络顺畅),因为那里边有丰富而友好的的人群,海量的不可思议的创意项目,以及scratch团队令人称赞的运营方式。但对于那些官方不支持的创造,尤其是与生活相关的创造(education as life),我们将提供另一个社区来支持用户。我们的目标是让万物积木化,支持更广泛的创造。支持杜威提倡的

education as life

我们关注如何构建出兼容官方已有开放项目的后端,让用户保持一致的使用体验。同时也保证我们随时可以merge回官方的最新进展。我们另有一个野心是在我们的实现中加入activitypub,让scratch的社区数据,轻松支持跨站共享和分布式存储。 codelab.club是一个非营利组织,这是我们希望支持落后地区的一个举措。让我们设想一种场景,在贫困山区,网络并不通畅,如何帮助那儿的孩子接入到社区中?他们如何了解社区最近创造出的有趣的项目(projects)?而peers和projects是scratch很核心的2个概念。有了activitypub,我们在山区中可以使用树莓派跑一个scratch社区后端,孩子们可以在局域网内形成社区(一台树莓派即可,树莓派可以发射热点构建局域网)。当志愿者到来,开放出手机热点,activitypub将为他们把外部世界的数据同步进来。很多的手机卡已经几乎免流量了。这件事没有想象的那么困难,即便在经济上也没有。

activitypub可能起作用的场景当然远不止贫困山区。关于这块的可能性有空在谈。

为了支持我们上边提到的所有目标。我们需要分析目前官方的后端API(其他开源的部分我们也将分析)。我们看到scratch为兼容性这块付出了巨大的努力,他们精心设计了数据的结构,他们花了很大精力来保持对旧版本的兼容,他们甚至希望兼容到1.4版本(十年前的项目!). Scratch团队始终不抛弃已有的用户和用户创作的项目,很难看到比scratch team更尊重用户作品的组织了,这是一群令人肃然起敬的教育者。

整理已有的Scratch API相关文档

社区里目前有不少Scratch后端API相关的文档和项目。

在此做个梳理。

这些项目是Scratch2.0的API,但Scratch3.0和2.0的API基本是相同的。主要原因我们前边有提到: 出于兼容性的考虑。

我在完成这篇文章的途中,也会顺手给出scratch3.0的api文档,如果时间允许,我还将给出Python实现的Scratch client。

此外,也可能顺手实现Python版本的scratch-parser,这个工具将来会成为我们为scratch用户制作画像的基础,由于Python社区的数据分析生态最成熟,所以我计划用Python来做。评估Scratch用户的学习效果,以及用户对知识的掌握情况,我认为目前是项目驱动的平台(如scratch)存在的痛点。我们希望这个项目支持所有Scratch平台,只要大家兼容官方的数据结构即可。这就是我们如此重视兼容性的原因,因为这样有助于打造通用的工具链。

评估学习者的学习进展并不容易,我认为对程序的静态分析可能是突破口之一,所以我们需要重新实现scratch-parser。在静态分析的基础上,加上一些机器学习的算法和推荐系统,将来甚至可以做到,针对用户的学习情况和兴趣点,给他推荐可能感兴趣的人与项目。如此一来,线上平台就部分实现了我们希望在club中实现的东西:帮助用户去寻找和发现感兴趣的projects与peers。

工作计划

我们的分析工作从创作平台开始。

之后转向分析社区

我们相信这一系列的文章对于准备使用Scratch3.0作为公司基础项目的产品经理和系统架构师会有价值。

文章列表

截止到2019.05.01这个系列的分析文章基本写完了,整理如下: