有一种运气叫荷兰,有一种无奈叫巴西; 有一种整体叫德国,有一种内讧叫法国; 有一种忧郁叫Italy,有一种哭泣叫Argentina; 有一种没戏叫梅西,有一种裸奔叫罗本; 有一种朝气叫穆勒,有一种成熟叫贝克汉姆; 有一种帅气叫勒夫,有一种豪放叫马拉多纳; 有一种用球叫普天同庆,有一种噪音叫呜呜祖拉; …… 四年一次,有一种运动叫足球,有一种荣誉叫世界杯冠军; 7月11,世界杯后,有一种无聊叫无聊……
Update 35: It's not worth it
1. “Your computer is too old, the processor is only 2.13GHz. It’s just not worth it.” 这是我上月计划在apple store升级内存时一位号称technical specialist的工作人员的回答… “It’s just not worth it”,这可能并不是假话,但是事实真相已被巧妙隐藏或是转移了,半句真话大部分时候其实就是假话…… 那么真正的真相是什么呢,为什么apple有钱不赚还要卖乖呢,原来这个1年都还没到的macbook确实已经too old了,还只是DDR2的内存,而apple store里面已经都是DDR3了…… 2. 半句真话亦可称为断章取义,现在已是不负责任的媒体的惯用手段,前几天世界杯赛场上澳大利亚一位队员(科威尔)球门前手球被红牌罚下,几乎所有国内媒体都一起报道这位球员身患绝症,寿命不超过两年…… 事实真是这样吗? 原来断章取义,以讹传讹的媒体报道时都漏掉了后半句,科威尔是得了一种叫AIH的病没错,但是“澳大利亚是全世界对AIH治疗水平领先的国家,因此科威尔2002年诊断出患有此病,但经过治疗和坚持用药,依然可以踢球到现在。只要保持用药,维持治疗,对他的球员生涯并没有太大影响“ …… 3. 现在巴西队真是太恐怖,除了夺冠不会被怀疑,只要世界杯一输球就随即会被认为是假球,黑幕操作,从98年 0:3 突然疲软的输给法国,到06年 0:1 系鞋带给法国,当然这些确实都非常可疑,真相虽然只有一个,我们依然需要证据…… 上周末下半场崩盘 1:2 输给荷兰后假球的声音又再次出现,不知道这回是真的冤枉巴西了,还是人家的演技已经越来越娴熟逼真,反正足球运动已经开始不修边幅的不纯粹了,世界第一运动的光鲜表面背后隐藏着多少不被世人知晓的秘密和黑幕,大概只有布拉特和国际足联那帮大佬知道… 就如李大眼所说,一切是场戏,不要太较真…… 4. 巴西淘汰后第二天,阿根廷球迷上街热烈庆祝巴西淘汰,犹如湖人球迷热烈庆祝凯尔特人队获得2009-2010年度NBA总亚军一般可爱搞笑,不料出来混第二天就还了,0:4 惨败给德国后,这回轮到巴西球迷上街幸灾乐祸了… 5. 我不是巴迷,不是阿迷,不是德迷,更不是西班牙迷,什么迷也不是,估计只能算个杯迷… ccav5说看球要带有倾向性才能看的尽兴,我只能说半决赛我感性上倾向荷兰和德国,结果都蒙对了,我和章鱼保罗可以拼一下rp了…… 6. 我是无神论者,却是阴谋论者,但我不较真,因为it’s just not worth it……
PHP dev & debug: var_dump, var_export, error_log and FirePHP (Part 2)
接上篇: PHP dev & debug: var_dump, var_export, error_log and FirePHP (Part 1) 前面介绍到的基本上都是php 5自带的,下面介绍一个third party的solution。 6. FirePHP [Installation] 第三方工具不好的一点是需要另外安装,php不自带(不然就不叫 third party了…),FirePHP的安装包括2个部分,firefox plugin和php lib. (1) Firefox Plugin 可以在这里找到FirePHP plugin的下载地址,由于其本质上其实属于firebug的extension/plugin,所以install之前确保firebug已经安装. (2) php lib official site给出了清晰的instructions: [cc lang=”bash”] sudo pear channel-discover pear.firephp.org sudo pear install firephp/FirePHPCore [/cc] [FirePHP in action] firephp支持两类api,推荐使用Object Oriented API: [cc lang=”php” nowrap=”false”] info(“FirePHP logs”); $firephp->log($tools, “Tools”); ?> [/cc] ok, 准备工作完毕,确保firefox enable了firebug和firephp (Tools -> FirePHP -> FirePHP Enabled),打开firebug并enable firebug的Net Panel (貌似还在做准备工作…),这时再访问上面的code, 我们就能在firebug的console里面看到log了: 鼠标hover或click console里面的log能在input line看到输出该log的文件名和行号,array之类的sturcture data还能在browser里面看到类似var_dump()的输出,相当nice. 不足之处是production环境显然不能用(error_log说不定还行),建议开发测试完毕后disable firephp( $firephp->setEnabled(false); )或者直接删掉所有的log statement。
PHP dev & debug: var_dump, var_export, error_log and FirePHP (Part 1)
总结一下最近比较常用或是刚刚发现觉得比较好用的php dev & debug tool,肯定不全面,欢迎大伙补充。 1. var_dump() 用法很简单,就是你要dump什么data就传给这个方法什么data(其支持可变参数,不过一般还是习惯一个data一个var_dump())。它的好处很像ruby里的PP(pretty print),不过limit是只能输出到标准输出(php-cli是输出到控制台,php网页便是browser). [cc lang=”php” nowrap=”false”] [/cc] [cc lang=”php”] array 0 => string ‘var_dump’ (length=8) 1 => string ‘var_export’ (length=10) 2 => string ‘error_log’ (length=9) 3 => array 0 => string ‘Firebug’ (length=7) 1 => array 0 => string ‘FirePHP’ (length=7) [/cc] 2. var_dump(), die() 之前提到var_dump()的一个limit是网页page只能输出到浏览器,如果遇到页面redirect的,该限制的不足就会体现出来,处理这个问题的一个办法是配合使用die(),让程序halt在var_dump()之后,这样页面没机会跳转,我们亦有充足的时间查看浏览器上的输出。 [cc lang=”php” nowrap=”false”] [/cc] 3. error_log() die()有利有弊,因为有时候可能我们并不想就此halt程序,解决var_dump()限制的另外一个方法是釜底抽薪,换用error_log()。 error_log望文生义貌似是用来log error的,这里我们也可以用来log我们关心的data。 要使用error_log,需要在php.ini里面设置一下: [cc lang=”ini”] log_errors = On error_log = /path/to/php_errors.log [/cc] 试一下效果,由于error_log的message必须是string,我们这里简单的cast一下: [cc lang=”php” nowrap=”false”] [/cc] tail一下log file: [cc lang=”bash”] [02-Jul-2010 16:38:03] Array [/cc] 貌似不是很useful,自己implode()成string又太麻烦了,而且不general,看来我们还需要其它function的配合。 4. error_log(), var_dump(), output buffering control 首先想到的是前面的var_dump()到底能不能输出到log,其实也不是不行,就是有点麻烦。利用php的output buffering,我们可以把var_dump()的输出redirect到string,这时再用error_log输出这个string应该可以解决问题。 [cc lang=”php” nowrap=”false”] [/cc] 可惜事不遂人愿,log file得到了如下的browser friendly输出,disable xdebug-var-dump extension和禁止php error_prepend_string和error_append_string可能可以得到相对清晰的输出,但这不是我们想要的。 [cc lang=”bash”] [02-Jul-2010 16:56:53]
array
0 => string ‘var_dump’ (length=8)
1 => string ‘var_export’ (length=10)
2 => string ‘error_log’ (length=9)
3 =>
array
0 => string ‘Firebug’ (length=7)
1 =>
array
0 => string ‘FirePHP’ (length=7)
[/cc] 5. error_log(), var_export() 看来我们还是得忍痛舍弃var_dump(),一个replacement是var_export()。var_export()的第二个参数接受一个boolean值,我们可以用它来指定是否需要作为结果返回还是直接输出。 [cc lang=”php” nowrap=”false”] [/cc] 这回log file终于干净很多了: [cc lang=”bash”] [02-Jul-2010 17:10:29] array ( 0 => ‘var_dump’, 1 => ‘var_export’, 2 => ‘error_log’, 3 => array ( 0 => ‘Firebug’, 1 => array ( 0 => ‘FirePHP’, ), ), ) [/cc] ok,文章已经太长,已经超出了我能忍受的范围,遂决定就此打住,定为part 1,下篇part 2会介绍FirePHP,敬请期待~
一直很安静
media downloaded from google.cn music 一直很安静 - 阿桑 空荡的街景 想找个人放感情 做这种决定 是寂寞与我为邻 我们的爱情 像你路过的风景 一直在进行 脚步却从来不会为我而停 给你的爱一直很安静 来交换你偶尔给的关心 明明是三个人的电影 我却始终不能有姓名 你说爱像云 要自在飘浮才美丽 我终於相信 分手的理由时候很动听 给你的爱一直很安静 来交换你偶尔给的关心 明明是三个人的电影 我却始终不能有姓名 给你的爱一直很安静 我从一开始就下定决心 以为自己要的是曾经 却发现爱一定要有回音 给你的爱一直很安静 来交换你偶尔给的关心 明明是三个人的电影 我却始终不能有姓名 给你的爱一直很安静 除了泪在我的脸上任性 原来缘份是用来说明 你突然不爱我这件事情
Update-34: lan pa de
1. ccav5老是宣扬足球迷信,如此这般的话,就不该派(英格)兰怕德(国)上场…… 这不,进去的球都被吹出来了…… 不听老人言,吃亏在眼前啊…… 2. 周末和sunng参加rubyconf,突然发现原来developer都是那么幽默,smart的可以不幽默,但幽默的有水平绝对需要smart。 T-shirt 绝对是亮点,一人穿着个不知道从哪个javaconf里赚来的”i love java” t-shirt (就是借鉴的i love new york的那种style)招摇过市,不知道matz合影时发现身边站着个”i love java” 会是什么感受。 中场时眼前突然出线一个”i did it with ubuntu”…… 好吧,你就just do it好了 …… 中饭时身前出现个”熊出没小心”, 事后得知是哪个富士×的,反正我也搞不清富士通和富士康的区别,大概就是一个喜欢跳楼,一个喜欢熊出没吧,晕,好像没什么关系…… 中场介绍时,一个来自“奥地利维也纳撕得粉托马森”公司的人特别积极,大概是招人的压力太大所致吧,呵呵,不过公司名字取得实在太长,以至于我听了两遍还是没记住公司的名字…… 这个搞笑的名字估计也是他们招人的一大障碍哈哈,怪不得招人压力大,怪谁呀哈哈。 3. 哦,对了,rubyconf现场第一个提问matz的人估计就是.NET过来砸场子的,一上来就让很少做web开发的matz比较rails和asp.NET…… 主持人马上提示提问者“注意,我们这回是rubyconf……”哈哈,这个问题应该很适合DHH,可惜咱们这回可不是railsconf~ 4. 继续回到世界杯,先不管世界杯比赛精不精彩,比赛前的几个小时等待时间实在无聊,这不,我和老爸无聊的玩起了qq飞行棋…… 晕,都不知道怎么想的出来的…… 结果就是合伙玩别人的乐趣实在太大,以至于比赛开始了我们那还在那依依不舍的掷骰子…… 5. 刚刚发现我的blog(blog.samsonis.me)被公司的网络封掉了,加到了某个block list上去估计,我特地查了下block的category,居然是Adult…… 真纳闷它们是怎么知道的…… ?
Update-32: Chicken or Beef?
1. 端午节回来一上网发现很多朋友都更新了,有总结展望的,有旅游摄影的,有吃拉面吃的很爽的,有伤感离别的,鄙人从小就有“人来疯”,so…… 2. chicken or beef? 这句空嫂空叔们早就倒背如流的询问语如今已被丫演绎的是连贯自如、不假思索,时而欲扬先抑,时而抑扬顿挫,令人百听不厌。你的回答是无所谓的,他们通过看你的初始口型以及舌头的位置形态便可得知你的答案,准确无误。当一切沦为流水线操作之后,甚至没有人质疑过为啥你只有而且永远只有这两个option? CHicken or beEF? CHEF please… 3. nba总决赛进入最后抢七 —— win or go home,但是因为已经是finals了,所以win完了其实也还是go home,so… 不如改成 let’s go home together 好了,呵呵,多和谐…… 联盟一场总冠军赛的收入颇丰,这种摇钱赛联盟恨不得能像打斯诺克大师赛一样打个二十、三十盘,最好最后还有个什么加时赛点球金球什么的…… 不管怎么说,最后一场应该是理论上最为“干净”的,值得期待…… 是18号还是19号早上的来着…,晕,回头我去做做功课…… 4. 继续说体育,世界杯、熬夜杯,我已不看足球好多年,现在估计连个伪球迷都算不上了,可以称为间歇性球迷,周期四年一次,每次持续一个月…… 问我喜欢什么球队?这个depends到问我的人的国籍,是一个动态函数…,前几天一个巴西人问我”who are you cheering for?”,我马上不假思索恬不知耻的告诉他”i cheer for your country…”,同样的问题换个德国人来问我估计也还是会告诉他”i cheer for your country…” …… 中国是世界上无缘世界杯决赛圈的国家里面观看世界杯人数最多的国家,不带之一的,呵呵,估计都超过人家正儿八经参加的国家了,颇为有趣…… 好了,扯远了,最后,如果排除国籍因素从小到大我一直喜欢的是荷兰队,不是因为全攻全守,不是因为帅哥(我不是gay),只是觉得橙色在绿色的海洋里跳跃的背景很优美诗意,很适合作为眼睛闭上前最后的景象带入梦乡…… 呵呵,开玩笑…,其实喜欢的原因很单纯搞笑,就是小时候打游戏机玩足球游戏,荷兰队球员总是在游戏里面被设置的速度很快,于是…… 现在实况,Fifa里面荷兰队速度好像也很快的吧,那个不知道什么罗本还是裸奔的,速度不要太快哦,“丫受伤了”,“啊!哦…晕”… 5. 今日中午蹭同事复旦卡去复旦食堂吃了一顿在我同事眼里一点都不辣的牛肉面,喝了几口汤后,同事笑问味道几何,我缓缓抬起头,面目狰狞的强颜欢笑,“还不错,至少i’m still alive…” 回来时天公不作美,欲雨又止的灰暗天色总是给人以逃脱瓢泼大雨的希望和最后逃脱不了命运的审判的绝望,带着对理想的信念,我们开始一路小跑起来,殊不知肚里那一碗辣汤早就开始翻江倒海起来(事后得知就本人的在翻)…… 终于跑回office,庆幸大难不死,必有那啥,结果突然意识到肚子有点异样了… ok,那是后话了…… 直到记者撰写本文之时,笔者怀里还像有个小兔子一样的心嘣嘣直跳,晕,小兔子的修辞好像是我们小学作文时常用的伎俩啊,完了完了……
退步原来是向前
《插秧歌》 唐·布袋和尚 春有百花秋有月 夏有凉风冬有雪 若无闲事挂心头 便是人间好时节 善似青松恶似花 看看眼前不如它 有朝一日遭霜打 只见青松不见花 面上无嗔是供养 口里无嗔出妙香 心中无嗔无价宝 不断不灭是真常 佛在灵山莫远求 灵山只在汝心头 人人有个灵山塔 好向灵山塔下修 佛在世时我沉沦 佛灭度后我出生 忏悔此生多业障 不见如来金色身 手把青秧插满田 低头便见水中天 六根清净方为道 退步原来是向前 千锤百炼出深山 烈火焚烧莫等闲 粉身碎骨都无怨 留得青白在人间 三十三天天外天 九霄云外有神仙 神仙本是凡人做 只怕凡人心不坚 南无阿弥陀佛