설치해야할 패키지

apt-get install language-pack-ko


Posted by 하루하루

UAS Compile 방법.

eFolder : 2007. 12. 27. 17:47
build dependencies:

    libmysqlclient14-dev
    GNUstep-make(download from www.gnustep.org)

[]# cd gnustep-make-2.0.2
[]# ./configure
[]# make
[]# make install

기타 개발 패키지(gcc,make 기타 등등) 빌드 하기전에 설치 해야 하는 패키지들

[]# . /usr/GNUstep/System/Library/Makefiles/GNUstep.sh

64비트 환경에서 빌드 작업 디렉토리:
CryptPWD, DESCrypt, INIParser, StateThreads
[]# make
[]# cd shared_obj
[]# ar ruv libCryptPWD.a *.o
[]# cp libCryptPWD.a ../../UAS/Libraries/

1. 생성된 정적 라이브러리를 ar로 아카이브를 만든다
2. 생성될 아카이브 파일들을 UAS/Libraries에 카피 한다. * libCryptPWD.a * libDESCrypt.a * libINIParser.a * libStateThreads.a

  • UAS/Typedef.h에서 자료형 long을 int로 수정한다.
Posted by 하루하루
1. 먼저 필요한 버전 (지금은 1.4.6) 소스 패키지를 받아온다.
   deb-src http://ftp.us.debian.org/debian sid main non-free contrib

2. 관리 편의상 /usr/src/package 디렉토리를 만들고 그 안에서
    apt-get source openafs 를 하여 openafs 소스 패키지를 받아온다.

3. 받아온 패키지 디렉토리 안으로 들어가서, dpkg-buildpackage 실행 한다.
    이렇게 실행하면, 생성되는 libafsrpc.a 를 빌드할때 컴파일 옵션에 -fPIC 가 붙지 않아서
    나중에 perl AFS Module 를 64bit 에서 컴파일 할때 문제가 생긴다.
    따라서, debian/rules 파일을 수정한다.

    configure 부분을 찾아서 다음과 같이 고친다.
    
CC="gcc -fPIC" CFLAGS="-fPIC" ./configure \

   강제로 컴파일러 설정 부분에 -fPIC 설정을 해준다.

4.  그리고, dpkg-buildpackage 실행.

5.  생성된 .deb 파일을 가지고 설치.

< perl AFS Module 설치 amd 64bit>

1. AFS-2.4.0 소스를 다운 받는다.

2. 적당한 곳에 압축을 풀고, src/Makefile.PL 파일을 수정한다.

    amd64 부분을 검사하는 곳을 주석처리한다.

3. perl Makefile.PL 실행.

4. make && make install



Posted by 하루하루
기본적으로 ubuntu 를 설치하면, 개발자에게 정말 필요한 패키지가 설치 되지 않습니다.
저도. 오늘에야 컴파일을 해보고 알았다는... -_-;;;

sudo apt-get install build-essential
sudo apt-get install manpages-dev

위 명령어를 통해서 개발툴을 설치하도록 합시다~ ^^
Posted by 하루하루
prototype.js 기반의 간단한 javascript alert box 라이브러리 - embox.js


 prototype.js  와 javascript 를 공부하면서 배웠던것을 써먹어 보기도 할겸, 겸사겸사 한번 만들어 봤습니다. 보기싫은 alert 창 대신에 lightbox 느낌으로 경고를 해줄수 있게 됩니다.

사용 방법은 간단합니다.
압축 해제 하고 나서 나오는 js 파일과, css 파일을 각각 필요한 장소에 복사 하시고, 필요한 곳에서 링크를 걸어주세요 그리고서, 다음과 같이 코드를 작성해 주시면 되겠습니다.

function onBoxShow(msg){
    var objBox = new embox(msg,{width:'400', height:'200' });
    objBox.showBox();
}

전체 코드는 압축 해제하면 나오는 embox.html 을 참조 하세요. ^^;

embox 클래스의 문법은 다음과 같습니다.

- syntax -
 new embox(msg, {options});

- example -
 var objBox = new embox('hi there~!!', {url:"http://efolder.tistory.com", btnValue:"Go Go", width:'400', height:'200'});
 objBox.showBox();


options 에 옵션을 넣느냐 마느냐에 따라서 동작 방식이 달라지게 됩니다.
현재는 4개의 options 를 정의 할 수 있습니다. width와 height 를 정의 하지 않으면 default 값이 들어가게 되고요, btnValue 를 지정하게 되면 경고창에 나오게 되는 버튼에 표시되는 문자를 정의 할 수 있습니다.  마지막으로, url 옵션은 btnValue 와 함께 쓰여야 하는데요, url 을 써주게 되면 창이 닫히면서 지정한 url 로 페이지가 이동하게 됩니다.

