载入中…

天气是 ‘阴’ 的文章

洋紫荆花开

2011.11.29 | 天气: | 标签: , , , , ,

好久没写又杂又乱的生活类的文章了,主要是目前的自己羞于见人,因为毕业后的我已经成了自己都鄙视的三无人员——无工作、无技术、无学历。
三无,是自找的。说实话,现在我很感激有那段在PChome实习的经历,虽然不喜欢那家公司的风格,但是也让我有了成长,PHP程序写得更顺了、也会用类了、特别是龙哥(名字就不方便说了)带我进入了SQL的大门,让我有了之后几次的面试机会。虽然我进了门,却踏步不前,终究还是迷茫,写PHP程序确实是兴趣、特别是上次的插件发布获得了一个人的好评,就已经让我高兴了好几天了。可是,心里总隐隐觉得写写PHP,耍耍JQuery不能作为自己的饭碗,最多做为饭后甜点。(最近取了在Pchome实习时候的工资,发现竟然有1300,我才干了一个月啊,同学们要不讨厌百度的想月入保底有4000的,可以看看PHP编程的书去面PChome)
再来,对外宣称的在家考研,努力地尝试着拿回那本来就有空白的考研脑袋,可是怎么也回不到原来的水平,心里安慰自己,这是因为当年复习的时候就发过誓——再也不背那些政治了来受罪了——可讽刺的是,考出来政治竟然是第二好的科目。
就这样,我毫无目的地玩了2个月游戏。姐夫和我聊天的时候知道了我现在什么都不用干,天天就是玩,说了句“真好。”可我觉得这种日子简直不是人过的,那就是——活在迷茫和恐惧中——就像没写暑假作业,而作业答案被父母藏了起来、但明天就要开学的感觉,只不过这次是没写好人生,而明天就是随机的各式各样的人对自己索要这份“暑假作业”。家父实在是看不下去了,联系了一位院里的博士,叫我去他们家咨询些出国的事情,但一想到经济问题,我就对这事也提不起劲,这一刻我成了彻头彻尾的“吊丝(链接前方言辞激烈)”。
就像电影要看到结尾,在十月份那次聊天间经济问题就解决了(不是中奖),我也有通过学习英语出国的机会了,就这样我先去了西大看了三星期的考研英语做底子、找找感觉。期间非常感谢曹同学的各种帮助,果然是在家靠父母、出门靠朋友;还有西大三教外面那两棵洋紫荆,咱虽然没有红袖添香伴读,但每天一点之后西大进入“午休”时,洋紫荆那淡淡的香味随着静静的微风飘进自习室、暖暖的阳光撒在身上、加上杯冰爽的柠檬汁,这样背着单词真有另一番惬意,也让我找回了在大学读书时自娱自乐的感觉。

最后对于啃下红宝书,我想引用《The Shawshank Redemption》里典狱长的话:

Remember salvation lies within.

希望我这个懒惰的人能坚持下去。

Rhythmbox插件编写教程指北

2011.08.12 | 天气: | 标签: , , , , , , ,

写了个Rhythmbox的插件以后才发现这方面的中文教程简直是0的状态(百度连鸟语的都不知道),介于我是python新手,C语言全部还给老师了,所以不敢说这篇文章是指南,权当这是中文关于Rhythmbox插件编写的0.5篇文章吧。具体的最好还要参考Rhythmbox官方的指南
++++++++++++++
示例的源代码
++++++++++++++

首先,想好一个插件名字吧

教程里,我就用「RB_notify」。
要清楚用python写Rhythmbox的插件机制其实很简单——写好两个文件就可以成个插件
RB_notify.rb-plugin__init__.py
前者负责解释你这插件叫啥、作者是谁等,后者是程序的入口,把他们放到$HOME/.gnome2/rhythmbox/plugins/notify里面就可以运行了,很简单是吧。

翻翻notify.rb-plugin

[RB Plugin]
Loader=python
Module=RB_notify
IAge=1
Name=RB Plugin Example
Name[zh_CN]=RB插件例子
Description=This is an example of RB Plugin
Description[zh_CN]=这是个RB插件例子
Authors=Meng Zhuo
Copyright=2011 © Meng Zhuo
Website=http://mengzhuo.org/blog/

