1. 설치
# sudo apt-get install subversion

2. 디렉토리 생서
# mkdir /home/svn

3. 저장소(Repository) 생성
  - 일반 파일 시스템으로 생성
   # svnadmin create --fs-type fsfs /home/svn/project

4. svnserve.conf 수정
   /home/svn/project/conf 밑에 있으며 다음 내용의 주석을 제거하면 된다.
[general]
........
aron-access = none
auth-access = write
........
pasword-db = passwd
........
reaim = pyrasis's Repository

5. passwd 파일에 유저계정정보 등록
   /home/svn/conf/ 밑에 있으면 다음과 같이 추가해주면 된다.
userId = 1234

6. svn 실행
# svnserve -d - r /home/svn

7. 확인
# netstat -na | grep 3690

8. trunk, branches, tags 디렉토리 생성
# svn mkdir svn://localhost/project/trunk
# svn mkdir svn://localhost/project/branches
# svn mkdir svn://localhost/project/tags

* 참고 사이트
http://www.pyrasis.com/main/Subversion-HOWTO

신고


이클립스에서 Help > Install New Software 선택

Add 선택

Name : svn
Location : http://community.polarion.com/projects/subversive/download/eclipse/2.0/galileo-site/
신고


eclipse.ini 파일 수정

-startup
plugins/org.eclipse.equinox.launcher_1.0.200.v20090520.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.0.200.v20090519
--vm
D:\devroot\Java\jre6\bin\javaw.exe
-product
org.eclipse.epp.package.jee.product
--launcher.XXMaxPermSize
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
256m
-vmargs
-Dosgi.requiredJavaVersion=1.5
-Xms40m
-Xmx512m
신고

cvs 설정

프로그램/Etc 2008.09.22 13:50


==== cvs(Concurrent Versions System)

- 여러 사람이 공동으로 프로젝트를 수행할 때 발생되는 소스 덮어쓰기 소스 동기화 문제를 해결하기 위한 시스템

- 개발자는 자신의 디렉토리에서 혼자서 작업하듯이 프로젝트 진행이 가능

- 중간 중간 cvs 서버에 있는 최신 프로젝트 파일과 자신의 작업 디렉토리의 파일을 동기화 시킬 필요가 있다.

- cvs 는 파일이 변경될 때 마다 파일의 버전을 증가시켜가며 프로젝트를 관리


=== cvs 설치 확인

# cvs  -v

다운로드 위치 : www.cvshome.org


=== 저장소(Repository) 생성 및 초기화

저장소 -  해당 디렉토리에 프로젝트에서 사용할 모든 파일이 위치
              개발자들은 저장소에 등록된 프로젝트 파일을 다운 받아서 사용


# mkdir /home/cvs            // 저장소로 사용할 일반 디렉토리 생성
# cvs  -d  /home/cvs  init        //저장소 초기화(cvs 에서 사용하는 제어파일이 들어 있는 CVSROOT 디렉토리를 생성)


=== cvs 사용자 등록 및 접근권한 설정

# useradd cvs
# chown  -R  root.cvs  /home/cvs 
# chmod  -R  770  /home/cvs
# passwd cvs           // cvs 유저에 대한 패스워드 설정


==== cvs 서버에 접속할 개발자 등록

cvs 접속할 사용자는 cvs 서버에서만 인식하는 사용자로 ssh 등으로 시스템에 로그인은 불가능하다.

# htpasswd  -nb  test1  1234         // 개발자 id : test1, 패스워드 : 1234
test1:암호화된 패스워드              //   암호화된 패스워드를 복사

# htpasswd  -nb  test2  5678         // 개발자 id : test1, 패스워드 : 1234
test1:암호화된 패스워드              //   암호화된 패스워드를 복사

# vim  /home/cvs/CVSROOT/passwd       //개발자id 와 암호화된 패스워드를 아래 형식에 맞추어 기록

test1:암호화된 패스워드:cvs
test2:암호화된 패스워드:cvs


====  cvs 서버 실행

# vim  /etc/xinetd.d/cvs        //아래 항목 수정

  disable = no
  server_agrs  = -f  --allow-root=/home/cvs  pserver


# service xinetd restart
# netstat  -na  | grep  2401    //cvs 포트 2401 확인


===== cvs 에 로그인

# cvs  -d  :pserver:개발자id@ip주소:2401/home/cvs  login       // cvs 서버에 로그인

=====  cvs 에 프로젝트 파일 등록

# cd /linuxc
# cvs import -m "메신저 프로젝트" linuxc  project  start
# ls /home/cvs/linuxc        // 저장소 디렉토리에 linuxc 디렉토리 생성 및 각 파일들이 [파일명].v 형태로 등록여부 확인
             // 저장소에 등록된 파일은 직접 수정하지 말것

====== cvs 에서 프로젝트 파일 다운로드(checkout)

# cvs  -d  :pserver:개발자id@ip주소:2401/home/cvs  login       // cvs 서버에 로그인
# cvs checkout  linuxc    // 모듈 다운로드(모듈 : 저장소 디렉토리에 생성되는 디렉토리를 의미)

======= 수정한 파일 저장소에 업로드

# cvs  -d  :pserver:개발자id@ip주소:2401/home/cvs  login      
# cvs commit  -m  "hello.c 파일 주석추가"  hello.c        //commit 명령을 내릴때 마다 버전 정보는 증가
                // cvs 서버 접속후 업데이트 여부 확인
 
======== 여러개의 수정한 파일을 저장소에 업로드 하는 경우

수정한 파일이 있는 디렉토리에서 cvs commit 명령 수행

# cd /linuxc
# cvs commit


======== 현재 작업 디렉토리에 최신 소스 반영

# cvs  update       

현재 작업디렉토리의 소스파일 버전이 저장소 디렉토리에 있는 버전보다 낮은 경우
commit 명령이 수행되지 않으므로 수시로 updae 명령을 수행한다.


======== 디렉토리와 파일을 추가

일반 텍스트 파일이 아닌 바이너리파일(이미지파일 등) 추가시에는 -kb 옵션을 함께 사용(주의)

# cvs  add  [디렉토리명 또는 파일명]
# cvs commit

======== 파일 제거

# rm  [삭제할파일명]
# cvs remove  [삭제할파일명]
# cvs ci

===== 삭제된 파일 복구(삭제 이전버전으로 복구)

# cvs  status [삭제한파일명]    //삭제된 파일의 버전확인
# cvs  up  -j  [삭제된파일버전] -j  [삭제된파일이전버전]  [삭제된파일명]
예] cvs  up  -j 1.3  -j 1.2  [삭제된파일명]

# cvs  add  [삭제된파일명]    // 완전히 복구하기 위해 파일을 cvs 에 추가


==== 디렉토리 제거

저장소에서 직접 rm 명령으로 제거


== 파일을 이전 버전으로 복구

# cvs  status  파일명   //현재 버전 확인
# cvs  up  -r  [이전버전]  -p  파일명  >  파일명


=== 이전버전으로 복구된 파일 수정후 업로드가 안되는 경우

