是乎开始准备搬家的工作….

   上次用python写了一点从CU上导出文章的脚本, 不过有些问题, 当时又因为blogspot又被封了, 所以就停下来没写. 昨天晚上来了兴致,

便又继续写了起来.

   首先是用脚本取得CU上的网页的问题,

在用firefox打开我的blog的时候实际上得到的是一个xml格式的文档, xml的一个好处就是好解析啊. 可是在代码里用urllib.urlopen(…)的时候得到的却是一个html的文本, 很是奇怪,

最后想到一种可能就是使用urllib获取网页的时候实际上少了用浏览器发送http请求时的头信息, 于是google一下python里的库, 有一个httplib, 可以发送请求.

它的大致使用是:

conn =

httplib.HTTPConnection(“blog.chinaunix.net:80”)
    conn.request(“GET”,

url,””, headers)
    response = conn.getresponse ()

    其中的headers就是你所要发送的http头的map.
    但是我在用python的交互式环境调试的时候,

第二行总是通不过, 说是无法请求, 后来直接写在代码里却又没有问题,

然后自己恍然大悟, httpconnection 是在第一行的时候打开的, 交互的时候, 人的反应时间很慢,

当你再次发送response的时候, 原来那个connection已经被关掉了…. Orz…
    知道需要在请求的时候发送http, 可是如何知道firefox在请求的时候会发送什么样的头呢?

这个只要google一下”browser http header”, 就能找到相关的网页列出你的浏览器发送的头信息了(其实这个的实现代码也没有几行, 不过又何必再发明轮子~~),

我看到的自己的http 头是这样的:

Name                  Value

connection            keep-alive
accept-language       zh-cn,en;q=0.5
content-length        0
host                  www.ericgiguere.com
accept-encoding       gzip,deflate
accept               text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5

accept-charset       GB2312,utf-8;q=0.7,*;q=0.7
keep-alive            300
user-agent           Mozilla/5.0 (X11; U; Linux i686;

en-US; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3

 

   这里我选取了几个有用的user-agent,

accept, accept-language, 我们这里会看到在accept里会有列出可接受的内容格式, 估计CU的服务器会检测你header里的这个字段,

如果发现没有text/xml会直接返回给你html的内容,

这里我把accept-encoding头去掉了, 因为我可不想服务器给我发过来gzip压缩的内容:), 我的header定义成下面的样子

headers = {
            “User-Agent”:   “Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3”,
            “Accept-Language”:      “en-us,en;q=0.5”,
            “Accept”: “text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5”
            }

   至于解析xml选择的是用minidom这个包, 感觉比sax要简单些, 虽然内存消耗会大点, 但我的这点文章也占不了多少内存J

   另外还有一个问题就是CU blog的编码方式是采用的gb2312编码, minidom对于此类编码支持不好,

在网上找了个解决方法就是先把文件编码转换成utf-8, 下面是相关代码:

x = re.match(‘<\?xml(\s|version.{4,})+encoding=”(\w*)”.*’, texts)

    if x:
        ec = x.group

(2)
        texts =

re.sub(x.group(2), ‘utf-8’, texts)
        strIO =

StringIO.StringIO(unicode(texts, ec).encode(‘utf-8’))
    else:
        strIO =

StringIO.StringIO(texts)

  再另外的东西就没啥内容了, 无非是对相关内容的处理,

然后把内容写进自己的文件:), 另外对于图片和文件还没有处理. (昨天为了调这个程序让我的blog的访问里飙升了好几百啊, haha~~)

     这些就基本是我的blog备份工具的重要部分, 至于源代码就不在这贴了, 不然有人会不高兴的:)

    可是怎么能把这些文章再导入到blogspot里呢? 自己想的一个方法是写个脚本采用邮件发布的方式弄过去, 不过估计效果不是太好,

April 26th, 2007CSAPP写的真是不错

  第二章写数的表示, 感觉太过详尽, 没有耐心看下去, 跳到第三章, 介绍了简单的汇编, 发现讲的真是漂亮, 自己一直很怯汇编, 因为看书总是看的头晕脑涨的, 现在发现都是那些书的错, 丫一上来介绍一堆没用的东西, 谁看不晕啊?! 这本书介绍的角度就不错, 结合例子看, 发现自己慢慢倒也能看的明白… 怒赞~~~
  准备以后下班后吃完饭再在公司呆着再看会书(五一前没几天了…) 再回家…
  再次感谢tony的书~

