概括一下:…
刚发表了一篇算是批评Gmail长时间的Outage,然后不久之后,我就犯下一个错误…
在同济网服务器上执行了一个错误的arp -s指令,导致机器就找不到网关了,服务器连接自然也就断了。
打电话给机房,发现IDC已经换上了极度炫的400免费电话,而且还有机器人应答,但是转人工的时候逼我听了好长时间的音乐,也不知道是接电话的兄弟上厕所还是CS还是睡着了(才晚上10点),不过最终还是接了。
IDC值班的兄弟告诉我一个很寒的事实:虽然是24小时服务,但是晚上机房里就没有技术人员了,只有按Reset的人。要想干点技术工作,还是等天亮吧。

gmail

哪里有绝对的可靠?Gmail这次也挂了,而且一挂就是几个小时。
我承认我有点过度依赖Google的服务了,最近还大爱Google Docs,热衷于把很多频繁更新的表格整理到Google Docs上去。
这次Gmail的Outage让我发现我居然有这么依赖Gmail,这几个小时积压的电子邮件居然到了让我回归钢笔A4纸时代…

Update:

Google在太平洋时间3点49分宣布正式解决了此问题,并公布了问题发生的原因:Google对一个欧洲的数据中心进行例行维修活动,而出口被转移到了另一个数据中心。结果一些新的代码造成了意想不到的问题,这些代码根据IP地址来判断用户地理位置,从而把他们引向较近的数据中心。结果,一个欧洲数据中心超载停机,并连锁反应引发了另一个数据中心出现问题。大约1个小时后,一切才得到控制。
Google表示这种事故非常罕见,而且他们将严加防范,以防止同类事故再次发生。

这样的解释可以理解,可是正常运行中的Gmail服务数据中心有这么高度平衡吗?

虽然坏过几次磁盘之后我对硬盘存储总是不放心,但是作为较快速方便的本地存储,我机器上连接的硬盘总是越来越多。实践再次证明,再大的硬盘也总要被填满的…

wd-my-book

这个是西部数据(Western Digital)的My Book系列外置硬盘,很漂亮吧~
不过去了上海我应该不会去买这种东西,还是比较贵的说。现在想采用的方法是,把台式机现在两个320GB硬盘找机会带回家装在家里机器上,然后买一块1TB或者1.5TB的磁盘。这样还省电不是。

接着,赖昌星带我到他的书房,这里的书桌上摆着一台大屏幕的苹果电脑。“这里就是我一天中呆得最长时间的地方。”赖昌星说,他平时没有什么事件好干,除了看电视之外,就是上网“斗地主”。他说,如果有朋友来的时间,他喜欢与他们一起玩扑克游戏“斗地主”。不过,朋友不会天天来,所以,赖昌星迷上了网上的“斗地主”游戏。

“我都是上QQ玩‘斗地主’游戏,对手是在中国大陆的网友。”赖昌星说他经常一玩就是几个小时,最多每日玩十几个小时,“所以弄到睡眠不足。”记者问到赖昌星的QQ名字时,他说本来想实名注册,可是QQ的系统不允许他用“赖昌星”的名字注册,只好随便取一个名字了。

“除了上网‘斗地主’之外,我还会上《大都会》等网站看新闻。”赖昌星说,他强调自己来加10年,生活平淡,“在这里,我从来没有上过歌舞厅、卡拉OK和夜总会。”赖昌星说,喜欢自己在家里做些家乡菜。

今天看到这样一则新闻。关于赖昌星在加拿大的生活近况。注意粗体一段话:记者问到赖昌星的QQ名字时,他说本来想实名注册,可是QQ的系统不允许他用“赖昌星”的名字注册,只好随便取一个名字了。
处于垄断地位的软件企业喜欢搞一些所谓规则,比如这里腾讯QQ的关键字过滤机制。凭啥逃犯的名字就是非法用户名?

什么是 Google 数据 API?

Google 数据 API 提供用于在网络上读写数据的简单标准协议。
这些 API 可以使用基于 XML 的两种标准联合格式:Atom 或 RSS。它们还具有一个供稿发布系统,其中包括 Atom 发布协议和用于处理查询的一些扩展功能(使用 Atom 的标准扩展模型)。
许多 Google 服务都支持 Google 数据 API 协议。以下数据 API 可以使您的客户端应用程序与 Google 服务进行互动:

动机

