Le's profileSomething like a home pa...PhotosBlogListsMore Tools Help

Blog


    November 30

    外行领导内行

    (最近状态差的要命,居然一开始把标题写成了内行领导外行)

    这种事情真的是无处不在
    有时候虽然全局的看,不是这样。但在某些小细节上却仍然可能发生。
    http://bugs.gentoo.org/show_bug.cgi?id=249273
    http://www.gentoo.org/doc/en/guide-localization.xml
    我实在没有想到我居然需要给这位老兄上这么一课
    很明显这哥们基本就是不懂这块(当然不懂也正常,没有人什么都懂)
    但他权限比你高,他能改英文文档,我改不了
    以后还得经常打交道,所以咱不得不得在坚持原则的前提之下,尽量照顾着点人家的面子
    明明他自己不懂,但他却要说你没解释清楚
    当然我一开始确实有一些细节没强调,因为在我看来这个问题就像一个笔误而已……

    这哥们最后还是没有改这个表格里的顺序,不过他去掉了表格里那句会让人误导的句子
    就是那句说“表格里的顺序代表了那几个变量的优先级”的。
    只要现在表格里的顺序不改,这句话就是错误的。

    不过我也发现了我之前理解错误的一个地方
    LANGUAGE的优先级
    它的优先级是最高的是没错。但有个前提,那就是待确定的locale类别(如LC_MESSAGES)本身必须是已经设定了的,不管是直接设定还是通过LC_ALL或者LANG间接设定,而且设置成什么值都无关紧要,只要是一个你的系统里真实存在的locale,关键是要设定。
    假如没有设定,那么LANGUAGE没有任何效果。

    还有LANGUAGE的取值和LC_*/LANG取值的不同
    locale名可以分成几个部分
    language[_territory[.codeset]][@modifier]
    LANGUAGE可以只取language部分
    但LC_*和LANG至少要包括language_territory,比如zh_CN,如果只设成zh,那么是没有效果的
    LC_CTYPE=zh_CN.utf8 LC_MESSAGES=zh_CN.utf8 LANGUAGE=zh command是可以的
    当然你要确保你有command所属的软件包的mo文件
    假如command是ls,那么你必须要有
    /usr/share/locale/zh/LC_MESSAGES/coreutils.mo

    我发了个email给Ulrich Drepper,问问他我的解释是否还有问题
    http://sourceware.org/ml/libc-help/2008-11/msg00066.html
    他只要点头,这就没有什么好再辩驳的了


    November 21

    使用mencoder + ffmpeg转换Canon HF11拍出来的AVCHD(m2ts)格式的影片

    先帖个HF11的广告
    http://www.youtube.com/watch?v=YKoTzqb-yT8
    之前在电视上看到过,但当时没有什么印象
    现在买到了手,才感觉这32G内置闪存真的是一个很大的卖点

    for i in *.m2ts;
    do
    mencoder $i -o ${i}.avi -vc ffh264 -demuxer lavf -oac mp3lame -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=3000  -fps 50 -vf scale=640:360;
    done

    虽然只有一个mencoder的命令,但是ffh264是ffmpeg的
    昨天以为搞定了,其实稍大的文件到后面就会出现马赛克
    一个极其偶然的机会,发现-demuxer lavf可以解决这个问题
    之后又有一个新问题,生成的文件里音频不能seek
    每次seek之后,视频正常,音频会从头开始,不管视频当时在什么位置
    后来发现-oac不用copy,换个mp3lame可以搞定

    这里面肯定有bug
    这些问题本来就不应该存在


    November 20

    gentoo-cn.org首页的一点变化

    我把首页改成了"Gentoo中文",原来是“首页”
    原来的首页重定向到“Gentoo中文”

    http://www.gentoo-cn.org/wiki/Gentoo中文
    http://www.gentoo-cn.org/wiki/首页

    然后html的title做了点变化
    如果是该页是mainpage,也就是"Gentoo中文",则title就是“Gentoo中文”
    原来是“Gentoo中文- Gentoo中文”,也就是“title - Gentoo中文”
    其他页面继续沿用“title - Gentoo中文”

    这个需要改一下Skin:skins/GuMax.php
        <title><?php
                if ($this->data['title']==wfMsg('mainpage')) {
                        $this->text('title');
                } else {
                        $this->text('pagetitle');
                }
        ?></title>

    搞定了Canon HF11拍出来的视频的转换问题

    http://slacy.com/blog/tag/canon-hg10/
    用这上面的命令其实就可以
    但是要改一个参数,就是-fps 60改成-fps 50
    因为HF11的frame rate就是50i
    之前我照抄的,所以影音不同步
    这下好了,以后不用再为这个问题烦恼了,想怎么转就怎么转了,:-D
    November 19

    Canon HF11的烦恼

    这个烦恼就是,这玩意太高端了
    拍出来的东西目前只能直接连到电视上看
    我的笔记本放不了
    倒数第二个(共5个)画面质量的分辨率已经是1440x1080
    所以我要把格式转一转
    可惜目前为止还没有找到一个完美的转换方法
    郁闷啊

    回来了

    回来后感觉对这个城市居然有了些陌生的感觉
    ...
    November 14

    git push propfind 405

    在人们依靠搜索引擎获取知识的时代,一篇好文章的最好标题,就是别人搜索此类问题时最可能会用的关键字

    今天给loongson overlay加了个新ebuild
    git push的时候失败
    以为是mod_security的问题
    结果发现不是
    发现apache本身就不支持propfind method
    原来是mod_dav没有加载
    原来需要在/etc/conf.d/apache里加上-D DAV
    而且需要在apache配置文件里加上Dav On
    还需要修正一下git repo里的文件所有者,改成apache

    不过不明白的是为什么之前不需要这样做

    好了,启程之前最后一篇blog
    我不带笔记本了,带一本see mips run,估计这次可以一举歼灭这本书
    消失3天,周一回来
    November 12

    最近有人要“写”书

    先来复习一下中学课文:

    蜀之鄙有二僧,其一贫,其一富.贫者语于富者曰:"吾欲之南海,何如?"
    富者曰:"子何恃而往 "
    曰:"吾一瓶一钵足矣."
    富者曰:"吾数年来欲买舟而下,犹未能也.子何恃而往!"
    越明年,贫者自南海还,以告富者.富者有惭色.

    我也想写书,写gentoo的书。没写的原因:一是没时间;二是觉得自己还不够格,还要再修炼修炼。
    但是相对来说,在这个领域,我至少可算个中产,不是赤贫。
    假设,把写有关gentoo的书比作南海。
    那么,如果有不如我富有的人欲之这个南海,只要你不借我一分钱,同时能到达南海而不是北海,我非但不会讥笑你"何恃而往",我反而会向别人宣传你到达南海的事迹。或者哪怕你借了我的钱,或者我赞助你不要你还,你在到达之后能和别人提及是我赞助了你,我同样利用我掌握的宣传渠道广为宣传你的事迹。

    可是有人不这么做:
    http://www.linuxsir.org/bbs/thread337466.html
    一开始还好,后来就变味了
    那口气就是:我帮你宣传,虽然我啥都不懂,但你们都得来帮我,我写错了你还不能说我错了,我用了你们东西就不说用了你们的,因为我还没正式发布呢,我是你们的救世主……
    ……
    ……
    ……
    很好,很强大!

    关于编译死机问题和gcc genautomata问题

    昨天的编译死机问题看来和binutils有关,之前用的是2.19,换成2.18就没事了
    因为后来发现不光是编译ppl会死机,似乎随便编译一个就会死机,死机时top里显示的cpu使用率最高的进程是as,而as是binutils的一部分

    还有gcc genautomata segfault问题
    gentoo mips dev kumba发现这个问题可以在启用-O1和-foptimize-sibling-calls的情况下触发
    http://r0bertz.blogspot.com/2008/11/problem-in-loongson-2f-specific-integer.html

    November 11

    gentoo-cn.org is back

    编译ppl到某个时候必定死机
    尚不知道原因
    不过我现在已经有了那么次找出具体的引发bug的那条机器指令的经历,不管是userland,还是kerne space
    所以现在面对任何bug都基本不怎么畏惧
    可是这台机器毕竟是用来做服务器的
    所以要查的话,只要先在别的机器上再做一个镜像,然后用这个镜像一阵子,再来debug

    昨晚录了段评书

    http://www.newsmth.net/bbscon.php?bid=63&id=1680712
    http://www.gentoo-cn.org/~zhangle/400.wav

    gentoo-cn.org is down again....
    I was compiling something on it
    when I compiled it last time the system hung
    I thought it may be due to small memory size
    so upgraded it to 1G
    now it seems that it is not the ram's problem..
    sigh
    I am in office, I will fix it after I get back home later today

    之前提到的那个龙芯专有整数乘除法指令GCC补丁有问题

    我找到了解决方法
    Richard Sandiford赞同其中一个改动相对较小的那个,小到只需增加2个字节,:-D
    http://gcc.gnu.org/ml/gcc/2008-11/msg00087.html
    November 09

    刷2E盒子的BIOS成功

    http://stuartl.longlandclan.yi.org/blog/2008/10/27/fulong-1gb/

    今天买了一个30合一的螺丝刀
    准备拆开看看2E盒子的内存到底什么型号
    根据redhatter,他用的是DDR 400笔记本内存,可是旺角似乎只有DDR 333,再往上就是DDR2 533

    刚刚拆了看了,本来就是DDR 333
    好了,最迟明天去搞一个

    distcc的pump模式和zeroconf

    distcc-3.0加入了pump模式
    这个东西是google的人开发的
    简单的说就是把更多的事情放到编译服务器上
    比如预处理,当然这需要所有参与编译的机器上的头文件要一样

    可惜,我刚刚查到这个模式不能和zeroconf一起使用,:S

    http://distcc.googlecode.com/svn/trunk/doc/web/man/distcc_1.html
    An important caveat is that in the current implementation, pump mode (",cpp") and compression (",lzo") will never be used for hosts located via zeroconf.

    Gcc 4.4 Loongson 2F specific integer multiply/divide instruction patch

    http://gcc.gnu.org/ml/gcc-patches/2008-11/msg00273.html
    http://www.gentoo-cn.org/gitweb/?p=loongson;a=commit;h=97e4b2823929cac5c5e7f6464fce05c1a75d0128

    zhangle@2f ~ $ cat hello.c
    #include<stdio.h>
    int mul(){
    unsigned long a = 0xffffffff;
    unsigned long b = 0xf;
    return a * b;
    }
    zhangle@2f ~ $ gcc -march=loongson2f hello.c -S
    zhangle@2f ~ $ gcc -march=mips3 hello.c -S -o hello-mips3.s
    zhangle@2f ~ $ diff -u hello.s hello-mips3.s
    --- hello.s 2008-11-08 18:16:52.000000000 +0800
    +++ hello-mips3.s 2008-11-08 18:16:55.000000000 +0800
    @@ -25,7 +25,8 @@
    sw $2,8($fp)
    lw $3,12($fp)
    lw $2,8($fp)
    - multu.g $2,$3,$2
    + mult $3,$2
    + mflo $2
    move $sp,$fp
    lw $fp,20($sp)
    addiu $sp,$sp,24


    --
    Zhang Le, Robert - Gentoo Developer
    http://www.gentoo-cn.org
    http://r0bertz.blogspot.com
    http://zhllg.spaces.live.com
    http://www.szlug.org

    这两天好好调查了之前发现的一个gcc 4.4的bug

    http://www.lemote.com/bbs/viewthread.php?tid=19467

    借助gdb,我找到了导致段错误的那条指令
    大致的了解了原因
    甚至找到了如何修改内存里的指令来使这个程序正确运行
    可惜我对gcc还不熟,不能定位具体是什么问题导致了这个现象
    不过我怀疑和fprintf没有被转换成fwrite有关

    介绍一个gdb里有用的用户定义命令hook-stop
    这个命令会在每次中断后运行
    假如你要看某些寄存器或者变量的值,用它就不必每次停下来后再去敲命令来查看了
    可以放在~/.gdbinit里
    define hook-stop
      printf "pc: 0x%08x gp: 0x%08x t9: 0x%08x\n", $pc, $gp, $t9
    end

    另外两个一定要放在.gdbinit里的
    set history save on
    set history filename ~/.gdb_history

    在gdb里查看用户定义命令
    show user hook-stop