2003/08/26

PHP空间

这个网站一直是放在我自己的机器上,一年前我是通过广电的有线通上网(cable modem),无需拨号,24小时在线,做服务器非常合适。那时我曾经在自己的机器上跑一个论坛程序几个月基本没有关机(WIN2000),后来搬家后, 换成网通的PPPoE上网,这种10M局域网的方式上网优点是下载速度很快,但需要拨号,并且有个致命的缺陷是时常掉线,显然不适合做服务器。我曾经考虑 过在网上购买一个PHP空间来放这个网站,不过由于种种原因,一直没有找到合适的空间商。最近,很巧的机会,无意中却发现了一个比较满意的空间,呵呵,以 后可以建设这个100M空间了,我的赛扬可以退役了,哈哈. :)
不过很快就发现另一个问题了,Mysql数据库的内容如何导入导出以及同步,数据库可以通过phpmyadmin导出成一个sql文本文件,不过这个文件好大,而且这种方式的导入导出很麻烦,只能先凑合用着,以后再找好的方法。
有了空间后的一个附加好处是修改站点外观时可以先在本地改,然后和空间上的原来的样子做对比,直到满意再上传到空间上。

2003/08/17

blog网站历史

建这个个人网站是在我接触PHP之后,至今已有一年多的时间了,这期间也经过了多次的变化,可惜大多以往的版本都没有拷贝下来,只能凭记忆记录一些:
最初的网站是用的什么软件,现在已经记不起名字了,只记得前台是我自己用HTML写的,后台是用文件记录方式,功能很弱,甚至没有留言功能,印象中比较深 刻的是当时花了不少的时间做了个PHP的留言本,是基于文本文件记录的。这个版本的网站当时自己并不满意,不过由于一时没有找到合适的替代者,大概也用了 两个月左右。
后来我发现了mambo, 一个功能强大的CMS系统来代替最初的网站,后台基于MySql数据库,功能较多,前台使用了Theme(样式),界面已经比较美观。整个mambo网站 建立起来几乎不用写一行代码,比较傻瓜式的软件。当时我用的是4.0的版本,现在估计已经发展到4.5了,不知有没有什么大的变化。这个mambo的网页 我用了比较久的时间,但一直有两个缺陷让我不是很满意,一是对中文的处理不好,很多中文的记录都成了乱码(这就是为什么现在还有那么多英文帖子的原因), 二是过于傻瓜的软件使得配置较少,有一些地方不符合我的使用习惯,想改起来却很困难。因而用了一段时间之后就开始寻找替代者了,可惜当时的版本也没有记录 下来,没办法看到了。
第三个使用的软件是PostNuke, 很有名气的CMS系统,模块化的功能管理,使得功能非常强大,我用的是0.723的中文版,可以非常好的支持中文,我甚至建立了双语种的网站, postnuke由于用的人非常多,网上可以找到大量的功能模块,样式等等。这些是当时的界面的拷贝(奇怪当时为什么用了粉红色?)。
0308160103081602
03081603
最后用的就是现在这个基于b2的版本了,之所以又更换软件,是因为postnuke功能太强大了,以至于后来我觉得用它来做我这样的一个个人网页实在是有 些奢侈,而且过多的功能导致了网页速度比较慢,尤其是后台功能,即使在本机操作,也常常需要等待,我开始找寻够用就好的软件,于是我发现了b2,相当简洁的软件,功能不多,但刚好符合我的需要,前台相当简陋,我重写过前台,就成了现在这个样子。
我想将来可能还会使用其他的软件来代替现在的b2,但我希望这个网站-我自己的网站能越来越好. :)

2003/08/15

arp与ping

ping与arp配合有一个很妙的用处,就是通过ping广播地址,然后反查arp表来获取局域网一个网段内的所有主机ip,但是这种用法有个缺陷,就是当你在第一次用的时候它很有效,但当将arp表清空后,立刻再ping广播地址就看不到arp表的内容了,我曾经在Win2000,Linux, VxWorks试过,效果相同,比如在Win2000下:
1) ping 192.168.0.255
2) 此时用arp -a查看arp表,应该可以看到网段内的主机ip
3) 用arp -d删除所有arp表项
4) 再用ping 192.168.0.255
5) 再看arp -a, 此时看到arp表中已经没有上次看到的那些主机了。