这几天我在做自己的一个网站制作及托管服务的网站,牵涉到一些客户信息的管理什么的,最好是能做成OA之类的形式,就像Google Docs里的SpreadSheet一样,在线编辑,在线显示。不过我实在没时间去自己做这种东西,于是我在想是不是能直接通过API把Google Docs里的SpreadSheet直接嵌入我自己写的网页里去。不见得需要编辑功能,估计Google也不会提供,不然Google Docs不就变成带有后门的网站留言文本编辑器了么…(所谓带有后门,是指与一般留言文本编辑器不同,不是把数据存储在本地网站,而是存储在另一个服务器,在这里就是Google Docs服务器上)

php_google_docs1

站在巨人的肩上,感谢Lim Jiunn Haur写的WordPress插件Inline Google Docs早就提供了这个功能,我把这个插件拆开,去掉多余的,为我所用了。

php_google_docs2

使用方法

用法很简单,后面的相关下载中提供了一个RAR包,当中包含两个文件夹,styles里包含了一个CSS,用于修饰SpreadSheet表格显示的效果,这里的风格基本上是白灰风格,如上图所示。鉴于保密需求我做了模糊处理,反正就那么个意思。你需要在你的网站中加入这个CSS或者将这个集成到你的CSS中,或者干脆不要,自己写。
includes文件夹是库,其中Zend是Google Data API库,由Google发布。gdocs是本文所述的库。加载Google Data API库的代码在gdocs下gdocs.php中,你可能需要做一点路径修改之类。至少在你的全局include库的地方加入Zend的位置,并include gdocs.php这个文件。

[code=’php’]
/* Add Zend library to path */
$path = dirname (__FILE__) . “/includes”;
set_include_path (get_include_path () . PATH_SEPARATOR . $path);
[/code]

另有一个全局配置文件config.php,我并没有给出,你自己要补上。示例如下:

[code=’php’]
/* Site Configuration */
define(‘SITE_URL’, ‘http://www.yourdomain.com/’);

/* Google Docs Settings */
define(‘GOOGLE_DOMAIN’, ‘yourdomain.com’);
define(‘GOOGLE_USERNAME’, ‘username@yourdomain.com’);
define(‘GOOGLE_PASSWORD’, ‘YourGooglePassword’);
define(‘PROXY_HOST’, ”);
define(‘PROXY_PORT’, ”);
define(‘PROXY_USERNAME’, ”);
define(‘PROXY_PASSWORD’, ”);
[/code]

调用显示Google Docs中包含的文档时,PHP代码如下:
[code=’php’]
gdocs_list();
[/code]
具体的显示风格请自行修改includes的gdocs下,gdisplay.php文件。

调用显示某一个具体的SpreadSheet的时候,$atts[‘type’]置’spreadsheet’,st_id为SpreadSheet的ID,例如’pNrLCrMF9srEYeIRCLO5kEF’,wt_id为工作表ID,例如’od6’,PHP代码如下:
[code=’php’]
$atts[‘type’] = $_GET[‘type’];
$atts[‘st_id’] = $_GET[‘st_id’];
$atts[‘wt_id’] = $_GET[‘wt_id’];
$atts[‘style’] = ‘googledocs’;
$atts[‘headings’] = NULL;

gdocs_display($atts);
[/code]

注意事项

  • 按照原作者Lim Jiunn Haur代码中的声明,本作品源代码依旧遵循GNU Public License
  • 修改之后的代码示例只包含了必要的我能用到的功能,就是对Google Docs中Document和SpreadSheet的列表,以及SpreadSheet的显示功能,其他功能并未写出实例,但是包含的Google Data API是完整的,应该可以写出进一步功能的代码,这里留给读者去自行研究吧。

相关下载

参考资料

前几日大病一场,坐到机器旁边就感觉特别累。
不能耽误时间,想起笔记本上的系统已经2个月没重装了,于是乎重装吧~
由于想到上海后试一下Windows 7,之所以不在家里装Windows 7的原因很简单:家里没有DVD刻录机…所以想重新分一下磁盘分区,为了Windows 7做下准备。
分区的时候花了眼,第一次的时候把XP装到D盘去了,而且格式化了一遍,装好之后我发现巨大无比的C盘的时候,说实话很镇定…

3100281575_9a4ccf0ff5

再次重装,把系统装到较小的磁盘上,看着巨大无比的D盘空空如也,我镇定地装好Tortoise SVN,提交一个svn checkout,然后睡觉去了。
醒来发现,东西都回来啦~
可惜的是,几天前刚下好的两个电影丢了,要重新下载了。另外就是正月十五拍了些礼花照片,还没来得及上传,无所谓啦,反正没几张好的。