Author Archives: csslayer
做个 Free Lancer 式的 KDE 开发者
开发总是蛮难的一件事情,尤其是当你面对着一个非常大的项目的时候,例如KDE。 经常会有人问到:“啊,我懂一点Qt,也懂C++,然后也挺闲的,想要给KDE开发点什么,但是不知道该干什么。” 这种问题在邮件列表上时有出现,经常一个回答就是,嗯,去找点Bug来修吧。其实对于常驻的开发者们来说,这个回答是十分make sense的,因为他们也不了解你的热情究竟如何,但是修复个Bug,即使你将来失去兴趣很快离开了,也不致于导致留下了一些无人维护的代码。修复个Bug,和写个新功能带来的成就感可是没法比的。 那么如何给自己一些动力呢?那就来修复你讨厌的Bug吧!或者找一些你喜欢的小功能来实现。我的KDE开发之路是从kimpanel开始的,话说回来,我对于界面的原生程度是无比执着的,也导致了我很喜欢kimpanel这个小东西,不过之前的作者已经离开很久了(由于他个人原因),也有很多Bug没有修复。于是我借着机会把它给重写了。当然为了进行提交,我顺带还申请了KDE的开发用的账号。 这个账号的权限可是不老小的,可以对KDE的任意代码进行修改,于是从这里开始我偶尔就会找一些小问题来解决一下。当然最好还是采用Reviewboard,因为你对于其他的项目的了解并不一定太深,让主要维护者来review一下总是好的。不过偶尔我也会干点直接提交的事情,如果我十分确定的话。 总之概括起来的话……当年Linux的评价就是有无数的眼睛盯着代码,于是偶尔自己也可以成为这样的眼睛啰。了解了更多的代码之后也可以方便自己加入到开发中去。
Fcitx Hangul
基本上就是port ibus-hangul……因为我不懂韩文。 不过额外比起来有quickphrase可以用 🙂 =-=-=-=-= Powered by Blogilo
Fcitx 10岁了
虽然精确说来其实都过了好些天了。 http://fcitx.csslayer.info/wiki/History 里面有一个暴长的版本历史,不知道能唤起多少人的回忆呢。 上面是最近整理的一些关于历史的小内容。 曾经做的视频用 Gource 输出的 Fcitx 开发记录。 P. S. 上面的网址打算作为以后的 fcitx.org ,前提是我能把域名搞到……
Fcitx 4.2.1
fcitx 4.2.1 Changes related to API: 1. Cleanup Unused macro and API 2. Some new FcitxInputState series API for get the origin key event for frontend. 3. Portable with custom path, hide two path related API that may break portable. … Continue reading
为什么Gtk程序总爱给我找麻烦
http://code.google.com/p/fcitx/issues/detail?id=528 这是起因,当然铺垫还有很多,我就懒得说了。 Glib 使用 C 实现 signal 的一个缺陷。具体来讲就是这么回事,在glib里面,很多时候处理signal,为了通用,以及能够使用同一个函数作为signal_connect,于是所有的函数指针都会转化为 (void*)(G_CALLBACK) g_signal_connect(context->slave, “commit”, G_CALLBACK(_slave_commit_cb), context); 那么问题在于,缺少对 callback 函数的合法性验证,可能会出现各种潜在的问题。在不是有意为之的前提下,程序员仍然会更容易犯错误。 拿pidgin里面的一个问题举例,pidgin的状态输入框,不知道有没有人注意到,在里面用backspace和输入法是很不正常的,会同时删掉输入法这边和pidgin里面两个字符。 为什么?明显是一个按键事件被搞了两次。 我的一个朋友花了一些时间去debug这个问题: Finally I traced it down to the problem. 我本来是看见这么一行: g_signal_connect(G_OBJECT(gtkconv->entry), “key-release-event”, G_CALLBACK(gtk_conv_key_press_cb), NULL); 去掉就没事了。 这个函数如下: static void … Continue reading