<?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>GuoJing&#039;s Blog &#124; 用心对待每一行代码</title>
	<atom:link href="http://www.jguoer.com/blog/index.php/feed" rel="self" type="application/rss+xml" />
	<link>http://www.jguoer.com/blog</link>
	<description>用心对待每一行代码</description>
	<lastBuildDate>Wed, 01 Sep 2010 10:16:28 +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.jguoer.com/blog/index.php/archives/1274</link>
		<comments>http://www.jguoer.com/blog/index.php/archives/1274#comments</comments>
		<pubDate>Wed, 01 Sep 2010 10:16:28 +0000</pubDate>
		<dc:creator>soundbbg</dc:creator>
				<category><![CDATA[软件开发]]></category>

		<guid isPermaLink="false">http://www.jguoer.com/blog/?p=1274</guid>
		<description><![CDATA[做开源的东西已经一段时间了，从微软阵营转到开源的几个月是非常痛苦的。

曾经一直认为学好了一门语言之后，其他的语言学起来都是相通的，但是现在觉得这句话还是有失偏颇的，因为一门语言背后的是一个社区的风格习惯，这样的风格习惯会导致项目开发产生不同的编码，生产风格，最后导致项目中出现一些问题。

其实，了解这些差异也是很重要的。

当然，选择的路不同，到最后的习惯和方向也会很不同，这也就是前面说的那句话有失偏颇的问题。如果.Net接触多了，你写web service会考虑使用WCF之流，自然也会做出“相应”的社区中认为较好的应用或框架，但是拿到另一个社区可能完完全全就是垃圾，因为信奉的“宗教”不同，自然就会有问题。

当然，世界上还是有一些公理的，如如何写一个好的软件，设计模式等。]]></description>
			<content:encoded><![CDATA[<p>做开源的东西已经一段时间了，从微软阵营转到开源的几个月是非常痛苦的。</p>
<p>曾经一直认为学好了一门语言之后，其他的语言学起来都是相通的，但是现在觉得这句话还是有失偏颇的，因为一门语言背后的是一个社区的风格习惯，这样的风格习惯会导致项目开发产生不同的编码，生产风格，最后导致项目中出现一些问题。</p>
<p>其实，了解这些差异也是很重要的。</p>
<p>当然，选择的路不同，到最后的习惯和方向也会很不同，这也就是前面说的那句话有失偏颇的问题。如果.Net接触多了，你写web service会考虑使用WCF之流，自然也会做出“相应”的社区中认为较好的应用或框架，但是拿到另一个社区可能完完全全就是垃圾，因为信奉的“宗教”不同，自然就会有问题。</p>
<p>当然，世界上还是有一些公理的，如如何写一个好的软件，设计模式等。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jguoer.com/blog/index.php/archives/1274/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>珍惜</title>
		<link>http://www.jguoer.com/blog/index.php/archives/1270</link>
		<comments>http://www.jguoer.com/blog/index.php/archives/1270#comments</comments>
		<pubDate>Sat, 21 Aug 2010 15:18:47 +0000</pubDate>
		<dc:creator>soundbbg</dc:creator>
				<category><![CDATA[倒带人生]]></category>

		<guid isPermaLink="false">http://www.jguoer.com/blog/?p=1270</guid>
		<description><![CDATA[今天一个大学同学给我打了电话，说是他的父亲重病了，他现在已经赶回武汉了，在重病房守候了好几天。

这让我感到有些震惊和难过，这位同学是我大学时候最好的朋友之一，在大学的几年生活中，对我帮助良多，没想到再一次的见面通话说的会是这么现实的事情。下午的时候，另一个好友赶去看望了一下他们家，虽然情况依旧不怎么好，好在病情慢慢的开始好转，还有一些生机。虽然这样，现实还是很残酷很沉重的，据说在急救病房里，短短几天时间就去了2，3个人，在这种时候，一个人，或者说一个堂堂七尺男儿却什么都做不了，不能不说是一件悲哀的事情，也只能祈求上天能够保有自己的家人，望他们渡过难关]]></description>
			<content:encoded><![CDATA[<p>今天一个大学同学给我打了电话，说是他的父亲重病了，他现在已经赶回武汉了，在重病房守候了好几天。</p>
<p>这让我感到有些震惊和难过，这位同学是我大学时候最好的朋友之一，在大学的几年生活中，对我帮助良多，没想到再一次的见面通话说的会是这么现实的事情。下午的时候，另一个好友赶去看望了一下他们家，虽然情况依旧不怎么好，好在病情慢慢的开始好转，还有一些生机。虽然这样，现实还是很残酷很沉重的，据说在急救病房里，短短几天时间就去了2，3个人，在这种时候，一个人，或者说一个堂堂七尺男儿却什么都做不了，不能不说是一件悲哀的事情，也只能祈求上天能够保有自己的家人，望他们渡过难关。</p>
<p>这种悲伤的气氛也感染了我，回想起这几个月诸事不顺，心情也不是很好。忽然也想到和爸爸，奶奶通话的时间几个月来也就几次，感觉有些羞愧，但是平时实在太忙碌，自身都考虑不来，又哪来那么多时间去想其他的事情呢。每天上下班就是几个小时，上班压力大，精神高度集中，回家了人就跨了，什么都干不了，有时候想想在学校读书真好啊，但是我们又不能拒绝这种成长，真是让人感觉心烦气躁。</p>
<p>不过不管如何，人生就是很多坎，有时候觉得自己过不去了，可能就真的过去不了，但是如果心里一直觉得能够跨越过去，无论多么困难，多么艰苦，我相信总有一天还是可以守得云开的。</p>
<p>珍惜当下，活在当下。</p>
<p>愿人们早日脱离苦难。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jguoer.com/blog/index.php/archives/1270/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>用来自勉的</title>
		<link>http://www.jguoer.com/blog/index.php/archives/1268</link>
		<comments>http://www.jguoer.com/blog/index.php/archives/1268#comments</comments>
		<pubDate>Fri, 20 Aug 2010 10:43:18 +0000</pubDate>
		<dc:creator>soundbbg</dc:creator>
				<category><![CDATA[倒带人生]]></category>

		<guid isPermaLink="false">http://www.jguoer.com/blog/?p=1268</guid>
		<description><![CDATA[<strong>很多还做的不够，应该更加深入的贯彻实施，而且不能只知道不做，要养成良好的习惯。</strong>

<strong>态度篇</strong>

1. 做实事

不要抱怨，发牢骚，指责他人，找出问题所在，想办法解决。对问题和错误，要勇于承担。

2. 欲速则不达

用小聪明、权宜之计解决问题，求快而不顾代码质量，会给项目留下要命的死角。

3. 对事不对人

就事论事，明智、真诚、虚心地讨论问题，提出创新方案。

4. 排除万难，奋勇前进

勇气往往是克服困难的唯一方法。]]></description>
			<content:encoded><![CDATA[<p><strong>很多还做的不够，应该更加深入的贯彻实施，而且不能只知道不做，要养成良好的习惯。</strong></p>
<p><strong>态度篇</strong></p>
<p>1. 做实事</p>
<p>不要抱怨，发牢骚，指责他人，找出问题所在，想办法解决。对问题和错误，要勇于承担。</p>
<p>2. 欲速则不达</p>
<p>用小聪明、权宜之计解决问题，求快而不顾代码质量，会给项目留下要命的死角。</p>
<p>3. 对事不对人</p>
<p>就事论事，明智、真诚、虚心地讨论问题，提出创新方案。</p>
<p>4. 排除万难，奋勇前进</p>
<p>勇气往往是克服困难的唯一方法。</p>
<p><strong>学习篇</strong></p>
<p>5. 跟踪变化</p>
<p>新技术层出不穷并不可怕。坚持学习新技术，读书，读技术杂志，参加技术活动，与人交流。要多理解新词背后的所以然，把握技术大趋势，将新技术用于产 品开发要谨慎。</p>
<p>6. 对团队投资</p>
<p>打造学习型团队，不断提高兄弟们的平均水平。</p>
<p>7. 懂得丢弃</p>
<p>老的套路和技术，该丢，就得丢。不要固步自封。</p>
<p>8. 打破砂锅问到底</p>
<p>不断追问，真正搞懂问题的本质。为什么？应该成为你的口头禅。</p>
<p>9. 把握开发节奏</p>
<p>控制好时间，养成好习惯，不要加班。</p>
<p><strong>开发流程篇</strong></p>
<p>10. 让客户做决定</p>
<p>让用户在现场，倾听他们的声音，对业务最重要的决策应该让他们说了算。</p>
<p>11. 让设计指导而不是操纵开发</p>
<p>设计是前进的地图，它指引的是方向，而不是目的本身。设计的详略程度应该适当。</p>
<p>12. 合理地使用技术</p>
<p>根据需要而不是其他因素选择技术。对各种技术方案进行严格地追问，真诚面对各种问题。</p>
<p>13. 让应用随时都可以发布</p>
<p>通过善用持续集成和版本管理，你应该随时都能够编译、运行甚至部署应用。</p>
<p>14. 提早集成，频繁集成</p>
<p>集成有风险，要尽早尽量多地集成。</p>
<p>15. 提早实现自动化部署</p>
<p>16. 使用演示获得频繁反馈</p>
<p>17. 使用短迭代，增量发布</p>
<p>18. 固定价格就意味着背叛承诺</p>
<p>估算应该基于实际的工作不断变化。</p>
<p><strong>用户篇</strong></p>
<p>19. 守护天使</p>
<p>自动化单元测试是你的守护天使。</p>
<p>20. 先用它再实现它</p>
<p>测试驱动开发其实是一种设计工具。</p>
<p>21. 不同环境，就有不同问题</p>
<p>要重视多平台问题。</p>
<p>22. 自动验收测试</p>
<p>23. 度量真实的进度</p>
<p>在工作量估算上，不要自欺欺人。</p>
<p>24. 倾听用户的声音</p>
<p>每一声抱怨都隐藏着宝贵的真理。</p>
<p><strong>编程篇</strong></p>
<p>25. 代码要清晰地表达意图</p>
<p>代码是给人读的，不要耍小聪明。</p>
<p>26. 用代码沟通</p>
<p>注释的艺术。</p>
<p>27. 动态地进行取舍</p>
<p>记住，没有最佳解决方案。各种目标不可能面面俱到，关注对用户重要的需求。</p>
<p>28. 增量式编程</p>
<p>写一点代码就构建、测试、重构、休息。让代码干净利落。</p>
<p>29. 尽量简单</p>
<p>宁简勿繁。如果没有充足的理由，就不要使用什么模式、原则和特别的技术。</p>
<p>30. 编写内聚的代码</p>
<p>类和组件应该足够小，任务单一。</p>
<p>31. 告知，不要询问</p>
<p>多用消息传递，少用函数调用。</p>
<p>32. 根据契约进行替换</p>
<p>委托往往优于继承。</p>
<p><strong>调试篇</strong></p>
<p>33. 记录问题解决日志</p>
<p>不要在同一地方摔倒两次。错误是最宝贵的财富。</p>
<p>34. 警告就是错误</p>
<p>忽视编译器的警告可能铸成大错。</p>
<p>35. 对问题各个击破</p>
<p>分而治之是计算机科学中最重要的思想之一。但是，要从设计和原型阶段就考虑各部分应该能够很好地分离。</p>
<p>36. 报告所有的异常</p>
<p>37. 提供有用的错误信息</p>
<p>稍微多花一点心思，出错的时候，将给你带来极大便利。</p>
<p><strong>团队协作篇</strong></p>
<p>38. 定期安排会面时间</p>
<p>常开会，开短会。</p>
<p>39. 架构师必须写代码不写代码的架构师不是好架构师。好的设计都来自实际编程。编程可以带来深入的理解。</p>
<p>40. 实行代码集体所有制</p>
<p>让开发人员在系统不同区域中不同的模块和任务之间轮岗。</p>
<p>41. 成为指导者</p>
<p>教学相长。分享能提高团队的总体能力。</p>
<p>42. 让大家自己想办法</p>
<p>指引方向，而不是直接提供解决方案。让每个人都有机会在干中学习。</p>
<p>43. 准备好后再共享代码</p>
<p>不要提交无法编译或者没有通过单元测试的代码！</p>
<p>44. 做代码复查</p>
<p>复查对提高代码质量、减少错误极为重要。</p>
<p>45. 及时通报进展与问题主动通报，不要让别人来问你。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jguoer.com/blog/index.php/archives/1268/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Mutt&amp;Gmail配置</title>
		<link>http://www.jguoer.com/blog/index.php/archives/1261</link>
		<comments>http://www.jguoer.com/blog/index.php/archives/1261#comments</comments>
		<pubDate>Tue, 17 Aug 2010 14:08:28 +0000</pubDate>
		<dc:creator>soundbbg</dc:creator>
				<category><![CDATA[倒带人生]]></category>

		<guid isPermaLink="false">http://www.jguoer.com/blog/index.php/archives/1261</guid>
		<description><![CDATA[最近这几天一直在折腾Mutt，好吧，我没用用emacs里面的mew，因为mac下的emacs客户端总是有诸多的问题，所以我几乎就是用的是命令行里面的emacs，所以也少了开客户端的问题了。至于为什么我不太喜欢客户端，因为主要我还是喜欢命令行，使用emacs就是为了能够简化我的开发，所以我就更不想在命令行和emacs之间切换了，既然命令行的emacs能够满足我，我为何还要用客户端呢。

好吧，这是后话，之所以用mutt，也是因为mutt在命令行下，所以也符合了我在命令行里做事的需求，而且也比mew好用，所以自然选择mutt，不过mutt有点麻烦，于是记录下来，方便以后操作。

Mutt还真是符合unix的设计习惯，只干一件事情，所以如果你需要使用Mutt收发邮件，ok，你还需要装下面的几个东西。mutt+fetchmail+procmail+msmtp。装这些很简单，直接上Google搜索，download，编译安装即可。反正在写配置文件之前，保证在命令行里面能够用这些命令，虽然不一定非要干什么事。]]></description>
			<content:encoded><![CDATA[<p>最近这几天一直在折腾Mutt，好吧，我没用用emacs里面的mew，因为mac下的emacs客户端总是有诸多的问题，所以我几乎就是用的是命令行里面的emacs，所以也少了开客户端的问题了。至于为什么我不太喜欢客户端，因为主要我还是喜欢命令行，使用emacs就是为了能够简化我的开发，所以我就更不想在命令行和emacs之间切换了，既然命令行的emacs能够满足我，我为何还要用客户端呢。</p>
<p>好吧，这是后话，之所以用mutt，也是因为mutt在命令行下，所以也符合了我在命令行里做事的需求，而且也比mew好用，所以自然选择mutt，不过mutt有点麻烦，于是记录下来，方便以后操作。</p>
<p>Mutt还真是符合unix的设计习惯，只干一件事情，所以如果你需要使用Mutt收发邮件，ok，你还需要装下面的几个东西。mutt+fetchmail+procmail+msmtp。装这些很简单，直接上Google搜索，download，编译安装即可。反正在写配置文件之前，保证在命令行里面能够用这些命令，虽然不一定非要干什么事。</p>
<p>在安装完成之后，先要打开gmail的pop功能，具体看<a href="http://mail.google.com/support/bin/answer.py?answer=13273">这里</a>，配置完成之后就要写配置文件了，ok，一个一个的来。</p>
<p><strong>(1) 先配置SSL认证文件。</strong></p>
<p>$ mkdir -pv $HOME/mail/certs<br />
$ cd $HOME/mail/certs<br />
下载认证文件<br />
$ wget http://www.jguoer.com/blog/wp-content/uploads/apps/Thawte_Premium_Server_CA.rar<br />
$ wget<br />
http://www.jguoer.com/blog/wp-content/uploads/apps/Equifax_Secure_CA.rar<br />
$ mv Thawte_Premium_Server_CA.rar Thawte_Premium_Server_CA.pem<br />
$ mv Equifax_Secure_CA.rar Equifax_Secure_CA.pem<br />
$ c_rehash $HOME/mail/certs<br />
如果google通知你需要更新有效期的时候，需要执行上面一步命令更新。</p>
<p><strong>(2) 配置fetchmail</strong></p>
<p>$ touch $HOME/.fetchmailrc<br />
将下面的内容写到这个配置文件中。<br />
poll pop.gmail.com<br />
with proto POP3<br />
user &#8216;youraccount.example@gmail.com&#8217;<br />
there with password &#8216;passwd&#8217;<br />
is &#8217;someone&#8217; here<br />
mda &#8220;/usr/bin/procmail -d %T&#8221;<br />
options<br />
no keep<br />
ssl<br />
sslcertck<br />
sslcertpath /Users/someone/mail/certs/<br />
注意linux用户路径应该如下<br />
//sslcertpath /home/someone/mail/certs/</p>
<p>ok之后改变这个文件的属性。</p>
<p>$ chmod 600 ~/.fetchmailrc</p>
<p><strong>(3) Mac OS下procmail貌似不需要怎么配置</strong></p>
<p>Linux的同学可以看<a href="http://www.adamjiang.com/blog/archives/33" target="_blank">这篇文章</a>。</p>
<p><strong>(4) 配置发送邮件</strong></p>
<p>$ touch $HOME/.msmtprc<br />
然后就是写配置文件里的内容了。<br />
account default<br />
host smtp.gmail.com<br />
port 587<br />
from youraccount.example@gmail.com<br />
tls on<br />
tls_starttls on<br />
tls_trust_file /home/yourname/mail/certs/Thawte_Premium_Server_CA.pem<br />
auth on<br />
user youraccount<br />
password yourpasswd<br />
logfile ~/.msmtp.log</p>
<p>同样需要给文件权限。</p>
<p>$ chmod 600 ~/.msmtprc</p>
<p><strong>(5) 剩下的一些</strong></p>
<p>现在基本的配置完成了，使用mutt命令打开mutt，看是否有报错，如果有报错就修复相关信息，如果没有就ok了。</p>
<p>mutt不能够自动收取邮件，我们在mutt下面可以使用!fetchmail -v收取邮件，不过这样很笨，可以用crontab去配置，我的邮件比较多，所以一分钟收一次，性能也没什么大问题。</p>
<p>使用crontab -e打开配置文件，输入以下信息。</p>
<p>*/1 * * * * /usr/bin/fetchmail</p>
<p>ok，现在就能够自动的收发邮件了。</p>
<p><strong>(6) 一些问题</strong></p>
<p>最后还有一些问题，mutt不能够自动的刷新列表，就是邮件已经接收了，你在mutt界面还需要按一些按键才能够刷新当前列表。</p>
<p>如果邮件太多了，1分钟之内收不完，会有很多crontab任务塞在队列里，你的邮件就会爆了，所以如果出现这种情况，就设置时间长一点，或者kill掉现有的crontab任务。</p>
<p>如果crontab总是给你发邮件，可以在crontab -e里设置MAILTO=nobody</p>
<p><strong>(7) 其他配置</strong></p>
<p>Mutt还可以配置颜色，高亮显示等。</p>
<p><strong>(8) Mutt ~/mutt.rc简单配置</strong></p>
<p>set realname = &#8220;GuoJing&#8221;<br />
set from = &#8220;soundbbg@gmail.com&#8221;<br />
set use_from = yes<br />
set envelope_from = yes<br />
set check_new = yes<br />
set timeout = 600<br />
set editor = &#8216;emacs&#8217;<br />
set sort = &#8216;threads&#8217;<br />
set sort_aux = &#8216;last-date-received&#8217;<br />
hdr_order Date From To Cc</p>
<p>ignore &#8220;WebApp Error:&#8221;<br />
ignore &#8220;Cron Deamon:&#8221;<br />
ignore &#8220;Cron Deamon&#8221;<br />
ignore &#8220;Cron&#8221;<br />
ignore &#8220;* ^From:.*Cron Daemon.*&#8221;</p>
<p>#颜色配置 类型 文字颜色 背景色<br />
color normal            white             default<br />
color attachment    blue              default<br />
color bold      brightwhite   default<br />
color underline     default           blue<br />
color error     brightwhite   default<br />
#color indicator        white             gray<br />
color message       brightblue    default<br />
color status        brightwhite       cyan</p>
<p>#颜色配置 类型 文字颜色 背景色 包含的文字<br />
#如下面会把包含shire的邮件变为黄色<br />
color index brightyellow default shire</p>
<p><strong>其他资料</strong></p>
<p>mutt -v 查看mutt信息</p>
<p><a href="http://linsec.ca/Using_mutt_on_OS_X">Mutt和Mutt编译选项</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jguoer.com/blog/index.php/archives/1261/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>《Sad Robot》-Pornophonique</title>
		<link>http://www.jguoer.com/blog/index.php/archives/1255</link>
		<comments>http://www.jguoer.com/blog/index.php/archives/1255#comments</comments>
		<pubDate>Sat, 14 Aug 2010 03:55:20 +0000</pubDate>
		<dc:creator>soundbbg</dc:creator>
				<category><![CDATA[倒带人生]]></category>

		<guid isPermaLink="false">http://www.jguoer.com/blog/?p=1255</guid>
		<description><![CDATA[<p style="text-align: center;"><img class="size-full wp-image-1258 aligncenter" title="sad robot" src="http://www.jguoer.com/blog/wp-content/uploads/2010/08/extralife.jpg" alt="" width="480" height="480" /></p>
今天无意逛到了一个网站，这个网站很有特色，这张《Sad Robot》专辑用了很多8bit音乐元素，让我想起了小时候玩红白机的感觉，再加上专辑很好听，所以特此推荐。]]></description>
			<content:encoded><![CDATA[<p>今天无意逛到了一个网站，这个网站很有特色，这张《Sad Robot》专辑用了很多8bit音乐元素，让我想起了小时候玩红白机的感觉，再加上专辑很好听，所以特此推荐。</p>
<p style="text-align: center;"><img class="size-full wp-image-1256 aligncenter" title="sad robot" src="http://www.jguoer.com/blog/wp-content/uploads/2010/08/1257011585_x_fba0398f.jpg" alt="" width="480" height="480" /></p>
<p style="text-align: center;"><img class="size-full wp-image-1257 aligncenter" title="sad robot" src="http://www.jguoer.com/blog/wp-content/uploads/2010/08/1257011603_x_5fcf198d.jpg" alt="" width="480" height="480" /></p>
<p style="text-align: center;"><img class="size-full wp-image-1259 aligncenter" title="sad robot" src="http://www.jguoer.com/blog/wp-content/uploads/2010/08/1-2_player_game.jpg" alt="" width="480" height="480" /></p>
<p style="text-align: center;"><img class="size-full wp-image-1258 aligncenter" title="sad robot" src="http://www.jguoer.com/blog/wp-content/uploads/2010/08/extralife.jpg" alt="" width="480" height="480" /></p>
<p><a href="http://www.pornophonique.de/music.php" target="_blank">去这里感受一下。</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jguoer.com/blog/index.php/archives/1255/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Emacs写日记</title>
		<link>http://www.jguoer.com/blog/index.php/archives/1250</link>
		<comments>http://www.jguoer.com/blog/index.php/archives/1250#comments</comments>
		<pubDate>Sat, 07 Aug 2010 21:57:15 +0000</pubDate>
		<dc:creator>soundbbg</dc:creator>
				<category><![CDATA[倒带人生]]></category>

		<guid isPermaLink="false">http://www.jguoer.com/blog/index.php/archives/1250</guid>
		<description><![CDATA[好吧，首先我得说，这件事情缘起一场梦。梦里一晚上我都在搞emacs，结果第二天起来我特别的累，但是脑海里还是想着emacs的快捷键，很崩溃，后来第二天上班的时候想想看来和emacs有缘，于是就好好的下定决心开始弄emacs。
可能也是偶然也是必然，要做的项目可以本地跑，所以就可以完全用emacs做本地开发了，这两天周末在家，好好研究了一下emacs的一些配置，现在我的emacs可以写代码，看邮件，聊天，还可以上网。当然，上豆瓣的体验不是那么好，因为没有css，但是手机豆瓣就很爽了，反正也没什么复杂的形式，所以以后手机豆瓣的功能一定要好好加强。
和vi比起来，emacs更大更复杂，配置也挺麻烦的，(但我没有说更强大)，翻了好多开源社区的文档，有些问题实在解决不了连日语的也看，好在最后都一一解决了，暂时本地先用emacs，以后在服务器上用vi也无妨。
ps:其实最好的方法是把所有的代码都拿到本地跑，一是方便，二是有效率，最后还不用和别人抢资源，不过这个事情还是很难办的，慢慢来吧。这篇日记和豆瓣日记都是在Emacs下写的 : )
]]></description>
			<content:encoded><![CDATA[<p>好吧，首先我得说，这件事情缘起一场梦。梦里一晚上我都在搞emacs，结果第二天起来我特别的累，但是脑海里还是想着emacs的快捷键，很崩溃，后来第二天上班的时候想想看来和emacs有缘，于是就好好的下定决心开始弄emacs。</p>
<p>可能也是偶然也是必然，要做的项目可以本地跑，所以就可以完全用emacs做本地开发了，这两天周末在家，好好研究了一下emacs的一些配置，现在我的emacs可以写代码，看邮件，聊天，还可以上网。当然，上豆瓣的体验不是那么好，因为没有css，但是手机豆瓣就很爽了，反正也没什么复杂的形式，所以以后手机豆瓣的功能一定要好好加强。</p>
<p>和vi比起来，emacs更大更复杂，配置也挺麻烦的，(但我没有说更强大)，翻了好多开源社区的文档，有些问题实在解决不了连日语的也看，好在最后都一一解决了，暂时本地先用emacs，以后在服务器上用vi也无妨。</p>
<p>ps:其实最好的方法是把所有的代码都拿到本地跑，一是方便，二是有效率，最后还不用和别人抢资源，不过这个事情还是很难办的，慢慢来吧。<a href="http://www.douban.com/note/84527920/">这篇日记和豆瓣日记都是在Emacs下写的</a> : )</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jguoer.com/blog/index.php/archives/1250/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>最近做的一点事情</title>
		<link>http://www.jguoer.com/blog/index.php/archives/1243</link>
		<comments>http://www.jguoer.com/blog/index.php/archives/1243#comments</comments>
		<pubDate>Sun, 01 Aug 2010 14:22:32 +0000</pubDate>
		<dc:creator>soundbbg</dc:creator>
				<category><![CDATA[倒带人生]]></category>

		<guid isPermaLink="false">http://www.jguoer.com/blog/?p=1243</guid>
		<description><![CDATA[最近在做什么？最近把<a href="http://app.jguoer.com">JGuoer Lab</a>从Google App Engine上移到了自己的服务器上，这个网站是我自己的一个实验性的网站，通过这个网站我可以尝试性的做很多东西，并且把一些好玩的有趣的东西搬到上面，现在这个网站还在开发阶段，不过大体上已经ok了，所以可以说这个是第一阶段的上线。

由于自己的性格问题，不喜欢什么都不懂的懵懵懂懂的做一个小工程师，所以对于很多东西都很好奇，在公司几个月了，虽然能够很容易的写一些python代码，但是都在一定库/框架的基础上写的，所以本身不是很难，只要完成相关的任务就行了，当然，这不是我想要的，于是一直在找机会能够亲自动手尝试做一些东西。]]></description>
			<content:encoded><![CDATA[<p>最近在做什么？最近把<a href="http://app.jguoer.com">JGuoer Lab</a>从Google App Engine上移到了自己的服务器上，这个网站是我自己的一个实验性的网站，通过这个网站我可以尝试性的做很多东西，并且把一些好玩的有趣的东西搬到上面，现在这个网站还在开发阶段，不过大体上已经ok了，所以可以说这个是第一阶段的上线。</p>
<p>由于自己的性格问题，不喜欢什么都不懂的懵懵懂懂的做一个小工程师，所以对于很多东西都很好奇，在公司几个月了，虽然能够很容易的写一些python代码，但是都在一定库/框架的基础上写的，所以本身不是很难，只要完成相关的任务就行了，当然，这不是我想要的，于是一直在找机会能够亲自动手尝试做一些东西。</p>
<p>于是机缘巧合，在一个前同事那里买到了python主机，便宜，性能很好，最主要的是可以自己随便装东西，ssh到服务器上之后什么都能干是一件很爽的事情，对我来说刚好是个机会。所以我就自己搭建了一个服务器，使用lighttpd作为web服务，后端起多个应用从而搭建多个网站应用，然后自己也写了一个简单的web.py的MVC框架，并且写了一些memcached和mysql的封装，这样就能够通用所有的项目。</p>
<p>所以要说最近的一些事情，大体上就是亲自尝试服务器的从无到有的配置，虽然很辛苦，过程很让人觉得麻烦和懊恼，但是结果是喜人的。就是除了会了code，还会搭建服务器，写服务器配置等等。更主要的是亲自了解了性能的关键和尝试解决这些问题方法。</p>
<p>自然，我也在尝试通过一种“正确”的方式去写代码，提交和部署。如写本地配置和线上配置，搭建本地环境开发然后上线到线上环境，以及重启线上服务器和升级。我只是尝试把工作中学到的一些经验，实践到自己的开发中，从而最后能够成为一种习惯，虽然现在还有点不太习惯。</p>
<p>当然，要学的东西很多，要做的东西也很多，还得慢慢来。</p>
<p>ps：上面的文案可以忽略，自己随便乱写的。：）</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jguoer.com/blog/index.php/archives/1243/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Web.py等等&#8230;</title>
		<link>http://www.jguoer.com/blog/index.php/archives/1237</link>
		<comments>http://www.jguoer.com/blog/index.php/archives/1237#comments</comments>
		<pubDate>Sat, 24 Jul 2010 16:23:43 +0000</pubDate>
		<dc:creator>soundbbg</dc:creator>
				<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://www.jguoer.com/blog/?p=1237</guid>
		<description><![CDATA[最近看了一些Web.py的东西，主要是了解如何从无到有搭建一个Python网站，实际上很容易，但是有很多细节如果不注意的话，很容易让新人误入歧途，反而浪费时间。所以就在官方网站上参与了翻译，虽然英语不是很好，但是简单的翻译一下还是可以的。所以我不打算在自己的博客再写一些很<b>基础</b>的Web.py的文章，但是新人要看，所以丰富官方网站才是最好的途径。

传送门：<a href="http://webpy.org/cookbook/zh-cn" target="_blank">http://webpy.org/cookbook/zh-cn</a>

翻译倒不是完全翻译过来，里面还加了一些个人的理解和排除错误的方式，前面已经有很多同学做出辛苦的努力进行翻译了，我也只是进去凑个数，希望能够帮到更多的新人。]]></description>
			<content:encoded><![CDATA[<p>最近看了一些Web.py的东西，主要是了解如何从无到有搭建一个Python网站，实际上很容易，但是有很多细节如果不注意的话，很容易让新人误入歧途，反而浪费时间。所以就在官方网站上参与了翻译，虽然英语不是很好，但是简单的翻译一下还是可以的。所以我不打算在自己的博客再写一些很<b>基础</b>的Web.py的文章，但是新人要看，所以丰富官方网站才是最好的途径。</p>
<p>传送门：<a href="http://webpy.org/cookbook/zh-cn" target="_blank">http://webpy.org/cookbook/zh-cn</a></p>
<p>翻译倒不是完全翻译过来，里面还加了一些个人的理解和排除错误的方式，前面已经有很多同学做出辛苦的努力进行翻译了，我也只是进去凑个数，希望能够帮到更多的新人。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jguoer.com/blog/index.php/archives/1237/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>笔记－Mac OS X lighttpd+web.py 部署网站</title>
		<link>http://www.jguoer.com/blog/index.php/archives/1227</link>
		<comments>http://www.jguoer.com/blog/index.php/archives/1227#comments</comments>
		<pubDate>Thu, 22 Jul 2010 11:39:37 +0000</pubDate>
		<dc:creator>soundbbg</dc:creator>
				<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://www.jguoer.com/blog/?p=1227</guid>
		<description><![CDATA[hmmm...最近一直在使用Python做开发，但是都是知其然而不知其所以然，所以自己研究一下如何搭建一个web，实际上很简单，不过中文文档不多，就纯当写一个笔记吧。

web.py很简单，easy_install web.py就可以安装了，然后在python里import web就可以搭建一个web了，很简单吧，web.py默认就提供了web服务，所以只需要web.py就能跑一个网站了，不过，既然lighttpd专门去做web服务的，为何不直接让lighttpd去做呢。

实际上很简单，我们写一个简单的code.py文件如下]]></description>
			<content:encoded><![CDATA[<p>hmmm&#8230;最近一直在使用Python做开发，但是都是知其然而不知其所以然，所以自己研究一下如何搭建一个web，实际上很简单，不过中文文档不多，就纯当写一个笔记吧，高手路过。</p>
<p>web.py很简单，easy_install web.py就可以安装了，然后在python里import web就可以搭建一个web了，很简单吧，web.py默认就提供了web服务，所以只需要web.py就能跑一个网站了，不过，既然lighttpd专门去做web服务的，为何不直接让lighttpd去做呢。</p>
<p>实际上很简单，我们写一个简单的code.py文件如下。</p>
<div class="code">
#!/usr/bin/env python</p>
<p>import web<br />
from controller.home import Home</p>
<p>urls = (&#8216;/.*&#8217;, &#8216;Home&#8217;)</p>
<p>app = web.application(urls, globals())</p>
<p>if __name__ == &#8220;__main__&#8221;:<br />
    app.run()
</p></div>
<p>上面的逻辑比较简单，就是定义urls和相应的Handler，定义完成之后我们就可以使用python命令来运行了，如python code.py，这样就起了一个服务，不过一直在python进程中，确实很不爽，所以就选择lighttpd。</p>
<p>装lighttpd很简单，可以自己装，装好之后编写lighttpd配置文件，编写如下（这里我也是了解如何编写lighttpd配置文件）。</p>
<div class="code">
#加载一些模块<br />
server.modules = (<br />
    &#8220;mod_access&#8221;,<br />
    &#8220;mod_alias&#8221;,<br />
    &#8220;mod_accesslog&#8221;,<br />
    &#8220;mod_compress&#8221;,<br />
)</p>
<p>server.modules += ( &#8220;mod_fastcgi&#8221; )<br />
server.modules += ( &#8220;mod_rewrite&#8221; )</p>
<p>fastcgi.server = (&#8220;/routing.py&#8221; =><br />
((<br />
&#8220;socket&#8221; => &#8220;/tmp/fastcgi-wen.socket&#8221;,<br />
&#8220;bin-path&#8221; => &#8220;/Users/guojing/dev/webpy/routing.py&#8221;,<br />
&#8220;max-procs&#8221; => 2,<br />
&#8220;check-local&#8221; => &#8220;disable&#8221;,<br />
)))<br />
#如果是本机跑的话一定要定义check-local为disable<br />
url.rewrite-once = (<br />
    &#8220;^/favicon.ico$&#8221; => &#8220;/favicon.ico&#8221;,<br />
    &#8220;^/(.*)$&#8221; => &#8220;/routing.py/$1&#8243;,<br />
)<br />
#定义根文档路径<br />
server.document-root = &#8220;/Users/guojing/dev/webpy/htdocs&#8221;
</p></div>
<p>编写完成后就可以使用lighttpd -f lighttpd.conf来启动lighttpd了。</p>
<p><b>PS：如果启动不成功，需要将routing.py设置相应的权限。</b></p>
<p>chmod 755 lighttpd.conf</p>
<p>代码下载：<br />
<a href='http://www.jguoer.com/blog/wp-content/uploads/2010/07/webpy.zip'>webpy</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jguoer.com/blog/index.php/archives/1227/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>我家的草</title>
		<link>http://www.jguoer.com/blog/index.php/archives/1226</link>
		<comments>http://www.jguoer.com/blog/index.php/archives/1226#comments</comments>
		<pubDate>Sun, 18 Jul 2010 13:13:03 +0000</pubDate>
		<dc:creator>soundbbg</dc:creator>
				<category><![CDATA[倒带人生]]></category>

		<guid isPermaLink="false">http://www.jguoer.com/blog/index.php/archives/1226</guid>
		<description><![CDATA[<p style="text-align:center"><img src="http://www.jguoer.com/images/p551280014.jpg"/></p>
几只小草没养过多长时间，但是已经倍感亲切，这几只小草从人家那里拿过来的时候就不是很好了，原因是别人不要了，不想养了。当时状态不怎么样，尾巴断了，指甲也断了，也有腐皮，很可怜，收留下来了，希望他们能够过的更好。当然，谁不想有品相好的龟，但是看到这么可怜的几只龟，觉得不忍心，于是拿了过来，以后就陪我渡过吧。]]></description>
			<content:encoded><![CDATA[<p>几只小草没养过多长时间，但是已经倍感亲切，这几只小草从人家那里拿过来的时候就不是很好了，原因是别人不要了，不想养了。当时状态不怎么样，尾巴断了，指甲也断了，也有腐皮，很可怜，收留下来了，希望他们能够过的更好。当然，谁不想有品相好的龟，但是看到这么可怜的几只龟，觉得不忍心，于是拿了过来，以后就陪我渡过吧。</p>
<p>它们很活泼，经常在水底爬沙子，钻洞，爬木头，游上游下的，抓管子，和过滤泵对着干，有时候还成群结队的爬爬，亲亲，着实快乐的很。</p>
<p>实际上，我更要感谢他们，有空能够陪我聊天，和我玩，这个社会速度太快，人心也很浮躁，Thanks all。。</p>
<p style="text-align:center"><img src="http://www.jguoer.com/images/p533119148.jpg"/></p>
<p style="text-align:center"><img src="http://www.jguoer.com/images/p533177864.jpg"/></p>
<p style="text-align:center"><img src="http://www.jguoer.com/images/p533178618.jpg"/></p>
<p style="text-align:center"><img src="http://www.jguoer.com/images/p538423740.jpg"/></p>
<p style="text-align:center"><img src="http://www.jguoer.com/images/p551279311.jpg"/></p>
<p style="text-align:center"><img src="http://www.jguoer.com/images/p551279646.jpg"/></p>
<p style="text-align:center"><img src="http://www.jguoer.com/images/p551280014.jpg"/></p>
<p style="text-align:center"><img src="http://www.jguoer.com/images/p551280454.jpg"/></p>
<p style="text-align:center"><img src="http://www.jguoer.com/images/p551280710.jpg"/></p>
<p style="text-align:center"><img src="http://www.jguoer.com/images/p551282382.jpg"/></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jguoer.com/blog/index.php/archives/1226/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
	</channel>
</rss>
