正在加载...

一、背景:

        Team里的少年们用着各式各样的前端IDE, 我却一直“坚贞不渝”的使用adobe家的Dreamweaver作为前端开发的工具。Dreamweaver CS系列本身对Code hints(代码提示)支持就很不错,尤其是在CS5.5上还默认的支持的jQuery,Drupal,Joomla等框架的Code hints。这样在写代码的时候就可以瞧得更流利的。但是webryan 在现实的开发环境中还是会遇到需要自定义代码提示的场景。于是自己动手丰衣足食,搞了一个最适合自己的Code hints。

 

二、需要自定义Code Hints的原因:

 1.自己或团队自研的JS库,或者组件类

2.JS库里非显示的声明函数。例如

 

/**
 * @description 通过ajax发出get请求
 */
$.get = $.http.get;

这样的引用式的方式,默认情况下是没办法做到提示的。除非使用自定义。

或者使用函数执行返回的结构体作为提示,也是需要自定义Code hints的。

/**
 * @description 获取样式相关
 */
$.css= function(){
     return {
        getComputedStyle:function(){},
        setStyle:function(){},
        ...
    }
}

3.同时在一些大型前端开发的时候,通常也会存在三种情况:a.JS路径是CDN远程地址,非相对目录。b.JS是动态加载的。 c.JS是需要合并使用的。这个时候默认的包含文件方式的Code hints也是很乏力。

综上,webryan认为自己搞一套自动生成自定义Code hints的东西势在必行。提升工作效率就是珍惜声明啊~

三、创建自定义Code hints for Dreamweaver的原理:

核心原理:Dreamweaver启动时会加载Dreamweaver安装目录下的\configuration\CodeHints\目录下的xml文件,作为Code hints触发依据。所以我们制作一个Dreamweaver提示器可以识别的xml文件放置在\configuration\CodeHints\目录里即可(当然,也可以用扩展插件的方式实现)。

这里我们先看下Dreamweaver识别的xml格式(点击这里可以看到官方的说明):



        
            
        

                     

                            
                            
        

						
						
		


这里简单说明下吧,这个 xml的组成:

1.第一层codehints是容器,保持一直即可

2.第二层是menugroup ,只属于codehints标签,有效属性有name, enabled, id,可以包含description,menu,function两种子标签

3.第三层,description是只是描述文档的。menu自身有pattern, doctypes, casesensitive, classpattern, displayrestriction这些属性,可以包含property和method两种子元素。 详情可以见这里。。 function是简单的来描述一个函数,主要可以用在类似php里面向函数的一些提醒。

Read More (阅读更多 )...

2011-8
18

今天webryan给team做了一个关于HTTP cookie的分享,从各个方面给大家介绍一下大家耳熟能详的Cookie。主要是翻了维基百科的很多内容,因为维基百科的逻辑实在是很清晰:),ppt就不分享了,把原始的草稿贴出来给大家。欢迎批评指正。

HTTP Cookie:
Cookie通常也叫做网站cookie,浏览器cookie或者http cookie,是保存在用户浏览器端的,并在发出http请求时会默认携带的一段文本片段。它可以用来做用户认证,服务器校验等通过文本数据可以处理的问题。
Cookie不是软件,所以它不能被携带病毒,不能执行恶意脚本,不能在用户主机上安装恶意软件。但它们可以被间谍软件用来跟踪用户的浏览行为。所以近年来,已经有是欧洲和美国的一些律师以保护用户隐私之名对cookie的种植宣战了。更严重的是,黑客可以通过偷取Cookie获取受害者的帐号控制权。

1.Cookie的历史
a.概念的产生:
Cookie原名是”magic cookie”,是用来描述程序接受并原样发出的一组数据。(这里可以拿生活中的情况举例:比如说当我们在商场试穿衣服的时候,在试衣间门口店员会给你一个号码牌表示你试穿衣服的件数。当你出来的时候,店员会检查下拿着这个牌子和对应的衣服。)这个概念是一直就存在于计算机领域的.直到1994年,网景公司前雇员Lou Moutulli将magic cookie的概念引入到web,赋予了web记忆。

