Gawain's Jail 有一种生活叫监狱生活

mark RAID-10vs01

The Geek Stuff: RAID 10 vs RAID 01的内容,我MARK一下。遇到选Raid 10还是Raid 01的时候永远选Raid 10,因为Raid 10比01在容量和性能一致的情况下提供了更多的容错性。

放Amazon的成本

HS放了一个StackExchange的构架更新,其中说到把服务放在Amazon上的成本是自己购买后的4倍。

我厂也是Amazon的用户,关于我厂为什么用上了Amazon是有一个段子的。话说当年运维部门遇上用户大幅增加的时候一个礼拜都在加班,尽在机房过生活了,人手不够用到老大把自己怀孕的老婆都叫来插网线。后来另一个游戏在上线的时候发现运维部门的资源如此紧张,没办法就硬着头皮试了试Amazon,结果这一试让厂里后来的游戏都放到了Amazon上来了。这是2008年的事了,经过了这几年的成长,现在我厂也要回到自己的数据中心了,甚至已经在Amazon的产品也要回到数据中心了。

似乎从这两个案子来看,Amazon是适合创业公司在初期资源不足,无暇顾及底层支持的一种选择,一旦业务的增长到了一个阶段,可以腾出手来做优化和成本缩减的时候,离开Amazon就是一个合理的选择了。

关于我厂的故事,还是猫说的多

National day

推翻帝制的先驱们永垂不朽,为中华民族民主革命奋斗毕生的先烈们永垂不朽。

Computer, Apple and Jobs

从2006年我自己购买的第一个Apple产品iBook到现在有5年多的时间了,Apple给了我很多乐趣。

关于我对Apple的最早印象可以追溯到中学时期,当时我对电脑产生了很大的热情,1997年左右学校来了2台电脑,应该是486/586吧,主要用来打字用,至今还记得当年趴在微机室外的窗户看老师玩纸牌和打字(CCED)的情景。后来学校来了14台电脑,有了微机教室和微机课程。成立了兴趣小组,我是成员之一,但是半年左右我又退出了这个小组,理由竟然是我想学习Windows 95,而当时有Windows 95的电脑只有教室机一台,在这个事情上我和当时的微机老师闹翻了。这一时期我所接触到的都是PC,DOS,WPS和LOGO,说来惭愧的是Q-Basic没有学懂,我错过了一次学习编程技术的机会,现在想来为学习Windows而和微机老师闹翻是一件蠢事。关于苹果电脑,老师提到了一次,只是淡淡的说那是过时的产品,已经没有人去学习了。到了高中时期我在电脑的使用技术发展上只有两个方向————上网和游戏,别无其他。

2002年我来北京,到了中关村,看到了大量的电脑,也看到了那个大箱子里面的东西,在我哥的帮助下,和他一起DIY了一台PC。有一次逛海龙电脑城的时候,苹果电脑有一个展台放着一个iMac广告吸引了我。当时的感觉就是这个玩意比我们DIY的那个Cool多了。随后就开始注意当时北京仅有的几个Apple retailer的店,每过一段时间就去这些店里把玩把玩iBook和Powerbook,看着晶莹剔透的PowerMac和iMac,觉得这是一种享受。这个时候我对Apple及其产品的认识大多是停留在外观的Cool上面,至于对Mac OS还没有半点的感觉。当我2004年写第一份简历的时候,我在skill那栏里写了熟悉苹果电脑操作,实际上当时的技能就是知道怎么开程序,关窗口(CMD+W),关程序(CMD+Q)。面试的时候,面试官也是我之后的领导看到这一栏还问了我这个并表示他也对Apple感兴趣,至今我相信当时这个给我的面试加了分。

2006年我托从美国回来的老乡带了一台iBook,价值¥7800,这花掉了我当时的全部存款,而在我拿到iBook之后不到一个星期,Apple就宣布他们奔向了Intel平台,发布了Macbook,有点坑爹是吧?实际上我熟悉这个iBook大概花了至少半年的时间。起初的时候我觉的这个iBook与PC相比太慢了,软件啥的也不那么上手,没能适应Mac OS X,搞的我一度觉得是不是这钱花的有点冤?这个阶段我的桌子上摆着两个本子,一个是Dell 410,安装的系统不是FreeBSD就是Debian,折腾操作系统几乎是我当时的常态,到了07年秋天的时候就不怎么折腾桌面了,主要的工作就都由iBook完成了。到这个时候我才开始体会到了Mac OS X的好,开始发现当我回到Windows的时候就有些不适应了。细节,是一些细节的东西把我留在了Mac上。也是这个时期我开始去看Apple的Event了,关注起了WWDC,也是这一年iPhone发布了,而我没有搞到一台,只是看了看其他人的东西。

2009年Apple把Unibody的Macbook改名到了Macbook Pro,我入手了一台13′。这个时候的我早已觉得电脑这东西真是非Apple不能入了。

