Lenovo Think产品IWS(全球联保)申请指南

想必去过美国的人,都会顺路带个ThinkPad回来。因为国内ThinkPad的价格实在是高的离谱。而我(包括我的几个同事)都是EPP计划的受益者,使用EPP购买ThinkPad产品不仅价格低廉,而且偶尔还能免税。而我们的EPP计划更是内置3年的产品全球联保服务。

所谓全球联保服务(IWS),就是你的产品可以在世界任何一个支持该机型的国家进行保修,只要该国销售该型号的产品(要想知道你的产品能否在你的国家保修,可以点这里,然后输入Model Number的前4位。列表中的国家,即为可以保修该产品的国家)。这里特别提一句,IWS在中国需要比较特殊的流程(其他国家都没有),需要首先进行IWS服务注册,即证明该Think产品是你本人购买和使用,且在你购买Think产品时,你确实处于购买国家。

注册全球联保服务后,你可以在国内任何一个Think产品授权维修中心,直接进行保修。否则,在每次保修时,都需要出具旅行证明和购机凭证。

要在中国注册Think产品的全球联保服务,需要以下内容:

  • 购机凭证,该凭证可以是保修卡、发票等
  • 产品序列号,包括Model ID和S/N在内的总共14位
  • 旅行证明,包括护照、通行证以及其上的出入境记录

需要注意的是,和在中国购买Think产品不同,美国不仅没有Invoice一说,也没有所谓的保修卡。在美国本土,保修服务只需要提供产品序列号,有些厂商还提供Box服务。这就给我注册IWS时带来了不小的麻烦,幸好我早有先见之明,保留了除包装箱外的所有资料。我是这样提供材料的:

  1. 护照照片页
  2. 美国签证页
  3. 中国出境签章
  4. 美国入境签章
  5. 中国入境签章
  6. 产品序列号
  7. Packing Slip
  8. Online Order Tracking Information

其中1~5是证明我在购买时间内,人在美国(注意,美国是没有出境签章的。2006年底以前曾短暂的实行过生物出境记录,只有那段时间出境美国才会有一张二维条码的出境单据。我只有一张);6~8证明该产品是我购买(Packing Slip和Order Tracking Information都包含我的姓名、Shipping Address等信息)。

请注意,各出入境签章页,需要务必提供整页信息,而不只是签章部分。否则该签章不能证明出自同一本护照,因为护照每一页的最下方都有护照号。

准备好这些材料后,可以将这些信息发送到iws@lenovo.com中,同时写明你的产品信息、客户信息等。20分钟后,拨打Lenovo Think产品服务热线800-810-3315(中国拨打有效)或者+86-10-82878860。选择2-全球联保服务(前面还有个选语言的,要是有兴趣,也可以选2-英语),即可转入人工服务。

转入人工服务后,可以和客服MM确定是否收到该邮件,并且要求他立即审核注册资料。客服MM会当场告诉你注册结果,或需要补充的材料。当然,不转人工服务也是可以的,1个工作日后,IWS服务中心会主动打电话给你告知审核结果。转人工之后就是快,而且可以第一时间知道所缺少的文件,并尽早补全。

使用EPP计划购机的特别注意:如果参与的EPP计划是使用公司统一帐户购买的话,Billing information会提示付款人为你所在公司的Sales Representative,而非你本人。而Think产品IWS服务则要求付款人必须为本人(即,旅行证明上的那个人)。这种情况下,需要在发送邮件时,使用公司邮箱,并在邮件中说明该情况。客服MM会根据所述情况帮忙审核。

IWS服务的审核结果会立刻得到(如果你打电话的话)。注册成功后,当产品出现问题,就可以带着产品去Think产品授权维修中心去进行修理了,而无需再提供其他任何证明材料。全球联保服务申请成功后,可以在国内保修查询网站上查到保修信息。

Posted by Wei@16:23 18/18/2008 in Computer Science | Permalink | Trackback | No comments.

Wordpress upgraded to version 2.6

You might not notice that my blog has been upgrade to version 2.6, as well as SECRET_KEY has been added to the wp-config.php file.

There are several feature increase for 2.6:

  1. Post revision. Of course, previous versions are view-only. (set WP_POST_REVISIONS to 0/false to disable or positive number to how many revisions to save.)
  2. Word count. But you may seen as below, it completely doesn’t work for Chinese.
  3. image

  4. Integrated with Google Gear to staticize the backend of the Wordpress. (”Turbo” at the top right in backend)
  5. Picture Edit.
  6. Able to locate the wp-config.php and wp-content folder. (Actually not very useful to me)
  7. Support Shift key to select multi-item. (Click the first item, hold Shift key and click the last item to select all entries between the two)
  8. Remote Publishing control which allow you to enable or disable post from remote (such as Windows Live Writter). (Option->Writing)
  9. Able to select default Avatars (Option->Discussion)
  10. Plugins are sorted by Active/Inactive.

There is also another fix for me, since I didn’t see any others report the problem. While writing the post in Wordpress 2.5, scroll down the page, and press Enter in the TinyMCE edit box, the page will get back to the top. But this does not happen in version 2.6.

There is no any affect  to plugins, at least for my used plugins.

