分类目录归档:研究

穿墙心得经验点滴

作为一个国内的互联网用户,我长期使用海外的 VPS 主机,通过建立 SSH Tunnel 即「安全隧道」,来安全、稳定、有效并自由的访问全世界的网站。

因为 VPS 属于全功能云主机,拥有独立的 IP 地址、操作系统及超级用户访问权限,所以原则上除非放了敏感内容的网站在上面,比如政治或色情,否则几乎不会被封杀。

我购买过最低折扣后每个月仅2-3美元的海外 VPS,每个月会有那么几次访问不了的情况,一分钱一分货。而较为稳定除了 Amazon 还有国内某 A 开头的云计算平台在北美服务器。

部署基础的 VPS 都是傻瓜式的,比自己安装 Windows 或 Mac OS X 还简单得多,所以这个环节大家可以自己琢磨。

当你购买了属于自己的 VPS 主机后,你会得到属于自己的 IP 地址,默认开启了 SSH 服务,用户名可能是 root,密码就是你自己设置的或随机生成的。

国外的 VPS 有时候还有1个以上的免费 IP 地址,我当时花2、3美元买的,虽然极不稳定但到现在还每年续费,是因为我有3个 IP 地址,这便宜不占实在说不过去。

其实这一步已经可以开始享用 SSH 默认的 SOCKS 代理服务器,有几种途径使用 SOCKS 做代理,如 ssh、PuTTY 或 Entunnel 等。

如果是 Mac OS X 用户,直接使用系统自带的 ssh 命令最简单,打开终端(Terminal),输入命令:ssh -t root@你的IP地址 -p 22 -g -v -f -C -D 1080,然后输入密码就可以建立 SOCKS 代理服务器,输入密码这个步骤其实可以省略,具体教程搜索「ssh-keygen」。

如果是 Windows 用户,建议从 http://www.chiark.greenend.org.uk/~sgtatham/putty/ 下载轻量级的 PuTTY,或只下载 Plink.exe 程序,打开运行(Run),找到 Plink.exe 程序,如:“C:Program FilesPuTTYplink.exe” root@你的IP地址 -pw 密码 -v -N -D 1080,第一次连接会有交互提示,通常选择 Y 就可以了

一般来讲浏览器或系统级的代理服务器设置,绝大多数都会兼容 SOCKS 代理服务器,找到 SOCKS 的选项,地址处输入 127.0.0.1 端口处输入 1080,通常就可以愉快访问互联网了。

不过你都看到这了,我会再推荐进阶的方法,可以去 https://sourceforge.net/projects/tinyproxy/ 下载一个轻量级的代理服务器软件。

可以通过 wget 或 cURL 工具在服务器上直接下载,或者通过 sftp 如 scp、pscp 或 SecureFX 等上传到自己的服务器上。

安装步骤呢,也是比较简单的,通常不三部曲就是五部曲,tar xvfz tinyproxy-1.6.3.tar.gz 把压缩文件解开,cd tinyproxy-1.6.3/ 进入目录,./configure 构造配置,make 编译,最后 make install 安装就可以了,在 root 身份下,执行 tinyproxy 应该就已经在后台运行了,可以通过 netstat -an | grep LISTEN 确认一下是否有 *.8888 或 0.0.0.0:8888 正在监听,如果是,那么你的 HTTPS 代理服务器架设好了。

进阶的 ssh 命令,就是加上 -L 参数,所谓的本地端口转发,即将本地电脑的 8888 端口,通过 SSH 安全隧道,转发到远程服务器的 8888 端口上:
Mac用户:ssh -t root@你的IP地址 -p 22 -g -v -f -C -L 8888:127.0.0.1:8888 -D 1080
Windows用户:plink root@你的IP地址 -pw 密码 -v -N -L 8888:127.0.0.1:8888 -D 1080

这个时候,你除了拥有一个属于自己的 SOCKS 代理服务器,同时还拥有一个属于自己的 HTTP 代理服务器,对付某些兼容性相对较差的软件,也可以轻而易举的解决了。使用方法和 SOCKS 一样简单,只是除了 IP 地址入依然是 127.0.0.1 外,端口则为 8888 了。

其实除了本机可以通过浏览器设置代理器之后自由可以访问互联网,相同局域网下的其他电脑或手机,也可以通过这个安全隧道,只要设置局域网内的 IP 地址和端口就可以。

