
搜索引擎Typesense的使用
注: 使用语言 python一:Typesense介绍Typesense将数据保存在磁盘当中,建立的索引保存内存中 Typesense是一个开源的、有容错能力的搜索引擎,针对实时(通常低于 50 毫秒)搜索即键入体验和开发人员生产力进行了优化。 Typesense做了一个对于其他搜索引擎的对比。(文档版,表格版) 索引数据速度以及资源占用: 对于220万份食谱(一份食谱相当于下文中提到的一个document)在 Typesense 中进行索引时占用了大约 900MB 的 RAM(内存)花了 3.6 分钟索引所有 220 万条记录在具有 4 个 vCPU 的服务器上,Typesense 每秒能够处理104 个并发搜索查询,平均搜索处理时间为11毫秒。RAM(内存)方面:如果数据量为 X MB大小,则需要占用2X-3XRAM(2-3倍数据量大小的占用) 如需深入了解可以查阅官方文档二:Typesense的用法1:使用typesense有两种方法使用自带的云服务,配置运行简单(收费)在本地安装typesense,自己维护配置(本文使用这种方法)2:安装启动typesense(1):下载...

Mastodon 和 Nostr:两种不同的社交产品,一样的去中心化愿景
概述:本文将分析和讲解Mastodon和Nostr这两个社交媒体平台,重点关注它们的产品应用和技术层面,以了解它们如何实现去中心化社交,并探讨它们在这方面的优势。我们将深入了解它们的架构设计和实现思路,并比较它们在用户体验、隐私保护、安全性等方面的差异。通过本文的分析和总结,读者将更好地了解这两个平台,以及它们在去中心化社交方面的贡献和发展。MastodonMastodon(长毛象)成立于2016年,是由Eugen Rochko创建的一个开源的微博客(microblog)平台,旨在为用户提供去中心化、隐私保护的社交体验。首先对涉及到的一些名词进行简单解释:联邦(federation):联邦是去中心化的一种形式。在联邦中,不是所有人共同使用一个中心服务,而是使用多个不限人数的服务器。ActivityPub:Mastodon使用一种标准化的、开放的协议来实现站点之间的互动,这种协议叫做ActivityPub。任何通过ActivityPub实现互联的软件都可以与Mastodon无缝通信,就像Mastodon站点之间的通信一样。实例(instance):每个人都可以在自己服务器上配置运行...

