Web3的未来

2022-07-17

Web3的未来

一直想写点Web3的东西,最近我一直在研究Web3的相关技术。我感觉这是很有前途东西,必须得关注和尽早参与进来。

国内很多叫Web3.0,但是国外都叫Web3。国内叫X.0其实是一种语言上的强调语法。我不准备介绍Web1、Web2和Web3的区别和历史。我只想讲讲我感兴趣的技术点和应用。

Web3必然是未来的一部分

在Web2时代,所有数据都是中心化,不是在这个巨头这里,就是在那个巨头那里。巨头拥有你的数据的控制权。他禁你的号,甚至清掉你的数据。我自己的Twitter账号数据就被清理了。在Web3时代,解决就是中心化问题。这也是区块链的基础技术。所以Web3是基于区块链技术的。但是光有区块链技术远远不够,构建一个系统还需要很多其他东西。电子钱包解决账号问题,智能合约解决一些事务,业务问题,IPFS解决数据存储问题。IPFS是我最近才接触到的新技术。也是IPFS让我对Web3产生了极大的兴趣。我觉得未来IPFS真能大规模使用起来,将会提高存储效率,改变很多程序的实现方式,甚至产品形态。IPFS可以让Web3真是大规模运用起来。

加入Web3的浪潮

虽然Web3现在挺火(估计只在IT圈火),但是它我觉得远未到来,至少10年以上吧。国外现在Web3的投资很火,据说国内的很多Web3转移到新加坡去了。虽然国内受到监管,但是我相信Web3肯定能找到适合在中国发展的路径。我自己也想把湾湾日记改造成支持Web2和Web3的产品形态。

技术的发展浪潮是一波一波的。Web3肯定属于其中一波。它会对中心化世界进行改造,就像现在的传统化世界被互联网信息化改造一样。对于我们技术人员来说,应该要能看到这个技术趋势,提早学习,加入其中,说不定能享受技术红利。未来伟大的公司应该会从中诞生。

Category: 技术 Tagged: Web3 IPFS

comments


湾湾日记(OneDairy)介绍

2022-02-21

湾湾日记(OneDairy)介绍

念念不忘的缘由

大约在5,6年前,是在2017年左右吧,我就一直有个想法,做一个适应自己需求的日记APP。当时我在网上找了很多个日记APP,都没有我自己想要的。我当时还在知乎的一个讨论日记的帖子上发表看法。说一个理想的日记APP应该是怎么样的。

非常同意你说的最后重要的两点。我觉得日志首先是要本地存储的,即使没有网络一样照写不误。然后是可以自动保存到服务器的云端的,随时可以找回,永不丢失。后来看了一些评论,觉得还是要支持导出功能,这样即使开发者不维护或者公司倒闭,可以手动导出自己存储。

我准备做一个这样的日记APP^_^。所以你用了这么多日记APP,最喜欢哪个?我可以参考一下

这么多年过去了,我看那个帖子也还在更新。不过里面提到的大部分APP我都有用过,很多都不能满足我的需求。当然我刚去看了下,有些人提到的新APP貌似还可以,我没有试过。

如今已经2022年,过去5年了。当时我说要自己写一个APP,这么多年终于可以说实现了第一个初级版本。。。-_-

其实我当时就基本想清楚了核心功能,而且我还专门写了一个讲解我核心思想的PPT。并且2017年我也确实写了一个安卓版的demo版。后来是因为我换工作了,很忙,就暂停了。然后我2018年工作的关系我接触了react-native,我想法就是要采用跨平台的平台开发日记APP。因为我的一个重要想法就是日记APP要跨平台,安卓和iOS的体验高度一致 ...

Category: 技术 Tagged: 湾湾日记 OneDairy

comments

Read More

湾湾日记(OneDairy)的隐私政策

2022-02-20

湾湾日记(OneDairy)的隐私政策