继续进阶,使用 Google Chrome 的用户有效,可以去 Chrome Web Store 搜索「Proxy Switch」,安装一个代理服务器切换插件,设置 SOCKS、HTTPS 代理后,选择 auto switch 选项,访问 baidu 正常无需代理 ,如访问 google 异常,这个扩展插件就会在浏览器右上角的图标上显示数字,有几个资源加载失败了,可以轻松的加入规则。

回头继续探讨 PAC(Proxy auto-config)所谓的代理自动发现,FindProxyForURL 涉及编写脚本了对普通用户复杂,但是这个方法对电脑辅助手机穿墙会很方便,希望有影响力的人士(如:冯大辉、高春辉)能支持共同维护一份被墙清单,让大家一起受益真正的国际互联网,绝非中国局域网。

三大主流开源硬件对比:Arduino vs BeagleBone vs Raspberry Pi

从左到右: Arduino Uno, BeagleBone, Raspberry Pi

我们喜欢在Digital Dinner制作一些新奇玩意。这里总是时刻进行着各种项目。这些天以来,我们大部分的项目都包含了一种电子零件——微控制器。如果你还没被“创客”(Maker)灵魂附体,我们强烈建议你动起手来试一试,它会让你非常有成就感!如果本身在编程方面有一定基础,那么一些网站、平台和工具可以帮助你获得硬件开发的所需知识,逐步让你可以使用按钮、旋钮和从动系统,做出实际可用的产品。软件开发固然乐趣无穷,但如果能将你的创意变为实际产品就更赞了!

然而,目前有许多优秀的平台可供创造数字设备,这让我们有些举棋不定。举例来说,现在我们正在制作一个“水培花园”项目,需要一款控制器来驱动水泵、读取传感器数据。但是,现在有许多种选择都可以实现这些功能。而这对于初步接触开源硬件的开发者来说,可能会有些无所适从。所以我们选择其中三款最流行的开源电子原型平台,加以对比,希望可以便于大家选择,当然,这三款平台都非常值得推荐。

三款开源平台分别是Arduino、BeagleBone和Raspberry Pi。之所以选择他们,原因在于他们唾手可得,价格实惠,而且大小规格相似(大约2*3寸),更重要的是,他们可以广泛应用于电子产品开发工作中。在比较前,我们先进行简单的介绍。

Arduino Uno在Maker的圈子里很常见。Arduino有许多不同尺寸和特性,但是在此我们选择Arduino Uno作为其中的代表。它是一个非常易于开发的平台,有很多开发者也都选择它作为开发环境,而且它的设计让它易于和其他设备相连。

与Arduino相比,Raspberry Pi是一个比较新的成员。它实际上是一个嵌入式电脑。它也是一个并不昂贵的全功能桌面电脑。它是一个准系统,而作为$35的电脑,它在很多项目中都是一个很好的平台。

BeagleBone可能是三个平台中最鲜为人知的一种,但它有很好的兼容性,许多项目都可使用。它是一款强大的Linux电脑,而且可以安装到Altoid’s的容器中。

Arduino背面

Raspberry Pi背面

BeagleBone背面

这三款平台各有所长,对于爱好者来说都非常有价值。下表是三款平台的规格与特色。

首先,Arduino和Raspberry Pi非常便宜,不到40美元,BeagleBone的价值几乎是Arduino Uno的三倍,而Arduino的每秒周转速率大约比另外两款慢40倍,RAM则是其他两款的1/128000。从中你可以发现他们的差异逐渐产生了,Arduino和Raspberry Pi价格较低,而Rasphberry Pi与BeagleBone功能较强。从这点来看的话Rasphberry Pi似乎是最好的选择,但事情没有这么简单。首先它的价格并不如第一眼看到的那么美好,因为运行Raspberry Pi,你需要提供SD卡,而这额外增加了5%到10%的成本。

此外,抛开每秒运转速率的相似性能不谈,在我们的测试中,BeagleBone的运转速度几乎是Raspberry Pi的两倍。也许有悖常理,对于初学者来说,Arduino也许性能更好。这是因为Raspberry Pi和BeagleBone都是基于Linux系统。这个系统让它们可以在小型电脑上,运行多个程序,并支持使用多语言编程。Arduino的设计非常简单,它一次只能运行一个程序,而且只支持低阶的C++语言编程。

