2010年8月13日 | 分类: 兴趣所在 | 标签: ,

终于这个系统可以告一段落了,进过了这几天的赶工,搁置各种工作,毅然上线了这个系统,链接http://bbs.byr.cn/chat。之所以要做这个类似于omegle的东西,也只是想熟悉一下memcached的使用,下面稍微为阐述一下系统思路:

首先是交互方式的确定,以现在的web技术水平,这种web在线聊天系统还是会选用定期的轮询作为技术的出发点,基于html5的websocket长连接在近期是有些文章但我看过的demo还是没有,另外论坛的访问很大一部分都是ie浏览器,所以不可能用这么新的技术。

其次是数据的存储,当然我最初就是为了用memcached而做这个系统,当然memcached也挺适合这种短时间内高并发的读写。其实在写的过程中还考虑过用传统的关系数据库和NoSql的数据库。其实用数据库也是可行的,但是要多做一些操作,比如过期的检测,由于基于web的聊天系统对于被动断线是不可能捕捉到的,这就意味这系统需要及时踢除没有心跳的用户。使用缓存系统能很好的解决这个问题,而对于数据库则需要自行维护数据的过期。这里提到两种不同的数据库还是有本质的区别,memcached与nosql对于数据的存储本质上是一样的或者也可以把memcached也归为nosql的一种。这种数据库相比于关系数据库来说在条件查询上捉襟见肘,这就需要我们不仅维护数据还要维护数据的索引,这也是我在写的过程中渐渐发现的(原来没有做过nosql的开发)。其实用mysql的内存表来做这个应用,我想也是一种很好的选择。

技术方案确定后就是数据结构,由于是kv系统,必须自行维护数据的索引供搜索使用,每个聊天的用户都有相应一个uid作为UUID,每个用户的数据在memcached中有一条记录,也就是相应的用户对象的序列化值。一个用户的数据包括

uid:唯一确定身份的id
id:用户id
cuid:陌生人uid
lat:last access time
status:用户状态
action:用户行为
queue:消息数组

然后整个系统无非就是一个状态机,根据不同的请求跳转到不同的状态。这里说一下消息的传递,用户发送消息先存储存在自己的queue中,陌生人轮询,如果queue中存在消息就取回来并清空queue数组,这样用户消息也不会长时间的积累,系统也不保存任何用户聊天记录。

其余的就没什么好说的了,就是一些js的交互,自己js也写的够寒碜的,有点惨不忍睹的地步了。这个系统暂且就这样吧,也没有太多时间进行维护了,希望以后有人能把他做的更好。下面记录一下memcached的相关安装

memcached直接在官方网站下载源码包即可,也就是其服务器端。地址是:http://memcached.org/解压缩后

#./configure --prefix=/usr/local/memcached
#make
#sudo make install

值得注意的是memcached需要libevent的支持,没有的话再configure会报错,这个直接可以再源上找到,安装libevent-devel就可以了。
memcached的使用方法很简单直接运行bin下memcached即可,-h选项有详细的参数说明,我的运行参数是:

memcached -d -m 128 -u root -p XXXX -c 256  -v

一般来说都是用root用户来运行,而且memcached如果监听了整个网络的话没有ACL的机制,这就意味着如果别人知道机器memcached的端口就可以直接通信了,这俨然是缺乏安全的行为。网上对此也有很多解决方法,比如说用内网的方式,memcached服务器在内网里面,这样外网的用户就不可能访问到了。当然在unix下最直接的方法就是用iptables,指定ip访问指定端口。

对于memcached的客户端,不同语言有不同的实现。在php中有两种客户端供选择memcache和memcached,后者看过去比前者功能稍多。我用的是前者,从http://pecl.php.net/package/memcache下载安装包,解压缩后

#phpize
#./configure --enable-memcache
#make

把编译出来的so文件在php.ini中加载即可

2010年8月12日 | 分类: 兴趣所在 | 标签:

