loading …

在Arch Linux上使用fcitx输入法

十二月 7th, 2009 YuHP 0 Comments/539 hits

      在Arch Linux上我选择fcitx作为我的中文输入法,因为fcitx对Kdemod的兼容性较好。安装fcitx很简单,pacman一下就可以了:

      $sudo pacman –S fcitx

      之后在~/.kdemod4/Autostart中加入一个脚本,例如叫openfcitx, 里面只需要一行命令:

      fcitx &

      之后赋予该脚本可执行权限:

       $sudo chmod a+x openfcitx

      这样系统在进入桌面后就会自动在后台启动fcitx输入法。但是fcitx还无法在需要输入中文时被激活,因为没有设置系统变量将X input method指定为fcitx,于是要在/etc/profile文件中加入这几行:

      export XIM=fcitx
      export XMODIFIERS=@im=fcitx
      export GTK_IM_MODULE=xim
      export QT_IM_MODULE=xim
      export XIM_PROGRAM=fcitx

      这样fcitx就可以通过Ctrl+Space激活与切换输入法了。

      好好享受fcitx吧!^_^

解决由slim引导的kdemod无法启动声音服务的问题

十二月 4th, 2009 YuHP 0 Comments/223 hits

      自从安装了Arch linux之后,一直都是通过在rc.conf的DAEMONS中添加kdm服务来引导kdemod桌面环境。但是后来觉得使用slim会更轻巧,就尝试着用slim来引导,结果进入桌面都会无法启动声音服务。

      用alsaconfig配置过也没有用,依然是连声音控制图标都没有,只会浮出一个报错信息说声音设备无法工作。这个现象应该不会是声卡驱动或者alsa的问题,因为使用kdm引导进入桌面都不会有问题。应该是配置出了问题。

     后来在网上找了一些资料,说是kdemod不需要预先启动alsa服务,于是在rc.conf中将alsa在DAEMONS中注释掉。但依然还是没能打开声音设备。最后是在archlinux的wiki中找到了答案,要将进入桌面的用户加入到audio用户组中:sudo gpasswd –a username audio,这样进入桌面后声音设备就正常工作了。

     现在来分析一下这个问题:在使用kdm引导的时候,由于kdm本身就是在通过init启动的,所以应该是以root权限启动kdemod桌面环境,那么要启动声音服务就轻而易举啦~但是在通过slim启动桌面的时候,slim是需要用户登录之后,在用户的目录中执行.xinitrc来启动指定的桌面环境,这样的话,就是用户本身在启动kedmod,如果用户没有被加入audio用户组中,那么就没有权限启动声音设备。这是我这个小菜鸟对该问题的推断,请大家指教哈!

      在这里也建议大家在安装配置archlinux的时候尽量参考Arch_新手安装指南_(简体中文),里面建议将将storage、audio、video、optical和wheel加入到你的用户组中──特别是在你打算使用一个完整功能的桌面环境的情况下。

改进eDIKUD制作的iNove主题Category页面Title

