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/