2006年05月12日

在看asp.net探秘,在测试4.4的代码的时候遇到了一个很搞笑的问题:
先看看代码吧:

<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" Culture="auto" meta:resourcekey="PageResource1" UICulture="auto"  %>

<html>
<head><title>StateBag.aspx</title></head>
<body>

<form id="Form1" Runat="Server">

<asp:Button ID="Button1"
  Text="Click Here"
  OnClick="Button_Click"
  Runat="Server" />

<p>
<asp:Label
  ID="lblCount"
  Runat="Server" />

</form>
</body>
</html>
代码:

    Protected Sub Button_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
        ViewState("TotalCount") += 1
        If ViewState("TotalCount") = 5 Then
            lblCount.Text = "You clicked 5 times!"
        End If

    End Sub

看起来好像很明显的样子,按五次button就会出现You clicked 5 times!。但是测试的时候我居然发现我按了3次字就出来了!
于是在好奇心的驱使下加上了一句Response.Write(ViewState("TotalCount"))---结果按一次button它会执行两次btn_click事件!并且第一次输出12 ,第二次输出34!真是奇怪了~~不知道为什么会这样子。

2006年05月10日

一开始要在flash中定义一个混合数组,结果就这样定义了:

var k:Array = new Array();
k=[[1,2,3],[g,5,j],[7,8,9]];

结果在引用字母的时候出现了传说中的undefine…

多方寻思不得其解后,忽然发现自己犯了一个相当的常识性的错误,忘记给字符加上引号了。然后改为

var k:Array = new Array();
k=[[1,2,3],['g','h','j'],[7,8,9]];

就能正常引用了。

2006年04月02日

从这个双休日中学习CSS+div定位中,我对CSS有了粗略的理解,虽然从无限重叠这方面来讲的确是div占上风的但是我仍然认为div能做的table能做得更好(至少是从目前来说)。

对于一个初学者来说,用table定位的确要方便很多,而且css的属性也不是不能用在表格上。怎么说呢,表格和div同样作为定位的元素,只要是好好利用个人认为是没有优劣之分的。当然从根本来说,div才是王道,因为它实现了数据和样式的分离,在分工越来越细的今天这个绝对是一种趋势。

留下的问题就是关于position的。当position为绝对定位的时候,div标签表现为一个层,可以使用z-index,如果position的位置为相对定位或者无设置的时候它就表现为一个标签..也不能使用z-index属性,还真奇怪呢!今天我尝试将模板中的顶部图片进行绝对定位,然后底部版权说明之类根据内容的多少来调整位置。结果,文字内容就是不出来(给绝对定位的图片挡住了),然后尝试多种方法不果后干脆放弃了…

看来CSS的标准就是好的,如果再方便一点就更加好了,例如可以直接继承父类的位置属性等等(应该是可以的,只是我不知道而已)。

相关的收获就是如何将页面分割。当然学到的是一种思想,一种如何将问题最佳分解的思想..不过到最后还是发现自己分割的页面是在基本布局那里找不到的…韩国风格的模板,我恨死你啊~~

设计自己的网站,就尝试着用div+css来试试。

可能是模板或者是我能力的缘故,搞了两天都没个头绪。最大的障碍当然就是布局的问题。以前多好,啥都不用想,把模板一割,调整一下就能用了..现在又要打开DW,慢慢给那些该死的东西搞设置,还要慢慢学习给那些div层定位…痛苦啊!明天决定先恶补css布局的知识,暂时不浪费时间去页面那儿了…郁闷到死..

看来好像也只能用浮动的方法来给层定位了。。痛苦中..

2006年03月31日

http://acm.pku.edu.cn/JudgeOnline/showproblem?problem_id=1000

首推题目,计算a+b然后输出C的值。

http://acm.pku.edu.cn/JudgeOnline/showproblem?problem_id=1003

叠纸牌….就是求等比公式的值

http://acm.pku.edu.cn/JudgeOnline/showproblem?problem_id=1004

算平均值

http://acm.pku.edu.cn/JudgeOnline/showproblem?problem_id=1007

求逆序数然后给它排序…

(未完待续)

2006年03月28日

