<?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>Live in code</title>
	<atom:link href="http://www.agatezone.cn/code/feed" rel="self" type="application/rss+xml" />
	<link>http://www.agatezone.cn/code</link>
	<description>agate&#039;s tech blog</description>
	<lastBuildDate>Tue, 20 Jul 2010 05:35:32 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>正则表达式测试工具</title>
		<link>http://www.agatezone.cn/code/archives/688</link>
		<comments>http://www.agatezone.cn/code/archives/688#comments</comments>
		<pubDate>Tue, 20 Jul 2010 05:35:32 +0000</pubDate>
		<dc:creator>agate</dc:creator>
				<category><![CDATA[软件使用]]></category>
		<category><![CDATA[regexp]]></category>

		<guid isPermaLink="false">http://www.agatezone.cn/code/?p=688</guid>
		<description><![CDATA[日常编码工作总会碰到与正则打交道的时候. 简单的我们可以信手捏来, 但是复杂点的我们可能就需要慢慢调试了. 这时候如果有一个称手的测试工具那么会轻松很多.
这里记录一些比较不错的正则测试工具:
1. 最为推荐的强大软件 (但是 windows only)
http://www.regexbuddy.com/
2. 一个 web 的测试软件, 各个平台兼容, 只要有浏览器:
http://rubular.com/
3. 插件 firefox 和 chrome 的:
https://addons.mozilla.org/en-US/firefox/addon/2077/
https://chrome.google.com/extensions/detail/pgnkpcgniljiolidjmodgfljeomjjiha
]]></description>
			<content:encoded><![CDATA[<p>日常编码工作总会碰到与正则打交道的时候. 简单的我们可以信手捏来, 但是复杂点的我们可能就需要慢慢调试了. 这时候如果有一个称手的测试工具那么会轻松很多.</p>
<p>这里记录一些比较不错的正则测试工具:<br />
1. 最为推荐的强大软件 (但是 windows only)<br />
<a href="http://www.regexbuddy.com/" onclick="pageTracker._trackPageview('/outgoing/www.regexbuddy.com/?referer=');">http://www.regexbuddy.com/</a></p>
<p>2. 一个 web 的测试软件, 各个平台兼容, 只要有浏览器:<br />
<a href="http://rubular.com/" onclick="pageTracker._trackPageview('/outgoing/rubular.com/?referer=');">http://rubular.com/</a></p>
<p>3. 插件 firefox 和 chrome 的:<br />
<a href="https://addons.mozilla.org/en-US/firefox/addon/2077/" onclick="pageTracker._trackPageview('/outgoing/addons.mozilla.org/en-US/firefox/addon/2077/?referer=');">https://addons.mozilla.org/en-US/firefox/addon/2077/</a><br />
<a href="https://chrome.google.com/extensions/detail/pgnkpcgniljiolidjmodgfljeomjjiha" onclick="pageTracker._trackPageview('/outgoing/chrome.google.com/extensions/detail/pgnkpcgniljiolidjmodgfljeomjjiha?referer=');">https://chrome.google.com/extensions/detail/pgnkpcgniljiolidjmodgfljeomjjiha</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.agatezone.cn/code/archives/688/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Git 仓库的建立方式</title>
		<link>http://www.agatezone.cn/code/archives/682</link>
		<comments>http://www.agatezone.cn/code/archives/682#comments</comments>
		<pubDate>Thu, 08 Jul 2010 06:05:06 +0000</pubDate>
		<dc:creator>agate</dc:creator>
				<category><![CDATA[软件使用]]></category>
		<category><![CDATA[git]]></category>

		<guid isPermaLink="false">http://www.agatezone.cn/code/?p=682</guid>
		<description><![CDATA[1. 新建
$ mkdir {仓库的目录名}
$ cd {仓库的目录名}
$ git init --bare
2. 从已有的 git 工作仓库中导出
$ git clone --bare {git版本控制下的项目目录} {目标仓库目录名}
注释: --bare 这个参数的原意是 "裸体", 在这里呢其实就是说原来我们 git 的仓库目录都是放在项目目录下的 .git 文件夹下, 有这么一个容身之处, 所以是有衣服包裹的非裸状态. 但是我们的仓库内容其实就是整个 .git 文件夹的内容. 所以没有独立的文件夹包裹, 故名 "裸体".
]]></description>
			<content:encoded><![CDATA[<p>1. 新建<br />
<code>$ mkdir {仓库的目录名}<br />
$ cd {仓库的目录名}<br />
$ git init --bare</code></p>
<p>2. 从已有的 git 工作仓库中导出<br />
<code>$ git clone --bare {git版本控制下的项目目录} {目标仓库目录名}</code></p>
<p>注释: --bare 这个参数的原意是 "裸体", 在这里呢其实就是说原来我们 git 的仓库目录都是放在项目目录下的 .git 文件夹下, 有这么一个容身之处, 所以是有衣服包裹的非裸状态. 但是我们的仓库内容其实就是整个 .git 文件夹的内容. 所以没有独立的文件夹包裹, 故名 "裸体".</p>
]]></content:encoded>
			<wfw:commentRss>http://www.agatezone.cn/code/archives/682/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>架设 Git 服务器 -- gitosis 方式</title>
		<link>http://www.agatezone.cn/code/archives/671</link>
		<comments>http://www.agatezone.cn/code/archives/671#comments</comments>
		<pubDate>Tue, 06 Jul 2010 09:03:02 +0000</pubDate>
		<dc:creator>agate</dc:creator>
				<category><![CDATA[开发环境]]></category>
		<category><![CDATA[系统操作]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[gitosis]]></category>

		<guid isPermaLink="false">http://www.agatezone.cn/code/?p=671</guid>
		<description><![CDATA[参考: http://progit.org/book/zh/ch4-0.html
1. 安装 git
2. 安装 gitosis
$ git clone git://eagain.net/gitosis.git
$ sudo apt-get install python-setuptools
$ cd gitosis
$ sudo python setup.py install
3. 创建 git 用户
$ sudo adduser \
--system \
--shell /bin/sh \
--gecos 'git version control' \
--group \
--disabled-password \
--home /home/git \
git
4. 初始化 gitosis
使用 ssh-keygen 来建立 ssh 公钥(如果你已经有了就不必了)
$ ssh-keygen
然后
$ sudo cp ~/.ssh/id_rsa.pub /tmp/
$ sudo -H -u git gitosis-init < /tmp/id_rsa.pub
$ sudo [...]]]></description>
			<content:encoded><![CDATA[<p>参考: <a href="http://progit.org/book/zh/ch4-0.html" onclick="pageTracker._trackPageview('/outgoing/progit.org/book/zh/ch4-0.html?referer=');">http://progit.org/book/zh/ch4-0.html</a></p>
<p>1. 安装 git</p>
<p>2. 安装 gitosis<br />
<code>$ git clone git://eagain.net/gitosis.git<br />
$ sudo apt-get install python-setuptools<br />
$ cd gitosis<br />
$ sudo python setup.py install</code></p>
<p>3. 创建 git 用户<br />
<code>$ sudo adduser \<br />
--system \<br />
--shell /bin/sh \<br />
--gecos 'git version control' \<br />
--group \<br />
--disabled-password \<br />
--home /home/git \<br />
git</code></p>
<p>4. 初始化 gitosis<br />
使用 ssh-keygen 来建立 ssh 公钥(如果你已经有了就不必了)<br />
<code>$ ssh-keygen</code><br />
然后<br />
<code>$ sudo cp ~/.ssh/id_rsa.pub /tmp/<br />
$ sudo -H -u git gitosis-init < /tmp/id_rsa.pub<br />
$ sudo chmod 755 /home/git/repositories/gitosis-admin.git/hooks/post-update</code></p>
<p>5. 配置 gitosis<br />
</code><code>$ cd<br />
$ git clone git@localhost:gitosis-admin.git<br />
$ cd gitosis-admin</code></p>
<p>5.1. 编辑 gitosis.conf 文件, 格式如下</p>
<blockquote><p>[group {repository-name}]<br />
writable = {dir-name}<br />
members =  {user1} {user2}</p></blockquote>
<p>5.2. 添加 user1.pub 和 user2.pub 到 keydir 目录下<br />
5.3. 提交你的修改和添加的 pub 文件<br />
<code>$ git commit -a -m "message"<br />
$ git push</code><br />
5.4. 这样 user1 和 user2 就可以通过 git 操作那个 {repository-name} 了, 例如:<br />
<code>$ git clone git@your_server_ip:{repository-name}.git</code></p>
<p>总结:<br />
gitosis 不用让用户把自己的 ssh 公钥贴到 ~/.ssh/authorized_keys 中, 转而交给自己 gitosis-admin 中的 keydir 目录管理, 相当巧妙.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.agatezone.cn/code/archives/671/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>强大的 sed 和 awk</title>
		<link>http://www.agatezone.cn/code/archives/667</link>
		<comments>http://www.agatezone.cn/code/archives/667#comments</comments>
		<pubDate>Fri, 25 Jun 2010 08:11:52 +0000</pubDate>
		<dc:creator>agate</dc:creator>
				<category><![CDATA[未分类]]></category>

		<guid isPermaLink="false">http://www.agatezone.cn/code/?p=667</guid>
		<description><![CDATA[在强大的 unix 国度里, 终于体会到了文本流的不可思议力量. 滚他妈的 api, 文本全部由我掌控. 当然 sed 和 awk 起到了强力胶的作用!
学习文章可以参考 IBM DeveloperWorks:
awk:
http://www.ibm.com/developerworks/cn/linux/shell/awk/awk-1/
http://www.ibm.com/developerworks/cn/linux/shell/awk/awk-2/
http://www.ibm.com/developerworks/cn/linux/shell/awk/awk-3/
sed:
http://www.ibm.com/developerworks/cn/linux/shell/sed/sed-1/
http://www.ibm.com/developerworks/cn/linux/shell/sed/sed-2/
http://www.ibm.com/developerworks/cn/linux/shell/sed/sed-3/
]]></description>
			<content:encoded><![CDATA[<p>在强大的 unix 国度里, 终于体会到了文本流的不可思议力量. 滚他妈的 api, 文本全部由我掌控. 当然 sed 和 awk 起到了强力胶的作用!</p>
<p>学习文章可以参考 IBM DeveloperWorks:</p>
<p>awk:<br />
<a href="http://www.ibm.com/developerworks/cn/linux/shell/awk/awk-1/" onclick="pageTracker._trackPageview('/outgoing/www.ibm.com/developerworks/cn/linux/shell/awk/awk-1/?referer=');">http://www.ibm.com/developerworks/cn/linux/shell/awk/awk-1/</a><br />
<a href="http://www.ibm.com/developerworks/cn/linux/shell/awk/awk-2/" onclick="pageTracker._trackPageview('/outgoing/www.ibm.com/developerworks/cn/linux/shell/awk/awk-2/?referer=');">http://www.ibm.com/developerworks/cn/linux/shell/awk/awk-2/</a><br />
<a href="http://www.ibm.com/developerworks/cn/linux/shell/awk/awk-3/" onclick="pageTracker._trackPageview('/outgoing/www.ibm.com/developerworks/cn/linux/shell/awk/awk-3/?referer=');">http://www.ibm.com/developerworks/cn/linux/shell/awk/awk-3/</a></p>
<p>sed:<br />
<a href="http://www.ibm.com/developerworks/cn/linux/shell/sed/sed-1/" onclick="pageTracker._trackPageview('/outgoing/www.ibm.com/developerworks/cn/linux/shell/sed/sed-1/?referer=');">http://www.ibm.com/developerworks/cn/linux/shell/sed/sed-1/</a><br />
<a href="http://www.ibm.com/developerworks/cn/linux/shell/sed/sed-2/" onclick="pageTracker._trackPageview('/outgoing/www.ibm.com/developerworks/cn/linux/shell/sed/sed-2/?referer=');">http://www.ibm.com/developerworks/cn/linux/shell/sed/sed-2/</a><br />
<a href="http://www.ibm.com/developerworks/cn/linux/shell/sed/sed-3/" onclick="pageTracker._trackPageview('/outgoing/www.ibm.com/developerworks/cn/linux/shell/sed/sed-3/?referer=');">http://www.ibm.com/developerworks/cn/linux/shell/sed/sed-3/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.agatezone.cn/code/archives/667/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Shell 进程前台与后台转换方法</title>
		<link>http://www.agatezone.cn/code/archives/654</link>
		<comments>http://www.agatezone.cn/code/archives/654#comments</comments>
		<pubDate>Wed, 26 May 2010 06:05:31 +0000</pubDate>
		<dc:creator>agate</dc:creator>
				<category><![CDATA[系统操作]]></category>
		<category><![CDATA[shell]]></category>

		<guid isPermaLink="false">http://www.agatezone.cn/code/?p=654</guid>
		<description><![CDATA[进程前台与后台转换需要用到以下几个命令:
1. &#038;
我们最常用到的就是这个命令了. 用法就是放在一个命令的最后, 可以把这个命令放到后台去执行. 大概用法如下:

$ tail -f log/* &#38;
[1] 21867
# 这里 [1] 代表它是后台运行的一个 job 编号为 1
# 这里 21867 是它的进程号

2. ctrl + z
这也是常用到的快捷键. 用于将当前正在执行的前台进程放到后台, 并且暂停. 用法大致如下:

$ vi
# 按下 ctrl + z
[2]+  Stopped                 vi
# 这里 [2] 代表它是后台运行的一个 job 编号为 2
# [...]]]></description>
			<content:encoded><![CDATA[<p>进程前台与后台转换需要用到以下几个命令:</p>
<p><strong>1. &#038;</strong><br />
我们最常用到的就是这个命令了. 用法就是放在一个命令的最后, 可以把这个命令放到后台去执行. 大概用法如下:</p>
<pre class="brush: bash;">
$ tail -f log/* &amp;
[1] 21867
# 这里 [1] 代表它是后台运行的一个 job 编号为 1
# 这里 21867 是它的进程号
</pre>
<p><strong>2. ctrl + z</strong><br />
这也是常用到的快捷键. 用于将当前正在执行的前台进程放到后台, 并且暂停. 用法大致如下:</p>
<pre class="brush: bash;">
$ vi
# 按下 ctrl + z
[2]+  Stopped                 vi
# 这里 [2] 代表它是后台运行的一个 job 编号为 2
# 这里 + 代表他是最近一个被放到后台的进程, 如果直接输入 fg 就是恢复这个进程.
# 这里 Stopped 说明它被停止了也就是 ctrl + z 的第二个作用 --  暂停
# 这里 vi 就是进程名
</pre>
<p><strong>3. jobs</strong><br />
查看当前后台运行的进程, 以 <em>"[作业号][-/+]    运行状态    作业名称"</em> 输出结果类似:</p>
<pre class="brush: bash;">
$ jobs
[1]-  Running                 tail -f log/* &amp;
[2]+  Stopped                 vi
</pre>
<p><strong>2. fg</strong><br />
用于恢复后台进程到前台. 具体用法如下:</p>
<pre class="brush: bash;">
$ fg
# 将恢复 vi (还记得么 vi job 有一个加号, 它代表它是最近一次被放到后台的进程)
# 说明跟参数直接输入 fg 是恢复最近一次放入后台的进程到前台
# ctrl + z
[2]+  Stopped                 vi
$ fg 1
# 将恢复 tail
# ctrl + z
[1]+  Stopped                 tail -f log/*
$ jobs
[1]-  Stopped                 tail -f log/*
[2]+  Stopped                 vi
# 再次注意 tail 变成了 Stopped, 并且没有 &amp; 在句尾了
</pre>
<p><strong>3. bg</strong><br />
用户把后台 stopped 的进程唤醒, 并且继续在后台运行. 具体用法如下:</p>
<pre class="brush: bash;">
$ bg 1
[1]+ tail -f log/* &amp;
$ jobs
[1]-  Running                 tail -f log/* &amp;
[2]+  Stopped                 vi
# 当然 bg 也可以不跟参数就是唤醒最近放入后台的那个 stopped 进程(就是有 + 的那个)
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.agatezone.cn/code/archives/654/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>VirtualBox 命令备忘</title>
		<link>http://www.agatezone.cn/code/archives/650</link>
		<comments>http://www.agatezone.cn/code/archives/650#comments</comments>
		<pubDate>Wed, 19 May 2010 02:37:47 +0000</pubDate>
		<dc:creator>agate</dc:creator>
				<category><![CDATA[软件使用]]></category>
		<category><![CDATA[virtualbox]]></category>

		<guid isPermaLink="false">http://www.agatezone.cn/code/?p=650</guid>
		<description><![CDATA[VirtualBox 是一个很不错的虚拟机. 它提供了很多命令行的工具帮助我们管理和使用虚拟机. 这里写一个备忘记录用过的命令:
VBoxHeadless
1. 后台启动虚拟机
$ VBoxHeadless -s [server_name] -v off
VBoxManage
1. 查看虚拟机的参数
$ VBoxManage guestproperty enumerate [server_name]
[updating...]
]]></description>
			<content:encoded><![CDATA[<p>VirtualBox 是一个很不错的虚拟机. 它提供了很多命令行的工具帮助我们管理和使用虚拟机. 这里写一个备忘记录用过的命令:</p>
<p><strong>VBoxHeadless</strong><br />
1. 后台启动虚拟机<br />
$ VBoxHeadless -s [server_name] -v off</p>
<p><strong>VBoxManage</strong><br />
1. 查看虚拟机的参数<br />
$ VBoxManage guestproperty enumerate [server_name]</p>
<p>[updating...]</p>
]]></content:encoded>
			<wfw:commentRss>http://www.agatezone.cn/code/archives/650/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ubuntu 在 virtualbox 中的网络及共享设置</title>
		<link>http://www.agatezone.cn/code/archives/632</link>
		<comments>http://www.agatezone.cn/code/archives/632#comments</comments>
		<pubDate>Sat, 01 May 2010 14:49:20 +0000</pubDate>
		<dc:creator>agate</dc:creator>
				<category><![CDATA[开发环境]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[virtualbox]]></category>

		<guid isPermaLink="false">http://www.agatezone.cn/code/?p=632</guid>
		<description><![CDATA[现在一直使用的是 windows 7 加上 ubuntu server 的系统配置. 这里记录一下一些安装配置的细节:
1. 安装 Guest Additions
先在菜单中选择安装 Guest Additions
$ sudo apt-get install dkms
$ cd /cdrom
$ sudo ./VBoxLinuxAdditions-amd64.run
2. 关机并且设置 nat 端口映射
打开 cmd 并且进入 virtualbox 的安装目录
PATH&#62; VBoxManage setextradata "[你的虚拟机名字]" "VBoxInternal/Devices/[e1000]/0/LUN#0/Config/[自己定义名字(根据需要比如ssh/http)]/Protocol" [TCP 或者 UDP]
PATH&#62; VBoxManage setextradata "[你的虚拟机名字]" "VBoxInternal/Devices/[e1000]/0/LUN#0/Config/[自己定义名字(根据需要比如ssh/http)]/GuestPort" [端口号]
PATH&#62; VBoxManage setextradata "[你的虚拟机名字]" "VBoxInternal/Devices/[e1000]/0/LUN#0/Config/[自己定义名字(根据需要比如ssh/http)]/HostPort" [端口号]
(如果你使用 PCNet 网卡, 就把 e1000 改成 pcnet. e1000 适用于 Intel PRO/1000 [...]]]></description>
			<content:encoded><![CDATA[<p>现在一直使用的是 windows 7 加上 ubuntu server 的系统配置. 这里记录一下一些安装配置的细节:</p>
<p><strong>1. 安装 Guest Additions</strong><br />
先在菜单中选择安装 Guest Additions<br />
<code>$ sudo apt-get install dkms<br />
$ cd /cdrom<br />
$ sudo ./VBoxLinuxAdditions-amd64.run</code></p>
<p><strong>2. 关机并且设置 nat 端口映射</strong><br />
打开 cmd 并且进入 virtualbox 的安装目录<br />
<code>PATH&gt; VBoxManage setextradata "<span style="color: blue;">[你的虚拟机名字]</span>" "VBoxInternal/Devices/<span style="color: blue;">[e1000]</span>/0/LUN#0/Config/<span style="color: blue;">[自己定义名字(根据需要比如ssh/http)]</span>/Protocol" <span style="color: blue;">[TCP 或者 UDP]</span><br />
PATH&gt; VBoxManage setextradata "<span style="color: blue;">[你的虚拟机名字]</span>" "VBoxInternal/Devices/<span style="color: blue;">[e1000]</span>/0/LUN#0/Config/<span style="color: blue;">[自己定义名字(根据需要比如ssh/http)]</span>/GuestPort" <span style="color: blue;">[端口号]</span><br />
PATH&gt; VBoxManage setextradata "<span style="color: blue;">[你的虚拟机名字]</span>" "VBoxInternal/Devices/<span style="color: blue;">[e1000]</span>/0/LUN#0/Config/<span style="color: blue;">[自己定义名字(根据需要比如ssh/http)]</span>/HostPort" <span style="color: blue;">[端口号]</span></code><br />
(如果你使用 PCNet 网卡, 就把 e1000 改成 pcnet. e1000 适用于 Intel PRO/1000 网卡)<br />
一般来说, 映射 ssh 的 22 端口, http 的 80 端口, 基本就够用了.</p>
<p><strong>3. 设置共享目录</strong><br />
首先在 virtualbox 中设置好共享目录<br />
然后编辑 ubuntu 中的 <span style="color: #808000;">/etc/fstab</span> 并且加入:<br />
<code><span style="color: blue;">[共享目录名]</span> <span style="color: blue;">[ubuntu下的目标目录]</span> vboxsf defaults 0 0</code></p>
<p>virtualbox 提供了很好的文档 <a href="http://www.virtualbox.org/manual/" onclick="pageTracker._trackPageview('/outgoing/www.virtualbox.org/manual/?referer=');">http://www.virtualbox.org/manual/</a></p>
<p><strong>备注: </strong>如果你使用原来的介质但是新建立了一个虚拟机的话, 会发现 ubuntu 找不到网卡了. 解决方法是:<br />
<code>$ sudo rm /etc/udev/rules.d/70-persistent-net.rules<br />
$ sudo reboot</code></p>
]]></content:encoded>
			<wfw:commentRss>http://www.agatezone.cn/code/archives/632/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ubuntu 下开发 Objective C</title>
		<link>http://www.agatezone.cn/code/archives/634</link>
		<comments>http://www.agatezone.cn/code/archives/634#comments</comments>
		<pubDate>Sat, 01 May 2010 12:34:15 +0000</pubDate>
		<dc:creator>agate</dc:creator>
				<category><![CDATA[开发环境]]></category>
		<category><![CDATA[objc]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://www.agatezone.cn/code/?p=634</guid>
		<description><![CDATA[安装如下的包:
$ sudo apt-get install build-essential gnustep gobjc gnustep-make libgnustep-base-dev gnustep-devel
建立一个 alias 在 .bashrc 中:
alias objcc='gcc `gnustep-config --objc-flags` -lgnustep-base'
这样只要:
$ objcc source_file_name
备注:
gnustep-config --objc-flags 用于 gcc 对于 objc 的参数
]]></description>
			<content:encoded><![CDATA[<p>安装如下的包:<br />
<code>$ sudo apt-get install build-essential gnustep gobjc gnustep-make libgnustep-base-dev gnustep-devel</code></p>
<p>建立一个 alias 在 .bashrc 中:<br />
<code>alias objcc='gcc `gnustep-config --objc-flags` -lgnustep-base'</code></p>
<p>这样只要:<br />
<code>$ objcc source_file_name</code></p>
<p>备注:<br />
gnustep-config --objc-flags 用于 gcc 对于 objc 的参数</p>
]]></content:encoded>
			<wfw:commentRss>http://www.agatezone.cn/code/archives/634/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>舒服的系统</title>
		<link>http://www.agatezone.cn/code/archives/616</link>
		<comments>http://www.agatezone.cn/code/archives/616#comments</comments>
		<pubDate>Sun, 11 Apr 2010 02:00:25 +0000</pubDate>
		<dc:creator>agate</dc:creator>
				<category><![CDATA[开发环境]]></category>
		<category><![CDATA[系统操作]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[virtualbox]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://www.agatezone.cn/code/?p=616</guid>
		<description><![CDATA[这几天疲惫于在 ubuntu 和 windows 环境下的来回切换(虽然 ubuntu 已经让我对 linux 的桌面环境刮目相看了, 但是还是有诸多的不便...). 同时也在公司里头使用了多个月的 MAC OS X. 总体还是感觉:
* windows 是让我使用起来最舒服的系统
* linux 是让我开发最舒服的系统
* mac 是让我最赏心悦目的系统.
所以呢, 如果工作我会选择 linux (呵呵我是程序员呀). 如果平时上网生活我还是喜欢 windows (丰富的应用程序). 但是我不会选择 mac (软件没有 windows 多, 问题虽然比 linux 少得多, 但是碰到问题想要找解决方案也比 linux 难得多)
于是我又回到了 windows + linux 的时代. 但是人总是要进步的呀. 过去我老是傻乎乎地装一个 desktop version 的 ubuntu 虚拟机, 然后在虚拟机中操作 ubuntu. 卡得不行不说还浪费内存. 于是想到是不是可以直接只用 linux 的命令行, [...]]]></description>
			<content:encoded><![CDATA[<p>这几天疲惫于在 ubuntu 和 windows 环境下的来回切换(虽然 ubuntu 已经让我对 linux 的桌面环境刮目相看了, 但是还是有诸多的不便...). 同时也在公司里头使用了多个月的 MAC OS X. 总体还是感觉:<br />
* windows 是让我使用起来最舒服的系统<br />
* linux 是让我开发最舒服的系统<br />
* mac 是让我最赏心悦目的系统.</p>
<p>所以呢, 如果工作我会选择 linux (呵呵我是程序员呀). 如果平时上网生活我还是喜欢 windows (丰富的应用程序). 但是我不会选择 mac (软件没有 windows 多, 问题虽然比 linux 少得多, 但是碰到问题想要找解决方案也比 linux 难得多)</p>
<p>于是我又回到了 windows + linux 的时代. 但是人总是要进步的呀. 过去我老是傻乎乎地装一个 desktop version 的 ubuntu 虚拟机, 然后在虚拟机中操作 ubuntu. 卡得不行不说还浪费内存. 于是想到是不是可以直接只用 linux 的命令行, 就想在公司开发那样. 于是我查了一些文档, 找到了一种方式可以不启动图形化的 virtualbox 直接以 daemon 的方式启动的方法, 再装一个 ubuntu server version. 可以减小很多的内存使用. 方法就是在命令行中键入:</p>
<p><code>"c:\Program Files\Sun\VirtualBox\VBoxHeadless.exe" -s SERVER_NAME -v off</code></p>
<p>但是仅仅这样的话你还是会看到一个 cmd 的窗口. 如果你想让它就在背后安静地运行你还可以写一个 VB Script 来放到启动项里让 ubuntu server 跟你的电脑一起启动(linux 和 windows 合二为一咯)</p>
<pre class="brush: vb;">
' 创建一个文件叫做 start_server.vbs 内容如下
CreateObject(&quot;Wscript.Shell&quot;).run &quot;&quot;&quot;C:\Program Files\Sun\VirtualBox\VBoxHeadless.exe&quot;&quot; -s SERVER_NAME -v off&quot;,0
</pre>
<p>当然更重要的是 virtualbox 还可以使用 shared folder 来共享文件.</p>
<p>至少目前这样的系统配置是让我感觉最舒服的, 开着迅雷电驴, 聊着QQ和MSN, 逛着淘宝, 和朋友视频, 想到点子了就开上 PuTTY 开发一下看看效果. 反正我一直是觉得程序员的生活是离不开写程序的即便是在最舒服的家里. 突然摆脱了系统的切换, 好惬意 :)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.agatezone.cn/code/archives/616/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>我使用的 VIM 插件</title>
		<link>http://www.agatezone.cn/code/archives/615</link>
		<comments>http://www.agatezone.cn/code/archives/615#comments</comments>
		<pubDate>Sat, 10 Apr 2010 14:07:45 +0000</pubDate>
		<dc:creator>agate</dc:creator>
				<category><![CDATA[软件使用]]></category>
		<category><![CDATA[vim]]></category>

		<guid isPermaLink="false">http://www.agatezone.cn/code/?p=615</guid>
		<description><![CDATA[AlignPlugin
-- http://www.vim.org/scripts/script.php?script_id=294
FuzzyFinderTextmate
-- http://github.com/sethbc/fuzzyfinder_textmate(已用 CommandT 替代)
CommandT
http://www.vim.org/scripts/script.php?script_id=3025
Grep
-- http://www.vim.org/scripts/script.php?script_id=311
NERD_commenter
-- http://github.com/scrooloose/nerdcommenter
NERD_tree
-- http://github.com/scrooloose/nerdtree
Rails
-- http://github.com/tpope/vim-rails
SnipMate
-- http://github.com/msanders/snipmate.vim
[Updating]
]]></description>
			<content:encoded><![CDATA[<p>AlignPlugin<br />
-- <a href="http://www.vim.org/scripts/script.php?script_id=294" onclick="pageTracker._trackPageview('/outgoing/www.vim.org/scripts/script.php?script_id=294&amp;referer=');">http://www.vim.org/scripts/script.php?script_id=294</a></p>
<p><del datetime="2010-05-15T14:03:23+00:00">FuzzyFinderTextmate<br />
-- <a href="http://github.com/sethbc/fuzzyfinder_textmate" onclick="pageTracker._trackPageview('/outgoing/github.com/sethbc/fuzzyfinder_textmate?referer=');">http://github.com/sethbc/fuzzyfinder_textmate</a></del>(已用 CommandT 替代)<br />
CommandT<br />
<a href="http://www.vim.org/scripts/script.php?script_id=3025" onclick="pageTracker._trackPageview('/outgoing/www.vim.org/scripts/script.php?script_id=3025&amp;referer=');">http://www.vim.org/scripts/script.php?script_id=3025</a></p>
<p>Grep<br />
-- <a href="http://www.vim.org/scripts/script.php?script_id=311" onclick="pageTracker._trackPageview('/outgoing/www.vim.org/scripts/script.php?script_id=311&amp;referer=');">http://www.vim.org/scripts/script.php?script_id=311</a></p>
<p>NERD_commenter<br />
-- <a href="http://github.com/scrooloose/nerdcommenter" onclick="pageTracker._trackPageview('/outgoing/github.com/scrooloose/nerdcommenter?referer=');">http://github.com/scrooloose/nerdcommenter</a></p>
<p>NERD_tree<br />
-- <a href="http://github.com/scrooloose/nerdtree" onclick="pageTracker._trackPageview('/outgoing/github.com/scrooloose/nerdtree?referer=');">http://github.com/scrooloose/nerdtree</a></p>
<p>Rails<br />
-- <a href="http://github.com/tpope/vim-rails" onclick="pageTracker._trackPageview('/outgoing/github.com/tpope/vim-rails?referer=');">http://github.com/tpope/vim-rails</a></p>
<p>SnipMate<br />
-- <a href="http://github.com/msanders/snipmate.vim" onclick="pageTracker._trackPageview('/outgoing/github.com/msanders/snipmate.vim?referer=');">http://github.com/msanders/snipmate.vim</a></p>
<p>[Updating]</p>
]]></content:encoded>
			<wfw:commentRss>http://www.agatezone.cn/code/archives/615/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
