一切福田,不離方寸,從心而覓,感無不通。

房子也开源 ? 建造生态房屋

你听过开源软件,开源硬件,但是,是否听说过开源房屋?最近,在 Kickstarter 上,一对夫妻发起了“开放建筑学院”(Open Building Institute)项目,目的是开发一套开源的生态房屋工具箱,让每个人都能够建造低成本的生态房屋。 这两人是 Marcin Jakubowski 和 Catarina Mota。Jakubowski 运营着一个生态建房项目“开源生态学”(Open Source Ecology),而 Mota 是一位开源软件倡导者,同时也是一名智能材料专家。 2013 年,他们决定在密苏里的郊区建造自己的房屋。最初,他们计划建造一个 144 平方英尺(13.4平方米)的微型小屋,但是,在一年半后,他们的新家扩展到 2000 平方英尺(185.8平方米)。这套房子不仅功能齐全,而且还可以完全脱离电网。如今,他们想要把自己的经验变成人人可学的知识。 “我们是开源提倡者,因此,我们所做的一切事情都要分享,” Mota 对 Fastcodesign 网站说,“我们意识到,这个项目真的能够帮到那些志同道合的人。” 他们设想的工具箱是一个在线平台,提供了模块化家庭设计的资源库。用户可以下载库里的数据,将其导入开源的装修设计软件 Sweet Home 3D,同时,用户也可以把自己的设计贡献到资源库,只要这些设计符合“开源建筑学院”的标准即可。 该项目还提供了一套模块,向用户提供材料和建筑方面的指导,还包括一个建筑工人组成的网络。“这些设计决定了你的建造方式,但是,你拥有的选择是无限多的。” Jakubowski 说。 在设计开源后,他们希望建房成本能够大大降低,同时,他们也设想了一个训练建筑工人的作坊。如果让这些建筑工人帮忙,那么,用户需要多花 1 万美元。根据他们的估计,建造一套 700 平方英尺(65平方米)的住房,大约需要 5 天时间,材料成本是 2.5 万美元。这来自于他们自己建造绿色温室的经验,当时,他们得到了 30 多人的帮助。 Jakubowksi 和 Mota 说,DIY 生态房屋的最大障碍在于,人们不知道如何从哪里开始。“开放建筑学院”提供了一个全程的指导,并且给出了便宜的解决方案。“在解决问题方面,我们想要把开 源确立为一个可用的、而且被普遍应用的方法,” Mota 说,“而且,我们想要尽可能地降低它的使用门槛。” 图片来自 fastcodesign 稿源:爱范儿 from:http://www.oschina.net/news/75155/house-is-also-open-source

龙生   13 Jul 2016
View Details

全世界只有我们Erlang程序员是正确的

