MDA/MDD/TDD/DDD/DDDDDDD
posts - 536, comments - 111, trackbacks - 0, articles - 0
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

1,js的事件函数. click(); click(fn);
  分两种,一种是绑定事件,带参,形如eventName(fn);
  一种是触发事件,不带参,形如eventName(),客户触发或者程序模拟触发。
  触发时包括了浏览器的默认行为。
  但可以通过在某个绑定的函数中返回false来防止触发浏览器的默认行为。
  在eventName(fn)的函数体内,this 指代的是DOM对象而非jQuery对象.可用$(this)得到jquery对象
 
2,each(fn);
  返回 'false' 将停止循环 (就像在普通的循环中使用 'break')。
  返回 'true' 跳至下一个循环(就像在普通的循环中使用'continue')。
 
3,attr("checked", true)和attr("checked", '')是同样的效果,但attr("checked", 'true')不行

4,

操作 radio

var item = $("input[name='items'][checked]").val();

$("input[name='items']").get(1).checked = true;

$("[name='isf'][value='yes']").attr("checked",true);

操作 select

var item = $("select[name='items'] option[selected]").text();

$('#select_id')[0].selectedIndex = 1;

 
5,属性选择器
  [attribute]        匹配包含给定属性的元素
  [attribute=value]  匹配给定的属性是某个特定值的元素
  [attribute^=value] 匹配给定的属性是以某些值开始的元素
  [attribute!=value] 匹配给定的属性是不包含某个特定值的元素
  [attribute$=value] 匹配给定的属性是以某些值结尾的元素
  [attribute*=value] 匹配给定的属性是以包含某些值的元素
  [selector1][selector2][selectorN] 复合属性选择器,需要同时满足多个条件时使用。
  例如$("input[id][name$='man']")
 
6,$("tr").each(function(i){this.style.backgroundColor=['#ccc','#fff'][i%2]}) 
//实现表格的隔行换色效果

7,$('input').one("click", function(){
            alert($(this).val());
        });
  此事件执行一次即被删除
 
8,$("form input") 匹配所有的后代元素(子子孙孙)
 $("form > input")匹配所有的子元素(只有儿子)
$("div,span,p.myClass")将每一个选择器匹配到的元素合并后一起返回

9,disabled的用法
以下两种写法没有区别,都表示不可用:
$("#btn").attr('disabled','false')和$("#btn").attr('disabled','true')
可用的话要用:
$("#btn").removeAttr('disabled');或$("#btn").attr('disabled', false);//注意无引号

10,mouseout的处理
http://tangb4c.yo2.cn/archives/632854
http://www.zhangjingwei.com/show-93-1.html
http://bbs.51js.com/thread-70665-1-1.html

11,jquery处理表格
http://blog.blueshop.com.tw/jeff377/archive/2008/02/01/54237.aspx
http://15daysofjquery.com/examples/zebra/

12 jQuery构造函数详解
http://hi.baidu.com/xletian/blog/item/30810de92776be3bb90e2d69.html

13,jquery的布局管理器layoutManager

14, 注意有空格和没空格的区别

var sel = $("#itemList [issel='true']");//itemList下所有含有issel='true'属性的子孙元素.好像用find等别的方式都实现不了。

var sel = $("#itemList[issel='true']");//用issel='true'过滤前面的元素

15,只读的写法

jQuery(":input[name='title']").attr('readonly','readonly')

或jQuery(":input[name='title']")[0].readOnly=true


16,重复复制同一个div

var tempDiv=jQuery('.cont').eq(0).clone();
jQuery('.cont').eq(jQuery('.cont').length-1).after(tempDiv);

17, id="org.id"时要转义:$("#org\\.id").val();

18,jQuery的serialize

可用来获取表单里元素的值拼成一个query string

19