#  cvs up -A  복구파일명  //해당 파일의 sticky tag 제거
#  cvs  commit


=== 특정 부분을 수정한 사람 확인

# cvs  log  파일명


===  파일 버전 차이점 확인

형식 : cvs  diff  -r  이전버전  -r  최신버전  파일명

# cvs  diff  -r  1.2  -r  1.3  hello.c


==== 전체 파일을 특정 시점으로 되돌리고자 하는 경우

#  cvs  tag  TAG_1        // 현재 파일들의 버전에 태그 설정(현재 시점의 파일 버전 마킹)

#  cvs  up  -r  TAG_1    // TAG_1 시점으로 복구


==== cvs 설정 변경

# cd /ect/xinetd.d/cvs 안에 설정내용 변경 후 재시작

신고


http://www.perlmania.or.kr:9000/trac/wiki/SQLite 참고~~

들어가며

SQLite 데이터베이스를 짧은 시간안에 사용할 수 있도록 돕는게 이 문서의 목표입니다.

특징

여기서는 딱 3개만 짚어 보겠습니다. SQLite 홈페이지의 문서를 보면 다른 특징들도 나와 있습니다. 좀 더 관심있는 분들은 그곳을 함 들러보세요~

1. Serverless

대부분의 데이터베이스 서버는 클라이언트/서버 구조를 취하고 있습니다. 허나 SQLite는 그렇지 않습니다.

2. Single Database File

하나의 데이터베이스가 물리적으로 여러 디렉토리와 파일로 구성되는게 일반적입니다. SQLite는 하나의 데이터베이스마다 오직 하나의 물리적 파일만을 사용합니다.

3. Manifest Typing

대부분의 데이터베이스는 컬럼에 자료형을 지정하고, 값을 저장할 때는 그 형(type)의 값들만이 들어갈 수 있습니다. 즉, 컬럼에 형이 있고 값 그 자체에는 형이 없는 격이죠. SQLite는 그 반대입니다. 컬럼에는 형이 없고 값 자체에 형이 있습니다.

설치하기

다운로드를 위해서 먼저 SQLite 홈페이지로 이동합니다. 그 다음, 다운로드 페이지로 가면 운영 체제별로 분류가 되어 있습니다.

여기서는 크게 두 가지로 살펴 보도록 하겠습니다: 이진 라이브러리 설치(윈도우즈)와 소스 설치. 많은 유닉스 계열의 운영 체제와는 다르게, 마이크로소프트의 윈도우즈 운영 체제는 C 컴파일러를 갖춘 경우가 매우 드뭅니다. 대부분의 윈도우즈 사용자들은 C 컴파일러가 없기 때문에, 미리 컴파일을 한 후에 바로 실행 가능한 형태로 배포하는게 일반적인 설치 형태입니다. 반면, 유닉스 계열의 운영 체제들은 대부분 C 컴파일러를 장착하고 있으며, 사용자들도 사용할 수 있기 때문에 소스 코드 형태로 다운로드받아 이를 컴파일하는 형태로 설치하는게 일반적인 설치 과정입니다.

그럼, 윈도우용부터 설치해 보도록 하겠습니다.

이진 라이브러리 설치

다운로드 페이지에서 윈도우즈 쪽으로 갑니다. 윈도우즈에도 여러 가지 라이브러리가 있습니다만, 특별한 이유가 없다면, 가장 첫 번째 것을 다운로드 합니다(현재 sqlite-3_3_17.zip). 그 다음 압축을 풀면, 설렁하니 단 한 개의 파일(sqlite3.exe)만이 나올겁니다. 음... 놀라지 마세요. 그게 다에요! 다시 말해, 이제 당장 실행할 수 있다는 뜻입니다.

DLL 형태를 원한다면 sqlitedll-3_3_17.zip를 다운로드 하면 됩니다.

마지막으로 한 마디: 윈도우즈 사용자라 해서 "꼭" 이진 라이브러리를 사용해야 한다는 법은 없습니다. 컴파일러가 있다면 소스 코드로 설치할 수 있습니다.

소스 설치

리눅스에서 함 해 보겠습니다. 소스는 SQLite 홈페이지의 다운로드 페이지에 얻을 수 있습니다; 저는 sqlite-3.3.17.tar.gz를 다운로드했습니다.

압축을 풀고 그 디렉토리로 갑니다. 그 다음, 빌드 디렉토리를 만든 후에 그곳으로 이동합니다. 설치 위치를 정한후에 컴파일/설치를 합니다. 다음은 설치 과정을 보여줍니다.

$ tar xvfz ./sqlite-3.3.17.tar.gz
$ cd sqlite-3.3.17
$ mkdir ./build
$ cd ./build
$ ../configure --prefix=/home/user1/sqlite3
$ make
$ make install

위에서 우리는 설치를 /home/user1/sqlite3에 했습니다. 만약 설치 위치를 정해주지 않으면 기본적으로 /usr/local/에 설치됩니다. 루트 권한이 없으면 그 곳에는 설치할 수 없죠~ 그럼, 이제 설치한 곳으로 이동한 다음, 뭐가 있는지 봅시다.

$ cd
$ cd ./sqlite3
$ ls
bin  include  lib

세 개의 디렉토리가 있습니다. bin 디렉토리에는 명령행 클라이언트가 있습니다. 그리고 include와 lib 디렉토리에는 각각 헤더 파일과 라이브러리가 있습니다. 그럼 제대로 설치되었는지 확인해 보죠; 데이터베이스를 만들고 그 안에 테이블도 하나 만들 겁니다.

$ ./bin/sqlite3 db_test
sqlite> CREATE TABLE tbl_test (One INTEGER, Two INTEGER);
sqlite> .tables
tbl_test
sqlite> .exit

자 위에서 db_test란 데이터베이스를 만들고 그 안에 tbl_test 테이블을 하나 만들었습니다. 데이터베이스 파일이 생겼는지 확인해 보세요. 여기까지 왔다면 설치가 제대로 된 거구요... 만약 아니라면, 불행히도 설치가 안 된 겁니다.

리눅스에는 autoconf와 libtool란 빌드 툴이 있기 때문에, 위에서 configure를 사용할 수 있었습니다. 만약 이 툴이 없다면 Makefile을 직접 작성해야 합니다. 그러나 친절하게도 Makefile.linux-gcc란 샘플이 있습니다. 이를 참고로 수정한 후에 make와 make install 명령을 주면 됩니다.

시스템 설치

각 운영 체제마다 시스템에 프로그램이나 라이브러리를 손쉽게 추가/설치/관리하는 메커니즘이 있습니다. 이렇게 시스템에 설치하는 것의 이점은, 한 번 설치로 모든 사용자들이 곧바로 사용할 수 있다는 거죠.

이 문서에서는 각 시스템의 구체적인 설명은 생략하겠습니다.

한 가지 주의할 점은 시스템에 따라 SQLite의 라이브러리만 설치되는 경우가 있습니다. 그러면 헤더 파일이 없기 때문에, 사용할 때는 문제가 없으나 개발시에 문제가 됩니다. 개발을 원하다면, 당근, 헤더 파일까지 시스템에 설치해 줘야 합니다.

