My studying notes for Java,Ruby,Ajax and other any interesting things.

星期三, 五月 20, 2009

[fwd]我该选择什么浏览器-转

现在铺天盖地的浏览器产品,弄得大家眼花缭乱,于是人们开始站在各自的立场为选用哪款浏览器吵得不可开交。但我发现好多人在面对这些浏览器时,似乎只依赖于广告信息和盲目跟风,而自己并不是很清楚各种浏览器的优劣。大多数人甚至洋洋自得的抓住一个根本不算特点的特点,到处去对比那些毫无可比性的对比。至于类似"傲游加载网页的速度比IE快多了"这样的理由,也算是以讹传讹的笑话吧。更加可悲的当属像我们这群做WEB前端开发的,同时跑着七八个浏览器,面对一堆束手无策的兼容性问题,也只有一脸苦笑地发出这个浏览器垃圾,那个比这个更垃圾的感叹。

先普及一下基础,每个独立的浏览器产品,从通俗意义上讲都是由两部分组成,浏览器的外壳内核。其中外壳主要为用户提供界面,以及产品的一些扩展功能。一个好的外壳会带来良好的用户体验,是产品抓住用户的关键,例如傲游(Maxthon)的操作性和Firefox的大量插件和可扩展性。而内核(Layout Engine, 也叫 Rendering Engine, 译作排版引擎或渲染引擎)则负责对HTML, Javascript及CSS等页面代码进行解析和渲染,不同的内核渲染出来的页面可能会不同,这也是页面开发者面对头痛的兼容性问题和W3C致力推出一个WEB前端标准的原因。浏览器内核直接决定了页面加载的速度和渲染出来的样子。

目前主流浏览器市场大都有以下几种浏览器内核:

Trident

Trident内核的代表当然就是大名鼎鼎的Microsoft Internet Explorer了,人们亲切的称为IE。Trident伴随着IE4,由微软在1997年正式发布,因此它又叫MSHTML。而后不断改进,直到现在的IE7采用的Trdent 5,终于后知后觉地支持了部分W3C标准语法以及带Alpha通道的PNG。

由于微软的Windows操作系统的普及,IE一直占据着浏览器市场的主体地位,然而Trident无疑是几大主流内核中最庞大和最杂乱的,因此对于HTML和Javascript等脚本的实时运算效率都比较低,再加上繁杂的ActiveX运算,它通常需要花更多的时间来渲染页面。另外,它对W3C的标准支持也是最差的,在我5年以上的WEB前端开发经验中,如果以W3C标准作为基准,大约70%以上的页面Bug来自IE6,将近30%的Bug来自于IE7,2%~3%的Bug来自于IE8 beta。Trident也无法实现跨平台,在Mac OS和Unix/Linux系统中,基本无法使用Trident内核浏览器。

然而不可避免的是,由于IE的市场份额占绝对优势,国内大多数网站是基于IE进行开发和测试的,因此Trident对目前已有的网站的兼容性是最高的。同样也由于这个原因,WEB开发者们不得不尴尬地运用大量非标准代码去兼容Trident。随着Trident的不断更新和完善,目前已发布的IE8 beta2已经非常接近于W3C标准,这对于WEB开发者来说是一个好消息。

目前采用Trident内核的除了微软的全线产品外,还有AOL Explorer, Avant, Maxthon(傲游), TheWorld(世界之窗, 360安全浏览器), 腾迅TT等。这些浏览器大多只是一个壳,只是在Windows平台上调用了系统中的Trident内核而已。在外壳上,IE实在非常平淡无奇,除了作为Windows默认浏览器占有大部分市场份额和它臃肿杂乱的内核外,IE并没有更多特色。相比起来360安全浏览器增强了网络安全方面的功能,能让对电脑知识了解不多的用户更大可能地避免病毒和恶意程序的骚扰。以及Maxthon(傲游)增强了的用户操作,增强了用户体验(Maxthon似乎也提供Gecko内核的支持,用户可以自定义选择是否采用Gecko内核,不过本人并没有使用过Gecko内核的Maxthon,不作评价)。

Gecko

Gecko的前身与Trident一样是Mosaic。它最早是由Netscape培育开发的,它的第一个稳定版本在1999年发布。后来Netscape解散后,Mozilla小组成立了Mozilla基金会,合同一部分对于Trident不遵循W3C标准感到不满的微软员工,一起延续了Gecko这个计划。Gecko是一个开源项目,用C++进行编写,由于本身的开放性,它得到了世界范围内大量程序员的青睐和支持。Gecko的代表就是Mozilla的主打产品Firefox。