很少写代码到这个点,为了整那个聊天程序差点把这个论坛都弄崩溃了。

晚上两点调试时突然整个系统报错,还是报一个数据库连接错误,可是我根本就没有用到cake任何model相关东西,真是把我郁闷到了,把测试站的框架文件也导过来了还是报错,最后只有跟踪框架的代码,但是毫无头绪。幸运的是最后居然自动好了,这我才想到可能是核心配置文件的缓存挂了,在没有任何代码改动的情况下只可能是这样了,不过现在还是不知道怎么引起的并且怎么就好了。太纠结了,弄了一个晚上。

还有那个纠结的编码,聊天系统在两个站上的代码完全一样,但是对ajax的编码处理却不一样,最后发现在非调试级别,RequestHandler的startup方法会自动header相应的Content-Type,真tmd的恶心,直接把startup方法屏蔽了。这些还是自己控制为好,特别是ajax这种需要utf-8编码的应用上。

今天被人来去看《唐山大地震》,一句话总结“悲剧中的喜剧” ,四周的人都哭的稀里哗啦的,我居然没哭额,不知道是我的问题还是电影的问题≡(▔﹏▔)≡。

2010年8月7日 | 分类: 兴趣所在 | 标签:

这篇感想本来很早就想写,但是由于自己对金融方面的认知基本在白痴阶段所以很怕在文章中大放厥词,不过一些可观的想法可以说说。我是在旅途的路上把这本书看完的,情节足够吸引人以至于我都没有感到旅途的疲劳。这本书很早就出版了,我现在才看的确out太久了,对于书的整体感觉用我在豆瓣上的评论就是“信不信由你”,可以说书的内容构造了一个相对完美的阴谋论,所谓阴谋论通常是指对历史或当代事件作出特别解释的说法。此类特别解释不同于一般广为接受的解释,将事件解释为个人或是团体秘密策划的结果。这本书的中心思想就是,当今世界金融行业其实被一小撮华尔街-伦敦的国际银行家所操控,他们脱离里政治,凌驾于政治之上,他们的目的是建立世界货币体系以垄断世界金融行业。有了这个中心思想,故事(这本书很像在讲故事)就从几百年前开始了,你会突然发现,原来历史其实是个巨大的阴谋。

罗斯柴尔德家族是这本书中提到最多的一个名字,当然作为金融白痴的我也是第一次听过。从网上的资料看这的确是一个很了不起的金融世家,在18,19世纪这个家族几乎垄断了整个世界金融业,书中第一章详细讲述了这个家族的发家史。当然这些历史应该不会有太多谬误,存在分歧的地方是罗斯柴尔德家族的现状,书中认为现在罗斯柴尔德家族还是具有起隐秘性,虽然不再是主流,但外人也并不知道其内在的运作模式,而且华尔街的银行巨擘们纷纷与此家族有密切联系,换句话说就是这个家族就是他们的祖宗。但百度百科里面有另一番解释“虽然罗斯柴尔德家族的产业规模已经很小,罗斯柴尔德银行集团一年的营业额不到100亿美元,利润不到30亿美元,估计其资本总额不会超过300亿美元,不到欧美大银行的一个零头。…罗斯柴尔德家族现在依然存在,也许他不像《货币战争》说的那样强大,但依然是世界上最富有的家族之一。一些欧美学者也对他进行过研究,不过在80年代,很多关于他的著作都奇怪的消失了,他的真实情况仍然充满谜团”。当然这段描述中还是体现了罗斯柴尔德家族的神秘性,但其真实面目也只能让读者自己去想象了。