정리를 해보자면

  • lightbox 처럼 사용하려면 : btnValue 옵션을 주지 않습니다.
  • 창의 크기를 조절하려면 : width, height 값을 조절 합니다. 주의 할점은 숫자만 쓰면 됩니다. px 와 같은 단위를 붙일 필요 없습니다.
  • 버튼을 클릭하게 하여 닫히게 하고 싶을때는 : btnValue 옵션을 줍니다.
  • 경고창이 닫힐때 원하는 url로 이동하려면 : url 옵션과, btnValue 옵션을 줍니다.

간단하죠? ^^;

사용자 삽입 이미지






Posted by 하루하루
지난주 금요일이죠.
6월 22일에 소래포구에 다녀왔습니다.
저희 회사 내부 시스템지원과 워크샵 이었구요...

간단히 저희 회사 일원의 job 을 설명 드리자면, 일단 자신의 main job 이 있구요.
그건 자신이 속한 팀이 됩니다. 저같은 경우에는 eFolder Team 이구요.
그리고, 다른 하나의 side job 을 갖게 됩니다. 이건 회사에 두개의 조직이 있는데요. 아직 규모가 크지 않은 우리 회사의 특성상 회사를 좀더 잘 굴러 갈 수 있도록 이렇게 나눴다고 합니다. side job 으로는 두개의 과가 있는데, 관리과와 시스템 지원과 로 나뉘게 됩니다.
저의 경우에 시스템 지원과구요. 이번에 간 워크샵은 이 시스템 지원과에서 간것이지요. ^^



전날 비가 많이 와서, 워크샵 당일날 비가 많이 오면 어쩌나 걱정했습니다만, 기우였습니다.
완전 쨍쨍, 무자게 더웠지요.
사용자 삽입 이미지

출발하기전, 편의점에서 음료수를 사오고 있습니다. 아~ 더워보이지 않습니까...

사용자 삽입 이미지

도착했습니다. 차를 주차를 하고 나니, 20번 버스가 보이는군요. 간단히 이정표(?)를 보니 백운역에서 내려서 20번을 타면 소래에 도착하는거 같네요. ㅋㅋ

사용자 삽입 이미지

바다에 왔다고... 한컷...

사용자 삽입 이미지

갈메기도 한컷~ 갈메가기 무자게 많이 날라다니던데요.. ^^

사용자 삽입 이미지

이 바퀴벌레 한쌍은 제가 몰레 도촬한 것인데.. ㅋ 종식씨가 확 밀어버리고 싶다고 하던..커플입니다. 날도좋고, 한가로운데 연신 키스를 하며 데이트를 즐기는 모습이 참 부러웠나 봅니다. ^^;;

사용자 삽입 이미지

사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지

예전에는 기차가 다니던 철로라고 하던데요. 지금은 다리처럼 꾸며 놓았더군요. 그 위를 걸어가면서 몇컷 찍었습니다. 물이 들어왔으면 더 좋았을텐데.. 아쉬웠습니다.
사용자 삽입 이미지
원래는 철길 다리를 건넌것이 넓은 바다를 보기 위한 것이었는데요. 바다를 보려면 저~~어기뒤에 보이는 곳까지 걸어가야 할 판이라 바로 이곳에서 그냥 다시 돌아왔습니다. -_-;;

사용자 삽입 이미지
사용자 삽입 이미지

다시 건너와서 어느집으로 회와 조개구이를 먹으러 갈까 고민하는 중....

사용자 삽입 이미지

고민하다가 뻔데기도 하나 사고... ^^;

사용자 삽입 이미지
사용자 삽입 이미지

드뎌 들어왔습니다. 푸짐하더군여.. ^^;

사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지

아~ 맛나게 회를 한점 쏘옥~!! 크아~

사용자 삽입 이미지

사용자 삽입 이미지

사용자 삽입 이미지

저는 돌아오는 길에 운전을 책임 져서 술은 먹지 않고, 열심히 조개와 회를 먹으며 사진을 찍었습니다. ^^
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지

이집 이네요.. 이렇게 디스플레이를 하더군요.  ^^ 서울에서도 조개구이집에서 이렇게 하는지 모르겠는데요... 저는 처음 봤어요~~~ ^^

이렇게 소래포구에서의 워크샵은 끝이 났습니다.
그뒤 서울로 와서 전이사님과 합류하여 2차를 했다는... ^^;;

사진 더 보기.. ^^