BeagleBone和Raspberry Pi还有一个有意思的特性,就是他们可以在Flash卡上运行(Raspberry Pi使用SD卡,BeagleBone使用microSD)。这就意味着,你可以通过换存储卡来实现系统移植。在不同的储存卡上,你可以储存不同的设定值,只要更换储存卡,你就可以继续之前正在开发的项目。因为这两个板非常的复杂,这意味着你可以通过换卡而轻松的换操作系统。

那么,你如何从中选出一款适合你的平台呢?

对于初学者来说,我们推荐Arduino。它拥有庞大的社区用户、大量的示例项目和教程,并且可以轻松地与其他外部设备连接。对于初学者来说,学习使用Arduino的方法有许多。

这块板的设计初衷,就是方便与不同的传感器进行交互,而且不需要设计其他电路,所以你不需要太多电路相关的支持,就能轻松上手。如果还没有尝试过这玩意,不妨试一试(价格并不贵),相信可以得到有趣的经验。

Arduino Uno是一款令人赞赏的工具,除了拥有开源的微控制器,软件开发环境也是免费的。

Raspberry Pi只有信用卡大小,可以直接插入到电视中。许多传统电脑上的功能,例如文字处理、电子表格和游戏,都可以在Raspberry Pi中运行。

价格低廉,硬件扩展性强,BeagleBone是为喜爱嵌入式Linux系统的玩家量身打造的产品。BeagleBone还可以当做BeagleBoard或Beagleboard-xM的外接USB或网络扩展模块。

如果开发的产品需要保证尺寸较小,我们推荐Arduino。这三款平台的尺寸相似,不过Raspberry Pi的SD储存卡会让它看起来更大。Arduino的款式躲让,但让Arduino区别于其他平台的特性在于,它拥有特别的微处理器,以及一些软件。它使用Atmel公司的一款微处理器嵌入式系统,体积小,价格实惠。对于那些需要尺寸非常小巧的项目来说,你可以花费1到2美元购买Atmel的这些芯片,并使用Arduino Bootloader(一个赋予Arduino基本功能的程序),安装后,你就又拥有了一个Arduino。

各种尺寸的Arduino

BeagleBone旁边是它的大哥BeagleBoard

BeagleBoard有一个更大,性能更强的版本——BeagleBoard。如果你需要更强的扩展性,那么BeagleBoard是一个不错的选择。

Arduino Uno、BeagleBone 和 Raspberry Pi,后两者都有网络接口

如果你的项目需要连接网络,我们比较推荐BeagleBone或Raspberry Pi。这两款都是真正的Linux电脑。他们都内建以太网接口和USB,便于用来连接网络。通过USB接口,你可以连接一个无线模块,那样就可以无需网线就能接入网络。另外,Linux系统拥有很多内置组件,提供高级的网络特性。

只需将USB WiFi设备连接到BeagleBone或Raspberry Pi上,Linux系统即可支持这些外接设备

Arduino支持外设,叫做“shields”,它虽然拥有连接网络的能力,但其网络功能十分有限。如果花时间去购买扩展,其实与直接购买功能比较完善的高阶电路板一样。

如果你的项目需要接入外部感应设备,我们推荐Arduino和BeagleBone。Arduino相对于其他设备,更容易连接外部感应器。不同版本的Arduino使用的电压不同(3.3V 或者 5V),这样就可以轻易的连接到不同的外部设备。而BeagleBone只能连接3.3V的外部设备,并在某些情况下,还需要加入电阻或者其他外部电路才能连接外部设备。Arduino和BeagleBone都有模拟数字信号接口,这让你轻松的连接输出不同电压的设备。BeagleBone拥有更高的模拟数字信号的分辨率,这对于某些项目来说是最好的选择。

就如上面所说的,你必须注意你将要连接的设备,包括小型的感应器,是否拥有叫做I2C或者SPI的数字接口。这三款平台都支持这些外接设备,所以通信方面不成问题。

对于需要电池供电的项目,我们推荐Arduino。Arduino功耗是最低地。如果按照每瓦的性能来比较,BeagleBone的能耗是最高的。但是Arduino拥有更广泛的空间,因为他可以和很多不同的输入电压的设备一起工作。这样就要求Arduino需要使用不同型号的电池,并且就算电池没电也能继续运转。

