博客首页|TW首页| 同事录|业界社区
2011-08-05

VIM 代码折叠
VIM代码折叠方式可以用”foldmethod”选项来设置,如: set foldmethod=indent

有6种方式来折叠代码

1. manual //手工定义折叠
2. indent //用缩进表示折叠
3. expr  //用表达式来定义折叠
4. syntax //用语法高亮来定义折叠
5. diff   //对没有更改的文本进行折叠
6. marker //用标志折叠

vim 配置文件分为全局配置文件用户配置文件

1. 全局配置文件查找,在.vim 中输入:echo $VIM,一般为:/usr/share/vim/vimrc
2. 用户配置文件在用户主目录下,如:/home/abeen/.vimrc

在vimrc文件中设置折叠方式:如set foldmethod=indent

选定折叠方式后,就可以使用折叠命令进行折叠操作了.常用的折叠方式为indent和marker.

indent折叠命令
indent方式,vim会自动利用缩进进行折叠,我们可以使用现成的折叠成果.
我们可以在折叠处输入以下命令:

zc 折叠
zC 对所在范围内所有嵌套的折叠点进行折叠
zo 展开折叠
zO 对所在范围内所有嵌套的折叠点展开
[z 到当前打开的折叠的开始处。
]z 到当前打开的折叠的末尾处。
zj 向下移动。到达下一个折叠的开始处。关闭的折叠也被计入。
zk 向上移动到前一折叠的结束处。关闭的折叠也被计入。

marker折叠命令
marker折叠方式时,我们需要用标计来标识代码的折叠,系统默认是{{{和}}}
折叠命令

zf 创建折叠,比如在marker方式下:
zf56G,创建从当前行起到56行的代码折叠;
10zf或10zf+或zf10↓,创建从当前行起到后10行的代码折叠。
10zf-或zf10↑,创建从当前行起到之前10行的代码折叠。
在括号处zf%,创建从当前行起到对应的匹配的括号上去((),{},[],<>等)。
zd  删除 (delete) 在光标下的折叠。仅当 ‘foldmethod’ 设为 “manual” 或 “marker” 时有效。
zD  循环删除 (Delete) 光标下的折叠,即嵌套删除折叠。仅当 ‘foldmethod’ 设为 “manual” 或 “marker” 时有效。
zE  除去 (Eliminate) 窗口里“所有”的折叠。仅当 ‘foldmethod’ 设为 “manual” 或 “marker” 时有效。

2011-07-31

100分 今晚得分97和91

威危险啊

2011-07-27

server {
listen       80;
server_name localhost;
root   /data/www/mywp;

access_log  /data/logs/mywp.log  main;

location / {
index  index.php index.html index.htm index.shtml;
}

location ~ \.php(/|$) {
include        fastcgi.conf ;
}

location ~ .*\.(gif|jpg|jpeg|png|bmp)$
{
expires 30d;
}
location ~ .*\.(js|css)?$
{
expires 1h;
}
}

2011-07-25

一般模式:移动光标的方法
h或 向左方向键(←) 光标向左移动一个字符
j 或 向下方向键(↓) 光标向下移动一个字符
k或 向上方向键(↑) 光标向上移动一个字符
l或 向右方向键(→) 光标向右移动一个字符

如果想要进行多次移动的话,例如向下移动 30行,可以使用 “30j”或 “30↓”的组合按键,亦即
加上想要进行的次数(数字)后,按下动作即可!

[Ctrl] + [f] 屏幕『向下』移动一页 ,相当于 [Page Down]按键 (常用 )
[Ctrl] + [b] 屏幕『向上』移动一页 ,相当于 [Page Up] 按键 (常用 )
[Ctrl] + [d] 屏幕『向下』移动半页
[Ctrl] + [u] 屏幕『向上』移动半页
+  光标移动到非空格符的下一列
-  光标移动到非空格符的上一列
n<space> 那个 n表示『数字』 ,例如 20。按下数字后再按空格键 ,光标
会向右移动这一行的 n个字符。例如 20<space>则光标会向后面
移动 20个字符距离。
0  这是数字『 0』 :移动到这一行的最前面字符处 (常用 )
$  移动到这一行的最后面字符处 (常用 )
H  光标移动到这个屏幕的最上方那一行
M  光标移动到这个屏幕的中央那一行
L  光标移动到这个屏幕的最下方那一行
G  移动到这个档案的最后一行 (常用 )
nG  n为数字。移动到这个档案的第 n行。例如 20G则会移动到这个
档案的第 20行 (可配合 :set nu)
gg  移动到这个档案的第一行 ,相当于 1G啊 ! (常用 )

