Decay & Memory

一些落叶, 一些忧伤, 以及许多凋零的记忆

Subscribe to RSS feed

忘恩負義的人們, 你們只會責備微軟麽?

, , , ...

這句話, 我忘記是在哪裏聼到的了。
當時是討論這樣一個話題:asp php jsp asp.net哪個更好一點
我這裡不想提asp.net, 而且那個時候主要的論點交鋒也和asp.net無關
當時, 有些php和jsp的擁護者, 指出asp這樣那樣的不足, 說微軟這麽那麽的無能...
我並非微軟的擁護者, 但我也不是主流的追隨者, 我始終要以我自己的角度去看問題... 就算我承認微軟有相當多讓人不滿意的地方, 但也不能說微軟一無是處。
當時我並沒有足夠的理由駁倒他們說的那些話
這個時候有一個前輩說: 儅各種網絡平臺都在使用cgi的時候, 是誰把大家從web應用管道編程因領到了web應用腳本編程的世界來的呢?

--------

今天我要說的, 也是關於微軟的產品, 也是關於腳本
但不是asp...

估計有人能想到了, 我要為IE進行辯護

只不過這次辯護的方法, 要和前邊關於asp的部分, 正好是相反的手段

IE現在主要有兩個被人抱怨的問題
第一個, 她太容易被人綁架了
第二個, IE對於w3cDOM的支持並不是非常好, 並且還添加了很多不屬於標準中的功能, 讓網葉腳本的初學者無法編寫出符合標準的網葉

那麽 我要開始了

其實第一個問題... 她容易被綁架的原因, 是她提供了很多可編程接口, 只不過那些惡意的程序利用了這些編程接口而已。除非沒有運算能力, 否則一台計算機不可能對病毒免疫, 這個道理大家都明白吧?

第二個問題, 也是我主要打算浪費口水的問題:對於w3cDOM的支持性、非標準的功能…
-對於w3cDOM的支持性, IE存在缺陷, 我不得不承認, 但是也請大家不要因此忽略了FF或者Opera在此方面存在的缺陷, 目前沒有任何一個瀏覽器能夠完全支持w3cDOM標準功能!
-而非標準的功能, 哪個瀏覽器不是或多或少有一些呢?做人要厚道, 作對比評論的時候, 也不該偏袒一方..
在這非標準功能中, 有些是諸如innerHTML這樣的主要被使用的瀏覽器中都具有的功能; 有些則是像XMLHttpRequest這種由IE最先實現, 其他瀏覽器競相使用不同的途徑去實現的; 甚至也還有像IE中支持ActiveX控件, Mozilla/FF中不是也支持一種Component功能嗎?
在這個方面, IE哪裏做錯了?若是錯了, 哪個瀏覽器沒有犯同樣的錯?
-剩下的, 便只有唯獨IE有, 其他瀏覽器便沒有甚至沒有替代解決方法的功能了..我不想再説別的瀏覽器也有這樣的功能之類的話..縱使我那樣說了, 可能也有人會說“哼, 就算真的有我也不會用, 別人也不會用, 當然不會造成困擾了!最大的問題是IE耶!”..那麽, 你們這群狼心狗肺的人, 有沒有想過, 儅年NetScape推出JavaScript功能的時候, 是不是也是一種專有功能呢?

做人不要太過分, 不要因爲個人立場而使用不同的衡量標準, 那樣的衡量結果是沒有意義的。

凋零 上

北京没有东三福?

找不到找不到找不到!

还有北京的食物都超级贵

北京找不到好吃的冷面!


救命呀

不正确的权限设置可能导致无法通过MSI安装软件

, , , ...

默认情况下MSI服务将以SYSTEM的身份运行, 所以如果SYSTEM没有足够的读权限将无法进行任何安装操作

很多程序可能还要在相应的路径解压出一些文件, 在这种情况下SYSTEM帐号还需要具有写和删除的权限...


