分類彙整: 网站应用

识别用户是否是通过手机访问

今天花了些时间研究这个问题, 不过目前为止没有找到比较完美的解决方案, 简单说说吧.

现在网上一般有这样几种方法:

第一种是根据浏览器发送的HTTP_USER_AGENT来判断用户是否是通过手机访问网站. 这种方法比较普遍, 可以通过匹配关键字适应大多数手机, 但由于HTTP_USER_AGENT格式并没有标准规范并且不是HTTP协议必须的参数, 所以无法适应所有手机或者所有浏览器, 有些手机甚至不发送HTTP_USER_AGENT.

注: 可以在网上搜到别人搜集的各型号手机和浏览器的HTTP_USER_AGENT

第二种方法是根绝浏览器发送的HTTP_ACCEPT, HTTP_ACCEPT可以判断浏览器支持哪些格式的页面, 比如WAP, HTML, XHTML, XML等, 但对于判断用户是否通过手机访问并不是非常准确, 因为HTTP_ACCEPT不是同样必须的, 多数浏览器并不会在HTTP_ACCEPT中进行过多的描述, 比如一个浏览器如果声明了自己支持wml那它可能支持wml, 但是如果不声明wml并不代表就一定不支持wml.

比如Firefox3的HTTP_ACCEPT是这样的:

text/html, application/xhtml+xml, application/xml;q=0.9, */*;q=0.8

而黑莓8800的HTTP_ACCEPT是这样的

application/vnd.rim.html, text/html, application/vnd.wap.xhtml+xml, text/vnd.sun.j2me.app-descriptor, image/vnd.rim.png,image/jpeg, application/x-vnd.rim.pme.b, application/vnd.rim.ucs, image/gif;anim=1, application/vnd.rim.jscriptc;v=0-8-8, application/x-javascript, application/vnd.rim.css;v=1, text/css;media=handheld, application/vnd.wap.wmlc;q=0.9, application/vnd.wap.wmlscriptc;q=0.7, text/vnd.wap.wml;q=0.7, */*;q=0.5

还有一种方法有人说可以判断用户的IP, 原理也简单, 因为在国内GPRS上网是通过代理连接的, 所以用户的IP可能是固定的几个, 但是我并不确定手机不能够通过其他方式上网, 比如3G, 或者说我用手机模拟器登录的时候就有可能出错, 或者说如果我用手机当猫那么会将我通过电脑进行的访问当作手机来处理.

还有一种方法我觉得很不错, 如果浏览器支持javascript的话, 可以判断显示器的尺寸, 没有人会用一个19寸大的手机吧?

说来说去, 还是没有找到完美的解决方法, 不过综合这几种方法写了一个函数.

/**
 * 是否是通过手机访问
 *
 * @return bool 是否是移动设备
 */
function isMobile()
{
    // 如果有HTTP_X_WAP_PROFILE则一定是移动设备
    if (isset($_SERVER['HTTP_X_WAP_PROFILE'])) {
        return true;
    }

    $keywords = array('nokia', 'sony', 'ericsson', 'mot',
        'samsung', 'sgh' ,'lg', 'sie-',
        'philips', 'panasonic', 'alcatel', 'lenovo',
        'cldc', 'midp', 'wap', 'mobile');
    // 从HTTP_USER_AGENT中查找手机浏览器的关键字
    if (preg_match("/(" . implode('|', $keywords) . ")/i",
        strtolower($_SERVER['HTTP_USER_AGENT']))) {
        return true;
    }

    if (isset($_SERVER['HTTP_ACCEPT'])) {
        // 如果只支持wml并且不支持html那一定是移动设备
        // 如果支持wml和html但是wml在html之前则是移动设备
        if ((strpos($_SERVER['HTTP_ACCEPT'], 'vnd.wap.wml') !== false)
        && (strpos($_SERVER['HTTP_ACCEPT'], 'text/html') === false
        || (strpos($_SERVER['HTTP_ACCEPT'], 'vnd.wap.wml')
        < strpos($_SERVER['HTTP_ACCEPT'], 'text/html')))) {
            return true;
        }
    }

    return false;
}

WordPress 2.6.3 中文版发布

WordPress 开发团队刚刚发布了 WordPress 2.6 系列的第四个版本,WordPress 2.6.3。根据这一版本,WordPress中文站 在第一时间制作了相应的中文版,现在正式提供下载。此次 WordPress 2.6 系列紧急更新,是由于发现了 WordPres 2.6.2 版本中存在重大漏洞。为了确保你的 WordPress 安全,建议你立即更新到最新版本 WordPress 2.6.3。

此次 WordPress 2.6.3 主要更新了两个文件,你也可以单独下载这两个文件:

  1. wp-includes/class-snoopy.php
  2. wp-includes/version.php

或者下载完整的安装包:

WordPress 2.6.3 中文版:
http://wordpresschina.googlecode.com/files/wordpress.263.chs.zip

CSS网页设计解决方案(Hacks & Issues)

1、说明本文阐述了8条我们发现的在用CSS设计中有用的解决方案。

2、浏览器特定的选择器

英文地址:  http://www.solidstategroup.com/page/1592

当你想在一个浏览器里改变样式而不像在其他浏览器中改变时,这些选择器很有用。

IE6以下

*html{}

IE 7 以下

*:first-child+html {} * html {}

只对IE 7

*:first-child+html {}

只对IE 7 和现代浏览器

html>body {}

只对现代浏览器(非IE 7)

html>/**/body {}

最新的Opera 9以下版本

html:first-child {}

Safari

html[xmlns*=””] body:last-child {}

要使用这些选择器,请在样式前写下这些代码。例如:

#content-box {
width: 300px;
height: 150px;
}
* html #content-box {
width: 250px;
}
/* 重写上面的代码并且把宽度改为250px
在IE6以下版本中适用。 */

3、在IE6中使用透明PNG图片

IE6的一个很难处理的BUG就是它不支持透明PNG图片。

你可能需要用一个重写的CSS的滤镜来解决这个问题:

*html #image-style {
background-image: none;
filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src=”filename.png”, sizingMethod=”scale”);
}

4、去掉连接虚线框

当你点击链接时,Firefox会在链接周围产生一个虚线外框。
点击在新窗口中浏览此图片
这个很好解决,只需在a标签中添加outline:none就可以了。

a{
outline:none;
}

5、对inline元素应用宽度。

如果你对一个inline元素使用宽度,它将只在IE6下起作用。

所以的HTML标签要么是Block的要么就是inline的。inline属性的标签有<span><a>< strong>和<em>Block标签包括<div><p><h1><form> 和<li>

你不能控制inilne标签的宽带,不过有一个方法是把标签属性从inline改为Block。

span{
width:150px;
display:block;
}

应用display:block能够把span标签变成block标签,从而控制它的宽度。

6、使一个固定宽度的网站居中。

为了让你的网站在浏览器中居中,可以为最外层Div添加position:relative属性,然后将margin设为auto。

#wrapper {
margin: auto;
position: relative;
}

7、图片替换技术

对于头部来说,永远是最好用文字而不是图片。在你必须要用图片的某个特殊地方最好使用隐藏文字的层的背景图片。这对于屏幕阅读和SEO非常有用,尽管依然使用很普通的文字,这可以联想到所有的优点。

HTML:

<h1><span>Main heading one</span></h1>

CSS:

h1 {
background: url(heading-image.gif) no-repeat;
}
h1 span {
position:absolute;
text-indent: -5000px;
}

正如你所见,我们对H1标签使用普通的HTML代码,用CSS来将图片替代文字。Text-indent把文字放到左边5000像素处,从而用户看不到它们

8、最小宽度

IE的另外一个Bug就是它不支持min-width属性。min-width确实非常有用,特别是对于100%宽度的可变模板来说,因为他告诉浏览器停止收缩。

对于除IE6以外的所有浏览器来说你只需min-width:xpx;例如:

.container {
min-width:300px;
}

要让这些在IE6下起作用的话你要添加额外的努力!你需要创建两个DIV,一个包含着另一个。

<div class=”container”>
<div class=”holder”>Content</div>
</div>

然后你需要设置外面层的min-width:

.container {
min-width:300px;
}

现在又要IE hack起作用了,你需要写下以下代码:

* html .container {
border-right: 300px solid #FFF;
}
* html .holder {
display: inline-block;
position: relative;
margin-right: -300px;
}

当浏览器窗口调整外层宽度来适应直到它缩小到border的宽度时,这个时候它就不能够在缩小了。而holder层也会停止收缩。外层的边框宽度变成了内层的最小宽度。