Unlike BSP hosted blogs, stand-alone blog owners need to be upgraded by themselves. It’s easy, but I don’t like the progress, esp. backup progress. :(

Posted by Wei@21:54 16/16/2008 in Computer Science | Permalink | Trackback | 2 Comments.

一道超难的算法题-复制链表

Rui在参加面试后,给我分享了一道算法题。他在留言中说made me wanna kill myself when I knew the answer.

题目如下:

Given a Linked List of node structure asstruct Node { type element; Node *next; Node *arb;};You are asked to create an exact copy this linked list. Pointer arb points to an arbitrary node in the linked list.

先说说我的算法吧。我选择了一个超笨的方法完成:创建一个新的linked list存储原始链表每个节点的顺序号,然后复制链表的时候,通过顺序号,找到arb指针所指向的节点。算法很笨,无论是空间效率还是时间效率,都很差。不过好歹是完成了。

不过,在我看完答案之后,我也wanna kill myslef。太神奇了。

Read the rest of this entry »

Posted by Wei@11:14 16/16/2008 in Computer Science | Permalink | Trackback | No comments.

这一夜,我亲手拆了我的ThinkPad

别紧张,我只是因为要更换ThinkPad的硬盘,预演一下机器拆解的过程而已。当然,为了更多的了解,我把内部也拆了一下,而不是只拆了硬盘模块。

下载一份ThinkPad的Hardware Maintenance Manual,按照步骤就可以简单的拆除各个FRU。拆开以后,进一步想处理一下近期机器过热的问题。最近在散热器、CPU部分,机器热的烫手,甚至有偶尔死机的情况。想来是散热部分比较脏了。

在把风扇卸下来以后,发现那土真不是一般的多。不过ThinkPad的散热片挺精致的。经过简单的处理,重新装上,机器发热量有了明显的下降。

同时发现一些事情:

  1. Lenovo在文档方面做的还是很不错的,按照HMM,可以很轻松的拆解。另外,机身背面的螺丝孔旁边也都有明确的说明
  2. 突然发现,以前T60的键盘边框右侧的那条,有松动的迹象,就像卡子没有卡住一样。经过这次拆解,发现居然完美贴合,一点儿都不动了。看来2008H32的装配有些问题啊。
Posted by Wei@19:35 6/06/2008 in Computer Science | Permalink | Trackback | 4 Comments.

最近Blog上的一些更新

近来闲着没什么事做,对blog进行了一些更新,增加了一些功能的支持。

FeedBurner订阅图标

FeedBurner在挺早以前就被和谐了。我blog上的订阅图标自然也就显示不出来了。通过一段时间的研究和搜索(主要是搜索),在我主机空间上添加了一段代码,使得图片可以缓存在我的主机上。(我是国外主机,所以主机访问订阅图标是没有问题的。主要原理就是通过服务器代码缓存图标)

retaggr图标显示我的详细信息

增加了对retaggr的支持。侧边栏上的 图标,click一下,就会出现我的信息,以及所有我注册的服务。

本来还增加了post author和comment author的retaggr支持,结果发现因为blog只有我一个人写,除我以外,其他人都无法显示信息。还是节约点儿资源吧。

增加了Gravatar图标支持

所谓Gravatar,就是Globally Recognized avatar。是http://www.gravatar.com/推出的一种身份标识服务。在其主页上注册,并登记email地址,上传头像,在其支持的网站上,就会出现对应的头像。

gravatar

Gravatar是通过email地址识别的,所以所有在本blog上评论的用户,只要在Gravatar主页上注册,并在comment的时候输入对应的email地址,你的头像就会显示出来。

Author Comment Highlight

上图其实已经说明了。这个功能就将作者的comment高亮显示出来。

image

@X格式的快速回复

这已经最近第三个关于comment的增强功能了。在每个评论作者旁边都会有个 图标,只要点击这个图标,就会在comment中自动添加@XXX格式的引用了。而且也会自动添加对引用评论的link。

image

有意思吗?觉得偶尔做些这种事情挺好玩儿的。请原谅我没有对所有涉及如配色、图片、位置等的草率,因为有些实在是太难用了。我不是HTML和CSS的高手,也压根不想在上面过多的钻研。不过多亏了FireBug给我提供的帮助

Posted by Wei@21:03 1/01/2008 in Computer Science | Permalink | Trackback | 2 Comments.

Zooomr - 免费的网络相册

Zooomr是个免费的网络相册服务,和FlickrPicasaWeb类似,都是可以上传和共享图片的服务。Zooomr提供了无限的存储空间、无限制流量,也不限制图片的大小和张数;单凭这一点,就比Flickr的200张照片限制和100MB/月的流量强了不少。

Zoomr目前提供英文、简体中文、繁体中文、日文、西班牙、葡萄牙语、巴西葡萄牙语、荷兰语、意大利语等多国语言界面。而且支持OpenID,可以直接使用OpenID登录和使用Zooomr。

我最喜欢的是他的Infinite Upload ∞界面,只要点击Browse Files,选择多个文件。然后点Upload就可以了。每个上传的文件都提供单独的上传进度条。上传的速度也是不错的。

infinite_upload

在上传图片时,可以一并设置公开性、tag等信息。上传完成后,即可将这些照片设置为指定的信息。

不仅如此,对于上传的照片,还可以设置SmartSet。可以理解为照片集。SmartSet实际上是一组搜索条件,符合该条件的图片,都会自动的加入该set之中。

smart_set

Zoomr还提供了图片PeopleTag功能,即标记照片上的人。这对于很多情况下,尤其是大家合影时非常有用。People Tag还可以用于创建SmartSet。

people

只要选择添加People,就会在照片上出现一个框,可以移动和改变他的大小。而在框的下方,则可以输入对这个people的信息,包括Zooomr的用户名和Note。对于非Zooomr用户,也可以点击“Not a Zooomr User”后,输入该people的名字和邮箱地址。Zooomr通过email address来区分不同的人。

Zooomr还提供Pro帐户,但目前来看,除了Zipline Complete、Social Stream和Discovery Pro外,最吸引人的就是无广告了。但每年19.95美元的费用,确实有点儿对不起这些服务。

Zooomr同时还是一个社会化的聚合网站。所有注册的用户都可以相互Follow。并且可以像使用Twitter一样更新自己的What’s going on right now?信息。

当你follow一个用户以后,还可以设置对方为自己的Friends和/或Family。同时,因为上传时也指定了照片的公开权限(可以设置照片为公开,与Friends和/或Family共享),对于非公开的图片,对应的Friends或者Family则可以看到。

说了这么多Zooomr的好处,当然它也是有不少缺点的:

  1. 没有类似Flickr的Originaze功能。对于批量组织照片,还是比较困难的。
  2. 没有Bulk Edit功能,如果你要对一组照片添加一个tag,或者修改共享权限,那么恭喜你,一张一张的改吧。(Zooomr已经在增加该功能了,希望能够尽快的搞定)
  3. SmartSet只能用于Public的照片。即,SmartSet无法搜索Private的照片,如果你将一张照片设置为Private,哪怕是Share with Friends/Family,也不可能出现在任何一个SmartSet里面。
  4. 没有类似于Album功能,对于图片多的情况下,不利于浏览。当然SmartSet在一定程度上可以实现Album,却不能完全取代。
  5. 帮助文档不够详细,很多时候找不到说明,只能靠自己实践。
  6. $19.95的Pro帐户没有过多的吸引力,功能上没有实质性的增加。
Posted by Wei@0:50 30/30/2008 in Computer Science | Permalink | Trackback | 1 Comment.

解决网上下载CHM文件无法显示的问题

当我们打开网上下载的CHM文件的时候,会碰到如下的问题:

chm_unlock

左侧的目录可以显示,但右侧的页面无法显示,无聊是刷新,还是重新下载都没办法解决。

其实这并不是因为文件损坏造成的,而是操作系统对于未知CHM文件进行的保护。

要解决这个问题很容易,右键点击文件选择“属性”。

locked-chm-properties

之后在General选项卡最下方的Security中,点击“Unlock”,并确定。

Tags: , ,
Posted by Wei@22:26 27/27/2008 in Computer Science | Permalink | Trackback | No comments.

FireBug真的是个非常好用的插件

FireBug是个FireFox的插件,就在FireFox推出它的3.0版本的时候,FireBug也跟着升级到了可以支持FireFox 3的版本

相信如果你对HTML、CSS有着一知半解的认识,或者你对于网页还停留在以前table layout阶段时,对于网页上的HTML、CSS代码的调试,是个非常头疼的问题(我就是这样)。尤其是你的网页不是本地的,且有服务器端的代码的时候。

FireBug就是这样一个插件,它可以帮你检查HTML、CSS代码,可以帮你把代码和网页的显示效果结合起来,甚至可以直接修改HTML、CSS代码,并且不需要刷新就可以立即把修改应用到网页上。

安装FireBug首先要求你有一个FireFox浏览器,然后去FireFox Addons网站上安装最新版本的FireBug。最后重新启动FireFox就可以了。

当你打开一个网页的时候,只要按下键盘上的F12键,或者用鼠标点击浏览器右下角的image图标。就可以打开FireBug。

firebug_main

而当你对页面上的某个元素需要详细的信息时候,右键点击对应的页面上的元素,然后选择菜单中的“Inspect Element”即可。

如果你对页面的显示效果不满意,在HTML代码上直接修改就可以了。鼠标移动到对应的元素上,页面上的该元素所代表的显示区域也会高亮。

不仅如此,对于CSS的盒子模型,FireBug也能从容对应。在FireBug右边窗口上方选择Layout,即可打开与当前元素相关的盒子模型,包括border、margin、padding和offset。直接修改对应的数字,页面也会做出相应的更改。

image

除此之外,FireBug还可以评估页面的加载速度。

image

对于AJAX,一般的网页调试工具是比较不容易处理,而FireBug则可以轻松应对。另外还有JavaScript,也可以像程序一样的进行调试。

应用在我的身上,FireBug帮我解决了好几个网页上的问题。包括Gravatar、Author Comment Highlight等等。

Posted by Wei@22:21 18/18/2008 in Computer Science | Permalink | Trackback | No comments.

Plurk - 基于时间线的Twitter

Twitter最近实在是不太稳定,更为过分的是,我登陆我的Twitter后,只剩下最后一条了,以前都不不知道哪里去了。基于这个原因,我逐步转到了Plurk上面。

Plurk是个基于时间线的Twitter。如果你很熟悉Twitter,那么你只要登录Plurk,就知道怎么用了。

 

image

Plurk是个神奇的东西,我只用了几天,就爱上它了。这也让我几乎完全抛弃了Twitter。

Karma值是Plurk里面用来评价用户经验、活跃度等信息的,类似于论坛里面的威望、经验等。

时间线可以通过鼠标拖拽、鼠标滚轮、键盘左右方向键移动。同时,当鼠标移动到时间线的最左侧和最右侧的时候,也会出现一个箭头图标,点击该图标即可移动时间线。

此外,Plurk还支持一些发布的格式:

发布格式 在Plurk中写 显示为
链接 URL (Text) Text
粗体 **bold** *bold*
斜体 *italic* *italic*
下划线 __underline__ __underline__

Plurk也支持发布YouTube、TinyPic、ImageSearch、ImageShack、PhotoBucket以及Flickr的视频或者照片,只要贴入对应的URL即可。详细的方法,Plurk给出了官方的解决方案

最后,如果你也愿意注册Plurk,可以点这里(里面有我的推荐ID,我提前说了。如果不想用推荐,从http://plurk.com/进去就可以了。

Posted by Wei@22:22 12/12/2008 in Computer Science | Permalink | Trackback | No comments.

合理使用IM的几个习惯

以前看过类似的文章,没当回事。不过有个良好的使用IM的习惯,还是非常有必要的。这里IM包括Live Messenger、QQ、Yahoo等等。

使用能表达自己的昵称,或者使用自己的名字

早年用QQ,现在上面绝大多数人已经不认识了。IM既然是通信工具,就该有个能让别人识别的名字。我当然不是反对展现个性,但好歹在展现个性的时候把自己的名字写上。

另外,推荐把个性的信息放在名字的后面,在联系人比较多的时候,可以依据名字来排序。MSN最近经常传播鼓励大家在MSN昵称上增加一些信息来表达什么含义的,我向来不反对,但加在名字后面远比加在前面来的更reasonable。

MSN、QQ新版中都有添加备注名称(nickname)的功能,设计本来是很好的,但却在设置nickname之后,隐藏了原来联系人的个性信息。所以,除非是你的名字让我认不出来,我一般不修改nickname,因为我更愿意看到你的个性信息。

将联系人分组管理

这是很重要的,尤其是联系人比较多的时候。在公司环境中,还可能出现重名的情况,再按照部门分类一下,就更容易查找了。

保存聊天记录

说真的,有时候我觉得自己的记忆力很好,有时候却很差。不管好坏,聊天记录功能都是很重要的。经常碰到忘记了某个人,但是看看聊天记录,就想起来了。

尊重联系人的状态

这个其实是重中之重。联系人既然设置了Away、Busy、In a Call、Be Right Back状态,就要尊重人家的状态设置。我经常发现在我设置为Away之后,有人发消息给我:“Hi,在吗?”。

另一个重要的状态就是Busy。既然是busy,自然人家是不希望被打扰的。所以不要不知趣的给人家发消息。如果真的有急事,就尽量在一条消息里面发完,而且不要期待对方有很快速的回复,更不要追着人家问。不要看着人家是busy状态,还“hi,在吗?”的问,很容易打扰别人。

当然,作为联系人,也不要轻易设置这些状态。只要你能够接受别人发消息,就不要轻易隐身;只要能有时间处理别人的请求,就不要设置轻易设置busy。

最为我自己,我最反感的就是我在设置busy状态后(我不会轻易设置busy),仍然有人“hi,在吗?”的问我。一旦碰到这种情况,如果我心情不好,我会block掉这个人,直到我free。

谨慎使用自动回复

如果你在线,就不要开启自动恢复。经常会看到,两个人聊天,你发一句话,对方回复的首先是“你好,我有事儿不在……”(这事儿以QQ为主)。如果你愿意和人家聊天,而且聊天已经开始,就即使关掉自动恢复。

一次说完

好多人都有这个习惯,一句话分好几次说:“上次”“我去那那那了”“然后碰上谁谁谁了”。有事儿一次说完,现在的IM都有输入状态反馈,对方不会认为你不理他的。在聊天的人多或者对方忙的情况下,一句话分好几次说,是很招人烦的一件事。

Tags:
Posted by Wei@11:28 12/12/2008 in Computer Science | Permalink | Trackback | No comments.

HTML and CSS

最近一直在给同事面试一个HTML/CSS方面的职位。说实在的,我对HTML和CSS一直停留在“可以写,但复杂的不会”的阶段,就像我的Blog一样,一直就是麻烦不断。

今天更是这样,在更新了几个Widget之后,突然间发现第二侧边栏被移动到第一侧边栏下面,底部的Recent Post和Blog roll也都窜到右边去了。很明显,某个地方的<div>不匹配。这种情况实际上多发生于我的Text widget,因为里面的HTML代码基本上都是我写的。

这次其实也不例外,最终发现在About ME中的<div>不匹配。这倒不是什么大问题,真正的大问题是我几乎删除了所有的widget才最终找到问题的根源。

之所以会联想到给同事面试的事儿,是因为我的面试几乎都会问一道题目:table layout和div layout有什么区别。当然答案是五花八门的。想当初我在上世纪90年代(别紧张,其实就是上世纪的最后一年)的时候,网页还在使用table做布局,之后才逐渐变味div布局。

今天面试的candidate是这样回答我的:两种布局方式没什么区别。div更倾向标准一些,但table比较不容易把页面变得很混乱

我不评论他的答案,但他说的table比较不容易吧页面变得很混乱,确实是真的。比如这次我的blog布局中,就因为少写了一个</div>,结果导致页面乱七八糟的。其实table也存在同样的问题,但好歹人家有th、tr、td,一个一个匹配一下就好了。<div>不同,所有的结束标签都是</div>,弄得你也分不清哪个对着哪个。

当然,<div>的优点是不言而喻的,当你的网页更改布局的时候,<div>的修改成本是要远远低于<table>的。另外,对于像我的blog那样widget based的页面,<div>也更容易一些。

———- 分割线 ———-

我写这篇问题,倒不是为了评论table和div哪个好,哪个更标准,只是在这里发发牢骚,说说我碰到的问题。当然,对于那些直接说我“啥都不懂呢,还写HTML呢啊”,这种评论必然会存在。我将完全忽视。

Tags: , , ,
Posted by Wei@23:04 11/11/2008 in Computer Science | Permalink | Trackback | No comments.

dispity - 你我的时间线

dispity是个免费的Web的时间线,可以同步你的PicasaTwitterWordPress (Blog)、Last.fmFlickr、Yelp、BloggerYouTube,以及其他的RSS。

dispity会将上述feed中的内容,以时间线的方式,显示在屏幕上,如下图所示。

dipity

同时,dispity还提供了embed到网页的功能。在上面的画面中,点右上角的image链接,即可得到embed到网页的代码。不仅如此,还提供Blog Navigator的代码(如本站最右侧效果)

Posted by Wei@23:22 2/02/2008 in Computer Science | Permalink | Trackback | No comments.

Ubuntu正在推出8.04LTS Desktop Edition

Ubuntu终于准备推出最新的LTS版本8.04了。该版本将于本周四出现在download page上。

所谓LTS,就是Long Term Support。这也是Ubuntu在6.06之后的第二个LTS版本。

Posted by Wei@17:49 24/24/2008 in Computer Science | Permalink | Trackback | No comments.

免费软件推荐:下载工具 - Orbit Downloader

Orbit是个免费的、无任何adware和spyware的下载工具,相当与Internet Download Manager(收费)、FlashGet(超多广告)。

Orbit的界面可以说是没什么特别出众的,与其他某些下载软件相比,甚至都没有skin功能。但主页上的介绍,说Orbit是个Rich Media Downloader,除了可以下载一般的文件外,还具备grab网页上的flash、wmv、mp3等媒体的功能。与其他下载软件类似,Orbit也有个drop zone,可以拖拽URL到drop zone开始下载。

Orbit Main Window

下载结束后,还会在右下角弹出完成提示。

Orbit Download complete notification

在Preferences里面,Orbit可以配置加速下载。加速的方法可以包含mirror connection和Peer to peer,当然,你也可以不启动这些配置。

作为下载工具,Orbit实现了基本的下载和文件管理功能,以及通过mirror和P2P加速下载的功能;与其他下载软件相比,Orbit没有华丽的外观,没有广告,没有推送的下载资源(而实际上,这些功能都是可有可无的)。如果你只是想要一个简单的下载工具,Orbit无疑是个非常好的选择。

Posted by Wei@20:40 8/08/2008 in Computer Science | Permalink | Trackback | 3 Comments.

使用Mobical同步手机

Mobical是个SyncML协议的手机同步服务提供商。所谓SyncML,就是一种平台无关的信息同步标准协议,也是一种唯一行业通用的移动数据同步化协议。

Mobical正是提供该服务的产品(除此之外,还有ZYB、ScheduleWorld等)。要使用Mobical,必须满足以下几个条件:

  • 手机支持GPRS数据网络(可以访问Internet;但WLAN没试验过)
  • 手机必须支持SyncML Remote Sync(这里可以看到Mobical是否支持你的手机)
  • 一个Mobical账号(这里可以注册)

接下来的工作就是配置手机了。通常,会在工具或者手机配置中出现“远程同步”的选项。以我的Sony Ericsson P1i为例,就是在工具->远程同步

新建一个远程同步的配置文件,然后输入下面的信息:

服务器地址: http://www.mobical.net/sync/server
用户名: <注册时提供的用户名>
密码: <注册时指定的密码>
传输协议: HTTP
互联网帐户: <你手机上用于连接互联网的帐户,通常为GPRS数据帐户>
使用传输登录: 不选择

之后保存配置文件。之后,依次选择每个同步任务,输入如下的数据库名:

便签 vnote
联系人(通讯录) con
日历/任务 caltask
书签 bmark

注意,不要选择同步电子邮件,Mobical不支持。(对于电子邮件,我使用Push IMAP,不需要考虑同步的问题。)

这样,整个远程同步就配置完成了。选择“同步”就可以自动进行了。同步之后,也可以在Mobical网站上查看。

Posted by Wei@19:41 8/08/2008 in Computer Science | Permalink | Trackback | No comments.

整合使用Windows Live Writer和WordPress 2.3+ (Tagging and Slug)

我以前其实很少使用Windows Live Writer,因为我当时的Blog平台是WordPress 2.1,使用UTW提供tagging支持;而且,因为我的blog post使用post slug来定义Permalink。而这些都是使用Windows Live Writer很麻烦的事情。

从2.3版本开始,WordPress增加了native tagging的支持。同时,无论是Windows Live Writer,还是WordPress,都对于相互之间的兼容性,逐步的提供了支持。在我将Blog平台升级到WordPress 2.5之后,惊喜的发现,之前我所担心的post slug和native tagging的问题,都被彻底的解决了。(本来以为Windows Live Writer需要特别配置才能支持native tagging,查看了WordPress Trac,发现2.3版本有个bug针对这个问题提供了支持。下载了补丁的文件后,发现居然2.5版本已经内置了。)

Windows Live Writer的配置更是简单,直接按照向导配置Blog setting就可以了。要输入tag,只要在Keywords中输入(Keywords在Post Property里面,按F2可以显示出来)。要输入Post slug,简单,就是slug。

wlw-blog

这样,Windows Live Writer就完全解决了我的Blogging的问题。说实话,我其实很喜欢Zoundry,但目前来说,人家还确实不支持slug,实在解决不了我的问题。

PS,本文就是使用Windows Live Writer写的,并上传的,连同tag、slug和图片。如果你也想用,直接去这里下载Windows Live Writer就好了。

Update Apr 8th, 2008:貌似有些问题:在插入链接之后,我的输入法(搜狗)被自动设置为全角模式。以前Messenger和微软拼音一起工作的时候,就有类似的问题。

Posted by Wei@20:17 4/04/2008 in Computer Science | Permalink | Trackback | No comments.

免费软件推荐:快捷计算器 - Calq

有了计算机,我就不想动脑子。所以很多情况需要计算的情况,我都是喜欢用计算器,什么算个油耗,算个钱数什么的。以往我都是用Windows内置的计算器,其实也挺方便的:Win+R,Calc<CR>就搞定了。不过最近又发现了一个软件。

Calq是个快捷的计算器,它能快速启动,支持简单的计算(加减乘除之类的)。支持Windows和Mac平台。

软件启动之后,会在Notification Area中增加一个图标。按下F7键,就能弹出快捷的计算器界面,然后输入算式就可以了。

简单吧?这样就可以省去启动Calc的复杂过程。值得注意的是,如果在Windows环境下安装,需要.Net Framework v1.1.4322[via]

Posted by Wei@13:13 3/03/2008 in Computer Science | Permalink | Trackback | 2 Comments.

免费软件推荐:光盘刻录工具 - ImgBurn

Nero曾在光盘刻录界成为几乎是事实的刻录工具,但Nero不仅体积大,而且收费。不仅如此,传说盗版的Nero可能随机刻废光盘。

与Nero的体积庞大相比,ImgBurn则是小巧的刻录工具。不要看他体积小,但却是小巧精干。下载地址在这里,软件默认为英文环境,但也可以在这里下载多语言包,实现界面汉化。

ImgBurn是个模式的刻录工具,分为以下几种模式,不同的模式则完成对应的功能:

模式 功能
Read 将光盘只作为ISO文件
Write 将ISO文件写入光盘
Build 制作光盘ISO文件(也可将ISO文件刻录为光盘)
Verify 验证光盘刻录的准确性
Discovery

新增的Ez-Mode Picker更是把多种模式整合在清晰的展现出来。

除此之外,ImgBurn还具备Automatic Write Speed功能,该功能可以根据刻录机里面盘片自动决定刻录速度(当然这个功能本身是需要设置的)。

总体来说,ImgBurn软件作为一款刻录软件来说功能是足够的,而且免费、小巧,其实还是绿色的。

Posted by Wei@11:27 3/03/2008 in Computer Science | Permalink | Trackback | No comments.

Vim Tips

Vim是个很神奇的东西。从很早以前就开始使用它作为我的默认文本编辑器。

Vim是Bram Moolenaar的作品,同时也是几乎在所有Unix平台上都带有的VI的功能增强版本。Vim其实就是个文本编辑器,与常用的UltraEdit、EditPlus一样,都是程序员们常用的代码编辑工具。

Vim能做什么?目前流行的文本编辑器所有的功能,Vim几乎都能做到。不仅如此,Vim是个可扩展的编辑器,想实现什么功能,都可以通过script完成。

Vim对于新手而言,是个超级难用的编辑器。完全和以往人们的想法不同。(虽然现在Vim也提供Easy Vim,但那毕竟不是Vim的灵魂。用Easy Vim也没办法完全体会Vim的神奇。)

Vim可以从它的主页上下载,并且是完全免费的。同时,Vim支持常见的操作系统,这当然包括Windows、Mac、Linux/Unix。对于Windows用户来说,我推荐在安装过程中选择Full。这样会在%SYSTEMROOT%中创建几个BAT文件,能够方便快速的启动Vim。

Vim的配置依赖于.vimrc文件,该文件存在于$HOME目录中(Windows系统中为%USERPROFILE%)。很奇怪的是,Windows不允许将文件重命名为以“.”开头,却允许以“.”开头的文件存在。

要创建以“.”开头的文件,只要随便创建一个文件,然后进入命令提示符中,输入“ren 文件名 .vimrc”就可以了。或者更简单,在命令提示符中输入“echo a > .a”,就可以得到一个以“.”开头的文件。

看到这里,其实你不用创建.vimrc。Vim也支持在Windows环境下使用_vimrc作为配置文件。另外,配置文件并不是必须,没有这个文件,仍然可以运行Vim,只是默认设置而已。

这里我不打算讨论Easy Vim,因为和普通的编辑器没有什么区别,而且反而不如其他编辑器好用。如果你愿意以Easy Vim入手,okay,go ahead,但下面的内容貌似没有什么太大的用处了。

Normal Mode

Vim是模式(Model)的,默认的启动状态为Normal Mode,除此之外,还有Insert Mode、Command Mode和Vistual Mode。在Normal Mode中,键盘的输入都会被作为操作命令,而不是输入的内容。试试看,在一个刚刚启动的Vim中,按键是不会得到想要的输入的。

Normal Mode是最基础的模式。任何情况下,如果想进入Normal Mode,只要按ESC键就可以。同样,如果不确定当前在什么模式下,可以通过通过按ESC键的方式(或反复按ESC键),返回最基础的Normal Mode。如果此时已经处于Normal Mode,再按下ESC,Vim会给出声音警告。这也就是判断当前处于Normal Mode的一个方法。

Tip:如果你遗失在某个模式中,反复按ESC键盘,最终是会回到Normal Mode中的。嘀嘀的声音也会提示你已经进入Normal Mode。

模式之间的切换

模式之间的切换,是相对容易的。前面已经提到,要回到Normal Mode,只要按ESC键。

要想能够写文字,则首先应该切换到Insert Mode中。在Normal Mode中,按下i,就可以进入Insert Mode,此时会在窗口的最下方显示“– INSERT –”。

Tip:Vim中的各个命令都是区分大小写的。i和I将是两个不同的功能。

编辑文本

在初始的Normal Mode中,按下进入插入模式的命令即可。这些命令包括:
a在当前字符右侧插入
i在当前字符位置插入
A在当前行尾插入
O在当前行上方插入空行
o在当前行下方插入空行

同样,使用替换命令也可以对文本进行修改:
r替换当前位置字符
R进入替换状态

对于修改大小写这样的工作,则更是可以使用简单的命令完成:
guu本行小写
gUU本行大写

移动光标

在Vim的Normal Mode中移动光标,除了可以使用上、下、左、右的方向键外,更为正宗和传统的是使用hjkl,其中h表示左移,l表示右移,j表示向下,k表示向上。这种设计可以让使用者不移动手指的位置,就可以操作光标。

Tip:同样的光标移动快捷键,也出现在Google各产品(如:Gmail、Reader等)。

需要提醒的是,hjkl只能在Normal Mode中移动光标。而在Insert Mode中,则会作为文本插入到光标的位置。

Vim的命令

Vim的命令是区分大小的,而且是可以组合的。不仅如此,还可以通过数字,指定命令的执行次数。例如:d是删除的主命令,dd表示删除本行,dw删除当前词(w表示操作对象为词,其他命令中也可能用到),d^删除到行首(^表示行首),d$删除到行尾($表示行尾),d4d或者4dd表示执行4次dd命令,d3w表示删除3个词,等等……

打开和关闭文件

写好了文本,需要保存。只要输入:w即可;如果文件未命名,则可以使用:w 文件名。默认的当前路径是$HOME(Windows环境下为%USERPROFILE%)。

打开已经存在的文件,可以使用如下命令:

  1. :e 文件名

打开和保存文件,都支持Tab补全功能。只要输入文件或路径的开头几个字母,然后按下Tab键,就可以自动补全以此开头的文件或路径名,反复按Tab键可以在多个以此开头的名称中切换。

编辑完后,要退出Vim,只要使用

  1. :q

命令也是可以组合的,比如要保存当前文件,并退出,可以使用

  1. :wq

该命令也可以简化为ZZ。

命令也是可以强制执行的,如果当前文件没有保存,而使用:q退出,Vim会提示当前文件未保存。这时可以在命令后面加上“!”表示强制执行该命令(比如:q!表示不保存文本,强制退出)。同样的,如果:w也可以强制执行,表示文件即使是只读的,也强制保存。

搜索与替换

Vim的搜索可以说是强大。不仅支持正则表达式(RegEx),操作还非常方便。

搜索是以在Normal Mode中“/”开头的命令/{pattern}<CR>,例如搜索RegEx,只要在Normal Mode中输入:

  1. /RegEx

需要注意的是,Vim默认情况下,搜索、替换都是区分大小写的,但也可以修改这项设置(:set ignorecase)。

而smartcase功能,则聪明的实现了根据你的输入来确定是否匹配大小写。例如:输入全小写单词会忽略大小写匹配功能,而任意字母大写,则会区分大小写匹配。

但是,如果只打算在一个字符上忽略大小写怎么办呢?只要在需要忽略大小写的字符前面加上\C即可,例如“/\CReg\cEx”,就会匹配RegEx、regex、Regex和regEx,但不会匹配REGEX。该选项会忽略smartcase和ignorecase的设定。

搜索还可以偏移,b表示开头,e表示结尾,正数表示右移,负数表示左移。例如:“/test/e-1”就会搜索test并把光标置为s字母上;同理,“/test/b+2”会移动到同样的位置上。

如果打开incsearch功能(set incsearch),则在输入要搜索文字的同时,就可以同步显示出找到的内容。

搜索完成后,n可以搜索下一次出现的{pattern},p可以搜索上一个。重复上次搜索,还可以直接输入“/<CR>”。

替换操作同样是这样完成,输入:{range}s[ubstitute]/{exp1}/{exp2}/{flags}。{range}可以是行号(1,2,3或者1-10),也可以是%表示所有行,如果没有写,则表示只替换当前行。{flag}是可选的,g表示替换每一行中所有的匹配项,c表示每次替换都需要confirm。

代码折叠

代码折叠功能是我印象中Vim7中增加的。挺早以前,Visual Studio、UltraEdit、Source Insight等软件中的代码折叠功能,都是非常好用,直到Vim也增加同样的功能。

Vim的代码折叠,除了可以根据语法外,还可以根据自定义的正则表达式来完成。

对于一般的程序代码而言,最简单的创建折叠的方法,就是按照代码语法创建折叠(set fdm=syntax)。之后可以zc折叠代码,zo打开代码。

剪贴板和寄存器

Vim中的每个字母都是一个寄存器,相当于有26个寄存器。寄存器既可以作为存储文本使用,也可以作为记录一组命令(宏)使用。

要复制一段选中的文本到寄存器,只要按下”{reg}y即可,其中{reg}可以是a~z的任何一个字母。不仅如此,我们还可以添加文本到寄存器中,方法是”{REG}y,区别就是把寄存器的名字变为大写。

要把寄存器的内容插入到文本中,需要按下”{reg}p。

这里有个特别的寄存器,就是+,它可以实现Vim和其他应用程序(Windows剪贴板或X11的剪贴板)的连接。所以,如果在Vim外用C+Insert(或CTRL+C)复制了文本,要粘贴到Vim中,只要按下”+p即可;反之,要把Vim的文本复制到其他应用程序中,则可以使用”+y。

如果要将Vim中的全文都复制到别的程序中,可以使用ggVG “+y。

寄存器还可以用来存储一组命令(宏),方法是q{reg},之后操作的命令都会被记录到这个寄存器中,@{reg}可以回放这组命令。同样的q{REG}可以向寄存器中添加命令。

如果对于整行的操作,复制文本也可以使用yy和p。

编写代码

当你用编辑器编写OO语言的程序(其实在普通的C语言中也可能),经常遇到每行的部分内容都一样的情况。例如,我们经常碰到这种情况:

  1. Obj.Instance[0].Data.Set.test1 = 1;
  2. Obj.Instance[0].Data.Set.test2 = 2;
  3. Obj.Instance[0].Data.Set.test3 = 3;
  4. Obj.Instance[0].Data.Set.test5 = 4;

这种情况,Vim可以借助I命令很好的快速完成这些工作(UltraEdit也有类似的功能,叫做Column Mode)。

先写这样的代码,把每行不同的部分打出来就可以了:

  1. 1 = 1;
  2. 2 = 2;
  3. 3 = 3;
  4. 4 = 4;

然后把光标移动到左上角的1的位置,并在Normal Mode中按下CTRL+V进入VISUAL BLOCK Mode;按3次j移动到4上面,这是第一列的1~4都被选中了。接着按I,输入前面的那部分“Obj.Instance[0].Data.Set.test”,然后按下ESC键。是不是所有选中行都出现了呢?

当然,如果你只是重复上一行的输入的话,在Insert Mode下,直接按下CTRL+Y,就可以复制上一行上同位置的字符。

而代码中的缩进,可以使用下面的命令实现:
SHIFT+>>:缩进Tab
SHIFT+<<:左移一个Tab

生成目录

对于本文这样的文本,每个标题都是使用<H3>标记的,所以Vim同样支持针对这样的文本,生成目录。

:vimgrep/{pattern}/%:根据{pattern}取得目录,对于这个文档,可以是^<\Ch3>。
:cw:显示目录
:CTRL+W H:将目录显示在左侧

标签(Tags)

Tag需要另一个工具叫ctags,可以从SourceForge上下载(Unix下比较省心,不需要安装)。所谓Tag,实际上实现的功能就是代码跳转。

在实现代码跳转前,首先要调用ctags生成标签文件。命令很简单,下面的命令就是对当前目录下所有的C文件生成标签:

  1. ctags *.c

具有标签文件后,只要在文件中按下CTRL+]就可以实现跳转。例如,代码中有个函数叫foo,如果看到别的地方调用这段代码,只要在调用的foo函数上按下ctrl+]就可以跳转到对应的定义位置。

