Le's profileSomething like a home pa...PhotosBlogListsMore ![]() | Help |
|
June 26 AddUtf8() in screen and git commit message modificationRAW_PUTCHAR()里的AddUtf8()果然不能改成AddChar(),要在AddUtf8()里动动脑筋了,不过这个函数还看不太懂,全是bitwise operation,也没有注释。也罢,先放着。not in the right mood. 刚刚知道怎么改git的commit message git-commit --amend 它的本意不是用来干这个的,不过正好可以起到这个效果 June 22 搞定utf8环境里screen caption的中文显示问题相关连接: http://zhllg.spaces.live.com/blog/cns!956A48A2D7ED7265!1567.entry 记一下自己的思路和进展,good luck to me! 工具有vim, cscope, ctags, gdb http://zhangle.is-a-geek.org/view_source_using_vim.html 首先,找找代码里处理配置文件的部分,然后看处理caption的部分。 在vi里执行:cs find e caption,找到很多结果 找到一个变量,captionstring,再执行:cs find s captionstring找到一个 buf = MakeWinMsgEv(captionstring, p, '%', D_width - !D_CLP, &cv->c_captev, 0); 应该是MakeWinMsgEv把captionstring转换成具体要显示的字符串,甚至显示在屏幕上,看看这个函数的实现。这个函数看着颇为不爽,windows函数的命名风格。 发现显示用的应该是另一个函数 PutWinMsg() 发觉应该找找screen debug的方法,有没有什么类似内核printk之类的东西。 还是用gdb吧,按照gentoo bug reporting guide里的方法重新安装screen。 emerge screen时发现失败,然后发现用的ebuild是我本地的overlay里的。我已经不记得当时为什么把screen放到overlay里。还发现了一个configure选项--enable-locale,作用是 --enable-locale use localized month/day names 而新的ebuild已经没有这个了,怪不到好像没有其他人遇到。 还是决定继续搞搞,为什么就不能用中文?感觉应该不是很难处理。 emerging screen。抽空翻译会gentoo mips文档。 编译完毕,另起一个xterm,export LC_ALL=zh_CN.UTF-8, screen,pstree看到有两个screen,找到子进程screen的pid。在原终端里sudo su -,接着gdb --pid=12474 /usr/bin/screen 先在 buf = MakeWinMsgEv(captionstring, p, '%', D_width - !D_CLP, &cv->c_captev, 0); 处设置一个断点 (gdb) b display.c:2623 然后让screen继续运行 (gdb) c 然后在screen里改变caption 进入命令行模式,在:提示符处输入caption always %D,这个是把caption设定为星期几,对于中文locale就只有一个数字。比如星期五,就应该是五。 回车后然后发现screen停住了,yes!断点起效! (gdb) s (gdb) fin 发现MakeWinMsgEv的返回值在gdb虽然显示乱码,但是这个值确确实实是“五”的UTF-8编码。 看来是显示的问题。 啊,加了debug USE标记的screen会在/tmp/debug目录里记录debug log,不错。而且发现PutWinMsg的参数确实是正确的。 那肯定是最后打印的时候,把字符串当成了ascii,而没有当成UTF8。 确实打印的时候是一个字节一个字节打印的,一个UTF-8中文字符可是有3个字符。 不过后面似乎有把连续多个字节合并的函数…… (这里的想法不太对,字符串就应该是一个字节一个字节打印的,只要不改变它,不改变顺序就可以。这里恰恰是因为字符本身被改变了,一个变成了两个,才导致乱码) 发现一点,如果使用gbk字符集,caption里可以显示中文 跟踪了一下,也没发现这些中文字符经过了什么特别的处理 也是一个一个字符的AddChar的,AddChar里这个字符最后被放到D_obuf里 终于找到了根源 原来是AddUtf8()这个函数 其实本来stftime得来的已经是utf8编码的本地化的星期或月份字符串,直接打印就可以了。 可是在RAW_PUTCHAR()里又把这个已经可以直接打印的字符串又处理了一遍,不知道到底是想干什么。 OK了,一个相当dirty的hack,就是把RAW_PUTCHAR()里的那个AddUtf8()改成AddChar() 不知道这样做对其他地方有没有什么影响,恐怕会有。 总体来说,screen对于其他语言的支持,从根本上来说是个hack,不是那么完美。尤其是localized weekday/month names这一块。 发了email去screen-devel ml报告了这个问题。不知道最后结果能怎样。 June 12 “为了自己的信仰而奋斗,是种幸福。”这是星际小说《SC之彼岸花》里的一段节选。今年年初在大连的时候看了《流氓高手》,《彼岸花》的续作。最近在看《彼岸花》。感觉玩星际的人和玩Linux的人有的地方挺像的。同样的在主流媒体中难觅踪迹,同样的有时候要为生计忧虑。同时,也同样的都是“为信仰为奋斗”! Witch怔了怔,她的眼前好象又出现了一张张熟悉的脸庞,星际联赛未职业化时,那些人无奈的眼光。和当国家体育总局宣布出资组建职业联赛的时候,那个广场上每个人眼中的泪水。 “我很想打一辈子星际,可是我却必须首先活下去。”zergling离开的时候,神情是那么的无奈。 “我打了三年星际,家里养了我三年,现在,我不得不出去找点事养活我自己。”Loveleafe走的时候,眼中充满了落寂的神色。 “我不是放弃了星际,但是我现在,却已经失去了我最爱的人,我离开,是要证明我不是个没用的人,总有一天,我会回来。” Witch的心中一痛,每想到这句话,Witch就会想到那个坚强的男人头也不回的离开时满眼的泪水。 Witch深吸了一口气,才忍住不让自己眼角的泪水滑落。 Witch默默的闭上眼睛:“有太多的人为这个游戏付出了一切,我们快不快乐,又算什么?” Witch的眼睛睁开的时候,已经全是坚毅的神色。 黄小璐看着Witch,似是已经看得呆了。 “看来我错了,这个游戏,已经是大多数人心目中不可侵犯的信仰。如果有人破坏了游戏规则,总会有人起来奋起反击。” “为了自己的信仰而奋斗,是种幸福。”黄小璐抱着执政官,轻轻的道。 最后那一句话,竟好象是说给自己听的。 June 02 对二甲苯对二甲苯 一、名称:对二甲苯 ( P-Xylene ) 二、成分辨识资料 纯物质: 中英文名称:对二甲苯 ( P-Xylene ) 同义名称:BENZENE,1,4-DIMETHYL-; P-DIMETHYLBENZENE; 1,4-DIMETHYLBENZENE;P-METHYLTOLUENE; 4-METHYLTOLUENE;1,4-XYLENE;UN 1307;OHS 17940。 危害物质成分(成分百分比) :100 三、危害辨识资料 健康危害效应: 眼睛:视力模糊。 皮肤:皮疹。 吸入:吸入引起麻刺感觉、月经失调、生殖效应、抽筋。 食入:生殖效应。 环境影响: 无此有效资料 物理性及化学性危害: 其蒸气和液体易燃。流动、搅动等会产生静电荷。蒸气可造成瞬间火花。 特殊危害: 若吸入会危害人体, 刺激呼吸道、皮肤与眼睛,中枢神经抑制。 主要症状: 眼睛:引起刺激眼睛、流泪。 皮肤:引起刺激、水泡。 吸入:引起刺激、低体温、耳鸣、反胃、呕吐、胃痛、头痛、困倦、酒醉 徵状、肺部充血、肝脏受损、肾脏受损、昏迷。 食入:消化失调、酒醉徵状、肺部充血、肝脏受损、肾脏受损。 物品危害分类:3(易燃液体) 用途 对二甲苯(PX)是一种重要的有机化工原料,用它可生产精对苯二甲酸(PTA)或对苯二甲酸二甲酯(DMT),PTA或DMT再和乙二醇反应生成聚对苯二 甲酸乙二醇酯(PET),即聚酯,进一步加工纺丝生产涤纶纤维和轮胎工业用聚酯帘布。PET树脂还可制成聚酯瓶、聚酯膜、塑料合金及其它工业元件等。除此 之外,PX在医药上也有用途。 |
|
|