Blog升级至WordPess 2.3.2

Posted by totodo on January 10th, 2008

WordPress 2.3.2 final 发布已经10多天了,看到好多网友都升了,不由也痒了下,偶就怎么那么容易跟风泥?

步骤很简单,由于DreamHost支持SVN,所以更新方式在也不用FTP  downlaod来 upload去了。

1.  Check Out

svn co http://svn.automattic.com/wordpress/tags/2.3.2

当前目录下会多个2.3.2

2. 备份

mv blog old_blog

3. 新版本移到blog目录中去

mv 2.3.2 blog 

4. 复原 plugins languages 和themes

5. 以后更新就方便了,blog目录下

   查看版本信息

svn info

   更新至最新版本

svn update

就OK了。

做了一顿菜

Posted by totodo on January 6th, 2008

昨天群里谈起程序员的厨艺,不由激发了下做菜兴趣,

如果写程序一样,构思,取材,参考,准备,实施,测试,验收,收尾缺一不可。

1.准备好材料,切的太块,忘了show之前的样子了。

2. 同时开始泡海蜇

3. 洗好的菠菜

4.菜谱,如同写程序时常备的手册

5. 准备下油锅

6. 上等的咖喱,好像很贵,记不得多少钱买的了。

7. 先煎后煮,时间连贯,来不急取景

8, 成品, 咖喱鸡(西蓝花,土豆,萝卜,鸡腿块),凉拌海蜇,炒菠菜。

9,尾品作为外带

结束。

怀旧经典 IBM ThinkPad~

Posted by totodo on January 4th, 2008

 曾经有人用笔记本中的宝马来美誉ThinkPad,不曾几时ThinkPad几乎成了笔记本的代名, 而这个品牌 从1992年TinkPad 770 至今都已经过了15春秋,

1992年10月   ThinkPad 700C,  第一台以ThinkPad命名的笔记本
1993年,     ThinkPad 750C, 第一次随航天飞机进入太空的笔记本
1994年11月   ThinkPad 755CD,第一台带有CD-ROM驱动器的笔记本电脑
1995年3月,  ThinkPad 701C   可伸缩设计的键盘
1996年5月,  ThinkPad 560    超薄机身1.2英寸,超轻1.9KG,红外无线数据传送
1997年9月    ThinkPad 770    第一款带DVD-ROM的笔记本
1998年4月    ThinkPad 600    上学的时候同学有一台,可惜被偷了。也是我第一次摸上ThinkPad实物
1999年4月    ThinkPad 570    柜台里看到过
2000年6月    ThinkPad T20    同学有过,后来相继出了T21,22,23,X20,21,23,那时候开始ThinkPad 分A,R,T,X 系列
2001年3月    ThinkPad TransNote  没见过实物,除了杂志上经常看到 ,自此ThinkPad 家族又多了T系列。带触摸。
2002年5月    ThinkPad T30    摸过
2002年7月    ThinkPad X30    摸过
2003年3月    ThinkPad T40    摸过
2004年3月,  ThinkPad X40,T41  同事有过,摸过
2004年6月,  ThinkPad T42       摸过
2005年3月    ThinkPad T43       摸过
2005年12月   ThinkPad  Z60      联想接手后的首款宽屏,面向家用,朋友买过,还帮维修了一次,除了亮点彩点之外,居然风扇会自己换。质量有点差
2006年3月    ThinkPad  T60、X60  摸过
2007年5月    ThinkPad T61   宽屏 ,   柜台上摸过
2007年10月   ThinkPad T61   普屏版,  哈哈哈,终于被我拥有了~~~~~

2008年1月,联想高调的发布了idea消费电脑品牌 ,至此ThinkPad又 多了一个兄弟(姐妹?)

由于IBM的商标只有5年时间使用权。联想也不甘一直寄人篱下,这次发布的(Idea)品牌吸收了自收购ThinkPad以来所汲取到的精华,经过两年精心酝酿打造,和ThinkPad并驾齐驱冲向全球消费市场, 或许也是ThinkPad的寂寞走到了最后~~ IDEA联想该如何诠释,让我们拭目以待。

我也期盼着天,或许下次再更换本本的时候就不再是ThinkPad了…….

不管如何,不管是过去现在乃至将来,不管是IBM还是Lenovo,Thinkpad在业界还有我心中的地位都很难撼摇 ,令自己的欣慰的是, 07年的岁末我也赶上了拥有带IBM Logo的ThinkPad的末班车~~ 也是最后一系标有IBM ThinkPad的 ThinkPad了,

偶的经典普屏机型ThinkPad T61 8889 A92  

OK,该Show出来拉拉风了~

ExtJS 设计模式 之一 :单例(singleton)

Posted by totodo on December 29th, 2007