저장형과 컬럼 친화성

SQLite에는 저장형(Storage Class)와 컬럼 친화성(Column Affinity)이 있습니다.

저장형은 각 값에 붙여지는 태그이며, 정렬이나 비교와 같은 연산을 실행할 때 사용됩니다. 컬럼 친화성은 다른 데이터베이스와 호환을 위해 제공됩니다. 이미 오라클이나 MySQL과 같은 데이터베이스에 경험이 있는 분들에게는 이 부분이 많이 헷갈릴 수 있습니다. 그럴 경우, 이 저장형과 컬럼 친화성을 받아 들이기가 힘들 수 있는데, 한 가지 요령은 기존에 알고 있던 데이터베이스에 대한 지식이나 경험의 일부를 잠시 잊어버리면 수월합니다(실은 제가 그랬습니다~ :)

저장형

저장형(Storage Class)은 각 값에 붙는 타입입니다. 다시 한 번 강조하자면, 각 값에 붙는 타입입니다. 오라클이나 MySQL 같은 경우에는 타입이 각 컬럼에 부여됩니다. 예를 들어, MySQL에서 테이블을 만들 때, 어떤 컬럼의 타입을 정수로 결정하면, 이후로 그 테이블의 그 컬럼에는 정수만이 들어갈 수 있습니다. 다시 말해, 정수가 아니면 안 되는 거죠. SQLite는 이와 같지 않습니다.

다음은 SQLite의 다섯 저장형입니다:

NULL:    값이 NULL인 경우.

INTEGER: 부호 있는 정수. 상황에 따라 1, 2, 3, 4, 6, 8 바이트가 됨.

REAL:    부동소수점. IEEE 부동소수 규격에 따른 8바이트.

TEXT:    문자(열). 기본적으로 UTF-8으로 저장되며 UTF-16 BE나 UTF-16 LE를 사용할 수 있음.

BLOB:    이진 데이터. 외부에서 전달된 데이터를 그대로 저장됨.

위 저장형은 다음 절에서 설명하는 컬럼 친화성과 함께 봐야 이해가 되므로, 저장형은 SQLite에서 타입을 의미한다는 정도만 알고 일단 패스!

컬럼 친화성

먼저, 우리에게 익숙한 다음 쿼리로 시작해 보겠습니다.

sqlite> CREATE TABLE tbl_test (One INTEGER, Two INTEGER);

위 쿼리로 두 개의 컬럼(One, Two)이 있는 테이블(tbl_test)을 하나 만들었습니다. 두 컬럼 모두 정수형이기 때문에, 위 테이블에는 정수만이 들어갈 수 있습니다. 그렇죠? 그러나 SQLite는 다릅니다! 다음으로 직접 확인해 보죠.

sqlite> INSERT INTO tbl_test VALUES (123, 456);
sqlite> INSERT INTO tbl_test VALUES (123, 456.7);
sqlite> INSERT INTO tbl_test VALUES (123, 456.0);
sqlite> INSERT INTO tbl_test VALUES (123, '456');
sqlite> INSERT INTO tbl_test VALUES (123, '456two');
sqlite> INSERT INTO tbl_test VALUES (123, 'ant');
sqlite> INSERT INTO tbl_test VALUES (123, ant);

위 실행중에서 가장 마지막 것만 오류가 발생하고 나머지는 실행됩니다. 즉 값이 테이블에 저장됩니다. 다음처럼 직접 확인해 보세요.

sqlite> SELECT * FROM tbl_test;

위에서 테이블을 만들 때, INTEGER란 키워드를 사용했는데 이는 컬럼 친화성을 지정하는 키워드 중에 하나였습니다. SQLite에는 모두 다섯 개의 컬럼 친화성이 있습니다: TEXT, NUMERIC, INTEGER, REAL, NONE.

자~ 여기서 맥(?)을 함 짚고 넘어 가겠습니다: 테이블을 생성하는 쿼리문이 동일하기 때문에, 여러분은 위의 INTEGER가 컬럼 타입이라고 생각하게 된 겁니다. SQLite에서는 컬럼 타입(Column Type)이 아니라 컬럼 친화성(Column Affinity)으로 사용되고 있습니다. 컬럼 타입은 딱 하나를 결정하는 것이고, 컬럼 친화성은 어떤 우선 순위를 취할지 결정하는 겁니다. 어떤 우선 순위라?

우리는 테이블을 만들고 거기에 데이터를 저장합니다; 레코드를 기본 단위로 저장합니다. 위 테이블 예에서, 오라클이나 MySQL은 레코드를 저장할 때마다 컬럼의 값들이 항상 정수입니다. 레코드가 추가되더라도 이건 변하지 않고 고정된 거죠. SQLite에서는 동일한 컬럼일지라도 각 레코드마다 다른 타입을 가질 수 있습니다.

아래 쿼리는 위에서 사용했던 것과 동일한데, 각 쿼리의 끝에 저장형을 보여주고 있습니다.(컬럼 친화성이랑 헷갈리지 마세요)

sqlite> INSERT INTO tbl_test VALUES (123, 456);       --(INTEGER, INTEGER)
sqlite> INSERT INTO tbl_test VALUES (123, 456.7);     --(INTEGER, REAL)
sqlite> INSERT INTO tbl_test VALUES (123, 456.0);     --(INTEGER, INTEGER)
sqlite> INSERT INTO tbl_test VALUES (123, '456');     --(INTEGER, INTEGER)
sqlite> INSERT INTO tbl_test VALUES (123, '456two');  --(INTEGER, TEXT) 
sqlite> INSERT INTO tbl_test VALUES (123, 'ant');     --(INTEGER, TEXT) 
sqlite> INSERT INTO tbl_test VALUES (123, ant);       --ERROR

위 쿼리에서 눈여겨 볼 부분은 두 번째 컬럼(컬럼 Two, 컬럼 친화성 INTEGER)입니다. 먼저 첫 번째 쿼리에서, 정수 값(456)이 입력되었으므로 저장형은 INTEGER가 됩니다.(INTEGER란 키워드는 컬럼 친화성과 저장형에 모두 있으므로 헷갈리지 마세요) 두 번째 쿼리에서는 정수가 아닙니다(456.7). SQLite는, 컬럼 친화성이 INTEGER이므로, 먼저 이 값이 정수가 될 수 있는지 확인합니다. 그런데 정수가 될 수가 없기 때문에 차선으로 REAL 저장형을 선택한 것입니다. 세 번째 쿼리에서도 정수로 변환 가능한지 확인하는데, 이번에는 가능합니다. 때문에 INTEGER 저장형을 부여합니다. 네 번째도 세번째에서와 마찬가지로 정수로 변환 가능하므로 INTEGER 저장형을 부여했습니다. 그 다음 값('456two')은 어떻습니까? 이 값은 정수가 될 수도 없고 부동 소수가 될 수도 없습니다. 그 다음으로 TEXT로 변환 가능하기 때문에 TEXT 저장형을 부여했습니다. 그 다음 여섯 번째도 마찬가지입니다. 마지막 쿼리에서의 값(ant)은 정수도 부동 소수도 될 수가 없기 때문에 텍스트가 되야 하는데, 작은 따옴표가 없기 때문에 에러를 발생합니다. 컬럼 친화성에 상관없이 작은 따옴표를 사용하지 않는 값의 경우에는 숫자만이 가능합니다.

