飞行石

在早晨赖在被窝里不出来
就是我在冬天里最大的幸福!

2006年3月27日 #

Div的潮流

据说Div魔力无穷,本着试试看的态度来玩儿了一把,发现真不那么简单,首先布局就比较麻烦,不过在DW里面毫无困难地实现了,做了一个小型aspx的页面然后“恶意”地提交了大量数据(主帖、回复那样),基本达到天涯一个长篇帖子的数据量了,不分页。每个帖子占用2个Div:标题和内容。
结果发现一些有趣的信息:
1. 单个帖子较少数据量(每条2k以内),帖子数较多(约100条,好像还不够)。结果IE的CPU占用40%左右,大概没问题;FireFox的CPU占用在17%左右,没问题;
2. 单个帖子录入超大数据量,也就是一个DIV里头嵌入大量文本(每个40k左右),减少帖子数(20条)。结果IE开始假死,CPU占用高达99%,FireFox占用CPU20%,还是没问题;
3.不考虑左右布局,将Div的嵌套去掉一些,只保留帖子占用的Div,再循环显示前两种方法,IE的资源占用有所降低,前者70%,后者40%;而FireFox还是20%左右;

4.将Div布局改为Table布局,1,2两种方案IE和FireFox显示较慢,但是CPU占用均不大,IE占40%,FireFox还是20%。

也许是我的机子太老(CII566+SD512M)了吧,但是毕竟看出了FireFox和IE两个阵营的一些差距,虽然现在的电脑个顶个儿地快,但是程序设计也应该考虑一下性能吧。感觉微软在这方面有点欠缺了,虽然产品越来越牛,但是消耗的系统资源也呈指数级的增长,简直就是逼着人家换电脑。

不考虑浏览器阵营的差别,这个小测试感觉Div的显示速度要比Table快很多,但是总体的资源占用要比表格大多了。

据W3C的官方文档说DIV是用来做结构化的,不过感觉离现实还很远,所以还是拿来当布局使用了。

posted @ 2006-03-27 12:57 飞行石 阅读(82) | 评论 (0)编辑

2005年11月17日 #

突破屏蔽限制,自己的网站使劲弹新IE窗口(2005-11-19更新)

(代码已经更新,注意不能在本地浏览,受IE的安全限制,需要放在Web服务器中运行)
写这篇文章并不是要告诉垃圾广告商可以尽情弹出广告或者后台隐藏弹出窗口,而是提醒大家IE内核还有一些冬冬可以绕过大多数以IE为内核的浏览器的广告屏蔽功能,甚至绕开这些浏览器本身,直接弹出一个真正的Internet Explorer窗口。当然并不是全部,有的还是做的比较好的,而不会砰地弹出一个IE在后台放着,但是TT,Maxthon等一些浏览器就不行了,能直接打开为新的IE窗口。Google工具条版本不同效果不同,但是有一个共同点就是它们是通过判断(window.open字符串,包括showModalDialog、showModalessDialog也是,而通过eval便可以饶过:))(老版本的Google也是,新版本解决了)。自古都是一物降一物,希望能有相应的解决办法。

原理很简单。大多数浏览器的弹出式广告屏蔽功能执行的是屏蔽window.open这个函数。当然,还有少数工具和软件可以屏蔽showModalDialog和showModalessDialog这两个函数,而showModal类函数只要能运行便能打开一个模态窗口。而IE是完全封装了这个函数,所以在showModal类函数中运行window.open()是无法屏蔽的。

所以知道这个原理便可以自己写几个javascript便能使用。
1.用showModalDialog打开一个指定页面
2.指定页面内不需要有内容,只需要执行一个window.open()便能新打开开你窗口
3.打开这个窗口后在模态窗口中将其关闭(window.close())
这样可以通过模态窗口间接地打开你要打开的窗口了。

相关代码:
主页面内代码:

<html>
<head>
<title>Untitled</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
</head>
<body>

<SCRIPT language=javascript>

function showDialog(dialogUrl){
 
var sUrl = dialogUrl;
 
var sFeathers = "dialogHeight:1px;dialogWidth:1px;help:off;resizable:off;scroll:no;status:off";
 
//sUrl = sUrl
 window.showModalDialog(sUrl,"",sFeathers);
}

function openUrl(sUrl){
 
var dialogUrl = "txdialog.htm";
 dialogUrl 
+= "?r=" + Math.random()*100000;
 dialogUrl 
+= "&url=" + sUrl;
 document.getElementById(
"result").innerHTML=dialogUrl;
 showDialog(dialogUrl);
}
</SCRIPT>
输入要弹出的地址: 
<INPUT id=txtUrl value=http://www.sohu.com name=txtUrl size="20"> <INPUT onclick=openUrl(txtUrl.value) type=button value=test> <br><span id=result></span>
</body>
</html>


在模态窗口所在页面(txdialog.htm)内放如下代码:
<html>
<head>
<title></title>

<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
</head>
<body>
<SCRIPT language=javascript>
 
function Request(strName)
 {
  
var strHref = location.href;
  
var intPos = strHref.indexOf("?");
  
var strRight = strHref.substr(intPos + 1); 
  
var arrTmp = strRight.split("&");
  
for(var i = 0; i < arrTmp.length; i++)
  {
   
var arrTemp = arrTmp[i].split("=");
   
if(arrTemp[0].toUpperCase() == strName.toUpperCase()) return arrTemp[1];
  }
  
return "";
 }
 
