오늘은 한글날이다. 한글이 창제된 후 부터 지금까지 제대로 대접받은 적이 있던가?
조선시대때는 한자에 무시당하고, 일제시대에는 일본어에, 요즘은 또 영어에 무시당하고 있는 듯 하다.
어찌보면 한글은 참 기구한 운명을 타고 난 듯 하다.
그러나, 한글자체의 우수성을 알아주기 때문에 지금까지 생존(?)할 수 있었으리라 본다.

얼마전인가, 인도네시아의 한 지역에서 자신의 고유의 언어를 보존하고자 한글을 도입했다는 소식을 들었다.
세상에서 수많은 언어가 지금도 사라지고 있다고 한다. 왜? 그들의 언어를 기록할 문자가 없어서라고 한다.
한글의 우수성은 배우기 쉽다는 것이다.(한글과 한국어 는 다르다. 한글은 쉽다. 그러나 한국어는 어렵다)

서론이 길었다. 오픈소스에서도 한글화 작업이 이슈다.
요즘은 개발초기에 다국어 환경을 염두해두고 개발을 많이 하기때문에 줄어들고 있지만, 여전히 한국에서 사용하기 위해서는 한글화 작업이 우선인 경우가 많다. KLDP 라는 곳이 생기고, 한글 문서화 작업이 진행되다가 지금은 오픈소스 프로젝트 자체에 대한 커뮤니티로 발전하게 된다. 그동안 한글화 작업이 중심이 되어 운영되었다고 본다.

여러 오픈소스들이 있고, 아직도 한글화 작업이 필요한 곳이 많다.
해당 오픈소스가 다국어 환경을 갖추고 있으면 그나마 다행이고, 갖추고 개발하더라도 한글이 빠지는 경우가 많다. 왜? 참여하는 개발자가 한글을 사용하지 않는 경우가 대부분이기 때문이다.
그렇다 보니, 한글화 작업은 사후(개발후) 작업이 대부분이다.
개발후에 사용자가 직접 수정하고 패치를 만들고 커뮤니티에 공개하는 방식이다.

한글화 작업은 다양한 오픈소스를 도입하거나 사용해보도록 할 때(혹은 권유할때) 제일 큰 난관이다. 미려한 화면이나 UI,UX 는 둘째고 한글화가 되어 있지 않으면 아오안(아웃오브안중^^)이 되기 십상이다.
한글이 깨지지 않고 보여야 다음을 진행할 수 있는 것이다. (그 다음은 매뉴얼일 수도 있고, 플러그인 개발일 수도 있다.) 아마도 일차관문에 쓰러지는 좋은 오픈소스들이 꽤 많으리라 생각된다.

그런데, 생각해보면 이런 지루한 한글화 작업이 다람쥐 쳇바퀴도는 것 같은 느낌이다.
개발시 다국어 지원하고자 하는 프로젝트라면 개별언어에 따른 별도 개발자가 따로 있을지도 모르고, 언어 번역 단어집(?) 같은 것이 있지 않을까? 메뉴에 쓰이거나 메세지에 쓰이는 문장은 비교적 일정한 범위에 있기 마련이다. 시나 소설을 번역하는 것보다는 일정부분 정형화 되어 있을 것이라는 생각이다.
국내의 한글화 작업은 그런 부분을 무시하고 무대뽀로 진행되는 듯 하다. 그런 단어집(?) 같은 것이 있다면 한글화 작업도 그 부분에 집중할 수 있을테고, 그러면 개발시에 바로 도입하는 오픈소스들이 많을 듯 싶다.
특이한 메세지에 대해 사후 번역하는 정도로 바로 한글화 작업을 할 수 있을 듯 싶다.

그런데 생각해보면 그런 형태는 큰 프로젝트에서는 있을 듯 한데, 작은 프로젝트에는 어려운일일지도 모른다. 보통 작은 규모의 프로젝트들은 개발자의 모국어와 영어 정도만 지원하는 것이 대부분이니...
큰 프로젝트에서는 다국화 환경대처와 다국어 사전(?)을 보유하고 있는 듯한데, 그런 부분도 작은 프로젝트에도 지원이 되면 좋겠다.(그렇게 진행하고 있는 곳이 있는지 궁금하다)
모질라프로젝트 같은 큰 규모에서는 충분히 할 수 있을 듯 한데, 어떤 문제가 있을까?



반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,
http://www.ubuntu.com
4월이 지나고, 10월이 되어 벌써 우분투 9.10 의 출시일이 얼마남지 않았다.

코드명은 Karmic Koala   보통 우분투 버전을 풀네임으로 쓰지 않으면 앞글자를 썼는데.
이번 버전은 뒷글자가 많이 쓰일듯 하다. 코알라. ^^