.vimrc

.vimrc是Vim的配置文件,默认存放在$HOME中(Windows环境为%USERPROFILE%)。当然Vim并不一定要求配置文件一定存在上面的路径中,放在$VIMRUNTIME中也可以。

.vimrc可以提供对Vim的全部的配置,或者是对功能的扩充(可以写自己的script)。

这里提供一些配置:

对于GUI模式,自动展开语法菜单

  1. " Make Syntax menu expended to show each language syntax in the menu
  2. if has('gui_running')
  3. let do_syntax_sel_menu=1
  4. endif

设置UTF-8为默认编码方式

  1. " Make UTF-8 as default encoding
  2. if $LANG !~ '\.'
  3. set encoding=utf-8
  4. endif
  5. set fileencodings=ucs-bom,utf-8,gbk

对于未指定宽度的UTF-8编码文字,指定为双字节宽
设置本项,即可解决在UTF-8编码下,某些符号只显示半个

  1. " Set Unknown char as double byte
  2. " Refer to http://www-128.ibm.com/developerworks/cn/linux/l-tip-vim1/
  3. if has('multi_byte') &amp;&amp; v:version &gt; 601
  4. set ambiwidth=double
  5. endif

设置不兼容VI
Vim提供更多的功能,设置为不兼容模式后,则可以使用这些功能

  1. set nocompatible

