存档

2011年11月 的存档

用Gvim建立IDE编程环境 (Windows篇)

2011年11月24日 没有评论

准备软件及插件。

(a)gvim72.exe 地址ftp://ftp.vim.org/pub/vim/pc/gvim72.exe
(b)vimcdoc-1.7.0-setup.exe 地址http://prdownloads.sourceforge.net/vimcdoc/vimcdoc-1.7.0-setup.exe?download
(c)ec57w32.zip 地址http://prdownloads.sourceforge.net/ctags/ec57w32.zip
(d)taglist_45.zip 地址http://www.vim.org/scripts/download_script.php?src_id=7701
(e)winmanager.zip 地址http://www.vim.org/scripts/download_script.php?src_id=754
(f)minibufexpl.vim 地址http://www.vim.org/scripts/download_script.php?src_id=3640
(g)a.vim 地址http://www.vim.org/scripts/download_script.php?src_id=7218
(h)grep.vim 地址http://www.vim.org/scripts/download_script.php?src_id=7645
(i)visualmark.vim 地址http://www.vim.org/scripts/download_script.php?src_id=4700

1.安装gvim7.2。
运行gvim72.exe,选择完全安装(Full),我的安装目录是默认的C:\Program Files\Vim
安装完成后,包括了文件夹vim72和文件夹vimfiles,以及脚本_vimrc。

2.安装中文帮助手册。
运行vimcdoc-1.7.0-setup.exe,它会自动找到gvim的安装位置。
安装完毕后重新打开gvim,:help 时帮助手册已经是中文的了。
进行到这一步时,我的gvim菜单处的中文出现了乱码。
在网上寻找解决方案,将C:\Program Files\Vim\vim72下名为 lang 的文件夹删去,使菜单语言变为英语。

3.语法高亮。
首先,编辑_vimrc文件加入以下内容:
set nu!
colorscheme desert
syntax enable
syntax on
这些设置使得gvim可以显示行号,并使用了desert配色方案,而且打开了语法高亮功能(用不同颜色显示注释、关键字、字符串等)。
我们还可以让函数名也高亮起来,在C:\Program Files\Vim\vim72\syntax下找到 c.vim 和 cpp.vim,分别添加以下内容:
syn match cFunction "\<[a-zA-Z_][a-zA-Z_0-9]*\>[^()]*)("me=e-2
syn match cFunction "\<[a-zA-Z_][a-zA-Z_0-9]*\>\s*("me=e-1
hi cFunction gui=NONE guifg=#B5A1FF
重新打开gvim,效果如下:

4.程序中跳转。
ec57w32.zip解压,在解压后文件夹中找到ctags.exe,将其复制到C:\ProgramFiles\Vim\vim72下,并编辑_vimrc文件,添加以下内容:
set tags=tags;
set autochdir
打开cmd命令行,切换到你要查看的源代码的根目录处,运行
ctags -R
将会在此目录处生成一个tags文件。
用gvim打开一个代码文件,将光标放到某一函数名上,如下图的UpdateViewByPosNo(),按下"ctrl+]",光标会自动跳转到定义处。

按下"ctrl+T"会跳回到原来的位置。
变量、结构体、宏等等,都可以这样做。
当你的源文件有更新时,只能重新运行ctags -R命令,来更新tags文件。

5.窗口管理。
taglist_45.zip解压,解压后包含一个doc文件夹和一个plugin文件夹,将其中内容分别复制到C:\Program Files\Vim\vim72下的doc及plugin中。
在_vimrc文件中加入以下内容:
let Tlist_Show_One_File=1
let Tlist_Exit_OnlyWindow=1
用gvim打开代码文件(已生成过tags文件),:Tlist,TagList窗口即出现在左侧。
用相同的方法将winmanager.zip解压和拷贝,在_vimrc文件中加入以下内容:
let g:winManagerWindowLayout=’FileExplorer|TagList’
nmap wm :WMToggle<cr>
用gvim打开代码文件,normal状态下输入命令"wm",窗口如下

其中左上是netrw窗口(浏览文件),左下是TagList窗口,再次输入"wm"时这两个窗口会关闭。

