2010년 1월 31일 일요일

오드로이드에서 둠 실행

안드로이드 작업 좀 하다가 오드로이드에 고전 게임 둠(DOOM)을 올려서 테스트 해봤습니다.
제가 게임은 발컨이라 어렵더군요. 그냥 성능 테스트겸해서 올려봤습니다.
참고 : http://code.google.com/p/doom-for-android/

우분투 9.10에서 안드로이드 소스 컴파일 환경 만들기

■ 우분투에서 안드로이드를 소스 컴파일하기 위해 다음과 같은 패키지들이 필요합니다.
참고 : http://source.android.com/download

  • Git 1.5.4 or newer and the GNU Privacy Guard.
  • JDK 5.0, update 12 or higher.  
  • Java 6 is not supported, because of incompatibilities with @Override.
  • flex, bison, gperf, libsdl-dev, libesd0-dev, libwxgtk2.6-dev (optional), build-essential, zip, curl. 

위와 같이 각종 패키지를 설치하면 되지만, Java 6를 지원하지 않기 때문에 주의해야 하고, 또한 우분투 9.10에서는 Java1.5가 패키지로 포함되어 있지 않습니다. 이 부분을 먼저 해결하고 나머지 패키지를 설치합니다.

■ 우분투 9.10에 Java 1.5 설치하기
Step 1) 저장소 추가
. 우분투 상단메뉴에서 "시스템" > "관리"에 포함된 프로그램 중 "소프트웨어 소스"를 실행합니다.
. "기타 소프트웨어"탭을 선택하고 추가 버튼을 눌러 다음 두줄을 차례로 추가합니다. (공백주의)
. /etc/apt/sources.list에 직접 추가해도 됩니다.
deb http://kr.archive.ubuntu.com/ubuntu/ jaunty multiverse
deb http://kr.archive.ubuntu.com/ubuntu/ jaunty-updates multiverse
. 오래된 패키지 어쩌구 하는데 오래된거 업데이트 합니다. ^^
. 정상적으로 추가되면 우분투 9.04 '잔티 자카롭'추천하는 업데이트가 체크되어 보입니다.

Step 2) Java 1.5 관련 패키지 설치
. 터미널에서 Java 1.5 및 플러그인 패키지를 설치하고 확인합니다.
$ sudo apt-get install sun-java5-jdk
$ sudo apt-get install sun-java5-plugin
$ sudo update-java-alternatives -s java-1.5.0-sun
$ java -version
java version "1.5.0_19"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_19-b02)
Java HotSpot(TM) Client VM (build 1.5.0_19-b02, mixed mode, sharing)

■ 나머지 패키지 설치하기
$ sudo apt-get install git-core gnupg flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl libncurses5-dev zlib1g-dev
. 정상적으로 설치되면 안드로이드를 소스 컴파일 하기 위한 기본 패키지가 준비됐습니다.

■ 안드로이드 소스 다운로드
Step 1) curl을 이용하여 repo스크립트를 다운로드 받습니다.
$ cd ~
$ mkdir bin
$ curl http://android.git.kernel.org/repo >~/bin/repo
$ chmod a+x ~/bin/repo
$ export PATH=$HOME/bin:$PATH

Step 2) 안드로이드 소스를 다운로드 받습니다.
$ mkdir mydroid
$ cd mydroid
$ repo init -u git://android.git.kernel.org/platform/manifest.git
$ repo sync
. 중간에 머 물어보는데 대충 둘러대시고, sync로 다운로드 받습니다. (상당히 올래걸립니다.)
. 모두 다운로드 받아지면 다음과 같은 파일이 보입니다.

Step 3) 안드로이드 컴파일
$ make
. 컴파일 정상적으로 시작되고 진행되면 이젠 기다리는 일만 남았습니다.
. 컴파일이 끝나면 ~/mydroid/out/target/product/generic 디렉토리에 결과물이 생깁니다.

■ 기타 리눅스 설치(SULinux 또는 Redhat계열)
Step 1) java1.5 설치
. 본인의 플렛폼에 맞는 rpm버전이나 tar버전을 설치합니다. (/usr/local/java1.5에 설치)
. /etc/profile.d/java.sh를 작성합니다.
export JAVA_HOME=/usr/local/java1.5
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=$JAVA_HOME/jre/lib/ext:$JAVA_HOME/lib/toos.jar

Step 2) 패키지를 설치합니다.
# yum clean all
# yum install zlib-devel flex bison gperf SDL-devel.i386 ncurses-devel.i386

Step 3) git 설치
# wget http://www.codemonkey.org.uk/projects/git-snapshots/git/git-latest.tar.gz
# tar xvfz git-latest.tar.gz
# cd git-{date}
# autoconf
# ./configure --with-curl=/usr/local --prefix=/usr/local/git
# make
# make install
# export PATH=$HOME/bin:/usr/bin:/usr/local/git/bin:$PATH

Step 4) 안드로이드 소스 다운로드는 우분투 진행과 동일

MS도 스마트폰 출시

모바일 춘추전국 시대에 MS의 모습은 눈에 띄지 않고 있었는데 갑자기 MS도 스마트폰을 독자개발을 하고 내놓는다는 소문이 돌고 있습니다.

아무래도 애플과 구글의 안드로이드를 보고 자극을 받았을 겁니다. 지금의 모바일 시장을 보면 MS는 잠도 못잘것 같다는 생각이 드는데, 입소문 마켓팅으로 시장의 기대심리를 자극하고 넥서스원처럼 '빵'하고 터트릴지도 모르겠네요.

표면적으로는 자체 스마트폰 출시에 대한 언급을 일절하고 있지 않지만, 지금 열심히 출시준비를 하고 있는 모습을 여기 저기서 접할 수 있습니다. 개인적으로는 MS 스마트폰에 대해 기대감이나 신비감같은것은 솔직히 없습니다. 디자인이나 기술적인 매력이 별로 없고, 핵심적인것은 오픈되어 있지 않습니다.

일단은 실체를 봐야 알겠지만 현재 떠도는 소문으로는 '핑크폰'이라는 이름으로 폰출시가 될것이고, 윈도모바일7.0이 탑재되어 나올거라고 합니다. MS도 모바일 시장에서 이대로 주저 앉을리 없고, 출시 이후 시장의 평가에 따라 모바일 시장은 더욱 후끈해 지겠지요^^

출처 : http://www.zdnet.co.kr/ArticleView.asp?artice_id=20100122091017


어처구니 애플

잡스 아저씨가 iPad 만드는데 너무 열중한 나머지 중요한 인터넷 도메인은 홀랑까먹으셨네요. 쩝...우짜쓰까...

