技术blog搬家

其实我有一个技术blog,但是没什么人去……原来架在mblogger.cn上,但是这个地方越来越缺乏管理,用户流失严重,就是懒得搬。话说这个也是我一开始写的blog。这个地方基于.Text平台,提供metaWeblog接口。我打算搬到blogger。在网上找了一下,有现成的博客搬家的地方。但是试了一下,都不能用……比如说,http://blogmover.redv.com/,这个地方能够读出原来的blog,但是写到blogger的模块出问题了……又如maikr,需要登录才能用,而网站挂了,于是注册不了……最后只好自己写一个搬家程序了……既然近期学习python,那么练一下也好。python自带xmlrpclib模块,能够和metaWeblog通讯。尝试了一下,metaWeblog的接口还真好用,不一会儿就能够读出blog了。话说python生产力就是高阿,随便弄一下就好了,有什么问题搜一下也能很快解决。如果…… 如果python不是用空格/缩进表示层次的话,那就更好了!然后去研究写到blogger的方法。这时候我发现,虽然metaWeblog基于blogger API,但是那是老的blogger API……新的Blogger被Google整合到了GData API框架里面,于是巨麻烦无比……Google的人们是不是太聪明了…… 总是觉得自己发明的东西比较好,不用现成的…… 然后弄出麻烦的东西,光了解就要不少时间……还好有python的gdata库,自带了访问blogger服务的样例。但是又有一个问题:貌似Blogger的GData访问方法被GFW掉了……只好改了,用SSL,又耗掉一堆时间……最后,折腾了一大堆,终于是把这个搬家程序写出来了……但是,最后用的时候碰见问题了: status 400Blog has exceeded rate limit or otherwise requires word verificationfor new posts COW! 这可怎么搬家啊……

关于A20地址线的那些事情

从前在BIOS里面见过关于A20地址线的选项,后来启动FreeDOS什么的时候好像也见过A20的事情,一直不知道是干嘛的……后来某天看BSD loader代码的时候,看见启用A20地址线的事情…… 于是去wiki上查了一下,原来是这么回事……8086那个时候,地址线只有20位,叫做A0~A19,也就是没有A20地址线的。2^20=1M,因此那时能够访问的内存范围是1M。那个时候也分段,地址由段寄存器左移4位,加上基地址,得到物理地址。段寄存器和基地址都是16位的,这样就能够访问20位的空间了。但是有个问题……段寄存器最大FFFF,基地址也是。所以地址最大是FFFF:FFFF,但是FFFF左移四位得到FFFF0,加上FFFF,得到10FFEF,也就是FFFFF+FFF0。但是物理内存只有1M,最大物理地址范围应该是0~FFFFF,因此多了FFF0,超出了物理地址范围。这样,访问到超出范围的时候,8086会自动做一个处理,把高位的1删掉,也就是10xxxx->xxxx,然后返回对应位置。 按理来说,这是个bug,8086应该返回个错误啥的。但是,既然这已经是事实了,有的程序就开始用这一点,来访问0~FFEF的内存范围,差不多是前64K少一些的范围。这就为日后的新CPU出了难题…… 80286,80386等等更NX的处理器出现了,他们支持访问更大的内存范围。自然,10xxxx和xxxx也就指向了不同的地方。但是,跑那些用到从前bug的老程序的时候,就出问题了…… 改了10xxxx的xxxx不变,导致乱七八糟的问题……IBM他们就脑残了一下,说,我们在A20地址线(也就是那个1的位置……)装个开关吧~ 然后又脑残一下,看见键盘控制器正好有一根线空着,就说,我们让键盘控制器来管这个开关吧~于是,著名的Gate A20就这么产生了……打开:输出0xd1到0x64端口,等8042(键盘控制器)空了,再输出0xdf到0x60端口 保护模式的操作系统,自然都需要访问1M以上的内存,而且不希望某一位地址一直是0。所以保护模式的操作系统启动步骤之一,就是打开A20。但是,IBM那些人们没想到,日后有些环境需要频繁切换A20端口,而键盘控制器是如此之慢…… 他们当初认为,这个切换发生频率很低,因此慢一点没关系…… 于是就有了Fast Gate A20的事情。利用0x92端口,读入之后,把第二位改成1,然后写回去,能快一点。但这个引起了新的bug。毕竟只有某些系统支持0x92端口的这个用发,而有些系统…… 改了0x92会导致没有显示之类的,所以有危险……后来么,intel也不爽了,就搞了个0xee端口,读打开A20,写关闭…… 速度比从前更快了…… 于是,这样就有了3中方法,由慢到快。某些程序就一个一个试,试了一个验证一下。但是,缓存又来捣乱。有的系统虽然开了A20,还是会把几个字节缓存起来,10xxxx和xxxx一样…… 总的来说,A20就是个麻烦的事情,当初搞个BIOS调用之类的也就over了么…… 不过现在的新的系统,基本上都没有A20的问题了,虽然打开A20还是系统启动的必要步骤之一……参见A20 – a pain from the past