卖个关子。请大家设想一下,没有cookie的互联网将是一副什么的场景。
1.每次访问都像第一次访问一样,无法判断用户是否访问过
2.任何的购买等交互、验证行为都必须在一次访问中完成
3.无任何记忆,均需要用户重新点击或填写

大家说的很好,在1994年6月的某天,24岁的,网景公司第九位工程师,moutulli,坐在键盘前,遇到和大家描述的一模一样的困难,他凭借着他高超的编程技能和思想设计出了一个五页纸的方案来解决这些棘手的问题,这个五页纸后来也就演变成了最初版本的Netscape Cookie规范。五页纸的核心观点就是在用户的电脑上存放一个小的文件来记录用户对网站的访问情况。moutulli将其简称为cookie. 同年10月,Netscape浏览器就率先支持了Cookies,并在netscape官网上做了检查统计用户是否访问过的功能。次年10月,微软的IE2也开始支持Cookie。当然,微软是要交“保护费”了,因为moutulli在1995年申请了专利,并在1998年获得专利授权。整体来说,Cookie的引入对于互联网来说,这是一个划时代的转折点,它将零散的访问,无状态的请求变得有序并富有记忆,给互联网增添了更有趣味性的玩法。

b.隐私风险
1.1995年Q1,当时Cookie没有受到广泛的关注。但cookie不在用户知晓的情况下可以默认种植引来人们的担心。
2.1996年2月,金融时报(ft中文网就是翻译此杂志)发布关于cookie的文章对公众进行了认知的普及,并引起了媒体的广泛关注和讨论,尤其是在潜在的隐私风险上。
3.1996年-1997年,Cookie在美国联邦贸易委员会听证会持续讨论。

c.规范的发展:
1.1994年,Montulli,联合John Giannandrea写了Netscape cookie规范。
2.1995年4月,在www-talk邮件组第一次开始讨论正式统一的Cookie规范,并在IETF(Internet Engineering Task Force,互联网工程任务组,主要目标是协调制定互联网标准,几乎所有重要的网络底层协议都是有IETF制定,EG:TCP,IP,HTTP and so on,可以毫不夸张的说,没有IETF就没有今天的互联网,今年是IETF成立25周年,老外有很多文章专门回顾总结其光辉成就。IETF是由网民自发组织,自我管理的,任何人都和可以参加的,完全民主平等的,无投票机制的,充分体现了自由、开放、合作、共享的精神)里成立了特别工作小组。两种HTTP Cookie的方案被提议。
3.1996年2月,IETF认定第三方Cookie存在重大隐私风险。
4.1997年2月,IETF最终发布了Cookie规范,RFC 2109,其中指出不允许设置第三方cookie或者不能默认支持第三方cookie
5.2000年10月,RFC 2965发布,主要是由于广告在RFC 2109发布时已经广泛使用第三方Cookie,所以关于第三方cookie部分是没有被Netscape和IE所跟随。
6.2011年4月,RFC 6265发布。现实版使用的Cookie规范终于诞生了。

2.Cookie的类别
a.Session Cookie
这个类型的cookie只在会话期间内有效,即当关闭浏览器的时候,它会被浏览器删除。设置session cookie的办法是:在创建cookie不设置Expires即可。
b.Persistent Cookie
持久型cookie顾名思义就是会长期在用户会话中生效。当你设置cookie的属性Max-Age为1个月的话,那么在这个月里每个相关URL的http请求中都会带有这个cookie。所以它可以记录很多用户初始化或自定义化的信息,比如什么时候第一次登录及弱登录态等。
c.Secure cookie
安全cookie是在https访问下的cookie形态,以确保cookie在从客户端传递到Server的过程中始终加密的。这样做大大的降低的cookie内容直接暴露在黑客面前及被盗取的概率。
d.HttpOnly Cookie
目前主流的浏览器已经都支持了httponly cookie。1.IE5+ 2.Firefox 1.0+ 3.Opera 8.0+ 4.Safari/Chrome。在支持httponly的浏览器上,设置成httponly的cookie只能在http(https)请求上传递。也就是说httponly cookie对客户端脚本语言(javascript)无效,从而避免了跨站攻击时JS偷取cookie的情况。当你使用javascript在设置同样名字的cookie时,只有原来的httponly值会传送到服务器。
e.3rd-party cookie
第一方cookie是cookie种植在浏览器地址栏的域名或子域名下的。第三方cookie则是种植在不同于浏览器地址栏的域名下。例如:用户访问a.com时,在ad.google.com设置了个cookie,在访问b.com的时候,也在ad.google.com设置了一个cookie。这种场景经常出现在google adsense,阿里妈妈之类的广告服务商。广告商就可以采集用户的一些习惯和访问历史。
f.Super Cookie
超级cookie是设置公共域名前缀上的cookie。通常a.b.com的cookie可以设置在a.b.com和b.com,而不允许设置在.com上,但是很不幸的是历史上一些老版本的浏览器因为对新增后缀过滤不足导致过超级cookie的产生。

Read More (阅读更多 )...

2011-2
14
发表于: 服务器相关 | 作者: | 目前已阅读: 1,339 次
标签:

还不知道VPS是啥?太out了吧。
简单说吧,VPS(Virtual Private Server 虚拟专用服务器)类似于我们常用的虚拟机。我们可以在一个机器上安装很多个操作系统,你可以将磁盘和内存等设备分配给多个虚拟操作系统使用。比如你的PC/server有2G内存,200G硬盘,你可以分给2个VPS,每个1G内存,100G磁盘空间,而一个vps装linux系统,一个vps装windows系统。两个系统虽然在一个硬件上,但相对的独立和隔离。 也就是说使用VPS不会存在别人的website被黑,而你的网站导致连累。同时你对你的VPS有着绝对的管理权限Root or Administrator,随意安装你需要的软件等。

哦了,进入正题。我购买了一个VPS,我在VPS后台(web)安装了centOS.
fdisk -l 查看磁盘情况,发现有20G可用空间,而目前分配了10G。说明这里还有10G未分区的磁盘空间。那么我们现在要对这个磁盘进行分区,格式化和挂载以便后续使用。这里涉及到linux命令有3个。fdisk分区命令,mkfs格式化命令,mount挂载命令。

A、fdisk有几个重要参数需要了解:
Command (m for help):

查看帮助信息:输入m,看到如下信息
d delete a partition 注:删除一个分区;
eg: fdisk /dev/hda1 –>d (删除其中一个分区)–>3(删除编号为三的分区)

l list known partition types 注:l是列出分区类型,以供我们设置相应分区的类型;
eg:fdisk -l, fdisk -l /dev/hda1

m print this menu 注:m 是列出帮助信息;
eg:fdisk /dev/hda1 –>m

n add a new partition 注:添加一个分区;
eg:fdisk /dev/hda –>n(新建分区)–>选择主分区还是逻辑分区–> 选择分区大小

p print the partition table 注:p列出分区表;
q quit without saving changes 注:不保存退出,分错了就退出
t change a partition’s system id 注:t 改变分区类型;
v verify the partition table 注:验证分区
w write table to disk and exit 注:把分区表写入硬盘并退出;

这里我就直接把我用到的写出来:

1.fdisk /dev/hda //对/dev/hda进行分区
2.n  //增加分区
3.p  //输入p类型设置为:主分区
4.3  //输入3分区编号设置为3
5.回车 //起始位置均可以默认
6.回车 //大小设为全部。这里可以自定义比如 +3000M 或+3000K,这里只支持M和K 
7.t //输入t 设置分区类型
8.3 //输入3,对新增3号分区设置格式
9.8e //输入8e 设置为LVM,因为服务器磁盘均为LVM
10.v //输入 v 检查分区表
11.w //输入w 写入分区表 ,分区结束
12.reboot //重启下,分区生效 :)

2.mkfs格式化,分区好了就该格式化磁盘文件类型了。
这里有几种文件类型可以选ext2,ext3等。这里ext3比ext2新增了异常log处理,所以我们选用ext3.
mkfs.ext3 /dev/hda3 //对/dev/hda3建立ext3文件系统,同理你可以用 mkfs.ext2建立ext2文件系统

3.mount挂载,只有格式化好的分区才能挂载

1.mkdir /www //linux的分区都是挂载在目录下的,所以我们先在根目录下建立www目录
2.mount /dev/hda3 /www //将分区挂载到目录下,ok了。
3.df -hl //查看磁盘剩余空间信息, 就可以看到有/www有10G 可用空间
注意:这次mount操作只是一次有效,重启后需要重新mount,如果以后要开机自动挂载这个分区,您可以修改/etc/fstab 在这个文件最后一行加上 /dev/hda3 /www ext3 defaults 1 1 保存后,重启动就有效了.
4.1. vim /etc/fstab
4.2. GG ->end光标移动到文件结尾,
4.3. i //进入编辑模式
4.4.输入 /dev/hda3 /www ext3 defaults 1 1
4.5. esc//按退出键
4.6 :wq //保存退出,done!下次就会自动挂载了。
.

ok了,分区格式化挂载基本就搞定了,吸口气。继续搞。

本文的结论就是说:尽量不设置flash的参数wmode(默认为window)为非默认值,因为其他值在跨浏览器支持中会遇到很多让人抓狂的中文支持问题和交互问题。

Ok,先解释下flash的参数吧。

window:窗口模式,在没有指定wmode的时候,flash默认是以这种方式创建的。在这种模式下,flash拥有自己的窗口句柄,从而相对独立于浏览器的页面表现,独立的进行表现和渲染,所以窗口模式是相对其他模式来说效率最高的一种。同时也是因为它独立于浏览器的HTML渲染表面,所以当html的表现层和flash的表现层重合的时候,flash总是会遮住位置与他重合的所有html层。eg:你要做一个模态的提示框,想让灰色覆盖整个页面,但在有flash的情况,flash会不管你html中z-index的设置而表现在上层。 于是,就引出了第二种模式。

transparent :透明模式,这种模式类似于把flash放到html层结构里,可以通过z-index来进行层表现的传递和高度。在这种模式下flash会让可以透明的html层都以透明的方式展示在自己之上。这种对动画的性能表现的非常差,而且在9.0.115之前的flash player版本设置wmode=”transparent”会导致全屏模式失效。

Opaque:非透明模式,整个是相对于transparent方式来说的,它使flash隐藏html层上所有位于它后面的所有内容。

那么在我们实际应用中,例如模态提示,例如flash右键属性扩展,我们都需要用到wmode=”transparent”或者“opaque”,为什么这么webryan不建议使用呢?

因为 Flash player 存在一个bug,对使用非默认模式,即wmode不等于”window”的时候,在 Firefox/Chrome浏览器下,不支持非英文的文字输入。

bug单见:http://bugs.adobe.com/jira/browse/FP-501=20,

这个bug影响到flash player 10.1以下的大部分版本。其表现就是:你在flash player 10+firefox上的flash上输入中文的时候,会显示乱码。 这个bug 在10.1版本以后得到了fix,但目前来说还是影响了绝大部分用户,建议采取其他方案进行规避。

同时,wmode=transparent+marquee的场景,会出现鼠标不停的闪动的问题。(这个bug跟了好久。。 郁闷。)