这个是插件描述文件,由于我们插件是python写的,所以前面的4个参数都不能修改,而Module后面的跟的是需要加载模块,这里和项目同名就好了。后面几个都不言自明了,所以很简单吧。光说你的插件是干啥的自然是不行,得用程序让Rhythmbox听话。

__init.py__程序登场

写过python程序的同学都清楚,大部分程序第一步是导入一定量的库,这样才能正常运行,我们的Rhythmbox程序也一样:

import rb

这个语句是必须的,因为这个库是Rhythmbox的缩写。其他的库像

  • gconf(需要配置的话)【教程】
  • gtk(需要图形的话)教程
  • gettext(推荐import,国际化用)教程同上

这里我们就只使用rb吧,这时候程序应该是这个样子的:

  • __init__函数是入口函数,每次插件运行的时候都先运行一遍里面的程序,里面一般第一句是添加self为RB插件的类。rb.Plugin.__init__(self)
  • activate函数是插件启动的时候执行的程序,这里就用简单的print吧
  • deactivate函数是插件关闭或者Rhythmbox退出的时候执行的程序,理论上之前创建了什么东西,就得销毁掉(用del命令),不赘述了。

检验成果的时候到了!

运行Rhythmbox -D RB_notify
打开插件栏,这时候就可以看见你的插件了。
启动插件后就会在刚才运行命令的终端里出现
(15:36:44) [0x6ea040] [RB_notify.activate] .gnome2/rhythmbox/plugins/RB_notify/__init__.py:15: Hello, This is a Example

做些有用的事

光是在终端里输出一些字符可不是什么有趣的事,所以要介绍RB牛X的地方,在于它的shell。在刚才的print后面添加
shell.props.shell_player.playpause(0)
这样,每次启动插件,这个RB就会暂停或者是播放。
当然这个shell没有这么简单,不只能控制播放、音量等,还能UI什么的,大家可以去他们的官网围观哈

PHP程序国际化小记[i18n]

2011.08.11 | 天气: | 标签: , , , , , , ,

Linux上的国际化基本都是由gettext来完成的,配合这.po.mo的使用,可以说是相当方便,PHP程序的国际化我还是第一次做,这里有篇文章讲得非常不错,我这就不存档了。
这里讲下我自己遇到的一些问题:

不能加载.mo文件

明明写好了.mo,路径也正确,却怎么也加载不上来。
得检查两个地方:

  • 主机是否支持这个翻译语言

    像我写程序和测试用的Ubuntu执行了locale -a后,只有寥寥几种en_US.utf8 zh_CN.utf8 zh_SG.utf8
    而在东哥的主机上测试的时候竟然有191种!而且细心的你可能注意到了,我的Ubuntu上只有两种中文:一个是简体zh_CN.utf8,和新马泰地区的zh_SG.utf8;而东哥的主机上有还有HK TW。所以测试的时候发现所有都写好了却不识别,要先看看主机是否支持。p.s.如果没有ssh,可以新开一个php文件,在里面写入
    echo system('locale -a');
    保存后访问即可

  • 编码问题

    编码国内常见的有utf8、gbk、gb2312三种,不过我个人觉得国标码太废柴了,写些别国的文字或者符号就直接趴下了,所以直接用utf8。
    setlocale(LC_ALL, $key.'.utf8');
    把这段代码加到php中,这样启用的语言和编码格式才能正确加载。注意utf8前还有一个点(这个小问题折腾了我至少10分钟才发现)

HTTP_ACCEPT_LANGUAGE读取问题

真心觉得这问题简直坑爹,因为浏览器传上来(即超级变量$_SERVER['HTTP_ACCEPT_LANGUAGE']里的值)的是「zh-cn」这样的格式,而gettext使用的却是「zh_CN」,大小写还不能搞错,还需要蛋疼地转化一下,这里我用了正则的替换
$name = preg_replace('/(\w+)-(\w+)?/e',"'\\1_'.strtoupper('\\2')", $name);
哈哈,聪明的你应该发现了,就算传上来像「zh」这样的函数,这条正则也会聪明地避开,反向引用和//e的使用,想必我不用多说了。