April 22nd, 2007盐水花生

乎这是个学名, 反正我们那块就叫煮花生, 简单描述一下就是花生带壳用水煮后得到后的名称. 在近乎一个多月以前的周末在易初莲花门口小摊处买了1.25斤(四块一斤,

买了五块钱的并在那小贩没有缺斤少两的情况五)的花生后, 回到家坐在电视前, 边看边吃,用了不大一会的工夫就吃了个精光, 完事后得出结论这个花生煮的相当不错, 遂计划下周继续去买. 于是从那周开始我每个周末都会去易初莲花转悠, 可是不是天下雨了就是没有遇到, 始终再没有见那个卖花生的大叔.

(最郁闷的就是上上周去小特家的那次, 本来在公车上看到那家伙在那摆摊, 于是打算去小特家吃完饭再去买, 可是谁能想到, 等我们吃完饭, 并往那走的时候,

这天却下起了雨来, 自然到那里时再没有了小贩的影子).

  不知道大家有没有这种感觉, 就是有时会对一件事物产生一种很执著的念头,

心中总是会想着它, 放它不下, 直到得到,

而我对于盐水花生就有类似的感觉, 那就是”我要再次吃到它!!”

   想不到的是我居然在每天去地铁站的路上遇到了一家卖盐水花生的小摊儿, 第一次见的时候, 没有买,

因为是要去上班, 把那么一袋花生带到公司里总觉得不是这么一回事儿, 可是过去之后, 思想里对于花生的渴望却在一直谴责自己的这种做法,

为什么没有买下来, 这又不是什么见不得人的东西, 带公司里又如何啊,

嘎嘎, 于是在第二次见到此小贩的时候便买了1.25斤… 这次卖花生的摊主是个年纪不大的妇女,

买之前尝了一口, 感觉花生有点硬而且有点咸, 问她为何硬她却给我扯到了老人不吃硬花生,

软的才好吃, 严重的答非所问, 驴唇不对马嘴啊.

问她为啥这么咸, 她却给我吹嘘她煮花生用的卤是采用的她做卤菜的家父的卤, 言下之意她的卤是专业的卤, 是好吃的卤.

尽管有这些问题, 还是决定买了, 毕竟解馋是主要问题啊.

   奇怪的是, 那天到了公司吃了早饭后,

便有很饱的感觉, 没吃下多少花生, 便在那里一直放着.

而且自己感觉口味欠佳, 不过晚上还是把剩下的带了回家, 在家里解决掉了,

呵呵. 稍后会把它和”正宗”口味对比一下.

正宗口味则是俺昨天再次易初莲花那里遇到的那位大叔那儿买的花生了, 嗯, 另外发现他的活动时间大概是在下午三点半以后到晚上七点多,

因为我去之前还没有见到他, 结束时间是七点多是俺估计的一个经验值^_^. 从尝他花生的那刻我心里就发出一声感叹 :”煮花生还是能分得出水平来得”, 这位大叔的水平就要比那大嫂的水平高上那一个档次.

花生入口感觉很好, 口味纯正, 软硬合度,

咸味似有似无, 大善!!~~~~

后再讲一下吃盐水花生的一些经验, 首先要保证有较好的精神和身体状态,

大家知道如果太累没有精神的话会影响食欲的, 同时显然也会影响吃花生时的感觉, 这是一点, 另外一点就是要保证体内水分充足, 没有太大火气,

所谓水分充足是因为, 盐水花生是偏咸的食品, 会消耗体内的大量水分消化它,

如果太少, 吃多了可能会口干舌燥(当然吃的时候也可以适当喝水),

另外如果有太大火气的话(实际上也有可能是缺少水分的体现), 也会影响口味(这是经验…), 另外对比一下那位大嫂和大叔的花生: 1. 花生的形态和成分, 大嫂的花生个个长得丰满,

粒大仁圆, 而大叔的花生则有所不如, 偏小,

有些相当的小和不太成熟的花生. 但是大家注意盐水花生里有盐水二字, 占了此词的一半, 故可见盐水对于此物来讲也很重要, 对于不成熟的花生这种花生来讲,