接着文章矛头直指美联储,围绕着美联储的历史,大谈特谈美国历史,把美国独立战争,南北战争,各种总统遇刺,下台的故事都整了进来,说的很具有说服力。比如林肯遇刺是因为林肯发行了林肯绿币影响了金融家们发放货币的流通,n多总统的下台都是因为不支持美联储的建立(当时应该是美国的中央银行)。还有就是美联储的实质是私有的,是以少数几个国际银行家为核心的组织,即便是美联储的主席是由美国总统委任,但是这些都是过场,都是由哪些银行家操作的,因为文章在最开始的设定就是这些银行家是不适于任何国籍,他们脱离于国家,凌驾于政治。虽然主流媒体是不可能承认这种说法的,但是事实也许往往出乎意料,书中称这些银行家们不仅控制政权,也控制着媒体,控制了历史,为了就是让世人听不到,看不到,想不到这些东西。这样想来也许每个人都会不禁打个冷战,这就像matrix里面所描述的那样,你被控制了感官很行动,现实的你其实就在一个蛋里。不过话又说回来,如果这些事实真是金融界的最大秘密,书的作者又是怎样知道的呢,不仅如此他还把这些东西写了出来,还引起社会广泛关注,他不怕世界银行家暗地里把他做掉么,呵呵,这的确伤脑筋。

之后的讨论都基本围绕“金本位和当今货币系统的博弈”来展开的,这本书其实也是按照时间顺序写的,书越写到后面越接近当今社会。金本位的离去书中认为是近代金融界的最大阴谋,书中详细讲述了,国际银行家们怎样一步步把黄金踢出货币系统。当然在黄金之前还有白银什么的,但其他东西都是不堪一击的而黄金作为千百年来财富的象征,成为了当今货币系统最大的敌人。由于知识所限原来我也只知道模糊的金本位的概念,简单的说就是货币的发行是需要等值的黄金作为抵押,也就是说货币相当于是黄金的替代品,任何时候都能把货币兑换成黄金,而黄金则体现了人所得财富的积累。在金本位的体系中通胀几乎不会发生,有时候紧缩,因为任何货币都与黄金挂钩都与人的劳动挂钩,这些不是能凭空捏造的。对于现在货币系统,我还是从书中了解到的,结合网上的一些资料,我想书中所将的并不是假的。相当于现在的货币,比如美元已经没有足够的黄金做抵押,美元的发行是毫无顾虑的,他借用了美国的信誉,让大家都相信这种货币。书中说美元债务的体现,私有的美联储把政府的债务作为货币发行,由于政府的开销巨大,这些债务的利息都让很难还清,这样每年又需要增加很多债务,最后导致了还不清的债,而银行家们靠利息就把人民的劳动获取了。这种债务货币如果真被政府还清了,货币的意义就没有了,就失去了流通的能力,所以这将是一个恶性循环,国际银行家们永远是赢家。这种说法如果建立在美联储是私有的基础上就很可信了,可惜主流说法是美联储是国家控制的,当然货币的发行不可能是银行巨擘随心所欲的事情,但是世界货币体系脱离金本位的事实已经毋庸置疑,至于为什么要脱离,用银行家的话解释就是金本位限制了经济的发展,那确实,要有钱你得先劳动,劳动可没有印钞机那么快。

>对于近十几年的历史,书中也讲的挺多,比如泰国,日本的金融动荡,可以说几乎正确的预测了之后的次贷危机,还谈了美国发行的很多种金融衍生工具,包括哪些MBS,CDS,ABS,当然了有些多看着云里雾里的,如果要我现在来做总结就是这些金融衍生物将一切能作为货币的东西(包括风险,预言)都打包成一个产品,用来规避风险,书中的理解是这些东西是一种博弈,而且很多情况下是建立在数学模型之上,只要有理论上的利益可图,银行家就把这些付诸于显示,这些东西风险巨大(因为追求最大利益,风险成正比)大家都在挑战利益和风险的极限。如果不出事,大家都很高兴,一旦出事,连锁反应导致就是金融风暴。

一口气扯了太多,基本上是个人感想,碍于自己懂的实在太少,写不出什么高级的东西来,基本上是堆各种地方的概念,豆瓣上对这本书的讨论极为激烈,下面两篇文章很需要读一读,都很有意义:

货币战争,信or不信?一个普通人的视角
子虚乌有的“货币战争”

我还是同意第一篇文章中所说的债务货币的意义,轻量的债务货币能很好的刺激经济的发展。这本书更多的带给我的是一种新的视角和一种新的思考,发现自己对金融方面的认知太少而这个领域又如此的深奥,渐渐的我也有了浓厚的兴趣,在金融面前IT又能做什么呢?它体现了人的本能欲望,这才是每个人最根本的渴望!

2010年8月6日 | 分类: 那些奇葩 | 标签:
看的我都笑喷了,有些特别搞笑的标记出来了。
【策慌打白】(Cei Fong Da Pa)说谎话。
【策爷策娘】(Cei Ya Cei Niong)欺骗父母。意指什么人都敢骗。
【一式八贴】(Yi Si Ba Tie)形容物品或事情整理得齐备妥当。
【耶皮刮脸】(Ye Pi Gua Lian)厚着脸皮,不怕人讨厌。
【麻里企刻】(Ma Li Qi Kei)形容物件表面非常粗糙。
【赊牙咧齿】(Se Ea Lie Ci)牙齿不齐,延伸指物品破烂。
【作固认真】(Zo Gu Len Zen)非常认真。
【吓死巴人】(Ha Si Ba Nin)极肮脏。
【程东程西】(Cang Dong Cang Xi)总是理解错别人的话意。
【作神作脉】(Zo Xin Zo Me)故弄玄虚、故作神秘。
【白活新鲜】(Pa Wo Xin Xian)鲜活生猛。
【福气妥妥】(Fu Qi Tuo Tuo)形容人很有福气。
【约手匡脚】(Yo Xiu Kuang Jo)手舞足蹈,过度的肢体表现。
【翻兜缺灭】(Fan Dou Que Mie)咒骂语,意思是全部灭绝。
【冰冷悄静】(Bin Lang Qou Qiang)形容情景的冷清。
【多事劳谈】(Do Si Lao Tan)讲多余的或不该讲的话。
【瘟猪寻水】(Wen Zu Qin Sui)指自找麻烦。
【白眼一剁】(Pa Ean Yi Do)失望、失算后的表情。
【蹊跷古怪】(Qi Qiao Gu Guai)古怪,不合常理。
【夯不啷当】(Hang Bu Lang Dang)(物或事)胡乱一大堆。
【阴死痨病】(Yin Si Lao Piang)指人阴险。
【搭盆搭钵】(Da Pen Da Bo)摔打物品发泄气愤。
【横眉竖眼】(Wang Mei Su Ean)横蛮的样子。
【翻精撂怪】(Fan Jiang Liao Guai)古怪,出格。
【皮塌毛落】(Pi Ta Mao Lo)比喻人受损失后的狼狈样子。
【不得耳信】(Bu De Er Xin)一点都不知道消息。
【正搭八气】(Zen Da Ba Qi)正规,正式。
【赤膊罗汉】(Ca Bo Lo Hon)指流氓、地痞。
【学嘴学舌】(Ho Zui Ho Se)背地传话,搬弄是非。
【瘸手拐脚】(Jue Xiu Guai Jio)形容人手脚苯拙,不会做事。
【起头发始】(Qi Tou Fa Si)起初。
【安心安意】(Eon Xin Eon Yi)放心,无忧虑。
【轰动叭节】(Fun Ton Ba Jie)非常轰动的样子。
【二五八撑】(Er En Ba Cang)半懂不懂,半吊子,半桶水。
【送肉上砧】(Son Niu Song Zen)比喻自投罗网。
【四四登方】(Si Si Den Fong)方方正正。
【强横霸道】(Qong Wang Ba Tao)仗势欺压别人。
【佛头颠脑】(Fu Tou Dian Lao)晕头颠脑。
【扇头搭脑】(Sen Tou Da Lao)笨头笨脑。
【三日两头】(San Ni Liang Tou)隔三岔五。
【讨好卖乖】(Tao Hao Mai Guai)讨好。
【天聋地哑】(Tian Long Ti Ea)胆大妄为,不知利害。
【一心一头】(Yi Xin Yi Tou)一心一意。
【前纵后仰】(Qian Zong Hou Niong)前俯后仰,形容大笑或困倦得直不起腰的样子
【不警不觉】(Bu Jiang Bu Go)不知不觉。
【朗朗康康】(Long Long Kang Kang)形容人不听话、不配合或事情太周折。
【咪咪喀喀】(Mi Mi Ka Ka)形容人埋头做些无谓的琐事。
【低低得得】(Di Di De De)讲话罗嗦不得要领。
【悉悉霍霍】(Xi Xi Fo Fo)粗心、忙乱的样子。
【骜骜烈烈】(Eao Eao Lie Lie)桀骜不训。
【平平整整】(Piang Piang Zang Zang)平整,熨贴。
【慢慢掸掸】(Man Man Dan Dan)慢慢吞吞的样子。
【结结赖赖】(Jie Jie Lai Lai)不断的麻烦。
【搂搂钻钻】(Lou Lou Zuon Zuon)挖空心思。
【眼眼角角】(Ean Ean Go Go)所有角落。
【几几这这】(Ji Ji Ze Ze)①开玩笑,逗乐。②欺骗。③关系暧昧。
【忍忍缩缩】(Ren Ren So So)言行畏缩的样子。
【竞竞岗岗】(Jing Jing Gang Gang)争执,闹矛盾。
【咪咪摸摸】(Mi Mi Mo Mo)长时间做些琐事。
【割割拢拢】(Ge Ge Long Long)将零碎东西全部合拢到一起。
【令令郎郎】(Ling Ling Lang Lang)着装或所携物品杂乱或累赘的样子。
【七七雀雀】(Qi Qi Qio Qio)背地乱议论。。
【雪啪嗒壮】(Xue Pa Da Zong)形容人又胖又白
【架手架脚】(Ga Shou Ga Jio)形容坐没坐相
2010年7月13日 | 分类: 他山之石, 兴趣所在 | 标签:

看到黑夜路人写的kv数据库应用,膜拜不已,作者给出了一些hash的参考链接,对于我等初学者只能研读并收藏之。

tmdb:http://heiyeluren.googlecode.com/files/tmdb-0.0.1.zip
各种字符串Hash函数比较:http://blog.csai.cn/user3/50125/archives/2009/35638.html
字符串hash算法比较 AND 经典HASH函数:http://blog.csai.cn/user3/50125/archives/2009/35639.html

其他:
依稀记得本科时候缪哥给我也讲过一个简单的hash算法,现在回忆起来应该是类似下面的(未经任何测试的伪代码)

unsigned int hash(char *s){
	unsigned int r;
	unsigned int h = 0;
	while(*s){
		r += (*s) * round(pow(1<<8,h++));
	}
	return (r & 0x7FFFFFFF);
}
2010年7月13日 | 分类: 那些奇葩 | 标签:

有意思的yy贴,后面有一段是有关WOW,介于不是很懂直接颜色改为灰色。

000000000000分割线00000000000000000

月入刚过十万大洋 帝都魔都几套车房
海外归来博士学历 红颜都是美女娇娘
职位全是企业高管 单位都是世界百强
逢年过节都发金条 班上没事整天上网

一米八五面容俊朗 肌肉结实双腿修长
初中抓网高中灌篮 大学最次校队队长
肉搏教官一个揍俩 百米速度参考刘翔
别看宅男天天在线 嘿咻叫我夜七次郎

能写程序能修电脑 写点小说译点文章
做饭烧菜稀松平常 吹拉弹唱样样在行
电脑五开感觉良好 阴影特效十分流畅
魔兽只是小小娱乐 酒吧KTV 是我主场