2010年初的时候我从朋友那里接过了一台二手iPhone 3G,算是再一次的中了苹果毒,这台iPhone 3G因我一次不慎跌落而残废,恰逢iPhone 4发布不久,不少朋友都说我是故意为之,不管怎样在iPhone 4依然热卖的12月我又入手了。到现在用iPhone能做的事情就很多了,交手机费,银行转帐,查询公交线路等等,生活因此而简单一点不假。

关于Apple的另一个产品iPod我一直没有入手过,直到在前东家转正的时候送了一台。对iPod有过渴望但是又没有那么强烈,另外也确实觉得iPod比较贵,况且手里已经有其他的产品了,但是iTunes我是在Windows时代就使用的,作为Mp3的管理软件,虽然觉得iTunes不够好,但是也没有比之更好的选择。

我知道Bill Gate是因为他的财富,而我知道Steve Jobs是因为他的产品。在我喜欢上Apple产品的时候就自然的了解了这个公司的过去和领导人,在参加北麦活动的时候我认识了David Feng,并且获赠了一本《苹果传奇》,这算是我第一次好好的了解Apple,同时也知道了一些Steve Jobs的古怪脾气,甚至也有过对Jobs的品性的质疑,也看过了Jobs在Stanford的演讲,我想这可能就是一个完整的Jobs,有些人觉得他不够和蔼,他太偏执,身为上司脾气太坏,但是Jobs只是在Following his heart。我们也许受圣人的影响过多了,容不得有任何的瑕疵,实际上又有谁是完美的呢。Jobs追逐他的梦想和事业直到生命的最后尽头,他改变了这个世界,他改变了我们的生活方式,他是当之无愧的精神领袖。如果苹果重拍Think Different的广告,Jobs应该在那些面孔里。

现在Steve Jobs离开了这个世界,我们缅怀这位伟大的导师,也许是上帝觉的7天的时间有点仓促了。

Steve Jobs is gone

Steven Paul Jobs (1955 – 2011) is gone while I am waiting for a bus. Thanks for his contribution for the world. R.I.P Steve Jobs.

Buddha and God might need some Apple product.

浏览器的缓存处理策略

IE和Firefox在Cache的处理上基本的逻辑是,在一个Session里可Cache住的数据会直接读取Cache,并且不会向服务器发出带if-modified-since或if-none-match头信息的HTTP请求,也就不会收到304的回应。这里的一个Session就是指浏览器存活期间,如果浏览器关闭视为该Session结束。

对于Flash ActionScript URLRequest的Cache,IE和Firefox都是无论如何都直接读取了浏览器Cache。另外Flash自己也有Cache机制和Storage的设置,只是我还没有去看。

十年9.11

9.11十周年过了好几天了。想想2001年的时候我还在高中,那天下午知道这个消息的时候还是很兴奋的,下课后就去网吧看相关新闻,现在想不大起来当时的心情了,可能有一些高兴,可能有一些伤感,也可能更多的是震撼。

现在来看这件事的时候,我想当时美国人的心情和我们2008年遭遇5.12地震的心情是类似的,一个是人祸,一个是天灾。10年过去了,那一场袭击的策划者拉登已经被美国人给干掉了。以因果论来讲,拉登也算是有这一果。要说美国又因什么得的9.11这个果,那我还真想不明白。即便是有仇有很,那我觉得也是冤有头债有主,该找谁你找谁,别拿着手无寸铁的老百姓当枪使。我讨厌这些故意牵涉无辜的行为。这就和战场上赶着老百姓走在阵前是一个道理。

美国通过十年的反恐战争,也许并不能避免美国再次受到袭击,但是美国政府是在向着保卫国民安全的目标前行,他们在努力的避免悲剧的再次发生。9.11的纪念活动看起来很简单,也很严肃,当然这也是一件严肃的事情,他们细细的统计了那场灾难的遇难者,他们也惩戒了行凶者。

既然提到了5.12,那我也希望我们能细细的统计遇难者,能修建起不倒的校舍,希望十年后我们看到的不是遗憾,同样希望我们能严肃的对待严肃的事情。

btw: 凤凰网这个“再看中国人的美国观”专题做的不错。

twitter和微博

关于Twitter和微博已经有不少人在谈了,尤其是霍距的那一篇“microblogging和微博信息架构产品差距和影响”讲的深。我这一篇呢是在和老婆说twitter和微博的时候说的,现在到blog里来整理一下。

