我的評論
re: 《Ajax開發精要:概念、案例與框架》月底出版,現預訂可打折 emu 2006-04-25 09:44
支持。已經預訂。
我自己的寫作計劃已經流產了,長期在項目中疲于奔命,累……
我自己的寫作計劃已經流產了,長期在項目中疲于奔命,累……
re: 字符編碼的奧秘 emu 2006-04-14 10:49
內容非常好。白壁微瑕,校正一個地方:
第一個編碼表 ASCII 中,
97-127 小寫字母
似乎應為:
97-122 小寫字母
123-126 符號
127不知道有什么定義。
第一個編碼表 ASCII 中,
97-127 小寫字母
似乎應為:
97-122 小寫字母
123-126 符號
127不知道有什么定義。
re: 原來Firefox還是不支持xml數據島 emu 2006-04-12 10:24
從IE5到IE7,xml數據島應該馬上就10歲了(看來肯定能活過10歲),firefox才幾歲,netscape才風光了幾年,,10年時間應該稱得上很穩定很長久了吧
re: 字符編碼的奧秘 emu 2006-04-10 09:28
好文,可惜字體太小了,只好拷貝出來看。
re: AJAX案例研究之Gmail emu 2006-04-07 10:15
最近實在太忙,天天加班,沒有辦法仔細研究這個問題。
Gmain的Frame確實是刷新的,只是刷新比較快而已,刷新過程也有短暫的白屏,但是在頁面左側表現不明顯。
這其實也不神秘,查看一下源代碼就一目了然了。因為頁面本身的顯示內容都是用腳本生成的,我們切換到新的url上面的時候其實只是切換了新的數據,什么都不顯示,要由其它框架頁面解析完數據后生成新的html再瞬間替換到頁面上,因此出現白屏的時間非常短。
隨手做了個簡單的例子,請點擊這里下載。
Gmain的Frame確實是刷新的,只是刷新比較快而已,刷新過程也有短暫的白屏,但是在頁面左側表現不明顯。
這其實也不神秘,查看一下源代碼就一目了然了。因為頁面本身的顯示內容都是用腳本生成的,我們切換到新的url上面的時候其實只是切換了新的數據,什么都不顯示,要由其它框架頁面解析完數據后生成新的html再瞬間替換到頁面上,因此出現白屏的時間非常短。
隨手做了個簡單的例子,請點擊這里下載。
re: AJAX案例研究之Gmail emu 2006-04-06 17:31
我看了幾個函數的命名和google的風格都相差甚遠,而且google也不是用jsp做的,應該和google的源碼沒有多大關系。
re: [Eclipse筆記]請對Java、Sun、NetBeans、Eclipse感興趣朋友的看看Eclipse對Sun的心態吧 emu 2006-04-06 12:19
blog的讀者是自己找上門來關注作者的,如果真的覺得作者在廢話,又何必來看blog呢?
blog是個人自己的空間,即使真的是廢話,主人也有這個權利。
比比樓上幾位不敢留下真名和鏈接的評論者的評論和sean的文章和評論,哪個在廢話也不用多說了。
blog是個人自己的空間,即使真的是廢話,主人也有這個權利。
比比樓上幾位不敢留下真名和鏈接的評論者的評論和sean的文章和評論,哪個在廢話也不用多說了。
re: script 版的日期格式函數 emu 2006-04-05 10:15
再來一個,這下可以稱最簡版了吧?
<SCRIPT LANGUAGE="JavaScript">
<!--
function toCHS(s){return s.constructor!=Number?s.constructor!=String?s.constructor!=Date?null:toCHS(s.getFullYear()+"")+"年"+toCHS(s.getMonth()+1)+"月"+toCHS(s.getDate())+"日"+toCHS(s.getHours())+"時"+toCHS(s.getMinutes())+"分"+toCHS(s.getSeconds())+"秒":s.replace(/\d/g,function(a){return"零一二三四五六七八九".charAt(parseInt(a))}): toCHS(((s>19?Math.floor(s/10):"")+(s>9?("十"):"")+(s%10==0&&s>0?"":s%10)))}
alert(toCHS(new Date()));
//-->
</SCRIPT>
<SCRIPT LANGUAGE="JavaScript">
<!--
function toCHS(s){return s.constructor!=Number?s.constructor!=String?s.constructor!=Date?null:toCHS(s.getFullYear()+"")+"年"+toCHS(s.getMonth()+1)+"月"+toCHS(s.getDate())+"日"+toCHS(s.getHours())+"時"+toCHS(s.getMinutes())+"分"+toCHS(s.getSeconds())+"秒":s.replace(/\d/g,function(a){return"零一二三四五六七八九".charAt(parseInt(a))}): toCHS(((s>19?Math.floor(s/10):"")+(s>9?("十"):"")+(s%10==0&&s>0?"":s%10)))}
alert(toCHS(new Date()));
//-->
</SCRIPT>
補充一個中文日期格式 emu 2006-04-05 09:27
<SCRIPT LANGUAGE="JavaScript">
<!--
String.prototype.toCHS=function(){return this.replace(/\d/g, function(a){return "零一二三四五六七八九".charAt(parseInt(a))});}
Number.prototype.toCHS=function(){return((this>19?Math.floor(this/10):"")+(this>9?("十"):"")+(this%10==0&&this>0?"":this%10)).toCHS();}
Date.prototype.toCHS=function(){
with(this)return(getFullYear()+"").toCHS()+"年"+(getMonth()+1).toCHS()+"月"+getDate().toCHS()+"日"+getHours().toCHS()+"時"+getMinutes().toCHS()+"分"+getSeconds().toCHS()+"秒";
}
alert(new Date().toCHS());
//-->
</SCRIPT>
<!--
String.prototype.toCHS=function(){return this.replace(/\d/g, function(a){return "零一二三四五六七八九".charAt(parseInt(a))});}
Number.prototype.toCHS=function(){return((this>19?Math.floor(this/10):"")+(this>9?("十"):"")+(this%10==0&&this>0?"":this%10)).toCHS();}
Date.prototype.toCHS=function(){
with(this)return(getFullYear()+"").toCHS()+"年"+(getMonth()+1).toCHS()+"月"+getDate().toCHS()+"日"+getHours().toCHS()+"時"+getMinutes().toCHS()+"分"+getSeconds().toCHS()+"秒";
}
alert(new Date().toCHS());
//-->
</SCRIPT>
re: [心情文章]新的開始,一切都在不知不覺中改變 emu 2006-04-04 14:02
昨晚是OT到快四點才下班的。
re: 突然的自我之喜歡帥哥 emu 2006-04-04 13:58
我也是想起來那個,有一拼。
re: [鏈接]Five reasons why you should never use PostgreSQL emu 2006-04-04 00:22
正感覺有點文不對題呢,鏈過去一看,原文標題原來是:
Five reasons why you should never use PostgreSQL -- ever
Five reasons why you should never use PostgreSQL -- ever
re: [心情文章]新的開始,一切都在不知不覺中改變 emu 2006-04-04 00:13
呵呵早叫你走了拖拖拉拉的拖了那么久。
re: 走向而立之年 emu 2006-04-02 23:40
大概1年多前,28的時候吧。
re: Webwork Forward 2 html emu 2006-03-26 01:56
遇到這樣的問題,不需要靠猜的,用IeHttpHeader或者HttpSniffer之類的工具直接檢查服務器的輸出中的http header部分是否正確的聲明了contentType應該就可以定位問題的所在了。
re: JDK的bug? emu 2006-03-25 10:39
是的,再看了一下JDK文檔:
The following are examples of uppercase characters:
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
'\u00C0' '\u00C1' '\u00C2' '\u00C3' '\u00C4' '\u00C5' '\u00C6' '\u00C7'
'\u00C8' '\u00C9' '\u00CA' '\u00CB' '\u00CC' '\u00CD' '\u00CE' '\u00CF'
'\u00D0' '\u00D1' '\u00D2' '\u00D3' '\u00D4' '\u00D5' '\u00D6' '\u00D8'
'\u00D9' '\u00DA' '\u00DB' '\u00DC' '\u00DD' '\u00DE'
Many other Unicode characters are uppercase too.
上面兩位說的有理。
The following are examples of uppercase characters:
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
'\u00C0' '\u00C1' '\u00C2' '\u00C3' '\u00C4' '\u00C5' '\u00C6' '\u00C7'
'\u00C8' '\u00C9' '\u00CA' '\u00CB' '\u00CC' '\u00CD' '\u00CE' '\u00CF'
'\u00D0' '\u00D1' '\u00D2' '\u00D3' '\u00D4' '\u00D5' '\u00D6' '\u00D8'
'\u00D9' '\u00DA' '\u00DB' '\u00DC' '\u00DD' '\u00DE'
Many other Unicode characters are uppercase too.
上面兩位說的有理。
re: JDK的bug? emu 2006-03-24 09:25
re: java版本的escape和unescape函數 emu 2006-03-23 11:29
網頁端需要urlencode編碼的時候,我們一般用vbs編碼,網上現成的代碼很多了。
在不能用vbs(非IE瀏覽器)或者非簡體中文操作系統上,可以用字典法編碼,參見:
http://www.aygfsteel.com/emu/articles/31756.html
在不能用vbs(非IE瀏覽器)或者非簡體中文操作系統上,可以用字典法編碼,參見:
http://www.aygfsteel.com/emu/articles/31756.html
re: 《Ajax技術地圖》的演講錄音下載 emu 2006-03-23 09:25
轉格式轉壞了?我只能放到13分半。
re: IE 緩存策略的BUG emu 2006-03-17 18:34
emu一個可能要好一點的解決方案:
// 以 <img src="about:blank" onerror=regImg(this,"http://...gif") /> 的方式定義圖片可以避
// 免重復加載和圖片堵塞頁面問題。建議在發現圖片下載造成頁面延遲的情形下使用。
var imgHash = new Object();
function regImg(e,src){
if(src.indexOf("[%")>0)return;
var a = imgHash[src];
e.onerror=null;
if(a==null) {
a=imgHash[src]=[];
a[0]=new Image();
a[1]=e;
a[0].onload=function(){setImges(a)};
a[0].src=src;
setTimeout("imgHash[\""+src+"\"]=null",65535)
}else{
if(a[0].readyState=="complete")
e.src=src;
else
a[a.length]=e;
}
}
function setImges(a){
for(var i=1;i<a.length;i++)
a[i].src=a[0].src;
}
// 以 <img src="about:blank" onerror=regImg(this,"http://...gif") /> 的方式定義圖片可以避
// 免重復加載和圖片堵塞頁面問題。建議在發現圖片下載造成頁面延遲的情形下使用。
var imgHash = new Object();
function regImg(e,src){
if(src.indexOf("[%")>0)return;
var a = imgHash[src];
e.onerror=null;
if(a==null) {
a=imgHash[src]=[];
a[0]=new Image();
a[1]=e;
a[0].onload=function(){setImges(a)};
a[0].src=src;
setTimeout("imgHash[\""+src+"\"]=null",65535)
}else{
if(a[0].readyState=="complete")
e.src=src;
else
a[a.length]=e;
}
}
function setImges(a){
for(var i=1;i<a.length;i++)
a[i].src=a[0].src;
}
re: Ajax還是Ajah,這是個問題 emu 2006-03-17 14:33
呵呵,我不知道。遇到問題要自己調試。
re: 在javascript中用command模式模擬多線程 emu 2006-03-17 14:26
呵呵command模式本身沒有這個問題,對command的使用不當才會帶來問題。
re: groovy學習筆記1 -從HelloWorld到八皇后 emu 2006-03-15 10:15
re: 為什么一定要看《無極》 emu 2006-03-09 00:55
re: google中國編程挑戰賽資格賽真題 -- PlayCards emu 2006-03-09 00:52
謝謝 xjingg 。
我其實并不是算法錯了,問題出在這一行:
for(int i=0,n=1<<sets.size();i<n;i++){
當sets.size()太大的時候溢出了,所以無法取得正確結果。而且確實在規定的時間內是無法通過測試的。
我們來看看你的數學模型:
-------------------------------------------------------------------
先計算出所有的sets和runs以及他們的交點,每個交點都有2種狀態,set有效或者run有效,對每個交點進行2種狀態的選擇,判斷之后,再刷新一下重新把失效的交點剔除,到最后交點集為0,則完成一種狀態,統計出card數.
-------------------------------------------------------------------
我不明白的是“對每個交點進行2種狀態的選擇,判斷之后”是依據什么來選擇、判斷的?
按照我的理解,這兩種狀態都需要窮舉才能指定哪種是正確的選擇。這樣子你的算法的時間復雜度實質上和我的是一致的(2^n)。在你給出的數據中你為2^20 我的卻為2^49,確實實際的差異是巨大的,但是面對更復雜的情形如何呢?
你給出的代碼無法通過編譯,很想看看你的代碼在給出大半副牌的情形下的表現。
我其實并不是算法錯了,問題出在這一行:
for(int i=0,n=1<<sets.size();i<n;i++){
當sets.size()太大的時候溢出了,所以無法取得正確結果。而且確實在規定的時間內是無法通過測試的。
我們來看看你的數學模型:
-------------------------------------------------------------------
先計算出所有的sets和runs以及他們的交點,每個交點都有2種狀態,set有效或者run有效,對每個交點進行2種狀態的選擇,判斷之后,再刷新一下重新把失效的交點剔除,到最后交點集為0,則完成一種狀態,統計出card數.
-------------------------------------------------------------------
我不明白的是“對每個交點進行2種狀態的選擇,判斷之后”是依據什么來選擇、判斷的?
按照我的理解,這兩種狀態都需要窮舉才能指定哪種是正確的選擇。這樣子你的算法的時間復雜度實質上和我的是一致的(2^n)。在你給出的數據中你為2^20 我的卻為2^49,確實實際的差異是巨大的,但是面對更復雜的情形如何呢?
你給出的代碼無法通過編譯,很想看看你的代碼在給出大半副牌的情形下的表現。
re: XML字符串和XML DOCUMENT的相互轉換 emu 2006-03-06 19:54
>>四、JAVASCRIPT中的處理
呵呵你所展現的叫做Jscript中的處理,或者IE5+中的處理
呵呵你所展現的叫做Jscript中的處理,或者IE5+中的處理
re: IE 緩存策略的BUG emu 2006-03-02 17:20
emu的解決方案如下:
<HTML>
<HEAD>
<BODY>
<SCRIPT LANGUAGE="JavaScript">
<!--
var st="<img src='about:blank' onerror='src=\"var ar = new Array(101);
window.onload=function(){
document.body.innerHTML = ar.join(st);
}
//-->
</SCRIPT>
</BODY>
</HTML>
<HTML>
<HEAD>
<BODY>
<SCRIPT LANGUAGE="JavaScript">
<!--
var st="<img src='about:blank' onerror='src=\"var ar = new Array(101);
window.onload=function(){
document.body.innerHTML = ar.join(st);
}
//-->
</SCRIPT>
</BODY>
</HTML>
re: Google搜索結果頁面的bug emu 2006-03-02 13:25
呵呵,有bug就是有bug,解釋說靜態緩存或者是多個服務器數據不同步造成的,是不能解決問題的。如果能夠解釋說這是由于internet上面真實指向相應信息的鏈接數目正在動態的變化(哇!巨強的實時性!),那是能接受的,可是第一個嘗試中前后的條目數相差了12倍之多,不管怎么解釋都是不合理的。
re: IE 緩存策略的BUG emu 2006-03-02 09:44
這個bug的官方描述見:
http://support.microsoft.com/default.aspx?scid=kb;en-us;319546
此外 http://www.bazon.net/mishoo/Articles/msie/958/ 指出background-image會帶來一樣的問題。
ms的官方解決方案是象這樣:
<HTML>
<HEAD>
<BODY>
<SCRIPT LANGUAGE="JavaScript">
<!--
var st="<img src=\"http://imgcache.qq.com/qzone/item/orig/11/3179_5.gif\">"
var ar = new Array(101);
function test(){
document.getElementById("d").innerHTML = ar.join(st);
document.getElementById("d").style.display="block";
}
setTimeout("test()",1000);
//-->
</SCRIPT>
<div id="d"><img src="http://imgcache.qq.com/qzone/item/orig/11/3179_5.gif"></div>
</BODY>
</HTML>
如果不怕麻煩的話,這樣做可以更快一點點,也更保險:
<HTML>
<HEAD>
<BODY>
<SCRIPT LANGUAGE="JavaScript">
<!--
var st="<img src=\"http://imgcache.qq.com/qzone/item/orig/11/3179_5.gif\">"
var ar = new Array(101);
function test(){
document.getElementById("d").innerHTML = ar.join(st);
document.getElementById("d").style.display="block";
}
//-->
</SCRIPT>
<div id="d"><img src="http://imgcache.qq.com/qzone/item/orig/11/3179_5.gif" onreadystatechange="if(readyState=='complete')setTimeout('test()',0)"></div>
</BODY>
</HTML>
http://support.microsoft.com/default.aspx?scid=kb;en-us;319546
此外 http://www.bazon.net/mishoo/Articles/msie/958/ 指出background-image會帶來一樣的問題。
ms的官方解決方案是象這樣:
<HTML>
<HEAD>
<BODY>
<SCRIPT LANGUAGE="JavaScript">
<!--
var st="<img src=\"http://imgcache.qq.com/qzone/item/orig/11/3179_5.gif\">"
var ar = new Array(101);
function test(){
document.getElementById("d").innerHTML = ar.join(st);
document.getElementById("d").style.display="block";
}
setTimeout("test()",1000);
//-->
</SCRIPT>
<div id="d"><img src="http://imgcache.qq.com/qzone/item/orig/11/3179_5.gif"></div>
</BODY>
</HTML>
如果不怕麻煩的話,這樣做可以更快一點點,也更保險:
<HTML>
<HEAD>
<BODY>
<SCRIPT LANGUAGE="JavaScript">
<!--
var st="<img src=\"http://imgcache.qq.com/qzone/item/orig/11/3179_5.gif\">"
var ar = new Array(101);
function test(){
document.getElementById("d").innerHTML = ar.join(st);
document.getElementById("d").style.display="block";
}
//-->
</SCRIPT>
<div id="d"><img src="http://imgcache.qq.com/qzone/item/orig/11/3179_5.gif" onreadystatechange="if(readyState=='complete')setTimeout('test()',0)"></div>
</BODY>
</HTML>
re: IE 緩存策略的BUG emu 2006-03-02 09:16
逐個 document.getElementById("p1").src=imageholder.src; 是沒有問題,問題是把圖片的完整html一次全部寫入innerHTML造成的。
re: Google搜索結果頁面的bug emu 2006-03-02 00:57
如果你把試用偏好設為每頁顯示10個結果的話,至少頁碼的錯誤是肯定能重現的。看看第一頁有多少個頁碼,翻到第二頁的事后顯示幾個頁碼呢?在第一頁點擊最后一個頁碼實際又跳到第幾頁呢?
我剛剛又重新搜了下“ emu 走向而立之年”,第一頁仍顯示8個頁碼,翻到第二頁就變成7個了。
搜索結果條目數的bug在反復搜索后google有可能自身會糾正錯誤結果,換個關鍵字應該可以重現的。比如換這里某偏帖子的主題或者帖子中的一句話。
我剛剛又重新搜了下“ emu 走向而立之年”,第一頁仍顯示8個頁碼,翻到第二頁就變成7個了。
搜索結果條目數的bug在反復搜索后google有可能自身會糾正錯誤結果,換個關鍵字應該可以重現的。比如換這里某偏帖子的主題或者帖子中的一句話。
re: 一天發現三個大公司的8個BUG emu 2006-03-02 00:45
謝謝dudu為維護大家共同的家園付出的不懈努力。
對這次的病毒問題,我認為事前防毒勝于事后殺毒。如果系統沒有很嚴重的漏洞,病毒是不會跑進去的,務須發現并根除病毒進入服務器的來源。
dudu這么晚還在上網阿,也是夜貓子一個。我是剛下班。
對這次的病毒問題,我認為事前防毒勝于事后殺毒。如果系統沒有很嚴重的漏洞,病毒是不會跑進去的,務須發現并根除病毒進入服務器的來源。
dudu這么晚還在上網阿,也是夜貓子一個。我是剛下班。
re: XML數據島技術的總結 emu 2006-03-01 13:39
>>后臺的java類返回XML數據到前臺的js,js再將數據島綁定到頁面上
后臺返回xml數據是用數據島的形式引用,還是用js的接受xml數據后灌到數據島里面去?
后臺返回xml數據是用數據島的形式引用,還是用js的接受xml數據后灌到數據島里面去?
re: java版本的escape和unescape函數 emu 2006-02-28 20:28
呵呵那就是用了send(data)方式post數據了吧,這就說來話長了。
post數據的時候數據是自動按照utf-8編碼的,但是也接受urlencode方式編碼的二進制數據。注意到urlencode的轉義符和escape是一樣的:%,但是他們代表的意思不同。urlencode的%XX代表的是XX這個16進制數字的數據,而escape的%XX代表的是ASCII碼為XX的一個字符(%uXXXX則代表Unicode碼為XXXX的一個unicode字符)。亂碼就此產生。
post數據的時候數據是自動按照utf-8編碼的,但是也接受urlencode方式編碼的二進制數據。注意到urlencode的轉義符和escape是一樣的:%,但是他們代表的意思不同。urlencode的%XX代表的是XX這個16進制數字的數據,而escape的%XX代表的是ASCII碼為XX的一個字符(%uXXXX則代表Unicode碼為XXXX的一個unicode字符)。亂碼就此產生。
re: 我所理解的SOA emu 2006-02-28 19:56
呵呵,一個滿牽強的例子,我只是想用這中方式來表達我想說的意思而已。
本來是為了公司的內部培訓準備的一個例子,后來培訓前臨時換了一個,也挺有意思的:
上高一的時候,班主任安排我做數理化三科的物理總科代表,oho,這下好了,課間和課后時間我(同一個資源)需要通過兩個以上不同的接口(潮洲話、普通話),提供三個不同的內容服務(數、理化題目解答),這樣的service效率能高嗎?在同學(client)的問題(request)很多的時候,肯定有人沒有辦法得到充分的服務(自己放棄不來問了)。
上高二的時候,終于撤銷了這個三家總掌門,只保留了一個物理科代表,這下SOA了,“一天都光嗮”,需要哪科的信息就找哪科的科代表,專用的service服務的也比通用的要快要好。
生活中處處需要SOA。供水供電供氣供暖系統是最典型的SOA模式,電爐、電暖氣和電熱水器則是對SOA模式的典型破壞,因此帶來的破壞性后果大家都能看見了(jigsaw在成都也過過冬天,遇到過停電哦?)。建房子的,搞裝修的、修電器的、修水暖的,甚至開發軟件的、教書的,哪個不是在通過一致的接口(人民幣)提供service呢?所以SOA和OO一樣,是軟件開發對生活的模仿。
本來是為了公司的內部培訓準備的一個例子,后來培訓前臨時換了一個,也挺有意思的:
上高一的時候,班主任安排我做數理化三科的物理總科代表,oho,這下好了,課間和課后時間我(同一個資源)需要通過兩個以上不同的接口(潮洲話、普通話),提供三個不同的內容服務(數、理化題目解答),這樣的service效率能高嗎?在同學(client)的問題(request)很多的時候,肯定有人沒有辦法得到充分的服務(自己放棄不來問了)。
上高二的時候,終于撤銷了這個三家總掌門,只保留了一個物理科代表,這下SOA了,“一天都光嗮”,需要哪科的信息就找哪科的科代表,專用的service服務的也比通用的要快要好。
生活中處處需要SOA。供水供電供氣供暖系統是最典型的SOA模式,電爐、電暖氣和電熱水器則是對SOA模式的典型破壞,因此帶來的破壞性后果大家都能看見了(jigsaw在成都也過過冬天,遇到過停電哦?)。建房子的,搞裝修的、修電器的、修水暖的,甚至開發軟件的、教書的,哪個不是在通過一致的接口(人民幣)提供service呢?所以SOA和OO一樣,是軟件開發對生活的模仿。
re: java版本的escape和unescape函數 emu 2006-02-27 17:13
escape后獲得null估計是因為參數名也被escape了,要不然就是?或者=或者&這幾個url的保留字符也被escape了。
比如
?test=%u4E2D%u6587應該是沒有問題的
但是
?test%3D%u4E2D%u6587 肯定就不行了
%3Ftest=%u4E2D%u6587 肯定也不對
%3Ftest%3D%u4E2D%u6587 這就更不要說了。
你是那種情形?
比如
?test=%u4E2D%u6587應該是沒有問題的
但是
?test%3D%u4E2D%u6587 肯定就不行了
%3Ftest=%u4E2D%u6587 肯定也不對
%3Ftest%3D%u4E2D%u6587 這就更不要說了。
你是那種情形?
re: 關于方舟子的爭論 emu 2006-02-27 09:24
@在csdn上看到的
我認為應該是,不講理比講理容易,講歪理比講正理容易。
“無偏二極管”只是一個名字而已,跟加不加偏壓沒什么關系,就算有理想開關也不能自動產生電流出來的。
我認為應該是,不講理比講理容易,講歪理比講正理容易。
“無偏二極管”只是一個名字而已,跟加不加偏壓沒什么關系,就算有理想開關也不能自動產生電流出來的。
re: 騙局:使用手機要用左邊耳朵 emu 2006-02-27 09:19
@炎
沒有注意過什么阿?
沒有注意過什么阿?
re: emu的Ajax聯機游戲終于可以發布到公網了 emu 2006-02-25 01:42
居然只能免費試用24小時!
re: emu的Ajax聯機游戲終于可以發布到公網了 emu 2006-02-24 09:31
@lam
what a pity
what a pity
re: emu的Ajax聯機游戲終于可以發布到公網了 emu 2006-02-24 09:23
@pet
Yes I know myjavaserver for a long time, but I can't find any register link or button on it.
Yes I know myjavaserver for a long time, but I can't find any register link or button on it.
re: 一個Ajax實現的聯機游戲 emu 2006-02-24 00:00
re: AJAX的小經驗 emu 2006-02-17 11:25
如果不是真的需要繼承重用和多態的話,我不建議使用js來進行“面向對象”編程。用“基于對象”的語言來做“基于對象”的設計和編碼,感覺要比較自然些。
用原型對象模擬的面向對象開發,在實現多態和繼承的時候和傳統的面向對象語言始終有各種差異,開發的時候要對js的對象體系有充分的理解和保持非常清晰的死路。
也有一些很優秀的面向對象js框架,但是我還是擔心,解決一個問題,帶來更多的問題。
用原型對象模擬的面向對象開發,在實現多態和繼承的時候和傳統的面向對象語言始終有各種差異,開發的時候要對js的對象體系有充分的理解和保持非常清晰的死路。
也有一些很優秀的面向對象js框架,但是我還是擔心,解決一個問題,帶來更多的問題。
re: 在javascript中用command模式模擬多線程 emu 2006-02-17 11:12
我對 jsvm 的看法在 http://community.csdn.net/Expert/topic/4559/4559660.xml 中講過了。我非常欣賞jsvm的設計,可是沒有嘗試過去用。
頂樓的代碼沒什么可重用性,我寫blog和萬常華大哥寫jsvm的出發點是不同的,萬大哥希望可以既授人以魚又授人以漁,我則更愿意授人以漁,只希望可以把代碼后面的思想表達出來,把最困難最有價值的嘗試過程呈現出來,真正能看懂其中思想的人并不需要記住實現,下回遇到問題順手就可以寫出來了。就好像 http://community.csdn.net/Expert/topic/4555/4555563.xml 中,我對google的模仿并不在于看或抄google的代碼(到現在為止還沒有去看過google自定義模塊的原碼,可能以后有時間再去學習吧),而是理解了怎樣的用戶感受更爽,然后具體的實現其實不是關鍵問題(我相信我的實現和google的沒有多少相像的地方)。
多線程方面我懂的也不多,解釋也解釋不好,講多錯多,還是自己去找資料好好學習吧。
頂樓的代碼沒什么可重用性,我寫blog和萬常華大哥寫jsvm的出發點是不同的,萬大哥希望可以既授人以魚又授人以漁,我則更愿意授人以漁,只希望可以把代碼后面的思想表達出來,把最困難最有價值的嘗試過程呈現出來,真正能看懂其中思想的人并不需要記住實現,下回遇到問題順手就可以寫出來了。就好像 http://community.csdn.net/Expert/topic/4555/4555563.xml 中,我對google的模仿并不在于看或抄google的代碼(到現在為止還沒有去看過google自定義模塊的原碼,可能以后有時間再去學習吧),而是理解了怎樣的用戶感受更爽,然后具體的實現其實不是關鍵問題(我相信我的實現和google的沒有多少相像的地方)。
多線程方面我懂的也不多,解釋也解釋不好,講多錯多,還是自己去找資料好好學習吧。
re: AJAX的小經驗 emu 2006-02-16 14:41
幫你改一個能運行的版本,但是具體的業務和功能我就不得而知了。
注意到你嘗試創建非IE瀏覽器的 XMLHttpRequest 對象,可是buildSoap方法使用了Microsoft.XMLDOM對象已經注定了這個程序不能在非IE瀏覽器上運行了,寫了也是白寫,但是還是給你保留了。
<HTML>
<HEAD>
<TITLE> SOAP test by emu </TITLE>
<META NAME="Author" CONTENT="emu">
</HEAD>
<script language="javascript" type="text/javascript">
function startTest(){
var ob= new A();
ob.createRequest();
}
function A(){ }
A.prototype.buildSoap = function(){
//創建一個soap,命名為this.soap
var xmlString = "<SOAP:Envelope xmlns:SOAP=\"http://schemas.xmlsoap.org/soap/envelope/\">"+
"<SOAP:Header/>"+
"<SOAP:Body>"+
"<Authenticate>"+
"<username></username>"+
"<password></password>"+
"</Authenticate>"+
"</SOAP:Body>"+
"</SOAP:Envelope>";
this.soap = new ActiveXObject("Microsoft.XMLDOM");
this.soap.async = false;
this.soap.loadXML(xmlString);
this.soap.selectSingleNode(".//username").text = "administrator";
this.soap.selectSingleNode(".//password").text = "123456";
}
A.prototype.createRequest = function(){
var r;
try {r=new XMLHttpRequest();}catch(e){}
if(!r) try {r=new ActiveXObject("Msxml2.XMLHTTP");}catch(e){}
if(!r) try {r=new ActiveXObject("Microsoft.XMLHTTP");}catch(e){}
if (!r) {
alert("Error initializing XMLHttpRequest!");
return;
}
var url="http://www.aygfsteel.com";
r.open("POST",url,true);
r.onreadystatechange= function(){
if(r.readyState==4&&r.status==200)
alert("服務完成");
};
this.buildSoap();
r.setRequestHeader("CONTENT-TYPE","application/x-www-form-urlencoded");
r.setRequestHeader("If-Modified-Since","0");
r.send(this.soap.xml);
}
</script>
<body onload="startTest()">
</body>
</HTML>
注意到你嘗試創建非IE瀏覽器的 XMLHttpRequest 對象,可是buildSoap方法使用了Microsoft.XMLDOM對象已經注定了這個程序不能在非IE瀏覽器上運行了,寫了也是白寫,但是還是給你保留了。
<HTML>
<HEAD>
<TITLE> SOAP test by emu </TITLE>
<META NAME="Author" CONTENT="emu">
</HEAD>
<script language="javascript" type="text/javascript">
function startTest(){
var ob= new A();
ob.createRequest();
}
function A(){ }
A.prototype.buildSoap = function(){
//創建一個soap,命名為this.soap
var xmlString = "<SOAP:Envelope xmlns:SOAP=\"http://schemas.xmlsoap.org/soap/envelope/\">"+
"<SOAP:Header/>"+
"<SOAP:Body>"+
"<Authenticate>"+
"<username></username>"+
"<password></password>"+
"</Authenticate>"+
"</SOAP:Body>"+
"</SOAP:Envelope>";
this.soap = new ActiveXObject("Microsoft.XMLDOM");
this.soap.async = false;
this.soap.loadXML(xmlString);
this.soap.selectSingleNode(".//username").text = "administrator";
this.soap.selectSingleNode(".//password").text = "123456";
}
A.prototype.createRequest = function(){
var r;
try {r=new XMLHttpRequest();}catch(e){}
if(!r) try {r=new ActiveXObject("Msxml2.XMLHTTP");}catch(e){}
if(!r) try {r=new ActiveXObject("Microsoft.XMLHTTP");}catch(e){}
if (!r) {
alert("Error initializing XMLHttpRequest!");
return;
}
var url="http://www.aygfsteel.com";
r.open("POST",url,true);
r.onreadystatechange= function(){
if(r.readyState==4&&r.status==200)
alert("服務完成");
};
this.buildSoap();
r.setRequestHeader("CONTENT-TYPE","application/x-www-form-urlencoded");
r.setRequestHeader("If-Modified-Since","0");
r.send(this.soap.xml);
}
</script>
<body onload="startTest()">
</body>
</HTML>
re: AJAX的小經驗 emu 2006-02-16 14:17
你都沒有搞清楚原型對象和對象實例的差別,就this來this去的。
this.request.onreadystatechange= this.handleResponse;
handleResponse是原型對象上的方法,不是對象實例的方法,而this.request是對象實例里面的子對象。
你想要在handleResponse里面通過this引用對象實例,可是原型對象的方法里面的this指向的是原型對象而不是實例對象,request是實例對象的屬性,原型對象沒有request當然要報錯了。
this.request.send(this.soap);
好好看看xmlhttp的api吧,有接受xmldom對象作為參數的send方法嗎?
this.request.onreadystatechange= this.handleResponse;
handleResponse是原型對象上的方法,不是對象實例的方法,而this.request是對象實例里面的子對象。
你想要在handleResponse里面通過this引用對象實例,可是原型對象的方法里面的this指向的是原型對象而不是實例對象,request是實例對象的屬性,原型對象沒有request當然要報錯了。
this.request.send(this.soap);
好好看看xmlhttp的api吧,有接受xmldom對象作為參數的send方法嗎?
re: 在javascript中用command模式模擬多線程 emu 2006-02-16 13:06
呵呵,看起來和我很久以前寫的例子非常像哦。
我上面的解釋和上面你貼的代碼你都沒有理解到,跟你再解釋也說不明白了……
我上面的解釋和上面你貼的代碼你都沒有理解到,跟你再解釋也說不明白了……
re: AJAX的小經驗 emu 2006-02-16 13:02
//Use an XMLHttpRequest,命名為this.request
這個雙語合壁的注釋都夠莫名其妙了,實現代碼還略過。看不出問題。
這個雙語合壁的注釋都夠莫名其妙了,實現代碼還略過。看不出問題。
re: 在javascript中用command模式模擬多線程 emu 2006-02-16 09:41
@rom
只有使用異步設計的程序才能夠方便的控制“線程”的運行狀態,按照你貼出的代碼的暗示,pause方法是要堵塞主當前正在運行的腳本引擎進程,讓腳本引擎停止工作。但是堵塞進程會嚴重影響用戶體驗并占用大量cpu資源,建議采用異步方式改善設計來實現延遲。同步的堵塞方式實現如下:
function test(){
alert(new Date().getSeconds());
pause(1000);
alert(new Date().getSeconds());
}
function pause(n){
for(var t = new Date();(new Date()-t<n););
}
test();
只有使用異步設計的程序才能夠方便的控制“線程”的運行狀態,按照你貼出的代碼的暗示,pause方法是要堵塞主當前正在運行的腳本引擎進程,讓腳本引擎停止工作。但是堵塞進程會嚴重影響用戶體驗并占用大量cpu資源,建議采用異步方式改善設計來實現延遲。同步的堵塞方式實現如下:
function test(){
alert(new Date().getSeconds());
pause(1000);
alert(new Date().getSeconds());
}
function pause(n){
for(var t = new Date();(new Date()-t<n););
}
test();
re: 在javascript中用command模式模擬多線程 emu 2006-02-13 10:16
有阿,在上面的例子中點擊按鈕發起線程后,吧鼠標放到正在運行中的線程上,線程就會暫停下來知道鼠標離開。此外線程計算結束后也會延遲2秒清除結果,這個延遲也是使用sleep的方式實現的。看看 simThread 和 executeCommands 的相互配合。