阳光烂灿的日子

--记录所有碎碎念

GMChess 0.10发布

| Comments

正值svn版本号100,发布GMChess的第一个版本0.10吧。目前只有读谱功能,支持qq象棋,联众象棋,中游象棋,象棋演播室等软件生成的棋谱。
使用方法:选菜单->文件->打开,选择相应的棋谱文件即可
或者直接将棋谱拖到棋盘上即可打开。

本软件基于gtkmm库,以及开源程序象棋巫师的源码。因此非常感谢象棋巫师的作者黄晨先生,他的程序及网站给我提供了无限的资源及灵感。同时也感谢本软件另一作者wind,虽然他现在忙于工作而隐身中。

当然本人能力及精力有限,程序存在bug是难免的。目前gmchess也是在发展之中。0.1x系列的计划是完善读谱功能,因此大家如果在使用中发展读的谱不正常显示,可将谱一起发来(lerosua+gmchess at gmail.com)。而对电脑对战将会出现在0.2x系列的版本号中,请静静等待。

Linux下终将会有更多更好的象棋软件的,谢谢。

另外,征集程序中文名。欢迎各种意见及建议。

下载地址: gmchess-0.10

发件人 lerosua’ blog

Gtkmm中关于窗口的关闭按钮问题

| Comments

之前用Gtkmm写icalk时创造了一个关于窗口,但它有个bug,关闭按钮没响应。昨天为GMChess创建关于窗口的时候再次遇到这个bug,这次我认真地搜索了一下,终于发现问题所在。
之前我都是创建完about窗口后,再调用show函数显示。
其实是应该调用run函数。我忘记了about窗口其实是dialog类,平时对话框之类不是要调用run然后观其返回值嘛,原来我无形中把about窗口当成window类了。发现有不少人有这错觉哩。而gnome-osd-properties的关于窗口也有关不掉的bug,哈哈哈。
下面给一个菜单调用about窗口的实例源码,

void MainWindow::on_menu_about()
{
	static Gtk::AboutDialog*  about(0);
	if(about == 0){
		std::vector authors;
		authors.push_back("lerosua ");
		authors.push_back("wind");
		about = new Gtk::AboutDialog ;
		Glib::RefPtr logo  = Gdk::Pixbuf::create_from_file(DATA_DIR"/gmchess.png");
		about->set_logo(logo);
		about->set_program_name("GMChess");
		about->set_version(version);
		about->set_website("http://lerosua.org");
		about->set_copyright("Copyright (c) 2009 lerosua");
		about->set_comments(_("GMChess is chinese chess game write by gtkmm"));
		about->set_authors(authors);
		about->set_license (_("This program is licenced under GNU General Public Licence (GPL) version 2."));
		about->set_translator_credits("lerosua");

}
//about->show();
//about->raise();
about->run();
about->hide();

}

绝路之盲辉正传

| Comments

虽然这部是PTU机动部队电视电影系列中的一部,公布的名称是ptu机动部队之绝路。但作为PTU系列的电影,它绝对是不合格的,这只不过是套了ptu的皮讲叙的另外一个故事。我称之为绝路之盲辉正传。因为故事大部分是围绕着盲辉进行的。

大凡正传都是讲叙成功的,导人向善的故事。但被我称之为盲辉正传的这部绝对不是。它的色调是灰暗的,它的氛围是绝望的。它展示的是社会低层的黑暗与肮脏,小人物命运的悲哀与无奈。心情阴郁者推荐不要看了。

在上一部PTU中,讲警方打人还是有点正义的理由,而在这部中则显得多么流氓。偶们善良弱智的男主角盲辉,一开始就被打得吭不了声。然后被迫帮警方开门破获黑社会的贩毒工厂。千万不要以为PTU会颁个好市民奖给他,取得代之的是一个“二五仔”(用粤语读)的罪名,使之不容于黑道。警方当他是工具,黑社会也不把他当人。盲辉也只有回到家里,和自己的女人偎依在一起才能得到少有的安宁。听着自己女人的歌声入睡,白天在外面受的拷打,屈辱也就抛之脑后了。没有搞错,虽然俺的盲辉有点弱智,但也有女人疼爱的。虽然她是个“北姑”,每天要等她接完客才能回家。但他们依然能生活得相对有幸福感。对了,盲辉只是个外号,不是真盲的。在影片上半段几乎没说过话,我还以为他应该叫哑辉哩。

