本文给出当下web3产品级应用的技术栈推荐,可供置身于去中心事业的科技从业人员参考。
数字货币一日通——OpenZeppelin的ERC20
本文尝试发行一款基于以太坊区块链的数字货币,在此之前你需要先熟悉Solidity
这门合约语言,并拥有Metamask
钱包和账户。
「本文仅做技术探讨,如有上主网需求,请遵循当地国家的法律法规,后果自负」
智能合约一日通——Solidity篇
比特币是中本聪(未必是个体,可能是一群人,人人都可能是中本聪)送给全世界的礼物,在过去的历史经验中,我们看到了其叹为观止的金融属性,但是作为一种创新我们除了看到其金融性质外,还有很多熟悉的事物值得被重新定义,从而探索出新的价值。就比如说:信任和验证。这也带来了在区块链上部署去中心可计算合约的可能性:Smart Contract。
使用Org-mode + taskjuggler进行项目管理
Emacs
自带的Org-mode
可以说是包罗万象,包括了日程管理、GTD、大纲、PPT生成、web页面生成以及文学编程等等强大的功能。如果搭配上taskjuggler
的话,它还能胜任项目的管理的工作,而且必要的调度、规划、资源配置等能力都具备。
实现尾递归的右折叠
题目概述
折叠,也称为归约(reduce)、积累(accumulate)、聚集(aggregate)、压缩(compress)或注入(inject),指称一组高阶函数,它们分析递归数据结构并通过使用给定组合运算,将递归的处理它的构成部件、建造一个返回值的结果重组起来。典型的,要向折叠提供一个组合函数,一个数据结构的顶端节点,和可能的在特定条件下使用的某些缺省值。折叠接着以系统性方式使用这个函数,进行组合这个数据结构的层级中的元素 – By wiki
下面的Scala
代码定义了右折叠。因为不是尾递归的函数,无法应用对应优化,在as很大的时候会造成Stack-Overflow。我们需要探索stack-safe的实现。
1 | def foldRight[A, B](as: List[A], z:B)(f: (A, B) => B): B = |