GUI Debugging tools

想了解一个C程序的运行,打算用gdb来单步看一下流程,发现直接用gdb不太方便,然后模仿偶像用emacs的gdb支持(M-x gdb)。但是境界实在是比不上偶像,emacs的操作都还不熟练。最后选择了geany。geany是一个简单的C/C++ IDE,它有一个geanygdb插件可以帮助你在geany的图形界面里调试。

但是最近安装在仓库里的geanygdb插件有一些问题,会导致很高的CPU占用。不过这个问题被报告在这里,现在已经修复了。因为新版本还没有release,所以如果急着用的话,可以从svn签出代码:
svn co https://geany-plugins.svn.sourceforge.net/svnroot/geany-plugins/trunk/geany-plugins
然后执行:

cd geany-plugins
./autogen.sh
./configure
cd geanygdb
make
sudo make install

重启geany,打开plugin manager,看到geanygdb的版本已经变成0.20就可以使用了。

geany现在还不支持ctags,是因为它内部有一套自己的tags实现。代码导航可以用过上下文菜单 Go to tag Definition 或者 Go to tag Declaration 实现,最好是到Preference中给这两个命令设置一个快捷键,比如Ctrl+],再对Navigate back 设置一个Ctrl+t,就如同vim+ctags一样了。

实际上在GNOME桌面还有一个专门的GDB图形界面,叫做Nemiver。Nemiver对gdb的常用命令都有快捷键操作,把鼠标移动到代码上还可以查看变量的值,效果和eclipse调试java程序一样,非常强大。

The post is brought to you by lekhonee v0.7

Upgraded to Maverick Meerkat

上周Ubuntu 10.10 Maverick Meerkat beta发布了,本人向来是在Beta版发布的时候更新,然后经历一个月的黑白颠倒最终走向光明走向stable。因为我安装的规模有点大,这次升级总共要下载两千八百多个包,花了我两天的时间。

升级到Meerkat后,由于内核版本变成了2.6.35,原先ath5k网卡的驱动madwifi不能用了。这点一定要有心理准备,好在madwifi已经有了针对2.6.35的分支。可以从madwifi-project网站上下载:
http://snapshots.madwifi-project.org/madwifi-0.9.4-current.tar.gz
然后您可以根据UserGuide上的步骤进行操作:
http://madwifi-project.org/wiki/UserDocs/FirstTimeHowTo
话说我升级了网卡驱动之后无线网路稳定性、速度都有了很明显的提升,对一个饱受无线掉线折磨的人来说,这个太重要了。(我先前使用的驱动是 madwifi-hal-0.10.5.6-r4119)

其他变化包括:

  • 主题多了橙色元素
  • indicator applet增加了几个新的图标
  • tracker applet可以显示出来了 -_-|||
  • Evolution 2.30 工具栏有点变化
  • UpdateManager UI有点变化
  • 多了一个Input Method Switch的图形界面设置
  • Indicator多了network manager

其他更新还要慢慢体会,不过总得来说这次10.10更新不多,恐怕也和GNOME3跳票有关吧。

The post is brought to you by lekhonee v0.7

Next to Richard Stallman

我这个人一般不八卦,你知道的。但是个别时候实在是情难以堪。

Bug 626593 – Gnome ate my boyfriend! Help!
https://bugzilla.gnome.org/show_bug.cgi?id=626593

这位女士在GNOME bugzilla上提交bug,bug提交在empathy项目下。(注 dict empathy: 心意相通)

先不看正文,备注信息就极具幽默感:
Status: RESOLVED INVALID
Product: empathy
Component: User Guide
Version: unspecified
OS: Windows
Importance: Normal critical

是不是真的RESOLVED就不知道了。

事情的直接原因是上周海牙GUADEC,此男cancel了周末和这位reporter的约会。此女不堪长期忍受此男、Linux、Maemo、C等等,彻底爆发了。

He even tried to put Linux on my computer and I simply could not take it. I came home from work one day and my computer said “UNIX” all over it!
这句有力的证明了我曾经看到的一句箴言,给女生装linux,对她们、对电脑、对linux都是一种折磨。

接下来搞笑开始了。一楼就是一位极缺乏幽默感的大叔:
Akhil Laddha 2010-08-11 06:45:46 UTC
This is a GNOME bug tracking system, not any family consultancy.

二楼是位好心人,提出了一个Linux week计划,还一厢情愿整了个交易计划:
for each bug you report, he has to spend one night with you without the computer.

八楼精华:
David Liang 2010-08-12 08:53:16 UTC
不得不顶

九楼亮出一个家属俱乐部的邮件列表:
gnome-women-list@gnome.org,说你要是在家属圈子里麻将打得无敌手,自然你的boyfriend就崇拜你了,到时你就是爷了

高潮在十楼出现了,“你不说这男的是谁我们怎么帮你?”

紧接着十一楼一位神秘人士笑而不语。

十四楼比较直接
#apt-get remove boyfriend –purge

十九楼知道宁拆十座庙的道理,建议先查看一下情况再说:
cat /dev/boyfriend | grep love

最冷的是十六楼说咱们有这么个项目的:
http://projects.gnome.org/outreach/women/

