下载Douglas Crockford 的 json2.js
https://github.com/douglascrockford/JSON-js
下载Douglas Crockford 的 json2.js
https://github.com/douglascrockford/JSON-js
将一下代码copy到 用户目录下 新建文件为 .vimrc
保存即可生效; 如果想所有用户生效 请修改 /etc/vimrc (建议先cp一份)
“=========================================================================
” DesCRiption: 适合自己使用的vimrc文件,for Linux/Windows, GUI/Console
”
” Last Change: 2010年08月02日 15时13分
”
” Version: 1.80
”
“=========================================================================
set nocompatible ” 关闭 vi 兼容模式
syntax on ” 自动语法高亮
colorscheme molokai ” 设定配色方案
set number ” 显示行号
set cursorline ” 突出显示当前行
set ruler ” 打开状态栏标尺
set shiftwidth=4 ” 设定 << 和 >> 命令移动时的宽度为 4
set softtabstop=4 ” 使得按退格键时可以一次删掉 4 个空格
set tabstop=4 ” 设定 tab 长度为 4
set nobackup ” 覆盖文件时不备份
set autochdir ” 自动切换当前目录为当前文件所在的目录
filetype plugin indent on ” 开启插件
set backupcopy=yes ” 设置备份时的行为为覆盖
set ignorecase smartcase ” 搜索时忽略大小写,但在有一个或以上大写字母时仍保持对大小写敏感
set nowrapscan ” 禁止在搜索到文件两端时重新搜索
set incsearch ” 输入搜索内容时就显示搜索结果
set hlsearch ” 搜索时高亮显示被找到的文本
set noerrorbells ” 关闭错误信息响铃
set novisualbell ” 关闭使用可视响铃代替呼叫
set t_vb= ” 置空错误铃声的终端代码
” set showmatch ” 插入括号时,短暂地跳转到匹配的对应括号
” set matchtime=2 ” 短暂跳转到匹配括号的时间
set magic ” 设置魔术
set hidden ” 允许在有未保存的修改时切换缓冲区,此时的修改由 vim 负责保存
set guioptions-=T ” 隐藏工具栏
set guioptions-=m ” 隐藏菜单栏
set smartindent ” 开启新行时使用智能自动缩进
set backspace=indent,eol,start
” 不设定在插入状态无法用退格键和 Delete 键删除回车符
set cmdheight=1 ” 设定命令行的行数为 1
set laststatus=2 ” 显示状态栏 (默认值为 1, 无法显示状态栏)
set statusline=\ %<%F[%1*%M%*%n%R%H]%=\ %y\ %0(%{&fileformat}\ %{&encoding}\ %c:%l/%L%)\
" 设置在状态行显示的信息
set foldenable " 开始折叠
set foldmethod=syntax " 设置语法折叠
set foldcolumn=0 " 设置折叠区域的宽度
setlocal foldlevel=1 " 设置折叠层数为
" set foldclose=all " 设置为自动关闭折叠
" nnoremap
” 用空格键来开关折叠
” return OS type, eg: windows, or linux, mac, et.st..
function! MySys()
if has(“win16″) || has(“win32″) || has(“win64″) || has(“win95″)
return “windows”
elseif has(“unix”)
return “linux”
endif
endfunction
” 用户目录变量$VIMFILES
if MySys() == “windows”
let $VIMFILES = $VIM.’/vimfiles’
elseif MySys() == “linux”
let $VIMFILES = $HOME.’/.vim’
endif
” 设定doc文档目录
let helptags=$VIMFILES.’/doc’
” 设置字体 以及中文支持
if has(“win32″)
set guifont=Inconsolata:h12:cANSI
endif
” 配置多语言环境
if has(“multi_byte”)
” UTF-8 编码
set encoding=utf-8
set termencoding=utf-8
set formatoptions+=mM
set fencs=utf-8,gbk
if v:lang =~? ‘^\(zh\)\|\(ja\)\|\(ko\)’
set ambiwidth=double
endif
if has(“win32″)
source $VIMRUNTIME/delmenu.vim
source $VIMRUNTIME/menu.vim
language messages zh_CN.utf-8
endif
else
echoerr “Sorry, this version of (g)vim was not compiled with +multi_byte”
endif
” Buffers操作快捷方式!
nnoremap
nnoremap
” Tab操作快捷方式!
nnoremap
nnoremap
“关于tab的快捷键
” map tn :tabnext
” map tp :tabprevious
” map td :tabnew .
” map te :tabedit
” map tc :tabclose
“窗口分割时,进行切换的按键热键需要连接两次,比如从下方窗口移动
“光标到上方窗口,需要
“时候会变得非常方便.
nnoremap
nnoremap
nnoremap
nnoremap
“一些不错的映射转换语法(如果在一个文件中混合了不同语言时有用)
nnoremap
nnoremap
nnoremap
nnoremap
” set fileformats=unix,dos,mac
” nmap
” nmap
” use Ctrl+[l|n|p|cc] to list|next|previous|jump to count the result
” map
” map
” map
” map
” 让 Tohtml 产生有 CSS 语法的 html
” syntax/2html.vim,可以用:runtime! syntax/2html.vim
let html_use_css=1
” Python 文件的一般设置,比如不要 tab 等
autocmd FileType python set tabstop=4 shiftwidth=4 expandtab
autocmd FileType python map
” 选中状态下 Ctrl+c 复制
vmap
” 打开javascript折叠
let b:javascript_fold=1
” 打开javascript对dom、html和css的支持
let javascript_enable_domhtmlcss=1
” 设置字典 ~/.vim/dict/文件的路径
autocmd filetype javascript set dictionary=$VIMFILES/dict/javascript.dict
autocmd filetype css set dictionary=$VIMFILES/dict/css.dict
autocmd filetype php set dictionary=$VIMFILES/dict/php.dict
“—————————————————————–
” plugin – bufexplorer.vim Buffers切换
” \be 全屏方式查看全部打开的文件列表
” \bv 左右方式查看 \bs 上下方式查看
“—————————————————————–
“—————————————————————–
” plugin – taglist.vim 查看函数列表,需要ctags程序
” F4 打开隐藏taglist窗口
“—————————————————————–
if MySys() == “windows” ” 设定windows系统中ctags程序的位置
let Tlist_Ctags_Cmd = ‘”‘.$VIMRUNTIME.’/ctags.exe”‘
elseif MySys() == “linux” ” 设定windows系统中ctags程序的位置
let Tlist_Ctags_Cmd = ‘/usr/bin/ctags’
endif
nnoremap
let Tlist_Show_One_File = 1 ” 不同时显示多个文件的tag,只显示当前文件的
let Tlist_Exit_OnlyWindow = 1 ” 如果taglist窗口是最后一个窗口,则退出vim
let Tlist_Use_Right_Window = 1 ” 在右侧窗口中显示taglist窗口
let Tlist_File_Fold_Auto_Close=1 ” 自动折叠当前非编辑文件的方法列表
let Tlist_Auto_Open = 0
let Tlist_Auto_Update = 1
let Tlist_Hightlight_Tag_On_BufEnter = 1
let Tlist_Enable_Fold_Column = 0
let Tlist_Process_File_Always = 1
let Tlist_Display_Prototype = 0
let Tlist_Compact_Format = 1
“—————————————————————–
” plugin – mark.vim 给各种tags标记不同的颜色,便于观看调式的插件。
” \m mark or unmark the word under (or before) the cursor
” \r manually input a regular expression. 用于搜索.
” \n clear this mark (i.e. the mark under the cursor), or clear all highlighted marks .
” \* 当前MarkWord的下一个 \# 当前MarkWord的上一个
” \/ 所有MarkWords的下一个 \? 所有MarkWords的上一个
“—————————————————————–
“—————————————————————–
” plugin – NERD_tree.vim 以树状方式浏览系统中的文件和目录
” :ERDtree 打开NERD_tree :NERDtreeClose 关闭NERD_tree
” o 打开关闭文件或者目录 t 在标签页中打开
” T 在后台标签页中打开 ! 执行此文件
” p 到上层目录 P 到根目录
” K 到第一个节点 J 到最后一个节点
” u 打开上层目录 m 显示文件系统菜单(添加、删除、移动操作)
” r 递归刷新当前目录 R 递归刷新当前根目录
“—————————————————————–
” F3 NERDTree 切换
map
imap
“—————————————————————–
” plugin – NERD_commenter.vim 注释代码用的,
” [count],cc 光标以下count行逐行添加注释(7,cc)
” [count],cu 光标以下count行逐行取消注释(7,cu)
” [count],cm 光标以下count行尝试添加块注释(7,cm)
” ,cA 在行尾插入 /* */,并且进入插入模式。 这个命令方便写注释。
” 注:count参数可选,无则默认为选中行或当前行
“—————————————————————–
let NERDSpaceDelims=1 ” 让注释符与语句之间留一个空格
let NERDCompactSexyComs=1 ” 多行注释时样子更好看
“—————————————————————–
” plugin – DoxygenToolkit.vim 由注释生成文档,并且能够快速生成函数标准注释
“—————————————————————–
let g:DoxygenToolkit_authorName=”Asins – asinsimple AT gmail DOT com”
let g:DoxygenToolkit_briefTag_funcName=”yes”
map
oxAuthor
map
ox
map
oxBlock
map
“—————————————————————–
” plugin – ZenCoding.vim 很酷的插件,HTML代码生成
” 插件最新版:http://github.com/mattn/zencoding-vim
” 常用命令可看:http://nootn.com/blog/Tool/23/
“—————————————————————–
“—————————————————————–
” plugin – checksyntax.vim JavaScript常见语法错误检查
” 默认快捷方式为 F5
“—————————————————————–
let g:checksyntax_auto = 0 ” 不自动检查
“—————————————————————–
” plugin – NeoComplCache.vim 自动补全插件
“—————————————————————–
let g:AutoComplPop_NotEnableAtStartup = 1
let g:NeoComplCache_EnableAtStartup = 1
let g:NeoComplCache_SmartCase = 1
let g:NeoComplCache_TagsAutoUpdate = 1
let g:NeoComplCache_EnableInfo = 1
let g:NeoComplCache_EnableCamelCaseCompletion = 1
let g:NeoComplCache_MinSyntaxLength = 3
let g:NeoComplCache_EnableSkipCompletion = 1
let g:NeoComplCache_SkipInputTime = ’0.5′
let g:NeoComplCache_SnippetsDir = $VIMFILES.’/snippets’
”
inoremap
” snippets expand key
imap
smap
“—————————————————————–
” plugin – matchit.vim 对%命令进行扩展使得能在嵌套标签和语句之间跳转
” % 正向匹配 g% 反向匹配
” [% 定位块首 ]% 定位块尾
“—————————————————————–
“—————————————————————–
” plugin – vcscommand.vim 对%命令进行扩展使得能在嵌套标签和语句之间跳转
” SVN/git管理工具
“—————————————————————–
“—————————————————————–
” plugin – a.vim
“—————————————————————–
结合使用cat , tail head sed 命令
【一】从第3000行开始,显示1000行。即显示3000~3999行
cat filename | tail -n +3000 | head -n 1000
【二】显示1000行到3000行
cat filename| head -n 3000 | tail -n +1000
*注意两种方法的顺序
分解:
tail -n 1000:显示最后1000行
tail -n +1000:从1000行开始显示,显示1000行以后的
head -n 1000:显示前面1000行
【三】用sed命令
sed -n ’5,10p’ filename 这样你就可以只查看文件的第5行到第10行。
MySQL的中文编码问题最简单的解决方案是:修改mysql的配置文件/etc/mysql/my.cnf (在CentOS下是/etc/my.cnf),在[mysqld] 和 [client]段都加入如下指令:
default-character-set=utf8
如果没有[client]段,就手工加入[client]段。然后重新启动MySQL即可。
进入MYSQL验证一下 show variables like “%char%”;
刚使用in_array发现一个问题
$search = 0;
$allow = array(‘aa’,'bb’);
in_array($search, $allow);
返回true
in_array() , array_search() 都出现类似问题
php比较数字和字符串时,会尝试将字符串转换为数字再进行比较。平时单独对比大家会注意这个问题, 当数组的时候可能会忽略
‘aa’ ‘bb’ 被当作0与$search比较 所以返回true了
解决办法in_array($search,$allow,true) array_search($search,$allow,true)
参考 http://www.php.net/manual/en/language.operators.comparison.php
style="word-wrap:break-word"
解决~
原因是:
英书契母之间如果没有空格,系统以为是一个单词,就不会BUTO换行。汉字就没有这种情况。
php 输出下载 csv 文件 wps打开没有问题
office excel打开乱码
因为excel无法处理utf-8格式
解决办法 将有汉字的部分全部转换为gb2312
iconv(“UTF-8″,’GB2312′,’xxxxx’);
解决!~
核心提示:可能很多PHPer都用到了PHP提供的Session功能,可以方便的进行会话功能处理,PHP服务端默认的session存储是文件存放方式,在Windows上PHP默认的Session服务端文件存放在C:\WINDOWS\Temp下,*NIX下默认存放在/tmp下…
可能很多PHPer都用到了PHP提供的Session功能,可以方便的进行会话功能处理,PHP服务端默认的session存储是文件存放方式,在Windows上PHP默认的Session服务端文件存放在C:\WINDOWS\Temp下,*NIX下默认存放在/tmp下,如果说并发访问很大或者session建立太多,在这两个目录下就会存在大量类似sess_xxxxxx的session文件,同一个目录下文件数过多会导致性能下降,并且可能导致受到攻击最终出现文件系统错误。针对这样的情况,PHP本身体提供了比较好的解决办法。
不少朋友可能都没有注意到php.ini里面Session设置部分中有这样一项:
; session.save_path = “N; MODE; /path”
这项设置提供给我们可以给session存放目录进行多级散列,其中“N”表示要设置的目录级数,“MODE”表示目录的权限属性,默认为600,在WINDOWS上基本是不用设置的,*NIX上也可以不用设置,后面的“/path”表示session文件存放的根目录路径,比如我们设置为下面的格式
session.save_path = “2; /tmp/phpsession”
上面的设置表示我们把/tmp/phpsession目录作为php的session文件存放根目录,在该目录下进行两级目录散列,每一级目录分别是0-9和a-z共36个字母数字为目录名,这样存放session的目录可以达到36*36个,相信作为单台服务器来说,这是完全够用了,如果说您的系统架构设计为多台服务器共享session数据,可以把目录级增加到3级或者更多。
需要注意的是,php自己并不会自动创建子目录,需要您自己动手去创建,网上找到这样的自动创建目录的代码,大家可以做个参考。下面的代码自动创建3级子目录,可以自己动手根据需要进行修改。
set_time_limit(0); set_time_limit(0); $string = '0123456789abcdefghijklmnopqrstuvwxyz'; $length = strlen($string); function makeDir($param) { if(!file_exists($param)) { makeDir(dirname($param)); mkdir($param); } } for($i = 0; $i < $length; $i++) { for($j = 0; $j < $length; $j++) { for($k = 0; $k < $length; $k++) { makeDir($string[$i].'/'.$string[$j].'/'.$string[$k]); } } } ?>
ps:建立目录后保证目录php可操作权限 在/tmp/phpsession下执行
chmod 777 -R *
chown nobody:nobody -R *
大家可能注意到前面的文字中提到了有关多服务器共享php的SESSION,这是很多应用都会遇到的问题,网上也有不少相关的资源,大家可以去google一下,Michael这里只提一下大概的思路。
一般来说我们用到最多的方法有两种:
1、NFS或者Samba共享的方法,让各个服务器上存放session文件的磁盘共享,这种方法简单可行。
2、集中存储到数据库中,这是比较多的实现方法,通过php提供的session_set_save_handler()函数来重定义session函数,推荐使用这种方法。
欢迎大家一起交流和讨论php中和session相关的技巧和经验。
引用自:http://www.chinaz.com/program/2009/0226/68008.shtml
今天把自己框架整理了一下,更换使用pdo连接数据库。
linux下使用pdo报错 找不到服务器(Connection failed: could not find driver)
是由于开启php pdo后还要开启 php_pdo_mysql
用phpize来加载pdo_mysql
wget http://pecl.php.net/get/PDO_MYSQL-1.0.2.tgz
tar xzvf PDO_MYSQL-1.0.2.tgz
cd PDO_MYSQL-1.0.2
/usr/local/php/bin/phpize
./configure –with-php-config=/usr/local/php/bin/php-config
make && make install
有可能报错
/usr/lib64/mysql/libmysqlclient.so: No such file or directory
解决
ln -s /usr/lib/libmysqlclient.so /usr/lib/mysql/libmysqlclient.so
重新编译安装 make && make install
注意pdo_mysql的全路径,我的是:
/usr/local/php/lib/php/extensions/debug-non-zts-20060613/pdo_mysql.so
编辑php.ini
最后一行加一句:
extension=/usr/local/php/lib/php/extensions/debug-non-zts-20060613/pdo_mysql.so
重起服务器
可能会报错找不到pdo_mysql.so,首先ll /usr/local/php/lib/php/extensions/debug-non-zts-20060613/pdo_mysql.so 看看文件是否存在,如果存在则上一extension目录设置错误,编辑php.ini 修改extension_dir为 extension_dir = “/”
重起服务器,随便建个php页,phpinfo() ,执行一下看看pdo支持是否添加上
http://www.lupaworld.com/article-210140-1.html