9、隐藏水平滚动

要去除水平滚动条,可以在body中插入overflow-x:hidden属性。

body {
overflow-x: hidden;
}

这在你决意要用一个比浏览器款的图片或Flash时很有用。

百度有啊进入”装修”阶段 挑战淘宝网上商城

一方声称将在未来5年内投资50亿元,一方声称电子商务平台和域名已经确定,不久就对外开放,昨天下午,淘宝网和百度网同时在电子商务领域发力,两大公司在电子商务领域的正面碰撞即将开始。

昨天下午,淘宝网总裁陆兆禧在北京宣布:未来5年阿里巴巴集团对淘宝网投资50亿元,并将继续沿用免费政策。这是继淘宝网和阿里妈妈整合之后, 阿里巴巴集团对其网络购物板块进行的最大手笔的推进计划。据悉,今年上半年,淘宝网交易量为413亿,逼近去年全年433亿交易总量。目前,淘宝网拥有 8000多万会员,在线商品数量达到两亿件。

同样在昨天下午,百度宣布网络交易平台的名称和域名终于尘埃落定,“有啊”(youa.com)成为最终之选。此前百度透露,网络交易平台的首批万家卖家已经入驻,开始上传商品、店铺装修等开业前的筹备工作。

国内两亿多上网人群中,已有33%的用户习惯网络购物,其中76%的网购人群把淘宝网当作网络购物的首选。作为最大搜索引擎,百度占据了国内检索一半以上的点击量。

网站改版在优化的方面应该注意的几点

针对目前竞争日益激烈的网络营销这块。企业在获得了针对性的网站流量以后。怎么让进入网站的用户最大可能的成为客户,让有限的流量带来更大的客 户,提高网 站的客户转化率成为网站需要解决的问题之一。从而不免的会出现网站的版面为了适用潮流变化及更好的达到ue(用户体验度).不断的出现改版的情况。

问题也就随之而来。网站的改版必将在网站的的关键字布局及网站的关键字密度等各方面出现改变。从而对于网站的se排名也会出现波动。更有甚者,讲使网站出现降权和网站被拔毛的显现。为了将损失降到最低。网站在改版的时候就需要注意一些优化的要点。绝对不能盲目的进行!

首先,我觉得最重要的就是head部分千万不能在改版的时候出现任何的变化。在 body部分上面出现了大规模的改动的情况下。网站的head也变化的话。网站已经可以说是面目全非了。造成se对网站短暂的不信任考核期。网站权威自然 会受到影响。排名的变化肯定也会是很大。所以在版面变化的情况下,竟可能使变化合理的过渡。慢慢的改变。肯定对于排名是有很好的稳定下效果。

其次,某些网站的改版。连程序都换了。在这里我们就需要提醒下操作者。对于原来的程序及生成的静态页面应尽最大可能保留。避免蜘蛛根据se的网站索引数据库入口进入网站,出现404网页不存在的情况。

再次,改版过程中的外部连接也要全部都转移到新的网站上面。这个既是职业的道德问题;也是为了链接方检查链接时发现我方删除了他的链接,而删除我们的链接的情况出现。

最后,网站改版后,在外链的导入方面可以适当加大点速度。吸引蜘蛛尽快将新页面抓取及刺激新页面尽早进入排名数据库。

当然,在具体的操作中。根据不同的情况还有其他的需要注意的因素。这就有具体问题具体分析了。

戴志康:逃学天才叫板Google

戴志康:逃学天才叫板Google

戴志康

19岁以前终日郁郁闷闷,终日逃学;20岁超常发挥考上大学,随后不但逃学,还搬出校园独居一室;23岁由穷孩子变成百万富翁,尚未毕业就孤身 闯荡北京,以三次纪律处分,15门考试补考换来社区软件研发的领先地位;如今管理200号人马、创业七年的戴志康已经做好了向IT航母Google叫板的 准备。

戴志康,1981年出生在大庆一个书香门第家庭,外公是中国第一批教授,母亲在大学任教,戴父则是大庆石油学院的博导。比李想幸运的是,戴志康 5年级便开始玩起电脑,从286捣鼓到586……在父亲的指引下,戴志康不爱游戏,只爱编程,并且从一开始就表现出了惊人的天赋。当戴志康上初二时,戴父 曾带着小戴到北京找到瑞星公司,当面指出了软件的Bug(缺陷)。

然而,戴志康从小在与人交往方面并不像见到电脑那么来劲,常常是一个人郁郁闷闷的,父母担心这样下去会有问题,于是拼命鼓励戴志康登台亮相,学 校里的每一场辩论赛似乎都是为他们的儿子量身定做的,戴志康也从一开始的口舌打卷到后面辩论赛的常胜将军。戴志康告诉记者,父母的鼓励显然让如今的他在人 际场合上受益匪浅,更重要的是改变了他一开始内向的性格。

“你们学三年,不如我学一上午”

任何事情得失是对等的,当戴志康的父母发现身边多了一个电脑天才孩子时,却又发现这个孩子的学校成绩常常很难看,因为从初中开始戴志康就养成无 聊课不上的习惯。为此,家庭会议的主题不止一次围绕着“考大学怎么办”,“其实与父母的争论一直都有,但谁也没有说服谁。”直到最后,戴志康答应了父母的 要求,死活也要考上一个大学。

尽管常常过校门而不入,几乎忘记老师的长相,但戴志康在高考前的1~2个月还是进入临考复习阶段。“那是真正的学习,研究的每一道题都是历年必考题,记得每个公式都是能用得到的,我的原则是考试时把能做对的题都保证做对。”

高考当天开考后,小戴开始满卷子地找刚背过的必考题,然后根据熟悉程度和难度在题前面标上数字“1、2、3”,1是最容易的,3是准备瞎蒙 的,2是中难题答多少算多少的。在满心欢喜地拿下“都是送分的题”后,小戴开始向难度2的题目冲锋,一路下来心里觉得正确率也有60%~70%;最后是准 备瞎蒙的题。

“其实很多学习好的考完后都说可惜难题没有做好,反而戴志康却超常发挥地做出了几道。”最后高考结果戴志康每科平均100~120分,考上哈尔 滨工程大学。当被质疑运气好考上大学时,戴志康的一句话让对方哑口无言,“你们学了三年,其实不如我学一个上午,我考上大学绝不是侥幸。”

从小住惯了大学校园,戴志康对大学少了多数“菜鸟”新生的憧憬幻想,在他脑海里浮现的更多是如何及早逃离校园接触社会。尽管学的是自己喜欢的计算机类专业,但大学陈旧的教材让他十分失望,也因此坚定了逃学的想法。

当周围的男女同学们忙着拍拖游戏人生时,小戴则更早地思考自己的前途。“当时唯一的想法是做出点成绩,毕业后能找到一份年薪10万块的工作。 ”2001年,BBS十分红火,戴志康从社区论坛看到灵感,“如果开发一套能自动生成社区的软件,让即使不懂技术的人也能管理,将来有千千万万的人用我的 软件,这会成为我找份好工作的筹码”。

大二那年,靠着倒卖电话卡的收入,戴志康索性搬出学校,找到一间月租300块的房子,开始了每天15小时的工作,“我父母一开始不知道,但后来 发现时,也没阻拦什么,因为我不需要花家里的钱,不增加家里负担,也没有让家里操心。我总是在解决了问题后,告诉父母曾有个问题,但我已经解决了,我不习 惯在困难时救助。”

在随后三年里,旷课,不参加考试,缺席学校大会、“非典”时期不回宿舍,换来了三次纪律处分,15门考试补考。经过潜心修炼后,戴志康终于设计 出了一款具有很高普及性的社区管理软件,取名为“Discuz!”,一开始戴志康就把它挂在网上,免费给人用。一年多后,这个软件因为支持用户习惯,有同 比更强的功能,迅速为网上用户所接受。

第一桶金:3000元人民币

“人要解决吃饭问题,付出也要用一种方式得到回报。” 在对比同类产品的关键性的指标,比如速度、安全、负载能力和人性化等,戴志康认为自己的“Discuz!”远远超过了同类产品,“他们的产品都是收费的, 为什么我的不能收费?” 但收费给他带来了意想不到的烦恼,网上对他一片谩骂声讨。

戴志康并不恐惧谩骂,相反,对自己产品的核心价值有信心就不应该放弃,“这种坚持己见的意志锻炼能够帮助我在将来遇到困难时不轻易退缩。起初收 500块,没人买,就改收1000块,还没人买,就改成2000块!找到一个愿意出2000块的应该比找到四个愿意出500块的概率更高。”