twitter和微博在功能上最大的差别是有没有评论,另一个有相同功能但是却差别巨大的是转发,本文中在写到转发时如其功能与retweet相似或一致,则括号注明(retweet)。关于微博评论对信息的影响,最主要的一点是无法对抛砖引玉所引出的玉进行转发(retweet)以扩大其影响力。微博为了弥补这一点而增加了转发功能,其原型是来自twitter的民间RT,但是微博的转发是将原微博作为引用附在转发微博的下面。这个看似不大的变化,实际上带来了很大的不同。这个不同在原微博被转发时不明显,但是在转发微博被转发的时候就凸显出来了。因为转发微博在被二次转发时,依然会附带上原微博,转发微博变成了二次转发微博的正文内容,从此后的转发就是依次将上一次转发微博的内容作为本次转发微博内容的一部分而被转发。问题是在这样的转发下很快就会达到140字的限制,因此转发微博的用户不得不删除前人的内容再转发,值得注意的是这个问题是民间RT的问题,微博是把这个问题放大了,而twitter正是借着retweet把这个问题缩小了。

回到前面说到的抛砖引玉的例子上来,当一块砖(原微博)引出一块玉(转发微博)的时候,想对玉做转发必需带上砖,如果玉又引出了玉,但是超过了140字的限制就无法继续了,你只能把前面的玉扔掉,才能抛出新的玉,而且虽然你的玉是被上一块玉引出来的,但是你还是必需带上砖,这时第二块玉可能已经和那块砖没关系了,要紧的是看客们也没有途径透过第二块玉找到第一块玉。信息的前后链路开始断了,随着转发次数的增加,这种链路的断层会越来越严重。而且这会影响到对那块砖的价值的评估,砖虽然被转了多次,但可能只是在转那块玉的时候的附带作用。

说完了微博再来说twitter。twitter维持一个话题和传播靠的是reply和retweet这两个功能。先说reply,任何一个reply都会包含它的回复对象(api: in_reply_to_status_id),根据这个id就可以顺藤摸瓜,找到原tweet,所以有了第二块玉就可以找到第一块玉,顺着第一块玉就可以找到那块砖。再说retweet,retweet本身没有附加内容,只是在信息的传播路上做个中转放大,而且是原汁原味的。转发和民间RT都是有添油加醋或断章取义的可能性的(从这一点上来说retweet更能防止谣言的产生啊)。而且retweet是对tweet价值的一种真实体现,砖就是砖,玉就是玉。

说到这里,基本上也就把我对这两个产品在传播上的功能差异认识说出来了。twitter对这些功能的设计是深思熟虑的,微博的设计看起来欠点意思。我说了这么些,根子上还是霍距说的信息平等的问题。

twitter和微博在其他功能上的差异,有些有可比性,有些没有可比性。比如发图片和视频的功能,对比起来就是信息平等的问题,微博你发个图,评论和转发都不能回个图或视频给你,twitter只能发图片/视频的URL,回复也只能回复图片/视频的URL,这个方案简单,有趣,不烦人,twitter把显示图片/视频的事情交给了客户端。

就这么多了,虽然还有一些话没说,但是我觉的还是留着吧,值得肯定的一点是微博还是有创新的。

Google Docs不簡單

今天用Google Docs做Check List,想對Status欄的Done, In progress, Blocked設不同的background-color,Google Docs竟然有App Scripts可以用,完全是Javascript,超讚的。

下面這個就是我從Google spreadsheets conditional formatting抄來改的。

function colorAll() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var startRow = 2;
  var endRow = sheet.getLastRow();
  var statusCol = getStatusColumn();
  //Browser.msgBox(statusCol);
  for (var r = startRow; r <= endRow; r++) {
    colorRow(r,statusCol);
  }
}

function getStatusColumn() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var startCol = 1;
  var maxCol = sheet.getMaxColumns();
  var header = sheet.getRange(1, maxCol);
  for ( var col = startCol; col <= maxCol; col++){
    var value = sheet.getRange(1, col).getValues();
    //Browser.msgBox(value);
    if (value == 'Status'){
      return col;
    }
  }
}

function colorRow(r,c){
  var sheet = SpreadsheetApp.getActiveSheet();
  var dataRange = sheet.getRange(r, c);
  var data = dataRange.getValues();

  if(data == "Done"){
    dataRange.setBackgroundRGB(0, 255, 0);
  }else if(data == "In progress"){
    dataRange.setBackgroundRGB(255, 255, 0);
  }else if(data == "Blocked"){
    dataRange.setBackgroundRGB(255, 153, 0);
  }else {
    dataRange.setBackgroundRGB(255, 255, 255);
  }
  SpreadsheetApp.flush();
}

function onEdit(event)
{
  var currentCol = event.source.getActiveRange().getColumnIndex();
  var statusCol = getStatusColumn();
  if (currentCol === statusCol){
    colorRow(event.source.getActiveRange().getRowIndex(),statusCol);
  }
}

function onOpen(){
  colorAll();
}

Steve Jobs

教主謝幕了。豐富多彩的職業生涯可能也就此結束了。感謝他帶給這個世界這個行業的一切。

← Before