XHTML的最终要求是,使得所有网页和浏览器按照而且只按照XHTML 1.0 Strict这个最高标准来控制内容。
传统的FLASH媒体的插入是使用<embed>标签,可惜的是这个标签是不被W3C XHTML 1.0 Strict所认可的,在W3C的FAQ里有过描述。W3C认为,<embed>标记从来就不曾是标准的一部分,只是浏览器大战留下来的炮灰罢了(好像是Netscape一方的)。同时,这篇FAQ里还提到了关于这个问题的一篇著名文章,称为Flash Satay方法。这个方法由Drew McLellan提出,主要思想是通过一个只有一句AS语句的FLASH桥达到载入参数传进的Flash文件的办法。同时,使用<object>标签替代<embed>标签。

可惜的是,这个方法未免太复杂了一些。此外还有很多人想到使用JavaScript来动态加入<embed>的Flash内容,这无异于饮鸩止渴,将表现层和行为层混为一谈,我认为是绝不可取的办法。

Joen Asmussen的博客Noscope里评价了这两种方法,并且指出仅仅使用<object>标签,不使用桥Flash也可以达到在XHTML 1.0 Strict合法的前提下插入FLASH内容的效果。Hixie具体地描述了这个方法。可惜的是,他的代码在我这里只在IE中有效,而在Firefox里却有些问题。这应该是Wordpress自动完成标记的副作用。

经过我的实验,可以正常使用的代码如下所述:

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" width="480" height="400">
<param name="movie" value="movie.swf" />
<param name="quality" value="high" />
<param name="bgcolor" value="#FFFFFF" />
<object data="movie.swf" width="480" height="400" type="application/x-shockwave-flash">
<param name="quality" value="high" />
<param name="bgcolor" value="#FFFFFF" />
<param name="pluginurl" value="http://www.macromedia.com/go/getflashplayer" />
</object>
</object>

为了在Wordpress里面直接用而避免编辑器进行不必要的转换,建议使用下面这个无换行版。

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" width="480" height="400"><param name="movie" value="movie.swf" /><param name="quality" value="high" /><param name="bgcolor" value="#FFFFFF" /><object data="movie.swf" width="480" height="400" type="application/x-shockwave-flash"><param name="quality" value="high" /><param name="bgcolor" value="#FFFFFF" /><param name="pluginurl" value="http://www.macromedia.com/go/getflashplayer" /></object></object>

你需要做的,仅仅是替换里面的两个movie.swf成你想要的,然后修改width和heigth成你想要的大小,就可以放心通过XHTML 1.0 Strict验证了。

最近一直在关注有关XHTML, JavaScript, ECMAScript, CSS, DOM这些技术,加上在实验室里一直在做的SVG技术,基本上都是W3C的重点技术。
之前我一直很倡导DIV+CSS网页设计,现在看来几乎变成了通用的标准。刚学习Ajax的时候,也没什么书可以看,就看会了那些基本原理,然后自己琢磨一整天,搞出一套自己的设计模式,分离内容层,表现层和行为层,现在看来还是很先进的。
今天,受IE8宣布全面遵循Web标准的刺激,我决定,我的blog也全面遵循标准吧~
抛弃那些不受标准支持的特性,_blank就不要了。于是,一个遵循XHTML 1.0 Strict标准的网站诞生了。

透露一个小计划。我注册了一个新域名,准备用来关注Web设计和Web标准。

最近为了纪念一个MileStone,更换了一个网名,同时也要更换一个域名。原来的域名的PageRank也不低了,说实话有点不舍得的。

我个人倾向于做良性的SEO,而且这里毕竟是自己的网站,也不打算太多人来看还是怎么样,我做SEO的目的很明确,就是能让那些辛辛苦苦写的文章能够尽量多地帮助别人。另外,能让我的名字出现在搜索引擎较高处吧,虽然这挺难的(有一个无良摄影家和两三个连环杀人犯也叫这个名字,而且也是大学生,唉~),不过这也算是为了将来工作的一种长期投资。

第一次用WordPress,觉得这是什么破东西,现在却发现WordPress几乎是个完美的东西… Code is poetry, indeed.

