2007年6月24日星期日

last.fm真是个好东西

其实很早就听说过这个东西,一直没用过,最近听说有中文版的,下了一个试了一下,真的很好用,找出的歌比什么kugoo好多了。
可惜好多功能都是要收费的,一个月要3米国货币,我是享受不了了。
还发现了一个小bug,我用的xp home english版的,用google输入法的时候输中文程序就立刻关掉了,没有任何提示。要不要和网站提交一下?caosuwei blogger

2007年6月10日星期日

DocBook试用

    今天试着用了一下Docbook这个东西。在网上也找到了一个国内的不知道谁写的介绍、使用入门之类的东西,还是国内互联网的特色,全部网站几乎都是在使用这一个版本的文章。好像是这篇文章有点旧了,我在对Docbook没有什么概念的时候看得有点没头绪。我把自己总结的一点东西写下来,免得自己忘了。
    实际上自己用Docbook写文档的时候要写的之后那个和你的文章内容有关的xml文件就行了。其余要了解的就是标题用什么样的标记,段落用什么样的标记就行了,这个可以看参考,没有必要全部知道。在解析你的xml文件的时候程序会根据你的指示去找那个定义格式的xsl文件。在你的文章内容的基础上套用那个格式,生成你指定的html或pdf或其它格式的文件。
    其中,xsl文件能在sf.net上下到,这个地址。好像还有个www.docbook.org的网站,但是我这里上不了,不知道是网站的原因还是GFW。
    我用的是xml的那个。
    比如写出文章是这样的:
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
               "
http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
    <article>
        <title>My Article</title>
            <sect1>
            <title>My Section</title>
            <para>This is my first article.</para>
            </sect1>
    </article>
这是个XML文件,要变成html的或者pdf的时候就要先解析这个xml文件。变成不同的格式用不同的工具:
html的可以用xsltproc,共有四个文件:libexslt.dll;libxml2.dll;libxslt.dll;xsltproc.exe。也有其他的xml解析器,我没有用过。
编译的时候用命令行:
    xsltproc.exe --output xxx.html docbook5-xsl-1.72.0\html\docbook.xsl xxx.xml
就能在当前目录生成格式化的html文件。
xml文件中的<article> <title>等标记都是有参考可查的,都在sf.net的那个地址里面。
如果是生成pdf文件,可以用fop,同样是上面那个xml文件,用命令行:
    fop.bat -xsl D:\cpp\docbook5-xsl-1.72.0\docbook5-xsl-1.72.0\fo\docbook.xsl -xml D:\cpp\libxslt-1.1.19.win32\libxslt-1.1.19.win32\bin\book.xml -pdf mybook.pdf
就能生成mybook.pdf文件
这个是java的,要安装jre
 
还没弄明白上面xml文件中的DOCTYPE节点有什么用途,用xsl就能定义格式,还要dtd干吗?反正注释掉一样能用,warning更少
还有就是上面两种方式对中文文档都不行,再找找资料。

2007年6月8日星期五

八十年代访谈录

    今天拿到了一本《八十年代访谈录》,是对八十年代代表人物的访谈。其实作者本人查建英也是其中之一,对很多其中的人物的关系很好,访谈写得很精彩。可惜我看的是大陆版的,有很多删节,几乎每一篇访谈后面都有小字提示:"有删节"。豆瓣上有在牛津出版社在香港出版的繁体版,加上了大陆版所删掉的篇幅,可惜没能看到。
    本来是被书中所描述的人物本身所吸引,但看到后来,越来越觉得吸引我的是他们那个时代的那种浪漫特质的精神。文革时期当了十几年的车工钳工,一旦有机会,又能立刻拿起笔杆子。他们精彩的自我奋斗的人生很让我羡慕。

2007年5月10日星期四

测试驱动开发

你们的项目用到了测试驱动吗?
到现在为之,我觉得我用这个的很大一方面只是便于看到我现在写的程序是否运行正常,尤其是当我写的程序是一个系统的后台,没有前台界面就没有办法调用的时候,用一个叫测试驱动开发的东西总要比printf或std::cout好看点吧。。。。

2007年5月9日星期三

BMW Z4

中午和同事出门吃饭的时候在门口看到一辆BMW Z4的敞篷跑车,一个墨镜美女端坐其中。美景引得我不住的回头,同事淡淡的对我说:"没什么,李湘的车,时间长了你就习惯了。"
然后同事才告诉我,李湘经常来这里录节目,就在我公司的楼上。
呵呵,想不到明星就在身边啊。。。

2007年5月6日星期日

心情不好,不想说话

他们都在外面有说有笑的,但我不想加入他们,我想一个人呆着。
但我又想加入他们,我不想一个人呆着。
还是算了吧,心情不好,不要传染给他们。

去了一趟万圣书店

下午闲来无事就跑出去逛了逛。早就听朋友说起万圣书店了。还说是我第一次来北京的时候在蓝旗营买火车票的地方。当时就着急着买票,并没有注意到这个大名鼎鼎的书店,罪过,罪过。。。
今天下午去的时候人很少,整个二楼都几乎是空荡荡的,正好我就慢慢的把整个店都逛了一遍。书店全部都是文史哲方面的书,这两年已经很少看这些修身养性的书的,但是让我心痒痒想买的书还真是不少,看着这本也不错,那本也不错,最后我走出的书店的结果就是一本都没有买,太多了,挑不过来。。。
其实是先看看,下次来买吧。一定来买。

2007年4月27日星期五

Autorun病毒rundll.exe

autorun.inf、rundll.exe、rundll86.exe、rundll32.exe、rundll16.exe、npkpdb.dll、c_10083.nls、UTF-8.nls
 
今天发现自己的电脑中毒了,双击C,D盘的时候会产生一个没有图标的rundll.exe文件,而且没有办法打开控制台。
上网查了查,看到一个博客上有解决方法,他还给出了一个vbs脚本用来杀毒,试了试,的确不错。
谢谢了。

2007年4月26日星期四

关于typename

有人问我在一个template function里面有时候声明一个变量前面加了一个typename关键字,不知道有什么作用。
晚上回家翻Effecti C++的时候看到了这个东西。我也留心看了一下。
在写模板函数的时候自然而然的要在函数内部用到用template参数定义的数据类型。但是当你用这个template参数来定义变量的时候就会出以下的问题:template参数可能和已有的实际类型重复。举个例子

template<typename C>
void print2nd(const C& container){
C::interator *x;
}

这个地方本意是声明一个C类的迭代器的指针,但是如果C::interator刚好就是一个C的成员变量,而x又刚好是一个全局的变量呢?
那就把声明局部变量变成了一个乘法运算了,有歧义了。
加上typename关键字,就等于告诉编译器:这是个iterator类型,不是乘法。

typename C::iterator *x;

但要注意,这个用法只用在"嵌套从属名称"上面
template<typename C>
void f(const C &container, //这个地方不需要用,也不能用
typename C::iterator iter); //一定要用