ipad.com, net, org 최상위 도메인은 커녕 다른 여타 중요한 도메인도 등록을 못한거 같은데, 앞으로 아이패드가 갈길이 순탄치 않을거 같습니다. 이미 제품자체에 대한 불만과 평가절하가 만만치 않게 포스팅되고, 벌써 개선점에 대해서 좔좔 흘러나오고 있네요.

그런데 이해 안되는것은 애플이 어쩌다 이런 실수를 한것인지 좀 납득이 안가는 부분이 있습니다. 그런 대기업에서 최상위 도메인을 놓쳤다는게 어이없고, 만약  제가 경영자라면 절대 용납할 수 없는 일이 벌어진 겁니다. 한 기업에서 현재 주력상품의 도메인을 신경안쓰고 있었다는건 다른 부분에서도 문제가 있었거나 생길 수 있는 틈이 보인다는 겁니다.

정말 자신감이 넘쳐서 apple.com 하나로 모든걸 대표하겠다 그러면 모를까, 일반 사람들은 바로 ipad.com을 쳐볼텐데 그럴때 엉뚱한 페이지가 나오면 당황스러워 할것이고, 애플의 이미지도 달라지지 않을까 생각됩니다.

그나저나 이 건으로 도메인 선점한 사람은 애플하고 소유권 이전 비용으로 즐거운 비명을 지르는건 아닌지 모르겠습니다.

출처 : http://www.dt.co.kr/contents.html?article_no=2010013002019922601002

2010년 1월 29일 금요일

안드로이드 개발환경 만들기

■ Java + Eclipse + Android SDK 설치 및 설정 (Windows 환경)
Step 1) Java SDK 설치
. JDK를 설치하기 위해 http://developers.sun.com/downloads/ 사이트로 이동합니다.
. Java SE 카테고리에서 Java SE(JDK)6을 다운로드 합니다.
. 여러 버전이 존재하지만 어렵지 않게 Standard Edition을 찾을 수 있습니다.
. 다운로드 받은 JDK를 설치합니다.

Step 2) 이클립스 SDK 설치
. 이클립스를 설치하기 위해 http://www.eclipse.org/downloads/ 사이트로 이동합니다.
. 여기도 여러 버전이 존재하는데 Eclipse Classic을 찾아서 다운로드 합니다.
. 이클립스는 설치라기 보다는 압축만 풀어서 원하는 폴더에 복사해서 사용하시면 됩니다.

Step 3) 안드로이드 SDK 설치
. 안드로이드 SDK를 설치하기 위해 http://developer.android.com/sdk/ 사이트로 이동합니다.
. 플렛폼별 SDK가 존재하므로 해당 패키지를 다운로드 합니다.
. 안드로이드 SDK도 설치 과정은 없으니 압축을 풀어서 원하는 폴더에 복사해서 사용하시면 됩니다.

Step 4) 안드로이드 플러그인 설정
. Eclipse 3.5 (Galileo)를 기준으로 설명합니다.
. 이클립스를 실행하고 메뉴 "Help"의 하위메뉴 "Install New Software"를 실행합니다.

. "Add"를 클릭하고 위와 같이 적당한 이름과 플러그인 주소를 넣어 줍니다.
. https://dl-ssl.google.com/android/eclipse/ 또는 http://dl-ssl.google.com/android/eclipse/
. 이상없이 플러그인을 찾으면 리스트에 Developer Tools라고 나타나는데 체크박스를 체크하고 설치를 진행합니다.

Step 5) 이클립스 안드로이드 SDK 설정
. 이클립스에게 안드로이드의 SDK경로를 알려줍니다.
. 이클립스 메뉴에서 "Window"의 하위메뉴 "Preference"를 실행합니다.
. Android 항목을 선택하고 안드로이드SDK의 경로를 잡아주시면 됩니다.


안드로이드는 OS일까? Framework일까?

제목처럼 안드로이드는 운영체제(OperatingSystem)일까? 아니면 프레임웍(Framework)일까? 안드로이드의 정체성이 무엇인지 명확하게 머리에 들어오지 않아서 나름 정리하고 넘어갑니다.

안드로이드 머있나...그냥 휴대폰에서 돌아가는 프로그램이겠지...하고 그냥 넘긴다면 분명 일반사용자의 입장일 것이고, 적어도 리눅스와 자바가 짬뽕된 거시기를 생각하면 개발자측에 속하는 사람일 겁니다.

결론부터 말하면 안드로이드는 모바일 디바이스를 위한 소프트웨어 종합선물세트이고, 모바일 분야에만 국한되지 않는 영역을 포함하고 있습니다.
위 그림은 안드로이드의 아키텍처를 보여주는 다이어그램으로 안드로이드 개발자 사이트에서 제공하며, 대략 살펴보면 리눅스 커널, 라이브러리, 자바 가상머신, 프레임웍, 응용프로그램층을 형성하며 일반PC의 OS와 별반 다를게 없는 패턴을 보여주고 있습니다.

여타 OS와 다를게 없는데 그럼 무슨 종합선물세트인가???

우리는 여기서 안드로이드가 가지고 있는 가능성에 대해서 폭넓게 생각할 수 있어야 합니다. 모든 아키텍처가 공개되어 있기 때문에 폐쇄적인 기존 모바일의 그것들과는 시간이 지나면서 궤를 달리할거란 얘기죠.

기업의 입장에서도 이미 검증된 기술들이고 원가절감 차원에서도 다방면의 제품에 안드로이드의 기술을 적용하면 이보다 더 좋은 생산시스템은 없는거죠.

신이 인간에게 준 최고의 선물은 창조할 수 있는 능력이라 생각합니다. 폐쇄된 안정보다 미래를 위한 창조가 인간 본연의 모습이기 때문에 우리들은 안드로이드의 발전하는 모습에 더 끌리고 있는게 아닌가 합니다.

안드로이드는 무한한 가능성에 대한 종합선물세트라 생각합니다.

2010년 1월 28일 목요일

애플 아이패드

잡스 아저씨가 또 사고를 쳤네요.
이번엔 애플 아이패드라는 것을 들고 나왔습니다. 타블릿PC라고 이미 많이들 알고 있는 액자처럼 생긴 물건이죠.

이미 몇년전부터 시장에 타블릿PC가 선을 보였지만 그냥 그런게 있구나 하는 정도로 사람들한테는 별로 인기가 없었던 물건입니다.

그런데 애플이 들고 나오니 모양새가 좀 다르게 느껴지네요. 왜 일까요?

우선은 디자인이겠죠. 역시 애플이야 할수밖에 없는 깔끔한 디자인에 먼저 호감이 갑니다. 기존 시장에서 이미 선을 보였던 타블릿PC들과는 디자인에서 부터 차별화가 되고 있고, 무엇보다 아이폰의 영향을 무시할 수 없겠지요.

