无需翻墙上Twitter!

Posted in Collation on 七月 7th, 2009 by corrie – 5 Comments

使用Twitter 哪需翻墙?(改Hosts版)

HOST文件文件位置(双击后用文本编辑器打开)
C:\windows\system32\drivers\etc\hosts文件中加入以下几行。

128.121.146.228 twitter.com
128.121.146.228 www.twitter.com
128.121.146.101 assets0.twitter.com
128.121.146.101 assets1.twitter.com
128.121.146.101 static.twitter.com
128.121.146.229 assets2.twitter.com
128.121.146.229 assets3.twitter.com
65.74.185.41 twitter.zendesk.com
65.74.185.41 help.twitter.com

好像只有这么多可用的Twitter IP了。

  • Facebook
  • Twitter
  • Share/Bookmark

PHP中Unicode转码和解码的实现

Posted in Collation, PHP on 七月 6th, 2009 by corrie – 1 Comment

在JS中一般将汉字编码成为unicode进行输出,这样可以避免一些中文的问题。PHP中如何处理unicode,这里转一个文章给大家。

UNICODE编码在PHP中使用UCS-2编码,之前还真是没有发现,一直还以为是UTF-8就行了。贴出代码:

//将内容进行UNICODE编码,编码后的内容格式:YOKA\u738b (原始:YOKA王)
function unicode_encode($name)
{

$name = iconv(‘UTF-8′, ‘UCS-2′, $name);
$len = strlen($name);
$str = ”;
for ($i = 0; $i < $len – 1; $i = $i + 2)
{
$c = $name[$i];
$c2 = $name[$i + 1];
if (ord($c) > 0)
{    // 两个字节的文字
$str .= ‘\u’.base_convert(ord($c), 10, 16).base_convert(ord($c2), 10, 16);
}
else
{
$str .= $c2;
}
}
return $str;
}

// 将UNICODE编码后的内容进行解码,编码后的内容格式:YOKA\u738b (原始:YOKA王)
function unicode_decode($name)
{
// 转换编码,将Unicode编码转换成可以浏览的utf-8编码
$pattern = ‘/([\w]+)|(\\\u([\w]{4}))/i’;
preg_match_all($pattern, $name, $matches);
if (!empty($matches))
{
$name = ”;
for ($j = 0; $j < count($matches[0]); $j++)
{
$str = $matches[0][$j];
if (strpos($str, ‘\\u’) === 0)
{
$code = base_convert(substr($str, 2, 2), 16, 10);
$code2 = base_convert(substr($str, 4), 16, 10);
$c = chr($code).chr($code2);
$c = iconv(‘UCS-2′, ‘UTF-8′, $c);
$name .= $c;
}
else
{
$name .= $str;
}
}
}
return $name;
}

测试用例:

echo ‘<h3>YOKA\u738b -> ‘.unicode_decode(‘YOKA\u738b’).’</h3>’;
$name = ‘YOKA王’;
echo ‘<h3>’.unicode_encode($name).’</h3>’;

  • Facebook
  • Twitter
  • Share/Bookmark

推荐:Web 开发与设计师速查手册大全(上)

Posted in Collation, UED on 七月 4th, 2009 by corrie – 1 Comment

Cheat Sheet 一词在中文中并没有很贴切的对译,大概是考试作弊条一类的东西,这要求 Cheat Sheet 必须短小精悍又覆盖广泛,作为 Web 开发与设计师,免不了在工作时查询大量资料,某个 Web 色值,某个 JavaScript 库的核心语法,这类资料如果攒齐了,怕有半间屋子那么多,如果用 Cheet Sheet 也许几十页纸就够了,本文收集了近百份用于 Web 开发与设计的 Cheet Sheet,你会发现他们非常实用。

HTML, XHTML, CSS2

CSS2 Cheat Sheet

不仅是一份完整的 CSS2 速查手册,还让你了解每个属性该怎么用。预览下载 (PDF)

Gosquared CSS help sheets

设计和结构都很整齐,漂亮。下载(PDF)

CHEAT_SHEETS

addedbytes CSS2 Cheat Sheet

该速查手册只有一页纸,包含 CSS 2.1 全部选择器和属性,还包含一个盒子模型示例。下载(PDF | PNG

Core css

将 CSS 的核心知识分成3部分,包含了 CSS 的方方面面。下载 (需免费注册)

core css

core css

CSS Shorthand Cheat Sheet

一些不容易记住的 CSS 元素。下载 (PDF)

CSS2 – Quick Reference Guide – PDF 下载(PDF)

XHTML 1.1 Cheat Sheet

XHTML 1.1 细则中涉及到的所有元素与属性。预览 | 下载

CHEAT_SHEETS

Gosquared html help sheets

设计漂亮,结构精良的 HTML 速查。下载(PDF)

CHEAT_SHEETS

HTML Cheat Sheet

一份 A4 纸大小的单页 HTML 速查表。下载 (PDF | PNG

CHEAT_SHEETS

HTML5 Canvas Cheat Sheet

HTML5 Canvas 对象的速查手册,直接编译自 WHATWG specs 细则,只是更容易阅读一些。下载 (PDF | PNG

CHEAT_SHEETS

HTML Character Entities Cheat Sheet

HTML 字符标识速查。下载 ( PDF | PNG

CHEAT_SHEETS

HTML Character Entities Cheat Sheet

该表包含 HTML 4 字符标识,包括 ISO8859-1 (Latin-1)  中的字符。预览 | 下载CHEAT_SHEETS

HTML Colors Cheat Sheet

该  HTML 颜色表包含 1050 种颜色,按色度区分,每个色度包含25中不同饱和度与亮度。还包含216种 Web 安全色。预览 | 下载(PDF)

CHEAT_SHEETS

RGB Hex Colour Chart

RGB 16进制颜色表。包含216种 Web 安全色。下载 (PNG | PDF

CHEAT_SHEETS

Scripting 速查手册

JavaScript Cheat Sheet

包含 JavaScript 的 的方法与函数,正则表单时,以及 XMLHttpRequest  对象。下载(PNG | PDF

CHEAT_SHEETS

JavaScript DOM Cheatsheet

JavaScript DOM 结构速查手册。下载(PDF)

CHEAT_SHEETS

jQuery 1.3 Cheat Sheet

jQuery 1.3 速查表。预览 | 下载(PDF)

CHEAT_SHEETS

jQuery Cheat Sheet 1.2 jQuery 1.2 速查手册 下载(PDF)

CHEAT_SHEETS

mootools 1.2 cheat sheet

另一个 JavaScript 库 MooTools 1.2 速查手册。下载(PDF)

CHEAT_SHEETS

prototype 1.5.0 JavaScript 库 Prototype 1.5 速查手册。下载 (PDF)

CHEAT_SHEETS

Prototype 1.6.0.2 Cheat Sheet

JavaScript 库 Prototype 1.6.0.2 速查手册。下载(PDF)

CHEAT_SHEETS

Addison-Wesley’s JavaScript Reference Card

JavaScript 参考手册。下载(PDF)

CHEAT_SHEETS

jQuery selectors

对 jQuery 开发者来说,该速查手册不可或缺,详细列举了 jQuery 所有选择器。下载 (徐免费注册)

CHEAT_SHEETS

服务器端编程

PHP Cheat Sheet (V2)

单页 PHP 参考手册,包含日期格式,正则表达式以及常用函数。下载 (PDF | PNG

CHEAT_SHEETS

visibone

该站包含2页基本PHP速查手册,以及8页高级速查手册。非免费。

CHEAT_SHEETS

Php 4 Reference Card PHP4 参考速查手册。下载(PDF)

CHEAT_SHEETS

PHP Cheat Sheet

PHP 比较操作速查手册。下载

CHEAT_SHEETS

Core C# and .NET Quick Reference C# 与 .NET 速查参考手册。下载(PDF)

CHEAT_SHEETS

ASP.net ASP.NET 速查参考手册。下载

CHEAT_SHEETS

MS ASP 古老的 ASP 与 VB Script 速查手册。下载(PNG | PDF

CHEAT_SHEETS

msnet formatting strings 微软 .NET 字符串格式化速查。下载(PDF)

CHEAT_SHEETS

SQL (Structured Query Language) in one page SQL 语言速查。直接访问

CHEAT_SHEETS

MySQL Cheat Sheet MySQL 速查。下载(PNG | PDF

CHEAT_SHEETS

XML (eXtensible Markup Language) in one page XML 单页速查手册。直接访问

CHEAT_SHEETS

XML Syntax Quick Reference XML 语法参考。下载(PDF)

CHEAT_SHEETS

SEO 速查手册

The Web Developer’s SEO Cheat Sheet

出自 SEO MOZ 的 SEO 速查手册,包括重要的 SEO HTML 标签,搜索引擎索引的限制,Title 标签语法建议等。下载(PDF)

CHEAT_SHEETS

本文资料来源:http://www.tripwiremagazine.com/tools/cheat-sheets/front-end-web-developers-toolbox.html
翻译整理:COMSHARP CMS 官方网站

  • Facebook
  • Twitter
  • Share/Bookmark

IE6浏览器不显示PNG图像滤镜的解决方法

Posted in UED on 七月 2nd, 2009 by corrie – 3 Comments

今天美工给了一个宣传页,用了透明的PNG图片和滤镜,也没看直接写到模板后,发现在IE6下无法显示。

代码如下:

.top_txt{_filter:progid:DXImageTransform.Microsoft.AlphaImageLoader (src=’/reg/top10.png’,sizingMethod=’scale’);}

最终解决办法为,把相对地址换成绝对地址即可,代码如下:

.top_txt{_filter:progid:DXImageTransform.Microsoft.AlphaImageLoader (src=’http://res.pplive.com/baike/games/zsg/reg/top10.png’,sizingMethod=’scale’);}

  • Facebook
  • Twitter
  • Share/Bookmark

说说豆瓣电台的界面设计[转]

Posted in UED on 七月 1st, 2009 by corrie – 1 Comment

使用豆瓣电台的过程中,我已经三次错将喜欢的歌曲拖进了垃圾箱。原因在于,在听到好歌的激动情绪中,点击了电台上最醒目的 垃圾箱 按钮,我以为那会是收藏。

豆瓣电台本身是主动推送给听众的,因而需要听众交互的地方少,按钮就那么几个。简洁明了的设计在这里是极恰当的,但如果不注意元素(展示元素,操作元素)摆放的位置,简洁的设计一样会带来使用问题。在我看来,豆瓣电台在界面上就存在如下问题:

1 操作元素 布局分散

电台界面上有如下操作元素:a 音量调节 b 关闭电台 c 加心收藏 d 删除曲目 e 跳过曲目

可以看到,即便简单如5个操作元素,也被分布在三个区域了,我觉得(也根据实际使用)这样并不合理。

操作元素少的界面,如非功能特殊,元素们应尽量在一个集中的区域,以免用户操作跨度太大或找不到相应的操作入口。

我的方案是,将这5个操作元素都集中在显示屏下方的区域。(见我的设计图)

现在的豆瓣电台UI

当前的豆瓣电台界面

我修改的豆瓣电台UI

我修改的豆瓣电台界面

2 操作元素 未根据操作行为进行归类与安排

音量调节 与 关闭电台 按钮摆在一起,二者操作模式不同,况且关闭电台是影响很大的操作,二者在一起颇古怪。

动作相似的操作行为,如非功能特殊,应该安排在一起。这里,加心收藏、删除曲目、听下一曲 三者都是“点击”的操作模式,可以并行排在一起。(关闭电台 也是 点击 操作,但功能特殊且少用,不在此列)

根据操作后果的严重性(比如是否能挽回),以及位置的醒目性,再来安排三者的顺序,我给的方案是:从左至右,加心收藏、听下一首、删除曲目。

另外,将 音量 元素与 关闭电台 元素 分开了,音量元素因为其外型长度,将之置于曲目显示屏下方。关闭电台置于右下的角落里。

3 显示元素 主次不适当

豆瓣电台里,显示元素有三块:a 封面 b 时间 c 歌曲名称及演唱者

我们看到,时间 元素是被置于歌曲名称上方的,颜色深,还是粗体,这一行除了它,没有其他元素。又由于这是个动态元素,本就吸引人的注意力,因而,时间元素 在这里非常引人注目。

但这个区域(时间+曲目)里究竟谁是更主要的呢?我认为是曲目。时间元素在这里过分突出,是个干扰。

将主次颠倒了一下,突出曲目名称,时间元素显示在右下角,并且颜色调淡,我觉得这样更相宜。

另外,电台里的专辑封面缩略图比较粗糙,不清晰,这个细节应该改善。

困扰我的问题

关闭电台 元素的摆放,让我头疼半天,怎么摆都觉得不合适。到后来我反思,它是必要的吗?

没有 关闭电台 按钮的 电台界面UI

没有 关闭电台 按钮的界面,是不是更好些?

我估计,设计人员保留这个按钮的作用,是设想的这样的使用情境:用户独立开一个电台窗口,最小化听音乐,不想听了,可以先关闭电台(但窗口保留,便 于他二次开启)。因为从豆瓣去到电台入口,步骤很麻烦。(bug 一枚,鼠标移到 关闭电台 按钮,没有提示文字,也没有 变色 等任何反馈。)

关闭电台 元素是个使用次数少的操作,位置应该不明显。奇怪的是,无论摆在哪里,它都很明显。尽管现在我将之挪在了右下角,以保持所有操作元素都在一个集中的大区域里,但仍不是最满意的。

原文地址:http://blog.hoooooney.com/2009/06/29/about_the_ui_of_douban_radio/

  • Facebook
  • Twitter
  • Share/Bookmark

Debian Linux 下的rar解压缩

Posted in Linux on 六月 30th, 2009 by corrie – Be the first to comment

最近在帮朋友搞服务器,有个5G多的附件包,用tar无法搞定,装了个rar很爽。
在debian下安装的,可以用 apt-get install rar 进行安装。

Linux下rar解压(rarlinux下载,安装 ,使用)

(附件说明:两文件下载后,解压,把解压的都放到一个文件夹里。)
linux下想解压rar文件 必须安装软件,我使用到是rarlinux  
下面是下载地址
rarlinux官方网站下载地址
http://www.rarsoft.com/download.htm
华军软件园下载地址
http://www.onlinedown.net/soft/3.htm
天空软件站下载地址
http://www.skycn.com/soft/3455.html

安装                                      //tar.gz文件详细解压步骤
先解压tar.gz文件                   
直接 cd 到相应到文件夹
make                    // 如果提示权限不够 su root 取得最高权限
然后 make install
恭喜你安装成功

最后
使用rarlinux解压rar文件
使用命令 
unrar e filesname.rar
解压rar文件
ok!~

============================================
rarlinux 使用(更多功能)

查看压缩包中的文档
$rar l XXX.rar 或 $rar v XXX.rar

查看压缩包中的文档(只看有什么文档)
$rar lb XXX.rar 或 $rar vb XXX.rar

查看压缩包中的文档(周详信息)
$rar lt XXX.rar 或 $rar vt XXX.rar

============================================
把压缩包的内容解压到当前目录
$rar e XXX.rar

把压缩包的内容解压到指定目录,比如/home/yxd/tmp/下面
$rar e XXX.rar /home/yxd/tmp/

把压缩包解的内容压到指定目录,比如/home/yxd/tmp/下面,包含压缩包中的路径
$rar x XXX.rar /home/yxd/tmp/

============================================
压缩指定的一个文档,比如aaa,以默认压缩率
$rar a XXX.rar aaa

压缩指定的一个文档,比如aaa,以最大压缩率
$rar a -m5 XXX.rar aaa

压缩指定的一个目录下的任何文档,比如ddd目录下的任何文档
$rar a XXX.rar ddd/

压缩指定的一个目录下的任何文档,比如ddd目录下的任何文档和任何子目录
$rar a -r XXX.rar ddd/

压缩指定的一个目录下的任何文档,比如ddd目录下的任何文档和任何子目录,但是不包含空目录
$rar a -r -ed XXX.rar ddd/

压缩指定的一个目录下的任何文档,比如ddd目录,连目录也一起压缩,包括子目录
$rar a XXX.rar ddd

http://bbs.tarena.com.cn/thread-176626-1-1.html

  • Facebook
  • Twitter
  • Share/Bookmark

Jquery Messager 更新到1.5版本

Posted in Develop, Jquery on 六月 26th, 2009 by corrie – 12 Comments

版本1.5更新:
1、修正设置不自动关闭时,鼠标over后直接关闭的bug
2、修正页面有滚动条时,弹出位置不在最下方的bug
3、增加了随屏移动效果

下一版本将至少增加:
1、多种事件回调函数

演示地址:
http://www.corrie.net.cn/demo/messager

  • Facebook
  • Twitter
  • Share/Bookmark

HTTP分析之二:标准状态代码

Posted in Shell on 六月 12th, 2009 by corrie – Be the first to comment

Number

Description

100

Continue

101

Switching protocols

200

OK

201

Created

202

Accepted

203

Non-Authoritative Information

204

No Content

205

Reset Content

206

Partial Content

300

Multiple Choices

301

Moved Permanently

302

Found

303

See Other

304

Not Modified

305

Use Proxy

307

Temporary Redirect

400

Bad Request

401

Unauthorized

402

Payment Required

403

Forbidden

404

Not Found

405

Method Not Allowed

406

Not Acceptable

407

Proxy Authentication Required

408

Request Timeout

409

Conflict

410

Gone

411

Length Required

412

Precondition Failed

413

Request Entity Too Large

414

Request-URI Too Long

415

Unsupported Media Type

416

Requested Range Not Suitable

417

Expectation Failed

500

Internal Server Error

501

Not Implemented

502

Bad Gateway

503

Service Unavailable

504

Gateway Timeout

505

HTTP Version Not Supported





1.1 消息1xx(Informational 1xx)
该类状态代码用于表示临时回应。临时回应由状态行(Status-Line)及可选标题组成,由空行终止。HTTP/1.0中没有定义任何1xx的状态代码,所以它们不是对HTTP/1.0请求的合法回应。实际上,它们主要用于实验用途,这已经超出本文档的范围。

1.2 成功2xx(Successful 2xx)
表示客户端请求被成功接收、理解、接受。
200 OK
请求成功。回应的信息依赖于请求所使用的方法,如下:
GET 要请求的资源已经放在回应的实体中了。
HEAD 没有实体主体,回应中只包括标题信息。  
POST 实体(描述或包含操作的结果)。
201 Created
请求完成,结果是创建了新资源。新创建资源的URI可在回应的实体中得到。原始服务器应在发出该状态代码前创建该资源。如果该操作不能立即完成,服务器必须在该资源可用时在回应主体中给出提示,否则,服务器端应回应202(可被接受)。
在本文定义的方法,只有POST可以创建资源。
202 Accepted
请求被接受,但处理尚未完成。请求可能不一定会最终完成,有可能被处理过程随时中断,在这种情况下,没有办法在异步操作中重新发送状态代码。
202回应是没有义务的,这样做的目的是允许服务器不必等到用户代理和服务器间的连接结束,就可以响应其它过程的请求(象每天运行一次的,基于批处理的过程)。
在某些回应中返回的实体中包括当前请求的状态指示、状态监视器指针或用户对请求能否实现的评估信息。
204 No Content
服务器端已经实现了请求,但是没有返回新的信息。如果客户是用户代理,则勿需为此更新自身的文档视图。该回应主要是为了在不影响用户代理激活文档视图的前提下,进行script语句的输入及其它操作。该回应还可能包括新的、以实体标题形式表示的元信息,它可被当前用户代理激活视图中的文档所使用。

1.3 重定向(Redirection 3xx)
该类状态码表示用户代理要想完成请求,还需要发出进一步的操作。这些操作只有当后跟的请求是GET或HEAD时,才可由用户代理来实现,而不用与用户进行交互。用户代理永远也不要对请求进行5次以上的重定向操作,这样可能导致无限循环。
300 Multiple Choices
该状态码不被HTTP/1.0的应用程序直接使用,只是做为3xx类型回应的缺省解释。存在多个可用的被请求资源。
除非是HEAD请求,否则回应的实体中必须包括这些资源的字符列表及位置信息,由用户或用户代理来决定哪个是最适合的。
如果服务器有首选,它应将对应的URL信息存放在位置域(Location field)处,用户代理会根据此域的值来实现自动的重定向。
301 Moved Permanently
请求到的资源都会分配一个永久的URL,这样就可以在将来通过该URL来访问此资源。有编辑链接功能的客户端会尽可能地根据服务器端传回的新链接而自动更新请求URI。新的URL必须由回应中的位置域指定。除非是HEAD请求,否则回应的实体主体(Entity-Body)必须包括对新URL超链接的简要描述。
如果用POST方法发出请求,而接收到301回应状态码。在这种情况下,除非用户确认,否则用户代理不必自动重定向请求,因为这将导致改变已发出请求的环境。
注意:当在接收到301状态码后而自动重定向POST请求时,一些现存的用户代理会错误地将其改为GET请求。
302 Moved Temporarily
请求到的资源在一个不同的URL处临时保存。因为重定向有时会被更改,客户端应继续用请求URI来发出以后的请求。新的URL必须由回应中的位置域指定。除非是HEAD请求,否则回应的实体主体(Entity-Body)必须包括对新URL超链接的简要描述。
如果用POST方法发出请求,而接收到302回应状态码。在这种情况下,除非用户确认,否则用户代理不必自动重定向请求,因为这将导致改变已发出请求的环境。
注意:当在接收到302状态码后而自动重定向POST请求时,一些现存的用户代理会错误地将其改为GET请求。
304 Not Modified
如果客户端成功执行了条件GET请求,而对应文件自If-Modified-Since域所指定的日期以来就没有更新过,服务器应当回应此状态码,而不是将实体主体发送给客户端。回应标题域中只应包括一些相关信息,比如缓存管理器、与实体最近更新(entity’s Last-Modified)日期无关的修改。相关标题域的例子有:日期、服务器、过期时间。每当304回应中给出的域值发生变化,缓存都应当对缓存的实体进行更新。

1.4 客户端错误(Client Error)4xx
4xx类的状态码表示客户端发生错误。如果客户端在收到4xx代码时请求还没有完成,它应当立即终止向服务器发送数据。除了回应HEAD请求外,不论错误是临时的还是永久的,服务器端都必须在回应的实体中包含错误状态的解释。这些状态码适用于任何请求方法。
注意:如果客户端正在发送数据,服务器端的TCP实现应当小心,以确保客户端在关闭输入连接之前收到回应包。如果客户端在关闭后仍旧向服务器发送数据,服务器会给客户  端发送一个复位包,清空客户端尚未处理的输入缓冲区,以终止HTTP应用程序的读取、解释活动。
400 非法请求(Bad Request)
如果请求的语法不对,服务器将无法理解。客户端在对该请求做出更改之前,不应再次向服务器重复发送该请求。
401 未授权(Unauthorized)
请求需要用户授权。回应中的WWW-Authenticate标题域(10.16节)应提示用户以授权方式请求资源。客户端应使用合适的授权标题域(10.2节)来重复该请求。如果请求中已经包括了授权信任信息,那回应的401表示此授权被拒绝。如果用户代理在多次尝试之后,回应一样还是返回401状态代码,用户应当察看一下回应的实体,因为在实体中会包括一些相关的动态信息。HTTP访问授权会在11节中解释。
403 禁止(Forbidden)
服务器理解请求,但是拒绝实现该请求。授权对此没有帮助,客户端应当停止重复发送此请求。如果不是用HEAD请求方法,而且服务器端愿意公布请求未被实现原因的前提下,服务器会将拒绝原因写在回应实体中。该状态码一般用于服务器端不想公布请求被拒绝的细节或没有其它的回应可用。
404 没有找到(Not Found)
服务器没有找到与请求URI相符的资源。404状态码并不指明状况是临时性的还是永久性的。如果服务器不希望为客户端提供这方面的信息,还回应403(禁止)状态码。

1.5 服务器错误(Server Error )5xx
回应代码以‘5’开头的状态码表示服务器端发现自己出现错误,不能继续执行请求。如果客户端在收到5xx状态码时,请求尚未完成,它应当立即停止向服务器发送数据。除了回应HEAD请求外,服务器应当在其回应实体中包括对错误情况的解释、并指明是临时性的还永久性的。
这类回应代码没有标题域,可适用于任何请求方法。
500 服务器内部错误(Internal Server Error)
服务器碰到了意外情况,使其无法继续回应请求。
501 未实现(Not Implemented)
服务器无法提供对请求中所要求功能的支持。如果服务器无法识别请求方法就会回应此状态代码,这意味着不能回应请求所要求的任何资源。
502 非法网关(Bad Gateway)
充当网关或代理的服务器从要发送请求的上游(upstream)服务器收到非法的回应。
503 服务不可用(Service Unavailable)
服务器当前无法处理请求。这一般是由于服务器临时性超载或维护引起的。该状态码暗示情况是暂时性的,要产生一些延迟。
注意:503状态码并没有暗示服务器在超载时一定要返回此状态码。一些服务器可能希望在超载时采用简单处理,即断掉连接。

IIS 错误代码大汇总
400 无法解析此请求。
401.1 未经授权:访问由于凭据无效被拒绝。
401.2 未经授权: 访问由于服务器配置倾向使用替代身份验证方法而被拒绝。
401.3 未经授权:访问由于 ACL 对所请求资源的设置被拒绝。
401.4 未经授权:Web 服务器上安装的筛选器授权失败。
401.5 未经授权:ISAPI/CGI 应用程序授权失败。
401.7 未经授权:由于 Web 服务器上的 URL 授权策略而拒绝访问。
403 禁止访问:访问被拒绝。
403.1 禁止访问:执行访问被拒绝。
403.2 禁止访问:读取访问被拒绝。
403.3 禁止访问:写入访问被拒绝。
403.4 禁止访问:需要使用 SSL 查看该资源。
403.5 禁止访问:需要使用 SSL 128 查看该资源。
403.6 禁止访问:客户端的 IP 地址被拒绝。
403.7 禁止访问:需要 SSL 客户端证书。
403.8 禁止访问:客户端的 DNS 名称被拒绝。
403.9 禁止访问:太多客户端试图连接到 Web 服务器。
403.10 禁止访问:Web 服务器配置为拒绝执行访问。
403.11 禁止访问:密码已更改。
403.12 禁止访问:服务器证书映射器拒绝了客户端证书访问。
403.13 禁止访问:客户端证书已在 Web 服务器上吊销。
403.14 禁止访问:在 Web 服务器上已拒绝目录列表。
403.15 禁止访问:Web 服务器已超过客户端访问许可证限制。
403.16 禁止访问:客户端证书格式错误或未被 Web 服务器信任。
403.17 禁止访问:客户端证书已经到期或者尚未生效。
403.18 禁止访问:无法在当前应用程序池中执行请求的 URL。
403.19 禁止访问:无法在该应用程序池中为客户端执行 CGI。
403.20 禁止访问:Passport 登录失败。
404 找不到文件或目录。
404.1 文件或目录未找到:网站无法在所请求的端口访问。
注意 404.1 错误只会出现在具有多个 IP 地址的计算机上。如果在特定 IP 地址/端口组合上收到客户端请求,而且没有将 IP 地址配置为在该特定的端口上侦听,则 IIS 返回 404.1 HTTP 错误。例如,如果一台计算机有两个 IP 地址,而只将其中一个 IP 地址配置为在端口 80 上侦听,则另一个 IP 地址从端口 80 收到的任何请求都将导致 IIS 返回 404.1 错误。只应在此服务级别设置该错误,因为只有当服务器上使用多个 IP 地址时才会将它返回给客户端。
404.2 文件或目录无法找到:锁定策略禁止该请求。
404.3 文件或目录无法找到:MIME 映射策略禁止该请求。
405 用于访问该页的 HTTP 动作未被许可。
406 客户端浏览器不接受所请求页面的 MIME 类型。
407 Web 服务器需要初始的代理验证。
410 文件已删除。
412 客户端设置的前提条件在 Web 服务器上评估时失败。
414 请求 URL 太大,因此在 Web 服务器上不接受该 URL。
500 服务器内部错误。
500.11 服务器错误:Web 服务器上的应用程序正在关闭。
500.12 服务器错误:Web 服务器上的应用程序正在重新启动。
500.13 服务器错误:Web 服务器太忙。
500.14 服务器错误:服务器上的无效应用程序配置。
500.15 服务器错误:不允许直接请求 GLOBAL.ASA。
500.16 服务器错误:UNC 授权凭据不正确。
500.17 服务器错误:URL 授权存储无法找到。
500.18 服务器错误:URL 授权存储无法打开。
500.19 服务器错误:该文件的数据在配置数据库中配置不正确。
500.20 服务器错误:URL 授权域无法找到。
500.100 内部服务器错误:ASP 错误。
501 标题值指定的配置没有执行。
502 Web 服务器作为网关或代理服务器时收到无效的响应。

  • Facebook
  • Twitter
  • Share/Bookmark

HTTP协议分析之一:HTTP协议详解

Posted in Shell on 六月 12th, 2009 by corrie – 2 Comments

HTTP(HyperTextTransferProtocol) 是超文本传输协议的缩写,它用于传送WWW方式的数据,关于HTTP 协议的详细内容请参 考RFC2616。HTTP协议采用了请求/响应模型。客户端向服务器发送一个请求,请求头包含请求的方法、URI、协议版本、以及包含请求修饰符、客户 信息和内容的类似于MIME的消息结构。服务器以一个状态行作为响应,相应的内容包括消息协议的版本,成功或者错误编码加上包含服务器信息、实体元信息以 及可能的实体内容。

通常HTTP消息包括客户机向服务器的请求消息和服务器向客户机的响应消息。这两种类型的消息由一个起始行, 一个或者多个头域,一个只是头域结束的空行和可 选的消息体组成。HTTP的头域包括通用头,请求头,响应头和实体头四个部分。每个头域由一个域名,冒号(:)和域值三部分组成。域名是大小写无关的,域 值前可以添加任何数量的空格符,头域可以被扩展为多行,在每行开始处,使用至少一个空格或制表符。

通用头域

通用头 域包含请求和响应消息都支持的头域,通用头域包含Cache-Control、 Connection、Date、Pragma、Transfer-Encoding、Upgrade、Via。对通用头域的扩展要求通讯双方都支持此扩 展,如果存在不支持的通用头域,一般将会作为实体头域处理。下面简单介绍几个在UPnP消息中使用的通用头域。

phperz~com

Cache-Control头域

Cache -Control指定请求和响应遵循的缓存机制。在请求消息或响应消息中设置 Cache-Control并不会修改另一个消息处理过程中的缓存处理过程。请求时的缓存指令包括no-cache、no-store、max-age、 max-stale、min-fresh、only-if-cached,响应消息中的指令包括public、private、no-cache、no- store、no-transform、must-revalidate、proxy-revalidate、max-age。各个消息中的指令含义如 下:

Public指示响应可被任何缓存区缓存。

Private指示对于单个用户的整个或部分响应消息,不能被共享缓存处理。这允许服务器仅仅描述当用户的部分响应消息,此响应消息对于其他用户的请求无效。

no-cache指示请求或响应消息不能缓存

no-store用于防止重要的信息被无意的发布。在请求消息中发送将使得请求和响应消息都不使用缓存。

max-age指示客户机可以接收生存期不大于指定时间(以秒为单位)的响应。

min-fresh指示客户机可以接收响应时间小于当前时间加上指定时间的响应。

max-stale指示客户机可以接收超出超时期间的响应消息。如果指定max-stale消息的值,那么客户机可以接收超出超时期指定值之内的响应消息。

php程序员之家

Date头域

Date头域表示消息发送的时间,时间的描述格式由rfc822定义。例如,Date:Mon,31Dec200104:25:57GMT。Date描述的时间表示世界标准时,换算成本地时间,需要知道用户所在的时区。

Pragma头域

Pragma头域用来包含实现特定的指令,最常用的是Pragma:no-cache。在HTTP/1.1协议中,它的含义和Cache- Control:no-cache相同。

请求消息

请求消息的第一行为下面的格式:

Method  SP  Request-URI  SP  HTTP-Version  CRLF    
Method 表 示对于Request-URI完成的方法,这个字段是大小写敏感的,包括OPTIONS、GET、HEAD、POST、PUT、DELETE、 TRACE。方法GET和HEAD应该被所有的通用WEB服务器支持,其他所有方法的实现是可选的。GET方法取回由Request-URI标识的信息。 HEAD方法也是取回由Request-URI标识的信息,只是可以在响应时,不返回消息体。POST方法可以请求服务器接收包含在请求中的实体信息,可 以用于提交表单,向新闻组、BBS、邮件群组和数据库发送消息。

www.phperz.com

SP表示空格。
Request-URI遵循URI格式,在此字段为星 号(*)时,说明请求并不用于某个特定的资源地址,而是用于服务器本身。
HTTP- Version表示支持的HTTP版本,例如为HTTP/1.1。
CRLF表 示换行回车符。请求头域允许客户端向服务器传递关于请求或者关于客户机的附加 信息。请求头域可能包含下列字段Accept、Accept-Charset、Accept- Encoding、Accept-Language、Authorization、From、Host、If-Modified-Since、If- Match、If-None-Match、If-Range、If-Range、If-Unmodified-Since、Max-Forwards、 Proxy-Authorization、Range、Referer、User-Agent。对请求头域的扩展要求通讯双方都支持,如果存在不支持的请 求头域,一般将会作为实体头域处理。

典型的请求消息:

GET http://www.phperz.com:80/somedata.exe
Host: download.microtool.de
Accept:*/*
Pragma: no-cache
Cache-Control: no-cache

www.phperz.com

Referer: http://www.phperz.com/
User-Agent:Mozilla/4.04[en](Win95;I;Nav)
Range:bytes=554554-

上例第一行表示HTTP客户端(可能是浏览器、下载程序)通过GET方法获得指定URL下的文件。棕色的部分表示请求头域的信息,绿色的部分表示通用头部分。

Host头域

Host头域指定请求资源的Intenet主机和端口号,必须表示请求url的原始服务器或网关的位置。HTTP/1.1请求必须包含主机头域,否则系统会以400状态码返回。

Referer头域

Referer 头域允许客户端指定请求uri的源资源地址,这可以允许服务器生成回退链表,可用来登陆、优化cache等。他也允许废除的或错误的连接由于维护的目的被 追踪。如果请求的uri没有自己的uri地址,Referer不能被发送。如果指定的是部分uri地址,则此地址应该是一个相对地址。

Range头域

Range头域可以请求实体的一个或者多个子范围。例如,
表示头500个字节:bytes=0-499
表示第二个500字节:bytes=500-999
表示最后500个字节:bytes=-500 phperz~com
表示500字节以后的范围:bytes=500-
第一个和最后一个字节:bytes=0-0,-1
同时指定几个范围:bytes=500-600,601-999

但是服务器可以忽略此请求头,如果无条件GET包含Range请求头,响应会以状态码206(PartialContent)返回而不是以200 (OK)。

User-Agent头域

User-Agent头域的内容包含发出请求的用户信息。

响应消息

响应消息的第一行为下面的格式:

HTTP-Version  SP  Status-Code  SP  Reason-Phrase  CRLF

HTTP -Version表示支持的HTTP版本,例如为HTTP/1.1。
Status- Code是一个三个数字的结果代码。
Reason-Phrase给Status-Code提供一个简单的文本描述。
Status-Code主要用于机器自 动识别,Reason-Phrase主要用于帮助用户理解。Status-Code的第一个数字定义响应的类别,后两个数字没有分类的作用。第一个数字可 能取5个不同的值:

1xx:信息响应类,表示接收到请求并且继续处理

2xx:处理成功响应类,表示动作被成功接收、理解和接受

php程序员站

3xx:重定向响应类,为了完成指定的动作,必须接受进一步处理

4xx:客户端错误,客户请求包含语法错误或者是不能正确执行

5xx:服务端错误,服务器不能正确执行一个正确的请求

响应头域允许服务器传递不能放在状态行的附加信息,这些域主要描述服务器的信息和 Request-URI进一步的信息。响应头域包含Age、Location、Proxy-Authenticate、Public、Retry- After、Server、Vary、Warning、WWW-Authenticate。对响应头域的扩展要求通讯双方都支持,如果存在不支持的响应头 域,一般将会作为实体头域处理。

典型的响应消息:

HTTP/1.0200OK
Date:Mon,31Dec200104:25:57GMT
Server:Apache/1.3.14(Unix)
Content-type:text/html
Last-modified:Tue,17Apr200106:46:28GMT
Etag:”a030f020ac7c01:1e9f”
Content-length:39725426
Content-range:bytes554554-40279979/40279980

上例第一行表示HTTP服务端响应一个GET方法。棕色的部分表示响应头域的信息,绿色的部分表示通用头部分,红色的部分表示实体头域的信息。

php程序员站

Location响应头

Location响应头用于重定向接收者到一个新URI地址。

Server响应头

Server响应头包含处理请求的原始服务器的软件信息。此域能包含多个产品标识和注释,产品标识一般按照重要性排序。

实体

请求消息和响应消息都可以包含实体信息,实体信息一般由实体头域和实体组成。实体头域包含关于实体的原信息,实体头包括Allow、Content- Base、Content-Encoding、Content-Language、 Content-Length、Content-Location、Content-MD5、Content-Range、Content-Type、 Etag、Expires、Last-Modified、extension-header。extension-header允许客户端定义新的实体 头,但是这些域可能无法未接受方识别。实体可以是一个经过编码的字节流,它的编码方式由Content-Encoding或Content-Type定 义,它的长度由Content-Length或Content-Range定义。

Content-Type实体头

Content-Type实体头用于向接收方指示实体的介质类型,指定HEAD方法送到接收方的实体介质类型,或GET方法发送的请求介质类型 Content-Range实体头 php程序员之家

Content-Range实体头用于指定整个实体中的一部分的插入位置,他也指示了整个实体的长度。在服务器向客户返回一个部分响应,它必须描述响应覆盖的范围和整个实体长度。一般格式:

Content-Range:bytes-unitSPfirst-byte-pos-last-byte-pos/entity-legth

例如,传送头500个字节次字段的形式:Content-Range:bytes0- 499/1234如果一个http消息包含此节(例如,对范围请求的响应或对一系列范围的重叠请求),Content-Range表示传送的范围, Content-Length表示实际传送的字节数。

Last-modified实体头

应答头 说明
Allow 服务器支持哪些请求方法(如GET、POST等)。
Content-Encoding 文 档的编码(Encode)方法。只有在解码之后才可以得到Content-Type头指定的内容类型。利用gzip压缩文档能够显著地减少HTML文档的 下载时间。Java的GZIPOutputStream可以很方便地进行gzip压缩,但只有Unix上的Netscape和Windows上的IE 4、IE 5才支持它。因此,Servlet应该通过查看Accept-Encoding头(即request.getHeader(“Accept- Encoding”))检查浏览器是否支持gzip,为支持gzip的浏览器返回经gzip压缩的HTML页面,为其他浏览器返回普通页面。
Content-Length 表 示内容长度。只有当浏览器使用持久HTTP连接时才需要这个数据。如果你想要利用持久连接的优势,可以把输出文档写入 ByteArrayOutputStram,完成后查看其大小,然后把该值放入Content-Length头,最后通过 byteArrayStream.writeTo(response.getOutputStream()发送内容。
Content-Type 表示后面的文档属于什么MIME类型。Servlet默认为text/plain,但通常需要显式地指定为text/html。由于经常要设置Content-Type,因此HttpServletResponse提供了一个专用的方法setContentTyep。

www.phperz.com

Date 当前的GMT时间。你可以用setDateHeader来设置这个头以避免转换时间格式的麻烦。
Expires 应该在什么时候认为文档已经过期,从而不再缓存它?
Last-Modified 文 档的最后改动时间。客户可以通过If-Modified-Since请求头提供一个日期,该请求将被视为一个条件GET,只有改动时间迟于指定时间的文档 才会返回,否则返回一个304(Not Modified)状态。Last-Modified也可用setDateHeader方法来设置。
Location 表示客户应当到哪里去提取文档。Location通常不是直接设置的,而是通过HttpServletResponse的sendRedirect方法,该方法同时设置状态代码为302。
Refresh 表示浏览器应该在多少时间之后刷新文档,以秒计。除了刷新当前文档之外,你还可以通过setHeader(“Refresh”, “5; URL=http://host/path”)让浏览器读取指定的页面。 phperz.com
注 意这种功能通常是通过设置HTML页面HEAD区的<META HTTP-EQUIV=”Refresh” CONTENT=”5;URL=http://host/path”>实现,这是因为,自动刷新或重定向对于那些不能使用CGI或Servlet的 HTML编写者十分重要。但是,对于Servlet来说,直接设置Refresh头更加方便。

注意Refresh的意义是“N秒之后 刷新本页面或访问指定页面”,而不是“每隔N秒刷新本页面或访问指定页面”。因此,连续刷新要求每次都发送一个Refresh头,而发送204状态代码则 可以阻止浏览器继续刷新,不管是使用Refresh头还是<META HTTP-EQUIV=”Refresh” …>。

注意Refresh头不属于HTTP 1.1正式规范的一部分,而是一个扩展,但Netscape和IE都支持它。

Server 服务器名字。Servlet一般不设置这个值,而是由Web服务器自己设置。
Set-Cookie 设置和页面关联的Cookie。Servlet不应使用response.setHeader(“Set-Cookie”, …),而是应使用HttpServletResponse提供的专用方法addCookie。参见下文有关Cookie设置的讨论。
WWW-Authenticate 客 户应该在Authorization头中提供什么类型的授权信息?在包含401(Unauthorized)状态行的应答中这个头是必需的。例如, response.setHeader(“WWW-Authenticate”, “BASIC realm=\”executives\”")。

www~phperz~com

注意Servlet一般不进行这方面的处理,而是让Web服务器的专门机制来控制受密码保护页面的访问(例如.htaccess)。

  • Facebook
  • Twitter
  • Share/Bookmark

关于innerHTML的一些

Posted in Google on 六月 8th, 2009 by corrie – 1 Comment

innerHTML 插入节点的性能的问题,通常是我们最关注的。在回答这问题时James Padolsey 给出了他的解决方案,看到上述代码不仅赞叹了下:

function asyncInnerHTML(HTML, callback) {
    var temp = document.createElement('div'),
        frag = document.createDocumentFragment();
    temp.innerHTML = HTML;
    (function(){
        if(temp.firstChild) {
            frag.appendChild(temp.firstChild);
            setTimeout(arguments.callee, 0);
        } else {
            callback(frag);
        }
    })();
}

  1. 充分利用闭包解决 IE6 的内存溢出问题
  2. 使用延时 0 将操作从队列中拉出,防止浏览器假死
  3. Document Fragment 给予我们个相当好的沙盘,只是我们经常忘记了它
  4. 回调的节点可以使用 DOM 标准的手法(appendChild)插入

了解了参数就很容易调用,例如

var htmlStr = '<div><p>...</p><p>...</p><div><div>...</div>';
asyncInnerHTML(htmlStr, function(fragment){
    document.body.appendChild(fragment);
});

再次不禁赞叹下!

组织 innerHTML 字符串

说到 innerHTML ,通常在这操作之前会有大部分的字符串操作用于连接节点。考虑下面的三种做法,有何不同

方式一

var arr = ['item 1', 'item 2', 'item 3', ...];
for (var i = 0, l = arr.length, list = ''; i < l; i++) {
    list += '<li>' + arr[i] + '</li>';
}
list = '<ul>' + list + '</ul>';

方式二

var arr = ['item 1', 'item 2', 'item 3', ...];
for (var i = 0, l = arr.length, list = []; i < l; i++) {
    list[list.length] = '<li>' + arr[i] + '</li>';
}
list = '<ul>' + list.join('') + '</ul>';

方式三

var arr = ['item 1', 'item 2', 'item 3', ...];
var list = '<ul><li>' + arr.join('</li><li>') + '</li></ul>';

详细的对比测试在这里。同时,PPK 也整理了份有关 innerHTML 的速度测试报告

IE 的陷阱

对于 IE,innerHTML 有个不大不小的陷阱(via),就是在 tbody 中插入 innerHTML 时,会报莫名的“未知的运行错误”。

测试地址在这里(经过测试,在 IE8 中仍然如此)。有兴趣的同学可以参看更详细的信息

原文链接:http://www.gracecode.com/archives/2963/

  • Facebook
  • Twitter
  • Share/Bookmark
Pages: «Prev 1 2 3 4 5 6 7 8 ...21 22 23 Next»