如果需要支持用户界面,我推荐使用Raspberry Pi。Raspberry Pi独树一帜,因为它拥有一个HDMI输出。这意味着,你可以接入键鼠和直接接入到你的电视。在这点看来,你拥有了一台功能全备的电脑,并且拥有用户操作界面。这样使得Raspberry Pi可以用于在需要与用户交互的项目中,以低成本构建web浏览设备。事实上,只是出于娱乐性质,我们把Arduino开发工具安装在Raspberry Pi上,并在Raspberry Pi写以一个简单程序并下载到Aruduino上。它并非是一台高性能的电脑,但是它确实是一台电脑。

总结

Arduino是一个扩展性很好的平台,便于与各种设备交互。对于初学者来说,在进行一些小型项目时,它是绝佳的选择。Raspberry Pi适合用于需要用户界面和需要网络支持的项目,其性价比较高。

BeagleBone拥有Arduino良好的可扩展性,兼具Raspberry Pi快速处理器和Linux灵活的开发环境。所以,如果你想做与水培花园类似的项目,我们推荐BeagleBone。因为它的输入输功能完善,并便于接入网络,所以我们可以通过Web端监测它回传的数据。

所有这3种设备是我们数字化项目的基石。当然,还有其他平台可用,例如,我们使用Sun SPOTs监测我们的番茄花园,这三种设备已基本能满足我们所需,除非你需要更高级的功能。

ScratchJr:教触摸屏一代写代码

在美国,一开始出现的是X一代,然后是千禧一代,现在如果你的孩子不到十岁,那么不必说,我们都知道他们该叫什么啦,那就是——触摸屏一代。

这些孩子,从开始学习说话和走路开始,周围接触的科技文化就是智能手机和平板电脑,而那些配置物理键盘的计算机,对他们来说是陈旧过时的,是属于他们父辈的。触摸屏一代体验计算机是简单直接的,他们与计算机交互完全通过屏幕,而不是通过中间介质,比如键盘,鼠标,或是触摸板。

但是,触摸屏却产生了另外一种不一样的距离。触摸屏上无缝的交互,需要依赖于App的无缝包装,并为用户带来独一无二的体验。孩子们可以感受到直接的交互,但是他们却失去了另外一些东西,比如屏幕上的软件到底是如何运作,如何建立,还有它们是如何开发出来的。

当笔者自己还是孩子的时候,我必须要知道运用一些DOS命令来启动一个程序,浏览一个文件树,或是插入一张软盘,所有这些都曾提醒我,这台电脑不是一个神奇的入口,而是一台实实在在的机器。另一方面,与触摸屏互动的感觉又是如此自然,以至于有时都会忘记自己使用的设备和使用的App是人为开发的,而正是这种自然而然的感觉,会让孩子们觉得触摸屏是一个“消费者”,而不是一个“创造者”,因此如果下一代想要接触科技的时候,触摸屏并不是一个好的起点。

但是,一款全新的App可能会改变上述局面,让触摸屏一代的手指创造出更多生命力。这款App应用就是ScratchJr ,它也是Scratch编程语言的iPad的版本。这个工具是由麻省理工大学开发的,专门帮助孩子们进行编程。这款应用没有使用文本,而是采用了联锁的色彩模块,去模拟逻辑结构和传统的编程语言。Scratch的脚本语言允许用户直接与“sprties(小妖精)”进行交互,sprites是一个卡通形象的编程助手。 这个助手会向孩子们介绍如何编程,完全不需要解释复杂的编程语法,也无需检查bug,Scratch希望孩子们可以积极参与,享受编程的过程。

ScratchJr的不同之处在于,它更加生动,更加吸引那些只知道平板电脑和智能手机的小孩子。“我们想要让孩子们不仅仅把平板电脑用作一个消费和浏览的工具,”Mitchel Resnick教授说道,他是麻省理工大学媒体实验室Lifelong Kindergarten的主管,他们和塔夫斯大学的研究人员,以及蒙特利尔的Playful Invention公司一起开发了这款应用。“这款工具可以让孩子们利用平板电脑发出自己的声音,而不是单纯的去玩儿。”

核心概念
ScratchJr不像Scratch那么复杂,后者既可以在独立App上使用,也可以在PC上当作一款独立的网页应用。但是正是由于不那么复杂,反而成了ScratchJr的一个卖点。Scratch的定位是在八岁以上的孩子,而ScratchJr的定位则是在五到七岁年龄阶段的孩子。ScratchJr上都是图示,这让六七岁的孩子们更加容易理解。该应用很少会使用iPad键盘,孩子们在iPad上开发的各种有趣的程序都是通过拖拽的方式,利用触摸屏接口来完成的。