全世界只有我们是正确的,其他的全错了。我们(Erlang程序员)找到了症结并正确的解决了问题,所有的其他人(非Erlang人)都找错了方向,解决了错误的问题。 全世界其他人想解决的问题是如何让现存的程序能并行执行。2004年之前,摩尔定律一直有效。每年我们的程序执行都会变得更快,我们不需要成为一个优秀的程序员,我们不需要掌握更优化的算法就能让程序一年比一年更快。 芯片越来越大,时钟速度越来越快,程序运行速度越来越快,每年大概以15%幅度的性能提升。 到了2004年,这些现象终止了。芯片已经足够大,时钟的速率已经快到在一个时钟周期内时钟脉冲不能到达芯片的所有部分。电路设计开始改变。多核处理器出现。 从2004年开始,芯片的体积仍然在增大,但时钟的速率开始变小,每个芯片上的CPU数量开始增加。我们从每一个芯片只有一个超级处理器的时代进入到每个芯片有多个速度较慢、性能较弱的多核处理器时代。 由此开始,顺序执行的程序显得越来越慢,一年慢过一年,而并行执行的程序开始变得越来越快。 问题是,根本没有并行执行的程序,有也是极少。 而Erlang是一种具有并发特征的编程语言,所以Erlang程序本质上在具有并行能力的计算机上运行时要比其它程序都快的多。而唯一能阻挡它运行的更快的问题就是Erlang程序中可能存在一些必须顺序执行的瓶颈。 并行程序中有需要顺序执行的部分,这正应验了Amdahl定律。 假设你的程序中有10%是需要顺序执行的(其余部分可以并行),可以并行的部分的执行时间可以压缩近似0——只要有足够的可以并行的处理器。但顺序执行部分的时间无法缩减。 如果程序中含有10%的需要顺序执行的代码,你的程序执行速度最高能提高10倍。其中1/10的程序的速度永远无法提高,其它9/10的程序的执行时间可以缩减至接近0。 所以,对于Erlang程序员来说,提高他们的程序的运行速度的技巧就是找出代码中需要顺序执行的部分。 而对于任何对于其他编写顺序执行程序的程序员来说,提高他们程序速度的方法是找出他们程序中可以并行执行的部分。 让串行程序自动并行化的征途铺满荆棘,无法走通。(并不完全是这样,在某些特殊环境中是可以实现的,但绝非易事)。 现在的数据中心了都排满了酷炫的新型计算机,某些顶级的配置里拥有多达24核。但它们的性能呢?这些酷炫的新机器能快24倍吗? 对某些程序来说是的,但对大多数程序来说不是。对大多数程序来说24个CPU中只有一个被利用。CPU的低利用率成了一个严重的问题。这点正印证了Alexander Gounares Brilliant在Erlang factory谈到的问题。 Alexander的演讲让我们隐约看到了未来。他开创concurix让我们看到了未来的方向。他们正在开发工具能自动找出Erlang代码中需要顺序执行的瓶颈。 Concurix使用这些工具来发现Erlang虚拟机中的瓶颈,在他们的测试中显示了惊人的结果。他们找到了一个图片处理应用中的瓶颈,它是zlib库中的一个程序锁,是用C写成的。他们用Erlang重写了它,用Erlang替换了C代码。 这真是不可思议,C程序本应更快,事实也是,但它却有个同步锁。Erlang程序相比之下要慢,但没有状态锁,这赋予了它提升能力的机会。去掉了C代码后,用Erlang写成的图片处理应用比原始的C程序快了很多。 我很吃惊——惊奇于这样的好东西的出现。 当Alexander在Erlang factory的演讲视频出来之后,你们观看时准备好惊奇吧。这是未来,未来就在下周旧金山。 from:http://www.vaikan.com/erlang-solving-the-wrong-problem/

龙生   13 Jul 2016
View Details

Erlang

Erlang是一种通用的面向并发的编程语言,它由瑞典电信设备制造商爱立信所辖的CS-Lab开发,目的是创造一种可以应对大规模并发活动的编程语言和运行环境。 Erlang问世于1987年,经过十年的发展,于1998年发布开源版本。 Erlang是运行于虚拟机的解释性语言,但是现在也包含有乌普萨拉大学高性能Erlang计划(HiPE)开发的本地代码编译器,自R11B-4版本开始,Erlang也开始支持脚本式解释器。在编程范型上,Erlang属于多重范型编程语言,涵盖函数式、并发式及分布式。顺序执行的Erlang是一个及早求值, 单次赋值和动态类型的函数式编程语言。 Erlang是一个结构化,动态类型编程语言,内建并行计算支持。最初是由爱立信专门为通信应用设计的,比如控制交换机或者变换协议等,因此非常适 合于构建分布式,实时软并行计算系统。使用Erlang编写出的应用运行时通常由成千上万个轻量级进程组成,并通过消息传递相互通讯。进程间上下文切换对于Erlang来说仅仅 只是一两个环节,比起C程序的线程切换要高效得多得多了。 使用Erlang来编写分布式应用要简单的多,因为它的分布式机制是透明的:对于程序来说并不知道自己是在分布式运行。Erlang运行时环境是一个虚拟机,有点像Java虚拟机,这样代码一经编译,同样可以随处运行。它的运行时系统甚至允许代码在不被中断 的情况下更新。另外如果需要更高效的话,字节代码也可以编译成本地代码运行。

龙生   13 Jul 2016
View Details