Archive

Archive for February, 2007

Hidden Details from the iPhone Keynote

February 26th, 2007 No comments
Categories: Uncategorized Tags: ,

Vim中编辑不同编码的文件的方法

February 26th, 2007 1 comment

先来说一下Vim中编码的基础内容:

Vim中存在3个与编码相关的变量:

  • encoding – 用于buffer、script、register的编码设置,与system locale相同
  • fileencoding – 写入文件的编码类型。如果为空,就使用encoding的设置,所以默认情况就是system locale
  • termencoding -输出到terminal的编码类型。默认为空值,也就是输出到terminal的时候不做转换

文件的编码类型和自动识别:文件编码类型并非保存在文件内的,也就是说没有任何描述性的字段来记录文档是何种编码类型的。因此我们在编辑文档的时候,要么必须知道这文档保存时是以什么编码保存的,要么通过另外的一些手段来断定编码类型。这另外的手段,就是通过某些编码的码表特征来断定,例如每个字符占用的字节数,每个字符的ascii值是否都大于某个字段来断定这个文件属于何种编码。这就是vim的自动编码识别机制。但这种机制由于编码各式各样,不可能每种编码都有显著的特征来辨别,所以是不可能100%准确的。对于GB2312编码,由于其中文是使用了2个acsii值高于127的字符组成汉字字符的,因此不可能把gb2312编码的文件与latin1编码区分开来,因此自动识别编码的机制对于gb2312是不成功的,它只会将文件辨识为latin1编码。此问题同样出现在gbk,big5上等。因此在编辑此类文档时,需要手工设定encoding和fileencoding。如果文档编码为utf-8时,一般vim都能自动识别正确的编码。

客户运行vim的终端所使用的编码类型:这将决定vim输出内容到终端时使用的编码,如果此编码类型和终端认为它收到的数据的编码类型不同,则又会产生乱码问题。在linux本地X环境下,一般终端都认为其接收的数据的编码类型和系统locale类型相符,因此不需关心此方面是否存在问题。但如果牵涉到远程终端,例如ssh登录服务器,则问题就有可能出现了。例如从1台locale为GB2310的系统(称作客户机)ssh 到locale为utf-8的系统(称作服务器)并开启vim编辑文档。在不加任何改动的情况下,服务器返回的数据为utf-8的,但客户机认为服务器返回的数据是gb2312的,按照gb2312来解释数据,则肯定就是乱码了。这时就需要设置termencoding为gb2312来解决这个问题。此问题更多出现在windows desktop机远程ssh登录服务器的情况下,这里牵扯到不同系统的编码转换问题。所以又与windows本身以及ssh客户端有很大相关性。在 windows下存在两种编码类型的软件,一种是本身就为unicode编码方式编写的软件,一种是ansi软件,也就是程序处理数据直接采用字节流,不关心编码。前一种程序可以在任何语言的windows上正确显示多国语言,而后一种则编写在何种语言的系统上则只能在何种语言的系统上显示正确的文字。对于这两种类型的程序,需要区别对待。以ssh客户端为例,如果使用的putty是unicode软件,而secure CRT则是ansi 软件。对于前者,要正确处理中文,只要保证vim输出到终端的编码为utf-8即可,就是termencoding=utf-8。但对于后者,一方面要确认windows系统默认代码页为cp936(中文windows默认值),另一方面要确认vim设置的termencoding=cp936。

常见问题1:Terminal和system locale都被设置为utf-8,但编辑的文件是GB2312或者GBK 编码的。这时在Vim通常会显示为乱码。(前面说过,这将导致Vim的自动编码识别把文件错误地识别为latin1。这时的encoding=utf-8,fileencoding=latin1,termencoding=<empty>。)

解决方法:修正fileencoding为对应的文件编码方式为cp936或者euc-cn(这两个是一个东西,只是名字不同):

:edit ++enc=cp936

或者简写为

:e ++enc=cp936

(注意不能用set fileencoding=utf-8这种方式,因为这种方式实际上是修改了文件保存的编码,而非load的编码)。

另一种方法是临时改变Vim启动环境的locale,设置LANG=zh_CN。此时的encoding=euc-cn

