치환할 패턴에서 &를 이용하면 검색패턴 전체를 선택할 수 있다.
예를 들면

<test>
    asdf
</test>

위에서 asdf아래 라인에 aaaa를 추가하고 싶을 경우에
%s/asdf\n/&aaaa/g 
이렇게 할 수 있고

aaaa다음에 한 줄을 띄우고 싶을 때 \n으로 하면 실제 한 줄이 띄어지진 않고 개행 문자가 표시 되는데 \r로 해주면 된다.
 %s/asdf\n/&aaaa\r/g
이렇게~ 
 64bit에서는 php로 아무 설정없이 2G이상의 파일을 컨트롤(fopen, fwrite등) 할 수 있지만 32bit에서는 기본적으로 불가능하다. 이것이 가능하게 하려면 php컴파일 시에 CFLAGS에 -D_FILE_OFFSET_BITS=64를 주고 컴파일을 해야한다.
CFLAGS="-D_FILE_OFFSET_BITS=64" ./configure --with-each-optoins 
 위와같은 방버으로 말이다.
  하지만 php에만 이 옵션을 주고 fopen을 테스트 해보니 안된다.; 이리저리 하다가 아파치에도 같은 옵션을 주고 컴파일을 해보니 성공;; 머 뻘짓을 좀 하긴 했지만 어쨋든 결론은 아파치에도 같은 옵션을줘야 한다는거! 잊지말자;
 그리고! 무엇보다 이런 옵션 보다는 그냥 64bit를 사용하자ㅋ 어차피 이 옵션을 줘도 filesize()같은 펑션은 사용불가 인 듯! 

==========================================================

꼼수로 구현해 놓은 소스가 있었음; 

 
function fsize($file) {
  // filesize will only return the lower 32 bits of
  // the file's size! Make it unsigned.
  $fmod = filesize($file);
  if ($fmod < 0) $fmod += 2.0 * (PHP_INT_MAX + 1);

  // find the upper 32 bits
  $i = 0;

  $myfile = fopen($file, "r");

  // feof has undefined behaviour for big files.
  // after we hit the eof with fseek,
  // fread may not be able to detect the eof,
  // but it also can't read bytes, so use it as an
  // indicator.
  while (strlen(fread($myfile, 1)) === 1) {
    fseek($myfile, PHP_INT_MAX, SEEK_CUR);
    $i++;
  }

  fclose($myfile);

  // $i is a multiplier for PHP_INT_MAX byte blocks.
  // return to the last multiple of 4, as filesize has modulo of 4 GB (lower 32 bits)
  if ($i % 2 == 1) $i--;
  
  // add the lower 32 bit to our PHP_INT_MAX multiplier
  return ((float)($i) * (PHP_INT_MAX + 1)) + $fmod;
}

PHP Memcached 연동(펌)

2011/11/08 11:03

Memcached 사용하기

(편의상 존칭은 생략했습니다. ^^)
Memcached 데몬
사이트 : http://www.danga.com/memcached/
다운로드 : http://memcached.googlecode.com/files/memcached-1.2.8.tar.gz

Memcached PHP Extension
사이트 : http://pecl.php.net/package/memcache
다운로드 : http://pecl.php.net/get/memcache-2.2.5.tgz

LibEvent 
사이트 : http://monkey.org/~provos/libevent/
다운로드 : http://monkey.org/~provos/libevent-1.4.11-stable.tar.gz

Memcached 는 데이터를 메모리에 저장하여 이용할 수 있는 데몬이다. 분산처리가 가능하고 매우 빠른 성능을 지닌 캐시 이다. 
(편의상 root로 작업)

1. Memcached 설치

우선 Memcached 를 적당한 디렉토리 (/usr/local/src) 등에 다운로드를 받는다. 
# tar zxvf memcached-1.2.8.tar.gz
# cd memcached-1.2.8
# configure --prefix=/usr/local/memcached
* checking for libevent directory... configure: error: libevent is required 메세지가 나오면 libevent 라이블러리를 설치를 해줘야 한다.
 
make 
make install

1-1 memcached 실행
cd /usr/local/memcached (configure 에서 지정한 prefix로 이동)
bin/memcached -u [실행될 사용자] & 
* 실행될 사용자는 memcached 데몬이 -u 옵션으로 지정된 사용자로 실행이 된다 (root로 지정하면 안됨)
netstat -na | grep 11211
->
tcp        0      0 0.0.0.0:11211               0.0.0.0:*                   LISTEN      
tcp        0      0 :::11211                          :::*                            LISTEN

포트를 확인한다.

2. Memcache PHP Extension 
tar zxvf memcache-2.2.5.tgz
cd memcache-2.2.5
phpize
./configure 
make
cp .libs/memcache.so /(php 익스텐션 디렉토리) php.ini에서 지정한 extension_dir 에서 설정한 디렉토리 
php -m | grep memcache 로 모듈 확인
# /etc/init.d/httpd restart 또는 /usr/local/apache/bin/apachectl restart 로 Apache 재시작 

PHP info 확인

사용자 삽입 이미지

3. Libevent 설치 (옵션)
* Memcache Configure 중 libevent 가 필요하다는 메세지를 보내고 중단이 되었을때 설치를 한다.