---- 郁闷了5天后终于成功安装.Net Framework v2.0的Decay

XMLHttpRequest in IE7

, ,

here is an article about using XMLHttpRequest - http://www.ugia.cn/?p=85

But something we need to know is: There is a setting called "Enable native XMLHTTP support" in Windows Internet Explorer 7, and if you set it to off, when you make use to the XMLHttpRequest object, an error will happens.

So you must use a try...catch block to check if the error happens

The day you went away / Crying - M2M

, , ,

Well I wonder could it be
When I was dreaming 'bout you baby you were dreaming of me
Call me crazy
Call me blind
To still be suffering is stupid after all of this time
Did I lose my love to someone better
And does she love you like I do
I do, you know I really really do
Well hey
So much I need to say
Been lonely since (the) day
The day you went away
So sad but true
For me there's only you
Been crying since (the) day
The day you went away
(... The day you went away
The day you went away ...)
I remember date and time
September twenty second Sunday twenty five after nine
In the door way with your case
No longer shouting at each other
There were tears on our faces
And we were letting go of something special
Something we'll never have again
I know, I guess I really really know
Well hey
So much I need to say
Been lonely since (the) day
The day you went away
So sad but true
For me there's only you
Been crying since (the) day
The day you went away
(... The day you went away
The day you went away ...
... ohwohwoh ...)
Did I lose my love to someone better
And does she love you like I do
I do, you know I really really do
Well hay
So much I need to say
Been lonely since (the) day
The day you went away
So sad but true
For me there's only you
Been crying since (the) day
The day you went away
Why do we never know what we've got till it's gone
How could I carry on
The day you went away
Cause I've been missing you so much I have to say
Been crying since (the) day
The day you went away
(... The day you went away
The day you went away ...
heye yeye ...
... OhwOhw ...
Yeye hey ...
Ohohohoh ...)

.Net和java两大美女对垒

原帖地址:http://www.chinaaspx.com/club/topic_13_7032.htm

自从.net推出以来,.net与java之间的明争暗斗就一直没有停息过,但是战斗一直都仅限于理论层面上,互相都只摆出自己的一堆大道理,口水都快淹死人了,但却从来没有真刀真枪的干上一仗。为什么呢?原因是.net一直在家里不出来,哪里都不去。他们没有机会真正的碰过面。(2002-07-31 19:43:59)

--------------------------------------------------------------------------------

By ideal

自从.net推出以来,.net与java之间的明争暗斗就一直没有停息过,但是战斗一直都仅限于理论层面上,互相都只摆出自己的一堆大道理,口水都快淹死人了,但却从来没有真刀真枪的干上一仗。为什么呢?原因是.net一直在家里不出来,哪里都不去。他们没有机会真正的碰过面。

但现在她们终于有机会真正进行一场公平的竞赛了,一年前就一定开始的.net开放源码计划MONO不久前刚刚推出了最新版本0.13,虽然还是个开发中的产品,但是我已经忍不住要把她请出来和java过过招了。

再进行枯燥的数据对比以前,请先看一段浪漫的故事,了解一下.net,mono之间的关系,谢谢。 :)

话说很java不服气,虽然java上门去找.net比划过几招,但是.net的父亲老比对她很不欢迎,而且好象也没比赢。Java很生气:“有什么了不起,不就是比我年轻几岁吗?老娘当年风光的时候你还没出生呢,只在家算什么厉害,在你们家我当然比不过你了,有种出来呀!”。

这边老麦很是得意:“大家看看,我还当.net是什么大美女呢,连客都不敢见,多半笨得连话都说不清楚。看我们家java多好,人见人爱,上得厅堂下得厨房,让她去哪就去哪,半句都不罗嗦。”

