emu in blogjava

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  171 随笔 :: 103 文章 :: 1052 评论 :: 2 Trackbacks

我的评论

共9页: 上一页 1 2 3 4 5 6 7 8 9 下一页 
支持。已经预订。
我自己的写作计划已经流产了,长期在项目中疲于奔命,累……
re: 字符编码的奥秘 emu 2006-04-14 10:49  
内容非常好。白壁微瑕,校正一个地方:

第一个编码表 ASCII 中,

97-127 小写字母

似乎应为:

97-122 小写字母
123-126 符号

127不知道有什么定义。
从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再瞬间替换到页面上,因此出现白屏的时间非常短。

随手做了个简单的例子,请点击这里下载
re: AJAX案例研究之Gmail emu 2006-04-06 17:31  
我看了几个函数的命名和google的风格都相差甚远,而且google也不是用jsp做的,应该和google的源码没有多大关系。
blog的读者是自己找上门来关注作者的,如果真的觉得作者在废话,又何必来看blog呢?
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>
补充一个中文日期格式 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>
昨晚是OT到快四点才下班的。
re: 突然的自我之喜欢帅哥 emu 2006-04-04 13:58  
我也是想起来那个,有一拼。
正感觉有点文不对题呢,链过去一看,原文标题原来是:

Five reasons why you should never use PostgreSQL -- ever

呵呵早叫你走了拖拖拉拉的拖了那么久。
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.

上面两位说的有理。
re: JDK的bug? emu 2006-03-24 09:25  
我不这么认为。isLowerCase什么时候需要关心非英语字母的大小写了?不管如何I18N(),ch>='a' && ch<='z'都应该是isLowerCase的正确定义啊
网页端需要urlencode编码的时候,我们一般用vbs编码,网上现成的代码很多了。
在不能用vbs(非IE浏览器)或者非简体中文操作系统上,可以用字典法编码,参见:
http://www.blogjava.net/emu/articles/31756.html
转格式转坏了?我只能放到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;
}
re: Ajax还是Ajah,这是个问题 emu 2006-03-17 14:33  
呵呵,我不知道。遇到问题要自己调试。
呵呵command模式本身没有这个问题,对command的使用不当才会带来问题。
re: 为什么一定要看《无极》 emu 2006-03-09 00:55  
有个续集也很经典:

<<一个馒头引起的麻烦>>

http://t.21cn.com/ml/2006/03/08/2494277.shtml
谢谢 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,确实实际的差异是巨大的,但是面对更复杂的情形如何呢?
你给出的代码无法通过编译,很想看看你的代码在给出大半副牌的情形下的表现。
>>四、JAVASCRIPT中的处理

呵呵你所展现的叫做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=\"http://imgcache.qq.com/izone/client/mate.gif\";onerror=null'>"
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">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">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">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">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有可能自身会纠正错误结果,换个关键字应该可以重现的。比如换这里某偏帖子的主题或者帖子中的一句话。
谢谢dudu为维护大家共同的家园付出的不懈努力。
对这次的病毒问题,我认为事前防毒胜于事后杀毒。如果系统没有很严重的漏洞,病毒是不会跑进去的,务须发现并根除病毒进入服务器的来源。
dudu这么晚还在上网阿,也是夜猫子一个。我是刚下班。
re: XML数据岛技术的总结 emu 2006-03-01 13:39  
>>后台的java类返回XML数据到前台的js,js再将数据岛绑定到页面上
后台返回xml数据是用数据岛的形式引用,还是用js的接受xml数据后灌到数据岛里面去?
呵呵那就是用了send(data)方式post数据了吧,这就说来话长了。
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一样,是软件开发对生活的模仿。
escape后获得null估计是因为参数名也被escape了,要不然就是?或者=或者&这几个url的保留字符也被escape了。
比如
?test=%u4E2D%u6587应该是没有问题的
但是
?test%3D%u4E2D%u6587 肯定就不行了
%3Ftest=%u4E2D%u6587 肯定也不对
%3Ftest%3D%u4E2D%u6587 这就更不要说了。
你是那种情形?
re: 关于方舟子的争论 emu 2006-02-27 09:24  
@在csdn上看到的
我认为应该是,不讲理比讲理容易,讲歪理比讲正理容易。
“无偏二极管”只是一个名字而已,跟加不加偏压没什么关系,就算有理想开关也不能自动产生电流出来的。
@炎
没有注意过什么阿?
居然只能免费试用24小时!
@lam
what a pity
@pet
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  
终于搞到一个公网地址,发布一个:

http://stonelf.s43.eatj.com/emu/game/letters.htm

大家一起来玩哈:)

re: AJAX的小经验 emu 2006-02-17 11:25  
如果不是真的需要继承重用和多态的话,我不建议使用js来进行“面向对象”编程。用“基于对象”的语言来做“基于对象”的设计和编码,感觉要比较自然些。
用原型对象模拟的面向对象开发,在实现多态和继承的时候和传统的面向对象语言始终有各种差异,开发的时候要对js的对象体系有充分的理解和保持非常清晰的死路。
也有一些很优秀的面向对象js框架,但是我还是担心,解决一个问题,带来更多的问题。
我对 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的没有多少相像的地方)。

多线程方面我懂的也不多,解释也解释不好,讲多错多,还是自己去找资料好好学习吧。
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.blogjava.net";
  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方法吗?
呵呵,看起来和我很久以前写的例子非常像哦。
我上面的解释和上面你贴的代码你都没有理解到,跟你再解释也说不明白了……
re: AJAX的小经验 emu 2006-02-16 13:02  
//Use an XMLHttpRequest,命名为this.request

这个双语合壁的注释都够莫名其妙了,实现代码还略过。看不出问题。
@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();

有阿,在上面的例子中点击按钮发起线程后,吧鼠标放到正在运行中的线程上,线程就会暂停下来知道鼠标离开。此外线程计算结束后也会延迟2秒清除结果,这个延迟也是使用sleep的方式实现的。看看 simThread 和 executeCommands 的相互配合。
共9页: 上一页 1 2 3 4 5 6 7 8 9 下一页