生活点点

  • Python模块libxml2

    libxml2是一个很强大的处理XML文件的Python模块,通过C写成,这里介绍了一下基本的资料,安装,下载和基本指令,还有一个libxml2造成的内存泄露的处理方式。

    官方网址:
    http://xmlsoft.org/
    具体的下载地址,埋的很深,至少我花了一段时间才找到,这里直接给出win32下的Python模块下载地址:
    http://xmlsoft.org/sources/win32/python/
    根据自己的Python版本下载就行。

    官方网站上给的操作信息是在少的可怜,只有单单一页的Python API介绍
    http://xmlsoft.org/python.html

    后来找了一些大神的博客才算零零碎碎的筹齐需要的知识点:
    http://mohsinpage.wordpress.com/2011/02/03/xpath-libxml2-in-python/
    http://ukchill.com/technology/getting-started-with-libxml2-and-python-part-1/
    http://ukchill.com/technology/getting-started-with-libxml2-and-python-part-2/

    这几就介绍一下最简单的操作:

    [python]
    import libxml2
    doc = libxml2.parseFile(filename) #可以使用parseDoc代替parseFile,两者的区别是DOC处理已经读进进程的文件,File是能自己读取文件,所以只需要提供文件名。
    ctxt = doc.xpathNewContext()
    record_nodes = ctxt.xpathEval(‘/*’) #括号中的XPATH,这是寻找的是根目录下的所有NODE。 xpathEval寻找结果给出的是一个x列表,如xrange(10)生成的内容。
    for node in record_nodes:
    name = node.name #node的名字
    content = node.content #node的内容
    sous-nodes = node.xpathEval(‘*’) #node下面的子node,同处理根目录的原理一下进行处理。

    #释放内存
    if doc:
    doc.freeDoc()
    [/python]

    由于libxml2在读取xml文本后不会自动释放内存,因此会出现内存泄露问题,这个困扰了我好久,一直以为是Python的程序问题,,找了一大堆Python程序的内存管理资料,但是最后才发现是libxml2的问题。所以上面代码中给出了释放内存的指令,非常非常重要!

    ps python下管理内存模块gc

    [python]
    import gc

    a=[‘abc’ for x in range(1000**5)]
    del a
    gc.collect()
    [/python]

  • TEI中标签的结构

    <text>标签属于每个TEI文件中表示文本主体内容的标签,其中包括了:

    <front> 留白占位置,学懂之后再补
    <group> 留白占位置,学懂之后再补
    <body> 文本内容
    <back> 留白占位置,学懂之后再补

  • TEI结构及的区别

    众所周知,TEI定义了数据结构,数据类型甚至是数据属性,因此这里简单的介绍一下TEI文件的基本结构,及<TEI>和<teiCorpus>的区别。
    这里TEI的版本为P5。
    (更多…)

  • xslt结构,template/call-templates/apply-templates调用

    template模板在XSLT中是一个很重要的工具,通过匹配的方法用来处理XML文档。
    操作作顺序,阅读器逐行读取XML文件,若遇到某一个元素在XSLT中有相关模板,就根据模板的规则处理元素内的数据,例如
    <xsl:template match=””>
        <xsl:value-of select=”.”/>
    </xsl:template>
    通过”/”,匹配XML的根元素,那么在阅读器读取到XML(等于开始读取XML文本)的根元素时,将通过这个模板的设置进行数据处理,这个命令是输出非标签文本。
    例如只使用:
    <xsl:template match=””>
    </xsl:template>
    由于里面没有使用任何的对匹配文本的处理方式,那么输出结果为空。
    那么假如处理下面的XML:
    <aa>
            <bb>
                    bbb
            </bb>
            <cc>
                    ccc
            </cc>
            <dd>
                    ddd1
            </dd>
            <dd>
                    ddd2
            </dd>
    </aa>
    XSLT只有一个模板
    <xsl:template match=”cc”>
        <h1><xsl:value-of select=”.”/></1>
    </xsl:template>
    那么输出结果,只有ccc被标题化,其他的只是纯文本拷贝。
    因此我们还可以使用另外一个template去处理剩下的标签。
    需要注意的是,一当根元素给”/”匹配了之后,那么剩下来的的模板就不在匹配任何的元素了,这种情况下也就是通常XSLT写法。
    XSLT文件其实是一个或者多个XML文件的样式表,里面包含的功能会很丰富,因此在整个XSLT文件中有许多的template模板,模板与模板之间通过以下两种方式来来穿插使用:
    <xsl:apply-templates>
    <xsl:call-template>
    这两个功能都是调用其他的模板,但是有所区别:
    <xsl:apply-templates>,是在匹配到某个元素的时候,才采用模板,因此一定需要在XML文件中存在这个元素,如果不存在,将不进行任何操作。
    调用例子:
    <xsl:template match=”/”>
         <xsl:apply-templates select=”cc”/>
    </xsl:template>
    <xsl:template match=”cc”>
        处理的内容
    </xsl:template>
    <xsl:call-tempalte>,是直接调用一个模板,并将需要处理的数据通过<xsl:with-param>形式传递给模板,就想编程语言中的函数一样。
    调用例子:
    <xsl:template match=”/”>
         <xsl:call-template name=”template-name”>
                  <xsl:with-param name=”name1″ select=”cc”/>
                  <xsl:with-param name=”name2″>
                       <xsl:value-of select=”cc”/>
                  </xsl:with-param>
    </xsl:template>
    <xsl:template name=”template-name”>
        <xsl:param select=”name1″>
        <xsl:param select=”name2″>
         处理内容
    </xsl:template>
    <xsl:call-template name=”name1″>, 这里虽然选择了name1,但是这个name1并不是XML文中的元素,而是直接调用模板name1。
    这里我们也简单的说一下两个<xsl:with-param>的区别:
    前面一个直接带select的标签,它的功能是传递元素cc给模板,再通过模板来处理cc下面的其他数据
    后面一个不带的标签,根据上面的定义,它只是传递cc的值给模板。
    假如说,传递给模板的元素带有其他的标签,就像前一个传递的内容一样,可以通过xslt的功能处理
    如<xsl:value-of select=”.”/>取cc元素及其子元素中的所有纯文本。
    在这里我曾遇到一个问题,那么就是在传递”格式化的文本“给模板的时候,我只想添加其他的格式标签并要保留文本内的其他格式标签,这个时候需要用到的是<xsl:copy>和<xsl:copy-of>,具体的例子就不说啦,等下次写到<xsl:copy>和<xsl:copy-of>的时候再说啦。
  • ASCII控制符在XML不合法理由

    个人理解,标签语言XML没有任何必要去传输这些ASCII控制符,因为通过任何一个编辑器对这些符号进行二进制转换时会产生问题。

  • Apache版本查看指令

    在Apache的bin目录下执行下面语句查询版本:
    httpd -v
    返回信息
    Server version: Apache/2.4.4 (Win32)
    Server built: Feb 23 2013 12:42:00

  • 64位Mod_wsgi支持win7,组建Apache的Python环境

    Python网页服务器的搭建,Python网页架构主流配置由WSGI模块、Apache网页服务器、Django或Web.py框架构成(框架方面其实选择很多,个人比较喜欢DJANGO和Web.py)。

    在这里,主要说明如何在Windows下构建Apache的Python平台,模块选择WSGI,框架使用Django。软件版本的选择:Windows7 + Python 2.7 + Apache 2.2.22 + Mod_wsgi 3.3。
    python-django
    (更多…)

  • 新建WORDPRESS到百度云BAE

    云计算已经成为当下最热门的技术,在网络应用中,云服务提供的网络流量、CPU处理、磁盘阵列存储的服务,都来自于大规模分布式的计算机配置,这些高效,高速及高安全的企业级服务,曾经对于中小企业来说完全不可能,但是现在即使是一个创业者也有机会使用这种企业级服务。因此云服务的价格低廉,而且收费上面是按需付款,用户用多少资源就付多少钱,就像平常生活中使用的水和电一样,因此大家也都称其为“网络能源”。目前提供云服务的企业非常多,在国外被谈论的最多的云是谷歌云、亚马逊云等,而在中国应该是阿里云、百度云、新浪云、华为云、曙光云,盛大云曾经也被计算在内,可以由于出现了背包兔事件后,大家谈论的就少了。根据搭建云平台的技术不同,每家都有每家的优势,曾经IT168.com就这六大云做了一个专题,如果有兴趣可以移步:《国内云计算平台大PK》。

    wponbae (更多…)

  • 不负责任的巴黎人

    巴黎人的不负责任,这里会慢慢更新,每次讲一个事件。

    不负责任的巴黎车站服务人员

    一日,送友回国,因为他的航班是晚上23点后,因此送至登机,再坐RER已然很晚。正巧这次没带出门必备的银行卡,尽管带了现金,但是在23点的戴高乐机场火车站,竟然没有一个人工售票的窗口。凭着经验找到了那个可以换硬币的机器,竟然也处在"罢工"状态(HS,Hors Service)。最后没办法,我只能找站台服务人员询问哪里可以换零,可没等我话还说完,对方直接说了一句"Terminal 3."(三号航站楼),我纳闷,我问换零钱的地方和三号航站楼有啥关系,因为从机场开往巴黎的城郊火车只有Terminal 1和我目前在的Terminal 2。见询问无果,只好另寻他法。正巧有一队列车员走过(车上检票的那中),问其中一人,也是没等话问完,对方便手指前方,说"on a ouvert la porte."(我们把那扇门开了。)我顺着方向看过去,果然一扇平常供有大型行李或行动方便的旅客准备的门。好吧,尽管他的回答也没对上问题,至少解决了我烦恼的问题。
    这件事还没完,因为进到站台后,发现有许多旅客都在等车,站台两侧的火车停靠一旁,广播里播报着说已经没有任何RER开往巴黎,请去Terminal 3坐公交。到现在,我终于知道刚刚那位车站服务人员的意思了。不过,竟然没车了,为啥还让这么多人进站在这等着呢?
    广播一而再再而三的播着无车信息,已经有些人准备离开。大概过了5-10分钟,有一辆RER开动了,我这时已经走上电梯准备去坐Terminal 3的公交了。巴黎RER经常到末班车,即使有车也不载人。看到这车开动,赶紧折身下来,但是已经赶不上了。另一辆车在这10分钟后顺利地开动,可是刚刚有位女士大概听了广播去坐公交,车开动后,我看见她在楼梯上狠的直咬牙。

    巴黎经常遇到这种无秩序的事情和不负责任的人,在这里将会一一数来。

  • 电影《酒徒》

    电影《酒徒》

    这是一篇转载的影评,原文地址:http://movie.douban.com/review/5209992/

    即使因为醉酒导致雷老太的割腕自杀,不安与愧疚催使他在日记中写下“从今天起戒酒”,刘先生仍在傍晚时分去到餐厅喝了几杯白兰地。这就是酒徒,酒精门下之徒,可这算得上他唯一坚持的操守了。

    其他的操守,等下,他有什么操守可言?理想和爱情?

    理想的话,以海明威自比的他不是不希望能有出头之日,且以文学之名。

    按照原著,刘先生他不仅熟悉并热爱乔哀思、普鲁斯特、海明威,并是一个对五四新文学有自己独到见解的饱学之隐士,绝不单单是一个对西方文学有所了解郁郁不得志而无需同情的半衰老男人。但电影之中能够体现他的才华之处可谓少之又少,无非几个外文小说封面的特写,麦荷门的来信与对话稍能体现,且都以西方文学为主,除了那一尊鲁迅全身像和对《子夜》、《激流》的简短评论,得以让人意识到刘先生或许对五四新文学有所认识,但其深浅如何着实难为观众所能探测得到也。或者是为了不使片子显得沉闷,从而削减了大部分的文学讨论,总之刘先生的文学质素体现如此之单薄也无可厚非了。

    他早就明白“文学是一种劳役”,需要“像牛一样默默耕耘”,并以此激励自己与同伴。麦荷门这个年轻人所持有的文学梦想或多或少有一部分是他浇灌出来的,反而到最后是他拔旗撤退了。“编剧生活不安定,奸商盗版成风,政府不能保证编剧的权益,观众水平太低,整个大环境是这样”这是他酒醉迷蒙中阐述没有好剧本的原因,也是他一步步从此端滑向彼端的原因:频繁的搬家和窘迫的生活,花费心血写成的武侠小说被报馆退回更说以后都不采用,交往二十多年的导演骗走他的剧本而无计可施。

    “吾意已决,不能继续再做傻瓜,不能挨饿,不能不喝酒,不能因为交不出房租而发愁”,所以一开始还暗想四毫子小说毒害了十七岁少女,到最后为了“谋稻粱”他也下手写《潘金莲做包租婆》这类色情小说。就是这种“不必构思,不必布局,不必刻画人物,更不必制造气氛”的作品偏偏能换取他的房租和酒钱。所以“即使有《老人与海》,谁会欣赏呢?”,他还能说什么?除了心灰意冷。经历过生活与情感上的双重窘迫,非身处其境的麦荷门再跟他讲乔哀思,再跟他讲理想,非但不能激励他,反而只会加深他的挫败感。

    摆在桌上的《前卫文学》创刊号简直是对他的极大嘲笑,可惜这个时候他已经看不进去此类“严肃文学”,烦躁之下翻看几下便扔到一边去,还要写潘金莲呢。麦荷门心怀激动电话过来要这位老友提意见,他只能含糊其辞说水准不错。直到最后麦荷门要他提供一些外文材料以供翻译,才道出自己近来根本没有看过文学方面的书。

    理发店里,麦荷门说起发行量奇差(果然啊,在香港办杂志,水平不可以超过《青年园地》,否则必蚀)。但马上表决心:只要有一个读者,也绝对要出版。被荷门的坚持所打动,刘先生主动说可以写一篇小说。荷门欣然,又似无意的问起用哪个笔名,已经在报上发了四篇黄色小说“平常的笔名”怎么可以在《前卫文学》上再刊登作品?他愣了一下,怅然,明白两人已是渐行渐远。

    海明威,卖掉。 D.H 劳伦斯,卖掉。托马斯·曼,卖掉。加缪,卖掉……十五斤,三十元。卖书的行为彻底抽空了他。也就是在这个时候觉得自己分外可怜,终于背弃了多年前的自己,此时真乃茕然一身于天地间了。

    满腹经纶终化牢骚。

    就让理想在酒杯里游泳,就让希望在酒杯里游泳,就让悲哀在酒杯里游泳。

    饮酒解不了愁,那就饮滴露吧。自杀未遂的他,答应待他如亲儿的雷老太不再饮酒。在便利店只要了烟,在饭馆只要了热咖啡,可途径舞厅时,约摸是想起杨露,还是折回来又踏进去。琥珀色的液体灌入喉,便开始大段大段回忆:想起上海的初恋,想起她嫁作他人妇时自己醉得不辨方向。女人的脸庞一一闪过,刘先生的哭泣便是这生锈感情的落雨天。

    江丽丽看他看得很明白透彻,知晓他的境地,但根本不会出手搭救,因为她最明白什么对自己有利,知道如何说动他,永远自得,毫无愧色。画展中遇到江丽丽,彼时已经升级作太太了,丈夫恰是雇人打他的纱厂老板。跟他结婚?为什么?因为,他有钱,有钱。女人也可以一点一点地摧毁他的信念。他逐渐相信钱是一切的主宰 钱是魔鬼。它的力量比神还大,尤其是在香港这种社会里。

    司马莉,这个早熟的十七岁少女,几次三番勾引他,因为迷恋他的文人风度与成熟。或许是将自己当作洛丽塔了,又或许是四毫子小说看多了。喝酒抽烟言语动作挑逗在他看来,统统都是自暴自弃的行径。当司马莉一脸骄傲宣告她十五岁就堕过胎时,看着那稚嫩又显无知的脸颊,只发警告:对于一个十七岁的女孩,头脑太新会危险。

    他不会顺势做戏,如司马莉所言,头脑太旧。他憎恶这等不知自爱之人,他憎恶司马莉,怎么可能会因她变身亨博特?

    求而不得的司马莉施耍诡计企图迫使他搬家以逼其就范(这又是何等拙劣幼稚的行为啊),由此遇到王太太。对王太太,这个不喝酒也要把酒柜里摆满酒的女人,刘先生并不想多做了解。王太太不了解他的内心,只期望能从外部生活细节温暖他留住他,而这断然不是他所期望的。当王太太得知他是因为武侠小说写不好(不是因为她)而烦恼时明显松了口气:“原来这样”,他不解地反问“你一点都不觉得严重?”

    但还是有丰美的吃食,一杯酒下肚,半块肉进嘴,眯着眼从这个角度看擦橱窗的王太太,笑意盈盈回头看他,不是不动人的。那他在想什么?看到桌上玻璃杯中罩着的昆虫最终放弃了挣扎。推开前来扶他的王太太,踉跄走开。

    王 太太终究是不懂他的,给他钱,这成什么了?尊严大过天,无论如何不能接受,必须搬走。可怜王太太寻到他新住处,躺在他床上缓缓解扣子,也无济于事。而刘先生的这番“不作为”的羞辱导致她服了半瓶滴露。

    他几乎是把杨露当作爱人了。“在许许多多杂乱的思念中,一个思念忽然战胜了一切, 我急于在一个十七岁的女孩子身上做一次英雄”。不同于司马莉,同样十七岁的杨露让他怜惜。他们相处得很愉快,但他已经明白:把她当作妓女,他是英雄;把她当作爱人,他渺小得可怜。所以当杨露提及已经厌倦伴舞生涯时他含糊其辞,立刻转移话题:猫王的歌,薯仔舞,明星,这些统统是安全的话题。杨露说已经爱上他时,他不做回应。

    最后一次食饭,杨露说要嫁人了,一个年轻的客人。可之前她都说厌烦年轻人和老年人的啊,这“年轻”两字犹如两支箭,直射他心,又刺又痛。借着酒意:哦呼呼!来饮酒啦。这时候杨露定是非常厌烦他的,不然不会酒瓶子砸上他脑袋,砸得他脑震荡。

    出院后独寻了几次杨露,未果。独自饮酒时一个中年妇女说要介绍女儿给他, 300 块。在门口看到一张怯生生而又稚嫩的脸,推推搡搡间女人把他身上的钱全部掏走。二十岁,第一次,爸爸生病没钱买药,这样老套的回答难以忍受,刘先生踉跄着走了。女孩实际上十五六岁,定是被母亲强逼着接客。杨露找不到,找到江丽丽时听得一句“我不认识他”,回到住处翻开钱盒,只有零钱。却扑去要找那个少女,何必去找她?只因为万念俱灰,才想见见那个比他更可怜的少女。

    战争年代折磨人,和平年代也折磨人。导演总在饭局谈笑风生间安排战争的细节回忆,那些血腥残忍的描述映衬着酒馆里的觥筹杯盏,更显得可怖。无论是趴在墙头看到砍头而吓得噩梦连连的小孩还是没了头颅仍在街上奔走的汉子,抑或是竹簧里脑浆横流的级长,身历八·一三和一·二八孤身在香港的刘先生,一生都被噩梦拖着拽着,不得所终。他能去向哪里?谁能为他辩解?

    PS.这部电影当真是黄国兆导演为了刘以鬯老先生致敬之作品。观影后,黄导演说只要大家看完这电影心生找来小说看的念头,那,目的就达到了。说起买下这版权10年,筹备下来还未开拍年限就过了,无奈之下找到刘老先生商量,老先生慷慨,说再给5年吧。倒是黄导演非常之不好意思,让一个年逾九十的老人等这么久才看自己作品。
    黄导演是个非常真诚的人,不惮于叙说自己的拍片时的窘迫,抵押房子,内景为主,甚至一个演员饰两角(不得不说蒋祖曼的厉害)。自云会有些折扣,但已经很了不起了。诸多感动,不知所表。