摄影

真实镜头记录下的旧社会土匪当街抢劫

哎!旧社会下土匪啊!

干净的代码是改出来的

 对于程序员来说,最终的也是最基本的目标就是能写出一手好的代码。随着代码量的增长,自身对什么是好的代码的认识也渐渐有了不断的调整。 1** 注释真的那么重要么?**最好的注释就是代码。这句话确实是没有错误的。如果一个函数占用了一屏的版面,原因是由于各种各样的注释和解释性的 // ** 等说明文档,确实是比较恼人的。与其花过多的时间花精力在注释和说明的编写上面,不如花时间在变量名的编写上面。 不能说没有注释的代码一定是天书。在程序员界来说,其实有许多是大家默认的约定,以php为例子如果说function getMsgBySsn($msgid, $ssn)function getMsgs($msgids);这样的语句其实不用注释完全是可以的。 这说明好的变量名和函数名是最好的注释!在做一个完整的项目的时候,看代码的过程中其实就是接受作者潜意识规约的过程。如果一个大的项目,所有的数据结构都使用一致的变量名,$msg, $chg, 那么这些变量名就已经赋予了完整的定义了。比如在一个项目中,在所有表示“消息”这个概念的地方,不管是参数还是返回值,完全都只使用$msg这么一个array()那么,虽然我没有在每个引用的地方加大篇幅说明$msg中的key和value是什么,只要读者追着看到这样的函数:function getMsg(){ $msgid = self::getMsgid() return array( ‘msgid’ => $msgid, 'ssn' => self::getSsn($msgid), 'title' => self::getTitle($msgid), );}是不是/** Msg包含 msgid,ssn,title **/这样的注释更好呢?当然,好代码在变量都一定会遵循的规则是:一个项目一个意思的东西,一定只有一个规定的变量名好的代码会由于一个或两个变量名起的不对而不惜一次一次的svn commit,最后出现的代码一定不会让你失望的。 2 代码的简洁性你总是能感叹到为什么有的人写的代码是这么让人舒服。让代码简单并不是一件容易的事情。这需要相当的代码能力才能有这样的能力。比如这么一个函数,明明可以更简单的:function example(){ $iMsgid = $this->getMsgid(); $sTitle = $this->genTitle($iMsgid); $sContent = $this->genContent($iMsgid); $result = array( 'msgid' => $iMsgid, 'title' => $sTitle, 'content' => $sContent, ); return $result;}我宁可选择写成这样:function example(){ $msgid = $this->getMsgid(); $title = $this->genTitle($msgid); $content = $this->genContent($msgid); return compact('msgid', 'title', 'content');}不妨能不能用更少的代码行数写出一样功能性的代码。代码的量一旦减少,给的信息就是:犯错的概率也更少了 最近在新项目组有几个感想:1以前经常觉得有很多函数必须要很详细的参数说明什么的,其实大都都是可以使用OO的方法来使代码更优美比如function($msgid, $title, $content, $ssn)为什么不是使用function($msg)呢?开始我认为,$msg这样传入并不知道里面包含的key和value是什么,对代码的阅读性造成障碍但是后来想想,其实这是因为我在阅读到这个函数的时候并没有$msg是一个对象的概念,也就是前面的代码并没有在人的潜意识里面栽种下这个对象的概念。那么前面的代码应该改了…………2 好的代码不是一次性写出来的,一定是一次一次svn commit堆积出来的,你会看到某大牛为了一个空格,一个文件名是使用cron还是shell, 一个变量名(比如getMsg($Msgid) => getMsg($msgid))而进行一次又一次的改动最后得出的代码真的是“干净”的! 原文网址:http://www.cnblogs.com/yjf512/archive/2012/03/15/2399532.html

[视频]超近距离拍摄接触并山崩塌

超近距离拍摄接触并山崩塌,就好比一座城堡一下子就给没有了一样。

Oracle11.2.0非安装版(简装版)