常见问题2:一台Windows主机上ANSI的程序SSH到system locale为utf-8的主机上,并编辑文件。(此时:encoding=utf-8,fileencoding=latin1,termencoding=<empty>)

解决方法:设置termencoding=cp936。或者用同样修改system locale(如上)。

Categories: Computer Science Tags:

好书推荐:《圈子圈套》

February 25th, 2007 No comments
Categories: book Tags: , ,

Flash小游戏:Hewitt

February 25th, 2007 No comments

Hewitt.jpg

有意思的 Hewitt 冒险记,游戏中的主角是一个 Geek,一夜他梦见自己变成了一个老人,有人告诉他如果没有破解这个程式将会永远孤独。由此,Hewitt 开始了冒险之路,画面和效果相当可爱,不妨跟着 Hewitt 一起经历一次异想天开的冒险

Categories: game Tags: , ,

10 things you should know about every Linux installation

February 24th, 2007 1 comment

November 18, 2005
Update – 11/18/2005: This article is also available as a TechRepublic download.

Takeaway:
There are numerous common features with every Linux installation. This document lists 10 of the more important ones you should know about.
By Jeffrey G. Thomas

Linux is not Windows, and although there are some similarities, you must realize that there may be a few “new ways of doing things” to learn before you can be comfortable in Linux. Linux is an open-source clone of UNIX, a secure operating system (OS) that predates DOS and Windows and is designed for multiple users. The items in the following list generally apply to any UNIX-based *nix system, such as Linux and the various BSD’s. For the purposes of this article, assume that it’s all Linux.

Read more…

Categories: Computer Science Tags: , ,

How to use OpenID

February 24th, 2007 1 comment

By Simon Willison

OpenID lets you log in to different sites without having to create a new username and password for each one. This screencast demonstrates OpenID in action.

(If you need a high-quality MPEG-4 movie, please refer to the video by the author.)

Original post: http://simonwillison.net/2006/openid-screencast/

Categories: Computer Science Tags:

春节的北京交通真是好

February 20th, 2007 No comments

大年初三,一早就开车出去玩儿,从早上7点多开车出去,一直到晚上7点多开车回来,全程居然都完全没有堵车,环路和快速路上都能保持80km的车速。

早上7点从方庄开车到成府路(方庄-南2环-西2环-西直门北大街-学院路),只用了25分钟。这倒是没觉得什么,反正早上早点儿出来,一向都是不怎么堵车的。而晚上回来的时候,同样的路线,居然也只用了30分钟。

唉,要是北京交通总这么好该是件多么幸福的事情啊~~~~

Categories: diary Tags: ,

开了张新的北京本地的招商银行一卡通金卡

February 18th, 2007 2 comments

北京从一开始就没有对个人开放一卡通金卡。今天去招行柜台,发现北京现在也可以开一卡通金卡了,只不过和以前的一卡通金卡不一样,这次的是银联标准卡(6226的),没有Vista/MasterCard标志,但背面也写着全球通用,怪异。

柜台的MM在我的资产上产生了疑问,因为我的所有招行存款存款只有4万多(MM给我一张一张算的),不足金卡要求的5万资产的要求。其实我还有财富帐户上的股票和基金等。早就超过5万了。MM说他们看不到我的股票和基金的信息,所以他们能看到的资产只有4万多,但他们凭我口述的,已经超过5万了,就也没忧郁,给我开了新卡。

这里我倒是有了个疑问。是不是说即便没有5万的资产,就说除去现金外,还有5万的股票,就可以了呢?反正他们看不到股票。

这次我倒是觉得招行在“告知”上做的不错,有什么费用,有什么其他的功能等,都一一告诉我了(虽然我都知道了)。

按照招行说的,一卡通金卡的作用对我这种已经持有金葵花的,意义还真不是一般的没用:

  • 加塞:在排队机上,刷金卡可以产生独立于一般客户的号码,优先排队
  • 在老系统地区下,异地存取款免费;新系统地区下,异地存取款手续费半价
  • 快意理财2.0版:不需要每笔交易2块钱的手续费,而是只需要交易本身的费用(快意理财大众版除了交易本身的费用,还要每笔2块钱快意理财手续费)