6.多文件编辑。
minibufexpl.vim复制到C:\Program Files\Vim\vim72\plugin,在_vimrc中添加:
let g:miniBufExplMapCTabSwitchBufs=1
let g:miniBufExplMapWindowsNavVim=1
let g:miniBufExplMapWindowNavArrows=1
当用gvim打开两个或两个以上的文件时,会自动弹出MiniBufExplorer窗口,如下图

ctrl+Tab,切换到前一个buffer,并在当前窗口打开文件;
ctrl+shift+Tab,切换到后一个buffer,并在当前窗口打开文件;
ctrl+箭头键,可以切换到上下左右窗口中;
ctrl+h,j,k,l,切换到上下左右的窗口中。

7.快速切换头文件/源文件。
a.vim复制到C:\Program Files\Vim\vim72\plugin,在_vimrc中添加:
nnoremap <silent> <F12> :A<CR>
用gvim打开源码文件后,按F12即可以在c/h文件中切换,也可以通过输入:A实现。

8.在工程中快速查找。
grep.vim复制到C:\Program Files\Vim\vim72\plugin,在_vimrc中添加:
nnoremap <silent> <F3> :Grep<CR>
用gvim打开源码文件,并将光标定位到要查找的内容上,按下F3,确定要查找的内容和搜索范围,gvim会在弹出的QuickFix窗口中列出所有符合条件的搜索结果。如下图

确定查找内容时,支持正则表达式。

9.高亮的书签。
visualmark.vim复制到C:\Program Files\Vim\vim72\plugin
用gvim打开源码文件,将光标定位在需要添加书签的地方,按下ctrl+F2,即添加了书签。

使用F2在书签之间正向切换,shift+F2反向切换。


说明:本文是作者在完全按照著名的《手把手教你把Vim改装成一个IDE编程环境》一文,在Windows XP上用gvim建立IDE环境时所作的备忘。
原作地址:http://blog.csdn.net/wooin/archive/2007/10/31/1858917.aspx

分类: VIM 标签:

XP下安装VIM中文帮助手册后乱码问题

2011年11月24日 没有评论

VIM中文版项目地址:http://sourceforge.net/projects/vimcdoc/files/

安装完后出现菜单乱码(我的版本是gvim7.2)

方法1是网友Hawly分享,经验证只对从程序菜单中或文件右键启动VIM有效。对于从命令行启动VIM的童鞋可以试试方法2

方法1:

在你的安装目录下(在本文皆用Home表示,比如我把vim安装在了C:\Program Files下,则Home\vim代表C:\Program Files\Vim),即Home\vim下找到_vimrc,用记事本打开(鉴于你还不熟悉vim,这儿权且用记事本,当你熟悉vim之后,就可以用vim编辑了)按如下步骤修改:

将一下代码复制到_vimrc中,保存退出,再重新打开,怎么样,菜单栏正确显示了吧。

""""""""""""""""""""""""""""""""

"解决中文乱码问题

set fenc=chinese

 "处理文本中显示乱码

 set encoding=utf-8
 set fileencodings=utf-8,chinese,latin-1

 if has("win32")

 set fileencoding=chinese

 else

 set fileencoding=utf-8

endif

 "处理菜单及右键菜单乱码

 source $VIMRUNTIME/delmenu.vim

 source $VIMRUNTIME/menu.vim

   

"处理consle输出乱码

 language messages zh_CN.utf-8

"中文乱码结束

