2005 年 4 月
装了个realvncvncviewer切换全屏模式要替换了,学了一点 sed郁闷的依赖规则makedepend
装了个realvnc
日有所得 2005-04-05 13:55:18
安装:
tar xzvf vnc-4_1_1-x86_linux.tar.gz
cd vnc-4_1_1-x86_linux
./vncinstall ~/bin ~/man
配置:
把 ~/bin 加到 PATH 中
~/bin/vncpasswd 设置密码
vi ~/bin/vncserver 改分辨率
~/bin/vncserver 启动
登陆:
free 版本是不加密的,于是配合 SSH 端口转发来用,windows 上用 vncviewer 连接 localhost:5901 登陆嗯, 不错,这下某某人的 Q 就可以 7x24 小时挂着了。老庞新换的 ADSL 还比较快。只是缺省带的 twm 窗口管理器实在太难用了,于是再装一个 fluxbox,安装及其简单:
./configure --prefix=$HOME && make && make install这种就相当于 windows 下装软件的一路点鼠标了。装好之后改 vncserver 把 twm 换成 fluxbox(得先删除 ~/.vnc/xstartup)。
vncviewer切换全屏模式
日有所得 2005-04-08 10:01:53
换到全屏模式换不回来了,还好 ctrl_alt_del 能弹出任务栏。
google 了一通,才知道热键是 F8
远程调试 iptables 又犯错了
日有所得 2005-04-08 16:16:02
唉,太鲁莽了,第一次出错搞得自己连不上了,还好那边控制台有人,清空规则之后长了个心眼,先写个清空规则的脚本:
#!/bin/sh
# cleanfw
/sbin/iptables -P INPUT ACCEPT
/sbin/iptables -P OUTPUT ACCEPT
/sbin/iptables -F
改完规则运行之前先把清空的脚本准备着,两分钟之后运行:
sleep 120 && sh cleanfw &
试了一下效果不错。可惜实际用的时候写成了
sleep 120 & sh cleanfw &少写了一个 &符号,当时提示进程退出的信息也没留意,以为是上次试验时候的后台进程退出。不凑巧,这次规则还有问题,结果自己再次断线......,我真是猪脑袋:-(
想来 sleep 120 && sh cleanfw & 这样也不安全,万一 sleep
120 失败(例如收到某种信号?)cleanfw 就不会执行了,最安全的还是:
(sleep 120; sh cleanfw) &吃了亏下次就要记牢了。
要替换了,学了一点 sed
日有所得 2005-04-11 15:39:00
要对 openssl 代码施行大规模的字符串替换了,其中有个任务,要把
#include <openssl/xxx.h>这样替换成
#include "xxx.h"grep 了一下,情况还比较复杂,有各种各样的 include:
#include <stdio.h>文件太多,非 sed 不可了,学了一会总算能完成任务了。
#include "cryptlib.h"
#include<openssl/conf.h>
#include <openssl/x509v3.h>
#include <openssl/x509.h>
#include <openssl/x509.h> /* comment */
#include "openssl/x509.h"
#include "openssl/x509.h"
#include "openssl/x509.h"
sed 简单教程(From IBM DeveloperWorks):
part 1part 2part 3完成上面替换的 sed 语句是:
sed -e 's|[<"]openssl/\(.*\)[>"]|"\1"|g' foo.c
s 是替换命令
| 为自定义分隔符
[<"] 匹配 < 和 " 两个字符
[>"] 匹配 > 和 " 两个字符
\(.*\) 定义了一个区域,随后的 \1 引用这个区域
这个命令将 <openssl/xxx.h> 替换为 "xxx.h"
同时也能将 "openssl/xxx.h" 替换为 "xxx.h"
多个替换任务:用
$ cat > my.sed
{
s/unsigned char/uint8/g
s/unsigned int/uint32/g
s/unsigned short/uint16/g
}
^D
$ sed -f my.sed foo > bar
郁闷的依赖规则
日有所得 2005-04-14 15:40:58
lib: $(LIB_OBJS)发现每次 make lib 都会 ar 一遍,依赖规则没有用了。折腾了好久才想过来原
$(AR) $(LIB) $(LIB_OBJS)
$(RANLIB) $(LIB) || echo Never mind.
因是始终不会有一个叫 lib 的文件产生(它是伪目标),改成让 lib 目标依赖
于具体的文件 $(LIB) ,依赖规则就能生效了:
lib: $(LIB)容易忽略的细节。
$(LIB): $(LIB_OBJS)
$(AR) $(LIB) $(LIB_OBJS)
$(RANLIB) $(LIB) || echo Never mind.
makedepend
日有所得 2005-04-18 21:39:59
depend:
makedepend -Y -- $(CFLAGS) -- $(SOURCES)
用 -Y 避免搜索 /usr/include,这样不会产生类似 foo.c: /usr/include/stdio.h这样浪费编译时间的规则,但同时也会报成堆的找不到头文件的错误。如果重定向
stderr,又担心漏掉有用的信息,唉,难办啊,大概只有改它的源码了。其实在 openssl 里面也有这问题,它是自己编写的工具,不处理 /usr/include,但那个 domd 不太完善,试了一下有些情况会把 Makefile 弄成 0 字节文件 :(
0 Comments so far