음, 여기서 말한 컬럼 친화성이란 입력되는 값에 따라 어떤 타입을 우선해서 선택할까를 의미합니다. 그럼 다음 번에는 다섯 개 컬럼 친화성의 우선 순위에 대해서 알아 보도록 하겠습니다.

자동 증가 Autoincrement

자동 증가는 보통 테이블의 키로 사용됩니다. 그래서 유일한 값을 갖는게 중요하지요. 다른 테이블에서 외래키(foreign key)로 사용될 때도 필요하구요. 다음 처럼 간단합니다.

CREATE TABLE tbl_test (
  RowID INTEGER PRIMARY KEY AUTOINCREMENT,
  Name  TEXT,
  Age   INTEGER
);

위 테이블에서 RowID 열이 자동 증가 합니다. 열 이름이 반드시 'RowID'일 필요는 없구요~

명령행 클라이언트

자 이제 설치했으니까 SQLite를 실행해 봅시다. 실행 경로에 SQLite가 잡혀 있는지 다시 한 번 점검해 주시구요.

$ sqlite3 db_test

간단합니다. 명령어를 치고 원하는 데이터베이스를 입력합니다. 만약 그 데이터베이스가 없으면 새로 생기고, 이미 존재하면 그걸 열고 들어가게 됩니다. 아무런 설정이 필요 없어요;SQLite 문서에는 이를 Zero Configuration이라 했습니다. 그 다음, 어떤 테이블이 있는지 살펴 볼까요.

sqlite> .tables

앞에 점(dot)을 주의하시구요. SQLite에 기본적으로 딸려 오는 명령행 클라이언트는 닷 명령으로 SQL 쿼리와 기타 명령을 구분합니다. 자 그럼 나가기 전에 테이블을 하나 만들어 봅시다.

sqlite> CREATE TABLE tbl_person (Name TEXT, Age INTEGER);

이제 프로그램을 종료하기 전에, 도움말을 다음처럼 보구여~

sqlite> .help
...
...
sqlite> .exit

자 이제 데이터베이스를 새로 만들고 간단한 테이블을 만든 후에 점잖게(?) 일을 마무리 했습니다. 함 디렉토리를 확인해 보세요. 데이터베이스 파일이 생겼을 거에요: db_test. SQLite의 데이터베이스는 한 개의 파일에 모든게 들어있기 때문에, 데이터베이스를 다른 곳으로 옮기고자 할 때 작업이 아주 간단해요. 음악이나 이미지 파일 복사해 옮기듯이 하면, 그게 다에요.

그리고 중간에 도움말을 잠깐 보았습니다. 아주 썰렁합니다. 그래서 별 도움이 안 될 것 같지요? 그럴수도 있구요 :) 여기서는 그냥 직접 해 보구 '아 이런게 있구나' 정도면 충.분.합니다.

그럼 이번에는 .schema 명령에 대해 알아 보죠. 이 명령은 테이블 스키마, 즉 구조를 살펴 볼 때 사용합니다. 일단 보죠.

sqlite> .schema
...
...
sqlite> .schema tbl_test
...
...

위의 첫 번째 예처럼 그냥 .schema 명령만 주면 데이터베이스에 있는 모든 테이블의 스키마를 볼 수 있습니다. 특정 테이블의 스키마만 보고자 할 때는 두 번째 예처럼 뒤에 테이블 이름을 적어주면 그만 입니다.

이제 출력 포맷을 바꿔주는 명령을 몇 개 알아 보겠습니다. 테이블에 SELECT 쿼리를 주면, 결과가 한 줄당 한 개의 열이 화면에 출력됩니다. 그리고 각 컬럼은 수평바 |로 구분되지요. 다음 예를 보면 쉽게 이해될 겁니다.

sqlite> select * from tbl_test;
123|456
789|ant
sqlite> .separator "!"
sqlite> select * from tbl_test;
123!456
789!ant
sqlite> .separator "\t"
sqlite> select * from tbl_test;
123     456
789     ant
sqlite> 

위 예에서 마지막 "\t"은 탭을 의미하고, 텍스트 편집기에서 탭 키를 누른 것과 똑같이 보입니다.

자 이번에는 .mode 명령을 사용해 보죠. 이 명령은 뒤에 원하는 모드를 적어주어야 합니다. 모두 5개가 있으면 기본값은 "list"입니다: list, line, column, insert, html. 여기서는 두 개의 예만 보도록 하겠습니다. 나머지는 여러분들이 직접 바꿔가면서 확인해 주세요.

sqlite> .mode line
sqlite> select * from tbl_test;
  One = 123
  Two = 456

  One = 789
  Two = ant
sqlite> .mode insert tbl_test
sqlite> select * from tbl_test;
INSERT INTO 'tbl_test' VALUES (123, 456);
INSERT INTO 'tbl_test' VALUES (789, 'ant');
sqlite> .mode list
sqlite> .mode column
sqlite> .mode html

두 번째 insert 모드는 출력 결과를 삽입용 SQL 쿼리문으로 보여줍니다. 이 명령은 다른 것들과 달리, 뒤에 원하는 테이블 이름을 추가 해야 합니다.

음... 지금까지의 출력에는 컬럼 이름이 나오질 않았습니다(line 모드 제외). 컬럼 이름을 출력에 추가하려면 .headers 명령을 이용합니다. 기본값으로는 "off" 이니까 이를 "on"으로 다음처럼 설정해 줍니다.

sqlite> .headers on

간단하니까 실행 결과를 꼭! 확인해 보세요.

이번에는 .output 명령을 알아 봅시다. 지금까지 명령이나 쿼리의 결과는 화면에 뿌려졌습니다. 이를 파일로 보내는 방법이 있습니다.

sqlite> .output outfile.txt

위 명령 이후에는 화면에 나오던 것들이 모두 outfile.txt로 보내져 저장됩니다. 이를 원상태로 복원하려면 다음처럼 합니다.

sqlite> .output stdout

자 이제 .dump 명령을 알아 봅시다. 이는 우리가 소위 "덤프 뜬다"라고 하는 겁니다. 이는 한 개의 테이블 또는 데이터베이스에 있는 모든 테이블을 현재 상태로 만들어 주는 SQL 명령입니다. 그러니까 덤프를 뜨면, 현 데이터베이스를 다른 데이터베이스로 옮기는 작업이 수얼해 질 수 있고, 백업으로도 사용할 수 있습니다.

sqlite> .dump
sqlite> .dump tbl_test

