2007년 12월 15일 토요일

Visual Basic에서 TaskBar 사이즈 얻어오기

Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Public Declare Function GetWindowRect Lib "user32" (ByVal hwnd As Long, lpRect As RECT) As Long
Public Type RECT
        Left As Long
        Top As Long
        Right As Long
        Bottom As Long
End Type

    Dim hTaskbar As Long
    Dim rTaskbar As RECT
    Dim sClass As String
    sClass = "Shell_TrayWnd"
    hTaskbar = FindWindow(sClass, "")
    GetWindowRect hTaskbar, rTaskbar

API Guide

이 글을 보는 모든 프로그래머에게 엄청나게 유용한 프로그램을 소개한다.

바로 API-Guide..
물론 아는 사람들도 많겠지만, 프로그래머를 바보로 만드는 유명한 프로그램이라 소개한다.

비주얼베이식 프로그래머들의 고질적인 단점이 뭘까...
바로.. Win32 API 가 뭔지도 모른다는거다. 비베의 한계를 뛰어넘기 위해서는
Win32 API를 써야 함에도 불구하고 많은 후잡 프로그래머들은 비베의 한계를 느끼고
프로그래밍을 접거나, MFC 쪽으로 넘어가고 만다.

이 글을 쓰고 있는 나도 고등학생때까지 비베에서 API라는 걸 쓰는 건 알고 있었지만
어떻게 써야 하는지 전혀 몰랐다.

자.. 여기 그런 프로그래머들을 위한 프로그램을 소개한다.
API Guide 는 약 1000개정도의 비주얼 베이식에서 사용할 수 있는 API를 간편하게 정리해놓은
프로그램이다. 물론 덤으로 그에 따른 예제까지 실어주고 있다.

너무 좋아하지는 마라..

이런 프로그램.. 예를 들어 VA(Visual Assistance)와 같이 프로그래머의 손을 더 쉽게 해주는 프로그램을 많이 쓰면 어느 순간에 그런것들이 없으면 프로그래밍이 불가능한 바보가 될지도 모르니깐... 정말 모를때만 쓰고 왠만하면 MSDN을 참고하는 습관을 들이자.

MSDN에는 API가 C 문법 위주로 나와 있는데 데이터 형만 잘 이해하고 있다면
Visual Basic에서도 얼마든지 사용 가능하다.

이상!

2007년 12월 14일 금요일

Linux Tomcat 설치

다음은 생전 처음으로 리눅스에 톰캣을 설치한 내용을 적은 메모이다.



톰캣 다운로드

다운로드 URL : http://tomcat.apache.org/

위의 URL에서 톰캣을 다운받는다.

이 문서에서는 apache-tomcat-5.5.17.tar.gz 를 다운받았다.



톰캣 설치

다운 받은 apache-tomcat-5.5.17.tar.gz를 /usr/local/src 로 옮겼다.

#tar xvfz apache-tomcat-5.5.17.tar.gz [enter]

/usr/local/src/apache-tomcat-5.5.17 디렉토리가 생기고 그 안에 톰캣이 깔린다.

이 디렉토리를 /usr/local 로 옮겼다.

#mv apache-tomcat-5.5.17 /usr/local [enter]



톰캣 실행

# cd /usr/local/apache-tomcat-5.5.17/bin [enter]
# ./startup.sh [enter]



톰캣 실행 확인

브라우저에서 http://192.168.0.2:8080 를 넣어 고양이가 나오는지 확인




톰캣 관리화면 활성화 시키기

다음 파일을 편집한다.
# vi /usr/local/apache-tomcat-5.5.17/tomcat-users.xml [enter]

다음 내용을 추가시킨다.
<role rolename="manager"/>
<user username="admin" password="admin" roles="manager"/>

톰캣을 다시 재실행한다.

#/usr/local/apache-tomcat-5.5.17/bin/shutdown.sh [enter]
#/usr/local/apache-tomcat-5.5.17/bin/startup.sh [enter]


톰캣 관리화면을 열어본다.

브라우저에서 http://192.168.0.2:8080/manager/html
ID : admin
Password : admin



톰캣 클래스패스 설정하기

#vi /etc/profile [enter]

다음 내용을 넣는다.(주로 가장 마지막에...)
CATALINA_HOME="/usr/local/apache-tomcat-5.5.17"
export CATALINA_HOME
CLASSPATH=".:$CATALINA_HOME/lib/servlet.jar"
export CLASSPATH


* 위에서 CLASSPATH의 경우는 이미 CLASSPATH가 정해져 있다면
  처음에 $CLASSPATH를 넣어주거나
  기존의 CLASSPATH 정의부분의 뒤쪽에 이어서 입력해 준다.

저장하고 나온 후
#source /etc/profile [enter]


---- 참고 ----
http://cafe.naver.com/bestreal.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=221

