<?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>臭皮匠</title>
	<atom:link href="http://guogoul.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://guogoul.com</link>
	<description></description>
	<lastBuildDate>Fri, 29 Oct 2010 00:24:37 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>IPHONE基于窗口应用程序的生死</title>
		<link>http://guogoul.com/2010/10/29/iphone-window-based-applicatio/</link>
		<comments>http://guogoul.com/2010/10/29/iphone-window-based-applicatio/#comments</comments>
		<pubDate>Fri, 29 Oct 2010 00:20:55 +0000</pubDate>
		<dc:creator>shanfeng</dc:creator>
				<category><![CDATA[MAC]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[未分类]]></category>

		<guid isPermaLink="false">http://guogoul.com/?p=268</guid>
		<description><![CDATA[就像开发MFC 框架下的 windows应用程序 必须学会基于单文档的应用程序开发一样 ,  学习Iphone应用程序的开发,对window-based-application的掌握也是最基础.最必要的.
通知Xcode的菜单向导很快就是得到一个最基本的window-based-application的框架.通过简单的build就可以在模拟环境中运行了.
向导为我们做了什么事情?,窗口是怎么来,又是怎么去的?
1. 有C相关语言开发经验的朋友都知道,所有程序运行都是从 main 程序开始的.于是找到了自动生成的main.m源代码
2.  UIApplicationMain 到底为我们做了什么事情?

2.1 为我们创建了UIApplication的实例来展现工程师设计的界面.
2.2 首先人他会查看Info.plist 这个文档包含了程序需要初始化的一些元素比如,icon,名称,和指定主界面的nib文件等等,例如:



3. 主界面nib页面又给我们指定了什么东西呢?

3.1. File’s Owner  表示当前nib文件的使用者可以看到是UIApplication
3.2. First Responder  可以用于处理很多事件.句柄
3.3. 还指定了 application&#8217;s delegate
3.4. A window 用于显示程序加载背景.


4.接下来处理的关键在于3.3所指定的delegate
当UIApplication加载结束后,会给它所指定的delegate发一个application:didFinishLaunchingWithOptions: 事件消息.
然后在这个方法里面创建自己的view controlle以及给主window指定subview.
5. 接下来的事情大家就比较明了了,看大家自己的发挥.
]]></description>
		<wfw:commentRss>http://guogoul.com/2010/10/29/iphone-window-based-applicatio/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>担心部署分布式 Memcached 导致问题</title>
		<link>http://guogoul.com/2010/10/27/memcached-danger/</link>
		<comments>http://guogoul.com/2010/10/27/memcached-danger/#comments</comments>
		<pubDate>Wed, 27 Oct 2010 12:09:08 +0000</pubDate>
		<dc:creator>shanfeng</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[memcached]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://guogoul.com/?p=264</guid>
		<description><![CDATA[Memcached在很多时候都是作为数据库前端cache使用的,大大降低数据库压力，使系统执行效率提升.
memcached虽然称为“分布式”缓存服务器，但服务器端并没有“分布式”功能,memcached的分布式，则是完全由客户端程序库实现的.
客户端实现分布是memcached分布式的一个特点.这个特点提供了开发者,最大的自由度,但也容易导致问题的的发生.
以Php::Memcache为例子:

$memcache = new Memcache;
$memcache-&#62;addServer(&#8217;192.168.123.4&#8242;, 11211);
$memcache-&#62;addServer(&#8217;192.168.123.6&#8242;, 11211);
$memcache-&#62;addServer(&#8217;192.168.123.7&#8242;, 11211);
$memcache-&#62;set(&#8221;justfortest2&#8243;,7);
情况1.   192.168.123.6 服务器不太稳定,当192.168.123.6请求失败的时候 .memcache可能会去请求192.168.123.7.  这样会导致数据可能cache在多个服务器中,数据的不一致问题就会产生.
情况2.  如果在写代码过程中addserver的顺序出错,或者增加,或者减少server.那么数据分布情况就会改变. 由于php::memcache中的分布式算法是基于服务器数量以及添加的顺序的.  当然频道增加server,或者 减少server是很少存,但是addserver的顺序就不太好约束了.  为了保证数据一致性,服务器的增加与减少最好是重启一下所有缓存.
建议:
1. 尽量把缓存放到单机上面,
2. 在压力大的情况下为了缓解网络连接压力,或者增加缓存空间大小.做了分布式缓存.这样就得做好机器的监控.检查机器的稳定情况,保证缓存服务器的正常工作
参考:  http://gihyo.jp/dev/feature/01/memcached/0004
]]></description>
		<wfw:commentRss>http://guogoul.com/2010/10/27/memcached-danger/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>oom-killer 的发现 与 swap分区搭建</title>
		<link>http://guogoul.com/2010/04/28/oom-killer-swap/</link>
		<comments>http://guogoul.com/2010/04/28/oom-killer-swap/#comments</comments>
		<pubDate>Wed, 28 Apr 2010 08:07:38 +0000</pubDate>
		<dc:creator>shanfeng</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[技术]]></category>
		<category><![CDATA[awstats]]></category>
		<category><![CDATA[cacti]]></category>
		<category><![CDATA[crontab]]></category>
		<category><![CDATA[nagios]]></category>
		<category><![CDATA[swap]]></category>

		<guid isPermaLink="false">http://guogoul.com/?p=257</guid>
		<description><![CDATA[很不幸机器最近1周一台跑了3年多的机器挂了两次.为了过好5/1决定好好检查一下情况,不幸的是到目前为止还是没有确认最终的因素.
1.检查案发时间:通过cacti的记录,发现机器发生不幸发生在0点到2点之间.这个时间段是后台定时任务运行的高发期.
2.判断一:夜间机器后台任务太过集中,机器load太高,机器年久老化导致机器不堪重负
3.措施: 排查所有crontab中的任务,注释了其中有可以有计算压力太大的任务.把nagios的load报警设到5以下.
4.结果: 不幸在第二次发生.
5.查询日志: 发现在案发时间的日志中记录有关 oom-killer (out of memory)的记录.难道是这个做怪?有关oom请移步http://www.dbanotes.net/database/linux_outofmemory_oom_killer.html.  看了一下本机的内存.发现没有swap分区(当年装机的同事为了提高工作效率) . 再次观察cacti中的内存趋势.内存第天基本没有free.  细看一下crotab中的任务.发现每天2点左右确实有一个吃内存的awstats有跑着.
6.措施: 添加swap别让oom-killer 工作了.
7.添加SWAP:
7.1:   设置swap路径及大小:    dd if=/dev/zero of=/var/swap bs=1024 count=8192000  (内存4G,swap习惯设为其2倍)
7.2:  设置交换文件:  mkswap /var/swap
7.3: 启用交换分区: swapon /var/swap
7.4: 开机自挂:    在/etc/fstab中加上这一行  /var/swap swap swap defaults 0 0
8: 先到这儿吧,让他跑几天,查看日志看看问题解决情况,祝自己好运,能睡个好觉
]]></description>
		<wfw:commentRss>http://guogoul.com/2010/04/28/oom-killer-swap/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>工程师招聘</title>
		<link>http://guogoul.com/2010/02/22/take_job_applications/</link>
		<comments>http://guogoul.com/2010/02/22/take_job_applications/#comments</comments>
		<pubDate>Mon, 22 Feb 2010 11:24:14 +0000</pubDate>
		<dc:creator>shanfeng</dc:creator>
				<category><![CDATA[未分类]]></category>

		<guid isPermaLink="false">http://guogoul.com/?p=254</guid>
		<description><![CDATA[技术经理 若干
职责：
带领3-10人技术团队，开发、完善鲜果网及公司旗下其它产品线。
要求：
1、本科或以上学历，三年以上互联网产品开发经验、一年以上技术团队管理经验。
2、有极强的执行能力，即使最艰难的目标也能带领团队完美实现。
3、对互联网产品的系统架构设计有较深造诣；算法等基本功扎实，编码习惯和文档习惯良好。
4、熟悉PHP+Mysql编程、XHTML、Javascript、CSS，至少了解一种JS库；熟悉数据库设计，熟悉Apache配置，长期使用一种或多种Unix/Linux系统。
5、热爱技术，有创业激情，能承受巨大的工作压力，有超强的自我驱动能力。
6、有大型网站开发经验着优先；参与过开源项目者优先；有个人的技术Blog者优先。
 说明：
工作地点在北京，简历可投递到 ixianguo@gmail.com 。
PHP开发工程师 若干
职责：
开发、完善鲜果网及公司旗下其它产品线。
要求：
1、本科或以上学历，两年以上互联网产品开发经验。
2、熟练掌握PHP+Mysql编程，熟悉XHTML、Javascript、CSS，至少了解一种JS库。
3、熟悉数据库设计，熟悉Apache配置，长期使用一种或多种Unix/Linux系统。
4、热爱技术，有创业激情，认真踏实，热爱互联网；有良好的编程习惯和技术文档编写习惯。
5、有大型网站开发经验着优先；参与过开源项目者优先；有个人的技术Blog者优先。
说明：
工作地点在北京，简历可投递到 ixianguo@gmail.com 。
手机开发工程师 若干
职责：
开发、完善鲜果手机客户端(iPhone、Android、Symbian、WM)及Wap版本。
要求：
1、本科或以上学历，有一年以上手机客户端产品开发经验。
2、熟悉LAMP编程者优先，熟悉JS者优先。
3、熟悉数据库设计，熟悉Apache配置，长期使用一种或多种Unix/Linux系统。
4、热爱技术，有创业激情，认真踏实，热爱互联网；有良好的编程习惯和技术文档编写习惯。
5、有大型网站开发经验着优先；参与过开源项目者优先；有个人的技术Blog者优先。
说明：
工作地点在北京，简历可投递到 ixianguo@gmail.com 。
]]></description>
		<wfw:commentRss>http://guogoul.com/2010/02/22/take_job_applications/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Ignite Beijing 讲话报名</title>
		<link>http://guogoul.com/2010/02/03/ignite-beijing/</link>
		<comments>http://guogoul.com/2010/02/03/ignite-beijing/#comments</comments>
		<pubDate>Wed, 03 Feb 2010 03:48:00 +0000</pubDate>
		<dc:creator>shanfeng</dc:creator>
				<category><![CDATA[活动]]></category>

		<guid isPermaLink="false">http://guogoul.com/?p=251</guid>
		<description><![CDATA[时间：2010年3月3日星期三，19：30~21：30
地点：奇遇花园咖啡馆（问路电话010-88320741）
地址：西直门北展北街9号华远企业号（华远地产）D座一层（地图）
详情：http://club.blogbeta.com/149.html
好像上次的主题演讲ppt（amazon相关的）没有放上去。
]]></description>
		<wfw:commentRss>http://guogoul.com/2010/02/03/ignite-beijing/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>关于 MYSQL 字符串类型的存储需求</title>
		<link>http://guogoul.com/2010/01/30/storage_requirements_for_string_types/</link>
		<comments>http://guogoul.com/2010/01/30/storage_requirements_for_string_types/#comments</comments>
		<pubDate>Sat, 30 Jan 2010 12:41:14 +0000</pubDate>
		<dc:creator>shanfeng</dc:creator>
				<category><![CDATA[mysql]]></category>

		<guid isPermaLink="false">http://guogoul.com/?p=245</guid>
		<description><![CDATA[关于mysql中的列类型如何定义，是一个让初学者让人头痛的问题。列类型的恰当定义是一个数据库高效存储的重要保证,其中字符串类型的定义是最重要也是相对较难的。很不幸到至今我才清楚char，varchar的真正定义方式 。
原因有二.
1.没有亲自动手去试错，文档上说的怎么样，就天真的认为就是那样
2.是看过官方源文档，但没有查看官方原版英文文档
咱们通过对比来加深记忆
1.mysq中文文档http://dev.mysql.com/doc/refman/5.1/zh/column-types.html#storage-requirements
2. mysql英文文档http://dev.mysql.com/doc/refman/5.1-maria/en/storage-requirements.html


对比上面的两张表中char与varchar的描述
char：
中文版: char(M)     M个字节，0  &#60;= M &#60;= 255
英文版:  char(M) M × w bytes,               0 &#60;= M &#60;= 255, where w is               the number of bytes [...]]]></description>
		<wfw:commentRss>http://guogoul.com/2010/01/30/storage_requirements_for_string_types/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>转载 snmp 重要的OID 备忘</title>
		<link>http://guogoul.com/2010/01/21/snmp-oid/</link>
		<comments>http://guogoul.com/2010/01/21/snmp-oid/#comments</comments>
		<pubDate>Thu, 21 Jan 2010 08:33:13 +0000</pubDate>
		<dc:creator>shanfeng</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[技术]]></category>
		<category><![CDATA[snmp]]></category>

		<guid isPermaLink="false">http://guogoul.com/?p=238</guid>
		<description><![CDATA[转载自：
1. http://www.sysadmin.md/most-useful-snmp-oids.html
2. http://blog.chinaunix.net/u2/70049/showart_1136607.html
CPU
Percentages of user CPU time (ssCpuUser)
.1.3.6.1.4.1.2021.11.9
Percentages of system CPU time (ssCpuSystem)
.1.3.6.1.4.1.2021.11.10
Percentages of idle CPU time (ssCpuIdle)
.1.3.6.1.4.1.2021.11.11
Load
1 minute Load (laLoad.1)
.1.3.6.1.4.1.2021.10.1.3.1
5 minute Load (laLoad.2)
.1.3.6.1.4.1.2021.10.1.3.2
15 minute Load (laLoad.3)
.1.3.6.1.4.1.2021.10.1.3.3

Memory
Total Swap Size configured for the host (memTotalSwap)
.1.3.6.1.4.1.2021.4.3
Available Swap Space on the host (memAvailSwap)
.1.3.6.1.4.1.2021.4.4
Total Real/Physical Memory Size on the host (memTotalReal)
.1.3.6.1.4.1.2021.4.5
Available Real/Physical Memory Space on the host (memAvailReal)
.1.3.6.1.4.1.2021.4.6
Total RAM [...]]]></description>
		<wfw:commentRss>http://guogoul.com/2010/01/21/snmp-oid/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>APC cause problems</title>
		<link>http://guogoul.com/2010/01/05/apc_problems/</link>
		<comments>http://guogoul.com/2010/01/05/apc_problems/#comments</comments>
		<pubDate>Tue, 05 Jan 2010 04:24:24 +0000</pubDate>
		<dc:creator>shanfeng</dc:creator>
				<category><![CDATA[Web开发]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[apc]]></category>

		<guid isPermaLink="false">http://guogoul.com/?p=235</guid>
		<description><![CDATA[看技术文档的时候很多作者的警告明知很重要，但经常被我们当作耳边风。不是我们有意把它们忘记，只是很多事情只是经历过之后才能铭记在心。
============================================
    APC will probably be 20-30% faster, but if you are writing to it frequently it can cause problems. The APC cache is best for things that change very rarely. And by very rarely I mean days, not hours or minutes.
    Because of the way APC does an anonymous [...]]]></description>
		<wfw:commentRss>http://guogoul.com/2010/01/05/apc_problems/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Mysql中索引的限制</title>
		<link>http://guogoul.com/2009/12/10/mysql-index-limi/</link>
		<comments>http://guogoul.com/2009/12/10/mysql-index-limi/#comments</comments>
		<pubDate>Thu, 10 Dec 2009 14:51:23 +0000</pubDate>
		<dc:creator>shanfeng</dc:creator>
				<category><![CDATA[mysql]]></category>

		<guid isPermaLink="false">http://guogoul.com/?p=228</guid>
		<description><![CDATA[##摘自mysql的性能调优与架构设计##（备忘）
1.myIsam存储引擎索引键长度的总和不能超过1000字节
2.BLOB和TEXT列只能创建前缘索引
3.Mysql目前不支持函数索引
4.使用不等于(!=或者)的时候，Mysql无法使用 索引
5.过滤字段如果使用 函数运算（如abs(column)）后，mysql无法使用索引
6.join语句中join条件字段类型不一致时，mysql无法使用索引
7.使用like操作的时候，如果条件以通配符开始（&#8221;%abc&#8230;&#8221;）时，mysql无法使用索引
8.使用非等值查询的时候，mysql无法使用hash索引
]]></description>
		<wfw:commentRss>http://guogoul.com/2009/12/10/mysql-index-limi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>lsof:list open file</title>
		<link>http://guogoul.com/2009/11/04/lsoflist-open-file/</link>
		<comments>http://guogoul.com/2009/11/04/lsoflist-open-file/#comments</comments>
		<pubDate>Wed, 04 Nov 2009 15:29:39 +0000</pubDate>
		<dc:creator>shanfeng</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[tools]]></category>

		<guid isPermaLink="false">http://guogoul.com/?p=226</guid>
		<description><![CDATA[lsof的参数很多，不过搞来搞去无非是根据什么条件找出被进程打开的文件句柄。条件有根据文件名，文件夹，进程名，端口号，gid,fd等，太丰富了。当你用到的时候再查手册也来得及。
本人用这个解决的最头痛的问题是：一次由于磁盘空间占用较高了，于随手删除了几个大文件，然后用df查看文件系统使用情况，发现一直没有变。搞了半天找不出个所以然来，了解这个命令之后查询了一下这个系统中所有被打开的文件，发现原来那几个大文件被某个程序使用着呢。关闭那个进程后df结果正常。
]]></description>
		<wfw:commentRss>http://guogoul.com/2009/11/04/lsoflist-open-file/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