推荐给oracle11的简装版给开发测试人员,不用去装那么几百兆大的原版了。&nbsp;作者: iihero@CSDN, 2012.3.11. 请尊重个人劳动。如若转载,请注明原始出处。Thanks.下载地址:http://download.csdn.net/detail/iihero/4131001(免责声明):这是一个精简版的oracle11g for windows 32bit x86平台.此压缩包,仅供学习研究使用,本文作者不负任何责任。适合于开发人员使用。切不可将其用于商业用途,请遵守Oracle公司相关商业规定。如因私自将其用于商业用途,由此带来的法律纠纷或其它问题,概与本人无关.author: iihero@CSDN&nbsp; (iiihero AT hotmail.com;&nbsp; iihero AT qq.com)0. 如果你已经安装了别的版本的oracle,请自行备份注册表:[HKEY_LOCAL_MACHINE/SOFTWARE/ORACLE], 这样即算有冲突,你也可以重新导入以前的注册项而得已恢复1. 将压缩包解压至目录,设该目录值为: d:,其下将有目录:<D>/oracle/*<D>/oracle/11.2.02. 新的ORACLE_HOME将为:<D>/oracle/11.2.0运行完iihero.ora11g.bat运行完以后,(一个批处理一次安装全部完成)你需要将<D>/oracle/11.2.0/BIN添加到path里头缺省的ORACLE_SID为iihero,你可以自行修改iihero.ora11g.bat中的SID值,不要超过8个字符。3. 安装完以后,别忘了添加环境变量ORACLE_SID=iihero以及将%ORACLE_HOME%/bin添加到PATH环境变量里头,在这之后,即可使用sqlplus system/manager进入并修改密码,执行表空间、用户管理相关操作。如: 1: [sql] view plaincopy 2: D:Oracle>;sqlplus system/manager 3: 4: SQL*Plus: Release 11.2.0.1.0 Production on 星期日 3月 11 13:14:35 2012 5: 6: Copyright (c) 1982, 2010, Oracle. All rights reserved. 7: 8: 9: 连接到: 10: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production 11:With the Partitioning, OLAP, Data Mining and Real Application Testing options 12: 13: SQL>; quit 14: 从 Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production 15:With the Partitioning, OLAP, Data Mining and Real Application Testing options 断开&nbsp;欢迎大家试用,如果发现有什么问题,可以与本人联系。这个11g的包,既可充当server,同时也可以用作oci, jdbc,sqlplus,odbc等的客户端工具。还是比较齐全的。11g比10g的非安装包,确实大了不少。10g的时候,总共才50M不到,这不,到了11g,压缩完以后,也有100来兆。不过,不管怎样,比原始的安装包,那可是小了很多了。作者地址:http://iihero.iteye.com/blog/1450186

升级win8后的使用

win8已经开始公测,我这个喜欢折腾的也很想用上一把,根据以往换系统,装个系统之后,就需要装一大堆的软件,特别像我们这种专业码农,还需要考虑软件的兼容性。升级,风险很大。我也考虑过用虚拟就安装,可我下载的是win8 64位的,虚机仅支持32位的。我的解决办法就是,先ghost备份一个系统,再进行升级。虽然win7升级win8是可以保留应用的,还是备份下安全。win7升级win8还算简单,虚拟光驱加载系统镜像,点击sources中的setup,一路按照提醒,检测兼容性之后,选择保留个人内容和应用设置,就等待系统自动安装,各种驱动也不用重新安装,我花了两个小时,就完成了。安装之后,感觉不错,喜欢win8的metra的简洁风!win8取消了开始按钮,开始按钮我是常用的,很不习惯,装个start8基本就解决了,还可以使用metra的界面。win8的使用可以参考http://www.ilovewindows8.com/的介绍。其他比如我的使用,eclipse的使用开发,oracle的使用,svn、git的版本库使用,网银也可以用,还有其他一些常用软件都使用正常,目前不能正常用的是VMware,还没开始解决,应该是有方法解决的。杀毒软件用的是数字的,虽然我一直对数字做的东西比较排斥,但数字市场运作,用户体验做的的确不错,我又何必那么较真呢?做人也一样,不能太较真了。在运行的速度上面,感觉要比win7块一些,我是通过eclipse的使用感觉出来了,eclipse的使用是比win快了许多,不知道是不是心理作用。win8的QQ也是很好用,能让人全身心的投入在交流中,如果我们的IDE工具能做成这样的就好了。无论怎么说,win8还是值得升级的,再怎么说,也算是一个正版系统啊!免费的为啥不用呢?

推荐一些was的资源

很久没有关注was的使用,今天收到WebSphere 开发与应用社区的推荐邮件,看到里面一些不错的资源,推荐使用was的看看啊!WAS初学-创建简单集群[sangmin214]http://www.webspherechina.net/home/space.php?uid=15618&do=blog&id=56151通往测试架构师之路[myjob]http://www.webspherechina.net/home/space.php?uid=1913&do=blog&id=56147WAS V7 分布式高速缓存[yuruli2058]http://www.webspherechina.net/home/space.php?uid=39601&do=blog&id=56134WAS初学-如何从WAS中删除一个Profile[sangmin214]http://www.webspherechina.net/home/space.php?uid=15618&do=blog&id=56132WebSphere Application Server ND版 V8安装及简单使用http://www.webspherechina.net/home/space.php?uid=15618&do=blog&id=56121WebSphere密码遗忘的2种解决方案http://www.webspherechina.net/home/space.php?uid=205&do=blog&id=56065

2012东方卫视春晚:陈佩斯朱时茂《新警察与小偷》

想当年的警察和小偷,现在已经升级了,瞧瞧不看春晚的后果吧!

Hibernate 参数设置一览表