使用 The Graph 获取各大元宇宙项目交易信息
The graph 工作原理 Graph 根据subgraph描述(称为subgraph.graphq)学习什么以及如何索引以太坊数据。子图描述定义了subgraph感兴趣的智能合约,这些合约中要关注的事件,以及如何将事件数据映射到 The Graph 将存储在其数据库中的数据。该流程遵循以下步骤:去中心化应用程序通过智能合约上的交易将数据添加到以太坊。智能合约在处理交易时发出一个或多个事件。Graph Node 不断地扫描以太坊以寻找新的块以及它们可能包含的子图的数据。Graph Node 在这些块中为您的子图查找 Ethereum 事件并运行您提供的映射处理程序。映射是一个 WASM 模块,它创建或更新 Graph Node 存储的数据实体以响应以太坊事件。去中心化应用程序使用节点的GraphQL 端点查询 Graph 节点以获取从区块链索引的数据。Graph 节点反过来将 GraphQL 查询转换为对其底层数据存储的查询,以便利用存储的索引功能获取此数据。去中心化应用程序在丰富的 UI 中为最终用户显示这些数据,他们使用这些数据在以太坊上发布新交易。循环重复 (来自The ...

搜索引擎Typesense的使用
注: 使用语言 python一:Typesense介绍Typesense将数据保存在磁盘当中,建立的索引保存内存中 Typesense是一个开源的、有容错能力的搜索引擎,针对实时(通常低于 50 毫秒)搜索即键入体验和开发人员生产力进行了优化。 Typesense做了一个对于其他搜索引擎的对比。(文档版,表格版) 索引数据速度以及资源占用: 对于220万份食谱(一份食谱相当于下文中提到的一个document)在 Typesense 中进行索引时占用了大约 900MB 的 RAM(内存)花了 3.6 分钟索引所有 220 万条记录在具有 4 个 vCPU 的服务器上,Typesense 每秒能够处理104 个并发搜索查询,平均搜索处理时间为11毫秒。RAM(内存)方面:如果数据量为 X MB大小,则需要占用2X-3XRAM(2-3倍数据量大小的占用) 如需深入了解可以查阅官方文档二:Typesense的用法1:使用typesense有两种方法使用自带的云服务,配置运行简单(收费)在本地安装typesense,自己维护配置(本文使用这种方法)2:安装启动typesense(1):下载...

Mastodon 和 Nostr:两种不同的社交产品,一样的去中心化愿景
概述:本文将分析和讲解Mastodon和Nostr这两个社交媒体平台,重点关注它们的产品应用和技术层面,以了解它们如何实现去中心化社交,并探讨它们在这方面的优势。我们将深入了解它们的架构设计和实现思路,并比较它们在用户体验、隐私保护、安全性等方面的差异。通过本文的分析和总结,读者将更好地了解这两个平台,以及它们在去中心化社交方面的贡献和发展。MastodonMastodon(长毛象)成立于2016年,是由Eugen Rochko创建的一个开源的微博客(microblog)平台,旨在为用户提供去中心化、隐私保护的社交体验。首先对涉及到的一些名词进行简单解释:联邦(federation):联邦是去中心化的一种形式。在联邦中,不是所有人共同使用一个中心服务,而是使用多个不限人数的服务器。ActivityPub:Mastodon使用一种标准化的、开放的协议来实现站点之间的互动,这种协议叫做ActivityPub。任何通过ActivityPub实现互联的软件都可以与Mastodon无缝通信,就像Mastodon站点之间的通信一样。实例(instance):每个人都可以在自己服务器上配置运行...

使用 The Graph 获取各大元宇宙项目交易信息
The graph 工作原理 Graph 根据subgraph描述(称为subgraph.graphq)学习什么以及如何索引以太坊数据。子图描述定义了subgraph感兴趣的智能合约,这些合约中要关注的事件,以及如何将事件数据映射到 The Graph 将存储在其数据库中的数据。该流程遵循以下步骤:去中心化应用程序通过智能合约上的交易将数据添加到以太坊。智能合约在处理交易时发出一个或多个事件。Graph Node 不断地扫描以太坊以寻找新的块以及它们可能包含的子图的数据。Graph Node 在这些块中为您的子图查找 Ethereum 事件并运行您提供的映射处理程序。映射是一个 WASM 模块,它创建或更新 Graph Node 存储的数据实体以响应以太坊事件。去中心化应用程序使用节点的GraphQL 端点查询 Graph 节点以获取从区块链索引的数据。Graph 节点反过来将 GraphQL 查询转换为对其底层数据存储的查询,以便利用存储的索引功能获取此数据。去中心化应用程序在丰富的 UI 中为最终用户显示这些数据,他们使用这些数据在以太坊上发布新交易。循环重复 (来自The ...

Subscribe to Yooma

Subscribe to Yooma
<100 subscribers
<100 subscribers
Share Dialog
Share Dialog
PixeLAW Core
paint、snake、2048、15puzzle、pop star
在开发这些游戏中体验到的MUD的优点(以下仅对我们所使用到的方面进行评价,可能并不全面):
数据处理和同步的便利性
在构建全链游戏时,智能合约的编写只是其中的一部分。然而,处理前端数据获取和页面渲染等任务却并非易事。传统的方法中,数据结构由合约定义,并存储在链上,而前端则需要通过RPC获取并处理这些数据,这既效率低下又复杂。然而,MUD框架提供了大量开箱即用的功能,利用标准化存储协议构建了熟悉的数据模型。这样它提供了一个索引器,使得前端程序可以轻松地获取链上数据并保持与链上数据的同步。这使得开发变得更加便捷和高效。
减少开发成本和学习曲线
另一个MUD框架的优点在于,如果不使用它,构建全链游戏将会面临巨大的挑战。以 pixeLAW 为例,从零开始构建前端、后端以及二者之间的交互,还需考虑合约中的访问权限控制和数据处理等方面,这将需要大量精力和时间。前端部分,本身对于前端不熟练的我,需要掌握如何构建页面、如何处理数据索引以及如何与智能合约进行交互等技能,这些都是需要付出学习成本的。而使用MUD框架,我只需专注于游戏逻辑功能的开发,极大地减少了开发成本和学习曲线。我可以专心且高效地发挥自己的专长,从而开发出一个完整的全链应用。
自由选择前端框架
最后,MUD框架的另一个优势在于,它并不限制我们在前端开发中使用的框架。根据项目需求和个人偏好,我们可以自由选择MUD所支持的优秀框架,如React或Vue等,来进行页面渲染,从而满足项目的需求。
Solidity语言的限制
在开发2048、15puzzle以及pop star等游戏时,我们发现需要使用数组来实现游戏的逻辑。然而,考虑到gas的消耗以及数据的储存,使用MUD框架后,其中的store功能会对数据进行存储,使得我们不再需要在合约中定义storage类型的数组来存放数据。尽管如此,在处理游戏逻辑时,我们仍然需要使用一些临时的数组变量,这些变量通常被定义为memory类型。然而,Solidity语言中,如果一个数组被定义为memory类型,则无法使用push操作向其添加数据。此外,由于游戏逻辑中某个场景无法确定数组的固定长度,因此我们不得不使用动态长度数组,这增加了开发的复杂度。
对于MUD:
在开发pop star过程中,我们计划使用二维数组。当我们获取到用户点击的位置后(x,y),可以直接从二维数组中获取相应位置的值进行处理。然而,MUD框架的store配置并未包含对二维数组等复杂数据结构的支持,如struct、string[]和bytes[]等。因此,在开发过程中,我们不得不额外处理这些情况。尽管如此,这些限制对我们的开发影响并不是绝对巨大的。MUD框架提供的store功能以及前端的索引器等开箱即用的功能,仍然为我们的开发速度和成本带来了积极的影响。
PixeLAW Core
paint、snake、2048、15puzzle、pop star
在开发这些游戏中体验到的MUD的优点(以下仅对我们所使用到的方面进行评价,可能并不全面):
数据处理和同步的便利性
在构建全链游戏时,智能合约的编写只是其中的一部分。然而,处理前端数据获取和页面渲染等任务却并非易事。传统的方法中,数据结构由合约定义,并存储在链上,而前端则需要通过RPC获取并处理这些数据,这既效率低下又复杂。然而,MUD框架提供了大量开箱即用的功能,利用标准化存储协议构建了熟悉的数据模型。这样它提供了一个索引器,使得前端程序可以轻松地获取链上数据并保持与链上数据的同步。这使得开发变得更加便捷和高效。
减少开发成本和学习曲线
另一个MUD框架的优点在于,如果不使用它,构建全链游戏将会面临巨大的挑战。以 pixeLAW 为例,从零开始构建前端、后端以及二者之间的交互,还需考虑合约中的访问权限控制和数据处理等方面,这将需要大量精力和时间。前端部分,本身对于前端不熟练的我,需要掌握如何构建页面、如何处理数据索引以及如何与智能合约进行交互等技能,这些都是需要付出学习成本的。而使用MUD框架,我只需专注于游戏逻辑功能的开发,极大地减少了开发成本和学习曲线。我可以专心且高效地发挥自己的专长,从而开发出一个完整的全链应用。
自由选择前端框架
最后,MUD框架的另一个优势在于,它并不限制我们在前端开发中使用的框架。根据项目需求和个人偏好,我们可以自由选择MUD所支持的优秀框架,如React或Vue等,来进行页面渲染,从而满足项目的需求。
Solidity语言的限制
在开发2048、15puzzle以及pop star等游戏时,我们发现需要使用数组来实现游戏的逻辑。然而,考虑到gas的消耗以及数据的储存,使用MUD框架后,其中的store功能会对数据进行存储,使得我们不再需要在合约中定义storage类型的数组来存放数据。尽管如此,在处理游戏逻辑时,我们仍然需要使用一些临时的数组变量,这些变量通常被定义为memory类型。然而,Solidity语言中,如果一个数组被定义为memory类型,则无法使用push操作向其添加数据。此外,由于游戏逻辑中某个场景无法确定数组的固定长度,因此我们不得不使用动态长度数组,这增加了开发的复杂度。
对于MUD:
在开发pop star过程中,我们计划使用二维数组。当我们获取到用户点击的位置后(x,y),可以直接从二维数组中获取相应位置的值进行处理。然而,MUD框架的store配置并未包含对二维数组等复杂数据结构的支持,如struct、string[]和bytes[]等。因此,在开发过程中,我们不得不额外处理这些情况。尽管如此,这些限制对我们的开发影响并不是绝对巨大的。MUD框架提供的store功能以及前端的索引器等开箱即用的功能,仍然为我们的开发速度和成本带来了积极的影响。
No activity yet