本文在Truffle框架的基础上给出一个可快速上手DApp的教程,并非工业化流程,其中对于真实的生产环境做了大量的精简,仅保留最关键的几个部分,对于初学者足以了解一个DApp的开发工作流程,但是对于工业级生产则远远不够。这里仅作为一个入门来一窥DApp
的基本概念。
智能合约一日通——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 = |
复杂系统真相——软件篇
最近国内很不巧,赶上了新型冠状病毒SARS-Cov-2
大爆发,也算是得益于此我获得了自打从英国回国入职后久违的真正意义上的小长假。当然,按照国内科技私企的特点免不了之后会做出让我问候他家祖先的弥补性措施来。不多扯题外话,主要就复杂的系统谈一谈我的个人浅见。
亘古至今,从旧石器时代远古人类的群居生活到新石器时代晚期部落的建立再到现代信息化的社会,人造复杂系统经历了至少成千上万年的演化在生活中已无法离开、无处不在:
- 大城市本身
- 交通网络
- 通讯系统
- 大飞机、航空母舰等大型单体机械设备
- 社会公务系统等
除上述的不完整的例子外,还有更神奇的数十亿年演化的自然体系:
- 地球生态系统
- 行星系统等
我不是研究自然科学的专家,在此也不谈系统设计(其实系统设计更值得玩味),主要就我相对比较熟悉的复杂软件系统给出一点判断和理解。直到撰文的此刻,再有两个月我工龄将满3年,在2家公司打工,先后经手了5个项目。姑且不论5个商业性质的项目和50个是否会有本质性的区别,一些很容易发现的规律还是大差不差。