2007년 12월 12일 수요일

Fedora 4 YUM 설정

출처 : http://iparid.egloos.com/1709753

yum.repo.d 설정 (FC4)
/etc/yum.conf 설정은 레뎃9 시절 등등 예전 자료가 많았지만, FC3부터 /etc/yum.repos.d/* 여섯개의 파일로 분산되면서 새로운 설정 방법을 설명한 곳을 한참 뒤져보았다. 인터넷에서는 한 군데 FC3 기준으로 설명해 놓았다. 요걸 보고 조금 고쳐서 FC4에 맞게 설정하는 법, 또 원리 등등을 조금 적어 보겠다.

원래 들어있는 파일은 6개다.

fedora.repo
fedora-devel.repo
fedora-extras-devel.repo
fedora-extras.repo
fedora-updates.repo
fedora-updates-testing.repo

여기에서 인스톨에 fedora.repo, 업데이트에 fedora-updates.repo를 쓴다. 일단 요것만 고쳐보자.

<원본 fedora.repo>
name=Fedora Core $releasever - $basearch - Base한글
#baseurl=http://download.fedora.redhat.com/pub/fedora/linux/core/$releasever/$basearch/os/
mirrorlist=http://fedora.redhat.com/download/mirrors/fedora-core-$releasever
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora


baseurl에 주석 처리가 되어있으니 결국 mirrorlist 행이 관건인 셈이다. $releasever는 자기 페도라 버전에 따라 현재까지 1~5로 나타난다. 그럼 주소에 나와 있는 fedora-core-4 파일을 열어보자.

http://download.fedoraproject.org/pub/fedora/linux/core/4/$ARCH/os/
http://mirror.linux.duke.edu/pub/fedora/linux/core/4/$ARCH/os/
http://fedora.mirrors.tds.net/pub/fedora-core/4/$ARCH/os/
...
...


가능한 미러가 66개 나와있다. 그런데 제일 느린 서버가 1순위이므로 접속은 되지만 느려터져 답답하다. 따라서 커스텀 미러 리스트 파일을 작성하자. Updates가 들어있는 디렉토리 주소가 조금 다르다. 한국 서버가 가장 빠르기는 하지만 이 포스트를 작성하는 시점에서 404 에러를 토했기 때문에 속도는 조금 떨어져도(200-500kB/s 정도) 믿음직스러운 kernel.org를 1순위로 잡았다.

<custom-BASE>
http://mirrors.kernel.org/fedora/core/4/$ARCH/os
ftp://ftp.kreonet.re.kr/pub/Linux/fedora/core/4/$ARCH/os
ftp://mirror.hostway.co.kr/pub/fedora/4/$ARCH/os
ftp://ftp.kaist.ac.kr/pub/fedora/linux/core/4/$ARCH/os


<custom-UPDATES>
http://mirrors.kernel.org/fedora/core/updates/4/$ARCH
ftp://ftp.kreonet.re.kr/pub/Linux/fedora/core/updates/4/$ARCH
ftp://mirror.hostway.co.kr/pub/fedora/updates/4/$ARCH
ftp://ftp.kaist.ac.kr/pub/fedora/linux/core/updates/4/$ARCH


그럼 fedora.repo, fedora-updates.repo 기존의 mirrorlist를 주석처리하고, 새로운 주소로 설정하자.
gpgcheck도 꺼놓으면 성가시지 않다.

<고친 fedora.repo>
mirrorlist=file:///etc/yum.repos.d/custom-base
gpgcheck=0


<고친 fedora-updates.repo>
mirrorlist=file:///etc/yum.repos.d/custom-updates


다시 실행할 서비스 없이 다음에 yum 실행할 때 바로 적용된다.

2007년 12월 11일 화요일

Tomcat in Fedora4

설치순서
1. apache(httpd-2.0.54, source)
2. apache-tomcat-connector(jakarta-tomcat-connectors-1.2.14.1-src, source)
3. tomcat(jakarta-tomcat-4.1.31, binary)
4. setting


1-1) ./configure --prefix=/usr/local/apache2 --enable-mods-shared=most --enable-modules=so --with-mpm=worker
1-2) make
1-3) make install
1-4) echo "/usr/local/apache2/lib" >> /etc/ld.so.conf
     echo "/usr/local/apache2/modules" >> /etc/ld.so.conf
     ldconfig
============================================================================================================


2-1) ./buildconf.sh
2-2) ./configure --with-apxs=/usr/local/apache2/bin/apxs
2-3) make
2-4) make install
2-5) /usr/local/apache2/conf/httpd.conf 파일수정
     모듈추가라인 가장 아래 다음과 같이 추가
     LoadModule jk_module modules/mod_jk.so
============================================================================================================


3-1) /usr/local/tomcat 에 설치
3-2) /usr/local/tomcat/conf/server.xml 파일수정
     서비스 컨텍스트 추가
     <Host name="xxx.xxx.co.kr">
         <Context path="" docBase="/home/xxx/public_html"
                  reloadable="true"/>
         <Alias>xxx.xxx.co.kr</Alias>
      </Host>
============================================================================================================


4-1) /usr/local/tomcat/conf/auto/mod_jk.conf 파일수정(없으면 생성)
다음과 같이 생성
<IfModule !mod_jk.c>
  LoadModule jk_module libexec/mod_jk.so
</IfModule>
JkWorkersFile "/usr/local/tomcat/conf/jk/workers.properties"
JkLogFile "/usr/local/tomcat/logs/mod_jk.log"
JkLogLevel emerg
<VirtualHost localhost>
    ServerName localhost
    JkMount /tomcat_admin ajp13
    JkMount /tomcat_admin/* ajp13
    JkMount /webdav ajp13
    JkMount /webdav/* ajp13
    JkMount /examples ajp13
    JkMount /examples/* ajp13
    JkMount /tomcat-docs ajp13
    JkMount /tomcat-docs/* ajp13
    JkMount /manager ajp13
    JkMount /manager/* ajp13
</VirtualHost>

4-2) /usr/local/tomcat/conf/jk/workers.properties 파일수정(없으면 생성)
다음과 같이 생성
# Start setup file
#
workers.tomcat_home=/usr/local/tomcat
workers.java_home=/usr/local/java
ps=/
worker.list=ajp12, ajp13
# Definition for Ajp13 worker
#
worker.ajp13.port=8009
worker.ajp13.host=localhost
worker.ajp13.type=ajp13
#
# End setup file


4-3) /usr/local/tomcat/conf/web.xml 파일수정
<web-app> tag 내에 추가

   <filter>
    <filter-name>Set Character Encoding</filter-name>
    <filter-class>filters.SetCharacterEncodingFilter</filter-class>
    <init-param>
      <param-name>encoding</param-name>
      <param-value>EUC_KR</param-value>
    </init-param>
  </filter>
  <filter-mapping>
      <filter-name>Set Character Encoding</filter-name>
      <url-pattern>/*</url-pattern>
  </filter-mapping>

    <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

4-4) 한글변환 문자 셋 / 디렉토리에 압축 풀기 (tar -zxvf classes.tgz -C /)

4-5) /usr/local/apache2/conf/httpd.conf 파일수정
다음과 같이 추가
JkWorkersFile /usr/local/tomcat/conf/jk/workers.properties
Include /usr/local/tomcat/conf/auto/mod_jk.conf
JkLogFile /usr/local/tomcat/logs/mod_jk.log
JkLogLevel emerg

4-6) /usr/local/apache2/conf/httpd.conf 파일수정
버츄얼 호스팅 설정
#NameVirtualHost *:80   (주석제거)

다음과 같이 추가
<VirtualHost *:80>
    ServerAdmin root@xxx.xxx.co.kr
    DocumentRoot /home/xxx/public_html
    ServerName xxx.xxx.co.kr
    JkMount  /*.jsp ajp13
    JkMount  /servlet/* ajp13
</VirtualHost>

4-7) /etc/profile(환경변수 수정)
export LC_ALL=ko_KR.eucKR
export LANG=ko_KR.eucKR
JAVA_HOME=/usr/local/java
CATALINA_HOME=/usr/local/tomcat
PATH=$PATH:$JAVA_HOME/bin:$CATALINA_HOME/bin
export JAVA_HOME CATALINA_HOME
export set CLASSPATH=.:$CLASSPATH=/usr/local/java/lib/tools.jar:.:/usr/local/java/lib/dt.jar:/home/xxx/public_html/WEB-INF/lib/jCharts-0.7.0.jar:/home/xxx/public_html/WEB-INF/lib/Acme.jar:.:
export set CLASSPATH=.:$CLASSPATH=$CLASSPATH:/home/xxx/public_html/WEB-INF/lib/mysql-connector-java-3.1.7-bin.jar:/home/xxx/public_html/WEB-INF/lib/jxl.jar:/home/xxx/public_html/WEB-INF/lib/activation.jar:/home/xxx/public_html/WEB-INF/lib/mail.jar:/usr/local/java/lib/jfreechart-0.9.16.jar:.:
export set CLASSPATH=.:$CLASSPATH=$CLASSPATH:/home/xxx/public_html/WEB-INF/classes:.:
export set CLASSPATH=.:$CLASSPATH=$CLASSPATH:/home/hurec/public_html/WEB-INF/classes:.:
export set CLASSPATH=.:$CLASSPATH=$CLASSPATH:/usr/local/tomcat/common/lib/servlet.jar:.:

아파치와 톰캣 연동(펌)

mod_jk를 사용해서 아파치 2 와 톰캣 5.5를 연동하기

1: 아파치 2를 설치한다.

httpd-2.0.55의 소스를 받아 설치한다.
./configure --enable-so --enable-mods-shared=most --prefix=/usr/local/apache2.
make
make install

2: 자바(JDK 1.5이상)를 설치한다.

/usr/local/java 등의 위치에 설치하고, /etc/profile 제일 아랫줄에
export JAVA_HOME=/usr/java/jdk1.5.0_05
라고 추가하고,
source /etc/profile 명령을 실행해서 변경을 적용시킨다.


3: 톰캣 5.5 설치

apache-tomcat-5.5.12.tar.gz 를 다운받아 /usr/local 에 놓고 root 권한으로 아래와 같이 실행한다.

cd /usr/local
tar xvfz apache-tomcat-5.5.12
ln -s /usr/local/apache-tomcat-5.5.12 /usr/local/tomcat
groupadd tomcat
useradd tomcat -g tomcat -d /usr/local/tomcat tomcat
chown -R tomcat.tomcat /usr/local/apache-tomcat-5.5.12 /usr/local/tomcat

/etc/profile에 아래의 내용을 추가하고 적용한다.

export PATH=$PATH:/usr/local/bin:/usr/local/tomcat/bin
export JAVA_HOME=/usr/java/jdk1.5.0_05
export CATALINA_HOME=/usr/local/tomcat

위의 내용을 추가했으면,

source /usr/profile을 실행


톰캣 서버 실행 테스트

톰캣 디렉토리의 bin디렉토리가 PATH에 포함된 것을 확인하고,
startup.sh
을 실행하면 톰캣이 실행된다.

ps -def | grep tomcat
이라고 실행할 때
tomcat 18591 1 88 06:40 pts/0
와 비슷한 내용이 보이면 톰캣 서버가 실행된 것이다.
 
shutdown.sh
을 실행하여 톰캣 서버를 멈추고서, 다시
ps -def | grep tomcat

을 실행하면 위의 내용이 보이지 않게 된다.


4: mod_jk 설치하기
 jakarta-tomcat-connectors-1.2.14.1-src.tar.gz 를 다운받고 아래처럼 실행한다.

cd jakarta-tomcat-connectors-1.2.14.1-src/jk/native
./buildconf.sh
./configure --with-apxs=/usr/local/apache2/bin/apxs
make

make install

mod_jk.so 가 /usr/local/apache2/modules 디렉토리 안에 있고, 권한은 755로 설정되어있는지 확인한다..

5: 아파치를 톰캣에 연결하기

/usr/local/apache2/conf 디렉토리에 workers.properties 라는 이름의 파일을 만들고 아래의 내용을 입력한 후 저장한다.

workers.tomcat_home=/usr/local/tomcat
workers.java_home=/usr/java/jdk1.5.0_05
ps=/
worker.list=default

worker.default.port=8009
worker.default.host=localhost
worker.default.type=ajp13
worker.default.lbfactor=1

httpd.conf 에 아래의 내용을 추가한다.
#
# Mod_jk settings
#
# Load mod_jk module
LoadModule jk_module modules/mod_jk.so
# Where to find workers.properties
JkWorkersFile conf/workers.properties
# Where to put jk logs
JkLogFile logs/mod_jk.log
# Set the jk log level [debug/error/info]
JkLogLevel debug
# Select the log format
JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
# JkOptions indicate to send SSL KEY SIZE,
JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories
# JkRequestLogFormat set the request format
JkRequestLogFormat "%w %V %T"
# Send JSPs for context /jsp-examples to worker named default
JkMount /jsp-examples/*.jsp default
# Send servlets-examples to worker named default
JkMount /servlets-examples/* default

Keep editing httpd.conf and add following Alias directives (for example under the entry for the icon Alias). These directives tell Apache to map /jsp-examples and servlets-examples to the sample directories that ship with Tomcat.

# Static files in the jsp-examples webapp are served by apache
Alias /jsp-examples "/usr/local/tomcat/webapps/jsp-examples/"

Options FollowSymLinks
AllowOverride None
Allow from all


# The following line prohibits users from directly access WEB-INF

AllowOverride None
deny from all


# Static files in the servlets-examples webapp are served by apache
Alias /servlets-examples "/usr/local/tomcat/webapps/servlets-examples/"

Options FollowSymLinks
AllowOverride None
Allow from all


# The following line prohibits users from directly access WEB-INF

AllowOverride None
deny from all


아파치를 재구동한다.

http://Web_server_name_or_IP:8080에 접속해 본다.

http://Web_server_name_or_IP/jsp-examples

http://Web_server_name_or_IP/servlets-examples 에 접속하여 연동을 확인한다