湾湾日记(OneDiary)由邓积艺开发和运营,一切所有权归邓积艺所有。湾湾日记(OneDiary)应用深知个人信息对您的重要性,并会尽全力保护您的个人信息安全可靠。我们致力于维持您对我们的信任,恪守以下原则,保护您的个人信息:权责一致原则、目的明确原则、选择同意原则、最少够用原则、确保安全原则、主体参与原则、公开透明原则等。同时,我们承诺,我们将按业界成熟的安全标准,采取相应的安全保护措施来保护您的个人信息。 请在使用我们的产品(或服务)前,仔细阅读并了解本《隐私权政策》。

一、我们如何收集和使用您的个人信息

个人信息是指以电子或者其他方式记录的能够单独或者与其他信息结合识别特定自然人身份或者反映特定自然人活动情况的各种信息。 我们仅会出于本政策所述的以下目的,收集和使用您的个人信息:

(一)我们不出售任何商品,同时也不展示任何商品

(二)开展内部数据分析和研究,第三方SDK统计服务,改善我们的产品或服务 我们收集数据是根据您与我们的互动和您所做出的选择,包括您的隐私设置以及您使用的产品和功能。我们收集的数据可能包括SDK/API/JS代码版本、浏览器、互联网服务提供商、IP地址 ...

Category: 技术 Tagged: 湾湾日记 OneDairy

comments

Read More

湾湾日记(OneDairy)的技术支持

2022-02-20

湾湾日记(OneDairy)

湾湾日记(OneDairy)由深圳天蓝时代科技有限公司开发。

中文介绍

这是一款专门为手机打造的日记APP。简单易用,无需登录,甚至无需网络,随时随地都可以记录。支持文本,图片,视频,语音,甚至涂鸦方式写日记。

小时候我们写日记,老师经常教导我们,时间、地点、人物、事件是写日记的4大要素。我们APP完全支持这4大要素。时间地点自动获取,人物事件可以通过打标签的方式记录。另外还支持,天气和心情标签。

日记的分享和迁移也是现代日记本必要支持的功能。我们APP支持截图分享,导出PDF。

English Introduction

This is a diary app built specifically for cellphone. Simple and easy to use, no login required, no ...

Category: 技术 Tagged: 湾湾日记 OneDairy

comments

Read More

Flutter framework源码学习(一)

2021-09-19

Flutter framework源码学习(一)

以下内容只是我在团队技术分享里的keynote的摘录,实际上在分享会上会补充很多细节,这里就略过了。

Flutter架构

Flutter主要分为engine层,framework层和embeder层,engine层主要用c++写的,framework层主要是Dart语言写的,embedder层主要是平台相关的native语言写的。这里framework的源码最容易获得,也最方便容易学习。当你安装好Flutter环境之后,在Android studio打开任意Flutter项目,就可以从你的项目代码跳转到framework代码进行研究,这边跟Android是差不都的。

flutter架构

Flutter framework 源码目录说明

  • 基于stable分支,Flutter 2.2.3版本,Dart 2.12.3
  • flutter/packages/flutter/lib目录下:522个文件,378733行代码(大量注释)
  • 重要源码目录说明
目录 说明
flutter/packages/flutter/lib framework源码
flutter/example/layers ...

Category: 技术 Tagged: Flutter framework

comments

Read More

HashMap与红黑树学习总结

2021-06-11

HashMap与红黑树学习总结

HashMap解读(JDK1.8)

带着问题去看代码:

  • 里面是怎么存储数据的(使用到的数据结构)?
  • 怎么计算哈希值,怎么解决哈希冲突?
  • 初始化容量是多少?不断加入数据时,如何进行扩容? 扩容后数据的存储位置是怎么样的
  • 查找数据的时间复杂度
  • 为什么要用红黑树?这里的红黑树实现有什么特点

HashMap特性

  • hash算法效率好,高低位异或
  • 数组⻓度是2的n次幂,采用&运算来代替模运算
  • 采用modCount来实现failFast
  • 为LinkHashMap预留方法实现
  • 效率高,用链接来解决哈希冲突。插入数据时链接过长转为红黑树,删除数据时红黑树高度变低了转化为链表。
  • 数组扩容时链表会一分为二,红黑树也一样,红黑树甚至会转化为链表
  • 线程不安全。
  • 源代码里语句很简洁,经常一行代码包括N多赋值与判断,变量命名过 于简单

