posted @
2012-02-18 18:57 Paul Lin 阅读(628) |
评论 (0) |
编辑 收藏
摘要: 换句话说,当你找到与天赋、个性完全匹配的工作,它恰好处在上升期的市场,公司又提供了必要的授权与资源,那么你就很容易成功。反之,若这三点中的任何一点不匹配,那么你就是个loser。
阅读全文
posted @
2012-02-18 18:27 Paul Lin 阅读(653) |
评论 (0) |
编辑 收藏
posted @
2012-02-18 18:09 Paul Lin 阅读(560) |
评论 (0) |
编辑 收藏
摘要: 这是一篇集百家之长的笔记,分别参考了《Rails3 in Action》和 RVM官方文档,ninjahideout.com 之后的安装文档。
这里使用到的各种软件包括:
- Ubuntu
- Virtual Box
- Vagrant
- RVM
- Capistrano
- Passenger
- Nginx
- MySQL
- PostgreSQL
还涉及到Git、GitHub、SSH等技术
阅读全文
posted @
2011-11-21 16:22 Paul Lin 阅读(1672) |
评论 (0) |
编辑 收藏
摘要:
阅读全文
posted @
2011-11-13 23:29 Paul Lin 阅读(10987) |
评论 (1) |
编辑 收藏
终于花了将近4个月的时间,把《Learn Rails3 by example》的E文版看完了,心中那个成就感和满足感啊~~继续下一轮的针对性学习计划,计划包括:1. Rails应用的部署和性能监控2. Rails的MVC架构和Cache3. JS和JS与Rails的结合使用4. Ruby的语法和特性5. MySQL配置和调优6. 搜索引擎和推荐引擎的学习7. NoSQL专题
posted @
2011-11-03 00:17 Paul Lin 阅读(730) |
评论 (0) |
编辑 收藏
关于RVM + REE + Ngix + Passenger + Capistrano的安装配置,非常详细!强烈推荐http://blog.ninjahideout.com/posts/a-guide-to-a-nginx-passenger-and-rvm-server
posted @
2011-11-03 00:14 Paul Lin 阅读(700) |
评论 (0) |
编辑 收藏
摘要:
阅读全文
posted @
2011-10-03 17:36 Paul Lin|
编辑 收藏
在上一篇《自动化测试狂人的Rails测试优化之路》中,我演示了如何使用Guard-spork, Guard-rspec和Spork, Rspec来进行自动化测试和集成测试。
今天发现存在一个bug,那就是当model文件被修改后,虽然会重新启动rspec执行测试。但是测试的代码不是最新的,而是继续沿用已经加载到内存的model文件。网上搜索一番后,发现问题的原因是spork的预加载问题。于是在spork的spork.each_run方法中加入如下代码,重启sprok,解决问题
Dir["#{Rails.root}/app/models/**/*.rb"].each do |model|
load model
end
posted @
2011-09-06 14:21 Paul Lin 阅读(677) |
评论 (0) |
编辑 收藏
假如我们把attr_accessible设置成只有name是可以访问的,然后在Console中执行如下命令:
ruby-1.9.2-p180 :001 > user = User.create(:name => "Paul", :email => "pengpenglin@163.com")
=> #<User id: 1, name: "Paul", email: nil, created_at: "2011-09-03 04:42:59", updated_at: "2011-09-03 04:42:59">
ruby-1.9.2-p180 :002 > user.email
=> nil
ruby-1.9.2-p180 :003 > user.email = "bob@163.com"
=> "bob@163.com"
ruby-1.9.2-p180 :004 > user.email
=> "bob@163.com"
ruby-1.9.2-p180 :005 > user.save
=> true
ruby-1.9.2-p180 :006 > user.reload.email
=> "bob@163.com"
ruby-1.9.2-p180 :007 > User.find(1)
=> #<User id: 1, name: "Paul", email: "bob@163.com", created_at: "2011-09-03 04:42:59", updated_at: "2011-09-03 04:43:31">
不是not accessible 吗?怎么email还是能够改变?
posted @
2011-09-03 12:51 Paul Lin 阅读(1223) |
评论 (1) |
编辑 收藏
摘要: 我们要修改的文件会涉及到4个:
A. Gemfile
B. .rspec
C. Guardfile
D. rspec_helper.rb
阅读全文
posted @
2011-08-31 00:44 Paul Lin 阅读(1833) |
评论 (1) |
编辑 收藏
摘要: 从RailsCast.com筛选出来的视频
阅读全文
posted @
2011-08-29 15:58 Paul Lin 阅读(579) |
评论 (0) |
编辑 收藏
摘要: NERDTree.vim:显示目录树和标签(特别有用)
Rails.vim:这个不说了,Rails开发必备
Snipmate.vim:代码片段自动完成,Rails开发神器之一
FuzzyFinder.vim:模糊查找,使用频率最高的插件之一
TabBar:BufferExpoloer的增强版,用来标识打开的文件的
Supertab.vim:文本自动完成
Rubytest.vim:vim下的集成测试工具
阅读全文
posted @
2011-07-26 12:46 Paul Lin 阅读(3403) |
评论 (0) |
编辑 收藏
BDD style unit testing video and slides@RubyKaigi 2011How I Testwatchr 灵活的Continuous Testing测试工具可替代autotest... 不要盲目的 BDD / TDD,我對寫測試的看法
posted @
2011-07-19 20:06 Paul Lin 阅读(342) |
评论 (0) |
编辑 收藏
摘要: 针对这种情况,我们可以使用一个名为Guard的gem,来自动监控spork中预加载的文件发生变化后,自动重启spork
1).在Gemfile中增加gem 'guard-spork'
2).在shell中gem install libnotify / gem install inotify
3).bundle install
4).guard init spork
5).guard start
阅读全文
posted @
2011-07-15 18:12 Paul Lin 阅读(419) |
评论 (0) |
编辑 收藏
摘要: 首先我们来理解Autotest的触发机制:
1. 要有一套测试的框架和工具(Console,GUI)
2. 要有可以感知被测试对象发生变化的机制
3. 要有自动加载被测试对象和环境数据的机制
4. 要有将测试结果展示给用户的机制
阅读全文
posted @
2011-07-15 00:14 Paul Lin 阅读(644) |
评论 (0) |
编辑 收藏
摘要: 网上google了一下,发觉又是一个Rails和其他gem不兼容的问题,只要把rake的版本设置为0.8.7就可以了。
阅读全文
posted @
2011-07-03 21:28 Paul Lin 阅读(1417) |
评论 (1) |
编辑 收藏
posted @
2011-06-25 13:40 Paul Lin 阅读(349) |
评论 (0) |
编辑 收藏
posted @
2011-06-18 23:02 Paul Lin 阅读(301) |
评论 (0) |
编辑 收藏
摘要: ....
甲:嗯....可是这样看起来,我完全看不到敏捷的任何好处啊
乙:嗯。实际上,我更喜欢RUP,虽然麻烦但很清楚
....
阅读全文
posted @
2011-06-01 23:31 Paul Lin 阅读(903) |
评论 (1) |
编辑 收藏
摘要: 来自JE上的一篇Rails实战文章,很不错!
阅读全文
posted @
2011-05-27 16:47 Paul Lin 阅读(840) |
评论 (0) |
编辑 收藏
QCon 2011大会的PPT下载。其中有我最感兴趣的架构设计和NoSQL技术:
企业敏捷转型之路
http://www.everbox.com/f/Rgo5syChjzuLeS6wJEAQZwvkje
深入浅出NoSQL
http://www.everbox.com/f/TQMXMI6asloYQFJLIxGy2WIIyo
设计优良的架构
http://www.everbox.com/f/XCZvXDTbft6ZlK8TsUlMWfVBjO
Web性能与扩展
http://t.sina.com.cn/1746173800/wr4mQk5Iwn
来自一线项目的实战经验
http://www.everbox.com/f/FZHFfXanIGZOasZsqSZpFuSSFk
HTML5开发平台
http://www.everbox.com/f/qeD2qvae9LVRXCA3HsNq2ztiBY
posted @
2011-04-21 16:58 Paul Lin 阅读(550) |
评论 (0) |
编辑 收藏
摘要:
阅读全文
posted @
2011-03-23 11:55 Paul Lin 阅读(480) |
评论 (0) |
编辑 收藏
原文:http://www.javaeye.com/news/20399
大多数管理者都会陷入放权的困境。你很忙,每件事都要亲力亲为。你很清楚自己需要别人帮忙,但你没有足够的时间寻找并培训别人来帮你。所以,你更加努力地工作,直到自己崩溃。
下面这个故事讲述了我如何放权。
2001年,CD Baby成立三周年。我已有8名员工,但所有其他事情仍然需要我自己做。每周7天,从上午7点工作到晚上10点,自己仍然要经手每件事情。
每隔5分钟,就会有员工向我请示:
- “Derek,有个家伙想修改网站上已经存在的相册,我该怎么跟他说呢?”
- “Derek,我们可以接受电汇作为一种支付方式吗?”
- “Derek,有个人今天下了两个订单,他想知道我们可不可以给他一起邮寄过去,并且把节省的邮费给他退回去?”
如果整天不停地回答问题,那么什么事也做不成。我感觉我好像是每天去上班,然后在过道里坐着,全职回答员工的问题。
我的忍耐已经到了极限,我不再去办公室,并且关掉了手机。随即,我意识到自己正在逃避问题,而不是去解决问题。我必须解决这个问题,要不然就坏了。
经过一夜的反思,我最终在思想上接受放权。
我必须放权,我不是我公司的必需品,没有我,我的团队照样也可以经营公司。
第二天,我一进门,有人就请示我,“Derek,我们昨天收到了一个客户送来的CD,但他今天改变了主意,他想让我们退回他的CD。我们给他邮寄了回去,但他又问我们能不能退还他的安装费用,因为他从未登录过网站。”
这一次,我并没有仅仅回答了他的问题,而是把大家都召集起来。
我给大家解释了事情的经过,和需要解决的问题。我回答了问题,但更重要的是,我解释了自己思考的过程和回答背后的理念。
“是的,我给他全额退款了。这样,我们会受到一点损失。但是,最重要的是经常做一些能让顾客高兴的事,只要不过分就行。像这样一个小小的表示对我们大有裨益,他可能会因此告诉他的朋友们,我们是一家不错的公司。每个人都要记住,帮助音乐爱好者是我们的首要目标,利润是其次。你们将来可以根据这条准则来自己做决定,我会完全同意。做那些能让他们高兴的事。要确保每个跟我们做生意的人都会满意而归。”
我一一问了每个人,确保他们都理解我的回答。
我让一位员工起草一本手册,把这种情况的处理方式记录下来,并附上解决这种问题的理念。
然后,每个人都回去工作了。
十分钟之后,新的问题,相同的过程:
- 1. 召集所有人
- 2. 回答问题,解释理念
- 3. 确保每个人都理解整个过程
- 4. 让一名员工把这条记录在册
- 5. 让他们知道,下次没有我他们也可以这样处理问题
2个月之后,没有员工请示了。
然后我想员工们展示了事情的最后一部分,也就是我自己的工作。作为学习的一部分,他们也需要把这个记录在册,然后给其他人看(由教而学)。
现在,公司完全不需要我了。我开始在家里工作,不再去办公室了。我甚至教过他们我关于雇佣新员工的思考过程和理念。所以,有两个新员工是完全由他们发现、面试、雇佣以及培训的。他们用那本手册来让每个新员工理解这种理念以及它的历史,并且知道怎么自己做决定。我每周去视察一次,确保一切正常。确实一切正常,他们甚至都没有什么事情向我请示。
因为业务由我的团队负责运作,我可以心无旁骛地改进业务。我去了加利福尼亚,只是弄清楚事情由他们运作。
我现在仍然每天工作12个小时,但是,我把所有时间都花在业务改进、优化以及创新上。对我来说,这才是最有趣的事情。这是在玩,不是工作。
我放权之后,公司市值在四年里从一百万增长到两千万。管理者和企业家之间有很大的不同。作为管理者你会感觉很自由,直到你意识到如果自己不工作,公司就会倒闭。
要成为一名真正的企业家,你要确保自己能够离开一年,而当你回来时,你的公司比你离开时运营得更好。
posted @
2011-03-20 10:22 Paul Lin 阅读(323) |
评论 (0) |
编辑 收藏
第1篇:NoSQL开篇——为什么要使用NoSQL
第2篇:关系数据库还是NoSQL数据库
第3篇:NoSQL架构实践(一)——以NoSQL为辅
第4篇:NoSQL架构实践(二)——以NoSQL为主
下载:NoSQL实战
重点推荐第3篇的最后一种架构:
特别适合SNS的业务架构:把某些关系key存储在MySQL中,用于后续的业务数据分析和挖掘,而把大量的文本和图片存储在类似MongoDB这样的文档型NoSQL。可以利用关系型数据库的强有力的计算能力专注于数据分析和挖掘,而用NoSQL解决数据的读写和存储瓶颈。
由于NoSQL在线性扩展,分布式部署方面有先天优势,可以有效地改善由于数据规模扩大时压力问题,同时关系型数据库存储的数据大大减少,也有利于数据的备份和同步。
posted @
2011-03-19 22:45 Paul Lin 阅读(425) |
评论 (0) |
编辑 收藏
http://www.slideshare.net/mongodb/mongodb-at-the-silicon-valley-iphone-and-ipad-developers-meetup?from=ss_embed
posted @
2011-01-13 00:00 Paul Lin 阅读(669) |
评论 (0) |
编辑 收藏
http://my.safaribooksonline.com/book/web-development/ruby/9780132480345
很不错,居然全部都可以免费看。
posted @
2010-12-12 23:56 Paul Lin 阅读(479) |
评论 (0) |
编辑 收藏
摘要: 在本节,你将学到如何撰写合乎逻辑的、紧凑的标记,使得你有能力将带宽流量降低50%左右,在减少服务器负担和压力的同时,减少网站的加载时间。通过去除那些表现元素,并改掉那些没有任何好处的坏习惯,我们就可以达到上述的目的。
这些坏习惯折磨着网络中的许多站点,特别是那些将 CSS 代码与主要基于表格的布局混合在一起的站点。这种做法笨拙且不经济,即使是对于那些在其他领域很有经验的设计师来说。同时,出现这个问题的几率是均等的,不论是那些手写代码的站点,还是利用可见编辑工具,比如 Dreamweaver 和 GoLive,来创建的站点。
本节会提出这些常见的错误,这样你就可以识别和防范它们,并且学会如何改正错误。我们详细阐述唯一标识符属性 (id) - ,并展示它如何使你可以编写极其紧凑的 XHTML 代码,不论你创建的是混合布局还是纯粹的 CSS 布局。
阅读全文
posted @
2010-11-18 15:25 Paul Lin 阅读(530) |
评论 (1) |
编辑 收藏
摘要: 我确实希望本节的内容可以激发你的兴趣,并鼓励你去尝试。为什么这么说呢?因为一旦你掌握了本章包含的简单容易的理念,你就会重新思考网页运作的方式,并开始改变建造它们的方法。然而我并不希望你只是将代码重新改写一遍。我希望你可以实实在在地以另一种方式思考和工作。
另一方面,重构才是 XHTML 真正的意义。
阅读全文
posted @
2010-11-18 14:58 Paul Lin 阅读(324) |
评论 (0) |
编辑 收藏
1. 详解CSS选择器、优先级与匹配原理
2. 5步让你的CSS样式表成功减肥
3. 10个CSS简写技巧让你永远受用
4. CSS的声明中,对于选择器的描述方式有多种不同的写法和适用范围:
A. 标签名选择器声明方式:p {color: red;} --- 选中某种元素
B. 分组选择器声明方式:h1, h2, h3 {color: red;} --- 选中固定数目的多种元素
C. 派生选择器声明方式:li td {color: red;} --- 选中某种上下文关系元素
D. ID选择器声明方式: #title {color: red;} --- 选中指定id元素
E. Class选择器声明方式: .title {color: red;} --- 选中不定数目的多种元素
F. ID派生选择器声明方式: #title table {color: red;} --- 选中指定id下特定上下文关系元素
G. Class派生选择器声明方式: .title table {color: red;} --- 选中多种类型下特定上下文关系元素
H. 类型选择器声明方式:table.title {color: red;} --- 选中某种元素的某种类型
I. 伪类选择器声明方式:a:visited {color: red;} --- 选中某种状态下元素
J. 类型伪类选择器声明方式:a.news:visited {color: blue;} --- 选中某种元素的某种状态下的类型
posted @
2010-11-09 10:45 Paul Lin 阅读(358) |
评论 (0) |
编辑 收藏
摘要:
阅读全文
posted @
2010-11-05 16:20 Paul Lin 阅读(317) |
评论 (0) |
编辑 收藏
http://www.theserverside.com/news/1363955/Taking-the-load-off-OSCache-helps-databases-cope
posted @
2010-11-03 17:08 Paul Lin 阅读(370) |
评论 (0) |
编辑 收藏
摘要: OSCache是一套用Java编写的缓存框架(或者说解决方案),它主要用于页面缓存,Servlet缓存,或者其它任意的对象。OSCache使用基于内存或者磁盘的缓存策略。不同的策略有不同的适用场合:基于内存的缓存非常快,但是不能持久化,而且不能存储大量数据,适合频繁访问的数据。基于磁盘的缓存可以分为使用文件和数据库缓存,它的速度比内存缓存慢,但可以被持久化,可以在服务器重启重启,数据库奔溃时仍然运作,而且可以存储较多的数据。适合于大量非频繁访问的数据,或者复杂计算结果的缓存。
阅读全文
posted @
2010-10-22 21:39 Paul Lin 阅读(510) |
评论 (0) |
编辑 收藏
最近由于工作学习需要,开始研究缓存技术。从网上找到了不少的资料,按照时间的顺序排列,也可以从中看出缓存技术,框架已经工具的演变历史。
基本知识:《缓存技术》: http://blog.csdn.net/fanweiwei/archive/2007/01/07/1476131.aspx
《缓存漫谈》: http://www.blogjava.net/BlueDavy/archive/2006/06/02/50076.html
《网站缓存技术》:http://dcross.javaeye.com/blog/721468
《缓存技术浅谈》:http://robbin.javaeye.com/blog/770553
posted @
2010-10-19 16:12 Paul Lin 阅读(434) |
评论 (0) |
编辑 收藏
摘要: 介绍缓存的基本概念和常用的缓存技术,给出了各种技术的实现机制的简单介绍和适用范围说明,以及设计缓存方案应该考虑的问题
阅读全文
posted @
2010-10-19 11:09 Paul Lin 阅读(494) |
评论 (0) |
编辑 收藏
摘要: InfoQ上有一篇《深入浅出REST》的文章:http://www.infoq.com/cn/articles/rest-introduction
看完后有如下疑问:
A. 观点1中这个“ID”如何定义?
B. 要为那些“事物”定义ID?
C. 使用链接指向任何可以标识的事物
D. “标准方法”是否够用?
E. 无状态通信如何实现
阅读全文
posted @
2010-09-07 11:04 Paul Lin 阅读(1777) |
评论 (1) |
编辑 收藏
摘要: 原文链接:http://www.javaeye.com/topic/698774
这篇文章放到这个版面,因为我认为它属于管理的范畴:个人管理(时间管理、知识管理)。
是不是大家也有这种体会:
网站注册越来越没耐心,看到页面全是文本框、下拉框,就心烦,咔一下关了。
文章超过两屏的,就没勇气往下看。
看到文章的相关链接,没完没了,两小时后,脑袋一片混乱,真想凉水冲冲。
Google Reader的未读项又是1000+了,看吧,压力太大,不看吧,有种挫败感,干脆,全部设置为已读。
焦虑、挫败、恐惧,什么感觉都来了,唯独没有愉悦感。
......
阅读全文
posted @
2010-07-13 17:36 Paul Lin 阅读(451) |
评论 (0) |
编辑 收藏
①gem install
install命令用于安装指定的gem包,常用的方式是:gem install rails。我们也可以指定版本:gem install rails --version=2.3.5
②gem uninstall
uninstall命令用于反安装gem包,不过要注意的是这个命令并不会删除你之前安装的gem包,而只是把它从path中删除而已。如果我执行以下的命令
gem install rails --version=2.3.4
gem uninstall rails --version=2.3.4
gem install rails --version=2.3.5
实际上rails 2.3.4版本依然还在,只不过你在命令行下执行rails -v的时候是显示rails 2.3.5而已。
③gem cleanup
这个命令配合gem uninstall使用的话可以完全删除旧版本的gem包,所以在上面的例子中如果我需要完全卸载rails 2.3.4的话,只需要再执行
gem cleanup就可以了
④使用指定的rails版本编译运行
rails _版本号_ 项目名称
posted @
2010-06-24 17:39 Paul Lin 阅读(1492) |
评论 (0) |
编辑 收藏
摘要: 所以我们一定要记住:options={}是用来传递请求参数的,而html_options={}是用来设置请求报头的,不能搞混!
阅读全文
posted @
2010-05-17 16:41 Paul Lin 阅读(6487) |
评论 (4) |
编辑 收藏
摘要: 下面我们来回忆一下整个过程,我们会发现使用RoR创建Web应用真是如此简单而充满乐趣!
●命令:
A.rails 项目名称
B.rake db:create RAILS_VERSION='数据库模式'
C.ruby script/generate scaffold 表名 字段名:字段类型
D.rake db:migrate
E.ruby script/server WEBrick
●代码:
validates_presence_of :title, :description, :image_url, :price
validates_length_of :title, :minimum => 10
validates_numericality_of :price
validates_uniqueness_of :title
只需要花你差不多了5分钟的时间而已~,That's all !
阅读全文
posted @
2010-05-15 12:02 Paul Lin 阅读(647) |
评论 (0) |
编辑 收藏
摘要: 豆瓣已经成为一种文化符号,一种现象,一个被所有有志于Web 2.0创业的人研究的对象。不过也正如文中所说的,豆瓣的软肋在于:缺乏原创的内容,不过从现在豆瓣的发展来看已经开始布局原创内容了。“豆瓣电台”就是这样一个理念的产品
阅读全文
posted @
2010-05-10 17:35 Paul Lin 阅读(626) |
评论 (0) |
编辑 收藏
摘要: 总之,长尾理论的提出是互联网发展的一项重要里程碑,也是Web2.0时代很多企业的盈利模式的重要理论依据,同时也可以解决传统经济学意义上的很多约束。这也就为创业者和企业家提供了更为广泛的思路,但在运用长尾理论的过程中我们还要避免把长尾理论与二八理论彻底对立、盲目追求“长尾市场”、过度追求产品或者服务的个性化等误区。本人认为长尾理论的理论体系有多么完善并不是最重要的,重要的是运用长尾是一种理念,是指导企业自身定位以及战略和战术行为的思维运营模式,而如何利用这种长尾理念形成一种盈利模式才是最关键的。
阅读全文
posted @
2010-05-10 16:10 Paul Lin 阅读(326) |
评论 (0) |
编辑 收藏
【暗夜列车】
小成本的“道德教育片”,告诉你“出来混,总是要还的”,“不是不报,时候未到”,还有最重要的一点“死人的东西是不能乱碰的”。
推荐指数:★★★
【荒野生存】
一个理想主义者的传奇,一个藐视世俗者的精神胜利,一个徒步者的孤独旅程。为了理想中绝对的自由,为了理想中没有虚伪的世界,为了理想中的真我,只身踏上旅程。
推荐指数:★★★★
【末日危途】
当未来遥不可及,当世界已成废墟,当文明已经毁灭殆尽 ---- 你是否依然坚信希望在前方,还是选择麻木地活着?你是否依然坚持着那最后的做人底线,还是为了生存而无所不用其极?你是否坚信这世界依然有人值得信任,还是选择用枪口对准每一个试图接近的陌生人?
绝望~ 绝望~ 还是绝望~,人性 VS 兽性
推荐指数:★★★★
【禁闭岛】
如果你看过《穆赫兰道》,《记忆碎片》,那么你应该习惯了好莱坞导演这种颠倒顺序,角色乱入,亦真亦假的手段。
人的精神力量是无比强大的,必要时甚至可以创造出一个虚拟的世界。只为在潜意识中强化自己的逻辑和逃避罪责
这是一部精神病者的历险大片,也可以看作是一部关于如何治疗迫害妄想症的教学片。
推荐指数:★★★★★
【岁月神偷】
岁月是最高明的小偷,他偷走了我们的容貌,偷走了我们的青春,偷走了我们的亲人,模糊了我们的记忆。借助电影的手段,我们又一次找回了被岁月偷走的那份久违的温馨和感动。
成为一部烂片的原因有很多,但是成为一部优秀的电影总是有那么一两个因素的:它们总是能巧妙地运用声,光,影,将一切看似平淡的东西像变魔术般进行组合,准确地击中你内心某一处柔软的地方。
不需太多,有感动则足矣!
推荐指数:★★★★★
posted @
2010-04-28 13:40 Paul Lin 阅读(465) |
评论 (0) |
编辑 收藏
摘要: 摘在SUN 的J2EE Tutoria 第33章的第3节《The JMS API Programming Model 》全面地介绍了JMS的编程模型
阅读全文
posted @
2010-04-17 22:39 Paul Lin 阅读(771) |
评论 (0) |
编辑 收藏
摘要: 我要介绍的内容包括以下几个方面:
1、memcached的简介
2、memcached的应用场景
3、memcached的安装
4、memcached的使用
5、memcached的部署架构
6、memcached的局限性
7、memcached的改进
转自:http://wangzebin.blog.51cto.com/653300/128235 原文作者:王泽宾
阅读全文
posted @
2010-04-08 01:08 Paul Lin 阅读(4287) |
评论 (6) |
编辑 收藏
摘要: 目前为止见过的对架构师责职分析最深刻的文章
转自:http://wangzebin.blog.51cto.com/653300/135640 原文作者:王泽宾
阅读全文
posted @
2010-04-08 01:03 Paul Lin 阅读(2251) |
评论 (0) |
编辑 收藏
摘要: 如果个人或者小公司去做综合类网站,这是很不靠谱的事。现如今小网站的存活之道一定是垂直的,而且必须要有一个非常显著的亮点,只有把这个亮点深挖进去,吃透了,而且还能将它做到极致才行。从一开始就想搞一个大而全的网站,设置那么多的频道,这不仅对于拉动流量没有效果,而且还会把你的亮点给淹没了。如果你要做综合类网站,那么你需要有实力、不差钱才行,推广手段就是用钱去砸,小网站绝对不会有这么大的财力去拼。
转自:http://wangzebin.blog.51cto.com/653300/142382 原文作者:王泽宾
阅读全文
posted @
2010-04-08 00:58 Paul Lin 阅读(1398) |
评论 (0) |
编辑 收藏
摘要: 相当好的文章,后面的评论更加精彩!
阅读全文
posted @
2010-04-08 00:55 Paul Lin 阅读(4244) |
评论 (2) |
编辑 收藏
摘要: 这是一个基于C++写的Java源代码反编译工具,界面类似于EClipse,而且反编译的效果不错,出错率比较低。支持整个Jar包的反编译,支持界面拖放。速度很快,语法高亮显示!
而且这是一个绿色软件,不需要任何的安装,双击exe文件运行即可。卸载时只需要把exe和cfg文件删除即可。
阅读全文
posted @
2010-04-07 11:10 Paul Lin 阅读(2407) |
评论 (3) |
编辑 收藏
摘要: Apache commons CLI是一个开源的,用于处理命令行的工具包。这个包目前的稳定版本是1.2,他非常简单只有20个左右的class,但提供了几乎所以可以用到的命令行功能。它的主页在这里:Apache commons CLI
根据CLI的逻辑,每一个命令行的处理都可以分为3个步骤:定义、解析、交互
①定义:定义命令行的各种选项属性(包括缩写、全写、是否必须、是否带参数、参数个数限制)
②解析:使用解析器对命令行选项列表进行解析
③交互:从解析好的命令行查询用户输入的参数值并进行处理
阅读全文
posted @
2010-04-02 14:20 Paul Lin 阅读(1062) |
评论 (0) |
编辑 收藏
摘要: 1.基本功能过滤器
=============================================
①类型:DirectoryFileFilter、FileFileFilter
②大小:EmptyFileFilter、SizeFileFilter
③时间:AgeFileFilter
④名称:NameFileFilter、PrefixFileFilter、SuffixFileFilter、RegexFileFilter、WildcardFileFilter
⑤读写属性:CanReadFileFilter、CanWriteFileFilter
⑥隐藏属性:HiddenFileFilter
2.逻辑关系过滤器
=============================================
①逻辑与:AndFileFilter
②逻辑或:OrFileFilter
③逻辑非:NotFileFilter
④永真/假:TrueFileFilter、FalseFil
阅读全文
posted @
2010-04-01 17:52 Paul Lin 阅读(3158) |
评论 (1) |
编辑 收藏
摘要: Apache commons IO包中提供了一个可以遍历目录下资源的DirectoryWalker,还有很多的IOFileFilter用于过滤文件目录。下面的例子分别演示了这个功能。
这两个搜索类都是以内部类的方式嵌入客户端的,客户端接收客户的参数,然后通过一个后台线程来进行搜索,等待子线程完成搜索后(join方法),再打印搜索结果。
注意这个过程是可以被cancel的。cancel主要有2种情况。外部cancel:外部线程通过调用内部类的cancel()方法。内部cancel:在handleDirectory、handleFile中主动抛出CancelException。
walk方法在每次执行前、后都会检查当前是否有cancel指令发出(checkIfCancelled ---> handleIsCancelled),如果有那么默认立刻抛出CancelException,然后调用handleCancelled方法。
阅读全文
posted @
2010-03-31 23:45 Paul Lin 阅读(2555) |
评论 (1) |
编辑 收藏
从
同一个源文件(15M左右)使用不同的方式读入,一种是读入后构造成一个String,另外一个是读入后构造成一个List。然后再调用
writeLines(File, String)和writeLines(File, Collection)写入。下面是测试比较的结果:
Read and write by string format
File sizes(bytes): 15661680
Content read(bytes): 15661680
Time costing(ms) on reading: 2047
Time costing(ms) on writing: 1016
Read and write by collection format
File sizes(bytes): 15661680
File read(lines): 1782615
Time costing(ms) on reading: 2047
Time costing(ms) on writing: 533437
效率相差之多! 我的测试环境如下:
OS:Win XP SP4
CPU:Intel Core(TM) 2 Duo CPU
内存:800M(虚拟机分配)
JDK:JDK 5.0 (JVM内存分配:-Xms64m -Xmx512m)
测试文件:15.295M (是一个IP地址文件,总共1782615行)
在读方面时间居然相当(这里面应该有操作系统层面的缓冲作用,我单独地测试时第2个方式总比第一个慢1/3左右)。而在写方面性能简直是天壤之别啊:533437/1016 ≈525倍。
虽然我这个测试还是不严谨的,但是从方法实现过程和原理来看,两者性能差异存在必然的因素:
①以Collection方式去构造的,在读取的过程中生成多个小String,而生成String是一项耗时的工作
②以Collection方式去写的,首先要迭代这个Collection,然后每次调用Collection中的元素的toString()方法,造成多次的堆栈操作
posted @
2010-03-30 00:19 Paul Lin 阅读(6013) |
评论 (0) |
编辑 收藏
摘要: 最近在对之前做过的一个项目进行二期修改。鉴于之前典型的贫血结构,以及Controller--->Service--->DAO模式让代码压力都集中在service层的情况。在参考了Banq写的几篇对象职责和Domain Event的文章后,我也试着捣鼓了一下新的分层模式。贴出来和大家讨论,欢迎拍砖!
阅读全文
posted @
2010-03-23 17:05 Paul Lin 阅读(1569) |
评论 (0) |
编辑 收藏
摘要:
阅读全文
posted @
2010-03-19 23:11 Paul Lin 阅读(559) |
评论 (0) |
编辑 收藏
摘要:
阅读全文
posted @
2010-03-19 22:21 Paul Lin 阅读(1514) |
评论 (0) |
编辑 收藏
摘要: Spring对事务传播的定义和事务操作性能优化
阅读全文
posted @
2010-03-15 11:09 Paul Lin 阅读(2596) |
评论 (0) |
编辑 收藏
摘要: 乐观锁定采用的版本策略实际上和SVN的版本冲突解决方案是同样的:采用其它人的(先提交的)、采用自己的(后提交的)、合并他人和自己的(合并冲突更新)
悲观锁定(Pessimistic locking)会采用基于数据库提供的锁机制来进行锁定。它会在物理层对行甚至表进行锁定。使得应用的并发性变差。
阅读全文
posted @
2010-03-15 11:07 Paul Lin 阅读(1482) |
评论 (0) |
编辑 收藏
摘要: READ COMMITITED:不允许读取未提交的数据,但可以读取已提交的数据。所以可能出现不可重复读、和幻像读(读的过程依然可以被修改、增加、删除)
REPEATABLE READ:通过行锁定,在读的数据不允许其它进程修改。确保已读取的数据不被修改、删除(不可重复读)但无法阻止其它进程写入新数据,所以不能确保读取到新的数据(幻像读)
SERIALIZABLE:通过表锁定,彻底禁止读取期间其它进程的修改、删除(屏蔽不可重复读)和增加(屏蔽幻像读)
但是不管是那种隔离级别,对第一类丢失更新都是不能接收的
阅读全文
posted @
2010-03-15 11:04 Paul Lin 阅读(1060) |
评论 (0) |
编辑 收藏
摘要: 一级、二级缓存使用的key均为po的主键ID,value即为po实例对象,查询缓存使用的则为查询的条件(hql转化而成的sql语句)、查询的参数、查询的页数,value有两种情况,如果采用的是select po.property这样的方式那么value为整个结果集,如采用的是from这样的方式那么value为获取的结果集中各po对象的主键ID,这样的作用很明显,节省内存。
阅读全文
posted @
2010-03-15 11:00 Paul Lin 阅读(4073) |
评论 (0) |
编辑 收藏
摘要: 关于Memcached入门知识点
阅读全文
posted @
2010-03-15 10:57 Paul Lin 阅读(2249) |
评论 (0) |
编辑 收藏
摘要: ①同步的操作,如果在等待的过程不能做别的事情,它是同步+阻塞的。这个也是最常见的
②同步的操作,如果在等待的过程可以做别的事情,它是同步+非阻塞的。
③异步的操作,如果在等待的过程不能做别的事情,它是异步+阻塞的。
④异步的操作,如果在等待的过程可以做别的事情,它是异步+非阻塞的。这个也是最常见的
阅读全文
posted @
2010-03-10 15:36 Paul Lin 阅读(2777) |
评论 (2) |
编辑 收藏
摘要: 同步/异步:消息通知机制。是自己主动关注消息还是靠别人通知
阻塞/非阻塞:消息处理机制。等待消息处理完成的过程能否做别的事情
阅读全文
posted @
2010-03-10 14:54 Paul Lin 阅读(2618) |
评论 (0) |
编辑 收藏
摘要: 要使用DirectoryWalker来遍历一个目录并进行相应的操作,步骤如下:
①创建一个继续于DirectoryWalker的类,并在构造方法中调用super();
②定义一个业务入口方法,例如clean。在这个方法中调用walk方法
③覆盖DirectoryWalker类的handleDirectory方法,提供相应的处理逻辑
④覆盖DirectoryWalker类的handleFile方法,提供相应的处理逻辑
阅读全文
posted @
2010-03-09 00:26 Paul Lin 阅读(3506) |
评论 (1) |
编辑 收藏
摘要: 它们可以分为两大类:
①实质性过滤器:例如针对文件的类型,属性,名称,大小进行过滤的过滤器
②过滤器连接器:典型的包括AndFileFilter、OrFileFilter。用于逻辑连接多个过滤器
阅读全文
posted @
2010-03-09 00:02 Paul Lin 阅读(1344) |
评论 (0) |
编辑 收藏
摘要: 对IOUtils类的剖析
阅读全文
posted @
2010-03-08 21:24 Paul Lin 阅读(2380) |
评论 (0) |
编辑 收藏
摘要: FileUtils总体上来说,主要功能有:
※ 资源的创建、删除
※ 资源的复制、移动
※ 资源的读写
※ 资源的比较
※ 资源的过滤
※ 资源的转换
阅读全文
posted @
2010-03-08 15:07 Paul Lin 阅读(6560) |
评论 (1) |
编辑 收藏
摘要: 使用Apache commons IO包规范文件名
阅读全文
posted @
2010-03-08 10:56 Paul Lin 阅读(843) |
评论 (0) |
编辑 收藏
摘要: 本文通过对Apache commons io包的input,output子类的源代码研究,来揭示为什么使用commons IO包会在性能上由于JDK自带的IO类。
特别是输出流方面
阅读全文
posted @
2010-03-04 10:28 Paul Lin 阅读(5635) |
评论 (0) |
编辑 收藏
摘要: 使用图例全面展示Java中IO的架构,特别是节点流和过滤流及其之间的转换
阅读全文
posted @
2010-03-02 09:47 Paul Lin 阅读(4300) |
评论 (3) |
编辑 收藏
摘要: 良好的编程习惯,对编码和数据传输流程的清晰认识,规范的配置是确保JavaEE应用不会出现乱码的三大法宝
阅读全文
posted @
2010-02-24 10:25 Paul Lin 阅读(4300) |
评论 (1) |
编辑 收藏
摘要: 可以看到该命令对于英文字符,数字不会转换而是直接输出,而对于每个中文字符则转换成以\u开头的4个16进制数字。
通常情况下,如果要进行字符的逆转换,-encoding encoding_name这个参数都会配合-reverse出现。在上面的例子中因为本地系统是中文操作系统,所以即便没有指定-encoding也可以正确地从unicode ---》GBK。如果是在英文平台下由于默认字符集是ISO-8859-1,那么这个时候如果不指定则转换出来的将是?了。
阅读全文
posted @
2010-02-23 18:41 Paul Lin 阅读(867) |
评论 (0) |
编辑 收藏
摘要: 可以看到在Java中,字符的unicode有两种表示显示:一种是10进制形式,一种是16进制形式。它们可以分别通过:int i = (int)(string.charAt(i))和Integer.toHexString(i);获得。而且在java文件和Web页面,同一个unicode的表示形式是不同。web页面需要用进行转义,在java文件中则使用\u进行转义。
阅读全文
posted @
2010-02-23 16:48 Paul Lin 阅读(2118) |
评论 (2) |
编辑 收藏
摘要: 在这个专题的第一篇文章【Java基础专题】编码与乱码(01)---编码基础 开头,我们就已经介绍了这个规则:
①得到每个字符的2进制GBK编码
②将该16进制的GBK编码转换成2进制的字符串(2个字节)
③分别在字符串的首位插入110,在第9位插入10,在第17位插入10三个字符串,得到3个字节
④将这3个字节分别转换成16进制编码,得到最终的UTF-8编码。
阅读全文
posted @
2010-02-22 23:00 Paul Lin 阅读(36953) |
评论 (11) |
编辑 收藏
摘要: 谨慎地使用getBytes(NAME_OF_CHARSET)和new String(bytes, NAME_OF_CHARSET),除非你很清楚的知道原始的字符编码和传输协议使用的编码。
推荐使用基于服务器的配置、过滤器设置request/response的characterEncoding、content type属性。还有就是JSP页面的pageEncoding属性、HTML meta元素的content type属性。尽量避免频繁的在代码中进行字符串转码,即降低了效率又增加了风险
阅读全文
posted @
2010-02-22 17:39 Paul Lin 阅读(3028) |
评论 (4) |
编辑 收藏
摘要: 这个方法再次证明了String的getBytes()方法的危险性,如果我们使用new String(str.getBytes(), encoding)对字符串进行重新编码解码时,我们一定要清楚str.getBytes()方法返回的字节数组的长度、内容到底是什么,因为在接下来使用新的encoding进行编码解码时,Java并不会自动地对字节数组进行扩展以适应新的encoding。而是按照新的编码方法直接对该字节数组进行解析。
于是结果就像上面的例子一样,同样是4个原始字节,有些每2个一组进行解析,有些每个一组进行解析,有些每3个一组进行解析。其结果就只能看那种编码方式合适了。
阅读全文
posted @
2010-02-22 17:18 Paul Lin 阅读(7075) |
评论 (2) |
编辑 收藏
摘要: 不要轻易地使用或滥用String类的getBytes(encoding)方法,更要尽量避免使用getBytes()方法。因为这个方法是平台依赖的,在平台不可预知的情况下完全可能得到不同的结果。如果一定要进行字节编码,则用户要确保encoding的方法就是当初字符串输入时的encoding。
阅读全文
posted @
2010-02-22 16:53 Paul Lin 阅读(4576) |
评论 (1) |
编辑 收藏
摘要: Unicode到UTF-8的转换:Unicode的16进制编码<-->对应的2进制编码<-->UTF-8规范的2进制编码<-->UTF-8规范的16进制编码
也就是说,假如我们需要从磁盘文件、数据库记录、网络传输一些字符,保存到Java的变量中,要经历由bytes-->encode字符-->Unicode字符的转换(例如new String(bytes, encode));而要把Java变量保存到文件、数据库或者通过网络传输,系统要做一个Unicode字符-->encode字符-->bytes的转换(例如String.getBytes([encode]))
阅读全文
posted @
2010-02-16 23:23 Paul Lin 阅读(3660) |
评论 (3) |
编辑 收藏
在天涯论坛搞到的,要感谢提供这个攻略的网友“海南小椰妹”,不过话说回来,不知道看完这篇攻略,你还有没有兴趣去海南三亚了。有时候旅游就是冲着未知的前方而去的,如果什么都攻略了那就感觉没有啥意外和惊喜了。
再次感谢一下这个海南小椰妹!
海南三亚旅游攻略
posted @
2010-01-27 15:33 Paul Lin 阅读(327) |
评论 (0) |
编辑 收藏
摘要: Informa不仅提供了对不同版本的RSS Feed source的读入和解析,同样也提供了将channel object导出为不同协议版本的XML文件的功能。这个功能是通过exporters包下的各个导出类来完成的。目前仅支持对RSS协议的导出,不支持Atom协议、OPML协议的导出。
阅读全文
posted @
2010-01-04 10:15 Paul Lin 阅读(396) |
评论 (0) |
编辑 收藏
摘要: OPML(Outline Processor Markup Language)协议正是用于解决这样问题的。利用OPML协议,我们可以通过阅读器把已经订阅的频道导出为OPML协议规定的格式,从而作为
一个文件分享出去。
阅读全文
posted @
2010-01-02 20:56 Paul Lin 阅读(335) |
评论 (0) |
编辑 收藏
摘要: 可以看到,对于这个解析过程,一般的步骤就是:
A.获取channnel下的某个子节点元素
B.如果该子节点元素有子元素或属性,则继续递归访问
C.调用该channnel子元素的createXxx方法加载或创建该子元素
D.调用Channel的setXxx方法添加该子元素到channel实例中
阅读全文
posted @
2009-12-30 10:45 Paul Lin 阅读(241) |
评论 (0) |
编辑 收藏
摘要: FeedParser是一个facade类,这个类的工作就是根据读入的RSS Feed的协议系和版本“委托(delegate)”给已经硬编码的规则(concrete rules)指定的解析器,而且这些解析器是私有的。这意味着:用户不能直接调用一个RSS_0_91_Parser类的实例来进行解析工作。
阅读全文
posted @
2009-12-29 15:56 Paul Lin 阅读(1471) |
评论 (0) |
编辑 收藏
摘要: ChannelBuilder对channel object的创建原则就是:
A.如果能够从持久层中找到对应的记录,那么从持久层返回
B.如果找不到,则创建它并持久化它,然后返回该对象(已持久化)
只要记得的一点就是:从ChannelBuilder返回的对象都是已经持久化的。
阅读全文
posted @
2009-12-28 15:57 Paul Lin 阅读(1229) |
评论 (0) |
编辑 收藏
摘要: 经过和impl.basic包中Channel的比较,发现两者的实现有如下的不同:
A.构造方法中多了3个方法,其中两个是使用title和location来构造的,最后一个是使用Element,title,location来构造的
B.从Hibernate中检索出来的是不用设置ID的,而从内存中生成的必须使用IdGenerator产生唯一ID
C.basic实现中没有getLocationString方法和setLocationString方法
D.basic实现中没有getSiteString方法和setSiteString方法
E.basic实现中没有getGroup方法和setGroup方法
F.basic实现中没有getFormatString和setFormatString方法
G.basic中没有setItems方法,而且getItems方法中的实现不同(basic采用了同步的hashset,而hibernate没有)
H.basic中的addItem方法是添加到hashmap,而hib
阅读全文
posted @
2009-12-28 10:51 Paul Lin 阅读(225) |
评论 (0) |
编辑 收藏
摘要: 其中dbscheme是关键,它的主要工作包括:
A.创建用于保存DDL输出结果的scripts目录
B.定义一个名为schemaexport的Ant task,用于把hbm文件导出为ddl文件
C.执行schemaexport任务,把classes目录下的hbm文件export成DDL,并输出到指定的位置
D.输出执行结果信息
阅读全文
posted @
2009-12-23 10:45 Paul Lin 阅读(1338) |
评论 (0) |
编辑 收藏
摘要: 这个ID生成类采用了系统当前时间作为随即数产生的种子,这个并不难理解。但是有一个地方需要我们注意的就是关键字transient的使用。这个关键的作用是告诉编译器假设该类的对象被序列化了,这个值不需要被保存。因为它是“瞬时”的。
阅读全文
posted @
2009-12-23 00:03 Paul Lin 阅读(1328) |
评论 (0) |
编辑 收藏
摘要: 在ChannelBuilder下有几种类型的方法:
★构造方法和初始化方法:即创建Channel对象的方法及初始化的方法
★元素构建方法:即构建Channel子元素的方法
★事务控制方法:即控制构建,析构过程的方法
阅读全文
posted @
2009-12-22 23:52 Paul Lin 阅读(1263) |
评论 (0) |
编辑 收藏
摘要: 总结起来,channel的创建,更新过程如下:
①接收经过ChannelParser解析后的XML Element元素,和其他一系列属性,调用构造方法
②构造方法为channel生成一个全局唯一ID
③构造方法创建item列表,观察者列表,设置好分类(Category),首次更新时间
④如果有新item到来,则添加到item列表,同时更新item的channel归属
⑤如果现有channel更新,则设置最新更新时间
⑥通知每一个已注册的观察者有事件发生
阅读全文
posted @
2009-12-22 23:31 Paul Lin 阅读(1246) |
评论 (0) |
编辑 收藏
摘要: Informa的core包介绍如下:
“This package contains interfaces for the news channel objects, it builds the core API for all news channel storage implementation. ”
从上面这句话来看,core包里面定义的都是关于“news channel objects”的接口---实际上就是RSS协议中的channel和item元素。经过一个多小时查看源代码和阅读API,发现Informa对core包的设计有如下特点:
core包中的元素被分为标记接口、实体接口、行为接口
阅读全文
posted @
2009-12-21 22:09 Paul Lin 阅读(1235) |
评论 (0) |
编辑 收藏
摘要: Informa的API结构如下:
★core包:
核心包。订阅了RSS中channel,item等一系列元素和元数据的接口
★impl.basic包:
基本功能包。使用in-memory模式实现了core包订阅的接口
★impl.hibernate包:
基于hibernate实现的包,使用关系型数据库模式实现了core包定义的接口
★parsers包:
定义了永远解析channel,item的解析器工具
★exporters包:
定义了一组把channel,item导出成各种协议格式的工具
★search包:
定义了用于全文搜索channel,item的工具
★utils.manager.memory包:
定义了一组用于管理“in-memory”模式持久化的工具
★utils.manager.hibernate包:
阅读全文
posted @
2009-12-21 15:39 Paul Lin 阅读(1249) |
评论 (0) |
编辑 收藏
摘要: 选择一个开源框架,我的标准有几条:
★良好的文档和源代码管理:这是最基本的一条,想RSSLibJ这种连文档、官网都没有的一律pass掉
★持续的改进:这是第二个重要的,像上面某些工具从02年后就不再更新了,出了问题你找谁诉苦去
★简单和易上手:在短时间内可以迅速依样画葫芦
★活跃的社区:参与的人越多软件成长得越多。我不是特别在乎软件目前的使用率,因为好的软件都是慢慢出名的
阅读全文
posted @
2009-12-21 11:52 Paul Lin 阅读(1350) |
评论 (0) |
编辑 收藏
摘要: ◆软件必须适应不同的终端,不同的访问方式,不同版本的协议。对设计通用性要求较高
◆软件必须解析和生成XML,涉及到大量的字符串和格式处理。对XML和性能要求较高
◆软件必须具备实时监控功能,且具备主动推送功能,对多线程和异步通讯要求较高
◆软件必须支持不同的持久化方式,对缓存和持久化要求较高
◆软件必须支持基于全文的搜索,对搜索技术有一定要求
◆软件界面必须是支持拖拽功能的,对GUI和Ajax有一定要求
阅读全文
posted @
2009-12-18 12:14 Paul Lin 阅读(304) |
评论 (0) |
编辑 收藏
摘要: SVN是一个开放的、免费的版本控制管理工具,相比CVS,Perforce等其他工具,SVN在版本模型,锁定策略方面要更加灵活高效。下面就让我们开始一步一步地学习如何使用SVN,如何把版本控制融入到日常工作中,更重要的是在学习版本控制的过程中树立起团队合作的理念。
关于SVN的参考资料,最好的莫过于其官方文档《Version Control with Subversion》,作为新手一定要看的是里面的第一章《Fundamental Concepts》和第二章《Basic Usage》以及第九章《Subversion Complete Reference》。
为了做到真正的In Action,我采用了Step-by-Step的方式,模拟一个项目从检出项目开始,到修改本地副本,再到提交变更,解决冲突等一系列的实际工作中会遇到的场景,期望通过这些场景和任务来对SVN和版本控制、团队合作有一个基本的认识
阅读全文
posted @
2009-12-13 12:29 Paul Lin 阅读(3459) |
评论 (5) |
编辑 收藏
摘要: SVN日常操作基本命令总结
1. 导入/导出资源:svn import、svn checkout
2. 更新工作副本: svn update
3. 添加变化:svn add、svn delete、svn copy、svn move
4. 检查变化:svn status、svn diff
5. 撤销变化:svn revert
6. 解决冲突:svn resolved
7. 提交变更:svn commit
阅读全文
posted @
2009-12-11 18:23 Paul Lin 阅读(431) |
评论 (0) |
编辑 收藏
摘要: 这时就需要用到SVN提供的清理功能了。清理功能是通过svn cleanup 命令来完成的。当执行这个命令时,SVN会首先完成log文件中没有完成的剩余工作,释放锁定,最后删除log文件。通常我们都是在项目的根目录来执行这个命令
阅读全文
posted @
2009-12-11 18:19 Paul Lin 阅读(342) |
评论 (0) |
编辑 收藏
摘要: 什么时候是Branch?什么时候是Tag?原则如下:
如果你还需要继续向目录提交变更,它就是个分支。如果一旦拷贝后不再提交任何改变哪就是标记。实际上SVN不会强制你不能对名为***tag的目录进行commit操作,这只是通常上约定。即便因为误操作我们也可以轻易的使用update操作回滚到当初创建Tag时的快照版本
阅读全文
posted @
2009-12-11 17:39 Paul Lin 阅读(355) |
评论 (0) |
编辑 收藏
摘要: svn merge的命令用法有三种:
A.svn merge sourceURL1[@N] sourceURL2[@M] [WCPATH]
B.svn merge sourceWCPATH1@N sourceWCPATH2@M [WCPATH]
C.svn merge[[-c M]...|[-r N:M]...] [SOURCE[@REV][WCPATH]]
Step 1:确定要从哪个版本开始~那个版本结束
Step 2: 执行集成
Step 3: 提交集成结果
阅读全文
posted @
2009-12-11 12:02 Paul Lin 阅读(446) |
评论 (2) |
编辑 收藏
摘要: svn switch [--relocate] URL。该命令有两种用法:一种是不使用参数relocate的,一种是使用relocate参数的。它们的使用原则如下:
A.如果切换后的版本库路径还是在同一个版本库,只是在不同的路径下。那么使用svn switch URL
B.如果切换后的版本库位置已经改变(主机迁移,版本库迁移),但是目录结构不变。就需要加relocate参数
阅读全文
posted @
2009-12-10 19:02 Paul Lin 阅读(379) |
评论 (0) |
编辑 收藏
摘要: 我们看到“创建分支”居然和普通的拷贝动作一摸一样!是的对SVN来说,主干、分支、标记都是普通的目录而已,这些都是人为加上的意义。
阅读全文
posted @
2009-12-10 17:04 Paul Lin 阅读(386) |
评论 (0) |
编辑 收藏
摘要: SVN提供了几种解决冲突的建议:
A.(p) postone 延迟解决
B.(df) diff-full 显示所有冲突的内容
C.(e) edit 启动编辑器解决冲突
D.(r) resolve 标识冲突已经解决
E.(mf) mine-full 用我的版本覆盖他人的修改
F.(tf) theirs-full 用他人的版本覆盖我的修改
G.(l) lanuch 启动其他工具来解决冲突
H.(h) help 启动帮助信息
虽然SVN提供了比较差异和解决冲突的方法,但避免冲突的最好方法永远只有一个:明确的分工和良好的沟通,尽量避免多个人同时修改同一份文件。如果不能避免,那么最好指定一个人在提交前负责合并各人的更新,然后一次性提交。
阅读全文
posted @
2009-12-09 23:25 Paul Lin 阅读(583) |
评论 (0) |
编辑 收藏
摘要: ●使用svn update -r 命令
●使用svn copy命令
●使用svn cat命令配合重定向
阅读全文
posted @
2009-12-09 17:19 Paul Lin 阅读(418) |
评论 (0) |
编辑 收藏
摘要: 默认情况下如果svn log不加任何参数,会显示当前目录下所有资源的变更历史,我们可以通过PATH,URL来限定显示范围,还可以通过URL PATH来显示某个URL下的某个(些)文件的变更历史,甚至还可以指定版本号,版本范围。
各种svn log的用法看似复杂,实际上离不开两样东西:
A.资源路径:本地路径(PATH)或远程路径(URL/URL PATH)
B.版本号或版本范围:-r 18:HEAD或者@19
阅读全文
posted @
2009-12-09 16:01 Paul Lin 阅读(295) |
评论 (0) |
编辑 收藏
摘要: A.因为SVN为了保护用户不小心update操作而覆盖自己本地的修改,不会对已经被修改但尚未提交的资源进行update操作。像这种情况下只能用svn revert而不能用svn update。
B.和svn update不会对已修改而尚未提交的资源进行update之外,svn del同样不会删除已修改但尚未提交的资源---除非你强制加上--force参数。
C.不要把所有变更都放在最后一次性提交,提交要及时、多次。否则一旦回滚所有其他修改都会跟着撤销。
阅读全文
posted @
2009-12-09 11:19 Paul Lin 阅读(529) |
评论 (0) |
编辑 收藏
摘要: 回滚属性和回滚操作
阅读全文
posted @
2009-12-09 11:00 Paul Lin 阅读(286) |
评论 (0) |
编辑 收藏
摘要: 实际上svn revert命令是一把“双刃剑”。它有几个需要特别小心的地方:
A.回滚是不可恢复的。由于svn revert回滚的是任何未提交的操作,内容,属性。所以意味着SVN不会为你保存任何回滚前的历史版本
B.回滚是不止于一点而是一段时间的。只要你没有提交版本,那么不论你多久之前所做的修改都会被回滚,而不仅仅是最近一次的修改
阅读全文
posted @
2009-12-09 09:47 Paul Lin 阅读(733) |
评论 (0) |
编辑 收藏
摘要: show-updates参数会令客户端显示本地工作副本那些文件是out-of-date的。它并不会立即更新本地副本,而是告诉你那些文件会在下次的svn update中被更新
阅读全文
posted @
2009-12-08 21:50 Paul Lin 阅读(330) |
评论 (0) |
编辑 收藏
摘要: A. svn cat 命令是客户端命令,在客户端运行。而svnlook cat 命令是服务器端命令,只能在版本库所在的机器上运行
B. svn cat 命令可以查看本地工作副本(PATH)或版本库(URL)资源的内容,而svnlook cat 命令只能使用REPOS_PATH PATH_IN_REPOS形式
阅读全文
posted @
2009-12-08 17:04 Paul Lin 阅读(461) |
评论 (0) |
编辑 收藏
摘要: 整个目录的忽略
Step 1: 把目录export到其它目录下
Step 2: 把版本库上的对于目录删除并同步到本地
Step 3: 把原有目录添加回原来的位置下,并加入SVN ignore列表
Step 4: 检查忽略是否生效
阅读全文
posted @
2009-12-08 16:29 Paul Lin 阅读(491) |
评论 (0) |
编辑 收藏
摘要: 一次性忽略多个文件:
Step 1: 在本地任意目录下创建一个文件,名字假设为ignore.txt
Step 2: 编辑该文件,添加想要忽略的文件名列表
Step 3: 通过文件一次忽略多个条目
Step 4: 提交变更
Step 5: 检查忽略是否生效
阅读全文
posted @
2009-12-08 16:15 Paul Lin 阅读(531) |
评论 (0) |
编辑 收藏
摘要: 单个文件的忽略:
Step 1: 把文件备份到其他位置
Step 2: 把版本库对应的文件删除
Step 3: 从版本库更新到本地工作副本
Step 4: 把文件拷贝回原有位置
Step 5: 把文件添加到SVN的全局属性svn:ignore
Step 6: 提交属性变更
阅读全文
posted @
2009-12-08 14:51 Paul Lin 阅读(348) |
评论 (0) |
编辑 收藏
摘要: 关于svn add命令我们有2个需要注意的地方:
A.和svn status命令一样,svn add命令只能使用PATH,而不能使用URL作为参数
B.当svn add命令执行完毕后,相关资源并不会马上立即被加入版本控制中,需要再执行一次commit
我们需要在每次commit后立即update,已保证我们最新代码被上传到版本库的同时,他人的最新代码能够被及时更新到本地
阅读全文
posted @
2009-12-08 11:09 Paul Lin 阅读(349) |
评论 (0) |
编辑 收藏
摘要: 使用svn info命令可以查看项目版本控制的静态信息
使用svn status命令可以查看项目版本控制的实时变更信息
阅读全文
posted @
2009-12-08 10:09 Paul Lin 阅读(439) |
评论 (0) |
编辑 收藏
摘要: 把项目import到版本库之后,项目并不会立即就被加入到版本控制中,还需要再从版本库中check out到本地原有位置才是真正地吧项目加入到版本控制。这一点和TCP/IP协议的三次握手过程类似。必须确保双方都知道对方的存在和联系。
阅读全文
posted @
2009-12-07 16:37 Paul Lin 阅读(403) |
评论 (0) |
编辑 收藏
摘要: 下面我们把svn list和svnlook tree命令的用法总结一下:
A.svn list PATH:列出PATH对应的版本库路径下的目录内容
B.svn list URL: 列出URL对应的路径下的目录内容
C.svnlook tree REPOS_PATH:递归地列出REPOS_PATH对应的版本库路径下的目录树内容
D.svnlook tree REPOS_PATH PATH_IN_REPOS: 递归地列出REPOS_PATH下子目录PATH_IN_REPOS路径下的目录树内容
阅读全文
posted @
2009-12-07 16:12 Paul Lin 阅读(682) |
评论 (0) |
编辑 收藏
摘要: 既然暂时还没有人扮演我生命中不速之客的角色,那就让我自己扮演自己生命中的不速之客吧
阅读全文
posted @
2009-11-16 22:35 Paul Lin 阅读(317) |
评论 (2) |
编辑 收藏
摘要: 有些人,有些事总是让我们无奈
阅读全文
posted @
2009-10-26 09:23 Paul Lin 阅读(537) |
评论 (2) |
编辑 收藏
习惯了在最后关头,看着希望变成失望
习惯了在失落后,用满不在乎和自嘲来告诉他人我还很好
习惯了深夜时分一个人舔舐伤口,咀嚼苦涩。然后再次上路
习惯了在文字中,寻找那些失去的东西
习惯了用音乐和电影来麻醉伤痛
习惯了在旅途中体验生活,追求内心的平静
习惯了冷眼看人生,用遗忘拒绝伤害,用笑的方式去哭
... ...
是的,太多的太多,我早就已经习惯
只是
我依然不习惯向命运低头
posted @
2009-10-09 21:18 Paul Lin 阅读(359) |
评论 (0) |
编辑 收藏
摘要:
A. 相同ORACLE_HOME下,INSTANCE_NAME可以相同,但ORACLE_SID必须唯一
B. 不同ORACLE_HOME下,ORACLE_SID可以相同
C.不同INSTANCE_NAME可以对应不同的DB_NAME,也可以对应相同的DB_NAME
阅读全文
posted @
2009-07-30 14:03 Paul Lin 阅读(1670) |
评论 (0) |
编辑 收藏
不想说什么了,看看豆瓣网的一个评论
MV拍的很静,是我无意间下载的,James Blunt坐在白色的平台上背靠着一望无际的大海, 天上下着雨,音乐跟进,干净的画面,James Blunt一件一件的脱着外衣背心 ,赤膊盘腿坐在雨中,脱鞋然后摆放整齐,从口袋中掏出几样物品,然后一一摆放整齐,我仔细看清楚最后那样物品是一个吉他拨片。镜头上摇 天空中飞鸟盘旋,镜头回落,James Blunt起身跑向无边的大海 纵深而跃。
后来我要在节目里播放这首歌去查背景资料才得知这是一个从科索沃维和部队坦克上回来的英国人。
歌曲中的那种美我想每个听过后的人都能感觉到,正如mv里的画外语,就算你赤膊上阵把自己扒光也无法得到你想要的人这种痛苦只有转身而跃才能解脱,真正的解脱是自我内心挣扎后需要面对的事实。
http://v.youku.com/v_show/id_XNDc3MDA4MA==.html
posted @
2009-07-24 00:01 Paul Lin 阅读(361) |
评论 (0) |
编辑 收藏
摘要: A.@set OH=C:\Develop\Oracle\product\10.2.0\db_1
B.@set JRE_CLASSPATH=C:\Develop\Oracle\product\10.2.0\db_1\jdk\jre\lib\rt.jar
C.@set I18N_CLASSPATH=C:\Develop\Oracle\product\10.2.0\db_1\jdk\jre\lib\i18n.jar
阅读全文
posted @
2009-07-23 21:55 Paul Lin 阅读(754) |
评论 (0) |
编辑 收藏
摘要: 关联是最普遍,最基础,最简单的关系
聚合是特殊的关联关系,体现为whole-part关系,且容器与元素之间生命周期依赖并不严谨
组合是特殊的聚合关系,体现为元素依赖于容器而存在,容器优先被创建,元素优先被销毁
依赖并不属于UML中的对象关系,而是一种运行时的操作引用
阅读全文
posted @
2009-07-19 18:18 Paul Lin 阅读(1943) |
评论 (1) |
编辑 收藏
这首歌就是三星i908E的广告曲,让人听得热血沸腾,动感无限啊~~。
http://blog.703804.com/?uid-169858-action-viewspace-itemid-200318
posted @
2009-06-19 17:03 Paul Lin 阅读(350) |
评论 (0) |
编辑 收藏
摘要: 那个出乎意料的结尾,以一种温和而坚定的方式解构了西部片,也隐晦地表达了老爷子的晚年信仰。即便是枪支横行的美国,他也愿意以法律和人心来化解戾气,而不作为一个牛仔迅雷不及掩耳地拔出左轮手枪。
阅读全文
posted @
2009-06-15 21:25 Paul Lin 阅读(253) |
评论 (0) |
编辑 收藏
摘要: 有人说过男人是一本书,老男人是一本百科全书。那么对于克林特.伊斯特伍德来说,他就是一部精装的人生百科全书。因为在他的电影里我看到了很多......
阅读全文
posted @
2009-06-15 01:34 Paul Lin 阅读(433) |
评论 (0) |
编辑 收藏
最近外出吃饭的次数多了起来,用手机拍下来记录一下。发表在天涯论坛的“羊城美食”版:
http://bbs.city.tianya.cn/tianyacity/Content/5109/858.shtml#Bottom
posted @
2009-06-13 09:43 Paul Lin 阅读(206) |
评论 (0) |
编辑 收藏
摘要: 转自JavaEye的一篇文章,讨论如何处理项目中出现的需求变更。很有实用价值
阅读全文
posted @
2009-06-02 09:40 Paul Lin 阅读(338) |
评论 (0) |
编辑 收藏
将进酒
君不见,黄河之水天上来奔流到海不复还
君不见,高堂明镜悲白发朝如青丝暮成雪
人生得意须尽欢,莫使金尊空对月
天生我材必有用,千金散尽还复来
烹羊宰牛且为乐,会须一钦三百杯
岑夫子,丹丘生,将进酒,杯莫停
与君歌一曲,请君为我倾耳听.
钟鼓馔玉不足贵,但愿长醉不复醒
古来圣者皆寂寞,唯有钦者留其名.
陈王昔时宴平乐,斗酒十千姿欢谑.
主人何为言少钱,径须沽取对群酌
五花马,千斤裘,呼儿将出换美酒,与尔同消万古愁!
========================================================
最欣赏里面的“人生得意须尽欢,莫使金樽空对月”。人生苦短,何苦在一些小事上纠缠不休。喜怒哀乐,千般滋味须得品尝个够才不枉在人世走一遭。古人云:天下攘攘,皆为利往;天下熙熙,皆为利来。只是到头来怕是一场空,能够带走的只有自己的回忆罢了。
人生在世,不求什么大富大贵,功名利禄。只求活得痛快,活得舒心,活出自己想要的生活。最是羡慕古人大块吃肉,大碗喝酒的潇洒与张狂。用力爱,用力恨。敢爱敢恨,快意恩仇,这才叫生活。
忽然想起自己以前的一句QQ签名:全情投入,活得精彩。看来自己还是和李白他老人家有点共通的。
posted @
2009-05-13 10:06 Paul Lin 阅读(1076) |
评论 (1) |
编辑 收藏
一部好的电影总是不能缺少动人的音乐,如果说剧情是大餐,那么音乐就是甜点。精美的甜点可以让整道大餐的味觉得到升华,《入殓师》再一次证明了这个道理。
《入殓师》的背景音乐中出现最频繁的就是小林大悟用大提琴拉奏的曲子,低沉而缓慢的琴声,伴随清脆的钢琴声,好阵阵的微风拂面而过,又好似一滴滴的水珠滴落在石头上,撞击出美妙的音符。每一个包含感情的音符似乎在诉说着无尽的心事,特别是剧中有一段是小林大悟在田地旁拉着大提琴的片段,被导演拍得无比唯美。
下面是我最喜欢的音乐:11-joe_hisaishi-okuribito_-on_record--cocmp3.mp3
posted @
2009-05-03 22:02 Paul Lin 阅读(1664) |
评论 (7) |
编辑 收藏
星期天的晚上犯了糊涂,把星期天当成了星期六过,半夜十一点翻出《入殓师》来看,结果看到一点多,两只眼睛肿得像桃一样的去睡觉。两年前的春节,我的父亲去世,早上醒来的时候,母亲从医院打电话过来,说父亲不行了,让我赶紧过去,把平素里准备好的衣服和鞋帽都带去,我迷迷糊糊的按照母亲交代的跑到柜子里翻找,这样的事情,在父亲生命里的最后三年不知发生过一次,于是这让我心里还抱着一线希望,也许——还不是这一次。
但是,就是这一次了,该结束的终究要结束,我跑到医院,已经有很多人在那里,明晃晃的屋子里面,他们在走来走去,我有点发懵,记不住他们的面孔,但是我知道,悲伤的只有我母亲一个人。我长这么大来,从没办过丧事,母亲也并没有经验,于是我莫名其妙的被什么人领到楼下的寿装店里去买给死者身上盖的单子,还有嘴里含的铜钱,脚上垫着的脚垫,寿装店里的灯光昏暗,几根人在打麻将,一个人叼着烟,找出个绣得非常粗糙俗气的缎子被单来,还有其他的东西,说,八百块。我很吃惊,但是想到在楼上等着的母亲,我说,四百块,那个人很不高兴,说这种事还能讲价啊?我说那就不要了,我本来就觉得我爸爸不该盖这种东西。他一听,赶紧把那些东西一股脑的都塞给了我,抢过我手里的四百块钱。
我回到楼上,医院的医生跟母亲说,你们要尽快把人拉走,你们不能把他放在这里。母亲说,我儿子马上就赶来,我想让他在这里看到他父亲。后来哥哥来了,母亲抱着他哭,哥哥没哭,我们忙着联系殡仪馆之类的事,我只是看着哥哥在没人的时候,偷偷的躲在窗户边抹了眼泪。把父亲抬下去的时候,和殡仪馆跟着过来的某个人叫我和哥哥对着灵车磕头,我和哥哥都磕了,站起来,他们管我们要两百块钱,说是因为他指点了我们,要收开口费。给完了钱,我才开始稍微恢复了一点思考能力,突然意识到,在父亲病房里绕来绕去的陌生人,都是干这个的。他们像秃鹫一样,围在尸体旁,等着分食死者的尸体。趁失去亲人的家属悲伤之际,能多捞一点钱就多捞点,这种感觉,在送父亲去殡仪馆的路上更明显。殡仪馆的路旁,不断的有人跟着我们车一路走,一路说着各种套话,后来在殡仪馆,我们把父亲的遗体从一个地方送到另外的地方去入殓,灵车前也围了很多这样的人,嘴里念念有词,不给钱,他们就一直跟着不肯走,司机跟哥哥说,你要每人给他们个十块二十的就行了,哥哥终究没给。母亲说,那一刻,感觉就像那些人好像地狱里的恶鬼一样围上来。
但这只是殡仪馆外面的人,其实殡仪馆里的人也好不到哪里去,父亲遗体告别的时候,莫名其妙的进来一个穿着制服的军乐队,上来就要演奏,哥哥想起来,就突然问他,你这个是另收费的吗?领头的那个女人,含含糊糊的回答,诸如哪家遗体告别不需要爱乐之类的话。哥哥又问,我们是要放磁带,你们是另收费的吗?问了三四遍,才知道,另加2千块钱。哥哥强忍着怒气把他们轰走了,走的时候,那女的用故意的谁都可以听得见的声音说,付不起就说付不起……
说了这么多和电影不相关的话,但是我想,曾经失去过至亲的人,知道我在说什么,看懂了《入殓师》这部电影的人,知道我在说什么。
性格懦弱,总是怯生生的小林君,在走进死者的家中的时候,也是被人指责为“赚死人钱的。”但当他的手温柔的握着死者的双手,抚摸过他们的脸颊,额头,为他们擦拭身体,为老奶奶穿上丝袜,为儿子梳好头发,为妻子点上口红的时候,失去亲人的人们,知道他们把自己最爱的人托付给了值得信任的人。我的父亲卧病十七年,最后三年,他浑身插满管子躺在那里,被人们搬来搬去,翻来翻去,我一直很希望,人们可以对待他温柔一点,但你知道你无能为力,你不是医生不是护士,不是殡仪馆的工作人家,你不能挑人家的不是,这个世界上,粗暴是大多数普通人对待他人的方式,我们被粗暴的对待,然后又粗暴的对待别人,这似乎已经成为一种循环,大多数人内心已经麻木,浑然无觉。所以,在一个连活人都不能被温柔对待的世界里,就更别说对死者的尊重了。
是因为这样,佐佐木先生才一眼看到了小林君内心里的温柔的吧。他像一个孩子一样的软弱,没有竞争能力,却善良,温柔的可以平等对待每一个死者,不管他们是怎样的死法。内心里还有这样温柔的人,在这个冷酷的世界里,是多么难得的珍宝啊。看电影的时候,我一边流泪一边想,如果是我的父亲,要是也能让小林君来帮助,温柔的握着他的手,走完最后的路,那该有多好。《入殓师》的英文海报上,有一句话写到——The gift of the last memories. 而我关于我父亲的最后的记忆,是充斥了那许多粗暴贪婪的嘴脸的记忆,太不美好了,所以很少回忆。能遇到小林君这样的人,是多么的幸运啊。它照亮了生者的回忆,的确是上天的礼物。作为一个内心深处的自毁者,我活在一个人人互相粗暴相待的世界中,我从来不曾奢求我自己可以死得其所,我可以对自己很无情,可是在我不曾被温柔对待过的此生里,仍然有我内心最柔软的部分,长在我爱的人的身体里。我深爱过的人,我是多么希望你们能够被这个世界温柔的对待,哪怕是在你们离去的时候,能够有一双手,温柔相握。
小林君,谢谢你曾经这样温柔的对待这个世界。在这样的世界里可以用自己的温柔的方式生存下去的人,是了不起的人。我知道这个世界,是那些粗暴,强壮而冷酷的人们的,他们崇尚无情,以为这样就可以让他们少受痛苦。但是,当我审视自己的内心,发现在深深深深的地方,温柔还在,我还可以,用我自己温柔的方式,对待这个世界,那是很好的一件事情。好得就像,在尘埃里静静绽放的一朵花一样
posted @
2009-05-01 15:49 Paul Lin 阅读(290) |
评论 (0) |
编辑 收藏
最近的经历,让我明白有些人,有些事对自己来说才是最宝贵的。我曾那么害怕、那么害怕失去这一切,没有一件事能让我感觉到如此的惊慌失措。尽管我已经无数次地想过,我以为我会有足够的心理准备,可是事实让我明白当面对这一切时我还是那么的无力与无奈。
好在这次是有惊无险,但它改变了我对未来的打算。人不单是为自己而活,这就是为什么我们的词汇中会有“亲人”,“家庭”的原因。
想起《士兵突击》里面许三多经常说的一句话:有意义就是好好活着,好好活着就是有意义。
posted @
2009-04-26 16:21 Paul Lin 阅读(339) |
评论 (0) |
编辑 收藏
发表于天涯论坛--岭南摄影的原文:
http://bbs.city.tianya.cn/new/TianyaCity/Content.asp?idWriter=14445077&Key=46554978&idItem=5005&idArticle=1616
posted @
2009-04-22 22:16 Paul Lin 阅读(313) |
评论 (0) |
编辑 收藏
摘要: Oracle schema之Table知识要点
阅读全文
posted @
2009-03-02 16:47 Paul Lin 阅读(1334) |
评论 (0) |
编辑 收藏
摘要: 对Oracle事务的一些总结和理解
阅读全文
posted @
2009-02-18 16:44 Paul Lin 阅读(1699) |
评论 (0) |
编辑 收藏
《放牛班的春天》是为数不多的以儿童为题材的法国电影,温馨,清新,纯洁,感人是这部片给我最深印象。而贯穿全片的不少儿童和声合唱更是为本片增色不少。下面是几首非常好听的插曲。
第一首:Clemence & Jean-Baptiste Maunier - Concerto pour deux voix
原曲由法国当代作曲家Saint-Preux所作。他在1969年写下了一首著名的《Concerto Pour Une Voix 天使之声协奏曲》,当时是专为号称拥有天使歌声的法国吟唱歌手Danielle Licari所作,这首无词歌也成为 Danielle Licari 的招牌曲目。
2005年,Saint-Preux又重新编排了此曲,由作曲家的女儿Clemence和《放牛班春天》一炮打红的少年美声Jean-Baptiste Maunier担当演唱,而曲名则变成了《Concerto Pour Deux Voix》(一个变两个)没有一点歌词,只是两个曼妙的童声在音乐的衬托下穿梭游离,这种形式不失为展现最真切天籁歌喉的最佳方式,一切歌词的修饰都是多余的。
--摘抄自网上介绍
推荐指数:★★★★★
推荐理由:有人说过好的音乐是不需要歌词的,因为一切都已经包含在歌声的每一个音符中。如果你还不知道什么叫“天籁”,那么请听一下这首曲子。这是一首能让灵魂为之颤栗的曲子,没有任何歌词,歌声却清澈如同高山的流水,轻盈得如同天际的白云。内心的阴霾被每个神奇的音符荡涤一空。无数次地在夜深人静时仔细地倾听,我还是为之着迷。
第二首: volant (风筝)
这是一首差点被我当成铃声的歌曲,曲子很短只有1分28秒,但已经足够。完美的童声独唱和后面的合唱,配合电影最后一幕:音乐老师在片片落叶和漫天飞舞的白色纸飞机中,欣喜地发现自己已经悄然改变了这群原来被认为不可救药的学生,十分感人。
推荐指数:★★★★
推荐理由:给它四星是因为我觉得太短了,为什么这么好听的歌不给个加长版呢。除此之外我找不出什么挑剔的理由。
第三首:caresse sur l'ocean les choristes
这首歌在整部片中反复的出现,足可见导演对这首歌的重视程度。
推荐指数:★★★★
推荐理由: 这首歌也是片中最后学生们大合唱的歌曲。教会一个人知识并不难,但要教会一个人知道什么是真善美很难,教会一个人如何去发现真善美更是难上加难。片中的音乐老师做到了。佛曰:救人一命胜造七级浮屠。犹太人又曰:Saves one life, saves the world entire。如此看来该老师已经是功德无量。
第四首:Vois sur ton chemin(眺望你的路径)
歌曲听起来比较普通,但是光看这首歌的歌词,你就知道为什么导演要在片中反复地让这首歌出现了。下面是这首歌的歌词法文/中文对译版:
Vois sur ton chemin 看看你经过的路上
Gamins oubliés égarés 孩子们迷了路
Donne leur la main 向他们伸出手
Pour les mener 拉他们一把(?)
Vers d'autres lendemains 步向往后的日子
Sens au coeur de la nuit 黑暗中的方向
L'onde d'espoir 希望之光
Ardeur de la vie 生命中的热忱
Sentier de gloire 荣耀之巷
Bonheurs enfantins 童年的欢乐
Trop vite oubliés effacés 转瞬消逝被遗忘
Une lumière dorée brille sans fin 一道绚烂金光
Tout au bout du chemin 在小道尽头闪亮
Sens au coeur de la nuit 黑暗中的方向
L'onde d'espoir 希望之光
Ardeur de la vie 生命中的热忱
sentier de la gloire 荣耀之巷
推荐指数:★★★
推荐理由:点题之曲,无需多言
豆瓣网试听地址:《放牛班的春天》原声大碟
posted @
2009-02-10 23:45 Paul Lin 阅读(654) |
评论 (2) |
编辑 收藏
一直很喜欢胡歌的这首《逍遥叹》,不知道听了多少遍。昨晚看了一部《盗火线》,这是我第二遍看这部片。不知道为什么,我突然觉得这首歌和这部片是那么的契合。每次看或听都能品味到不同的东西。
逍遥叹-胡歌
岁月难得沉默秋风厌倦漂泊
夕阳赖着不走挂在墙头舍不得我
昔日伊人耳边话已和潮声向东流
再回首往事也随枫叶一片片落
爱已走到尽头恨也放弃承诺
命运自认幽默想法态多由不得我
壮志凌云几分愁知己难逢几人留
再回首却闻笑传醉梦中
笑谈词穷古痴今狂终成空
刀钝刃乏恩断义绝梦方破
路荒已叹饱览足迹没人懂
多年望眼欲穿过红尘滚滚我没看透
词嘲墨尽千情万怨英杰愁
语尽人散发花鬓白红颜莫
烛残未觉与日争辉图消瘦
当泪干血隐狂涌白雪纷飞都成空
爱已走到尽头恨也放弃承诺
命运自认幽默想法态度由不得我
壮志凌云几分愁知己难逢几人留
再回首却闻笑传醉梦中
笑谈词穷古痴今狂终成空
刀钝刃乏恩断义绝梦方破
路荒已叹饱览足迹没人懂
多年往烟雨穿过红尘滚滚我没看透
自嘲末境千情万缘已皆愁
曲终人散发花鬓白红颜末
烛残未觉与日争辉图消瘦
当泪干血隐狂涌白雪纷飞都成空
笑叹智穷不知今况终成空
到了人方恩断义绝梦方空
路荒已叹饱览足迹没人懂
多年往烟雨穿过红尘滚滚我没看透
自嘲末境千情万缘已皆愁
曲终人散发花鬓白红颜末
烛残未觉与日争辉图消瘦
当泪干血隐狂涌白雪纷飞都成空
posted @
2009-02-07 14:06 Paul Lin 阅读(673) |
评论 (0) |
编辑 收藏
摘要: 春困疗法
阅读全文
posted @
2009-02-06 16:58 Paul Lin 阅读(307) |
评论 (1) |
编辑 收藏
摘要: Linux下的压缩和打包命令
阅读全文
posted @
2009-02-02 23:39 Paul Lin 阅读(648) |
评论 (0) |
编辑 收藏
前几天看了《即日启程》,惊喜地发现原来国产电影也有精品。说来罪过,对我这等愚钝不化,不求上进,思想政治觉悟低下的80后青年,党多年来的教育愣是对俺不起作用。每每看到屏幕上那些主旋律大片中,男一号或女一号以一种大义凛然的口吻说:这个时候,我们GCD人就应该XXX这类话,俺脑袋就犯晕,血压那个蹭蹭蹭地飙升,心里忍不住想问候导演他妈。于是乎赶紧换台,乃至苟延残喘至今日。
自此以后俺就落下了一个毛病:只要看到国产电视剧或电影就绕行,惹不起我还躲不起啊!前几天偶然下了一部《即日启程》,睡觉前随意拉着进度条快进看了几段,没想到还上瘾了。于是乎在一个冷冷的冬夜中,一个老男人躲在房间里,关着房门,不时爆笑。为了不打扰隔壁老妈的休息,还得捂着嘴,哪怕我笑到胃抽筋;还要时不时提防笑的时候不被嘴里的花生噎死。我容易嘛我!
当电脑时间显示凌晨2点时,我满意地带着一对标准的熊猫眼安然入睡。电影很搞笑,很温暖,很讽刺,很俗套(不是贬义)。你可以说剧情不如《疯狂的石头》,可以说剧情有瑕疵。好吧,俺承认俺就是一俗人,就为了没事看着乐,没有能力也不指望成为文学青年扮深沉。看到网上一些扮专业挑刺的俺忍不住想问:你丫的看电影还是做系统分析啊?
这部电影里的每一个人都可以在日常生活中找到原型,但又有一点点夸大。是谁发明的“源于生活,高于生活”这句话的,真TMD精辟!想当初我工作时和一小女孩去北京培训,被丫的搞得想死的心都有了,末了跟她说:我发现做你同事比做你爹还累。想想起来那小女孩也不比电影里小夏差多少(你们见过晚上11点半还要在天安门广场放风筝的人吗?)。
原来小成本也可以拍出大惊喜,小成本也有大看头。想想那些投资动辄千百万但连故事都讲不清楚的大片,套用《疯狂的石头》里面道哥的一句话:你不但侮辱了我的人格,你还侮辱了我的智商。
这里顺便八卦一下,女主角是一才女:央视《世界电影博览》的主持人,上海音乐学院教师、作曲,指挥,演员,片中的插曲和片尾的主题曲都是她作的。真汗!仰慕一个。
最后给广电总局和CCAV磕头了:求求你们放过我们老百姓吧,给俺们后进青年一条活路吧。俺给你们烧钱了,好多好多~~~。
posted @
2009-01-17 21:03 Paul Lin 阅读(331) |
评论 (1) |
编辑 收藏
摘要: 使用Apache和SSL搭建安全的SVN访问
阅读全文
posted @
2009-01-07 22:37 Paul Lin 阅读(3465) |
评论 (3) |
编辑 收藏
摘要: Linux的SUID,SGID,SBIT特殊权限
阅读全文
posted @
2009-01-05 22:03 Paul Lin 阅读(865) |
评论 (0) |
编辑 收藏
摘要: 单纯的感动,看《叶问》有感
阅读全文
posted @
2009-01-01 14:04 Paul Lin 阅读(413) |
评论 (2) |
编辑 收藏
摘要: 08年的收获:自省、定位、接纳
阅读全文
posted @
2009-01-01 12:10 Paul Lin 阅读(1421) |
评论 (3) |
编辑 收藏
摘要: SVN的三种备份方式:完全备份,增量备份,版本库同步
阅读全文
posted @
2008-12-30 17:35 Paul Lin 阅读(2477) |
评论 (5) |
编辑 收藏
摘要: SVN的版本库迁移
阅读全文
posted @
2008-12-26 11:52 Paul Lin 阅读(4121) |
评论 (1) |
编辑 收藏
摘要: 版本控制之路,路漫漫其修远兮,吾将上下而求索
阅读全文
posted @
2008-12-25 18:00 Paul Lin 阅读(2286) |
评论 (3) |
编辑 收藏
摘要: SVN权限模型一例
阅读全文
posted @
2008-12-25 17:08 Paul Lin 阅读(1997) |
评论 (0) |
编辑 收藏
摘要: SVN强制写Log的方法和失败处理一例
阅读全文
posted @
2008-12-24 16:02 Paul Lin 阅读(4714) |
评论 (1) |
编辑 收藏
摘要: Linux下的文件查找
阅读全文
posted @
2008-12-22 22:12 Paul Lin 阅读(801) |
评论 (0) |
编辑 收藏
摘要: Oracle concept中关于Data block的要点
阅读全文
posted @
2008-12-21 14:58 Paul Lin 阅读(648) |
评论 (0) |
编辑 收藏
摘要: Linux中文件和目录的默认属性和隐藏属性
阅读全文
posted @
2008-12-20 22:57 Paul Lin 阅读(2013) |
评论 (0) |
编辑 收藏
原文见天涯杂谈:http://www.tianya.cn/publicforum/content/free/1/1478763.shtml
骁遥前言:古人言,在明明德,在止于至善,看看一下诸君,于无耻处未止,而让天下叹为观止!
1、“对我的抹黑,就是对西丰的抹黑,...请管好你的嘴!不要乱讲”
--2008年1月7日,做出进京捉记者壮举的西丰县委书记张志国在西丰人论坛里发帖说。随后张书记被“责令辞职”,11月,张被发现已荣任沈铁轻轨办的副总指挥,负责具体工作。再随后,在舆论压力下,张再次丢官.
点评:进京拿记,我有胆;恐吓网民,我有量——zf即我,我即地方!
2、“现在不是讨论事情真相的时候,这个事件现在已经很混乱了,而且已经上升到学校声誉,甚至是国家安全的地步了。”
——中国政法大学教授杨帆(男)在课堂上与一女生恶语相向并发生肢体冲突,事件发生后杨帆对媒体如是说。
点评:国家安全有时候就是名人的月经带,随时应急,并百毒不侵。
3,“以前没有网络的时候多好啊,想让他们怎么说就怎么说。”
-----《南方人物周刊》记者回访陕西绥德校长找县长签字被拘事件,采访受阻,接待记者的绥德宣传部长说出这样的话,同时他还感慨:“以前不来报道我们绥德的大好形势,现在一出这事你们就过来,这不是给我们的工作添乱吗?”。
点评:不幸的是即使有网络,有时候还是如部长所言,大好形势。
4、“郭副主席说的一些情况...既违背事实又违背常识。...这次抗灾斗争的胜利是...一次壮举,是社会主义制度优越性的充分体现”
---2008年2月19日,铁道部新闻发言人王勇平回应广州政协副主席郭锡龄对铁道路的批评时说。他同时反驳郭:“从来就没听说过铁道部从长江以北调
过任何一台内燃机车到广州地区参与救灾”。但之前的1月31日王曾发言:“像当年支援淮海战役一样,集中全路力量以最快的速度从北京、郑州...等铁路局
紧急调集大量内燃机车、客车和大批人员驰援广铁。”
点评:按此逻辑,社会主义优越性需要无家可归来体现!
5、“‘钉子户’为了他个人的利益,损害了包括开发商在内的多数人的利益!这也是房价上涨的原因之一。”
--2008年3月4日,全国政协委员、北京某房地产公司老总穆麒茹十一届政协会议上发言。
点评:在该委员的语境里,第一次知道,开发商原来是多数人。一个人如果“语出惊人”,不是无知,便是无耻。
6、“对于所谓垄断要科学界定,电信业固话业务、移动业务都有竞争,怎么能算垄断企业呢?当然不是。”
--2008两位期间全国政协委员、国资委副主任王瑞祥表示。
点评:敬告王主任:这个世界,有的东东,不是人,也不是妖,是人妖——它们比人和妖都可怕。电信业和您不要对号入座。
7、“政府不应害怕上访而牺牲富人利益。许多地方政府官员为了息事宁人,要求财力较强的一方当事人牺牲自身合法利益,来满足这些上访者的诸多不合理要求。”
--2008年3月11日,参加“两会”的全国政协委员、祈福集团董事长彭磷基说。
点评:即使“刁民”,也是贪官致。
8、“世界上很多西方人因为精神空虚,压力大,开始信奉藏传佛教,瑜伽,印度教等等,......宗教不能当饭吃,但可以被利用来进行奴隶式的剥削......”
---2008年4月10日,自己也经常练瑜珈的搜狐老板张朝阳在博客里写道。
点评:张总,全世界都处于奴隶式的剥削之下?
9、“去年,全市空气质量属优或良的天数为333天。”
--2008年4月13日,广州市环保局如此宣布,此前,该局承认“去年广州灰霾天数131天”。两者相加,广州一年有464天。
点评:似乎也可解释:也许灰霾天也是空气质量良好的——中国人要求不高。
10.“一是要以法律的规定为依据;二是要以治安总体状况为依据;三是要以社会和人民群众的感觉为依据。”
----最高人民法院院长王胜俊4月10日解释判死刑的依据
点评:以人民群众感觉为依据,但人民群众要是不明真相怎么办?
11.“什么,两三天就能吃到一顿米饭?”
---2008年4月10日,南方都市报记者在凉山采访童工马海布的母亲时表示,“你儿子在那边很可怜,两三天才能吃到一顿米饭”。但这位前几秒钟还在为儿子失踪而痛哭的母亲,闻听此言竟一脸惊喜地如此表示。
点评:心酸。
12.“死亡数字各个部门有不同的口径,对这些数字我们不必过于较真。”
---2008年5月12日晚,央视主持人在主播汶川大地震时,打断连线记者的话如此说道。
点评:是的。死的不是你们家的。
13、“地震未必是坏事,比如去年岷县地震,震后盖的房子就很漂亮嘛”
--5.12四川大地震后,甘肃省委书记陆浩“第一时间”赶到甘肃灾区,发表重要讲话时如是说。
点评:感谢地震帮我们拆迁。一步到位。
14、“同志,你要知道,倒塌的可不仅仅是学校,北川县民政局整栋大楼都倒了啊!”
--2008年5月13日,汶川地震第二天记者招待会上,记者提问为何倒塌的大部分是学校,民政部救灾司司长痛心地回答。
点评:痛心疾首,痛心疾首啊!
15、“关你屁事”
--汶川地震期间,成都市区有自称“有关系”的人在救灾专用帐蓬里搓麻将,市民报警后一女警对围观市民如是说。
点评:真没影响到我们放屁。
16、“纵做鬼,也幸福”
--2008年6月6日,王兆山(山东作协副主席)在《齐鲁晚报》发表词“江城子废墟下的自述”,词以废墟下遇难者的口吻,感叹党国赐与的幸福。
点评: 为鬼代言,定有“重谢”!
17、“我们不能认定他们应该负什么责任,因为他们认为照片中的老虎是真,而不是说虎照是真的。”
--2008年6月29日,华南虎事件官方调查组回应“如何处理公开挺假的学者专家”时说。
点评:请允许我引用:顶叶纸虎啸山林,卧槽泥马勒戈壁!
18、“对待刁民政府要硬气,不要被刁民挟持。”
——2008年6月,龙永图在广州出席公园化战略研讨会谈到“最牛钉子户”时,如是说。
点评:对待恐吓要冷静,不要被恐吓忽悠。
19、“不用去现场调查就知道那里的情况,因为我是专家。”
--2008年7月6日,在央视《新闻调查》的采访中,中科院水利部研究员张信宝如此说,他同时指责汶川人想异地重建是“逃跑行为”,因为“汶川安全得很”。
点评:这是对时下大多数专家的定义域。
20、“别忘了你们是中国人”
--2008年8月,聂卫平置疑郎平等执教于外国运动队的中国籍教练。
点评:再次引用:一个民族在未能输出价值观之前,绝对不会是个强大的民族。
21、“你奋斗了二十多年,参加了四届奥运会,而只获得了一枚铜牌,你觉得你有愧祖国吗”
----2008年8月京奥,央视记者采访获得50米手枪慢射铜牌的谭宗亮时,问道。
点评:我要是谭,就把他当场射杀。
22、“(三聚氰胺)也不是一个毒性很高的物质,所以即使婴幼儿服用了三聚氰胺含量较低的奶粉,家长们也不用过于担心。”
--2008年9月17日,中国疾病控制中心营养与食品安全所研究员李宁说。此时全国至少已有3例死亡患儿和6244名诊断病例。
点评:谢谢提醒。不是奶里的三聚氰胺放多了,是三聚氰胺里的奶放少了……
23、“媒体公布的现场视频资料和公安机关掌握的现场视频资料是一致的,没有经过任何拼凑和剪辑。”
----2008年10月18日,在哈尔滨六警打死人的新闻发布会上,哈市公安局副局长卢洪喜说。一周后,警方却向外公布了完整版录像,比之先前多出11分钟录像。
点评:哦,原来11分钟是片花。
24、“你们算个屁啊...你知道我是谁吗?我是北京交通部派下来的,级别和你们市长一样高,敢跟我斗!”。
-----2008年10月28日,深圳海事局党组书记、副局长林嘉祥欲将1名11岁女童拖进洗手间内猥亵,当女孩父母找其讲理时,林书记如是说。
点评:大人息怒,屁民告退!
25、“我们政府对食品的监管力度,绝对是全世界的第一!”
--2008年10月,中国工程院院士陈君石在凤凰世纪大讲堂上如是说。
点评:受害的人数也是全世界第一。这是个正比例函数。
26 “成品油价格与国际油价实时联动背后的潜台词是价格一步到位,与国际油价接轨。但中国是发展中国家,什么价格都与国际接轨,这不太现实。”
--2008年11月24日,在国际油价大幅下跌的背景下,国家发改委能源研究所所长韩文科如此说。但年初当国际油价大涨时,该专家曾表示:“目前我国的成品油价格形成机制...要进一步与国际市场接轨,加快价格的传导作用,进一步发挥市场对油品供需的调节。”
点评:与时俱进,开拓创新。
27、“现在有不良的社会舆论导向,轻轻松松学语文,愉快学数学,这是从国外传过来的,…我们有我们自己教育的历史,有我们的文化传统,……而不是在快乐中学习,在快乐中获得成绩。任何改革不是把优良传统改革掉…”
――2008年11月10日,广东高考改革项目主持人李伟成说。
点评:这孙子小时候受虐了吧?
28、“为了让表演显得更加的真实,我们给一只训练有素、屡次立功的警犬,绑上了真实的炸弹;在镜头前,它奔跑着被炸成了碎片......多年来训练和培养该犬的那战士,看到如此真实的镜头后,哭得死去活来...”
--2008年5月,导演姚守岗在CCTV6“流金岁月”节目中说。
点评:姚导,你什么时候拍南京大屠杀?
29 “你们将来受了处分,吊销了你们的记者证,你们不要后悔!”
---山西省太原市杏花岭区检察院检察长何书生对记者说.
点评:毛主席说,恐吓决不是战斗。我看是。
30 “现在我们的人均寿命比30年前大大提高,60岁退休,活到90岁,吃30年养老保险,说不过去啊。”
——11月6日广州日报报道,经济学家、原社科院经济研究所所长赵人伟表示职工应该65岁后退休。
点评:吃25年就说得过去了——我们不该太长寿,早死,就是为国捐躯。
31 当刘做到第三个俯-卧-撑的时候,听到李树芬大声说‘我走了’,便跳下河中……”
---2008年7月1日晚,贵州省省公安厅对“瓮安6.28严重打砸抢烧突发性事件新闻发布会”上的说明。
点评:引用一下,上联:横眉冷对千夫指,下联:俯首甘做俯卧撑。横批:如此牛!
32 “公安机关依法打击一批,精神司法鉴定治疗一批,集中办班培训管教一批”。
----2008年新泰县政务网上的一篇官方文章,在总结“怎么依法处置信访工作”时这样写道。
点评:加大力度,群策群力,多部门合作。
33 可以考虑让市民每个月买20块钱的生态基金”。
----2008年11月,中科院院士蒋有绪呼吁政府开征呼吸税.
点评:谁他妈说吹牛不上税!?呼吸都要上税了。接下来就剩下放屁了……
34 打开美国媒体完全找不到对1968年美国黑人暴动的辱骂;打开英国媒体也找不到对英国大革命的辱骂;打开法国媒体同样找不到对法国大革命和五月风暴的辱骂;唯独中国媒体30年来片刻不停地充斥着对文革的辱骂.
-----2008年12月,北大中文系副教授孔庆东说.
点评:翻开历史,肯定有美国人人记得马丁路德金的I have a dream 的惊世宣言,有英国人铭记凯恩斯对一战对德经济制裁的苦口婆心,有法国人记得雨果是怎么描述入侵中国的两个强盗——唯独中国的教授对自己民族的耻辱沾沾自喜,津津乐道。
35 “对于开发商低于成本价销售楼盘,下一步将和物价部门一起对其进行查处,以防止烂尾楼的出现。”
-----2008年12月10日,南京市江宁区房产局局长周久耕说.
点评:严厉打击开放商针对市民的倾销行为!
36“看病最不难是中国,看病最不贵是中国。...是人们的价值观念问题。”
---2008.2.18,广州市卫生局副局长曾其毅说。(新快报)
点评:不得不说曾局长一语点的:我们的所有的问题,真的是价值观的问题
posted @
2008-12-19 20:46 Paul Lin 阅读(339) |
评论 (0) |
编辑 收藏
摘要: SVN权限配置模型实验一例
阅读全文
posted @
2008-12-18 14:13 Paul Lin 阅读(1845) |
评论 (1) |
编辑 收藏
摘要: Linux的文件操作命令,使用head和tail灵活输出局部内容
阅读全文
posted @
2008-12-15 23:04 Paul Lin 阅读(864) |
评论 (0) |
编辑 收藏
摘要: Linux下的目录操作命令
阅读全文
posted @
2008-12-14 22:28 Paul Lin 阅读(332) |
评论 (0) |
编辑 收藏
摘要: Linux下的分区与目录
阅读全文
posted @
2008-12-01 22:57 Paul Lin 阅读(2145) |
评论 (1) |
编辑 收藏
摘要: Linux文件类型与扩展名
阅读全文
posted @
2008-11-20 17:07 Paul Lin 阅读(338) |
评论 (0) |
编辑 收藏
摘要: Linux文件权限学习要点
阅读全文
posted @
2008-11-18 16:25 Paul Lin 阅读(519) |
评论 (1) |
编辑 收藏
今天登陆QQ时,360安全卫士提示系统存在一个QQ盗号木马,并自动清除。再次启动Windows XP后发现系统没有了声音。重装声卡驱动也没有用,而且系统控制面板中的音频管理也显示没有音频设备。
无奈上网google一番,终得解决方案如下:
1. 重设注册表:http://hi.baidu.com/zhechan/blog/item/37d4e133db7de542ac4b5f38.html
2. 下载audiosrv.dll:http://www.nodevice.cn/dll/audiosrv_dll/item2134.html
3. 重启系统,问题解决
posted @
2008-11-08 15:43 Paul Lin 阅读(21210) |
评论 (33) |
编辑 收藏
摘要: “所以,我的结论是:憎恨是包袱。生命是短暂的,不应该老是发火。根本不值得。.....”
“我们是朋友,不是敌人。不要当敌人,尽管一时冲动,但切勿伤害我们的友爱。再度相逢时,美好回忆会再度浮现。让我们用更好的角度来看待人类的本质。”
让我们都记住这段话,记住本片要传达的思想:憎恨是包袱,用爱比用枪更能解决问题!
阅读全文
posted @
2008-11-01 01:16 Paul Lin 阅读(707) |
评论 (4) |
编辑 收藏
转自天涯杂谈,原文链接:http://cache.tianya.cn/techforum/content/210/15978.shtml。
看了之后有一种很亲切的感觉,呵呵。里面有好多也是我当年用过的必杀句~~~~
不知道现在的小孩子,还会不会用这些句子呢……
1.“同学们看着清洁的教室,擦着额头上的汗水笑了……”(用于描写大扫除之后)
2.问:“小朋友,谢谢你,你叫什么名字?”(用于扶老人过马路等好人好事之后)
答:“我叫红领巾。”( 黄金必杀句~~~)
3.小明,小红,小刚,小李,小X…… (其实中国人名字很好起的~,李守银,史三八都是名人呢~~~)
4.“今天天气晴朗,万里无云,我们来到了XX公园春游。首先映入眼帘的是假山。。”
“在夕阳的余晖下,我们依依不舍的离开了XX,我会永远记得这快乐而有意义的一天!” (为什么每次春游回来都要写周记?)
5.“我爱我的家,更爱我伟大的祖国!”
“望着缓缓升起的红旗,我的崇敬之情油然而生”
6.“买东西的时候阿姨多找了2角钱。低头看到胸前飘扬的红领巾,就退回去了。”
再然后就是:我低下头,发觉胸前的红领巾更加鲜艳了 。
7.“今天是我第一次洗衣服,今天是我第一次洗碗,今天是我第一次叠被子,今天是我第一次。。。” (第一次果然都很有纪念价值)
8.“在我的记忆里,有这样一段故事有如最亮的星星一般…”
9.“我的脚象灌了铅一样。。。。”
10.“下课了,有的……,有的……,还有的……。我们的课余生活是多么的丰富啊!
11.无数革命先辈抛头颅洒热血,才换来了我们今天的幸福生活,和他们比起来,我的心里惭愧极了……” “五星红旗,是用烈士的鲜血染红的。”
(童年过的真血腥 — —)
12.一天,小强走在上学的路上,一天,王老师骑在下班的路上。。。又是XXX的一天。
( 好平静的一天。。。)
13.每当遇到困难想退缩时,脑海中忽然闪过XX(张海迪大姐姐等)的身影,比起她我的这点困难算什么。 (显然那时候我们跟他们是完全不认识的,怎么这么爱装熟?)
14.十一届三中全会以来。。。
15.烛光下,看着妈妈布满老茧的手那么灵巧的帮我织毛衣,我的泪水再也忍不住流出来”
16.红的像火,粉的似霞,白的胜雪!
17.举例子…..牛顿…..爱因斯坦…..居里夫人…..爱迪生……
(让老师吐血的举例四大名人)
18.不经历风雨,哪得见彩虹? /若非一番寒彻骨,哪得梅花扑鼻香?
(描写毅力常用句式。。)
19.怀念我们的老师。。。今天是教师节,老师们是蜡烛,燃烧自己,照亮别人。
他们是“灵魂的工程师”。古诗云:春蚕到死丝方尽。。。。。”
那天。小王老师使尽了全身的力量和我们上最后一节课。。。。可是小王老师只教了我们一个学期就患癌症死去了。。我们是多怀念他啊。。。。(小学时为了感人,很多老师 就这样患绝症死了)
20.今天路上捡了1毛钱,交给了pol.ice叔叔。。心里别提有多高兴了。。老师也表扬了我,乐得我一蹦三尺高(顶级经典!)。毛主席说:做一件好事并不难,难的是天天做。。。
21.在灯光下,看着妈妈的白发,我。。。。泪流满面。。我一定要。。。。
(80后的妈妈们基本30多岁就都长白发了)。。。。
22.小红是我的同桌,清秀的眉毛下一双水灵灵的大眼睛,仿佛会说话一般……
(只要是写眼睛,水灵灵的准没错。。。。)
原文作者所属博客:盗盗的天空
posted @
2008-10-13 11:43 Paul Lin 阅读(270) |
评论 (0) |
编辑 收藏
摘要: ThreadLocal作用解析及代码实例
阅读全文
posted @
2008-09-05 17:10 Paul Lin 阅读(4748) |
评论 (1) |
编辑 收藏
摘要: Java反射之Array
阅读全文
posted @
2008-09-04 15:13 Paul Lin 阅读(1136) |
评论 (0) |
编辑 收藏
摘要: Java反射之Filed
阅读全文
posted @
2008-09-04 15:02 Paul Lin 阅读(401) |
评论 (0) |
编辑 收藏
摘要: Java反射之Method
阅读全文
posted @
2008-09-03 16:05 Paul Lin 阅读(1818) |
评论 (0) |
编辑 收藏
摘要: Java反射之Class
阅读全文
posted @
2008-09-03 14:36 Paul Lin 阅读(337) |
评论 (0) |
编辑 收藏
摘要: 【一】进程、线程、并发执行
【二】JVM与多线程
【三】Java语言对多线程的支持
【四】线程的状态切换
【五】Java中线程的调度API
【六】参考文章
阅读全文
posted @
2008-09-02 10:50 Paul Lin 阅读(3898) |
评论 (3) |
编辑 收藏
摘要: CSS常用属性设置
阅读全文
posted @
2008-08-17 10:56 Paul Lin 阅读(1112) |
评论 (0) |
编辑 收藏
摘要: 多线程池化Socket服务器
阅读全文
posted @
2008-08-16 23:08 Paul Lin 阅读(7257) |
评论 (0) |
编辑 收藏
该方法中使用一个无限循环,从字节流中读取字节,存放到byte数组中,每次读取1024个字节(一般都是这个设置),由于每次读取的字节数量不一定够1024个(比如最后一次的读取就可能不够),所以我们要记录每次实际读到的字节数,然后将实际读取到的字节按指定的编码方式转换成字符串。
private String inputStreamToString(InputStream is, String encoding) {
try {
byte[] b = new byte[1024];
String res = "";
if (is == null) {
return "";
}
int bytesRead = 0;
while (true) {
bytesRead = is.read(b, 0, 1024); // return final read bytes counts
if (bytesRead == -1) {// end of InputStream
return res;
}
res += new String(b, 0, bytesRead, encoding); // convert to string using bytes
}
} catch (Exception e) {
e.printStackTrace();
System.out.print("Exception: " + e);
return "";
}
}
posted @
2008-08-06 09:59 Paul Lin 阅读(17300) |
评论 (2) |
编辑 收藏
摘要: CSS基础知识总结之盒状模型和Z-index
阅读全文
posted @
2008-08-01 21:57 Paul Lin 阅读(308) |
评论 (0) |
编辑 收藏
摘要: CSS基础知识总结之伪类和伪元素
阅读全文
posted @
2008-08-01 21:26 Paul Lin 阅读(320) |
评论 (0) |
编辑 收藏
摘要: CSS基础知识总结
阅读全文
posted @
2008-07-26 21:35 Paul Lin 阅读(401) |
评论 (0) |
编辑 收藏
摘要: 使用Windows批处理命令和vbs,批量删除指定目录下N天前的文件,并生成日志
阅读全文
posted @
2008-07-11 15:56 Paul Lin 阅读(6033) |
评论 (0) |
编辑 收藏
摘要: 【转】从《兄弟连》看中国军事影片无法逾越的十大障碍
阅读全文
posted @
2008-07-01 13:36 Paul Lin 阅读(715) |
评论 (2) |
编辑 收藏
摘要: Oracle日期运算2(日期截取及四舍五入)
阅读全文
posted @
2008-06-30 14:47 Paul Lin 阅读(3725) |
评论 (0) |
编辑 收藏
摘要: 1.Oracle的日期函数
2.日期加减
3.月份加减
4.年份加减
5.求每月的最后一天
6.求每月的第一天
7.求下一个星期几
阅读全文
posted @
2008-06-30 10:23 Paul Lin 阅读(8719) |
评论 (11) |
编辑 收藏
摘要: Oracle分析函数的应用:
1.统计
2.排列
3.求分组中的最大值/最小值
4.查找分组中的首记录/末记录
5.比较相邻的记录
阅读全文
posted @
2008-06-29 17:07 Paul Lin 阅读(2854) |
评论 (1) |
编辑 收藏
摘要: 1.报表函数简介
2.RATIO_TO_REPORT函数
阅读全文
posted @
2008-06-29 12:02 Paul Lin 阅读(5786) |
评论 (3) |
编辑 收藏
摘要: 1.窗口函数简介
2.窗口函数示例-全统计
3.窗口函数进阶-滚动统计(累积/均值)
4.窗口函数进阶-根据时间范围统计
5.窗口函数进阶-first_value/last_value
6.窗口函数进阶-比较相邻记录
阅读全文
posted @
2008-06-28 16:34 Paul Lin 阅读(9709) |
评论 (6) |
编辑 收藏
摘要: 1.带空值的排列
2.Top/Bottom N查询
3.First/Last排名查询
4.按层次查询
阅读全文
posted @
2008-06-27 09:44 Paul Lin 阅读(6592) |
评论 (1) |
编辑 收藏
摘要: 1.使用rownum为记录排名
2.使用分析函数来为记录排名
3.使用分析函数为记录进行分组排名
阅读全文
posted @
2008-06-26 15:41 Paul Lin 阅读(8163) |
评论 (0) |
编辑 收藏
摘要: 1.Oracle分析函数简介
2. Oracle分析函数简单实例
3.分析函数OVER解析
阅读全文
posted @
2008-06-25 14:02 Paul Lin 阅读(15224) |
评论 (8) |
编辑 收藏
摘要: HTML常见响应报头
阅读全文
posted @
2008-06-23 22:54 Paul Lin 阅读(350) |
评论 (0) |
编辑 收藏
摘要: HTML中常用字符的URL编码
阅读全文
posted @
2008-06-23 22:38 Paul Lin 阅读(326) |
评论 (0) |
编辑 收藏
摘要: HTML中的事件
阅读全文
posted @
2008-06-23 22:24 Paul Lin 阅读(299) |
评论 (0) |
编辑 收藏
摘要: HTML中的核心属性
阅读全文
posted @
2008-06-23 21:48 Paul Lin 阅读(353) |
评论 (0) |
编辑 收藏
摘要: 辛德勒名单原声大碟音乐赏析
阅读全文
posted @
2008-06-22 22:22 Paul Lin 阅读(788) |
评论 (0) |
编辑 收藏
摘要: 谨向伟大的辛德勒和导演斯蒂芬.斯皮尔伯格表示崇高的敬意,这部伟大的电影让我深切地体会到当苟且偷生都成为奢望时,活着是多么的幸福。
阅读全文
posted @
2008-06-22 19:42 Paul Lin 阅读(531) |
评论 (0) |
编辑 收藏
摘要: HTML中的
标签
阅读全文
posted @
2008-06-22 18:54 Paul Lin 阅读(341) |
评论 (0) |
编辑 收藏
摘要: HTML中的样式控制
阅读全文
posted @
2008-06-22 17:44 Paul Lin 阅读(366) |
评论 (0) |
编辑 收藏
摘要: Oracle中删除重复记录
阅读全文
posted @
2008-06-18 11:04 Paul Lin 阅读(1645) |
评论 (0) |
编辑 收藏
摘要: HTML中的图片
阅读全文
posted @
2008-06-16 22:17 Paul Lin 阅读(435) |
评论 (0) |
编辑 收藏
摘要: HTML中的列表
阅读全文
posted @
2008-06-16 21:10 Paul Lin 阅读(344) |
评论 (0) |
编辑 收藏
摘要: Oracle中行列转换的实现方式
一、使用decode函数进行“行转列”
二、使用insert...select进行“列转行”
三、利用rownum关键字进行行列转换
阅读全文
posted @
2008-06-15 22:17 Paul Lin 阅读(6147) |
评论 (2) |
编辑 收藏
摘要: 使用Oracle的伪列完成复杂的级联操作:
1.使用伪列Level显示表中节点的层次关系
2.统计表中节点的层数
3.统计表中各个层次的节点数量
4.查找表中各个层次的节点信息
5.在Start with中使用子查询
6.判断节点和节点之间是否具有层次关系
7.删除级联表中的子树
阅读全文
posted @
2008-06-12 17:45 Paul Lin 阅读(3950) |
评论 (0) |
编辑 收藏
摘要: 使用oracle聚集函数start with... connect by进行级联查询
阅读全文
posted @
2008-06-11 17:55 Paul Lin 阅读(4334) |
评论 (6) |
编辑 收藏
摘要: Oracle下几种随机查询方式的效率比较
阅读全文
posted @
2008-06-09 17:41 Paul Lin 阅读(1953) |
评论 (3) |
编辑 收藏
摘要: 通过v$session, v$session_wait, v$process, v$lock表监控会话、进程、锁的信息
阅读全文
posted @
2008-06-09 16:23 Paul Lin 阅读(1539) |
评论 (0) |
编辑 收藏
摘要: Solaris下cp命令的几个注意点
阅读全文
posted @
2008-06-06 10:47 Paul Lin 阅读(4137) |
评论 (1) |
编辑 收藏
摘要: HTML的框架
阅读全文
posted @
2008-06-05 21:44 Paul Lin 阅读(515) |
评论 (0) |
编辑 收藏
摘要: Unix中多命令行和多行命令
阅读全文
posted @
2008-06-04 11:21 Paul Lin 阅读(423) |
评论 (0) |
编辑 收藏
摘要: HTML中的超链接
阅读全文
posted @
2008-06-04 10:33 Paul Lin 阅读(397) |
评论 (0) |
编辑 收藏
摘要: Unix的启动方式和启动过程
阅读全文
posted @
2008-06-03 14:16 Paul Lin 阅读(410) |
评论 (0) |
编辑 收藏
摘要: Unix下的几个基本管理文件
阅读全文
posted @
2008-06-03 10:09 Paul Lin 阅读(259) |
评论 (0) |
编辑 收藏
摘要: HTML转义字符
阅读全文
posted @
2008-06-02 22:11 Paul Lin 阅读(410) |
评论 (0) |
编辑 收藏
摘要: 跨数据库拷贝命令
阅读全文
posted @
2008-05-26 23:40 Paul Lin 阅读(822) |
评论 (0) |
编辑 收藏
摘要: 查询Oracle系统参数的命令
阅读全文
posted @
2008-05-26 23:39 Paul Lin 阅读(713) |
评论 (0) |
编辑 收藏
摘要: 设置SQL执行的命令
阅读全文
posted @
2008-05-26 23:38 Paul Lin 阅读(604) |
评论 (0) |
编辑 收藏
摘要: 使用spool命令结合set命令来导出文件
阅读全文
posted @
2008-05-26 23:36 Paul Lin 阅读(2048) |
评论 (0) |
编辑 收藏
摘要: 设置页面及行格式的相关命令
阅读全文
posted @
2008-05-26 23:35 Paul Lin 阅读(639) |
评论 (0) |
编辑 收藏
摘要: 设置列格式的相关命令
阅读全文
posted @
2008-05-26 23:15 Paul Lin 阅读(929) |
评论 (0) |
编辑 收藏
摘要: 设置标题的相关命令
阅读全文
posted @
2008-05-26 22:54 Paul Lin 阅读(772) |
评论 (0) |
编辑 收藏
摘要: 和执行相关的命令
阅读全文
posted @
2008-05-26 22:50 Paul Lin 阅读(1134) |
评论 (0) |
编辑 收藏
如题,Oracle数据库里面有一批记录,现在我想根据其中一个叫:txn_date的字段来查询记录,在Hbm文件中我配置了该HQL,如下所示:
<sql-query name="job.getJobByDate">
select {job.*} from Newsletter_Message job
where to_char(:dateType,'yyyy-mm-dd hh24:mi') =
to_char(:jobDate, 'yyyy-mm-dd hh24:mi')
<return alias="job"
class="com.newsletter.domain.job.Job" />
</sql-query>
在DAO方法中我使用了Spring的HibernateTemplate,方法如下:
public List<Job> getJobByDate(final Date jobDate, final String dateType) {
return (List<Job> getHibernateTemplate().executeFind(
new HibernateCallback() {
public Object doInHibernate(Session session)
throws HibernateException {
Query query = session.getNamedQuery("job.getJobByDate");
query.setString("dateType", dateType);
query.setDate("jobDate",jobDate);
return query.list();
}
});
}
Hibernate生成的SQL语句如下
select job.TXN_NO as TXN1_5_0_,
job.TXN_TYPE as TXN2_5_0_,
job.TXN_DATE as TXN3_5_0_,
from Newsletter_Message job
where to_char(?, 'yyyy-mm-dd hh24:mi') = to_char(?, 'yyyy-mm-dd hh24:mi')
每次执行时,总是抛异常,说:
org.springframework.dao.DataIntegrityViolationException: Hibernate operation: could not execute query;
.....
Caused by: java.sql.SQLException: ORA-01722: invalid number
我实在不明白为什么会报这个错误,难道Hibernate在set date或者set string之前不会对其进行格式的转换吗?于是我又换了另外一个HQL语句,在代码里面提前将Date格式成String,但还是报错:
where to_char(dateType,'yyyy-mm-dd hh24:mi') = :strDate
后来实在没办法了,用了一阴招,代码如下,测试通过,但是觉得这种代码太丑陋了。
public List<Job> getJobByDate(final Date jobDate, final String dateType) {
return getHibernateTemplate().executeFind(new HibernateCallback() {
public Object doInHibernate(Session session)
throws HibernateException {
String strDate = DateUtil.convertDateToString(jobDate,
"yyyy-MM-dd HH:mm");
Query query = session.createQuery("from Job job where "
+ "to_char(" + dateType + ",'yyyy-mm-dd hh24:mi') = '"
+ strDate + "'");
return (List<Job>) query.list();
}
});
}
不知道各位能否解析一下上面那个报错的原因,谢谢先了!
posted @
2008-05-22 16:40 Paul Lin 阅读(2249) |
评论 (0) |
编辑 收藏
【1】pfile:初始化参数文件
包含了init.ora文件,该文件定义了几个非常重要的参数:
·db_domain:数据库域名
·db_name:数据库名
·control_files:控制文件的路径,通常有3个文件
·shared_pool_size=共享池的大小
·background_dump_dest=后台进程日志、跟踪文件路径
·core_dump_dest=操作系统崩溃的日志、跟踪文件路径
·user_dump_dest=用户进程的跟踪文件路径
【2】budmp:存放由后台进程所生成的数据库Alert日志文件和跟踪文件
典型的包含了一个.log文件和一个.trc文件。
打开.log文件我们可以看到里面有很多后台进程的启动及运行信息,其中最关键的就是加载init.ora文件和起点后台进程的日志了
Starting up ORACLE RDBMS Version: 9.2.0.1.0.
System parameters with non-default values:
processes = 150
timed_statistics = TRUE
shared_pool_size = 50331648
large_pool_size = 8388608
java_pool_size = 33554432
control_files = C:\oracle\oradata\paullin\control01.ctl, C:\oracle\oradata\paullin\control02.ctl, C:\oracle\oradata\paullin\control03.ctl
db_block_size = 8192
db_cache_size = 25165824
compatible = 9.2.0.0.0
db_file_multiblock_read_count= 16
fast_start_mttr_target = 300
undo_management = AUTO
undo_tablespace = UNDOTBS1
undo_retention = 10800
remote_login_passwordfile= EXCLUSIVE
db_domain =
instance_name = paullin
dispatchers = (PROTOCOL=TCP)
job_queue_processes = 10
hash_join_enabled = TRUE
background_dump_dest = C:\oracle\admin\paullin\bdump
user_dump_dest = C:\oracle\admin\paullin\udump
core_dump_dest = C:\oracle\admin\paullin\cdump
sort_area_size = 524288
db_name = paullin
open_cursors = 300
star_transformation_enabled= FALSE
query_rewrite_enabled = FALSE
pga_aggregate_target = 25165824
aq_tm_processes = 1
PMON started with pid=2
DBW0 started with pid=3
LGWR started with pid=4
CKPT started with pid=5
SMON started with pid=6
RECO started with pid=7
CJQ0 started with pid=8
QMN0 started with pid=9
而.trc文件里面则保存了当前会话的ID
【3】cdump:存放发生崩溃的操作系统的系统进程信息
【4】create:存储创建数据库的SQL脚本
【5】udmp:存储用户进程所生成的跟踪文件
posted @
2008-05-04 17:41 Paul Lin 阅读(560) |
评论 (0) |
编辑 收藏
1.关于单元测试:
单元测试中的Test Case在设计时,有两点要注意的:
a. 测试的方法最好短小精悍,每个test case只测试一个关注的功能,假如一个方法的处理逻辑里面包含了对几种可能情况的处理,那么测试案例最好分成几个来测试,举例如下
方法: public void convertStringToDate(String string)
在实际应用过程中,传入参数string的值可能有下面几种情况:
1). Null
2). 空格
3). 非空但格式错误
4). 非空且格式正确,但值错误(如:2008-02-31 23:59:59)
5). 非空且格式、值均正确
那么如果我们在同一个测试方法中: public void testConvertStringToDate()测试所有的可能情况,会有下面两个问题:
1). 代码量增多
2). 不利于修改,假如由于业务方法中某个处理逻辑改变了,此时重新测试时必须测试所有其它的方法
3). 可能造成测试案例的顺序依赖,比如其中某个方法会抛出异常,之后的测试案例可能不会被执行到
如果我们按照上面可能出现的情况来分的话,那么就有五个测试案例,从数量上看是多了,但是后果就是每个方法都非常短小(不超过6行),简单明了,一目了然,即便测试案 例错了,我也能马上看出来。其次一个测试案例的修改不会影响到其它的测试案例。
b.测试方法是否抛出异常,可以参考下面的代码结构:
try{
调用被测试代码 // 此处的代码必须是明确会抛出异常的,因为这是我们要测试的目的
fail("Error: Must throw an exception here.");
} catch(Exception e){
assertTrue(true);
}
2.关于使用DateFormat及其子类进行字符串和日期转换的注意点:
使用DateFormat将字符串转换成Date对象时,必须注意在转换前,先调用:setLinient(false);否则的话即使实际的日期数值有问题,例如2008-04-32 23:59:59,只要格式正确,也能够被转换成功,但这在实际的应用中是没有意义的。
posted @
2008-04-28 00:37 Paul Lin 阅读(207) |
评论 (0) |
编辑 收藏
摘要: 最近在使用Oracle9i数据库进行数据插入、查询、导入/出,有时会出现乱码的情况,具体的情形有以下两种:
1.首次插入/显示乱码
2.首次插入/显示正常、但把数据用工具导出为本地文件(例如TXT)文件,再在另一个客户端中打开该文件并执行时
再次插入的数据显示为乱码。
遂在本地创建两个数据库,一个为AL32UTF8字符集,一个为ZHS16GBK字符集,配合客户端NLS_LANG的不同设置,测
试乱码的情况及进行原因分析。
希望本文能够对仍处于Oracle字符集泥潭的同仁一点帮助
阅读全文
posted @
2008-04-23 14:59 Paul Lin 阅读(7824) |
评论 (0) |
编辑 收藏
<project name="autobuildtest" default="test">
<target name="setProperties">
<property name="src.dir" value="src"/>
<property name="classes.dir" value="classes"/>
</target>
<target name="prepareDir" depends="setProperties">
<delete dir="${classes.dir}"/>
<mkdir dir="${classes.dir}"/>
</target>
<target name="compile" depends="prepareDir">
<javac srcdir="./src" destdir="${classes.dir}"/>
</target>
<target name="test" depends="compile">
<junit printsummary="yes">
<test name="onlyfun.caterpillar.test.MathToolTest"/>
<classpath>
<pathelement location="${classes.dir}"/>
</classpath>
</junit>
</target>
</project>
上面XML文件高亮处描述了Ant如何与JUnit结合进行自动化测试,name属性是你要测试的TestCase,classpath元素指明了TestCase的路径,printsummary说明了要将测试的结果简单的显示出来。
如何吧JUnit测试的详细信息显示出来呢?我们可以采用<formatter>元素,如下所示:
<junit printsummary="yes">
<formatter type="plain" usefile="false"/>
<test name="onlyfun.caterpillar.test.MathToolTest"/>
<classpath>
<pathelement location="${classes.dir}"/>
</classpath>
</junit>
当usefile属性设定为true时,会自动帮您将产生的结果储存在档案中,预设是TEST-*.txt,其中*是您的测试案例类别名称。除此之外,我们也可用采用XML的格式来保存测试结果。如下所示:
<formatter type="xml"/>
也可以将测试结果所产生的XML文件转换为HTML文件,使用Ant可以直接帮您完成这个工作,<junitreport>标签使用 XSLT将XML文件转换为HTML文件
<project name="autobuildtest" default="report">
<target name="setProperties">
<property name="src.dir" value="src"/>
<property name="classes.dir" value="classes"/>
<property name="report.dir" value="report"/>
</target>
<target name="prepareDir" depends="setProperties">
<delete dir="${report.dir}"/>
<delete dir="${classes.dir}"/>
<mkdir dir="${report.dir}"/>
<mkdir dir="${classes.dir}"/>
</target>
<target name="compile" depends="prepareDir">
<javac srcdir="./src" destdir="${classes.dir}"/>
</target>
<target name="test" depends="compile">
<junit printsummary="yes">
<formatter type="xml"/>
<test name="onlyfun.caterpillar.test.MathToolTest"
todir="${report.dir}"/>
<classpath>
<pathelement location="${classes.dir}"/>
</classpath>
</junit>
</target>
<target name="report" depends="test">
<junitreport todir="${report.dir}">
<fileset dir="${report.dir}">
<include name="TEST-*.xml"/>
</fileset>
<report format="frames" todir="${report.dir}/html"/>
</junitreport>
</target>
</project>
上面的例子,首先定义了一个property,用于指向保存测试结果的目录,接着在<test>元素中通过<todir>将结果指向该目录。然后report目标首先在todir属性指定的目录下查找名称包含:TESTd的XML文件,找到之后通过XSL转换成带frame的HTML页面,存放到子目录html下面
最终的结果可能如下:
posted @
2008-04-21 15:21 Paul Lin 阅读(649) |
评论 (0) |
编辑 收藏
【1】path和location属性的区别:
<classpath>
<pathelement path="${classpath}"/>
<pathelement location="lib/helper.jar"/>
</classpath>
原文:The location attribute specifies a single file or directory relative to the project's base directory (or an absolute filename), while the path attribute accepts colon- or semicolon-separated lists of locations. The path attribute is intended to be used with predefined paths - in any other case, multiple
elements with location attributes should be preferred.
从中我们可以看出path可以用于指向存在多个文件的位置,而location只能指向单个的文件或目录。另外path可以被设定id,供其它的path或classpath引用。如:<path id="main-classpath">,而classpath则没有
【2】综合示例:
In addition, DirSets, FileSets, and FileLists can be specified via nested <dirset>, <fileset>, and <filelist> elements, respectively. Note: The order in which the files building up a FileSet are added to the path-like structure is not defined.
<classpath>
<pathelement path="${classpath}"/> 方式① :引用特定的变量
<fileset dir="lib"> 方式② :指向特定的文件集
<include name="**/*.jar"/>
</fileset>
<pathelement location="classes"/> 方式③:指向单个目录
<dirset dir="${build.dir}"> 方式④:指向特定目录集
<include name="apps/**/classes"/>
<exclude name="apps/**/*Test*"/>
</dirset>
<filelist refid="third-party_jars"/> 方式⑤:引用指定文件列表
</classpath>
This builds a path that holds the value of ${classpath}, followed by all jar files in the lib directory, the classes directory, all directories named classes under the apps subdirectory of ${build.dir}, except those that have the text Test in their name, and the files specified in the referenced FileList.
posted @
2008-04-21 14:28 Paul Lin 阅读(1915) |
评论 (0) |
编辑 收藏
摘要: Visitor模式的一个优点体现在对集合元素的访问中:由于集合中的可访问元素都实现了Visitable接口,所以在迭代集合的过程中,我们可以将每个元素都看成是接口类型。
其次由于JAVA语言的多态性,虽然每个元素都是接口类型(Visitable),但每个元素的实现类不同,所以在调用accept方法时,虚拟机“知道”应该调起那个正确的方法(例如:集合中的一个String元素,会调用StringElement的accept方法)
阅读全文
posted @
2008-04-15 17:38 Paul Lin 阅读(4464) |
评论 (2) |
编辑 收藏
摘要: 策略操作定义了策略的输入和输出,而把策略的实现工作留给了各个类。这些类以不同的方案来实现同一操作,它们为用户提供统一的接口,因而这些类可以相互替换。
Strategy模式允许多种策略共存,而代码不会混乱。策略模式也可以实现模式选择逻辑和策略本身相分离。
Strategy模式的意图在于把可选的策略或方案封装在不同的类中,并在这些类中实现一个共同的操作。
阅读全文
posted @
2008-04-08 11:52 Paul Lin 阅读(5346) |
评论 (2) |
编辑 收藏