Hibernate 参数设置一览表,相当全的啊!推荐hibernate使用者必备! 属性名 用途 hibernate.dialect 一个Hibernate Dialect类名允许Hibernate针对特定的关系数据库生成优化的SQL.取值 full.classname.of.Dialect hibernate.show_sql 输出所有SQL语句到控制台. 有一个另外的选择是把org.hibernate.SQL这个log category设为debug。eg. true | false hibernate.format_sql 在log和console中打印出更漂亮的SQL。取值 true | false hibernate.default_schema 在生成的SQL中, 将给定的schema/tablespace附加于非全限定名的表名上.取值 SCHEMA_NAME hibernate.default_catalog 在生成的SQL中, 将给定的catalog附加于非全限定名的表名上.取值 CATALOG_NAME hibernate.session_factory_name SessionFactory创建后,将自动使用这个名字绑定到JNDI中.取值 jndi/composite/name hibernate.max_fetch_depth 为单向关联(一对一, 多对一)的外连接抓取(outer join fetch)树设置最大深度. 值为0意味着将关闭默认的外连接抓取.取值 建议在0到3之间取值 hibernate.default_batch_fetch_size 为Hibernate关联的批量抓取设置默认数量.取值 建议的取值为4, 8, 和16 hibernate.default_entity_mode 为由这个SessionFactory打开的所有Session指定默认的实体表现模式.取值 dynamic-map, dom4j, pojo hibernate.order_updates 强制Hibernate按照被更新数据的主键,为SQL更新排序。这么做将减少在高并发系统中事务的死锁。取值 true | false hibernate.generate_statistics 如果开启, Hibernate将收集有助于性能调节的统计数据.取值 true | false hibernate.use_identifer_rollback 如果开启, 在对象被删除时生成的标识属性将被重设为默认值.取值 true | false hibernate.use_sql_comments 如果开启, Hibernate将在SQL中生成有助于调试的注释信息, 默认值为false.取值 true | false**表 3.4.&nbsp; Hibernate JDBC和连接(connection)属性 ** 属性名 用途 hibernate.jdbc.fetch_size 非零值,指定JDBC抓取数量的大小 (调用Statement.setFetchSize()). hibernate.jdbc.batch_size 非零值,允许Hibernate使用JDBC2的批量更新.取值 建议取5到30之间的值 hibernate.jdbc.batch_versioned_data 如果你想让你的JDBC驱动从executeBatch()返回正确的行计数 , 那么将此属性设为true(开启这个选项通常是安全的). 同时,Hibernate将为自动版本化的数据使用批量DML. 默认值为false.eg. true | false hibernate.jdbc.factory_class 选择一个自定义的Batcher. 多数应用程序不需要这个配置属性.eg. classname.of.Batcher hibernate.jdbc.use_scrollable_resultset 允许Hibernate使用JDBC2的可滚动结果集. 只有在使用用户提供的JDBC连接时,这个选项才是必要的, 否则Hibernate会使用连接的元数据.取值 true | false hibernate.jdbc.use_streams_for_binary 在JDBC读写binary (二进制)或serializable (可序列化) 的类型时使用流(stream)(系统级属性).取值 true | false hibernate.jdbc.use_get_generated_keys 在数据插入数据库之后,允许使用JDBC3 PreparedStatement.getGeneratedKeys() 来获取数据库生成的key(键)。需要JDBC3+驱动和JRE1.4+, 如果你的数据库驱动在使用Hibernate的标 识生成器时遇到问题,请将此值设为false. 默认情况下将使用连接的元数据来判定驱动的能力.取值 true|false hibernate.connection.provider_class 自定义ConnectionProvider的类名, 此类用来向Hibernate提供JDBC连接.取值 classname.of.ConnectionProvider hibernate.connection.isolation 设置JDBC事务隔离级别. 查看java.sql.Connection来了解各个值的具体意义, 但请注意多数数据库都不支持所有的隔离级别.取值 1, 2, 4, 8 hibernate.connection.autocommit 允许被缓存的JDBC连接开启自动提交(autocommit) (不建议).取值 true | false hibernate.connection.release_mode 指定Hibernate在何时释放JDBC连接. 默认情况下,直到Session被显式关闭或被断开连接时,才会释放JDBC连接. 对于应用程序服务器的JTA数据源, 你应当使用after_statement, 这样在每次JDBC调用后,都会主动的释放连接. 对于非JTA的连接, 使用after_transaction在每个事务结束时释放连接是合理的. auto将为JTA和CMT事务策略选择after_statement, 为JDBC事务策略选择after_transaction.取值 on_close |…

很漂亮的火山喷发的摄影照片

很佩服那些为了追求自然景观,竟然跑到火山口,摄影的人,看看他们带回来的漂亮、惊险的摄影照片吧!很喜欢这张,天空和火山共存的,一边是火山的喷发,一边是宇宙的浩瀚。还带闪电的。更多的看原文。40张惊险的火山喷发摄影照片