첫 번째 덤프 명령은 데이터베이스 내에 있는 모든 테이블에 적용되고, 후자는 특정 테이블에만 적용됩니다. 자 그럼 이제, 예를 들어, 전체 데이터베이스를 파일로 덤프 뜰 수 있겠어요? 음... 제가 함 해 볼께요.

sqlite> .output db_test.dump
sqlite> .dump

위에서는 우선 출력을 덤프 파일(db_test.dump)로 설정하고 그곳으로 덤프 결과를 보냈습니다. 이번에는 좀 더 간단하게 셸 명령행에서 해 보도록 하겠습니다.

$ sqlite3 db_test .dump > db_test.dump

위 명령은 우선, 데이터베이스(db_test)를 열고 덤프 명령(.dump)를 실행합니다. 그러면 결과가 화면에 출력되야 하는데, 여기서는 덤프 파일(db_test.dump)로 방향을 바꿨습니다. 함 덤프 파일이 생겼는지, 그리고 그 안에 어떤 내용이 있는지 확인해 보세요.

그럼 이번에는 반대로, 이렇게 만든 덤프 파일을 데이터베이스로 넣어 보겠습니다; 먼저 새로운 데이터베이스를 하나 만든 다음에 그곳에 복사합니다.

$ cat ./db_test.dump | sqlite3 db_test2

위 명령으로 db_test가 db_test2란 데이터베이스로 복사되었습니다. 이번에도 함 (직접:) 확인해 보세요.

기본값으로 설정되어 있는 게 맘에 들지 않으면, 시작할 때마다 본인이 원하는데로 설정을 해야 합니다. 매번 이렇게 한다는 건 정말 지루하기 짝이 없는 일이죠. 바로 이를 해결해 주는게 설정 파일입니다. 설정 파일은 기본적으로 ~/.sqliterc 파일이며, 이를 다음처럼 바꿔 줄 수도 있습니다.

$ sqlite3 -init ~/.another_sqliterc ...

다음은 저의 설정 파일입니다.

.header on
.separator "\t"

많이 썰렁하죠. 저는 닷(.) 명령만 사용했는데 쿼리도 이 설정 파일에 넣어 줄 수 있습니다. 그렇지만 어떤 쿼리를 설정 파일에 넣은 것은 권장되지 않습니다. 암튼, 저는 SELECT 쿼리의 결과에서 컬럼 이름이 나오고 탭으로 간격을 맞춰 출력되는 걸 좋아합니다

펄 모듈

이번에는 두 개의 펄 모듈로 SQLite를 다뤄 보도록 하겠습니다: DBD::SQLite, DBIx::Simple. 이 모듈은 CPAN에서 구할 수 있으며, DBI 모듈이 먼저 설치되어 있어야 합니다. 이 모듈은 DBI 인터페이스를 따르고 있기 때문에, DBI 프로그래밍에 경험이 있다면 별 어려움 없이 바로 사용할 수 있을 겁니다.

DBD::SQLite

SQLite 연결

데이터베이스에 연결을 위해서 우리는 DBI->connect를 호출합니다. 이 때, 알려줘야 할 몇 몇 정보가 있습니다: 데이터베이스 종류, 데이터베이스 이름, 사용자 이름, 패스워드. 이 중에서 사용자 이름과 패스워드는 SQLite의 경우 필요 없습니다.

우리가 여기서 다루는 데이터베이스는 SQLite이기 때문에, 데이터베이스 종류는 'SQLite'입니다. 만약 MySQL을 이용한다면 이를 'mysql'로 바꾸면 됩니다. 그 다음, 데이터베이스 이름은 dbname=my_database_file 형식으로 지정해 줍니다. SQLite에서는 데이터베이스와 파일이 일대일 대응 관계이기 때문에 가능합니다. MySQL과 같은 경우에는 하나의 데이터베이스가 여러 개의 파일로 구성되어 있으니까 이런 형식을 취할 수가 없습니다.

자 그럼 펄 스크립트 파일을 하나 만들어 봅시다.

## test_sqlite.pl
use DBI;

my @dsn = ("dbi:SQLite:dbname=db_test", "", "");
my $dbh = DBI->connect(@dsn);

위 코드에서 @dsn에는 세 개의 요소가 있습니다. 먼저 두 번째랑 세 번째에는 아무 것도 없는데, 이건 각각 사용자 이름과 패스워드를 적어주는 곳입니다. 우리는 이 부분이 필요없기 때문에 그냥 비워두었습니다. 첫 번째에는 마지막의 db_test를 본인이 열고자 하는 데이터베이스를 적어 줘야 합니다. db_test는 이 문서에서 예제로 사용하는 데이터베이스 이름입니다.

참고로, @dsn은 Data Source Name의 약자인데, 말 그대로 데이터가 어디에 있는지 지정하는 넘을 말합니다. 우리가 인터넷에서 URL(또는 URI)로 웹 사이트를 지정하듯이, 데이터베이스의 세계에서 사용하는 말이에요.

DBIx::Simple

다음은 DBIx::Simple 모듈의 예제 문서입니다. 이 문서의 처음 서 너 쪽에(만약 인쇄하면) 너무 잘 정리가 되어 있어서 링크만을 제공하겠습니다. 한 가지 주의할 점은, 이 문서에 있는 예제를 본인이 사용할 환경에서 꼭 테스트 해 보라는 겁니다. 저의 경우, 문서와는 달리, hash(es) 부분이 작동하지 않았습니다. 다른 것들은 잘 들어 맞았습니다.

http://search.cpan.org/~juerd/DBIx-Simple-1.30/lib/DBIx/Simple/Examples.pod

참고 자료

http://www.sqlite.org/ SQLite 홈페이지

DBD::SQLite 모듈 문서

DBIx::Simple 모듈 문서

신고


휴대대상 사이트 만드는 방법을 간단히 소개합니다.

- PC와 휴대폰의 차이

   1. file size의 제한
      이것이 제일(가장) 큰 곳이지요. 나중에 자세하게 설명합니다만, 휴대대상 사이트에서는
      1페이지당의 file size를 화상도 포함시켜서 5Kbytes 정도에 거두지 않으면 안됩니다.
      5Kbytes에서는 모자란,이라고 생각되는 분도 많다고 생각합니다만  시험 삼아 5Kbytes의
      문장을 지어서 휴대로 표시시켜 봅시다. 휴대가 작은 화면에서 보면 이것이라도 상당한
      정보량이라고 느낄 것입니다.

   2. style sheet 관련
      휴대대상 사이트에서는, 일절의 style sheet가 쓸 수 없습니다. 원래, style sheet와는
      잔 장식 방법을 어레인지(arrangement) 하기 위한 물건이므로 휴대의 작은 화면에서
      이것을 사용할 이유는 특히 없지요.

   3. JavaScript
      이것도 일체 쓸 수 없습니다.

   4. 쿠키, 세션
      쿠키는 Vodafone의 비교적 새로운 기종이라면 쓸 수 있는 것 같습니다.
      i-mode, ez-web에서는 기술정보로 쿠키에 대해서 접촉하지 않고 있으므로 불분명합니
      다만 사용할 수 없다고 생각한 편이 낫지요. 세션 관리는 전기종에서 사용하는 것이 가능
      합니다만, 조금 순서가 필요하게 됩니다.

   5. 메이커에 의한 차이
      PC대상 사이트에서도, 브라우저에 의해 동작이나 레이아웃이 다르다고 한 적은 있었습
      니다만 휴대대상 사이트에 있어서도 그 경향은 없어지지 않습니다. 각휴대 메이커에
      의해 여러가지 규격의 차이가 존재합니다. 현재, i-mode / Vodafone / ez-web 이라고
      하는 3종의 규격이 있습니다. 그러나, 메이커에 의해 화면을 새로 만들거나 하는 것은
      (과연)정말로 번거롭습니다. 공통인 조형으로 하는 것은 비교적 간단하므로, 그렇게
      하는것을 추천합니다. 그치만 보통 급한대로 도코모(i-mode)에 맞추면 될듯합니다.

