우분투에서 설정을 잘못했는지...
xmms는 mp3플레이하면 죽어버리고, Totem에서는 디코더를 못 찾는다고 나오더군요 ㅡㅡ;

작업(프로그래밍시)에 귀가 심심해서리 필요하다는 라이브러리는 다 찾아서 해봤는데 소용이 없더군요...

그래서 여기저기 알아보니, 시냅틱 패키지 관리자에서 VLC media player 다운로드해서 사용하면 된다고 합디다^^;;

지금 다운로드 받아서 실행해봤는데, 잘 쓰고 있습니다^^
혹시 xmms나 Totem이 안되는 분들은 시냅틱 패키지 관리자에서 VLC를 찾아서 설치하세요^^

Posted by xHuro
,
http://blog.naver.com/newhuni.do?Redirect=Log&logNo=20003887160

오류 발생에 대해서...
- make과정중 오류가 2개 뜨며 종료되면 메시지를 확인한다. 메시지를 확인하면 g++프로그램이 설치되어 있지 않아서 발생하는 오류일 수도 있고, freetype.h를 찾을수 없다고 오류가 뜰 수도 있다. g++이 없다면 설치해 주어야 하며, freetype.h 파일을 찾을수 없다면 다음과 같은 과정으로 해결한다. /usr/include폴더에 freetype1, freetype2의 폴더는 존재하는데 freetype폴더는 존재하지 않을 것이다. 이때 freetype2/freetype폴더를 소프트 링크 시킨다.

# ln -s /usr/include/freetype2/freetype /usr/include/freetype

05.09.20 : 한글화에 관해서...(아직 미확인)
main 함수 부분에서

QFont font("unifont", 16, 50, FALSE, QFont::Unicode);
qApp->setFont(font);

QTranslator translator(0);
translator.load("i18n_ko.qm", ".");
app.installTranslator(&translator);

을 Widget 인스턴스의 show 메서드가 호출되기 전에 추가한다.
이 후, 문자형은 "Title" 대신 tr("Title") 이라 넣어준다.
Posted by xHuro
,
어제 live CD 이미지를 성공하고, 오늘부터 본격적으로 커스터마이즈를 해볼까 생각중입니다.

일단 먼저, 로그인 후 로딩화면을 바꿔볼까 생각 중이구요^^

참고문서 :
http://ubuntuforums.org/showthread.php?t=26513&highlight=login+image
Posted by xHuro
,


밤에 잠도 안오고, 블로깅하다가 보니... 요즘 스크린샷을 많이 올려놓았더군요..
유행(?) 따라 저도 한컷 올려봅니다^^
벌써 모기가 날아다니네요 ~ @.@


무언가에 미치지 않으면 얻을 수 있는 건 아무것도 없다.
Posted by xHuro
,
우분투를 설치하면, 처음의 한글 폰트가 장난이 아니죠 ㅡㅡ;
폰트 바꾸려고 또 하루 날렸네요^^

아래는 참고 문서 입니다.
http://www.ubuntulinux.org/wiki/KoreanSetupHowto

워낙 잘 되어 있어서 저가 설명할 것도 없네요..
Posted by xHuro
,
인터넷 자료마다 달라서 꽤 많이 삽질했습니다.
이전 커널버전과는 너무 차이가 나고, 데비안 계열의 패키지를 처음 사용하느라 적응하는데 조금 힘들었습니다. 이틀 동안 무려 5번은 컴파일한 듯 ㅡㅡ;
Vmware로 실행하니까 장난 아니게 느리네요 ㅜㅜ

일단 gcc와 g++ 등 빌드 도구가 필요하므로..
apt-get install build-essential

하여 빌드 도구를 설치합니다.
두번째로.. 커널 소스가 필요하겠죠.. 커널 소스와 initrd-tools를 받습니다.
apt-get install linux-source-2.6 kernel-package initrd-tools

커널 소스는 아시다시피 /usr/src 디렉토리에 저장됩니다.
세번째로 필요한 건 Ncurses 라이브러리입니다. 뭐... 저는 예전의 Text 메뉴(menuconfig)가 익숙해서리 ncurses를 받았습니다.
apt-get install ncurses-dev

압축을 풀고 일단 설정부터 합니다. 설정에 관한 자세한 내용은 아래 포스트에 연결된 다른 문서들을 참고하세요^^
make menuconfig

설정을 다하고 저장한 후, 다음을 차례대로 실행합니다.
make
make modules_install install

Vmware에서는 한 시간 넘게 걸리더군요. 식사시간에 맞춰서 실행하고 식사하고 오셔도 괜찮을 듯 합니다 @.@

마지막까지 실행되고 나면 무언가가 설정되었다는 화면이 마지막으로 뜹니다. 여기서 중요합니다. 저가 하루꼬박 삽질한 대목인데요.
바로 mkinitrd를 사용하여, initrd.img 파일을 만들어야합니다.
mkinitrd -o /boot/initrd.img-`uname -r` `uname -r`


여기까지 왔으면, 거진 90%는 끝났습니다. 다음을 확인해봅니다.
/boot/vmlinuz 생성날짜
/boot/initrd.img-컴파일한 커널 버전
/boot/grub/menu.lst


아래 menu.lst는 제 리눅스의 설정입니다.
menu.lst 안에 설정에 대한 설명이 잘 되어 있으니 따라서 하면 쉽게 할 수 있을 껍니다^^ 진한 부분이 저가 첨가한 새로운 커널 이미지부분입니다.
title Ubuntu, kernel 2.6.10-5-386
root (hd0,0)
kernel /boot/vmlinuz-2.6.10-5-386 root=/dev/hda1 ro quiet splash
initrd /boot/initrd.img-2.6.10-5-386
savedefault
boot

title Ubuntu, kernel 2.6.10-5-386 (recovery mode)
root (hd0,0)
kernel /boot/vmlinuz-2.6.10-5-386 root=/dev/hda1 ro single
initrd /boot/initrd.img-2.6.10-5-386
savedefault
boot

title Ubuntu, kernel memtest86+
root (hd0,0)
kernel /boot/memtest86+.bin
savedefault
boot