Hashtable是线程安全的,它是经典的哈希表实现(数组+ 链表),没有红黑树。同样是哈希表,HashMap跟Hashtable的实现天差地别,可以看出HashMap追求极致的性能,而Hashtable是线程安全的,有加锁操作,性能不会好,所以就采用了最简单的实现

红黑树 ...

Category: 技术 Tagged: HashMap 红黑树

comments

Read More

Flutter APP加入信鸽推送通知方案

2021-02-03

Flutter APP加入信鸽推送通知方案

最近我们团队又采用Flutter开发一款新APP。而且最近由于信鸽(现在又叫腾讯云移动推送)修改按量收费,我们决定在新APP里加入信鸽SDK来做推送通知功能。

我们之前主要主APP里已经使用了信鸽SDK来做推送通知功能,但这次是第一次在Flutter开发的APP上加入推送通知功能。当我们完全加入该功能之后,我觉得可以将这个技术方案分享一下。

其实加入信鸽SDK的方式跟原生APP是一样的,只是在处理推送通知页面跳转方式不一样而已。

先说说信鸽SDK的优势和注意事项。信鸽SDK以前是免费的,在去年才改成收费的,并入了腾讯云。所以他们才改名叫腾讯云移动推送。信鸽SDK还算比较稳定,毕竟是大厂开发的。收费后新增了很多统计功能,有一个重要的数据是通知开启率,还有就是通知点击率,还是很有用的数据。改成收费的的新版SDK有个问题,会跟我们的采用的iOS版的growingIO统计SDK冲突,导致growingIO活跃用户丢失。最后跟growingIO开发人员反馈后,修改growingIO SDK采用的统计方式才正常。

安卓版的信鸽SDK集成了几大厂商的通道,比较容易集成到自己项目里,这也是他的优势。然后为了推送通知能尽量在两端保持一致,这里要专门提一下推送配置。

推送配置

我觉得这一点对于推送通知很重要,尽量将两端的配置保持一致,服务器或者运营编辑在推送一条消息的时候,可以较简单的完成,不容易出错。在安卓端,我们采用客户端自定义方式,即自定义intent-filter里的data字段里的scheme,host,path字段。这里scheme,host一般是固定的,每个页面的path不同。而iOS里采用开启附加参数方式 ...

Category: 技术 Tagged: Flutter 推送通知 信鸽

comments

Read More

移动端文档边缘检测AI方案

2020-11-27

移动端文档边缘检测AI方案

需求

先说一下我们的需求: 我们需要用户拿手机扫描自己的体检单,然后我们识别体检单的内容,结构化数据后存起来用。 这里面解决方案一般都是手机客户端拍一张照片上传到服务器识别。而这张照片的好处直接影响了服务器的识别准确率。如果照片里有掺杂这别的内容就更不好了,最好照片里只有文档内容。这里就使用到了边缘检测技术。

传统的边缘检测技术

在传统的边缘检测方案中,大部分都是采用OpenCV里的边缘检测算法。OpenCV库在图像处理和识别方面真是鼎鼎大名,运用十分广泛。OpenCV库里的用到的叫cany和findContours算法,而且cany还有好几个版本。但是这个算法也不完美,很容易识别错,因为现实的场景也很复杂。

HED算法方案

现在哪里都流行用AI算法来优化。我在网上找到了fengjian大神的文章。原来我很早的时候就看到他写的这篇文章。然后就按照他的方案来开干。我运行了他的demo,大致能得到满意的效果。但是他的文章很旧了,用到的TensorFlow还是很老版本,而且只开源了iOS版本。

经过我们的摸索,还有参考了别的一些demo,我终于把它移植到了TensorFlowLite,而且我还做了安卓的版本。这样两端的解决方案一致,可以运用到正式项目中。