这边老比答话了:“谁说咱们家.net不行?她不仅系出名门,天资国色,而且能听懂几乎所有国家的语言,我还专门请了编织大师安德斯到我们家来专门教她刺绣。不过她是大家闺秀,岂能跟你们家那个野丫头一样到处乱跑,谁都可以摸一把。再说了,这里大部分的土地都属于我们家,她出不出去其实都一样。”

.net虽然生活无虑,每天有人伺候,但是还是经常照着镜子叹气:“唉,都怪我老爸,限制人家自由,虽然可以每天穿好衣服,但是只有我们家的人才能看到我,我想让世界上所有的人都来赞叹我的美丽,让各种人用不同的语言对我说:‘我爱你’。”。

.net的话有一天被一个英俊的小伙子听到了,他就是开发出了Linux下著名的x-windows系统gnome的ximian。他第一次见到.net就被她的美貌给深深打动了,他对身旁的人说:“我终于发现,她就是我真正想要的”。他还发现.net是microsoft家族中唯一一个想要出去的人。于是他每天抽空跟她讲一些发生在他们那里的美好的故事,讲他们那里有很多很多勤劳善良的人,那里没有等级,没有剥削,大家都无私的贡献出自己的劳动成果让大家一起来分享。都自觉的遵守着他们自己制定的平等的制度GNU,那个繁荣自由的国度就是Linux。

“啊?Linux!”.net吃惊的叫了起来,“我知道!我爸爸说那里是坏蛋居住的地方,那里的人们很穷,他们自己不知道怎么去赚钱维生,每天只想到去如何攻击掠夺别人的家园,还一直嚷嚷着要把我们的家给拆散,要把我们家里的东西全部抢走!”

“那些并不是真的”ximian平静的说:“我可以带你去那里看看,美丽的小姐,你会被他们的勤劳善良和伟大给感动的”。

“真的吗?”.net美丽的大眼睛里闪动着向往和好奇,然后坚定的说:“我一定要去那里看看,即使是父亲不允许,我也一定要去!”。

当晚,.net脱下高贵的华服,换上粗陋的布衣,跟ximian出发了。

此时,老比其实把一切都看在了眼里,但是他并没有阻止ximian,他叹了口气说道:“去吧,孩子,毕竟时代不一样了,你一定会成为我们家族最大的荣耀的”。同时,他的嘴角闪过了一丝不容易被察觉的微笑,精明的老比此刻正想着什么呢?

故事还在发展,现在还看不到任何结局,.net在linux国度里改名叫做mono,她从最基本的开始学起,慢慢的适应了linux的生活,一年过去了,mono终于推出了最新的版本0.13,在这个版本里,我们看到了很多重要的进步,慢慢的开始显露出了.net的才华和美丽。

下面,我们要做一些测试,看看.net是否真正的适应了linux的生活,和她原来比起来究竟有多大的差距,同时,我们还邀请到了java,做为友情客串,她只是提供一些参考性的测试数据。当然,这并不是一场和java很正式的比赛,有点难为mono了,毕竟,mono还只是一款正在开发中的产品。

首先,我们来进行一个循环测试,循环测试被很多人指责太过于简单,不能很好的反映出真实的运行环境,但是它的优点也在于它的简单,因为程序越复杂,写法就越多,争论的焦点就变成了如何对程序进行最优化,例如著名的宠物店大战。同时也因为曾经有一个很有名的测试,是对一个jsp的循环速度测试,结果是jsp是7秒,asp和php都是80多秒,被java爱好者津津乐道了很久,我当时也用asp.net测试过是2秒,当然操作系统环境不一样,不具备太大参考价值。也是后话。

下面是用于进行测试的程序,主要功能就是执行十亿次循环,循环里面有一个加法运算和一个赋值运算。硬件测试环境为:P3-M 1.2G, 512M, 30G(笔记本电脑)。软件测试环境为:Mono 0.13 for Linux, Mono 0.13 for Windows, .Net Framework SDK 1.0.3705(中文版), J2SE 1.4.0_01 for Linux,J2SE 1.4.0_01 for Windows, Windows操作系统为:Windows XP中文版,Linux操作系统为:Mandrake Linux 8.2。编译方式均采用默认选项。输出的结果均为运行所需时间,单位为毫秒。