난 주로 LTS 버전을 사용한다. 그렇다 보니 아직 Hardy 를 쓰고 있다.
다음 LTS 버전은 10.04 인 Lucid Lynx 라고 한다.

이번 버전은 부팅속도가 상당히 빨라졌다고 한다.
아직 베타버전이지만, 설치해서 테스트 해봐야 겠다.


코알라.
반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,
기존에 qmail + vpopmail 을 cdb 방식으로 사용하다가 mysql 방식으로 바꿔서 설치해봤다.
특별한 차이는 없고, 계정정보를 mysql db 에 저장하여 사용한다.

그런데, 기존의 계정정보를 mysql 으로 옮기는 방법을 설명한다.
vpopmail 에 관련 명령이 있다. vconvert

vconvert 는 /etc/passwd 의 계정정보(기존 sendmail 방식이나, qmail + checkpasswd 방식) 를 옮길 수도 있고, cdb 방식 , mysql 방식등 서로간의 계정정보를 옮길 수 있다.

-e 는 /etc/passwd  에 해당하는 옵션이다.
-c 는 cdb 방식 , -m 은 mysql 방식(정확히는 sql)이다.

그래서 변환 방식은
vconvert -c -m  또는  vconvert -c -m {도메인명}
방식으로 변환하면 된다. ( FROM -c TO -m 의 순서라고 생각하면 된다.)

이때 변환시 vconvert 가 참조하는 파일은 /var/qmail/users/ 의 cdb 파일을 참조한다.
계정을 옮길때  기존의  ~vpopmail/domains 폴더와  /var/qmail/users 폴더를 백업해놓는다.
이 데이터를 기준으로 변환된다. 새서버 세팅후에 해당 디렉토리를 교체해준다.
위 명령으로 옮기면 된다. 이때 vpopmail.mysql 세팅이 되어 있어야 한다.
바로 mysql 에 연결해서 vpopmail 테이블에 계정정보를 저장하기 때문이다.


한가지 주의할 사항이 있다.
/var/qmail/users 를 옮겨올때,  vpopmail/vchkpw 의 UID/GID 가 동일하다면 상관없지만, 다르다면 바꿔줘야 한다.
+mydomain.com-:mydomain.com:108:107:/home/vpopmail/domains/mydomain.com:-::
108:107 부분을 새 시스템에 맞게 바꿔준다.
바꿔준후에 적용하는 방법은  /var/qmail/bin/qmail-newu  를 실행시켜주면 cdb 파일이 재 설정된다.


주의사항 하나더.
vconvert 하면  control 의 rcpthosts , virtualdomains 등의 설정도 자동갱신해주는 줄 알았는데.
수동으로 넣어줘야 한다. /var/qmail/control 도 같이 백업해 주는 것이 좋겠다.