手机都要IPHONE以上 两千以下那叫低档
闲来无事看场电影 所选必须IMDB上榜
星际微操独步天下 APM 四百难以抵挡
回想当年打CS 丢个手雷一炮三响

有宠骑满包都是 没有橙武少来亮相
滴屁艾斯常年第一 带个蓝绿也拿肩膀
大号小号都SW毕业 不1V30您别下战场
成就不到两千五百 那你肯定是快餐党

2010年7月9日 | 分类: 兴趣所在 | 标签: ,

终于把git使用起来了,而不是照着书做练习,往往用在工作中才能会发现许多问题。因为原来使用svn比较多,总会忍不住和svn做比较,总结如下:

1。首先是概念的转变,svn是典型C/S结构或者说具有主从的概念,往往都是从服务器checkout代码再向服务器提交。对于git来说每个版本库都是平等,平等就相当于每个库都可以从其他库merge代码也可以提供给其他库自己的代码,这也符合git是一款分布式版本管理软件的概念。

2。版本管理软件的操作都差不多,无碍乎是初始化,checkout,checkin,然后提供一些显示diff,处理冲突,日志跟踪的功能。git比较有特点是存在暂存区的概念,任何修改都可以add到暂存区中,当然这个也没有太大必要,就是提交前的一个缓冲。当然也可以直接git commit <file>或者-a提交所以文件

3。在与远程库操作中git支持ssh,git和http三种协议,这对于linux用户来说事件好事,git的通信直接ssh即可,对于git协议通常用于只读的checkout因为它支持匿名访问。git的远程通信可以与svn做对比,git clone从远程库获取代码,通过git pull来更新代码,通过git push来提交更新(当然需要远程库同意)并且这些操作不是只针对一个远程库的(不像svn,从一个库checkout代码以后都只与这个库通信),通过git remote add可以添加其他远程库,并获取代码这也体现了分布式的概念。

4。在工作中还涉及带git和svn的通信,svn和csv的用户来说git可以无缝连接,git svn提供了丰富的方法,当然命令上也许有些差别。一般来说用git作为一种细颗粒度的版本控制,svn更多的作为一种存储仓库。git在版本的控制还是相当强大的。在使用git连接svn时,svn库最好是标准结构(即包含trunk,tags,branches三个目录)这样git svn clone -s可以很好的识别目录结构,我就碰到了一个没有很好结构的svn库,最后还是为了git重新整理的目录结构。git svn rebase命令同步svn库,其实是做了git svn fetch(先同步到本地远程库)和git rebase(关于rebase参看这里,今天看到的一句话上游merge,下游rebase,颇有意思)

5。有关编码问题,可以配置i18n.commitencoding和i18n.logoutputencoding ,我在gbk编码的机器上用iso-18859-1即可,这应该是对编码不做任何改动,所以提交和显示都是gbk。如果不做任何配置git会用utf8去encoding,必将出现乱。如果在utf-8的机器上查看gbk的log好像怎样都会出现乱码,我想应该是没有能把gbk转成utf-8的功能。不过最好都用utf-8或者都用同一编码的机器,这样就不用担心乱码了。

6。还可以配置全局的选项alias.XX “” 比如git config –global alias.ci “commit” git中没有把命令简化,这对于常用svn的人来说上手稍微不习惯,用alias可以很容易的解决这一问题。git中有关global的配置都在~/.gitconfig而库的配置都在.git/config中

先写这么多,git的命令之多是人难以想象的,这也能看出其功能之强大,很多用法我至今也不是特别了解,以后的心得继续补充。

文档:

http://www.kernel.org/pub/software/scm/git/docs/

http://progit.org/book/zh/

2010年7月1日 | 分类: 兴趣所在 | 标签: , ,

尝试了mod_python和mod_wsgi两种配置方法

mod_python方式

http://httpd.apache.org/modules/python-download.cgi下载源码包,apache 2.X使用mod_python3.3版本,使用DSO的方式编译成可加载的模块

./configure --with-apxs=/usr/local/www/bin/apxs
make
sudo make install

