<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Terrysco&#039;s Blog</title>
	<atom:link href="http://www.terrysco.com/feed" rel="self" type="application/rss+xml" />
	<link>http://www.terrysco.com</link>
	<description>仅关注于互联网行业， Linux平台开发。</description>
	<lastBuildDate>Sat, 05 Nov 2011 21:24:06 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>用Drupal快速实现mobile平台服务端</title>
		<link>http://www.terrysco.com/node/drupal-as-mobile-backend.html</link>
		<comments>http://www.terrysco.com/node/drupal-as-mobile-backend.html#comments</comments>
		<pubDate>Sat, 05 Nov 2011 21:23:40 +0000</pubDate>
		<dc:creator>terrysco</dc:creator>
				<category><![CDATA[CMS/FrameWork]]></category>
		<category><![CDATA[drupal]]></category>

		<guid isPermaLink="false">http://www.terrysco.com/?p=445</guid>
		<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>
			<content:encoded><![CDATA[<pre>用Drupal很容易实现一个API，让手机平台或者其他系统使用json的格式进行通信。</pre>
<pre>&lt;?php</pre>
<pre>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 =&gt; '非法的请求动作',
    API_ERRORNO_INVALID_PARAM =&gt; '非法的请求参数',
    API_ERRORNO_NO_RECORD =&gt; '查找不到数据',
    API_ERRORNO_INVALID_NAME =&gt; '非法的手机号码',
    API_ERRORNO_USER_BLOCKED =&gt; '当前用户已经被禁用',
    API_ERRORNO_LOGIN_FAILED =&gt; '登陆失败',
  );
  return isset($message[$errno]) ? $message[$errno] : '未知的错误';
}

// 验证合法的action
function api_action_route($action) {
  $valid_actions = array(
      'login' =&gt; 'login',
      'register' =&gt; 'register',
      'getCardInfos' =&gt; 'get_card_info',
  );
  return isset($valid_actions[$action]) ? $valid_actions[$action] : false;
}

function api_menu() {
  $items['api'] = array(
    'page callback' =&gt; 'api_dispatch',
    'access callback' =&gt; TRUE,
    //'access arguments' =&gt; array('使用API'),
    'type' =&gt; MENU_CALLBACK,
    'file' =&gt; 'api.functions.inc',
  );
  return $items;
}

// 成功返回
function api_response_sucess($data) {
  drupal_json(array('ERRNO' =&gt; 0, 'DATA' =&gt; $data));
}

// 失败返回
function api_response_error($errno) {
  if ($errno &amp;&amp; is_numeric($errno)) {
    drupal_json(array(
      'ERRNO' =&gt; $errno,
      'MSG' =&gt; api_message_wrapper($errno),
    ));
  }
}