你以为故事就这么结束了,你错了。
没想到男主人公的网站被我不经意间人肉出来了:
http://zachgoldberg.com

一上来第一篇就说这事:
HELP! My Girlfriend Learned How To Use A Bug Tracker

I never thought it would happen.

此男字字珠玑:
It all started one night when I got home very late from work (where I get to play with Linux all day… who would ever go home?). I got the usual “you need to pay more attention to me” and “Linux will never have sex with you!”. I sat through it all and when it was over she went to sleep and I…. opened up my Laptop (running Ubuntu Linux, of course) and started hacking. All is right with the world.

于是他发现自己上了LWN的Quote of the Week,和RMS的新闻并列,然后又被转载到hacker news, geek.com, slashdot。他感叹道 I never imagined my entry into the “slashdot number of zero” (think Erdos or Kevin Bacon) club would happen in this way.

最后他说他要开一个bugs.zachgoldberg.com专门解决这类的问题,If you want your own component in the bugtracker to help you and your loved one vent your problems all you need to do is ask!

哈哈哈哈

补充个精华链接:http://www.reddit.com/r/linux/comments/d02j6/bug_626593_gnome_ate_my_boyfriend/

最后daf同学总结性地指出,她不会学习使用bug tracker。

The post is brought to you by lekhonee v0.7

用markdown书写文档

写文档是头疼事,没人愿意写文档。在word里写文档,时间长了都怀疑自己是不是搞技术的。我阅历有限,在我的印象里就没有用word格式看过什么有价值的东西。只要一打开word想到的就是连篇累牍的废话、码字。word最重要的功能是什么?保存。其次呢?字数统计。我所写过的word文档绝大多数都是“只写”的,通常作为流程里的一个附件,没有人真正去看。

以上是人身攻击,接下来比较实际的问题,word文档不是符合unix哲学的东西。格式不开放,你就没有办法进行diff操作,把word文档放到svn里,只能使用最基本的版本控制,没法查看changeset,只知道改了,不知道改了什么。

为了改变这种情况,我试过用docbook格式。docbook用xml书写,定义了一套复杂的Schema,详细到作者的email都有定义。docbook还有丰富的工具集,可以通过xsl把docbook转换成所有你知道的文档格式。Maven: the Definitive Guide就是用docbook写成的。不过用docbook也存在一些问题,docbook太复杂了,用纯文本编辑器很难处理,作者的学习曲线也比较高,需要所见即所得的编辑器支持。与docbook相类似的DITA,也存在这样的问题,它们是重量级的格式。

轻量级的Wiki格式不错,但是Wiki格式很让人头疼就是没有统一的规范。举例,dokuwiki里顶级标题是6个=,而moinmoin里顶级标题恰恰相反是一个=,不portable,文档维护起来就非常麻烦。

铺垫了这么多,委屈以上格式了,该markdown出场了。markdown是简单的html原型,用来生成html,它的设计目标就是为了KISS,兼容html。看看一些必要的格式吧:(或者直接看Wikipedia
标题
# 标题
## 二级标题

###### 六级标题

对于一级标题还可以这么写
headline
========
二级标题可以
headline
——–
这个怎么输入呢,我想起来前几天看vim hacks里的一组快捷键
yypoVr=
yypoVr-
谁用谁知道

段落:
一段文本以两个换行结束。
换行:
一行文本行末两个空格。

图片
![alternative text](image-url “image-title”)
用markdown,图片的alt你不写都不行。

链接
[Linktext](link “linktitle”)

列表
ul 无序列表
*
*
ol 有序列表
1.
2.

以上就是主要的格式支持。用标题来划分文档层次,没有多余的格式,没有机会让你五颜六色。

在linux上可以安装markdown的处理脚本:
apt-get install markdown
安装vim的语法文件:

http://www.vim.org/scripts/script.php?script_id=1242

这里是一个简单的例子:

http://github.com/sunng87/exaile-doubanfm-plugin/blob/master/README.mkd

The post is brought to you by lekhonee v0.7

exaile豆瓣电台插件(exaile-doubanfm-plugin)

豆瓣电台一直是flash客户端,嵌入浏览器,出于对flash的厌恶,本人开发了这个exaile插件,让广大linux同学在exaile里享受豆瓣电台一目了然桌面集成和全部豆瓣电台功能。

exaile-doubanfm-plugin features:

  • 登录豆瓣,获取豆瓣电台播放列表
  • 持续下载电台播放列表,实现不重复的持续播放
  • 标记/取消“喜爱”、标记“回收站”、跳过
  • 显示歌曲信息

screenshot_001

screenshot_002

screenshot_002

项目地址:
http://github.com/sunng87/exaile-doubanfm-plugin

下载页:
http://github.com/sunng87/exaile-doubanfm-plugin/downloads

使用:

  1. 激活插件,填写用户名密码
  2. 重启exaile
  3. 文件菜单,open douban.fm,选择频道
  4. 点击播放开始
  5. 将rating设置为5 标记喜欢
  6. rating设置2 豆瓣标准跳过
  7. rating设置1 豆瓣删除

The post is brought to you by lekhonee v0.7