以下是该测试程序的C#程序代码:

using System;

class test

{

static void Main(string[] args)

{

int temp;

DateTime a = DateTime.Now;

for(int i = 0; i < 1000000000; i++)

{

temp = 1+1;

}

DateTime b = DateTime.Now;

TimeSpan c = b - a;

Console.WriteLine(c.TotalMilliseconds);

}

}

以下是相应的java程序代码:

import java.util.Date;

public class test

{

public static void main(String args[])

{

Date before = new Date();

long a,b;

int temp;

a = before.getTime();

for(int i = 0; i < 1000000000; i++)

{

temp = 1 + 1;

}

Date after = new Date();

b = after.getTime();

System.out.println(b - a);

}

}


由于mono自己有编译器和执行环境,那么我们就要分别对编译器和执行环境进行测试和对比,下面是测试过程和结果:

(所有测试结果全部是运行十次,取最短的一次时间)

在windows下的测试:

使用mono的C# 编译器编译以上代码命令行:

monomcs /out:mtest.exe test.cs

提示编译成功,产生一个mtest.exe文件。

直接输入mtest,采用microsoft的.net运行环境来运行,程序运行成功,没有任何错误提示,显示运行结果为:2613

输入mono mtest.exe,采用mono的.net运行环境来运行,程序运行成功,没有任何错误提示,显示运行结果为:4336

使用microsoft的C#编译器编译以上代码命令行:

csc /out:wtest test.cs

提示编译成功,但产生了一个警告:“temp变量已经被赋值,但是从未使用过”,这个警告是正常的,我们可以不用管它,它也不会给这次测试带来任何影响。同时生成了一个wtest.exe文件。

直接输入wtest,采用microsoft的.net运行环境来运行,程序运行成功,没有任何错误提示,显示运行结果为:2563

输入mono wtest.test,采用mono的.net运行环境来运行,程序运行成功,没有任何错误提示,显示运行结果为:2654

使用java编译器编译java源文件:

javac test.java

结果没有任何错误和警告提示,并生成一个test.class文件

输入:java test,采用java运行环境来运行,程序运行成功,没有任何错误提示,显示运行结果为:6039

在linux下的测试:

将以上三个可执行文件:mtest.exe , wtest.exe, test.class及源码文件test.cs,test.java拷贝到linux系统下。

具体操作和windows下没多大区别,这里只报告一下结果:

mono mtest.exe结果为4205

mono wtest.exe 结果为2527

java test结果为 4197

然后用linux下的编译器分别重新编译了Mono和Java的源码,运行:

ono test.exe 结果为 4205

java test 结果为5876

这里值得一提的是,mono的for windows版和for linux版编译出来的代码没有任何差别,运行结果也几乎没什么差距。Java的for windows版和for linux版编译出来的两个class文件有差异,并且运行结果也有很大的差距。

另外,由于mono在两个平台下编译出来的可执行文件完全一样,所以没有将linux下编译的程序放到windows上进行测试,仅仅将java在linux下编译的可执行程序放到windows上进行测试,结果是5087。

以下是这次测试结果的对照表(毫秒):

编译器

平台 .Net Framework MONO.Net JAVA for Win JAVA for Linux
.Net Framework 2563 2613 - -
Windows 2654(Mono) 4336(Mono) 6039(java) 5087 (java)
Linux 2527(Mono) 4205(Mono) 4197(java) 5876(java)

通过比较这个测试结果,我们发现了两个很有趣的现象,一个是mono的jit在运行原生.net编译器编译出来的可执行文件时,效果很好,和原生.net的jit运行效率很接近。但是运行它自己的编译器编译出来的可执行文件时,效率却变得很差,这种情况在windows和linux下都一样。但是原生.net的jit运行mono编译出来的可执行文件却又还可以。难道是mono不喜欢自己的亲生儿子?:)