jquery相关插件或项目
(1)图表flot  (http://code.google.com/p/flot/)
       jqchart  http://www.reach1to1.com/sandbox/jquery/jqchart/
     画图drawing     http://www.openstudio.fr/Library-for-simple-drawing-with.html


       

posted @ 2008-04-28 15:58 leekiang 阅读(1130) | 评论 (0)编辑 收藏

下列情况是从浏览器的地址栏正常取得Request.ServerVariables("HTTP_REFERER")的:
1.直接用<a href>
2.用Submit或<input type=image>提交的表单(POST or GET)
3.使用Jscript提交的表单(POST or GET)


下面是Request.ServerVariables("HTTP_REFERER")不能正常取值的情况:
1.从收藏夹链接
2.单击'主页'或者自定义的地址
3.利用Jscript的location.href or location.replace()
4.在浏览器直接输入地址
5.<%Response.Redirect%>
6.<%Response.AddHeader%>或<meta http-equiv=refresh>转向
7.用XML加载地址

http://www.linux-cn.com/html/program/ASP/20070424/12718.html

posted @ 2008-04-26 22:45 leekiang 阅读(407) | 评论 (0)编辑 收藏

两台不同的数据库服务器,从一台数据库服务器的一个用户读取另一台数据库服务器下的某个用户的数据,这个时候可以使用dblink
  其实dblink和数据库中的view差不多,建dblink的时候需要知道待读取数据库的ip地址,ssid以及数据库用户名和密码。
dblink =database links

  创建可以采用两种方式(自己试验时只有第一种方式可以,不知何故):

  1、已经配置本地服务
以下是引用片段:
  create public database
  link fwq12 connect to fzept
  identified by neu using 'fjept'
  CREATE DATABASE LINK数据库链接名CONNECT TO 用户名 IDENTIFIED BY 密码 USING ‘本地配置的数据的实例名’;

  2、未配置本地服务
以下是引用片段:
create database link linkfwq
   connect to fzept identified by neu
   using '(DESCRIPTION =
   (ADDRESS_LIST =
   (ADDRESS = (PROTOCOL = TCP)(HOST = 10.142.202.12)(PORT = 1521))
   )
   (CONNECT_DATA =
   (SERVICE_NAME = fjept)
   )
   )';
  host=数据库的ip地址,service_name=数据库的ssid。

  其实两种方法配置dblink是差不多的,我个人感觉还是第二种方法比较好,这样不受本地服务的影响。

  数据库连接字符串可以用NET8 EASY CONFIG或者直接修改TNSNAMES.ORA里定义.
  数据库参数global_name=true时要求数据库链接名称跟远端数据库名称一样

  数据库全局名称可以用以下命令查出
  SELECT * FROM GLOBAL_NAME;

  查询远端数据库里的表
  SELECT …… FROM 表名@数据库链接名;

  查询、删除和插入数据和操作本地的数据库是一样的,只不过表名需要写成“表名@dblink服务器”而已。

  附带说下同义词创建:
  CREATE SYNONYM 同义词名 FOR 表名;
  CREATE SYNONYM 同义词名 FOR 表名@数据库链接名;
  删除dblink:DROP PUBLIC DATABASE LINK linkfwq。

  如果创建全局dblink,必须使用systm或sys用户,在database前加public。
  参考资料:
  http://download-west.oracle.com/docs/cd/B19306_01/server.102/b14231/ds_admin.htm#i1008271

posted @ 2008-04-17 19:37 leekiang 阅读(578) | 评论 (0)编辑 收藏

http://www.javaeye.com/topic/124612
http://www.javaeye.com/topic/2832
http://www.javaeye.com/topic/8283
http://www.javaeye.com/topic/151187
http://www.javaeye.com/topic/2312

http://www.itpub.net/viewthread.php?tid=510215&extra=&page=1

以下摘几个我自己认同的观点:
1,
其实有一段时间我们的开发人员也有这种想法,以为程序可以控制好
后来发现没有外键的表里经常有垃圾数据(找不到父亲的孩子),然后又把外键一一加上去,后面测试才发现是应用的BUG,在特定情况下才会发生的BUG。
如果没有外键那数据库就不会报错,也就是说垃圾数据不能阻止。
2,在复杂的业务逻辑下,程序来保证这个是极不可靠的,只有交给数据库从底层来保证才能避免出错。
当然,如果是稳定的程序中把外键去掉会怎么样,这又是另一回事了。
外键的存在对数据库的维护来说是有一些不方便的地方。
3,我们以前做开发的时候,在开发、测试阶段,是所有业务逻辑需要的外键都加上的。数据量小,并发少,也无所谓什么性能什么的。等测试和试运行一段时间后,再将外键去掉,以提高性能。
4,怎么这么多人不用外键的,外键可是逻辑的约束啊!说外键影响性能,可以denormalize外键表啊,但是插入更新必须要符合约束啊,我觉得这是不可替代的啊
对数据的约束最好尽可能放到db里,集中管理清晰准确,以前吃过应用管理约束的亏,不过好好看看oracle sap这些范式做的都还不错啊,他们都这样做我想多少能说明点问题吧
5,你看看oracle系统数据表的设计,再看看大型数据库表的设计,
你就明白,外键约束无处不在.
6,该用的地方,就一定要用!前几天我们的应用程序发现一个bug,后来我仔细一查,就是由于没有使用外建,数据不匹配导致的。教训深刻!
7,如果现在要我来选择,我决定是要用的一定要用,这是系统设计的严谨性的要求,不然产生一堆垃圾数据,这是在一个好的系统中是不允许的。
8,呵呵,做过开发的DBA应该都会有这样的体会
当统计报表中的数据不对的时候就知道什么叫问题严重了,要一点点数据去核查。
9,最好还是使用数据库外键这个最直观的功能吧
至于性能不知有没有什么测试数据,究竟能慢到什么程度,不要听说会慢就不用吧(呵呵,从TOM的书里学到的)
10,这要看是建立那中类型的数据库了
如果是操作类型的数据库 OLTP 面向应用的
数据的规范化是很有必要的.. 该用外键的情况一定要用.
如果是面向部门 用于OLAP或建立数据仓库.
这种时候 往往需要反规范化 存取效率是首要因素