libevent 를 다운로드 받는다. 
tar zxvf libevent-1.4.11-stable.tar.gz
cd libevent-1.4.11-stable
./configure 
make
make install (/usr/local/lib 에 libevent.so 파일이 존재하는지 확인한다.)
ldconfig (vi /etc/ld.so.conf 에 /usr/local/lib 추가를 한다.

[출처] http://www.lovelgw.com/Blog/94 

4. 추가옵션 - phpize실행 시 autoconf없다는 에러 나는 경우
# cd /usr/local/src (적당한 곳으로 이동)
m4설치
# wget http://ftp.gnu.org/gnu/m4/m4-1.4.9.tar.gz
# tar zxvf m4-1.4.9.tar.gz
# cd m4-1.4.9/
# ./configure && make && make install
# cd ../
autoconf 설치 
# wget http://ftp.gnu.org/gnu/autoconf/autoconf-2.62.tar.gz
# tar zxvf autoconf-2.62.tar.gz
# cd autoconf-2.62/
# ./configure && make && make install

 

그동안 vi를 써오면서 익힌 단축키를 정리한다.

첫번째로 기본적으로 알고 시작해야 하는 이동/입력/삭제/복사등에 관련된 키들이다.

<이동>
j - 커서를 아래로 이동 
k - 커서를 위로 이동
h - 커서를 왼쪽으로 이동
l - 커서를 오른쪽으로 이동

Ctrl+f - 커서를 한페이지 아래로 이동 
Ctrl+b - 커서를 한페이지 위로 이동

Ctrl+d - 커서를 반페이지 아래로 이동
Ctrl+u - 커서를 반페이지 위로 이동

Ctrl+e - 커서고정 상태로 화면을 한줄 씩 아래로 이동 
Ctrl+y - 커서고정 상태로 화면을 한줄 씩 위로 이동

Shift+l - 커서를 현재 화면의 맨 아래줄로 이동
Shift+h - 커서를 현재 화면의 맨 윗줄로 이동 

g+g - 커서를 첫출로 이동
Shift+g - 커서를 마지막 줄로 이동 

^(Shift+6) - 현재 커서가 있는 줄 맨 앞으로 이동
$(Shift+4) - 현재 커서가 있는 줄 맨 뒤로 이동

w - 한 단어씩 앞으로 이동
Shift+w - 한 공백씩 앞으로 이동

b - 한 단어씩 뒤로 이동
Shift+b - 한 공백씩 뒤로 이동

<입력>
i - 현재 커서의 위치부터 입력 시작
Shift+i - 현재 커서가 있는 줄 맨 앞으로 이동 후 입력 시작

a - 현재 커서다음부터 입력 시작
Shift+a - 현재 커서가 있는 줄 맨 뒤로 이동 후 입력 시작

s - 현재 커서가 있는 문자를 지우고 입력 시작
Shift+s - 현재 커서가 있는 줄 전체를 지우고 입력 시작

o - 현재 커서가 있는 줄 아래줄부터 입력 시작
Shift+o - 현재 커서가 있는 줄 윗줄부터 입력 시작 

※ 삭제/복사/블럭모드 시작 후 종료는 esc
<삭제>

d - 현재 커서가 있는 위치부터 삭제모드 시작 (j, k, h, l, Shift+g, g+g, w, b,^,$, 숫자키 등과 키 조합을 하여 사용)
d+d - 현재 커서가 있는 줄 삭제

<복사>
y - 현재 커서가 있는 위치부터 복사모드 시작 (j, k, h, l, Shift+g, g+g, w, b,^,$, 숫자키 등과 키 조합을 하여 사용)
y+y - 현재 커서가 있는 줄 복사 

<붙여넣기>
p - 현재 커서가 있는 위치 다음에 붙여넣기(복사된 데이터에 라인피드가 있을경우 아랫줄에 붙여짐)
Shift+p - 현재 커서가 있는 위치 이전에 붙여넣기(복사된 데이터에 라인피드가 있을경우 윗줄에 붙여짐)

<블럭> - 블럭을 씌운 후 y를 누르면 복사가 됨.
v - 현재 커서가 있는 위치부터 블럭모드 시작 (이동키로 블럭을 씌운다.)
Shift+v - 현재 커서가 있는 줄전체 블럭을 씌운 후 블럭모드 시작 (이동키로 블럭을 씌운다.)


 
TAG vim, 단축키
select절로 특정테이블의 sequence정보를 알아볼 수 있다.  
SELECT pg_get_serial_sequence('table_name', 'column_name')
이렇게하면 해당 테이블의 컬럼의 sequence이름을 알 수 있다.
여기서 알게 된 sequence를 이용하여 다음 쿼리를 날려보면
SELECT * FROM sequence_name
해당 sequence의 정보를 볼 수 있다.

 sequence_name
name
last_value
bigint
start_value
bigint
increment_by
bigint
max_value
bigint
min_value
bigint
cache_value
bigint
log_cnt
bigint
is_cycled
boolean
is_called
boolean
sequence_name  10 1 1 92233123~~ 1 1 31 f t