Java堂  


common-configuration中CompositeConfiguration类的一个需要注意的地方

Filed under: JavaPlateform — Jet @ 4:05 下午
原文出处: common-configuration中CompositeConfiguration类的一个需要注意的地方
作者: Jet Mah from Java堂
声明: 可以非商业性任意转载, 转载时请务必以超链接形式标明文章原始出处、作者信息及此声明!

Common-Configuration中,CompositeConfiguration类用来对多个配置文件进行组合处理,该类有一个getNumberOfConfigurations()方法,用来读取Configuration对象的个数,但是如果执行下面的代码:

  1. CompositeConfiguration config = new CompositeConfiguration();
  2. int number = config.getNumberOfConfigurations();
  3. System.out.println(number);

这个时候会发现number的值是1而不是0,虽然没有向其中添加任何Configuration对象。CompositeConfiguration构造方法的代码如下:

  1. public CompositeConfiguration()
  2.     {
  3.         clear();
  4.     }
  5.  
  6.     public void clear()
  7.     {
  8.         configList.clear();
  9.         // recreate the in memory configuration
  10.         inMemoryConfiguration = new BaseConfiguration();
  11.         ((BaseConfiguration) inMemoryConfiguration).setThrowExceptionOnMissing(isThrowExceptionOnMissing());
  12.         ((BaseConfiguration) inMemoryConfiguration).setListDelimiter(getListDelimiter());
  13.         ((BaseConfiguration) inMemoryConfiguration).setDelimiterParsingDisabled(isDelimiterParsingDisabled());
  14.         configList.add(inMemoryConfiguration);
  15.     }

可以看到默认构造方法中调用了clear()方法,而clear方法中自动添加了一个BaseConfiguration对象,该对象用于存放自身的一些配置信息。所以这个时候的数量是1而不是0,这一点容易让人迷惑。

参考资料:
Re: [Configuration] CompositeConfiguration.getNumberOfConfigurations( ) question

IE6下使png透明的完美解决方式(续)

Filed under: DynamicLanguage — Jet @ 5:17 下午
Tags:
原文出处: IE6下使png透明的完美解决方式(续)
作者: Jet Mah from Java堂
声明: 可以非商业性任意转载, 转载时请务必以超链接形式标明文章原始出处、作者信息及此声明!

自从上次介绍一种在IE6下使png透明的方式之后,今天又遇到一种更加完美的解决方案 DD_belatedPNG,详细的使用方法大家可以看文档,我这里只是简单说一下如何来使用(其实使用的时候也非常简单):

首先是在DD_belatedPNG网站上下载js文件,可以选择压缩后的文件,然后按照下面的方式在页面中引用(这一点和unitpngfix调用方式一样):

  1. <!--[if lt IE 7]>
  2. <script type="text/javascript" src="scripts/DD_belatedPNG.js"></script>
  3. <script type="text/javascript">
  4. // 设定需要渲染的DOM对象
  5. DD_belatedPNG.fix('.png_bg');
  6. </script>
  7. <![endif]-->

接下来就是体现DD_belatedPNG灵活性的一面了,与UnitPNG不同,DD_belatedPNG需要你使用一个js脚本来指定所要渲染的页面对象,其选择方式与CSS中选择器的方式相同。像上面的例子就是选择页面中所有class为png_bg的DOM对象。

另外,为了做一个统一的设置,我的做法是直接在DD_belatedPNG.js文件后面加上DD_belatedPNG.fix(‘.png_bg’);,这样只要在页面中设定DOM对象的class为png_bg就可以了,这一点可以做到与UnitPNG相同,只不过UnitPNG的名称是固定的,而DD_belatedPNG可以随心所欲了。

参考资料:
DD_belatedPNG,最佳IE6环境下实现PNG-24的应用方案

彻底修改Google Chrome浏览器的安装目录