반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,
지난번 qmail + vpopmail 은 cdb 를 이용하는 방법이었다.(http://blog.1day1.org/329)
즉, 사용자 계정정보를 txt 형태로 저장하는 것이었다.

사용자 계정정보를 mysql 을 이용한  디비에 저장하는 방법을 사용해보자.

기존 cdb 방식에서 " --with cdb " 를 빼고 SRPM 빌드를 하면된다.
rpmbuild --rebuild knetqmail-0.0.3.src.rpm

빌드전에 mysql-devel 패키지를 설치해준다.

mysql 이 /usr/local/mysql 에 설치가 되어 있지 않다면..
yum install mysql-devel
그리고, /usr/local/mysql/include , /usr/local/mysql/lib 를 각각  심볼릭 링크해준다. (64bit 환경)
ln -s /usr/include /usr/local/mysql/include
ln -s /usr/lib64 /usr/local/mysql/lib

빌드하고 설치 후에 mysql DB 생성 해준다.
mysql> create databases vpopmail ;
mysql>  GRANT  ALL PRIVILEGES ON vpopmail.* TO 'vpopmail'@'localhost'  IDENTIFIED BY '계정암호' WITH GRANT OPTION ;
mysql> flush privileges;
vpopmail 이 mysql 계정에 접근할 수 있도록 설정을 바꿔준다.
/home/vpopmai/etc/vpopmail.mysql 을 편집한다.
아래와 같은 라인을 DB 명및 계정/암호 등을 맞게 수정한다.
# host|port|user|password|database
#
localhost|0|root|secret|vpopmail
기본값이 root 계정을 이용하는 것인데, vpopmail 계정을 생성해서 해당 계정으로 바꿔주어도 된다.
계정및 DB 는 자신이 원하는 값으로 바꾸면 된다.
localhost|0|vpopmail|계정암호|vpopmail


vadddomain 등 명령을 내렸을때 다음과 같은 에러가 난다면...
Error - no authentication database connection. Initial open
vpopmail 에서 mysql 으로 연결이 정상적으로 이뤄지지 않는다.
64bit 환경에서 빌드한 경우 위와 같은 에러가 날 수 있다.
strace vadddomain mydomain.com >& debug.txt  
등으로 체크해보면...

위와 비슷한 메세지를 볼 수 있다.(처음 부분)
open("/usr/local/mysql/lib/mysql/tls/x86_64/libmysqlclient.so.15", O_RDONLY) = -1 ENOENT (No such file or directory)
stat("/usr/local/mysql/lib/mysql/tls/x86_64", 0x7fff9dba66c0) = -1 ENOENT (No such file or directory)
open("/usr/local/mysql/lib/mysql/tls/libmysqlclient.so.15", O_RDONLY) = -1 ENOENT (No such file or directory)
stat("/usr/local/mysql/lib/mysql/tls", 0x7fff9dba66c0) = -1 ENOENT (No such file or directory)
open("/usr/local/mysql/lib/mysql/x86_64/libmysqlclient.so.15", O_RDONLY) = -1 ENOENT (No such file or directory)
stat("/usr/local/mysql/lib/mysql/x86_64", 0x7fff9dba66c0) = -1 ENOENT (No such file or directory)
open("/usr/local/mysql/lib/mysql/libmysqlclient.so.15", O_RDONLY) = 3
진한 부분이 mysql 라이브러리를 불러오는 부분인데, 좀 이상하다.
윗부분에서 x86_64 에서 불러오지 못한다.  해당 위치를 확인해보면.(/usr/local/mysql/lib/mysql)
-rw-r--r-- 1 root root  21408 Sep 22  2008 libdbug.a
-rw-r--r-- 1 root root  73040 Sep 22  2008 libheap.a
-rw-r--r-- 1 root root 465624 Sep 22  2008 libmyisam.a
-rw-r--r-- 1 root root  41978 Sep 22  2008 libmyisammrg.a
-rw-r--r-- 1 root root 872012 Sep 22  2008 libmysqlclient.a
-rwxr-xr-x 1 root root    879 Sep 22  2008 libmysqlclient.la
lrwxrwxrwx 1 root root     24 Sep 22  2008 libmysqlclient.so -> libmysqlclient.so.15.0.0
lrwxrwxrwx 1 root root     24 Sep 22  2008 libmysqlclient.so.15 -> libmysqlclient.so.15.0.0
-rwxr-xr-x 1 root root 640162 Sep 22  2008 libmysqlclient.so.15.0.0
-rw-r--r-- 1 root root 493164 Sep 22  2008 libmystrings.a
-rw-r--r-- 1 root root 448720 Sep 22  2008 libmysys.a
-rw-r--r-- 1 root root  11890 Sep 22  2008 libvio.a
이런식이다. x86_64 같은 경로는 없다.(위의 라이브러리는 rpm 설치시 복사되는 듯 하다. 혹은 rpmbuild 시)
즉, 64bit 환경에서는 x86_64 에서 불러와야 하는데, 아무도 32bit 라이브러리를 불러오기 때문인 듯 싶다.

/usr/local/mysql/lib 를 libx 로 이름을 바꿔보고 다시 테스트 해봤다.
open("/usr/local/mysql/lib/mysql/tls/x86_64/libmysqlclient.so.15", O_RDONLY) = -1 ENOENT (No such file or directory)
stat("/usr/local/mysql/lib/mysql/tls/x86_64", 0x7fffbebbde90) = -1 ENOENT (No such file or directory)
open("/usr/local/mysql/lib/mysql/tls/libmysqlclient.so.15", O_RDONLY) = -1 ENOENT (No such file or directory)
stat("/usr/local/mysql/lib/mysql/tls", 0x7fffbebbde90) = -1 ENOENT (No such file or directory)
open("/usr/local/mysql/lib/mysql/x86_64/libmysqlclient.so.15", O_RDONLY) = -1 ENOENT (No such file or directory)
stat("/usr/local/mysql/lib/mysql/x86_64", 0x7fffbebbde90) = -1 ENOENT (No such file or directory)
open("/usr/local/mysql/lib/mysql/libmysqlclient.so.15", O_RDONLY) = -1 ENOENT (No such file or directory)
stat("/usr/local/mysql/lib/mysql", 0x7fffbebbde90) = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY)      = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=84051, ...}) = 0
mmap(NULL, 84051, PROT_READ, MAP_PRIVATE, 3, 0) = 0x2b05b2aa7000
close(3)                                = 0
open("/usr/lib64/mysql/libmysqlclient.so.15", O_RDONLY) = 3
역시 마지막줄의  /usr/lilb64/mysql 에서 불러오는 것을 볼 수 있다.
이렇게 하면 정상적으로 에러없이 계정이 생성된다.