Gecko一直坚持传承W3C标准,但由于IE时代的历史遗留问题,Gecko为了兼容大多数被IE误导了的页面,保有这块"错误的市场",不得不放宽了对错误代码的兼容。再加上随处可见的Firefox下载广告,以及Firefox3新版本的发布,Firefox正在一步步蚕食IE的市场份额,这样一来大多数网站开始兼容Firefox浏览器,从而走上了兼容W3C之路,更进一步加强了Firefox的页面兼容性。

由于Gecko的开放性,也造成了Gecko内核的不断臃肿,目前的Gecko的性能已经大不如从前了。不过Firefox真正的价值并不体现在性能上,除了对W3C标准的支持,Firefox以其强大的可扩展性吸引了大量用户,用户可以很方便地为自己的Firefox添加玲琅满目的插件以获得各种稀奇古怪的功能。

在Gecko内核的浏览器里,Firefox由于有Mozilla基金会专项维护,是当之无愧的首选,更新也很频繁。除此之外采用Gecko内核的浏览器还有AOL for Mac OS X, Camino, Epiphany, Flock, Galeon等,然而这些浏览器并不具备与Firefox竞争的实力。

Presto/Kestrel

把Presto和Kestrel放在一起说,当然是因为Opera这款小巧迅捷的浏览器。从Opera7.0到9.5版本之前所采用的是2003年发布的Presto内核,Presto在拉丁语中有急速,快速的意思。Opera9.5发布之后,采用的是Kestrel内核,Kestrel是一种隼,小巧而迅捷,从名字可以看出,Opera追求的就是速度和灵巧。

Presto和Kestrel是绝对传承W3C标准的浏览器内核,而为了追求内核本身的小巧和快速,它放弃了Gecko所提供的对错误的宽容,因此Opera的兼容性一直不是很好,对于大多数被IE惯坏了的网站,Opera总显示出更多的错误,当然对于标准页面来说,Opera所表现出的卓越性能和完美的渲染是无可厚非的。随着WEB前端技术的进步,越来越多的标准化网站将会使这类浏览器越来越受欢迎。

另外Presto和Kestrel都是封闭的商业程序,因此也从某些角度影响了这两款浏览器内核的发展和推广。除了Opera以外,一些WEB开发工具例如Adobe的Dreamweaver也是采用的Presto内核。

WebKit

WebKit的前身是KDE下的KHTML,后来苹果公司在KHTML和KJS的基础上开发了WebCore和JavaScriptCore,合称WebKit,并在2003年发布了第一个稳定版本。WebKit的强大还在于它是开源的和跨平台的。

WebKit同样传承了W3C标准,并且比Gecko更支持标准,在页面渲染和脚本计算上的性能也是非常卓越的,开放的技术使得WebKit迅猛发展,到现在它的页面的计算速度甚至已经全面超越了Presto和Kestrel。但与Opera有着同样的尴尬就是对错误和非标准的不兼容。不过随着不断标准化的WEB前端技术,这个问题也会慢慢消失。

由于是苹果公司主导开发的产品,WebKit的代表当然是苹果系统中下一统天下的Safari。Safari 3发布后也支持了Windows平台,其简洁高效也让Safari的市场份额迅速攀升。

Google最新的浏览器Google Chrome也是采用的WebKit内核,目前已经发布了beta版本,凭借Google追求完美的风格,再加上它的海量数据和高度整合的产品线,相信Google Chrome将来也会取得浏览量市场的一席天地。

除了Safari和Google Chrome,采用WebKit内核的浏览器还有Swift, OmniWeb, Shiira等。

以下个人意见

IE目前还是占有大量市场份额,但主流浏览器中只有Trident内核的浏览器不支持标准,虽然最新的IE8已经尽力在向标准靠拢,但Trident臃肿杂乱的内核如若不来个翻天覆地的变化,很难在未来有较好的发展。
Gecko内核的浏览器以Firefox的强大扩展功能和较好的兼容性吸引了一部分用户,尤其是众多Web开发者。除了对标准兼容性太差的页面,Firefox基本还是能胜任一般网页浏览。
以WebKit为内核的浏览器以新姿态出现,随着越来越多标准化的网站出现,WebKit若能继续保有其卓越的性能,将会在未来得到一个较大幅度的提升。
而Opera自身的封闭性限制了其发展,已被Safari为首的WebKit拉于马下。
---------------此言不敢苟同

我的个人配置:

Opera:上网浏览网页,看新闻,读blog。。。。日常上网;
Firefox:做网页调试,样式开发,代码查看等....开发工作
IE:上国内银行网站,遇到opera打开实在太难看的页面。
Chrome: 差点忘了。。。找出来玩玩,确实清爽可爱,可惜我有了Opera

 

星期二, 五月 19, 2009

Nginx Rewrite规则备注

正则表达式匹配,其中:
 
~ 为区分大小写匹配
~* 为不区分大小写匹配
!~和!~*分别为区分大小写不匹配及不区分大小写不匹配
 
文件及目录匹配,其中:
 