全部的源代码在这里

(@.@-)文字表情版正则入门[1]

2011.05.30 | 天气: | 标签: , ,

以前听说会正则的人都是仰视大神状,因为正则太难学啦;艰难地学了一段时间后,俺发现有些文字表情正好可以匹配正则,所以本文目的就是让不知道正则的同学通过很达意的文字表情开开心心地了解正则表达式从而入门。

首先,正则表达式能干吗呢?最简单的正则可以在外卖单中要找到需要的电话号码,也可以很浪漫地把一般的文件匹配变成情书哦!所以,这么好的东西可不能放着不用嘛。为了验证我说得对不对,大家还需要一个正则工具
(在线的正则工具http://www.gethifi.com/tools/regex

咱们先说好蓝色的文字代表正则表达式,准备好了以后咱们从最简单的开始咯~


  1. 这个正则表达式能匹配所有“囧”字,够简单吧。
    同理,类似=3=(撅嘴)、o_O(疑问)@_@(晕眩)><(紧闭双眼)等简单的表情可以匹配一样的字符,大家可以到上面的正则工具那里实验一下先。玩了一阵后,你可能会问,这个正则和我的文字编辑器的“查找”到底有什么不同,强大在哪了?
  2. (@.@-) 还记得标题上的眼镜哥我吧,我来回答。其实我也是一个简单的正则。我的小句号嘴巴”.”就是一个可以匹配任何字符的神奇字符(道上叫“元字符”)。来见见我的兄弟们吧

    你可能注意到了,这个神奇的小句号可以对应各种字母、数字、符号。我眼镜哥厉害吧!

  3. 阅读全文 »

有些事体验过才能明白

2011.05.29 | 天气: | 标签: , , , ,

平时实习很忙,到了周末又无聊起来,上优酷转了转,随手开了一个动画,《秒速5CM》就这样进入了我那双漫无目的的眼睛。自以为已经成长到厌恶亚洲系的细腻情感了,可以张开怀抱投向欧美现实派了,看了片子以后,同意到一塌糊涂,才发现自己还是那个矫情的故作小清新的小屁孩,可是我不介意、不以此为耻,不该成熟的时候,却因为岁数的无情变大而逼迫自己成长,这才是最大的幼稚。
因为没有见过真的樱花,只能在自己的生活中拼凑出“满天樱花”可能应该有的感觉,暖暖的春风,淡淡的花香,如果能在类似这种环境下还遇上能让心灵靠得很近的异性真的真的是一种幸福。这种幸福对于我这样人只有羡慕和嫉妒,因为没有童年的异性朋友和约定,所以我的人生剩下残缺的第二、三章;当小黑妹哭着说“请你不要对我再这么温柔”,那种别人给得越多,自己越是不能承受,干脆自私地拒绝掉别人好的感情,简直就是我现在的写照,以致我甚至都觉得自己冰凉到没有感情了,一松手,放掉了很多友情、差点有的爱情。回想起来,伤害了这么人,真是不应该啊;可是伤害了以后,却不知道怎么补偿,只能逃避,物理上躲远了,却没法填补那种内心上的裂痕,这注定了要死在循环里。
第三章中,那段男主角在城市生活和我的实习生活竟然没有什么两样,都是坐着人爆满的轻轨上下班,都是吃着没有爱的饭菜,都是在小隔间里写代码,看似忙碌,没时间理会大家,其实寂寞到时时都刷新各种社交网络,刻刻查看各种IM看有哪些人上线又下线了,把所有理会自己的人都支走后;再叹一声气,继续写着那些代码,与其说是喜欢计算机,其实不如说是喜欢那种不需要情感来往的感觉。很多人说,你顿顿吃便宜的饭菜,好可怜啊;每天上下班都要花4个小时挤地铁,好辛苦啊;天天六点起床、晚上九点到寝室,好累啊;一个人闯荡大都市,好孤独啊;其实这些对于心灵上的空虚又有什么呢。
一朋友说得好,“我只想找个人一起努力地生活下去”。生活在寂寞中,却不停地制造寂寞,人总是这么傻啊。幸好,我还没有体验过爱情,所以还有机会去寻找那个人。