- 휴대 공통 사이트를 만드는 것에 대하여

메이커에 의해 약간의 차이는 있습니다만, 요점을 잡으면 휴대 공통의 페이지를 만드는 것이 가능합니다.

   1. 문자코드는 Shift_JIS로 한다
      우선 이것을 잊지 않도록 합시다. i-mode, EZweb은 기술자료에 「Shift_JIS만 대응」
      이라고 적혀 있습니다만 실제로는 다른 문자코드에서도 표시할 수 있을 경우도 있는 것
      같습니다. Vodafone에서는 EUC-JP / ISO2022-JP / UTF-8 (3GC단말만)에게 대응하고
      있습니다. 그리고, META태그는 반드시 넣도록 합니다. file size가 아깝다고 생각할지도
      모르겠습니다만, 이것을 쓰지 않고 문자잘못 된 것을 일으켜버리면 원래도 아이도 없습
      니다.
      <meta http-equiv="Content-Type" content="text/html; charset=SHIFT_JIS">

   2. 사용할 수 있는 태그
      기본적인 태그는 대체로 쓸 수 있으므로 그다지 걱정하지 않아서 좋을 것입니다. 단지,
      쓸 수 있는 속성은 한정되어 있습니다.

   3. 화상에 대해서
      이것이 조금 성가십니다. 이라고 하는 것도, 전기종에서 공통되어서 쓸 수 있는 포맷이
      없기 때문입니다.

      * i-mode
         모든 기종에서 대응하고 있는 것이 GIF 입니다.
         2003년이후 발매의 기종에서는 JPEG も 쓸 수 있습니다.

      * Vodafone
         모든 기종에서 대응하고 있는 것이 PNG / JPEG 입니다.
         3GC단말(2005년이후 발매)에서는 GIF も 쓸 수 있습니다.

      * EZweb
         모든 기종에서 대응하고 있는 것이 PNG 입니다.
         2001년 후반 이후 발매의 기종에서는 JPEG 에, 2003년이후 발매의 기종에서는 GIF
         에도 대응하고 있습니다.

      이상을 근거로 하면, JPEG이면 2003년이후 발매의 거의 전기종에서 사용할 수
      있습니다. GIF는 Vodafone의 대응이 약간 늦습니다만, 다른 2메이커라면 2003년이후로
      대응하고 있습니다. PNG은 i-mode가 대응하지 않고 있으므로 세운 편이 낫지요.
      ※ i-mode마저 대응하면, 추천의 포맷은 PNG입니다

   4. 화면 사이즈
      이것은 기종에 의해 다양함입니다만, 우선 가로 폭 20(전각10문자)로 만들어 두면 대강의
      기종에는 대응할 수 있을 것 같습니다. 세로폭은 8∼10정도가 일반적이지요. 세로폭은 한
      화면에 보여주는 이미지가 아니라면 길어도 상관없습니다.

   5. file size
      처음에도 조금 소개했습니다만, 이것도 기종에 의해 다양함입니다.

      * i-mode
         초기의 기종은 전체로 5K. FOMA에서는 30K (전체에서는 100K).

      * Vodafone
         초기의 기종은 전체로 6K. 3GC단말에서는 10K (전체에서는 300K).

      * EZweb
         전체로 9K.

      이상으로보다, 5K이내이면 거의 모든 휴대로 볼 수 있습니다. 이것은, 화상등을 포함시킨
      1페이지의 총 사이즈수입니다. 당연한 이야기이겠지만 용량을 넘으면 이미지의 경우엑박
      입니다.

   6. 폼에 대해서
      휴대 페이지에서는 물론 폼을 사용할 수 있습니다만, 주의해 되면 안되는 점이 몇인가
      있습니다.

      * 문자수 입력 제한
         INPUT태그에는 size와 maxlength라고 하는 2개의 속성을 설정할 수 있습니다. 전자는
         표시상의 크기, 후자는 입력할 수 있는 최대문자수 (반각단위)입니다. 특히, maxlength
         는 반드시 명기해 둡시다.

      * 액세스 키
         휴대는 화면이 좁으므로, 화면내의 특정 위치에 점프 하기 위해서 액세스 키라고 하는
         것을 사용해서 조작성을 높일 수 있습니다. 예를 들면, 「1」을 무릅쓰면 입력 란에
         점프 하는,이라고 한 것이 가능하게 됩니다. 이전에는 메이커에 의해 차이가 있었습니
         다만, 현재는 accesskey 이라고 하는 속성이 거의 모든 규격으로 쓸 수 있습니다.
         INPUT와 A태그의 속성으로서 사용합니다. 하지만, Vodafone의 옛날의 기종에서는 쓸
         수 없습니다. 그 경우, 대용의 속성은 없는 것 같으므로 포기하는 수 밖에 없는것 같습
         니다.

      * 입력 모드의 설정
         보통, 입력 란에서는 일본어입력 모드가 초기 상태가 되고 있습니다. 그러나, 실제로는
         메일 주소나 URL의 입력 란에서는 반각영숫자밖에 사용하지 않습니다. 이러한 경우,
         일부러 휴대로 입력 모드를 바꾸는 것은 번거롭습니다. 처음부터 반각영숫자 모드 등
        으로 하는 방법이 있어서 부디 사용합시다. 이것은 기종에 의해 약간의 차이가 있습니
        다. i-mode와 ez-web에서는,istyle 속성을 쓸 수 있습니다. vodafone의 옛날의 기종에
        서는 이 속성이 쓸 수 없습니다. 대신,mode 속성을 사용합니다.

          - 전각(디폴트)
            istyle = 1 또는 mode = hiragana

          - 반각 카나
            istyle = 2 또는 mode = hankakukana

          - 영자
            istyle = 3 또는 mode = alphabet

          - 숫자
            istyle = 4 또는 mode = numeric

         istyle과 mode는 속성이므로, 양쪽 모두 기술하는 것이 가능합니다. 다소 장황합니다
         만, 이것이 제일(가장) 간단해서 무난한 방식이지요.

   7. 쿼리(query) 문자열
      CGI프로그램에 파라메타를 건네 주기 위해서는 2개의 방법이 있습니다. 하나는 폼으로
      부터 Submit 하는 방법, 또 하나는 퀘리(query) 문자열을 사용하는 방법입니다. 여기에서
      는 후자를 찔러서 사용할 때의 주의 점을 듭니다.폼으로 GET방식(디폴트)을 사용할 때에
      도 같은 주의가 필요합니다. URL에 계속해서 「? 」 기호를 부가하고, 그 후에 키와 값의
      페어 를「&」나와 단락 지어서 지정합니다. 이 때, 키와 값에 사용할 수 없는 문자가 몇
      인가 있습니다.「&」 「+」 「」 (반각 스페이스)의 3개입니다.「&」은 단락 지어 문자
      이기 때문에, 당연 키와 값에는 쓸 수 없습니다.「+」은 반각 스페이스로 변환됩니다.
    「」은, 단말에 의해 동작이 다릅니다. 이것들을 포함시키고, 특수문자는 에스케이프 기술
      을 이용할 수 있습니다. 예를 들면 「&」은 문자코드가 0x26 (10신법으로 38)이므로
    「%26」이라고 기술할 수 있습니다.「+」은 「%2B」, 「」은 「%20」이 됩니다. 이
     안에서 주의하는 것은 반각 스페이스입니다. 이 문자는, 예를 들면 Vodafone이라고 에스
     케이프 기술을 하지 않아도 정확하게 움직입니다만 i-mode라고 움직이지 않습니다. 그러
     니까, 모든 단말에서 확실하게 움직이도록 하기 위해서는 반각 스페이스도 반드시 에스케
     이프 기술(%20) 하도록 합시다.

   8. 그림문자
      이것은 기종에 의해 완전히 기술 방법이 다르므로 정적 페이지에서는 파일을 나눌 필요
      가 있습니다. 처음에 말한 것 같이, 될수 있는 한 휴대 공통의 페이지를 만들고 싶으므로
      그림문자를 사용하는 것은 동적생성 페이지에 한정하는 것을 추천합니다.
      ez-web에서는, i-mode의 그림문자를 자동적으로 변환하는 기능이 있다고 합니다

      이하, 휴대 메이커마다 설명합니다.

      * i-mode
         기술 방법은 몇인가 있습니다만, 어느 것도 단점이 있습니다.

         - binary 입력
           왜 이런 방법을 채용한 것일지 이해가 가지 않습니다만, 파일내에 binary code를 메
           워넣는다고 하는 것입니다. 확실히 file size는 절약할 수 있습니다 (2바이트)이, 그
           이외의 메리트는 없습니다. 게다가, JavaServlet를 사용하고 있으면 binary code의
           보충은 보통 수단에서는 가지 않습니다. 전기종에 대응하고 있습니다.

         - Unicode의 텍스트 입력
           문자코드 겉면에 있는 Unicode문자코드를 &#x\\\\;이라고 하는 형식으로 기술
           합니다. 편리합니다만, 2002년 후반 이전에 시판된 기종에서는 이용할 수 없습니다.

         - Shift-JIS의 텍스트 입력
           문자코드 겉면에 있는 Shift_JIS문자코드를 &#\\\\;이라고 하는 형식으로 기술합
           니다. 전기종에 대응하고 있습니다만, 확장 그림문자를 표시할 수 없습니다. 게다가,
         「비추장」의 입력 방법이므로 장래 이용할 수 없게 될 가능성이 있습니다.

      * Vodafone(J-PHONE)
         위의 페이지로부터 그림문자에 대응하는 코드를 카피&페이스트 하는 것 뿐으로 한다.
         일견 binary code인 것 같습니다만, 빈틈없이 JavaServlet로부터에서도 이용할 수 있
         습니다.

      * ez-web
         그림문자는 기종에 의해 타이프가 다릅니다만, 기본적으로는 어느 것도 함께입니다.
         타이프B은 타이프A에 색이 붙은 것, 타이프C/D는 확장의 그림문자가 추가되어 있습
         니다. 175번까지는 전기종에서 이용할 수 있습니다. 기술 방법은 <img localsrc=”그림
         문자번호 ” >에서 통일되어 있습니다.

   9. viewer에 대해서
      당연, 휴대 페이지를 만들면 그것을 실제로 보아서 확인하지 않으면 안됩니다. 그러나,
      일부러 휴대로부터 확인하고 있으면 돈도 들고 대단합니다. 거기에서, 각휴대 메이커는
      viewer를 준비하고 있습니다.

      * i-mode
         i모드HTML시뮬레이터II 이라고 하는 소프트가 준비되어 있습니다. HTTP으로부터의
        읽기에 대응하고 있으므로 게시판등의 동적생성 페이지의 확인에 이용할 수 있습니다.

      * ez-web
         몇인가 있습니다만,Openwave SDK 지만 HTTP읽기에 대응하고 있습니다.

      * Vodafone
        【웨부콘텐쯔보아】 이라고 하는 소프트가 준비되어 있습니다. HTTP읽기 대응, 그림문
         자 파렛트, error check등 편리한 기능이 있어 조작도 간단합니다. 2006/9현재,
         2006/2/17까지 시판된 모든 Vodafone휴대 단말에 대응하고 있다라고 하는 것입니다.

      모든 휴대로부터 액세스되는 것을 생각하면 이것들 3개 모든 viewer에서 확인하는 것이
      좋지요지만, (과연)정말로 그것은 번거롭습니다. 보통은 임의의 하나의 viewer에서 확인
      을 하면 충분하지요. 개인적으로는 【웨부콘텐쯔보아】지만 제일(가장) 쓰기 쉽게 추천
      입니다.

