Monthly Archives: 01月 2008

遇窃记

发生在两三天之前的事了。只是突然想到要记下来,提醒下各位年关要小心自己的财物。 上个星期五傍晚,天寒地冻加上阴雨綿綿,在中信等半个小时以上的出租车无果,无奈只好下地铁进行曲线归家。地铁很拥挤,兜兜转转去到了岗顶准备出地铁换乘公交车。那天我生日,有朋友要加来并一直短信联系着,所以手机一直拿在手上。那时天色也晚了,雨还是挺大的,我在即将要走出地铁的时候把手机放到衣服的袋里,然后用手打开雨伞,打开后我马上想要拿手机,但奇怪的是我在衣袋里却摸不到我的手机,我一看情况不妙,马上上下身几个袋子都摸了一下,手机的确飞了!我马上回过神来,我知道一定是有人摸走了我的手机,那时刚好有两个人一左一右地从我身边走出去,我确定就是在那一瞬间,他们之间其中一个偷了我的手机。他们慢慢地都走远了,我必须得做些什么才行,要不白白被偷了手机太没面子了,我那么高个人,说出来糗死人 :P。我决定追右手边的那一个,心里已经想好了,我停下他后,如果不是他偷的我就说认错人吧。心意已决,我飞速跟了上去,(当时他没有跑,因为他也不敢跑,一跑我肯定知道是他偷的。)大手往他肩膀上一搭,他也很配合地回过了身,好家伙,果然是他偷了我的手机!那时他打着伞,手机被右手推到伞顶的地方,不小心真的是看不清楚。那贼人一见是我,马上把手机递给我,我伸手接过,开骂“找死啊?!”,那家伙倏的一下撒腿就跑了。我见手机拿出来了也没追上去。便宜那贼人鸟。 分析一下这一次的事件。一直以来,没有偷或抢的事件发生在我的身上(感谢这一米八五的具震摄性的身高),而另一方面,我自己一直都很小心自己的财物,这一次换手开伞才把手机临时放在衣袋,可以说机率是极其低下的,没想到却偏偏遇上了贼人,这充分说明,出门在外,任何时候都不能掉以轻心啊! 另外,如果你捉到贼的话,他一定会很乖把东西还给你,趁你接回东西的瞬间拼命跑,下次遇到这样的事情,有把握的同学可以留多一点心眼,在抢回自己的财物的同时捉住贼人,我后来还一直恨恨地想当时没有把那家伙按住暴打一顿,好补偿自己的精神损失。 总之,年关正是贼人活动更活跃的时候,朋友们不管出门在外还是在家里都要注意安全,小心保管自己的财物!

Posted in 其他 | Leave a comment

很好,很暧昧

Chat with lok:   捞头 12:06:22 喂 heyhey 12:12:24 呃。。。。 捞头 12:06:57 你睡觉够不够暖? heyhey 12:13:14 。。。。。 捞头 12:08:21 如果两个人呢? heyhey 12:14:13 。。。。。 heyhey 12:14:29 要加被。。 捞头 12:08:52 [暧昧的表情] heyhey 12:14:37 。。。。。。 捞头 12:08:59 有冇得加? heyhey 12:14:45 有。 heyhey 12:14:55 几时出 … Continue reading

Posted in 其他 | Leave a comment

安装MoinMoin–mod_python篇