转机出现在2003年7月,一个香港人给戴志康发来Email,说想做BBS社区的一个东西,问他需要多长时间,戴志康告诉他一个星期就行,香 港人不相信,戴志康果然在一星期内做完,香港人一高兴多给了一千块。“我对百万、千万已经麻木了,但这3000元至今让我兴奋不已。”随后,戴志康的软件 有了越来越多人购买,销售平均每个月增加30%,到毕业时,他有了50万元。

2004年初,戴怀揣50万元从哈尔滨跑到IT环境优越的北京,并注册了自己的公司。他也从网上销售开始拓展到市场销售,当他习惯性地穿着凉鞋、裤衩和T恤见客时,常常吃败仗。当年5月,他增加了一个合作伙伴帮他分担了销售的工作,他又回到他喜欢的技术世界。

2005年,凭着每天修改30次~50次的干劲,靠着比对手更勤奋和对软件的完美追求的执著,“Discuz!”每个月带给公司近20万元的收 入,但戴志康却做了一个重要决定,“Discuz!”免费开放。与此前面对收费争议所表现出的理想主义者的固执不同的是,戴志康认为自己其实是个冷静的现 实主义者。“收费并非如外界所想的突发奇想,其实在2003年软件刚开始挣钱时,我就想过开放免费。但公司需要创业资金的积累。”

如今公司从最初的几个人扩张到200多人,其中80%都是程序员,产品份额也在业界市场内占到了70%。信息产业部、中国移动、CCTV、网 易、金山、猫扑、阿里巴巴都使用着“Discuz!”社区管理软件。到现在,戴志康仍然把自己的公司定性为技术型公司,教育程序员只有把技术做精才能实现 自己的价值。

国际上,雅虎成为互联网的第一代卓越代表,随后,GOOGLE取代雅虎成为互联网的新一代“雄霸”,成为微软的最大竞争对手。如今,一个从哈佛毕业的大学生依靠一种将人际关系网络化的facebook开放平台,获得微软的支持,并直接威胁着google的地位。

在国内,如果说新浪、搜狐等媒体门户是第一代,百度搜索是第二代,那么现在就迫切需要一家能做大中国facebook平台的公司。“几乎所有公 司都在关注facebook,但是大公司特别是上市公司不敢轻易去赌,而小公司则没有包袱。”现在戴志康将主要精力和公司研究重心放在基于 facebook原理的“U center home”上。“现在做得好的公司并不多,‘Discuz!’的用户基础会是我们最大的筹码。”

牛人简历

戴志康,中国最早,也是最有影响力的PHP开发者之一。从2001年起,独立设计开发出社区论坛系统Discuz!,至2007年,已成为全球用户数最多的PHP社区论坛软件之一。

于2004年创办康盛创想公司,2007年,戴志康被业内评为“10大最具影响力人物” 、“2006年度中国软件企业风云人物”、《中国企业家》300期十大封面人物,被授予“80后封面人物”奖。

Google AdSense for Games开始测试

AdSense官方博客报道,Google推出了beta版本的AdSense for Games,可以在基于Web的在线游戏中显示视频、图片或者文字广告。发布者可以自定义广告的位置,还可以过滤广告的内容。

在我看来,Google的广告触角终于伸向了游戏业,但Web Flash的游戏并非目前游戏业的主流,而目前比较流行的是视频游戏(PS2/PS3/XBOX/WII)和电脑网络游戏,视频游戏由于并非基于X86平 台,CPU和操作系统各异,加入AdSense的难度非常大,而电脑网络游戏本身靠卖装备和点卡就可以有很强的盈利,根本不需要AdSense,而且大部 分用户也不希望在游戏里看到烦人的广告。因此,Flash类型的游戏才会成为Google进入游戏广告的第一个尝试。

发布者可以在这个地址申请AdSense for Games,申请条件是:

游戏流量:最低要求每天50万浏览量。

游戏类型:必须是基于Web Flash类型的游戏。

集成:必须在技术上能够兼容SDK接口。

流量来源:必须保证是80%的流量来自美国和英国。

内容:游戏内容适合家庭用户,不能包含色情游戏,针对年龄群为13岁以上。

发布:代码必须能够嵌入游戏中,以便广告能够在游戏里发布。

下面是Google的一段介绍视频。

Top 10 Blogger灵感搜集页

写Weblog 目前几乎成了我的其中一份职业,相对于大多数Blogger 来说,我有更多的时间阅读和写作。或许对于你来说,没有必要,同时也没有足够多的时间跟精力去订阅Top100 Weblog,并且坚持每天阅读,从而提升自己Weblog 的质量。然而,在这10个地方,我能够花费相当短的时间,同时得到足够多的Blogging 灵感和写作题材。希望它们也同样能够帮助你。 閱讀全文

WordPress 2.6.1

WordPress 发布了 WordPress 2.6 一个月后,WordPress 再次发布了其升级版本 WordPress 2.6.1 正式版。WordPress 中文站已经根据该版本制作了相应的中文版,提供给 WordPress 中文社区的爱好者们。WordPress 是一个开源免费的个人博客平台。使用 WordPress ,你可以轻松地架设自己的博客网站。由于社区各类资源众多,WordPress 已经成为了最受欢迎的个人博客平台。

WordPress 2.6.1 是在 WordPress 2.6 基础上,继续维护的稳定版本。该版本主要修复了 WordPress 2.6 所存在的一些 bug 。如果你现在使用的是 WordPress 2.6,那么我建议你升级到 WordPress 2.6.1 。

WordPress 2.6.1 主要修正的问题包括,改进了国际化的支持,增加了后台从右到左的排列方式,以支持波斯语和希伯来语;对于 Windows 主机用户,修正了永久链接所存在的问题(我们曾经介绍过该问题的临时解决方案);针对 IE 浏览器用户,修正了图片插入和快速发布功能存在的问题。

如果你希望了解全部的修正记录,你可以访问这里

点击下列链接直接下载:

WordPress 2.6.1 中文版(zip压缩包):
http://wordpresschina.googlecode.com/files/wordpress.261.chs.zip

WordPress 2.6.1 中文版(gz压缩包):
http://wordpresschina.googlecode.com/files/wordpress.261.chs.tar.gz

WordPress 2.6.1 中文语言包(zip压缩包):
http://wordpresschina.googlecode.com/files/wordpress.261.chs.languages.only.zip

WordPress 2.6.1 中文语言包(gz压缩包):
http://wordpresschina.googlecode.com/files/wordpress.261.chs.languages.only.tar.gz

Transitional vs. Strict Markup

推广Web Standards的人经常说XHTMLHTML更加严格,当然从某种意义上说是的,比如它要求所有的标签关闭并且所有的属性都用引号。但其实XHTML 1.0还分两种(加上Frameset DOCTYPE的话算三种,本文不讨论),Transitional(过渡型)和Strict(严格)DOCTYPEs。并且HTML 4.01也有同样的文档声明。

从字面上就可以看出来意思:Transitional DOCTYPEs只是为了实现从旧时代到新时代的过渡,而且Strict DOCTYPEs是默认的文档声明, 对构造HTML 4.01XHTML 1.0都适用。

使用Transitional DOCTYPE一般是由于代码中含有过多陈旧的写法,并且一下子很难完全转换到Strict DOCTYPE来。但是Strict DOCTYPE才应该是你的目标。它鼓励甚至有时是强迫你把结构与表现区分开来,把表现层的代码都写在CSS里。HTML 4 Document Type Definition: –

本HTML 4.01 Strict DTD不包括表现层属性和标签,W3C将逐渐淘汰这些属性和标签,您完全可以使用样式表来实现。您应该使用Strict DTD,如需获得表现层属性和标签的支持,请使用Transitional DTD。

Strict DOCTYPE还有一个好处,即可以让浏览器使用它们最严格、(一定程度上)最符合标准的模式来渲染页面。

Tommy Olsson在Web Standards Group的Ten questions for Tommy Olsson一文中很好的阐述了使用Strict的好处:

我觉得,使用Strict DTD,无论是HTML 4.01 Strict还是XHTML 1.0 Strict,远比讨论是用HTML还是XHTML重要的多。它代表了未来互联网的质量。它将结构和表现分开,使得维护一个站点非常容易。

对于刚开始接触web standards和正确的、语义化的结构的人,认清Transitional和Strict DOCTYPEs的区别非常重要。更多详细列表请参考:XHTML: Differences between Strict & TransitionalComparison of Strict and Transitional XHTMLXHTML1.0 Element Attributes by DTD