今天拿巴比伦词汇8000和星火式1-6级词汇做了一下测试,得出结果如下:
记忆方法:写读想结合:就是写英文的时候在脑中写出单词的样子,同时念中文意思,脑里面想的是这个单词的中文意思;写中文意思的时候脑中复现单词的“音容笑貌”每个单词一次。
记忆时间:巴比伦词汇两个单元120个单词,用了20分钟,星火式10个单词,用了三分钟。
就是说,要记忆300个单词用巴比伦大概是要一个小时,星火式大概1.5小时。
这样子六级6000个单词用巴比伦看完大概是20小时,星火30小时。加起来一共就是50小时。
估计是要记忆三次才能完全记忆,每次根据记忆方法的熟练度和对单词的熟练度的时间根据50%递减,那么就是50,25,12.5,加起来一共88小时。
计划是一个月复习完成,那么平均一天要花三小时进去。
晚修的时间是从六点半到十点半,就是说我每天都要去晚修才能在一个月把单词完全掌握…

然后再算算我在poj AC题目的时间。一道题思考时间1小时+编程构模等时间1小时,修改bug0.5小时就是要2.5小时,手上一共有43题要AC除去零头大概就是130小时。当然这些时间可以在空隙时间思考,所以减半就是65小时。
就是说我要保证一天有6个小时的学习时间…除去睡觉8小时我一天只有10个小时的自由时间了。再减去六小时的上课时间和1小时的吃饭时间,和中午睡觉的时间,大概只有两个小时就是我晚上10:30回来聊天的时间…我大概就只有晚上10点30分后有空了。

2006年03月27日

如果有个女孩为你哭,你们必是已经走到了尽头。想必她还爱着你,而你却是早已经不爱她。
  所以,不要因为她的眼泪而回头,不要因为可怜她而假装自己还爱她,不要因为在转身的刹那看见她的脸还会怦然心动而误以为自己还余情未了。
   请你看清楚,那是同情,不是感情。
  如果你因为她的眼泪而再次伸出自己的手指,会发现最终抓住的,不过是两个人的寂寞。所以,如果有个女孩为你哭,请你放弃她。
   不要期望她会很快振作,不要担心她在将来想起你的时候会恨你,如果是这样,她不是真的爱你;真的爱过,便不应该有恨,时间会让她了解,对于深爱过的人,最后的,唯一的纪念,只有感谢。
   感谢你曾经走进她的生命,把生命中的一段时间给她,并且和她一样投入过。虽然一切已是昨天,虽然想起你的时候她还是会忍不住屏住呼吸,但是仍然感谢你,让她相信上苍是有恩赐,让她懂得爱、不爱、勇气、纪念、遗忘、感激、以及面对失去。
   所以如果有个女孩为你哭,请你放弃她。
  不要把同情当作施舍,不要让两个人都陷入欲走还留,欲说还休的境地。
   放弃,不是离去。
  你爱她的时候,是真的爱她;不爱她的时候,也是真的不爱她。所以如果有个女孩为你哭,你要做的,是祝她幸福,而不是替她找幸福。放弃,才是拯救。给她一条新生的路途,可以遗忘,可以纪念,可以离开,可以出发,去往真正属于自己的前方。
  如果有个女孩为你哭,请你放弃。

最近看了div+css的相关文章,头脑一热就马上把这个blog美化了一下..改动不是很多但是也足够让我明白更加多的css样式了。和以前相比,的确对div+css的认识理性了很多也知道了很多以前不知道的事情,所以也有了下面的css…

html{
 scrollbar-face-color:#DDDDDD;
 scrollbar-highlight-color:#CCCCCC;
 scrollbar-shadow-color:#CCCCCC;
 scrollbar-3Dlight-color:#DDDDDD;
 scrollbar-arrow-color:#FFFFFF;
 scroll-track-color:#DDDDDD;
 scroll-darkshadow-color:#DDDDDD;
}

body{
 margin:0px 0px 0px 0px;
 text-align: left;
 background-attachment:fixed;
 background-repeat:repeat;
 background-color: #6699cc;

}

a:link {
 color: #9932CC;
 text-decoration:underline;
}
a:visited {
 color: #666666;
 text-decoration:underline;
}
a:active {
 color: #666666;
 text-decoration:none;
}
a:hover {
 color: #666666;
 text-decoration:none;
}


div.postTitle a:visited,
div.postTitle a:active,
div.postTitle a:link
{
 color: #6495ED;
 text-decoration : none;
}

div.post
{
    padding: 0px;
 margin: 0px;
 background-color: #ffffff;
 border: solid 2px outset;
}

div.postTitle
{
 font-size:14px;
 color:#4682B4;
 font-weight:bold;
 padding-left:5px;
 border-bottom: gainsboro 1px solid;
 background-color: whitesmoke;;
}