十一月 29th, 2009 YuHP 2 Comments/241 hits

      只从将blog升级到Micolog0.6后就一直在使用eDIKUD同学制作的iNove主题,但是在使用的时候发现这个主题的category页面没有将category的名称显示在title处。

      浏览了一下该页面的模板,会发现这一行代码:

      {% block title %} {{entry.title}} - {{blog.title}} {% endblock %}

      也就是说,当GAE在组合页面的时候,会将entry.title的值填入到页面的标题中,然而category页面并不是用来显示一篇文章的,entry实体也就没有传入到模板的渲染中,在这个页面的标题应该是现实category的名称才对,eDIKUD同学应该是一时疏忽没能注意到这一点。

      要改进也很简单,只需要把前面的那句模板代码改成:

      {% block title %} {{category.name}} - {{blog.title}} {% endblock %}

      这样category页面的标题就会显示为”category名称 - blog名称”这样的格式了。

      同时也再次感谢eDIKUD同学为我们制作了这么精美主题!(该主题下载地址

颇不安,很鬼Down

十一月 27th, 2009 YuHP 0 Comments/147 hits

     话说这段时间真是做什么都没晒心情,虽然气温回升了,但激情却一直处于冰冻状态。每天在家与实验室之间往返一次,以此证明我还是一个有“追求”的人。在别人眼里看起来貌似很忙很充实,实际上真的如nownow本周的运程分析一般:表面光鲜,内里危机。

     这种诡异的心情在昨晚爆发到了极致。当时我竟然把U盘直接插入了自己的NB中,忘记先在LINUX下把病毒杀一下~于是乎,裸奔着的Windows Server 2008中毒了(应该是W32.Downadup的变种病毒)。使用两台电脑足足花了12小时才把这小病毒搞掉~超级郁闷~当时我真有一种冲动将硬盘重格,只装Linux系统,之后用虚拟机跑Windows…幸亏当时仅剩的一点理智阻止了我的冲动,否则我现在应该在搭开发环境。

     回到本文主题~工作尚未确定应该是导致状态低迷的原因之一,但这绝不是唯一导火线,完整的答案却没法从脑海中那错综复杂的思绪中提取出来……照理来说,我现在应该专注于实验室的项目,以此为下一篇EI论文做好准备才对,因为这是目前最现实最有意义的目标……

     之前还一直在提醒自己不要分心,现在看来,应该还是分心了~呵呵……

转载:返工的朋友仔应该入来睇睇,吸收下经验啦~ (一只S于非命既猪经验)

十一月 18th, 2009 YuHP 0 Comments/265 hits

     一只死系Boss魔爪下的猪!大家为这只猪默哀,为我们这千千万万只猪默哀```并致以最崇高的敬意!阿门~!

1

 

2

 

3

 

 4

 

5

 

6

 

7

 

8

 

9

 

10

TC杯具夜

十一月 18th, 2009 YuHP 0 Comments/150 hits

     今天上午在实验室收到了Topcoder SRM453的参赛邀请,比赛开始的时间是November 17, 2009 at 11:00 UTC/GMT -5 hours,也就是北京时间18号凌晨零点。

     考虑到这该死的天气,以及明天还要早起回实验室(搭地铁回校),原本是想忽略掉这场比赛的,反正忽略TC也有大半年了。But 心血来潮,手痒过度,还是在Arena上面注册了……

     在这连Q都不想聊的夜晚,早早地抱着笔记本躲入被窝中等开赛,就是想找回玩编程竞赛的那种感觉^^。东八区时间18号凌晨零点,比赛正式开始,当我做完第一题的时候(大概在00:15),我发现代码在Arena上编译超时,尝试了几次都不行……杯具正式上演……

     本来还以为是Arena或者我家网络的问题,于是重启了Arena,发现网速很正常,但是Arena已经连不上了!!!通过不同的连接方式(Direct、Direct(China)、Channel A、Channel B)都不行!!!囧rz。。。过了一段时间,终于能连上了,却发现Active Contest变成空的了,接而看见来自世界各地的参赛者在聊天板那儿用各种语言(至少能看到中、英、俄三种)发牢骚……噢~TC的后台应用挂掉了!!!

     这还不算啥,过多几分钟,Arena再次挂了,而此时访问TC的网站时,直接返回一个503页面,也就是说,TC的服务器应用全面挂掉了……下面来一个TC网站的503截图:

503

     当然,这对我来说也是很杯具的,难得有心情玩TC的SRM,还要是在这种天寒地冻的情况下,它却给我来个挂后台……杯具……

      顺便在这里加个豆瓣验证码先:doubanclaimda66462fac7c45c8

出去走走

十一月 15th, 2009 YuHP 0 Comments/127 hits

     实在忍受不了宅在家里的感觉了。于是今天下午约了某人去宝华路吃西关小吃——陈添记鱼皮和顺记冰室的雪糕。

     话说约好了下午两点在长寿路地铁站口等的,但是由于某些不知道是不是人为的原因,我在那里足足多等了半个小时..Orz..

     其实日子选得不是很好——今天是周日,上下九地带真的是超级多人……两个人沿着宝华路走过去都要被路人分割了N遍……

     千辛万苦才在一条小巷子中找到了传说中的陈添记~~其实就是一家类似于沙县规模的小食店,而且属于占道经营,不过食客倒是真的不少,确实是传说中(来自人人网的传说)的老店。于是两人就点了一份招牌小吃——鱼皮以及两碗艇仔粥。慢慢吃慢慢聊,呵呵……个人感觉这鱼皮还是蛮爽脆可口的,而艇仔粥就比较一般了,没太大特色。。。

      吃完陈添记就跑去顺记冰室吃雪糕,所谓的人工手打雪糕确实比较入味,吃起来会发觉雪糕中融入了很浓厚的果味,不会像街边卖的那种批量生产的雪糕那种味道很虚的样子。走的时候还买了两份我很喜欢吃的西关蛋糕仔,我一个人就吃了一份半。。。

      和某人也有两个月没有见面了,呵呵,这次约人家出来吃东西,有一句没一句地聊聊天,还是蛮开心的。虽然谈的东西比较分散,但中心还是离不开找工这纠结的事啊~~希望等两人的工作都最终落实下来后,再约人家去吃一些比较有特色的东西吧。^^

      题外话:吃完小吃之后回了一趟学校,打算拿一些衣服回家,结果发现没有带衣柜钥匙,囧rz。

日子就是这么过的

十一月 9th, 2009 YuHP 1 Comments/110 hits

      自从实习结束之后,就一直在家过着灰常“清闲”的生活。几乎每天都是睡到自然醒,之前想好要做的事情又提不起激情去做,实在太过分了!!!

      于是乎,前天跑去电脑城买了一台wii,加上一套手柄充电器和电池、长枪手柄以及运动套装,足足花了1600+RMB,破财啊!!!

      不过wii这玩意确实还蛮好玩的哈。今晚刚刚把《Call of Duty: The World At War》玩通关了,确实比起在PC上用鼠标玩要爽百倍。虽然买机器的时候送了10张游戏盘,但现在才玩过几款,除了刚刚说的COD之外就还有非常刺激的《Sonic Unleashed》以及需要运动筋骨的《Wii Sports》(打算用《Wii Sports》来减肥哈)。至于《马里奥赛车》就有点提不起我的兴趣了,本来还以为可以和跑跑卡丁车相比的,结果比较失望,可能更适合小孩子玩吧,呵呵~

      虽然这样的日子看起来好像很美好,但其实我自有我内心的纠结,等待某样东西的心情难道就是所谓的寂寞?虽然有些人会觉得我这样是自己在给自己难受,自己给自己纠结,但这却是我天生保守思维的真实写照,哈哈!

      或许连寂寞都在笑我太堕落~ But,管他呢,就让我纠结着堕落完再说……

Perl通过Telnet远程执行命令

十一月 3rd, 2009 YuHP 0 Comments/501 hits

      Perl脚本在远程的机器上执行命令的方法有几种,例如直接通过system函数调用rsh、通过NET::SSH:Perl模块通过ssh登录远程机器来执行或者是通过NET::Telnet模块通过telnet登录到远程机器上执行。笔者比较喜欢Telnet登录这种方法,因为它比rsh强大,却又足够灵活,既能达到SSH的使用水平,同时又足够轻巧(只需要一个模块:Telnet.pm就够了)。

      NET::Telnet模块的详细使用指南可以参考该模块的CPAN官方文档。我们在这里只简单地结合代码来介绍其使用方法。

01 use Net::Telnet;
02
03 my $t = new Net::Telnet(Timeout => 30,Prompt => '/[\$#>]/', Errmode => "return");
04 $t -> max_buffer_length("10485760");
05
06 my $ok = $t->open("192.168.1.12");
07
08 unless($ok eq 1){
09          my $errmsg = $t->errmsg();
10          print STDERR "$errmsg\n";
11 }
12
13 $ok = $t->login($username,$passwd);
14
15 unless($ok eq 1){
16          my $errmsg = $t->errmsg();
17          print STDERR "$errmsg\n";
18 }
19
20 my @temp = $t->cmd(String => "PS1=\"@@@\"",Prompt => '/@@@/'); #change the Prompt temporality
21 $t->buffer_empty;
22
23 while(my $cmd=<>){         #Exec each cmd in the cmds list
24         my @results = $t->cmd(String => $2, Prompt  => '/@@@/');
25         print $results[-1];
26         $t->buffer_empty;
27 }

 

     现在我们来对以上的代码进行解释,其中第3行就是建立一个telnet对象,其构造参数用于指定给对象所建立的连接将用到的参数,在这里我们指定了超时时间Timeout、错误模式Errmode,以及远程机器上的命令提示符Prompt。Timeout指的是Telnet登录或者执行命令的超时时限,我们这里赋予了30,也就是说如果远程机器在30秒内没有回显出命令提示符,telnet的连接就等于超时断开;Errmode有两种值:die和return,默认是die,如果选择的是die,则该对象所执行的方法出了错误,整个perl脚本就die掉并会把错误信息输出到标准输出中,如果选择的是return,则在出错的时候会直接返回一个undefined的标量值或一个空向量,并将错误信息放在对象中,可以通过对象的errmsg()方法来获取;Prompt这个参数很重要,因为NET::Telnet模块是通过命令提示符来判断登录成功与否以及命令是否执行结束,通过正则表达式来设定,我们这里设定为 "/[\$#>]/”,也就是说远程机器的命令提示符包含了’$’、’#’、’>’这三种字符之一,如果设定的命令提示符不与该正则表达式match,那么在登录或者执行命令的时候,会因为等不到命令提示符而超时。

      在第4行,我们更改了这个Telnet对象的缓冲区,单位是K字节,该缓冲区是用来存放远程机器上的输出结果的,这里的10485760也就是10MB(绝对够用的啦)。

      第6行,通过传入远程机器的IP地址调用Telnet对象的open方法来连接远程机器,如果连接成功,则返回值等于1。在第13行,通过用户名和密码登录到远程机器的系统中。

     在第20行,我们通过Telnet对象的cmd方法将要在远程机器上运行的命令传递到远程机器上面去。这里我们通过向远程机器传递PS1=“@@@”这条命令临时地改变了远程机器的命令提示符,之所以这样做,是因为Telnet模块是根据命令提示符来判断传上去的命令是否执行完毕的,如果我们传上去的命令中包含了可以与Telnet对象的Prompt参数match的字符串,那么cmd方法会直接返回(好囧啊)。于是乎,我们在这里临时改变了其命令提示符为@@@(应该不会有一个变态的命令会用到这种字符串吧)。由于命令提示符改变了,因此我们在cmd方法中还要传入Prompt参数@@@,否则下场就如同Telnet对象的Prompt属性没设对…。

     第21行,清空Telnet对象的缓冲区,否则有可能出现命令输出错位,这个读者可以自己试一下是怎样的效果。

      23行至27行,就是重复地读取命令,再将命令放到远程机器上执行,之后将结果输出。记得执行这些命令的时候要使用新的命令提示符作为分割点哦,也不要忘了在获取返回结果之后清空缓冲区哈。

Nike The Human Race 10K

十月 24th, 2009 YuHP 0 Comments/154 hits

      今天去参加nike赛跑全人类10K的赛跑,一大早6点就起床了,搭地铁回大学城,发现五山地铁口旁边的KFC已经地铁站内充满了“红色”——本次比赛指定T恤的颜色。万胜围站几乎被红色的海洋吞没了…

      本来是想找一下锦哥他们夫妇俩的,结果因为人实在太多,没找着,就只好一个人跑了~囧。。。在第二集合区一边吃nike发的“士力架”一边等到8点15分,正式开跑。当时由于人太多,要经过起跑线都要花上几分钟的时间。踏了一下起跑线上的感应装置,迈出了10km的第一步。

      在最前面的两公里,跑得都还蛮顺畅,过了广工的那一段之后,心脏就渐渐觉得吃力了,开始半走半跑,不过还是能完整跑过华工的那一段,在穗石村的那一段走得比较多,过了广中医之后就跑过了5km的计时点,接下来感觉就开始比较舒服了,不觉得累,但双脚上面的糖原消耗得差不多了,力量开始匮乏,速度持续下降,在最后的3公里,60%的路是走过去的。最后在终点处的100M冲了一次子(突然发现自己的能量还蛮多的嘛),过线的时间是01:23:00,10公里竟然跑了一小时20分钟,看来真的是需要减肥啦~上班四个月,越上越肥~囧rz…

      跑完10KM的心情还是蛮愉快的,出了一身汗还是比较爽的说,话说我也很久没有运动过了,趁着还是学生,在大四这一年里还是多多锻炼微妙。有必要以后的周末也出去跑上一下子,呵呵。

      领完最终的礼品:一条nike的毛巾、一张演唱会门票和一条香蕉,就跑去看演唱会。但是觉得挺没劲的,So 直接走回宿舍补充睡眠。。。

 finish_10km_race      

图1:跑完10km所领到的奖品(看到这张图,你应该知道为何nike发的是香蕉了吧)

 

091024A001  091024A002

图2、3:所谓的群星演唱会,比较没意思

 

      其实今天最遗憾的就是没有带上手机来跑,否则可以照几张万人长跑壮观的场面,当时在外环路跑的时候,如果是有有斜坡,你可以看见红色的海洋覆盖着整条公路……顺便也怕一下那些啦啦队的女生~HoHo(虽然都长得比较一般)……

      说个题外话:回到宿舍,发现大学前三年囧囧的成绩单已经发下来了,我那张单阐释了一个道理:不认真复习就去考试的下场是很杯具的,90分以上的科目寥寥无几,也只有大一上学期的时候才拿过一次100分(虽然那次我也没怎么复习)…千万不要拿裸考来装13~