最近需要一个Wiki来进行写作和进行翻译工作。Confluence无疑是一个功能超强的Wiki产品,可惜是商业产品,而最近投靠Python的大营,所以Python世界的Wiki代表MoinMoin成了我的首选。 从MoinMoin的部署结构来看,她可以分为三个部分:一、程序文件,二、静态文件,三、Wiki实例。下面以moin-1.6.0为例,讲解MoinMoin在Windows下,Apache及Mod_python的环境下部署的步骤。 一、确保本地已安装好Apache + mod_python。 二、下载MoinMoin-1.6.0。执行setup.py install进行安装。安装程序将会在%PYTHON_HOME%/lib/site-packages/下面创建MoinMoin文件夹并复制程序文件到这里,并在%PYTHON_HOME%/share下面建立moin文件夹,复制MoinMoin的模板到此。config和server文件夹下面存放的文件分别是Wiki实例的配置及用于不同应用服务器的脚本、Data和underlay是数据和一个Wiki的初始化内容,通常新建一个Wiki实例的时候都会复制这两个文件夹的文件、htdocs主要是存放静态文件,如Js,css,html等,应该暴露给服务器访问的。 三、创建一个文件夹,把share文件夹下面Moin里面的date和underlay文件夹复制进来。并把config文件夹下面的wikiconfig.py复制到新创建的文件夹下。假设该文件夹的路径为:F:/develope/tools/moin-1.6.0/instance 四、配置Apache。修改httpd.conf文件。apache要配置一个别名用来访问静态文件和配置一个Location,用来访问Wiki实例的:   httpd.conf   Alias /wiki D:/Python25/share/moin/htdocs      <Directory D:/Python25/share/moin/htdocs>          Order allow,deny       Allow from all   </Directory>         <Location /moin>           SetHandler python-program           PythonPath "['F:/develope/tools/moin-1.6.0/instance'] + sys.path"           PythonHandler MoinMoin.request.request_modpython::Request.run   </Location>     在Location的配置了,我指定了moin作为访问的地址,由Mod_python来处理/moin的请求,在PythonPath加上Wiki实例所在的目录的原因是该目录下有配置的代码。 五、修改wikiconfig.py。打开Wiki实例根目录下的wikiconfig.py,需改几个地方如下: python 代码   # 站名, 作为Wiki的默认名字   sitename = u’fallever’   #Logo的图片地址,这里是wiki开头的原因是我所配置的静态文件的alias是wiki   logo_string = u’<img src="/wiki/common/moinmoin.png" alt="MoinMoin Logo">’   #存放数据的目录,最好用绝对路径   data_dir = ’F:/develope/tools/moin-1.6.0/instance/data’   data_underlay_dir = ’F:/develope/tools/moin-1.6.0/instance/underlay’   #静态文件夹的路径,注意是Apache的别名。这个参数跟以前的版本有出入。   url_prefix_static = ’/wiki’   … Continue reading

Posted in 其他 | Leave a comment

卖唱之兄弟档

说到做到。今天我们真的去卖了。瓜、区和我在吃完晚饭回来的路上突然说不如就今天晚上去卖唱。尽管感觉上还没有准备好,但是也一口答应了,先去了再说。 回到学校,我换了件运动外套、盖了顶帽子,瓜则换下西装穿着一身休闲的背着吉他出去了。去到了科韵路旁边的人行隧道时时间刚好九点,原以为冬天的寒冷的夜里来往的人不多的。隧道里还有几个小贩,买小植物、头饰等等,我们来到隧道中间拆开琴便开始。 由开始的紧张腼腆渐渐到后来变得沉稳和放松。我们哥俩你两首我两首地轮流唱,在切换和弦的瞬间、在抬头换气那刹那,我都有意无意地使用眼角的余光看望过往的人们。有人匆匆忙忙、有人放慢了脚步慢慢靠过来,往琴袋里扔下一张RMB、有的则高声地一边走一边和着唱。回想自己无数次在这个隧道遇到过无数个卖唱的朋友,而自己当时的表情又是如何?一个匆忙的过路人?连暂停片刻的意思都没有,我自己从来没有给任何一个卖唱的朋友钱,那是因为我总认为,音乐不是用来搛钱的;如今我却站在同一个地方做着同样一件事,我知道,我也一定会遇上无数个像我以前一样的人,走得那么匆忙,好像什么也没听见一样,这些都无所谓,我来这里寻找的是某种缺失的感觉,而此时此刻这种感觉来得是多么的强烈。我们感觉好极了。瓜居然Enjoy到一边弹一边扭起了PP。。。 第一个给钱的路人居然是一个小孩,其实他是隔壁摊档的档主的儿子,估计是档主叫儿子送钱过来的,折折叠叠估计有好几块钱呢,这样一来省了瓜要自己掏点钱出来撑场面。哈。接下来的一个小时内,陆陆续续有人把钱放进琴袋,看来热心人还不是我想象的那么少,至少在此之前我不是这样的热心人。末了,琴弦被弹断了,数了数琴袋里的钱,居然超过了10元。对数字敏感的我飞快地想了一下,一个大学生毕业,如果一般般的工作的话1500元,我一个小时10元,一天下来都80以上,一个月不休息都有2400了。。哈。看来卖唱的行情还是不错的,而且今天收到的钱的面值大部分是一元或以上的。 今天是具有历史性质的一天:来晚了的第一次卖唱、我们开始了体验生活的征途、我们一起用音乐搛回来了10.5元。这10.5元(6个硬币5张纸币)被我藏在一个铃筒内,它们将是今天的一个见证。 只可惜瓜的手机中毒不能把图片上传到电脑,不然的话,现在就可以看图说话了。。。

