<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="wordpress/wordpress-mu-1.0" -->
<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/"
	>

<channel>
	<title>N.S. thoughts</title>
	<link>http://blog.chinavisual.com/nightsailer</link>
	<description>.... silent is golden....</description>
	<pubDate>Fri, 07 Mar 2008 15:37:43 +0000</pubDate>
	<generator>http://wordpress.org/?v=wordpress-mu-1.0</generator>
	<language>en</language>
			<item>
		<title>新的据点 &#8212; (497)</title>
		<link>http://blog.chinavisual.com/nightsailer/2008/03/07/11204904263/</link>
		<comments>http://blog.chinavisual.com/nightsailer/2008/03/07/11204904263/#comments</comments>
		<pubDate>Fri, 07 Mar 2008 15:37:43 +0000</pubDate>
		<dc:creator>nightsailer</dc:creator>
		
		<category>feelings</category>

		<guid isPermaLink="false">http://blog.chinavisual.com/nightsailer/2008/03/07/11204904263/</guid>
		<description><![CDATA[终于注册到了一个比较满意的域名:
night9.cn
我在01年的时候注册过nightsailer.com,不过后来过期也没有续费
这个名字不太好记,也容易拼错,Night9还是比较好记的
用cn是为了表示自己是中国人,呵呵,现在对.com早就不感冒了,
现在最火的还是cn,对不?
如果有订阅现在这个博客的rss的,麻烦更新下订阅的地址了.
(估计也没啥人,呵呵)

分享本文
]]></description>
			<content:encoded><![CDATA[<p>终于注册到了一个比较满意的域名:<br />
<a href="http://night9.cn/">night9.cn</a></p>
<p>我在01年的时候注册过nightsailer.com,不过后来过期也没有续费<br />
这个名字不太好记,也容易拼错,Night9还是比较好记的<br />
用cn是为了表示自己是中国人,呵呵,现在对.com早就不感冒了,<br />
现在最火的还是cn,对不?</p>
<p>如果有订阅现在这个博客的rss的,麻烦更新下订阅的地址了.<br />
(估计也没啥人,呵呵)
</p>
<p class="akst_link"><a rel="nofollow" href="http://blog.chinavisual.com/nightsailer/?p=123&amp;akst_action=share-this"  title="推荐给朋友, 提交到del.icio.us, 等等." id="akst_link_123" class="akst_share_link">分享本文</a>
</p>]]></content:encoded>
			<wfw:commentRss>http://blog.chinavisual.com/nightsailer/2008/03/07/11204904263/feed/</wfw:commentRss>
		</item>
		<item>
		<title>iphone用的很不错. &#8212; (87443)</title>
		<link>http://blog.chinavisual.com/nightsailer/2008/03/06/iphone%e7%94%a8%e7%9a%84%e5%be%88%e4%b8%8d%e9%94%99/</link>
		<comments>http://blog.chinavisual.com/nightsailer/2008/03/06/iphone%e7%94%a8%e7%9a%84%e5%be%88%e4%b8%8d%e9%94%99/#comments</comments>
		<pubDate>Wed, 05 Mar 2008 16:21:20 +0000</pubDate>
		<dc:creator>nightsailer</dc:creator>
		
		<category>开发</category>

		<guid isPermaLink="false">http://blog.chinavisual.com/nightsailer/2008/03/06/iphone%e7%94%a8%e7%9a%84%e5%be%88%e4%b8%8d%e9%94%99/</guid>
		<description><![CDATA[上周日终于把iphone到手了,这2天回家也很少用mbp,都是在被窝里用iphone.我装了一个terminalV,基本上可以在终端上操作一切,
包括ssh到视觉服务器上维护.看来以后可以不用背mbp回家了.
机器是从小白的朋友那买的,版本是1.1.2,预先给我装了一些软件.回家后首先是熟悉了下,操作,一个,爽,2个 巨爽,再来一个,真tmd爽,呵呵.
和所有的新手一样,首先是用installer装了一些乱七八糟的软件,游戏之类. 虽说是新手,不过咱用了那么长时间的tiger,leopard,linux之类的,和那些菜鸟还是不一样的. iphone实际上是一个精简后的leopard,所以很多系统的布局和配置基本上和我mbp一样的.
让我惊喜的是,vim还能用,呵呵. 我用iterm ssh到iphone上,就可以用vim直接修改各种配置文件了.其实都是各种plist文件啦,easy.
另外,邮件,联系人用的数据库是sqlite3. 由于是osx的内核,所以可以在iphone上运行php, lighttpd等. 不过似乎没有nginx,
有空的时候编译一个. 此外,ruby,python,perl这些都是可以正常跑的,默认用的是zsh,不过bash也有. 后面有些兴趣自己写点iphone上跑的东西,可以用ruby,python直接写gui的(这是今天在ADC上看到的介绍文章).
今天下班前,给菁菁演示的时候出现问题,后来终于出现传说中的白苹果,屏幕疯狂的闪,我猜测应该是screenshot这个截屏软件弄的.
回家后,ssh到了iphone上, 杀死了那个进程. reboot一下就好了.呵呵,如果wifi好用,可以ssh上去, 输入reboot就重启了,不用按键.
检查了一下iphone的分区,挂载了2个分区,都是hfs格式,一个是 / ,另一个是/var/private,后者是存放用户数据了.
我发现 / 只有不到5m的空间了,难怪安装程序的时候有时提示空间不够呢.
很好办,
mkdir /var/Applications
cp -r /Applications/* /var/Applicaitons/
mv /Applicaitons /Applications.bak
ln -s /private/var/Applicaitons /Applications
reboot
这时会重启,然后重新ssh:
ssh root@192.168.1.104 (这是给iphone分配的ip)
rm -rf /Applicaiton.bak
现在可以放心安装程序了.
对了,要备份邮件,SMS这些数据,只要备份 ~/Library
我是:
cd ~
tar jcvf iphone-data.tar.bz2 Library/*
然后将iphone-data.tar.bz2复制到笔记本里备份.
 主要是SMS,其他的到可以和itunes同步的.
本来打算今天自己做个小白鼠,升级到1.1.4,不过下载速度太慢,明天再说了.
分享本文
]]></description>
			<content:encoded><![CDATA[<p>上周日终于把iphone到手了,这2天回家也很少用mbp,都是在被窝里用iphone.我装了一个terminalV,基本上可以在终端上操作一切,<br />
包括ssh到视觉服务器上维护.看来以后可以不用背mbp回家了.<br />
机器是从小白的朋友那买的,版本是1.1.2,预先给我装了一些软件.回家后首先是熟悉了下,操作,一个,爽,2个 巨爽,再来一个,真tmd爽,呵呵.</p>
<p>和所有的新手一样,首先是用installer装了一些乱七八糟的软件,游戏之类. 虽说是新手,不过咱用了那么长时间的tiger,leopard,linux之类的,和那些菜鸟还是不一样的. iphone实际上是一个精简后的leopard,所以很多系统的布局和配置基本上和我mbp一样的.<br />
让我惊喜的是,vim还能用,呵呵. 我用iterm ssh到iphone上,就可以用vim直接修改各种配置文件了.其实都是各种plist文件啦,easy.<br />
另外,邮件,联系人用的数据库是sqlite3. 由于是osx的内核,所以可以在iphone上运行php, lighttpd等. 不过似乎没有nginx,<br />
有空的时候编译一个. 此外,ruby,python,perl这些都是可以正常跑的,默认用的是zsh,不过bash也有. 后面有些兴趣自己写点iphone上跑的东西,可以用ruby,python直接写gui的(这是今天在ADC上看到的介绍文章).</p>
<p>今天下班前,给菁菁演示的时候出现问题,后来终于出现传说中的白苹果,屏幕疯狂的闪,我猜测应该是screenshot这个截屏软件弄的.<br />
回家后,ssh到了iphone上, 杀死了那个进程. reboot一下就好了.呵呵,如果wifi好用,可以ssh上去, 输入reboot就重启了,不用按键.</p>
<p>检查了一下iphone的分区,挂载了2个分区,都是hfs格式,一个是 / ,另一个是/var/private,后者是存放用户数据了.<br />
我发现 / 只有不到5m的空间了,难怪安装程序的时候有时提示空间不够呢.<br />
很好办,</p>
<p>mkdir /var/Applications</p>
<p>cp -r /Applications/* /var/Applicaitons/</p>
<p>mv /Applicaitons /Applications.bak<br />
ln -s /private/var/Applicaitons /Applications</p>
<p>reboot</p>
<p>这时会重启,然后重新ssh:</p>
<p>ssh root@192.168.1.104 (这是给iphone分配的ip)</p>
<p>rm -rf /Applicaiton.bak</p>
<p>现在可以放心安装程序了.</p>
<p>对了,要备份邮件,SMS这些数据,只要备份 ~/Library</p>
<p>我是:</p>
<p>cd ~</p>
<p>tar jcvf iphone-data.tar.bz2 Library/*</p>
<p>然后将iphone-data.tar.bz2复制到笔记本里备份.</p>
<p> 主要是SMS,其他的到可以和itunes同步的.</p>
<p>本来打算今天自己做个小白鼠,升级到1.1.4,不过下载速度太慢,明天再说了.</p>
<p class="akst_link"><a rel="nofollow" href="http://blog.chinavisual.com/nightsailer/?p=122&amp;akst_action=share-this"  title="推荐给朋友, 提交到del.icio.us, 等等." id="akst_link_122" class="akst_share_link">分享本文</a>
</p>]]></content:encoded>
			<wfw:commentRss>http://blog.chinavisual.com/nightsailer/2008/03/06/iphone%e7%94%a8%e7%9a%84%e5%be%88%e4%b8%8d%e9%94%99/feed/</wfw:commentRss>
		</item>
		<item>
		<title>MarsEdit-Blog编辑器 &#8212; (605)</title>
		<link>http://blog.chinavisual.com/nightsailer/2008/02/17/marsedit-blog%e7%bc%96%e8%be%91%e5%99%a8/</link>
		<comments>http://blog.chinavisual.com/nightsailer/2008/02/17/marsedit-blog%e7%bc%96%e8%be%91%e5%99%a8/#comments</comments>
		<pubDate>Sun, 17 Feb 2008 15:28:10 +0000</pubDate>
		<dc:creator>nightsailer</dc:creator>
		
		<category>mac</category>

		<guid isPermaLink="false">http://blog.chinavisual.com/nightsailer/2008/02/17/marsedit-blog%e7%bc%96%e8%be%91%e5%99%a8/</guid>
		<description><![CDATA[
今天试用了一下,非常不错,对于wordpress的支持还是很好,此外也支持多数的开源的blog软件.
不过,是否支持国内的如新浪,sohu等不得而知.
现在,可以像本地一样管理不同的blog了,对于我来说,可以更方便的把文章在不同的blog之间进行同步.

分享本文
]]></description>
			<content:encoded><![CDATA[<p><img src="http://blog.chinavisual.com/nightsailer/files/2008/02//图片 2.png" alt="图片 2.png" border="0" width="1324" height="720" /></p>
<p>今天试用了一下,非常不错,对于wordpress的支持还是很好,此外也支持多数的开源的blog软件.<br />
不过,是否支持国内的如新浪,sohu等不得而知.</p>
<p>现在,可以像本地一样管理不同的blog了,对于我来说,可以更方便的把文章在不同的blog之间进行同步.
</p>
<p class="akst_link"><a rel="nofollow" href="http://blog.chinavisual.com/nightsailer/?p=121&amp;akst_action=share-this"  title="推荐给朋友, 提交到del.icio.us, 等等." id="akst_link_121" class="akst_share_link">分享本文</a>
</p>]]></content:encoded>
			<wfw:commentRss>http://blog.chinavisual.com/nightsailer/2008/02/17/marsedit-blog%e7%bc%96%e8%be%91%e5%99%a8/feed/</wfw:commentRss>
		</item>
		<item>
		<title>doggy和mysqlnd &#8212; (648)</title>
		<link>http://blog.chinavisual.com/nightsailer/2008/02/07/11202320566/</link>
		<comments>http://blog.chinavisual.com/nightsailer/2008/02/07/11202320566/#comments</comments>
		<pubDate>Wed, 06 Feb 2008 17:56:06 +0000</pubDate>
		<dc:creator>nightsailer</dc:creator>
		
		<category>doggy</category>
<category>mysqlnd</category><category>php</category>
		<guid isPermaLink="false">http://blog.chinavisual.com/nightsailer/2008/02/07/11202320566/</guid>
		<description><![CDATA[doggy早期版本使用adodb作为底层数据库的driver,从1.2开始,引入mysqlnd作为新的driver.从1.2.4开始,正式启用mysqlnd为首选的driver.虽然windows下的开发仍使用adodb的adapter,
但是我自己的osx开发环境和正式部署中已经不再使用adodb了.虽然,通过编译php的mysqlnd驱动可以间接
发挥一些Mysqlnd的优势,不过没有充分利用其未公开的特性,为此,我实现了一个mysqlnd的adapter,并不复杂.
经过我的自己测试,以及视觉新系统和老系统的测试,mysqlnd的稳定性和速度,效率都不错.尤其在效率,内存的使用上有明显的改善.
其实,最初使用mysqlnd是因为我自己的osx的开发环境编译mysql ext总出现莫名的问题,包括在Linux的64位上也偶尔
出现一些奇怪的问题,于是就尝试mysqlnd,这下彻底解决了libmysql的一些问题(因为我使用ICC静态编译了mysql,
导致php编译中出现一些问题).
mysqlnd已经加入php 5.3,目前也实现了pdo的driver,相信不久会成为默认的mysql的驱动了.
虽然,mysqlnd仍是beta版,不过从作者的blog的反映以及我自己的实际测试,在生产环境中(至少在doggy框架中)
应用是没有问题的.

分享本文
]]></description>
			<content:encoded><![CDATA[<p>doggy早期版本使用adodb作为底层数据库的driver,从1.2开始,引入mysqlnd作为新的driver.从1.2.4开始,正式启用mysqlnd为首选的driver.虽然windows下的开发仍使用adodb的adapter,<br />
但是我自己的osx开发环境和正式部署中已经不再使用adodb了.虽然,通过编译php的mysqlnd驱动可以间接<br />
发挥一些Mysqlnd的优势,不过没有充分利用其未公开的特性,为此,我实现了一个mysqlnd的adapter,并不复杂.</p>
<p>经过我的自己测试,以及视觉新系统和老系统的测试,mysqlnd的稳定性和速度,效率都不错.尤其在效率,内存的使用上有明显的改善.</p>
<p>其实,最初使用mysqlnd是因为我自己的osx的开发环境编译mysql ext总出现莫名的问题,包括在Linux的64位上也偶尔<br />
出现一些奇怪的问题,于是就尝试mysqlnd,这下彻底解决了libmysql的一些问题(因为我使用ICC静态编译了mysql,<br />
导致php编译中出现一些问题).</p>
<p>mysqlnd已经加入php 5.3,目前也实现了pdo的driver,相信不久会成为默认的mysql的驱动了.<br />
虽然,mysqlnd仍是beta版,不过从作者的blog的反映以及我自己的实际测试,在生产环境中(至少在doggy框架中)<br />
应用是没有问题的.
</p>
<p class="akst_link"><a rel="nofollow" href="http://blog.chinavisual.com/nightsailer/?p=120&amp;akst_action=share-this"  title="推荐给朋友, 提交到del.icio.us, 等等." id="akst_link_120" class="akst_share_link">分享本文</a>
</p>]]></content:encoded>
			<wfw:commentRss>http://blog.chinavisual.com/nightsailer/2008/02/07/11202320566/feed/</wfw:commentRss>
		</item>
		<item>
		<title>鼠年展望-重头再来 &#8212; (684)</title>
		<link>http://blog.chinavisual.com/nightsailer/2008/02/03/11202054239/</link>
		<comments>http://blog.chinavisual.com/nightsailer/2008/02/03/11202054239/#comments</comments>
		<pubDate>Sun, 03 Feb 2008 15:57:19 +0000</pubDate>
		<dc:creator>nightsailer</dc:creator>
		
		<category>feelings</category>

		<guid isPermaLink="false">http://blog.chinavisual.com/nightsailer/2008/02/03/11202054239/</guid>
		<description><![CDATA[新年展望刚过,农历年又来了.也许按照中国人的传统,新一年还是以春节为开始吧?
对我来说,是需要重新规划下今年的事情了
俗话说计划赶不上变化,最近的变化是快了些,明年/今年的wishlist也要立即更新了.
总结一下:
1. 弄清楚今后5年的目标,找到自己要做的事情
虽然要低头拉车,但更要抬头看路,对我这头小毛驴来说更是如此.
路上有很多分岔,没看清楚不要轻易动,看清楚了就要不撞南墙不回头.
走过的路,就不要后悔.
虽然目前还是比较迷茫,不过希望今年自己能看清楚,确定自己今后5-10年可以为之奋斗的目标.
2. 学习学习再学习
自己的知识面不够广,不够专,深,这需要加强.我需要把自己的专业知识重新温习下,呵呵,
(我的专业是财务,可不是计算机阿.)
3.坚持是第一原则
也许很多人说我是固执,不过我认为是一种坚持.坚持和固执的区别在于它所支撑的理论基础是否依然有效.
4.拓宽自己的业务分析设计能力
很多人认为我是技术人员,我自己并不这样认为.从我自己的经历来说,真正从事技术时间并不那么多.
业务人员没有我技术能力好,技术人员没有我业务能力好.呵呵,这是理想目标
5.增强个人的技术能力,做点实事
要自己认真评价,我认为自己并没有特别精通的技术,算是个杂家吧.很多东西都懂些,但是都不能甚解,
此外底子差,基本功不扎实,这些都是弱点.如今,年纪大了,脑子也不行了,和后来的其他同事比,有点跟不上了,呵呵.
另外,最主要的是能够踏踏实实的做点事,不要好高骛远,眼高手低.
再细化一下,我想做点php extension,perl的应用,ruby的实践,这方面还是有兴趣的.
6.有所舍 有所得
这个道理谁都明白,但是10有8,9很难为之. 很多东西如果不能舍弃,永远会为之奴役.
我不买房,因为我不想变成房奴.同样,我也不应被其他东西迷惑,丢掉自我.
舍弃,很难作到,但,有时候只能这样.
7.把更多的时间给爱我的人们和我爱的人们
也许今年是个好机会,虽然不能完全停止忙碌的步伐,不过在转角处休息时,可以更多的陪陪他她们,
常回家看看.
=======================================================
昨天所有的荣誉,已变成遥远的回忆.
勤勤苦苦已度过半生,今夜重又走入风雨.
我不能随波浮沉,为了我致爱的亲人.
再苦再难也要坚强,只为那些期待眼神.
心若在梦就在,天地之间还有真爱
看成败人生豪迈,只不过是从头再来
昨天所有的荣誉,已变成遥远的回忆.
勤勤苦苦已度过半生,今夜重又走入风雨.
我不能随波浮沉,为了我致爱的亲人.
再苦再难也要坚强,只为那些期待眼神.
心若在梦就在,天地之间还有真爱
看成败人生豪迈,只不过是从头再来
心若在梦就在,天地之间还有真爱
看成败人生豪迈,只不过是从头再来
心若在梦就在,天地之间还有真爱
看成败人生豪迈,只不过是从头再来
心若在梦就在,天地之间还有真爱
看成败人生豪迈,只不过是从头再来
心若在梦就在,天地之间还有真爱
看成败人生豪迈,只不过是从头再来
心若在梦就在,天地之间还有真爱
看成败人生豪迈,只不过是从头再来
分享本文
]]></description>
			<content:encoded><![CDATA[<p>新年展望刚过,农历年又来了.也许按照中国人的传统,新一年还是以春节为开始吧?<br />
对我来说,是需要重新规划下今年的事情了<br />
俗话说计划赶不上变化,最近的变化是快了些,明年/今年的wishlist也要立即更新了.</p>
<p>总结一下:<br />
1. 弄清楚今后5年的目标,找到自己要做的事情<br />
虽然要低头拉车,但更要抬头看路,对我这头小毛驴来说更是如此.<br />
路上有很多分岔,没看清楚不要轻易动,看清楚了就要不撞南墙不回头.<br />
走过的路,就不要后悔.<br />
虽然目前还是比较迷茫,不过希望今年自己能看清楚,确定自己今后5-10年可以为之奋斗的目标.</p>
<p>2. 学习学习再学习<br />
自己的知识面不够广,不够专,深,这需要加强.我需要把自己的专业知识重新温习下,呵呵,<br />
(我的专业是财务,可不是计算机阿.)</p>
<p>3.坚持是第一原则<br />
也许很多人说我是固执,不过我认为是一种坚持.坚持和固执的区别在于它所支撑的理论基础是否依然有效.</p>
<p>4.拓宽自己的业务分析设计能力<br />
很多人认为我是技术人员,我自己并不这样认为.从我自己的经历来说,真正从事技术时间并不那么多.<br />
业务人员没有我技术能力好,技术人员没有我业务能力好.呵呵,这是理想目标</p>
<p>5.增强个人的技术能力,做点实事<br />
要自己认真评价,我认为自己并没有特别精通的技术,算是个杂家吧.很多东西都懂些,但是都不能甚解,<br />
此外底子差,基本功不扎实,这些都是弱点.如今,年纪大了,脑子也不行了,和后来的其他同事比,有点跟不上了,呵呵.<br />
另外,最主要的是能够踏踏实实的做点事,不要好高骛远,眼高手低.<br />
再细化一下,我想做点php extension,perl的应用,ruby的实践,这方面还是有兴趣的.</p>
<p>6.有所舍 有所得<br />
这个道理谁都明白,但是10有8,9很难为之. 很多东西如果不能舍弃,永远会为之奴役.<br />
我不买房,因为我不想变成房奴.同样,我也不应被其他东西迷惑,丢掉自我.<br />
舍弃,很难作到,但,有时候只能这样.</p>
<p>7.把更多的时间给爱我的人们和我爱的人们<br />
也许今年是个好机会,虽然不能完全停止忙碌的步伐,不过在转角处休息时,可以更多的陪陪他她们,<br />
常回家看看.</p>
<p>=======================================================<br />
昨天所有的荣誉,已变成遥远的回忆.<br />
勤勤苦苦已度过半生,今夜重又走入风雨.<br />
我不能随波浮沉,为了我致爱的亲人.<br />
再苦再难也要坚强,只为那些期待眼神.<br />
心若在梦就在,天地之间还有真爱<br />
看成败人生豪迈,只不过是从头再来<br />
昨天所有的荣誉,已变成遥远的回忆.<br />
勤勤苦苦已度过半生,今夜重又走入风雨.<br />
我不能随波浮沉,为了我致爱的亲人.<br />
再苦再难也要坚强,只为那些期待眼神.<br />
心若在梦就在,天地之间还有真爱<br />
看成败人生豪迈,只不过是从头再来<br />
心若在梦就在,天地之间还有真爱<br />
看成败人生豪迈,只不过是从头再来<br />
心若在梦就在,天地之间还有真爱<br />
看成败人生豪迈,只不过是从头再来<br />
心若在梦就在,天地之间还有真爱<br />
看成败人生豪迈,只不过是从头再来<br />
心若在梦就在,天地之间还有真爱<br />
看成败人生豪迈,只不过是从头再来<br />
心若在梦就在,天地之间还有真爱<br />
看成败人生豪迈,只不过是从头再来</p>
<p class="akst_link"><a rel="nofollow" href="http://blog.chinavisual.com/nightsailer/?p=119&amp;akst_action=share-this"  title="推荐给朋友, 提交到del.icio.us, 等等." id="akst_link_119" class="akst_share_link">分享本文</a>
</p>]]></content:encoded>
			<wfw:commentRss>http://blog.chinavisual.com/nightsailer/2008/02/03/11202054239/feed/</wfw:commentRss>
		</item>
		<item>
		<title>我对应用框架的一些思考 &#8212; (735)</title>
		<link>http://blog.chinavisual.com/nightsailer/2008/01/27/11201410108/</link>
		<comments>http://blog.chinavisual.com/nightsailer/2008/01/27/11201410108/#comments</comments>
		<pubDate>Sun, 27 Jan 2008 05:01:48 +0000</pubDate>
		<dc:creator>nightsailer</dc:creator>
		
		<category>doggy</category>
<category>doggy</category><category>PHP框架</category>
		<guid isPermaLink="false">http://blog.chinavisual.com/nightsailer/2008/01/27/11201410108/</guid>
		<description><![CDATA[关于框架(FrameWork),尤其是PHP开发框架,现在真是漫天飞舞,让人眼花缭乱.想当初我设计第一个所谓的框架时,
PHP可用的框架基本上是空白,所以很多东西是参照Java的特点来作的,那时年轻,也有些轻狂,以为框架就这么容易做出来了.
设计框架会有一些偏差:
首先一个问题,框架=类库的聚合. 这种情况一般是设计者有些代码开发的经验,但是缺乏更广的知识沉淀.不经历风雨怎见
彩虹,如果没有涉足多个领域的痛苦折磨,仅仅在某个,某些项目甚至某个开发语言上有些涉足,就想,框架不过如此而已.于是乎,
框架就在复制粘贴的过程中产生了.
其实,一个框架代表的是一个思想,一种哲学,类库只是这种哲学的附属品罢了.
第二个问题是设计过度,偏离了实用. 这种问题产生于一些比较追求完美主义者甚至是大师,为了完美,设计而设计. 比如spring在最初版本中,
其MVC就有些不太实用的地方,这点对比webwork/xwork就能发现,不过后来随着使用者的增多和流行,这些问题也很快被消除.
看来,实践是检验真理的唯一标准.
上面2个问题在我身上都印证过. 尤其是第二个问题更为明显,自身功力不足,却强行希望看上去很美,导致了现实和理想之间的差距.所以,在doggy之前,
我虽然也自己实验过一些原型,不过很快就被扔掉了.
现在,在作doggy的实现时,我更多的是考虑,哪些功能是确实需要的,哪些是体现我的理念的,后者是首要实现的.
比如,doggy的一个最重要的思想是:支持TDD开发的模式,测试先行,测试驱动. 因此,对于测试的支持是首要必备的,
此外,对于持续构建,项目部署分发,也是实际中很现实的问题,这些也需要重点考虑.
至于扩展性则放在第三位,这里所谓的扩展,并未局限于框架代码本身,而是和整个系统的部署,所谓网站的系统架构上综合考虑的.
例如,在存储层的扩展,是需要考虑能否支持分布式存储,本机开发是一回事,但是能否部署到如mogilefs,hardoop.
如何支持fastcgi的部署,如何最大化利用lighttpd,nginx,varnish.
缓存上,3级缓存中,各级缓存在实际中如何去实现,这些需要doggy去支持,否则就无法扩展系统.
比如,在cms中,多数文章是可以使用静态文件生成,并分发到cdn等负载钧衡网络中,那么如何过期,如何刷新,
则需要考虑cdn网络如何去构建,是用nginx?nfs共享,磁盘阵列gfs?还是用squid,varnish的反向代理?
这些都是doggy需要去考虑的.
当构建web2.0的应用时,需要考虑的是另一种情况,此时,单纯采用静态化已经解决不了问题,那么需要使用
局部缓存,解决并发的数据读写,如何保证数据的实时更新和同步&#8230;.
再比如,确保应用服务和静态服务的分离,项目的开发和部署的隔离&#8230;
因此,对我而言,应用框架需要解决不仅仅是代码层的优化,更要解决的是一些实际的应用.doggy框架,我姑且
仍认为它是一个应用框架,在应用层面则是提供一个解决这些问题的方案,这是我所关注的.
而其他的一些东西,我认为并不重要,比如,url/action的route方式,doggy只支持一种,足够.为什么?因为我可以通过
其他的方式去弥补,比如可以在Nginx的rewrite实现,可以使用lighttpd的lua实现,这些方案的效率远远高于
PHP,那么何必去实现这些吃力不讨好的东西呢.
因此,doggy不是通用的,它需要unix环境,不支持windows的部署,开发环境最佳是linux/osx,window则需要使用cygwin,必须使用一些
定制的pecl extension,PHP需要作一些特定的优化,webserver需要最适合的等等.
也许,我是在自娱自乐,但确实好用.

分享本文
]]></description>
			<content:encoded><![CDATA[<p>关于框架(FrameWork),尤其是PHP开发框架,现在真是漫天飞舞,让人眼花缭乱.想当初我设计第一个所谓的框架时,<br />
PHP可用的框架基本上是空白,所以很多东西是参照Java的特点来作的,那时年轻,也有些轻狂,以为框架就这么容易做出来了.</p>
<p>设计框架会有一些偏差:<br />
首先一个问题,框架=类库的聚合. 这种情况一般是设计者有些代码开发的经验,但是缺乏更广的知识沉淀.不经历风雨怎见<br />
彩虹,如果没有涉足多个领域的痛苦折磨,仅仅在某个,某些项目甚至某个开发语言上有些涉足,就想,框架不过如此而已.于是乎,<br />
框架就在复制粘贴的过程中产生了.<br />
其实,一个框架代表的是一个思想,一种哲学,类库只是这种哲学的附属品罢了.</p>
<p>第二个问题是设计过度,偏离了实用. 这种问题产生于一些比较追求完美主义者甚至是大师,为了完美,设计而设计. 比如spring在最初版本中,<br />
其MVC就有些不太实用的地方,这点对比webwork/xwork就能发现,不过后来随着使用者的增多和流行,这些问题也很快被消除.<br />
看来,实践是检验真理的唯一标准.</p>
<p>上面2个问题在我身上都印证过. 尤其是第二个问题更为明显,自身功力不足,却强行希望看上去很美,导致了现实和理想之间的差距.所以,在doggy之前,<br />
我虽然也自己实验过一些原型,不过很快就被扔掉了.</p>
<p>现在,在作doggy的实现时,我更多的是考虑,哪些功能是确实需要的,哪些是体现我的理念的,后者是首要实现的.<br />
比如,doggy的一个最重要的思想是:支持TDD开发的模式,测试先行,测试驱动. 因此,对于测试的支持是首要必备的,<br />
此外,对于持续构建,项目部署分发,也是实际中很现实的问题,这些也需要重点考虑.<br />
至于扩展性则放在第三位,这里所谓的扩展,并未局限于框架代码本身,而是和整个系统的部署,所谓网站的系统架构上综合考虑的.<br />
例如,在存储层的扩展,是需要考虑能否支持分布式存储,本机开发是一回事,但是能否部署到如mogilefs,hardoop.<br />
如何支持fastcgi的部署,如何最大化利用lighttpd,nginx,varnish.<br />
缓存上,3级缓存中,各级缓存在实际中如何去实现,这些需要doggy去支持,否则就无法扩展系统.<br />
比如,在cms中,多数文章是可以使用静态文件生成,并分发到cdn等负载钧衡网络中,那么如何过期,如何刷新,<br />
则需要考虑cdn网络如何去构建,是用nginx?nfs共享,磁盘阵列gfs?还是用squid,varnish的反向代理?<br />
这些都是doggy需要去考虑的.<br />
当构建web2.0的应用时,需要考虑的是另一种情况,此时,单纯采用静态化已经解决不了问题,那么需要使用<br />
局部缓存,解决并发的数据读写,如何保证数据的实时更新和同步&#8230;.<br />
再比如,确保应用服务和静态服务的分离,项目的开发和部署的隔离&#8230;</p>
<p>因此,对我而言,应用框架需要解决不仅仅是代码层的优化,更要解决的是一些实际的应用.doggy框架,我姑且<br />
仍认为它是一个应用框架,在应用层面则是提供一个解决这些问题的方案,这是我所关注的.</p>
<p>而其他的一些东西,我认为并不重要,比如,url/action的route方式,doggy只支持一种,足够.为什么?因为我可以通过<br />
其他的方式去弥补,比如可以在Nginx的rewrite实现,可以使用lighttpd的lua实现,这些方案的效率远远高于<br />
PHP,那么何必去实现这些吃力不讨好的东西呢.</p>
<p>因此,doggy不是通用的,它需要unix环境,不支持windows的部署,开发环境最佳是linux/osx,window则需要使用cygwin,必须使用一些<br />
定制的pecl extension,PHP需要作一些特定的优化,webserver需要最适合的等等.</p>
<p>也许,我是在自娱自乐,但确实好用.
</p>
<p class="akst_link"><a rel="nofollow" href="http://blog.chinavisual.com/nightsailer/?p=118&amp;akst_action=share-this"  title="推荐给朋友, 提交到del.icio.us, 等等." id="akst_link_118" class="akst_share_link">分享本文</a>
</p>]]></content:encoded>
			<wfw:commentRss>http://blog.chinavisual.com/nightsailer/2008/01/27/11201410108/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Imagick进步真快阿 &#8212; (750)</title>
		<link>http://blog.chinavisual.com/nightsailer/2008/01/27/11201406077/</link>
		<comments>http://blog.chinavisual.com/nightsailer/2008/01/27/11201406077/#comments</comments>
		<pubDate>Sun, 27 Jan 2008 03:54:37 +0000</pubDate>
		<dc:creator>nightsailer</dc:creator>
		
		<category>doggy</category>
<category>imagick for PHP</category><category>MagickWand</category>
		<guid isPermaLink="false">http://blog.chinavisual.com/nightsailer/2008/01/27/11201406077/</guid>
		<description><![CDATA[在去年设计Doggy框架时,我选择MagickWand作为主要支持的图片操作的extension库.
当时列入我眼中的候选有magickwand和imagick. 有人可能会说,为什么不用gd2?
因为gd不论是性能还是功能都太弱了,作为普通的图片处理可以勉强胜任,但是如果需要实现类似flickr那样
的图片处理任务就歇菜了. 而ImageMagick则是很好很强大,可以轻易将很红很创意的图片变成
很黄很暴力,呵呵.
当时imagick使用的人很少,而且稳定性也不高,对于magickwand,我以前则用过,因此就选择了magickwand for php.
不过当时对于magickwand并不满意,因为其实它不过是magickwand的一个wrapper而已.
和gd一样需要resource handler, 并不符合我喜欢的OO的精神.
这几天又重新看了下imagick,版本升级到2.x,功能也改进很多.从作者的博客上看了些介绍,让我有些心动了.
由于是PHP native的extension,使用上也是OO,而且可以继承并扩展原生类,这点确实够诱惑,够强大.
计划假期启动doggy2的设计,我想是不是考虑换成imagick呢

分享本文
]]></description>
			<content:encoded><![CDATA[<p>在去年设计Doggy框架时,我选择MagickWand作为主要支持的图片操作的extension库.<br />
当时列入我眼中的候选有magickwand和imagick. 有人可能会说,为什么不用gd2?<br />
因为gd不论是性能还是功能都太弱了,作为普通的图片处理可以勉强胜任,但是如果需要实现类似flickr那样<br />
的图片处理任务就歇菜了. 而ImageMagick则是很好很强大,可以轻易将很红很创意的图片变成<br />
很黄很暴力,呵呵.<br />
当时imagick使用的人很少,而且稳定性也不高,对于magickwand,我以前则用过,因此就选择了magickwand for php.<br />
不过当时对于magickwand并不满意,因为其实它不过是magickwand的一个wrapper而已.<br />
和gd一样需要resource handler, 并不符合我喜欢的OO的精神.<br />
这几天又重新看了下imagick,版本升级到2.x,功能也改进很多.从作者的博客上看了些介绍,让我有些心动了.<br />
由于是PHP native的extension,使用上也是OO,而且可以继承并扩展原生类,这点确实够诱惑,够强大.<br />
计划假期启动doggy2的设计,我想是不是考虑换成imagick呢
</p>
<p class="akst_link"><a rel="nofollow" href="http://blog.chinavisual.com/nightsailer/?p=117&amp;akst_action=share-this"  title="推荐给朋友, 提交到del.icio.us, 等等." id="akst_link_117" class="akst_share_link">分享本文</a>
</p>]]></content:encoded>
			<wfw:commentRss>http://blog.chinavisual.com/nightsailer/2008/01/27/11201406077/feed/</wfw:commentRss>
		</item>
		<item>
		<title>一个奇怪现象带来的nginx对于fastcgi的优化 &#8212; (1170)</title>
		<link>http://blog.chinavisual.com/nightsailer/2008/01/23/11201085151/</link>
		<comments>http://blog.chinavisual.com/nightsailer/2008/01/23/11201085151/#comments</comments>
		<pubDate>Wed, 23 Jan 2008 10:45:51 +0000</pubDate>
		<dc:creator>nightsailer</dc:creator>
		
		<category>technotes</category>
<category>nginx fastcgi</category>
		<guid isPermaLink="false">http://blog.chinavisual.com/nightsailer/2008/01/23/11201085151/</guid>
		<description><![CDATA[在作工作统计表的时候,发现一个特别蹊跷的问题:
页面在我的mac/leopard下一切都很好,包括Safari/Firefox,但是后来大家反应,
在Windows上,IE下只能看到页面的一半,后半部分完全没有,而且更为怪异的是,
Firefox也是这样.最最令人不解的是,只有在笔记本上的windows会出现这种情况,
而使用台式机的用户,IE6和Firefox都能正常.
开始以为是程序的问题,仔细检查,反复调试,都没有.我在自己的mac的windows虚拟机
和T41上也重现了这个问题.
一直非常郁闷,我的程序不会有如此智能阿?竟然 能分辨出是台式机还是笔记本?
呵呵.
终于,后来看nginx的文档时发现,nginx有个fastcgi_buffers的参数,默认,是4k或者8k.
也就是说,nginx每次会从后端的fastcgi接受这么多的数据放在缓冲中,依次输出.
这点nginx和lighttpd不同,lighttpd会一次性接收后全部输出.
而我原来的keep_alive设置为0,这样,windows上会认为此次的tcp链接已经中断,会复位,
当然这是我的猜测.
我于是作了优化,将8k设置128k,这样可以比较好的优化fastcgi的效率,保证一次性就能接受全部的输出.
终于,后来看nginx的文档时发现,nginx有个fastcgi_buffers的参数,默认,是4k或者8k.
也就是说,nginx每次会从后端的fastcgi接受这么多的数据放在缓冲中,依次输出.
这点nginx和lighttpd不同,lighttpd会一次性接收后全部输出.
而我原来的keep_alive设置为0,这样,windows上会认为此次的tcp链接已经中断,会复位,
当然这是我的猜测.
我于是作了优化,将8k设置128k,这样可以比较好的优化fastcgi的效率,保证一次性就能接受全部的输出.
于是乎,一切就正常了.

分享本文
]]></description>
			<content:encoded><![CDATA[<p>在作工作统计表的时候,发现一个特别蹊跷的问题:<br />
页面在我的mac/leopard下一切都很好,包括Safari/Firefox,但是后来大家反应,<br />
在Windows上,IE下只能看到页面的一半,后半部分完全没有,而且更为怪异的是,<br />
Firefox也是这样.最最令人不解的是,只有在笔记本上的windows会出现这种情况,<br />
而使用台式机的用户,IE6和Firefox都能正常.</p>
<p>开始以为是程序的问题,仔细检查,反复调试,都没有.我在自己的mac的windows虚拟机<br />
和T41上也重现了这个问题.</p>
<p>一直非常郁闷,我的程序不会有如此智能阿?竟然 能分辨出是台式机还是笔记本?<br />
呵呵.</p>
<p>终于,后来看nginx的文档时发现,nginx有个fastcgi_buffers的参数,默认,是4k或者8k.<br />
也就是说,nginx每次会从后端的fastcgi接受这么多的数据放在缓冲中,依次输出.<br />
这点nginx和lighttpd不同,lighttpd会一次性接收后全部输出.<br />
而我原来的keep_alive设置为0,这样,windows上会认为此次的tcp链接已经中断,会复位,<br />
当然这是我的猜测.<br />
我于是作了优化,将8k设置128k,这样可以比较好的优化fastcgi的效率,保证一次性就能接受全部的输出.</p>
<p>终于,后来看nginx的文档时发现,nginx有个fastcgi_buffers的参数,默认,是4k或者8k.<br />
也就是说,nginx每次会从后端的fastcgi接受这么多的数据放在缓冲中,依次输出.<br />
这点nginx和lighttpd不同,lighttpd会一次性接收后全部输出.<br />
而我原来的keep_alive设置为0,这样,windows上会认为此次的tcp链接已经中断,会复位,<br />
当然这是我的猜测.<br />
我于是作了优化,将8k设置128k,这样可以比较好的优化fastcgi的效率,保证一次性就能接受全部的输出.</p>
<p>于是乎,一切就正常了.
</p>
<p class="akst_link"><a rel="nofollow" href="http://blog.chinavisual.com/nightsailer/?p=116&amp;akst_action=share-this"  title="推荐给朋友, 提交到del.icio.us, 等等." id="akst_link_116" class="akst_share_link">分享本文</a>
</p>]]></content:encoded>
			<wfw:commentRss>http://blog.chinavisual.com/nightsailer/2008/01/23/11201085151/feed/</wfw:commentRss>
		</item>
		<item>
		<title>吃狗食运动转移战场 &#8212; (701)</title>
		<link>http://blog.chinavisual.com/nightsailer/2008/01/19/11200711455/</link>
		<comments>http://blog.chinavisual.com/nightsailer/2008/01/19/11200711455/#comments</comments>
		<pubDate>Sat, 19 Jan 2008 02:57:35 +0000</pubDate>
		<dc:creator>nightsailer</dc:creator>
		
		<category>视觉黑板报</category>

		<guid isPermaLink="false">http://blog.chinavisual.com/nightsailer/2008/01/19/11200711455/</guid>
		<description><![CDATA[新社区上线了，我的战场也要转移了。为了自我体验，本blog暂停更新。
相关的想法和讨论转到我的圈子去。

分享本文
]]></description>
			<content:encoded><![CDATA[<p>新社区上线了，我的战场也要转移了。为了自我体验，本blog暂停更新。<br />
相关的想法和讨论转到我的圈子去。
</p>
<p class="akst_link"><a rel="nofollow" href="http://blog.chinavisual.com/nightsailer/?p=115&amp;akst_action=share-this"  title="推荐给朋友, 提交到del.icio.us, 等等." id="akst_link_115" class="akst_share_link">分享本文</a>
</p>]]></content:encoded>
			<wfw:commentRss>http://blog.chinavisual.com/nightsailer/2008/01/19/11200711455/feed/</wfw:commentRss>
		</item>
		<item>
		<title>新的cache集群投入使用 &#8212; (2283)</title>
		<link>http://blog.chinavisual.com/nightsailer/2008/01/07/11199639583/</link>
		<comments>http://blog.chinavisual.com/nightsailer/2008/01/07/11199639583/#comments</comments>
		<pubDate>Sun, 06 Jan 2008 17:13:03 +0000</pubDate>
		<dc:creator>nightsailer</dc:creator>
		
		<category>视觉黑板报</category>
<category>视觉中国</category>
		<guid isPermaLink="false">http://blog.chinavisual.com/nightsailer/2008/01/07/11199639583/</guid>
		<description><![CDATA[新社区上线，我们也投入了全新的web缓存和加速的集群系统，
博客从现在开始将和新社区一起，运行在这套新的cache集群上，
由于还是测试期，因此目前只是部署了基本的加速服务，
很快，后期还会陆续优化。
大家可以看看是否有些改善。
分享本文
]]></description>
			<content:encoded><![CDATA[<p>新社区上线，我们也投入了全新的web缓存和加速的集群系统，<br />
博客从现在开始将和新社区一起，运行在这套新的cache集群上，<br />
由于还是测试期，因此目前只是部署了基本的加速服务，<br />
很快，后期还会陆续优化。<br />
大家可以看看是否有些改善。</p>
<p class="akst_link"><a rel="nofollow" href="http://blog.chinavisual.com/nightsailer/?p=114&amp;akst_action=share-this"  title="推荐给朋友, 提交到del.icio.us, 等等." id="akst_link_114" class="akst_share_link">分享本文</a>
</p>]]></content:encoded>
			<wfw:commentRss>http://blog.chinavisual.com/nightsailer/2008/01/07/11199639583/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