title Ubuntu, kernel 2.6.10 (test mode)
root (hd0,0)
kernel /boot/vmlinuz root=/dev/hda1 ro quiet splash
initrd /boot/initrd.img-2.6.10
savedefault
boot

재부팅하고 grub이 뜰때 esc를 눌러 새로운 메뉴를 선택하고, 커널 패닉이 안뜨면 성공한 겁니다.
Posted by xHuro
,
http://www.captain.at/programming/kernel-2.6/
http://www.tldp.org/LDP/lkmpg/2.6/html/lkmpg.html

-- 커널 컴파일 --
http://pages.cpsc.ucalgary.ca/~spark/translations/kernel2.6.x.html
http://www.zdnet.co.kr/techupdate/lecture/os/0,39024998,39129174,00.htm
http://www.captain.at/programming/kernel/
http://www.ubuntuforums.org/showthread.php?t=19447

-- QT 설치 --
http://www.ubuntuforums.org/showthread.php?t=3505
http://www.ubuntuforums.org/showthread.php?t=9336
Posted by xHuro
,
- Ubuntu에서 compiler 업데이트 -
apt-get install gcc
sudo apt-get install g++
sudo apt-get install build-essential


- 나만의 Live CD! 만들기 -
http://www.ubuntulinux.org/wiki/LiveCDCustomizationHowTo
http://bbs.kldp.org/viewtopic.php?p=242078
http://www.superuser.co.kr/linux/livecd/linux-livecd-make.htm

- Live CD! 정보모음 -
http://www.frozentech.com/content/livecd.php
http://livecd.berlios.de/
http://www.linuxlab.co.kr/docs/00-02-3.htm

- network 수동 설정 -
http://www.ubuntuforums.org/showthread.php?t=25557

- 커널 컴파일 -
http://www.ubuntuforums.org/showthread.php?t=24853
http://www.ubuntuforums.org/showthread.php?t=6849

- Xorg 설치(Gentoo) -
http://kldp.org/download/kldp/cache/wiki.php/GentooInstall
kr.archive.ubuntu.com
Posted by xHuro
,
ubuntu는 처음에 root 계정 설정을 하지 않습니다.
잉? 설치를 잘못했는가
하며..저도 상당히 당황했는데요.

포럼에 찾아가서 알아본 결과..
일반계정으로 로그인 된 후, 터미널에서 다음과 같이 하면 된답니다..



눈치 빠르신 분들은 아시겠지만,
sudo 명령이 SuperUser 권한으로 명령을 실행하는 거랍니다.
즉, SuperUser 권한으로 root의 패스워드를 설정하고,
로그인 하면 되는거지요^^
Posted by xHuro
,
며칠동안 가벼운 배포판을 찾아 헤매였던 결과..
Kubuntu로 결정했습니다.



일단 가볍고, 바로 실행할 수 있는 Live CD 화면입니다.
Live CD라서 설치라고 말하기는 무안하네요.

학교에서 리눅스 쓰기가 힘들었는데, CD 하나 달랑 들고 다니면서
프로그래밍할 수 있게 되었습니다^^

앞으로는 Kubuntu 삽질기도 상당히 올라갈 듯합니다..

참고 사이트 :
http://ubuntu.org
http://www.ubuntuforums.org
http://www.kubuntu.org.uk


Ubuntu는 Zulu어로 "그대가 있음에, 내가 있다"라는 철학적인(?) 의미랍니다^^
Posted by xHuro
,
http://www.distrowatch.com
Posted by xHuro
,
참고 문서 입니다. http://phd.netcomp.monash.edu.au/RobertMarkBram/notes/j2ee/installation.asp

뭐... 차근차근 따라해보면 다 될 꺼 같습니다.
(글 작성하면서 설치하는 중입니다^^)

J2EE 튜토리얼
http://java.sun.com/j2ee/tutorial/1_3-fcs/doc/J2eeTutorialTOC.html
Posted by xHuro
,
java.sql.Connection conn= null;
java.sql.PreparedStatement ps =null;
java.sql.ResultSet rs =null;
String stmt = null;
String strRet = null;
int intRet = 0;

// 1. jdbc driver 를 등록한다.
try {
Class.forName("com.pointbase.jdbc.jdbcUniversalDriver");
} catch (ClassNotFoundException e ) {
out.println(e);
}

// 2. DB와 연결한다.
try{
conn = java.sql.DriverManager.getConnection(
"jdbc:pointbase:server://localhost:9092/sun-appserv-samples","pbpublic","pbpublic");
} catch (java.sql.SQLException e) {
out.println(e);
}

// 3. select
try {
ps = conn.prepareStatement("select * from STUDENT");
rs = ps.executeQuery();

// ResultSet에 저장된 자료를 한 레코드 읽어온다.
rs.next();
strRet = rs.getString("name");
intRet = rs.getInt("qpa");
out.println("name1 = " + strRet + "
");
out.println("qpa1 = " + intRet + "
");

// ResultSet에 저장된 자료를 한 레코드 읽어온다.
rs.next();
strRet = rs.getString("name");
intRet = rs.getInt("no");
out.println("name2 = " + strRet + "
");
out.println("qpa2 = " + intRet + "
");

// 4.db를 닫는다.
rs.close();
ps.close();
conn.close();

} catch (java.sql.SQLException e) {
System.out.println(e);
} catch (java.io.UnsupportedEncodingException e) {
System.out.println(e);
}
Posted by xHuro
,
http://www.trap17.com/index.php/J2ee-Technologies-Integrate-Servlet-Jndi-Jdbc_t7782.html 웹문서를 아주 많이 참고했습니다^^
(거의 의역 수준입니다.. OTL)
여기에 나오는 소스들 모두가 위의 웹문서에서 가져왔습니다^^

html과 php 문서 속성상 소스에서의 <>괄호는 []괄호로 대처합니다..

저번의 pointbase 사용하기 이후로 계속되는 삽질들 입니다..

1. 먼저, pointbase server를 실행합니다.
- 저번에 설명했으므로 부가적인 설명은 하지 않습니다^^
- 잘 모르시는 분은... 초보자의 J2EE 1.4 에서 제공되는 RDBM인 pointbase의 사용하기를 봐주세요^^;;

2. 아무 폴더에서 MyTestDB라는 폴더를 만듭니다.
- 그리고 아래의 파일들을 에디터 등으로 작성하여 MyTestDB에 넣습니다.
build.xml
[?xml version="1.0" ?]
[!-- A minimal build.xml to populate a PointBase database.
This is derived from the build.xml in the J2EE Tutorial.
--]
[project name = "studentDB" default="create-db_common" basedir="."]
[property file="build.properties"/]
[path id="db.classpath"]
[fileset dir="${db.root}/lib"]
[include name="*.jar"/]
[/fileset]
[/path]
[target name="create-db_common" depends="init"
description="Create database tables and populate database." ]
[java classname="com.pointbase.tools.toolsCommander" fork="yes" ]
[jvmarg line="${db.jvmargs}" /]
[arg line="${db.driver} ${db.url} ${sql.script} ${db.user} ${db.pwd}" /]
[classpath refid="db.classpath" /]
[/java]
[/target]
[target name="init"]
[tstamp/]
[/target]
[/project]

build.properties
j2ee.home=D:/Sun/AppServer
sunone.home=${j2ee.home}
domain.resources="domain.resources"
domain.resources.port=8080
db.root=${j2ee.home}/pointbase
db.driver=com.pointbase.jdbc.jdbcUniversalDriver
db.host=localhost
db.port=9092
db.sid=sun-appserv-samples
db.url=jdbc:pointbase:server://${db.host}:${db.port}/${db.sid}
db.user=pbpublic
db.pwd=pbpublic
url.prop=DatabaseName
ds.class=com.pointbase.jdbc.jdbcDataSource
db.jvmargs=-ms16m -mx32m
sql.script=student.sql

- j2ee.home은 각자 J2EE를 설치한 드라이브와 폴더로 변경해주시면 됩니다.

student.sql
CREATE TABLE student
(name VARCHAR(10), qpa VARCHAR(6));

DELETE FROM student;

INSERT INTO student VALUES('Sue', '4.0');
INSERT INTO student VALUES('Billy','3.4');

- 이 파일은 pointbase를 이용하여 테이블의 스키마를 만들고, 튜플을 넣는 SQL문입니다.

3. 자~ 데이터베이스에 위의 SQL문을 실행해봅니다.
- 먼저 도스 콘솔창에 가서, asant.bat라고 실행해보고 실행 파일이 없다는 오류가 나면 J2EE의 환경설정을 제대로 해주셔야합니다.
- 환경설정은 초보자의 간단한 EJB 프로그램 만들기를 참고하세요^^
- 그럼, 이제 조금전에 만들었던 MyTestDB 폴더로 이동하여, asant.bat라고 실행합니다.

- 위와 같이 나오면 성공한겁니다.
이게 머지? 라고 물으신다면.. 저도 자세히는 모릅니다.. (허허;; 먼산)
- 간단히 설명하자면, build.properties에서 pointbase에 접속하기 위한 환경설정을 하고, 그것에 따라 build.xml에서 pointbase에 접속합니다. 그리고 build.properties의 마지막에 지정된 db.script인 student.sql을 pointbase에서 실행하는게 아닐까하는 초보자의 추측입니다.(추측일 따름입니다. 좀더 공부해야겠네요;;)

4. 데이터베이스에서 SQL문이 제대로 실행되었는가 확인해봅시다.
- 저번에 실행했던 startconsole을 실행합니다.
역시나 잘 모르시는 분은... 초보자의 J2EE 1.4 에서 제공되는 RDBM인 pointbase의 사용하기를 먼저 봐주세요^^

- 여기서 중요한 것은 처음 connect할 때의 URL이 저번과는 다르다는 것입니다.
jdbc:pointbase:server://localhost/sun-appserv-samples 이렇게 설정해주고 OK를 선택해야합니다.
- 이것때문에 삽질 좀 했습니다. 영문 문서를 보고도 멍청하게 딴 곳에서 student Table이 없다고 궁시렁거리고 있었으니까요^^;;

- 자 위의 그림처럼 왼쪽 트리의 SCHEMAS > PBPUBLIC > TABLES에서 STUDENT가 있는 것이 확인된다면 성공한 겁니다. 그런 다음 튜플이 제대로 들어갔는지, 확인합니다.

- select문을 사용해서 우리가 student.SQL에서 넣은 값과 같은지 확인하고, 같이 나오면 성공한 겁니다^^

5. 다음은 웹 어플리케이션 (WAR)에서의 DB 테스트할 준비합니다.
- start default server를 실행합니다. 역시 잘 모르시는 분들은 초보자의 간단한 EJB 프로그램 만들기를 참고하세요^^
- admin console을 실행합니다.

- 아래와 같이 로그인화면에서 User Name은 admin, Password는 J2EE 설치시에 넣었던 그 Password를 넣습니다.

- JDBC에 pointbase를 연결하기 위해 아래의 메뉴를 선택합니다.
Resources > JDBC > JDBC Resources 그리고 오른쪽 프레임에서 New 버튼을 선택합니다.

- JNDI name에는 jdbc/PBPUBLIC(아마도 DB 계정인듯합니다. 추측.. ㅡㅡ)를 입력하고, Pool Name에는 PointBasePool을 선택합니다.

- 그리고 OK~

6. 다음은 웹 어플리케이션 (WAR)을 만듭니다.
- 아래의 소스를 MyTestDB 폴더에 넣습니다.
ReadStudentDB.java
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.sql.*;
import javax.sql.*;
import javax.naming.*;
import java.util.*;

public class ReadStudentDB extends HttpServlet {

public void doGet(HttpServletRequest req,
HttpServletResponse response)
throws ServletException,
IOException {

Connection con = null;

try {

InitialContext ic = new InitialContext();
Context envCtx = (Context) ic.lookup("java:comp/env");
DataSource ds = (DataSource) envCtx.lookup("jdbc/StudentDB");
con = ds.getConnection();

response.setContentType("text/html");
PrintWriter out = response.getWriter();

String resultString = "";
String selectStatement = "select * " + "from student";
PreparedStatement prepStmt = con.prepareStatement(selectStatement);
ResultSet rs = prepStmt.executeQuery();
resultString += "[html][body]";

while (rs.next()) {
resultString += rs.getString(1)+"[p]";
resultString += rs.getString(2)+"[p]";
}
resultString += "[/body][/html]";

prepStmt.close();
out.println(resultString);
}
catch (SQLException ex) {
System.out.println("SQL EX " + ex.getMessage());
}
catch(Exception ex) {
System.out.println(" A Wierd Exception " + ex);
}

finally {
try {
if(con != null) con.close();
}
catch(SQLException e){
System.out.println("Problem closing");
}
}
}
}

- java파일을 컴파일하고 deploytool을 실행합니다.
- New > Web application을 선택합니다.

- 위의 그림처럼 WarfileMyDBReader.war로, War Display NameMyDBReader로 설정하고, Context Root은 /GetStudents로 설정한 다음 아래의 Edit Content를 선택합니다.
- 아래처럼 ReadStudentDB.java 파일을 Add합니다.

- 그 후의 설정은 그림과 같이 합니다..(귀차니즘의 압박;;)


- Finish를 하고 나면, 메인 화면에 Files > Web WARs > MyDBReader > ReadStudentDB가 생성된 것을 볼 수 있습니다.
ReadStudentDB를 선택하고 오른쪽 프레임에서 Aliases탭을 선택한 후 아래 그림처럼 Add한 후 /CoolServlet를 입력하고 반드시 엔터를 칩니다.

- 왼쪽 프레임의 트리에서 MyDBReader를 선택한 후 Resource Ref's탭에서 Add를 합니다. 그러면 창에 새로운 ROW가 생기는데, 거기서 Coded Namejdbc/StudentDB을 삽입합니다.
그리고 왼쪽 프레임의 트리에서 localhost:4848을 선택하면 Connect 다이얼로그화면이 나올 것입니다. OK하고 다시 MyDBReader를 선택하여 밑의 프레임에서 JNDI Name에는 jdbc/PBPUBLIC를 선택하고, User Name에는 pbpublic, Password에도 역시 pbpublic을 넣습니다.

- 그리고 Tools 메뉴에서 Deploy를 합니다. 아래와 같이 나오면 Deploy성공한것이죠^^

- 그리고 왼쪽 프레임의 트리에서 localhost:4848을 선택하여 아래처럼 오른쪽 프레임에 Application으로 MyDBReaderrunning으로 뜨면 성공한 것입니다^^


7. 마지막으로 확인하기

- 위의 그림처럼 주소창에 http://localhost:8080/GetStudents/CoolServlet 이라고 입력하고 그 결과값이 SQL문의 insert 값과 동일하면 제대로 연동이된 것입니다.

p.s 이거 쓰느라 하루를 허비했네요 ㅡㅡ;
수업다녀오고, 리포트 짬내서 쓰고, 삽질 좀 하고... 휴~~~

중요한 점을 정리하겠습니다. 순서가 중요합니다. 무조건 start pointbase를 실행하고 그 다음에 start default server를 실행해야합니다. 그리고 Resource Ref's탭에서 jdbc/StudentDBAdd할 때, jdbc/StudentDB는 ReadStudentDB.java 소스중 DataSource ds = (DataSource) envCtx.lookup("jdbc/StudentDB");의 jdbc/StudentDB와 일치해야합니다.
Posted by xHuro
,
며칠동안 MySQL과 연동하려다 실패하고, 대좌절이후 알아냈습니다.
J2EE 1.4에서는 pointbase라는 DB를 제공하더군요.

뭐.. 상용이라는 말도 있던데, 일단 J2EE 1.4를 설치하면 깔리니까 그냥 써도 될듯합니다.(여기에 대한 라이센스 정보가 있으시면 저에게 트랙백을 날려주세요^^)

자~ 간단히 사용해봅시다. (저도 자세히는 안 다뤄봤어요. 약간의 쿼리문만.. 그것도 insert into랑 create만 ㅡㅡ)

역시나 실시간으로 진행됩니다... 지금은 21일 밤 10시 30분..
22일이 지나가기전에 끝날꺼 같습니다^^

1. 일단, J2EE 1.4 가 설치되어있다고 가정합니다!
- 물론 PATH 설정도 다되어있다고 가정합니다^^
- 참, 기본적인 DB 지식도 있다고 가정합니다^^ 여기서 DB의 SQL문에 대한 언급하지 않습니다^^

(설치가 안되었거나, 모르시는 분들은...
초보자의 간단한 EJB 프로그램 만들기J2EE 설치와 QuickStart^^ #1를 참고해주세요^^)

2. Start Pointbase를 실행합니다.

- 그럼 아래와 같이 콘솔창이 하나뜨면서 메시지를 출력할 것입니다.

- 이렇게 나오면 DB server가 실행된 것입니다.

3. 도스 콘솔창을 하나 띄워서 startconsole을 실행합니다.

- startconsole은 batch파일입니다. 뭐.. 일일이 치기 귀찮으시면 바탕화면에 바로가기를 만들어도 괜찮을 듯합니다.
- 방금 테스트하니까 바로가기도 잘 실행되네요^^

- startconsole의 시작화면입니다.
걍~ OK를 선택합니다.

4. 왼쪽의 트리에서 SCHEMAS > PUBLIC > TABLES를 열어봅니다.

- 위의 그림처럼 XXXX_TBL라고 무수뜹니다. 눈치빠르시거나, DB를 조금 만져본 분은 아시겠지만, 바로 테이블입니다;;(당..연한가 ㅡㅡ)
- 테이블을 하나 만들어봅니다~

- TABLES에서 우클릭하여 CREATE TABLE...를 선택합니다. 그런 다음 다이얼로그 창이 뜨는데, 함 읽어보시고, Next~

- 여기서 Table 이름을 정합니다. Next~

- 잘 알다시피, 스키마를 정합니다. GUI로 되어 있으니까 편하군요^^;; 여기서는 ID와 PASS를 만들었습니다. Next~

- PRIMARY KEY랑 Relationship을 정합니다. 여기서는 간단히 해볼꺼니까 PRIMARY KEY만 ID로 정했습니다. Next~
- 그 뒤로는 자세히 몰라서 Next~만 계속 ㅜㅜ

- 마지막 화면입니다. 후후.. 우리가 만들 테이블의 SQL문이 가운데 보입니다^^ Finish 버튼~

5. 자~ 테이블에 튜플을 넣고, 화면에 보입니다.
- 오른쪽 상단 프레임을 보면, Enter SQL Commands라는 창이 있습니다. 거기에 SQL문을 넣고 Excute라는 버튼을 클릭하면 됩니다.
- 귀찮아서 한꺼번에 합니다. (DB SQL의 기본문만 사용했습니다^^)

- 주의할것들!!
(1) 문자열은 " "이 아닌 ' '을 사용해야됩니다. 보통 DB는 가리지 않는데, pointbase는 가리더군요.. 한 10분 삽질했습니다;;
(2) 그림에서는 왕창 SQL문을 써놨지만, Excute는 한라인씩 해야됩니다. 즉, insert into PBPUBLIC.STUDENT values('kid', '1234'); 한문장쓰고, Excute해야됩니다. 왕창쓰고, 한라인씩 Excute해도 됩니다.

휴~ 의외로 빨리 끝났네요. 너무 간단하게 해서 의미가 없을 것도 같습니다만, 다음에 할 J2EE와 연동해서 사용하기를 하려면 꼭 해봐야할 것들인 거 같아서 잠깐 다루었습니다^^
그럼 담~ 이시간에(?)...
Posted by xHuro
,
※ 김성박님의 EJB 강좌와 EJB 엔터프라이즈 자바빈즈 바이블을 참고했습니다.

1. EJB 개발 순서
a. 홈 인터페이스(Home Interface)와 리모트 인터페이스(Remote Interface)의 작성
- 홈 인터페이스(Home Interface) : 엔터프라이즈 빈을 클라이언트가 사용할 수 있도록 생성하고 찾아주는 기능
- 리모트 인터페이스(Remote Interface) : 엔터프라이즈 빈이 클라이언트에게 제공하는 서비스를 메소드들로 선언한 인터페이스

b. Bean Class의 작성
- 엔터프라이즈 빈이 실제로 처리하는 작업을 내부코드로 구체적으로 작성하는 클래스입니다. Remote Interface에서 선언된 비즈니스 메소드를 실제로 구현해줘야 한다. 개발자 입장으로 보면 가장 할 일이 많은 작업이다.
- Bean Class를 작성할 때는 Remote Interface에서 정의된 메소드를 실제로 구현해 주는 것 외에도 EJB 컨테이너의 규약 메소드를 정의해야 한다. 이 메소드는 EJB 컨테이너가 특정한 순간에 호출하는 메소들로 아주 중요한 기능을 처리한다.

c. 디플로이먼트 디스크립터(Deployment Descriptor) 작성
- 디플로이먼트 디스크립터는 XML파일로 엔터프라이즈 빈의 이름, 트랜잭션 처리방법, 보안, 자원관리 방법 등의 정보를 작성한 파일아더,

d. 엔터프라이즈 빈과 관련된 모든 클래스와 디플로이먼트 디스크립터의 패키지화(jar로 묶음)
※ c,d를 묶어 디플로이먼트라고 한다.

e. 패키지를 EJB 컨테이너에 설치함
- 참고로 EJB 컨테이너 안에 EJB패키지를 설치하는 개발자를 배치자(deployeer)라고 한다.
- 컨테이너에 설치하는 과정을 '플로그인'이라고 말하며, 플러그인 되는 과정에서 리모트 인터페이스를 구현한 클래스, 홈 인터페이스를 구현한 클래스, 각각의 RMI 스텁, 스켈레톤 클래스가 자동으로 생성된다.


2. J2EE 설치하기
a. 그냥 다운로드 받아서 설치한다. 여기서 버젼은 1.4.x이다.

b. 환경 설정을 한다.
- 환경 변수에서 CLASSPATH를 만들고, C:SunAppServerlibj2ee.jar 를 입력한다.

- J2EE_HOME을 만들고, C:SunAppServer를 입력한다.

- JAVA_HOME을 만들고, C:SunAppServerjdk를 입력한다.

- PATH는 편집하기를 하여, C:SunAppServerin 과 C:SunAppServerjdkin을 추가한다.

- J2EE 서버에 관한 내용은 http://www.kid.pe.kr/blog/index.php?pl=118&ct1=4 에 있으므로 참고바람^^


3. 간단한 덧셈을 계산하여 주는 EJB와 jsp을 연동하는 프로그래밍하기
a. Home Interface 작성
AddHome.java
package kr.co.kid.ejb.user;

import java.rmi.*;
import javax.ejb.*;

public interface AddHome extends EJBHome {
public Add create() throws CreateException, RemoteException;
}


b. Remote Interface 작성
Add.java
package kr.co.kid.ejb.user;

import java.rmi.*;
import javax.ejb.*;

public interface Add extends EJBObject {
public int getAdd(int num1, int num2) throws RemoteException;
}


c. Bean Class 작성
AddEJB.java
package kr.co.kid.ejb.user;

import java.util.*;
import javax.ejb.*;

public class AddEJB implements SessionBean {
public int getAdd(int num1, int num2) {
return num1 + num2;
}

public AddEJB(){}
public void ejbCreate(){}
public void ejbRemove(){}
public void ejbActivate(){}
public void ejbPassivate(){}
public void setSessionContext(SessionContext sc){}
}


4. 디플로이먼트 하기
a. 먼저 컴파일을 한다.


b. class 파일을 소스 파일에서 package로 지정한 디렉토리(즉 kr.co.kid.ejb.user)를 차례대로 만들어 그곳에 복사한다.


c. J2EE의 default Server를 실행한다.

d. J2EE의 Deploytool을 실행한다.


e. File -> New -> Application 을 선택한다.

- 여기서는 임의의 폴더 project를 만들고, Add라는 임의의 이름을 지정해주었다. 이 project 폴더 안에서 jar과 ear이 만들어진다.
- OK 버튼을 누르면 Applications에 Add가 첨가되어있는 것을 볼 수 있다.


f. File -> New -> Enterprise Bean을 선택한다.

- JAR Display Name에 Add라는 이름을 지정하고 Edit Content를 선택한다.

- 앞에서 만들었던 최상위 폴더에서 kr폴더를 선택하고 Add한다. 그러면 아래 프레임에 krcokidejbuser 안의 class가 Add된 것을 알 수 있다. OK 버튼을 누르고 Next한다.

- 위의 그림처럼 설정하자. Enterprise Bean Type은 무상태, 즉 Stateless Session으로 놓아둔다. Remote Interface도 설정하고 Next한다.

- No로 설정하고 그냥 Next한다.
- 마지막 화면이 나오면 Finish한다.

- 설정이 끝나면 본화면에서 Add아래에 Add/AddEJB가 생성된 것을 확인할 수 있다.

- AddEJB위의 Add를 선택하고 아래의 Sun-specific Settings...버튼을 누르면 위 그림처럼 다이얼로그가 뜬다. 여기서 JNDI Name을 MyAdd로 설정한다.

5. EJB와 연동하기 위해 html 및 jsp 작성하기
※ 블로그에서 <>를 태그로 인식하므로 []로 대체해서 소스를 올렸다.
a. html 작성하기
Addform.html
[html]
[head]
[title]EJB 와 덧셈 [/title]
[/head]

[body]
[!--
post 방식으로 add.jsp를 호출합니다. add.jsp는 EJB객체를 이용하는 jsp 파일입니다.
--]

[form method = "post" action="Add.jsp"]
값 1:[input type = "text" name = "num1"][br]
값 2:[input type = "text" name = "num2"][br]
[input type = "submit" value="계산"]
[/form]
[/body]
[/html]


b. jsp 작성하기
Add.jsp
[%@page contentType = "text/html; charset=euc-kr" %]
[%@page import = "javax.naming.*" %]
[%@page import = "javax.rmi.PortableRemoteObject" %]
[%@page import = "kr.co.kid.ejb.user.AddHome" %]
[%@page import = "kr.co.kid.ejb.user.Add" %]
[html]
[head]
[title]EJB와 덧셈[/title]
[/head]

[body]

[%
int num1 = 0;
int num2 = 0;

try {
num1 = Integer.parseInt(request.getParameter("num1"));
} catch(Exception e) {
num1 = 0;
}

try {
num2 = Integer.parseInt(request.getParameter("num2"));
} catch(Exception e) {
num2 = 0;
}

Context initial = new InitialContext();
Object obj = initial.lookup("MyAdd");

AddHome home = (AddHome)PortableRemoteObject.narrow(obj, AddHome.class);

Add a1 = home.create();
out.println("결과값 : " + a1.getAdd(num1, num2));
%]

[/body]


6. EJB와 연동하기 위해 Web Compoent 만들기
a. Deploytools에서 File -> New -> Web Component... 를 선택한다.

- Create New WAR Module in Application에서 Add를 선택하고, War Display Name은 AddWar로 설정한 후 아래의 Edit Content 버튼을 클릭한다.

- Enterprise Beans 와 마찬가지로 다이얼로그 창이 뜨는데, 조금전에 작성했던 Addform.html과 Add.jsp를 선택하여 Add하고, Next한다.

- Web Component로 JSP를 사용할 것이기 때문에 JSP Page를 선택하고 Next.

- JSP filename으로 Add.jsp를 선택하면 자동으로 에디트툴에 설정해준다. 그 후에 Next하고 Finish

- AddWar라는 이름의 Web Component가 생성된 것을 확인할 수 있다. AddWar를 선택하고 General Tab의 Context Root에 AddContextRoot라고 입력한다.

- EJB Ref's 탭의 Add 버튼을 선택하고 위 그림처럼 설정한다.

b. Applications의 바로 아래 Add를 선택한 후, Tool -> Deploy를 선택한다.

- Return Client Jar의 라디오 체크버튼을 체크하고 OK한다.

- 위의 그림처럼 나오면 deplyment를 성공한 것이다.

- localhost:4848을 선택하면 오른쪽 프레임에 Add가 running되어 있는 것을 확인한다. (deployment 되었음)

c. 제대로 연동이 되는지 웹브라우저에서 확인해보자

- 주소를 http://localhost:8080/AddContextRoot/Addform.html 지정하고 위의 화면이 나오면 첫번째 관문은 통과~ 값을 입력하고 계산 버튼을 눌러보자!

- Add.jsp가 불러지고 위의 화면처럼 결과값이 나오면 제대로 연동된 것이다~ 축하~

7. 몇가지 참고할만 한 것들
a. deployment된 파일들은 C:SunAppServerdomainsdomain1applicationsj2ee-appsAdd 에서 확인할 수 있다.
b. 자바 1.4대 부터는 이전처럼 같은 폴더 안에 있는 class파일을 그냥 import할 수 없다. package 명령을 사용하여 폴더를 지정해줘야한다. 4-b 디렉토리 설정과 5-b jsp 소스의 3,4번째 import 참고

8. 후기
인터넷에 나온 예제들이 J2EE 1.3을 기준으로 하여 약간씩 변화된 것이 많다. 특히 deploy tools의 설정이 많이 변경되었다. (삽질이 많았다 ㅜㅜ) 또한 jsp에서 사용자 class의 import와 java파일의 package 설정 또한 자세히 나와있지 않아(자바 기초 부족 ㅡㅡ;), 여러 서적을 뒤적거리면서 찾아냈다. (이것땜시 이틀 날림;;)
아직 끝난 것은 아니다. MySQL 등 관계형 데이터베이스와 연동을 시도해야한다 ㅡㅁㅡ; 휴~
Posted by xHuro
,
국내에서 이클립스 정보 얻을 수 있는 곳
hanaJava
http://www.hanajava.net

JavaJigi
http://www.javajigi.net

OKjsp
http://www.okjsp.pe.kr

WSAD/이클립스 사용자 모임
http://www.eclipsians.net

자바스터디 네트워크
http://www.javastudy.co.kr/bbs/list.jsp?bbs=eclipsebbs

WIKI
http://165.194.17.15/wiki/Eclipse

GNOME
http://gnome.or.kr/moin.cgi/Eclipse
Posted by xHuro
,
※ 혼자서 책보면서 공부한 것을 정리했다^^;;

1. 자바에서 말하는 Beans란?
-> 일반적인 컴포넌트를 말한다.

2. EJB(Enterprise Java Beans)란?
-> J2EE의 핵심적인 요소이다. 한 마디로 정의하면 엔터프라이즈 급 개발을 위한 서버 측 분산객체 컴포넌트다.

3. EJB는 JavaBeans에서 파생되었다?
-> 규약측면에서 전혀 다르고, 어떤 연관성도 없다.

4. 서블릿(Servlet)JSP(Java Server Page)에 대하여
-> JSP는 서블릿을 서버 측 스크립트 방식으로 재구성한 것으로서, JSP는 최초 사용자 요청 시에 서블릿으로 전환된다. 즉, 서블릿과 JSP는 동등하며, JSP는 서블릿을 보다 편리하게 사용할 수 있도록 만든 것이다.
서블릿은 자바 언어로 만들어진 동적 웹 문서로서, 모든 구동 과정이 웹 서버와 연동하는 자바 가상 머신에 의해 제어된다.

5. 엔티티 빈(Entity bean)이란?
-> 고객과 같은 엔티티를 표현한다. 일반적인 방법은 데이터베이스에 저장하는 방식인데, 이를 위해 엔티티 빈은 데이터베이스와 연동하는 방법을 제공한다.

6. 세션 빈(Seesion bean)이란?
-> 특정 일을 수행하는 독립적인 프로그램의 수행단위의 프로세스로서, 한 사용자에게 전담 서비스를 하는 상태유지 세션 빈(stateful seesion bean)과 특정 작업을 독립적으로 수행하는 비상태유지 세션 빈(stateless session bean)으로 나뉜다.
Posted by xHuro
,
그 동안의 수많은 삽질을 기록해놔야겠다.
내 기억력이 그렇게 좋지 않으므로 ^^;;
이 포스트는 삽질 리포트로서, 실시간으로 계속 업데이트됨을 양지해주시기 바랍니다.^^

http://kr.blog.yahoo.com/kwon37xi/703888.html 문서를 많이 참고하였음을 알려드립니다.

1. 운영체제
Windows XP Professional + Service Pack 2
(일명 hasm표 XP^^;;)

2. 준비물
- J2SE : v 1.4.2
- Apache : v 2.0.53
- Tomcat : v 4.1.31(jakarta-tomcat)
- MySQL : 4.1.10

3. 일단 J2SE를 설치한다. 그리고 환경 변수를 설정해줘야한다.
(1) 시스템 등록정보에서 고급탭의 환경 변수를 선택한다.
(2) 그러면 환경변수 다이얼로그가 뜨는데, 여기서 새로 만들기를 선택한다.

(3) 먼저 CLASSPATH를 변수 이름으로 넣고 그 값으로 J2SE 설치된 디렉토리jrelib
t.jar
을 넣어준다.

(4) 다음으로 JAVA_HOME를 변수 이름으로 넣고 그 값으로 J2SE 설치된 디렉토리를 넣어준다.


4. 그 다음으로 Apache를 설치한다.
(1) 그 전에 먼저 설정해주어야 하는 것이다. 바로 XP 웹서비스 IIS를 죽여야(ㅡㅡ)된다.
- 제어판 -> 성능 유지 및 관리 -> 관리 도구 -> 인터넷 정보 서비스를 선택하면 새로운 다이얼로그가 뜬다.
- 아래의 그림처럼 기본 웹사이트가 설정되어 있으면, 우클릭하여 중지시키도록 한다.

(2) 그런 다음 Apache를 있는 그대로~ 설치한다.

- 로컬로 사용하므로 127.0.0.1로 설정하자

5. Tomcat을 설치하자.
(1) J2SE의 환경 설정이 제대로 되어있다면, 설치 처음에 다음의 다이얼로그가 뜬다.

(2) 다음은 걍~ 설치하면 된다.

6. 이제부터가 시작이다. 위에 링크된 문서를 잘 살펴보면서 환경 설정에 들어간다.
(1) 일단 링크된 문서에서 jakarta-tomcat-connectors-jk2.0.4-win32-apache2.0.49.zip 다운로드 받는다. 그 안에서 아래 그림의 파일을 Apache설치디렉토리modules에 넣는다.
- 중요! 문서의 dll 파일이 so 파일로 대체되었다.(이거 몰라서 엄청 삽질했다^^;;)

(2) Apache설치디렉토리confhttpd.conf파일을 열어 LoadModule부분에 다음을 추가한다.

(3) 그런 다음 같은 파일의 다음 부분을 찾아 변경한다.

- 위의 내용을 아래처럼 Tomcat설치디렉토리/webapps/ROOT 로 변경한다. 조심할 것은 이 아닌 / 이다!
- 이 디렉토리에 대한 자세한 설명은 위의 문서를 참고하도록 한다.

(4) DirectoryIndex 부분을 찾아 다음을 첨가한다.

(5) Alias 부분을 찾아 다음을 첨가한다.

- Tomcat설치디렉토리/webapps/examples로 변경한다.
- 중요! 위의 문서에도 나와있듯이 두번째 examples 뒤에는 /이 들어간다!

7. 메모장으로 workers2.properties 파일을 만들고 안에는 다음과 같이 입력한다

- 이 파일을 Apache설치디렉토리conf에 넣어둔다.
- 메모장으로 편집할 때 workers2.properties.txt 로 파일이 생성되지 않도록 주의하자!

8. 다음은 톰캣설치디렉토리confserver.xml 을 편집한다.
- Connector class Name으로 시작하는 부분 중 아래 부분을 제외하고는 다 지운다.


9. 메모장으로 jk2.properties 생성하고 아래와 같이 입력한다.
handler.list=apr,channelSocket,request,shm
channelSocket.port=8009
- 이 파일을 톰캣설치디렉토리conf에 저장한다. 이미 파일이 있다고 나오는데 무시하고 집어넣자~.

10. 일단 jsp 설정부분은 끝났다. 기나긴 과정 중 2/3을 지나온 거 같다. 지금까지 한 것이 잘 돌아가는 지 확인해보자^^
(1) Tray 모드에 짱박혀 있는 Apache를 연다.

- Restart를 시킨다. 앞의 환경 설정이 제대로 되어있다면 앞부분에 녹색불이 들어올 것이다.
(2) 시작->프로그램->Apache Tomcat 4.1 -> Start Tomcat 을 실행시킨다.

- 도스창 화면은 꺼지않도록 한다.
(3) 이제 웹브라우저에서 http://localhost 쳐보자~

- 위와 같이 나오면 일단 JAVA, Apache, Tomcat의 연동은 성공적이다. 그럼 웹브라우저에서 jsp가 돌아가는지 확인하기 위해 http://localhost/examples/jsp/index.html로 들어가서 첫번째 프로그램(Numberguestt)을 Execute해보자

- 위에 같이 나오면 잘 돌아간다는 것! 일단 반은 넘었다!ㅋ
(4) 위에서 설정했던 파일들을 링크시켰다. 디렉토리 설정만 조금 바꾸면 되니까 파일 만들고 하기 귀찮은 사람은 이거 다운받아서 디렉토리 설정만 바꾸도록^^(헉 벌써 두시다.. 진짜 날 세겠네;; ㅠㅠ)


※ 여기서부터는 mysql.com 의 MySQL Connector/J Documentation을 참고했다. http://dev.mysql.com/doc/connector/j/en/

11. 자 마지막 코스~ jsp와 MySQL 연동을 시작하자^^
- 참고로 여기서 며칠째 삽질 중 ㅠㅜ
(1) 일단 MySQL을 설치한다.
(2) MySQL Connector/J를 다운받는다. Connector/J는 MySQL과 JAVA를 연결하는 Driver다. 즉 JDBC를 이용하기 위한 Driver인 것이다.
- 다운로드 받은 파일의 안에 mysql-connector-java-3.1.7-bin.jar을 톰캣설치디렉토리commonlib에 푼다.
(3) 일단 Connector를 풀었으면 Tomcat을 Stop하고 다시 Start한다.
- 휴~ 벌써 3시.. 며칠 내내 이거 때문에 삽질했다. ㅠ.ㅜ 그래야만 Driver가 제대로 로딩된다. 인터넷에 돌아다니는 환경 설정은 무시해도 된다. 위의 디렉토리에 넣어두면 Tomcat이 실행하면서 자동으로 가져오는 것같다^^
(4) 다음에 링크가 걸려있는 웹페이지에서 jdbc_test.jsp를 다운받아 자신에게 알맞게 바꾸고 톰캣설치디렉토리webappsROOT에 복사한다.
- jdbc_test.jsp 파일 보기/다운로드 : http://www.okjsp.pe.kr/bbs?act=VIEW&seq=45719&bbs=bbs2&keyfield=content&keyword=&pg=0
- 그대로 쓰지 말고 조금 변경할 부분이 있다.
jdbc:mysql://localhost/chat?useUnicode=true&characterEncoding=EUC_KR


jdbc:mysql://localhost/test
이렇게 변경하자! 여기서 test는 mysql에서 원래 만들어진 database이다. 자신이 만든 database를 사용하려면 test대신 다른 database명을 넣도록^^

- 여기도
Class.forName("com.mysql.jdbc.Driver");


Class.forName("org.gjt.mm.mysql.Driver");
이렇게 변경하자!

- dbUser와 dbPass도 자신에게 알맞게 변경하는 거 있지 말도록!

(5) 웹브라우저에서 http://localhost/jdbc_test.jsp를 불러본다.

- 에러가 출력되지 않고, 위와 같이 나온다면 대성공!

역시 컴공과를 밤샘하면 답이 나온다는 슬픔을 오늘도 겪네요. 며칠동안 삽질하던거 큰 맘 먹고 밤을 새니 한시간 만에 해결책이 나왔다는 ㅡㅡ;

아.. 또 하나의 슬픈 소식...
위의 과정을 모조리 해주는 프로그램을 방금 찾았습니다 ㅜㅡ

http://www.nzeo.com/bbs/zboard.php?id=p_asp&page=1&sn1=&divpage=1&category=7&sn=off&ss=on&sc=off&select_arrange=headnum&desc=asc&no=208

도대체 개강하고 난 무엇을 했단 말인가...
거의 2주동안 삽질하고 있었습니다;;
이 허무함..(먼산....)

담배도 없는데... 그냥 자야하나 ㅠㅜ
내일 날씨가 장난이 아닐 것 같습다.. 바람이 쎄게 부네요~~~ㅋ

음..
설치하느라 수고 많으셨습니다..케케
(다 아는데, 나혼자만의 삽질??)

update 06.01.17 우분투(리눅스)에서 설치하기
http://bbs.kldp.org/viewtopic.php?p=280355
Posted by xHuro
,
1. 일단 java.sun.com 에서 J2EE를 플랫폼에 맞게 다운로드 받는다.
2. 실행시켜 설치를 한다.

3. Server를 실행한다.
Programs -> Sun Microsystems -> Application Server PE-> Start Default Server를 실행하면, 도스창이 뜨고 백그라운드에 서버를 돌린다는 말이 나오면 OK!

4. 제대로 돌아가는지 확인하기 위해 웹브라우저에서 주소http://localhost:8080 를 입력하여 아래와 같은 화면이 나오면 설치 성공!



※ 여기서 포트 8080은 설치시에 지정된 서버 포트 번호이다

서버를 중지시키려면 Stop Default Server를 실행하면 된다.

5. 기본적으로 server war의 ROOT는 install_dir/domains/domain1/autodeploy/ 다.

Application이 잘 동작하는지 확인하기 위해서
install_dir/samples/quickstart/hello.war 파일을 위의 autodeploy 디렉토리에 복사한다.

C:SunAppServerdomainsdomain1docroot 이 document 디렉토리가 root이다..

6. 웹브라우저에서 http://localhost:8080/hello 로 접속해서 아래 화면이 나오면 성공!




Doc파일안의 QuickStart.htm을 참고 했음^^
Posted by xHuro
,