新的据点 — (375)

feelings No Comments »

终于注册到了一个比较满意的域名:
night9.cn

我在01年的时候注册过nightsailer.com,不过后来过期也没有续费
这个名字不太好记,也容易拼错,Night9还是比较好记的
用cn是为了表示自己是中国人,呵呵,现在对.com早就不感冒了,
现在最火的还是cn,对不?

如果有订阅现在这个博客的rss的,麻烦更新下订阅的地址了.
(估计也没啥人,呵呵)

iphone用的很不错. — (64787)

开发 4 Comments »

上周日终于把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,不过下载速度太慢,明天再说了.

MarsEdit-Blog编辑器 — (428)

mac 2 Comments »

图片 2.png

今天试用了一下,非常不错,对于wordpress的支持还是很好,此外也支持多数的开源的blog软件.
不过,是否支持国内的如新浪,sohu等不得而知.

现在,可以像本地一样管理不同的blog了,对于我来说,可以更方便的把文章在不同的blog之间进行同步.

doggy和mysqlnd — (509)

doggy No Comments »

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框架中)
应用是没有问题的.

鼠年展望-重头再来 — (542)

feelings 3 Comments »

新年展望刚过,农历年又来了.也许按照中国人的传统,新一年还是以春节为开始吧?
对我来说,是需要重新规划下今年的事情了
俗话说计划赶不上变化,最近的变化是快了些,明年/今年的wishlist也要立即更新了.

总结一下:
1. 弄清楚今后5年的目标,找到自己要做的事情
虽然要低头拉车,但更要抬头看路,对我这头小毛驴来说更是如此.
路上有很多分岔,没看清楚不要轻易动,看清楚了就要不撞南墙不回头.
走过的路,就不要后悔.
虽然目前还是比较迷茫,不过希望今年自己能看清楚,确定自己今后5-10年可以为之奋斗的目标.

2. 学习学习再学习
自己的知识面不够广,不够专,深,这需要加强.我需要把自己的专业知识重新温习下,呵呵,
(我的专业是财务,可不是计算机阿.)

3.坚持是第一原则
也许很多人说我是固执,不过我认为是一种坚持.坚持和固执的区别在于它所支撑的理论基础是否依然有效.

4.拓宽自己的业务分析设计能力
很多人认为我是技术人员,我自己并不这样认为.从我自己的经历来说,真正从事技术时间并不那么多.
业务人员没有我技术能力好,技术人员没有我业务能力好.呵呵,这是理想目标

5.增强个人的技术能力,做点实事
要自己认真评价,我认为自己并没有特别精通的技术,算是个杂家吧.很多东西都懂些,但是都不能甚解,
此外底子差,基本功不扎实,这些都是弱点.如今,年纪大了,脑子也不行了,和后来的其他同事比,有点跟不上了,呵呵.
另外,最主要的是能够踏踏实实的做点事,不要好高骛远,眼高手低.
再细化一下,我想做点php extension,perl的应用,ruby的实践,这方面还是有兴趣的.

6.有所舍 有所得
这个道理谁都明白,但是10有8,9很难为之. 很多东西如果不能舍弃,永远会为之奴役.
我不买房,因为我不想变成房奴.同样,我也不应被其他东西迷惑,丢掉自我.
舍弃,很难作到,但,有时候只能这样.

7.把更多的时间给爱我的人们和我爱的人们
也许今年是个好机会,虽然不能完全停止忙碌的步伐,不过在转角处休息时,可以更多的陪陪他她们,
常回家看看.

=======================================================
昨天所有的荣誉,已变成遥远的回忆.
勤勤苦苦已度过半生,今夜重又走入风雨.
我不能随波浮沉,为了我致爱的亲人.
再苦再难也要坚强,只为那些期待眼神.
心若在梦就在,天地之间还有真爱
看成败人生豪迈,只不过是从头再来
昨天所有的荣誉,已变成遥远的回忆.
勤勤苦苦已度过半生,今夜重又走入风雨.
我不能随波浮沉,为了我致爱的亲人.
再苦再难也要坚强,只为那些期待眼神.
心若在梦就在,天地之间还有真爱
看成败人生豪迈,只不过是从头再来
心若在梦就在,天地之间还有真爱
看成败人生豪迈,只不过是从头再来
心若在梦就在,天地之间还有真爱
看成败人生豪迈,只不过是从头再来
心若在梦就在,天地之间还有真爱
看成败人生豪迈,只不过是从头再来
心若在梦就在,天地之间还有真爱
看成败人生豪迈,只不过是从头再来
心若在梦就在,天地之间还有真爱
看成败人生豪迈,只不过是从头再来

我对应用框架的一些思考 — (614)

doggy 1 Comment »

关于框架(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的应用时,需要考虑的是另一种情况,此时,单纯采用静态化已经解决不了问题,那么需要使用
局部缓存,解决并发的数据读写,如何保证数据的实时更新和同步….
再比如,确保应用服务和静态服务的分离,项目的开发和部署的隔离…

因此,对我而言,应用框架需要解决不仅仅是代码层的优化,更要解决的是一些实际的应用.doggy框架,我姑且
仍认为它是一个应用框架,在应用层面则是提供一个解决这些问题的方案,这是我所关注的.

而其他的一些东西,我认为并不重要,比如,url/action的route方式,doggy只支持一种,足够.为什么?因为我可以通过
其他的方式去弥补,比如可以在Nginx的rewrite实现,可以使用lighttpd的lua实现,这些方案的效率远远高于
PHP,那么何必去实现这些吃力不讨好的东西呢.

因此,doggy不是通用的,它需要unix环境,不支持windows的部署,开发环境最佳是linux/osx,window则需要使用cygwin,必须使用一些
定制的pecl extension,PHP需要作一些特定的优化,webserver需要最适合的等等.

也许,我是在自娱自乐,但确实好用.

Imagick进步真快阿 — (560)

doggy No Comments »

在去年设计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呢

一个奇怪现象带来的nginx对于fastcgi的优化 — (879)

technotes No Comments »

在作工作统计表的时候,发现一个特别蹊跷的问题:
页面在我的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的效率,保证一次性就能接受全部的输出.

于是乎,一切就正常了.

吃狗食运动转移战场 — (567)

视觉黑板报 No Comments »

新社区上线了,我的战场也要转移了。为了自我体验,本blog暂停更新。
相关的想法和讨论转到我的圈子去。

新的cache集群投入使用 — (2068)

视觉黑板报 No Comments »

新社区上线,我们也投入了全新的web缓存和加速的集群系统,
博客从现在开始将和新社区一起,运行在这套新的cache集群上,
由于还是测试期,因此目前只是部署了基本的加速服务,
很快,后期还会陆续优化。
大家可以看看是否有些改善。

版权所有 2001-2007 视觉中国(ChinaVisual.com) 最佳分辨率 1024×768
Copyright © 2001-2007 ChinaVisual.com Incorporated. All rights reserved.
京ICP许可证041075号
电子公告服务(BBS)审批[2004]字第1438号