还有一个是java的“跨平台”能力最强,在windows下编译的程序,放到linux下执行起来速度比较快,在linux下编译的程序放到windows下执行比较快,难道这就是java为跨平台能力进行的优化? :)

另外,值得一提的就是在windows下用java编译的本程序直接放到linux下使用会产生两个警告。重新编译以后警告消失。

在这次的测试中,mono不负众望,以远远出乎我们意料的好成绩和.net站在了同一条线上(甚至可以看到本次测试中的最好成绩竟然属于mono,但是我认为几十毫秒的差距完全可以忽略不计,不能认为mono的效率超过了.net)。同时,无论是在windows平台,还是在linux平台,mono的表现都超过了java。要知道,她还仅仅只是一个在开发中的产品。

.net拥有最先进的技术,拥有最速的效率,现在,她不仅能跨语言,还能跨平台,甚至还开放了源代码,Mono的开发计划中就有Linux, Power PC, Solaris, Strong ARM等版本。还有微软支持的FreeBSD版本。

当然,java也不会是省油的灯,不知道SUN的下步棋会如何走,才能得以抵挡住.net大军的疯狂进攻。

web应用, 遵循所谓的标准还是从实际出发?

, , , ...

我们可能已经习惯了写IE ONLY的代码, 但最近又有什么这个标准那个标准的出现, 好象我们必须什么都要参照标准了
但马上我们发现IE ONLY的代码往往和标准有许多出入, 要想让你的网页效果符合所谓的标准, 你就要付出相当大的代价在动手术上...
最终的目的是希望在所有符合标准的浏览器上都能正确显示
为了避免以后再出现这样需要动手术的情况, 有一种建议是: 养成从最开始就遵循标准的习惯!


好吧, 标准是吗?

我去哪里找"标准"的参考文档? 从我知道w3c标准以来, 我就一直没有找到所谓标准的完整对象参考文档... 举个例子说: 就是event和window对象, 我一直找不到确切的定义说应该如何使用window和event对象! 我是很想遵循标准, 但你不告诉我标准是什么样子的, 叫我怎么遵循? 就像旧社会, 你都不让老百姓知道哪些事情是不被允许的, 怎么能让老百姓成为"良民"??
也许是我笨, 找不到怪我自己, 但我想: 既然希望大家都遵循这个标准, 为什么不把标准的定义放在人人都能很容易找到的地方呢??


标准是什么?

我一直以为, 只要主流的厂商或产品都支持的东西, 就是标准!
但是事实上有很多ff/moz和ie都支持的东西, 是"没有公开标准"的! 这算什么??难道我要为了遵循这个所谓的标准而放弃几乎所有浏览器都支持的特性吗??
呵呵, 虽然我在用opera的blog, 但我不觉得在这里说opera以外的东西有什么不对的地方. 其实我觉得只要标准切合实际, 对浏览器开发者对网页设计者还是对普通访客, 都是有好处的!!


为何从实际出发??

有些时候我们做的东西可能要用到特定的一个浏览器才具有的特性(与此类似的就是需要安装插件的一些东西), 比方说我经常喜欢用只有IE才有的一些功能. 现在标准来了... 标准中是没有这些东西的...
那么, 我是应该从我的作品中干脆去掉这些功能来符合所谓的标准? 还是说保留这些IE ONLY的功能以方便为数不少的IE用户??
我以为, 我的东西最终是要给用户用的, 而不是什么鸟标准.
正如许多游戏只有for windows版本一样, 我的作品也可以只有for ie版本.
至于爱用哪个, 就不是我可以干预的了.

当然, 在有可能的情况下, 我还是很愿意靠近"标准"的

第一篇

该死的厕所门, 差点把我憋厕所里出不来!