Tuesday, August 28, 2007

不好用的 Cygwin 的 vi

一直以为 Cygwin 的 vi 特别不好用,特别是在输入模式(i)下,小键盘的表现很奇怪。
其实,是自己太菜了,在主目录下建一个 vi 的配置文件就万事OK了。
islue@localhost ~
$ locate vimrc
/usr/share/vim/vim71/vimrc_example.vim

islue@localhost ~
$ cp /usr/share/vim/vim71/vimrc_example.vim .vimrc

Monday, August 20, 2007

alternative solution of port forward

ssh的port forward很方便又很不方便,如果网关代理服务器支持nc命令的话,试试这个。
[localhost ~]$ cat .ssh/config
Host 192.168.0.100
ProxyCommand ssh 192.168.0.1 "nc %h %p"

192.168.0.100: 内网目标服务器
192.168.0.1: 网关代理服务器

Wednesday, May 23, 2007

小发现

观察 df 的输出
[localhost ~]$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 2.0G 1.3G 623M 68% /
/dev/sda3 6.9G 3.2G 3.4G 49% /usr/local
/dev/sda8 2.0G 118M 1.8G 7% /usr/local/tmp

以比较明显的第二行为例,可以发现
Size > Used + Avail

原因是系统为特权用户保留了一部分空间。所以,Avail 的含义其实是非特权用户的可用空间,并且可能为负。

然后呢,在使用一些工具时就要注意了,比如 HotSaNIC,它生成的磁盘容量使用图表中的 free 是不同于 df 的 Avail 的。

HotSaNIC.free = df.Size - df.Used

在磁盘空间快耗尽的时候,不要被它麻痹了。

Thursday, May 17, 2007

MySQL Community Server 5.0.41 is released

其中,我最关注的 bug fixed 是这个:

Loading data using LOAD DATA INFILE may not replicate correctly (due to character set incompatibilities) if the character_set_database variable is set before the data is loaded. (Bug#15126)

摔过跟头,自然印象深刻。

Sunday, April 15, 2007

删除文件或文件夹时出错

无法删除 i-am-a-sample: 文件正在被另一个人或程序使用。
关闭任何可能使用这个文件的程序,重新试一次。

相信大多数人都见过这个错误消息,而且有时候对于“任何可能使用这个文件的程序”会很困惑,最后只能重启电脑。在一次忍无可忍的经历后,我终于决定去找一个第三方软件来帮我解决这个问题。也许是 old 了,但还是推荐一下:unlocker,它能帮你找出“任何可能使用这个文件的程序”。

Thursday, April 05, 2007

谷歌拼音输入法

解脱了,总算用上了一款还算顺手的输入法。

自己一直是用紫光的,也久仰搜狗大名,无奈工作环境是日文操作系统,谁也不顶。还是 Google 好,赞一个。

Sunday, March 25, 2007

PuTTYcyg

PuTTYcgy,一个 PuTTY 的改版,可使用 PuTTY 作为本地 Cygwin 终端。

在这之前,我有两个选择。
Cygwin 的自带终端。缺点,主要是复制粘贴不方便,要同时用到鼠标和键盘。
Cygwin 的 X Term。缺点,本地要起 X Server,开销比较大。

说明一下 putty 的快捷方式的创建方法。

首先,打开 putty,修改好各项设置后保存,假设 Session 名为 cygwin。
然后,再创建一个 putty 的快捷方式,把“目标”设置为
\path\to\putty.exe -load "cygwin"

顺便提一下,hoekey 是个创建键盘快捷方式的好工具。

参考链接:
PuTTY - How can I create a Windows shortcut to start a particular saved session directly?

Wednesday, March 07, 2007

MySQL 子查询一例

到目前为止,MySQL 还不能支持这样的操作,子查询的 FROM 字句和更新/删除对象不能使用同一张表。
mysql> DELETE FROM tab1 WHERE col1 = ( SELECT MAX( col1 ) FROM tab1 );
ERROR 1093 (HY000): You can't specify target table 'tab1' for update in FROM clause

针对“同一张表”这个限制,撇开效率不谈,多数情况下都可以通过临时表来变通解决,像这样
DELETE FROM tab1
WHERE col1 = (
SELECT MAX( col1 )
FROM (
SELECT * FROM tab1
) AS t
);

参考链接:
MySQL 5.0 Reference Manual - Subquery Errors

Tuesday, March 06, 2007

Cygwin 环境设置

一、使用和当前 Windows 登录用户不同的用户名

打开 /etc/passwd,找到标示当前 Windows 登录用户,即“自己”,的那行,修改用户名,即第一项。

二、自定义 HOME 环境

打开 /etc/passwd,找到标示“自己”的那行,修改 HOME 目录。
也可以通过设置名为 HOME 的 Windows 环境变量来实现,此设定优先级更高。但主要缺点是 ssh 命令只认 /etc/passwd,经常使用 ssh 的话还是得绕回来修改 /etc/passwd。

三、自定义 HOME 文件夹

1. 使用 ln 命令创建软链接
2. 使用 mount 命令或者直接修改注册表,举个例子
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Cygnus Solutions\Cygwin\mounts v2\/home]
"flags"=dword:0000000a
"native"="D:\\home"

参考链接:
Cygwin FAQ No.13 My Windows logon name has a space in it, will this cause problems?
Cygwin FAQ No.14 My HOME environment variable is not what I want.
Cygwin User's Guide - The Cygwin Mount Table

Friday, March 02, 2007

Unknown HZ value!

Unknown HZ value! (0) Assume 100.

在 uptime 超过若干时间之后(我的遭遇是 248 天),使用 uptime, w, top 时会出现上述错误信息。直接原因是 procps 中的 libproc 在计算 HZ 不能时(其实我没有明白什么意思),打印出了一个无用警告。而这个据说是因为某个内核级 bug,也就是说取决于你用的 OS。

我的环境:
islue@localhost:~$ cat /etc/issue
Debian GNU/\s 3.0 \n \l

islue@localhost:~$ uname -a
Linux localhost 2.4.18 #1 SMP Fri Mar 11 18:50:01 JST 2005 i686 unknown

解决方案有,重启服务器,或者修改 proc/sysinfo.c 重新编译安装。
基本是无害的,随它去也无妨。

参考网址:
http://lists.debian.org/