设置自动缩进

  1. set autoindent

设置CTRL+S为保存的快捷键

  1. noremap  :update
  2. vnoremap  :update
  3. inoremap  :update

打开当前文件目录中的文件

  1. "   Edit another file in the same directory as the current file
  2. "   uses expression to extract path from current file's path
  3. if has("unix")
  4. map ,e :e =expand("%:p:h") . "/"
  5. else
  6. map ,e :e =expand("%:p:h") . "\\"
  7. endif

设置增量搜索,显示所有匹配项,并将F2作为取消高亮显示的快捷键

  1. set incsearch
  2. set showmatch
  3. " Key mapping to stop the search highlight
  4. nmap        :nohlsearch
  5. imap   :nohlsearch

提供与其他应用程序复制粘贴的快捷键

  1. " Key mapping to Cut/Copy/Paste from public register
  2. vnoremap  "+y
  3. vnoremap  "+x
  4. map  "+p
  5. cmap  "+p
  6. imap  "+p
  7. vmap  "+p

备份当前文件,并继续编辑

  1. " backup current file with a new name then start edit
  2. map  s   :up \| saveas! %:p:r-=strftime("%y%m%d")-bak \| 3sleep \| e #

重新对代码调整缩进

  1. gg=G
Tags: ,
Posted by Wei@15:39 11/11/2008 in Computer Science | Permalink | Trackback | No comments.

中国移动手机用户配置

在这里保留一下中国移动手机的一些配置信息。先说好是给我自己保留用的。因为如果你用行货手机,这些通常是不需要配置的。而水货的话……

WAP连接:

接入点:cmwap
代理服务器:010.000.000.172:80

WAP连接可用于彩信、一般网页浏览等。

GPRS连接:

接入点:cmnet
代理服务器:(无)

GPRS连接可用于大流量数据访问,包括电子邮件(在我的手机上,Push mail只能用GPRS连接)。

彩信设置:

彩信服务中心地址:http://mmsc.monternet.com/

Posted by Wei@21:18 9/09/2008 in Computer Science | Permalink | Trackback | 6 Comments.