Posted in 其他 | Leave a comment

Google chart in house

前些时候Google推出了一款报表API“Google chart api”。该API让开发者可以通过URL来动态生成图表,图表的样式有流行的线状图、柱形图、饼图等。下面是一个使用实例:在你的浏览器输入下面的地址:http://chart.apis.google.com/chart?cht=p3&chd=s:hW&chs=250×100&chl=Hello|World 然后回车或确定,你将看到下面这一幅图片。 还有更多样式,更复杂的图表Google chart api也能胜任,本文不打算重复参考文档里的内容了。有兴趣的同学可以自己去研究一番。 也就是说,Google为你提供远程的图表生成服务,但是这个服务并非没有限制的,Google限定了,每个用户每日的访问图表数量不能大于50,000次,说实在的,普通的应用的用户要达到这个数本来就很难,所以这倒不是最大的限制。另外,如果你的项目是在企业内部部署,用户不能直接访问外网,那Google chart api就哑火了。你可能会说“真可惜了,Google chart api如此强大,我都已经掌握了它的全部用法了,如今却因为这种原因使用不了”。使用第三方的在线服务,还有一个潜在的问题就是,你不知道他们什么时候会把这个服务撤掉。 现在你不需要为这件事而发愁了,有一个好东西一定会让苦恼的你兴奋不已。著名的Java报表引擎Jfreechart的作者模仿Google chart api的URL风格开发出了一套Servlet--Eastwood,这个项目是基于Jfreechart的,它可以让你使用Google chart api的方式生成与Google生成的几乎百分之百一样的图表,这味道着,如果你用Google chart api开发了一套图表,那么你需要Google chart inside的话,只需要把eastwood作为一个Servlet配置起来,然后替换一下URL的Host就搞定了。 来看看Google和EastWood生成的图表之间的差异: 更多的比较看这里。要进行最全面的比较,下载一份Eastwood的发行版,部署,打开Test.html就见到效果了。很赞。Jfreechart的作者怎么在之前没有想到以这样的方式来提供报表生成的功能呢?呵。看了下EastWood的代码量很少,只是将Jfreechart做一下封装就完了。

Posted in 其他 | Leave a comment

关于接口中使用Object参数的讨论