시스템지원과워크샵-소래포구
Posted by 하루하루
쉘 스크립트입니다.
보통 작업을 하다가 보면, 어떤 특정한 디렉토리안의 모든 파일에서 특정한 문자열을 전부 바꿔주어야 하는 경우가 종종 있습니다.
이럴때는 다음과 같이 One line Script 를 기억해 주시길 바랍니다. ^^


[]# for filename in $(ls -l targetdir | grep -v '^d' | awk '{print $8}'); do  sed -e 's/OLD STRING/NEW STRING/g' targetdir/$filename > NEWDIR/$filename; done;


Posted by 하루하루

오늘은 코드 이야기좀 하겠습니다.  일종의 삽질기 입니다...;;
고수분들이 보시면 황당한 해법일 수도 있겠으나, 나름 고민한 최선의 방법 이네요. 크흑.
더 좋은 방법을 알고 계시면 트랙백 달아주세요....


어떤 데몬의 모니터링 스크립트를 만들다 보면 다음과 같은 문제점에 봉착할때가 있습니다.

해당 데몬이 제 역할을 수행하고 있는지를 확인하는데 사용하는 tool 로써 'monitorTool' 이라는게 있다면 보통 다음과 같이 실행을 시켜 보겠지요

[]# monitorTool example.co.kr


그럼 결과는 보통 3가지로 나타나게 됩니다.

1. OK
2. FAIL
3. WAIT

해당 툴을 가지고 모니터(상태 체크) 스크립트를 짤때 문제가 되는것은 3번 입니다. 시간이 중요한 상태체크에서 WAIT 가 걸려 버리면, 보통 일정 TIMEOUT을 주고 해당 시간이 지나서 리턴이 되게 되면 FAIL 로 처리하게 됩니다.

이게 보통의 로직이죠. 그런데, perl 과 같은 스크립트에서 다른 바이너리 명령어를 써서 모니터링을 할때는 이런 처리를 하기가 쉽지 않네요.

왜냐하면 보통 외부 프로그램을 실행 시킬때는 exec()  , system() , open() 함수로 실행을 하기 때문이지요.  이때  메인 스크립트에서 TIMEOUT 을 줄수 있는 방법은 없습니다. ( 혹시 아시는분 트랙백....혹은. 댓글.... 부탁 드려요..) 그래서 저는 c로  monitorTool를 실행할 컨테이너를 하나 만들었습니다. c 에서는 쓰레드로 빼서, TIMEOUT을 줄 수 있으니 가능 하더군요.

perl 스크립트 에서..

...
open(FH, "./runMonitorTool $REMOTE_HOSTNAME |");
my $ret = <FH>;
...

이런식으로 하면,  runMonitorTool 이라는 c 프로그램이 찍는 output 메세지 들을 FH 에서 받을 수가 있습니다. 따라서, C 프로그램에서 상태에따라 다른 값을 넘겨주면 좀더 세세한 제어가 가능해 지겠죠.

TIMEOUT 문제는 해결된거 같은데 아직 문제는 남아 있습니다.
monitorTool 이 사용자에게 알려주는 정보는 해당 시스템이 괜찮다 아니다를 메세지를 찍어서 보여주게 된다고 가정을 하면, 지금까지 한 프로그램은 큰 오류가 있습니다. WAIT에 걸리지 않고, 장애시 바로 리턴하게 되면 이때도 장애로 인식하지 않는것이죠. TIMEOUT에 걸리지 않았으니까요.

이 문제를 해결하기 위해서는 monitorTool 이 뿌려대는 메세지를 파싱해서 장애 판단을 해야 합니다. 하지만, C 에서 외부 프로그램을 실행하고, 그 외부 프로그램이 실행하면서 뿌려대는 메세지를 받을수가 없더군요. ( 이것또한 방법을 아시는 분은 저에게 트랙백이나.. 댓글을...쿨럭..;;;; ) 하지만, 프로그램이 실행후 끝나는 종료 코드는 얻어 올수 있지요.

그래서, 마지막으로 monitorTool 을 실행시킬 perl 코드를 짭니다. -_-;;; perlRunMonitor.pl 을 만듭니다. 이넘은 무슨 짓을 하냐면 단순히 monitorTool 을 실행시키고 메세지를 받아서 파싱하여 장애 판단후 종료 코드를 주어서 종료합니다.

이를테면 다음과 같죠

#!/usr/bin/perl

.....
open (FH , "monitorTool server |");
my $statusOK = 0;

while(my $ret = <FH>) {
        if( $ret =~ /I am OK/g ){
                $statusOK =1;
                break;
        }
}

close FH;

if( $statusOK == 0 ){
        exit 1;
}