Resnick教授强调,虽然SratchJr非常精简,但是它还是保留了最基本的计算机概念,比如事件、序列、以及迭代,等等。这些核心概念是Scratch编程的关键,“这就像是我们在学习传统文学,学会阅读很重要,但是你也要学会如何去写,” Resnick说道。

不仅仅是一个接受端
我们前面几代人的阅读和写作能力普遍比较低,父母担心孩子们学习写代码主要是出于经济角度,我们知道拥有熟练编程技能的程序员可以选择很多高薪工作,加上像扎克伯格这样的传奇故事,让编程变得更加吸引人。

然而在现实中,有些家长并没有把ScratchJr看作是一款激发孩子编程兴趣的应用,他们更希望孩子能够学会编程,说不定这样能为以后上大学有帮助,这种拔苗助长的想法的确让人无奈。让孩子们学会编程并不是为了让他们在未来与机器人对抗,虽然很可能未来的机器人会导致很多人失业。

如今的交互数字技术是孩子们必须要掌握的技能之一,对于触摸屏一代来说,越早学习这些技术,优势也就越大。他们需要知道,自己有能力把机器人拆开,也有能力把机器人组装起来;如果自己不喜欢某款App应用,那么干脆自己去编一个新的;他们甚至可以自己学习Java。最重要的是,孩子们可以学习到编程的真正意义,这样当谈到技术的时候,他们就不仅仅是一个接受端了。

亚马逊Prime Music试玩体验:音乐库较为局限

亚马逊日前面向Prime服务订阅用户推出了全新的串流音乐服务Prime Music,这显然为年费99美元的Prime服务带来了更多的价值。那Prime Music在上线之后的表现如何?科技网站The Verge日前就对其进行了体验:

整合

亚马逊将旗下所有与音乐相关的产品(比如亚马逊MP3商店和云播放器等)进行了整合,并将它们统一更名为亚马逊音乐(Amazon Music)。这些产品虽然除了名字之外并没有得到任何改动,但的确让人觉得更加简洁了。你依然可以在商店当中购买音乐,并将它们上传到自己的云端,不过云音乐库现在只是简单地被称作“你的音乐”。而购买CD后所赠送的数字版本也依然存在。现在,这些产品没有了多余、让人混淆的品牌,所提供的体验也完全统一了。

进入Prime Music

如果亚马逊想让Prime Music成功,无缝的体验是他们必须提供的。这款新的串流音乐服务并不是独立的应用——它被嵌入了亚马逊的现有软件当中。在安装升级之后,你会在Kindle Fire HDX/HD的音乐部分看到它的身影,而亚马逊音乐也会取代分别存在于Android和iOS平台的亚马逊MP3和云播放器应用。在网页端,用户可以直接从亚马逊的主页上使用该服务。

如果你曾经使用过Prime Instant Video,那你对于Prime Music应该也不会感到陌生。那些可以进行免费串流的歌曲和专辑都会带着用户所熟悉的“Prime”标记。亚马逊称Prime Music一开始会拥有超过100万首歌曲,并计划进一步增加歌曲库的规模。但和Spotify庞大的音乐库相对比,Prime Music依然显得非常迷你。不过好的一面是,Prime Music支持亚马逊的X-ray功能,它会显示出歌曲对应的歌词,并进行自动滚动。

笔者曾询问过亚马逊数字音乐副总裁Steve Boom,Prime Music当中的音乐是否会轮流交替,就像是Netflix和Prime Instant Video那样。他回答道,音乐授权的运作方式略有不同。一般情况下,你是不会看到音乐专辑突然消失的,但某些歌曲也有可能会无法购买——不过这种情况非常罕见。Spotify、Beats Music、甚至是iTunes都面临着这样的问题。

Prime Music并没有切歌限制或广告,用户可以根据自己的需求来欣赏音乐。不过这也意味着该服务没有免费的“电台”服务,如果你不是Prime用户,那就无法使用。另外,Prime Music为用户的移动设备提供了离线播放功能。