项目需求中终于出现了规则,由于时间问题,没打算使用规则引擎来处理这些规则。只是很简单地设计了一个很简单的接口,让事实的生产端直接调用。 Rule.java   interface Rule   {       String getAction(); //触发该规则的动作       void process(Object source); //执行规则   }   我必须承认,这个接口很丑陋。像这种接口命名为Rule太造作了,除此之外,它还可以命名为EventHandler,Executor等等。只是我现在把这个丑陋的接口用在规则处理这一块,所以我很厚脸皮的为它命名为Rule。它的实现类的责任是:用Source对象按照一定的算法计算出相应的积分,并保存到数据库。   下面是一个很简单的实现,当一个用户登录后,按积分规则,他应该得到20点。那么我的一个登录积分规则的实现为: LoginRule.java   class LoginRule implements Rule   {       public String getAction(){           return "login";       }       public void process(Object source){           User user = (User)source;           Score score = new Score();           score.setPoint(20);           score.setUser(user);           score.setType("login");           score.save();       }   }     为了让客户端调用起来更方便更统一,我加了一个类,起到入口和路由的作用,下面是简化版本的代码: ScoreGenerator.java   class ScoreGenerator   {       private Map<String,Rule> rules;          private void generateScore(action,Object obj){           if(rules.containsKey(action))               rules.get(action).process(obj);           else               throw new RuntimeException("no action found!");       }   … Continue reading

Posted in 其他 | Leave a comment

卖唱

不知道你是否也和我一样,过着忙忙碌碌的生活,工作、休息、再工作、再休息,假如你有女朋友就是工作、逛街、休息,再工作、再逛街、再休息。 不知道你是否也和我一样,知道javaeye,blogjava,matrix,csdn等这些技术山头并且常常去爬山;加入好些MailList中和别人探讨技术,年前参与了SpringSide项目贡献些代码,今年又加入Jmesa和另外一个Jeff一起做下开发,通通邮件;发现Python比较好玩又开始一头扎进去;永远这样,乐此不彼,永远都是凌晨两点后才上床睡觉。 不知道你是否也和我一样,心里已经开始产生不甘了,不甘于这样的平凡,不甘于这样的规规矩矩,不甘于一直走在这条直线上。自从和编程好上以后,为了练好一身好功夫,我渐渐荒废了自己的“音乐事业”,那么多年来没有任何灵感进行创作;为了练好一身好功夫,我甚至很少和同学一起去打篮球,尽管我185CM的个头,但那时被逼上场打比赛时真的可以用一个烂字来形容;为了练好一身好功夫,我习惯了把自己锁起来练功,同学们在习惯“望其项背”之余,毕业后也慢慢相忘于江湖。某些日子,我弹着老吉他忘情地哼唱时、享受终于可以带着蓝球突破,飞身上蓝的快感时、可以和一班朋友慢慢海阔天空的聊起来的时候,我才发现自己这些年来丢失了多少东西。而这一切,这原来看似很遥远很困难的事情,我现在都可以做到了。我想好好拥抱这每一种生活,更想体验一些其他没体验过的生活。 如果你用后知后觉来形容我,我认为那是最贴切的。是啊,例如我不知道基金,不认识股票,我以前甚至怀疑过炒股买金的人们的人生和价值观,如今正当我醒悟的时候,觉得曾经的自己纯粹得太可爱了,不过我不后悔曾经是这样,因为来得越晚来得越艰难的认知比一般的要可贵多了。 可能有“执着”的程序员会跑出来指着我的鼻子说,你这样子不是程序员,做程序就要执着才能做好程序,继续你对技术的乐此不彼吧!对技术,我还是会乐此不彼,但我现在认为,技术以外,还有很多像新技术一样鲜活的世界等着我去感受。 我的意思是,我醒来了(某朋友最近对我用这一句话的频率相当频繁),在稍早些时间里。我已经开始在很多方面的尝试,我再次像一个孩子一样,对技术以外的各种事情都开始产生好奇并希望在八小时之外尝试。如:我自觉参与一些多人的聚会或交流之类的活动,开始磨自己的嘴皮子和混个脸熟;认识新朋友,工作时争取更多机会与客户面对面交谈,磨厚一点自己这张很轻易就爱红的脸皮;珍惜工作上面的压力,增强自己在工作安排,人员调度,进度管理方项的能力;像个白痴一样问朋友:我要炒股的话要怎么办?;做一些失败的事情,让别人BS一下,学习自我解嘲。 不管是自己天生迟钝还是后知后觉,总之现在我很清晰地知道,我要开始全方位的拥抱生活了。我要拥抱我的音乐,拥抱对抗运动胜利的快感和被挫的失落,甚至拥抱一次失败的创业。 ===============抽象与实现的分隔线=================== 昨天晚上,我告诉瓜和区,我想去卖唱。我说我能想象到,我们几个拿着吉他,口琴跑到大街上,旁若无人地弹呀唱呀。跟一般的卖唱的人不一样,我们目的不在于钱,而是体验,而且几个人的话玩的花样也很多,一定会很好玩。瓜很赞同我的想法,果然好兄弟,一拍即合。接下来,我想,有时间我们就会一起排一些歌曲,然后首先出现在学校附近的车站、天桥底。呵呵。不要觉得好笑,一个玩音乐和被音乐玩了近10年的家伙将要再次拿起吉他去卖唱的时候,是多么激动人心的事情。 那就让我们开始吧。让音乐来得更自由、让失败来得更猛烈、让想法实现得更快些。 ===============卖完唱后的分隔线====================   卖唱,是我希望开始重新体验生活的一个部分。我希望不管是卖唱还是其他方式的尝试都要执着的去执行它们。我认为,这才是我想要的生活!我的朋友们要和我一起加油了。  

Posted in 其他 | Leave a comment

哎哟哟

哎哟哟。发现现在站点很慢,貌似是网络慢,不知道是主机网络还是偶的网络问题,在公司也一样很慢。 哎哟哟。捞的博客都快成了化石博了,突然来一篇很好很强大的。难怪今天问我,友情连接功能加上没?我说,好久没更新了。捞一个劲笑。哦,有阴昴。。 哎哟哟。年关了,最近跟项目的兄弟们说,为了大家在过年的时候可以悠着点,大伙一鼓作气一番吧。结果这几天忙部署、开发、部署、加班。辛苦一班哥门鸟。 哎哟哟。本站又来了一位勃客,据闻已经偷窥了fallever粉久了。还牺牲了在新浪的勃来入住这里,与其说是牺牲,倒不如说是弃暗投明。。卡卡。。这回又有动力继续干活了。。 哎哟哟。发现一件很惊喜的事情。我的PR又涨了。这次升到三点了。恭喜恭喜。截个图给你要吗?要?真的想要?你确定想要?想要就说吧。难道你真的想要?来! 这一小进步不简单。继续努力呀。。

Posted in 其他 | Leave a comment

时光倒流事件

几个小时前,我这样写了下来: ——————————————————————- 我是否应该庆幸我没有像很多人那样在Blog上写个人总结?因为这将会丢失掉。 2008年刚开始,捞捞告诉我我的Blog是不是出现了时光倒留?我马上上去一看,天哪,上面最新的内容是11月27号的。新数据都到哪里去了?当 时浪点的客服并没在线,问题没有马上得到回答,今天早上我和另一个客服GG沟通了一下,我告诉他,我自己提供的程序没有删除功能,更不可能有定时删除的功 能。他答应我一定会严查此事,并在明天给我答复。 我想在这里重新描述一下情况,希望对浪点的同事有帮助。 我确定这不使用程序删除数据的而是数据库还原。原因:一,我的程序没提供,二,也不是Django Admin的删除功能,因为如果使用DjangoAdmin删除的话将会有Log,现在完全没有。三,我测试了一下,回复《戒网》这一篇文章,评论的ID 和上一条ID是连续的,(这ID由数据库自已生成,是自增的,如果中间删除了评论,ID不可能连续)。这些现象说明了这是一次数据库还原。 浪点的GG告诉我数据库备份是每周一次,星期天晚上备份的,根据最后一条评论的时间2007-11-30 01:08:13 和GoogleReader里收录我的下一篇文章显示的时间《我还应该期待澳门吗?》Dec 7, 2007 9:17 PM来推测,如果这是一次备份还原,那它应该是十二月二号晚上的备份。 等待结果中,不管结果是有人Hack了我还是系统可能存在安全隐患,只希望数据能完整还原就好。没想到我要这样来开始2008年。。 ——————————————————————- 现在数据恢复了,初步调查的原因可能是对Mysql进行安全升级的时候造成备份错误,并原因不明的使用了11月份的备份数据。真是满头大汗,不过幸运的是,数据都还在。

Posted in 其他 | Leave a comment