如此低贱地活着,却是绝路的起点。弱小的生命总成为他人手中牺牲的筹码或发泄的工具。黑白两道爆发冲突,警方夜夜狂扫庙街,令黑社会罢市。社团的火爆唯有将气出在盲辉身上,指责他是冲突的源头。一把火烧了盲辉的住处。盲辉的女人也因此受伤,两人沦落街头。风餐露宿,饥不果腹。期间又被火爆打成残废,女人更被轮奸。纵然如此,女人艰难地拖着重伤的盲辉走在黎明的街头,细心地照料着盲辉的伤势。一天,盲辉一拐一拐地走进一个公共厕所,打算用水龙头洗洗伤口。无意中看到厕所格里站着一个老头,身体轻轻颤动,口呼淫气。盲辉知道他们在干那事,于是转身准备离开。而这里,老头爽完了,打开格子门出来,里面蹲着一个女人,呕吐了一大滩液体。然后走出来,接过老头给的一块面包,马上咬了两口。看得出她实在太饿了。但吃完这两口她又把面包包好,准备放进衣服里时,她发现面前的盲辉呆呆着望着她。女人面带微笑地向他递面包说,“你吃,你吃”。

后面的内容我也不想再讲了,剧透也要适可而止嘛。盲辉有阿甘一样的智力,却不会有阿甘一样的际遇。现实总是残酷的。而盲辉的女人,在香港混得如此地步,却仍抱打死不回大陆的心情,这又是为何呢。生活不总是有答案,正如对盲辉来说,好人不一定得到好报的。

PS.扮演盲辉的是曾国祥,曾志伟的儿子,上次看他的戏是《AV女郎》,演技有进步了。

发件人 lerosua’ blog

Lazyword简易版本(shell版本)

| Comments

linuxdesktop上tx介绍了一个新软件,叫lazyword, 用来不知不觉背单词的。我觉得它提的那个概念极好,就是复习stardict查询过的单词。虽然还处于预览阶段,不过我还是去下载了。

才发觉它不是我那杯茶。不是说他不好,我绝没这意思,只是我这人从来尽量不用qt的东西的。何况是qt的开发环境呢,所以lazyword也就编译不了了,它是基于qt4.5的。二来它未必考虑sdcv的情况吧,这点未证实。

于是无聊就写了个脚本,实现定时显示sdcv查询过的单词,也算是lazyword的简易版本吧。

#!/bin/sh
#lazyword easy version by lerosua
book=~/.sdcv_history
stime=15000
itime=100

while [ true ]
do
line=`wc -l $book |awk ‘{print $1}’`
num=`expr $RANDOM % $line`
word=`sed -n “${num}p” $book`
content=`sdcv -n $word`
notify-send -t $stime “$content”

sleep $itime
done 脚本主要依赖sdcv(stardict的命令行版本,平时我用它查询单词),notify-send(显示notify用)。 每一百秒显示一次查询过的单词,每次显示15秒。
没有用sdcv的朋友可以自定义单词本,换掉book变量即可。单词本要求就是一行一个单词而已,时间也可以随便定义。都是很简单的语句,大家都明白,自取所需吧。

更新:如果是使用sdcv的历史记录作为生词本的话,有可能出现漏词的现象,而查询过多次的情况下,这词就重复出现两三次而把其它没查过的词挤掉。解决的办法是取出这个词马上把它从历史记录中删除掉,不用担心,因为后面用sdcv查询一次就会加上。而这样也能让单词本流动从而使随机取得的单词更完善(我想象的)。
在取得word后面加上这句就行了:

sed -i "${num}d"  ~/.sdcv_history
实际上可以直接写成$book的,但我怕某些人不小心删除掉它自己的单词本就不好了。这样可以表明这是sdcv_history专用的,也不怕人误用了,呵呵。

Lrcdis的rhythmbox插件

| Comments

众所周知,bones及一般脚本控达人搞了个lrcdis的歌词显示脚本,自动下载歌词还有多种显示方式,以支持N多的播放器。
用着真的是非常爽啊。但它需要在终端中另外开启。
于是我简单地为rhythmbox写了个插件调用它。只要启动这个lrcdis插件后,rhythmbox会在后台自动调用这个脚本。
如此听歌,启不更爽哉!

下载地址:http://geekr.googlecode.com/files/lrcdis-rb.tar.gz

解压文件后放到 ~/.gnome2/rhythmbox/plugins 目录下,在rhythmbox开启相关插件即可,其它操作如lrcdis一般。