이렇게 되면, 지정된 OK  문자열이 파싱될경우를 제외하고는 종료코드 1을 리턴하게 됩니다. 지정된 OK 문자열이 파싱될경우에는 정상 종료를 하게 되지요.
그럼 C 에서는 종료 코드를 얻어와서 그에 맞게 처리해 주고, TIMEOUT 이 나면 이것또한 에러처리를 해주게 됩니다.

그럼 정리를 해보면 다음과 같습니다.

PERL Main Script  -> C Run Container -> Perl Run Script


아 삽질이군여. 좀더 좋은 방법을 아시면 알려주세요오오오....

Posted by 하루하루
우분투 설치하고... ( 처음부터 한글로 하든... 영어로 하든... 현재 상태가 한글입력기는 있는 상태라고 가정한다.) freemind 를 설치한 다음에 한글을 적어넣지 못할 때.

나의 경우
OS : Ubuntu 7.04 Feisty Fawn
환경 : 초기 한글 설치로 한글 입력기 있음.
문제 : freemind 설치 후 메뉴에서 한글이 다 깨져나오며, 또한 한글 입력시 ㅁ 만 나오면서 제대로 입력이 안됨.

해결(=> 설치 history)
4. Freemind
   []# http://freemind.sourceforge.net/wiki/index.php/Main_Page
   []# sudo apt-get install java-package sun-java6-jre rhino libjcalendar-java librelaxng-datatype-java libjaxp1.2-java libcommons-lang-java libbsf-java
   []# Debian Linux - link click
   []# freemind_0.8.0-1_all.deb, freemind-plugins-help_0.8.0-1_all.deb, freemind-plugins-svg_0.8.0-1_all.deb
       freemind-plugins-time_0.8.0-1_all.deb, libforms-java_1.0.5-2_all.deb - Download
   []# Ref. : http://siliconchaos.blogspot.com/2006/05/setting-up-freemind-in-ubuntu-dapper.html
   []# libbatik-java_1.5.1-1_all.deb - Download
   []# sudo dpkg -i AllDownloadedFile
4.1 여기서 프로그램 자체에서 한글 세팅을 못가져옵니다.(이미 한글 세팅 다 되어 있음.)
    이유는 자바설치 시 기본적으로 잡는 한글 폰트의 path 가 틀리게 잡혀있기 때문입니다.
    이걸 바로 잡으면 한글이 제대로 나옵니다.
   []# cd /usr/lib/jvm/java-6-sun/jre/lib/
   []# sudo vi fontconfig.properties    : 실제 이 파일은  /etc/java-6-sun/ 에 링크된 파일입니다.
    filename.-misc-baekmuk_batang-medium-r-normal--*-%d-*-*-c-*-iso10646-1=/usr/share/fonts/truetype/batang.ttf
    filename.-misc-baekmuk_gulim-medium-r-normal--*-%d-*-*-c-*-iso10646-1=/usr/share/fonts/truetype/gulim.ttf
     위 두줄이 잘못되어 있습니다. 각 ttf 파일 앞에 baekmuk 라는 디렉토리가 들어가면 됩니다. 다음과 같이 ^^
    filename.-misc-baekmuk_batang-medium-r-normal--*-%d-*-*-c-*-iso10646-1=/usr/share/fonts/truetype/baekmuk/batang.ttf
    filename.-misc-baekmuk_gulim-medium-r-normal--*-%d-*-*-c-*-iso10646-1=/usr/share/fonts/truetype/baekmuk/gulim.ttf
   []# Ref. : http://www.ubuntu.or.kr/wiki.php/
          http://www.ubuntu.or.kr/wiki.php/MainPage
          http://www.ubuntu.or.kr/wiki.php/%ED%95%9C%EA%B8%80%EC%84%A4%EC%A0%95
          http://www.ubuntu.or.kr/wiki.php/JDK1.5%ED%95%9C%EA%B8%80%ED%99%94
          http://www.ubuntu.or.kr/wiki.php/JavaInstall
          http://www.ubuntu.or.kr/wiki.php/JDK1.5%ED%95%9C%EA%B8%80%ED%99%94#s-3

이상입니다.
그럼 수고하세요.
Posted by 알 수 없는 사용자
설치할 때 실수로 타임존을 엉뚱한 걸로 맞추어놓고 세팅했었네요.
그래서 기존에 사용했던 rdate, ntpdate 등을 사용해서 맞추어봤는데 잘 안되어서,
아예 타임존을 바꾸는 방법을 찾아서 세팅했습니다.

환경
OS : Ubuntu Feisty fawn 7.10
기존 타임존 : US/Eastern

바꾼 히스토리
[]# mv /etc/localtime /etc/localtime-ORIG
[]# ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime


헐.... 이렇게 하는 방법을 취하기까지 시간 소비 좀 했습니다. ^^;

Posted by 알 수 없는 사용자