var sUrl = Request("url");
if(sUrl!=""){
    
//alert("即将打开该地址:\n"+sUrl);
    eval("wind" + "ow.open(" + "sUrl);");
    window.close();
}
</SCRIPT>
</body>
</html>

要查看效果演示可以访问:
http://200101022.ik8.com/txtest.htm (IK8测试空间,估计很快就关闭。所以如不能打开,请下载后自行配置在Web服务器)

下载:
http://www.cnblogs.com/Files/senyx/iepoper.rar
注意不能在本地访问,因为他仍然不能逃脱IE的安全限制,请放在Web服务器中访问。如IIS,Apache,tomcat,coldfusion等。

posted @ 2005-11-17 13:16 飞行石 阅读(1905) | 评论 (12)编辑

2005年11月14日 #

2005-11-14

我的直接导师老大找我,让我帮他改进一下他的一个软件。其中有这么一个类似Photoshop的描边的插件的功能:
查找指定的轮廓,进行描边,我随便拉了一个进行测试:
o_ColorFile.jpg        o_GrayFile.jpg
左图是原始图像,右图是经过一个算法处理后的图像;导师说按照这个算法处理(必须转换成灰度图象)彩色信息就丢失了,希望我能通过原始图像把图像彩色信息还原上去,这样他的这个算法就比较完美了。我的工作也很简单,仅仅是把HSB和RGB转换一下,第一次研究了一下GDI+,写一个.NET 的WinForm,然后扫描像素进行叠加。处理完毕后就是这个样子:
o_CSIEFilled_-1.jpg
这个东东有什么功能我还具体说不清楚,主要是老大说得还不太理解,慢慢研究吧。

我的处理流程:
1.读取原图像和处理后的灰度图象,转换成位图格式;
2.因为两幅图按照规范是一样大小,我就遍历灰度图象的每一个像素;
3.同一座标上从原图读取RGB信息,转换成HSB信息,取出色环(Hue)和亮度(Light)数值,丢掉饱和度(Saturation)值,从灰度图象中读取饱和度值。(.NET Framework中我没有找到HSB到RGB的转换,便把java里的Hsb2Rgb函数拿过来用了,没学过色彩,不清楚原理,不过java的代码稍作修改便可使用,结果经过暴力测试也完全正确。)
4.将读出的HSB合并,输出RGB,生成新的一幅位图,保存一下,完毕。
算法很烂,我甚至连优化性能的锁定内存都没有使用,老奔上运行一次可以消耗30秒左右时间,不过嘛,在老大的机子上跑只需要10秒不到,基本满意。不过可以完成任务了。

posted @ 2005-11-14 11:14 飞行石 阅读(320) | 评论 (1)编辑

新的工作地点

导师把我转让给了旁边大学的一个教授,那个教授又把我转让给测绘局某院的一个部门,和几个师兄一起做一个WebGIS项目,教授说机子不够,让我自带电脑,害得我嗨吃嗨吃地抱着机箱打的从城东跑到城西,师兄说我的机子太老(CII566+512M+120G+GeForceMx400 64M)根本跑不动,想想算了吧,本来就不是我要搬机子来的,导师的事情,麻烦。
不过我觉得嘛,这台机子已经发挥出最大性能了,java和.NET一起跑,Oracle 9i只敢装客户端,编程第一次用eclipse第N次写java(),感觉有点慢,打开要2分钟不到,
据师兄说在这里可以拿到1千多块钱补贴,想想研究生时期这些钱已经算不少了,至少能满足基本生活费,班上给导师干活的好几个只能拿点每天8块钱的伙食费,稍微窃喜一下,至少做了那么多年的asp,.NET,SQL Server,HTML,Javascript等,现在可以换换口味,搞一下java和GIS了:)
导师说这个师兄是他实验室里头第一牛人,GIS高手,就当小弟吧,虚心跟他学习去。

posted @ 2005-11-14 09:18 飞行石 阅读(80) | 评论 (1)编辑

2005年11月11日 #

2005-11-11

研究生生活满1年了,感觉还是无法融入班级生活,全年级100多号人,能叫出名字的不到10个,关系不错的不到5个,也许是工作了3年后再回到象牙塔,那里对我来说已经没有理想可言,对我来说,我是带着一定的目的去读书,对他们而言,我太实际了,纯粹是油条一个。
或许是研究生真的太理想化,也或许是研究生就是所谓的小咪喳,但是对我来说,研究生在导师眼里已经变成一个纯粹的赚钱工具和廉价劳动力:没有报酬、没日没夜地干活、责骂的时候要忍气吞声,不能说三道四,接到外面的活儿导师要按比例提成。
MM(做分子生物学方向)的导师更可怕,每月所里就只发220元补助,她老大还要扣除100,签字的时候却要签领了220元。每次问得时候都是搪塞说接待领导、购买实验手套、DNA枪头等,但这些几十块钱的东西一直都是我来掏钱买的,郁闷...

在科研工作的第一线已经不再是各个所里的编制内员工,也不是教授导师之类,而是这些可怜兮兮的研究生,看看国内新出现的什么院士之类的人物,他们发文章都不用自己动手,手下的小弟全部搞定,要是看到某个院士是××局长的话,那它的文章或工作肯定是研究生的大手笔,就我所在的范围内而言,就没听说过这里有哪个××长干活的,而我们的文章和工作成果却要以他们为第一作者。换句话说,研究生真的是猪狗不如。

posted @ 2005-11-11 10:02 飞行石 阅读(111) | 评论 (3)编辑