这个插件其实相当简单,就是启动lrcdis而已,不过也相当有潜力,可以发展成能配置lrcdis什么的。

ps.修正lrcdis一个bug,一会报告去…

发件人 lerosua’ blog

Autotool简约指南

| Comments

写项目最烦的一项就是写Makefile,虽然有autoconf/automake这套工具。但我一直不会搞,因为几次屡屡出错,损失了信心。一看到它就头大,感觉特别复杂。
不过这几天坚定信心,勇创难关,终于初窥门径。本文不打算教你啥原理,只是按步就班指导一下步骤。因为网上的原理教程多的是。但怕自己忘记操作的步骤,所以记下来.

众所周所automake支持三种目录层次:flat、shallow和deep。以下例子是deep的,因为这才是项目最常用到的结构(不知道是啥去找文章看看) 1.首先建立自己的源码目录,foo, foo下有src目录,src目录下才是真正的源码 foo.c

leros@leros-desktop:/tmp$ ls foo/
src
leros@leros-desktop:/tmp$ ls foo/src/
foo.c
leros@leros-desktop:/tmp$ cat foo/src/foo.c
#include 
int main(int argc, char *argv[])
{
        printf("test autoconf\n");

return 0;
} 2.进入foo目录执行autoscan,扫描生成configure.scan

leros@leros-desktop:/tmp/foo$ autoscan
leros@leros-desktop:/tmp/foo$ ls
autoscan.log  configure.scan  src

3.把configure.scan改名为configure.in,然后修改内容

  4 AC_PREREQ(2.61)
  5 AC_INIT(foo,1.0,lerosua@lerosua.org)
  6 AC_CONFIG_SRCDIR([src/foo.c])
  7 AC_CONFIG_HEADER([config.h])
  8 AM_INIT_AUTOMAKE(foo,1.0)
  9
 10 # Checks for programs.
 11 AC_PROG_CC
 12
 13 # Checks for libraries.
 14
 15 # Checks for header files.
 16
 17 # Checks for typedefs, structures, and compiler characteristics.
 18
 19 # Checks for library functions.
 20
 21 AC_OUTPUT([Makefile
 22                 src/Makefile])
基本上添加了 AM_INIT_AUTOMAKE(foo,1.0)这行,还有改软件名和版本号,及最后AC_OUTPUT生成的文件。(和一些教程不同的是,这里没有把AC_CONFIG_HEADER([config.h])改成AM_CONFIG_HEADER([config.h]),我改了但会造成生成config.h出错,所以这里没改)

4.新建必要的文件

$touch NEWS README ChangeLog AUTHORS
将/usr/share/automake-1.X/目录下的depcomp和complie文件拷贝到本目录下,如果不复制,则会生成相应的链接文件,我想可能不利于移植,因为大家的automake的版本未必相同

5.建立Makefile.am, src/Makefile.am。

leros@leros-desktop:/tmp/foo$ cat Makefile.am
SUBDIRS=src
leros@leros-desktop:/tmp/foo$ cat src/Makefile.am
bin_PROGRAMS=foo
foo_SOURCES=foo.c
有多个源文件也只需要写进foo_SOURCES里就可

6.运行命令:

leros@leros-desktop:/tmp/foo$ autoheader
leros@leros-desktop:/tmp/foo$ autoconf
leros@leros-desktop:/tmp/foo$ automake -a
至此,构建基本上完成。 7.即可编译:
 ./configure &&make && sudo make install
8.看看最后的成果:
leros@leros-desktop:/tmp/foo$ ls
aclocal.m4      ChangeLog     COPYING     Makefile     NEWS
AUTHORS         config.h.in   depcomp     Makefile.am  README
autom4te.cache  configure     INSTALL     Makefile.in  src
autoscan.log    configure.in  install-sh  missing      stamp-h1
总结一下,要编译的文件主要是configure.in , Makefile.am, src/Makefile.am,其它则是生成的文件。按步就班,其实也不是太复杂。另外额外的功能慢慢查及学习吧。

BotCalk

| Comments

BotCalk是近来我和bones7456搞起的一个项目,目的是丰富jabber聊天室里的聊天环境。

当然也是个学习的过程。主程序改自gloox里的聊天室测试代码。botcalk把聊天室里的消息发送到一个管道,而有个脚本读取消息处理后再发送到另一个管道上。botcalk会循环读这个管道,然后把信息发送出去。

原理有些粗糙,目前就这么实现了发送链接读取网页标题的功能。但bug在于机器人登录后似乎导致聊天室不太正常,吃掉某些人发出的信息。