WordPress的SEO其实挺简单,也有不少plugin可以用,我觉得比较有用的比如All in One SEO Pack,这个东西可以把页面的各种SEO元素都整理规范起来。还有Google XML Sitemaps,专门用来创建Google网站管理员工具率先使用的Sitemap的。这两个自动化工具基本就可以完成常见的主动良性SEO工作了。

另外的就是一些使用习惯问题了。比如WordPress的永久链接(perma link)的选择问题。理论上最好的perma link形式应该是使用日志发布日期和日志缩略名,使得关键字可以出现在题目和链接当中,但是我个人觉得中文的日志给一个英文日志缩略名有点不伦不类,给中文的,出现在地址栏的时候也有点不优雅。因此我个人还是选择http://lizheng.me/archives/123这种形式。当然,带问号的那种是万万要避免的。

JTH的记录… 3个月不重启服务器吧,我一直想打破,昨天是第30天,还跟Aya说起过。结果,今天早晨一起来发现挂了。唉,reboot命令敲下去的时候真的很不舍得,不过该做的还是要做,不管心里是多么的不舍得,回车还是敲得很坚决。

唉。不过,正常了的服务,应该算是最好的结果。

1. C语言
毫无疑问, 第一门语言是C语言. 我上大一的时候一样有疑问, 为什么中国的高校那么迂腐, 都什么年代了, 外面都Java了, 我们还在C… 还不是C++. 其实, 事实证明, 后来毕业的时候, 被人称作计算机的强人都是当年C语言程序设计考试考优的那几个人. 一个人对于C语言的态度, 其实一定程度上反映了这个人对于计算机科学和程序设计的热衷程度. 我们二三年级的班主任经常讲, 从事计算机工作, 一定要对编程抱有兴趣, 否则是无论如何也学不好的. 如果你发现你对编程根本没有兴趣, 建议趁早转专业. C语言考试当中如果有超过5处地方有问题, 就是不合格. 对于谭浩强版C语言书里面的知识点, 不能有任何疑问. 这也就是为什么谭浩强版C语言教材至今仍在中国书店计算机及网络类畅销排行第二名的原因.

2. C++
C++是不能绕开的一门语言. C++是一种思想, 不学C++不知道Java或者C#的好. 苦其心志是必要的, 虽然我对于C++依然反感的很… 太复杂太混乱太危险了. 不过, 我同样认为, 对于计算机系学生来说, 经过自己的体验知道C++为什么太复杂太混乱太危险是很有必要的. 此外, C++应该是你从TC转向Visual Studio 2005的跳板. C++是一门系统编程语言, 不适合用来写应用程序.

3. HTML/XML/CSS
必须精通的技术. 迟早一天, 所有程序都被XML化. 目前的趋势是WPF已经把应用程序界面表示XML化, DBMS也以支持XML作为重要的大版本特性. 何况, 计算机专业要想挣钱, 网站是必须要做的… 之于CSS, 初学者就不要经历我们走过的那些阴沟了吧. 听W3C的没错. 说起来我做网页也有10个年头了, 初中就开始写HTML, 完全是看HTML标准成长起来的一代人, 那时候还幼稚的很, 当发现可以用表格组织网页框架结构的时候, 欣喜若狂, 自认是个天才, 四处找人想分享经验, 才发现高处不胜寒. 如今, Div+CSS已经变成了我标准的工作语言, FrontPage和Dreamweaver则是早就早就不用了的古董了. UltraEdit是我的最爱.

4. JavaScript/AJAX
如果想走网站这条路, 精通JavaScript是必要的. JavaScript是一门类C语言, 学起来比较轻松, 而且因为JavaScript出了名的难以调试, 可以锻炼程序调试技术. JavaScript技术路线走下去就是大红大紫的Ajax了. 其实没什么, JavaScript和DOM戏法而已.

5. 对Visual Basic的态度
我不建议学习Visual Basic. 将VB纳入.NET框架实际上是一个失误. 从那一刻起, VB就已经死去. 计算机系的态度是, 各科课程设计不能使用VB编写.

6. ASP或PHP
网站路线必经之路. 因为ASP是类VB的, 所以我觉得不太值得为了ASP学VB. 因此, 类C的PHP更有价值, 而且PHP这么多年还活得好好的. 有必要把PHP作为轻量级的后台编程语言.