- Tips

핸드폰 사이트를 만드는 동시에서의 대수롭지 않은 테크닉을 소개합니다.

   1. file size를 축소한다
      핸드폰 사이트에서는, 이것이 상당히 중요한 포인트가 되어 옵니다. file size에는 제한이
      있고, 제한을 넘지 않는으로 해도 사이즈를 절감하는 것은 읽어 완전히 이해해 시간의 단
     축이나 패킷값의 절약에 연결되기 때문입니다.

      * 행 바꿈을 줄인다
         수수합니다만, 이것만이라도 몇십byte는 축소할 수 있습니다. 이 대용량시대에 어긋나
         고 있다고는 생각합니다만, 한정된 자원 안(속)에서는 이러한 착실한 노력이 필요합니
         다. JavaServlet를 사용하고 있는 것이라면, 필터를 사용하는 것으로 JSP에 일체 손질
         을 가할 일 없고 모든 행 바꿈을 깎을 수 있습니다. 행 바꿈 삭제 필터의 샘플 를 만들
         어 보았습니다. 흥미가 있는 분은 참고로 해 보아 주십시오.

      * 태그의 사용은 필요 최소한으로 한다
         머리말이라도 이야기한 것 같이, 표시 문자열만으로 5Kbytes를 다 쓰면 상당한 정보량
         을 다룰 수 있습니다. PC대상 사이트에서 복사해서 휴대대상 사이트의 페이지를 만들
         경우, 많은 태그는 필요없는 것을 알아차릴 것입니다. 쓸데 없는 태그는 가능한 한 배
         제합시다. 물론, 태그를 구사해서 레이아웃에 구애되는 것도 때에는 필요하다고 생각
         합니다만 그것에 의해서 표시할 수 있는 정보량이 줄어드는 것은 머리에 넣어 둡시다.

      * 더블쿼테이션(quotation)은 극력 사용하지 않는다
         예를 들면, 우밀려 듦(밀어 닥침)을 할 때에
         <div align="right"> 로 하는 것 보다는 <div align=right> 로 합시다. 그 외에도 INPUT
         태그의 name속성등, 대부분의 경우에서 더블쿼테이션(quotation)은 필요 없습니다.
         예외로서, 속성값에 싱글(더블)쿼테이션(quotation)을 포함할 경우에는【다불커텐
         숀】에서 묶어서 하지 않으면 안됩니다.

      * hidden문자열은 하나에 정리한다
         폼을 사용한 페이지의 경우, 예를 들면 아래와같이 되어 있다로 합니다.
         <input type=hidden name=script_name value=abc>
         <input type=hidden name=script_url value=def> 이것들은 하나에 정리해버립시다.
         어차피면, name값도 간결하게 합니다.
         <input type=hidden name=k value=abc,def> 물론, 이 abc, def 이라고 하는 문자열을
         해석하는 프로그램은 CGI측에서 준비 할 필요가 있습니다.

