Eclipse WTP 개발
Eclipse WTP 개발시 발생하는 문제점들 해결 - ver 0.01
1) Tomcat Server Startup 에서 디버깅 작업중 Time out 에러가 발생하는 경우 조치
Servers 설정화면의 Overview 탭에 보면 Timeouts 라는 항목이 보인다. 이부분을 고치면 됨
그림 1) Time out 조치하는 화면 (Eclipse WTP설치후 Server 설정에서.)
계속 추가 예정....
1) Tomcat Server Startup 에서 디버깅 작업중 Time out 에러가 발생하는 경우 조치
Servers 설정화면의 Overview 탭에 보면 Timeouts 라는 항목이 보인다. 이부분을 고치면 됨
그림 1) Time out 조치하는 화면 (Eclipse WTP설치후 Server 설정에서.)
계속 추가 예정....
비스타 원격 데스크탑 연결 실패 조치- 원격 컴퓨터에서 받은 인증 ...
비스타 원격 데스크탑 연결 실패 조치- 원격 컴퓨터에서 받은 인증 인증서가 만료되었거나 유효하지 않습니다. (“The authentication certificate received from the remote computer has expired or it not valid.”)
비스타로 주 작업용 OS로 설치를 하면서 하나둘씩 기존의 XP보다 까다로워진 보안관련 문제들을 부딪히게 되는것 같다. 그중에 하나로 첫번째.. 잘되던 원격 데스크탑연결이 갑자기 인증서문제라면서 접속이 안된다.
Client 는 XP -> Server 는 Vista 인경우에는 문제가 없었는데. Vista -> Vista 접속에서 발생한 문제였다.
이런...

