emu in blogjava

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

我的评论

共9页: 上一页 1 2 3 4 5 6 7 8 9 下一页 
似乎很多人看别人文章的目的不是要学习和交流,而是想找到银弹。难怪他们要失望了,我对他们也感到失望。
下面的方法可以生成一个只读的navigator对象。然后再通过dialogArguments传到modaldialog里面进行读操作应该可以回避这个问题:
function readOnlyNavigator(){
var result={};
for(var i in navigator){
if(typeof navigator[i]!="object"){
result[i]=navigator[i];
}else if(typeof navigator[i].length=="number"){
result[i]=[];
for(var j=0;j<navigator[i].length;j++)
result[i][j]=navigator[i][j].toString();
}else{
result[i]={};
}
}
//result.javaEnabled=new Function("return "+navigator.javaEnabled())
//result.taintEnabled=new Function("return "+navigator.taintEnabled())
//result.userProfile.addReadRequest=new Function("return false")
//result.userProfile.clearRequest=new Function()
//result.userProfile.doReadRequest=new Function()
//result.userProfile.getAttribute=new Function("return null")
//result.userProfile.setAttribute=new Function()
return result;
}
下半部分做了很多navigator的functions的空实现,其实并不经常用到,不需要的话可以不放那些functions进去。真的需要用的话还是需要在主页面上做一些代理方法。
这样跑到别人博客上面问问题,问不会了还要骂博主的,还真少见。楼上不敢留名,想来也是知道自己这样做是不对的。

我前面已经解释了:“一定要在modaldialog里面调,也可以通过dialogArguments对象把调用传递到外面的主页面上执行来回避这个问题”,其实并不是说这个问题解决起来有什么难的,对于有一点web开发功底的人来说,这是相当容易实现的。楼上不知道怎么实现,可以查资料,可以找人问,在这里问我也可以,何必这么失风度呢?
简单嘛,直接不要调navigator对象就可以了。一定要在modaldialog里面调,也可以通过dialogArguments对象把调用传递到外面的主页面上执行来回避这个问题。try/catch就不要试了。
呵呵玩玩而已嘛,如果苛求每个创新都一定要有使用价值,那我们的创新精神就会收到压制。
偶从来没有说过模拟多线程问题或者大计算量造成浏览器失去响应问题用command模式就可以很漂亮地轻松解决了,只是演示了如何这样做的一个方法而已。楼上各位看来对偶的期望太高了。

javascript作为一个单进程的解释语言,“活生生地把业务拆解了”恐怕是避免长时间持续运算导致浏览器失去响应的惟一出路了。command模式提供给了我们一个可能的分解计算的方式。同时把计算分解后也让多个模拟线程并行计算和按需要调度提供了可能。

楼上的最后一段偶是不同意的,用“for循环模拟多线程”是说不通的。executeCommands中的for循环是一个合理的进程调度的可能实现方式。

偶还想更正一下楼上对于设计模式的误解。“说设计模式吧,人家那是为了简化,清晰化业务模型的代码实现啊”这是楼上自己对设计模式的理解而已。设计模式是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结,它并不背负有“简化,清晰化业务模型”的使命,虽然有的时候它看起来确实有这样的效果。举个最常见的例子,用对象池方式来处理数据库连接(连接池),肯定要比每次访问数据库都创建连接,用完关闭连接,来得不“简化”,不“清晰”,而且带来了很多原来不曾存在的极其麻烦的问题,但是它能有效提高效率,节省资源,因此除了初学者,我们几乎从来不会尝试每次访问数据库都去创建连接。

用复杂化了业务逻辑来指责偶使用command模式的方式,就好像去指责连接池是复杂化了数据库访问的业务逻辑一样,是置我们解决了的问题于不顾,而只着眼于我们付出的代价。其实我们提供一个问题的解决方案的时候,一般并不意味着发明了银弹。