// API调度入口
function api_dispatch() {
  if (!isset($_POST['ACTION']) || !api_action_route($_POST['ACTION'])) {
    api_response_error(API_ERRORNO_INVALID_ACTION);
  }
  elseif (!isset($_POST['PARAM'])) {
    api_response_error(API_ERRORNO_INVALID_PARAM);
  }
  else {
    $param = json_decode($_POST['PARAM']);
    call_user_func('api_call_'.  api_action_route($_POST['ACTION']), $param);
  }
}</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.terrysco.com/node/drupal-as-mobile-backend.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mac平台软件推荐</title>
		<link>http://www.terrysco.com/node/mac-osx-software.html</link>
		<comments>http://www.terrysco.com/node/mac-osx-software.html#comments</comments>
		<pubDate>Tue, 04 Oct 2011 14:02:50 +0000</pubDate>
		<dc:creator>terrysco</dc:creator>
				<category><![CDATA[Linux/Mac/DB]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[mac]]></category>

		<guid isPermaLink="false">http://www.terrysco.com/?p=434</guid>
		<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>
			<content:encoded><![CDATA[<p>玩linux桌面5年多，习惯了更新发行版，用各种各样的开源软件来搭建自己的工作环境，高度定制自己的桌面以及和网上的朋友们分享桌面应用。而前段时间朋友送我一台mbp，顺势就玩了玩这个操作系统。说说与linux的桌面体验差别。</p>
<p>网上很多文章对比mac，linux desktop以及windows平台的工作环境，很多都是很浮躁的看法，我这三个平台都使用过，其中linux最长，mac使用了也就4-5个月，所以看法应该还是比较客观的，如果哪里说得不对，还请各位朋友少扔板砖。</p>
<p>看问题都有角度，我的角度就是一个开发人员和互联网工作者。先说说linux平台的好处，最大的就是可以随意定制，比如研究一个新的开源软件，可以随意编译，配置和安装，加上现在的linux发行版已经做的相当好了，几乎都不用自己来做（比如archlinux），很多爱好者自己打包给大家分享，于是有了AUR。wiki比较成熟，论坛也比较活跃。优点也就是缺点，频繁的升级，更新会给系统带来稳定性的威胁，经常会出现某个库出问题导致应用无法启动或者crash掉。mac平台比较统一，但同时也限制了用户的自由。当时参考了一篇老外写的从linux平台迁移到mac，给出了一些软件参考，觉得很有用。加上这段时间的整理和筛选，给开发者朋友们分享下。</p>
<p>互联网时代用得最多的就是浏览器吧，chrome，firefox和原生的safari都是不错的选择，firefox专门用来做前端开发用，就是因为firebug这个插件。剩下两个浏览器都有firebug，但是lite版，几乎都是残次品。。。safari和系统集成最好，比如支持很多lion的手势和快捷键，缺点就是插件稀少，不能同步书签。一个折衷方案就是chrome，更新较快，lion出来没多久就支持全屏工作了。</p>
<p>开发工具我试过很多，textmate和coda被普遍认为是mac平台的最优秀的开发工具，但是比较昂贵，很多人都选择团购。由于我是从linux平台迁移过来的，自然选择了macVim，免费功能强大插件多，用来做一般的编辑足够用了。另外配备一个强大的IDE就是netbeans，使用最多的就是它了。</p>
<p>文档方面就是iwork了，微软那个office for mac我没有用，速度太慢了，虽然兼容性最好，但是想起来那龟速我就放弃了。实在遇到兼容性问题，就往parallel desktop里面一扔，用office 2011直接处理。现在的parallel desktop性能好了很多，又跟lion很好的结合，可以无缝切换，全屏工作，很是方便。</p>
<p>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服务直接发布，这篇博文就是用它来写的。</p>
<p>都说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文件。</p>
<p>有了以上的工具，加上习惯mac的触摸板和手势动作，可以轻松的提升工作效率。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.terrysco.com/node/mac-osx-software.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>用yii框架开发web应用</title>
		<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>
		<comments>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#comments</comments>
		<pubDate>Fri, 08 Jul 2011 13:24:04 +0000</pubDate>
		<dc:creator>terrysco</dc:creator>
				<category><![CDATA[CMS/FrameWork]]></category>
		<category><![CDATA[yii]]></category>

		<guid isPermaLink="false">http://www.terrysco.com/?p=432</guid>
		<description><![CDATA[好久没写博客了，都是在微博中堕落了，加上最近特别忙，入手了一台MBP。更换了工作平台，准备看些新的适合web2.0的高性能纯面向对象框架，yii就是我想要的了。 官方文档比较齐全，有多语言在线文档和两本pdf书籍以及一个用yii搭建blog程序的向导。学习曲线不算曲折，很快就上手用它来写东西。特性一大堆，刚开始不可能熟悉所有的，只是看了数据库和用户验证以及表单部分，一般的web应用就能应付了。至于怎么让yii更好的为你工作，完全深入它的很多机制只能在接下来的时间中慢慢熟悉。对于从别的mvc模式的框架转移到yii，几乎不用花费太多时间。有两个图看明白了概念也就清晰了，一个是路由处理的流程图，一个是mvc加上组件以及其他附属品的结构图。 繁忙的生活让我最近颓废了好多，以前2个星期一本书的习惯已经荒废了半年了，打算10-1后振作下，坚持下去这个习惯。近期打算翻译一些网络安全书籍，给drupal社区提交一些开源模块，尝试一些新鲜的东西。]]></description>
			<content:encoded><![CDATA[<p>好久没写博客了，都是在微博中堕落了，加上最近特别忙，入手了一台MBP。更换了工作平台，准备看些新的适合web2.0的高性能纯面向对象框架，yii就是我想要的了。</p>
<p>官方文档比较齐全，有多语言在线文档和两本pdf书籍以及一个用yii搭建blog程序的向导。学习曲线不算曲折，很快就上手用它来写东西。特性一大堆，刚开始不可能熟悉所有的，只是看了数据库和用户验证以及表单部分，一般的web应用就能应付了。至于怎么让yii更好的为你工作，完全深入它的很多机制只能在接下来的时间中慢慢熟悉。对于从别的mvc模式的框架转移到yii，几乎不用花费太多时间。有两个图看明白了概念也就清晰了，一个是路由处理的流程图，一个是mvc加上组件以及其他附属品的结构图。</p>
<p>繁忙的生活让我最近颓废了好多，以前2个星期一本书的习惯已经荒废了半年了，打算10-1后振作下，坚持下去这个习惯。近期打算翻译一些网络安全书籍，给drupal社区提交一些开源模块，尝试一些新鲜的东西。</p>
]]></content:encoded>
			<wfw:commentRss>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/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>利用Dropbox和ZIM打造云存储笔记</title>
		<link>http://www.terrysco.com/node/dropbox-zim-cloud-storage.html</link>
		<comments>http://www.terrysco.com/node/dropbox-zim-cloud-storage.html#comments</comments>
		<pubDate>Wed, 13 Apr 2011 06:30:32 +0000</pubDate>
		<dc:creator>terrysco</dc:creator>
				<category><![CDATA[Linux/Mac/DB]]></category>
		<category><![CDATA[dropbox]]></category>

		<guid isPermaLink="false">http://www.terrysco.com/?p=428</guid>
		<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>
			<content:encoded><![CDATA[<p>随着Dropbox的解封，我忽然想到很多软件借助dropbox都可以实现将配置文件云存储，分享给大家。</p>
<p>其实Linux上可以用来做笔记的有很多，比如notecase，zim和evernote的Linux平台前端Nevernote，另外还有基于mono的tomboy以及用C++改写的gnote，但我感觉最好用，最方便，高效而且够用的就是zim。就像zim描述的那样，桌面WIKI。</p>
<p>但是zim只是单机版本的，我们很容易借助Dropbox将笔记目录丢到Dropbox的同步目录下，比如我这里：</p>
<p>/home/terrysco/Dropbox/Notes，这样每次添加了笔记Dropbox就会自动同步。就算以后重新安装了系统，不小心删除了zim，只要将zim的主目录指向Dropbox下的Notes即可，轻松实现了个人笔记的云存储。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.terrysco.com/node/dropbox-zim-cloud-storage.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>调整eclipse在Archlinux上的显示</title>
		<link>http://www.terrysco.com/node/eclipse-gtk-apperence.html</link>
		<comments>http://www.terrysco.com/node/eclipse-gtk-apperence.html#comments</comments>
		<pubDate>Sat, 05 Feb 2011 19:31:25 +0000</pubDate>
		<dc:creator>terrysco</dc:creator>
				<category><![CDATA[Linux/Mac/DB]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://www.terrysco.com/?p=424</guid>
		<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>
			<content:encoded><![CDATA[<p>eclipse在linux平台上的显示真是让人纠结，浪费空间不说，左边的项目树和大纲方法列表太松散了。既然我当时在eclipse官方下载的GTK版本，可以对其进行单独定制显示。</p>
<p>首先，创建一个自定义的gtkrc文件/home/terrysco/.gtkrc-eclipse，写入：</p>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">style “eclipse” {</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">font_name = “DejaVu 8&#8243;</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">}</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">class “GtkWidget” style “eclipse”</div>
<p>style “eclipse” {</p>
<p>font_name = “DejaVu 8&#8243;</p>
<p>}</p>
<p>class “GtkWidget” style “eclipse”</p>
<p>其中字体的名字和大小可以根据自己喜好进行设置。完成后在桌面上创建一个程序启动器，在其命令那里写入：</p>
<p>env GTK2_RC_FILES=/usr/share/themes/Clearlooks/gtk-2.0/gtkrc:/home/terrysco/.gtkrc-eclipse &#8216;/home/terrysco/Applications/eclipse/eclipse&#8217;</p>
<p>后面的路径根据自己eclipse实际情况来指定。重启eclipse，舒服多了。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.terrysco.com/node/eclipse-gtk-apperence.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Gnome环境下几个不错的软件</title>
		<link>http://www.terrysco.com/node/gnome-soft-recommend.html</link>
		<comments>http://www.terrysco.com/node/gnome-soft-recommend.html#comments</comments>
		<pubDate>Sat, 29 Jan 2011 02:38:41 +0000</pubDate>
		<dc:creator>terrysco</dc:creator>
				<category><![CDATA[Linux/Mac/DB]]></category>
		<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://www.terrysco.com/?p=421</guid>
		<description><![CDATA[Drivel 离线博客客户端，虽然不如KDE下的blogilo好用，但是也算是简单实用了，这篇博客就是使用Drivel发布的。 Zim 一款笔记软件，Tomboy的依赖太多，还是习惯了这种有层次结构的笔记软件，用Perl编写的。 GoldenDict 比星际译王好用多了，而且支持星际译王和babylon的字典，加上根据搜索关键字自定义网络辞典。 Gitg 作为git的图形前端相当方便 Remmina 使用他来管理ssh和rdp服务器太方便了，可以保存连接windows机器的远程桌面密码。Archlinux源里面有remmina-plugins支持rdp连接。]]></description>
			<content:encoded><![CDATA[<p>Drivel 离线博客客户端，虽然不如KDE下的blogilo好用，但是也算是简单实用了，这篇博客就是使用Drivel发布的。</p>
<p>Zim 一款笔记软件，Tomboy的依赖太多，还是习惯了这种有层次结构的笔记软件，用Perl编写的。</p>
<p>GoldenDict 比星际译王好用多了，而且支持星际译王和babylon的字典，加上根据搜索关键字自定义网络辞典。</p>
<p>Gitg 作为git的图形前端相当方便</p>
<p>Remmina 使用他来管理ssh和rdp服务器太方便了，可以保存连接windows机器的远程桌面密码。Archlinux源里面有remmina-plugins支持rdp连接。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.terrysco.com/node/gnome-soft-recommend.html/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>利用Archlinux构建高可用的开发桌面</title>
		<link>http://www.terrysco.com/node/archlinux-dev-desktop.html</link>
		<comments>http://www.terrysco.com/node/archlinux-dev-desktop.html#comments</comments>
		<pubDate>Wed, 12 Jan 2011 00:04:42 +0000</pubDate>
		<dc:creator>terrysco</dc:creator>
				<category><![CDATA[Linux/Mac/DB]]></category>
		<category><![CDATA[arch]]></category>
		<category><![CDATA[archlinux]]></category>

		<guid isPermaLink="false">http://www.terrysco.com/?p=415</guid>
		<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>
			<content:encoded><![CDATA[<p>都说设计人员更愿意使用Mac，开发人员更愿意使用Linux。自从Ubuntu这个发行版问世和Fedora社区孜孜不倦的研发，Linux的桌面系统仿佛得到了前所未有的发展。</p>
<p>本文是我这几年使用Linux桌面进行工作的一些收获，最大的好处就是很方便的和世界各地的开发者们一起进行网络工作，自由的配置和选择自己喜欢的软件。如有可能，可以使用Linux平台下流行的开发工具python进行开发。自己动手相当有乐趣，除了可以玩弄下别的语言，体会其思想，还可以提高自己的动手能力多好。</p>
<p>首先，如果安装一个archlinux系统这里就不多说了，官方<a href="http://wiki.archlinux.org/">wiki</a>有丰富的文档。我觉得arch比ubuntu最好的地方就是完全自己配置，一次纠结之后就很省心。另外，arch的AUR软件相当的丰富（这点ubuntu用户都流口水了），而ubuntu经常要自己添加一些莫名其妙的源。我们接下来看看如果解决沟通时的文档问题，国外的开发者比较喜欢PDF格式和协同办公系统（B/S结构的较多），但不乏有些人还是要发给你DOC格式的文档，最让人纠结的莫过于此。没办法，libreoffice还是必须要安装的。基于兼容性问题，最好的办法就是安装一个virtualbox虚拟机，其上虚拟一个精简的XP。我这个虚拟机就跑了一个office2010和IE（网银）。什么？用wine？打死我也不装。</p>
<p>现在来看看开发环境，archlinux已经提供了大部分可得的开发工具，Gnome和KDE桌面都有很多选择。（以下以Gnome为例，KDE用户请参考kdesdk包 sudo pacman -Ss kdesdk）<br />
我的很多老外开发朋友都推荐我用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用来快速描绘自己的想法，准备头脑风暴。</p>
<p>沟通工具更是丰富，emesene，skype，gajim，openfetion，xchat，够用了吧？QQ的话就web2吧，那个GTK客户端太纠结了。现在很少会使用到windows环境了，如果很多网银支持别的浏览器了和linux了，我用不着虚拟机了。还等什么？比Mac的低成本，比windows的高可用性，赶紧加入Linux阵营吧。</p>
<p style="text-align: center;"><a href="http://www.terrysco.com/wp-content/uploads/2011/01/arch.jpg"><img class="size-medium wp-image-418 aligncenter" title="arch" src="http://www.terrysco.com/wp-content/uploads/2011/01/arch-300x187.jpg" alt="arch" width="300" height="187" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.terrysco.com/node/archlinux-dev-desktop.html/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Drupal编程总结</title>
		<link>http://www.terrysco.com/node/drupal-programming-summary.html</link>
		<comments>http://www.terrysco.com/node/drupal-programming-summary.html#comments</comments>
		<pubDate>Wed, 22 Dec 2010 10:35:17 +0000</pubDate>
		<dc:creator>terrysco</dc:creator>
				<category><![CDATA[CMS/FrameWork]]></category>
		<category><![CDATA[drupal]]></category>

		<guid isPermaLink="false">http://www.terrysco.com/?p=412</guid>
		<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>
			<content:encoded><![CDATA[<p>从2007年末接触Drupal开始，已经3年时间了。Drupal已经从5.x版本升级到了7.x，模块开发也发生了很多变化。</p>
<p>1. 在查询数据库的时候，考虑到一些特殊情况尽量使用静态变量，这相当于drupal的第一层缓存，在drupal的很多load相关函数中到处可见。比如：</p>
<p>function terrysco_get_group($lgid, $reset = false) {</p>
<p> // 使用静态变量做缓存</p>
<p> static $linkedin = array();</p>
<p> if ($reset) {</p>
<p> $terrysco = array();</p>
<p> }</p>
<p> if (!isset($terrysco[$lgid]) &amp;&amp; is_numeric($lgid)) {</p>
<p> $terrysco[$lgid] = db_fetch_array(db_query(&#8216;SELECT * FROM {linkedin_groups} WHERE lgid = %d&#8217;, $lgid));</p>
<p> }</p>
<p> return isset($terrysco[$lgid]) ? $terrysco[$lgid] : false;</p>
<p>}</p>
<p>这样，在要处理一个大的结果集的时候，在循环中调用该函数，就不会每次循环都查询数据库了。</p>
<p>2. 深入理解drupal的hook机制，用好module_invoke_all来设计你的模块机制，大大增强扩展性。其他方面，多想想怎么和别的模块工作的更好，不要进行hack的工作，要给别的模块留下更改你输出主题，更改你返回数据的机会。</p>
<p>3. 多使用表单给用户进行参数配置，将这些配置用variable_set存起来随时使用，生成配置表单的时候可以使用system_settings_form()将表单数组包装起来，省去了写提交函数的部分。另外，将一些数据分析后可以适当存储在session或者cookie中，不一定非要写数据库。</p>
<p>4. 不要过于依赖node机制。node给我们提供了很多方便，很多第三方模块装上后就能很好的工作，比如fivestar，views之类的东西，但也要考虑实际项目需要。很多小的数据如果量很大，不建议放在node表中。而且node表以nid作为auto_increment的primary key，给我们日后做扩展留下了很多麻烦。</p>
<p>5. 不要过于依赖第三方模块。第三方模块的一个共同点就是功能强大，代码质量还算不错，但是正因为如此，模块开发者考虑到的是通用性，一个大的模块可能很多功能我们使用不了，这时候就不要偷懒了，自己动手吧。而且很多第三方模块是有问题的，自己细心研究下就能发现很多。</p>
<p>6. Drupal本身支持快速切换数据库，这就使得我们可以在开始的时候就做好设计，看看是否将某些业务分离。当然，如果是中小型的项目就不用了。</p>
</p>
<p>未完待续。。。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.terrysco.com/node/drupal-programming-summary.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Linux下游戏推荐</title>
		<link>http://www.terrysco.com/node/linux-games.html</link>
		<comments>http://www.terrysco.com/node/linux-games.html#comments</comments>
		<pubDate>Fri, 05 Nov 2010 15:23:42 +0000</pubDate>
		<dc:creator>terrysco</dc:creator>
				<category><![CDATA[Linux/Mac/DB]]></category>
		<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://www.terrysco.com/?p=403</guid>
		<description><![CDATA[最近收集了几个Linux下不错的游戏，分享给大家。 首先MAME模拟器，跨平台的就不用说了，以前本人blog也写了几篇。 SDLMAME的家用机模式 sdlmame设置 xmame热键设置（宏定义） 另外，源里面也有几个不错的游戏。 Bos wars 类似帝国时代的游戏，目前还在探索阶段。 supertuxkart 很有意思的一个赛车游戏，主角就是Linux的吉祥物企鹅大哥，具体玩法有帮助选项。 wormux 很像以前的疯狂坦克和百战天虫 未完待续。。。]]></description>
			<content:encoded><![CDATA[<p>最近收集了几个Linux下不错的游戏，分享给大家。</p>
<p>首先MAME模拟器，跨平台的就不用说了，以前本人blog也写了几篇。<br />
<a href="http://www.terrysco.com/node/sdlmame-cheat.html">SDLMAME的家用机模式</a><br />
<a href="http://www.terrysco.com/node/sdlmame.html">sdlmame设置</a><br />
<a href="http://www.terrysco.com/node/xmame-keys.html">xmame热键设置（宏定义）</a></p>
<p>另外，源里面也有几个不错的游戏。</p>
<ul>
<li>Bos wars 类似帝国时代的游戏，目前还在探索阶段。</li>
<li>supertuxkart 很有意思的一个赛车游戏，主角就是Linux的吉祥物企鹅大哥，具体玩法有帮助选项。</li>
<li>wormux 很像以前的疯狂坦克和百战天虫</li>
</ul>
<p>未完待续。。。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.terrysco.com/node/linux-games.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>解决archlinux上android环境的搭建问题</title>
		<link>http://www.terrysco.com/node/archlinux-android-rebuild.html</link>
		<comments>http://www.terrysco.com/node/archlinux-android-rebuild.html#comments</comments>
		<pubDate>Mon, 18 Oct 2010 16:36:58 +0000</pubDate>
		<dc:creator>terrysco</dc:creator>
				<category><![CDATA[Mobile Platform]]></category>
		<category><![CDATA[eclipse]]></category>

		<guid isPermaLink="false">http://www.terrysco.com/?p=388</guid>
		<description><![CDATA[不知道从什么时候开始，AUR源里面的eclipse-android包装不上了，也就是ADT。google了很多解决办法，一一试过了还是不行，而且现在的这个包依赖了eclipse-classic，很郁闷这种频繁的包更新方式。解决办法如下： 首先把自己的帐号加入到eclipse组中。比如： sudo gpasswd -a terrysco eclipse 然后安装eclipse-android这个包的时候编辑PKGBUILD，把eclipse-classic这个依赖去掉。使用我们之前安装的eclipse这个包即可。没问题了，所有安装顺利，创建项目测试了下通过。]]></description>
			<content:encoded><![CDATA[<p>不知道从什么时候开始，AUR源里面的eclipse-android包装不上了，也就是ADT。google了很多解决办法，一一试过了还是不行，而且现在的这个包依赖了eclipse-classic，很郁闷这种频繁的包更新方式。解决办法如下：</p>
<p>首先把自己的帐号加入到eclipse组中。比如：</p>
<p>sudo gpasswd -a terrysco eclipse</p>
<p>然后安装eclipse-android这个包的时候编辑PKGBUILD，把eclipse-classic这个依赖去掉。使用我们之前安装的eclipse这个包即可。没问题了，所有安装顺利，创建项目测试了下通过。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.terrysco.com/node/archlinux-android-rebuild.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

