<?xml version="1.0" encoding="UTF-8"?><rss version="0.92">
<channel>
	<title>Terrysco&#039;s Blog</title>
	<link>http://www.terrysco.com</link>
	<description>仅关注于互联网行业， Linux平台开发。</description>
	<lastBuildDate>Sat, 05 Nov 2011 21:24:06 +0000</lastBuildDate>
	<docs>http://backend.userland.com/rss092</docs>
	<language>en</language>
	<!-- generator="WordPress/3.2.1" -->

	<item>
		<title>用Drupal快速实现mobile平台服务端</title>
		<description><![CDATA[用Drupal很容易实现一个API，让手机平台或者其他系统使用json的格式进行通信。 &#60;?php define('API_ERRORNO_INVALID_ACTION', 1); define('API_ERRORNO_INVALID_PARAM', 2); define('API_ERRORNO_NO_RECORD', 3); define('API_ERRORNO_INVALID_NAME', 4); define('API_ERRORNO_USER_BLOCKED', 5); define('API_ERRORNO_LOGIN_FAILED', 6); // 根据错误代码返回错误信息 function api_message_wrapper($errno) { $message = array( API_ERRORNO_INVALID_ACTION =&#62; '非法的请求动作', API_ERRORNO_INVALID_PARAM =&#62; '非法的请求参数', API_ERRORNO_NO_RECORD =&#62; '查找不到数据', API_ERRORNO_INVALID_NAME =&#62; '非法的手机号码', API_ERRORNO_USER_BLOCKED =&#62; '当前用户已经被禁用', API_ERRORNO_LOGIN_FAILED =&#62; '登陆失败', ); return isset($message[$errno]) ? $message[$errno] : '未知的错误'; } // 验证合法的action function api_action_route($action) { $valid_actions = [...]]]></description>
		<link>http://www.terrysco.com/node/drupal-as-mobile-backend.html</link>
			</item>
	<item>
		<title>Mac平台软件推荐</title>
		<description><![CDATA[玩linux桌面5年多，习惯了更新发行版，用各种各样的开源软件来搭建自己的工作环境，高度定制自己的桌面以及和网上的朋友们分享桌面应用。而前段时间朋友送我一台mbp，顺势就玩了玩这个操作系统。说说与linux的桌面体验差别。 网上很多文章对比mac，linux desktop以及windows平台的工作环境，很多都是很浮躁的看法，我这三个平台都使用过，其中linux最长，mac使用了也就4-5个月，所以看法应该还是比较客观的，如果哪里说得不对，还请各位朋友少扔板砖。 看问题都有角度，我的角度就是一个开发人员和互联网工作者。先说说linux平台的好处，最大的就是可以随意定制，比如研究一个新的开源软件，可以随意编译，配置和安装，加上现在的linux发行版已经做的相当好了，几乎都不用自己来做（比如archlinux），很多爱好者自己打包给大家分享，于是有了AUR。wiki比较成熟，论坛也比较活跃。优点也就是缺点，频繁的升级，更新会给系统带来稳定性的威胁，经常会出现某个库出问题导致应用无法启动或者crash掉。mac平台比较统一，但同时也限制了用户的自由。当时参考了一篇老外写的从linux平台迁移到mac，给出了一些软件参考，觉得很有用。加上这段时间的整理和筛选，给开发者朋友们分享下。 互联网时代用得最多的就是浏览器吧，chrome，firefox和原生的safari都是不错的选择，firefox专门用来做前端开发用，就是因为firebug这个插件。剩下两个浏览器都有firebug，但是lite版，几乎都是残次品。。。safari和系统集成最好，比如支持很多lion的手势和快捷键，缺点就是插件稀少，不能同步书签。一个折衷方案就是chrome，更新较快，lion出来没多久就支持全屏工作了。 开发工具我试过很多，textmate和coda被普遍认为是mac平台的最优秀的开发工具，但是比较昂贵，很多人都选择团购。由于我是从linux平台迁移过来的，自然选择了macVim，免费功能强大插件多，用来做一般的编辑足够用了。另外配备一个强大的IDE就是netbeans，使用最多的就是它了。 文档方面就是iwork了，微软那个office for mac我没有用，速度太慢了，虽然兼容性最好，但是想起来那龟速我就放弃了。实在遇到兼容性问题，就往parallel desktop里面一扔，用office 2011直接处理。现在的parallel desktop性能好了很多，又跟lion很好的结合，可以无缝切换，全屏工作，很是方便。 IM工具呢使用最多的就是skype了，最好最文档可视频。msn用adium搞定，没有用微软那个，同样很慢，而且总crash。腾讯官方的QQ已经到1.2版本了，最近更新很给力，差不多功能都支持了。邮件客户端用的是mac自带的mail，更新到lion以后全屏体验加上类似gmail的邮件归组，很方便，多个邮件账号imap设置后新邮件会在dock里面提示。FTP和SFTP工具用的最多的就是transmit了，能导入filezilla以及一些其他ftp工具的书签，而且有同步功能，可以根据修改日期或者文件大小来选择，很是方便，做站点发布的时候经常用。迅雷出了mac版以后几乎就淘汰其他下载工具了，最近更新也比较给力。reeder是最好的google reader客户端，每天用他来看一些咨询和文档。evernote这个跨平台的笔记软件几乎是必装的，翻墙时候就把ssh账号信息丢到issh里面轻松搞定。词典翻译呢系统自带的字典比较少，但有软件可以将星际译王的词典转换过来，我就转换了4个比较常用的字典文件，以前在linux平台下用星际译王的时候留下的。最后mac本身没有卸载软件的功能，cleanapp就能满足需要了。marsedit类似linux平台的gnome-blog，可以直接撰写blog，并利用wordpress的xmlrpc服务直接发布，这篇博文就是用它来写的。 都说mac平台很适合用于软件设计，日常办公。下面就罗列一些。omniplan很多人在用，做开发计划最拿手。omnigraffle用来做图，替代linux下的dia和windows下的visio。Axure原型设计和dropbox文件共享在mac下也有。ed2k下载只有一个easyMule可选，但是经常崩溃并且丢失下载列表。晚上找到一个修复脚本，试了几次还不错。如果和局域网中其他windows机器互通飞秋，ipmessenger就可以做到。集成php开发环境包mamp替代xampp，mindnode可以用来画脑图，替代xmind庞大的java程序。sequel可以用来作为mysql的管理工具客户端，textual可以用来IRC，versions用来做svn管理。最后，mplayerx是开源的视频播放工具，linux下的mplayer一样。mame os x则是替代sdlmame的，只可惜定制性不太好。ichm可以用来应急，查看哪些变态的chm文件。 有了以上的工具，加上习惯mac的触摸板和手势动作，可以轻松的提升工作效率。]]></description>
		<link>http://www.terrysco.com/node/mac-osx-software.html</link>
			</item>
	<item>
		<title>用yii框架开发web应用</title>
		<description><![CDATA[好久没写博客了，都是在微博中堕落了，加上最近特别忙，入手了一台MBP。更换了工作平台，准备看些新的适合web2.0的高性能纯面向对象框架，yii就是我想要的了。 官方文档比较齐全，有多语言在线文档和两本pdf书籍以及一个用yii搭建blog程序的向导。学习曲线不算曲折，很快就上手用它来写东西。特性一大堆，刚开始不可能熟悉所有的，只是看了数据库和用户验证以及表单部分，一般的web应用就能应付了。至于怎么让yii更好的为你工作，完全深入它的很多机制只能在接下来的时间中慢慢熟悉。对于从别的mvc模式的框架转移到yii，几乎不用花费太多时间。有两个图看明白了概念也就清晰了，一个是路由处理的流程图，一个是mvc加上组件以及其他附属品的结构图。 繁忙的生活让我最近颓废了好多，以前2个星期一本书的习惯已经荒废了半年了，打算10-1后振作下，坚持下去这个习惯。近期打算翻译一些网络安全书籍，给drupal社区提交一些开源模块，尝试一些新鲜的东西。]]></description>
		<link>http://www.terrysco.com/node/%e7%94%a8yii%e6%a1%86%e6%9e%b6%e5%bc%80%e5%8f%91web%e5%ba%94%e7%94%a8.html</link>
			</item>
	<item>
		<title>利用Dropbox和ZIM打造云存储笔记</title>
		<description><![CDATA[随着Dropbox的解封，我忽然想到很多软件借助dropbox都可以实现将配置文件云存储，分享给大家。 其实Linux上可以用来做笔记的有很多，比如notecase，zim和evernote的Linux平台前端Nevernote，另外还有基于mono的tomboy以及用C++改写的gnote，但我感觉最好用，最方便，高效而且够用的就是zim。就像zim描述的那样，桌面WIKI。 但是zim只是单机版本的，我们很容易借助Dropbox将笔记目录丢到Dropbox的同步目录下，比如我这里： /home/terrysco/Dropbox/Notes，这样每次添加了笔记Dropbox就会自动同步。就算以后重新安装了系统，不小心删除了zim，只要将zim的主目录指向Dropbox下的Notes即可，轻松实现了个人笔记的云存储。]]></description>
		<link>http://www.terrysco.com/node/dropbox-zim-cloud-storage.html</link>
			</item>
	<item>
		<title>调整eclipse在Archlinux上的显示</title>
		<description><![CDATA[eclipse在linux平台上的显示真是让人纠结，浪费空间不说，左边的项目树和大纲方法列表太松散了。既然我当时在eclipse官方下载的GTK版本，可以对其进行单独定制显示。 首先，创建一个自定义的gtkrc文件/home/terrysco/.gtkrc-eclipse，写入： style “eclipse” { font_name = “DejaVu 8&#8243; } class “GtkWidget” style “eclipse” style “eclipse” { font_name = “DejaVu 8&#8243; } class “GtkWidget” style “eclipse” 其中字体的名字和大小可以根据自己喜好进行设置。完成后在桌面上创建一个程序启动器，在其命令那里写入： env GTK2_RC_FILES=/usr/share/themes/Clearlooks/gtk-2.0/gtkrc:/home/terrysco/.gtkrc-eclipse &#8216;/home/terrysco/Applications/eclipse/eclipse&#8217; 后面的路径根据自己eclipse实际情况来指定。重启eclipse，舒服多了。]]></description>
		<link>http://www.terrysco.com/node/eclipse-gtk-apperence.html</link>
			</item>
	<item>
		<title>Gnome环境下几个不错的软件</title>
		<description><![CDATA[Drivel 离线博客客户端，虽然不如KDE下的blogilo好用，但是也算是简单实用了，这篇博客就是使用Drivel发布的。 Zim 一款笔记软件，Tomboy的依赖太多，还是习惯了这种有层次结构的笔记软件，用Perl编写的。 GoldenDict 比星际译王好用多了，而且支持星际译王和babylon的字典，加上根据搜索关键字自定义网络辞典。 Gitg 作为git的图形前端相当方便 Remmina 使用他来管理ssh和rdp服务器太方便了，可以保存连接windows机器的远程桌面密码。Archlinux源里面有remmina-plugins支持rdp连接。]]></description>
		<link>http://www.terrysco.com/node/gnome-soft-recommend.html</link>
			</item>
	<item>
		<title>利用Archlinux构建高可用的开发桌面</title>
		<description><![CDATA[都说设计人员更愿意使用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阵营吧。]]></description>
		<link>http://www.terrysco.com/node/archlinux-dev-desktop.html</link>
			</item>
	<item>
		<title>Drupal编程总结</title>
		<description><![CDATA[从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]) &#38;&#38; is_numeric($lgid)) { $terrysco[$lgid] = db_fetch_array(db_query(&#8216;SELECT * FROM {linkedin_groups} WHERE lgid = %d&#8217;, $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. [...]]]></description>
		<link>http://www.terrysco.com/node/drupal-programming-summary.html</link>
			</item>
	<item>
		<title>Linux下游戏推荐</title>
		<description><![CDATA[最近收集了几个Linux下不错的游戏，分享给大家。 首先MAME模拟器，跨平台的就不用说了，以前本人blog也写了几篇。 SDLMAME的家用机模式 sdlmame设置 xmame热键设置（宏定义） 另外，源里面也有几个不错的游戏。 Bos wars 类似帝国时代的游戏，目前还在探索阶段。 supertuxkart 很有意思的一个赛车游戏，主角就是Linux的吉祥物企鹅大哥，具体玩法有帮助选项。 wormux 很像以前的疯狂坦克和百战天虫 未完待续。。。]]></description>
		<link>http://www.terrysco.com/node/linux-games.html</link>
			</item>
	<item>
		<title>解决archlinux上android环境的搭建问题</title>
		<description><![CDATA[不知道从什么时候开始，AUR源里面的eclipse-android包装不上了，也就是ADT。google了很多解决办法，一一试过了还是不行，而且现在的这个包依赖了eclipse-classic，很郁闷这种频繁的包更新方式。解决办法如下： 首先把自己的帐号加入到eclipse组中。比如： sudo gpasswd -a terrysco eclipse 然后安装eclipse-android这个包的时候编辑PKGBUILD，把eclipse-classic这个依赖去掉。使用我们之前安装的eclipse这个包即可。没问题了，所有安装顺利，创建项目测试了下通过。]]></description>
		<link>http://www.terrysco.com/node/archlinux-android-rebuild.html</link>
			</item>
</channel>
</rss>

