29
一/11
5

Gnome环境下几个不错的软件

Drivel 离线博客客户端,虽然不如KDE下的blogilo好用,但是也算是简单实用了,这篇博客就是使用Drivel发布的。

Zim 一款笔记软件,Tomboy的依赖太多,还是习惯了这种有层次结构的笔记软件,用Perl编写的。

GoldenDict 比星际译王好用多了,而且支持星际译王和babylon的字典,加上根据搜索关键字自定义网络辞典。

Gitg 作为git的图形前端相当方便

Remmina 使用他来管理ssh和rdp服务器太方便了,可以保存连接windows机器的远程桌面密码。Archlinux源里面有remmina-plugins支持rdp连接。

关键字:
12
一/11
4

利用Archlinux构建高可用的开发桌面

都说设计人员更愿意使用Mac,开发人员更愿意使用Linux。自从Ubuntu这个发行版问世和Fedora社区孜孜不倦的研发,Linux的桌面系统仿佛得到了前所未有的发展。

本文是我这几年使用Linux桌面进行工作的一些收获,最大的好处就是很方便的和世界各地的开发者们一起进行网络工作,自由的配置和选择自己喜欢的软件。如有可能,可以使用Linux平台下流行的开发工具python进行开发。自己动手相当有乐趣,除了可以玩弄下别的语言,体会其思想,还可以提高自己的动手能力多好。

首先,如果安装一个archlinux系统这里就不多说了,官方wiki有丰富的文档。我觉得arch比ubuntu最好的地方就是完全自己配置,一次纠结之后就很省心。另外,arch的AUR软件相当的丰富(这点ubuntu用户都流口水了),而ubuntu经常要自己添加一些莫名其妙的源。我们接下来看看如果解决沟通时的文档问题,国外的开发者比较喜欢PDF格式和协同办公系统(B/S结构的较多),但不乏有些人还是要发给你DOC格式的文档,最让人纠结的莫过于此。没办法,libreoffice还是必须要安装的。基于兼容性问题,最好的办法就是安装一个virtualbox虚拟机,其上虚拟一个精简的XP。我这个虚拟机就跑了一个office2010和IE(网银)。什么?用wine?打死我也不装。

现在来看看开发环境,archlinux已经提供了大部分可得的开发工具,Gnome和KDE桌面都有很多选择。(以下以Gnome为例,KDE用户请参考kdesdk包 sudo pacman -Ss kdesdk)
我的很多老外开发朋友都推荐我用Vim,并大方的给我提供很多Vim相关文档。我相信这是个习惯问题,当有一天你记下了所有的键位的用法和vim强大的扩展功能,编辑文本就编程无敌了。因为vim本身就是对程序开发人员设计的,你可以使用正则表达式,使用脚本对其控制。总之在Linux平台做开发,使用Vim加上常用plugin和调试工具是最为合适的。此外,如果选择其他的编辑器,我觉得Gnome下一个不错的选择就是Geany。UML就用ArgoUML来做,IDE可以使用Netbeans,更新比较快,可能习惯了,除非琢磨点android的东西,否则很少碰eclipse。最后版本控制方面,git,cvs和svn源里面都有,如果你愿意使用客户端,提供几个选择:gitg用来管理git,rapidsvn用来管理SVN。另外,强大的netbeans也支持版本控制,这里推荐GIT。自从使用GIT作为项目管理工具后一切变得很简单,新手对于git的学习曲线也不复杂,基本1个小时内可以上手,而且不可否认分布式的git速度很快。最后,dia可以用来画一些简单的流程图,xmind用来快速描绘自己的想法,准备头脑风暴。

沟通工具更是丰富,emesene,skype,gajim,openfetion,xchat,够用了吧?QQ的话就web2吧,那个GTK客户端太纠结了。现在很少会使用到windows环境了,如果很多网银支持别的浏览器了和linux了,我用不着虚拟机了。还等什么?比Mac的低成本,比windows的高可用性,赶紧加入Linux阵营吧。

arch

关键字: ,
23
十二/10
0

Drupal编程总结

从2007年末接触Drupal开始,已经3年时间了。Drupal已经从5.x版本升级到了7.x,模块开发也发生了很多变化。

1. 在查询数据库的时候,考虑到一些特殊情况尽量使用静态变量,这相当于drupal的第一层缓存,在drupal的很多load相关函数中到处可见。比如:

function terrysco_get_group($lgid, $reset = false) {

// 使用静态变量做缓存

static $linkedin = array();

if ($reset) {

$terrysco = array();

}

if (!isset($terrysco[$lgid]) && is_numeric($lgid)) {

$terrysco[$lgid] = db_fetch_array(db_query(‘SELECT * FROM {linkedin_groups} WHERE lgid = %d’, $lgid));

}

return isset($terrysco[$lgid]) ? $terrysco[$lgid] : false;

}

这样,在要处理一个大的结果集的时候,在循环中调用该函数,就不会每次循环都查询数据库了。

2. 深入理解drupal的hook机制,用好module_invoke_all来设计你的模块机制,大大增强扩展性。其他方面,多想想怎么和别的模块工作的更好,不要进行hack的工作,要给别的模块留下更改你输出主题,更改你返回数据的机会。

3. 多使用表单给用户进行参数配置,将这些配置用variable_set存起来随时使用,生成配置表单的时候可以使用system_settings_form()将表单数组包装起来,省去了写提交函数的部分。另外,将一些数据分析后可以适当存储在session或者cookie中,不一定非要写数据库。

4. 不要过于依赖node机制。node给我们提供了很多方便,很多第三方模块装上后就能很好的工作,比如fivestar,views之类的东西,但也要考虑实际项目需要。很多小的数据如果量很大,不建议放在node表中。而且node表以nid作为auto_increment的primary key,给我们日后做扩展留下了很多麻烦。

5. 不要过于依赖第三方模块。第三方模块的一个共同点就是功能强大,代码质量还算不错,但是正因为如此,模块开发者考虑到的是通用性,一个大的模块可能很多功能我们使用不了,这时候就不要偷懒了,自己动手吧。而且很多第三方模块是有问题的,自己细心研究下就能发现很多。

6. Drupal本身支持快速切换数据库,这就使得我们可以在开始的时候就做好设计,看看是否将某些业务分离。当然,如果是中小型的项目就不用了。

未完待续。。。

关键字:
5
十一/10
1

Linux下游戏推荐

最近收集了几个Linux下不错的游戏,分享给大家。

首先MAME模拟器,跨平台的就不用说了,以前本人blog也写了几篇。
SDLMAME的家用机模式
sdlmame设置
xmame热键设置(宏定义)

另外,源里面也有几个不错的游戏。

  • Bos wars 类似帝国时代的游戏,目前还在探索阶段。
  • supertuxkart 很有意思的一个赛车游戏,主角就是Linux的吉祥物企鹅大哥,具体玩法有帮助选项。
  • wormux 很像以前的疯狂坦克和百战天虫

未完待续。。。

关键字:
19
十/10
0

解决archlinux上android环境的搭建问题

不知道从什么时候开始,AUR源里面的eclipse-android包装不上了,也就是ADT。google了很多解决办法,一一试过了还是不行,而且现在的这个包依赖了eclipse-classic,很郁闷这种频繁的包更新方式。解决办法如下:

首先把自己的帐号加入到eclipse组中。比如:

sudo gpasswd -a terrysco eclipse

然后安装eclipse-android这个包的时候编辑PKGBUILD,把eclipse-classic这个依赖去掉。使用我们之前安装的eclipse这个包即可。没问题了,所有安装顺利,创建项目测试了下通过。

关键字: