| hu's profile混吃等死滴高手PhotosBlogLists | Help |
|
|
熊市做熊,牛市做牛,猪将遭屠杀熊市做熊,牛市做牛,猪将遭屠杀 关于次贷危机的段子:卖猪记
阅读提示:猪是现金,伟哥是房子。
一男赶集卖猪,天黑遇雨,二十头猪未卖成,到一农家借宿。
又一男得知此事,决意如法炮制兼吸取教训,遂先去伟哥专卖店用一头猪去换一粒伟哥,然后带19头猪出发,事必,天亮后,男吹着口哨赶37头(含少妇家的18头)猪赶集去了…… 哈佛导师评论:企业如果获得金融资本的帮助,自身经营能力将得到倍增。 知道此法男多,伟哥供不应求,逐渐要2头猪换一粒伟哥,然后是3头猪换一粒伟哥,伟哥专卖店宣布伟哥限量供应,永远保值。 哈佛导师评论:这就是通货膨胀,但尽管购入伟哥,伟哥是永远保值品,从一头猪到N头猪换一个伟哥,你什么时候见过伟哥贬值? 越来越多的人听说了哈佛导师的评论,开始去囤积伟哥,并在市场上二手交易伟哥赚钱。 哈佛导师又评论:繁荣的二手交易市场是一手市场持续繁荣的保证。 越来越多的人想去炒做伟哥,很快伟哥价格涨到16个猪换一粒。 哈佛导师又评论:该男已经进入边际成本,除了拥有对自身能力的自信和未来良好愿望以外,实际现猪流已经为零。
哈佛导师评论:良好的理财可以让个人实现财富自由。 换猪男越来越多,伟哥专卖店决定,推出一种借贷伟哥销售模式,即使你没有足够的现猪,只要你敢承诺到该女房中一夜,带16头猪回来,我就可以先把伟哥卖给你。例如如果你缺一头猪,就可以先欠一头,事成后补交猪款,这个方法大大促进了伟哥销售。 哈佛导师评论:这就是贷款,让企业可以根据未来的收益选择借支流动资金。扩展生产能力,这就是信用经济,信用经济是建立在良好信用和经济持续成长基础上的,只要大家都讲信用,伟哥就可以源源不断提供给大家使用。
伟哥专卖店尝到甜头,借贷胆子越来越大,后来在即使你一头猪都没有,只要你承诺可以到该女房中一夜,就可以先借,事成后补交猪款。 哈佛导师评论:这就是金融创新,让现在的人花未来的钱,反正等你老了未来的钱你也花不动。 消息一出,换猪男越来越多,有人找伟哥专卖店,这个项目太好了,我们把它变成优质基金,对外销售债卷,你们也就可以分享我的收益,如何? 结果伟哥专卖店觉得甚好,于是该公司把换猪男分三类,一类是拿现猪换的,一类是一部分现猪贷的,一类是完全没有现猪借的,发行三种债卷。大家踊跃而上。纷纷购买伟哥专卖店的债卷,伟哥专卖店生意太好,就把债卷销售外包给另外一家公司运作,该公司也一并大发其财,公司越做越大,甚至可以脱离实际伟哥销售情况来发行,给自己和伟哥专卖店带来巨大的现金收益。 哈佛导师评论:这就是专业的人做专业的事,从实体经营到资本运作,经济进入了更高的层次。 为了防止自己债卷未来有损失,该公司决定给它买上保险,这样债卷销售就更容易,因为一旦债卷出现问题,还可以获得保险公司的赔付,保险公司一计算,到目前为止伟哥销售伟约率很低,毕竟做爱是刚性需求,必须满足,只要承诺可以接受保费,就可以获得一大笔收入,而违约风险很低。哇,所有的债卷如果出问题还有保险公司负责理赔,债卷公司销售这下子太好了,保险公司也获得巨大平白无故的保险收入。 哈佛导师评论:这就是风险对冲,策略联盟,提高了企业的抗风险能力,也保护了消费者利益。 换猪男太多,排长队等待,该女无法承受,说老娘不干了,我搬家,一时间有无数拥有伟哥的欠猪男。 哈佛导师评论:这是个别现象,属于市场的正常波动,不会影响整个经济。 结果该女迟迟不肯搬回。一部分欠猪男没有收入,只好宣布愿意低价交换伟哥,伟哥突然一下子从16个猪下滑到8个猪一粒也卖不掉,市场出现伟哥恐慌,原来伟哥也可以暴跌,一些拥有伟哥的人赖帐,结果大量借贷到期无法返回现猪,伟哥专卖店晕了,不得不宣布有大量借贷者欠猪不还,属于信用违约。 哈佛导师评论:这是个人行为,大部分贷款是优质人群。 大量次级猪贷违约,那么对应他们的债卷也就一钱不值,承担销售的债卷公司一看一粒伟哥16头猪,这哪里还得起,宣布倒闭。 哈佛导师评论:这是次贷危机,不会影响整个金融贷款, 哈佛导师哪里晓得债卷公司还把债卷上了保险,保险公司一看,这哪里赔得起,于是也宣布要倒闭。 哈佛导师评论:这是金融危机,还不会影响整个实体经济。 大量的人破产,不敢消费,经过经济下滑,没有敢把猪借给别人,怕有去无回,市场越来越冷淡! 哈佛导师评论:全国人民都要出血的时刻到了,虽然那些卖伟哥的,卖债卷的,卖保险的在赚钱的时候发了财,现在搞出漏子了,如果我们不帮他们埋单,我们将来还是最大的受害者。 伟哥专卖局决定向全国人民借7000亿头猪拯救市场,市场依然故我,全国有猪者和无猪者都很愤怒,谁拿走了我们的猪? 哈佛导师评论:早就告诉你们,为什么不去监管?现在唯一的办法,就是找几个国外养猪户以负责任的大猪国形象来注猪,否则大家都要完蛋! 后文:据说该女已搬到中国定居,此外哈佛教授带的几个研究生也在中国淘金中。 October 14 oracle rac情况下的表空间添加# smitty hacmp
System Management (C-SPOC)
HACMP Concurrent Logical Volume Management
Concurrent Logical Volumes
Add a Concurrent Logical Volume
Number of LOGICAL PARTITIONS [40]
Logical volume NAME [ora_users06]
Logical volume TYPE [jfs]
Number of LOGICAL PARTITIONS 的数值等于lv*1024/PPsize
用lsvg datavg查看vg的ppsize, 显示PP SIZE: 256 megabyte(s)
要建10G的lv, 就是10*1024/256 = 40
在每个节点执行chown oracle:dba /dev/rora_users06
然后就可以在oracle里添加表空间了
Toad中Datafile size 设置为10000 MB, 不可以设置Auto extend September 22 发如雪,心已醉 曲:周杰伦 词:方文山 狼牙月 伊人憔悴 我举杯 饮尽了风雪 是谁打翻前世柜 惹尘埃是非 缘字诀 几番轮回 你锁眉 哭红颜唤不回 纵然青史已经成灰 我爱不灭 繁华如三千东流水 我只取一瓢爱了解 只恋你化身的蝶 你发如雪 凄美了离别 我焚香感动了谁 邀明月 让回忆皎洁 爱在月光下完美 你发如雪 纷飞了眼泪 我等待苍老了谁 红尘醉 微醺的岁月 我用无悔 刻永世爱你的碑* 你发如雪 凄美了离别 我焚香感动了谁 邀明月 让回忆皎洁 爱在月光下完美 你发如雪 纷飞了眼泪 我等待苍老了谁 红尘醉 微醺的岁月 我用无悔 刻永世爱你的碑 啦儿啦 啦儿啦 啦儿啦儿啦 啦儿啦 啦儿啦 啦儿啦儿啦 铜镜映无邪 扎马尾 你若撒野 今生我把酒奉陪 啦儿啦 啦儿啦 啦儿啦儿啦 啦儿啦 啦儿啦 啦儿啦儿啦 铜镜映无邪 扎马尾 你若撒野 今生我把酒奉陪 September 15 long node name问题试验Programming Erlang P180页Stage 3: Client and Server on Different Machines on the Same LAN
erl -name server@vp.com -setcookie abc,-name是long node name, 对应-sname是short node name。
注意-name 后面要跟xxx@yyy.com,@后面一定要域名格式,可以在hosts里面定义。不然会erl_crash
但是有个问题,如果域名有数字还是会报错** 1: syntax error before: 3322 **不知为什么 July 07 俺的第一个erlang程序从mysql数据库读ip列表,然后检查特定端口是否打开
-module(check).
-export([main/0, check_sock/2, loop/0]). main() ->
mysql:start_link(p1, "localhost", "root", "", "proxy"), {data,{mysql_result,_,Result,_,_}} = mysql:fetch(p1,"select distinct(ip) from lists where date(created_at) = date(now())"), spawn(check, loop, []), % new a receive process lists:map(fun do_test/1, Result). do_test([Ip]) ->
spawn(readline, test_sock, [Ip,self()]). loop() ->
receive {ip, Ip} -> io:format("write a ~s~n", [Ip]) end. check_sock(Ip,Pid) -> case gen_tcp:connect(Ip, 3333, [binary, {active, false}], 3000) of {ok, Sock} -> %io:fwrite("~s~n", [Ip]), Pid ! {ip,Ip}; {error, Reson} -> io:fwrite("", [Reson]) end. crack xbm by ruby经过一段时间的使用感觉ruby简直是脚本之王,用的很爽,下面是xbm图像的crack代码用ruby写的
def xbm(xbm)
v0 = "0x3c,0x66,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0x66,0x7e" v1 = "0x18,0x1c,0x18,0x18,0x18,0x18,0x18,0x18,0x18," v2 = "0x3c,0x66,0x60,0x60,0x30,0x18,0x0c,0x06,0x06,0x7e" v3 = "0x3c,0x66,0xc0,0x60,0x1c,0x60,0xc0,0xc0,0x66,0x38" v4 = "0x38,0x3c,0x36,0x33,0x33,0x33,0xff,0x30,0x30,0xfe" v5 = "0xfe,0xfe,0x06,0x06,0x3e,0x60,0xc0,0xc3,0x66,0x3c" v6 = "0x60,0x30,0x18,0x0c,0x3e,0x63,0xc3,0xc3,0x66,0x3c" v7 = "0xff,0xc0,0x60,0x30,0x18,0x18,0x18,0x18,0x18,0x18" v8 = "0x3c,0x66,0xc3,0x66,0x3c,0x66,0xc3,0xc3,0x66,0x3c" v9 = "0x3c,0x66,0xc3,0xc3,0x66,0x3c,0x18,0x0c,0x06,0x03" v = [v0, v1, v2, v3, v4, v5, v6, v7, v8, v9] list = []
xbm.each_line{|l| list = l[0..-5].split(",") if l.size > 45 } vlist= [] 4.times do |y| a = [] 10.times do |x| a << list[4*x+y] end vlist << a end code = "" vlist.each do |x| code << v.index(x.join(',')).to_s end code end Delphi with RESTful Rails有个需求需要Delphi的客户端和rails的站进行交互,Delphi通过IDhttp控件使用get方法header="Accept: text/xml"的方式获取xml,再通过XMLTransformProvider控件转换成ClientDataSet可以用的数据。
procedure TForm1.Button1Click(Sender: TObject);
var hstream: TMemoryStream; begin hstream := TMemoryStream.Create; self.IdHTTP1.Get('http://192.168.0.200:9999/lists', hstream); hstream.Position := 0; self.Memo1.Lines.LoadFromStream(hstream); hstream.Position := 0; self.XMLDocument1.LoadFromStream(hstream); self.XMLTransformProvider1.TransformRead.SourceXmlDocument := self.XMLDocument1.DOMDocument; self.ClientDataSet1.Active := true; end; April 27 转:人穷志短CSDN 真有意思,每隔一段时间,它就会推出这样的文章,不是说程序员应该转向去做管理,就是说到了30岁就别干程序员了。前几天又贴了一篇(http://www.csdn.net/news/newstopic/22/22081.shtml)。怎么说呢,其实它说的的确符合中国国情,我身边的同事,没有几个真正安心研究编程技术的,整天讲的不是买房子,就是当项目经理做管理,再也不做程序员之类的话。为什么在中国程序员都希望去做管理工作呢,因为公司的薪水是按照职位来给的,你如果只是个技术人员,那么你就拿那么多的工资,跟CTO就差的天壤之别了(公司只能有一个CTO,但是可以有很多项目经理); 如果你是个项目实施工程师,你的薪水比项目经理就差了一大截,而且干的也是最重的活儿,挣的是最少的钱。所以大家都希望去当项目经理,做管理工作。其实仔细想想,如果大家都去做管理工作,谁来真正做事呢,那不成了牛群说的“小偷公司”那样:“人浮于事”,公司有十几个副总,只有两个小偷工作在最前沿。况且一个人还是应该讲求自己的“定位”的,不是任何人都可以干管理工作的,也不是任何人都可以做技术工作的。有些人只想管好自己,不愿去管理别人;有的人连自己都管理不好,如何去管理别人。
如果你 30 岁了还在做程序员,大家都会用异样的眼光看着你,而国外很多程序员 50 多岁仍旧在编程,我就看过一篇报道,一对 60 多岁的老夫妇开了个游戏网站,专门编写扑克牌之类的网络在线游戏,网站的访问量一直很高。 BitTorrent(BT 下载)的创始人Bram Cohen 在开发 BT 的一年期间只能利用一张信用卡的免息期来透支,填补另一张信用卡的帐单来过活,但他仍然坚持开发了这个伟大的软件。 我想中国的软件界是出不来象 Linux 创始人 Linus 这样的传奇人物,但是我恐怕连 Cohen 这样坚持自己信念的伟大程序员都很难出现。 我们能说什么呢,只能说“人穷志短” 了。 中国人太穷,没钱,原因就是这个。 贫穷真的那么可怕吗? 是的。 国家经济实力不强,人民购买力低下,才会出现大家都去买盗版,“我买盗版,我自豪”的现象。 人穷连坐公交车都会逃票。 人穷志不短的人有没有呢?当然有,不过这样的人始终是少数,一千个人中能有一个吗。这些能安于贫困,坚持自己的理想和信仰生活的人,不管他们是成功还是失败,都是值得钦佩的。
我忘记在什么地方听过这句话--“有钱才有可能有高尚的情操”,我直觉地认同了这个观点。这句话多少有些伤人,所以很多人会立刻跳出来迫不及待地反驳它:“什么叫有钱才有可能有高尚的情操,你没听说过为富不仁吗”。 其实我觉得大多数人都是从字面上的意思而反感它,我也是最近才悟出来的,这句话的本意应该是这样的:一个人有钱,他做事和考虑问题才不会以“钱”为出发点。 从某方面来说,这句话没错。正如司马迁所说,“天下熙熙,皆为利来;天下攘攘,皆为利往”,如果一个人做事不为名利,那么他的动机才可能是高尚的。 没钱的人才会整天为了钱转。事实上,更扩大一点说,如果你本身缺少什么,你多半就会迷失在其中。如果你没钱,你才会说”这年头谁给的钱多,我就给谁干“; 如果你英文不好,你就会被各种提高英语的学习方法所迷惑,才会跟着李阳“李大师”一起歇斯底里的叫喊着学英语,甚至连他说的“学习英语是体力劳动,只要背熟我的365句,到美国生存不成问题,背熟我的600句以上,可以竞选美国总统。”这样的胡话都能相信;一个国家的人民没有信仰,那么大家才会去相信XX功。以前有句古话:”宁要大府家的丫鬟,不要小家碧玉“说的也是这个道理,大府家的丫头见过世面,懂得大体,不会为小事和你斤斤计较。 如果一个人不缺钱,或者不必为钱担心,那么他就可以完全按照自己的意愿去做事。相反,如果一个人整天为下一顿饭的着落而担忧,他怎么可能去做自己想做的事情呢?即使你已经脱离了贫困,周围的环境,舆论都在促使你为了钱去做事,你做事的出发点还是为了钱,你想的只是如何去挣更多的钱,你会变得唯利是图,急功近利。 我觉得马克思说的最正确的一句话就是“经济基础决定上层建筑”,翻译成通俗的话就是“这年头没钱,哪来什么关怀”,有了钱你才会去考虑精神层面上的东西。
刚刚说到了信仰,信教应该算是有信仰的一种形式。从社会方面讲,我觉得信教的人对社会安定起的作用肯定比不信教的人要高的多,最起码信教的人大多与人为善。从个人方面讲,姑且不论这世界上是否真的有神的存在,相信这世上存在一个比自己更高一级的神灵,可以让一个人在遇到挫折失败的时候,在穷困潦倒的时候比常人更能经受住打击,因为他相信这世上还有一种力量可以帮助他,他就会变得更加进取,更加积极。而无神论恰恰把这一点给抹杀了。我想为什么西方大多数科学家都信教,原因大概在于此。别以为这是我个人想出的论调,如果你看过培根的《论说文集》,你就知道我只不过是引用了他在《论无神论》一文的观点。培根的《论说文集》是一本我非常推崇的人生必读的精神方面的伟大书籍。我上中学的时候曾经托父亲的朋友从商务印书馆买了一本,但是后来搬家的时候丢了,最近刚刚新买了一本,你可以从网上看这本书(http://member.netease.com/~luolian/bacon/BaconIndex.htm)。我想再也没有什么比培根的《论无神论》更有力的驳斥无神论的文章了。 (地址: member.netease.com/~luolian/bacon/Bacon16.htm)
有人会说了:“有钱人就有高尚情操了吗”,当然不是了,上面那句话仅仅说是“可能有”,而且这句话其实是泛指两类有钱人。一是“天生富贵”之人,就是那些生下来嘴里就含着“金钥匙”或者“玉”的人,这些人没经历过“苦难”,从来不知道钱为何物,对钱没有概念,才会“视金钱如粪土”,比如说“贾宝玉”;另外一种人就是“大富之人”,何谓“大富”,有句流行话说: “十万刚起步,百万是大款,千万是大富”,这只是中国国情,并不是上面那句话所指的有钱人。比儿.盖茨说过:“如果你拥有了一亿美金,那么钱对你来说只是个数字”,这才是大富。 所以有个千万上亿人民币的国内富豪不能算是大富,因为正处在财富积累上升期的他们想的只可能是如何去挣更多的钱,所以尚且“贪心不足蛇吞象”的他们多半可能是“为富不仁”的。
我记得以前很喜欢看香港的时装电视连续剧,故事情节很吸引人,但是看多了,你会发现很多故事都是很套路化,无非是一个贫困的年轻人靠自己奋斗爬进了一个大富豪的企业,最终为了名利,害人害己,落了个可耻的下场。我发现其中一个有趣的现象,就是当这个年轻人进入富豪企业的时候,年长的大富豪往往很反感这样的年轻人,为什么呢,因为他觉得象这样从贫民窟长大的年青人为了向上爬,可能什么事情都做的出来,而他们往往又都是狡猾之人,而非聪明之人,最终被聪明的富豪之子打败(狡猾和聪明是两种截然不同的智慧,推荐大家都去读读英国大文学家培根的“论狡猾”一文,地址:http://member.netease.com/~luolian/bacon/Bacon22.htm)。 这样的故事也说明了同一个道理,那就是“人穷志短”。
我说了半天并不是说“人应该攀附权贵,跟有钱人交朋友”。其实你会发现那些“安于贫困,坚持理想追求”的人固然少见,那些“大富之人”就更难碰到了。我想前者是交友的首选,不过在当今“浮躁”的互联网时代,你很难得碰到这样的人,论坛上到处充斥着那些纸上谈兵的“赵阔”们和互相吹捧的“伪大师”们。真正踏实地为了自己的理想奋斗之人往往都秉着“君子之交淡淡入水”的信念,他们不会因为你成功而结交你,却会在你跌倒的时候来帮助你(有点象藏天朔的“朋友”中唱的那样),所以说人应该交这样的朋友。有人会说:“你做梦吧?醒醒吧,这样的人没有”, 不过即使这是个梦,我也宁愿活在梦里面。因为我相信John lennon的那句话:“you may say i am a dreamer, but i am not the only one”(你会说我是个梦想家,但我不是惟一的那个)
忽然想起以前跟朋友调侃,为什么佛祖释加莫尼出身是个印度的王子,而不是什么贫民,乞丐?这是有原因的。身为王子的他,后宫佳丽三千,富甲天下,享尽荣华富贵,他才有可能看破红尘,想着如何跳出三界六道的轮回。如果你的福报尚未享尽,你无论如何都不会有这种想法的。再举个例子,常言道:“浪子回头金不换”,很多人理解为,一个人做了错事,只要及时改正,什么时候都不晚。其实在这句话根本就是一个佛家用语。什么是“浪子”,英文是 libertine (放荡不羁的人:行动没有道德约束的人;放荡的人), 由 libido (性欲) 一词演化而来,浪子多半是那些纵情声色,享受人生之人,类似于“唐璜”,他们享受了红尘俗世的一切,佛祖认为这些人比常人更容易度化。所以佛祖首先度的是这些人。有人问了,佛祖不是普度众生吗?其实度化讲机缘巧合的。 你自己不想脱离红尘,佛祖不会强求你的。 你如果为富不仁,那么死后肯定是作鬼的,能轮回到畜牲道做头猪都是很不错了;如果你是个天生穷鬼,懒鬼,佛祖也不会度你,你今生的遭遇是前世的因果造成的,佛祖也帮不了你。佛祖一般都先度那些经历过大富大贫,大悲大喜之人,这些人才有可能看破红尘,遁入空门。为什么红楼梦中的和尚老道盯着贾宝玉不放呢,因为他出生大富之家的掌上明珠,又被警幻仙子点名为“古今第一淫人”的家伙,不拉它去做和尚,还找谁呢 ? 所以说,从某种意义上讲,如果西门庆看破红尘入了空门,修为应该比鲁智深那样吃了官司当和尚的人要高的多,也更容易得道。古语有云:”不破不立“, 你要超脱什么,你就要先享有它,然后看破它,抛弃它。
所以说:“人穷志短,千古名言”啊
有感叹于 CSDN 的文章,我竟然写了那么多废话,其实我写这些并不想映射某些人,只是对某种现象的感慨。套句港台电视剧的话: ”本文纯属胡说,如有巧合,实属偶然“ April 19 两只猪的爱情两只猪的爱情 每天晚上公猪总是给母猪放哨,他生怕主人趁他们熟睡时把母猪拉出去宰了。日子一天天过去,公猪日渐消瘦,而母猪日渐长胖。有一天,公猪突然听见主人跟屠夫商量,要把长势见好的母猪杀了卖掉。 公猪非常伤心,从那天起性情大变。每当主人送吃的来,公猪总是抢着上前把东西吃光,吃好后便躺下大睡,并且告诉母猪现在换她来为他放哨,否则就再也不理她了。母猪感到很失望,她觉得公猪越来越不在乎她了。 很快一个月过去了,主人带着屠夫来到猪圈时,却发现一个月前肥壮的母猪消瘦了许多,而公猪则长得十分肥硕。这时,公猪拼命地奔跑,想引起主人的注意,表明他是头健康的猪。终于,屠夫把公猪拖走了。在被拖出猪圈的那一刻,公猪朝着母猪笑着说:“以后别吃那么多!” 母猪伤心欲绝,拼命想冲出去,但圈门已被主人关上。搁着栅栏,母猪看着闪着泪光的公猪.那晚,望着主人一家开心地吃着猪肉,母猪伤心地躺倒在公猪以前每天睡觉的地方,突然她发现墙上有行字:“如果爱无法用言语来表达,我愿意用生命来证明!” 人类听到这个凄美的爱情故事也无不为之动容,于是女孩们为了纪念这段爱情,开始流行减肥…… December 31 delphi包使用的一个怪问题handle := LoadPackage('package\package1.bpl');
f := findclass('TFrmTest'); //异常
主程序编译时将Build with Runtime Package打上勾,然后LoadPackage,GetClass 就可以了。当然在包中要RegisterClass(TFrmTest)的。 December 12 chm电子书的怪事本来一本chm的电子书看的好好的,突然昨天看不了了,只是一个空白页。百思不得其解,无意中发现了问题的原因,原来是该死的编码。把页面编码改成gb2312就好了,出问题时是utf-8。 November 30 DIY Route for PHP大多基于MVC模型的framework都有叫做route的东西来实现Controller层。
最近因为一个项目需要使用php4实现,Model层使用原有已经积累了的封装的数据处理层,View使用smarty模板,
但没有Controller层或现有的controller层比较薄并且松散凌厉。虽然用apache的rewrite机制实现了类似http://www.domian.com/book/item/123/review 这样搜索引擎友好的url。
好好的MVC少了一块多不爽,于是想实现个类似rails route的东西,能把用户的request转换成controller object的method call.
建个模先,
http://www.domian.com/book/ => $book->index()
http://www.domian.com/book/30 => $book->index(20), page = 30
http://www.domian.com/book/register => $book->register() http://www.domian.com/book/category/1 => $book->category(1) http://www.domian.com/book/category/3/20 => $book->category(3,20), page = 20 http://www.domian.com/book/item/123 => $book->item(123) http://www.domian.com/book/item/123/review => $book->item(123)->review() 前面的是设计好的url,后面是映射到的method call。url去掉域名既是参数,如/book/register。php中可以通过 $_SERVER['PATH_INFO']变量获取path_info。path_info中的参数可以按照:controller, :action, :param, :page, :nested_action进行分类。
=>后面是映射到的method call。注:path_info在apache2上需要配置AcceptPathInfo on 才可以。
现在两头的东西都有了,url参数可以通过path_info获取,被调用的method可以定义在一个类里,中间的映射怎么搞呢?
于是定义了个映射阵列,
var $_url_pattern = array( "c" => array("/\//", "%c->index()"), "c/n" => array("/\/(\d+)/", "%c->index('%n')"), // controller/page "c/a" => array("/\/[a-z](\w+)/", "%c->%a()"), // controller/action "c/a/p" => array("/\/[a-z](\w+)\/(\w+)/", "%c->%a('%p')"), // controller/action/param "c/a/p/n" => array("/\/[a-z](\w+)\/(\w+)\/(\d+)/", "%c->%a('%p', '%n')"), // controller/action/param/page "c/a/p/o" => array("/\/[a-z](\w+)\/(\w+)\/[a-z](\w+)/", "\$r = %c->%a('%p'); \$r->%o()") // controller/action/param/other.action ); url_pattern的key是个flag用来标识参数类型序列的,value分两部分,前面是定义的正则表达式用来匹配path_info,后面是method call的指令模板,确定这些实现这个route就不算什么问题了,对key按照字符长度进行逆序排序,然后匹配。把匹配了的参数带入指令模板然后eval就可以了。代码较长,不贴了.
route这样用,定义book.php,只是个入口,apache解析url最先找的是book.php.
<?
require_once 'route.php';
$controller = 'bookcontroller'; $rt = new CRoute(); $rt->dispatch($controller); ?>
定义mycontroller.php
<?
class BookController { function index($param = null){
print 'book.lindex and page='.$param; } function register(){ //do register print 'book.register'; } function category($param1 = null, $param2=null) { print 'category:'.$param1.' and '.$param2; } function item($param=null) { //do something print 'book item:'.$param.'</br>'; return new Item($param); // the object has a method named review() } } class Item {
var $param = null; function Item($param){ $this->param = $param; } function review(){ print 'review:'.$this->param; } } ?> June 16 令布什头痛的胡主席的姓令布什头痛的胡主席的姓 Hu Jintao was named chief of the Communist Party in China. 胡锦涛被任命为中共总书记。 SCENE: The Oval Office. George Bush and Condolezza Rice. (场景)nn 椭圆形办公室,乔治布什和国家安全顾问康多里扎赖斯。 George: Condi! Nice to see you。 What’’s happening? 布什: 康迪(赖斯)! 很高兴见到你,发生什么事情了? Condi: Sir, I have the report about the new leader of China. 赖斯:长官,我来向你汇报中国的新领导人。 George: Great . Let’s hear it. 布什: 好极了,我们一起来听听! Condi: Hu is the new leader of China. 赖斯:胡(谁)是中国的新领导人。 George: That’s what I want to know. 布什: 这就是我要知道的。 Condi: That’s what I’m telling you. 赖斯: 这就是我要告诉你的。 George: That’s what I’’m asking you。 Who is the new leader of China? 布什: 这就是我要问你的,谁(胡)是中国的新领导人? Condi: Yes 赖斯: 是的。 George: I mean the fellow’s name. 布什: 我是说那个人的名字。 Condi: Hu. 赖斯: 胡(谁)。 George: The guy in China. 布什: 那个在中国的人。 Condi: Hu. 赖斯: 胡(谁) George: The new leader of China. 布什: 中国的新领导人! Condi: Hu。 赖斯: 胡(谁) George: The Chinese? 布什< SPAN lang=EN-US>: 那个中国人! Condi: Hu is leading China. 赖斯: 胡(谁)领导中国。 George: Now whaddya’ asking me for? 布什: 啊?现在是你问我了? Condi: I’m telling you Hu is leading China. 赖斯: 我在告诉你,胡(谁)在领导中国。 George: Well,I’m asking you. Who is leading China? 布什: 我在问你,谁(胡)在领导中国? ?SPAN lang=EN-US> Condi: That’’s the man’s name. 赖斯:就是那人的名字。 George: That’s whose name? 布什: 就是谁(胡)的名字? Condi: Yes. 赖斯:是的。 George: Will you or will you not tell me the name of the new leader of China? 布什: 你到底愿不愿意告诉我谁(胡)是中国的领导人? Condi: Yes sir. 赖斯: 是的,长官(亚瑟尔)。 George: Yassir? You mean Arafat is in China? I thought he was in the Middle East. 布什:亚瑟尔?你是说阿拉法特在中国?我以为他在中东呢。 Condi: That’s correct. 赖斯:没错。 George: Then who is in China? 布什:那么谁(胡)在中国? Condi: Yes, sir. 赖斯:是的长官(亚瑟尔)。 George: Yassir is in China? 布什:亚瑟尔在中国?? Condi: No, sir. 赖斯:不,长官。 George: Then who is? 布什:那么谁(胡)在? Condi: Yes, sir. 赖斯:是的长官(亚瑟尔)。 George: Yassir? 布什:亚瑟尔? Condi: No, sir. 赖斯:不,长官。 George: Look, Condi. I need to know the name of the new leader of China. Get me the Secretary General of the U.N. on the phone. I bet he knows. 布什:听着,赖斯。我要知道中国新领导人的名字,给我接联合国秘书长 , 我觉得他会 知道。 Condi: Kofi? 赖斯:科费(咖啡)? George: No, thanks. 布什:不,谢谢。 Condi: You want Kofi? 赖斯:你要科费(咖啡)? George: No. 布什:不!! Condi: You don’’t want Kofi. 赖斯:那么你不要科费(咖啡)。 George: No. But now that you mention it, I could use a glass of milk. And then get me the U.N. 布什:不,但是既然你提到它,我要杯牛奶就可以了,然后给我接联合国。 Condi: Yes, sir. 赖斯:是的长官(亚瑟尔)。 George: Not Yassir! The guy at the U.N. 布什:不是亚瑟尔!是联合国的头! Condi: Kofi? 赖斯:科费(咖啡)? George: No, milk! Will you please make the call? 布什:不,牛奶!你给我接通电话好不? Condi: Call who? 赖斯:给谁打? George: Who is the guy at the U.N.? 布什:谁(胡)是联合国的头? Condi: Hu is the guy in China. 赖斯:胡(谁)是中国的头。 George: Will you stay out of China?! 布什:你能不能不提中国了?! Condi: Yes, sir. 赖斯:是的长官(亚瑟尔)。 George: And stay out of the Middle East! Just get me the guy at the U.N! 布什:也别提中东了!给我接通联合国的头就好了! Condi: Kofi? 赖斯:科费(咖啡)? George: All right! Light with sugar. Now get on the phone. 布什:好啦好啦!那就少加点糖吧!给我接电话。 (Condi picks up the phone.) (赖斯拿起电话)。 Condi: Rice here. 赖斯:赖斯在这(这有米饭) George: Rice? Good idea. And a couple of egg rolls, too. 布什:米饭?好主意,再来点鸡蛋吧 |
|
|