2004年10月09日

Gmail终于推出了它的Windows客户端——Gmail Notifier。

http://toolbar.google.com/gmail-helper/

根据官方网站上的介绍,该客户端将在系统托盘中添加一个图标,当有新邮件到来时,该程序会自动弹出一条消息进行提醒。作了一个测试,向自己的Gmail中发送了一封邮件,大约发出一分钟之后,Gmail Notifier就弹出了新邮件提示。

但是实际上这个工具并不是很有用。在我看来,Gmail最应当改进的应该是它的编码。虽然说UTF-8编码能够支持任何语言,但是目前的状况是,没有任何一家Webmail能够直接阅读UTF-8编码的邮件,这就等于使用Gmail不能给任何使用其他邮件提供商的人发邮件——因为你不能期待着别人在阅读你的邮件时手动转换内码,也不能期待别人一定会使用邮件客户端来阅读邮件。关于这一点,Gmail应当提供给用户能够自己指定邮件编码的选项,让发件人能够有意识地根据收件人的系统情况来选择适当的编码。

感觉很像Hotmail和MSN的表现一样。另外根据Gmail的新特性介绍,最近推出的新功能还包括联系人搜索、邮件转发等功能,而且邮件转发功能很可能会在Gmail正式提供服务时进行收费。

2004年10月06日

本文参考了vim官方网站的文档http://www.vim.org/tips/index.php。为了查找方便起见,文中的技巧编号沿用原文档中的编号。

26. 当打开DOS格式文件时,每行的行末都会出现^M的字符。使用如下命令可以将DOS文件转换成Unix格式文件:

:%s/^M$//g

注意,^M的输入方法是Ctrl-V Ctrl-M。

28. 使用如下命令给正在编辑的文件添加行号:  :%!cat -n

29. 颠倒整个文件中所有行的顺序:  :g/^/m0

30. Ctrl-A 可以将光标所在位置处的数字加一,Ctrl-X可以将光标所在位置处的数字减一。

39. 关于undo和redo:  u 命令为取消上一个操作;U 为取消当前行的所有操作,即恢复当前行到原始状态;Ctrl-R为重复刚刚取消的操作。

40. 下面几个例子:

:r foo.txt       将foo.txt插入到当前光标的位置
:0r foo.txt      将foo.txt插入到第一行之前
:r !ls           在当前光标处插入文件列表
:$r !pwd         在最后一行的下方插入当前路径

44. 用 . 命令重复上一次编辑命令。用 @: 命令重复上一次在命令行上执行的命令。

47. 用 xp 来交换两个字符,用 ddp 来交换两行。

66. 在两个不同的 vim 之间复制文本:

” transfer/read and write one block of text between vim sessions
” Usage:
” `from’ session:
“     ma
“     move to end-of-block
“     xw

” `to’ session:
“     move to where I want block inserted
“     xr

if has(“unix”)
  nmap xr   :r $HOME/.vimxfer<CR>
  nmap xw   :’a,.w! $HOME/.vimxfer<CR>
  vmap xr   c<esc>:r $HOME/.vimxfer<CR>
  vmap xw   :w! $HOME/.vimxfer<CR>
else
  nmap xr   :r c:/.vimxfer<CR>
  nmap xw   :’a,.w! c:/.vimxfer<CR>
  vmap xr   c<esc>:r c:/.vimxfer<cr>
  vmap xw   :w! c:/.vimxfer<CR>
endif

67. 使用 ga 可以看到光标下的字符的ASCII值。

72. 删除所有空行:   :%g/^$/d

 

2004年10月05日

我安装的操作系统是Fedoa Core 2,编译LFS时遇到了一点点小问题。我使用的是LFS5.0。在创建临时工具链时,第一步的binutils-2.1.4正常编译,但是第二步试图编译gcc-3.3.1,运行configure时出现了如下的错误:

/tools/bin/ld: unrecognized option ‘–as-needed’
/tools/bin/ld: use the –help option for usage information

如果删除第一步编译出的/tools/bin/ld,那么gcc就能够正常编译,可见确实是第一步编译的binutils的问题。查了一下资料,在gcc的主页上找到了这样的说明:

Accept (and ignore) –as-needed/–no-as-needed options from GNU binutils
2.15 in our GNU binutils 2.14 to resolve a chicken and egg problem under
platforms (like Fedora Core 2) which already run GNU binutils 2.15: the
vendor cc(1) knows that it has ld(1) from GNU binutils 2.15 and hence
always uses the –as-needed option when calling ld(1). Unfortunately,
between having built “binutils” and “gcc” packages, this will break
OpenPKG because the vendor cc(1) would run the OpenPKG ld(1) with an
option it (still) does not understand. The only workaround is to let our
ld(1) accept and ignore this option. Once our cc(1) from “gcc” package
is installed, the problem is gone, because our “gcc” package correctly
detects that our ld(1) still does ot understand –as-needed.
(
http://gcc.gnu.org/ml/gcc-help/2004-08/msg00052.html)

大意就是,Fedora Core 2自带的binutils版本是2.1.5,该版本的ld支持–as-needed参数,因此使用该版本的ld编译出的gcc就会认为ld能够识别–as-needed参数,以后就会永远给ld传递这个参数。不幸的是2.1.4版的ld并不识别该参数,于是就出现了错误。

我的解决方法是,先编译binutils-2.1.5,再用编译出的ld-2.1.5去编译gcc-3.3.1,然后再用编译出的gcc-3.3.1去编译binutils-2.1.4,并使用编译出的ld-2.1.4替换原有的ld-2.1.5,再用ld-2.1.4再次编译gcc-3.3.1。结果问题就解决了,但是根据上文的说法,我的方法应该会失败才对——因为第一遍编译出的gcc-3.3.1应该也会认为ld支持–as-needed的——为什么第二遍编译gcc时能够成功?

本文参考了vim官方网站的文档http://www.vim.org/tips/index.php。为了查找方便起见,文中的技巧编号沿用原文档中的编号。

1. 使用 * 键可以向后搜索光标所在位置的单词。反之,使用 # 键可以向前搜索光标所在位置的单词。第一次使用 * 或者 # 进行搜索之后,则可以使用 N 或 Shift-N 继续进行搜索。另外,如果设置了hlsearch选项(:set hlsearch)的话,那么使用 * Shift-N 则可以标记当前的单词为高亮显示。

2. 经常会遇到这样的情况,就是在命令行上输入含有一个长长的路径的命令 vi /home/username/linux/src/dir1/dir2/dir3/srcfile.c,编辑结束之后发现需要编辑同一目录下的另一个文件,这时不得不在vi中重新输入长长的路径。而将下面的脚本放在vimrc文件(Unix下为~/.vimrc,Windows下为_vimrc)中即可快速输入路径:

“   Edit another file in the same directory as the current file
“   uses expression to extract path from current file’s path
“  (thanks Douglas Potts)
if has(“unix”)
    map ,e :e [C-R]=expand(“%:p:h”) . “/” [CR]
else
    map ,e :e [C-R]=expand(“%:p:h”) . “\” [CR]
endif

这样编辑完第一个文件之后,在vi中输入 ,e ,然后就可以利用Tab键进行自动补齐了。注意上面代码中的[]符号,实际输入的时候需要换成小于号和大于号(由于blog自身原因,小于号和大于号不能直接输入)

4. 单词自动补齐:输入一个单词(例如函数、变量名等)的开头几个字母,然后按Ctrl-N或者Ctrl+P键,vim会在当前文档中查找匹配的单词并自动将输入补齐。

6. 使用 % 键可以查找匹配的括号。

7. 使用 [{ 和 ]} 命令可以跳转到光标所在程序块的开头和结尾。

8. 如果当前光标处的单词是一个局部变量,则使用 gd 来跳转到该变量的定义处;如果当前光标处的单词是全局变量,则使用 gD 来跳转到该变量的定义处。

9. [i 命令可以快速察看光标所在位置的变量的定义,[d 命令可以快速察看光标所在位置的宏的定义。

10. 流行的文本编辑器通常都有前进和后退功能,可以在文件中曾经浏览过的位置之间来回移动。在 vim 中使用 Ctrl-O 执行后退,使用 Ctrl-I 执行前进。
相关帮助:  :help CTRL-O  :help CTRL-I   :help jump-motions

12. 如果想在源程序中不使用TAB键并保证缩进为四字符,那么在 vimrc 中加入下列设置:

        set tabstop=4
        set shiftwidth=4
        set expandtab

13. 使用 set incsearch 之后可以在键入搜索关键字时即时显示匹配的位置。

14. 使用 set hlsearch 可以将匹配进行高亮显示。进行一次搜索之后,执行 :nohlsearch 或 :noh 可以暂时关闭本次搜索结果的高亮显示。而使用 :set nohlsearch 则可以永久关闭搜索高亮显示。
可以将:noh命令映射到一个键上,例如:nmap <silent> <C-N> :silent noh<CR>,这样就可以使用Ctrl-N来关闭高亮显示。

 

如果怀疑系统出了什么问题,那么在解决问题之前首先要做的就是收集系统信息以便分析到底哪里出现了异常。仅仅使用Windows XP自带的工具就能够获取足够多的信息。

net start
查看系统中启动了哪些服务。

net use
查看系统中映射了远程计算机的哪些共享。

net share
查看系统中有哪些共享资源。

net user
查看系统中的所有用户。更进一步,可以使用 net user username来查看指定用户的详细信息。

net localgroup
查看系统中有哪些用户组。

netstat -ano | find “LISTENING”
查看系统正在监听哪些TCP端口,以及打开这些端口的进程的进程ID。这通常在分析病毒时起着很大的作用。

netstat -anp udp
查看系统打开了哪些udp端口。

 tasklist
查看系统中的所有进程。将上面提到的netstat -ano | find “LISTENING”命令相结合,即可知道打开某个端口的进程的进程名。
与本命令相关的还有一个称为 tskill 的命令,该命令的作用是杀死指定的进程。用法是 tskill 进程ID|进程名。

msinfo32
该工具是一个图形界面工具,其中最重要的信息就是左侧树中的“正在运行的任务”一项。通过该项可以得知某个进程所对应的可执行文件的位置。通常该工具与前面所提到的查看TCP监听端口命令和查看进程命令联合使用,以便能够精确定位到打开某指定端口的应用程序(或者是病毒、木马)的位置。

ipconfig /all
查看详细的IP地址配置信息。

route print
查看路由表。

reg query HKLM\Software\Microsoft\Windows\CurrentVersion\Run
查看系统启动时所运行的程序。reg命令为命令行下的注册表操作工具。

 

前天晚上在拔键盘的时候不小心把正在读写数据的移动硬盘数据线拔掉了,结果导致电脑立即死机。我的主板本来就不稳定,所以也没怎么在意,谁知重起之后却无法进入WindowsXP了。切换到Windows2000,也是起不来。没办法切换到安全模式下检查硬盘,把所有的硬盘全部查了一遍,这下Windows2000可以正常使用了,WindowsXP虽然能启动,但是一进桌面就会重起。百思不得其解,绝望之下打算重装系统了。

第二天(就是昨天)正在打算重装系统时,怀着侥幸的心理再次试图进入WindowsXP,没想到这次居然成功启动了。这下大概不需要重装系统了。但是不一会儿诺顿就开始报告发现病毒W32.Dabber.B和W32.Spybot.Worm。我心想,原来是病毒搞的鬼,这样知道原因之后就好解决多了。

去诺顿的主页上找专杀工具,未果。又在诺顿网站上翻出了这两个病毒的介绍并打印出来,之后拔网线,以减小传播给同一个局域网内其他机器的可能,并通知其他用户检测病毒。仔细地阅读了一下这两个病毒的说明,原来就是简单的蠕虫,首先利用系统的漏洞感染主机,然后修改注册表使自己能够在系统运行时启动。

病毒所利用的漏洞如下:
The Microsoft Windows Local Sevice Remote Buffer Overflow (MS04-011)

知道了病毒的原理之后就容易杀掉了。首先按照诺顿的建议,切换到安全模式下全盘杀毒。但是查完C盘之后居然没有找到任何病毒,明明刚才实时监控还报告病毒存在,并且我都在系统目录下看到了病毒文件——一气之下决定手动杀毒。首先查看监听端口,发现有一个进程打开了数十个监听端口,于是立即判断该进程为病毒。结束掉病毒进程,然后按照病毒说明来查找注册表,结果在HKLM/Software/Microsoft/Windows/CurrentVersion/Run下发现了如下几个键值:

“Microsoft Update”=phqghumea.exe
“Update Machine”=winm.exe
“Windows secure”=setver32.exe
“NDLS Adapter”=windows.exe

显然是病毒创建的,没说的,删除该键值并删除相应文件,重起。清静是清静了,可是没过五分钟,系统中又被打开了数十个监听端口,再一看病毒又复活了。再杀,杀完之后又复活,如此反反复复了好几次,最后实在是没有办法了。后来偶然想到最近一直没有做Windows Update,是不是又有什么新的补丁了?赶快到微软去检查了一下,发现了如下这个补丁:

KB835732, The Microsoft Windows Local Sevice Remote Buffer Overflow (MS04-011)

正好是病毒所利用的漏洞。没说的,赶快更新。更新之后运行了一个小时,病毒也没有再复活了。

从病毒资料来看,该病毒是10月3日更新的,正好与我中病毒的时间10月4日相吻合。

总结:这次中毒的主要原因就是没有及时地为系统打补丁。究其原因,由于前一阵子xpsp2发布,系统中的自动更新就下载了sp2的安装包,但是我不想装sp2,所以自动更新就没有再继续帮我下载新的补丁。而这几天也疏于到微软网站上去更新,因此给了病毒可乘之机。

最后修改了一下Windows Update的设置,修改成“当有新的可用更新时通知我,但不自动下载或安装”,这样自动更新会通知说sp2可用,然后取消掉sp2更新的话,以后检查时就会将sp2忽略了。

参考:
Symantec Security Response: W32.Spybot.Worm, http://securityresponse.symantec.com/avcenter/venc/data/w32.spybot.worm.html
Microsoft Security Bulletin MS04-011, http://www.microsoft.com/technet/security/bulletin/ms04-011.mspx

2004年10月04日

设置如下环境变量:
    export http_proxy=proxy_ip:proxy_port
如果是ftp代理的话则为
    export ftp_proxy=proxy_ip:proxy:port 例如
export http_proxy=10.1.1.2:8080
注意代理IP的前面不要加http://等

2004年10月01日

最近一直在听Ayu的INSPIRE这首歌。虽然不算是新歌了,但是感觉很流畅,而且很喜欢MV中Ayu的那很妖艳的装束。歌词不是很懂。

INSPIRE

ふさわしそうな笑顔選んで
もっともらしいセリフ並べて 頭んなか真っ白で

感情なくしたフリはそろそろ終わりにして

※そう人はひとりじゃ生きれない
そんな当たり前の事とか
そう愛だってなきゃ生きれない
今更身に染みてる※

△もうこんな時代だからって
それってどういう言い訳
ねぇ愛だとか夢だとかを
口にする事は カッコ悪い事なんかじゃない△

誰に向けた言葉なのか
何のための過程なのか
生きるって何なのか

もしも確かな答えがあったらつまんないよね

○もう迷う必要なんてない
守りたいものならわかってる
もう引き返す事は出来ない
そんなの承知の上○

☆そう何度だって立ち上がる
壁なんて壊してしまえばいい
ねぇまだまだこれからなんじゃない
道が続く限り 扉なら開いてけばいい☆

(※くり返し)
(△くり返し)
(○くり返し)
(☆くり返し)

2004年09月28日

最近偶然得到一张天堂2的三天免费试玩帐号,于是在朋友的鼓动下尝试了一下。正好昨天刚刚装了A3,但是一进入游戏之后马上就感觉游戏的图像做得太差,远远达不到游戏海报中给人的期待,所以立刻删掉了。今天试试天堂2,都说天堂2的图像质量非常棒,倒要看看这个非常棒的画面质量究竟如何。

首先是安装客户端。别看只有两张盘,安装之后竟然有2.82G,由此也许能看到该游戏的图像质量能达到什么程度。

安装完毕之后启动游戏。一进入游戏,界面十分漂亮,有种耳目一新的感觉。之后是创建人物。能够选择的种族有五种,人类、精灵、暗夜精灵、兽人,还有矮人。我选择了一个暗夜精灵的男性战士。

进入游戏后首先看到的就是暗夜精灵族的大厅。游戏十分容易上手,旁边有十分详细的游戏帮助,一步步指导游戏者如何进行操作如何获取任务等。但是我玩惯了暗黑破坏神,对天堂2的这种3D操作方式不是很习惯。游戏设定为左键移动,右键拖动改变视角,中键180度转换视角,滚轮缩放。刚开始时经常控制不好视角,而且走着走着就会不知道东南西北了。好在后来慢慢地熟悉了操作,也能够慢慢地根据任务提示去寻找任务线索了。

领到的第一个任务是杀小狼寻找4个狼牙。任务比较容易完成,出了大厅之后慢慢地杀狼就可以了。体力不济时可以通过坐下的方式来加速体力恢复。完成任务之后回去交任务。

第二个任务是要向村子里的三个人去要三件物品以进行暗黑弥撒。按照雷达上的指示,朝着黄点的方向走,就到了村子中。可是找这三个人倒颇费了一番周折。我的显卡是GeForce4 MX420,跑天堂2应该没有问题,但是也许因为驱动程序的问题,所以经常会出现贴图错误,无形中给游戏增加了难度。不过最后还是终于找到了三个人,拿了东西回去送给祭司完成了任务。

可惜今天时间太晚了,所以完成了三个任务之后只好下线了。不过实在是不太习惯3D的RPG游戏,尤其是游戏的控制觉得十分不顺手,所以估计是不会对这个游戏感兴趣了。

2004年09月27日

今天把这一部分的东西总结了一下写在这里了,欢迎大家参考。

http://charlee.nease.net/document.xml