ExtJS 设计模式 之一 (单例)

    Extjs 发展至今,传承了YUI的伟大精髓, YUI得到了Douglas Crockford(任职于 Yahoo! 的一名 JavaScript 传道者和架构师,他是全球最有造诣的 JavaScript 语言专家之一,Blog:http://www.crockford.com/) 大师的赞同,而ExtJS也是将YUI的模式脚本编程学习使用的淋漓尽致,并且还给它做了几套华丽的CSS嫁衣….,   而在ExtJS越发耀眼的同时,我等初学者在使用ExtJs的时候也是晕呼其呼。(好在2.0 推出之后,官方的文档,像雨后春笋一样,开始覆盖到方方面面。)

    其实,拨开ExtJS华丽的外衣,翻阅其体内精致的代码,不难发现一些我们耳熟能详的设计模式。

    在早期1.0,1.1的好多例子中,我们会看到这样风格的代码。

var Oo= function(){
  var x;
  var y;
  return{
  a:function(){
  ...
  },
  b:function(){
  ...
  }
  }
}();

咂一看,不是我们能理解的方式, function(){}(), 是何意?。

//()在这里,意味着方法已经执行,并且return里面的已经产生, 这样可能很难理解,那等同与执行 function oo(){},这样是否好理解些了?

BTW :这里要引入JavaScript的一个高级概念,“闭包”。(具体内容参考《JavaScript The Definitve Guid,5th Eddion》Section 8.8 –Function Scope and Closures ,也是被Douglas Crockford推荐的为数不多的两本书籍之一。), 当然不急着去翻,先把我的废话看完。

    好了,看这种使用别扭的使用方式, 而这种方式,在我们的页面,或者其他类中, 调用Oo的a方法的时候,形式如下

Ext.onReady(Oo.a);

对,正是这样的一种JS编程方式,被Douglas Crockford作为JS的一种单例的实现, 大师还把它叫做“Module Pattern”,

    好,如果我们不用所谓单例呢?, 就看看传统的对象方式,同学们肯定在Pototype盛行的时代,已经弄的一清二楚。

0o = function(){
  this.x;
  this.y;
}
Oo.prototype = {
  a:function(){
  this.x = 100;
  },
  b:function(){
  this.y = 200;
  }
}
//调用方式
Ext.onReady(function(){
  var o = new Oo();
  0.a();
});

    再来,假使是个初学者,不知道对象继承,怎么办。更土的写法,人人都会。

var x,y
function a(){
  x=100;
}
function b(){
  y=200;
}

调用方式。
不用说了,只要a(),就会把x设置, 全世界的开发者都公认 ,全局变量是邪恶的,,而且随着你调用的不注意,将会越来越臃肿,导致Memory Lacks 内存泄露。

    以上几个简单的举例可以看出, 类 比Java 一样, Oo.a直接调用,好比一个静态类,直接访问。 而prototype需要创建对象后访问其成员。
第一种方式,在任何地方都不需要创建(只创建一次),
而第二种方式,需要在每次调用的时候,创建对象。
第三种老土的代码,希望大家尽量少写,这不是程序员风格的体现。

   对于发展到今天,如此庞大的ExtJS2.0,自然也要考虑道自己的运行和调用不要让new 变得太臃肿,在ExtJS中我们发现, 在会被各个组件大量频繁调用到的一些工具类中,单例运用较为频繁。

  Ext 源码中,设计使用单利的代码片段。

//source/core/DomHelper.js
Ext.DomHelper= function() {
  //private attributes
  ..
  return{

}
}();

//source/core/DomQuery.js
Ext.DomQuery =fucntion(){

}();

后记: 由于JavaScript,具有prototype,call,apply来实现继承,面向对象来开发,又有闭包等特性来进行函数编程。有函数编程和面向对象的双重性质, 使得JavaScript格外的灵活,难以驽驾, 开发者选择多种风格来进行编码,在一个整体项目会容易会走向凌乱和灭亡。 这就更需要我们从大师的经验总结,以及ExtJS这种优秀的设计中,去体味学习,站在巨人的肩膀上前进…..

(另外值得一提出的,ExtJs必须要求你的页面为XHTML,当你在别的浏览器下跑的非常顺畅,而唯独IE下有那么点瑕疵(不是脚本报错的),你应当检查下你是否把你的页面定义成XHTML.)。

夏末的礼物,VxNano

Posted by admin on August 25th, 2007

这个夏天,辗转了几个城市,原被破旧不堪的笔记本,随着旅途的颠簸和工作的忙碌,愈发沧桑。

正好,今天 Logitech(itron Lynx-L7)突然罢工(无线接收器夭折,修是要过段时间了), 想起下面没有鼠标日子,黯然神伤……,于是中午顶着烈日,在同事的陪同下,逛了下珠江路。

这次慕名而去,早在几天前,就看同事在群里贴图,VxNano已经国内上市。屁颠颠跑到Logtich外设专柜 ,听老板报价比网上的还要便宜许多,感觉好像还赚了。不管了,付钱 ,拿货 ,走人。

Vx是罗技 笔记本用的 激光无效 系列 ,激光的高精度就不说了, Nano 是纳米,这个词和热,所以他的接收器极为微小.和贴切这个名字 。
罗技 VX Nano鼠标与信号接收器

鼠标搭载了MicroGear™高精度金属滚轮 ,传说中的极速滚轮。的确很爽,翻阅长长的代码,一拨到底,几秒和翻阅上万行并且可以精确的停止在任何一个需要的地方罗技 VX Nano鼠标滚轮横向特写

从此,再也不担心把笔记本的接收器弄丢了,再也不怕滚动条好长好长的文档,页面,Excel拉,也会开始懂得是应该好好珍惜鼠标了,买一个多贵,唉。