또는  /usr/local/mysql/lib/mysql/  에  심볼릭 링크를 걸어줘도 된다.
ln -s /usr/lib64/mysql  x86_64
아무튼 /usr/local/mysql/lib/mysql/libmysqlclient.so.15 을 불러오면 64bit 에서는 정상실행(연결)되지 않는다.

ps. 일반적으로  /usr/local/mysql 에는 아무것도 없을 것이다.
 (mysql 을 소스컴파일 해서 해당 위치를 지정하지 않는이상)
 가상머신에 깔려있는 VM 이미지가  mysql 이 설치되어 있는 것 같다.



근데 궁금한 것이 있다.
과연 vpopmail 을 mysql 연결이 어떤 이점이 있을까?
아무래도 파일보다는 DB 가 관리상 편하긴 할 것이다.
그런데, 메일의 잦은 접속때문에 DB connect 문제가 생기지 않을까?
계정확인을 위한 select 가 거의 대부분을 차지 하기 때문에 큰 문제가 아닐까?
메일서버가 DB서버도 겸하고 있을때는 한쪽의 부하가 다른 쪽에 영향을 주지 않을까?
아니면 vpopmail 의 컨넥션은 한번 이루어지고 계속 연결상태를 유지하나?(소스를 들여다 봐야 겠다)


반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,
큐브리드 를 설치하고, php 모듈을 올리기 위해 몇가지 주의할 사항이 있다.

참고로 http://blog.1day1.org/324  는 우분투64bit 환경에서 모듈컴파일 하는 방법이다.
우분투 64bit 의 php 는  Centos 의 php 모듈로도 쓸 수 있다.
다만 몇가지 환경이 맞아야 한다.

큐브리드 공식페이지에서는 현재 소스형태로 제공되고 있다.
이전에는 ( http://dev.naver.com/projects/cubrid-php/download )
Centos 5, php 5.1.6 을 기준으로 cubrid.so 를 배포했다. 같은 환경이라면 정상적으로 작동하지만, 다른 환경에서는 따로 소스를 컴파일해서 사용해야 한다.

1. php 버전이 맞아야 한다.
  centos 5.1.6 이 공식버전이고,  우분투는 5.2.x 버전이다.
  둘중 하나를 맞춰야 한다. ( 나는 centos 를 업그레이드 했다. )

2. 64bit(x64) , 32bit (i386) 가 맞아야 한다.
  당연하겠지만, 사용되는 라이브러리 등이 달라지기 때문에 아키텍트(?)를 맞춰야 한다.



기타 cubrid 설치위치도 영향을 주는가?
테스트를 해보니, 기본 /opt/cubrid 에 설치된다.(rpm 패키지 기준)
바이너리를 비교해보니, cubrid 설치위치가 다른 부분이 있다.
다른 환경들도 테스트 해보겠지만, cubrid 설치위치도 영향을 주는 듯 하다.
아직 정확한 테스트를 하지 않아서 어떤 영향을 주는지 혹은 영향이 없는지 확인하지 않았다.

직접 설치시 다른 경로로 지정하는 경우에는 php 모듈이 작동하지 않을 수 있다.
모듈이 정상적으로 올라오지 않으면 이 부분을 확인해 본다.


[추가]
3. cubrid 설치 위치도 어느정도 영향이 있다.
위 사항을 테스트 한 결과를 정리해본다.

모듈이 제대로 올라오지 않는 경우 아파치에러로그에 다음처럼 메시지가 나온다.
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib/php/modules/cubrid.so' - libcascci.so.8: cannot open shared object file: No such file or directory in Unknown on line 0
cubrid.so 모듈이  libcascci.so.8 을 로드하는데 실패했기 때문이다.
공유라이브러리의 문제라면
/opt/cubrid/lib64 에서 해당 라이브러리 파일을 만들어 준다.
-rw-r--r-- 1 root root 586516 2009-09-20 18:41 libcascci.a
lrwxrwxrwx 1 root root     18 2009-09-23 18:34 libcascci.so -> libcascci.so.8.2.1
-rwxr-xr-x 1 root root 348625 2009-09-20 18:41 libcascci.so.8.2.1
이런식으로 libcascci.so 만 생성되어 있다.
ln -s libcascci.so.8.2.1 libcascci.so.8
이렇게 링크해서 만들어 준다.(설치시 왜 만들어 주지 않는지 모르겠다. (lib 쪽은 생성되어 있다.)



centos i386/x64 , ubuntu i386/x64  에서 테스트 중인데, 작동여부가 조금씩 차이가 있다.
결과가 뒤죽박죽이라 조금 혼란스럽다.(추후 다시 정리해야 겠다)

반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,