-f和!-f用来判断是否存在文件
-d和!-d用来判断是否存在目录
-e和!-e用来判断是否存在文件或目录
-x和!-x用来判断文件是否可执行
 
flag标记有:
 
last 相当于Apache里的[L]标记,表示完成rewrite
break 终止匹配, 不再匹配后面的规则
redirect 返回302临时重定向
permanent 返回301永久重定向
 
一些可用的全局变量有,可以用做条件判断(待补全)
 
$args
$content_length
$content_type
$document_root
$document_uri
$host
$http_user_agent
$http_cookie
$limit_rate
$request_body_file
$request_method
$remote_addr
$remote_port
$remote_user
$request_filename
$request_uri
$query_string
$scheme
$server_protocol
$server_addr
$server_name
$server_port
$uri
 
举例:
abc.domian.com/sort/2 => abc.domian.com/index.php?act=sort&name=abc&id=2
view sourceprint?
1.if ($host ~* (.*)\.domain\.com) {
2.    set $sub_name $1;
3.    rewrite ^/sort\/(\d+)\/?$ /index.php?act=sort&cid=$sub_name&id=$1 last;
4.}

星期四, 五月 07, 2009

putty输入中文


putty输入中文
默认状态下向putty中输入中文会变成...可以用以下方法解决: Category中选择Window=>Appearance=>change...将字体设置为Fixedsys字符集设 置为CHINESE_GB2312 然后别忘了save一下要不就得每次更改了。主要是要把字符集设置为CHINESE_GB2312。
(经测试,在连接FreeBSD的Putty中,把字体设为支持中文的字体,即可输入中文了)
 

用putty登录了不能输入中文如何解决
 
1、vi /etc/sysconfig/i18n
2、LANG="zh_CN.GB18030"
LANGUAGE="zh_CN.GB18030:zh_CN.GB2312:zh_CN"
SUPPORTED="zh_CN.GB18030:zh_CN:zh:en_US.UTF-8:en_US:en"
SYSFONT="lat0-sun16"
SYSFONTACM="8859-15"
3、保存退出
4、source /etc/sysconfig/i18n 
5、putty的中文支持还是很好的,呵呵打开putty主程序,选择window-〉Appearance-〉Font settings-〉Change...,选择Fixedsys字体,字符集选择CHINESE_GB2312。在window-〉Appearance-〉Translation中,Received data assumed to be in which character set 中,把Use font encoding改为UTF-8如果经常使用,把这些设置保存在session里面. 现在打开putty,登录成功后,在shell中输入:export LC_ALL='zh_CN.utf8',这样应该可以的
 

putty支持utf-8解决方案
 
suse建议用户使用utf8的字符集,但是通常在windows下的term终端使用utf8会带来一些问题,比如putty,使用 vi时,会发生一些问题。
下面是解决方法
 
Step1:
把 PuTTY 的字符集修改为 UTF-8,
 
window----translation---received data assumed to be in which character set
改称utf8
 
然后选择一个支持 UTF-8 的中文字体,
如宋体、新宋体等。
 
Step2:
 
修改/etc/vimrc,加上
set encoding=utf-8
set fileencoding=utf-8
这样即可
 
当然,这是在linux下编辑的所有文本文件都是utf8格式的,如果需要转为gbk格式的,可以用下列命令
 
iconv -f utf-8 -t gbk   src.txt >dst.txt
 

putty session的备份和恢复
putty session的备份和恢复2006-09-27 16:46每次重装系统后,putty的session就没有了,需要重新设置,能不能保存之,待下次恢复?
答案是可以的,putty的session设置保存在注册表中:
HKEY_CURRENT_USER\Software\SimonTatham
打开注册表,选中这一项,选择导出,就完成备份了
下次重装系统时,只需要导入注册表就可以了
 
 
 
某用户的.vimrc设置内容
 
syntax on
set ts=4
set autoindent
set smartindent
set cindent shiftwidth=4
set softtabstop=4
autocmd FileType c
set expandtabautocmd FileType cpp
set expandtabautocmd FileType php
set expandtab
 

Putty下面如何输入中文

目前几乎所有的Linux的缺省编码都是UTF-8,而Windows用的编码是GBK,putty是个Windows下的软件,用putty登录Linux系统时输入中文经常会碰到问题,好像在putty里面没法输入中文一样。

这个问题的解决方法是,在putty的选项里面选择:

Window -> appearance: Font Fixedsys 12 points
Window -> translation: select UTF-8 in the dropdown menu

另外我常去的其他putty选项是:

Window -> Lines of scrollback 20000
Connection -> seconds between keepalives 60
Connection -> SSH -> auth: Allow agent forwarding
Connection -> SSH -> auth: 选我的private key
----或者将putty字体设置成为gb2312兼容的,在translation选择user encoding也可以正常输入中文.