div.postFoot
{
 background-color: whitesmoke;;
 border-top: gainsboro 1px solid;
 font-size: 9pt;
 padding-right: 0px;
 padding-left: 0px;
 padding-bottom: 0px;
 padding-top: 0px;
 text-align: right;
}

#leftmenu {
 background-color: White;
 border-bottom: gainsboro 1px solid;
}

#leftmenu h3 {

 background-color: WhiteSmoke;
}

#leftmenu ol
{
 background-color: WhiteSmoke;}

这里对代码支持的确不好,麻烦。

2006年03月26日

昨天晚上在luar大大的blog那里看了篇《flash8,你的未来没有来》 ,看到luar大大列举了多多的flash的不利之处,例如和传统的浏览网页操作方法有违背拉,RIA的工具效率不高拉,对大量的数据处理能力不强等等。自此我也明白了为什么诸多大大的blog都是基于基本的网页而不是flash。我还幻想着搞一个flash blog呢,原来是没必要的。

说了那么多废话也该转入正题了

前天昨天留意了一下web2.0,按我所了解的也就是数据和页面设计分离,用div+css来实现。这个和xml的概念也差不多..

于是我就在想,flash也可以实现页面和设计分离吧!按照web2.0的盒子模型,我就做起来了..

Margin层:

直接用代码做了个MC,就把它当作了Margin层。

background-color,border:

在margin层里面再做一个MC,用纯色填充,用上lineStyle,连border一起做了。

background-image:

新建一个MC,load上一张图片也解决了

padding,content

新建textarea,有rightMargin和leftMargin,硬是找不到top和bottom,也算搞定了。

好像整个web2.0的基本概念就出来了,然后我们再实现内容和设计的分离吧。

内容用xml为载体,样式用as控制。

用xml类来装载xml,那个累啊,那个痛苦啊,我觉得这样子我干脆写ajax算了,反正本质都差不多。用xmlconnector组件,外加绑定呢?那个涉及到了RIA的范畴,实现倒轻松了,样子却不好看了。如果自己导入类来创建呢?绑定麻烦,还有写大量代码,不划算。动态载入txt呢?看了看例程,多好,人家flash不但能载入html,还能用样式表呢!

样式用as控制还好哦,基本上flash所呈现给用户的你都能加以控制,这点值得赞。
在一开始我的计划是这样的:一个container的as,就是用来创建那五层的原型,一个style的as,用来控制页面样式,一个xml的as,专门用来发送数据。但是经过了一天那么长的时间,我的伪web2.0的flash的as变成了一个style的as,一个专门装载文字的as。我深深地体会到:flash其实是用来做故事和做一些很绚丽、内容不多,专门用来展示形象的页面的。为了方便页面的更改,独立出style的as是很必要的,装载文字的as则是为了方便修改内容。总的说来,做“web2.0”的flash网页真的很无聊而且很没有必要..个人意见而已。
另外呢,用flash来做RIA程序其实还是不错的,前提组件的效率有大幅度的提高,不然基于FLASH的RIA程序效率绝对高不到那里去,做出来也只能是给人骂…

2006年03月24日

刚刚浏览到一篇:《为什么要使用 CSS?》的文章:

自从 Dreamweaver MX 2004 发布以来,我曾经无数次向 Dreamweaver 的新老用户演示它的新特征和新功能。每次进行产品演示,我很快就会极力称赞 Dreamweaver MX 2004 设计和呈现 CSS(或层叠样式表)的新功能。

然而最近某位新用户问了一个问题,说实话,这个问题一下子让我张口结舌。这位用户只是问:“我为什么要使用 CSS?”当时我意识到,尽管我们这些每天与 HTML 和 CSS 打交道的人非常了解 CSS 的优点,但仍有很多人并不了解。或者说并不完全了解 CSS 所能提供的所有优点。本文是我对上面那位新用户的书面回答。

CSS 起源
回顾 CSS 的优点之前,我要先介绍一下它的历史。Web 管理组织 W3C 在 1996 年 11 月推荐使用 CSS,并批准了 CSS 1 级规范。CSS 1 级规范说明了用于 HTML 页面的属性。这些属性代替了传统的字体标签和其他“样式”标记,例如颜色和边距。1998 年 5 月,W3C 批准了 CSS 2 级规范,将一些附加功能添加到 1 级规范,并引进了定位属性。这些属性代替了表格标签普遍(但是错误)的用法,用来设计页面元素的表示。CSS 规范的最新版本是 CSS 2.1,它改进了某些属性,并删除了在当前浏览器里没有作用或作用很小的属性。

