DApp一日通——web3.js、Truffle与Dfinity篇

本文在Truffle框架的基础上给出一个可快速上手DApp的教程,并非工业化流程,其中对于真实的生产环境做了大量的精简,仅保留最关键的几个部分,对于初学者足以了解一个DApp的开发工作流程,但是对于工业级生产则远远不够。这里仅作为一个入门来一窥DApp的基本概念。

Read More

智能合约一日通——Solidity篇

比特币是中本聪(未必是个体,可能是一群人,人人都可能是中本聪)送给全世界的礼物,在过去的历史经验中,我们看到了其叹为观止的金融属性,但是作为一种创新我们除了看到其金融性质外,还有很多熟悉的事物值得被重新定义,从而探索出新的价值。就比如说:信任和验证。这也带来了在区块链上部署去中心可计算合约的可能性:Smart Contract。

Read More

从web 1.0到web 3.0

最近很忙,难得偷闲写一篇文章。感叹世界的变化真的很快,转眼间web 2.0以某种意想不到的方式开始陨落了,在人类历史中还未曾有如此迅速之变局,想必第一次工业革命也是持续了百年之久的。回忆起自己小时候,小学四年级的暑假,11岁,用 Frontpage 2000 亦或是 2002/03 制作了人生中第一个网站神英启蒙网(全文),那是典型的web 1.0时代的产物,只读。快20年了,现在已经处于web2到web3的大航海时代,是一种交割,也是一种新增量,未来必然是冒险家的乐园。

Read More

实现尾递归的右折叠

题目概述

折叠,也称为归约(reduce)、积累(accumulate)、聚集(aggregate)、压缩(compress)或注入(inject),指称一组高阶函数,它们分析递归数据结构并通过使用给定组合运算,将递归的处理它的构成部件、建造一个返回值的结果重组起来。典型的,要向折叠提供一个组合函数,一个数据结构的顶端节点,和可能的在特定条件下使用的某些缺省值。折叠接着以系统性方式使用这个函数,进行组合这个数据结构的层级中的元素 – By wiki

下面的Scala代码定义了右折叠。因为不是尾递归的函数,无法应用对应优化,在as很大的时候会造成Stack-Overflow。我们需要探索stack-safe的实现。

1
2
3
4
5
def foldRight[A, B](as: List[A], z:B)(f: (A, B) => B): B =
as match {
case Nil => z
case Cons(x, xs) => f(x, foldRight(xs, z)(f))
}

Read More

工作开发环境搭建与文档管理

几年时间撰文诸多,描述了各种不同语言的环境配置指导,但是对于Mac OS平台没有统一描述过较为整体的配置。一来是因为迄今为止的三段正式工作经历当中前两次都是要强制使用Windows平台做开发,并且只有PC机可以选择;二来是因为我自己的非正式工作经历(比如开发Lambda、背单词APP等),只用到了EmacsXCode单一的工具和环境。当下的工作中终于可以选择MBP了,也因此有契机总结一下全局视角的开发环境。(关于其它mac软件环境配置,参考开源创意软件常用软件

Read More

谈谈情怀

情怀有情怀特有的价值,我不管情怀起不起作用,这里所表达的情怀是指特定环境、时代、个人见识等多种因素和背景的影响下呈现出的一些对未来期望以及自我意义探寻的表现。并非指真理,情怀没有对错。

Read More