在Prime Music发布之前,曾有报道称该服务不会提供时下热门的歌曲,Boom也证实了这一点。他的理由是,如今的流行歌曲都很短命,而他们的音乐库不会让用户产生任何抱怨。不过Prime Music也并不是只有老歌,当中甚至收录了2013年的专辑。据报道,新专辑一般会在6个月之后在Prime Music当中出现,但这种说法是否准确就不得而知了。

作为亚马逊的产品之一,你当然会在其中看到根据你听歌习惯所提供的个性化推荐。这些推荐并不仅限于Prime Music当中的音乐,还有那些只能通过购买所获取的歌曲。无论如何,亚马逊与合作的音乐厂牌还是想要赚钱的。如果你不能免费串流某张专辑,或许就会不够理智地花费5.99美元来购买它。

歌单

为了歌单功能,亚马逊专门招募了一支由音乐专家所组成的团队。他们会根据歌曲类型、特定的心情或者是风格来对会歌曲进行汇总,并创建了数以百计的歌单。不过歌单中的歌曲和歌手不会自动被加入到用户常规的音乐库当中,而是只会在需要时出现,这对于有整理癖的人来说应该是个不错的消息。笔者在测试当中发现,为音乐库添加音乐非常简单,亚马逊音乐全新、简化的处理方式也的确非常合理。

没有环球音乐

亚马逊未能就Prime Music和环球音乐达成合作协议,有消息称这是因为双方无法在授权费用上达成一致,这也算是预料之中。不过遗憾的是,环球音乐恰好是世界上最大的音乐公司,旗下歌手包括Jay-Z、Kanye West、Katy Perry、Lady Gaga和Taylor Swift等众多大牌,而这些不过是几百位空缺歌手当中的一小部分而已。

几乎所有的音乐类型都受到了这个问题的影响,这对于亚马逊的流媒体音乐库来说是个致命的缺陷,且必须被修复。如果无法听到目前流行歌坛当中十几位顶级歌手的作品,相信会有大量的用户不买账。

为Prime用户准备的免费音乐服务

如果不看环球音乐的空缺所带来的问题,Prime Music的确具备了出色的品质。但它是否足以成为你唯一的音乐解决方案?笔者并不确定,至少它没有达到我自己的标准。但对于2000万的Prime用户来说,他们将会获得一项免费的音乐服务,即便当中“只有”100万首歌。这个数量虽然庞大,但确是Prime Music主要的缺陷之一(Spotify声称自己拥有3000万首歌曲)。这也表明了串流音乐领域的竞争如今已经变得多么激烈。

但通过亚马逊所具备的影响力,我们很容易就会看到Prime Music迅速打败那些小规模的竞争对手,比如Rdio和Beats Music。亚马逊的目标是吸引到新的Prime用户,Boom也认为,这场竞赛当中拥有留给多位竞争者的位置。(Eskimo)

跨平台手机应用开发

【背景】

在当前国内的手机市场,可谓平台众多百花齐放,各种主流Smart Phone仅占10%左右的市场份额,而兼容J2ME的Feature Phone却占据了最大的市场份额。

开发难度相对容易的iPhone和Android智能手机平台其用户市场份额太少,开发难度相对复杂并且开发人才匮乏的Symbian S60和Windows Mobile智能手机平台也仅占到7.5%的市场份额,开发难度适中但适配难度最大的J2ME却占据了最多用户,需要针对数百甚至上千种机型进行适配。

这还不包括一些目前市场份额不大,却有着特定用户群或有潜能成为三分天下的智能手机平台,如:Windows Phone 7、BlackBerry、MeeGo和WebOS等。

开发难度大、成本高、周期长是所有应用厂商面临的主要问题,不仅国内市场如此,国际市场亦如此,美国市场即便排除各式各样的定制机,按iPhone、Android、BlackBerry三分天下的局面来开发应用,应用厂商也不得不同时组织三批人码来解决这种跨平台问题。

【平台】

我们大家都在讨论跨平台,都不得不关注跨平台,为何有那么多跨平台的问题?首先我们要看怎么定义平台(Platform)这个词,平台是生态系统(Ecosystem)中的基础建筑,在这是家企业都想做平台的时代,每个环节都可能成为一个平台。

我个人将平台大概分为三大类别:第一种为硬件设备,如手机、平板电脑、电子书、上网本、掌上电脑、导航系统、播放器、游戏机、机顶盒等。第二种为操作系统,如Android、Bada、BlackBerry、iOS、MeeGo、Symbian、WebOS、Windows Mobile和Windows Phone 7等。第三种为浏览器,如Microsoft Internet Explorer、Mozilla Firefox、Google Chrome、Apple Safari以及Opera等。