n  <Enter>n为数字。光标向下移动 n行(常用)
一般模式:搜寻与取代
/word  向光标之下寻找一个字符串名称为 word的字符串。例如要在档案内搜寻 vbird这个字符串,就输入 /vbird即可! (常用)
?word  向光标之上寻找一个字符串名称为 word的字符串。

n  这个 n是英文按键。代表『重复前一个搜寻的动作』的意思。举
例来说,如果刚刚我们执行 /vbird去向下搜寻 vbird这个字符串,则按下 n后,会向下继续搜寻下一个名称为 vbird的字符串。

N  如果是执行 ?vbird的话,那么按下 n则会向上继续搜寻名称为vbird的字符串!
这个 N是英文按键。与 n刚好相反,为『反向』进行前一个搜寻动作。 例如 /vbird后,按下 N则表示『向上』搜寻 vbird。

:n1,n2s/word1/word2/g
n1与 n2为数字。在第 n1与 n2行之间寻找 word1这个字符
串,并将该字符串取代为 word2 !举例来说,在 100到 200行
之间搜寻 vbird并取代为 VBIRD则:
『:100,200s/vbird/VBIRD/g』。(常用)
:1,$s/word1/word2/g
从第一行到最后一行寻找 word1字符串,并将该字符串取代为
word2 !(常用)
:1,$s/word1/word2/gc
从第一行到最后一行寻找 word1字符串,并将该字符串取代为
word2 !且在取代前显示提示字符给使用者确认 (conform)是否
需要取代!(常用)

一般模式:删除、复制与贴上

x, X  在一行字当中,x为向后删除一个字符 (相当于 [del] 按键), X为向前删除一个字符(相当于 [backspace]亦即是退格键) (常用)

nx  n为数字,连续向后删除 n个字符。举例来说,我要连续删除 10个字符,『10x』。
dd  删除游标所在的那一整列(常用)

ndd  n为数字。 删除光标所在的向下 n列,例如 20dd则是删除 20列 (常用)
d1G  删除光标所在到第一行的所有数据
dG  删除光标所在到最后一行的所有数据
d$  删除游标所在处,到该行的最后一个字符
d0  那个是数字的 0 ,删除游标所在处,到该行的最前面一个字符
yy  复制游标所在的那一行(常用)
nyy  n为数字。 复制光标所在的向下 n列 ,例如 20yy则是复制 20列 (常用 )
y1G  复制光标所在列到第一列的所有数据
yG  复制光标所在列到最后一列的所有数据
y0  复制光标所在的那个字符到该行行首的所有数据
y$  复制光标所在的那个字符到该行行尾的所有数据
p, Pp  为将已复制的数据在光标下一行贴上 ,P则为贴在游标上一行 !举例来说 ,我目前光标在第 20行 ,且已经复制了 10行数据。则按下 p后 ,那 10行数据会贴在原本的 20行之后 ,亦即由 21
行开始贴。但如果是按下 P呢 ?那么原本的第 20行会被推到变成 30行。 (常用 )
J  将光标所在列与下一列的数据结合成同一列
c  重复删除多个数据 ,例如向下删除 10行 ,[ 10cj ]
u  复原前一个动作。 (常用 )
[Ctrl]+r 重做上一个动作。 (常用 )

这个 u与 [Ctrl]+r是很常用的指令!一个是复原,另一个则是重做一次~利用这两个功能按键,
您的编辑,嘿嘿!很快乐的啦!

.  不要怀疑!这就是小数点!意思是重复前一个动作的意思。 如果您想要重复删除、 重复贴上等等动作,按下小数点 『.』就好了! (常用)
进入编辑模式

i, I插入:在目前的光标所在处插入输入之文字,已存在的文字会向后退;其中, i为『从目前光标所在处插入』, I为『在目前所在行的第一个非空格符处开始插入』。 (常用)