BotCalk 代码地址在 http://code.google.com/p/botcalk/ ,通过svn取得吧

编译botcalk需要gloox 1.0beta2以上版本,

需要的文件:

cat  bot.conf

jid=xxxx@gmail.com
passwd=xxxxxxx
server=talk.google.com
port=5222
room=linuxcn@conference.jabber.org/myBot 然后执行目录下的bot.sh即可。

以上仅学习参考使用.
PS.gentoo的用户在装gloox库的时候记得把gnutls带上,骨头就是没带上死活登录不了,害我查了半天.

感觉

| Comments

刚才mm打电话给我,问我黄金的戒指好不好,我感觉,金黄色的东西挺俗的,白色的比较好。当然mm也是从经济的角度看问题,黄金的六百多,白色金属,石头的那些,要贵一倍或更多哩。

mm抄办这些事情是很上心,但我却没啥感觉似的。婚纱照也订了,双方家长也算是见过了。戒指也在选购中了,但我却没有那种结婚的感觉。

这正常吗…

折腾perl脚本

| Comments

这两天没写程序,倒是和脚本较上劲了。主要是在ubuntu.cn论坛里收了ee的两个perl脚本。一个发图的,一个是将文件当成附件发送邮件的。

问题的关键是ubuntu和arch里的perl环境不一样。而arch的perl实在是太BT了。

这是ee的截图并上传脚本的帖子:

http://forum.ubuntu.org.cn/viewtopic.php?f=120&t=125239

arch环境中要运行它必须降级相关的perl模块,分别是perl-libwww-5.800 perl-www-mechanize-1.24

下面这个是ee的发送邮件附件脚本的帖子: http://forum.ubuntu.org.cn/viewtopic.php?f=21&t=133299 arch源中我没找着Mail::Sender模块,于是自己搞了个PKGBUILD来安装它。

# $Id: PKGBUILD,v 1.11 2008/03/24 16:16:28 sergej Exp $
# Maintainer: Sergej Pupykin
# Contributor: Francois Charette
# PKGBUILD writer : lerosua 

pkgname=Mail-Sender
pkgver=0.8.16
pkgrel=2
pkgdesc=”Automates web page form & link interaction”
arch=(‘i686’ ‘x86_64’)
url=”http://search.cpan.org/Mail-Sender”
license=(‘GPL’ ‘PerlArtistic’)
depends=(‘perl-uri’ ‘perl-html-parser’ ‘perl>=5.10.0’)
options=(‘!emptydirs’)
source=(http://search.cpan.org/CPAN/authors/id/J/JE/JENDA/Mail-Sender-$pkgver.tar.gz)
md5sums=(‘e5d88236202b3d39567ade7d560797b0’)

build() {
cd $startdir/src/Mail-Sender-$pkgver
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor || return 1
make || return 1
make install DESTDIR=$startdir/pkg || return 1
find $startdir/pkg -name ‘.packlist’ -delete
find $startdir/pkg -name ‘*.pod’ -delete
}

父子

| Comments

三八节,还是陪MM去看电影。仍然是那个港湾电影院,仍然是许多家长带着小孩看的电影。仍然是MM弄来的免费电影票。据说是首届中小学生电影节巡映影片。我看那张宣传票,写着《好妈妈坏爸爸》,演员阵容有杨采妮,郭富城。我寻思着,郭大天王啥时候拍过这么肉麻名字的电影啊。九成九是《父子》吧。

虽然我没看过《父子》,但我听说这部片可是有激情镜头的哩,当然,既然成为了中小学生电影节的巡映电影,这些片断肯定是看不到的。

于是又走进电影院。刚开始郭富城就频繁地爆粗口。的确是一个非常火爆性格的中年男人,只是这适合让中小学生看吗?在周长胜打发他儿子去买烟后,镜头一个飞跃,讲另一件事了。这里删除传说中的激情片断。周长胜被高利贷追到时,下一个镜头就躺在地上了,删除了暴力镜头。看着看着,旁边的妈妈们不断问,爸爸的确是坏爸爸,可妈妈也不是啥好妈妈啊。而我,仍然在习惯这种跳跃式的叙事风格。

这么一部片,大人也未必能完全看明白,何况在被和谐之后。究竟让小孩看啥哩,还说让每个懂得感恩。没个审查制度,随便删除直白的很黄很暴力的镜头就让小孩看吗?不知道哪个领导又在荼毒祖国的下一代了。fuzhi