在这里我列举一下上个季度的手机操作系统的市场份额,其中Symbian 41.2%、BlackBerry 18.2%、Android 17.2%、iOS 14.2%、Windows Mobile 5%、Linux及其它占4.2%,也就是说在一个平台类型中我们就要面临至少三到四手准备。

国外调查机构就开发者最感兴平台给出了大家期望的答案,其中iPhone 91%、iPad 84%、Android Phone 82%、Android Tablet 62%、BlackBerry 34%、Windows Phone7 28%、WebOS 16%,其它平台如Symbian、MeeGo排在倒数位置。

国内主流互联网应用提供商,基本上把iOS和Android作为首选,高端人群首选iOS而草根阶层信奉Android,其实老大和老二的位置无关紧要,只是和这些公司的企业文化或服务群体有关,然而Symbian却只能排到老三甚至被冷落的位置。

另一份数据则解释了平台类型之间的竞争,其实这也是我个人近5年来一直在研究的课题,那就是App和Web之间的优劣问题。针对社交、媒体、广告、商务、分析、位置、网络、数据和用户界面的开发需求调查当中,将近80%的开发者偏好移动App胜过移动Web,其中原生用户界面 91%、本地数据库访问 81%、推送通知 74%、网络连接 72%、地理位置 69%,其它诸如摄像头调用、支付接口等也在列,但优先次序不高。

【解决方案】

面对各式各样的跨平台应用开发问题,我们在日常开发中摸索了几种解决方案,主要包括原生应用(Native Apps)、网页应用(Web Apps)和微件(Widgets)等思路。

Appcelerator和RhoMobile的开源项目以原生应用为主,支持iOS和Android等平台,前者的Titanium封装了超过1000个APIs,并且还提供了移动和桌面解决方案,后者的Rhodes也支持访问GPS、PIM、蓝牙设备等资源,并且支持更多的手机平台,他们主要采用HTML、CSS、JavaScript、Ruby、Python和PHP等脚本语言相结合的方式开发应用。

MoSync和PhoneGap的开源项目以网页应用为主,由于Web的开放性,其支持的手机平台多达6~8种,未来有可能支持更多的手机平台,主要使用HTML5、CSS3和JavaScript开发应用,同时也封装了常见硬件资源和传感器等访问接口。

JIL(Joint Innovation Lab)和WAC(Wholesale Applications Community)这两个特殊的移动互联网机构原先有各自的微件标准,现两家机构已经合并。国内的移动互联网企业开拓天际、斯凯和数字天堂等也有各自研发的跨平台手机中间件技术,不过目前主要都侧重在低端手机市场为主。

【展望未来】

平台融合、三网融合等这些跨界融合是未来的大方向,App速度快、省带宽、支持离线、访问硬件和Web跨平台、跨终端、部署便捷和简单易用等特点。

随着使用WebKit浏览器内核的智能手机的普及,以及HTML5、CSS3等技术的成熟,未来的Web将有更强的本地运算能力,如本地数据库存诸、蓝牙、摄像头的调用等。

从XAML的进化看Microsoft Windows 8在云端的应用服务,从Mozilla Firefox XUL的演化,我们都会发现App将和Web将分不清界限。

即将上市Google Chrome OS上网本操作系统,在浏览器里将支持通过USB访问数码相机和打印服务等……

【2011年1月22日凌晨于北京东城,本文为iTech Club第十届互联网技术高峰论坛主题演讲内容整理,附件PPT讲稿1.6M感兴趣可以下载】

大家一起来OpenID

  随着 Yahoo!、Microsoft 和 Google 对 OpenID 的支持,此前对于 Web 2.0/3.0 比较孤立的去中心化、分布式账号验证思想将指日可待。虽然 OpenID 的普及还需要一段时间,但随着 OpenID 的发展,基于 Web 2.0/3.0 的应用是该考虑对 OpenID 作支持的时候了,我甚至看好诸如腾迅这样的国内互联网企业如果也能成为 OpenID 提供商时,让 QQ 号兼容 OpenID,整个格局将会产生多大的巨变?

  BTW:研究 OpenID.net 官方网站上的规范将是近期的重点,此外我还会测试一下用 Perl 写的 Net::OpenID::Server 和 Net::OpenID::Consumer 模组,至于 PHP 和 Python 的库,会用则可。

