走千走万's profile走千走万--走不完的路PhotosBlogLists Tools Help
    November 27

    一切恢复正常

    上班了,就是有点累。
     
    早上在车上直打盹,好像睡不够似的。
     
    最近在研究js,估计这一周还得继续研究,得了解一下json-rpc是干嘛的。
    November 21

    最近越来越懒了

    最近有点懒,什么也不想干,也不知道要干什么,更不知道应该写点什么。
     
    可能是冬天快到了吧,人也变得懒散起来,要是在家里,现在应该是在柴禾堆旁晒太阳的日子,呵呵。
     
    在北京这个乱七八糟的地方,没有一块清净的。
    November 20

    大雾

    好大的雾。真是太大了,呵呵。
     
    楼上的那个鸟人,早上七点多就丁丁当当的敲地板,有毛病吧。
    November 16

    让我试试在这里添加点html

    hello world
    居然把握的javascript代码给过滤掉了
    November 15

    楼上最近比较吵

    周末一大早就丁丁当当,晚上还嗡嗡作响,真他妈的烦
    November 10

    食量大增

    肚子都涨起来了,涨的我害怕。
     
    今天早上阴天,下点雨或者雪吧,北京好久没有降水了。
    November 09

    一个绕过浏览器内置阅读器样式的页面

    FireFox2.0和ie7有内置的RSS阅读器,在线打开rss文件,自定义的xsl就会不起作用。
     
     
    查看如下页面的源代码,就成功避免了浏览器对xsl的屏蔽作用。
     
     

    不知道写点什么,就开始胡诌

    调试javascript很痛苦,因为不清楚DOM的结构。
     
    可是了解了DOM的结构还是很痛苦,因为JS格式在各个浏览器下是不同的。一般IE的容错能力还是比较强的,比如window.parent.document.getElementByID("XXX")可以写成parent.XXX,但是在firefox下是不行的。习惯了在IE下的JS,跑到firefox极不习惯。不过如果要写通用的JS,还是必须在firefox下开发的。
     
    了解DOM,了解DOM,偶得javascript还是不熟,用句行话来说,还是很糙啊,呵呵
    November 08

    最近过得比较郁闷

    最近过得比较郁闷。需求是程序员必须要面对的,但是多变的需求就有些让人防不胜防,尤其是那些出尔反尔的需求就让人感觉到气愤了。
     
    开发出一个好的产品,应该有一个好好的规划,不应该想起一出是一出。想的简单,用手一比划就是了,但是要开发的话,极有可能要把以前很大一部分的工作推倒重来,这就是传说中的蝴蝶效应了吧。
     
    这些方面我有很多检讨的地方,首先说态度不端正,以为只是按照需求把功能实现出来就行了,对于需求的前提条件没有严格把关,对于需求也没有卡严,卡死,充当老好人,提一个需求完成一个需求。
     
    以后这种小项目要以书面的形式把需求固定下来,并充分讨论之后实施,免得节外生枝,事倍功半
     
     
    November 07

    转载一篇文章:用 Eclipse 平台进行 C/C++ 开发

     
    其实eclipse的功能是非常强大的,可以做anything。
     
    我目前接触到的就是CDT
    November 06

    大风降温周末啥也没干

    上周好像也没有做成什么事情,郁闷中。
     
    1.firefox下的xslt怎么调用javascript?
    2.eclipse怎么开发c++?
    November 01

    贷款终于还清了

    还了两年,断断续续,中间也想一次性还清,但是不可预料的花项一直比较多,而且比较大。
     
    不管怎么说,算是终于还完了,可以小小的庆祝一下。
    但是不知道感觉为什么压力还是比较大呢?
    October 30

    vsftp官方站

    不知道是不是官方站,反正我的vsftp就是从这里下载的
     
    (1)下载软件
    (2)参考INSTALL进行安装
    (3)配置vsftpd.conf文件让vsftp能够以standalone方式运行
    配置文件用到的几点说明:
    #让vsftp能够以standalone方式运行
    listen=YES
    #让本机用户能够登陆ftp
    local_enable=YES
    #让匿名用户可以登陆
    anonymous_enable=YES
    #让用户可以对所属目录可写
    write_enable=YES
     
     
    我用到的就这些,以后有新的会再添加

    转载一篇文章:Linux下安装最新Apache2+PHP5+GD2

    Apache2的安装就不用说了,这里主要着重说一下GD和PHP的安装。
    1.安装GD
    (1)安装zlib
    # cd zlib-1.2.3
    # ./configure --prefix=/usr/local/zlib2 (注意,如果您以前没有安装zlib,可以不指定路径,我是没有删除以前的低版本才指定的!以下雷同!)
    # make
    # make install
     
    (2)安装jpeg
    # cd jpeg-6b/
    # ./configure --prefix=/usr/local/jpeg6  --enable-shared
    [注意,这里configure一定要带--enable-shared参数,不然,不会生成共享库]
    # make
    # make install-lib
    如果你选择默认安装,可能很顺利,指定路径后,请先创建以下文件夹
    错误提示:...... /usr/bin/install -c -m 644 jconfig.h /usr/local/jpeg6/include/jconfig.h
    /usr/bin/install: 无法创建一般文件‘/usr/local/jpeg6/include/jconfig.h’: 没有那个文件或目录
    make: *** [install-headers] Error 1
    # mkdir /usr/local/jpeg6
    # mkdir /usr/local/jpeg6/include
    # mkdir /usr/local/jpeg6/lib
    # make install-lib
    # make install

    安装时如果错误提示:
    /usr/bin/install: 无法创建一般文件‘/usr/local/jpeg6/lib/libjpeg.a’: 没有那个文件或目录
    make: *** [install-lib] Error 1
    创建如下文件夹:
    # mkdir /usr/local/jpeg6/lib
    # make install
    /usr/bin/install -c cjpeg /usr/local/jpeg6/bin/cjpeg
    /usr/bin/install: 无法创建一般文件‘/usr/local/jpeg6/bin/cjpeg’: 没有那个文件或目录
    make: *** [install] Error 1
    # mkdir /usr/local/jpeg6/bin
    /usr/bin/install -c -m 644 ./cjpeg.1 /usr/local/jpeg6/man/man1/cjpeg.1
    /usr/bin/install: 无法创建一般文件‘/usr/local/jpeg6/man/man1/cjpeg.1’: 没有那个文件或目录
    make: *** [install] Error 1
    # mkdir /usr/local/jpeg6/man
    # mkdir /usr/local/jpeg6/man/man1
    # make install
    好了,直到安装成功!
     
    (3)安装libpng:
    # cd libpng-1.2.12
    # ./configure
    # make
    # make install
     
    (4)安装freetype:
    # cd freetype-2.2.1
    # ./configure --prefix=/usr/local/freetype2
    # make
    # make install
     
    (5)安装gd2
    # cd gd-2.0.33
    # ./configure --prefix=/usr/local/gd2 --with-zlib=/usr/local/zlib2/ --with-png=/usr/local/ --with-jpeg=/usr/local/jpeg6/ --with-freetype=/usr/local/freetype2/ (请指定及格插件的安装路径,否则安装php的时候可能出错!)
    # make
    # make install
     
    到这一步为止,gd已经安装完毕
     
    2.安装php
    主要的问题就是编译时的配置选项,把我的config选项拷贝下来,仅供参考。
    #'./configure' '--with-apxs2=/usr/local/apache/bin/apxs' '--prefix=/usr/local/php' '--with-gd=/usr/local/gd2' '--with-jpeg-dir=/usr/local/jpeg6/' '--with-ttf' '--with-zlib-dir=/usr/local/zlib' '--enable-gd-native-ttf' '--with-freetype-dir=/usr/local/freetype2' '--with-png-dir=/usr/local' '--enable-mbstring=all' '--enable-mbregex' '--prefix=/usr/local/php' '--with-iconv=/usr/local/'
    #make
    #make install
     
    剩下的就是配置apache了,可以参考手册。
     
    October 27

    无语

    失眠,但最后还是睡着了。
     
    下午准备请半天假,回家睡觉,呵呵。
    October 26

    今天消防演习,下楼容易上楼难

    能不能不下去?不去爬那17层楼梯呢?
     
    今天消防演习的主要内容分为火场逃生和急救知识,还有一点就是用灭火器灭火。
     
    回来的时候电梯挤不上去了,挤了三部电梯,都说超载,可是我一下来电梯就关上门了,真是邪门。
     
    最后没办法,爬楼梯吧,十七层的楼梯,越爬是步子越沉重阿,还有,大楼的保洁人员居然对着我笑,他们本来应该被我这种执着向上,不畏艰辛的精神所感动的,呵呵。
     
    爬上了十七层,我的两腿打哆嗦,腿肚子都快往前了。。。。赶快让我坐一会吧,瘫倒在椅子上。
    October 25

    转载一篇关于 Linux下如何设置源码编译环境 的文章

    从源码包安装软件最重要的就是仔细阅读README INSTALL等说明文件 它会告诉你怎样才能成功安装
    通常从源码包安装软件的步骤是:
    tar jxvf gtk+-2.4.13.tar.bz2解开源码包
    cd gtk+-2.4.13/ 进入源码目录
    ./configure 似乎在某些环境下./configure会造成终端退出。而使用. configure则会正常运行,如果有这个现象,就试试 . configure。通过configure程序猜测主机信息,最终建立Makefile,以完成make,所以如果./configure不成功而去make的话,就会出现"make: *** No targets specified and no makefile found. Stop."
    make 当./configure成功结束后,就开始正式编译程序了.
    make install 编译成功后使用make install安装
    make uninstall 某些软件支持卸载,可能使用该方法卸载,如果支持的话,通常会在README中写到(似乎比较少)
    configure程序带有很多参数,可以通过 ./configure --help查看详细内容,通常位于前面的是常规configure的参数说明,末尾是该程序的可用参数说明。
    ./configure --prefix=/usr 指定安装目录,通常从源码包编译安装的软件默认会放在/usr/ local下因为这是FHS(Filesystem Hierarchy Standard)的规定,不知道什么是FHS?看看这篇文章吧: http://www.pathname.com/fhs/pub/fhs-2.3.html 相信它会让你对linux系统结构有更好的理解,很值得读读。
     
    再说一下几个关系到能否成功编译的东东:/etc/ld.so.conf ldconfig PKG_CONFIG_PATH
    (1)首先说下/etc/ld.so.conf: 这个文件记录了编译时使用的动态链接库的路径。默认情况下,编译器只会使用/lib和/usr/lib这两个目录下的库文件如果你安装了某些库。
    举例:
    比如在安装gtk+-2.4.13时它会需要glib-2.0 >= 2.4.0,辛苦的安装好glib 后没有指定 --prefix=/usr 这样glib库就装到了/usr/local下,而又没有在/etc/ld.so.conf中添加/usr/local/lib 这个搜索路径,所以编译gtk+-2.4.13就会出错了
    对于这种情况有两种方法解决: 一:在编译glib-2.4.x时,指定安装到/usr下,这样库文件就会放在/usr/lib中,gtk就不会找不到需要的库文件了 Smile 对于安装库文件来说,这是个好办法,这样也不用设置PKG_CONFIG_PATH了 (稍后说明)
    二:将/usr/local/lib加入到/etc/ld.so.conf中,这样安装gtk时就会去搜索/usr/local/lib,同样可以找到需要的库 Smile 将/usr/local/lib加入到/etc/ld.so.conf也是必须的,这样以后安装东东到local下,就不会出现这样的问题了。将自己可能存放库文件的路径都加入到/etc/ld.so.conf中是明智的选择  添加方法也极其简单,将库文件的绝对路径直接写进去就OK了,一行一个。例如: /usr/X11R6/lib
    /usr/local/lib
    /opt/lib
     
    (2)再来看看ldconfig是个什么东东吧 :它是一个程序,通常它位于/sbin下,是root用户使用的东东。具体作用及用法可以man ldconfig查到简单的说,它的作用就是将/etc/ld.so.conf列出的路径下的库文件 缓存到/etc/ld.so.cache 以供使用因此当安装完一些库文件,(例如刚安装好glib),或者修改ld.so.conf增加新的库路径后,需要运行一下/sbin/ldconfig 使所有的库文件都被缓存到ld.so.cache中,如果没做,即使库文件明明就在/usr/lib下的,也是不会被使用的,结果编译过程中抱错,缺少xxx库,去查看发现明明就在那放着,搞的想大骂computer蠢猪一个。 ^_^  切记改动库文件后一定要运行一下ldconfig,在任何目录下运行都可以。
     
    (3)再来说说 PKG_CONFIG_PATH这个变量吧:。
    经常在论坛上看到有人问"为什么我已经安装了glib-2.4.x,但是编译gtk+-2.4.x 还是提示glib 版本太低阿?为什么我安装了glib-2.4.x,还是提示找不到阿?。。。。。。"
    都是这个变量搞的鬼。先来看一个编译过程中出现的错误 (编译gtk+-2.4.13):
    checking for pkg-config... /usr/bin/pkg-config
    checking for glib-2.0 >= 2.4.0 atk >= 1.0.1 pango >= 1.4.0...
    Package glib-2.0 was not found in the pkg-config search path. Perhaps you should add the directory containing `glib-2.0.pc' to the PKG_CONFIG_PATH environment variable No package 'glib-2.0' found configure: error: Library requirements (glib-2.0 >= 2.4.0 atk >= 1.0.1 pango >= 1.4.0) not met; consider adjusting the PKG_CONFIG_PATH environment variable if your libraries are in a nonstandard prefix so pkg-config can find them.
    [root@NEWLFS gtk+-2.4.13]#
    很明显,上面这段说明,没有找到glib-2.4.x,并且提示应该将glib-2.0.pc加入到 PKG_CONFIG_PATH下。 究竟这个pkg-config PKG_CONFIG_PATH glib-2.0.pc是做什么的呢?
    先说说它是哪冒出来的,当安装了pkgconfig-x.x.x这个包后,就多出了pkg-config,它就是需要PKG_CONFIG_PATH的东东
    pkgconfig-x.x.x又是做什么的? 来看一段说明:
    代码: The pkgconfig package contains tools for passing the include path and/or library paths to build tools during the make file execution. pkg-config is a function that returns meta information for the specified library. The default setting for PKG_CONFIG_PATH is /usr/lib/pkgconfig because of the prefix we use to install pkgconfig. You may add to PKG_CONFIG_PATH by exporting additional paths on your system where pkgconfig files are installed. Note that PKG_CONFIG_PATH is only needed when compiling packages, not during run-time.
    我想看过这段说明后,你已经大概了解了它是做什么的吧。其实pkg-config就是向configure程序提供系统信息的程序,比如软件的版本啦,库的版本啦,库的路径啦,等等这些信息只是在编译其间使用。
    你可以 ls /usr/lib/pkgconfig 下,会看到许多的*.pc,用文本编辑器打开会发现类似下面的信息:
    代码:
     prefix=/usr
     exec_prefix=${prefix}
     libdir=${exec_prefix}/lib
     includedir=${prefix}/include
     glib_genmarshal=glib-genmarshal
     gobject_query=gobject-query
     glib_mkenums=glib-mkenums
     Name: GLib
     Description: C Utility Library
     Version: 2.4.7
     Libs: -L${libdir} -lglib-2.0
     Cflags: -I${includedir}/glib-2.0 -I${libdir}/glib-2.0/include
     明白了吧,configure就是靠这些信息判断你的软件版本是否符合要求。并且得到这些东东所在的位置,要不去哪里找呀。不用我说你也知道为什么会出现上面那些问题了吧。
    解决的办法很简单,设定正确的PKG_CONFIG_PATH,假如将glib-2.x.x装到了/usr/local/下,那么 glib-2.0.pc就会在 /usr/local/lib/pkgconfig下,将这个路径添加到PKG_CONFIG_PATH下就可以啦。并且确保 configure找到的是 正确的glib-2.0.pc,就是将其他的lib/pkgconfig目录glib-2.0.pc干掉就是啦。(如果有的话 ^-^) 设定好后可以加入到~/.bashrc中,例如:
    [root@NEWLFS~]#PKG_CONFIG_PATH=/opt/kde-3.3.0/lib/pkgconfig:/usr/lib/pkgconfig:/usr/local/pkgconfig:/usr/X11R6/lib/pkgconfig
    [root@NEWLFS ~]#echo $PKG_CONFIG_PATH /opt/kde-3.3.0/lib/pkgconfig:/usr/lib/pkgconfig:/usr/local/pkgconfig:/usr/X11R6/lib/ pkgconfig
    从上面可以看出,安装库文件时,指定安装到/usr,是很有好处的,无论是/etc/ld.so.conf还是PKG_CONFIG_PATH默认都会去搜索/usr/lib的,可以省下许多麻烦。不过从源码包管理上来说,都装在/usr下管理是个问题,不如装在/usr/local下方便管理其实只要设置好ld.so.conf,PKG_CONFIG_PATH路径后,就OK啦 ^_^
    另外某些软件因为版本原因(比如emacs-21.3),在gcc-3.4.x下编译无法成功,(make 出错) 使用低版本的gcc就可能编译通过。可能是因为gcc-3.3.x和gcc-3.4.x变化很大的缘故吧。
     
     

    暂时想到了这么多,先记下这些吧,如果你对源码包编译有了一点的了解,就不枉我打了这么半天字啦。 ^_^ 另外./configure 通过,make出错,遇到这样的问题比较难办,只能凭经验查找原因,比如某个头文件没有找到,这时候要顺着出错的位置一行的一行往上找错,比如显示xxxx.h no such file or directory 说明缺少头文件然后去google搜。或者找到感觉有价值的错误信息,拿到google去搜,往往会找到解决的办法。还是开始的那句话,要仔细看README,INSTALL 程序如何安装,需要什么依赖文件,等等。
    另外对于newbie来说,编译时,往往不知道是否成功编译通过,而编译没有通过就去make install必然会出错,增加了解决问题的复杂性,可以通过下面方法检查是否编译成功:
    一:编译完成后,输入echo $? 如果返回结果为0,则表示正常结束,否则就出错了 echo $? 表示检查上一条命令的退出状态,程序正常退出 返回0,错误退出返回非0。
    二:编译时,可以用&&连接命令, && 表示"当前一条命令正常结束,后面的命令才会执行",就是"与"啦。这个办法很好,即节省时间,又可防止出错。例: ./configure --prefix=/usr && make && make install
    October 24

    巨堵的北京交通

    太堵了,以至于我每天都提心吊胆的担心迟到,在坐公交还是打车之间犹豫(好像最后没有一次打车,最后都是狠狠心坐公交,跟堵车和司机们拼了,跟他们死磕)。
    在北京最明智的交通工具就是自行车了,环保,省钱,不用担心迟到,锻炼身体。。。。自行车 的好处说不完阿。。。。可是俺的自行车都已经丢了四五辆了,都丢伤心了。。。。
     
    买车排在计划中,买就买个破的,破的不能再破的,破的连小偷都看不上眼的,有轮子就可以了,呵呵
    October 23

    牛X的广告

    昨天小区里有推销灭蟑螂药的,广告标语巨牛:杀灭蟑螂,三天见效,蟑螂不死我死.....
    这是我见过的最气壮山河的广告语了,牛。
    October 17

    perl中打开文件的方法

    先找一段网上不错的评论:
    “句柄”是perl得到数据的一种方法,是perl进程与外部建立连接的桥梁,它与文件、过程、目录等建立起一种关联的关系,对这个概念的理解关键在“柄”一字。在perl中提供文件句柄和目录句柄两种。perl中不用特殊的字符来表示句柄,一般用大写字符来识别。
    perl提供三种标准的文件句柄:STDIN、STDOUT、STDERR,它们由程序的父进程建立,并自动打开文件或设备。
     
    然后打开文件的方法:
     
    方法一:采用open方法获得文件句柄
     
    读:open(文件句柄,"<文件名")/open(文件句柄,"文件名"),前提文件必须已经存在,否则会返回0,出错信息在$!中。
    写:open(文件句柄,">文件名"),文件如果不存在,那么创建之,如果存在,内容被清空,长度截为0,$!中有出错信息。
    追加:open(文件句柄,">>文件名"),基本同写,但有一点,文件中的内容不会被清空,新的内容会追加到原文后面。
    读写:open(文件句柄,"+<文件名"),通过“+<”模式,你可以既可以读文件,又可以写文件。你可以通过tell() 函数在文件内部移动,通过seek()函数进行定位。如果文件不存在,就会被创建。如果文件已经存在,原来的数据不会被清除。
          open(文件句柄,"+>文件名"),通过“+》”模式,可以同时读写文件,但与上面不同的是,它是破怀性写,会清除原来的内容。
    例子:
    open(FD,"info.txt")||die("Can not open the file!$!n");
    @line=<FD>;
    close(FD);
    上面的例子是打开info.txt这个文件并把文件内容读入@line中,关闭文件。
     
    方法二:采用new FileHandler方法
    use FileHandle;
    my $filehandle = new FileHandle("file");
     
     
    关闭文件的方法跟上边两方法对应
    方法一:close(FD);
    方法二:close($filehandle);或者$fileHandle->close();