我自己的结论:如果是做企业级的OLTP应用,并且数据量不是非常大的话,一定要建外键。毕竟对于企业来说,保证数据的正确性是最重要的。但如果经过长时间的运行证明代码可靠、并且数据量已经很大,这时也可以去掉外键以提高运行速度。

posted @ 2008-04-14 20:44 leekiang 阅读(1220) | 评论 (0)编辑 收藏

ProjectWise简介 http://www.plantsoft.com/pw/pw2.html
Alfresco 开源的CMS http://www.javaeye.com/topic/79886
Zimbra 提供一套开源协同办公套件包括WebMail,日历, 通信录,Web文档管理和创作,它最大的特色在于其采用Ajax技术模仿CS桌面应用软件

posted @ 2008-04-08 22:04 leekiang 阅读(287) | 评论 (0)编辑 收藏

http://weather.news.qq.com/inc/ss125.htm
http://news.sina.com.cn/iframe/weather/310100.html
http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?op=getWeatherbyCityName
http://www.javaeye.com/post/394802?page=1
http://www.cma.gov.cn/tqyb/weatherdetail/54161.html
http://www.pcjx.com/Java/WebServices/39183.html
http://blog.csdn.net/wfront/archive/2006/11/13/1382128.aspx

posted @ 2008-04-08 11:54 leekiang 阅读(243) | 评论 (0)编辑 收藏

Apache组织开发了一套用于支持Logging的Log4J,Java?1.4版本也引入了一套内置的 Logging框架,如果开发者想在这两套Logging系统之间自由的切换,该怎么办呢?答案就是,使用Commons?Logging。 Commons?Logging定义了一套抽象的Logging接口,用户可以通过配置,使这些接口指向任何一个已存在的Logging系统。

⑴ 首先在classpath下寻找自己的配置文件commons-logging.properties,如果找到,则使用其中定义的Log实现类;这个属性文件至少必须定义org.apache.commons.logging.Log属性,它的值应该是上述任意Log接口实现的完整限定名称。
⑵ 如果上面的步骤失败,Commons的Logging接着检查系统属性org.apache.commons.logging.Log。
   System.setProperty("org.apache.commons.logging.Log","org.apache.commons.logging.impl.Log4JLogger");
⑶ 如果找不到org.apache.commons.logging.Log系统属性,Logging接着在CLASSPATH中寻找log4j的类。如果找到了,Logging就假定应用要使用的是log4j。不过这时log4j本身的属性仍要通过log4j.properties文件正确配置。
通过jar的Service Provider Discovery机制查找 "META-INF/services/org.apache.commons.logging.Log"对应的资源,Service Provider Discovery是JDK1.3之后出现的,我们熟知的XML解析器的查找过程就是利用这个机制.
⑷ 如果上述查找均不能找到适当的Logging API,但应用程序正运行在JRE 1.4或更高版本上,则默认使用JRE 1.4的日志记录功能。
⑸ 最后,如果上述操作都失败,则应用将使用内建的SimpleLog。SimpleLog把所有日志信息直接输出到System.err。

可见,commons-logging总是能找到一个日志实现类,并且尽可能找到一个“最合适”的日志实现类。我说它“很贴心”实际上是因为:1、可以不需要配置文件;2、自动判断有没有Log4j包,有则自动使用之;3、最悲观的情况下也总能保证提供一个日志实现(SimpleLog)。
可以看到,commons-logging对编程者和Log4j都非常友好。
为了简化配置commons-logging,一般不使用commons-logging的配置文件,也不设置与commons-logging相关的系统环境变量,而只需将Log4j的Jar包放置到classpash中就可以了。这样就很简单地完成了commons-logging与Log4j的融合。如果不想用Log4j了怎么办?只需将classpath中的Log4j的Jar包删除即可。
就这么简单!