说偶偷换概念,吸引眼球,偶就实在是很无语了,分享一点技术心得用得着扣这么大的帽子给偶嘛?在楼上诸位提出更漂亮的实现之前,这是偶目前的技术能力做能做到的最漂亮的实现了,难道是特地发出来害人的?难道写blog有人给稿费的?
补充一个object克隆的简单方法,不支持function:
function objClone(o){
if(typeof o == "object"){
var r=(o.sort)?[]:{}
for(var i in o)
r[i]=objClone(o[i]);
return r;
}
return o;
}
re: 经典javascript异常 emu 2007-08-13 13:18  
数组对象自带有一点clone功能,因此对于第二个经典异常,有个简单的应对方案,不过只适用于简单类型数组对象。
<iframe src="javascript:'<script>var o=[1,2,3,&quot;abc&quot;];top.ff2=new top.Array().concat(o);<\/script>'" width=0 height=0 name="f2"></iframe>
<button onclick="f2.location='about:blank';setTimeout('alert(ff2.toString())',0)">这个方法只适用于简单类型数组对象</button>
re: hello ruby emu 2007-08-13 04:02  
module有点好玩,不过如果不在class里面玩的话,好像就找不到引用它的语法块的变量空间,指定为全局变量试试看:
module Emu
def emu
j=1
while j<=$i
print String($i)+"*"+String(j)+"="+String($i*j)+"\t"
j+=1
end
end
end

include Emu
$i=1
while $i<10
emu
$i+=1
print "\n"
end
不是FF读xml要加这一句,而是服务器输出xml的时候没有正确输出'text/xml'的情况下要加这一句。这和上面的权限问题没有什么关系。
re: 求助, 笔记本坏啦. emu 2007-07-31 13:26  
从2看起来(开机不自检),应该是纯粹的硬件故障。
我以前的笔记本电源模块彻底烧坏前几天的表现也像是这样的。
近期天气热,笔记本工作的时候有没有感觉特别烫?是否放凉了以后才可以启动?
写了个页面测试三种不同的创建document的方式的时间耗费:

<HTML>
<HEAD>
</HEAD>
<BODY>
document fragment:<span id="t1"></span><br>
htmlfile:<span id="t2"></span><br>
iframe:<span id="t3"></span><br>
<button onclick="test()">test</button>
<SCRIPT LANGUAGE="JavaScript">
var n = 100;
function test(){
var t=new Date();
for(var i=0;i<n;i++)
document.createDocumentFragment()
document.getElementById("t1").innerHTML=(new Date()-t);
if(window.ActiveXObject){
var t=new Date();
for(var i=0;i<n;i++)
new ActiveXObject("htmlfile")
document.getElementById("t2").innerHTML=(new Date()-t);
}
var t=new Date();
for(var i=0;i<n;i++){
var tt = document.createElement("IFRAME");
tt.style.display="none";
document.body.appendChild(tt);
}
document.getElementById("t3").innerHTML=(new Date()-t);
}
</SCRIPT>
</BODY>
</HTML>

在ie上基本上是个1:10:100的比例。在firefox上iframe的速度和IE差不多,documentfragment的速度快一些,但是不能创建变量空间,没有什么意义。safari创建documentfragment更快,可是创建iframe更慢了。最惨的是opera,居然每次插入不可见的iframe都会导致页面重新渲染,最终浏览器都挂掉了。
一般我都是设置一个临时cookie来监视ie关闭。在下次打开的时候如果监测不到cookie就清空数据,再重设上cookie。
技术探讨,不必这么执着于烂不烂啦,大哥
re: Ajax之异步的优势 emu 2007-06-04 13:45  
楼主“为哪些真正为祖国的物理事业做出过伟大贡献的先辈们鸣一下不平”的功力果然厉害,佩服佩服。
偶并没有否定最后的结果,只是指出测试方式的不严谨而已。ok,偶是木头脑瓜,楼主不喜欢听不同意见,偶大可以不说。
楼主没有包袱,怎么会这么累呢?
re: Ajax之异步的优势 emu 2007-06-03 23:05  
相比之下,有一个物理学家研究物理研究到30岁就放弃了,改去研究神学了,跟我们祖国的物理先驱们相比就更微不足道了对吧?
科学的地位,首先是看其成就,而不是看其牺牲了什么。相比我过的物理学先驱们,杨和李的成就不逊色于任何人,和平凡之有?
杨某的私生活既然与外人无关,就不应因此而受鄙视。
至于“处招摇放屁”,说话要就事论事,不要乱带高帽子。
new Date并不是没有偏向任何一方,而是根本不知道偏向了哪一方。
开销的“均摊”导致了糊涂账。好比我和李嘉诚各花掉1万块,我们的财富比例绝对会发生质的变化,而不会“均摊”
在“多次测试”过程中间,每次都重新引入一次的误差,是无法通过增加测试次数来平衡的。
楼主自己付出那么多去做开源是为了什么?
是一朝成名(天下熙熙,皆为名来)?
是被收购(天下攘攘,皆为利往)?
还是只是练练手,提高一下自己的水平?
还是只是漫无目的的跟风:什么都不为,我只要开源一把?
还是真的无私的只是想要为世界软件事业的发展添砖加瓦(软件事业真的缺的就是这块砖瓦吗)?
还是真的就是想要推动开源事业的历史巨轮(自己去做一个开源项目来推动是最有效的推动方式吗)?
还是想在世界开源舞台上为中国人争口气……