当然,我们自己也做了很多优化,还有自己重新收集了一些我们场景的照片来训练新的模型。最终达到了不错的效果。

我把最初移植做的demo放到github上,给有需要的人参考。这里最大优势就是安卓和iOS的方案都有。

安卓版本

iOS版本


如果你觉得这篇文章有用,请打赏小钱喝杯咖啡 ...

Category: 技术 Tagged: 边缘检测 HED OpenCV TensorFlowLite

comments

Read More

APP推送和APP换起技术方案探讨

2020-08-04

APP推送和APP换起技术方案探讨

目标:

尽量将APP两端设计成统一的方案,减少服务器适配工作量,最好可扩展,能复用。

方案说明:

我们知道APP推送目的是将对用户有用的信息,主动推给APP,作为通知信息展示,用户通过点击通知进入APP相关页面。

这里只要涉及服务器端和APP端两个技术点:服务器推送什么样的信息过来,APP这边如何解析接收到的信息,打开相应的界面和解析数据。

服务器只有一个,所以尽量让服务器发送给两端的数据较为一致,这需要一开始就应该想好整个系统的设计方案。

安卓和iOS是两个完全不同的平台,相关技术栈也不一样。不过基本都要依赖厂商的通讯通道来个APP发通知:苹果有自己的APN通道,Google也有自己的通道,当然在中国,各个厂商有自己的通道。有很多第三方SDK都整合多家厂商的通道。我们使用了信鸽(腾讯云移动推送)的SDK。之所以选他家,主要是他们集成了主流的厂商,文档也还可以(以前他们有免费版)。

为了能拉起APP不同的界面,我们需要定义一套规则。iOS的方案比较固定,只能通过json参数,这是它系统框架决定的。而安卓就不太一样,不同的厂商支持不同的方式,APP存活状态和未启动状态也不太一样。不过有一个方案是所有情形都适用的:就是通过定义Activity的scheme方式。

scheme方式是一种URI,我们经常用的URL地址也是一种URI。URI在iOS或者安卓都经常使用来拉起页面。例如我们的APP主页可以定义URI为: wegene://com.wegene ...

Category: 技术 Tagged: 推送 唤起 拉起

comments

Read More

《深度学习入门》读后感

2020-05-05

《深度学习入门:基于Python的理论与实现》读后感

最近因为做一个功能要用到深度学习相关知识和TensorFlowLite,我决定认真的学一下深度学习的知识。以前总觉得AI太高大上,怕自己看不懂。但是这次做这个功能让我意识到,如果自己再不学习,过几年可能就太晚了。我估计三五年之后,AI会渗透到各行各业,连APP开发也需要掌握一些深度学习的知识。

先说一下我们APP做的这个功能:用相机扫描检验单(体检单),将检验单截图上传到服务器,服务器进行OCR识别,并将数据结构化,用于生成用户的基因报告。这里涉及到APP开发的部分是将相机中的检验单检测并裁剪出来,上传到服务器识别。这里识别和裁剪部分很重要。将检验单准确的裁剪出来,可以提升OCR准确率。如果随意拍了一张图片,除了检验单部分,可能还包含了其他杂乱的背景,甚至其他不相关的文字内容。所以只将检验单部分裁剪出来是很重要的。

如果采用传统的OpenCV边缘检测方法来在图片中来找检验单,效果不尽人意。但是如果采用深度学习的方式来找检验单,那就可以得到很好的效果。当然这也是我们从fengjian大神博客学到的。我们采用他的方法,自己准备了一批数据训练,得到一个模型。而我们APP的任务就是在手机上采用TensorFlowLite运行我们的模型来推断得到相关结果。

因为做这个功能,我了解了下TensorFlowlite,但是我们深度学习却是了解不多。所以我决定找本书来学习一下。网上查了下,《深度学习入门:基于Python的理论与实现》这本书挺受好评,问了下我同事,他也看过这书,说写得不错 ...

Category: 技术 Tagged: 深度学习 人工智能 读后感

comments

Read More
Page 1 of 4

Next »