a, Aa为『从目前光标所在的下一个字符处开始插入』, A为『从光标所在行的最后一个字符处开始插入』。(常用)

o, O这是英文字母o的大小写。o为『在目前光标所在的下一行处插入新的一行』 O为在目前光标所在处的上一行插入新的一行!; (常用)

r, R取代:r会取代光标所在的那一个字符;R会一直取代光标所在的文字,直到按下 E SC为止;(常用)
上面这些按键中,在 vi画面的左下角处会出现『–IN SERT–』或『–REPLACE–』的字样。
由名称就知道该动作了吧!!特别注意的是,我们上面也提过了,你想要在档案里面输入字符时, 一定要在左下角处看到 IN SERT/REPLACE才能输入喔!
Esc退出编辑模式,回到一般模式中(常用)

指令列命令模式
:w将编辑的数据写入硬盘档案中(常用)

:w!若档案属性为『只读』时,强制写入该档案。不过,到底能不能写
入,还是跟您对该档案的档案权限有关啊!
:q离开 vi (常用)
:q!若曾修改过档案,又不想储存,使用 !为强制离开不储存档案。

注意一下啊,那个惊叹号(!) 在 vi当中,常常具有『强制』的意思~

:wq储存后离开,若为 :w q!则为强制储存后离开 (常用)
:e!将档案还原到最原始的状态!
ZZ若档案没有更动,则不储存离开,若档案已经经过更动,则储存后

离开!
:w [filename]将编辑的数据储存成另一个档案(类似另存新档)
:r [filename]在编辑的数据中,读入另一个档案的数据。 亦即将 『filename』

这个档案内容加到游标所在行后面
:n1,n2 w [filename] 将 n1到 n2的内容储存成 filename这个档案。
:! command暂时离开 vi到指令列模式下执行 command的显示结果!例如
『:! ls /home』即可在 vi当中察看
/home底下以 ls输出的档案信息!
:set nu显示行号,设定之后,会在每一行的前缀显示该行的行号
:set nonu与 set nu相反,为取消行号!

