My VIMRC

Posted on May 10, 2010

set nocompatible
source $VIMRUNTIME/vimrc_example.vim
source $VIMRUNTIME/mswin.vim
behave mswin

set tabstop=4
set bs=2
insert mode
set smartindent

set mousehide
set mousefocus
set mouse=a
set mousem=popup

set autowrite
set ruler
set nohlsearch
set nocompatible

set suffixes=.bak,~,.o,.h,.info,.swp,.aux,.bbl,.blg,.dvi,.lof,.log,.lot,.ps,.toc

set diffexpr=MyDiff()
function MyDiff()
let opt = ‘-a –binary ‘
if &diffopt =~ ‘icase’ | let opt = opt . ‘-i ‘ | endif
if &diffopt =~ ‘iwhite’ | let opt = opt . ‘-b ‘ | endif
let arg1 = v:fname_in
if arg1 =~ ‘ ‘ | let arg1 = ‘”‘ . arg1 . ‘”‘ | endif
let arg2 = v:fname_new
if arg2 =~ ‘ ‘ | let arg2 = ‘”‘ . arg2 . ‘”‘ | endif
let arg3 = v:fname_out
if arg3 =~ ‘ ‘ | let arg3 = ‘”‘ . arg3 . ‘”‘ | endif
let eq = ”
if $VIMRUNTIME =~ ‘ ‘
if &sh =~ ‘\ let cmd = '""' . $VIMRUNTIME . '\diff"'
let eq = '"'
else
let cmd = substitute($VIMRUNTIME, ' ', '" ', '') . '\diff"'
endif
else
let cmd = $VIMRUNTIME . '\diff'
endif
silent execute '!' . cmd . ' ' . opt . arg1 . ' ' . arg2 . ' > ‘ . arg3 . eq
endfunction

MySQL Tree Traversal

Posted on May 03, 2010

Managing Hierarchical Data in MySQL

PHP Tree Traversal

Posted on May 03, 2010

Storing Hierarchical Data in a Database

1105_numbering

Phing DbDeploy

Posted on May 02, 2010

Detail of phing, please check here

Note: in the sql file set “–{space}//”. Otherwise the target won’t run successfully

Example build.xml (see below)
<?xml version=”1.0″ ?>
<project name=”Phing” basedir=”.” default=”init”>

<!– Sets the DSTAMP, TSTAMP and TODAY properties –>
<tstamp/>

<!– Load our configuration –>
<property file=”./build.properties” />

<target name=”init” description=”Init Function”>
<echo msg=”do nothing” />
</target>

<target name=”build” description=”Default Function”>

<property name=”build.dbinit.initfile” value=”${build.dir}/db/init/000_init_db.sql” />
<exec command=”${progs.mysql} -h ${db.host} -u ${db.user} –password=${db.pass} &lt; ${build.dbinit.initfile}”
dir=”"
checkreturn=”true” />

</target>

<!– create our migration task –>
<target name=”migrate” description=”Database Migrations”>

<!– load the dbdeploy task –>
<taskdef name=”dbdeploy” classname=”phing.tasks.ext.dbdeploy.DbDeployTask”/>

<!– these two filenames will contain the generated SQL to do the deploy and roll it back–>
<property name=”build.dbdeploy.deployfile” value=”deploy/scripts/deploy-${DSTAMP}${TSTAMP}.sql” />
<property name=”build.dbdeploy.undofile” value=”deploy/scripts/undo-${DSTAMP}${TSTAMP}.sql” />

<!– generate the deployment scripts –>
<dbdeploy
url=”mysql:host=${db.host};dbname=${db.name}”
userid=”${db.user}”
password=”${db.pass}”
dir=”${build.dir}/db/deltas”
outputfile=”${build.dir}/${build.dbdeploy.deployfile}”
undooutputfile=”${build.dir}/${build.dbdeploy.undofile}” />

<!– execute the SQL – Use mysql command line to avoid trouble with large files or many statements and PDO –>
<exec
command=”${progs.mysql} -h${db.host} -u${db.user} –password=${db.pass} ${db.name} &lt; ${build.dir}/${build.dbdeploy.deployfile}”
dir=”"
checkreturn=”true” />
</target>
</project>