去中心化、人人平等的网络世界,更多的可能等你来开拓
15000+跨学科人群,机器学习、机器视觉、自然语言处理、知识图谱、量化交易、物联网、区块链、产品经理、交互设计、建筑设计、服装设计、珠宝设计、平面设计、音乐、艺术等。
上一期介绍了分布式社交协议solid,solid把应用跟数据分开了:
数据是一种分布式的服务POD,有点像我们会碰到非常多的网盘产品,有些网盘存用户的照片,有些网盘存用户的文章,有些存用户的歌单,有些存用户的运动数据,有些存用户的社交好友关系,有些存用户的知识等等,只要值得存储的数据,都可以有一种网盘的形式去存储;
应用也是一种独立的存在,它本身不存储用户的数据,它是整合用户数据的地方,也是处理用户数据的地方,比如我们可以开发一款图片社交产品,用户可以在上面发图片,发的图片会保存在用户选定的网盘上,此款社交app只是把用户的照片跟用户的个人信息汇总在一起,按照某个逻辑来呈现。就算此款app,只提供了几个月的服务就被关闭了,用户的照片数据还是存在于用户选定的网盘上;当有另一款app也需要用户提供照片数据时,可以直接调用用户之前发布的照片数据。
整个网络世界,变成了应用跟数据两种基本服务。
非常灵活,我们可以开发各种的创新应用。因为不需要面临数据冷启动的问题。
下面用代码的方式,帮助大家深度了解技术原理,有几个知识点,我们需要提前理解:
什么是POD?
webID是什么?
阅读难度:★★★☆☆
技能要求:JS基础、HTML基础
字数:900字
阅读时长:4分钟
STEP1
获取一个 solid pod
为了读写数据,你需要拥有一个solid pod和账号。访问inrupt网址( https://inrupt.net/ ),注册一下,获取一个webID(账号)。
我的webID:
https://shadowcz.inrupt.net/profile/card#me
STEP2
新建一个HTML文件
新建一个html文件,输入以下代码:
STEP3
添加 Solid auth client 库 及 jQuery 库
为了支持solid,我们需要添加2个组件,一个是JS,一个是登录页面。
·JS库:
https://solid.github.io/solid-auth-client/dist/solid-auth-client.bundle.js
·登录页面:
https://solid.github.io/solid-auth-client/dist/popup.html
popup是登录页面,在登录页面填入我们自己的webID,然后会跳到webID对应的POD服务提供站点处,登录授权即可。
· jQuery 库:
https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js
STEP4
添加登录状态的UI及登录,退出按钮
在html文件里添加标签,如下:
Step 5
为登录按钮添加JS事件,并运行html
在html文件里添加一个script标签,并输入以下js代码:
打开终端,输入:
python -m http.server
打开浏览器,输入:
http://localhost:8000
登录下试试,如下图:
Step 6
为退出登录的按钮添加一个js事件
输入以下代码:
Step 7
把登录用户的webID显示出来
可以把授权的用户webID显示出来,在html中输入input标签,并在script中输入js代码:
Step 8
获取用户存储在POD上的数据
使用RDFlib.js库,操作我们存储在POD上的Linked Data;RDFlib.js已经在html里引用了,我们看一下如何用js获取数据:
使用RDFlib.js获取webID的名字,对应的RDFlib的代码,主要有3步:
Step 9
显示其他字段
由于我们刚创建的webID没有friends关系,可以使用官方示例的一个webID,在
<input id="profile">尝试填入:
https://ruben.verborgh.org/profile/#me
点击view按钮,可以拉取friends关系,js代码:
至此,9步完成了一个简单的solid 应用。
去中心化的网络世界,是不是很性感?
有没有兴趣一起研究下solid源码?及探索相关的应用?