도데체 뭔소린가 하고 이것 저것 뒤지고 옵션도 셋팅해봐지만 별반 소득이 없었다. 도움말도 찾아보고 네이버에도... 역쉬 믿을건 구글인가..? 그래서 대충 영문으로 바꿔서 검색했더니 다행이도 원하는 답을 찾아주었다.
참고글-> http://www.darrenstraight.com/blog/2007/03/05/windows-vista-remote-desktop-authentication-certificate-error/
위글에서 글쓴이는 나와 같은 문제를 겪었는데 답변중에 위와 관련 문제를 해결해준내용이있었다.
이유는 서버와 클라이언트 간의 시간차이였다. 시간을 동기화 해주면 된다는 거다. 이런~ 근데 왜 시간이 안 맞았던 거지..? 보통 OS 설치하고 나면 자동으로 인터넷 접속을 해서 시간을 맞춰 줄텐데..
그건 시간서버 동기화 실패 원인을 찾던과정에서 알게되었다. 시간서버 동기화는 적어도 년월일 오전오후 정도는 맞아야 한다는 거다. 물론 당연히 표준시간대도 서울(GMT+09:00)로 되어있어야 할것이다.
그래서 생각해보니 PC 조립할때 bios를 한번 지워졌던것이 생각났다. 그러면서 pc 시간이 초기화 되버린것이 원인 이었다....쩝...
하여간 비슷한 문제로 접속오류가 발생하는 경우 도움이 되길..
비스타로 주 작업용 OS로 설치를 하면서 하나둘씩 기존의 XP보다 까다로워진 보안관련 문제들을 부딪히게 되는것 같다. 그중에 하나로 첫번째.. 잘되던 원격 데스크탑연결이 갑자기 인증서문제라면서 접속이 안된다.
Client 는 XP -> Server 는 Vista 인경우에는 문제가 없었는데. Vista -> Vista 접속에서 발생한 문제였다.
이런...
도데체 뭔소린가 하고 이것 저것 뒤지고 옵션도 셋팅해봐지만 별반 소득이 없었다. 도움말도 찾아보고 네이버에도... 역쉬 믿을건 구글인가..? 그래서 대충 영문으로 바꿔서 검색했더니 다행이도 원하는 답을 찾아주었다.
참고글-> http://www.darrenstraight.com/blog/2007/03/05/windows-vista-remote-desktop-authentication-certificate-error/
위글에서 글쓴이는 나와 같은 문제를 겪었는데 답변중에 위와 관련 문제를 해결해준내용이있었다.
이유는 서버와 클라이언트 간의 시간차이였다. 시간을 동기화 해주면 된다는 거다. 이런~ 근데 왜 시간이 안 맞았던 거지..? 보통 OS 설치하고 나면 자동으로 인터넷 접속을 해서 시간을 맞춰 줄텐데..
그건 시간서버 동기화 실패 원인을 찾던과정에서 알게되었다. 시간서버 동기화는 적어도 년월일 오전오후 정도는 맞아야 한다는 거다. 물론 당연히 표준시간대도 서울(GMT+09:00)로 되어있어야 할것이다.
그래서 생각해보니 PC 조립할때 bios를 한번 지워졌던것이 생각났다. 그러면서 pc 시간이 초기화 되버린것이 원인 이었다....쩝...
하여간 비슷한 문제로 접속오류가 발생하는 경우 도움이 되길..
StAX (Streaming API for XML) 살펴보기
StAX (Streaming API for XML) 살펴보기 write by Ko,jinhyuk 2007. 11. 14 ~
Axis2 가 성능향상의 한가지 요인으로 파서의 변경으로 꼽았는데.. 기존의 SAX(Simple API for XML) 파싱(이벤트 방식의 push-parsing )을 pull-parsing이라고 하는 StAX (Streaming API for XML) 으로의 변경이다.
StAX 는 기존파서 (SAX와 DOM)와 비교 해보면 기존의 SAX 파싱은 이벤트방식으로 빠르지만 다루기 불편하고 DOM은 트리구조라 다루기는 편리하지만 속도가 느린점이 단점이었는데 StAX는 SAX처럼 빠르면서 비교적 DOM처럼 다루기 편리한 그래서 전체적으로 XML Processing이 빨라지게 하는 성능향상 효과를 제공한다 이점이 있다.
StAX 는 http://jcp.org/en/jsr/detail?id=173 에서 제안요청된 것으로 2004년3월25일에 첫 릴리즈가 되었다. 그동안은 나도 모르고 지내다가... Axis2 로 웹서비스 프레임워크를 바꾸면서 접하게 되었고 이를 이용해서 기존에 파싱처리하던 로직에도 개선을 좀 해보고자 한다.
JDBC나 Servlet 이 그렇듯 StAX에 대한 표준 스펙을 여러곳에서 구현했는데 그중에서도 (아무래도) Axis2가 사용하고 있는 Jar가 좋을것이라고 예상하고 Axis2 에 포함된걸 찾아보았는데
StAX 로 보이는 jar가 2개가 있다.
stax-api-1.0.1.jar : StAX의 패키지와 클래스를 참조할수있도록 하는 인터페이스 정의 jar 파일
wstx-asl-3.2.1.jar : codehaus.org 의 오픈소스 커뮤니티에 참여중인 StAX프로젝트(http://stax.codehaus.org/)와 Woodstox 프로젝트(http://woodstox.codehaus.org/) 의 StAX의 구현 실체 jar 파일. (파일을 보면 com.ctc.x.x 와 org.x.x.x 두가지가 있다.)
stax.codehaus.org 의 구현 jar는 RI (Reference Implementation ; core적인 아주 기본적 구현만을 한것으로 다른 구현 라이브러리들이 만들어 질수있도록 하는 common 라이브러리 내지는 참조용 같은것 )이다. 여기에 부가적으로 필요한 DTD-validation 등을 구현 하고 추가해서 wstx-asl-3.2.2.jar (ASL 2.0) 패키지 하나로 묶었다.
그래서 실제 상용 개발에서는 Woodstox 버전을 이용하면 되겠다.
이렇게 해서 한번 parsing을 돌려봐야 할텐데 아래에 sample를 만들어봤다... 기존에 있던 소스들을 짜깁기해서... ^^;
===================================================================
package org.blogsite.goodidea.sample.test;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintStream;
import java.net.Authenticator;
import java.net.PasswordAuthentication;
import java.net.URL;
import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLStreamConstants;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamReader;
import java.security.*;
import junit.framework.TestCase;
public class StAXTestPack extends TestCase {
public void testParse(){
// factory용 인스턴스 만들고
XMLInputFactory factory = XMLInputFactory.newInstance();
PrintStream out = System.out;
InputStream input;
XMLStreamReader r=null;
/*
이부분은 만일 Basic Authentication 을 해야 하는 경우에활용하면 되겠다.
Authenticator.setDefault(new Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication("아이뒤","비번".toCharArray());
}
});
*/
try {
URL url = new URL("http://서버:포트번호/경로1/경로2/대상파일명.xml");
input = url.openStream();
r = factory.createXMLStreamReader(input);
int event = r.getEventType();
while (true) {
switch (event) {
case XMLStreamConstants.START_DOCUMENT:
out.println("Start Document.");
break;
case XMLStreamConstants.START_ELEMENT:
out.println("Start Element: " + r.getName());
for(int i = 0, n = r.getAttributeCount(); i < n; ++i)
out.println("Attribute: " + r.getAttributeName(i)
+ "=" + r.getAttributeValue(i));
break;
case XMLStreamConstants.CHARACTERS:
if (r.isWhiteSpace())
break;
out.println("Text: " + r.getText());
break;
case XMLStreamConstants.END_ELEMENT:
out.println("End Element:" + r.getName());
break;
case XMLStreamConstants.END_DOCUMENT:
out.println("End Document.");
break;
}
if (!r.hasNext())
break;
event = r.next();
}
}catch (XMLStreamException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
this.assertNull(e);
} finally {
try {
if(r!=null)
r.close();
} catch (XMLStreamException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
==========================================================================
이렇게 해서 예제 소스를 돌려보고 나면 과연 기존보다 무엇이 좋은것인가 싶다....
Push -> Pull 방식을 파싱이 바뀌었다는게 기존에는 parse() 호출하고 나면 파서가 event 를 callback 방식으로 불러주었기에 피동적으로 모든 이벤트를 기다렸다면 위에 pull 방식은 내가 jdbc 레코드 커서옮기듯이 (Cursor 방식) next()를 하면서 다음 XML 의 element들을 찾아내서 처리하는 것이다. 처리하다가 예외가 있으면 바로 중단 해버릴수도있고 비교적 능동적 처리가 가능 하다는 점인데... 쩝. 해보고 나니 마치 기존에 SAX 파싱에 파서입장에서 callback 함수를 불러주기 전단계라고 보여진다. swich - case 문으로 하다보니 내부적으로 다른 함수를 불러서 처리하고픈 본능이 생기는 데 그럼 결국 같은거 아닌가 싶기도 하고 . 그래서 기존에 SAX 파싱으로 잘쓰고 있는 소스인경우에는 굳이 바꿀필요는 없을것같다. 다만 XML 이 복잡하고 약간의 시간이라도 최소화 하고자 할때에는 조금 더 유리할수는 있겠다.
처리방식에있어서는 위와 같은 형태가 대표적인 케이스고... 내부에서 Streaming handling이 좀더 빠라졌는지는 모르겠는데 이에 대한건 실험을 해봐야 할것같은데.. 누가 해준자료가 있음 좋겠다.
일단 여기까지 하고 좀더써보면서 획기적인게 있으면 추가로 글에 첨가 해야 겠다.
Axis2 가 성능향상의 한가지 요인으로 파서의 변경으로 꼽았는데.. 기존의 SAX(Simple API for XML) 파싱(이벤트 방식의 push-parsing )을 pull-parsing이라고 하는 StAX (Streaming API for XML) 으로의 변경이다.
StAX 는 기존파서 (SAX와 DOM)와 비교 해보면 기존의 SAX 파싱은 이벤트방식으로 빠르지만 다루기 불편하고 DOM은 트리구조라 다루기는 편리하지만 속도가 느린점이 단점이었는데 StAX는 SAX처럼 빠르면서 비교적 DOM처럼 다루기 편리한 그래서 전체적으로 XML Processing이 빨라지게 하는 성능향상 효과를 제공한다 이점이 있다.
StAX 는 http://jcp.org/en/jsr/detail?id=173 에서 제안요청된 것으로 2004년3월25일에 첫 릴리즈가 되었다. 그동안은 나도 모르고 지내다가... Axis2 로 웹서비스 프레임워크를 바꾸면서 접하게 되었고 이를 이용해서 기존에 파싱처리하던 로직에도 개선을 좀 해보고자 한다.
JDBC나 Servlet 이 그렇듯 StAX에 대한 표준 스펙을 여러곳에서 구현했는데 그중에서도 (아무래도) Axis2가 사용하고 있는 Jar가 좋을것이라고 예상하고 Axis2 에 포함된걸 찾아보았는데
StAX 로 보이는 jar가 2개가 있다.
stax-api-1.0.1.jar : StAX의 패키지와 클래스를 참조할수있도록 하는 인터페이스 정의 jar 파일
wstx-asl-3.2.1.jar : codehaus.org 의 오픈소스 커뮤니티에 참여중인 StAX프로젝트(http://stax.codehaus.org/)와 Woodstox 프로젝트(http://woodstox.codehaus.org/) 의 StAX의 구현 실체 jar 파일. (파일을 보면 com.ctc.x.x 와 org.x.x.x 두가지가 있다.)
stax.codehaus.org 의 구현 jar는 RI (Reference Implementation ; core적인 아주 기본적 구현만을 한것으로 다른 구현 라이브러리들이 만들어 질수있도록 하는 common 라이브러리 내지는 참조용 같은것 )이다. 여기에 부가적으로 필요한 DTD-validation 등을 구현 하고 추가해서 wstx-asl-3.2.2.jar (ASL 2.0) 패키지 하나로 묶었다.
그래서 실제 상용 개발에서는 Woodstox 버전을 이용하면 되겠다.
이렇게 해서 한번 parsing을 돌려봐야 할텐데 아래에 sample를 만들어봤다... 기존에 있던 소스들을 짜깁기해서... ^^;
===================================================================
package org.blogsite.goodidea.sample.test;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintStream;
import java.net.Authenticator;
import java.net.PasswordAuthentication;
import java.net.URL;
import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLStreamConstants;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamReader;
import java.security.*;
import junit.framework.TestCase;
public class StAXTestPack extends TestCase {
public void testParse(){
// factory용 인스턴스 만들고
XMLInputFactory factory = XMLInputFactory.newInstance();
PrintStream out = System.out;
InputStream input;
XMLStreamReader r=null;
/*
이부분은 만일 Basic Authentication 을 해야 하는 경우에활용하면 되겠다.
Authenticator.setDefault(new Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication("아이뒤","비번".toCharArray());
}
});
*/
try {
URL url = new URL("http://서버:포트번호/경로1/경로2/대상파일명.xml");
input = url.openStream();
r = factory.createXMLStreamReader(input);
int event = r.getEventType();
while (true) {
switch (event) {
case XMLStreamConstants.START_DOCUMENT:
out.println("Start Document.");
break;
case XMLStreamConstants.START_ELEMENT:
out.println("Start Element: " + r.getName());
for(int i = 0, n = r.getAttributeCount(); i < n; ++i)
out.println("Attribute: " + r.getAttributeName(i)
+ "=" + r.getAttributeValue(i));
break;
case XMLStreamConstants.CHARACTERS:
if (r.isWhiteSpace())
break;
out.println("Text: " + r.getText());
break;
case XMLStreamConstants.END_ELEMENT:
out.println("End Element:" + r.getName());
break;
case XMLStreamConstants.END_DOCUMENT:
out.println("End Document.");
break;
}
if (!r.hasNext())
break;
event = r.next();
}
}catch (XMLStreamException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
this.assertNull(e);
} finally {
try {
if(r!=null)
r.close();
} catch (XMLStreamException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
==========================================================================
이렇게 해서 예제 소스를 돌려보고 나면 과연 기존보다 무엇이 좋은것인가 싶다....
Push -> Pull 방식을 파싱이 바뀌었다는게 기존에는 parse() 호출하고 나면 파서가 event 를 callback 방식으로 불러주었기에 피동적으로 모든 이벤트를 기다렸다면 위에 pull 방식은 내가 jdbc 레코드 커서옮기듯이 (Cursor 방식) next()를 하면서 다음 XML 의 element들을 찾아내서 처리하는 것이다. 처리하다가 예외가 있으면 바로 중단 해버릴수도있고 비교적 능동적 처리가 가능 하다는 점인데... 쩝. 해보고 나니 마치 기존에 SAX 파싱에 파서입장에서 callback 함수를 불러주기 전단계라고 보여진다. swich - case 문으로 하다보니 내부적으로 다른 함수를 불러서 처리하고픈 본능이 생기는 데 그럼 결국 같은거 아닌가 싶기도 하고 . 그래서 기존에 SAX 파싱으로 잘쓰고 있는 소스인경우에는 굳이 바꿀필요는 없을것같다. 다만 XML 이 복잡하고 약간의 시간이라도 최소화 하고자 할때에는 조금 더 유리할수는 있겠다.
처리방식에있어서는 위와 같은 형태가 대표적인 케이스고... 내부에서 Streaming handling이 좀더 빠라졌는지는 모르겠는데 이에 대한건 실험을 해봐야 할것같은데.. 누가 해준자료가 있음 좋겠다.
일단 여기까지 하고 좀더써보면서 획기적인게 있으면 추가로 글에 첨가 해야 겠다.
제 1회 공개SW 기술세미나 참관기
제 1회 공개SW 기술세미나 참관기... by Ko,jinhyuk
한국공개소프트웨어협회에서 참으로 좋은 세미나를 갖어주었다. 11월 10일 토요일. 주5일 근무하고 부턴.. 놀러가는거 빼곤 어디가는게 싫었는데.
정말 좋은 자리인것 같아. 움직이기 싫은 몸을 이끌고 장장 1시간50분 전철타고 가락동 한국소프트웨어진흥원 5층 강당으로 갔다.
먼저와있던 사람들은 4~5명정도 있었던것 같고.. 평소 세미나나 컨퍼런스 같으면 뒷자리를 선호했을텐데 일부러 오늘은 왼쪽편 맨앞에 앉았다.
(근데 이런 강사가 오른쪽 끝에서 발표할줄이야... ㅡㅡ;)
세미나 일정은 12시 40분 부터 진행되는 거였는데.. 준비가 좀 늦어져서 20~30분늦게 시작되었던것 같다.
먼저 한국공개소프트웨어협회 문희탁 회장께서 세미나가 있게된 배경(지난 협회 워크샵에서 의견을 모아 진행하게 되었다는)을 얘기하고 감사의 얘기를 하고 진행이 되었다.
첫번째 주제(Red five를 이용한 스트리밍 서비스)는 RED5 Flash를 Client로 하는 공개 스트리밍 서버에 관한 얘기였다. 세미나 전에 몰랐던 오픈소스솔루션이었고 요즘 실버라이트등으로 인해 스트리밍관련 관심사가 있었던지라
기대가 되었던 부분이었다. http://www.osflash.org 에서 공개된 솔루션이고 사이트를 방문해보니 아직은 0.x 대 버전이었다. Red5 0.6.1 final released 2007/05/23 14:55
덕분에 osflash.org 라는 flash 관련 공개소프트웨어 사이트도 알게되고... (오픈소스관련해서는 주로 sf.net 만 찾아가다보니 ^^)
요약은 이런것 같다. Macromedia (지금은 adobe) 의 Remoting 서버의 역할을 해주는 오픈소스 기반 서버라고 보면 될것 같다. 그중에서도 스트리밍에 좀더 강한데.. Remoting Object 처리등도 지원하면서 채팅 서비스같은것도 손쉽게 구성할수있는 서버였다. 실제로 서비스를 구성해본경험에서 동시접속사용자 100명에서 debian 리눅스가 설치된 코어2듀오 서버에서 50% cpu 사용만 보이는 훌륭한 퍼포먼스를 보여줬다는 얘기도 있었다.
많은 활용가능성을 보여주는 좋은 소개 시간이었다.
두번째는 (Ruby on Rails를 이용한 포털 구축) 가끔 잡지나 사이트 돌아다니다가 보았던 Ruby 와 Rails 에 관한 내용이었다. 전에도 간단하게 Ruby on Rails 에 대해 본적은 있었는데.. 개발자가를 편하게 해주기위해 많은 노력을 기울린 스크립트 언어 라는 내용들이 있었다. 데모는 간단하게 RubyAMT라는걸 이용해서 Flex와 연동한 Rails 를 본것같은데 쉽게 db 에 데이터를 업데이트하는 화면을 빠르게 만들어 보이는것이었는데.. 예전에 비주얼베이직에 ODBC로 하는 DB 레코드 관리를 쉽게 같다붙이는 것과 유사한 화면 이었는데.. 항상 보면 실전에서 그런 단순 DB업데이트는 사용하지 않는다는것이 문제라는 생각이다. 마치 미리 게시판 모듈만들어 놓고 게시판 이름만 넣으면 게시판이 만들어지는데 그것이 언어의 편리성으로 인해 게시판을 쉽게 만들어지는 것이 아니듯... 결국 새로운 컴포넌트 개발에 있어서는 별반 도움이안되지 않을까 싶은생각이 들었다... 물론 최근 스크립트 언어가 점점 많은 영역을 차지 하고있고.. 앞으로 대세는 스크립트언어라고 생각하는 본인 이지만..... 나에게 있어 웹어플리케이션 개발에 Java를 대신하긴 많이 부족해보였다.
세번째(Apache Axis II를 이용한 웹서비스 구축)는 Axis2 를 주제로 한 내용이었다. 이번 세미나에서 그래도 가장 많이 접하고 알고 있던 내용이었는데... 티맥스의 필드에서 경험이 많은 개발자를 통한 Axis2 교육이었다. 이미 많이 알고있는 내용이고 나역시도 활용하고 있는것이어서 새로울것은 없었으나... 제우스(티맥스제품)에서도 사용한다는 내용이 귀에들어왔고 (사실 관심있던 APP 서버는 아니었지만) 웹서비스 개발자 들이 별로 없는 것같다는 내용등등 이었다. 실제로 Axis 관련 경험자를 물었을때 수강자들 가운데 나포함 2명정도 였으니... (더있었는지는 모르지만) 실로 그러한것같다. 보통 인터넷을 통해 웹으로 관련자료를 뒤지다 보면 그래도 글들이 보여서 꽤나 많은 개발자들이 쓰지 않을까 싶었는데... 정말 웹서비스개발경험자들이 적은건가..? 강사분께는 나름 좋은 발표가 되려고 노력한 부분에 감사를 드린다...
네번째(uEngine BPM)는 이번 세미나에서 가장 기대했던부분이다. 지난 BPM 컨퍼런스에서는 단순히 브로셔만 보고 실제 제품관련 설명은 듣지못했는데. soruceforge.net 에서 오픈된 국내 오픈소스 S/W 라고 해서 기대되었다. 특히나 요즘 새로운 시장으로 주목받는 BPM 영역에서의 좋은 대안이 될수있을 것 같다는 생각이들었는데..
uEngine BPM은 오픈소스 포탈인 Liferay , 웹서비스 엔진 Axis II, Mondrian OLAP Server, JBOSS Drools BRMS 등에 나름 업계에서 검증된 분야별 엔진들과 자체 개발 BPM 엔진을 탑재해 제품화시킨 실전 상용으로 운영하는 시스템으로 손색이 없어 보였다. 데모가 진행되는 동안에 보여진 제품의 기능들은 전반적으로 완성도도 높아보이고 화면도 비교적 다양하고 직관적이어고 한국적이어서 국내실정에 적절한 대안이 될수있을것 같았다. 특히나 유명 오프소스 솔루션들이 외국제품들이 개발구축 과정및 운영하는 과정에서 서비스지원이 아무래도 외국업체의 지원이라 용이하지 않지만 이제품은 국내에서 만들어지 제품으로 실제 프로젝트 적용하는데 있어서도 많은 어려움이 없을것같아 보였다.
한국공개소프트웨어협회에서 참으로 좋은 세미나를 갖어주었다. 11월 10일 토요일. 주5일 근무하고 부턴.. 놀러가는거 빼곤 어디가는게 싫었는데.
정말 좋은 자리인것 같아. 움직이기 싫은 몸을 이끌고 장장 1시간50분 전철타고 가락동 한국소프트웨어진흥원 5층 강당으로 갔다.
먼저와있던 사람들은 4~5명정도 있었던것 같고.. 평소 세미나나 컨퍼런스 같으면 뒷자리를 선호했을텐데 일부러 오늘은 왼쪽편 맨앞에 앉았다.
(근데 이런 강사가 오른쪽 끝에서 발표할줄이야... ㅡㅡ;)
세미나 일정은 12시 40분 부터 진행되는 거였는데.. 준비가 좀 늦어져서 20~30분늦게 시작되었던것 같다.
먼저 한국공개소프트웨어협회 문희탁 회장께서 세미나가 있게된 배경(지난 협회 워크샵에서 의견을 모아 진행하게 되었다는)을 얘기하고 감사의 얘기를 하고 진행이 되었다.
첫번째 주제(Red five를 이용한 스트리밍 서비스)는 RED5 Flash를 Client로 하는 공개 스트리밍 서버에 관한 얘기였다. 세미나 전에 몰랐던 오픈소스솔루션이었고 요즘 실버라이트등으로 인해 스트리밍관련 관심사가 있었던지라
기대가 되었던 부분이었다. http://www.osflash.org 에서 공개된 솔루션이고 사이트를 방문해보니 아직은 0.x 대 버전이었다. Red5 0.6.1 final released 2007/05/23 14:55
덕분에 osflash.org 라는 flash 관련 공개소프트웨어 사이트도 알게되고... (오픈소스관련해서는 주로 sf.net 만 찾아가다보니 ^^)
요약은 이런것 같다. Macromedia (지금은 adobe) 의 Remoting 서버의 역할을 해주는 오픈소스 기반 서버라고 보면 될것 같다. 그중에서도 스트리밍에 좀더 강한데.. Remoting Object 처리등도 지원하면서 채팅 서비스같은것도 손쉽게 구성할수있는 서버였다. 실제로 서비스를 구성해본경험에서 동시접속사용자 100명에서 debian 리눅스가 설치된 코어2듀오 서버에서 50% cpu 사용만 보이는 훌륭한 퍼포먼스를 보여줬다는 얘기도 있었다.
많은 활용가능성을 보여주는 좋은 소개 시간이었다.
두번째는 (Ruby on Rails를 이용한 포털 구축) 가끔 잡지나 사이트 돌아다니다가 보았던 Ruby 와 Rails 에 관한 내용이었다. 전에도 간단하게 Ruby on Rails 에 대해 본적은 있었는데.. 개발자가를 편하게 해주기위해 많은 노력을 기울린 스크립트 언어 라는 내용들이 있었다. 데모는 간단하게 RubyAMT라는걸 이용해서 Flex와 연동한 Rails 를 본것같은데 쉽게 db 에 데이터를 업데이트하는 화면을 빠르게 만들어 보이는것이었는데.. 예전에 비주얼베이직에 ODBC로 하는 DB 레코드 관리를 쉽게 같다붙이는 것과 유사한 화면 이었는데.. 항상 보면 실전에서 그런 단순 DB업데이트는 사용하지 않는다는것이 문제라는 생각이다. 마치 미리 게시판 모듈만들어 놓고 게시판 이름만 넣으면 게시판이 만들어지는데 그것이 언어의 편리성으로 인해 게시판을 쉽게 만들어지는 것이 아니듯... 결국 새로운 컴포넌트 개발에 있어서는 별반 도움이안되지 않을까 싶은생각이 들었다... 물론 최근 스크립트 언어가 점점 많은 영역을 차지 하고있고.. 앞으로 대세는 스크립트언어라고 생각하는 본인 이지만..... 나에게 있어 웹어플리케이션 개발에 Java를 대신하긴 많이 부족해보였다.
세번째(Apache Axis II를 이용한 웹서비스 구축)는 Axis2 를 주제로 한 내용이었다. 이번 세미나에서 그래도 가장 많이 접하고 알고 있던 내용이었는데... 티맥스의 필드에서 경험이 많은 개발자를 통한 Axis2 교육이었다. 이미 많이 알고있는 내용이고 나역시도 활용하고 있는것이어서 새로울것은 없었으나... 제우스(티맥스제품)에서도 사용한다는 내용이 귀에들어왔고 (사실 관심있던 APP 서버는 아니었지만) 웹서비스 개발자 들이 별로 없는 것같다는 내용등등 이었다. 실제로 Axis 관련 경험자를 물었을때 수강자들 가운데 나포함 2명정도 였으니... (더있었는지는 모르지만) 실로 그러한것같다. 보통 인터넷을 통해 웹으로 관련자료를 뒤지다 보면 그래도 글들이 보여서 꽤나 많은 개발자들이 쓰지 않을까 싶었는데... 정말 웹서비스개발경험자들이 적은건가..? 강사분께는 나름 좋은 발표가 되려고 노력한 부분에 감사를 드린다...
네번째(uEngine BPM)는 이번 세미나에서 가장 기대했던부분이다. 지난 BPM 컨퍼런스에서는 단순히 브로셔만 보고 실제 제품관련 설명은 듣지못했는데. soruceforge.net 에서 오픈된 국내 오픈소스 S/W 라고 해서 기대되었다. 특히나 요즘 새로운 시장으로 주목받는 BPM 영역에서의 좋은 대안이 될수있을 것 같다는 생각이들었는데..
uEngine BPM은 오픈소스 포탈인 Liferay , 웹서비스 엔진 Axis II, Mondrian OLAP Server, JBOSS Drools BRMS 등에 나름 업계에서 검증된 분야별 엔진들과 자체 개발 BPM 엔진을 탑재해 제품화시킨 실전 상용으로 운영하는 시스템으로 손색이 없어 보였다. 데모가 진행되는 동안에 보여진 제품의 기능들은 전반적으로 완성도도 높아보이고 화면도 비교적 다양하고 직관적이어고 한국적이어서 국내실정에 적절한 대안이 될수있을것 같았다. 특히나 유명 오프소스 솔루션들이 외국제품들이 개발구축 과정및 운영하는 과정에서 서비스지원이 아무래도 외국업체의 지원이라 용이하지 않지만 이제품은 국내에서 만들어지 제품으로 실제 프로젝트 적용하는데 있어서도 많은 어려움이 없을것같아 보였다.