注1:如果环境变量里面没有python的运行环境还需要指定–with-python参数。
注2:编译可能会出现错误,我用的是apache2.214和python2.4编译出现connobject.c:142: error: request for member ‘next’ in something not a structure or union。google到已经人报告这个bug,把connobject.c 142行“!(b == APR_BRIGADE_SENTINEL(b) ||”改为 “!(b == APR_BRIGADE_SENTINEL(bb) ||”

之后再httpd.conf中把编译好的so加载进来。然后在配置文件中添加站点的配置 ,具体可以参见mod_python的文档http://www.modpython.org/live/current/doc-html/directives.html

SetHandler python-program
PythonPath "['/path/to/site/parent'] + sys.path"
PythonHandler django.core.handlers.modpython
SetEnv DJANGO_SETTINGS_MODULE mysite.settings
PythonDebug On

注1:这里用的是Django中的mod_python
注2:如果站点所在文件夹不在系统环境变量中需用PythonPath添加

mod_wsgi方式

这种方式完全遵循wsgi协议,虽然现在我还对wsgi没有很深刻的了解,模块应该是让apache实现了协议的接口。

http://code.google.com/p/modwsgi/downloads/list下载源码,与mod_python一样编译成so并在http.conf中加载
配置文档参考 http://code.google.com/p/modwsgi/wiki/ConfigurationDirectives
有关Django的配置参考http://code.google.com/p/modwsgi/wiki/IntegrationWithDjango

http.conf中

WSGIScriptAlias /py /usr/local/www/htdocs/xw/mysite/mod.wsgi

mod.wsgi文件

import os, sys
sys.path.append('/path/to/site/parent')
os.environ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings'

import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()

后记

还有fastcgi等配置方式,都没有尝试过,Python与php的不同是,php是一步到到位的配置,让你不用考虑http协议的实现,只需要开发者关注web逻辑。但Python只有一个web协议,实现是开放式的,不同的人都可以有自己的实现,就像Python本身就自带了一个web服务器一样。
这样就能很好的理解wsgi有服务器端和应用端了,服务器端可以是Python自带的http服务器也可以是apache,nginx(当然要有实现wsgi的模块);应用端可以是各种框架的handler也可以是你自己写的handler,总之大家都符合协议就可以了。
有此引申到其他语言的web实现,比如说java,是不是javaEE有也是这样一种思想呢,我没深入研究过,作为一种猜测,等以后有机会慢慢研究。

PS:以上文字均出自一个Python&Django初学者之口,说不定将来的某天这些想法都会被我自己鄙视的,见笑!

2010年5月28日 | 分类: 那些奇葩 | 标签:

深刻,形象,只在google reader上分享是不够的

—————————————分割线——————————————–

这是一道非常简单的选择题,据传,如果拿来问西方人,大多数人都会选对,但是如果拿来问我们自己中国人,大多数人都会选错。想知道为什么,请花一分钟,把这个故事看到最后:
上帝把两群羊放在草原上,一群在东,一群在西。上帝还给羊群找了两种天敌,一种是狮子,一种是狼。上帝对羊群说:“如果你们要狼,就给一只,任它随意咬你们。如果你们要狮子,就给两头,你们可以在两头狮子中任选一头,还可以随时更换。”

这道题的问题就是:如果你也在羊群中,你是选狼还是选狮子?

很容易做出选择吧?好吧,记住你的选择,接着往下看。

东边那群羊想,狮子比狼凶猛得多,还是要狼吧。于是,它们就要了一只狼。西边那群羊想,狮子虽然比狼凶猛得多,但我们有选择权,还是要狮子吧。于是,它们就要了两头狮子。

那只狼进了东边的羊群后,就开始吃羊。狼身体小,食量也小,一只羊够它吃几天了。这样羊群几天才被追杀一次。西边那群羊挑选了一头狮子,另一头则留在上帝那里。这头狮子进入羊群后,也开始吃羊。狮子不但比狼凶猛,而且食量惊人,每天都要吃一只羊。这样羊群就天天都要被追杀,惊恐万状。羊群赶紧请上帝换一头狮子。不料,上帝保管的那头狮子一直没有吃东西,正饥饿难耐,它扑进羊群,比前面那头狮子咬得更疯狂。羊群一天到晚只是逃命,连草都快吃不成了。

东边的羊群庆幸自己选对了天敌,又嘲笑西边的羊群没有眼光。西边的羊群非常后悔,向上帝大倒苦水,要求更换天敌,改要一只狼。上帝说:“天敌一旦确定,就不能更改,必须世代相随,你们唯一的权利是在两头狮子中选择。”

西边的羊群只好把两头狮子不断更换。可两头狮子同样凶残,换哪一头都比东边的羊群悲惨得多,它们索性不换了,让一头狮子吃得膘肥体壮,另一头狮子则饿得精瘦。眼看那头瘦狮子快要饿死了,羊群才请上帝换一头。

这头瘦狮子经过长时间的饥饿后,慢慢悟出了一个道理:自己虽然凶猛异常,一百只羊都不是对手,可是自己的命运是操纵在羊群手里的。羊群随时可以把自己送回上帝那里,让自己饱受饥饿的煎熬,甚至有可能饿死。想通这个道理后,瘦狮子就对羊群特别客气,只吃死羊和病羊,凡是健康的羊它都不吃了。羊群喜出望外,有几只小羊提议干脆固定要瘦狮子,不要那头肥狮子了。一只老公羊提醒说:“瘦狮子是怕我们送它回上帝那里挨饿,才对我们这么好。万一肥狮子饿死了,我们没有了选择的余地,瘦狮子很快就会恢复凶残的本性。”羊群觉得老羊说得有理,为了不让另一头狮子饿死,它们赶紧把它换回来。

原先膘肥体壮的那头狮子,已经饿得只剩下皮包骨头了,并且也懂得了自己的命运是操纵在羊群手里的道理。为了能在草原上待久一点,它竟百般讨好起羊群来。为羊群寻找水源和草场,甚至为了保护羊群不被前来骚扰东边的那头狼吃掉,去恐吓威胁殴打东边的狼。而那头被送交给上帝的狮子,则难过得流下了眼泪。

西边的羊群在经历了重重磨难后,终于过上了自由自在的生活。东边的那群羊的处境却越来越悲惨了,那只狼因为没有竞争对手,羊群又无法更换它,它就胡作非为,每天都要咬死几十只羊,这只狼早已不吃羊肉了,它只喝羊心里的血。它还不准羊叫,哪只叫就立刻咬死哪只。更可恨的是,那匹狼为了不让它肯定打不过的西边那头狮子来寻它的晦气,竟定时向西边的狮子提供从东边羊群里精挑细选出来的肥羊,讨好从来吃不到活羊的狮子。东边的羊群只能在心中哀叹:“早知道这样,还不如要两头狮子。”

中国人,你看明白了吗?你的选择正确了吗?

2010年5月28日 | 分类: 兴趣所在 | 标签: ,

1. cakeError方法是属于object类的,而且此方法引用当前的controller,如果没有new cakelib中的。而且只会执行beforeRender的方法,不会执行beforeFilter,毕竟不存在一个action
2. controller有三个属性 base,webroot,here。其关系是 webroot = base. “/”;here= webroot.path;path就是当前的路径。对于webroot官方文档的解释是“Helpful if your application is placed in a folder under the current domain name”,其实就是web目录相对于domain的根目录的路径。
3. cakephp自带的compress功能是优先于route dispatch的,也就是说上来先检测资源是否可压缩,如果可以就直接压缩返回,不过有route以后的阶段了。
4. controller的redirect方法是不用考虑当前的webroot的,此方法会自动header到webroot(web目录)的某个路径上去。

第2页/6页12345...尾页