不幸的是,就像很多新技术一样,CSS 经历了漫长的过程才被广泛采纳。其中的重要原因在于浏览器,以及为这些浏览器建立站点的 Web 设计者们。CSS 批准期间,Netscape Navigator (NN) 仍然是主导浏览器,而该浏览器基本上不支持 CSS。Microsoft 在其第 3 版浏览器中添加了对 CSS 非常有限的支持,但当时大多数的 Web 设计者(本人在内)仍然将 NN 作为首选平台进行页面编码。

很多年来,每发行一个新版本,浏览器制作者们都扩展了对 CSS 的支持。今天,Internet Explorer 6、Netscape Navigator 7、Mozilla、Opera 和 Safari 都全面支持 CSS。但这并不意味着我们作为 Web 设计者和开发者的生涯不存在问题。尽管上述所有浏览器都支持 CSS Level 2,它们的兼容程度仍然各不相同。而且在某些情况下,特定属性仍然会带给你很多麻烦。也就是说,您仍然需要遵守老的信条“测试再测试”。但如果您坚持使用 CSS 规范的核心属性,您将能够正确地呈现页面。

但是为什么 W3C 认为需要创建 CSS 规范呢?当我创建基于 HTML 的 Web 站点和应用程序时,这一切对我又意味着什么呢?我认为,我们需要使用 CSS 的理由以及它带来的优势可以分为以下三个主要方面:灵活性、呈现性和可访问性

灵活性
我确定几乎每个 Web 设计者和开发者都经历过这样的痛苦时刻:当您小心地布置好页面,完成所有嵌套的表格后,客户要求进行一点“小小的”更改。这小小的更改可能只是“能不能把那个图形稍稍往左移动一点?”,也可能非常富有戏剧性:“我不喜欢这些标题,能把它们的字体弄大一点吗?改字体的时候,顺便把颜色也改了,怎么样?”如果只需要处理有限的几个页面,您可以深吸一口气,花上大半个小时做那些让人恼火的改动。但如果涉及到较大的站点(而这已经很常见),一个简单的更改无论如何也简单不了。

这样的情形为什么会如此痛苦呢?因为定义页面外观的标记本身就是页面的一部分。要看到实例,您只需到任何站点的任何页面上去数一下 font 和 table 标签的数量。只要您能够从实际页面的流程(或代码)中删除这些标记,或者采用更好的办法,即将其外置,您就可以进行集中更改。而这就是 CSS 所能做的。

如果使用一个或多个外部样式表,通过修改样式表然后将修改后的版本上载,您就可以将更改应用到站点。

想象一下,在传统的基于表格的布局中,将站点浏览从页面左侧移到页面右侧将有多么困难。这需要几个小时重复而乏味的工作。但是,如果您选择使用 CSS 的定位属性(通常称作 CSS-P)来设计页面,只需更改外部样式表中的“浮动”或“位置”属性,即可更新页面。而且还有以下附加优势:您更新了站点中使用该样式的所有页面。

呈现性
由于宽带的广泛使用,很多开发者已经不再考虑在浏览器中呈现页面所花费的时间。但是,你们应该记住,很多目标用户仍然在使用拨号连接。传统的基于表格的布局是页面下载速度慢的主要原因。因为浏览器从服务器接收页面时,必须首先检查并“理解”一系列复杂的镶嵌式表格。它必须先找到镶嵌在最里面的内容,然后小心地逐步处理代码,直至到达最外层的容器,即 body 标签。完成以上所有过程后,浏览器才能开始在屏幕上呈现内容。

如果使用 CSS,浏览器从服务器接收内容后,立刻就可以开始呈现过程,因为页面中没有或只有很少的显示标记。

使用外部样式表还有一个潜在的呈现方面的好处。在传统的基于表格的方法中,浏览器必须检索、分析并单独呈现每个页面。也就是说,浏览器在您的站点上显示第 30 页时耗费的工作和显示第 1 页时一样多。

但是,如果使用外部样式表进行显示,站点的第一页将提示浏览器将页面使用的已链接样式表文件缓存起来。这意味着站点中所有使用上述样式表的后继页面下载速度会更快,因为浏览器已经缓存了样式表。