Commons logging的关键点:

    * 提供一个日志记录功能的抽象
    * 提供一种从该抽象到具体日志记录实现的映射
    * 提供默认的映射和发现机制,提高自身的易用性
看花的人多,懂花的少哦。------俺们力争去做懂花人。等老了,一边夕阳西下,一边品茶赏花,岂不乐哉。

日志的级别从高到低依次为:fatal,error,warn,info,debug,trace.
自己只适用三种就够了,调试用debug,运行时有意义的信息用info,错误用error

log4j.rootLogger是最最重要的一个属性了,它定义日志信息的“输出级别”和“输出目的地”。
设置分两部分,第一个逗号之前的是第一部分,指定“输出级别”;后面的是第二部分,指定“输出目的地”。可以同时指定多个“输出目的地”,以逗号隔开。

不同的appender,打印的基本可以单独设置,例如log4j.appender.logfile.Threshold =debug

输出格式里%t指线程

“同时使用commons-logging和Log4j”的原因是,简化使用和配置。
强调一点,“同时使用commons-logging和Log4j”,与“单独使用Log4j”相比,并不会带来更大的学习、配置和维护成本,反而更加简化了我们的工作。我想这也是为什么“所有用到Log4j的项目一般也同时会用到commons-loggin”的原因之一吧。
Commons-logging能帮我们做什么?
提供一个统一的日志接口,简单了操作,同时避免项目与某个日志实现系统紧密a耦合
很贴心的帮我们自动选择适当的日志实现系统(这一点非常好!)它甚至不需要配置

private static Log log = LogFactory.getLog(YouClassName.class);
注意这里定义的是static成员,以避免产生多个实例。
LogFactory.getLog()方法的参数使用的是当前类的class,这是目前被普通认为的最好的方式。为什么不写作LogFactory.getLog(this.getClass())?因为static类成员访问不到this指针!
将commons-logging和Log4j的jar包都放置到classpath下,同时也将Log4j的配置文件放到classpath中,两者就可以很好的合作。

采用Log4j配合commons-logging作为日志系统,是目前Java领域非常非常流行的模式,使用非常非常的普遍。两者的结合带来的结果就是:简单 + 强大。
commons-logging提供了简捷、统一的接口,不需要额外配置,简单;
Log4j功能非常全面、强大;
commons-logging仅仅对Log4j(当然还包括其它LOG实现)作了一层包装,具体的日志输出还是在内部转交给身后的Log4j来处理;而Log4j虽然做了所有的事情,却甘作绿叶,从不以真身示人。
两者堪称绝配。

# 用于数据库
log4j.appender.DATABASE=org.apache.log4j.jdbc.JDBCAppender
log4j.appender.DATABASE.URL=jdbc:mysql://localhost:3306/test
log4j.appender.DATABASE.driver=com.mysql.jdbc.Driver
log4j.appender.DATABASE.user=root
log4j.appender.DATABASE.password=123
log4j.appender.DATABASE.sql=INSERT INTO LOG4J (Message) VALUES ('[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n')
log4j.appender.DATABASE.layout=org.apache.log4j.PatternLayout
log4j.appender.DATABASE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n

# 发送日志给邮件log4j.appender.MAIL=org.apache.log4j.net.SMTPAppender
log4j.appender.MAIL.Threshold=FATAL
log4j.appender.MAIL.BufferSize=10
log4j.appender.MAIL.From=web@www.wuset.com
log4j.appender.MAIL.SMTPHost=www.wusetu.com
log4j.appender.MAIL.Subject=Log4J Message
log4j.appender.MAIL.To=web@www.wusetu.com
log4j.appender.MAIL.layout=org.apache.log4j.PatternLayout
log4j.appender.MAIL.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n

# 应用于控制台
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.Threshold=DEBUG
log4j.appender.CONSOLE.Target=System.out
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n
#log4j.appender.CONSOLE.layout.ConversionPattern=[start]%d{DATE}[DATE]%n%p[PRIORITY]%n%x[NDC]%n%t[thread] n%c[CATEGORY]%n%m[MESSAGE]%n%n