신고


태그
 - input type="text"
 - textarea

서식
 - istyle="입력모드"

의미
 - 본기능은, input type="text"와 TEXTAREA 태그의 속성입니다.
 - 각 입력 항목에 대해 입력 모드의 초기설정을 영문자·숫자등으로 설정
 - 입력 모드를 이하와 같이 규정합니다
属性値
(속성)
モード1(모드1)
(かな入力モード時)
  (카나입력모드시)
モード2(모드2)
(ポケットベル入力モード時)
  (히라가나입력모드시)
1 全角かな(전각카나) 全角文字(전각문자)
2 半角カナ(반각카나) 半角文字(반각문자)
3 英字(영문자) 半角文字(반각문자)
4 数字(숫자) 半角文字(반각문자)

 - 속성치 1이 디폴트 기동의 입력 모드입니다.
 - 속성치의 값인 1~4이외의 값이 지정되었을 경우는 디폴트로 기동됩니다.
 - 모드2에 대해서 해당되는 입력 모드가 없는 경우는 반각 입력 모드로 처리됩니다.

예제
 - 영문자 모드로 개시하고 싶은 경우
<HTML><HEAD><TITLE>istyle</TITLE></HEAD><BODY>
メールアドレス登録<BR><BR>
<FORM method="get" action="test.cgi">
MAIL ADDRESS<BR>
<INPUT type="text" name="aaa" value="@docomo.ne.jp" istyle="3" size=14 maxlength=20><BR><BR>
<INPUT type="submit" name="send" value="SEND">
<INPUT type="reset" value="CANCEL"><BR>
</FORM>
</BODY></HTML>
신고

Mantis 설치

프로그램/Etc 2008.04.18 14:17

Mysql : mysql-5.0.51
Apache : httpd-2.2.6
PHP : php-5.2.5
Mantis : mantis-1.1.1

우선 맨티스는 Mysql, Apache, PHP가 설치된 후에 설치가 가능하다..

물론 Apache와 php는 연동이 되어야 함...


- http://mantisbt.org
에 접속해서 mantis-1.1.1를 다운 받는다.


-
압축 풀기

  [root@localhost local]# tar –xzvf mantis-1.1.1.tar.gz


- mantis
를 사용하기 위한 데이터 베이스 생성 및 유저 생성

mysql> create database mantis;

mysql> use mysql;

mysql> grant all privileges on mantis.* to mantis@’%’ identified by ‘비밀번호’;

mysql> insert into user values('localhost','mantis',password('비밀번호'),'y'
               ,'y','y','y','y','y','y','y','y',
'y','y','y','y','y','y','y','y','y','y','y','y','y','y'
               ,'y','y','y','y','y','y','y','y','y','y','y');

이렇게 되면 mantis라는 데이터베이스와 mantis 라는 사용자가 생성됩니다.

 
- mantis install 하기 위한 httpd.conf 수정

  httpd.conf 파일을 열어 DocumentRoot Directory url을 수정

  ex> 압축을 푼 mantis-1.1.1 mantis라고 디렉토리 명을 변경합니다.
         
여기서 mantis /usr/local 밑에
있습니다.

      그럼 DocumentRoot “/usr/local/apache2/htdocs”

<Directory “/usr/local/apache2/htdocs”> 이렇게 되어 있는 것을

->  DocumentRoot “/usr/local/mantis”

<Directory “/usr/local/mantis”> 이렇게 변경합니다.

 
- Apache 실행

# /usr/local/apache2/bin/apachectl start

 

- 웹을 띄워서 http://localhost/admin/instal.php 를 호출하면 셋팅하는 화면이
   나옵니다.

 

- 셋팅이 완료된 후 기본 관리자 ID administrator 비밀번호는 root 입니다.
신고


일본어 메일 인코딩에 관해서...

1. 일본어는 히라가나 가타카나가 존재를 합니다. 히라가나는 한국어처럼 기본 2byte 이지만
    가타카나 혹은 특정 기호에 대해서는 전각과 반각이 존재를 합니다. 전각은 히라가나처럼
    2byte 이지만 반각은 1byte 입니다. 그래서 첫번째로 해야 할일이 1byte 반각을 2byte인
    전각으로 변형하여야 합니다. 그래야 인코딩을 할때 문제가 발생하지 않습니다.

2. 두번째는 휴대폰에서 사용하는 그림문자에 대해서만 해당이 됩니다. 일반 그림문자는
    웹에서 제공을 하지 않기 때문에 메일 발송시 깨져서 나옵니다. 이런 부분은 공백이라던지
    특정 문자로 치환하는 처리를 합니다.

3. getByte를 이용해서 문자 하나하나 인코딩을 합니다. 일본어로 메일로 보내기 위해서는
    getBytes 할때 JIS 라는 놈을 사용해야 합니다. 그래야 메일이 정상적으로 발송이 됩니다.
    유의사항은 원문자에 대해서 JIS가 해결을 못해주는데 원문자가 넘어올때는 getBytes된
    코드값으로 비교하여 Windows-31J로 getBytes를 하면 제대로 보여집니다.
    (원문자들 중에서도 일본어에 없는 원문자들은 제공을 안하니 테스트할때 유의하기 바람.)
신고


Help > Software Updates > Fine and install > Search for new features to install > Next > New Remote Site 에서

EclipseColorder 설치(ASP 구문강조) 를 설치할경우

 - Name : EcipseColorer

 - URL : http://colorer.sf.net/eclipsecolorer/
신고

티스토리 툴바