Filed under: Tools,Web&Server — Jet @ 5:42 下午
原文出处: 彻底修改Google Chrome浏览器的安装目录
作者: Jet Mah from Java堂
声明: 可以非商业性任意转载, 转载时请务必以超链接形式标明文章原始出处、作者信息及此声明!

谷歌浏览器以其简洁的界面和快速的Javascript解析速度v8引擎,很快在浏览器市场中占有了一席之地,我们公司的绝大多数系统就建议用户选择使用谷歌浏览器。但是说起他的安装绝对是个杯具:一是默认下载的是在线安装版的;另外一个就是默认的安装目录在系统盘,而且不能选择!! 本文就针对这两点分别给出一个解决方案。

一、下载谷歌的离线安装包
谷歌浏览器的默认下载地址是:http://www.google.com/chrome/eula.html,其实这个地址后面可以跟很多的参数,最关键的一个参数就是standalone,将它的值设置为1就可以下载离线版了,具体的地址是:http://www.google.com/chrome/eula.html?hl=en&standalone=1,里面的hl是设定语言的,可以不用。

二、修改谷歌浏览器的安装目录
因为谷歌浏览器的安装程序很难进行定制,所以我们没有办法直接修改安装程序来实现修改安装目录的目的,但是可以通过一个小的技巧来制作绿色版的谷歌浏览器

首先使用上面的方法下载离线版的谷歌浏览器,然后默认安装,安装完之后最好不要允许浏览器。谷歌浏览器的默认安装目录如下:

Win7:
C:\Users\系统用户名\AppData\Local\Google\Chrome\Application
WinXP :
C:\Documents and Settings\系统用户名\Local Settings\Application Data\Google\Chrome

进入上述目录之后,首先将chrome.exe放到包含版本号的目录中,然后将这个目录拷贝到你所想要放的地方,最后修改这个目录名就可以了,比如可以修改成GoogleChrome。

还有最后一步,就是设置UserData。可以在刚才那个GoogleChrome目录下面创建一个新的目录UserData,然后创建chrome.exe的一个快捷方式,在快捷“目标”后面加上下面的参数:

–user-data-dir=UserData

然后启动的时候直接运行这个快捷方式就可以了。

最后卸载刚才安装在系统盘下的Google浏览器就可以了。

注意几点:
1. 如果不将chrome拷贝到版本号的目录下,直接运行chrome.exe则无效;
2. 如果不在添加了–user-data-dir参数的快捷方式下运行程序,则默认情况下的User Data目录还是在系统盘下面。

参考资料:
简单制作自己的Google Chrome (谷歌浏览器)绿化版
修改chrome的安装目录

IE6下使png透明的完美解决方式

Filed under: RIA,Web&Server — Jet @ 7:46 下午
原文出处: IE6下使png透明的完美解决方式
作者: Jet Mah from Java堂
声明: 可以非商业性任意转载, 转载时请务必以超链接形式标明文章原始出处、作者信息及此声明!

众所周知,在IE6下面无法使用png透明的效果,虽然IE6的市场份额逐渐下滑,但是在国内依然保持最旺盛的占有率,这一点无法进行忽视。下午的时候Google了一下目前的解决方案,发现IE PNG Fix 2.0 Alpha 4虽然使用非常比较方便而且可以打到预期的效果,但是在加载页面的时候非常的缓慢,这一点是无法容忍的。还有使用滤镜的,但是效果一般,而且没有通用性。

最后在蓝色理想的一个帖子里面有网友提到使用Unit PNG Fix,结果用下来发现效果和速度都非常令人满意,调用方法我简单的说一下吧:

首先在http://labs.unitinteractive.com/unitpngfix.php页面的下面下载unitpngfix.zip文件

接下来将压缩包里面的两个文件:unitpngfix.js和clear.gif拷贝到站点的某个位置,假设将unitpngfix.js拷贝到scripts目录,clear.gif放到images目录,这个时候需要特别注意的是,必须修改unitpngfix.js文件中clear变量的值,也就是clear.gif相对于unitpngfix.js文件的路径,上面的情况就要修改成:

  1. var clear="../images/clear.gif"; //path to clear.gif