对于准备向Strict进发的人来说,两者的有些区别很可能会使开发者犯错误,接下来我将会谈到。

Strict DOCTYPEs下不支持的标签

  • center
  • font
  • iframe
  • srike
  • u

Strict DOCTYPEs下不支持的属性

  • align (表格相关的支持:col, colgroup, tbody, td, tfoot, th, thead, and tr)
  • language
  • background
  • bgcolor
  • border (table支持)
  • height (imgobject支持)
  • hspace
  • name (在HTML 4.01 Strict中支持,XHTML 1.0 Strict中的formimg不支持)
  • noshade
  • nowrap
  • target
  • text, link, vlink, 和alink
  • vspace
  • width (img, object, table, col, 和 colgroup都支持)

内容模型的区别

元素类型的内容模型描述了什么样的元素类型实例可以被包含。这一点上,两种文档声明的最大区别在于blockquote, body, 和form元素仅能够包含块级元素,如:

  • 文本和图像不允许直接包含在body中,必须被p或者div等块级元素包含
  • input元素不能直接是form元素的下一层
  • blockquote元素内的文本,必须被p或者div等块级元素包含

将所有的表现都交给CSS,恪守Strict标准

在向Strict DOCTYPEs过渡的过程中,了解每个元素是做什么的比知道每个元素长啥样有效的多。

首先考虑结构和语义,然后再担心表现。

Xhtml文档声明的区别

在你每一个页面的顶端,你需要文档声明。是的,必须。

如果不指定文档类型,你的HTML不是合法的HTML,并且大部分浏览器会用“怪癖模式 (quirks mode)”来处理页面,这意味着浏览器认为你自己也不知道究竟做什么,并且按浏览器自己的方式来处理你的代码。你可以是一个HTML大师,在地球上打遍 天下无敌手,或者你的HTML可以无瑕疵,CSS可以很完美,但如果没有文档声明,或者错误的文档声明,你的网页与一个短视的,独眼的长臂猿婴儿十分艰难 地堆砌起来的没两样。

XHTML 1.0 Strict(严格)的文档声明是这样的:

<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Strict//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd“>

下面的是XHTML 1.1的文档声明,作为XHTML的最新版本,看起来更完美,但还是有一些问题,随后我们会稍微讲解……

<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.1//EN” “http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd“>

如果你不愿放弃HTML 4或者你还有Netscape 4死忠用户,你可以使用XHTML 1.0 Transitional(过渡型):

<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd“>

你使用这的唯一理由是你还要兼容老版本的,少用的浏览器。过渡型XHTML 1.0允许HTML 4的表现元素,其也可能在如Netscape 4的浏览器中表现更好。但使用这些元素将对你网页的效率和可用性有害。

最后,如果你是使用框架的怪人之一,可以使用像下面一样的XHTML 1.0 Frameset(框架)文档类型声明:

<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Frameset//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd“>

注意DOCTYPE标签必须大写和前置一个英文半角感叹号!。它是唯一一个打破规则的标签,它不需要关闭。

语言声明

即使HTTP头或者在html起始标签内设置了xml:lang属性,你也必须为文档指定一个主 要语言。尽管处理一个合法的XHTML文档这不是必须的,但也是一个易用性的考虑。值是缩写的,比如en(English,英语),fr(French, 法语),de(German,德语)或者mg(Malagasy,这是什么语?译者也不知道,呵呵。——译者注)。

声明一个主要用英语内容的文档,例子是这样的:

<html xmlns=”http://www.w3.org/1999/xhtml” xml:lang=”en”>

在声明主要语言之后,假如还需要使用其他语言,你还可以在内联中使用xml:lang属性(比如<span xml:lang=”de”>HTML Hund</span>)。

内容类型

HTML文档的媒体类型和字体集也许要指定,可以使用HTTP头来完成,比如:

Content-Type: text/html; charset=UTF-8

HTTP头部的第一部分(如text/html)是文件MIME类型,让浏览器知道文件的媒体类型因此可以知道怎么处理。所有的文件都有MIME类型。JPEG图像是image/jpeg,CSS文件是text/csss和HTML一般使用text/html。

HTTP头部的第二部分(如UTF-8部分)是字符集。
也许设置HTTP头的最简易方法是在HTML中使用“HTTP同义(HTTP-equivalent)”的头标签,像这样:

<meta http-equiv=”Content-Type” content=”text/html; charset=UTF-8″ />

些微复杂当更好的方法是使用服务器端脚本语言来发送头。用PHP的话,你可以这样做:

<? header(“Content-Type: text/html; charset= UTF-8”); ?>

如果你不愿意(或不能)使用服务器端脚本语言,你也许可以直接给服务器设置一个 “.htaccess”文件。大部分服务器(Apache兼容)可以在根目录使用一个“.htaccess”的小文本文件,写入下面的内容,你就可以把所 有的“html”后缀文件都与MIME类型和字符集关联:

AddType text/html;charset=UTF-8 html

字符集包括大部分西方基于拉丁文语言的“ISO-8859-1”,日语的 “SHIFT_JIS”,中文的“GB18030”和UTF-8,一个 Unicode Transformation Format版本,提供大范围的多种语言的单个字符。基本上,你应该使用一个你知道的,能为你用户清楚认知的字符集。除非你使用基于拉丁语的语言(包括英 语)(ISO-8859-1被普遍接受的),你应该使用UTF-8因为它可以显示大多数语言的大多数字符,使用它也是安全的,因为它可以在大部的计算机上 使用。

注意

XHTML应该当作application/xhtml+xml的MIME类型来使用,再清楚不 过,这是XML程序。不幸的是,大部分浏览器没有对这没有第一线索。所以,一般认为使用text/html的MIME类型是不错的。根据W3C的建议和网 页标准工程的未来亮点,调味的XHTML 1.0也许可以作text/html使用,但XHTML 1.1不应该,这就是这个网站以XHTML 1.0 Strict(严格)作为例子,假定text/html的MIME类型。但是你仍然可以(或许不应该)为它们设置正确的MIME类型给浏览器,轻微的调用 一下服务器端即可。

这个网站使用PHP为XHTML 1.1设置application/xhtml+xml的MIME类型给那些能够理解和处理这个类型的浏览器(如Mozilla),为XHTML 1.0 Strict设置text/html给其他浏览器(如IE)。为每一个页面的顶部加入如下代码:

<? if(stristr($_SERVER[“HTTP_ACCEPT”],”application/xhtml+xml”)){ header(“Content-Type: application/xhtml+xml; charset=UTF-8”); echo(‘<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.1//EN” “http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd”>’); } else { header(“Content-Type: text/html; charset=UTF-8”); echo (‘<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Strict//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd”>’); } ?>

这些检查核实浏览器是否接受application/xhtml+xml的MIME类型,如果接 受,就发送这个MIME类型并把XHTML 1.1文类类型写到HTML中。如果这个MIME类型不被接受,就发送text/html的MIME类型并把XHTML 1.0 Strict(严格)的文档类型写入HTML。

除了你知道你正在做着正确的事情和为自己准备将来的路的平和想法外,最直接的益处就是,使用这个 方法,Mozilla浏览器把你的文件当作XML程序对待并且如果你的XHTML还没有抓痒,就是说不合式的,Mozilla就不会工作。然后你就可以排 错了,而不需要用校验器来运行你的文档了。

配置 Apache 为 XHTML 发送正确的 MIME 类型

2007 年 6 月 18 日

http://www.ibm.com/developerworks/cn/xml/x-tipapachexhtml/

本文将向您展示:如何配置 Apache 以便为支持可扩展超文本标记语言(Extensible Hypertext Markup Language,XHTML)的浏览器标记文档的媒体类型为 application/xhtml+xml,同时仍然向不支持该语言的浏览器(如 Microsoft® Internet Explorer®)发送 text/html。

当 Web 服务器向浏览器发送文档时,它会给文档加上一个响应报头作为前缀,如 清单 1 所示。此报头包含了用于告诉浏览器如何解释文档的元数据。元数据的一个最重要的部分是最后一行中的 Content-Type。它将告诉浏览器如何呈现内容。例如,浏览器用于显示 JPEG 和 GIF 的代码是不同的。最重要的是,很多浏览器用于显示 XHTML 和超文本标记语言(Hypertext Markup Language,HTML)的代码也是不同的。

清单 1. 一个典型的 HTTP 响应报头

                HTTP/1.1 200 OK
Date: Thu, 04 Jan 2007 19:39:13 GMT
Server: Apache/2
Last-Modified: Wed, 06 Sep 2006 11:19:37 GMT
ETag: "4dfce0-c4aa-26828440"
Accept-Ranges: bytes
Content-Length: 50346
Content-Style-Type: text/css
Content-Type: application/xhtml+xml

Web 服务器应该给 XHTML 文档加上媒体类型标记 application/xhtml+xml。识别此媒体类型的 Web 浏览器就会相应地将其以 strict 模式而不是 tag soup 模式运行。这使浏览器能更可靠地进行显示,对于级联样式表(Cascading Style Sheets,CSS)布局和基于文档的对象模型的 JavaScript ™ 程序,这一点尤为重要。事实上,在一些情况下同一文档能以两种不同的方式显示,取决于其处理模式是 tag soup 还是 strict。如果想要生成格式良好甚或是有效的 XHTML,则 strict 模式将会是您计划使用并希望使用的模式。

不支持 XHTML 的浏览器也能以 tag soup 模式处理格式良好的文档。结果并不完美,但可以满足一小部分使用很老的浏览器的用户需要。对于大部分使用不符合标准的 Internet Explorer 的用户来说,结果也还可以接受。但是,当前版本的 Internet Explorer(包括 6 和 7)无法识别 application/xhtml+xml 媒体类型。如果向 Internet Explorer 发送 application/xhtml+xml 文档,它将会反过来要求您保存文件,如 图 1 所示。
图 1. Internet Explorer 不知道如何处理 application/xhtml+xml
某些文件可能会损害您的计算机。如果下面的文件信息看起来可疑,或者您不完全信任其来源,请不要打开或保存此文件。文件名:a.xhtml

因此,处理 XHTML 时,要获得最大的兼容性,就需要向 Firefox、Safari、Opera 和其他符合标准的浏览器发送 application/xhtml+xml,而向 Internet Explorer 发送 text/html。在这两种情况下发送的是同一个文件。您只需在超文本传输协议(Hypertext Transfer Protocol,HTTP)的报头中更改文件的媒体类型标记即可。使用 Apache Web 服务器时,可在服务器配置文件或个人目录中的 .htaccess 文件中做此更改。

Apache 配置指令

根据默认,Apache 通过检查文件的扩展名来决定与每个文件一起发送的媒体类型。扩展名类型映射存储于 httpd/conf 目录(通常是类似 /usr/httpd/conf 或 /etc/httpd/conf 的目录)下的 mime.types 文件中。比如,清单 2 显示了 Apache 2.0 的 mime.types 文件的部分内容。

清单 2. Apache 的 mime.types

                # This file controls what Internet media types are sent to the client for
# given file extension(s).  Sending the correct media type to the client
# is important so they know how to handle the content of the file.
# Extra types can either be added here or by using an AddType directive
# in your config files. For more information about Internet media types,
# please read RFC 2045, 2046, 2047, 2048, and 2077.  The Internet media type
# registry is at <http://www.iana.org/assignments/media-types/>.

# MIME type                     Extensions
application/atom+xml            atom
application/mathematica
application/mathml+xml          mathml
application/msword              doc
application/octet-stream        bin dms lha lzh exe class so dll dmg
application/postscript          ai eps ps
application/rdf+xml             rdf
application/reginfo+xml
application/xhtml+xml           xhtml xht
application/xslt+xml            xslt
application/xml                 xml xsl
application/xml-dtd             dtd
application/xml-external-parsed-entity
application/zip                 zip
audio/mpeg                      mpga mp2 mp3
image/jpeg                      jpeg jpg jpe
image/naplps
image/png                       png
image/svg+xml                   svg
image/tiff                      tiff tif
text/html                       html htm
text/plain                      asc txt
text/sgml                       sgml sgm
text/xml
text/xml-external-parsed-entity
video/mpeg                      mpeg mpg mpe

一些更老的版本没有根据默认安装所有这些映射,并且可能事实上使用了一些十分有害的映射。尤其应该注意,对于原始 XML 文件使用 text/xml 而不是 application/xml 是一个常见的问题。

具有了这些默认的映射后,您所需要做的全部工作就是为 XHTML 文件加上 .xhtml 或 .xht 后缀,而不是 .html 后缀,之后,所有这类文件都将被作为 application/xhtml+xml 处理。这对于 Firefox、Opera 和 Safari 效果很好,但对于 Internet Explorer 却并非如此。您所需要的是一种方法,通过它可向 Internet Explorer 发送一种媒体类型而向所有其他浏览器发送另一种媒体类型。

浏览器嗅探

2007 年,可以放心假设所有非 Internet Explorer 的浏览器都能识别 application/xhtml+xml。(如果您确实希望支持很老的浏览器,则破解我下面提出的规则也很容易。)因此您就需要识别 Internet Explorer 的所有版本并将媒体类型更改为 text/html。幸运的是,Internet Explorer 在发送 HTTP 请求时可告知服务器浏览器的类型,如 清单 3 所示。

清单 3. Internet Explorer 的 HTTP 请求报头

                GET /test/a.xhtml HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, 
        application/msword, application/vnd.ms-powerpoint, */*
Accept-Language: en-us
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322)
Host: www.xom.nu
Connection: Keep-Alive

关键在于 User-Agent 字段。虽然由于传统原因 Internet Explorer 在开始时感觉像是 Netscape,但 MSIE 字符串可将其识别为 Internet Explorer。所有版本的 Internet Explorer 在 User-Agent 字段中都包含了此字符串,而所有其他现代的浏览器都不具备此特征。

您需要配置服务器以便查看报头中的 User-Agent 字段,并向 Internet Explorer 发送 text/html,向所有其他浏览器发送 application/xhtml+xml。mod-rewrite 模块并不局限于重写 URL。它还能根据 User-Agent 更改 HTTP 响应报头。清单 4 展示了配置文件中需要放入的代码。

清单 4. 向 Internet Explorer 发送 text.html

                RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} .*MSIE.*
RewriteCond %{REQUEST_URI} \.xhtml$
RewriteRule .* - [T=text/html]

第一行会打开重写引擎。

第二行的第一个重写条件表明:下面的规则仅适用于 HTTP 请求报头中的 user-agent 字符串包含子字符串 MSIE 的情形。正则表达式 .*MSIE.* 实现了此功能。

第三行的第二个重写条件表明:下面的规则仅适用于浏览器请求的文件具有 .xhtml 扩展名的情形。常规的 .html 文件被作为普通的 text/html 提供给所有浏览器。

最后一行是实际的重写规则。此规则有点不太常见,因为重写并未真正更改 URL 中的任何东西。接下来,匹配整个 URL (.*) 但接着将其替换成它自己 (-)。然而,最后的 [T=text/html] 字段会把 Content-Type 报头更改为 text/html。如果同时匹配上述两个条件,则使用此规则。反之则不然。

安装规则

根据服务器设置的不同,此代码可能位于以下几个位置之一:

  • 主 httpd.conf 文件
  • httpd.conf 文件中的 VirtualHost 部分或单独的虚拟主机配置文件
  • XHTML 文件所在目录中的 .htaccess 文件

这些指导说明在 Apache 1.3 和 2.0 中应该都有效。如果您在 .htaccess 文件中使用这些规则,则似乎没什么作用,这时,确保对目录做出了如下设置以允许在主 httpd.conf 文件中进行覆盖:

<Directory /var/www/foo>
  AllowOverride FileInfo
</Directory>

Lynx

如果可以的话,您应该多支持一个不能识别 application/xhtml+xml 的浏览器:Lynx。Lynx 是一种文本模式浏览器,主要由自动化脚本和处理 shell 的 UNIX® 爱好者使用。它的市场份额很小,但是其独特的功能使它具有了足够的重要性,颇值得我们关注,但前提是不给其他用户造成不便。

幸运的是,所有 Lynx 的 user-agent 字符串都以词 “Lynx” 开头,而其他的 user-agent 字符串都不包含该词。因此,为支持 Lynx,您所要做的全部工作就是将该字符串添加到重写条件正则表达式中,如 清单 5 所示:

清单 5. 向 Lynx 发送 text.html

                RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} ((.*MSIE.*)|(Lynx.*))
RewriteCond %{REQUEST_URI} \.xhtml$

RewriteRule .* - [T=text/html]

第二行中的新正则表达式匹配任何包含 MSIE 或以 Lynx 开头的字符串。如果发现另一个浏览器不能很好地处理 application/xhtml+xml,则可向其 user-agent 字符串中做类似的添加。

伪装成 Internet Explorer

一些更老版本的 Opera 和 Safari 通过在其 user-agent 字符串中包含 MSIE 将自己伪装成 Internet Explorer。但是您无需为此忧虑,原因如下:

  • 几乎已经没什么人使用那些版本了。
  • 与一些更新版本的 Safari 和 Opera 不同,那些较老的版本总的说来处理 text/html 比处理 application/xhtml+xml 的效果好。

要了解更精确的目标信息,请参阅 参考资料 中到 user-agent 字符串完整列表的链接和可供您参考的 application/xhtml+xml 浏览器支持。

结束语

XHTML 是 Web 的未来。但是,像很多其他重要的技术一样,它的采用由于得不到 Microsoft 浏览器的有力支持而受到阻碍。如本文所展示的那样,没有理由等待 Microsoft。您可以轻松地向非 Microsoft 的浏览器提供 XHTML,同时仍然告诉 Internet Explorer 将它作为 tag soup 处理。现代浏览器的访客和页面作者将完全受益于 XHTML,而受 Internet Explorer 牵制的访客则仍然可获得大部分内容。适当地设置 Multipurpose Internet Mail Extensions(MIME)媒体类型并不是向旧的浏览器提供 XHTML 所能采用的惟一途径,但它却是往正确方向上迈出的一大步。

参考资料

学习

WordPress 2.7 新特征预览

WordPress 新版本的开发进度越来越快了,可能还有好多博客还没有来得及升级到 WordPress 2.6 版 Features Planned for WordPress 2.7 这篇文章就已经开始向我们介绍 WordPress 2.7 新的特性。以下为文章的译文:
WordPress 2.6 仅仅发布了两个星期,但是已经有很多关于 WordPress 下一个版本的讨论。 WordPress 2.7 将会包含一些令人兴奋的特征,这些功能既来自原有的开发计划也有来自 IRC 上的讨论,新版本可能会在2008年底放出。

下面是一些将会在 WordPress 2.7 中出现的新的特征:

  • Comments API – 对我来说,这是最让人兴奋的功能, 它将允许开发者创建离线的留言管理应用,也就是说我们能够以此开发出一些桌面版的客户端,可以对留言进行编辑、审核、回复、删除等操作。
  • Keyboard shortcuts for comment moderation – 此功能将帮助用户迅速处理留言,用户可以自定义快捷方式。比如,按 Ctrl + S 删除垃评论,按下 Ctrl  + A 审核留言等。
  • Theme Update API – WordPress 2.5 以后的版本已经在插件管理上变得很容易,你可以自动收到插件更新提示并自动更新到最新版本。 新版的 WordPress 将会弥补主题和插件上的差距,届时我们将会看到主题更新甚至一键升级。
  • One Click Plugin Installs – 一键安装插件将使插件安装变的更加容易。这个功能通过 One Click Plugin 这个插件完成,而这个插件正是去年插件大赛的冠军。
  • WordPress core updates – 这是很多用户期待已久的应用,通过更新内核你可以轻松的升级 WordPress 到最新版本,这和 WordPress Automatic Upgrade 这个插件完成一样的功能。
  • Default Sitemaps – WordPress 2.7 将内置网站地图生成器, 可以为你的博客自动生成 Google XML sitemaps 。 Google Sitemaps Generator 目前是实现这一功能的最好选择,不过到时候这个优秀的插件可能就要退休了。
  • Admin Panel Comment Replies – 这个插件将帮助你在控制台完成留言回复。当然现在已经有很多这方面的插件,例如 WP AJax Edit CommentsBetter Comments ManagerAbsolute Comments
  • Comment Threading – 这个功能使用户直接回复留言者的留言, WordPress 现在已经有能力在不修改数据库的前提下实现留言回复。这个功能也可以通过 Brian’s Threaded Comments 插件完成。
  • Subscribe to Comments –  WordPress 团队的开发计划中还包括了一个允许订阅评论的开发计划,但是是否实现已久还在讨论中,所以可能不会出现在 WordPress 2.7 中。 当然 Subscribe to Comments 也可以完成这项任务。
  • Widgets for Dashboard and Write Box – 这项应用允许用户自由安排在控制面板和编辑器中的 widgets 以便提升效率。
  • Batch Editing of Posts – 用户可以对他们的文章进行群编辑。不过这方面的应用现在还没有一个比较详细的介绍。

WordPress 2.7 发布以后将会有很多优秀的插件退休,因为它们的功能将被直接添加到 WordPress 内核中,事实上我们本来应该更加注重 WordPress 自身的功能并让博客变得更加容易。更多的功能和新的特征请查阅 WordPress codex

IE 8 Beta 2即将发布,您的网站准备好了吗?

新闻来源:博客堂
在奥运会期间, IE 8 Beta 2将会发布,而且随着英文版的发布,中文版也会在第一波当中进行发布。
IE 8将会是Internet Explorer历史上最重要的一个版本发布,除了其带有中国传统的吉祥数字“8”以外,最主要的是其对标准的兼容性上得到了极高的增强,这对于网页开发人员来说,最大的便利就是不用再为每种浏览器(甚至某种浏览器的不同版本)开发不同的CSS来进行适应。以后网页开发人员只需要兼容W3C的标准即可,而不需要把过度的精力放在不同浏览器标准的相异性上。发布时间在即,那么您的网站是否已经准备好了呢?
1) 兼容性考虑

目前的网站由于各种历史原因,可能针对不同的浏览器设置了不同的CSS文件。而针对IE 8,可能大部分网站尚没有做好准备。可能很多朋友知道,IE 8带有一个“切换IE 7模仿模式”的按钮,而且在Beta 1以及Beta 2期间,这个按钮是设置在默认选中状态。但是在IE 8正式发布的时候,该按钮默认将会是非选中状态,这就表示着如果一个网站没有做任何准备功课,在IE 8下将会以严格模式来常解析CSS。

前段时间,我与合作伙伴见面时,曾经特意使用IE 8 Beta 2的严格模式浏览过大部分合作伙伴的网页,都会出现或多或少的显示变形的问题,使得网站无法进行正确浏览。如果您的网站尚未做过IE 8的兼容性测试,建议您尽快下载IE 8的Beta 1,并且将其切换到IE 8严格模式,对您的网站进行浏览。

如果您发现问题,并且感觉在短期内无法修复,您也可以通过在页面当中添加Meta标签,在服务器端强制IE 8使用“IE 7模仿模式”,做法很简单:

a.  针对全站页面:  您可以修改Web服务器(如Apache/IIS/Resin等)的HTTP头信息,在其中增加以下指令: X-UA-Compatible: IE=EmulateIE7。这个是我个人强烈推荐的做法,在您无法进行全站测试的情况下,可以先使用此方式使IE 8的严格模式暂时失效。

b. 针对单独页面:如果您的网站大部分页面在IE 8严格模式下显示正常,只有个别页面出现问题,建议在出现问题的页面的页首,即Head标签内添加以下Meta标签:

<meta http-equiv=”X-UA-Compatible” content=”IE=EmulateIE7″ />。

更多信息,请参考: http://support.microsoft.com/kb/952030/

2) 制作Activity以及WebSlice

IE 8在Beta 1期间曝光了两个新特性,即Activity(活动)以及WebSlice(源剪辑),目前国内很多网站已经基于Activity以及WebSlice制作了相关的内容,在IE 8 Beta 2期间,您会发现更多的网站会发布这些实用的小工具。以下是目前已经对外发布的一些网站:

a. 淘宝:http://ie8.taobao.com

b. 网易:http://ie8.163.com

c. 百度:http://stock.baidu.com/ie8/ie8.html

d. 腾讯:http://labs.qq.com/e/49/

甚至包括.NET开发人员常去的博客园也已经发布了其最新文章的Web Slice,有兴趣的话可以使用IE 8 Beta 1来访问博客园的首页。另外,如果您也使用Firefox 3,您可以发现已经有人开发了面向Firefox 3的Activity以及WebSlice插件。

Activity的使用场景:您的网站提供一系列的服务,允许贵网站的用户通过在其它网站的主动操作来调用此服务。比如假设您是一个财经网站,提供查询股票/基金信息的服务,通过Activity,您可以让您的用户在其它网站上浏览股评信息时,不需要跳转到贵网站,即可以通过右键菜单调用贵网站的相应服务。如果感兴趣,可以下载Activity开发白皮书

WebSlice的使用场景:您的网站提供一些实时性信息,比如新闻、股票信息等,而希望用户可以在不返回相应页面的时候,当内容发生改动时,即可以推送给最终用户,您可以选择WebSlice。而开发代价仅仅只是将页面当中的某一个标签内的“Class”元素设置为“hslice”这个特殊名称即可,详细信息请阅读WebSlice开发白皮书

另外,在IE 8 Beta 2发布时,微软将会发布一个面向IE 8全新的Gallery网站,用以搜索各个网站开发的WebSlice/Activity等面向IE 8新特性的组件,并且提供最终用户评估/下载,如果您希望您开发的WebSlices/Activity能够得到用户的青睐,那么就从现在开始吧:早起的鸟儿有虫吃。 🙂

3) 其它

IE 8 Beta 2发布时,还将会带来一系列的新特性,在前段时期,已经面向国内一些领先的网站进行过交流,很多合作伙伴都非常感兴趣,并且正在开发此上的服务,相信在奥运会期间大家会看到此类的成果(依据NDA协议,此类网站也已经从微软拿到了IE 8 Beta 2的早期内部版本)。微软也将会举办一系列的市场活动,用以推广我们的合作伙伴所开发的各种面向IE 8的新的服务。

IE 8 Beta 2即将发布,无论您是企业网站的网页设计人员,还是个人网站的站长,都需要尽快为IE 8做好准备。 希望本文对您有帮助。

高达79.24%网民会选择注册“.中国”域名

“.中国”域名将启用极大的调动了2亿中国网民的互联网归属感和认同感.
近日,ICANN理事会通过一项重要决议,允许使用其他语言包括中文等作为互联网顶级域字符,“.中国”将于2009年写入全球根域名系统,成为首批新设的非拉丁语系字符顶级域之一.最新调查显示,高达79.24%的网民会选择注册“.中国”域名.而有业内人士却指出,近八成网民欲注册“.中国”域名对广大企业来说并不是好事.
●中国域名有利品牌文化传播 八成网民欲注册

这意味着,届时全球华人在浏览器地址栏不仅可以通过输入英文域名lenovo.com.cn,还将可以通过直接输入中国域名“联想.中国”在互联网上访问联想公司的网站.

网友冯健表示,中国网民这么多,完全可以借此机会向世界推广中国的文学、语言,意义深远;现在我们都是用英文输入,也应该让外国人来学学汉语,以后让世界也流行中文域名.

“外国人用外文域名,中国人用中文域名,不是很好吗?”一位腾讯威海网友如是表示.显然,中国域名将启用在网民中获得了巨大的认同,这在一项调查中得到充分证实.网易的最新调查显示,高达79.24%的网民会选择注册“.中国”域名.

●专家提醒:企业应及早行动 防范品牌遭遇“强娶”

近八成网民欲注册中国域名对广大企业来说并不是好事.

网络法律学者张樊指出,一个新域名后缀启用之后必然带来注册剧增问题.据了解,欧洲联盟的顶级代码“.eu”在向欧盟居民开放注册后,就吸引了大批民众集中注册.据欧盟委员会统计,在注册开放后100分钟内注册人数高达30万,仅当天便有数十万个人用户提交了注册申请.

张樊认为,“.中国”域名的类似情况可能会更突出,因为它允许将更多的中文商标直接注册成域名.据介绍,对于国内企业来说,绝大部分企业商标用的是中文,过去由于无法直接将其商标注册成域名,极大阻碍了企业品牌在互联网上的传播.

如今,中国域名的启用将给企事业单位的网络品牌传播带来一种全新的体验.相比之下,更多国人能够记住的是企事业单位的中文品牌,而非英文商标.如在十三亿国人中,“海信”的知名度要比“Hisense”高得多.

由于“.中国”域名与“.com”、“.cn”结尾的域名一样,遵循“先注先得”的国际惯例,因此同样具有稀缺性与唯一性的特点.网舟咨询总经理翟文军表示,具有唯一性的域名存在着被他人或竞争对手提前注册的可能性,从而产生企业网络资源和品牌边缘化,因此企业要提高域名品牌意识,加强自身资源保护.

《北京晨报》消息

PHPWind与动网达成战略合作伙伴关系

近日,同为国内领先的网络社区论坛提供商PHPWIND与动网达成了战略合作关系.
据了解,双方在多方面达成共识,将共同规划未来社区论坛及相关解决方案、共同开拓社区论坛市场及相关的增值服务.双方在技术、产品、市场等方面的深入合作,希望为国内社区市场创造更大价值,也希望为国内互联网站长和网民提供更加优质的产品和服务.
PHPWind的CEO王学集表示,双方产品存在平台差异,双方的技术和市场都拥有相当大的互补性,建立战略合作关系的目的也在于此,此番合作符合PHPWind“专注”的发展理念.动网CEO宋海波认为领先者之间的合作可以给双方带来一起制定行业标准、弱化恶性竞争、提升行业门槛及技术领先等益处.并且合作可以让PHPWind更专注于PHP技术,而动网则专注于Windows平台.宋海波表示为了本次合作及为用户提供更好的社区产品,他将重新担任动网技术总监一职.

2008的互联网,已有越来越多人的目光转移到网络社区当中来,是潮流还是机遇?好的开头等于成功的一半,拥有良好基础的PHPWind与动网接下来到底创造出什么样的奇迹呢?让我们一起拭目以待.

关于PHPWind

PHPWind创立于2002年,在过去的6年时间里,PHPWind一直定为于建站软件开发及提供增值服务,致力于为站长提供简便、有效、可持续的建站解决方案.公司核心产品论坛系统是一套开源软件系统,同时PHPWind拥有众多原创的核心技术包括:独创的模版设计体系、数据库的多表散列设计理念、索引数据文件的利用及其算法、文件读写稳定性算法、数据库索引负载均衡算法、多重安全防护体系等,目前已经成为国内应用广泛的论坛软件之一.

关于动网

动网成立于2000年,是国内最早为站长和开发者提供资讯和产品服务的平台之一,国内领先的社区服务提供商,Windows平台90%以上的网站社区采用动网.动网以创新、领先的产品,为广大互联网用户提供优质网络社区生活和体验,是国内独家拥有ASP、Asp.Net、PHP全系列产品的服务商.致力于为国内网站和站长提供多样化的服务,为网站建设提供多种建站解决方案.

AdSense 推介计划即将暂停

今天收到Google的邮件说adsense推介即将暂停
您好:

2008 年 8 月的最后一周,我们将暂停 AdSense 推介计划。这可能会给正在投放推介广告的发布商带来一些不便,我们在这里表示歉意。Google 一直努力为发布商和广告商提供更好的广告产品和体验,也在不断评估各种广告产品的表现,一旦 AdSense 推介计划重新启动,我们会在第一时间通知大家,非常感谢各位发布商对我们工作的支持和理解。

对于在正在投放 AdSense 推介广告(包括Google 产品推介和 AdWords 广告商的推介广告)的发布商,为了避免推介计划暂停给您带来不便,我们建议您在我们暂停推介计划之前,采取如下操作:

第一步:从您的网站撤下所有 AdSense 推介代码。8 月最后一周之前,请您把所有 AdSense 推介代码从您的网站撤下,然后您可以继续利用这些空出的广告位赚取收益。

第二步:用 AdSense 文字广告替代之前的 AdSense 推介广告。如果您的网页目前只投放了一个或两个AdSense文字广告单元,我们建议您在撤下 AdSense 推介广告后,在这些广告位投放 AdSense 文字广告。

第三步:把所有 AdSense 推介的报告数据保存到您的电脑。AdSense 推介报告会在您的 AdSense 帐户保存到10月底。我们建议您在10月底之前备份所有的推介报告,以便日后查看。

如果您有其他问题,可以访问我们的帮助中心,或者稍后访问我们的官方博客。

非常感谢大家一直使用 AdSense 推介,也希望大家继续使用我们的其他广告产品,祝大家一切顺利!
Google AdSense 小组敬上

—————————————-
电子邮件首选项:我们向您发送此封必读电子邮件服务通告旨在通知您我们即将停止提供某项 AdSense 功能。

Google Inc.
1600 Amphitheatre Parkway
Mountain View, CA 94043

五个更好被Technorati索引的技巧

  如果你感到奇怪,为何Technorati不索引你的博客文章和Tags,那么也许因为Technorati的蜘蛛不能访问或者评估你的博客,因此你需要做一些Technorati蜘蛛希望你做的事情。这里有一些简单的技巧可以使你的博客能被Technorati索引的更好,这样你就可以从Technorati那里获得更多的流量。

  1、对网页HTML代码进行合法性校验

  以它需要的那种方式来显示你网页的内容,这样Technorati蜘蛛就可以更有效的索引收录你的网站。W3C校验服务是一个免费校验页面HTML和XHTML数据合法和一致性的服务,可以帮助你发现并纠正你网站上面的错误标识。

  2、校验你的Feed的合法性

  Technorati蜘蛛索引你的Feed来获得一些额外的信息和辨别文件结构,Feedvalidator就是一个检验RSS 0.9-2.0和Atom Feed的校验工具,它有助于你尽快改进你的Feed。

  3、标记单独的文章地址

  在每篇博客文章的超级链接中增加一个名为“bookmark”的定义,可以帮助Technorati蜘蛛找到正确的独立博客文章URL地址,所以在你的文章的超级链接中加入这段代码来帮助Technorati蜘蛛吧。例如:

<_a href=”http://technorati.com/tag/[tagname]” rel=”tag”>[tagname]<_/a>

  4、使用Technorati Tags

  如果你博客软件支持目录和RSS Feed(例如Movable Type,WordPress,TypePad等),那么你的分类会被自动标记,如果你的博客软件不支持目录标记,那么你可以在你的博客中增加一个Tags的超级链接,这个链接中包含一个特殊的定义即可。例如:

  <_a href=”http://apple.com/ipod” rel=”tag”>iPod<_/a>

  注意,你加的Tags超级链接可以不必指向Technorati,只要链接中包含rel=”tag”就可以了。

  5、通过Ping来通知Technorati更新

  使用Ping来通知Technorati,让Technorati知道你的博客已经更新了,并邀请Technorati来索引你的页面,很多博客软件都支持自动Ping Technorati,你也可以手动去Ping Technorati

  我看到很多博客都抱怨Technorati不来索引自己的博客,那么试试上面几点吧,看看做了之后Technorati是否会索引正常。总之,要有耐心,相信Technorati总会更好的索引你的博客的。

Google Analytics允许数据共享及参与基准分析

Google Analytics今天进行了一次比较重大的更新,不仅改变了数据共享政策,还允许用户参与行业内基准分析(benchmarking)。简言之,你现在可以将Google Analytics里的统计数据共享至其它应用,包括Google的其它产品,以及行业内基准分析。共享至前者则可以令Google Analytics与其它产品更密紧地结合,从而获得更多额外的功能,而共享至行业内基准分析,则可以令你直接将你的网站与同行业内网站进行对比。

  登录Analytics,你应该会看到一个设置选项,这时你可以自由设定数据的共享:

google-analytics-data-sharing-1.gif

  点击accept即表示你愿意将Analytics里的统计数据与Google其它产品共享。你还可以在Edit Account and Data Sharing Settings里设置Analytics统计数据的其它共享功能,比如参与行业内基准分析。不必担心,假如你的网站在同行业内有主要的竞争对手,它们也不会知道哪些数据是来自你的网站,因为Google会自动将数据内与你的身份有关的所有信息移除,变成全匿名式:

google-analytics-data-sharing-2.gif

  以下是一个基准分析的截图(Google提供):

google-analytics-data-sharing-3.gif

  此外,Analytics今天也已经和Google音频广告正式整合。

phpMyAdmin 2.11.5

phpMyAdmin是一个用PHP编写的,可以通过互联网控制和操作MySQL.通过phpMyAdmin可以完全对数据库进行操作,例如建立、复制/删除数据等等.
对于采用PHP+MySQL结构的CMS和BBS程序来说,这个工具对于站长而言再合适不过了.
Release Notes:http://www.phpmyadmin.net/home_page/downloads.php?relnotes=0
官网:http://www.phpmyadmin.net/home_page/index.php
phpMyAdmin 2.11.5

YouTube流量全球第二

来自Alexa的最新排名显示,Web2.0视频站点YouTube顺利超越Google.com,成为世界第二大流量的站点.
事实证明视频搜索市场甚至要大于传统的在线搜索,去年年初,网络营销和网站流量专家凯文赖利就已经认为,在线视频已经不仅仅拥有娱乐价值.视频正在被广泛用于营销,制造时尚与市场潜力.
访问:YouTube

用于 WordPress 的7个反垃圾工具

新闻来源:翻译自mashable.com
没有人喜欢垃圾信息,除了制造者本人。如果你正运行着一个 WordPress 博客系统,你可能已经至少安装了一个垃圾信息控制部件,但如果你需求更多的保护,我们搜集到7个很棒的工具,它们中的一些,经过简单调试,甚至可以阻挡目前势头渐旺的垃圾 Pingback。作为 WordPress 的插件,我们不建议您将这些工具全装上,那样会让您的托管环境吃紧。

没有人喜欢垃圾信息,除了制造者本人。如果你正运行着一个 WordPress 博客系统,你可能已经至少安装了一个垃圾信息控制部件,但如果你需求更多的保护,我们搜集到7个很棒的工具,它们中的一些,经过简单调试,甚至可以阻挡目前势头渐旺的垃圾 Pingback。作为 WordPress 的插件,我们不建议您将这些工具全装上,那样会让您的托管环境吃紧。

Akismet

Akismet (Automattic Kismet) 捆绑在每一个 WordPress 中,你需要做的只是在 wordpress.com 注册一个 API 密钥。

Bad Behavior

Bad Behavior 运行在 PHP 网站上,用来阻止那些肆意妄为的自动程序的恶意行为,它可以用于 WordPress, MediaWiki, Drupal 等系统。

Defensio.com

Defensio.com 是一个垃圾信息过滤插件,支持公开 ID,可以为你的 Blog 的评论信息(不管是好信息还是坏信息)生成 RSS 订阅。

Simple CAPTCHA

Simple CAPTCHA 在你的评论区增添一个 CAPTCHA 验证区,用来阻止那些自动向 Blog 发送垃圾评论信息的程序。

Simple Trackback Validation

Simple Trackback Validation 顾名思义,Simple Trackback Validation 就是用来验证 Trackback 合法性的,垃圾 Trackback 是较新的东西,但发展迅猛,该插件会验证这些 Trackback 的合法性,只允许合法的 Trackback 进来。

Spam Karma 2

Spam Karma 2 插件参考多种因素为一个评论打分,比如已发表时间,电子邮件地址,里面是否有链接,诸如此类。分数越高越好。该插件还可以用于阻止目前到处可见的 “某某某发了一个有趣的帖子”之类的垃圾 Pingback。

WP Spam Hitman

WP Spam Hitman 使用预先定义的样板阻止你博客中的垃圾信息。

本文国际来源:http://mashable.com/2008/02/10/fighting-spam-wordpress/
由35公里翻译并发布在 COMSHARP CMS 的 CMS 知识库。

Google Urchin现在公开测试

据Google Analytics官方博客报道,Google宣布Urchin软件的beta版本已经开放下载了,和Google Analytics不同的是,Urchin可以安装在你自己的服务器上,Google Analytics是Google公司在收购了Urchin公司后推出的一款网络分析软件。

urchinsw.png

为什么使用Urchin软件?

Urchin软件用于管理和分析那些处于防火墙保护的、内容敏感而不适合使用Google Analytics的网络分析工具,Urchin能处理和分析服务器的日志文件内容,并能使用浏览器来查看统计资料,Urchin软件内建数据库、支持多平台系统(Windows/FreeBSD/Linux)、自动分析多站点服务器流量资料,由于使用的是本地数据库,并且不需要访问Internet,因此数据分析内容可以保存在本地,不会被Google等第三方知道。

•更准确地缘识别访客
•两岸分割选择类似Google Analytics功能
•电子商务和活动跟踪包括: (不再需要额外模块)
•大幅度提高嵌入式调度,以更轻松地管理加工和再加工,就业机会
•改进的用户界面
•更强大的日志处理引擎

你可以下载一个90天版的测试版在这里。一旦Urchin软件从Google出来的测试版,你可以购买它为2995美元通过Urchin软件授权顾问

WordPress 2.3.3 发布

今天下午WordPress 开发日志发布了WordPress 2.3.3。

http://wordpress.org/development/2008/02/wordpress-233/

WordPress 2.3.3 is an urgent security release. A flaw was found in our XML-RPC implementation such that a specially crafted request would allow any valid user to edit posts of any other user on that blog. In addition to fixing this security flaw, 2.3.3 fixes a few minor bugs. If you are interested only in the security fix, download the fixed version of xmlrpc.php and copy it over your existing xmlrpc.php. Otherwise, you can get the entire release here.