看到楼上说“为开源奋斗终身”,不知道所为何来呢?
测试不够严谨:
在循环中重复了1500次new Date()操作,这个构造对象的代价算谁的?
每次new Date()后去相减后累加,这里每次得到的时间差有0~1/18.6秒的误差。这个误差在最后累加起来,结果是笔糊涂帐。
最后,如楼主在另一篇文章里面提到的,循环反转也会影响结果(受教了:P)

这样的一个对比应该是稍稍合理一点点的:

var n,m;
var inc = 0
var t1 = new Date();
while(inc++<500){
for(var n in map){
m = map[n];
}
}

var t2 = new Date();
inc=0;
while(inc++<500){
for(var j=arr1.length-1;j>=0;j--){
n =arr1[j];
m =arr2[j];
}
}
var t3 = new Date();
var mapTime=(t2-t1);
var arrTime=(t3-t2);


prompt("mapTime/arrTime",mapTime +'/'+arrTime)

但是事实上,两个循环仍在相互干扰,试试简单的把一个循环的数据构造和遍历都完整的去掉,另一个立刻就会体现出来不同:

function C(i){
return i<62?
String.fromCharCode(i+=
i<26?65
:i<52?71//97-26
:-4//48-26-26
)
:i<63?'_'
:i<64?'$'
:C(i>>6)+C(i&63)
}
var map = {};
//var arr1 = [];
//var arr2 = [];
var n,m;
for(var i = 0;i<1000;i++){
var c = C(i);
map[c] = i;
// arr1.push(c);
// arr2.push(i);
}
var inc = 0
var t1 = new Date();
while(inc++<500){
for(var n in map){
m = map[n];
}
}
var t2 = new Date();
/*
inc=0;
while(inc++<500){
for(var j=arr1.length-1;j>=0;j--){
n =arr1[j];
m =arr2[j];
}
}
*/
var t3 = new Date();
var mapTime=(t2-t1);
var arrTime=(t3-t2);


prompt("mapTime/arrTime",mapTime +'/'+arrTime)

re: Ajax之异步的优势 emu 2007-06-03 15:22  
真不知道80多岁的杨某人有何值得讨厌之处。就因为满足不了楼主狭隘的世俗礼教观念吗?宁要一个从一而终默默无闻的杨某人,也不要一个老年“变节”的伟大的物理大师,这就是楼主的价值观?

楼主这篇文章也没有解决任何问题,介绍任何新的技术,和两年来的千千万万人一样,啰嗦几句“AJAX是旧药装新瓶”、“雕虫小技而已”而已。不知有何新意?为了给JSI的闪亮登场做个铺垫,把ajax先拖出来踩上两脚,顺便稍上自己一贯看不顺眼的杨某人?
区别就在于,验证页面的地址是VeriSign网站的,而不是我做的静态图。
一般来说,来自官网的页面声明的内容是可以信赖的。
re: json的例子 emu 2007-05-16 19:08  
to: dennis & AM
不觉得会误人。我的意思是,当你决定用ajax的时候,你要知道还有个json,你要知道他们各自的优点在哪里,知道你其实在进行的是怎样的取舍。
to:chinalu
我明白你的意思,json只是一个数据描述方式,并不一定要用我的方式来获取的,当然也可以用xmlhttp甚至form post来获取。
我在这里主要是展现一种不用xmlhttp的,异步获取json数据的方法。
至于跨编码,我的意思是,json跨编码的时候比较麻烦,直接用xml就简单得多了,因此这是json的一个劣势。可能你没有仔细看清。
json和xml确实都是数据封装的形式,但是除了形式不同之外还有各自的优劣,运用之妙,存乎一心。举个最简单的例子,我贴出来的这段代码放到任何一个网站(域名)上,在任何浏览器上都可以从 http://g2.qzone.qq.com 域名上获取回来一串数据,如果用xml,你试试看能不能跨得了域?
re: AJAX案例研究之google suggest emu 2007-05-14 10:02  
中文要编码的呵呵
楼上的,应该试试 http://www.google.cn
re: 面试的一道题目 emu 2007-03-28 18:47  
11. 如果可以,需要判断是否为非负数
应为正数,因为0不可以
re: 面试的一道题目 emu 2007-03-28 18:46  
13不吉利,再说13已经隐含在12之中:

假设 0<a<=b<=c
如果 a+b>c (12)
a+b>c --> b>c-a
a+b>c --> a>c-b
b<=c & a>0 --> b-a<c
1 是不是揭露百度的黑幕就是居心不良?我和我身边的很多人都是这一黑幕的直接受害人,为什么我不应该支持和转载揭露真相的文章?
2 因为人家是商人,黑幕就是合理的吗?
3 莫名其妙,楼上的意思是百度要收购google不够方便吗?晕一个。
4 揭露黑幕的文章肯定是有些人不喜欢看的。想看歌颂百度的文章很容易啊。
re: 致歉 emu 2007-03-02 09:02  
感谢dudu不辞辛苦为大家义务服务。
总的来说,跨域我认为是浏览器开发者小心过头的产物。一个合理的跨域限制策略应该是像flash那样的,读取一个crossdomain.xml配置文件后就允许或者拒绝访问。
Firefox的跨域访问限制更恶心,一设置domain以后,连不跨域的请求都被禁止了,真是有病。
re: 关于方舟子的争论 emu 2007-01-22 20:32  
转基因并不完全是化学手段,更不是让你吃化学药剂。相反,很多时候转基因作物会让你少使用化学药剂。这样看来楼上应该热烈欢迎转基因作物才对啊。何况化学药剂也是现代生活中不可或缺的啊。难道楼上洗衣服不用洗衣粉,洗碗不用洗洁精?

再说杀虫药,也不是楼上说的“比较坑人”。在没有更好的手段对付害虫前,农药仍是农民最好的朋友之一。为了人类健康我需要更低毒,更容易降解,更安全的农药,而不是说不用农药了。

有些东西是非常有危害的,而且短期内看不出来,不止化学药剂,还有很多天然的食品,日常的饮食。早饭下稀饭的腌菜,下豆浆的油条,麦当劳的薯条,都可能致癌。每天都吃的用大粪和秸秆种出来的大米,含有肌醇六磷酸,会和铁结合影响吸收。一个东西我们发现它有危害,就去消除它的危害啊。事实上大米的危害我们也没有很积极的去消除,大家还是努力吃饭,但是对待转基因食品我们远没这么宽容。就是这样明显的不公平的双重标准之下,大家还是对转基因不满意。

“但人是功利的,肯定不会花这么长的时间和精力去做这些评估检测啥的”这就小人之心了。且不说别人是否都这么功利,花时间经历去做评估检测一样可以是利益驱使的。假冒伪劣固然很可能暴利,可是赚得最多笑到最后的未必都是假冒伪劣。
re: 关于方舟子的争论 emu 2007-01-19 18:31  
人类自直立行走以来就没有停止过这种“近乎域疯狂的发展”吧。看看你今天的午饭,大米,是杂交驯化了几千年的野稻子;蔬菜,是驯化的野菜;猪肉,是驯化的野猪。基本没有一样是自然选择进化出来的产物。再看你身上穿的,棉花也不是自然进化的,羊毛也不是。你到底想吃多“自然”的东西呢?

科学给我们新的力量,让我们可以和自然更和谐的发展。让我们可以更少的使用农药和除草剂,让我们可以在更少的土地上生产出来更多的产品,避免对自然更大的破坏,你在怕什么呢?

修饰几个基因,就是“妄想成为万物的主宰”了吗?既然你认为是“妄想”,那你又害怕什么呢?
拜托,问题不在于是否原样输出。而是xmp和div都没有办法解析出来CDATA的意义,把CDATA当成节点值输出出来了。麻烦再看一下我上午的代码。
支持CDATA的意思不是把CDATA打印出来,而是不把CDATA打印出来。

function parseXML(st){
if(!!document.all){
var result = new ActiveXObject("microsoft.XMLDOM");
result.loadXML(st);
}else{
var parser = new DOMParser();
var result = parser.parseFromString(st, "text/xml");
}
return result;
}
var x=parseXML("<data><![CDATA[ <<<abc>>> ]]></data>")
alert(x.getElementsByTagName("data")[0][(!!document.all)?"text":"textContent"])