分析arp协议之后,终于明白原因,整个arp的交互过程如下:
1) 首先,源主机ping广播包,因为是广播包,无需知道MAC地址,所以不会发送arp请求,直接发送ping广播包
2) 网内主机收到ping广播包后,需要应答。但应答是单播方式,所以先要发送arp广播请求源主机的MAC地址。
3) arp广播请求在被源主机收到后,源主机更新自己arp表,并回送arp应答。网内主机受到arp应答后,也各自更新自己的arp表。
4) 等ping回送结束后,源主机的arp缓存中就会有所有回送ping包的主机ip
5) 清空源主机的arp表后,再ping广播地址,仍然不会发送arp请求,直接发送ping广播包
6) 网内主机收到ping包后,需要回送ping应答,但此时这些主机的arp缓存中应该已经有了源主机的MAC地址,所以无需发送arp请求,直接回送ping应答
7) 源主机仍然可以接收到所有的ping应答,但由于没有收到arp请求,所以arp不会被更新!这就是第二次ping广播包不会刷新arp的原因!

所以,使用此方法查询网内主机不一定可靠。但VxWorks和Linux下有更简单的方法,直接使用ping即可,因为VxWorks和Linux的 ping在收到应答时会显示发送应答的ip地址。可惜Windows的ping不是这样,真是不知Windows为什么去掉如此有用的功能。 :(

2003/08/10

通过TTL辨识操作系统

这是最近看《详解卷一》的收获,想来可能以后能用到,记在这里。
在使用Ping程序去ping主机的时候,主机在返回ICMP应答时,IP首部中的TTL字段依据操作系统不同,而有不同的值,通过这个值就可以大体判断出远端主机的操作系统类型,如我的主机是WIN2000,ping的时候会出现下面的结果:
E:\>ping 127.0.0.1
Pinging 127.0.0.1 with 32 bytes of data:
Reply from 127.0.0.1: bytes=32 time<10ms TTL=128
这里TTL是128,再看ping www.sina.com.cn的结果:
E:\>ping www.sina.com.cn
Pinging taurus.sina.com.cn [61.172.201.225] with 32 bytes of data:
Reply from 61.172.201.225: bytes=32 time=16ms TTL=48
为什么TTL是48呢? 因为ICMP应答包要经过很多路由器,TTL会被逐次减1,用tracert命令可以看到大致路由器的个数,最后可推算出www.sina.com.cn主机发出的TTL为64,这就基本可以断定它不是win2000系统啦。

大致的操作系统对应的TTL如下:
WIN2000/XP/NT: 128
WIN95/98/ME: 32
LINUX: 64
UNIX(包括BSD, Sun Solaris, HP UX): 255
VxWorks: 64

要注意的是TTL值在大多数操作系统中是可以改的(我只知道win2000下可以通过注册表来改), 所以此方法不一定完全正确。

2003/08/04

mp3回放爆音

重装了系统之后,就发现在用媒体播放器回放mp3时,总是有爆音,开始以为和网上说的一样,是声卡驱动的问题,就没有想办法去解决,因为我的声卡是 S90,早已没有新驱动可用了。昨天则无意中发现用VLC播放器播放mp3时并没有爆音,感觉就不像是驱动的问题了(VLC也要用声卡驱动才能发声的),开始怀疑是软件的问题了,因为VLC这个播放器没有用windows解码器,而是全部自带解码器,于是用媒体播放器打开mp3文件,在回放时看了所用的解码器(文件/属性/高级/正在使用的过滤器),发现竟然是一个AC3解码器在工作,而不是我想象的mp3 decoder,赶紧卸载了这个解码器,爆音终于没有了。哈哈,看来就是这个ac3解码器搞的鬼。
这个解码器应该是在安装DVD解码器时安装进系统的,不过它竟然接管了mp3的解码,不过显然解的有问题,不过我就不清楚为什么会在解mp3时会有爆音了, 也不知道有没有什么设置可以让mp3不要用这个ac3解码器来解, 这样就可以不用卸载它了。