不过还是忘了问,本地跨行ATM怎么收费了:(

Update 2/23 23:32:经过和95555的DD联系,北京发行的一卡通银联金卡,在本地跨行ATM取款,仍然收费2元/笔;所谓的“全球通用”就是指23个国家的银联消费网络和花旗(还是汇丰来着)的国际ATM网络。

Categories: banking Tags: , ,

重回Linux(2)——Post-installation

February 17th, 2007 No comments

第一步把基本系统装好了,进入系统,X Window已经将我的nVidia的显卡配置好了。默认分辨率1600×1200@60Hz,看着实在是费劲。去Admin里面把Screen Solution重新设置为1280×1024@85Hz。

Ubuntu的确是汲取了很多Windows中优秀的东西,包括Automatic Update。刚刚装好的系统,右上角的Notification Area就提示了有更新的package要装。更是简单到只要点一下更新的图标,再点一下OK,就可以自动完成更新了。

这里有个不是很爽的东西,Ubuntu(包括Debian)的aptitude,如果他正在工作(下载或安装package),就不能同时开启另一个进程工作。也就是说,如果你在更新系统,那么无论是apt-get还是aptitude,还是Ubuntu的Package Manager都是无法工作。

当然,如果是tarball的package还是可以安装的。

花了将近1个小时下载并安装了全部的更新,其中包括一个linux-kernel-i386-2.6.17-11-generic的package。这里着重说一下,在后面的过程中,正式因为这个新的内核导致了其他的问题。

更新完成重新启动系统,却发现显示分辨率变成了800×600@60Hz了,而且只能从800×600和640×480中进行选择。这其实就是已经存在的nvidia-glx的package和新的内核不兼容。(当初装Debian的时候,就遇到过类似的问题)。

作为暂时的处理方法,先把老内核作为GRUB的默认选项了。至于新内核,我想了一下,-10和-11估计也没什么太大的差距,先凑合用了。

Update 2/23 20:43:翻了翻网上的方法,其实简单的要命。装一下nvidia-glx(如果显卡在“列表”中的最下面部分,就要装nvidia-glx legacy)。然后修改/etc/X11/xorg.conf文件:1、在Module中添加Load “glx”;2、在显卡配置中,将Driver “nv”换成Driver “nvidia”。重启,搞定。

接下来安装en-us环境下的中文支持。Ubuntu在中文支持上和早期的Debian相比,已经有了很大的提高了。想当初早期的Debian Woody默认安装后,是无法显示中文的,所有的中文字符都显示为1个方框,方框的4个角上分别写着1个数字。而现在的Ubuntu Edgy默认就可以显示所有的字符了,虽然看起来并不是那么漂亮。

我打算用文泉驿的字体(当然,用simsun或者Windows Vista中的微软雅黑都可以,只是复制不同的文件而已)。这里有个脚本,可以直接从文泉驿网站上下载nightly build的字体问题,并且自动安装。

[coolcode]
#!/bin/sh
sudo apt-get install build-essential bdftopcf
mkdir temp
cd temp
wget http://wenq.org/daily
tar xzf wqy*
cd wqy*
make
sudo rm *b.pcf
if [ ! -d /usr/share/fonts/wqy-bitmapfont ]
then
sudo mkdir /usr/share/fonts/wqy-bitmapfont
fi
sudo mv *.pcf /usr/share/fonts/wqy-bitmapfont
cd ../..
rm -r temp
sudo fc-cache -fv
if [ -f /etc/fonts/conf.d/30-debconf-no-bitmaps.conf ]
then
sudo unlink /etc/fonts/conf.d/30-debconf-no-bitmaps.conf
fi
[/coolcode]

chmod到755,然后run一下就行了。

仅仅这样做还是不够的,还要修改字体的配置文件/etc/fonts/fonts.conf:
[coolcode]


serif

DejaVu Serif Bitstream Vera Serif Times New Roman Thorndale AMT Luxi Serif Nimbus Roman No9 L Times Frank Ruehl FreeSerif MgOpen Canonica Wenquanyi Bitmap Song Kochi Mincho AR PL SungtiL GB AR PL Mingti2L Big5 MS 明朝 Baekmuk Batang sans-serif DejaVu Sans Bitstream Vera Sans Verdana Arial Albany AMT Luxi Sans Nimbus Sans L Helvetica Nachlieli FreeSans MgOpen Moderna Wenquanyi Bitmap Song Kochi Gothic AR PL KaitiM GB AR PL KaitiM Big5 MS ゴシック Baekmuk Dotum SimSun monospace DejaVu Sans Mono Bitstream Vera Sans Mono Andale Mono Courier New Cumberland AMT Luxi Mono Nimbus Mono L Courier Miriam Mono FreeMono Wenquanyi Bitmap Song Kochi Gothic AR PL KaitiM GB Baekmuk Dotum [/coolcode]最后安装输入法:
sudo apt-get install im-switch scim-pinyinim-switch -s scim-pinyin

基本搞定。。

Categories: Computer Science Tags: , , ,

重回Linux(1)——Ubuntu

February 16th, 2007 No comments

已经装过好几次Linux了,从Slackware到Redhat,再到XTeam、Debian;但每次都是因为很多原因,恢复了Windows。这次决定重回Linux,改用Ubuntu Edgy Eft (v6.10)。

这次之所以选择Ubuntu,首先是因为Ubuntu是基于Debian的一个Open Source的Linux系统,与Debian的“大家投票”的更新形式不同,Ubuntu是有专人(Triage?)决定他采用或者不采用哪些功能或者包。

要安装Ubuntu非常简单,如果是全新系统,而且只安装一个系统,甚至比Windows的安装更加简单。

直接从Ubuntu首页(http://www.ubuntu.com/)上下载最新的版本就行了(到目前为止,Ubuntu的最新版本是Edgy Eft,也就是Version 6.10)。

Ubuntu的版本号比较奇怪,6.10表示它是在2006年10月发布的。上一个版本Dapper Drake是6.06。

如果想得到更多的支持,可以试试看Dapper,因为Dapper是LTS(Long Term Support)的。不过也无所谓,Open Source的最大优点就是有广泛的人使用和支持。

Ubuntu的最近几个版本如下:

  • Warty Warthog (4.10)
  • Hoary Hedgehog (5.04)
  • Breezy Badger (5.10)
  • Dapper Drake (6.06)
  • Edgy Eft (6.10)

我在下载到Ubuntu光盘镜像后,遇到了个比较棘手的问题。Ubuntu CD是715MB的,而我手里的CDR都是650MB的。没辙,既然先决定要装了,就凑合一下吧。找了张DVD-R给刻了。

Ubuntu CD是个Live CD,意味着即使不安装,也可以直接在光盘上运行。安装更是简单到点击Install图标就可以了。

安装过程还是非常简单的,却在分区中遇到了问题。我因为以前装过Debian,所以就决定用类似的方法手工分区。计划是这样的:

分区 加载点 容量 文件系统
hda1 /boot 32MB ReiserFS
hda2 / 10GB ReiserFS
hda3 swap 1GB Swap
hda5 /var 4GB ReiserFS
hda6 /home 60GB ReiserFS
hda7 /usr 40GB ReiserFS

结果有问题,安装都快结束了,提示了一个Install GRUB failed! (fatal error: ‘grub-install’ failed)。想了半天也没感觉有问题啊,然后进入一个Terminal,手工安装GRUB,却提示Can’t find /boot。很怪异。

想来想去,还是暂时放弃了。除了swap,/usr,/home外,都使用一个分区了。结果就变成这样了:

分区 加载点 容量 文件系统
hda1 / 14GB ReiserFS
hda2 Swap 1GB Swap
hda5 /home 60GB ReiserFS
hda6 /usr 40GB ReiserFS

暂时是搞定了。接下来升级系统,发现Edgy居然也有这么多安全更新和包的更新。接下来就是该处理了中文支持了(其实默认情况下,中文已经可以显示了。)

Categories: Computer Science Tags: , , ,