7. Database
MySQL和SQL Server以及Oracle最好都学习一下. 重点是前两个. Oracle实在是用不起. 占用资源太大, 不适合在自己机器上做试验. MySQL是PHP支持最好的数据库, 走网站路线的建议选择.

8. WWW和Hosting
网站路线的人不可避免的要接触域名系统和托管之类的事情. 这其实是一门学问, 书上很少讲, 却是很大很深的学问. 主要包括, 域名系统, 域名怎么解析, A记录, CNAME, MX记录是怎么回事; DNS怎么工作; 什么是虚拟主机等等. 注册一个属于自己的域名, 会对你将来找工作有很大的作用的. 用网站技术建立自己的个人主页, 然后才能搞明白Google好在哪里(Apps), 什么是SEO(又是一门大学问).

9. Java和C#
Java是一头大象了. Servlet, Swing, JSF, JSP… 名称太多太多了点… 还是C#干净点… 选择那条路, 与其说是技术问题, 不如说是政治问题, 我觉得C#好一点, 必经Sun终归要被并购掉… 微软语言的成败, 不是有语言特性决定, 而是微软平台的成败决定. 因此, C#也有风险. Java路线的话, 后面有网站后台的Servlet和JSP, C#路线则是ASP.NET. 不学PHP也无所谓. 就是主机贵一些.

10. 操作系统
这也是一个政治问题… Windows 2003/2008是肯定要会玩的, 必经和XP/Vista那么近似, 如何在机器上架设Web服务器, 安装动态语言, 架设DBMS是基本功. 因此, 需要精通IIS/Apache/Tomcat. Linux肯定要学. 哪个发行版本我不在乎, 基本Shell命令要烂熟于心.

11. 计算机硬件
有了这些, 可以出去打工赚点小钱, 出去打工, 为自己配一台好电脑吧. 搞清楚CPU阵营, 显卡阵营, 主板阵营, 硬盘品种, 怎么超频. 组成原理, 系统结构, 汇编语言是要好好学的. 为了你将来的水平成长.

12. 设计模式
编程到这里, 基本已经饱受不恰当的系统设计折磨之苦了. 看看设计模式, 看看代码大全, 让自己变成一个爱干净的人, 代码里没有意义的空行甚至空格也不要有. 注释, 用英文写起来啦. 这是, 你就是别人眼里的高手了.

13. 算法
为了生存, 为了面试, 算法是必须精通的一步. 算法导论是一个不错的选择, 别问我英文版好还是中文版好, 都买下来, 随着MIT视频教程, 仔仔细细拿出一年时间来, 学好算法.

差不多了. 毕业吧.

在某些CVS中, 一个目录存在的前提是该路径下有文件. 不包含任何文件的目录是不存在的. 因此, 软件大牛们(如MSRA FTEs)建立一个项目的时候, 会建好项目的目录结构, 每个底层目录里包含一个空文件, 取名为”placeholder”. 处身这样的环境中的时候不觉得什么, 把目录所在的模块的代码实现出来, 添加到这个目录中, 删掉”placeholder”就可以了. 此其一.

工程技术中的大多数问题, 如果你能够把问题描述清楚, 问题基本也就解决了. 只要拿描述去问Google就行. 此其二.

PlaceHolder的艺术

软件系统设计是一门艺术, 设计师要在项目实现之前把项目想清楚, 模块化. 这个过程可以借助很多工具, 我觉得最好的工具其实就是Windows Explorer, 项目目录建好了, 模块也基本出来了. 实现部分, 无非是麻烦而已. 因此, 软件系统设计其实就是PlaceHolder的艺术.

记得当年注册Gmail的时候就对于Gmail的随机单词验证码生成图片比较感兴趣, 因为每次刷新, 获得的随机单词都像是一个单词, 而不是随机字符的组合, 不过就是不认识…
一度认为Google手工找了一堆难词, 然后在当中随机… 今天看Ruby Cookbook的时候极其偶然的发现一个例子, 生成可读单词的算法.
其实就是两个集合, 集合c当中保存aeiou这5个原音字母, 集合v中保存剩下的字母. 然后按照vcvcvc这样的顺序随机出字母组成一个词, 就得到一个可读的类单词.
用在验证码上不错哦~