"""""""""""""""""""""""""""""""""""""""""""""""

注:"后的东西是注释,如果你学过c++语言,这儿的"就类似于//。

 

方法2:

采用命令行方式启动VIM(将VIM安装路径加入XP的$PATH环境变量中,可实现CMD下输入vim启动gvim)的童鞋解决乱码问题方法如下

VIM中文帮助会默认安装一个全局插件vim\vimfiles\plugin\vimcdoc.vim

里面有个语言设置set encoding=utf-8,因为windows 使用GBK字符集,所以乱码了,注释这个选项就可以了。

 

好了,看一下最终效果吧:

 

分类: 其他 标签:

跨域资源共享的10种方式

2011年11月22日 没有评论

跨域问题算是老生长谈的了,下面是口碑UDE团队整理的资料,有代码演示可供下载 。

同源策略

在客户端编程语言中,如JavaScript和ActionScript,同源策略是一个很重要的安全理念,它在保证数据的安全性方面有着重要的意义。同源策略规定跨域之间的脚本是隔离的,一个域的脚本不能访问和操作另外一个域的绝大部分属性和方法。那么什么叫相同域,什么叫不同的域呢?当两个域具有相同的协议(如http), 相同的端口(如80),相同的host(如www.example.org),那么我们就可以认为它们是相同的域。比如http://www.example.org/index.html和http://www.example.org/sub/index.html是同域,而http://www.example.org, https://www.example.org, http://www.example.org:8080, http://sub.example.org中的任何两个都将构成跨域。同源策略还应该对一些特殊情况做处理,比如限制file协议下脚本的访问权限。本地的HTML文件在浏览器中是通过file协议打开的,如果脚本能通过file协议访问到硬盘上其它任意文件,就会出现安全隐患,目前IE8还有这样的隐患。

受到同源策略的影响,跨域资源共享就会受到制约。但是随着人们的实践和浏览器的进步,目前在跨域请求的技巧上,有很多宝贵经验的沉淀和积累。这里我把跨域资源共享分成两种,一种是单向的数据请求,还有一种是双向的消息通信。接下来我将罗列出常见的一些跨域方式,以下跨域实例的源代码可以从这里获得

单向跨域

JSONP

JSONP (JSON with Padding)是一个简单高效的跨域方式,HTML中的script标签可以加载并执行其他域的JavaScript,于是我们可以通过script标记来动态加载其他域的资源。例如我要从域A的页面pageA加载域B的数据,那么在域B的页面pageB中我以JavaScript的形式声明pageA需要的数据,然后在pageA中用script标签把pageB加载进来,那么pageB中的脚本就会得以执行。JSONP在此基础上加入了回调函数,pageB加载完之后会执行pageA中定义的函数,所需要的数据会以参数的形式传递给该函数。JSONP易于实现,但是也会存在一些安全隐患,如果第三方的脚本随意地执行,那么它就可以篡改页面内容,截获敏感数据。但是在受信任的双方传递数据,JSONP是非常合适的选择。

JSONP 是构建 mashup 的强大技术,但不幸的是,它并不是所有跨域通信需求的万灵药。它有一些缺陷,在提交开发资源之前必须认真考虑它们。第一,也是最重要的一点,没有关于 JSONP 调用的错误处理。如果动态脚本插入有效,就执行调用;如果无效,就静默失败。失败是没有任何提示的。例如,不能从服务器捕捉到 404 错误,也不能取消或重新开始请求。不过,等待一段时间还没有响应的话,就不用理它了。(未来的 jQuery 版本可能有终止 JSONP 请求的特性)。

JSONP 的另一个主要缺陷是被不信任的服务使用时会很危险。因为 JSONP 服务返回打包在函数调用中的 JSON 响应,而函数调用是由浏览器执行的,这使宿主 Web 应用程序更容易受到各类攻击。如果打算使用 JSONP 服务,了解它能造成的威胁非常重要。(参见参考资料 了解更多信息)。

Flash URLLoader

Flash有自己的一套安全策略,服务器可以通过crossdomain.xml文件来声明能被哪些域的SWF文件访问,SWF也可以通过API来确定自身能被哪些域的SWF加载。当跨域访问资源时,例如从域www.a.com请求域www.b.com上的数据,我们可以借助Flash来发送HTTP请求。首先,修改域www.b.com上的crossdomain.xml(一般存放在根目录,如果没有需要手动创建) ,把www.a.com加入到白名单。其次,通过Flash URLLoader发送HTTP请求,最后,通过Flash API把响应结果传递给JavaScript。Flash URLLoader是一种很普遍的跨域解决方案,不过需要支持iOS的话,这个方案就无能为力了。

Access Control

Access Control是比较超越的跨域方式,目前只在很少的浏览器中得以支持,这些浏览器可以发送一个跨域的HTTP请求(Firefox, Google Chrome等通过XMLHTTPRequest实现,IE8下通过XDomainRequest实现),请求的响应必须包含一个Access-Control-Allow-Origin的HTTP响应头,该响应头声明了请求域的可访问权限。例如www.a.com对www.b.com下的asset.php发送了一个跨域的HTTP请求,那么asset.php必须加入如下的响应头:

header("Access-Control-Allow-Origin: http://www.a.com");

window.name

window对象的name属性是一个很特别的属性,当该window的location变化,然后重新加载,它的name属性可以依然保持不变。那么我们可以在页面A中用iframe加载其他域的页面B,而页面B中用JavaScript把需要传递的数据赋值给window.name,iframe加载完成之后,页面A修改iframe的地址,将其变成同域的一个地址,然后就可以读出window.name的值了。这个方式非常适合单向的数据请求,而且协议简单、安全。不会像JSONP那样不做限制地执行外部脚本。

server proxy

在数据提供方没有提供对JSONP协议或者window.name协议的支持,也没有对其它域开放访问权限时,我们可以通过server proxy的方式来抓取数据。例如当www.a.com域下的页面需要请求www.b.com下的资源文件asset.txt时,直接发送一个指向www.b.com/asset.txt的ajax请求肯定是会被浏览器阻止。这时,我们在www.a.com下配一个代理,然后把ajax请求绑定到这个代理路径下,例如www.a.com/proxy/, 然后这个代理发送HTTP请求访问www.b.com下的asset.txt,跨域的HTTP请求是在服务器端进行的,客户端并没有产生跨域的ajax请求。这个跨域方式不需要和目标资源签订协议,带有侵略性,另外需要注意的是实践中应该对这个代理实施一定程度的保护,比如限制他人使用或者使用频率。

双向跨域

document.domain

通过修改document的domain属性,我们可以在域和子域或者不同的子域之间通信。同域策略认为域和子域隶属于不同的域,比如www.a.com和sub.a.com是不同的域,这时,我们无法在www.a.com下的页面中调用sub.a.com中定义的JavaScript方法。但是当我们把它们document的domain属性都修改为a.com,浏览器就会认为它们处于同一个域下,那么我们就可以互相调用对方的method来通信了。

FIM C Fragment Identitier Messaging

不同的域之间,JavaScript只能做很有限的访问和操作,其实我们利用这些有限的访问权限就可以达到跨域通信的目的了。FIM (Fragment Identitier Messaging)就是在这个大前提下被发明的。父窗口可以对iframe进行URL读写,iframe也可以读写父窗口的URL,URL有一部分被称为frag,就是#号及其后面的字符,它一般用于浏览器锚点定位,Server端并不关心这部分,应该说HTTP请求过程中不会携带frag,所以这部分的修改不会产生HTTP请求,但是会产生浏览器历史记录。FIM的原理就是改变URL的frag部分来进行双向通信。每个window通过改变其他window的location来发送消息,并通过监听自己的URL的变化来接收消息。这个方式的通信会造成一些不必要的浏览器历史记录,而且有些浏览器不支持onhashchange事件,需要轮询来获知URL的改变,最后,URL在浏览器下有长度限制,这个制约了每次传送的数据量。

Flash LocalConnection

页面上的双向通信也可以通过Flash来解决,Flash API中有LocalConnection这个类,该类允许两个SWF之间通过进程通信,这时SWF可以播放在独立的Flash Player或者AIR中,也可以嵌在HTML页面或者是PDF中。遵循这个通信原则,我们可以在不同域的HTML页面各自嵌套一个SWF来达到相互传递数据的目的了。SWF通过LocalConnection交换数据是很快的,但是每次的数据量有40kb的大小限制。用这种方式来跨域通信过于复杂,而且需要了2个SWF文件,实用性不强。

window.postMessage

window.postMessage是HTML5定义的一个很新的方法,这个方法可以很方便地跨window通信。由于它是一个很新的方法,所以在很旧和比较旧的浏览器中都无法使用。

Cross Frame

Cross Frame是FIM的一个变种,它借助了一个空白的iframe,不会产生多余的浏览器历史记录,也不需要轮询URL的改变,在可用性和性能上都做了很大的改观。它的基本原理大致是这样的,假设在域www.a.com上有页面A.html和一个空白代理页面proxyA.html, 另一个域www.b.com上有个页面B.html和一个空白代理页面proxyB.html,A.html需要向B.html中发送消息时,页面会创建一个隐藏的iframe, iframe的src指向proxyB.html并把message作为URL frag,由于B.html和proxyB.html是同域,所以在iframe加载完成之后,B.html可以获得iframe的URL,然后解析出message,并移除该iframe。当B.html需要向A.html发送消息时,原理一样。Cross Frame是很好的双向通信方式,而且安全高效,但是它在Opera中无法使用,不过在Opera下面我们可以使用更简单的window.postMessage来代替。

总结

跨域的方法很多,不同的应用场景我们都可以找到一个最合适的解决方案。比如单向的数据请求,我们应该优先选择JSONP或者window.name,双向通信我们采取Cross Frame,在未与数据提供方没有达成通信协议的情况下我们也可以用server proxy的方式来抓取数据。

分类: 其他 标签:

让你提升命令行效率的 Bash 快捷键

2011年11月15日 没有评论

让你提升命令行效率的 Bash 快捷键

 

生活在 Bash shell 中,熟记以下快捷键,将极大的提高你的命令行操作效率。

编辑命令

       Ctrl + a :移到命令行首

       Ctrl + e :移到命令行尾

       Ctrl + f :按字符前移(右向)

       Ctrl + b :按字符后移(左向)

       Alt + f :按单词前移(右向)

       Alt + b :按单词后移(左向)

       Ctrl + xx:在命令行首和光标之间移动

       Ctrl + u :从光标处删除至命令行首

       Ctrl + k :从光标处删除至命令行尾

       Ctrl + w :从光标处删除至字首

       Alt + d :从光标处删除至字尾

       Ctrl + d :删除光标处的字符

       Ctrl + h :删除光标前的字符

       Ctrl + y :粘贴至光标后

       Alt + c :从光标处更改为首字母大写的单词

       Alt + u :从光标处更改为全部大写的单词

       Alt + l :从光标处更改为全部小写的单词

       Ctrl + t :交换光标处和之前的字符

       Alt + t :交换光标处和之前的单词

       Alt + Backspace:与 Ctrl + w 相同类似,分隔符有些差别 [感谢rezilla 指正]

重新执行命令

       Ctrl + r:逆向搜索命令历史

       Ctrl + g:从历史搜索模式退出

       Ctrl + p:历史中的上一条命令

       Ctrl + n:历史中的下一条命令

       Alt + .:使用上一条命令的最后一个参数

控制命令

       Ctrl + l:清屏

       Ctrl + o:执行当前命令,并选择上一条命令

       Ctrl + s:阻止屏幕输出

       Ctrl + q:允许屏幕输出

       Ctrl + c:终止命令

       Ctrl + z:挂起命令

Bang (!) 命令

       !!:执行上一条命令

       !blah:执行最近的以 blah 开头的命令,如 !ls

       !blah:p:仅打印输出,而不执行

       !$:上一条命令的最后一个参数,与 Alt + . 相同

       !$:p:打印输出 !$ 的内容

       !*:上一条命令的所有参数

       !*:p:打印输出 !* 的内容

       ^blah:删除上一条命令中的 blah

       ^blah^foo:将上一条命令中的 blah 替换为 foo

       ^blah^foo^:将上一条命令中所有的 blah 都替换为 foo

友情提示

1.    以上介绍的大多数 Bash 快捷键仅当在 emacs 编辑模式时有效,若你将Bash 配置为 vi 编辑模式,那将遵循 vi 的按键绑定。Bash 默认为 emacs 编辑模式。如果你的 Bash 不在 emacs 编辑模式,可通过 set -o emacs 设置。

2.    ^S、^Q、^C、^Z 是由终端设备处理的,可用 stty 命令设置。

 

引用:http://linuxtoy.org/archives/bash-shortcuts.html

分类: Linux 标签:

Centos 升级安装 VIM7.3

2011年11月11日 没有评论

Centos系统自带Vim为7.0版,使用过程中发现netrw的目录浏览功能有bug,表现为:

子目录名称无法正常显示:目录名前面加添有字母’e’。

子目录无法打开:光标置于子目录上时,按回车无反映。

只好升级VIM的netrw插件,但是VIM7.1以后netrw是以Vimball形式发布。所以还得先升级VIM到最新版本了

VIM最新版本7.3 官网

默认安装

./configure
make
make install

安装过程中提示:installing /usr/local/share/man/fr/man1/vim.1 ,然后就卡着不动了。

查资料提示可能是跟locale设置有关系

我的locale 设置为

LANG=zh_CN.GBXXXX

修改为

LANG=zh_CN.UTF-8

安装成功!

分类: Linux, VIM 标签:

Varnishhist 中文man page

2011年11月9日 没有评论

Author:    Dag-Erling Sm?rgrav

Date:        2010-05-31

Version:   1.0

Manual section:       1

Varnish request histogram(varnish请求柱状图)

 

SYNOPSIS

varnishhist [-b] [-C] [-c] [-d] [-I regex] [-i tag] [-n varnish_name] [-r file] [-V] [-w delay][-X regex] [-x tag]

DESCRIPTION

Varnishhist工具读取varnishd(1)的共享内存日志,生成一个连续不断更新的柱状图显示最后N个请求的分布。N的值取决于左上角垂直刻度的高度。水平标尺是对数。如果命中,则使用“|”表示,如果没有命中,使用“#”表示。

下面的选项是可用的:

                  -b               分析指定后端服务器的日志,如果没有使用-b和-c参数,varnish就充当他们。

                   -C               忽略正则表达式的大小写。

                   -c               分析指定客户端的日志。

                   -d               在启动过程中处理旧的日志,一般情况下,varnishhist只会在进程写入日           志后启动。

                   -I       regex        匹配正则表达式的日志,如果没有使用-i或者-I,那么所有的日志都                      会匹配。

                   -i       tag            匹配指定的tag,如果没有使用-i或者-I,那么所有的日志都会被匹配。

                   -n               指定varnish实例的名字,用来获取日志,如果没有指定,默认使用主机 名。

                   -r      file    读入日志文件,代替共享内存。

                   -V               显示版本号,然后退出。

                   -w     delay         等待更新的延迟时间,默认是1秒。

                   -X      regex        导入匹配表达式的日志。

                   -x      tag            导入匹配tag的日志。

SEE ALSO

    * varnishd(1)

    * varnishlog(1)

    * varnishncsa(1)

    * varnishstat(1)

    * varnishtop(1)

HISTORY

The varnishhist utility was developed by Poul-Henning Kamp in cooperation with  Verdens Gang AS and Linpro AS. This manual page was written by Dag-Erling Sm?rgrav.

COPYRIGHT

这个文档的版权和varnish自身的版权一样,请看LICENCE。

    * Copyright (c) 2006 Verdens Gang AS

    * Copyright (c) 2006-2008 Linpro AS

    * Copyright (c) 2008-2010 Redpill Linpro AS

    * Copyright (c) 2010 Varnish Software AS

 

引用:http://linuxguest.blog.51cto.com/195664/369338

分类: 架构 标签:

Varnishlog 中文man page

2011年11月9日 没有评论

Author:    Dag-Erling Sm?rgrav
Author:    Per Buer
Date:        2010-05-31
Version:   0.2
Manual section:       1
Display varnish logs
 
SYNOPSIS
varnishlog [-a] [-b] [-C] [-c] [-D] [-d] [-I regex] [-i tag] [-k keep] [-n varnish_name] [-o] [-P     file] [-r file] [-s num] [-u] [-V] [-w file] [-X regex] [-x tag] [tag regex]
DESCRIPTION
         varnishlog工具读取和显示共享内存的日志。
         下面的选项是可用的:
                   -a               当把日志写到文件里时,使用附加,而不是覆盖。
                   -b               只显示varnishd和后端服务器的日志。
                   -C               匹配正则表达式的时候,忽略大小写差异。
                   -c               只显示varnishd和客户端的日志。
                   -D              以进程方式运行
                   -d               在启动过程中处理旧的日志,一般情况下,varnishhist只会在进程写入日 志后启动。
                   -I       regex        匹配正则表达式的日志,如果没有使用-i或者-I,那么所有的日志都会匹配。
                   -i       tag            匹配指定的tag,如果没有使用-i或者-I,那么所有的日志都会被匹配。
                   -k      num          只显示开始的num个日志记录。
                   -n               指定varnish实例的名字,用来获取日志,如果没有指定,默认使用主机名。
                   -o               以请求ID给日志分组,这个功能没多大用。如果要写到一个文件里使用  -w选项。
                   -P      file    记录PID号的文件
                   -r      file    从一个文件读取日志,而不是从共享内存读取。
                   -s               sum 跳过开始的num条日志。
                   -u               无缓冲的输出。
                   -V               显示版本,然后退出。
                   -w     file    把日志写到一个文件里代替显示他们,如果不是用-a参数就会发生覆盖,如果varnishlog在写日志时,接收到一个SIGHUP信号,他会创建一个新的文件,老的文件可以移走。
                   -X      regex        排除匹配正则表达式的日志。
                   -x      tag            排除匹配tag的日志。
                   如果-o选项被指定,需要使用正则表达式和tag来制定需要的日志。
TAGS
下面的日志tag是正确定义的:
    * Backend
    * BackendClose
    * BackendOpen
    * BackendReuse
    * BackendXID
    * CLI
    * ClientAddr
    * Debug
    * Error
    * ExpBan
    * ExpKill
    * ExpPick
    * Hit
    * HitPass
    * HttpError
    * HttpGarbage
    * Length
    * ObjHeader
    * ObjLostHeader
    * ObjProtocol
    * ObjRequest
    * ObjResponse
    * ObjStatus
    * ObjURL
    * ReqEnd
    * ReqStart
    * RxHeader
    * RxLostHeader
    * RxProtocol
    * RxRequest
    * RxResponse
    * RxStatus
    * RxURL
    * SessionClose
    * SessionOpen
    * StatAddr
    * StatSess
    * TTL
    * TxHeader
    * TxLostHeader
    * TxProtocol
    * TxRequest
    * TxResponse
    * TxStatus
    * TxURL
    * VCL_acl
    * VCL_call
    * VCL_return
    * VCL_trace
    * WorkThread
EXAMPLES
 下面的命令简单的打印日志到一个文件:
                   $ varnishlog -w /var/log/varnish.log
 下面这条命令读取一个日志文件,然是请求的首页:
                   $ varnishlog -r /var/log/varnish.log -c -o RxURL ‘^/$’
SEE  ALSO
    * varnishd(1)
    * varnishhist(1)
    * varnishncsa(1)
    * varnishstat(1)
    * varnishtop(1)
HISTORY
The varnishlog utility was developed by Poul-Henning Kamp ?phk@phk.freebsd.dk? in       cooperation with Verdens Gang AS, Linpro AS and Varnish Software. This manual page was         initially written by Dag-Erling Sm?rgrav.
COPYRIGHT
这个文档的版权和varnish自身的版权一样,请看LICENCE。
    * Copyright (c) 2006 Verdens Gang AS
    * Copyright (c) 2006-2008 Linpro AS
    * Copyright (c) 2008-2010 Redpill Linpro AS
    * Copyright (c) 2010 Varnish Software AS
原文:http://linuxguest.blog.51cto.com/195664/369339

分类: 架构 标签:

Varnish清除缓存程序更正

2011年11月1日 没有评论

s135.com博客中介绍的这个程序在Varnish端口号为非80端口时无效,通过varnishlog可以发现URL的Hash带端口号,也即Varnish的缓存键值是完整路径。

URL: XXX.COM:8000

HASH:XXX.COM:8000

 

原文:http://blog.s135.com/post/313/

分类: 架构 标签: