2003. 10. 22. 14:33

IP형식 알아보는 모듈

Public Function IsStrIP(strIp As String) As Boolean
'문법에 맞는 아이피냐? 아니냐?
'000.000.000.000, 127.0.0.1
'각 숫자는 무조건 0보다 크고 255보다 작아야 한다. 단, 로컬 아이피인 127.0.0.1의 경우 가운데 숫자들이 0이므로
'이것을 처리할 수 있어야 한다.
    Dim SplitIP() As String
    Dim i As Byte
    
    '최대 자릿수인 15자리수가 넘어갔을 경우와 최소 자릿수인 7자리수가 안될 경우
    If Len(strIp) > 15 Or Len(strIp) < 7 Then GoTo msgerr
    '-------------- 1처리 -----------------
    SplitIP = Split(strIp, ".")
    '--------------------------------------
    'dot(점으)로 나눈 숫자들이 3(=4)과 같지 않으면 아이피가 아닌것으로 판정함.
    If UBound(SplitIP) <> 3 Then GoTo msgerr

    '나눈 문자열들 중 255보다 크거나 0보다 작을 때 및 빈문자열일 경우 아이피 아님판정
    For i = 0 To UBound(SplitIP) '딱 4개로 떨어지지만 확실하게 하기 위해 Ubound사용
        If val(SplitIP(i)) > &HFF Or val(SplitIP(i)) < 0 Or SplitIP(i) = "" Then
            If (i = 1 Or i = 2) And val(SplitIP(i)) = 0 Then '가운데 숫자는 넘기기
            Else
                GoTo msgerr
            End If
        End If
    Next
    IsStrIP = True
    Exit Function
msgerr:
    IsStrIP = False
End Function






Public Function GetNonzeroIpAddress(IpStr As String) As String

'아래는 화면디스플레이할 때 자릿수에 맞춰 보기 좋게 하기 위해서 무조건 3자리로 표시합니다.

'예를 들어 192.168.004.188 이런식으로 화면 디스플레이 합니다.

'그런데 이런 상태로 통신하면 안되죠. 이것을 다시 192.168.4.188로 만들기 위한 함수입니다.

    Dim pos As Integer

    Dim temp_ipstr As String

    Dim IPaddr(4) As String

    Dim I As Integer

     temp_ipstr = IpStr

    

    For I = 1 To 4

        pos = InStr(temp_ipstr, ".")

        If pos < 0 Then

            GetNonzeroIpAddress = ""

            Exit Function

        ElseIf pos = 0 Then

            IPaddr(I) = temp_ipstr

            temp_ipstr = ""

        Else

            IPaddr(I) = Left(temp_ipstr, pos - 1)

            temp_ipstr = Mid(temp_ipstr, pos + 1)

        End If

        

        While Left(IPaddr(I), 1) = "0"

            IPaddr(I) = Mid(IPaddr(I), 2)

        Wend

    Next

    GetNonzeroIpAddress = IPaddr(1) & "." & IPaddr(2) & "." & IPaddr(3) & "." & IPaddr(4)

End Function






Public Function GetPushZeroIP(IpStr As String) As String

'아래 함수는 위의 함수가 하는일의 반대일을 합니다. 화면 디스플레이를 보기 좋게 하기 위해

'세자리 씩 끊어주는 함수죠

    Dim IPaddr() As String, I As Byte

    IPaddr() = Split(IpStr, ".")

    For I = 0 To UBound(IPaddr)

        IPaddr(I) = Format(IPaddr(I), "000")

    Next

    GetPushZeroIP = IPaddr(0) & "." & IPaddr(1) & "." & IPaddr(2) & "." & IPaddr(3)

End Function




'아래 함수는 스트링 형식으로 되어있는 아이피를 바이트 배열로 다시 Long타입으로

'바꿔주는 함수입니다.

'일반적으로 잘 안쓰이지만 장비계통일 하다보면 장비의 아이피를 설정할때 쓰이게

'되는데 장비와 아이피 스트링을 주고 받으려면 Long타입으로 주고 받을 때 사용됩니다.

Public Function GetIptoLong(IPString As String) As Long

    Dim longip As Long

    Dim nCnt As Byte

    Dim value(4) As Byte

    Dim strTemp() As String

    

    If IPString = "" Then Exit Function

    strTemp = Split(IPString, ".")

    

    For nCnt = 0 To 3

        value(nCnt) = val(strTemp(nCnt))

    Next

        

    CopyMemory longip, value(0), 4

    GetIptoLong = longip

End Function






Public Function GetLongtoIp(ByVal longip As Long) As String

'아래함수는 위의 함수 역기능을 하는 함수로 Long타입으로 되어 있는 것을

'아이피 스트링 타입으로 변환합니다.

    Dim value(3) As Byte

    Dim nCnt As Byte

    CopyMemory value(0), longip, 4

    For nCnt = 0 To 3

        If value(nCnt) > 255 Then

            GetLongtoIp = "ERR"

            Exit Function

        End If

    Next

    GetLongtoIp = CStr(value(0)) & "." & CStr(value(1)) & "." & _

                     CStr(value(2)) & "." & CStr(value(3))

End Function

2003. 10. 22. 14:24

메서드에 대한 간단한 강좌

오늘은 메서드에 관해 이야기를 하려고 합니다.

F8을 눌러서 한라인씩 실행을 시켜서 실행을 해보십시오.

어떻게 클래스에서 선언된 메서드를 호출하고 어떻게 동작이 되는지 알아 보십시오.



▨ 클래스의 메서드(Method)

오늘은 클래스의 메서드에 대해서 진행을 하겠습니다.
메서드는 일종의 프로시져(Sub, Function)이며 글래스 모듈에서 작성이되면 일반적으로 메tj드라고 부립니다.
클래스에서의 메소드란 표준모듈의 사용자 정의 프로시져와 같습니다.

메tj드도 Public과 Private로 선언을 해서 사용을 하며 어느것으로 선언을 했는지에 따라서 외부로부터 호출을 할 수 있는지 없는지
결정을 할 수 있습니다.

저번 강좌에서 했던 1부터 100까지 구하는 예제는 메소드를 이용하지 않고 사용을 했는데 좋은 방법은 아님니다.
Property Get 프로시져는 오로직 외부로부터 값을 전달만 해주는 기능으로만 이용을 하는 것이 바람직합니다.

다음 예제는 1부터 100까지 구하는 메소드입니다.
Public Sub Compute()
    Dim i%
    Dim Tot%
    Tot = 0
    For i = 1 To MyValue
        Tot = Tot + i
    Next
    MyValue = Tot
End Sub

기존에 표준모듈에서 사용을 하던 사용자 정의프로시져와 비슷하다는 걸 알 수 있을 겁니다.
단지 틀린 점은 100까지 구한 결과를 MyValue라는 클래스에서 선언된 변수에 넣는다는 점입니다.


▨ 클래스 메소드 예제

이번 예제는 1부터 100까지 합을 구하는 방법을 클래스의 메서드와 표준모듈의 사용자정의프로시져를 이용해서 그 결과값을 구하는 예제 입니다.

소스에 각 Command Button의 Click이벤트를 보면 클래스의 메소드보다 사용자정의 프로시져를 이용하는 것이 훨씬 소스의 간결함을 볼 수 있을 겁니다.
하지만 표준모듈에서는 이벤트를 만들 수 없다는 단점이 있습니다.
이 클래스이벤트는 나중에 설명을 하지요.

폼에 Command Button을 2개 추가를 하고 표준모듈과 클래스모듈을 각각 하나씩 추가를 합니다.

*** Form1 ***
Private Sub Command1_Click()

    Dim Result As Integer
    Dim C1 As Class1

    Set C1 = New Class1

    C1.MyData = 100
    C1.Compute '클래스의 메서드를 호출합니다.

    Result = C1.MyData

    MsgBox "클래스에서 구한 결과 값 " & Result

    Set C1 = Nothing

End Sub

Private Sub Command2_Click()

    Dim Result As Integer

    Result = Compute(100)

    MsgBox "사용자 정의 프로시져에서 구한 결과 값 " & Result

End Sub


*** Class1 ***
Private MyValue As Integer

Public Property Let MyData(Value As Integer)
    MyValue = Value '외부에서 값을 전달 받는다
End Property

Public Property Get MyData() As Integer
    MyData = MyValue '내부에서 사용한 변수의 값을 외부로 전달한다
End Property

Public Sub Compute()
    Dim i As Integer
    Dim Tot As Integer
    Tot = 0
    For i = 1 To MyValue 'Property Let로 전달 받은 값으로 반복문을 실행
        Tot = Tot + i
    Next
    MyValue = Tot '반복된 결과값을 내부에서 사용하는 변수에 저장
End Sub


*** Module1 ***
Public Function Compute(Value As Integer) As Integer
    Dim i As Integer
    Dim Tot  As Integer
    Tot = 0
    For i = 1 To Value
        Tot = Tot + i
    Next
    Compute = Tot
End Function


2003. 10. 22. 08:26

한쪽 문이 닫히면 다른 문이 열리고...

한쪽 문이 닫히면 다른 문이 열리고...
다른 방, 다른 곳에서 다른 사건이 일어난다.
우리 삶에는 열리고 닫히는 많은 문들이 있다.
당신이 바꿀 수 있는 것은
오로지 당신 자신이다.



- 헬렌 니어링의《아름다운 삶, 사랑 그리고 마무리》중에서 -



* 우리 삶에는 여러 문이 있습니다.
고통의 문, 행복의 문이 있고 열린 문, 닫힌 문도 있습니다.
고통의 문에 들어섰을 때 너무 당황하지 마십시오.
그 다음 열리는 문이 행복의 문일지도 모릅니다.
한쪽 문이 닫혔을 때 절대로 주저앉지 마세요.
또 다른 더 좋은 문이 곧 열릴테니까요.



2003. 10. 21. 07:57

손뼉을 쳐라

박수를 치면
스트레스 해소는 물론 우울증, 신경통,
심장병, 생식기질환, 견비통 등 각종 질병 치료에서
피부미용과 두뇌 활성화에 이르기까지 우수한 효과가 있음을
실험 발표한 바 있다. 박수를 치고 보면 기분이 상쾌하고
즐거우며 자신감이 생겨 긍정적인 사고를 하게 된다.
성격이 좋아져 밝고 화평하게 만들어 매사에
적극적인 사고를 갖게 한다.



- 유근호의 《건강 100계명》중에서 -



* 박수는 마음의 표시입니다.
격려와 사랑이 담긴 건강함의 증거입니다.
박수가 있어야 무대에 흥이 돋고 신바람이 납니다.
무대 위의 사람은 그 박수 소리에 자기 인생을 겁니다.
나에게도 좋고 상대방에게도 좋은 박수!
손뼉은 치면 칠수록 좋습니다.



2003. 10. 20. 23:28

Apache Tomcat 연동

[JAVA] Apache2.0.40 + Tomcat4.1.12 on RedHat8.0
Apache2.0.40 + Tomcat4.1.12 on RedHat8.0



구경탁 jinuxer@koug.net
1차수정 : 2002년 11월 01일

2차수정 : 2002년 11월 05일




--------------------------------------------------------------------------------

본 문서는 LINUX에서 Apache와 Tomcat의 연동을 시도하였으나, 매번 삽질만 하다가 끝내는 포기하고 하위버전을 사용하거나, Tomcat 단독으로 사용하여 Test를 하시는 분들을 위하여 조금이나마 도움이 되라고 작성한 문서입니다. 본문의 내용은 존칭은 생략토록 하겠습니다.(__)



--------------------------------------------------------------------------------



1. 작업환경

OS : RedHat8.0
Apache : 2.0.40
Tomcat : 4.1.12
Java : 1.4.1
2. 다운로드목록

http://java.sun.com/j2se/1.4.1/download.html
http://www.apache.kr.net/dist/httpd-2.0.40.tar.gz
http://jakarta.apache.org/builds/jakarta-tomcat-4.0/release/v4.1.12/bin/jakarta-tomcat-4.1.12.tar.gz
http://jakarta.apache.org/builds/jakarta-tomcat-4.0/release/v4.1.12/src/jakarta-tomcat-connectors-4.1.12-src.tar.gz
주, httpd-2.0.40.tar.gz와, jakarta-tomcat-connectors-4.1.12-src.tar.gz는 mod_jk.so가 Apache2.0.40에 맞춰진것이 없어서 직접 생성을 해야하므로, 받아야 할 것이다. 생성하면되지 왜안되냐?라고 묻는다면 눈씻고 찾아봐두 mod_jk.so생성에 필요한 apxs가 없다. 그래서 편법(일명 잔머리)을 사용했다.



3. 작업디렉토리 및 설치경로

/tmp => 소스다운로드 디렉토리
/usr/local/apache => Apache 설치디렉토리
/usr/local/tomcat => Tomcat 설치디렉토리
/usr/local/java => Java 설치디렉토리

4. 간략한 설치과정 소개

Apache를 compile하여 install을 한다.
mod_jk.so를 생성한다.
Java를 설치한다.
Tomcat을 설치한다.
Apache와 Tomcat을 연동한다.
Context 추가 및 ROOT 디렉토리 변경한다.
맘껏 Test를 해본다.
5. Apache 설치



이부분은 서두에서두 언급했지만 mod_jk.so를 생성하기위한것이다. 허나, default로 인스톨되어 있는 Apache를 사용하지않고 Apache를 직접 compile 및 install하여 사용하겠다면 적당한 디렉토리에 인스톨을 하면 되겠다.



# cd /tmp
# tar xzvf httpd-2.0.40.tar.gz
# cd /tmp/httpd-2.0.40
# ./configure --prefix= /usr/local/apache --enable-rule=SHARED_CORE --enable-module= so




주, httpd-2.0.40/INSTALL 문서를 한번쯤 읽어보자.




# make
# make install
# httpd -l



mod.so.c 이 리스트에 보이면 성공!



부록 : 부팅시 자동으로 Apache 시동하기



이 내용은 default 로 install 되어 있는 Apache를 사용할 경우는 상관없다.
setup 에서 check만으로 되기때문이다. 새로 compile하여 install을 한 경우만 해당한다.



# cp /usr/local/apache/bin/apachectl /etc/rc.d/init.d/httpd
# cd /etc/rc.d/rc5.d
# ln -s /etc/rc.d/init.d/httpd S86httpd
# cd /etc/rc.d/rc6.d
# ln -s /etc/rc.d/init.d/httpd K86httpd



4. mod_jk.so 생성




# cd /tmp
# tar xzvf jakarta-tomcat-connectors-4.1.12-src.tar.gz
# cd /tmp/jakarta-tomcat-connectors-4.1.12-src/jk/native
# ./buildconf.sh
# ./configure --with-apxs=/tmp/apache/bin/apxs




주, jakarta-tomcat-connectors-4.1.12-src/jk/native/BUILDING 문서를 한번쯤 읽어보자.




# make
# make install
# ll /usr/local/apache/modules



mod_jk.so 이 있으면 성공!



5. 환경변수설정



Java와 Tomcat을 위한 환경변수를 설정하는 부분이다.


# vi /etc/profile




--------------------------------------------------------------------------------

...
JAVA_HOME=/usr/local/java
CATALINA_HOME=/usr/local/tomcat
PATH=$PATH:$JAVA_HOME/bin:$CATALINA_HOME/bin

export JAVA_HOME CATALINA_HOME
...



--------------------------------------------------------------------------------



# source /etc/profile



편집 후 환경변수를 적용시킨다.



6. Java 설치


# cd /tmp
# ./j2sdk-1_4_1-linux-i586.bin
# mv /tmp/j2sdk1.4.1 /usr/local
# cd /usr/local
# ln -s j2sdk1.4.1 java
# java



먼가 좌르륵 나오면 성공! 넘 간단하지 않은가!



7. Tomcat 설치


# cd /tmp
# tar xzvf jakarta-tomcat-4.1.12.tar.gz
# mv jakarta-tomcat-4.1.12 /usr/local
# cd /usr/local
# ln -s jakarta-tomcat-4.1.12 tomcat
# catalina.sh start



http://localhost:8080 으로 접속하여 고양이가 보이면 성공!



부록 : 부팅시 자동으로 Tomcat 시동하기



# vi /etc/rc.d/init.d/tomcat




--------------------------------------------------------------------------------

#!/bin/sh
#
# Startup script for Tomcat, the Apache Servlet Engine
#
# chkconfig: - 85 15
# description: Start Tomcat
#
# processname: tomcat
#
# Source function library.
. /etc/rc.d/init.d/functions

export JAVA_HOME=/usr/local/java
export CATALINA_HOME=/usr/local/tomcat
export PATH=$PATH:$JAVA_HOME/bin:$CATALINA_HOME/bin

# See how we were called.
case "$1" in
  start)
        echo -n "Starting tomcat: "
        daemon $CATALINA_HOME/bin/startup.sh
        touch /var/lock/subsys/tomcat
        echo
        ;;
  stop)
        echo -n "Shutting down tomcat: "
        daemon $CATALINA_HOME/bin/shutdown.sh
        rm -f /var/lock/subsys/tomcat
        echo
        ;;
  restart)
        $0 stop
        sleep 2
        $0 start
        ;;
  *)
        echo "Usage: $0 {start|stop|restart}"
        exit 1
esac

exit 0



--------------------------------------------------------------------------------




# chkconfig --add tomcat

# chkconfig --level 3 tomcat on



8. Apache와 Tomcat의 연동을 위한 작업



# vi /usr/local/tomcat/conf/server.xml




--------------------------------------------------------------------------------

내용중 다음을 찾아서
<Server port="8005" shutdown="SHUTDOWN" debug="0">
밑줄에 다음을 입력한다.
<Listener className="org.apache.ajp.tomcat4.config.ApacheConfig" />



내용중 다음을 찾아서
<Host name="localhost" debug="0" appbase="webapps">
밑줄에 다음을 입력한다.
<Listener className="org.apache.ajp.tomcat4.config.ApacheConfig" append="true" />



--------------------------------------------------------------------------------



# catalina.sh start


Tomcat 을 재시작하면,
/usr/local/tomcat/conf 디렉토리 아래에
auto 디렉토리와 jk 디렉토리가 생겼을 것이고, auto 아래에 mod_jk.conf가 생겼을것이다.
마술일까? Listener 태그를 추가했기때문이다.^0^



# cd /usr/local/tomcat/conf/jk
# vi 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



--------------------------------------------------------------------------------



# vi /etc/httpd/conf/httpd.conf



제일 아래 부분에 아래와 같이 추가해준다.
default로 인스톨되어 있는 Apache말고 새로 compile하여 install을 한 Apache인 경우도 마찬가지이다.



--------------------------------------------------------------------------------

#
#Load mod_jk
#
LoadModule jk_module modules/mod_jk.so
#
#Configure mod_jk
#
JkWorkersFile /usr/local/tomcat/conf/jk/workers.properties
JkLogFile /usr/local/tomcat/logs/mod_jk.log
JkLogLevel emerg
#
# Root context
JkMount  /*.jsp ajp13
JkMount  /servlet/* ajp13

Include /usr/local/tomcat/conf/auto/mod_jk.conf



--------------------------------------------------------------------------------




9. Context 추가 및 ROOT 디렉토리 변경



koug 라는 컨텍스트를 추가해 보겠다.
/var/www/ 디렉토리에 koug 디렉토리를 만든다.



주, 원하는 아무 디렉토리에 원하는 이름으로 생성하면 된다.



# cd /var/www
# mkdir koug

# vi /usr/local/tomcat/conf/server.xml





--------------------------------------------------------------------------------


...

        <!-- Define properties for each web application.  This is only needed
             if you want to set non-default properties, or have web application
             document roots in places other than the virtual host's appBase
             directory.  -->

        <!-- Tomcat Root Context -->
        <!--
          <Context path="" docBase="ROOT" debug="0"/>
        -->

        <!-- Tomcat koug Context -->
        <Context path="/koug" docBase="/var/www/koug" debug="0"
                 reloadable="true"/>

        <!-- Tomcat Examples Context -->
        <Context path="/examples" docBase="examples" debug="0"
                 reloadable="true" crossContext="true">
          <Logger className="org.apache.catalina.logger.FileLogger"
                     prefix="localhost_examples_log." suffix=".txt"
           timestamp="true"/>
...



--------------------------------------------------------------------------------




제대로 연동이 되는지 Test를 해보자.



# cp -r /usr/local/tomcat/webapps/examples/* /var/www/koug


Tomcat과 Apache를 재시동한다.



http://localhost/koug/jsp/
http://localhost/koug/servlets/



어랏! 포트번호가 빠졌다. 눈치를 챘으리라. -.-+

Apache와 Tomcat가 연동이 되었다는 증거가 여기서 나오는 것이다.



물론, 아래처럼



http://localhost:8080/koug/jsp/
http://localhost:8080/koug/servlets/



접속을 해도 결과는 마찬가지다. 속이 시원하지 않은가? 으햐햐햣 -0-

그렇다면, ROOT 의 디렉토리는 어떻게 하면 될까?

그렇다. 별문제없이 되리라고 생각이 될것이다. 별반차이가 없다는것이다.



# vi /usr/local/tomcat/conf/server.xml





--------------------------------------------------------------------------------


...

        <!-- Define properties for each web application.  This is only needed
             if you want to set non-default properties, or have web application
             document roots in places other than the virtual host's appBase
             directory.  -->

        <!-- Tomcat Root Context -->
          <Context path="" docBase="/var/www/html" debug="0" reloadable="true" />

        <!-- Tomcat Examples Context -->
        <Context path="/examples" docBase="examples" debug="0"
                 reloadable="true" crossContext="true">
          <Logger className="org.apache.catalina.logger.FileLogger"
                     prefix="localhost_examples_log." suffix=".txt"
           timestamp="true"/>
...



--------------------------------------------------------------------------------



# cp -r /usr/local/tomcat/webapps/examples/* /var/www/html




Tomcat과 Apache를 재시동한다.



http://localhost/jsp/
http://localhost/servlets/



원하는 결과가 나왔는가?



이곳까지 왔는데도 안된다면 자신의 손과 눈을 의심해보고 첨부터 깔끔하게 재시도하기 바란다. -_-;;



참고URL
http://linux.sarang.net/board/?p=read&table=tip&no=7161&page=&o[at]=s&o[sc]=t&o[ss]=tomcat&o[st]=a
http://www.javaservice.net/~java/bbs/read.cgi?m=appserver&b=engine&c=r_p&n=1034684803&p=1&s=t#1034684803
http://www.javaservice.net/~java/bbs/read.cgi?m=appserver&b=engine&c=r_p&n=1030719705&p=2&s=t#1030719705
http://okjsp.pe.kr/lecture/lec01/tomcat4directory.xml



======================================
Visit to KOUG(Korea Oracle User Group)
http://www.koug.net
jinuxer@koug.net
======================================



2003. 10. 20. 14:25

11월8일(토) 윤도현밴드 공연(수원) 보러갈 사람요~~~

User-created
11월 8일에 수원에서 하는 윤도현밴드 공연 보러 갈사람 리플달아주세염..

이번주까지 알려주시면.. 한꺼번에 예매하겠습니당..

일시: 2003년 11월 8일(토) 18:00
공연장 : 수원 아주대학교 체육관
        http://ticket.interpark.com/TIKI/Main/TPPlaceInfo.asp?PlaceCode=03591

S석 5만원
A석 4만원입니당..

S석은 1층이고, A석은 2층이네요.

S석도 좌석 보니깐.. 앞줄에 않긴 힘들꺼 같구요..

A열 : 15번째줄
B열 : 25번째줄
C열 : 29번째줄.. 이렇네요..ㅠ.ㅠ

암튼 기타 의견도 리플달아주세여//..
2003. 10. 20. 08:11

인생은 짧다

인생은 너무 짧고,
특히 모든 것에 용감히 맞설 수 있을 만큼
강한 힘을 유지할 수 있는 건
몇 년 되지 않는다.



- 빈센트 반 고흐의 《반 고흐, 영혼의 편지》중에서-



* 인생은 길이가 아닙니다.
오래 살아야 백년입니다. 천년을 더 산들 150억년
우주 나이에 견주면 순간에 불과합니다.
인생은 의미입니다. 뜻있게 살아야
오래 살고 영원히 사는 것입니다.



2003. 10. 17. 08:20

신념의 힘

당신의 배가 암초에 부딪쳐
바위가 많은 바닷가 물결 속으로 휩쓸려 들어갔다고 하자.
그때 이제는 그만이라고 생각하면 당신은 그것으로 끝이다.
그러나 그때 갑자기 나는 산다, 어떻게든 이 난관을 뚫고
나갈 수 있다는 적극적인 용기가 솟았다고 하자.
그러면 당신은 살아나게 된다. 그 느낌은 곧
신념으로 바뀌고 그 신념과 함께 어디선지
당신을 구하는 힘이 오게 된다.



- 콜로드 브리스톨의 《신념의 마력》중에서 -



* 용기는 마음을 강하게, 담대히 하는 것입니다.
그렇다고 두려움을 전혀 모르는 것이 아닙니다.
두려움을 알지만 적극적인 용기를 가지고
앞으로 전진하는 것이 신념입니다.
신념은 자신을 구하는 가장 큰 힘입니다.



2003. 10. 17. 02:12

aaa

2003. 10. 16. 17:57

Redhat 9 에서 Oracle 9i 설치

레드햇9은 NPTL이라는 새롭게 개선된 스레드 라이브러리를 탑재하고 있습니다. 따라서 기존의 Linux Pthread기반의 오라클같은 프로그램들은 제대로 작동하지 않습니다.



환경변수에서 export LD_ASSUME_KERNEL = 2.4.1

를 추가해주시시고 설치를 시도하시기 바랍니다. 위의 환경 변수는 개선된 NPTL대신에 기존의 Pthread 호환모드로 돌아갑니다.



가급적 레드햇 7.3, 8.0을 추천합니다. 9.0은 오라클에서 인증되지 않은 버젼입니다. 쓰레드 라이브러리의 변화는 모든 프로그램의 호환성에 영향을 줄 수 있습니다.