还是不明白CDATA的作用?试试把CDATA去掉会如何?
x=parseXML("<data> <<<abc>>> </data>")
alert(x.getElementsByTagName("data")[0][(!!document.all)?"text":"textContent"])
不能吧。没有看出来xmp有任何可以比div更好的代替xml数据岛的潜力。
re: 关于工行的XSS漏洞 emu 2007-01-09 18:12  
嘿嘿技术讨论而已,莫论国是啊。
re: 关于工行的XSS漏洞 emu 2007-01-08 09:04  
crossdomain.xml
我所说的代理页面,是这样的工作原理:
* 基于同一个父域的各个子域的页面,会收到浏览器跨域的限制而不能相互访问。
* 但是各个子域的页面如果设置了父域的domain,浏览器就允许它们相互访问了。
* 可是这种情况下,各个子域的页面还是无法访问其他子域的xml资源。
* 这个时候我们在xml的资源所在的子域上放置一个代理页面,就可以用这个页面作为跳板,实现不同子域的页面访问彼此的xml资源了。

比如,a.emu.com域下面的a.htm要访问b.emu.com下面的b.xml
就要在b.emu.com域下面放一个b.htm,由它来实施对b.xml的访问
而a.htm中用隐藏祯嵌入b.htm。a.htm和b.htm再指定domain="emu.com"
这样a.htm就可以处理b.emu.com上的xml文件了。
代理页面,不是服务器代理技术,基本不耗费服务器性能。
re: 关于工行的XSS漏洞 emu 2007-01-04 09:26  
Monyer果然是高手,佩服佩服。已经收录你的博客。
re: 关于工行的XSS漏洞 emu 2007-01-04 09:16  
to:JK
预见到了相关网站路径会修改,漏洞也会修复的,所以文章中对现场都保留了截屏。工行爱修改链接就修改去吧。

VirusHuo前天介绍了篇有趣的文章文章:
http://dev2dev.bea.com.cn/techdoc/05101902.html
果然非常非常的有趣啊!难怪龙专家的文章里面前后矛盾,原来关于XSS的危险性的正确认识都是剽窃来的,而那些轻描淡写文过饰非的文字才是原创(emu深信“简直无稽之谈”这句定是原创的)。佩服啊佩服。可怜那些被他列进好友列表的大侠们。
我的例子中有啊,试试反复点击按钮启动多个测试“线程”,然后把鼠标移动到正在运算中的“线程”上,它就会停下来。鼠标移开的时候它又继续。
re: 关于方舟子的争论 emu 2006-12-26 18:14  
》》太猖狂了,要脚踏实地的做学问,不懂装懂,不好,实际你们俩什么都不懂,你和人民为敌,
反对楼上的空对空评论,乱戴高帽子,不就事论事。
》》有一天人民是要和你算帐的
是否有一天人民要和他俩算账现在还不得而知,楼上未卜先知莫非是算命先生?
现在已经知道的是,人民已经在和中医算账了。
》》5千你的祖宗都的靠中药生存下来的
5千年来我们的祖先是否是靠中医中药生存下来的,结论并不难得出。大家看看没有中医中药的其他文明,是否都已经灭绝了呢?

其他无的放矢的言论就不意义批判了。
;) 偶只是展示这样一个计算,并不是在展示这样一个显示方式啊。
现在的主流浏览器应该没有默认自动屏蔽javascript的运行了吧?
呵呵那个按钮是手写的。分析一下页面源码就明白了,要是分析不明白,那讲也讲不明白了。
re: 百度又强了一回 emu 2006-11-23 09:22  
老大,偶是2月24号做的搜索,事隔大半年了,搜索结果当然大有不同?
这也是为什么我都是贴当时的截屏出来对比。
一直在发展壮大,对这个城市的治安始终抱有希望,没有销声匿迹。
http://paper.sznews.com/jb/20061121/ca2507415.htm

加你了。
re: [一点一滴学英语] 20061116 emu 2006-11-20 19:29  
关于加西亚同学的事,推荐一篇转的文章
http://www.blogjava.net/emu/archive/2005/07/29/8592.html

还有,访问这个地址,看看跌眼睛否?
http://tech.ccw.com.cn/file/69/
不但收集你的文章,还替你开了blog,还替你排了个不错的排名呢,一笑。
共9页: 上一页 1 2 3 4 5 6 7 8 9 下一页