그리고 소비자들에게는 가격이 아무래도 큰 이슈일텐데 아이패드가 생각보다 저렴하다는 사실에 조금 놀랐습니다. 처음든 생각은 60만원! 오 살만한데...(하지만 내 현실은 좀 다르다는거~ 오늘 하루 살아가기도 벅찬데 ㅠ.ㅠ)

걱정되는 부분이 몇가지 있긴 하지만 그래도 아이패드 출시로 많은 변화가 감지되고 있다는 점은 점점 흥미를 유발합니다.


윈도우모바일 글쎄...

 바야흐로 모바일 운영체제 춘추전국 시대에 들어섰다. 하루가 다르게 세력간 힘의 균형이 바뀌고 있는데 그중에 유독 고전을 면치 못하고 있는 나라가 있으니 바로 마이크로소프트(MS)다. MS는 기존에 깔아놓은 많은 응원군에도 불구하고 모바일 전장에서는 이상하게도 세력을 형성하지 못하고 빌빌거리고 있는데 왜 그런지 한번 생각해 보자.

우리가 흔히 MS하면 윈도우를 떠올리게 마련이다. 그도 그럴것이 데스크탑 킬러 운영체제인 윈도우로 MS는 지금까지 성장했다. 데스크탑 분야에 있어선 MS가 누구에게도 밀려본적이 없는데 유독 모바일 분야에선 맥을 못추고 있고, 우리 또한 모바일 분야에서 윈도우가 웬지 낯설다.

낯설다는 상황을 좀더 살펴보면 두가지인데, 첫번째로 모바일 윈도우의 변함(?)없는 윈도우 스타일이다. 쉽게 말하면 데스크탑의 윈도우 환경을 그대로 모바일에 구현해 놓고 있는데, 아이폰이나 안드로이드 스마트폰이 나오면서 윈도모바일은 완전 시골 촌티를 내고 있어 소비자들 눈밖에 나서 낯설다는 것이다.

두번째로 총제적인 문제인데 모바일 시장에 대한 전략이 없는것 같다는 생각이 든다. 뉴스를 읽어보니 이번에 MS가 윈도우모바일7에 대대적인 수술을 단행한다고 하는데, 이런 사실을 보면 MS가 모바일 시장에서 핵심을 잡지 못하고 갈팡질팡하고 있다는 느낌을 지울수가 없다. 보여지는 UI를 수정한다고 소비자들이 다시 MS를 선택할까?

소비자를 이해하고 참여를 유도하는 아이폰/안드로이드 스마트폰을 선두로 모바일 시장은 춘추전국 시대의 극을 달리고 있다.

2010년 1월 26일 화요일

AVD 스킨변경

■ 안드로이드 AVD 스킨을 변경해 봅시다.
 안드로이드 SDK가 설치된 폴더중에 platforms\버전별 안드로이드 폴더\Skins\에 해당 파일을 풀어 놓으면 스킨을 입힐 수 있습니다.



AVD manager -> Virtual Devices -> [New]

































2010년 1월 25일 월요일

ODROID의 XP용 USB DRIVER

■ ODROID의 XP용 USB DRIVER
오드로이드를 처음 PC에 꽂고 드라이버를 찾을 때 첨부 파일을 풀어서 설치하면 OK.

2010년 1월 23일 토요일

[안드로이드] AVD에 어플리케이션 직접 설치

■ 안드로이드 에뮬레이터에 개발한 프로그램이나 다운받은 어플을 직접 설치해 봅시다.
 이클립스 기준으로 bin폴더에 파일명.apk파일이 존재합니다. 이 apk파일을 avd에 설치하려면 다음과 같이 진행하면 되겠습니다.
물론 설치하기 전에 프로그램이 구동할 타겟(AVD 또는 실제장비)이 활성화되어 있어야 합니다.

C:\>adb install 설치할파일.apk
Success -> 설치가 정상적으로 끝나면 썰렁하게 Success라고 한마디 한다. ^^
C:\>
설치 : adb install apkfilename
삭제 : adb uninstall pakeagename
재설치 : adb install -r apkfilename

■ 아래는 adb.exe의 도움말

펼쳐두기..



[안드로이드] android list targets

■ 현재까지 설치한 타켓 종류 1.1부터 2.1까지
스킨은 크게 3가지 정도이고 API1.6부터 스킨은 따로 없고 해상도만 다르게 표현됩니다.

API Version : 1.1
스킨 : HVGA-P(320X480)
생성 : android create avd -n AVD1.1-HVGA-P -t 1 -s HVGA-P









API Version : 1.1
Skin : QVGA-P(240X320)
생성 : android create avd -n AVD1.1-QVGA-P -t 1 -s QVGA-P








API Version : 1.6
Skin : HVGA(320X480)
생성 : android create avd -n AVD1.6-HVGA -t 3 -s HVGA
v1.6이후 부터는 기본 스킨이 똑같음




펼쳐두기..

2010년 1월 22일 금요일

[안드로이드] AVD 가로/세로 모드 전환

안드로이드 애뮬레이터인 AVD(Android Virtual Device)의 가로/세로 전환은 [CTRL] + F11 또는 [CTRL] + F12를 누르면 화면이 가로방향 또는 세로방향으로 전환된다.

컨트롤 키를 계속 누른상태에서 펑션키를 누르면 안바뀜...주의

또한 숫자키패드의 [7], [8]번 키도 같은 역할을 하지만 [NumLock]이 꺼져 있어야 작동한다.

■ AVD 가로/세로 모드 전환
- [CTRL] + F11
- [CTRL] + F12
- 숫자키패드의 [7]
- 숫자키패드의 [8]

[안드로이드] 설치된 어플 삭제

[Settings] > [Applications] > [Manage applications] > 설치된 어플 선택 후 삭제

[Gimp]도구상자 폰트 크기 변경 방법

■ 김프 버전 : v2.6.8

처음 실행시 폰트가 작게 설정되어 있어 깨져보이는데 아래 파일을 수정해서 재실행 하면 조금 편해보인다.

C:\Program Files\GIMP-2.0\share\gimp\2.0\themes 폴더에 테마가 두개(Default, Small) 있는데, 현재는 기본설정이므로 Default폴더안에 gtkrc파일을 열어서 수정합니다.

수정할 파일명 : gtkrc
GimpDock::default-height          = 300
GimpDock::font-scale              = 0.8333 ->1로 변경
GimpDockSeparator::height         = 6


2010년 1월 16일 토요일

CentOS Upgrade

■ Step #1 (업그레이드 및 시스템 재시작)
# yum list updates (업데이트 될 리스트를 확인)
# yum update
# reboot

