052018.4

纯属折腾系列。下午为博客启用了https,简单说一下过程。参考了这篇文章使用了一个免费的证书,在服务器上跑了几条命令就OK了。服务器配好之后,还要去阿里云后台启用443端口。这样博客就可以被https访问了。但是因为我的图片之类的都是放在七牛的,所以还要为图片存储的域名开一个证书,还好七牛有免费证书服务。所以有去七牛申请,配置,坑爹的是,明明界面上有开关,非得提工单,通过他们后台去操作才能成功。不过总之,都搞好了。但是为了以后好控制,我并没有关闭http访问的能力,为的是哪一天https访问不了了,可以快速切回来。后来为了先显摆一下逼格,做了一个301跳转,现在就会自动跳转到https了。但是事情并没有完,还有一个问题是,文章里面的很多图片地址是早期插入的,插入的时候是http前缀,虽然我用了CDN插件,可以做到修改域名,但是无法修改schame啊,所以,我又做了一件事,就是装了一个叫elvet Blues Update URLs的插件,对所有内部的url进行了替换,把http开头的url替换为https开头。最后,在设置里面把博客的主页地址也修改一下,发现是我自己写的插件来做的,所以又改了插件。另外,发现如果文章里面使用了外部的图片,那就比较尴尬,所以以后外部的图片也不能直接插入到文章里面了,只能采用链接的形式。比如我有些地方用到了二维码,之前是直接调用外部的api用的,现在的解决办法是把外部api生成的图片保存到我自己的本地。总之,折腾半天之后,感觉才一切都搞定了。

20:07:29 已有0条回复
022018.4

比特币本地后台数据库结构技术解析

https://baya.github.io/2017/09/04/build-our-btc-system.html

这篇文章比较详细解释了比特币本地的数据库结构,很赞。

092018.3

1. 匿名

可能是中本聪比较神秘,玩币的人竟然交易是匿名的。

2. 去中心化

最大的误解,去中心怎么可能,反自然规律么?正确的解释是:利用了p2p网络的特性,让区块链数据具备了异地备灾特性,同时网络上每个节点可以获得从其他节点得到的完整数据,并有权对所有数据进行查看。

3. 不可篡改

如果你从网络同步得到了数据,数据在你的本地保存,那么你就可以篡改,可以在链的中间截断,把后面的所有块重新伪造一遍,并且利用某种强大的计算力(量子计算),把这条链推广到网络,让网络上的其他节点同步这条链。区块链只能保证参与节点不作恶的情况下,区块链上的数据是可信的。

4. 智能合约

触发合约生效的条件,需要从智能合约系统外部倒入,而外部系统是否可信根本无从控制。

5. 创业发币(ICO)

通过发币创业,简单的说是预期未来会有很多韭菜购买你的币,无论创始人多么正直努力,币系统背后没有任何社会贡献,紧紧是一场旁氏游戏。这样的创业,对社会有害。

23:53:39 已有0条回复
062018.3

深入浅出区块链

https://learnblockchain.cn/

这个网站所有文章都是介绍区块链的,很赞。

jest测试前后端代码

022018.3

虽然区块链已经热到爆炸,但是市面上对区块链开发框架的设计太少了。对于区块链的运行原理可能很多人都已经摸的差不多了,但是要从无到有制定自己的区块链,还是难上加难,只能基于现有的账单区块链去扩展。

现在非常期待用python或javascript写的区块链类库,不需要它提供完整的区块链运行时,只需要提供非常充足的语言,把数据结构、挖矿、交易、验证等等封装好,由开发者自己根据这些语言特性,去决定怎么组合,怎么设计自己的区块链。

说到底,感觉还是行业对区块链对抽象程度不够,还无法完全脱离账单对概念,把区块链抽象成纯的数据库。看到群里还有人讨论,说要用区块链做聊天工具,我觉得聊天本来就带有私密性和即时性,区块链本身的特性就是和这种需求相反的,根本没有必要把现有的产品都用区块链去重新构想。我想区块链的出现,一方面是可以解决一些现有问题,另一方面是可以激发一些创新。现有问题,比如金融领域的信任问题,软件、内容的版权问题,文件的法律效应问题,可信认证问题等等。如果把所有的东西都区块链化,不见得是一种进步。世界还是要多样化才精彩。

12:46:44 已有0条回复
092018.2

2018年前端核心关注点

我认为2018年可能会重点关注点几个技术点:

webGL:web图形处理的终极,特别是3D这个领域,它将直接解决VR、建模、地图,甚至看房、看片等各种web端端视觉问题。如果基于webGL开发应用,那么现在不断讨论的前端视图库,例如react,甚至包括flex、grid布局,都会被碾压。

webRTC:web上的p2p技术,已经实现了接口,不需要自己再跑去node端做p2p集成,连穿透都已经做了,所以简直是逆天的技术。问题在于,你可以用它做什么?当然是区块链,或者类区块链的应用。当然了,用它来代替网络传输也是可行的,例如直播、文件快传,简直了。似乎看到了webOS的新希望。

graphQL:新的数据交互思想,顶替restful称为下一代数据交互接口规则。不过这技术能否带来变革性的改变,还有待观察。

PWA:移动端!移动端!如果web不再加快进入移动端市场,那么相当于落后了10年!什么概念!前端还需要依赖react native这样的技术才能写原生应用,绝对不行,看看桌面端的electron,再看看手机端,唯一的希望就是给予PWA出现一个跨平台的框架。

WebAssembly:逆天的在于,让web直接运行二进制文件,什么概念,就是老爷车和火箭啊!如果方案可行,在手机端的性能如果能大大提升,如果js可以转码,那么手机端还怕啥。

除开这些技术点,大大技术趋势非AI和区块链莫属了。区块链已经火了两年了,但是仍然没有重磅的产品被推出,不知道什么原因。而AI则更多的是强调算法,前端领域基本就不谈论算法问题,也是醉了。之所以不谈论算法,我想很重要的一个原因是js代码对于竞争者而已是可见的,如果你把算法放在前端,对手直接趴来用,秒秒钟赶超你。所以要有一种新的技术来实现对js的黑盒运行,我认为需要借助webasembly和native技术,也就是说,把js编译成不可解码的可执行文件,由一个驱动器去执行这个可执行文件,而如果webassembly可以做到的话就更好了。

 

14:09:57 已有0条回复
072018.2

enzyme的三种渲染方式

react测试利器enzyme有三种渲染方式:shallow, mount, render。shallow渲染叫浅渲染,仅仅对当前jsx结构内的顶级组件进行渲染,而不对这些组件的内部子组件进行渲染,因此,它的性能上最快的,大部分情况下,如果不深入组件内部测试,那么可以使用shallow渲染。mount则会进行完整渲染,而且完全依赖DOM API,也就是说mount渲染的结果和浏览器渲染结果说一样的,结合jsdom这个工具,可以对上面提到的有内部子组件实现复杂交互功能的组件进行测试。render也会进行完整渲染,但不依赖DOM API,而是渲染成HTML结构,并利用cheerio实现html节点的选择,它相当于只调用了组件的render方法,得到jsx并转码为html,所以组件的生命周期方法内的逻辑都测试不到,所以render常常只用来测试一些数据(结构)一致性对比的场景。在这里还提到,shallow实际上也测试不到componentDidMount/componentDidUpdate这两个方法内的逻辑。

11:22:31 已有0条回复
032018.2

前端性能优化清单

022018.2

前端测试介绍