今天发现一个网站上不了。
用tracert看了看。发现结果很怪,明明到了目标机不停下来。
看来目标机器上配置了什么东西。
目标机出现两次,但不是循环路由,如果是循环路由,会一直重复下去,现在只在目标机重复两次。
不知道是哪种故障。
Tracing route to pim.chinamobile.com [211.138.200.37]
over a maximum of 30 hops:
... ...
14 90 ms 93 ms 88 ms 218.200.253.237
15 85 ms 83 ms 90 ms 218.200.252.129
16 114 ms 122 ms 117 ms 218.200.252.150
17 108 ms 109 ms 108 ms 218.200.254.102
18 118 ms 117 ms 113 ms 211.138.206.38
19 114 ms 113 ms 113 ms 211.138.201.6
20 114 ms 113 ms 113 ms pim.chinamobile.com [211.138.200.37]
21 115 ms 114 ms 115 ms pim.chinamobile.com [211.138.200.37]
22 * * * Request timed out.
23 * * * Request timed out.
24 * * * Request timed out.
25 * * * Request timed out.
26 * * * Request timed out.
27 * * * Request timed out.
28 * *
星期六, 七月 28, 2007
星期五, 三月 30, 2007
学习WIX
这两天有一个项目要打包,在学习WIX.
这里有详细的学习教程
http://www.tramontana.co.hu/wix/
在网上搜了一下,发现有很多人都用wix做过asp.net和sql的程序的安装包。
大家在做的时候都碰到并解决了各种问题。为什么没有人共享一个完整的ASP.net和sql的安装方案,省得走弯路。等我研究好了,考虑是否共享方案。
WIX有自带的CustomAction可以创建数据库,不知道这个创建数据库的定制任务有没有其它依赖关系。会不会要机器上先有Sqlserver的OLEDB驱动。谁要是知道的话请告诉我。
这里有详细的学习教程
http://www.tramontana.co.hu/wix/
在网上搜了一下,发现有很多人都用wix做过asp.net和sql的程序的安装包。
大家在做的时候都碰到并解决了各种问题。为什么没有人共享一个完整的ASP.net和sql的安装方案,省得走弯路。等我研究好了,考虑是否共享方案。
WIX有自带的CustomAction可以创建数据库,不知道这个创建数据库的定制任务有没有其它依赖关系。会不会要机器上先有Sqlserver的OLEDB驱动。谁要是知道的话请告诉我。
星期四, 三月 29, 2007
对Emacs进行了改造
下载了Emacs23的源代码,把里面的win32的输入法处理部分改成了使用Unicode 的API.
这样用windows的输入法,输入去当前codepage不一样的语言就没问题了。
我等这个功能等了很久了,一直看不到别人加,终于忍不住自己加了。
做过了才发现,如果对Win32的系统很熟的话,修改还是非常容易的。
Emacs23的代码很多,我没有去尝试看懂它的全部代码。即使我修改好了,我也不知道Emacs到底是什么样的结构。
我看代码是直接用cscope。首先找到Win32的消息循环部分。因为输入法的几个消息必须从这里进入Emacs。
我首先查看现在的WM_CHAR是如何处理的。发现Emacs会把操作系统过来的消息,封装成平台无关的消息,送到自己的消息循环中。
而且在自己的消息循环里可以处理unicode的字符和ascii的字符。这就方便多了。我只要把Windows的输入法的字符串用unicode API取出,一个字一个字送入Emacs内部的消息循环就行了。我知道应用程序没有处理输入法的完成编码的消息时,Windows默认会把字符串一个个的转成WM_IME_CHAR消息,如果还没有处理,会把每个WM_IME_CHAR转成2个WM_CHAR。这就是现在的Emacs的win32输入法部分的工作情况。由于Emacs使用的是win32的ansi API。窗口类是非unicode api注册的,所以只能接受ANSI的消息,WM_IME_CHAR的消息里是双字节的字符,不是Unicode的,所以我必须在这之前处理。用unicode的API自己取出字符串,自己一个个的转成Emacs内部消息,这样修改是最小的。
实际用了三天的时间研究代码和修改。最后还加了光标跟随和设置输入法用的字体的功能。
开发过程中发现,一个日本人维护着一个功能更复杂的输入法部分的patch.
不过我的代码更短,功能当然也只有最基本的。
http://yyyccclll.googlepages.com/emacs.patch
这样用windows的输入法,输入去当前codepage不一样的语言就没问题了。
我等这个功能等了很久了,一直看不到别人加,终于忍不住自己加了。
做过了才发现,如果对Win32的系统很熟的话,修改还是非常容易的。
Emacs23的代码很多,我没有去尝试看懂它的全部代码。即使我修改好了,我也不知道Emacs到底是什么样的结构。
我看代码是直接用cscope。首先找到Win32的消息循环部分。因为输入法的几个消息必须从这里进入Emacs。
我首先查看现在的WM_CHAR是如何处理的。发现Emacs会把操作系统过来的消息,封装成平台无关的消息,送到自己的消息循环中。
而且在自己的消息循环里可以处理unicode的字符和ascii的字符。这就方便多了。我只要把Windows的输入法的字符串用unicode API取出,一个字一个字送入Emacs内部的消息循环就行了。我知道应用程序没有处理输入法的完成编码的消息时,Windows默认会把字符串一个个的转成WM_IME_CHAR消息,如果还没有处理,会把每个WM_IME_CHAR转成2个WM_CHAR。这就是现在的Emacs的win32输入法部分的工作情况。由于Emacs使用的是win32的ansi API。窗口类是非unicode api注册的,所以只能接受ANSI的消息,WM_IME_CHAR的消息里是双字节的字符,不是Unicode的,所以我必须在这之前处理。用unicode的API自己取出字符串,自己一个个的转成Emacs内部消息,这样修改是最小的。
实际用了三天的时间研究代码和修改。最后还加了光标跟随和设置输入法用的字体的功能。
开发过程中发现,一个日本人维护着一个功能更复杂的输入法部分的patch.
不过我的代码更短,功能当然也只有最基本的。
http://yyyccclll.googlepages.com/emacs.patch
星期三, 一月 31, 2007
学习Emacs
我一直用的VIM,自认用得很熟了,基本上用来完成所有的文本编辑。也会自己定义 ftplugin.
最近想学学Emacs看看。
发现一打开emacs,我连最简单的编辑任务都不能完成,看来还得找点资料。
在网上搜索了一下发现两个简单点的。
http://zhdotemacs.sourceforge.net/emacs/book.html
http://www.cbi.pku.edu.cn/chinese/documents/csdoc/emacs/
感觉VIM在帮助方面做得很好,联机帮助都是中文的。面且内容的量还是可以阅读的。
面emacs全是英文的不说,内容也太多了,可能因为功能太强大了,但是这么长的帮助让人望而却步。
最近想学学Emacs看看。
发现一打开emacs,我连最简单的编辑任务都不能完成,看来还得找点资料。
在网上搜索了一下发现两个简单点的。
http://zhdotemacs.sourceforge.net/emacs/book.html
http://www.cbi.pku.edu.cn/chinese/documents/csdoc/emacs/
感觉VIM在帮助方面做得很好,联机帮助都是中文的。面且内容的量还是可以阅读的。
面emacs全是英文的不说,内容也太多了,可能因为功能太强大了,但是这么长的帮助让人望而却步。
Gmail联系人丢失
今天早上,发生了一件让我震惊的事情,不是地震了,也不是光缆断了。
我打开Gmail时,一个小小的出错信息显示了出来。
我像往常一样,关掉IE重新登录,这时我的联系人里面全部空了。
同一时间在地球上的各个地方,都有人丢失了Gmail联系人。
http://groups.google.com/group/Gmail-ABCs/browse_thread/thread/54fe251cee45504d/#
===========================================
晚上我发现所有联系人都回来了,好像比原来还多了。
GTalk里的显示顺序有点变,有些从来没聊过天的到了第一页。
我打开Gmail时,一个小小的出错信息显示了出来。
我像往常一样,关掉IE重新登录,这时我的联系人里面全部空了。
同一时间在地球上的各个地方,都有人丢失了Gmail联系人。
http://groups.google.com/group/Gmail-ABCs/browse_thread/thread/54fe251cee45504d/#
===========================================
晚上我发现所有联系人都回来了,好像比原来还多了。
GTalk里的显示顺序有点变,有些从来没聊过天的到了第一页。
星期一, 三月 13, 2006
Ruby on rails和ruby-mingw
最近几天在学习ruby on rails.使用了mingw版本的ruby 试了试,有一些功能不正常,比如script\console.查看了rails的源代码发现rails里面很多对ruby平台的判断用的是~/mswin/,我把它改成~/mswinmingw/就好了.
星期日, 二月 05, 2006
OpenVPN
OpenVPN
今天花了两个小时终于学会了OpenVPN的使用。
由于要在国外控制家里的电脑,想要安全的连接,所以要找一种vpn方案,上Google搜索一下终于down到了openvpn和一本pdf的介绍,介绍虽然是linux的,但是在windows上的配置一样。
使用中发现如果协议用TCP的话速度只有UDP的十分之一。还是使用UDP比较好。
最后配置成了开机自动以服务方式运行客户端和服务端。
配置方法等以后有空时再写下来。
在寻找方案的过程中还发现了SoftEther,最然使用很方便,但是对这个不开源的东西不太有好感。
晚上在另一台XP+SP2+kaspersky的机器上配置后,启动服务器端。服务器端自己的tap-win32居然无法得到IP。
查阅了很多资料,可能是和kaspersky冲突,今天回去再试试。
原来真是和kaspersky冲突,只要kaspersky不保护网络就可以正常工作.
星期三, 一月 25, 2006
星期二, 一月 24, 2006
制作U盘启动的FREEBSD完全版
作者:网络 佚名 更新时间:2005-09-12 收藏此页
【IT168 服务器学院】 一:制作可以启动的映象文件
1:dd if=/dev/zero of=/mnt/image bs=1k count=50k
用dd命令生成一个文件,名为image,大小为5M。
2:mdconfig -a -t vnode -f image -u 0
建立一个用image为映象的ramdisk,设备为/dev/md0
-a 增加一个ramdisk
-t 代表ramdisk的类型
-f 代表用来作ramdisk的映象文件
-u 为ramdisk的设备号
3:disklabel -Bw /dev/md0
B 安装启动程序到ramdisk的启动标签。
w 用已有的启动程序写标签。(bsd分区)
4:newfs /dev/md0a
为a分区建立UFS文件系统。
5:mount /dev/md0a /mnt/ram
将md0a设备装载到/mnt/ram目录
6:拷贝启动一个bsd系统需要的文件到/mnt/ram:
包括/boot /etc /bin /sbin /dev /lib /libexec /root 等等。
为了方便检查可
ln -s bin sbin
ln -s bin usr/bin
ln -s bin usr/sbin
ln -s lib usr/lib
ln -s libexec usr/libexec
等等。
为了节约磁盘空间。/usr/lib可根据需要的程序拷贝。例如:sshd
ldd /usr/sbin/sshd命令可以列出sshd需要的lib文件,只拷贝需要的文件。
内核最好从新编译,只保留需要的设备。
然后用kgzip /boot/kernel/kernel压缩。
mv /boot/kernel/kernel.kgz /boot/kernel/kernel
修改/etc/fstab
删除不需要的部分(基本上都不需要)
加入
/dev/md0a / ufs rw 0 0
注意后面一定用0 0.否则rc过不了。因为fsck -p不能用到ramdsk上面。
7:cd /mnt
umount ram
卸载ramdisk
压缩image
gzip -9 image
二:制作可以启动的u盘
8:插入u盘(大多u盘都可以启动,大多p4主板都支持usbhdd方式启动)
disklabel -wB /dev/da0
newfs /dev/da0a
(前面讲过的分区,格式化)
9:只拷贝/boot到u盘。删除不要的ko文件
如果内核编译时选择了所有需要的模块可以全部删除ko文件。
10:编辑u盘里的/boot/default/loader.conf文件,在最后面加入:
exec="unset acpi_load"(如果你需要acpi可以不要这行,当然BIOS也必须打开,如果加入这行,bios中acpi必须打开)
exec=".(空格loading kernel空格) cr"(系统执行到这里将显示括号里的内容)
exec="load kernel"
exec=".(空格loading mdimage ) cr"
exec="load -t md_image /image"
去掉vfs.root.mountfrom=""前面的“#”号在“”号中填入:ufs:/dev/md0a
系统将/dev/md0a装载为根目录。
11:将image.gz 拷贝到u盘。
12:启动测试。
备注:
1:在测试image文件是否可用时最好直接试用:
方法:启动系统时出现菜单选6
输入:
unload
load kernel
load -t md_image /mnt/image
set vfs.root.mountfrom=ufs:/dev/md0a
boot
然后系统将不从硬盘启动,而从预先装载的image启动,反复检查出错信息,添加需要的文件。
2:多用ldd命令检查程序执行需要的lib文件。
3:由于系统启动过后可能有需要保存的内容,可以利用cron来解决。
比如我的ppp.secret
我写了个简单的sh 在系统启动时拷贝u盘根目录的ppp.secret 到/etc/ppp/和/tmp
然后写了个比较/etc/ppp/ppp.secret /tmp/ppp.secret的sh如果不同就备份/etc/ppp/ppp.secret到u盘根目录。
相信其他的需要保存的内容也可以参考我的方法。
4:这个东西可以运用到很多地方。防火墙、服务器、甚至工作站(ramdisk非常快)
5:本人系正中bsd菜鸟一个,有不对的地方多多提点。
【IT168 服务器学院】 一:制作可以启动的映象文件
1:dd if=/dev/zero of=/mnt/image bs=1k count=50k
用dd命令生成一个文件,名为image,大小为5M。
2:mdconfig -a -t vnode -f image -u 0
建立一个用image为映象的ramdisk,设备为/dev/md0
-a 增加一个ramdisk
-t 代表ramdisk的类型
-f 代表用来作ramdisk的映象文件
-u 为ramdisk的设备号
3:disklabel -Bw /dev/md0
B 安装启动程序到ramdisk的启动标签。
w 用已有的启动程序写标签。(bsd分区)
4:newfs /dev/md0a
为a分区建立UFS文件系统。
5:mount /dev/md0a /mnt/ram
将md0a设备装载到/mnt/ram目录
6:拷贝启动一个bsd系统需要的文件到/mnt/ram:
包括/boot /etc /bin /sbin /dev /lib /libexec /root 等等。
为了方便检查可
ln -s bin sbin
ln -s bin usr/bin
ln -s bin usr/sbin
ln -s lib usr/lib
ln -s libexec usr/libexec
等等。
为了节约磁盘空间。/usr/lib可根据需要的程序拷贝。例如:sshd
ldd /usr/sbin/sshd命令可以列出sshd需要的lib文件,只拷贝需要的文件。
内核最好从新编译,只保留需要的设备。
然后用kgzip /boot/kernel/kernel压缩。
mv /boot/kernel/kernel.kgz /boot/kernel/kernel
修改/etc/fstab
删除不需要的部分(基本上都不需要)
加入
/dev/md0a / ufs rw 0 0
注意后面一定用0 0.否则rc过不了。因为fsck -p不能用到ramdsk上面。
7:cd /mnt
umount ram
卸载ramdisk
压缩image
gzip -9 image
二:制作可以启动的u盘
8:插入u盘(大多u盘都可以启动,大多p4主板都支持usbhdd方式启动)
disklabel -wB /dev/da0
newfs /dev/da0a
(前面讲过的分区,格式化)
9:只拷贝/boot到u盘。删除不要的ko文件
如果内核编译时选择了所有需要的模块可以全部删除ko文件。
10:编辑u盘里的/boot/default/loader.conf文件,在最后面加入:
exec="unset acpi_load"(如果你需要acpi可以不要这行,当然BIOS也必须打开,如果加入这行,bios中acpi必须打开)
exec=".(空格loading kernel空格) cr"(系统执行到这里将显示括号里的内容)
exec="load kernel"
exec=".(空格loading mdimage ) cr"
exec="load -t md_image /image"
去掉vfs.root.mountfrom=""前面的“#”号在“”号中填入:ufs:/dev/md0a
系统将/dev/md0a装载为根目录。
11:将image.gz 拷贝到u盘。
12:启动测试。
备注:
1:在测试image文件是否可用时最好直接试用:
方法:启动系统时出现菜单选6
输入:
unload
load kernel
load -t md_image /mnt/image
set vfs.root.mountfrom=ufs:/dev/md0a
boot
然后系统将不从硬盘启动,而从预先装载的image启动,反复检查出错信息,添加需要的文件。
2:多用ldd命令检查程序执行需要的lib文件。
3:由于系统启动过后可能有需要保存的内容,可以利用cron来解决。
比如我的ppp.secret
我写了个简单的sh 在系统启动时拷贝u盘根目录的ppp.secret 到/etc/ppp/和/tmp
然后写了个比较/etc/ppp/ppp.secret /tmp/ppp.secret的sh如果不同就备份/etc/ppp/ppp.secret到u盘根目录。
相信其他的需要保存的内容也可以参考我的方法。
4:这个东西可以运用到很多地方。防火墙、服务器、甚至工作站(ramdisk非常快)
5:本人系正中bsd菜鸟一个,有不对的地方多多提点。
星期一, 一月 23, 2006
星期二, 一月 17, 2006
订阅:
博文 (Atom)

