﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>IT博客-asfman</title><link>http://www.cnitblog.com/asfman/</link><description>有些事，我们明知道是错的，也要去坚持，因为不甘心；有些人，我们明知道是爱的，也要去放弃，因为没结局；有时候，我们明知道没路了，却还在前行，因为习惯了。</description><language>zh-cn</language><lastBuildDate>Sun, 05 Jul 2009 20:53:02 GMT</lastBuildDate><pubDate>Sun, 05 Jul 2009 20:53:02 GMT</pubDate><ttl>60</ttl><item><title>__proto__</title><link>http://www.cnitblog.com/asfman/archive/2009/05/17/57280.html</link><dc:creator>汪杰</dc:creator><author>汪杰</author><pubDate>Sun, 17 May 2009 14:45:00 GMT</pubDate><guid>http://www.cnitblog.com/asfman/archive/2009/05/17/57280.html</guid><wfw:comment>http://www.cnitblog.com/asfman/comments/57280.html</wfw:comment><comments>http://www.cnitblog.com/asfman/archive/2009/05/17/57280.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/asfman/comments/commentRss/57280.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/asfman/services/trackbacks/57280.html</trackback:ping><description><![CDATA[Object.__proto__===Function.prototype true<br><br>Function.__proto__ ===Function.prototype true<br><br>Object.__proto__===Function.__proto__ true<br><br>Function.prototype.__proto__ ===Object.prototype true<br><br>Object.prototype.__proto__ null<br><img src ="http://www.cnitblog.com/asfman/aggbug/57280.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/asfman/" target="_blank">汪杰</a> 2009-05-17 22:45 <a href="http://www.cnitblog.com/asfman/archive/2009/05/17/57280.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>人法地，地法天，天法道，道法自然</title><link>http://www.cnitblog.com/asfman/archive/2009/03/19/55546.html</link><dc:creator>汪杰</dc:creator><author>汪杰</author><pubDate>Thu, 19 Mar 2009 05:05:00 GMT</pubDate><guid>http://www.cnitblog.com/asfman/archive/2009/03/19/55546.html</guid><wfw:comment>http://www.cnitblog.com/asfman/comments/55546.html</wfw:comment><comments>http://www.cnitblog.com/asfman/archive/2009/03/19/55546.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/asfman/comments/commentRss/55546.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/asfman/services/trackbacks/55546.html</trackback:ping><description><![CDATA[人法地：人必须遵循大自然的法则。比如说人有生老病死，弱者会被强者支配，人和所有生物一样把生存和交配（主要是传宗接代）放在生命的最高位置。这些都是人属于大自然的部分，故&#8220;人法地&#8221;<br>
<br>
地法天：大自然受到法则的支配，包括有形的天气（比如越接近极点越冷越接近赤道越热），以及无形的物理法则（太热会把生物烤死太冷会把生命热死从高处掉下来会摔死等等）。于是，大自然中的生物必须习惯和适应这些法则，故&#8220;地法天&#8221;。<br>
<br>
天法道：这些规则是不会因为个人的意志改变（不会因为你想就能让太阳夜里出来），他们是固定的，而这些规则总称就是&#8220;道&#8221;。<br>
<br>
道法自然：道是至高无上的真理，因为&#8220;世界就是这样存在的&#8221;，也就是&#8220;自&#8221;然。<img src ="http://www.cnitblog.com/asfman/aggbug/55546.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/asfman/" target="_blank">汪杰</a> 2009-03-19 13:05 <a href="http://www.cnitblog.com/asfman/archive/2009/03/19/55546.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>jq之filter</title><link>http://www.cnitblog.com/asfman/archive/2008/10/27/50715.html</link><dc:creator>汪杰</dc:creator><author>汪杰</author><pubDate>Mon, 27 Oct 2008 01:38:00 GMT</pubDate><guid>http://www.cnitblog.com/asfman/archive/2008/10/27/50715.html</guid><wfw:comment>http://www.cnitblog.com/asfman/comments/50715.html</wfw:comment><comments>http://www.cnitblog.com/asfman/archive/2008/10/27/50715.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/asfman/comments/commentRss/50715.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/asfman/services/trackbacks/50715.html</trackback:ping><description><![CDATA[<p>&nbsp;var chars = jQuery.browser.safari &amp;&amp; parseInt(jQuery.browser.version)&lt;417?"(?:[\\w*_-]|\\\\.)":"(?:[\\w\u0128-\uFFFF*_-]|\\\\.)",<br>&nbsp;//包括中英文* _ -\.的任意单个字符<br>&nbsp;quickChild = new RegExp("^&gt;\\s*(" + chars + "+)"), //匹配以&gt;开始的，后面至少有一个字符的内容，如&gt;child,&gt; child<br>&nbsp;quickID = new RegExp("^(" + chars + "+)(#)(" + chars + "+)"),//匹配如nodeName#idName<br>&nbsp;quickClass = new RegExp("^([#.]?)(" + chars + "*)");//匹配如#idName, .className, nodeName</p>
<p>&nbsp;//多重过滤函数，对已有的dom元素进行多重过滤，elems可以是dom元素数组[dom1,dom2..]，也可以是jq实例{0:dom1, 1: dom2...}<br>&nbsp;//多重过滤的意思，也就是expr可以是以,分开的n个过滤表达式如,".a,.b,:odd",not参数为true的话，表示返回除了找到的元素以外的元素<br>&nbsp;multiFilter: function( expr, elems, not ) {<br>&nbsp;&nbsp; var old, cur = [];<br>&nbsp;&nbsp; //old每次过滤前保存表达式字符串，用来与过滤后expr进行比较，如果两者相同，表示过滤循环结束<br>&nbsp;&nbsp;&nbsp;while ( expr &amp;&amp; expr != old ) {<br>&nbsp;&nbsp;&nbsp;&nbsp;old = expr;<br>&nbsp;&nbsp;&nbsp;&nbsp;var f = jQuery.filter( expr, elems, not );//其实多重过滤是把以,分开的表达式进行filter函数处理，所以过滤的最核心函数是filter函数<br>&nbsp;&nbsp;&nbsp;&nbsp;expr = f.t.replace(/^\s*,\s*/, "" );//一次过滤结束后，如果是多重的话，返回肯定是",xxx"，所以得把&#8220;,&#8221;替换掉以进行下一次过滤<br>&nbsp;&nbsp;&nbsp;&nbsp;cur = not ? elems = f.r : jQuery.merge( cur, f.r );//elems保存返回的dom数组，因为not为true的话，<br>&nbsp;&nbsp;&nbsp;&nbsp;下一次过滤肯定是从返回的dom数组里进行再一次的过滤，如果not不存在，则用cur和返回数组进行合并，<br>&nbsp;&nbsp;&nbsp;&nbsp;不改变elems，因为返回只是一次过滤成功的元素，所以elems不变，但这会存在一个问题，<br>&nbsp;&nbsp;&nbsp;&nbsp;如&lt;div class="a b"&gt;&lt;/div&gt;如果expr为".a, .b"那么第一次返回数组里有这个dom对象，第二次又会有这个对象，所以得进行unique处理<br>&nbsp;&nbsp;&nbsp;}</p>
<p>&nbsp;&nbsp;&nbsp;return cur;//而jq这里对最终结果没有处理！所以会出现上面所说的情况，最终返回dom数组里有可能包含同一个dom元素n次。<br>&nbsp;&nbsp;}</p>
<p>&nbsp;下面听asfman来着重讲解一下jq的过滤核心函数filter函数<br>&nbsp;//filter函数所用到的正则表达式<br>&nbsp; jQuery.parse=[&nbsp;<br>&nbsp;&nbsp;&nbsp;/^(\[) <a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#42;&#64;&#63;&#40;&#91;&#92;&#119;">*@?([\w</a>-]+) *([!*$^~=]*) *('?"?)(.*?)\4 *\]/,// 匹配如[@value='test'], [@foo]&nbsp;<br>&nbsp;&nbsp;&nbsp;/^(:)([\w-]+)\("?'?(.*?(\(.*?\))?[^(]*?)"?'?\)/,// 匹配如:contains('foo'),:has('.a'),:nth-child(4n)&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;new RegExp("^([:.#]*)(" + chars + "+)")//匹配如:even, :last-child, #id, .class,&nbsp; nodeName<br>&nbsp;&nbsp;]<br>&nbsp;filter: function(t,r,not) {//t为过滤表达式如".a", ".a.b", "#id","nodeName","[attr=value]",":nth-child(4n)"等等<br>&nbsp;&nbsp;&nbsp;var last;<br>&nbsp;&nbsp;&nbsp;while ( t &amp;&amp; t != last ) {<br>&nbsp;&nbsp;&nbsp;&nbsp;last = t;//用来保存上一次过滤钱的表达式，如果last和t相同则结束循环<br>&nbsp;&nbsp;&nbsp;&nbsp;var p = jQuery.parse, m;<br>&nbsp;&nbsp;&nbsp;&nbsp;for ( var i = 0; p[i]; i++ ) {//对parse数组进行遍历<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m = p[i].exec( t );//m保存匹配结果m[1]为"[",":", ".","#"或者为空<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ( m ) {//如果m存在则停止遍历<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t = t.substring( m[0].length );//移除匹配到的表达式如t为".a.b"那么匹配到.a后,t为".b"<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m[2] = m[2].replace(/\\/g, "");//如果m[2]中存在\那么就替换掉<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;if ( !m )<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;//如果遍历完parse后，m仍旧为null的话,那么此次过滤完全结束,执行while以后的代码<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //:not是一个非常特殊的表达式,jq对它进行了优化处理<br>&nbsp;&nbsp;&nbsp;&nbsp;if ( m[1] == ":" &amp;&amp; m[2] == "not" )<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r = isSimple.test( m[3] ) ? <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//判断m[3],也就是:not(nodeName),<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;因为isSimple = /^.[^:#\[\.]*$/,它表示除了:#[.以外的任意字符,也就是简单的nodeName或者*,那么进行<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;jQuery.filter(nodeName, r, true)进行简单过滤，也就是new RegExp("^([:.#]*)(" + chars + "+)")/<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;会匹配到，然后返回不包含此nodeName的所有元素<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;jQuery.filter(m[3], r, true).r :<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//:not(.a),:not([attr=value])的复杂类型的情况进行jQuery(r).not(m[3])处理<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;jQuery( r ).not( m[3] );<br>&nbsp;/*<br>&nbsp;&nbsp;not: function( selector ) {<br>&nbsp;&nbsp;&nbsp;if ( selector.constructor == String )<br>&nbsp;&nbsp;&nbsp;&nbsp;// test special case where just one selector is passed in<br>&nbsp;&nbsp;&nbsp;&nbsp;if ( isSimple.test( selector ) )<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return this.pushStack( jQuery.multiFilter( selector, this, true ) );<br>&nbsp;&nbsp;&nbsp;&nbsp;else//也就是进行这步处理，以m[3]为.a为例，那么这里返回所有包含.a的dom元素<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;selector = jQuery.multiFilter( selector, this );<br>&nbsp;&nbsp;&nbsp;var isArrayLike = selector.length &amp;&amp; selector[selector.length - 1] !== undefined &amp;&amp; !selector.nodeType;<br>&nbsp;&nbsp;&nbsp;return this.filter(function() {//此函数的第一个参数为i,this为dom元素, 如果这个dom元素不在包含.a的dom数组<br>&nbsp;&nbsp;&nbsp;内，那么返回该元素，也就是说返回所有不包含.a的元素<br>&nbsp;&nbsp;&nbsp;&nbsp;return isArrayLike ? jQuery.inArray( this, selector ) &lt; 0 : this != selector;<br>&nbsp;&nbsp;&nbsp;});<br>&nbsp;&nbsp;}&nbsp;&nbsp; <br>&nbsp;&nbsp;filter: function( selector ) {<br>&nbsp;&nbsp;&nbsp;return this.pushStack(<br>&nbsp;&nbsp;&nbsp;&nbsp;jQuery.isFunction( selector ) &amp;&amp;<br>&nbsp;&nbsp;&nbsp;&nbsp;jQuery.grep(this, function(elem, i){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return selector.call( elem, i );<br>&nbsp;&nbsp;&nbsp;&nbsp;}) ||</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;jQuery.multiFilter( selector, this ) );<br>&nbsp;&nbsp;}<br>&nbsp;*/<br>&nbsp;&nbsp;&nbsp;&nbsp;else if ( m[1] == "." )//如果m[1]为.那么它肯定是过滤.className<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r = jQuery.classFilter(r, m[2], not);//r为dom数组,m[2]为className<br>&nbsp;/*<br>&nbsp;//对dom数组里的元素进行className的过滤，如m为".a"那么返回所有className包含.a的元素，<br>&nbsp;如果not为true，那么返回所有className不包含.a的元素。<br>&nbsp;classFilter: function(r,m,not){//r为dom数组或jq实例,m为className,not表示返回是否包含某个className的元素<br>&nbsp;&nbsp;&nbsp;m = " " + m + " ";//className前后加空格是为了防止如className为"ab", 这样m为a的话也算包含a了,而通过" a "可以避免这种情况<br>&nbsp;&nbsp;&nbsp;var tmp = [];//保存返回dom元素的数组<br>&nbsp;&nbsp;&nbsp;for ( var i = 0; r[i]; i++ ) {//进行遍历处理，判断dom元素是否包含这个class<br>&nbsp;&nbsp;&nbsp;&nbsp;var pass = (" " + r[i].className + " ").indexOf( m ) &gt;= 0;<br>&nbsp;&nbsp;&nbsp;&nbsp;if ( !not &amp;&amp; pass || not &amp;&amp; !pass )//not不存在,并且找到了，或者not为true,没找到的情况临时数组保存该dom元素<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmp.push( r[i] );//这里也可以通过if(!!not^pass)进行异或来判断<br>&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;return tmp;<br>&nbsp;&nbsp;}<br>&nbsp;*/<br>&nbsp;&nbsp;&nbsp;&nbsp;else if ( m[1] == "[" ) {//如果m[1]为[,那么它就是过滤属性的<br>&nbsp;&nbsp;&nbsp;&nbsp;///^(\[) <a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#42;&#64;&#63;&#40;&#91;&#92;&#119;">*@?([\w</a>-]+) *([!*$^~=]*) *('?"?)(.*?)\4 *\]/,// 匹配如[@value='test'], [@foo]&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var tmp = [], type = m[3];//m[3]也就是包含!= ^= $= ~=这些<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for ( var i = 0, rl = r.length; i &lt; rl; i++ ) {//遍历dom数组<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var a = r[i], z = a[ jQuery.props[m[2]] || m[2] ];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//jQuery.props[m[2]]返回真是的属性名字,如果props返回为undefined那么z=a[m[2]],如elem.readOnly<br>&nbsp;/*<br>&nbsp;&nbsp;props: {<br>&nbsp;&nbsp;&nbsp;"for": "htmlFor",<br>&nbsp;&nbsp;&nbsp;"class": "className",<br>&nbsp;&nbsp;&nbsp;"float": styleFloat,<br>&nbsp;&nbsp;&nbsp;cssFloat: styleFloat,<br>&nbsp;&nbsp;&nbsp;styleFloat: styleFloat,<br>&nbsp;&nbsp;&nbsp;readonly: "readOnly",<br>&nbsp;&nbsp;&nbsp;maxlength: "maxLength",<br>&nbsp;&nbsp;&nbsp;cellspacing: "cellSpacing"<br>&nbsp;&nbsp;}<br>&nbsp;*/<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ( z == null || /href|src|selected/.test(m[2]) )<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//如果z不存在或者m[2]是href|src|selected中毒一个<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;z = jQuery.attr(a,m[2]) || '';//通过attr函数再去找看是否是elem.style的属性,存在返回,不存在返回空字符串</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ( (type == "" &amp;&amp; !!z ||//如果!= ^= $= ~=不存在并且z存在[name]<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; type == "=" &amp;&amp; z == m[5] ||//如果type为=,z存在,并且z == xxx如[name=xxx]<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; type == "!=" &amp;&amp; z != m[5] ||//如果type为!=,z存在,并且z != xxx如[name!=xxx]<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; type == "^=" &amp;&amp; z &amp;&amp; !z.indexOf(m[5]) ||如果type为^=,z存在,并且z中能找到m[5]开始，z.indexOf(xxx)如[name^=xxx]<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; type == "$=" &amp;&amp; z.substr(z.length - m[5].length) == m[5] ||//以m[5]结束<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (type == "*=" || type == "~=") &amp;&amp; z.indexOf(m[5]) &gt;= 0)//z中能找到m[5]<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ^ not )//就行异或,not为true则返回以上条件为false的元素,not不存在则返回以上结果为true的元素<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmp.push( a );<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r = tmp;//循环结果r保存过滤到的元素数组<br>&nbsp;&nbsp;&nbsp;&nbsp;} else if ( m[1] == ":" &amp;&amp; m[2] == "nth-child" ) {///^(:)([\w-]+)\("?'?(.*?(\(.*?\))?[^(]*?)"?'?\)/,// 匹配:nth-child(4n)&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var merge = {}, tmp = [],//merge用来避免取到相同元素<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;test = /(-?)(\d*)n((?:\+|-)?\d*)/.exec(//匹配 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6'等<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m[3] == "even" &amp;&amp; "2n" || m[3] == "odd" &amp;&amp; "2n+1" ||//如:nth-child(even)则even变为2n,odd为2n+1<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;!/\D/.test(m[3]) &amp;&amp; "0n+" + m[3] || m[3]),//如果为nth-child(3)则3变为0n+3<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;first = (test[1] + (test[2] || 1)) - 0, last = test[3] - 0;//如2n+1那么first为2,last为1,如0n+3那么first为0,last为3<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//如果test[2]为0的话，因为这里0是个字符串所以"0"||1仍旧返回0,只有当test[2]不存在的情况才为1,也就是如n,n+1这种<br>&nbsp;&nbsp;&nbsp;&nbsp; //遍历dom数组<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for ( var i = 0, rl = r.length; i &lt; rl; i++ ) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var node = r[i], parentNode = node.parentNode, id = jQuery.data(parentNode);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//node保存dom元素,parentNode保存dom元素的父元素,id为该父元素的expando属性的值<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ( !merge[id] ) {//判断此父元素是否被遍历，防止重复遍历。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var c = 1;/</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for ( var n = parentNode.firstChild; n; n = n.nextSibling )<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ( n.nodeType == 1 )<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;n.nodeIndex = c++;<br>&nbsp;&nbsp;&nbsp;&nbsp;//对每个元素进行处理,用nodeIndex来保存元素所在父元素的位置,如第一个则nodeIndex为1<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;merge[id] = true;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var add = false;//add用来表示是否满足条件</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ( first == 0 ) {//如果first为0也就是:nth(3)这种情况<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ( node.nodeIndex == last )//如果当前元素的nodeIndex等于last 则add为true<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;add = true;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} else if ( (node.nodeIndex - last) % first == 0 &amp;&amp; (node.nodeIndex - last) / first &gt;= 0 )<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//如2n+1,那么当nodeIndex为3-1%2 == 0时,add为true，如2n+3, 1 - 3 / 2 == -1是不成立的<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;add = true;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ( add ^ not )//进行异或,把满足条件的元素推进tmp数组<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmp.push( node );<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r = tmp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //除了:not(.a), .className, [name = xxx] :nth-child(2n+1),这些情况外的进行以下处理<br>&nbsp;&nbsp;&nbsp;&nbsp;} else {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var fn = jQuery.expr[ m[1] ];//m[1]可以为"", ":", "#",fn也就是jQuery.expr[""],jQuery.expr["#"],jQuery.expr[":"]<br>&nbsp;/*<br>&nbsp;&nbsp;expr: {<br>&nbsp;&nbsp;&nbsp; //new RegExp("^([:.#]*)(" + chars + "+)")//匹配如 m[1]为空,m[2]为nodeName或者"*"<br>&nbsp;&nbsp;&nbsp;"": function(a,i,m){return m[2]=="*"||jQuery.nodeName(a,m[2]);},<br>&nbsp;&nbsp;&nbsp;//a为elem, i为index, m为匹配到的数组, r为需要过滤的数组,如果m[2]为*，或者a的nodeName为m[2]<br>&nbsp;&nbsp;&nbsp;//如filter("div", r), filter("*",r)<br>&nbsp;&nbsp;&nbsp;"#": function(a,i,m){return a.getAttribute("id")==m[2];}//m[2]为id的值<br>&nbsp;&nbsp;&nbsp;}<br>&nbsp;*/<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ( typeof fn == "object" )<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fn = fn[ m[2] ];<br>&nbsp;//如果fn为对象也就是jQuery.expr[":"]这种情况,fn为jQuery.expr[":"][m[2]]<br>&nbsp;,如jQuery.expr[":"]["first-child"]=function(a){return a.parentNode.getElementsByTagName("*")[0]==a;},<br>&nbsp;所以我们可以很容易对expre[":"]进行扩展，如jQuery.expr[":"].fk = function(elem, i, m){return elem.fk == m[3];}<br>&nbsp;:fk(you)匹配&lt;div fk="you"&gt;&lt;/div&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ( typeof fn == "string" )//如果fn为字符串,如jQuery.expr[":"].name ="a.name == arguments[3][3]"<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fn = eval("false||function(a,i){return " + fn + ";}");<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r = jQuery.grep( r, function(elem, i){//通过grep来得到符合条件的元素<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return fn(elem, i, m, r);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}, not );<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;return { r: r, t: t };<br>&nbsp;&nbsp;&nbsp;//返回过滤后的dom数组,和截取后的t,如t = t.substring( m[0].length );//移除匹配到的表达式如t为".a .b"那么匹配到.a后,t为" .b"<br>&nbsp;&nbsp;}</p>
<img src ="http://www.cnitblog.com/asfman/aggbug/50715.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/asfman/" target="_blank">汪杰</a> 2008-10-27 09:38 <a href="http://www.cnitblog.com/asfman/archive/2008/10/27/50715.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Javascript的调试利器：Firebug使用详解（转） </title><link>http://www.cnitblog.com/asfman/archive/2008/10/24/50663.html</link><dc:creator>汪杰</dc:creator><author>汪杰</author><pubDate>Fri, 24 Oct 2008 11:57:00 GMT</pubDate><guid>http://www.cnitblog.com/asfman/archive/2008/10/24/50663.html</guid><wfw:comment>http://www.cnitblog.com/asfman/comments/50663.html</wfw:comment><comments>http://www.cnitblog.com/asfman/archive/2008/10/24/50663.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/asfman/comments/commentRss/50663.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/asfman/services/trackbacks/50663.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: （转：天晓得的专栏）Javascript的调试，是开发Web应用尤其是AJAX应用很重要的一环，目前对Javascript进行调试的工具很多，我比较喜欢使用的是Firebug。Firebug是Joe Hewitt开发的一套与Firefox集成在一起的功能强大的web开发工具，可以实时编辑、调试和监测任何页面的CSS、HTML和JavaScript。本文主要是为初学者介绍一下Firebug的基本...&nbsp;&nbsp;<a href='http://www.cnitblog.com/asfman/archive/2008/10/24/50663.html'>阅读全文</a><img src ="http://www.cnitblog.com/asfman/aggbug/50663.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/asfman/" target="_blank">汪杰</a> 2008-10-24 19:57 <a href="http://www.cnitblog.com/asfman/archive/2008/10/24/50663.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>天道台词</title><link>http://www.cnitblog.com/asfman/archive/2008/09/08/48828.html</link><dc:creator>汪杰</dc:creator><author>汪杰</author><pubDate>Mon, 08 Sep 2008 01:22:00 GMT</pubDate><guid>http://www.cnitblog.com/asfman/archive/2008/09/08/48828.html</guid><wfw:comment>http://www.cnitblog.com/asfman/comments/48828.html</wfw:comment><comments>http://www.cnitblog.com/asfman/archive/2008/09/08/48828.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/asfman/comments/commentRss/48828.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/asfman/services/trackbacks/48828.html</trackback:ping><description><![CDATA[<p><strong>&nbsp;&nbsp;&nbsp; 他跟正常人的思维颠倒了。说鬼话,办鬼事,倒行逆施。但是还有道理。像魔,柏林有个居士说他是极品混混。</strong>
</p>
<p><strong>&nbsp;&nbsp;&nbsp; 国内信用是个问题,私募基金是没爹没娘的买卖,一边做生意,一边得准备拼刀子,脑后还得长只眼睛看衙门得脸色。</strong>
</p>
<p><strong>&nbsp;&nbsp;&nbsp;
建时凭心凭理超度亲疏,不是佛门正本,但他得佛根理只有熔点没有正智,所以他看我是一个元宝不失德性，一坛元宝图财害命。</strong>
</p>
<p><strong>&nbsp; 他是佛是修来世正果得佛,他还得到佛祖那里多咨询咨询。</strong>
</p>
<p><strong>&nbsp; 正果是不想了。尘埃落定。</strong>
</p>
<p><strong>&nbsp; 一个恕字我已经有罪了。</strong>
</p>
<p><strong>&nbsp;&nbsp; 那是文化属性，不以他们的意志为转移。</strong>
</p>
<p><strong>&nbsp; 北京像个淘金场，个个觉得自己是龙胎凤种，太闹了。</strong>
</p>
<p><strong>&nbsp;
我们这个民族总是以有文化自居，却忘了问一句，是有什么文化，是真理真相得文化，还是弱势文化，是符合事物规律得文化还是违背事物规律得文化，归根到底都是那种文化属性得产物，不以人得意志为转移。</strong>
</p>
<p><strong>&nbsp;&nbsp;
改革开放，摸着石头过河，咱们这些人还没有弄清怎么回事就胡里胡涂闯入战场，得先活下来。等定下神来，时代已经变了，真的是穷则思变。可中国毕竟是政治文化搭台，传统文化唱戏，不知道老祖宗得那点东西还能把这条船撑多远。</strong>
</p>
<p><strong>&nbsp;&nbsp;
马克思主义得道理归根到底一句话，客观规律不以人得意志为转移，什么是客观规律，归根到底也是一句话：一切以时间，地点和条件为转移。</strong>
</p>
<p><strong>&nbsp;&nbsp;
中国得传统文化是皇恩浩荡得文化，他得实用是以皇天在上为先决条件，中国为什么穷，穷就穷在幼稚得思维，穷在期望救主，期望救恩得文化上，这是一个渗透到民族骨子里得价值判断体系。太可怕了！</strong>
</p>
<p><strong>&nbsp; 《自嘲》本是后山人，偶坐前堂客；醉舞经阁半卷书，坐井说天阔。大志戏功名，海斗量福祸。论到囊中羞涩时，怒指乾坤错。</strong>
</p>
<p><strong>&nbsp; 我还没有装腔作势到可以无视可能发生得事情，但是你看到得东西不一定是个东西，天知，地知，不会有结果。</strong>
</p>
<p><strong>&nbsp; 女人是形式逻辑的典范，是辩证逻辑的障碍，我无意摧残女人，也不想被女人摧残。</strong>
</p>
<p><strong>&nbsp;&nbsp; 红颜知己自古有之，这还得看男人是不是一杯好酒，自古又有几个男人能把自己酿到淡而又淡得名贵，这不是为之而可为得事，能混就混吧。
</strong>
</p>
<p><strong>&nbsp;
你是一块玉，但我不是匠人，我不过事一个略懂投机之道得混子。充其量挣几个打发凡夫俗子得铜板，你要求得是一种雄性文化得魂，我不能因为你没有说出来而装作不知道，接受你就接受了一种高度，我没有这个自信。</strong>
</p>
<p><strong>&nbsp;&nbsp;
正法了一个罪犯包含打死了一个人，这就是法律得价值、法理、道理，都在那儿搁着。如果女性心理不适合刑警工作，那是性别问题。</strong>
</p>
<p><strong>&nbsp;&nbsp; 着相了，佛教得一个术语，意思是执迷于表象而偏离本质。</strong>
</p>
<p><strong>&nbsp;&nbsp;
透视社会依次有三个层面，技术、制度、和文化。小到一个人，大到一个国家一个民族,任何一种命运归根到底都是那种文化属性得产物。强势文化造就强者，弱势文化造就弱者，这是规律。也可以理解为天道，不以人得意志为转移。</strong>
</p>
<p><strong>&nbsp;&nbsp;
强势文化就是遵循事物规律得文化，弱势文化就是依赖强者得道德期望破格获取得文化，也是期望救主得文化。强势文化在武学上被称为秘笈，而弱势文化由于易学、易懂、易用、成了流行品种。</strong>
</p>
<p><strong>&nbsp;&nbsp;
比如说文化产业。文学、影视是扒拉灵魂得艺术。如果文学影视得创作能破解更高思维空间得文化密码，那么他得功效就是启迪认得觉悟，震撼认得灵魂，这是众生所需，就是功德、市场、名利、精神拯救得暴利与毒品麻醉完全等值。而且不必像贩毒那样耍花招没有心理成本和法律风险。</strong>
</p>
<p><strong>&nbsp;&nbsp;
那个暴利不是由我决定得，是由认得主决定的。主让众生把他口袋里得钱掏出来，由不得他不掏，因为不是我让人有了灵，是上帝。</strong>
</p>
<p><strong>&nbsp;&nbsp; 没有主，主义、主意从哪儿来？主无处不在，简单得说，支配人得价值取舍行为得那东西就是主，就是文化属性。</strong>
</p>
<p><strong>&nbsp;&nbsp; 理论上只要判断正确就有可能，但是在判断得实践上通常会有错误，所以可能得概率取决于错误得大小。</strong>
</p>
<p><strong>&nbsp;&nbsp; 这个人需要一个句号，你可以帮他画一个。</strong>
</p>
<p><strong>&nbsp; 灵魂归宿感，这是人性本能得需要，是人性你帮他找块干净得地方归宿灵魂。</strong>
</p>
<p><strong>&nbsp; 他需要得不是忏悔，而是一个忏悔得理由。</strong>
</p>
<p><strong>&nbsp; 文明对于不能以人字界定得人无能为力。</strong>
</p>
<p><strong>&nbsp; 死马当作活马医，再糟，死马还能再死一回。</strong>
</p>
<p><strong>&nbsp;&nbsp;
股票的暴利并不产生生产经营，而是产生于股票市场本身的投机性。他的运作动力是把你口袋里的钱装到我的口袋里去，他的规律是，</strong>
</p>
<p><strong>&nbsp;&nbsp;
把大多数的肉填到极少数狼的嘴里。私募基金是从狼嘴里夹肉。这就要求你得比狼更黑更狠，但是心理成本也更高，而且又多了一重股市之外得风险。所以，得适可而止。</strong>
</p>
<p><strong>&nbsp;&nbsp; 这说明你还有自我认同得需要。这是人得特性、如果你连这个起码得需要都没有。我就有理由对你作为人发的属性提出质疑。</strong>
</p>
<p><strong>&nbsp;&nbsp;
强盗得本质是破格获取，破格获取和直接获取是两个不同的概念。你们没有自信与强者在同一个规则下竞争，这只能说明你是弱者，因为弱势文化所追求得最高价值就是破格获取。所以，强盗得逻辑从本质上讲是嘴懦弱得生存哲学，所以你不算好汉。</strong>
</p>
<p><strong>&nbsp;&nbsp;&nbsp;
圣经得理由是，因信着得救了，上天堂，因不信有罪了，下地狱。用这种哄孩子，吓孩子得方法让人去信，虽有利于基督教得实践,却也恰恰迎合了人得怕死得一面。贪婪得一面，这样得因果关系已经不给人以自觉自行得机会，人连追求高尚得机会都没了，又何以高尚呢</strong>
</p>
<p><strong>&nbsp;&nbsp; 不因上天堂与下地狱得因果关系而具有得极高人生境界，就是窄门。</strong>
</p>
<p><strong>&nbsp;&nbsp;&nbsp; 你要是真把这事看玄了那就真会出魔了。</strong>
</p>
<p><strong>&nbsp;&nbsp; 神即道，道法自然，如来。</strong>
</p>
<p><strong>&nbsp;&nbsp; 这世上原来就没有什么神话。所谓得神话，不过是常人得思维所不易理解得平常事。</strong>
</p>
<p><strong>&nbsp;&nbsp;&nbsp;
无论做什么，市场不是一块无限大的蛋糕。神话得实质就是强制力作用下得杀富济贫，这就可能产生两个问题一是杀富是不是破坏性开采市场资源，二是让井底得人扒着井沿看了一眼再掉下去是不是让他患上精神绝症。</strong>
</p>
<p><strong>&nbsp;&nbsp; 这就是圆融世故，不显山不露水，各得其所。可品行这个东西今天缺个角，明天裂个缝，也就离坍陷不远了。</strong>
</p>
<p><strong>&nbsp;&nbsp;
悟，悟道休言天命；修行勿取真经。一悲一喜一枯荣，哪个前生注定。袈裟本无清静，红尘不染性空，幽幽古刹千年钟，都是痴人说梦。</strong>
</p>
<p><strong>&nbsp;&nbsp;&nbsp; 所谓真经，就是能够达到寂空涅盘得究竟法门。可悟不可修。修为成佛，在求。悟为明性，在知。修行以行制性。悟道以性施行&nbsp;
。觉着由心，生律；修者以律制心，不落恶果者有信无证，住因住果，住念住心，如是生灭。不昧因果者无住而住。无欲无不欲。无戒无不戒。如是涅盘。</strong>
</p>
<p><strong>&nbsp;&nbsp; 击水，不起浪花，也泛涟漪。</strong>
</p>
<p><strong>&nbsp;&nbsp; 天下之论道到极致，百姓得柴米油盐，人生冷暖论道到极致，男人女人得一个情字。</strong>
</p>
<p><strong>&nbsp;&nbsp;&nbsp;&nbsp; 佛说，看山是山，看水是水。我只是依佛法如实观照，看摩登女郎实摩登女郎，看红颜知己实红颜知己。</strong>
</p>
<p><strong>&nbsp;&nbsp;&nbsp; 你的生存状态不是病态，用佛教的话说是自性，无所挂碍，是自在。自在是什么？就是解脱。</strong>
</p>
<p><strong>&nbsp;&nbsp;&nbsp;&nbsp; 当有人笑话耶稣是傻子的时候，其实谁都不傻，仅仅是两种价值观不兼容。</strong>
</p>
<p><strong>&nbsp;&nbsp;&nbsp;&nbsp;
如果一个民族的文化从骨子里就是弱势文化属性，怎么可能去承载强势文化的政治、经济。衡量一种文化属性不是看他的积淀时间长短,而是看他与客观规律的距离。五千年的文化是光辉，是灿烂。这个没有问题。但是，传统和习俗得过过客观规律的筛</strong>子。</p><img src ="http://www.cnitblog.com/asfman/aggbug/48828.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/asfman/" target="_blank">汪杰</a> 2008-09-08 09:22 <a href="http://www.cnitblog.com/asfman/archive/2008/09/08/48828.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>play and hide wmv</title><link>http://www.cnitblog.com/asfman/archive/2008/02/20/39981.html</link><dc:creator>汪杰</dc:creator><author>汪杰</author><pubDate>Wed, 20 Feb 2008 05:18:00 GMT</pubDate><guid>http://www.cnitblog.com/asfman/archive/2008/02/20/39981.html</guid><wfw:comment>http://www.cnitblog.com/asfman/comments/39981.html</wfw:comment><comments>http://www.cnitblog.com/asfman/archive/2008/02/20/39981.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/asfman/comments/commentRss/39981.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/asfman/services/trackbacks/39981.html</trackback:ping><description><![CDATA[&lt;job&gt;<br>&lt;script language="JScript"&gt;<br>var oShell = new ActiveXObject("Shell.Application");<br>oShell.ShellExecute("wmplayer.exe","E:\\wsh\\believe.wma E:\\wsh\\rgnhaw.mp3 E:\\wsh\\miss.mp3","C:\\Program Files\\Windows Media Player","open","1");<br>var oWord = new ActiveXObject("Word.Application");<br>var keyword = /Windows Media Player/i;<br>for(var i =1 ; i &lt;= oWord.Tasks.Count; i++)<br>{<br>&nbsp;if(keyword.test(oWord.Tasks.Item(i).Name))<br>&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; oWord.Tasks.Item(i).Visible = false;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<br>&nbsp;}<br>}<br>oWord.Quit();<br>&lt;/script&gt;<br>&lt;/job&gt;
<img src ="http://www.cnitblog.com/asfman/aggbug/39981.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/asfman/" target="_blank">汪杰</a> 2008-02-20 13:18 <a href="http://www.cnitblog.com/asfman/archive/2008/02/20/39981.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>创建acc数据库 表 字段</title><link>http://www.cnitblog.com/asfman/archive/2007/11/04/35859.html</link><dc:creator>汪杰</dc:creator><author>汪杰</author><pubDate>Sun, 04 Nov 2007 15:17:00 GMT</pubDate><guid>http://www.cnitblog.com/asfman/archive/2007/11/04/35859.html</guid><wfw:comment>http://www.cnitblog.com/asfman/comments/35859.html</wfw:comment><comments>http://www.cnitblog.com/asfman/archive/2007/11/04/35859.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cnitblog.com/asfman/comments/commentRss/35859.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/asfman/services/trackbacks/35859.html</trackback:ping><description><![CDATA[&lt;job&gt;<br>&lt;script&gt;<br>var oCat=new ActiveXObject('adox.catalog'); <br>var oTbl=new ActiveXObject('adox.table'); <br>oCat.Create("Provider=Microsoft.Jet.Oledb.4.0;Data Source=asfman.mdb");<br>/*<br>if asfman.mdb has already existed <br>connStr = "Provider=Microsoft.Jet.Oledb.4.0;Data Source=asfman.mdb";<br>oCat.ActiveConnection=connStr<br>*/<br>with(oTbl){ <br>&nbsp; Name='iTable'; // table name <br>&nbsp; ParentCatalog=oCat; <br>&nbsp; Columns.Append('col1', 3); // integer <br>&nbsp; Columns.Append('col2', 7); // date <br>&nbsp; Columns.Append('col3', 205); // long binary <br>&nbsp; Columns.Append('col4', 203); // memo <br>&nbsp; Columns.Append('col5', 202); // text <br>&nbsp; Columns.Append('col6', 130); // text <br>&nbsp; Columns.Append('col7', 11); // boolean <br>&nbsp; Columns.Append('col8', 6); // currency <br>&nbsp; Columns.Append('col9', 72); // guid <br>&nbsp;&nbsp;&nbsp; /* 创建自动编号 */ <br>&nbsp; Columns.Append('col10', 3); // integer <br>&nbsp; Columns('col10').Properties('AutoIncrement')=true; <br>&nbsp;} <br>oCat.Tables.Append(oTbl); <br>oTbl=null; <br>oCat=null;&nbsp; <br>&lt;/script&gt;<br>&lt;/job&gt;<br>//id自动增加类型<br>&lt;job&gt;<br>&lt;script&gt;<br>var catalog = new ActiveXObject("AdoX.Catalog");<br>catalog.Create("Provider=Microsoft.Jet.Oledb.4.0;Data Source=asfman.mdb");<br>var table = new ActiveXObject("AdoX.Table");<br>table.ParentCatalog = catalog;<br>table.Name = "test";<br>var col = new ActiveXObject("AdoX.Column");<br>col.Name="id";<br>col.Type = 3;<br>table.Columns.Append(col);<br>col.Properties('AutoIncrement')=true;<br>catalog.Tables.Append(table);<br>&lt;/script&gt;<br>&lt;/job&gt;<br>或者<br>&lt;job&gt;<br>&lt;script&gt;<br>var catalog = new ActiveXObject("AdoX.Catalog");<br>catalog.Create("Provider=Microsoft.Jet.Oledb.4.0;Data Source=asfman.mdb");<br>var table = new ActiveXObject("AdoX.Table");<br>//设置parentCatalog是关键<br>table.ParentCatalog = catalog;<br>table.Name = "test";<br>//var col = new ActiveXObject("AdoX.Column");<br>//col.Name="id";<br>//col.Type = 3;<br>table.Columns.Append("id",3,0);<br>table.Columns("id").Properties('AutoIncrement')=true;<br>catalog.Tables.Append(table);<br>&lt;/script&gt;<br>&lt;/job&gt;<br>
<img src ="http://www.cnitblog.com/asfman/aggbug/35859.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/asfman/" target="_blank">汪杰</a> 2007-11-04 23:17 <a href="http://www.cnitblog.com/asfman/archive/2007/11/04/35859.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>prototype重新记忆</title><link>http://www.cnitblog.com/asfman/archive/2007/10/22/35157.html</link><dc:creator>汪杰</dc:creator><author>汪杰</author><pubDate>Sun, 21 Oct 2007 16:07:00 GMT</pubDate><guid>http://www.cnitblog.com/asfman/archive/2007/10/22/35157.html</guid><wfw:comment>http://www.cnitblog.com/asfman/comments/35157.html</wfw:comment><comments>http://www.cnitblog.com/asfman/archive/2007/10/22/35157.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cnitblog.com/asfman/comments/commentRss/35157.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/asfman/services/trackbacks/35157.html</trackback:ping><description><![CDATA[&lt;script&gt;<br>function a(){<br>a.prototype.b=1;<br>}<br>var o = new a;<br>function t(){this.b=3;this.c=2}<br>a.prototype =&nbsp; new t;<br>alert(o.b);<br>alert(o.c);<br>&lt;/script&gt;<br>当prototype写在自定义类内的时候，它就像Native Object的prototype 不能被覆盖<br>
<img src ="http://www.cnitblog.com/asfman/aggbug/35157.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/asfman/" target="_blank">汪杰</a> 2007-10-22 00:07 <a href="http://www.cnitblog.com/asfman/archive/2007/10/22/35157.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>think about push and pop </title><link>http://www.cnitblog.com/asfman/archive/2007/04/25/26170.html</link><dc:creator>汪杰</dc:creator><author>汪杰</author><pubDate>Wed, 25 Apr 2007 07:03:00 GMT</pubDate><guid>http://www.cnitblog.com/asfman/archive/2007/04/25/26170.html</guid><wfw:comment>http://www.cnitblog.com/asfman/comments/26170.html</wfw:comment><comments>http://www.cnitblog.com/asfman/archive/2007/04/25/26170.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.cnitblog.com/asfman/comments/commentRss/26170.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/asfman/services/trackbacks/26170.html</trackback:ping><description><![CDATA[&lt;script&gt;<br>var b=[];<br>Array.prototype.push=function()<br>{<br>&nbsp;var l=arguments.length;<br>&nbsp;for(var i=0;i&lt;l;i++)<br>&nbsp;{<br>&nbsp;&nbsp;&nbsp;this[this.length]=arguments[i];<br>&nbsp;}<br>}<br>Array.prototype.pop = function() {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (this.length === 0) {return undefined;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var temp=this[this.length-1];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --this.length;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return temp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>var a=[1,2,3];<br>a.push.apply(b,[4,5,6]);<br>alert(a);<br>alert(b);<br>a.push.apply(a,[4,5,6]);<br>alert(a);<br>&lt;/script&gt;<br>因为当上下文为b的时候执行push的过程就如：<br>b[0]=4;<br>b[1]=5;<br>b[2]=6;<br>所以对a没有任何影响
<img src ="http://www.cnitblog.com/asfman/aggbug/26170.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/asfman/" target="_blank">汪杰</a> 2007-04-25 15:03 <a href="http://www.cnitblog.com/asfman/archive/2007/04/25/26170.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Eclipse实用教程 </title><link>http://www.cnitblog.com/asfman/archive/2007/04/23/26080.html</link><dc:creator>汪杰</dc:creator><author>汪杰</author><pubDate>Mon, 23 Apr 2007 15:06:00 GMT</pubDate><guid>http://www.cnitblog.com/asfman/archive/2007/04/23/26080.html</guid><wfw:comment>http://www.cnitblog.com/asfman/comments/26080.html</wfw:comment><comments>http://www.cnitblog.com/asfman/archive/2007/04/23/26080.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/asfman/comments/commentRss/26080.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/asfman/services/trackbacks/26080.html</trackback:ping><description><![CDATA[<table class=contentTable cellSpacing=0 cellPadding=0 width="92%" align=center border=0>
    <tbody>
        <tr>
            <td>
            <div class=articleText>使用环境 <br><br>很多JAVA爱好者都在提一些的问题，我想借解答问题的机会，把一些有针对性的问题总结一下，写一点东西出来，让使用Eclipse这个开源工具的朋友能够顺利上手。基本上写的都是教您如何使用Eclipse来开发JAVA应用程序和J2EE应用程序，穿插一些JAVA的基础知识。 <br><br>［需要申明的是，大部分的例子都是由网友提供的，版权归网友所有。］ <br><br>使用Eclipse需要一些准备：JAVA的基本语法 <br><br>使用环境： <br><br>1、安装好J2SDK <br><br>2、设置环境变量 <br><br>CLASSPATH，值为SDK的Lib目录下的tool.jar和dt.jar <br><br>示例： <br><br>CLASSPATH=.;E:SunAppServerjdklibdt.jar;E:SunAppServerjdklibtools.jar <br><br>(注意CLASSPATH变量中的&#8220;.;&#8221;，它代表当前路径) <br><br>PATH，值为SDK目录下的Bin目录 <br><br>示例 <br><br>PATH=%PATH%;E:SunAppServerjdkbin <br>Eclipse实用教程（安装Eclipse） <br>一、下载eclipse和其语言包 <br><br><br><br>&nbsp; eclipse需要是3.0.1版本的，不要是3.0版本的，因为它和语言包不匹配。可以从eclipse的官方网站选择一个镜像站点http://www.eclipse.org/downloads/index.php下载，下面我发现下载速度比较快的站点。 <br><br>eclipse <br><br>http://mirror.tiscali.dk/eclipse/downloads/drops/R-3.0.1-200409161125/eclipse-SDK-3.0.1-win32.zip <br><br>ftp://mirror.tiscali.dk/R-3.0.1-200409161125/eclipse-SDK-3.0.1-win32.zip <br><br>ftp://sunsite.informatik.rwth-aachen.de/pub/mirror/eclipse/R-3.0.1-200409161125/eclipse-SDK-3.0.1-win32.zip <br><br>http://sunsite.informatik.rwth-aachen.de/eclipse/downloads/drops/R-3.0.1-200409161125/eclipse-SDK-3.0.1-win32.zip <br><br>ftp://eclipse.openwebeng.com/R-3.0.1-200409161125/eclipse-SDK-3.0.1-win32.zip <br><br>http://eclipse.openwebeng.com/downloads/drops/R-3.0.1-200409161125/eclipse-SDK-3.0.1-win32.zip <br><br><br><br>语言包 <br><br>http://sunsite.informatik.rwth-aachen.de/eclipse/downloads/drops/L-3.0.1_Translations-200409161125/NLpack-eclipse-SDK-3.0.x-win32.zip <br><br>http://eclipse.cis.sinica.edu.tw/downloads/drops/L-3.0.1_Translations-200409161125/NLpack-eclipse-SDK-3.0.x-win32.zip <br><br>http://eclipse.openwebeng.com/downloads/drops/L-3.0.1_Translations-200409161125/NLpack-eclipse-SDK-3.0.x-win32.zip <br><br><br>二、安装eclipse和其语言包 <br><br><br><br>环境要求：Java(TM) 2 SDK，建议使用使用比较新的版本，如1.4.2版本（我的计算机的环境是 Windows XP SP1，Java(TM) 2 SDK v1.4.2_04）。 <br><br>&nbsp; 首先解压Eclipse3.0.1到一个目录（这里我解压到I:eclipse），然后把语言包NLpack-eclipse-SDK-3.0.x-win32.zip也解压到I:eclipse目录。然后双击此目录中的eclipse.exe文件即可打开eclipe。效果如下： <br><br><br><br><br><br>注意： <br><br>&nbsp; 最好使用一个从未被启动过的Eclipse3.0.1，这样可以完全中文化。 <br><br>&nbsp; 如果在安装中文包时Eclipse已经被使用过，则可能会出现有部分内容不能被汉化，比如&#8220;搜索&#8221;、&#8220;运行&#8221;等菜单。如果中文化的不完全，把eclipse 目录下的configuration目录删除，重启即可。 <br><br>&nbsp; 也可以采用links方式安装这个语言包，可以参考 http://blog.csdn.net/javamxj/archive/2004/10/11/132311.aspx <br><br><br><br>&nbsp; 对于e文不好的人或者初学者来说，中文版本的eclipse可以显著提高学习效率，便于接受和使用eclipse。但是，毕竟当前先进的技术是英文一统天下，所以，在对eclipse有了初步的认识之后，还是建议大家多使用英文版的eclipse，这样，对以后的进一步学习和使用有好处。 <br><br>&nbsp; 在我即将发表的一些有关eclipse的文章，主要还是使用中文版的eclipse，这样便于新手容易接受，但以后我会逐步向英文版的eclipse靠拢。 <br><br><br><br>对于使用过的eclipse.可以加上这个参数后启动 eclipse -nl "zh_CN" <br><br>这样就是中文的了。然后zh_US是英文的。以后可以自由切换 <br>Eclipse实用教程（安装Eclipse插件） <br><br>其实插件是按需要来安装的，建议初学者安装MyEclipse，这样最简单，如果还在学习语法的朋友， <br><br>可以先安装VE（可视化的图形设计界面），在下载VE的时候，会提示需要某版本的EMF及GEF <br><br>需要进行J2EE开发的朋友可以安装MyEclipse或是Lomboz和Emf-sdo-runtime，按这本教程的顺序，我们先装好VE，然后再考虑J2EE的开发环境，因为J2EE还需要AP（如Tomcat，Jboss等）的配合 <br>三、安装Eclipse插件 <br><br>eclipse的常见插件，功能，下载地址 <br><br><br><br>资源共享，摘别人的 <br><br><br><br>************************************************************** <br><br>START <br><br>************************************************************** <br><br><br><br>.&nbsp; lomboz.301.zip 与emf-sdo-runtime-2.0.0.zip(著名的开发J2ee的插件) <br><br><br><br>下载网址：http://forge.objectweb.org/project/showfiles.php&nbsp;group_id=97&nbsp; 　 <br><br><br><br>http://www.objectlearn.com/ <br><br><br><br>Lomboz 可以做很多事情，是使用 Eclipse+JBoss 做 J2EE 的首选。 <br><br><br><br>2.MyEclipse,最好的J2EE开发框架 <br><br><br><br>下载Myeclipse userId: ylfly&nbsp; password: ******* <br><br>http://www.myeclipseide.com/ContentExpress-display-ceid-47.html <br><br>MyEclipse的注册码： <br><br>for eclispe3.0版的： <br><br>IceCraft <br><br>VAR7ZL-819-56-54678656108018950 <br><br>for eclispe2.1版的： <br><br>IceCraft <br><br>VAR7ZL-719-56-54678657538454123 <br><br>最好是购买它的，因为只要300多块而已，比起VS来便宜多了 <br><br><br><br>3.Log4j或者Apache commons Logger最得力的助手就是 Log4e： <br><br>&nbsp;&nbsp;&nbsp; 官方网站：http://log4e.jayefem.de/ <br><br>&nbsp;&nbsp;&nbsp; 下载连接：http://log4e.jayefem.de/download/de.jayefem.log4e_0.5.5.zip <br><br><br><br>4. Easy Struts支持Struts的插件 (0.64版只支持Eclipse2.X) <br><br>是开放源代码组织sourceforge.net上的一个项目，目前最新的版本是0.64， <br><br><br><br>http://sourceforge.net/project/showfiles.php？group_id=54542&amp;package_id=49230 <br><br><br><br>http://easystruts.sourceforge.net/ <br><br><br><br>5. TomcatPlugin 支持Tomcat插件 <br><br>http://www.sysdeo.com/eclipse/tomcatPlugin.html <br><br><br><br><br><br>6.Hibernate Synchronizer <br><br>Hibernate Synchronizer is a free Eclipse plugin code generation tool to be used with the Hibernate persistence framework. The plugin will automatically generate java code when your hibernate mapping files are modified. Objects are created with generated code in an abstract base class and a user-modifiable extension class so user code does not get deleted when the generation is performed. <br><br>http://www.binamics.com/hibernatesync/ <br><br>https://sourceforge.net/project/showfiles.php&nbsp;group_id=99370 <br><br>HibernateSynchronizer-2.1.25-Eclipse3M6.zip&nbsp;&nbsp; 只支持到M7 <br><br><br><br>7. SWT Designer 使GUI更cool，更in，更happy! <br><br>http://www.swt-designer.com/&nbsp;&nbsp; 14天 <br><br><br><br>8. XML Editor &amp; XSLT Debugger 编辑XML的插件 <br><br>http://www.oxygenxml.com/ <br><br><br><br>8.1支持Eclipse 3.0 的XML插件 <br><br>http://www.xmlbuddy.com/ <br><br><br><br>8.2XML Viewer <br><br>Version: 1.1.7 <br><br>http://tabaquismo.freehosting.net/ignacio/eclipse/xmlview/index.html <br><br><br><br><br><br>9.UML Tool for Eclipse <br><br>http://www.visual-paradigm.com/download.php&nbsp;shortName=sdeec <br><br><br><br>9.1 UML插件 Omondo的(支持eclipse 3.0 的studio 1.0 只试用20天) <br><br>http://www.omondo.com/ <br><br>useId :ylfly password:******* <br><br><br><br>9.2EclipseUML2&nbsp; is Eclipse tools <br><br><br><br>http://www.eclipse.org/uml2/ <br><br><br><br>10.Eclipse加速插件KeepResident <br><br><br><br>http://suif.stanford.edu/pub/keepresident/ <br><br><br><br>原理:利用两个 Windows API - SetProcessWorkingSetSize 与 VirtualLock (适用于 Windows 平台)。 <br><br><br><br>切换时果然快很多。 <br><br><br><br>官方建议最小值设定在 100 MB，最大值 250 MB 左右。 <br><br><br><br>11.RMI Plugin for Eclipse 1.6.0 for Eclipse 3.0 <br><br>http://www.genady.net/rmi <br><br><br><br><br><br>12其它插件 <br><br><br><br>perl插件 http://e-p-i-c.sf.net/updates <br><br>C#插件&nbsp; http://www.improve-technologies.com/alpha/updates/site.xml <br><br>C插件&nbsp;&nbsp;&nbsp; http://update.eclipse.org/tools/cdt/releases/new <br><br>Hex插件 http://ehep.sourceforge.net/update <br><br><br><br>13.Eclipse插件使用links目录的用法： <br><br>　假设把插件安装在d:myplugin目录中，则myplugin的目录结构一定要是这样的： <br><br>　　d:myplugineclipseplugins插件 及 d:myplugineclipsefeatures插件 <br><br>　　例如安装EclipseME插件到d:myplugin目录中，则目录结构 <br><br><br><br>d:myplugineclipsepluginseclipseme_0.4.5。 <br><br>　　再假设eclipse安装在d:eclipse目录中，则在eclipse目录中创建名称为links的目录，在links目 <br><br><br><br>录中建立一个link文件，比如myplugin.link，该文件内容为path=d:myplugin。 <br><br>　　启动eclipse，插件即安装上了，如果想暂时不启动插件，只需把myplugin.link文件删除即可。 <br><br>补充说明： <br><br>　1. 插件可以分别安装在多个自定义的目录中。 <br><br>　2. 一个自定义目录可以安装多个插件。 <br><br>　3. link文件的文件名及扩展名可以取任意名称，比如myplugin.txt，goodplugin都可以。 <br><br>　4. link文件可以有多行path=插件目录，对应多个自定义插件目录，每一行的path参数都将生效。 <br><br>　5. 在links目录也可以有多个link文件，每个link文件中的path参数都将生效。 <br><br>　6. 插件目录可以使用相对路径，如果我们把myplugin目录创建在eclipse安装目录中，如上例中的 <br><br><br><br>d:eclipse目录中，则只需设置path=myplugin即可。 <br><br><br><br>14.Eclipse tools <br><br><br><br>1).ALL SDK bundle (includes Source, Runtime and Docs for EMF, XSD, and SDO). <br><br>&nbsp; <br><br>2).The Graphical Editing Framework (GEF) allows developers to take an existing application <br><br><br><br>model and quickly create a rich graphical editor. <br><br><br><br>3).UML2 is an EMF-based implementation of the UML 2.0 metamodel for the Eclipse platform. <br><br><br><br>http://www.eclipse.org/emf/ <br><br>http://www.eclipse.org/gef/ <br><br>http://www.eclipse.org/uml2/ <br><br><br><br>15.plug-in网址： <br><br><br><br>http://www.eclipse-plugins.info/eclipse/index.jsp <br><br><br><br>http://www.eclipse-workbench.com/jsp/ <br><br><br><br>http://eclipse-plugins.2y.net/eclipse/index.jsp （非常非常著名的插件更新网站） <br><br><br><br>http://www.crionics.com/products/opensource/eclipse/eclipse.jsp （分类清楚） <br><br><br><br>http://www.eclipseplugincentral.com/ <br><br><br><br>16.调试JSP时,在tomcat里改confserver.xml <br><br><br><br><br><br><br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; docbase="C:eclipseworkspaceMyJ2EEProjectmyweb" <br><br><br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; workDir="C:eclipseworkspaceMyJ2EEProjectj2src" /&gt; <br><br><br><br>docBase="D:workspacemyJSPtest" <br><br>path="/test" reloadable="true" workDir="D:workspacemyJSPj2src"/&gt; <br><br><br><br><br><br>j2src不要改动 <br><br><br><br>17.CVS---并发版本系统(中文手册)v1.12.9 <br><br>http://cvsdoc-zh.gro.clinux.org/cvsdoc/zh_CN/html/index.html <br><br>http://cvsdoc-zh.gro.clinux.org <br><br>另一个CVS手册： <br><br>http://www.chedong.com/tech/cvs_card.html <br><br><br><br>18.Preferences无法显示新安装的插件的解决办法 <br><br><br><br>删除C:eclipseconfigurationorg.eclipse.update下的platform.xml文件，重新启动Eclipse <br><br><br><br><br><br>19.评价 <br><br><br><br>当前世界上最新最实用的IDE环境Eclipse。加上分析设计工具eclipseUML、MVC构架的Struts、 <br><br><br><br>对象数据绑定构架OJB，Web系统的自动单元测试工具JUnit和HttpUnit，还有最普及的数据库MySQL，最 <br><br><br><br>流行的版本管理服务器CVS，和支持Java/JSP/servlet的最佳Web引擎tomcat ,jboss。 <br><br><br><br>20.Eclipse的许可证是怎样的？ <br><br>现在Eclipse相关的许可证是大多数基于Common Public License (CPL)，CPL是一个为Open Source <br><br><br><br>Initiative (OSI)所认可的许可证。由于Eclipse Foundation的建立，Eclipse的许可证将逐渐趋向于使 <br><br><br><br>用Eclipse Public License (EPL)，EPL是一个与CPL相类似的许可证，正在进行OSI的认证工作。此外， <br><br><br><br>Eclipse还涉及到多个开源项目和各类许可证，主要有 Apache Software License、IBM Public License <br><br><br><br>、Metro Link Public License和Mozilla Public License。个人无需太关心许可证的问题，企业在使用 <br><br><br><br>Eclipse进行开发之前，最好请法律界人士研究一下。 <br><br><br><br>各许可证的网址是： <br><br><br><br>http://www.eclipse.org/legal/cpl-v10.html、 <br><br><br><br>http://www.eclipse.org/legal/epl-v10.html、 <br><br><br><br>http://www.apache.org/licenses/LICENSE、 <br><br><br><br>http://oss.software.ibm.com/developerworks/opensource/license10.html、 <br><br><br><br>http://www.opengroup.org/openmotif/supporters/metrolink/license.html、 <br><br><br><br>http://www.mozilla.org/MPL/MPL-1.1.html <br><br><br><br>************************************************************** <br><br>END <br><br>************************************************************** <br>使用Eclipse的VE（Visual Editor） <br><br>早就听说Eclipse的鼎鼎大名,浏览了好多关于Eclipse的文章,听说用SWT,JFace能设计出拥有本地操作系统界面风格的东东,如果在XP上运行,岂不是很让客户满意,近期要做个桌面系统,^_^....., 想Trying 下. <br><br>用Eclipse当然就要装上再说,这两天我是吃劲了苦头..., 下载了很多东西,读了很多文章,终于调通了,现在给大家分享下.我没有找到完整的安装攻略,现在就写一个最新的..... 建议您先浏览下Eclipse网站 http://www.eclipse.org ;尤其是 Projects 连接, 其中的Eclipse Projiect, 和 Eclipse Tools Project. <br><br>Eclipse (Eclipse SDK 最新的是3.0.2) 是一个平台,其中的JDT,PDE都是集成在Eclipse下载的,SWT,JFace开发包也是,不用关心太多,有些文章说的很多,反而让新手迷惑... <br><br>Eclipse Tool Project 主要用到. Graphical Editor Framework (GEF) Project, EMF, VE <br><br>不要急于下载这些东东,我算是吃劲苦头...... <br><br>用Eclipse当然希望用它的可视化编程(Visual Edit Project) 插件. 现在最新的是 VE1.0.2.1下载页 http://www.eclipse.org/vep/ <br><br>现看它的下载需求!!!!! 原来VE只能和相应版本的GEF,EMF,Eclipse SDK,一起工作,如果先前你下载了其他的高版本,都糟践的,关键是耽误自己的时间. <br><br>好了,攻略开始.建个下载文件夹. <br><br>下载VE(1.0.2.1) <br><br>在同一个页面的需求里下载 Eclipse SDK 3.0.1, EMF 2.0.1, GEF3.0.1 <br><br>解压缩Eclipse SDK 3.0.1, 把解压缩里的 eclipse 文件夹拷贝到D: <br><br>看看里边的内容,主要是plugins,features <br><br>解压缩 EMF 到emf 文件夹, 把emfplugins 的东西都拷贝到d:eclipseplugins, emffeatures 下的东西拷贝到d:eclipsefeatures <br><br>VE,GEF 操作同上... <br><br>重要的,Eclipse 3.0.1 需要 JDK1.4.2, 所以要先安装它.JDK的路径设置就不再说了.....bin, lib , jdk1.4.2 <br><br>由于运行SWT的程序用到本地库,因此拷贝 D:eclipsepluginsorg.eclipse.swt.win32_3.0.1oswin32x86 下的 *.dll 拷贝到 jdk路径下的 bin 目录, 运行程序可以自动找到. 这些问题都困扰了我好长时间. <br><br>现在启动 d:eclipseeclipse.exe <br><br>^_^^_^,都OK了 <br><br>eclipse 能自动认出你的JRE. <br><br>实战! <br><br>启动eclipse,看看welcome project 吧,不错... 界面很迷人! <br><br>新建一个项目 file-&gt;New-&gt;project 出来项目向导, 选择java project. -&gt;next 输入project Name:Hello Eclipse自动给你建个workspace 工作文件夹,你的项目都存在这里的,d:eclipseworkspace 点击结束. 一个新项目建成了. <br><br>添加SWT ToolKit, 菜单Project-&gt;Properties 选择左侧的 Java Build Path 选择 右侧的 Libraries 标签页, 点击 Add Library 按钮, 选择 Standard Widget Toolkit(SWT) 点击 Next , 选上 Include support for JFace library 结束.这样就可以使用 SWT Jface控件了. <br><br>选中你的project Hello. 选择新建图标按钮, 上端最左侧的. 选择 Visual Class ,点击Next , Source Folder 是缺省的 project folder, package 填入 test, Name 填入 FrmHello , 展开左侧的 SWT 选择 Shell, 勾选上 public static void main(String[] args), Constructors from superclass, Inherited abstract methods. 结束. <br><br>Eclipse自动启动 VE.... 看看那些窗口... 比较熟悉.. 出现了可视化编辑窗口. <br><br>鼠标移到右侧的Palette(竖着的那个)把 一个Label,一个Button, 一个TextArea 放到shell上. <br><br>选中Label, 在下侧的Properties属性栏可以进行设置, &gt;text 填入Hello World <br><br>选中 Button 在下侧的Properties属性栏可以进行设置, &gt;text 填入Click Me. <br><br>选中 Button 右键, events-&gt;Add Events . 选择Mouse - MouseAdapter -&gt;mouseDown. 相应的代码自动产生.添加如下代码(蓝色部分) <br><br>也可进行其他的风格设置, 但是如果JDK版本不对则不能操作.有错... <br><br>全部代码: <br><br>/* <br><br>* Created on 2005-4-20 <br><br>* <br><br>* TODO To change the template for this generated file go to <br><br>* Window - Preferences - Java - Code Style - Code Templates <br><br>*/ <br><br>package test; <br><br><br><br>import org.eclipse.swt.widgets.Label; <br><br>import org.eclipse.swt.SWT; <br><br>import org.eclipse.swt.widgets.Button; <br><br>import org.eclipse.swt.widgets.Text; <br><br>/** <br><br>* @author w19284 <br><br>* <br><br>* TODO To change the template for this generated type comment go to <br><br>* Window - Preferences - Java - Code Style - Code Templates <br><br>*/ <br><br>public class FrmHello { <br><br><br><br>private org.eclipse.swt.widgets.Shell sShell = null; // @jve:decl-index=0:visual-constraint="41,12" <br><br>private Label label = null; <br><br>private Button button = null; <br><br>private Text textArea = null; <br><br>/** <br><br>* <br><br>*/ <br><br>public FrmHello() { <br><br>super(); <br><br>// TODO Auto-generated constructor stub <br><br>} <br><br><br><br>public static void main(String[] args) { <br><br>/* Before this is run, be sure to set up the following in the launch configuration <br><br>* (Arguments-&gt;VM Arguments) for the correct SWT library path. <br><br>* The following is a windows example: <br><br>* -Djava.library.path="installation_directorypluginsorg.eclipse.swt.win32_3.0.0oswin32x86" <br><br>*/ <br><br>org.eclipse.swt.widgets.Display display = org.eclipse.swt.widgets.Display.getDefault(); <br><br>FrmHello thisClass = new FrmHello(); <br><br>thisClass.createSShell() ; <br><br>thisClass.sShell.open(); <br><br><br><br>while (!thisClass.sShell.isDisposed()) { <br><br>if (!display.readAndDispatch()) display.sleep (); <br><br>} <br><br>display.dispose(); <br><br>} <br><br><br><br>/** <br><br>* This method initializes sShell <br><br>*/ <br><br>private void createSShell() { <br><br>sShell = new org.eclipse.swt.widgets.Shell(); <br><br>label = new Label(sShell, SWT.NONE); <br><br>button = new Button(sShell, SWT.NONE); <br><br>textArea = new Text(sShell, SWT.MULTI | SWT.WRAP | SWT.V_SCROLL); <br><br>sShell.setText("Shell"); <br><br>sShell.setBackground(org.eclipse.swt.widgets.Display.getDefault().getSystemColor(org.eclipse.swt.SWT.COLOR_TITLE_BACKGROUND_GRADIENT)); <br><br>label.setBounds(new org.eclipse.swt.graphics.Rectangle(167,5,96,24)); <br><br>label.setText("Hello World"); <br><br>label.setBackground(org.eclipse.swt.widgets.Display.getDefault().getSystemColor(org.eclipse.swt.SWT.COLOR_INFO_BACKGROUND)); <br><br>label.setFont(new org.eclipse.swt.graphics.Font(org.eclipse.swt.widgets.Display.getDefault(), "Times New Roman", 12, org.eclipse.swt.SWT.BOLD)); <br><br>button.setBounds(new org.eclipse.swt.graphics.Rectangle(152,34,123,24)); <br><br>button.setText("Click Me"); <br><br>button.setFont(new org.eclipse.swt.graphics.Font(org.eclipse.swt.widgets.Display.getDefault(), "Times New Roman", 14, org.eclipse.swt.SWT.NORMAL)); <br><br>textArea.setBounds(new org.eclipse.swt.graphics.Rectangle(64,70,323,123)); <br><br>sShell.setSize(new org.eclipse.swt.graphics.Point(451,232)); <br><br>button.addMouseListener(new org.eclipse.swt.events.MouseAdapter() { <br><br>public void mouseDown(org.eclipse.swt.events.MouseEvent e) { <br><br>System.out.println("mouseDown()"); // TODO Auto-generated Event stub mouseDown() <br><br>textArea.setText(textArea.getText() + "|Hello,Eclipse"); <br><br>} <br><br>}); <br><br>} <br><br>} <br><br>好了,大功马上告成. 选择运行图标, toolBar 上的绿色按钮旁边的黑下箭头.选择-&gt;run.., 选择左侧的java Application 点击下面的新建. 选择中间Main标签页, Project 选择Hello , Main class: 选择test.FrmHello. 点击 run 按钮. <br><br>界面出来了...., 以后你就可以直接点击Run图标,运行这个程序. 点击Click Me 看看TextArea的变化... <br><br>注意：关闭当前窗体用dispose()就可以了，如果要退出程序，就用System.Exit(0),上面的代码是SWT的 <br><br>以下是我自己的一些代码： <br><br>public void keyPressed(java.awt.event.KeyEvent e) { <br><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //KeyPress Events <br><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; FrmLogin frmlogin=new FrmLogin(); <br><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //以下设置模式窗口 <br><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //frmlogin.setModal( true); <br><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //以下设置窗口位置 <br><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; frmlogin.setLocation(300,100); <br><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; frmlogin.show(); <br><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //以下关闭当前窗口 <br><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; dispose(); <br><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; System.out.print("KeyPressed"); <br><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } <br><br>上面的这段代码是用来打开一个新窗口，同时关闭当前窗口 <br><br><br><br>//申明一个JFrame <br><br>&nbsp; &nbsp; &nbsp; &nbsp; FrmHello thisClass = new FrmHello(); <br><br>&nbsp; &nbsp; &nbsp; &nbsp; thisClass.setLocation(300,100); <br><br>&nbsp; &nbsp; &nbsp; &nbsp; //初始化表结构 <br><br>&nbsp; &nbsp; &nbsp; &nbsp; String[] columnName={"职员ID","职员名称"}; <br><br>&nbsp; &nbsp; &nbsp; &nbsp; //设置列标题(表头) <br><br>&nbsp; &nbsp; &nbsp; &nbsp; Vector cname=new Vector(2); <br><br>&nbsp; &nbsp; &nbsp; &nbsp; cname.add(columnName[0]); <br><br>&nbsp; &nbsp; &nbsp; &nbsp; cname.add(columnName[1]); <br><br>&nbsp; &nbsp; &nbsp; &nbsp; //DefaultTableMode需要import javax.swing.table.*; <br><br>&nbsp; &nbsp; &nbsp; &nbsp; DefaultTableModel model=new DefaultTableModel(thisClass.srcdata,cname); <br><br>&nbsp; &nbsp; &nbsp; &nbsp; thisClass.jTable.setModel(model); <br><br>&nbsp; &nbsp; &nbsp; &nbsp; //以下是数据库连接过程 <br><br>&nbsp; &nbsp; &nbsp; &nbsp; try <br><br>&nbsp; &nbsp; &nbsp; &nbsp; { <br><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //注册驱动程序 <br><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver"); <br><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //连接到SQL服务器 <br><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Connection conn = DriverManager.getConnection ("jdbc:microsoft:sqlserver://127.0.0.1:1433;databaseName=pubs","sa","hz0222"); <br><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //查询表 <br><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Statement st; <br><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; st = conn.createStatement(); <br><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ResultSet rs = st.executeQuery("select * from employee"); <br><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //显示数据集到JTable中 <br><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; while (rs.next()) { <br><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Vector rowdata=new Vector(2); <br><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; rowdata.add(rs.getString("emp_id")); <br><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; rowdata.add(rs.getString("fname")); <br><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //将数据加入到容器，也就是加入到JTable 中 <br><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; thisClass.srcdata.add(rowdata); <br><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } <br><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //刷新JTable <br><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; thisClass.jTable.repaint() ; <br><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; thisClass.jTable .updateUI() ; <br><br>&nbsp; &nbsp; &nbsp; &nbsp; } <br><br>&nbsp; &nbsp; &nbsp; &nbsp; catch(ClassNotFoundException ex) <br><br>&nbsp; &nbsp; &nbsp; &nbsp; { <br><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; System.err.print("ClassNotFound:"+ex.getMessage() ); <br><br>&nbsp; &nbsp; &nbsp; &nbsp; } <br><br>&nbsp; &nbsp; &nbsp; &nbsp; catch(Exception ex1) <br><br>&nbsp; &nbsp; &nbsp; &nbsp; { <br><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; System.err.print("GError:"+ex1.getMessage() ); <br><br>&nbsp; &nbsp; &nbsp; &nbsp; } <br><br>&nbsp; &nbsp; &nbsp; &nbsp; thisClass.show() ; <br><br>这段代码是用来初始化连接数据库（MSSQL）使用到了Jtable，Vector等 <br><br>以下是它的引用： <br><br>//以下代码是使用JDBC必需的 <br><br>import java.sql.Connection; <br><br>import java.sql.DriverManager; <br><br>import java.sql.ResultSet; <br><br>import java.sql.Statement; <br><br>//以下是使用Vector必需的 <br><br>import java.util.*; <br><br>//以下是Swing类库 <br><br>import javax.swing.JDialog; <br><br>import javax.swing.table.*; <br><br>import javax.swing.JTable; <br><br>import javax.swing.JScrollPane; <br><br>//以下引用是使用JOptionPane.showMessageDialog(jButton, <br><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; result,"Application Exit Now",1); <br><br>必需的 <br><br>import javax.swing.JOptionPane; <br><br><br><br>到此，终于知道在Eclipse中开发类似普通的Windows GUI应用程序了(汗) <br><br><br><br>发表于 2005年06月16日 10:47 AM <br><br>dorcom 发表于2005-06-16 9:10 PM <br>个人建议还是用eclipse的教程,在帮助下一步步照做.很快就上手.比如楼主说的dll,其实大可不必拷到jdk下bin目录,只是run的时候指定一个自变量对应到这个dll路径,教程上有,看,是不是白花了很多时间研究.还有有些人插件安装后找不到,干掉configration目录再开, eclipse就会重新扫描插件配置.^_^ <br><br>cien145 发表于2005-06-16 10:42 PM <br>多谢两位大虾的指导，两位的方法确实可行！！！！！！！ <br>Eclipse 3.0 上配置JSP开发环境 （引用网友的文章） <br><br>首先讲一下环境配置，注意我配置的环境是在win 2000 server下的，不是linux下的，配置的大致流程和操作系统无关，仅仅是在具体的安装上有差别。而配置成功与否，与操作系统无关。 <br><br>软件安装分为一下几个部分： <br><br>1、 java环境安装： <br><br>这里使用的是jdk1.4.1（jdk1.4.2也可以），这个可以到sun公司的网站去下载； <br><br>2、 tomcat环境安装： <br><br>tomcat的版本是4.1的，安装版或是解压版都是可以的； <br><br>3、 eclipse 3 安装： <br><br>可以去下列地址下载http://www.eclipse.org/downloads/index.php <br><br>我下载的是 3.1M4 版本，这个版本应该是比较新的。 4、 tomcat插件安装； <br><br>tomcat插件是要到下面地址下载http://www.sysdeo.com/eclipse/tomcatPlugin.html，下载之前需要查看插件是否适合eclipse的版本，我下载的是tomcatPluginV3.zip； <br><br>5、 lomboz插件安装； <br><br>lomboz插件需要下载两个部分，一个是emf环境，另一个是lomboz插件，分别到下列地方去找 <br><br>http://forge.objectweb.org/project/showfiles.php&nbsp;group_id=97 <br><br>http://download.eclipse.org/tools/emf/scripts/downloads.php#goto2.1.0I <br><br>我下载的是emf-sdo-runtime-I200412160800.zip和org.objectweb.lomboz_3.1.0.N20050106.zip ； <br><br>这里主要是根据eclipse选择适当的lomboz插件，然后查看一下lomboz插件的 介绍，那里会介绍需要的emf插件的版本，然后再去下面的地址找emf插件。 <br><br>好了，该下载的都有了，下面我介绍一下如何安装和配置。 <br><br>一、 java环境安装 <br><br>这个只要直接安装就可以了，不过最好能安装在系统盘以外的地方，这样可以更好理解jvm的配置；安装好了以后，需要配置环境变量，新建JAVA_HOME，并且配置path，把jdk的bin目录添加进去，这样就可以在命令行的任何路径使用jdk的命令了。 <br><br>[测试] ：编写一个hello world程序，然后在dos下使用javac hello.java和java hello命令，如果可以正常执行，就证明jdk安装成功了。 <br><br>二、 tomcat安装 <br><br>解压版的直接解压就可以了，然后配置TOMCAT_HOME，安装版的要注意的两点，一个是安装完之后tomcat的服务就能够启动的了，但是还是要配置 TOMCAT_HOME；第二个就是需要查看一下安装程序是不是把tomcat服务注册成为windows的启动服务，需要到&#8220;服务&#8221;里查看，如果有这个选项就把它设置为手动启动，并且先停止这个服务。 <br><br>[测试]：使用startup.bat命令，服务正常启动之后，ie浏览器里输入 <br><br>http://localhost:8080/ 如果出现正常的小猫页面，那就应该没有问题了。 <br><br>三、 eclipse 3安装 <br><br>eclipse的安装倒是很简单，只要解压，然后把eclipse目录复制到盘符下就可以了，启动的时候，系统会自动寻找jvm，当然可以再以后配置，但是好像是必须先安装jdk。 <br><br>四、 tomcat插件安装，emf插件安装，lomboz插件安装， <br><br>这几部分的步骤都是一样的，解压软件包，然后根据里面的目录结构，把目录文件分别复制到feature或plugins目录里，这样就行了，下面将详细讲述一下eclipse的配置。 <br><br>五、 配置eclipse <br><br>1、 首先，打开配置界面 window-&gt;preferences。如果这几个插件安装成功，左边的列表里应该有lomboz和tomcat的选项。如果没有，检查上面的步骤是不是正确。 <br><br>点击java-&gt;Installed JREs，然后显示如上，如果是初始安装的，只有显示第一个jre（不要问我什么是jre，自己查资料去），那是系统默认的安装在c盘的jre，如果系统当中安装了多个jdk，那么最好还是新建一个，点击add，然后选择你需要使用的jdk的位置，然后它会自动寻找其他的参数，点击ok。返回界面之后，不要忘记点选刚刚添加的jdk，要不然是没有用的。然后点击ok关闭这个窗口。 <br><br>2、 再次打开配置界面，点击tomcat选项 <br><br>这里是配置tomcat的参数，根据你安装的tomcat的版本，选择tomcat version，然户找到该tomcat的主目录，输入在tomcat home，下面的参数会自动配置，点击apply。然后在左边选择advanced，同样把tomcat的主目录复制在tomcat base，点击apply。 <br><br>最后在左边选择jvm setting，选择刚刚加入的jre，点击apply，点击ok。这样就可以了。回到界面，点击工具栏上的黄色小猫的图标，如果配置正确，在console里应该有启动tomcat的信息。如果有，就代表tomcat配置成功了。 <br><br>1、 lomboz基本上不用什么配置，如果左边有那个lomboz选项，基本上就是成功了。点击lomboz，然后选择刚才配置的jdk里的 tools.jar，这样配置就完成了。测试的方法是新建一个jsp文件，看看打开的时候是不是对script代码有特殊显示，并且建个测试类，看看 jsp是不是能够自动引用类里的函数。 <br>原文地址：http://blog.csdn.net/lovelyxc/services/trackbacks/396040.aspx <br></div>
            </td>
        </tr>
    </tbody>
</table>
<img src ="http://www.cnitblog.com/asfman/aggbug/26080.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/asfman/" target="_blank">汪杰</a> 2007-04-23 23:06 <a href="http://www.cnitblog.com/asfman/archive/2007/04/23/26080.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>