最后在页面中进行调用unitpngfix.js文件就可以了。

  1. <!--[if lt IE 7]>
  2. <script type="text/javascript" src="scripts/unitpngfix.js"></script>
  3. <![endif]-->

到这里其实已经看到效果了,不过默认情况下unitpngfix会对页面中所有的元素进行渲染处理,这样的话未免有些影响页面加载的效率,有一种方法就是可以将所要渲染的元素后面使用名为unitPng的style进行限定。

延伸阅读:IE6下使png透明的完美解决方式(续)

OK,Enjoy It!

参考资料:
老问题重提:IE6下png背景透明
ie6处理png透明图片问题
ie6 png透明解决方法简单高效

ExtJS中调用focus方法无效的解决方法

Filed under: DynamicLanguage — Jet @ 10:49 上午
Tags:
原文出处: ExtJS中调用focus方法无效的解决方法
作者: Jet Mah from Java堂
声明: 可以非商业性任意转载, 转载时请务必以超链接形式标明文章原始出处、作者信息及此声明!

在ExtJS中用于盒型控件的BoxComponent(TextField、TextArea、CheckBox、ComboBox等的父类)提供了一个focus方法,用于控制光标的焦点。但是在调用该方法的时候往往会发现达不到预期的效果,很多时候根本没有办法来控制光标的焦点。

在BoxComponent文档中对focus方法的说明如下:

focus( [Boolean selectText], [Boolean/Number delay] ) : Ext.Component
Try to focus this component.

可以看到这个方法有两个可选的参数,第一个的含义是是否全选中所在的文本内容(默认为false),第二个是设置一个延迟的时间,单位是毫秒(默认为0,不延迟)。下面是两种调用的方法:

  1. var textField = new Ext.form.TextField({
  2. // 属性就省略了 ....
  3. });
  4. // 默认的调用
  5. textField.focus();
  6. // 设置延迟的调用
  7. textField.focus(false, 100);
  8. // 等同于上面的方式
  9. textField.focus.defer(100, textField);

如果做一个测试的话可以发现使用后面两种方式之后就会达到预期的效果了,这是因为所有的可视控件需要一个渲染的时间的,如果不设置focus的延迟时间,则再调用focus方法的时候该控件还没有渲染完成,当时是不会成功了。

参考资料:关于window的中field的focus问题

ExtJS中TextField或TextArea支持按键事件的条件

Filed under: DynamicLanguage — Jet @ 11:56 上午
Tags:
原文出处: ExtJS中TextField或TextArea支持按键事件的条件
作者: Jet Mah from Java堂
声明: 可以非商业性任意转载, 转载时请务必以超链接形式标明文章原始出处、作者信息及此声明!

在ExtJS中,对事件进行捕获有两种方式:一种是设置listeners属性,另外一种就是使用on方法,代码如下:

  1. var textArea = new Ext.form.TextArea({
  2.   listeners: {
  3.     'keyup': {
  4.       fn: function(o, evt) {},
  5.       scope: this
  6.     }
  7.   }
  8. });
  9.  
  10. // 也可以使用on方法
  11. textArea.on('keypress', function(o, evt), this);

但是如果这样的话还是无法捕获按键事件,原来除了增加监听之外,还要设置一个enableKeyEvents属性,该属性的作用是是否处理按键事件,默认是false。

参考资料: 不显示删除回复显示所有回复显示星级回复显示得分回复 Extjs中textarea不支持keyup事件?

客户真正的需求原来是这样的

Filed under: JavaPlateform — Jet @ 9:21 上午
原文出处: 客户真正的需求原来是这样的
作者: Jet Mah from Java堂
声明: 可以非商业性任意转载, 转载时请务必以超链接形式标明文章原始出处、作者信息及此声明!