■ Step #2 (업그레이드 확인)
# cat /etc/redhat-release
또는
# lsb_release -a
LSB Version:    :core-3.1-amd64:core-3.1-ia32:core-3.1-noarch:graphics-3.1-amd64:graphics...
Distributor ID:    CentOS
Description:      CentOS release 5.4 (Final)
Release:          5.4
Codename:       Final

2010년 1월 15일 금요일

qmail 설치

** QMAIL, vpopmail, qmailadmin 의 장점.
  . 한개의 서버, 한개의 IP 에서 무한정(?)의 도메인, pop 메일 서비스를 해 줄수 있다.
  . 한개의 uid,gid 로 모든 버츄얼 도메인, pop 계정을 관리 하므로 불필요한 유저 생성을 피할수 있다.
  . 각 도메인의 postmaster 는 웹 인터페이스로 pop 메일 유저 설정을 직접 할수 있다.
  . 각 도메인마다 메일 계정, 메일링 리스트의 한계를 설정 할 수 있다.
  . 유저 별로 quota 설정이 가능하다.

  vpopmail 은 데이타베이스(MySQL, Oracle, Sybase)를 이용한 사용자 관리,
  smtp 사용자들의 로밍 서비스 (고정 IP를 가지고 있지 않은 사용자에게 smtp 릴레이를 허용해주는)를 해줄 있다.

  * qmailadmin 은 vpopmail의 웹 인터페이스로 POP 사용자 관리를 브라우저를 통해 편하게 할 수 있도록 해준다.
  * qmailadmin 을 설치하려면 autoresponder 와 ezmlm 도 설치한다.
  * ezmlm 은 qmail 하에서 돌아가는 강력한 메일링 리스트로서 http://www.ezmlm.org/에서 ezmlm 과 ezmlm-idx 를 받는다.

## Qmail 설치.
  1. ucspi-tcp 설치하기
  tar -xvzf ucspi-tcp-0.88.tar.gz
  cd ucspi-tcp-0.88
  patch -p1 < /패치파일경로/ucspi-tcp-0.88.errno.patch.txt
  make
  make setup check
  2. daemontools 설치하기
  mkdir -p /package
  chmod 1755 /package
  cp daemontools-0.76.tar.gz /package
  cd /package
  tar -xvzf daemontools-0.76.tar.gz
  cd admin/daemontools-0.76
  patch -p1 < /패치파일경로/daemontools-0.76.errno.patch
  package/install
 
  3. qmail 설치하기
  mkdir /var/qmail
  tar -xvzf qmail-1.03.tar.gz
  vi qmailuser.txt
  groupadd nofiles
  useradd -g nofiles -d /var/qmail/alias alias
  useradd -g nofiles -d /var/qmail qmaild
  useradd -g nofiles -d /var/qmail qmaill
  useradd -g nofiles -d /var/qmail qmailp
  groupadd qmail
  useradd -g qmail -d /var/qmail qmailq
  useradd -g qmail -d /var/qmail qmailr
  useradd -g qmail -d /var/qmail qmails
  chmod 755 qmailuser.txt
  ./qmailuser.txt
  tar -xvzf qmail-ej-cocktail-14.tar.gz
  cp qmail-ej-cocktail-14/cocktail.patch ./qmail-1.03
  cd qmail-1.03
  patch -p1 < cocktail.patch
  vi conf-spawn (1000을 509로)
  make
  make setup check
  ./config-fast 도메인이름
 
  ** qmail 컴파일은 openssl 버전이 openssl-0.9.7b이하에서만 정상적으로 컴파일 된다.
    그러므로 qmail을 컴파일시 openssl 버전을 낮추고 컴파일 한후, 다시 버전을 올린다.
  ** openssl 소스 설치법.
     . tar xvfz openssl-0.9.7d.tar.gz
     . cd openssl-0.9.7d
     . ./config --prefix=/usr/local --openssldir=/usr/local/openssl
     . make
     . make test
     . make install
 
  4. qmail 시작 종료 스크립트를 작성한다.
 
  vi /var/qmail/rc
  ---------------------------------------------
  #!/bin/sh
  exec env - PATH="/var/qmail/bin:$PATH" \
  qmail-start ./Maildir/
  ---------------------------------------------
  chmod 755 /var/qmail/rc
  mkdir -p /var/qmail/supervise/qmail-send/log
  mkdir -p /var/qmail/supervise/qmail-smtpd/log
  chmod +t /var/qmail/supervise/qmail-send
  chmod +t /var/qmail/supervise/qmail-smtpd
  vi /var/qmail/supervise/qmail-send/run
  ----------------------
  #!/bin/sh
  exec /var/qmail/rc
  ----------------------
  vi /var/qmail/supervise/qmail-send/log/run
  -----------------------------------------
  #!/bin/sh
  exec /usr/local/bin/setuidgid qmaill \
  /usr/local/bin/multilog t /var/log/qmail
  -----------------------------------------
  vi /var/qmail/supervise/qmail-smtpd/run
  ----------------------------------------------------------
  #!/bin/sh
  Q_UID=`id -u vpopmail`
  Q_GID=`id -g vpopmail`
  exec /usr/local/bin/softlimit -m 7000000 \
  /usr/local/bin/tcpserver -vRHl 0 \
  -x /home/vpopmail/etc/tcp.smtp.cdb \
  -u $Q_UID -g $Q_GID 0 25 /var/qmail/bin/qmail-smtpd 2>&1
  ----------------------------------------------------------
  vi /var/qmail/supervise/qmail-smtpd/log/run
  -------------------------------------------------
  #!/bin/sh
  exec /usr/local/bin/setuidgid qmaill \
  /usr/local/bin/multilog t /var/log/qmail/smtpd
  -------------------------------------------------
  chmod 755 /var/qmail/supervise/qmail-send/run
  chmod 755 /var/qmail/supervise/qmail-send/log/run
  chmod 755 /var/qmail/supervise/qmail-smtpd/run
  chmod 755 /var/qmail/supervise/qmail-smtpd/log/run
  mkdir -p /var/log/qmail/smtpd
  chown qmaill /var/log/qmail /var/log/qmail/smtpd
  vi /etc/tcp.smtp
  ------------------------------------
  127.0.0.1:allow,RELAYCLIENT=""
  서버아이피:allow,RELAYCLIENT=""
  ------------------------------------
  tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp
  echo root > /var/qmail/alias/.qmail-root
  echo root > /var/qmail/alias/.qmail-postmaster
  echo root > /var/qmail/alias/.qmail-mailer-daemon
  cd /var/qmail/alias/
  chmod 644 .qmail-root .qmail-postmaster .qmail-mailer-daemon

  vi /etc/rc.d/init.d/qmail
  ----------------------------------------------------------------------------------
  #!/bin/sh
  # For Red Hat chkconfig
  # chkconfig: - 80 30
  # description: the qmail MTA
  PATH=/var/qmail/bin:/bin:/usr/bin:/usr/local/bin:/usr/local/sbin
  export PATH
  case "$1" in
  start)
     echo "Starting qmail"
  if [ -e /service/qmail-send ] ; then
  if svok /service/qmail-send ; then
    svc -u /service/qmail-send
  else
    echo qmail-send supervise not running
  fi
  else
  ln -s /var/qmail/supervise/qmail-send /service/
  fi
  if [ -e /service/qmail-smtpd ] ; then
  if svok /service/qmail-smtpd ; then
    svc -u /service/qmail-smtpd
  else
    echo qmail-smtpd supervise not running
  fi
  else
  ln -s /var/qmail/supervise/qmail-smtpd /service/
  fi
 
     if [ -d /var/lock/subsys ]; then
       touch /var/lock/subsys/qmail
     fi
     ;;
  stop)
     echo "Stopping qmail..."
     echo "  qmail-smtpd"
     svc -dx /service/qmail-smtpd /service/qmail-smtpd/log
  rm -f /service/qmail-smtpd
     echo "  qmail-send"
     svc -dx /service/qmail-send /service/qmail-send/log
  rm -f /service/qmail-send
     if [ -f /var/lock/subsys/qmail ]; then
       rm /var/lock/subsys/qmail
     fi
     ;;
  stat)
     svstat /service/qmail-send
     svstat /service/qmail-send/log
     svstat /service/qmail-smtpd
     svstat /service/qmail-smtpd/log
     qmail-qstat
     ;;
  doqueue|alrm|flush)
     echo "Flushing timeout table and sending ALRM signal to qmail-send."
     /var/qmail/bin/qmail-tcpok
     svc -a /service/qmail-send
     ;;
  queue)
     qmail-qstat
     qmail-qread
     ;;
  reload|hup)
     echo "Sending HUP signal to qmail-send."
     svc -h /service/qmail-send
     ;;
  pause)
     echo "Pausing qmail-send"
     svc -p /service/qmail-send
     echo "Pausing qmail-smtpd"
     svc -p /service/qmail-smtpd
     ;;
  cont)
     echo "Continuing qmail-send"
     svc -c /service/qmail-send
     echo "Continuing qmail-smtpd"
     svc -c /service/qmail-smtpd
     ;;
  restart)
     echo "Restarting qmail:"
     echo "* Stopping qmail-smtpd."
     svc -d /service/qmail-smtpd
     echo "* Sending qmail-send SIGTERM and restarting."
     svc -t /service/qmail-send
     echo "* Restarting qmail-smtpd."
     svc -u /service/qmail-smtpd
     ;;
  cdb)
     tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp
     chmod 644 /etc/tcp.smtp.cdb
     echo "Reloaded /etc/tcp.smtp."
     ;;
  help)
     cat <<HELP
    stop -- stops mail service (smtp connections refused, nothing goes out)
  start -- starts mail service (smtp connection accepted, mail can go out)
  pause -- temporarily stops mail service (connections accepted, nothing leaves)
    cont -- continues paused mail service
    stat -- displays status of mail service
     cdb -- rebuild the tcpserver cdb file for smtp
  restart -- stops and restarts smtp, sends qmail-send a TERM & restarts it
  doqueue -- schedules queued messages for immediate delivery
  reload -- sends qmail-send HUP, rereading locals and virtualdomains
  queue -- shows status of queue
    alrm -- same as doqueue
  flush -- same as doqueue
     hup -- same as reload
  HELP
     ;;
  *)
     echo "Usage: $0 {start|stop|restart|doqueue|flush|reload|stat|pause|cont|cdb|queue|help}"
     exit 1
     ;;
  esac
  exit 0
  ------------------------------------------------------------------------------------------------------
  chmod 755 /etc/rc.d/init.d/qmail
  ** service qmail start 를 실행하여 프로세스 및 포트를 정상적으로 BIND 하면 정상.

