ï»??xml version="1.0" encoding="utf-8" standalone="yes"?>国产精品123区,日韩欧美一区在线,麻豆久久久久久http://www.aygfsteel.com/hunteva/category/26501.html专注于Java EEä¼ä¸š¾U§å¼€å?/description>zh-cnMon, 05 Nov 2007 20:46:31 GMTMon, 05 Nov 2007 20:46:31 GMT60- Adobe AIR åˆæŽ¢http://www.aygfsteel.com/hunteva/archive/2007/11/05/adobe_air.htmlKerwin WengKerwin WengMon, 05 Nov 2007 12:39:00 GMThttp://www.aygfsteel.com/hunteva/archive/2007/11/05/adobe_air.htmlhttp://www.aygfsteel.com/hunteva/comments/158351.htmlhttp://www.aygfsteel.com/hunteva/archive/2007/11/05/adobe_air.html#Feedback0http://www.aygfsteel.com/hunteva/comments/commentRss/158351.htmlhttp://www.aygfsteel.com/hunteva/services/trackbacks/158351.html好åƒå›½å†…对Adobe的新产å“AIRå应˜q˜ä¸å¤?æˆ‘ä¸ªäºø™¯•用了下觉得其实用处还是很大的,äºŽæ˜¯æˆ‘å°±æŠ›ç –å¼•çŽ‰å†™ä¸€½‹‡ç›¸å…³ä»‹¾læ–‡ç« å§
AIR其实是一套框架和一个VM,它å…许用æˆähŠŠJavascript,HTML,CSS集æˆåˆ°ç»Ÿä¸€çš„客æˆïL(f¨¥ng)«¯,在用æˆäh¡Œé¢è¿è¡?é¿å…了æµè§ˆå™¨å·®å¼‚,òq¶ä¸”实现了跨òq›_°çš„通用æ€?åŒæ—¶åˆå¯¹Javascript功能˜q›è¡Œäº†å¾ˆå¤šæ‰©å±?比如è¯Õd–本地¼‚盘文äšg,åšè·¨åŸŸçš„˜qœç¨‹è®‰K—®,使用多媒体文件牽{?ç›æ€¿¡æ˜¯flash的底层在支æŒ),相对于两òq´å‰çš„Flex,AIR在RIAé¢†åŸŸæ— ç–‘åˆæ˜¯ä¸€ä¸ªè·¨‘?惌™±¡ä¸€ä¸?/span>ä»¥åŽæˆ‘们å¯ä»¥ç”¨JS+HTML+CSSæ¥å†™åŸÞZºŽhttp的远½E‹ä¸”防ç«å¢™å®‰å…¨çš„C/S应用äº?˜q˜æ˜¯è›®çˆ½å?br />
Demo在这�http://labs.adobe.com/showcase/air/?promoid=BJXTF
用JSæ¥å†™åº”用的文档在˜q™é‡Œ:http://livedocs.adobe.com/labs/air/1/devappshtml/
Adobe AIR出新版SDKå?å‡ÞZ¹Žæ„料的是很多之å‰çš„Demoä¸èƒ½è·‘了,ä¼?x¨¬)å‡?parsing disallowed",åŽŸå› ž®±æ˜¯adobeæ¢ç”¨äº†æ–°çš„安全框æž?¼›æ¢æŽ‰äº†Javascript䏿Ÿäº›å¯èƒ½å¯¹å…¶æ¡†æž¶åšå‡ºå®‰å…¨å¨èƒçš„API,比如说JSON的命æ ?-eval
Adobe的官方解释是在AIR2¼›æ¢æŽ‰äº†¾cÖM¼¼eval˜q™ç§åЍæ€ä»£ç åŠ è½½æŠ€æœ¯åœ¨å…¶Application sandboxä¸çš„˜q行,è§£å†³åŠžæ³•æ˜¯æŠŠä½ æœ‰eval的应用移到Browse sandbox䏿‰§è¡?所谓的Browse sandboxæ„æ€æ˜¯ä½ çš„åº”ç”¨ä¸»é¡µé¢æ˜¯é€šè¿‡application.xmlä¸é…¾|®çš„æ šw¡µé¢æ¥ç”¨iframe引入çš?在iframe引入的页é¢ä¸ä½ å°±å¯ä»¥åševal,而把其他如跨域查询ç‰AIRæä¾›çš„高¾U§APIæ“作攑ֈ°æ šw¡µé¢ä¸åŽÕdš,ç„¶åŽé€šè¿‡ä¸€ä¸ªparent/childSandboxBridgeæ¥åšäº’ç›¸å¼•ç”¨å’Œä¼ é€’æ•°æ®çš„æ¡¥æ¢,ä½†æ˜¯åŒæ—¶ä½ 在iframeä¸çš„js也ä¸èƒ½ç›´æŽ¥ä‹É用AIR所æä¾›çš„一些高¾U§API,比如air.trace().原文的解释在˜q™é‡Œ
,Adobe甚至˜q˜å†™äº†ä¸€½‹?a target="_blank">æ–‡ç« æ¥é¼“å¹è¿™¿Uæ–¹å¼å…¶å®žæ›´½W¦åˆè®¾è®¡æ¨¡å¼--æ šw¡µé¢è´Ÿè´£æ•°æ®ä¼ é€?iframe™åµé¢è´Ÿè´£ä¸šåŠ¡é€»è¾‘.ä½†æ˜¯æ— è®ºå¦‚ä½•˜q™ç¯‡æ–‡ç« ä½œäØ“(f¨´)Browse sandbox的入门æ¥è®²è¿˜æ˜¯å¾ˆå€¼å¾—¾l†è¯»çš?br />
于是¾l“åˆè‡ªå·±å½“å‰çš„实际需è¦?æˆ‘å†™äº†ä¸€ä¸ªæ‰¹é‡æŸ¥è¯¢airasia.com机票的å°å·¥å…·,å› äØ“(f¨´)airasia从æ¥éƒ½æ˜¯æ‰“广告说从多久到多久,从那里飞到那里æ‰å‡ å—MYRèµ?/span>! ž®±æ˜¯˜q™ä¸ª"èµ?å—相当关é”?.....ç›´æŽ¥é€ æˆæ¯æ¬¡æˆ‘去查的时候å‘çŽ°å› ä¸?å·²ç»å¿«æ»¡å?äº?所以äh(hu¨¢n)æ ¼å’ŒòqÏx—¶çš„一æ ?甚至更高,å¬åŒäº‹è¯´ä»–们都是先一天一天去查看哪天便宜ž®Þpµ¶å¿«é¢„å®?太辛苦了å?é‚£æˆ‘è¦æŸ¥2007-11-05åˆ?008-01-31日的机票è¦èŠ±å¤šå°‘æ—‰™—´å•?è€Œä¸”ä¸æŸ¥åˆ°æœ€åŽä¸€å¤©è¿˜ä¸çŸ¥é“æ˜¯ä¸æ˜¯æœ€ä¾¿å®œçš?å˜²ç¬‘ä»–ä»¬åŽŸå§‹ä¹‹åŽæˆ‘就军_®šè‡ªå·±å†™ä¸ªå·¥å…·æ¥æŸ¥
所以我写的½W¬ä¸€ä¸ªAIR应用ž®±æ˜¯˜q™ä¸ªAirAsiaTicketsSearch,å¯ä»¥æ‰šw‡æŸ¥è¯¢æŸä¸ªæ—‰™—´ŒDµåŽ»å’ŒæŸä¸ªæ—¶é—´æ®µå›žçš„æ‰€æœ‰æœº¼œ?òq¶ä¸”把机¼œ¨äh(hu¨¢n)æ ¼ç”¨jQuery.tablesort¾l™æŽ’åºå‡ºæ?òq¶ä¸”用jQuery.tablesort.pageåšäº†åˆ†é¡µ(说å¥é¢˜å¤–è¯?jQueryçš„tablesort¼‹®å®žå¾ˆå¼ºå¤?但是在排åº?1,280.00 CNY"˜q™ç§æ•°æ®çš„æ—¶å€™è¿˜æ˜¯æœ‰é—®é¢˜).å¦å¤–å¼€å‘环境值得一è¯?æ— è®ºæ˜¯eclipse+aptana或者aptana standalone都一æ ïL(f¨¥ng)š„,aptanaž®±æ˜¯ä¸€ä¸ªEclipseçš„RCP,关键ž®±æ˜¯aptana真的是很好用的工å…?ç›®å‰ä¸ä»…支æŒAIR,而且˜q˜æ”¯æŒå¼€å‘Apple iPhone的应ç”?åªæ˜¯ä¸“ä¸šç‰ˆè¦æ”¶è´¹.....
åŽé¢¾l™å‡ºæˆªå›¾,¾l“æžœå‘现昨天˜q˜æœ‰295.99的机¼œ?åˆîCº†ä»Šå¤©ž®±æ¶¨åˆ?49.99äº?_-!


]]> - 关于Javascripté—包å¦ä¹ (f¨¤n)http://www.aygfsteel.com/hunteva/archive/2007/10/18/153854.htmlKerwin WengKerwin WengThu, 18 Oct 2007 05:28:00 GMThttp://www.aygfsteel.com/hunteva/archive/2007/10/18/153854.htmlhttp://www.aygfsteel.com/hunteva/comments/153854.htmlhttp://www.aygfsteel.com/hunteva/archive/2007/10/18/153854.html#Feedback14http://www.aygfsteel.com/hunteva/comments/commentRss/153854.htmlhttp://www.aygfsteel.com/hunteva/services/trackbacks/153854.html
¾l“果今天¾lˆäºŽçœ‹åˆ°ä¸€½‹?em>Morris Johns的文ç«?用了ä¸åˆ°5分钟ž®±æŠŠé—包是什么讲的清清楚æ¥?æ¯”å¦‚æ–‡ç« ä¸æœ‰ä¸€å¥è¯:
In JavaScript, if you use the function
keyword inside another function, you are creating a closure.
妈的,˜q˜æœ‰æ¯”这更简å•的解释å?ä¸ÞZ»€ä¹ˆé‚£äº›å›½å†…所谓的牛ähž®±æ˜¯å†™ä¸å‡ø™¿™¿Uåã^实的è¯?ž®±éžè¦æµªè´¹è‡ªå·±å’Œåˆ«ähçš„æ—¶é—´è®²ä¸€å †è²Œä¼¼æÕQ云的定义,我觉得他们真的该æ€è€ƒä¸‹è‡ªå·±å†™æŠ€æœ¯æ–‡ç« 的目的,æ˜¯äØ“(f¨´)äº†åœ¨ä¼ é€’çŸ¥è¯?˜q˜æ˜¯åœ¨æ»¡‘Œ™‡ªå·Þqš„虚è£,如果是åŽè€?廸™®®ç›´æŽ¥åœ¨Tag䏿³¨æ˜?自慰è´?,å…å¾—‹¹ªè´¹å¤§å®¶çš„æ—¶é—?
在åŽé¢çš„æ–‡ç« ä¸?作者列举了很多生动的例å?æ¯ä¸ªä¾‹ååŽé¢çš„解释都éžå¸¸òq›_®ž,没有ä»ÖM½•ä¸ÞZº†è¡¨çŽ°è‡ªå·±èƒ½åŠ›çš„åŽä¸½è¾žè—?通过他的例å,我很快ç†è§£çš„é—包的特ç‚?å¯ä»¥ç”¨æ¥åšä»€ä¹?å‰åŽä¸åˆ°30分钟,å›žæƒ³æˆ‘å‡ ä¸ªæœˆå‰å…‰æ˜¯æ‰¾åˆé€‚的解释ž®±æ‰¾äº†è¿‘ä¸€ä¸ªå°æ—?
当我寚w—包的特点已ç»è°™ç†ŸäºŽå¿ƒå?作者å†å¼€å§‹è®²ä¸€äº›æŠ½è±¡çš„定义,让äh感觉没有一炚wšœ¼„?ž®±å¦‚作者自å·Þqš„è¯?
If everything seems completely unclear then
the best thing to do is to play with the examples. Reading an explanation is
much harder than understanding examples.
My explanations of closures and stack-frames etc are not technically correct
- they are gross simplifications intended to help understanding. Once the
basic idea is grokked, you can pick up the details later.
最åŽç»™å‡ºé‚£½‹‡æ–‡ç« 的地å€,ç›æ€¿¡ä¸æ‡‚é—包的ähä¹Ÿèƒ½åƒæˆ‘ä¸€æ ·å¾ˆå¿«å°±ç†è§£,åŒæ—¶ä¹Ÿå¸Œæœ›å¤§å®¶çœ‹å®ŒåŽåˆ«å¿˜äº†åˆ«äºø™¸ítå®žå®žå†™æŠ€æœ¯æ–‡ç« çš„æ€åº¦
http://www.javascriptkit.com/javatutors/closures.shtml

]]> - 用Javascript模拟Java的Sethttp://www.aygfsteel.com/hunteva/archive/2007/10/12/152282.htmlKerwin WengKerwin WengFri, 12 Oct 2007 03:46:00 GMThttp://www.aygfsteel.com/hunteva/archive/2007/10/12/152282.htmlhttp://www.aygfsteel.com/hunteva/comments/152282.htmlhttp://www.aygfsteel.com/hunteva/archive/2007/10/12/152282.html#Feedback2http://www.aygfsteel.com/hunteva/comments/commentRss/152282.htmlhttp://www.aygfsteel.com/hunteva/services/trackbacks/152282.html
ç›®å‰æƒ›_ˆ°å¯ä»¥å®žçŽ°çš„æ–¹æ³?
add(o);
addAll(array)
contain(o);
getåQˆint);
getAll();
sort(comparator); //ä¼ è¿›åŽÈš„æ˜¯ä¸€ä¸ªfn,˜q˜æ²¡æœ‰å†™ä¾‹å....
size();
remove();
reverse();
基本数殾l“构是两个数¾l?一个是index数组,æ•°ç»„ä¸‹æ ‡˜qžç®‹,用æ¥å˜æ”¾½W¬äºŒä¸ªæ•°¾l„çš„ä¸‹æ ‡,å¦ä¸€ä¸ªæ˜¯å˜æ”¾å¯¹è±¡çš„æ•°¾l?ä¸è¿ž¾l?ä¸‹æ ‡æ˜¯å¯¹è±¡çš„id或者对象ä¸å…¶ä»–ä»ÖM½•å¯ä»¥è½¬æ¢æˆå”¯ä¸€Integerçš„Field(Setä¹Ÿè¦æ±‚放˜q›åŽ»çš„å¯¹è±¡å¿…™å»è¦æœ‰hashCodeå˜?ä¸ç„¶æ²¡æ³•区别½W¬ä¸€ä¸ªå’Œ½W¬äºŒä¸?
实现的API:
function Collection(){
this.chain=new Array();
this.table=new Array();
}
Collection.prototype.get=function(i){
return this.table[this.chain[i]];
}
Collection.prototype.add=function(o){
this.table[o.id]=o;
this.chain.push(o.id);
}
Collection.prototype.addAll=function(array){
for(var _i=0;_i<array.length;_i++){
this.add(array[_i]);
}
}
Collection.prototype.contain=function(o){
if(this.table[o.id]){
return true;
}else{
return false;
}
}
Collection.prototype.getAll=function(){
tempList=new Array();
for(var _i=0;_i<this.chain.length;_i++){
tempList.push(this.table[this.chain[_i]]);
}
return tempList;
}
Collection.prototype.sort=function(comparator){
this.chain.sort(comparator);
}
Collection.prototype.remove=function(o){
var _var = this.chain;
for(var _i=0;i<this.chain.length;i++){
if(this.table[this.chain[_i]].id==o.id){
this.table[this.chain[_i]]=null;
this.chain.splice(_i,1);
return;
}
}
}
Collection.prototype.size=function(){
return this.chain.length;
}
Collection.prototype.reverse=function(){
this.chain.reverse();
}
目剘q˜æœ‰ä¸€ä¸ªaddAllæ–ÒŽ(gu¨©)³•也是暂时没有惛_ˆ°æœ‰ä»€ä¹ˆä¸ç”¨é历的好的实现
å‰åŒäº‹æä¾›äº†ä¸€¿U完全和Set一æ ïL(f¨¥ng)š„实现,效率满高
function Map(){
this.obj = {};
this.count = 0;
}
Map.prototype.put = function(key, value){
var oldValue = this.obj[key];
if(oldValue == undefined){
this.count++;
}
this.obj[key] = value;
return oldValue;
}
Map.prototype.get = function(key){
return this.obj[key];
}
Map.prototype.remove = function(key){
var oldValue = this.obj[key];
if(oldValue != undefined){
this.count--;
delete this.obj[key];
}
return oldValue;
}
Map.prototype.size = function(){
return this.count;
}
function Set(getKey){
this.map = new Map();
this.getKey = getKey;
}
Set.prototype.add = function(value){
var key = this.getKey(value);
this.map.put(key, value);
}
Set.prototype.remove = function(value){
var key = this.getKey(value);
this.map.remove(key);
}
Set.protorype.getAll=function(){
tempArray=new Array();
for(var i in this.obj){
tempArray.push(i);
}
return tempArray;
}
Set.prototype.size = function(){
return this.map.size();
}
˜q˜æœ‰ä¸€ä¸ªæœ‹å‹çš„实现和我最åˆçš„å·®ä¸å¤?但是removeæ–ÒŽ(gu¨©)³•相当有创æ„?用æ£åˆ™è¡¨è¾‘Ö¼æ¥åˆ é™?br />
Collection.prototype.remove=function(o){
var _var = this.chain;
this.table[o.id]=null;
var re = new RegExp("(^["+o.id+"]$)|(^["+o.id+"][,])|([,]["+o.id+"]$)","g");
var s = "["+this.chain.toString().replace(re,"").replace(","+o.id+",",",")+"]";
this.chain=eval(s)
}
有äh回å¤è¯´éœ€è¦æ·»åŠ åšéªŒè¯,我觉得ä¸å¿…了,如果æ·ÕdŠ çš„å€¼å’Œä¹‹å‰çš„ä¸€æ ·å°±ç›´æŽ¥æ›¿æ¢å¥½äº†,如果希望ä¸è¢«replace,ç›´æŽ¥åœ¨æ·»åŠ æ–°å¯¹è±¡ä¹‹å‰ç”¨contain判æ–一‹Æ¡å°±å¯ä»¥äº?毕竟在我的实çŽîC¸å·²ä¸æ˜¯å®Œå…¨åœ¨æ¨¡æ‹ŸSetäº?ç›®å‰æ›´å€‘֑于设计一个更高效和强大的集刾c?br />

]]>
Ö÷Õ¾Ö©Öë³ØÄ£°å£º
вýÏØ|
½ºÓÏØ|
ξÊÏÏØ|
Ïâ»ÆÆì|
¸£°²ÊÐ|
ÖÛÇúÏØ|
²áºàÏØ|
ÀëµºÇø|
ºìÔÏØ|
ʯºÓ×ÓÊÐ|
ʼÐËÏØ|
ÍÐÀïÏØ|
¿¦À®Ç߯ì|
´ó¹ØÏØ|
ÚöáÁÊÐ|
ʯÆÁÏØ|
Ë«ÅÆÏØ|
ÍÅ·çÏØ|
ĵµ¤½ÊÐ|
Ã÷¹âÊÐ|
²ÔÄÏÏØ|
·áÄþ|
ÎâÖÒÊÐ|
ÔÆÑôÏØ|
ÒËÕÂÏØ|
±¦ÛæÇø|
ÚöáÁÊÐ|
Ðû»¯ÏØ|
¼òÑôÊÐ|
ÕòÄþ|
ºÍÆ½ÏØ|
ÂÐÄÏÏØ|
°²¼ªÏØ|
ÌÆÉ½ÊÐ|
¼ÃÄþÊÐ|
½¨Ë®ÏØ|
Å®ÐÔ|
¸·ÄþÏØ|
Àû½òÏØ|
¶«Ïç×å×ÔÖÎÏØ|
Ôö³ÇÊÐ|