#应用于文件
log4j.appender.FILE=org.apache.log4j.FileAppender
log4j.appender.FILE.File=file.log
log4j.appender.FILE.Append=false
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n
# Use this layout for LogFactor 5 analysis

# 应用于文件回滚
log4j.appender.ROLLING_FILE=org.apache.log4j.RollingFileAppender
log4j.appender.ROLLING_FILE.Threshold=ERROR
log4j.appender.ROLLING_FILE.File=rolling.log
log4j.appender.ROLLING_FILE.Append=true
log4j.appender.ROLLING_FILE.MaxFileSize=10KB
log4j.appender.ROLLING_FILE.MaxBackupIndex=1
log4j.appender.ROLLING_FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.ROLLING_FILE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n

#应用于socket
log4j.appender.SOCKET=org.apache.log4j.RollingFileAppender
log4j.appender.SOCKET.RemoteHost=localhost
log4j.appender.SOCKET.Port=5001
log4j.appender.SOCKET.LocationInfo=true
# Set up for Log Facter 5
log4j.appender.SOCKET.layout=org.apache.log4j.PatternLayout
log4j.appender.SOCET.layout.ConversionPattern=[start]%d{DATE}[DATE]%n%p[PRIORITY]%n%x[NDC]%n%t[thread]%n%c[CATEGORY]%n%m[MESSAGE]%n%n

# Log Factor 5 Appender
log4j.appender.LF5_APPENDER=org.apache.log4j.lf5.LF5Appender
log4j.appender.LF5_APPENDER.MaxNumberOfRecords=2000

#自定义Appender
log4j.appender.im = net.cybercorlin.util.logger.appender.IMAppender
log4j.appender.im.host = mail.cybercorlin.net
log4j.appender.im.username = username
log4j.appender.im.password = password
log4j.appender.im.recipient = corlin@cybercorlin.net
log4j.appender.im.layout=org.apache.log4j.PatternLayout
log4j.appender.im.layout.ConversionPattern =[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n

posted @ 2008-04-05 23:04 leekiang 阅读(1495) | 评论 (0)编辑 收藏

require  ' net/http '

count 
=   1 .. 100000    #  define an array

count.each{      
#  each 
| index |               #  element is index  1 2 3 4 5 6
printf  " #{index}  "   # print index and space
=  Net::HTTP.new( ' space.cnblogs.com ' , 80 #  create a object
resp, data  =  h.get( ' /group/topic/1605/ ' ,nil)  #  get 
if  resp.code  !=   " 200 "   #  if http response status code not is 200 
  puts resp.code     # put status code
  puts resp.message  # put status message
  
  resp.each{    
# put headers
   | key, val |
  puts 
" #{key}\t\t\t#{val} "
  }
  
  p data    
# put html
   break   #  break the eache
end
# sleep(1) #sleep  use second do inteval
}

来源:http://www.cnblogs.com/coderlee/archive/2008/03/25/1121652.html

posted @ 2008-04-05 13:04 leekiang 阅读(266) | 评论 (0)编辑 收藏

http://hi.baidu.com/mn232nm/blog/item/aaa034adb50022094a36d620.html
http://hi.baidu.com/feige05/blog/item/3d7339184c8d9d0334fa4166.html
http://support.microsoft.com/kb/287625/zh-cn
按vcalendar开发理论:用JAVA生成vcalendar代码,然后发邮件出去,当用outlook2003版本以上的MS   outlook收到该邮件时,可以把这个vcalendar加到outlook的calendar中去。
.ics格式的RFC2445规范
XML 问题: 比微格式更轻巧:纤格式(Picoformat)
iCalendar在移动设备

posted @ 2008-04-03 16:15 leekiang 阅读(1903) | 评论 (1)编辑 收藏

http://www.malsup.com/jquery/block/#displaybox
http://dev.iceburg.net/jquery/jqModal/

http://bbs.blueidea.com/viewthread.php?tid=2844333&extra=&page=1

扩展了 jquery 的插件 easy drag

用 jQuery 的 AJAX 功能发现的一个错误/注意点:HTTP Error 411

漂浮窗口拖动杂谈(续)

http://trentrichardson.com/Impromptu/index.php


http://www.aspstat.com/jbox/demo.htm
http://www.cnblogs.com/huacn/archive/2007/09/03/jquery_jwindow_js.html 李华顺

百度空间的popup效果分析


posted @ 2008-03-28 16:02 leekiang 阅读(4050) | 评论 (0)编辑 收藏

仅列出标题
共54页: First 上一页 37 38 39 40 41 42 43 44 45 下一页 Last