它们一般会吸收较多水分, 咬的时候会有盐水从里面出来, 这正是盐水花生的另一半的代表,

味道自然不错, 而大嫂的花生则偏满, 盈则亏,

缺了盐水总是少了这么一味. 2. 花生的软硬程度, 大嫂的花生有些偏硬, 看样是缺了些火候,

口感不是甚好. 3.咸味, 大嫂的花生有些偏咸,

可能是用的卤的原因, 入口后口味较重, 并且很容易感觉口干.

可见两者还是有些差距, 也许那位大嫂的花生只是我买的那一次煮的不好, 如果有机会再去尝一下.

   关于花生的事儿就讲这些吧, 今天真是有兴致,

居然给它写了这么一大篇.

  最后, 今天在公司里趴着睡的很香,

把前几天熬夜的损失补了一点回来, 很久没有睡的这么好了, 庆祝一下.

April 21st, 2007再次搞好系统

从上次把自己的gentoo给搞坏了之后,自己就把它放在那儿,不用了,反正用windows也挺爽的. 放在这机器上都有两三个月了, 从大前天开始,我决定再次面对它,重新把它搞好,建立信心(最近比较闲,没有追求的生活是很痛苦的,另外五一要去给小于同学显摆一下,不弄好不好忽悠他啊).
  于是插上网线(ipw3945驱动也被我搞坏了, 不能无线上网了:( ),打开上次破碎的系统(其实就是x启不来了… 其他的还好), 启动后ping了一下baidu, 能ping通, 这说明俺的有线网卡还是能工作的, 不然就麻烦了, 大致回忆了一下上次把它弄坏的原因, 好像是因为升级内核升级失败了然后一切都over了, 想了下, 决定还是用genkernel编译内核, 毕竟用它还是很省事, 不用自己再配许多东西了, 于是emerge genkernel, emerge –sync, emerge gentoo-sources, 然后再用genkernel弄好内核, genkernel的使用就是照gentoo-wiki.com上的一篇文章做的(具体链接忘了,直接google genkernel第一个结果就是好像),配置好grub后,重启(当然由于自己粗心,前几次总是会出点小问题,大概就像是少个字母多个字母之类的事,自己修好就行了),系统似乎能够正常启动,于是乎,再决定把所有软件更新一下,从linuxsir上找到别人发的一段脚本,

sudo eix-sync && sh -c “sudo emerge -tauvDN world || until sudo emerge –resume
–skipfirst; do sudo emerge –resume –skipfirst; done”

 其实就是在失败后跳过当前的包, 进行下一个, 执行后, 就睡觉了, 因为很晚了….. 没怎么睡好… 因为担心出问题, 半夜里醒了一次, 看了一下, 没有太大问题, 等到天亮, 还好, 都弄完了, 把机器关上, 去上班..
  下班后(前天晚上), 试了一下startx, 发现一切都正常了, 嘎嘎, 另外发现ati的驱动也好使了,glxgear和fglrxinfo的输出结果都正常了, (上次被我弄的是用mplayer放电影都卡的程序, 相当的郁闷当时), 于是因为很高兴系统都好了, 自己很是不想睡觉, 便又弄了几个gnome的主题安上, 效果不错, 然后再把我gvim的配置文件从windows里拷过来, 发现有个问题是直接用快捷方式不能启动, 只能从命令行里启动, 很是奇怪, 自己排除了一下, 发现应该是配置文件的事, 而且是.vimrc的缘故, 于是再采用相当先进的排除法, 50行50行的注释.vimrc里的代码, 然后启动, 终于定位到出错的块, 然后再排除, 终于找到出错的那一行, 是

“Do not redraw, when running macros.. lazyredraw
set lz

很是奇怪, 这个为什么会导致问题, 不过不管这么多了,直接注释掉算了, 那天晚上就是在兴奋中度过… 玩到了快三点, 才睡觉, 睡觉前定了一下闹钟, 不然上班一定迟到…
  然后就是昨天晚上, 昨天晚上的任务是搞定gensplash, 这个就是启动时有个进度条和启动后命令窗口里有背景图片, 看上去挺酷, 但没多大用的玩艺, 但为了显摆, 我决定还是弄好它, 仍然是参照wiki里的说明, 一步步做, 可是一直没有成功, 系统总是会在启动的时候花屏, 不明具体原因, google也没有太多有用信息, 搞到下半夜也没搞明白, 于是睡觉, 天明起来, 9点多了, 再次尝试google原因, 总算找到一个家伙说了个看似是原因的文章, 他说的是T60对vesg-tng这个支持有问题, 会花屏, 用vesa的驱动应该可以, 于是自己再重新编译vesa的内核, 尝试, 还好, 没有太多问题, 管用了… 效果还是不错, 等有空了截几个图下来.
  最后今天我人品不太好, 上午我尝试安装字体的时候, 不小心把X都坏了, gnome启不来了, tmd, 我花了两个多小时才发现是因为我把一个文件夹的权限搞错了, 奶奶的, 可怜我现在还没吃饭啊, 早饭和午饭啊!!! 肚子叫了两个多小时了!!!
  

April 12th, 2007工作停滞状态.

作上有了点小任务, 于是便想着准备, 只是时间还算宽裕, 于是自己便没有太着急, 本周的前四天基本在莫名其妙中过去, 每天都不知道干了什么, 大概就是看看代码, 翻翻文档, 其他的便没有什么了, 另外就是这周坚持跑了四天步,每天晚上走回家后把东西放下便再出门, 跑步到地铁站, 再跑回,由于被次跑步回来后都很累, 所以我的coding工作便被拖了下来…
  这个周末要去公司加班做ppt, 所以代码可能还要再拖:( 自己做事情还是比较拖拉.
  在用rico时遇到个问题是, 我想在在从server端得到某种数据后执行某段脚本, 想来想去没想到啥好方法, 最后发现可以用rico里的object类型实现, rico中如果接收到response type为ojbect的话, 会调用相应的ojbect的处理函数, 这样倒可以实现我想要的功能, 就是有点麻烦, 今天在逛rico论坛的时候发现有人在帖子中提到这么个方法:ajaxEngine.sendRequestAndUpdate(‘getPersonInfo’,’personInfo2′,{method:’post’,evalScripts:true,parameters:pars});
  看上去和我想要的功能差不多, 可是试了下发现不太一样, 这里的第二个参数需要指定要更新元素的id, 这样它会把这个id的innerHTML全部替换成得到的内容… 果如把第二个参数置空, 它倒会根据response里的id来替换内容, 但是这时候好像对于里面的script又不会求值了… 不知道哪的问题, prototype没有看过, 也许会有更方便的方法, 可是我js没研究过啊….
   另外前几天又注册了个xiguazi.com, 本以为不错, 可发现guazi.com还待售中, 这个估计也不好卖了… 不过反正价格不贵, 先养着呗.
   再另外, 上哪找较好的虚拟主机呢? 看了一下, 似乎国外的空间还是相当便宜的, 比国内的便宜多了, 不过国外的主机有个问题就是要交$啊, 麻烦. 而且还没有太明确的计划, 不好搞.

节目, 中间有一个嘉宾说了这么句话, 听了后忍不住骂了句”傻X”, 这话和一个傻子向别人说”我是一个有智商的人”没啥区别. 当一个人强调说一件明显是事实或明显不是事实的东西的时候, 毫无疑问他的行为是错误的(受梨花影响, 比较喜欢用毫无疑问这个词…).
  最近自己的负面情绪基本没有, 一个比较大的原因就是最近工作压力比较小, 看来压力对人的情绪影响还是很大的.
  昨天头儿找俺谈话的时候, 自己从刚进会议室就开始笑, 都不知是啥结果, 就是一个劲的傻笑, 幸好不是傻傻的大笑, 不然头儿会被吓蒙了… 自己都不知道为什么会笑, 莫名其妙的想笑:)
  今天有点小郁闷, 本来收拾一半的房间现在却都没了意义, 那是不是要再打乱放回去?
  情绪影响状态, 状态影响工作, 于是到现在我还没有写代码, 晚点再写吧, 周末其实过的很郁闷, 总是醒的和平时一样早, 睡的却比平时要晚很多:(
  我非常想看相约星期六, 可是却因为吃饭, 错过了时间, 也许明天会看上重播吧!
  最后:”我也是一个有思想的人”, oh, yeah


© 2007 pangwa's Blog | iKon Wordpress Theme by Windows Vista Administration | Powered by Wordpress