## vpopmail with mysql 연동 설치.
  - vpopmail 유저와 그룹을 생성한다.
  groupadd -g 89 vchkpw
  useradd -g vchkpw -u 89 vpopmail
 
  mkdir ~vpopmail/etc
  chown vpopmail.vchkpw ~vpopmail -R
  echo "localhost|0|vpopmailuser|vpoppasswd|vpopmail" > ~vpopmail/etc/vpopmail.mysql
  chown vpopmail.vchkpw ~vpopmail/etc/vpopmail.mysql
  chmod 640 ~vpopmail/etc/vpopmail.mysql
 
  - mysql root 접속후 아래 디비생성및 접근권한을 설정한다.

  CREATE DATABASE vpopmail;
  GRANT select,insert,update,delete,create,drop ON vpopmail.* TO vpopmailuser@localhost IDENTIFIED BY 'vpoppasswd';
  quit;
 
  tar xvfz vpopmail-5.4.17.tar.gz
 
  ./configure --enable-roaming-users --enable-tcprules-prog=/usr/local/bin/tcprules
  --enable-tcpserver-file=/etc/tcp.smtp --enable-relay-clear-minutes=15 --enable-logging=p
  --disable-ip-alias-domains --disable-passwd --enable-clear-passwd --enable-auth-module=mysql
  --enable-many-domains=y --enable-valias=y --enable-mysql-limits=y --enable-auth-module=mysql
  --enable-incdir=/usr/local/mysql/include/mysql --enable-libdir=/usr/local/mysql/lib/mysql
  --enable-domain-quotas=y
  --------------------------  설명 ----------------------------
  // roaming 옵션 목록
  --enable-roaming-users \          :enable roaming users functionality
  --enable-tcprules-prog=path \    :defaults to /usr/local/bin/tcprules
  --enable-tcpserver-file=path \    :defaults to /home/vpopmail/etc/tcp.smtp
  --enable-relay-clear-minutes=15  :defaults to 180
  //mysql 옵션 목록
  --enable-auth-module=mysql                     :mysql 사용하겠다
  --enable-incdir=/usr/local/mysql/include... :include 경로
  --enable-libdir=/usr/local/mysql/lib....       :lib 경로
  --enable-many-domains   :도메인별로 테이블을 생성관리 할것이라면 --enable-many-domains=n 옵션을 사용한다.
  --enable-mysql-limits      :mysql을 이용한 쿼터 설정
  --enable-logging=y : 모든 pop 로그인 기록과 오류 메시지를 남긴다.
  --enable-logging=n : 아무런 로그도 남기지 않는다.
  --enable-logging=e : 오류/ 치명적인 오류 메세지를 기록한다.
  --enable-logging=p : 오류 로그에 암호를 포함한다.
  --enable-logging=v : --enable-logging=y 와 같으며 사용자 암호를 로그에 포함한다.

  --enable-default-domain :주서버의 메일 계정도 모두 가상 도메인의 메일 계정과 동일하게 관리 할수 있다.
  --enable-domain-quotas: 도메인별 쿼터 설정 (--enable-mysql-limits 옵션과 같이 사용)
  --enable-many-domains : 도메인별로 테이블을 생성한다는 옵션
  --enable-mysql-limits : 쿼터 설정데 대한 세부 옵션 (README.vlimit 파일 참고)
  --------------------------  설명 ----------------------------
 
  make
  make install-strip
 
  ** /home/vpopmail 안에..디렉토리와 여러 파일들이 생성확인.
 
  . ln -s /usr/local/mysql/lib/mysql/libmysqlclient.so.12 /usr/lib/
  . /home/vpopmail/bin/clearopensmtp
  - 주기적으로 smtp허용 IP를 갱신해주도록 cron에 등록.
 
  . crontab -e
  . 40 * * * *  /home/vpopmail/bin/clearopenstmp
 
  - qmail smtp 수정
  . vi /var/qmail/supervise/qmail-smtpd/run
  ---------------------------------------------------------------------------
  #!/bin/sh
  Q_UID=`id -u vpopmail`
  Q_GID=`id -g vpopmail`
  exec /usr/local/bin/softlimit -m 7340032 \
        /usr/local/bin/tcpserver -vRHl 0 -x /home/vpopmail/etc/tcp.smtp.cdb \
        -u $Q_UID -g $Q_GID 0 25 /var/qmail/bin/qmail-smtpd 2>&1
  ---------------------------------------------------------------------------
  ※이 run파일은 나중에 smtp auth설정에서 한번 더 바뀌게 됩니다.
  - pop3시동 파일 작성
  . mkdir /var/qmail/supervise/vpop
  . vi /var/qmail/supervice/vpop/run
  ---------------------------------------------------------------------------
  #!/bin/sh
  VPOP_UID=`id -u vpopmail`
  VPOP_GID=`id -g vpopmail`
  exec /usr/local/bin/softlimit -m 6000000 \
        tcpserver -vRHl 0 -u $VPOP_UID -g $VPOP_GID 0 110 \
        /var/qmail/bin/qmail-popup ecstore.co.kr \
        /home/vpopmail/bin/vchkpw /var/qmail/bin/qmail-pop3d Maildir 2>&1
  ---------------------------------------------------------------------------
 
  . chmod a+x /var/qmail/supervise/vpop/run
 
  - Sendmail 데몬 중지 및 옮겨 놓는다.
 
  . /etc/init.d/sendmail stop
  . mv /usr/lib/sendmail /usr/lib/sendmail.org
  . mv /usr/sbin/sendmail /usr/sbin/sendmail.org
  . ln -s /var/qmail/bin/sendmail /usr/lib
  . ln -s /var/qmail/bin/sendmail /usr/sbin
  - 서비스 시작하기
 
  - qmail 데몬 시작 - daemontool이 자동으로 데몬을 시작한다.
  . ln -s /var/qmail/supervise/qmail-send /service/
  . ln -s /var/qmail/supervise/qmail-smtpd /service/
 
  - vpopmail 데몬 시작 - daemontool이 자동으로 데몬을 시작한다.
  . ln -s /var/qmail/supervise/vpop /service
  ** ps -aux 명령으로 해당 데몬이 정상적으로 떠 있는지 확인한다.
       
  ## qmailadmin 과 smtp auth 설정.
 
  - vpopmail을 웹에서 관리하는 도구.
 
  - ezmlm 설치
  . wget http://sylvestre.ledru.info/howto/qmail/ezmlm-idx-0.40.tar.gz
  . wget http://cr.yp.to/software/ezmlm-0.53.tar.gz
  . wget http://www.qmail.org/moni.csi.hu/pub/glibc-2.3.1/ezmlm-idx-0.53.400.unified_41.patch
 
  . tar -zxvf ezmlm-0.53.tar.gz
  . tar -zxvf ezmlm-idx-0.40.tar.gz
  . mv ezmlm-idx-0.40/* ezmlm-0.53/
  . cd ezmlm-0.53
  . patch < idx.patch
  . patch < ../ezmlm-idx-0.53.400.unified_41.patch
 
  . make  
  . make man
  . make setup
 
  - autorespond 설치
  . wget http://www.inter7.com/devel/autorespond-2.0.2.tar.gz
 
  . tar xvfz autorespond-2.0.2.tar.gz
  . cd autorespond-2.0.2
  . vi Makefile
  . INSTALL_DIR = /usr/bin 로 변경
  . make
  . make install
 
  - qmailadmin 설치
  . tar xvfz qmailadmin-1.2.9.tar.gz
  . cd qmailadmin-1.2.9
  .  ./configure --enable-htmldir=/usr/local/apache/htdocs --enable-cgibindir=/usr/local/apache/cgi-bin
     --enable-autoresponder-bin=/usr/bin --enable-vpopuser=vpopmail
     --enable-ezmlmdir=/usr/local/bin/ezmlm/
     --enable-ezmlmidx=y --enable-modify-quota --disable-ipauth --enable-help
     --enable-domain-autofill=y
  . make
  . make install-strip
 
  ** 이미지 경로는 도메인의 홈디렉토리임.
      기본적으로 설치후에 이미지 경로는 /usr/local/apache/htdoc 안에 images에 생성된다.
  - smtp_auth
    
  . vi /var/qmail/supervise/qmail-smtpd/run
  -----------------------------------------------------------------------------------------
  #!/bin/sh
  Q_UID=`id -u vpopmail`
  Q_GID=`id -g vpopmail`
  exec /usr/local/bin/softlimit -m 7340032 \
  /usr/local/bin/tcpserver -vRHl 0 -x /home/vpopmail/etc/tcp.smtp.cdb \
  -u $Q_UID -g $Q_GID 0 25 /var/qmail/bin/qmail-smtpd ecstore.co.kr \
  /home/vpopmail/bin/vchkpw /bin/true 2>&1
  -----------------------------------------------------------------------------------------
  . /etc/rc.d/init.d/qmail restart
  ** 도메인 추가
  . /home/vpopmail/bin/vadddomain ecstore.co.kr
  . 비번입력.
 
  ## 스팸 & 바이러스 차단 툴 설치 - qmail-scanner / spamassassin
 
  - maildrop 설치
    . tar xvfz pcre-7.2.tar.gz
    . cd pcre-7.2
    . ./configure
    . make && make install
    . tar jxpf maildrop-2.0.4.tar.tar -C /backup/app_source/spam/   
       --mandir=/usr/share/man --enable-sendmail=/var/qmail/bin/sendmail
       --enable-maildrop-uid=root --enable-maildrop-gid=vchkpw --enable-maildirquota
       --enable-restrict-trusted=1 --enable-trusted-users='root qmaild vpopmail'
    . make install-strip
    . make install-man
  - HTML-Parser 설치.
    . tar xvfz HTML-Tagset-3.10.tar.gz
    . cd HTML-Tagset-3.10
    . perl Makefile.PL
    . make
    . make install

    . tar zxfp HTML-Parser-3.56.tar.tar -C /backup/app_source/spam
    . cd HTML-Parser-3.56
    . perl Makefile.PL
    . make
    . make test
    . make install
  -Time-HiRes 설치.
    . tar xvfz Time-HiRes-1.9707.tar.gz
    . cd Time-HiRes-1.9707
    . perl Makefile.PL
    . make
    . make test
    . make install
  - spamAssassin 설치
    . wget http://search.cpan.org/CPAN/authors/id/G/GA/GAAS/Digest-SHA1-2.11.tar.gz
    . tar xvfz Digest-SHA1-2.11.tar.gz
    . cd Digest-SHA1-2.11
    . perl Makefile.PL
    . make && make install
    . tar xvfz Net-IP-1.25.tar.gz
    . cd Net-IP-1.25
    . perl MakeFile.PL
    . make
    . make install
    
    . tar xvfz Digest-HMAC-1.01.tar.gz
    . cd Digest-HMAC-1.01
    . perl MakeFile.PL
    . make && make install
    . tar xvfz Net-DNS-0.60.tar.gz
    . cd Net-DNS-0.60
    . perl MakeFile.PL
    . make && make install
    . tar xvfz Mail-SpamAssassin-3.2.1.tar.gz
    . cd Mail-SpamAssassin-3.2.1
    . perl MakeFile.PL
    . make
    . make test
    . make install   
 
  - qmail-scanner 설치
    . tar xvfz qmail-scanner-1.16.gz
    . cd qmail-scanner-1.16
    . cp -r locale/en_GB locale/eucKR
    . ./configure --debug no --lang "eucKR" --log-details syslog --unzip yes
    . ./configure --debug no --lang "eucKR" --log-details syslog --install
    . cp -f quarantine-attachments.txt /var/spool/qmailscan/
    . chown qmailq.qmail /var/spool/qmailscan/quarantine-attachments.txt
    . chmod 660 /var/spool/qmailscan/quarantine-attachments.txt
    . chown qmailq.qmail /var/qmail/bin/qmail-scanner-queue.pl
    . chmod 4755 /var/qmail/bin/qmail-scanner-queue.pl
    . /var/qmail/bin/qmail-scanner-queue.pl -g
    . echo 'export QMAILQUEUE="/var/qmail/bin/qmail-scanner-queue.pl"' >> /etc/profile
    . export QMAILQUEUE="/var/qmail/bin/qmail-scanner-queue.pl"
    . /etc/profile
    . . /etc/profile
    . /etc/rc.d/init.d/qmail restart

  ** 설치중에 모듈이 없으면 http://search.cpan.org/ 에서 perl 모듈을 검색해서 설치한다.

2010년 1월 12일 화요일

VC++과 Mysql C Lib 연동하기

1. Mysql 다운로드& 설치
   http://dev.mysql.com/downloads/ 으로 가서 윈도우용 버전으로 다운을 받고 설치

2. Visual Studio에서 Include, Lib 폴더 설정
    Tools -> option -> directory 에 헤더파일 / 라이브러리 폴더 설정
     헤더 파일 폴더는 Mysql설치된폴더Include
     라이브러리 파일 폴더는 Mysql설치된폴더LibDebug
                                      Mysql설치된폴더LibOpt

3. 프로젝트 셋팅
   위 상태에서 Mysql C API 를 쓰면 컴파일 에러가 발생한다.
   소켓 lib 가 설정되지 않았기 때문이다.
   project --> settings --> [link] 에 ws2_32.lib 추가.
 
   이 상태에서는 컴파일까지는 되지만, 링킹 과정에서 unresolved external symbol 가 발생한다.
   project --> settings --> [link] 에 libmySQL.lib 추가.

4. 지정된 경로에 libmySQL.DLL 파일이 없다는 에러가 발생할시에는..
   Mysql 의 lib 폴더에서 libmySQL.DLL파일을 프로젝트 폴더로 복사한다.

디스크 속도 확인방법

# hdparm -t /dev/hda
/dev/hda:
 Timing buffered disk reads:  146 MB in  3.03 seconds =  48.12 MB/sec
#
#

2010년 1월 11일 월요일

Linux Kernel v0.01

리눅스 커널 버전 0.01



Installing Linux on your system

Ok, this is a short guide for those people who actually want to get a
running system, not just look at the pretty source code :-). You'll
certainly need minix for most of the steps.


    0.  Back up any important software.  This kernel has been
working beautifully on my machine for some time, and has never destroyed
anything on my hard-disk, but you never can be too careful when it comes
to using the disk directly.  I'd hate to get flames like "you destroyed
my entire collection of Sam Fox nude gifs (all 103 of them), I'll hate
you forever", just because I may have done something wrong.

Double-check your hardware.  If you are using other than EGA/VGA, you'll
have to make the appropriate changes to 'linux/kernel/console.c', which
may not be easy.  If you are able to use the at_wini.c under minix,
linux will probably also like your drive.  If you feel comfortable with
scan-codes, you might want to hack 'linux/kernel/keyboard.s' making it
more practical for your [US|German|...] keyboard.


    1.  Decide on what root device you'll be using.  You can use any
(standard) partition on any of your harddisks, the numbering is the same
as for minix (ie 0x306, which I'm using, means partition 1 on hd2).  It
is certainly possible to use the same device as for minix, but I
wouldn't recommend it.  You'd have to change pathnames (or make a chroot
in init) to get minix and linux to live together peacefully.

I'd recommend making a new filesystem, and filling it with the necessary
files: You need at least the following:

    - /dev/tty0        (same as under minix, ie mknod ...)
    - /dev/tty        (same as under minix)
    - /bin/sh        (link to bash)
    - /bin/update        (I guess this should be /etc/update ...)

Note that linux and minix binaries aren't compatible, although they use
the same (gcc-)header (for ease of cross-compiling), so running one
under the other will result in errors.


    2.  Compile the source, making necessary changes into the
makefiles and linux/include/linux/config.h and linux/boot/boot.s.  I'm
using a slightly hacked gcc-1.40, to which I have added a -mstring-insns
flag, which uses the i386 string instructions for structure copy etc.
Removing the flag from all makefiles should do the trick for you.

NOTE! I'm using -Wall, and I'm not seeing many warnings (2 I think, one
about _exit returning although it's volatile - it's ok.) If you get
more warnings when compiling, something's wrong.


    3.  Copy the resultant code to a diskette of the right type.
Use 'cp Image /dev/PS0' or equivalent.


    4.  Boot with the new diskette.  If you've done everything right
(and if *I've* done everything right), you should now be running bash as
root.  You can't do much (alias ls='echo *' is a good idea :-), but if
you do run, most other things should work.  I'd be happy to hear from
anybody that has come this far - and I'll send any ported binaries you
might want (and I have).  I'll also put them out for ftp if there is
enough interest.  With gcc, make and uemacs, I've been able to stop
crosscompiling and actually compile natively under linux.  (I also have
a term-emu, sz/rz, sed, etc ...)

The boot-sequence should start with "Loading system...", and then a
"Partition table ok" followed by some root-dev info. If you forget to
make the /dev/tty0-character device, you'll never see anything but the
"loading" message. Hopefully errors will be told to the console, but if
there are problems at boot-up there is a distinct possibility that the
machine just hangs.


    5.  Check the new filesystem regularly with (minix) fsck.  I
haven't got any errors for some time now, but I cannot guarantee that
this means it will never happen.  Due to slight differences in 'unlink',
fsck will report "mode inode XXX not cleared", but that isn't an error,
and you can safely ignore it (if you don't like it, do a fsck -a every
once in a while).  Minix "restore" will not work on a file deleted with
linux - so be extra careful if you have a tendency to delete files you
don't really want to.

Logging out from the "login-shell" will automatically do a sync, and
will leave you hanging without any processes (except update, which isn't
much fun), so do the "three-finger-salute" to restart dos/minix/linux or
whatever.


    6.  Mail me and ask about problems/updates etc.  Even more
welcome are success-reports (yeah, sure), and bugreports or even patches
(or pointers to corrections).


NOTE!!! I haven't included diffs with the binaries I've posted for the
simple reason that there aren't any - I've had this silly idea that I'd
rather change the OS than do a lot of porting.  All source to the
binaries can be found on nic.funet.fi under /pub/gnu or /pub/unix.
Changes have been to makefiles or configuration files, and anybody
interested in them might want to contact me. Mostly it's been a matter
of adding a -DUSG to makefiles.

The one exception if gcc - I've made some hacks on it (string-insns),
and have got it (with the gracious help of Bruce Evans) to correctly
emit software floating point. I haven't got diffs to that one either, as
my hard-disk is overflowing and I cannot accomodate both originals and
changes, but as per the GNU copyleft I'll make them available if
someone wants them. I hope nobody want's them :-)


        Linus        [email blocked]


음양관을 다루는 컴쟁이

동양학의 핵심 주제중에 하나가 바로 음양관이고, 음양관은 모든것은 음과 양으로 나뉘고 또한 변화한다고 설명하는 영역이다. 컴쟁이들이 알아듣기 쉽게 음양관의 개념을 잡아보면, 컴퓨터는 0과 1로 구분되는 2진수로 모든 자료를 처리하는 것을 알고 있을것이다. 여기서 번쩍하고 머리에 먼가 스치는 사람은 센스만점~ ^^;

음과 양은 서로 상태가 반대되는 개념으로 -/+, 0과 1, 높고 낮고, 빛과 어둠, 남과 여, 하늘과 땅 등등. 음양은 이와 같이 어떤 상태가 서로 반대되는 개념으로 컴퓨터도 음양에 의해 철저하게 움직일 수 있게 하는 이 세상을 지배하는 자연의 법칙이다.

따라서 우리 컴쟁이들은 알게 모르게 자연의 기본적인 법칙인 음양의 조화를 마음대로 부리고 있고, 또한 무한한 변화를 만들어내고 있는 창조자인 것인데...너무 거창한가 ㅎㅎ

2010년 1월 9일 토요일

[GNU make]Makefile 작성

Makefile의 기본 구조
target ... : dependency ...                         [규칙]
             command                                [명령어]
             ...


MinGW + gdb 설치 및 설정

MinGW는 Minimalistic GNU for Windows의 약자로 윈도우즈 환경에서 GNU의 결과물들로 프로그램을 만들때 사용할 수 있는 개발환경입니다.

Dev-C++이라는 MinGW를 지원하는 통합환경도 있지만 이것조차 귀차니즘을 발동시키므로 패스...

간단한 조각코드들 테스트하는데 IDE환경까지는 부담스럽고 걍 콘솔에서 해딩 ^^

http://www.mingw.org/에서 필요한 파일을 다운로드 받고 설치한다. (소스포지로 이동)
(MinGW가 자동설치를 지원하기는 하지만 추가적으로 필요한 파일들은 수동설치 필요)
* 필요한 파일 : MinGW, gdb, libexpat
> MinGW-5.1.6.exe
> gdb-7.0.1-mingw32-bin.tar.gz
> libexpat-2.0.1-1-mingw32-dll-1.tar.gz

■ 설치할 때 디렉토리명은 공백없이 설치해야 함.
(콘솔창에서 gcc를 찾을 수 있도록 환경변수에 PATH설정, C:\GNU\MinGW\bin로 했음)

C:\>gcc --version
gcc (GCC) 3.4.5 (mingw-vista special r3)
Copyright (C) 2004 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

C:\>gdb --version
GNU gdb (GDB) 7.0.1
Copyright (C) 2009 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "mingw32".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.

2010년 1월 5일 화요일

rc파일의 유래

rc파일은 1965년경 CTSS 운영체제의 역사적 흔적인 "run command"를 의미한단다.

sulinux2.0 + lighttpd + cgi설정

필요한 라이브러리가 몇가지 있지만 일단 설치만 먼저...

# tar xfz lighttpd-1.4.XX.tar.gz
# cd lighttpd-1.4.XX
# ./configure --prefix="/usr/local/lighttpd" --without-bzip2
# make
# make install
# cp doc/lighttpd.conf /usr/local/lighttpd
# cp doc/rc.lighttpd.redhat /etc/init.d/lighttpd
# vi /etc/init.d/lighttpd
  25 :   LIGHTTPD_CONF_PATH="/usr/local/lighttpd/lighttpd.conf"
  29 :   lighttpd="/usr/local/lighttpd/sbin/lighttpd"
  34 :   daemon $lighttpd -f $LIGHTTPD_CONF_PATH -m /usr/local/lighttpd/lib (모듈디렉토리 지정)

# cd /etc/init.d
# chkconfig --add lighttpd
# chkconfig --level 3 lighttpd on
# chkconfig --list lighttpd

cgi설정
# cd /usr/local/lighttpd
# vi lighttpd.conf
...
server.modules = ( ...
"mod_cgi",  #주석을 제거해주면 모듈이 활성화 된다.
...
)
...
cgi.assign = ( ".pl" => "/usr/bin/perl", ".cgi" => "" ) 확장자명에 따라 실행할 프로그램 연결, 공백은 자체실행

# /etc/init.d/lighttpd restart