最后一个与呈现有关的优点让我想起电影《莫扎特》。电影中,莫扎特问国王对自己的歌剧有什么看法。国王说很好,但是很沉闷。莫扎特一再追问,国王解释说,问题就在于“音符太多”。Web 设计也可能有同样的问题,当然这里的音符指的是实际 HTML 代码。代码越多,浏览器理解页面所花的时间就越长。

大家也许都听说过有关官方应用程序的传言,它们编写了非常糟糕的代码,满是复杂的信息,然而文档页面却无法呈现。作为 Dreamweaver 的用户,你们不会遇到这样的问题,但是如果编写了太多代码,你们也会感到内疚。典型的基于表格的设计就是一个很好的例子。

在设计中使用 CSS 后,您将减少客户需要下载的代码的数量。仅仅减少某些页面中的字体标签就可以大大减少代码的数量。在很多情况下,如果完全使用 CSS-P 进行设计,代码的数量最多可以减少 50% 甚至更多。代码减少就意味着页面下载的速度加快。

可访问性
如今我经常听到人们谈论可访问性。大多数开发者知道自己必须考虑建立更多可访问站点的问题,但在更大的程度上,只有为政府或教育机构建立站点的开发人员才被迫真正做到了这一点。考虑到可访问性的问题时,大多数开发人员认为这仅仅意味着需要将 alt 属性添加到图形中。但实际上,提高可访问性有很多工作可做,CSS 使您可以轻松建立可访问站点。

可访问性的主要问题(也是使用 CSS 能够解决的问题)在于辅助技术(例如屏幕阅读器)怎样“阅读”页面。传统的基于表格的环境下,屏幕阅读器面临一个巨大的挑战,那就是决定怎样阅读页面。想想吧,当屏幕阅读器遇到镶嵌很深的表格时该有多么困惑,它应该阅读内容,还是跳过内容?跳过内容后,以后怎样返回内容?

当您点击页面时,您会很快看到页面中自己感兴趣的内容,而忽略页面顶部的导航和其他内容。视力不太好的人却做不到这一点。他必须等待屏幕阅读器分析完页面顶部和他感兴趣的内容之间所有复杂的信息。

当然,有的技术能够使屏幕阅读器跳过导航,但这需要在导航条或其他内容的图像中添加链接。这些技术的运行可能会造成混乱,而且访问站点的其他人也能够看到它们。使用 CSS,您能够在页面中完整定义不可视元素(对于其他站点访问人员和您的鼠标不可视)。屏幕阅读器可以使用这些元素快速导航,有效处理文档。

由于 CSS 没有显示标记,屏幕阅读器所遇到的唯一问题就是实际内容。另外,当您使用 CSS-P 进行设计时,您将专注于内容的实际“流”。您开始考虑它在页面上的逻辑顺序。

当您阅读本文档时,您理解了信息“流”。但在镶嵌型表格的示例中,如果您使用多栏布局,本段落将很可能位于页面的右上角。那样,屏幕阅读器无法知道它应该在文章末尾阅读本段落。

使用 CSS-P 后,浏览器可能仍将本段落显示在浏览器窗口的右上角,但当您查看文档的源代码时,段落在文档的 html 中仍然是您现在所看到的位置。这使页面更容易访问。

总结和计划
以上就是我的答案。我希望我解释了使用 CSS 进行 Web 设计的独特优势。显然,要学习的内容很多。因此,我鼓励您阅读 Macromedia 开发者中心关于 CSS 的其他文章*,它们将帮助您更好地了解 CSS 的优点,并教会您在设计中使用 CSS 的整个过程。以后的几个星期以及几个月当中,我将带回来更多的 CSS 教程。就写到这里,希望您愉快使用我们的样式。


——————————————————————————–

关于作者
Greg Rewis 是 Macromedia Web 技术最主要的宣传者。 Greg 是 Macromedia 的公众代言人,代言 Web 上发行的 Macromedia 软件套件和 Web 应用程序开发服务器,同时他又代表公司成千上万顾客的利益,与产品开发部门进行沟通。Greg 十分了解 Macromedia 客户的想法, 因为每年他有 200 天都“在路上”,他与客户交谈,在商品展览会、研讨会和各种会议中进行产品展示,组织高级培训会议专门介绍 Macromedia 生产线。Greg 总是在世界各地飞来飞去,但工作之余他在 Arizona 沙漠中享受生活,打高尔夫球,教他的两个儿子“在游泳池中放松身心”的艺术。