2011-07-23
##查看系统版本
[root@s1 ~]# cat /etc/redhat-release
CentOS release 5.4 (Final)
##yum 安装svn
[root@s1 ~]# yum install subversion -y
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* addons: mirrors.163.com
* base: mirrors.163.com
* extras: mirrors.163.com
* updates: mirrors.163.com
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package subversion.i386 0:1.6.11-7.el5_6.4 set to be updated
---> Package subversion.x86_64 0:1.6.11-7.el5_6.4 set to be updated
--> Finished Dependency Resolution
Dependencies Resolved
================================================================================
Package           Arch          Version                   Repository      Size
================================================================================
Updating:
subversion        i386          1.6.11-7.el5_6.4          updates        3.1 M
subversion        x86_64        1.6.11-7.el5_6.4          updates        3.2 M
Transaction Summary
================================================================================
Install      0 Package(s)
Update       2 Package(s)
Remove       0 Package(s)
Total download size: 6.4 M
****ing Packages:
(1/2): subversion-1.6.11-7.el5_6.4.i386.rpm              | 3.1 MB     00:00
(2/2): subversion-1.6.11-7.el5_6.4.x86_64.rpm            | 3.2 MB     00:00
--------------------------------------------------------------------------------
Total                                           5.0 MB/s | 6.4 MB     00:01
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
Updating       : subversion                                               1/4
Updating       : subversion                                               2/4
Cleanup        : subversion                                               3/4
Cleanup        : subversion                                               4/4
Updated:
subversion.i386 0:1.6.11-7.el5_6.4    subversion.x86_64 0:1.6.11-7.el5_6.4
Complete!
[root@s1 ~]#
##创建svndata svnpasswd目录
[root@s1 usr]# mkdir -p /usr/data/{svndata,svnpasswd}
[root@s1 usr]# cd data/
[root@s1 data]# ll
总计 16
drwxr-xr-x 2 root root 4096 07-28 01:44 svndata
drwxr-xr-x 2 root root 4096 07-28 01:44 svnpasswd
##启动SVN服务 指定服务的SVN根目录
[root@s1 data]# svnserve -d -r /usr/data/svndata/ --pid-file=/usr/data/svndata/svn.pid
##查看 SVN 进程:
[root@s1 data]# ps -ef |grep svn|grep -v gre
root     31531     1  0 01:46 ?        00:00:00 svnserve -d -r /usr/data/svndata/ --pid-file=/usr/data/svndata/svn.pid
##检测 SVN 端口:
[root@s1 data]# netstat -ln|grep 369
tcp        0      0 :::3690                     :::*                        LISTEN
unix  2      [ ACC ]     STREAM     LISTENING     61369250 /tmp/ssh-YkTvv29389/agent.29389
unix  2      [ ACC ]     STREAM     LISTENING     61369961 /tmp/ssh-lRgQh29450/agent.29450
##建立版本库
##创建一个新的 Subversion 项目 dedev56
[root@s1 data]# svnadmin create /usr/data/svndata/dedev56
##配置允许用户 igaojie 读写访问
[root@s1 conf]# vi svnserve.conf
anon-access = none
auth-access = write
password-db = /usr/data/svnpasswd/passwd
authz-db = /usr/data/svnpasswd/authz
##将权限控制文件cp到svnpasswd目录下
cp authz passwd /usr/data/svnpasswd/
##authz 的配置:
cd /usr/data/svnpasswd/
#vi authz
##添加
#################################
[groups]
#定义组
admin = igaojie
#定义目录
[dedev56:/]
@admin = rw
#################################
##提示:注意 authz 权限格式的写法
##1.authz 中每个参数都要顶格写,开头不能有空格。
##2.对于组,要@开头,用户不需要@开头。
vi passwd
##添加:
#######################
# user=passwd
igaojie=sh09gj11**
######################
##提示:
##1.等号前为 SVN 帐号,等号后为 svn 密码
##2.更改 svnserve.conf 时,需要重起 SVN,更改 authz,passwd 文件时不需要重启
重启 SVN 命令<非必需>
kill -USR1 `cat /usr/data/svndata/svn.pid`
svnserve -d -r /usr/data/svndata/ --pid-file=/usr/data/svndata/svn.pid
##svn服务器端配置结束
####打开svn使用的3690端口
[root@s1 conf]# vim /etc/sysconfig/iptables
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 3690 -j ACCEPT
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
COMMIT
~
~
~
~
~
~
~
~
~
~
~
~
~
~
"/etc/sysconfig/iptables" 29L, 1595C 已写入
[root@s1 conf]#
##重启iptables
[root@s1 conf]# service iptables restart
Flushing firewall rules: [  OK  ]
Setting chains to policy ACCEPT: filter [  OK  ]
Unloading iptables modules: [  OK  ]
Applying iptables firewall rules: [  OK  ]
Loading additional iptables modules: ip_conntrack_netbios_ns [  OK  ]
2011-07-22

工作中和Tdking遇到这么一个问题:

1
2
3
4
5
$arr1 = array('aa','bb','cc','dd');
$json_arr1 = json_encode($arr1);
$json_de_arr1 = json_decode($json_arr1);
var_dump($json_de_arr1);

结果为:

array
  0 => string 'aa' (length=2)
  1 => string 'bb' (length=2)
  2 => string 'cc' (length=2)
  3 => string 'dd' (length=2)

但是 稍微修改一点 再看:

1
2
3
4
5
$arr1 = array('aa'=>'aa','bb','cc','dd');//将字符串作为key
$json_arr1 = json_encode($arr1);
$json_de_arr1 = json_decode($json_arr1);
var_dump($json_de_arr1);

这个时候的结果为:

object(stdClass)[1]
  public 'aa' => string 'aa' (length=2)
  public '0' => string 'bb' (length=2)
  public '1' => string 'cc' (length=2)
  public '2' => string 'dd' (length=2)

翻看了一下手册,唉,就这么简单:

1
2
3
4
5
$arr1 = array('aa'=>'aa','bb','cc','dd');
$json_arr1 = json_encode($arr1);
$json_de_arr1 = json_decode($json_arr1,true);//第二个参数 true 则返回array
var_dump($json_de_arr1);
2011-07-19
/*
获取日期 AddDayCount:天数
*/
function GetDateStr(AddDayCount)
{
var dd = new Date();
dd.setDate(dd.getDate()+AddDayCount);//获取AddDayCount天后的日期
var y = dd.getFullYear();
var m = dd.getMonth()+1;//获取当前月份的日期
var d = dd.getDate();
return y+"-"+m+"-"+d;
}
var yesterday = GetDateStr(-1);//昨天
var today = GetDateStr(0);//今天
alert(yesterday);
alert(today);
2011-07-15
$this->load->library('email');
$from = 'xufeng@techweb.com.cn';//发件人
$to = 'xf1982@gmail.com';//收件人
$subject = 'test send email in codeingiter by smtp';
$body = 'test send email in codeingiter by smtptest send email in codeingiter by smtptest send email in codeingiter by smtptest send email in codeingiter by smtptest send email in codeingiter by smtptest send email in codeingiter by smtptest send email in codeingiter by smtp';
$config['protocol'] = 'smtp';
$config['smtp_host'] = 'ssl://smtp.gmail.com';
$config['smtp_user'] = 'xf1982xf@gmail.com';
$config['smtp_pass'] = '******';
$config['smtp_port'] = '465';
$config['smtp_timeout'] = '5';
$config['newline'] = "\r\n";
$config['crlf'] = "\r\n";
$this->email->initialize($config);
$this->email->set_mailtype('html');
$this->email->from($from, 'title');
$this->email->to($to);
$this->email->subject($subject);
$this->email->message($body);
2011-07-12

1)飞吻 air kiss 2)热吻 french kiss 3)吻脸cheek kiss 4)吻手 hand-kissing 5)XOXO 表示hugs and kisses 6)p****er up 指撅嘴的动作,用来代表亲吻。7)tonsil hockey 舌头搅在一起的接吻。8)lock lips 嘴唇紧压在一起的接吻。9)all over kiss 吻遍你的全身

2011-07-10

ul{
list-style-type:none;
}
ul li{
float:left;
width:15%;
line-height:30px;
border-top-color:#ffffcc;
border-left-color:#ffffcc;
text-decoration:none;
}
ul li:hover{
background:#ffffcc;
}
ul li span{
text-align:left;
width:18%;
}

?
<div style=”overflow:auto; zoom:1;”>
<ul>
<li><a title=”点击进入 [首都机场] 数据报表管理” href=”#”><span>首都机场</span></a></li>
<li><a title=”点击进入 [中国气象局] 数据报表管理” href=”#”><span>中国气象局</span></a></li>
<li><a title=”点击进入 [伊利] 数据报表管理” href=”#”><span>伊利</span></a></li>
<li><a title=”点击进入 [四川新闻网] 数据报表管理” href=”#”><span>四川新闻网</span></a></li>
<li><a title=”点击进入 [民航] 数据报表管理” href=”#”><span>民航</span></a></li>
<li><a title=”点击进入 [国航] 数据报表管理” href=”#”><span>国航</span></a></li>
<li><a title=”点击进入 [HP Corp] 数据报表管理” href=”#”><span>HP Corp</span></a></li>
<li><a title=”点击进入 [惠普] 数据报表管理” href=”#”><span>惠普</span></a></li>
<li><a title=”点击进入 [美团网] 数据报表管理” href=”#”><span>美团网</span></a></li>
<li><a title=”点击进入 [腾讯(科技)] 数据报表管理” href=”#”><span>腾讯(科技)</span></a></li>
<li><a title=”点击进入 [第一影响力演示] 数据报表管理” href=”#”><span>第一影响力演示</span></a></li>
<li><a title=”点击进入 [国家电网] 数据报表管理” href=”#”><span>国家电网</span></a></li>
<li><a title=”点击进入 [新华社Demo] 数据报表管理” href=”/admin/report/lists?user_id=332″><span>新华社Demo</span></a></li>
<li><a title=”点击进入 [瑞星] 数据报表管理” href=”#”><span>瑞星</span></a></li>
</ul>
</div>
高度自适应解决方案:

1.
?
1
<div style=”overflow:auto; zoom:1;”>

2.css
?
1</div>