-
2013-05-18 14:20vim配置文件(.vimrc)
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" "----> System Config """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" set nocompatible "Disable VI's compatible mode.. set history=500 "Sets how many lines of history VIM has to remember set so=7 "Set 7 lines to the curors - when moving vertical.. set cmdheight=2 "The commandbar height set autoread "Set to auto read when a file is changed from the outside set laststatus=2 "Always show the statusline "set statusline=\ %F%m%r%h\ %w\ \ CWD:\ %r%{CurDir()}%h\ \ \ Line:\ %l/%L:%c "Format the statusline set statusline= set statusline+=%2*%-3.3n%0*\ " buffer number set statusline+=%f\ " file name set statusline+=%h%1*%m%r%w%0* " flag set statusline+=[ set statusline+=%{strlen(&ft)?&ft:'none'}, " filetype set statusline+=%{&encoding}, " encoding set statusline+=%{&fileformat}] " file format if filereadable(expand("$VIM/vimfiles/plugin/vimbuddy.vim")) set statusline+=\ %{VimBuddy()} " vim buddy endif set statusline+=%= " right align set statusline+=%2*0x%-8B\ " current char set statusline+=%-14.(%l,%c%V%)\ %<%P " offset set nobackup "Turn backup off, since most stuff is in SVN, git anyway... set nowritebackup set noswapfile set noerrorbells set novisualbell set t_vb= let Grep_Skip_Dirs = 'RCS CVS SCCS .svn generated' set grepprg=/bin/grep\ -nH filetype plugin on "Enable filetype plugin filetype indent on "Enable filetype indent autocmd! bufwritepost .vimrc source % "When vimrc is edited, reload it """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" "----> User Interface """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" set number "Show line number set hid "Change buffer - without saving set wildmenu "Turn on WiLd menu set ruler "Always show current position set backspace=eol,start,indent " Set backspace config set whichwrap+=<,>,h,l "Bbackspace and cursor keys wrap to set hlsearch "Highlight search things set incsearch "Make search act like search in modern browsers set ignorecase "Ignore case when searching set magic "Set magic on, for regular expressions set mat=2 "How many tenths of a second to blink set showmatch "Show matching bracets when text indicator is over them "set mouse=a """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" "----> TEXT && TAB && INDENT """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" set expandtab "使用空格代替制表符 set tabstop=4 "文件里的代表的空格数 set shiftwidth=4 "縮進長度,用于cindent|<<|>> set smarttab "行首的 根据 'shiftwidth' 插入空白 set linebreak set textwidth=0 set autoindent "Auto indent set smartindent "Smart indent set nowrap "no Wrap lines """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" "----> Colors && Fonts """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" set encoding=utf8 set fileencodings=ucs-bom,utf-8,gbk,default,latin1 set ffs=unix,dos,mac "Default file types set helplang=cn "Use chinese help syntax enable "Enable syntax highlight try lang en_US catch endtry """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" "----> Maps """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" map 0 ^ map / map ? map j map k map h map l vnoremap $1 `>a) ` vnoremap $2 `>a] ` vnoremap $3 `>a} ` vnoremap $$ `>a" ` vnoremap $q `>a' ` cnoremap cnoremap cnoremap """""""""""""""""""""""""""""""""""""""" "----> F1~F10 """""""""""""""""""""""""""""""""""""""" inoremap :call PhpDocSingle() i nnoremap :call PhpDocSingle() vnoremap :call PhpDocRange() nnoremap :TlistToggle map :NERDTreeToggle """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" "----> mapleader(default \) """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" let mapleader = "," let g:mapleader = "," map e :e! ~/.vimrc map tn :tabnew % map te :tabedit map tc :tabclose map tm :tabmove map g :vimgrep // **/*. map ss :setlocal spell! map sn ]s map sp [s map sa zg map s? z= map :nohlsearch nmap w :w! """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" "----> Functions """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" function! MySys() if has("unix") return "unix" elseif has("win32") return "win32" else return "mac" endif endfunction function! CurDir() let curdir = substitute(getcwd(), '/Users/amir/', "~/", "g") return curdir endfunction """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" "----> Unix System Config """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" if MySys() == "unix" set gfn=Monospace\ 10 set shell=/bin/bash endif """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" "----> GUI Setting """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" if has("gui_running") set guioptions-=T set guifont=Consolas:h9 set background=dark set t_Co=256 colorscheme peaksea endif """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" "----> Plugin - taglist """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" let Tlist_Auto_Highlight_Tag = 1 let Tlist_Auto_Open = 0 let Tlist_Auto_Update = 1 let Tlist_Close_On_Select = 0 let Tlist_Compact_Format = 0 let Tlist_Display_Prototype = 0 let Tlist_Display_Tag_Scope = 1 let Tlist_Enable_Fold_Column = 0 let Tlist_Exit_OnlyWindow = 0 let Tlist_File_Fold_Auto_Close = 0 let Tlist_GainFocus_On_ToggleOpen = 1 let Tlist_Hightlight_Tag_On_BufEnter = 1 let Tlist_Inc_Winwidth = 0 let Tlist_Max_Submenu_Items = 1 let Tlist_Max_Tag_Length = 30 let Tlist_Process_File_Always = 0 let Tlist_Show_Menu = 0 let Tlist_Show_One_File = 0 let Tlist_Sort_Type = "order" let Tlist_Use_Horiz_Window = 0 let Tlist_Use_Right_Window = 1 let Tlist_WinWidth = 40 let tlist_php_settings = 'php;c:class;i:interfaces;d:constant;f:function' -
2013-05-16 13:41使用密匙对让putty(ssh)自动登录
1.产生密钥对
ssh-keygen -b 密匙长度 -t 密匙类型
密匙类型可以是:rsa1 (对应SSH1 RSA)、rsa 和 dsa (对应SSH2)$ ssh-keygen -b 1024 -t rsa
默认在~/.ssh下会生成 id_rsa和 id_rsa.pub
这里id_rsa是private key,id_rsa.pub是public key (密钥类型 RSA,密钥长度 1024)。2.设置linux主机
把id_rsa.pub 复制为authorized_keys,放在需要登陆的linux主机的~/.ssh目录下
$ scp id_ras.pub hostname1:/home/username/.ssh/authorized_keys
这样就可以不用密码ssh到hostname1上了(hostname1和username根据自己情况而定,用户名和本地相同,不相同的话要显式地指定用户名:scp id_ras.pub username@hostname1:/home/username/.ssh/authorized_keys)
如果想使用putty,因为ssh-keygen生成的SSH2密匙和putty的密匙格式不同,无法直接使用,
必须用 puttygen.exe 转换一下:3.转换private key,设置putty
使用winscp (推荐)或者 psftp.exe 或者ftp把id_rsa下载到本地,运行puttygen.exe,选择菜单Conversions->Import key
然后save private key (比如key.ppk),就可以使用这个private key设置putty了。1)启动Putty,设置好session的各项参数(如果以前已经设置过,那么load一下),然后从左边选择“SSH->Auth”,点击 Browse 按钮,选择 key.ppk 文件。
2)设置 auto-login 用户名,Connection -> Data -> Auto-login username
3)再从左边选择 Session,然后点击 Save 按钮把修改保存下来 。然后点击Open 按钮就可以登录了。 如果上面的操作都没有问题,那这时应该就自动登录了,无需输入密码。
4.FAQ
- Server refused our key
未将公钥添加到authorized_keys中
$ cat id_rsa.pub >> authorized_keys
- Server refused our key
-
2013-05-12 11:21screen配置(.screenrc)
#termcapinfo xterm 'hs:ts=\E]0;:fs=\007:ds=\E]0;bash\007' ##caption always "%{= bk} %{= bY} [%n]%t @ %H %{-} %= %{= bR} %l %{-} | %{= KG} %Y-%m-%d %{-} " ##shelltitle '$ |bash' #defhstatus "\005t" ##hardstatus alwayslastline "%{= bg}%-Lw%{= bw}%n%f %t%{-}%+Lw %=| %{= bw} %0c:%s " #hardstatus alwayslastline "%{=b}%{bw} %{ck} %-Lw%{gw}%n%f* %t%? (%u)%? %{-}%+Lw %{bw}" ##hardstatus alwayslastline "%{= bk}%n%f %{= bY} %t%{-}%+Lw @ %H %{-} %= %{= bR} %l %{-} | %{= KG} %0c:%s %{-} " #hardstatus on # #vbell off termcapinfo xterm|xterms|xs|rxvt ti@:te@ term xterm defutf8 on defflow off vbell off startup_message off defscrollback 2048 hardstatus on hardstatus alwayslastline hardstatus string "%{.bW}%-w%{.rW}%n %t%{-}%+w %=%{..G} %H %{..Y} %m/%d %C%a " -
2013-04-15 20:54压力测试工具 ab 使用帮助
1. ab用途
ab(ApacheBench)是Apache超文本传输协议(HTTP)的性能测试工具。其设计意图是描绘当前所安装的Apache的执行性能,主要是显示你安装的Apache每秒可以处理多少个请求。
2. 简单例子
$ /opt/httpd/bin/ab -n10 -c10 http://www.chenliujin.com/ #-n 总请求个数 -c 并发请求个数 This is ApacheBench, Version 2.3 <$Revision: 655654 $> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Licensed to The Apache Software Foundation, http://www.apache.org/ Benchmarking www.chenliujin.com (be patient).....done Server Software: Apache/2.2.16 #被测试的web服务器名称,它来自HTTP响应数据的头信息 Server Hostname: www.chenliujin.com #请求URL中主机部分名称,它来自HTTP请求数据的头信息 Server Port: 80 #被测试web服务器的监听端口 Document Path: / #表示请求URL中的根绝对路径,它来自HTTP请求数据的头信息 Document Length: 48037 bytes #表示HTTP响应数据的正文长度 Concurrency Level: 10 #并发数 Time taken for tests: 1.136 seconds #表示所有请求被处理完成所需要的总时间 Complete requests: 10 #完成的实际请求数 Failed requests: 8 #失败的请求数 (Connect: 0, Receive: 0, Length: 8, Exceptions: 0) Write errors: 0 #请求写入失败的次数 Total transferred: 482718 bytes #表示所有请求的响应数据长度总和(header length + context length) HTML transferred: 480358 bytes #总的响应数据中正文长度(context length) Requests per second: 8.80 [#/sec] (mean) #吞吐率 Requests per second = Complete requests / Time taken for tests,相当于LR中的每秒事务数 Time per request: 1136.455 [ms] (mean) #用户平均请求等待时间,相当于LR 中的平均事务响应时间 Time per request: 113.645 [ms] (mean, across all concurrent requests) #服务器平均处理请求时间 Transfer rate: 414.80 [Kbytes/sec] received #表示请求在单位时间内从服务器获取的数据长度 Connection Times (ms) #网络上消耗的时间的分解,各项数据的具体算法还不是很清楚 min mean[+/-sd] median max Connect: 0 142 117.4 233 235 Processing: 233 755 231.0 861 1036 Waiting: 230 544 194.3 628 813 Total: 239 897 288.5 1036 1136 #下面的内容为整个测试中所有请求的响应情况。 #在测试中每个请求都有一个响应时间,其中50%的用户响应时间小于1036毫秒, #66%的用户响应时间小于1039毫秒,最大的响应时间小于1136毫秒 Percentage of the requests served within a certain time (ms) 50% 1036 66% 1039 75% 1094 80% 1118 90% 1136 95% 1136 98% 1136 99% 1136 100% 1136 (longest request)3. FAQ
1. 为什么 Failed requests那里不为0,应该是0才对啊?
答:没错,但是请看 Failed requests 下面的一行 (Connect: 0, Receive: 0, Length: 8, Exceptions: 0)。具体如下:- Connect:连接错误
- Receive:
- Length:返回的内容长度不一致(以第一次取得的内容长度为准,如果后续请求获得的内容长度与第一次不一致,将产生一个Length类型的Failed request)
- Exceptions:异常
可以看出,8次 Failed 都是内容长度不一致,主要是因为请求的是动态的内容,在根目录下新建一个test.html文件,里面随便输入几个英文字母,然后测试http://www.chenliujin.com/test.html,Failed requests 将变为0。
参考文献
- http://www.linuxso.com/architecture/12236.html
-
2013-04-15 20:49SVN命令使用帮助
1.svn add:往版本库中添加新的文件
例如:svn add test.php(添加test.php)
svn add *.php(添加当前目录下所有的php文件)2.svn blame (praise, annotate, ann):显示特定文件和URL内嵌的作者和修订版本信息。
概要:
svn blame TARGET[@REV]...
描述:
显示特定文件和URL内嵌的作者和修订版本信息。
每一行文本在开头都放了最后修改的作者(用户名)和修订版本号。3.svn cat:输出指定文件或URL的内容。
svn cat 目标[@版本]...如果指定了版本,将从指定的版本开始查找。
svn cat -r PREV filename > filename (PREV 是上一版本,也可以写具体版本号,这样输出结果是可以提交的)4.svn checkout (co):将文件checkout到本地目录
svn checkout path(path是服务器上的目录)
例如:svn checkout svn://192.168.1.1/pro/domain
简写:svn co5.svn cleanup - 递归清理工作拷贝。
概要:svn cleanup [PATH...]
描述:
递归清理工作拷贝,删除未完成的工作拷贝锁定,并恢复未完成的操作。如果你得到一个“工作拷贝已锁定”的错误,运行这个命令可以删除无效的锁定,让你的工作拷贝再次回到可用的状态。
如果,因为一些原因,运行外置的区别程序(例如,用户输入或是网络错误)有时候会导致一个svn update失败,使用--diff3-cmd选项可以完全清除你的外置区别程序所作的合并,你也可以使用--config-dir指定任何配置目录,但 是你应该不会经常使用这些选项。6.svn commit (ci):将改动的文件提交到版本库
svn commit -m "LogMessage" [-N] [--no-unlock] PATH(如果选择了保持锁,就使用--no-unlock开关)
例如:svn commit -m "add test file for my test" test.php
简写:svn ci7.svn copy (cp) - 拷贝工作拷贝的一个文件或目录到版本库。
概要:svn copy SRC DST8.svn delete (del, remove, rm):删除文件
svn delete path -m "delete test fle"
例如:svn delete svn://192.168.1.1/pro/domain/test.php -m "delete test file"
或者直接svn delete test.php 然后再svn ci -m 'delete test file‘,推荐使用这种
简写:svn (del, remove, rm)9.svn diff (di):比较差异
svn diff path(将修改的文件与基础版本比较)
例如:svn diff test.php
svn diff -r m:n path(对版本m和版本n比较差异)
例如:svn diff -r 200:201 test.php
简写:svn di10.svn export - 导出一个干净的目录树。
svn export [-r REV] URL[@PEGREV] [PATH]
svn export [-r REV] PATH1[@PEGREV] [PATH2]11.svn help (?, h):SVN 帮助
svn help
svn help ci12.svn import - 递归提交一个路径的拷贝到版本库。
svn import [PATH] URL
递归提交一个路径的拷贝到URL。如果省略PATH,默认是“.”。版本库中对应的父目录必须已经创建。13.svn info:查看文件详细信息
svn info path
例如:svn info test.php14.svn list (ls):版本库下的文件和目录列表
svn list path
显示path目录下的所有属于版本库的文件和目录
简写:svn ls15.svn lock:加锁
svn lock -m "LockMessage" [--force] PATH
例如:svn lock -m "lock test file" test.php16.svn log:查看日志
svn log path
例如:svn log test.php 显示这个文件的所有修改记录,及其版本号的变化17.svn merge:将两个版本之间的差异合并到当前文件
svn merge -r m:n path
例如:svn merge -r 200:205 test.php(将版本200与205之间的差异合并到当前文件,但是一般都会产生冲突,需要处理一下)18.svn mkdir:创建纳入版本控制下的新目录
svn mkdir: 创建纳入版本控制下的新目录。
用法:
1、mkdir PATH...
2、mkdir URL...
创建版本控制的目录。
1、每一个以工作副本 PATH 指定的目录,都会创建在本地端,并且加入新增调度,以待下一次的提交。
2、每个以URL指定的目录,都会透过立即提交于仓库中创建。在这两个情况下,所有的中间目录都必须事先存在。19.svn move (mv, rename, ren) - 移动一个文件或目录
svn move SRC DST
这个命令移动文件或目录到你的工作拷贝或者是版本库。20.svn propdel (pdel, pd) - 删除一个项目的一个属性。
svn propdel PROPNAME [PATH...]
svn propdel PROPNAME --revprop -r REV [TARGET]21.svn propedit (pedit, pe) - 修改一个或多个版本控制之下文件的属性。
svn propedit PROPNAME PATH...
svn propedit PROPNAME --revprop -r REV [TARGET]22.svn propget (pget, pg) - 打印一个属性的值。
svn propget PROPNAME [TARGET[@REV]...]
svn propget PROPNAME --revprop -r REV [URL]23.svn proplist (plist, pl) - 列出所有的属性。
svn proplist [TARGET[@REV]...]
svn proplist --revprop -r REV [TARGET]24.svn propset (pset, ps) - 设置文件、目录或者修订版本的属性PROPNAME为PROPVAL。
svn propset PROPNAME [PROPVAL | -F VALFILE] PATH...
svn propset PROPNAME --revprop -r REV [PROPVAL | -F VALFILE] [TARGET]25.svn resolved:解决冲突
svn resolved: 移除工作副本的目录或文件的“冲突”状态。
用法: resolved PATH...
注意: 本子命令不会依语法来解决冲突或是移除冲突标记;它只是移除冲突的
相关文件,然后让 PATH 可以再次提交。26.svn revert:恢复本地修改
svn revert: 恢复原始未改变的工作副本文件 (恢复大部份的本地修改)。revert:
用法: revert PATH...
注意: 本子命令不会存取网络,并且会解除冲突的状况。但是它不会恢复被删除的目录27.svn status (stat, st):查看文件或者目录状态
1)svn status path(目录下的文件和子目录的状态,正常状态不显示)
【?:不在svn的控制中;M:内容被修改;C:发生冲突;A:预定加入到版本库;K:被锁定】
2)svn status -v path(显示文件和子目录状态)
第一列保持相同,第二列显示工作版本号,第三和第四列显示最后一次修改的版本号和修改人。
注:svn status、svn diff和 svn revert这三条命令在没有网络的情况下也可以执行的,原因是svn在本地的.svn中保留了本地版本的原始拷贝。
简写:svn st28.svn switch (sw):代码库URL变更
svn switch (sw): 更新工作副本至不同的URL。
用法:
1、switch URL [PATH]
2、switch --relocate FROM TO [PATH...]
1、更新你的工作副本,映射到一个新的URL,其行为跟“svn update”很像,也会将
服务器上文件与本地文件合并。这是将工作副本对应到同一仓库中某个分支或者标记的
方法。
2、改写工作副本的URL元数据,以反映单纯的URL上的改变。当仓库的根URL变动
(比如方案名或是主机名称变动),但是工作副本仍旧对映到同一仓库的同一目录时使用
这个命令更新工作副本与仓库的对应关系。29.svn unlock:解锁
svn unlock PATH39.svn update (up):更新到某个版本
svn update -r m path
例如:
svn update如果后面没有目录,默认将当前目录以及子目录下的所有文件都更新到最新版本。
svn update -r 200 test.php(将版本库中的文件test.php还原到版本200)
svn update test.php(更新,于版本库同步。如果在提交的时候提示过期的话,是因为冲突,需要先 update,修改文件,然后清除svn resolved,最后再提交commit)
简写:svn up參考文獻:
1.http://www.subversion.org.cn/svnbook/1.4/svn.ref.svn.c.add.html -
2013-04-15 20:42Linux编译安装subversiom
1.作者
邮箱: liujin.chen@qq.com
日期: 2010-12-03
2.源码下载
3.yum安装
$ yum install subversion
4.源码编译安装
- 源文件共两个:
subversion-1.6.13.tar.gz (subversion 源文件)
subversion-deps-1.6.13.tar.gz (subversion依赖文件)
注意文件版本必须一致,否则很容易产生各种奇怪的问题.
默认不带BDB包, 所以默认使用的是FSFS模式.若想使用BDB模式需另外下载BDB包.建议使用FSFS模式.
两种模式比较参考以下链接: http://doc.iusesvn.com/show-21-1.html
- install
$ tar -xzvf subversion-1.6.13.tar.gz $ tar -xzvf subversion-deps-1.6.13.tar.gz $ cd subversion-1.6.13 $ ./configure --prefix=/opt/subversion --with-apxs=/opt/httpd/bin/apxs $ make $ make install
- 环境变量
$ vim .bashrc export PATH=$PATH:/opt/subversion/bin
- 测试SVN是否安装成功
$ svnserve --version
如果显示版本信息, 则安装成功.
5.svn+ssh配置
- 安装ssh服务
$ yum install openssh-server
- 创建svn用户(svn-dev,svn-sit)
$ groupadd users $ useradd -g users svn-dev $ chmod g+rx /home/svn-dev $ chmod o+rx /home/svn-dev
- 修改使用svn的其他用户的用户组,使其和svn-dev在同一个用户组
$ usermod -g users -G users chenliujin
- 新建版本库(Repository)
$ mkdir -p /home/svn-dev/repo01 $ svnadmin create /home/svn-dev/repo01 $ chmod -R g+rw /home/svn-dev/repo01/db ;修改用户组权限,设置错误会使该组其它用户无法使用svn,是svn+ssh访问的关键设置 - 启动服务
$ svnserve --daemon --root /home/svn-dev/repo01/
- 导入工作目录(svn import)
$ svn import blog "svn+ssh://donald.chen@192.168.229.130/home/svn-dev/repo01/platform/blog" -m 'first version'
- 建立工作拷贝(svn checkout)
$ svn checkout svn+ssh://donald.chen@192.168.229.130/home/svn-dev/repo01/platform/blog
6.版本库配置
本系统采用为每个项目单独建一版本库的策略。配置文件,密码文件,访问控制文件等都放在版本库的conf目录下。所以每次开始一个新项目都必须新建一个版本库,并重新配置各配置文件。还有很重要的一条,要求各组员重新配置客户端,包括服务器版本库路径,本地路径等信息。
- 修改版本库配置文件
$ vim /data/subversion/repo01/conf/svnserve.conf [general] anon-access = none # 使非授权用户无法访问 auth-access = write # 使授权用户有写权限 password-db = passwd # 指明密码文件路径 authz-db = authz # 访问控制文件 realm = /opt/svndata/repos # 认证命名空间,subversion会在认证提示里显示,并且作为凭证缓存的关键字。
其它采用默认配置。各语句都必须顶格写,左侧不能留空格,否则会出错。
- 配置用户
$ vim /data/subversion/repo01/conf/passwd [users] username1 = password1 username2 = password2
- 配置权限
$ vim /data/subversion/repo01/conf/authz [groups] admin = username1,username2 //该句表示配置一个用户组admin,用户名必须是passwd文件中的一个用户名 [/platform/blog] @admin = rw //这里是配置@admin用户组拥有目录(/platform/blog)的读和写的权限 user1 = rw user2 = r
指令简介:
此配置文件采用“基于路径的授权”策略,中括号里指定路径,以下列出对各用户的授权。包括只读r,读写rw。
没有列出的用户,则不允许访问。还可以对用户分组,具体请参考svn手册。Notice:
[/platform/blog]中的路径是相对路径,对应/data/subversion/repo01/platform/blog/,
因为启动svn服务时指定了svn服务的根目录(/home/svn-dev/repo01),所以此处使用相对路径
很多人在这里设置成绝对路径,导致svn 认证失败。
7.常用命令
- svn import
新建好的版本库是空的,需要导入工作目录。使用svn import导入文件。
- svn checkout
导入工作目录后,原来的目录树并没有转换成工作拷贝,为了开始工作,还是需要运行svn checkout导出一个工作拷贝。因为导入后,文件在版本库中是以特殊的形式存在db文件夹中的,不能以明文的方式查看。必须使用svn checkout导出工作副本才能以正常方式查看。
- svnserve
此指令用于启动svn服务, 这是小团队项目的推荐方法. 这种方法维护最少, 配置最简单.
默认端口:3690
--daemon 指明以守护模式运行
--root /home/svn-dev/repo01/ 指定svn服务的根目录,这样用户就可以使用相对路径访问,而不用提供完整路径。
--listen-port
--listen-host
8.BDB mode
- configure
$ ./configure --with-berkeley-db=/usr/local/bdb --with-apxs=/usr/local/apache2/bin/apxs
9.ViewVC
viewvc是一个基于web的CVS、SVN代码仓库浏览工具。
10.参考文献
- 源文件共两个:
-
2013-04-15 19:44MySQL数据类型
类型 说明 长度 常用定义 char 定长字符串 0-255 varchar 动态字符串 0-65535 email varchar(50) tinytext mediumtext text 字符串 longtext tinyint 有符号:-127-128
无符号:0-255mediumint int 整型 id in bigint 长整型 id bigint datetime 日期时间 0000-00-00 00:00:00 created_at datetime date 日期 0000-00-00 time 时间 00:00:00 timestamp 时间戳 0000-00-00 00:00:00 float float(m,n) fload(m,n) double double(m,n) double(m,n) decimal decimal(m,n) decimal(m,n) enum 常用定义
- id
- INT NOT NULL AUTO_INCREMENT
- stock_id
- CHAR(6) NOT NULL
- url
- VARCHAR(255) NOT NULL
-
2013-04-15 19:36httpd.conf
ServerName:chenliujin.com LoadModule deflate_module modules/mod_deflate.so ErrorDocument 404 / <ifmodule mod_deflate.c> SetOutputFilter DEFLATE DeflateCompressionLevel 4 # Don’t compress images and other SetEnvIfNoCase Request_URI .(?:gif|jpe?g|png)$ no-gzip dont-vary SetEnvIfNoCase Request_URI .(?:exe|t?gz|zip|bz2|sit|rar)$ no-gzip dont-vary SetEnvIfNoCase Request_URI .(?:pdf|doc)$ no-gzip dont-vary </ifmodule> <ifmodule mpm_prefork_module>
MaxClient 5
</ifmodule> -
2013-04-12 22:13Linux编译安装PHP memcached扩展
1.作者
邮箱:liujin.chen@qq.com
主页:http://www.chenliujin.com
2.源码下载
下载地址:http://pecl.php.net/package/memcached
3.依赖包安装
$ yum install gcc44.x86_64 gcc44-c++.x86_64 $ export CC=/usr/bin/gcc44 $ export CXX=/usr/bin/g++44 $ wget https://launchpad.net/libmemcached/1.0/1.0.17/+download/libmemcached-1.0.17.tar.gz $ tar -xzvf libmemcached-1.0.17.tar.gz $ cd libmemcached-1.0.17.tar.gz $ ./configure $ make $ make install
4.编译安装
$ wget http://pecl.php.net/get/memcached-2.1.0.tgz $ tar -xzvf memcached-2.1.0.tgz $ cd memcached-2.1.0.tgz $ /opt/php/bin/phpize $ ./configure --with-php-config=/opt/php/bin/php-config $ make $ make install
5.memcached.ini
extension = memcached.so
6.优势(Memcached/DB)
读内存比读DB快:更少的磁盘IO,占用更少的CPU
7.使用
有cache读cache,无cache读DB
更新DB同时更新cache
如何保持cache数据与DB同步
什么情况下可以使用cache
需要缓存哪些数据?
8.Key定义
Project_TableName_PrimaryKey
Project_TableName_User
9.效率对比
单条SQL,用主键
mysql query log: 589781 Connect root@localhost on chenliujin_sns 589781 Query SET NAMES utf8 589781 Query SELECT * FROM blog WHERE blog_id= '4' 589781 Quit $ ab -n 200000 -c 100 'http://www.chenliujin.com/index.php?app=Space&mod=Blog&act=detail&blog_id=4' Percentage of the requests served within a certain time (ms) 50% 82 66% 94 75% 103 80% 110 90% 141 95% 211 98% 467 99% 637 100% 5422 (longest request)
$ ab -n 200000 -c 100 'http://www.chenliujin.com/index.php?app=Space&mod=Blog&act=detail&blog_id=4' Percentage of the requests served within a certain time (ms) 50% 73 66% 87 75% 101 80% 111 90% 168 95% 306 98% 680 99% 1063 100% 12892 (longest request)
-
2013-04-12 22:11Linux编译安装memcached
1.作者
邮箱:liujin.chen@qq.com
主页:http://www.chenliujin.com
2.源码下载
下载地址:http://memcached.org/
3.依赖包安装
$ yum install libevent-devel
4.编译安装
$ wget http://memcached.googlecode.com/files/memcached-1.4.15.tar.gz $ tar -xzvf memcached-1.4.15.tar.gz $ cd memcached-1.4.15 $ ./configure --prefix=/opt/memcached $ make $ make install
5.启动
$ cd /opt/memcached/bin $ memcached -d -m 32 -l 127.0.0.1 -u root -P /tmp/memcached.pid
启动参数:
-p 监听端口 -l 连接的IP地址,默认是本机 -d start启动memecache服务 -d restart重启 -d stop|shutdown关闭服务 -d install 安装 -d uninstall 卸载 -u 以身份运行仅在root下有效 -m 最大内存使用,单位MB,默认64MB,最大2G -M 内存耗尽时返回错误 -c 最大同时连接数量,默认是1024 -f 块大小增长因为,默认是1.25 -n 最小分配空间,key+value+flags默认48 -h 显示帮助