0%

ZFS 介绍

首先ZFS是"Zettabyte File System"的首字母缩写。ZFS 源自于Sun Microsystems为Solaris操作系统开发的文件系统。
ZFS是一个具有高存储容量、文件系统与卷管理概念整合、崭新的磁盘逻辑结构的轻量级文件系统,同时也是一个便捷的存储池管理系统。ZFS使用CDDL开源协议条款授权。后来被移植到FreeBSD和NetBSD系统上。

ZFS是一个128位的文件系统,这意味着它能存储1800亿亿(18.4 × 10^18)倍于当前64位文件系统的数据。窃以为目前ZFS文件系统是云存储以及NoSQL数据库的最佳首选。

特性

  • Data integrity 数据完整性
阅读全文 »

对于云计算存储而言,家用NAS存储是云计算存储的一个子集,它不用考虑迁移,LB,远程mount,存储集群的管理等等。相对与公共服务的云计算,家庭NAS就相当于家庭的数据中心了。家庭的各种数据能安全存放在NAS中。利用NAS家庭的其它电脑能方便的对它进行访问使用,以及在后面以极低的功耗默默下载,就算不在家,也能远程管理家里的下载,看到任何资源就能随时下载管理。
NAS提供给我们的功能有:

文件共享服务:现在很多人家中的电脑都不止一台,这样视频,照片、音乐、文件等数据资源分散在不同的电脑中,要去找出会很麻烦。通过家用NAS,家中的各个成员可以将想分享或共用的照片、音乐、影片或其他文件档案,分门别类地放在同一个网络硬盘中,避免相同的资料在每部电脑里浪费同样的空间。

数据备份服务:NAS一般都具有多种备份功能,包括本地备份、异地备份和NAS间备份等等。另外NAS还具有一键备份功能,将USB存储设备(如闪盘和外置硬盘)插入NAS上特定USB接口,就能把USB存储设备上的文件备份到NAS中。

家庭服务中心:通过把打印机与NAS相连,开启NAS网络打印机功能,我们就能在局域网中共同使用这台打印机,通过在NAS上建立Web服务,把照片和录像存放在NAS网络存储器的指定目录中,就能通过浏览器登陆NAS的Web网站进行观看,就像访问网络相册一样。另外在NAS中使用UPnP-AV功能(或称流媒体功能),在网络中可以被Windows MCE系统、Xbox360和PS3等设备发现,无须额外的操作就能播放存储在NAS中的多媒体文件。同时我们还可以用NAS网络存储器搭建iTunes服务器,让iTunes软件和iPod等设备从NAS上获得音乐和视频。

DIY NAS

阅读全文 »

DIY相信大家都知道,就是自己动手做的意思(Do It by Youself),而云计算呢?那么何谓云计算,云计算与分布式计算,网格计算的差异在哪里?DIY与云计算能扯得上关系么?然后顺着DIY思路再看看国内,谁能告诉我真正的国内的云计算数据中心在哪里?

在我看来,目前云计算是以超大规模的服务器组成若干数据中心,通过商业运营,为互联网提供可伸缩的,按需供给的基础设施服务。对于希望能对整个互联网提供商业运营服务,如此超大规模的可配置的数据中心,成本就是关键,对于超大规模来说,哪怕是一台的成本能节约100元,那么以万台计算,就可以节约百万,无论采购成本还是运营成本在超大规模的运营下每台的小额节省将会极大的增强成本竞争力。

真正的云计算服务是离不开DIY的,越有技术能力的公司DIY的程度越深,从硬件到软件无一不是在深度定制,用以压榨出更多硬件性能和节能。下面以Google举例来说。Google 的数据中心一直以来都是戒备森严的禁地,众所周知,Google和Amazon这些大佬总是对数据中心内部运营状态严格保密,因为Google把自己在对数据中心服务器的DIY定制能力视作为公司的核心竞争力之一。事实上google一直对于自己定制数据中心硬件严加保密,直到2009年才对外开了一个窗,向外界展示了它5年前的google定制数据中心的面貌。Google 定制自己的主板、机箱、机柜(集装箱),乃至数据中心,甚至利用地势来节能。

Google 展示了自己DIY的一种服务器,使用一个12瓦电池供电,这比数据中心的 UPS 更可靠。Rich Miller 在一篇关于数据中心的博客文章中表示,这个设计让 Google 的 UPS 利用率达到99.9%,而一般数据中心只能达到92%~95%。

Google DIY Server Image

阅读全文 »


就目前的互联网来说,最火爆的当属于社交媒体。从产品形态上来区分,当前的社交媒体主要有两大流派,一是以短信息为中心的其代表twitter;二是以社交圈子为中心其代表为Facebook。

现状

虽然目前大家都在关注微博类和社交类,但是事实上社交媒体本身可不仅仅限于此。下面一一絮叨之。社交媒体,从产品层面上来看固有元素有二:内容(Contents)和SNS(社会化网络关系)。

一、内容

首先说说内容,或者叫媒体,又或者叫信息。内容可以从内容的量的多寡来看,也可以从内容的类型来看。

阅读全文 »

开源 Bitcoin P2P电子货币是点对点的电子现金系统,创建于2009年[http://en.wikipedia.org/wiki/Bitcoin]。无需金融机构直接点对点支付。该电子货币系统的特色是无需信托中间人,能够方便的进行互联网上的汇款。第三方不能够控制或者阻止您的交易。Bitcoin 交易几乎免费, 而信用卡的网上在线支付系统通常收取 1-5% 的交易费用,加上其他各种费用高达数百美元。避免了中央储备银行的不良政策和不稳定性所造成的安全隐患. Bitcoin系统的有限货币通胀是均匀分布(由CPU决定)于整个网络, 而不是由银行垄断。

这被某些人认为是最危险的开源项目,但我觉得恰恰相反,这是有史以来最令人兴奋的开源项目。这样发行的币才是真正的“人 民 币”,人民才是被服务,而不是被管理。P2P必将从商业、政治、生活各个方面重新定义新的更加公平公正的意识形态。

名词解释以及背后的技术

Bitcoin涉及到很多有意思的技术,要想搞懂bitcoin首先必须对这些技术理解和把握然后是对Bitcoin术语的理解,bitcoin最重要的技术支撑是P2P,数字签名(EC DSA),散列(SHA256, RIPEMD-160), POW,和HashCash。而术语则是:transaction, block,  address, Merkle Tree.

工作证明 POW(Proof-Of-Work)机制

阅读全文 »

![](data:image/jpg;base64,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)![](data:image/jpg;base64,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)

游戏开发

自打DHTML出来后,开发者就开始在web上弄一些好玩的东西,早在1999年,就有人开始用DHTML做网页游戏,比如:Fun and Games with DHTML 。可惜限于当时浏览器的性能和特性,加上CPU处理能力有限,许多还是停留在设想中,但这并不能挡住开发者前进的脚步,他们并没有 Give Up。随着浏览器性能的改进以及HTML语言本身的发展,加上硬件性能也有了长足的进步,现在如今诸多的 Javascript Game Engines 已经如雨后春笋般的冒出来了。

相较于HTML4,HTML5做了像素控制机制以及图形加速方面的改进,正是这些改进,让WEB游戏开发变得简单,那么,接下来,在本文的上半篇,我们首先要介绍的是两个2D HTML5游戏引擎,下篇我们会介绍一些好玩的3D HTML5游戏引擎。

一、GameJS 开源2D HTML5 游戏引擎

阅读全文 »

Processing 语言是专门为开发者中的艺术家而创建的,由MIT Media Lab的两个家伙所开发,一开始,他们的初衷只是想让开发变得有趣一些,正是这样一个单纯的目的,造就了Processing语言的艺术气质,令它成了一些Geek眼中的宝贝。当然,它也并不一定是Geek的专利,因为随着它越来越被广泛传播,现在玩这个被称为电子艺术和可视化设计,许多真正的艺术家也参与到了其中。  Processing 语言的网站在: http://processing.org/ 。 在它的展示厅(Exhibition)页面上你能看到许多令人吃惊和好玩的图形和动画,难以置信的是这些东西都是通过很简单的程序代码“画”出来的,是的,有时候很难相信。比如下面这幅图片就是接合Twitter的数据用Processing画的。

Just Landed - Screenshot

还有下面这个:

processing

看到这里,您是不是有马上一试的冲动呢?那么,下面,跟我来一起开玩吧。

阅读全文 »

在开发移动应用的过程当中,如果你的应用只定位在一种平台上,这可不是一个好主意,但是为许多不同的平台Building应用又是一件非常麻烦和非常不爽的事情,因为你会发现每一种手机平台都有自己的SDK,它们需要使用不同语言来进行开发,你可能不得不需要5、6个代码仓库来管理不同设备上的代码,而且需要不同设备的开发人员来开发维护这些仓库,你还不得不装上各个设备的sdk,设置好路径和各种配置信息,来编译不同设备上的应用包。那么移动网站模式是不是一个可以接受的替代方案呢?幸运的是移动应用和移动网站并不是对立的两端,通过Phonegap我们可以采用html5的网站形式来开发移动应用。也许开源Phonegap 会成为 WebApp 上设备端开发的事实上标准,ShowMuch本期就为你推荐移动开发利器:PhoneGap。我们先来看看PhoneGap的特性:

  • 支持6种移动设备平台:iOS, Android, BlackBerry, WebOS, Symbian WRT, Windows Mobile(内部测试),以及桌面环境(内部测试)
  • HTML5 + CSS3 + JavaScript  利用标准的Web技术开发应用
  • Phonegap Build: write once, compile on cloud, run anywhere. 提供在线Builder平台:只写一次,云端编译,运行在任何地方
  • 目前已经有上千基于Phonegap的应用在AppStore上

开始玩![](data:image/jpg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEAAkGBggGBQkIBwgKCQkKDRYODQwMDRoTFBAWHxwhIB8cHh4jJzIqIyUvJR4eKzssLzM1ODg4ISo9QTw2QTI3ODUBCQoKDQsNGQ4OGTUkHiQ1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU0NTU1NTU1NSk1NTUtNf/AABEIACAAIAMBIgACEQEDEQH/xAAXAAEBAQEAAAAAAAAAAAAAAAAGBwUD/8QALRAAAgIABQMBBgcAAAAAAAAAAQIDBAAFERIhBiIxB0FRYZKhwRMUQkNxgZH/xAAWAQEBAQAAAAAAAAAAAAAAAAADBAH/xAAdEQACAgMBAQEAAAAAAAAAAAABAgADERIhQfAE/9oADAMBAAIRAxEAPwC44N9a5maVWCAlkin3GVlPJUaDb/ZYf5p4OEmBXqM6LNlKv4eRh9UH3wlS7uFEO1tULTV6YzCpds2Vo7tkccYkXaQA/dz/ACRp8owgwe6Kiljyu20qbFe5IYju13KAF1+HKkafDCHGOMMRNrOyAzjbtwUasli1IsUMY1Zm9mCfVFiXN46jQUysMU4b8wy7pF5P7eh7GGh11B400GMj1ezWzlk+VNar2TkQEj2Z68ZcRS6oqF+O0dzAd3JY8doxhVOv8qlKMud1Gj/V+Ixjbx7mAw9dQKbhujyR3fp0tFTISp9xzsoOX5y+W1gk1JzTWRgJ49d3LaljGQCF5Pgk8eMI0dZY1eNg6MNVZTqCPeMRqz6hZUJBXr5ibc0zBIoKqtK7seAFCjyT4w79OY84TJLDZtUko13sF6NaZVEqRMoYl9p4JcsdpG5Trr7ABYDGc9lKkqwUDmPhP//Z)

首先自然是需要下载 phonegap: http://www.phonegap.com/

然后你还需要相应设备的SDK

阅读全文 »

编者按:作为一个介绍优秀开源项目的网站,开源硬件也将是我们重点关注的一块,在未来,我们会把更多优秀的开源硬件项目介绍给大家。在此之前,让我们先预习一下开源硬件的三个时代。:),本文作者:李雪愚,盛大创新院高级架构师。

对于开源硬件来说,我们根据其技术特点,大概将其分为三个时代,即:焊接时代(过去)、插接时代(现在Arduino),无线时代(未来)

一、焊接时代

硬件开放初期本为DIY硬件,那个时候电路图,PCB图纸开放的也不少,但是由于还是只能是搞电子技术的小圈子才能玩转的。

阅读全文 »

sass

在Web开发的过程中,使用CSS的是很普遍的,虽然CSS本身并不复杂,但在大型网站中如何去有序地组织好CSS结构却是一个相当棘手的问题。为了解决开发者的这些问题,就有了Sass的出现。Sass 的全称是 (Syntactically Awesome Stylesheets),是一种输出CSS的meta编程语言, 可以帮助开发者写出复用性更优的CSS文件。它能将类似CSS但是更简便的书写的sass语言最终转换为CSS代码。Sass提供了基于Ruby语言开发的工具能够很容易的将sass代码转换为CSS代码.

它的语法特性

  1. 变量: Sass中以”$”号打头的$name 都是变量。我们可以给变量赋值,然后在文件中使用它们。
  2. 继承:
     A. 继承其它选择器的属性:.error {border: 1px}; .badError {@extend .error};
     B. 在选择器中属性插入”&”它就会继承父选择器:a: {color:black; &:hover {color:blue}}
  3. 内嵌 :这个功能将另外一个急需的特性加入CSS:将选择器嵌入到其他等级,而不是不得不取消在一些高级选择器定义中嵌套。Sass翻译器将这个简洁的特性扩展到了CSS。
  4. 混合类型 :允许开发者抽象出性质的共同点,然后命名并且加入到选择器中。熟悉Ruby混合类型的开发者会了解混合类型在CSS中的应用。Sass也允许将混合类型作为参数,使得混合类型的应用更加灵活。
  5. 操作 :Sass支持简单的算术操作,例如±×/,以及函数。将这个特性和变量结合起来,会使得CSS变得更加灵活。工具需要保证操作的单位(px, pt)正确性(例如字体大小等, width: 1in + 8pt,将某颜色亮度增加10%: lighten(yellow, 10%))。

Sass语言支持的函数列表在这里:http://sass-lang.com/docs/yardoc/Sass/Script/Functions.html

阅读全文 »