mysql杂谈

  两年前规划 news database 时,只做了千万级的设计,把 news 索引表和 newscontent 内容表分开,这样 news 索引表的效率很高,而 newscontent 除了偶尔读写,其他时候仅为存诸、备份,字段也很简单,一直都很高效。

  关于 news database,曾经有一次让啊土(我们 Team 的一名程序员)误操作,把几百万条数据记录删除了,他的恢复脚本里面首面有 drop table 行为,当时被我严重教育了一番,后来把权限控制的比较严格一些,从此没再发生这种严重错误。

  然而两年过去了,千万条数据记录也达到了,发生 mysql index 错误,需要使用 myisamchk 进行修复,发现分区 541G 已经使用了 458G,使用 myisamchk -r newscontent 修复不够空间,使用 -q 参数又不放心,只好接个 1.5TB 的 SATA 外接硬盘上去,把文件拷贝出来等修复完再传回去。

  是时候对 news 数据库做上亿级规划的时候了,得把 newscontent 表再重新设计,规划一下,拆分成多张表,相对固定比如 [0-9]、[09-99]、[A-Z] 或按 [YYYYMM] 分表存诸。

  Update:9个小时后,我放弃了把 newscontent.MYD 数据库文件通过网络传到 1.5TB USB/SATA 硬盘上再修复的做法,因为只完成了1/2不到,即便全部传完,再过9个小时,我才能开始修复,而修复时间,又将过去多少时间?因此,我又改用了 myisamchk -r -q newscontent 的方法,同时使用 renice 把优先级设到最大,让他去吧!

老酒新装是创新?

  在 Web 2.0 时代,普通得不能再普通的 Web
应用:论坛(Forum)和留言板(Guestbook)这两种发展了很多年的技术,换个模版、改个名字变成了博客(Blog)而一举成名。

  老外为简单的异步 JavaScript 和 XML 应用起个名字叫 Ajax
唤起了无刷新应用热,并且还出了数十上百本书。最近又有老外把“推拉”(Push/Pull)技术换个名叫
Comet 技术,估计不久又将会有一堆无聊的书籍要出现了。

  动动手用所谓的 Server Push 技术原理写了个演示(http://cgi-bin.cn/push/comet.html),其实这种技术早在十年前就已经很普及,在包括网易、碧海云沙和
iChat 聊天室都使用这种技术,当时他们管这叫 Web Streaming
技术。

  这个演示目前在 Firefox 和 Opera 浏览器下还有点小 Bug
就是状态栏一直是传输状态,并且鼠标指针一直是等待状态,需要想办法解决一下。

通货膨胀和股市崩溃

  现在的一百元,在五年后一百元钱价值几许?“80!”、“90!”。一百元钱,五年后并不会值一百元,钱可能更不值钱。换成经济学家的语言来说,那就是发生了通货膨胀。一百元人民币在五年以后尽管面值还是一百元,但通货膨胀使得它的实际购买力下降为八十元或者更低。

  国际上通常认为,CPI
指数若达到5%,一般可视为出现通货膨胀(CPI
指数也是人们通常说的通货膨胀指数)。所谓通货膨胀,就是“货币总量”相对“物品总量”不断增大的现象,粗略地说,就是货币“过多”的现象。从世界各国的经验来看,通货膨胀一般产生两大重要后果:一是货币购买力下降,二是财富重新分配。通货膨胀是经济增长最为危险的恶魔,这一公认的经济增长的“恶魔”,既可能使中国经济增长遭受重创,也可能促成中国经济增长方式的深层次改变。

  央行又提高准备金率了,这是今年的第七次,全程准备金率就此也接近了10年来的上限!而可以预见的是,这样的调控措施还将继续,直到经济过热、流动性过剩被彻底控制。

  当然,有人至今还不承认经济过热,因为中国经济还没有衰退。然而,在中央政府宏观调控两年多之后中国经济的各项“发展指标”依然纹丝不动的事实说明了什么问题呢?也就是说,在你开车的时候不断刹车但车速依然不减成为事实你会想到什么呢?答案只有一个:刹车失灵了,危险就在眼前。

  内容摘录自新华网上的《假如通货膨胀来了
我们的生活会受到什么影响
》及和讯博客的《警醒吧 “罗杰斯”将把崩溃带给中国!》的文章。