客户应该知道的软件开发八个原则

在IT领域做自由职业者是很合适的。有很多开发者都有过做自由职业者的经历。有很多书籍和文章将了如何让客户满意以及如何及时的交付正确的软件。但是很少文章讲述客户在项目过程中应该如何做。虽然客户付了钱,但这并不意味着我们要容忍他们非常粗鲁的态度和错误的习惯。1. 好的软件一定不便宜我常常遇到的一个问题是,客户想要花不到500欧元建立一个全功能的企业网站。这个价钱你可以找我隔壁的12岁小男孩,用Joomla帮你搭一个,但是专业的软件开发者,懂得软件架构,懂得如何开发安全,稳定,能良好运行的软件的一点比这个价格要贵很多。软件开发和别的职业是一样的,需要花大量的时间学习。除此以外,很多客户往往在合同以外要求添加一些功能,免费的。你的医生不会免费工作,你的扫地阿姨不会免费工作,你也不会免费,为什么要求软件工程师免费工作?我有见到很多客户雇佣了一些便宜的、自称专业的开发者,或者外包开发到印度,越南,结果往往很失望。这些渠道看上去是便宜了一些,但是后期的软件维护成本非常昂贵。所以很多客户尝试了一次以后,还是回头来找我开发。2. 需求要明确我们知道一开始就能列出所有详细的需求是很困难的。这也是为什么我们发明了敏捷开发这样的技术。但是如果你给我们错误的需求,我们也只能交付错误的软件。你可以因为软件不好用而责怪我们,但是你给了我们不对的需求在先。最终浪费了双方大量的时间,也浪费了很多钱。软件开发者也许很聪明,但是只有你了解你的业务需求!3. 好的软件需要配合完成为了交付一个好的软件,开发者应该在项目中全力以赴。但是客户也不能坐在一边对这个项目不闻不问。如果你想要你的软件按时、正确的交付,你应该和开发者保持联系,所以我们能及时发现问题并修正。这并不需要你无时无刻的盯着我们工作,你只要及时的回复我们的email就可以了,比如说24个小时之内。我有遇到过一些客户,在合同签完以后彻底消失,然后到软件交付的时候,跟我讲为什么没有开发完成?你说呢?!4. 并不是所有的功能都是可见的没有绚丽的界面和大量的新功能并不意味着我们没有努力工作。事实上,大量的工作都是和前台无关的。这也是为什么我们应该投入资源来改进后台的代码。根据 Pareto Principle http://en.wikipedia.org/wiki/Pareto_principle ,20% 的代码 解决了80% 的问题。这些问题有可能是服务器性能瓶颈或者数据损坏。虽然你花钱在这些方面你看不到软件的界面变化,但是它是值得的。5. 提前给出准确的时间预测很困难在任何一个领域,给出项目的时间预测是一件困难的事情。在IT领域更是如此,因为客户往往不知道他们到底想要什么。告诉我们你的想法,我们会给你一个时间估算,仅仅是估算。需求往往在开发过程中变化,所以不要老拿预估的时间来说事。6. 程序员也是人我们也许工作起来,思维方式像是机器人,我们也许长时间在办公室里不出来,但这并不意味着我们不是人类。当你在餐馆吃晚饭,或者做飞机安全着陆的时候,你会对厨师和飞行员表示感激,当你的家人在医院治愈的时候,你会对医生表示感激。那么请也把这份感激、尊重带给我们。7. 告诉我要做什么,不要指挥我怎么做你描述你的问题,让专业的人来提出解决方案。请让开发者做他擅长的事情:解决你的问题。在IT领域,开发者懂的往往远远比客户多。也就是说开发者知道不同的方案的优点与缺点,他会选择正确的解决方案。请不要把简单的问题复杂化,不要告诉我们如何解决问题,专业的问题由专业的人来解决,可以节省你的很多时间和金钱。8. 听听我们的建议正如上一段提到的那样,开发者在技术领域也许比你(客户)懂的多。如果你想要在你的网站放一个自动播放的视频,而开发者建议你不要这么做,那么听他的。因为他已经做过类似的案例,并且知道自动播放让很多人很厌烦。你喜欢这个视频,但是其他人不一定。如果你的开发者建议你不要使用Flash,那么相信他。他知道使用Flash的不好的地方,也许你不知道。结论软件开发者需要做所有的努力来完成一个好的软件。有很多书籍讲述了关于如果控制软件质量,怎么做需求分析,敏捷开发等等。但是作为客户,你也应该遵循一些基本的原则。最大的问题往往是客户希望项目的预算越低越好,却不断的更改需求,还没有很好的沟通。原文链接,OSChina.NET 原创编译

1 13 14 15 57