티스토리 툴바


My Programing/JAVA2009/09/08 14:03

회의를 하기 위해서는 참석자들이 지정된 장소에 모여 얼굴을 맞대고 하는게 일반적인 방법이다  하지만, 이젠 인터넷의 발달로 인하여 장소에 구애없이 화상회의를 통해 지구 반대편 사람과도 회의가 가능해 졌다

 

지금 소개하는 dimdim은 이런걸 가능하게 해주는 화상 회의 서비스중의 하나이다  인터넷만 된다면 손쉽게 회의실을 개설해서 웹 화상 회의를 진행할 수 있다  특히 dimdim의 장점은 어떠한 프로그램도 설치할 필요없이 웹에서 바로 사용이 가능한 서비스이기 때문에 보다 쉽게 이용이 가능하다

 

기능을 간략하게 살펴보면 파워포인트, pdf 파일을 등을 활용해 프리젠테이션 기능이 가능하며, 데스크탑 공유, 화이트 보드, 공개 및 개인 채팅 기능이 제공된다  화상 회의 서비스인므로 당연히 화상 방송이 가능하며 녹화 및 플레이 백 기능도 가능하다

 



dimdim에서는 현재 위처럼 3가지 서비스를 제공하고 있다  이러닝 강좌 같은게 아니라면 20명 입장이 가능한 무료 계정만으로도 충분하리라 생각한다

 

게다가 이 서비스의 또다른 장점이 바로 오픈소스라는 것이다  누구라도 dimdim에서 제공하는 서비스 외에 소스를 직접 가져다가 자신의 회사에 알맞게 수정해서 설치를 할 수 있다  즉, 쉽게 자체 화상 회의 서비스를 구현할 수 있다는 것이다

 

이 서비스는 아래의 사이트에서 이용이 가능하다

 http://www.dimdim.com/index


출처: http://paperinz.com/877

Posted by nkdk
My Programing/JAVA2009/07/07 10:14

프로젝트를 하다보면 프로퍼티 관리를 한 곳으로 몰아야 하는 경우가 생긴다. 그 프로퍼티를 직접 만드는 것이 아니라 자바에서 지원해주는 함수가 있어서 소개 할까 한다. ^^


java.util.Properties 클래스를 사용하여 server IP를 유동적으로 관리 할 있는 방법이다.

import java.util.*;
import java.io.*;

public class PropertyTest {
    private String PROPERTIES_FILE = "C:\\globals.properties";
   

   
/**
     * 특정 키값을 반환한다.
     */

    private String getProperty(String keyName) {
        String value = null;
 
        try {
            
Properties props = new Properties();
            FileInputStream fis = new FileInputStream(PROPERTIES_FILE);
            props.load(new java.io.BufferedInputStream(fis));
            value = props.getProperty(keyName).trim();
            fis.close();

        } catch (java.lang.Exception e) {
            System.out.println(e.toString());
        }
            return value;
    }
 
 
   
/**
     * 특정 키 이름으로 값을 설정한다.
     */

    private void setProperty(String keyName, String value) {
        try {
           
Properties props = new Properties();
            FileInputStream fis  = new FileInputStream(PROPERTIES_FILE);
            props.load(new java.io.BufferedInputStream(fis));
            props.setProperty(keyName, value);
            props.store(new FileOutputStream(GLOBALS_PROPERTIES_FILE), "");
            fis.close();

        } catch(java.lang.Exception e) {
            System.out.println(e.toString());
        }
    }
 
 


    public static void main(String args[]) {
        PropertyTest o = null;
        if (args.length == 1) {
            o = new PropertyTest();
            System.out.println(args[0] + ":[" + o.getProperty(args[0]) + "]");
        } else if (args.length == 2) {
            o = new PropertyTest();
            o.setProperty(args[0], args[1]);
            System.out.println(args[0] + ":[" + o.getProperty(args[0]) + "]");
        } else {
            System.out.println("wrong argument");
        }
    }
}

Posted by nkdk
My Programing/JAVA2009/06/26 19:47

자바 웹 개발하면서 제일 답답한 게 클래스 수정하면 서버 죽였다가 살리는 것입니다. 자동 반영(Hot deploy)이 된다고 해도 Context reloading을 자동으로 해주는 것이지 결코 가벼운 작업은 아닙니다. 이런 문제를 해결한 솔루션이 있어서 소개합니다. JavaRevel 이라는 제품입니다. 2분짜리 동영상 보시면 쉽게 이해갈 것입니다.

http://www.zeroturnaround.com/javarebel-demonstration-screencast/

 

OSS(Open Source Software) 개발자는 free 라이센스를 얻을 수 있습니다. 비용대비 효과는 꽤 있을 것 같습니다.

출처: http://www.okjsp.pe.kr

Posted by nkdk
My Programing/JAVA2009/06/25 23:33

한글은 대부분 2 byte로 저장된다. (unicode제외하면.) 게시판에서 제목을 보여줄 경우, 제목이 너무 길 경우 중간에 잘라버리고 "제목..." 형식으로 표시해 주곤 하는데, 이때 한글과 영문,숫자가 혼용될 경우 byte길이로 자르기가 애매하다. 그냥 byte 길이로 싹뚝 잘라버릴 경우 한글이 깨질 수도 있기 때문이다.

그래서, 만약 마지막 byte가 한글의 허리부분이라면 byte수를 하나 늘이던가(한글자 더 출력) 줄여서(한글자 덜 출력) 마지막 글자가 제대로 표시되도록 해야 한다.

매번 관리자 페이지만 만들다가 오랫만에 사용자 페이지 작업을 하니 이런것도 해 보네.
일반적인 ascii 문자가 아닌 경우 byte값이 음수로 나타난다. 제대로 한다면 아래와 같을 것이다.
if 마지막 byte가 1 byte 문자를 나타내는 것이 아니라면
then
    if 만약 이게 multi byte character의 끝이라면 그냥 처리
    else if 만약 이게 multi byte 중간이라면
        이전(혹은 이후) character 끝 부분 찾아서 거기까지 return
else 그냥 처리!


대충 한다면 아래와 같을 것이다.
일단, 그냥 문자들은 1 byte 아니면 2 byte 라고 가정하자. 2 byte 문자들의 개별 byte 값은 음수로 나온다.
원하는 byte 수 만큼 자른 byte들 내부에서 전체 음수 byte 값을 찾자. 짝수면 ok, 홀수면 마지막 문자가 허리가 잘렸다.
허리가 잘렸다면, 길이를 1 늘여서 완성시켜 주던지, 1 줄여 그 문자를 버리자.


대충하는 방법을 java 코드로 하면 아래와 같다.

 public String getShortString( String orig)
 {
    byte[] byteString = orig.getBytes();
    int length =  50;

    if (byteString.length <= length)
    {
      return orig;
    }
    else
    {
      int minusByteCount = 0;
      for (int i = 0; i < length; i++)
      {
        minusByteCount += (byteString[i] < 0) ? 1 : 0;
      }

      if (minusByteCount % 2 != 0)
      {
        length--;
      }

      return new String(byteString, 0, length) + "...";
    }
  }


출처: http://kingori.egloos.com/2726263
Posted by nkdk
My Programing/JAVA2008/05/23 13:00

import java.io.*;

FileOutputStream files = new FileOutputStream("c:\\Mygame.csv");

 OutputStreamWriter os2 = new OutputStreamWriter(files);
 os2.write("title1,title2,title3,title4\r");
 os2.write("okok1,okok2,okok3,okok4\r");
 os2.write("mm1,mm2,mm3,mm4\r");
 os2.write("cc1,cc2,cc3,cc4\r");
 os2.write("dd1,dd2,dd3,dd4");
 os2.close();

오브젝트의 경우는
ObjectOutputStream

이것을 쓰면 된다.

Posted by nkdk
My Programing/JAVA2008/05/20 14:22

이클립스 버전 : 3.2

General > Editors > Text Editors > Accessibility 를 선택하면

아래의 그림과 같이 세가지의 선택내용이 있습니다.
이 중에서 Use characters to show changes on line number bar 를 선택합니다.













 
 
 
적용하셨으면 이제부터 이클립스에 어떤 변화가 있는지 확인해볼까요?
 


 
 
 

기존에 입력된 줄이 수정되면 라인번호 옆에 ~ 표시가 보입니다.
 



 
 
 
새로운 줄이 추가된 경우+ 표시가 되는군요.

개발자를 위해 세세한 부분까지 신경을 쓴 흔적이 보이네요.
귀차니즘에 빠져있는 자신을 되돌아보게 하는 기능입니다. ^^

Posted by nkdk
TAG Eclipse
My Programing/JAVA2008/05/20 14:16


이클립스 Quantum DB 플러그인 설치 및 설정 (MySQL 기준)

 

1. 다운로드

주소 : http://sourceforge.net/project/showfiles.php?group_id=7746

com.quantum.feature_3.0.7.bin.dist.zip 을다운받는다.

2. 압축 해제 후 설치

압축을 해제하면 features plugins 폴더가 있다.

복사해서 이클립스설치폴더 (예 : c:\eclipse) 에 붙여넣기 한다.

3. 이클립스 Quantum DB 플러그인 설정

Window -> Open Perspective -> Other -> Quantum DB -> OK

Database Bookmarks 에서 오른쪽 마우스 클릭 -> New Bookmark

Add driver 를 클릭하여 설정을 시작한다.

Add External Jar 클릭해서 C:\JDBC\mysql-connector-java-5.1.5-bin.jar 를 선택한다.

(여기서는 C:\JDBC 폴더에 이미 mysql-connector-java-5.1.5-bin.jar 를 복사해서 있다고 가정하고 진행한다.)

Browse 를 클릭하여 com.mysql.jdbc.Driver 를 선택한다.

com.mysql.jdbc.Driver 클릭 -> Next

각자의 DB 설정에 맞게 아래와 같이 값을 입력한다.

Bookmark Name : MyDB 로 하자. (임의의 이름을 지정하면 된다.)

MyDB -> 오른쪽 마우스 클릭 -> Connect

현재 test 라는 이름의 DB에 member 라는 테이블이 있다고 가정하고 설명한다.

select * from member 라고 입력하고 녹색 삼각형을 클릭하면 쿼리가 실행된다.

끝 ^^

Posted by nkdk
TAG Eclipse
My Programing/JAVA2008/05/20 14:05


이클립스 비주얼 에디터(Visual Editor) 플러그인 다운로드 및 설정 방법

 

이클립스 WTP 2.0.1 (이클립스 3.3) 이라고 가정하고 설명한다.

 

1. 플러그인을 다운로드 한다.

다운로드 링크 => : http://www.ehecht.com/eclipse_ve/ve_eclipse_33_v200709242300_win.zip

2. 다운로드 결과.

ve_eclipse_33_v200709242300_win.zip 파일을 여기서는 바탕 화면에 다운 받았다.

3. 압축 해제

해제하면 features plugins 폴더가 나온다.

 

4. 이클립스 설치 폴더에 features plugins 폴더를 붙여넣기 한다. (예 : C:\eclipse 에 붙여넣기 한다.)

(주의 사항 : 이 때 꼭 이클립스를 종료한 후 붙여넣기를 해야 한다.)

이 때 같은 폴더가 있기 때문에 메세지 상자가 뜨는데 [모두 예] 를 선택해주면 된다.

설치 완료.

5. Visual Editor 를 사용해 보자.

File -> New -> Other 선택한다.

6. 스크롤해서 Java -> Visual Class 선택 -> [Next] 클릭

7. 소스를 만들어보자.

Name : TestVE 라고 하고, Swing 의 Frame 을 상속 받고, [Finish]

. Visual Editor 를 사용해서 GUI 프로그래밍을 편하게 해보자^^

Posted by nkdk
My Programing/JAVA2008/04/17 15:47

자바 실행 환경 작성

WindowsXP 인 경우

"내컴퓨터"  속성 -> 고급 -> 환경변수 에서

현재 계정에 대한 변수 또는 시스템 전체에 대한 변수를 설정한다. (각자 선택)

새로만들기 =>변수이름 : classpath, 변수값 : %classpath%;.

새로만들기 =>변수이름 : JAVA_HOME, 변수값 : c:\jdk1.5  (경로는 각자 다를 수 있음)

path는 이미 있는 path를 편집 : path의 제일 앞에 c:\jdk1.5\bin; 혹은 %JAVA_HOME%\bin;

 

기타

시작메뉴 -> 실행 에서 sysedit 하여 AutoExec.bat 파일에

set classpath=%classpath%;.

set JAVA_HOME=c:\jdk1.5

set path=%JAVA_HOME%\bin;%path%

 

웹프로그래밍 실행 환경 설정

JDK 1.4 Tomcat 4 버전에서의 준비 사항

- www.apache.org에 접속해서 ApacheTomcat4.X 다운로드

- 설치 후 Tomcat4.1 à common à lib 폴더의 servlet.jar 파일을

       jdk ext 폴더에 복사

- Tomcat4.1 à conf 폴더의 web.xml 파일을 열고 281라인의

               <servlet-mapping> 부분의 주석 해제

- Tomcat4.1 webapps à Root à WEB-INF 폴더에 classes 하위 폴더 생성 (지금 만든 폴더에 servlet 파일을 저장 후 사용한다.)

- \j2sdk1.4\lib\tools.jar\Tomcat 4.1\common\lib 폴더에 복사

- path 설정 : ; Tomcat4.1\bin

 

* 참고 : servlet & jsp API Document

        webapps à tomcat-docs à servletapi 폴더의 index.html .

 

 

JDK 1.5 apache-tomcat 5 이상 버전에서의 준비 사항

-         www.apache.org에 접속해서 apache-tomcat-5.5.17.exe 다운로드

-         설치 후 C:\Tomcat 5.5\common\lib폴더의 servlet-api.jar,

jsp-api.jar파일을 C:\jdk1.5.0_09\jre\lib\ext 폴더에 복사

-         C:\Tomcat 5.5\conf\web.xml 100라인에 있는 <servlet>요소 주석 해제 (버전에 따라 다를 수 있음)

-         web.xml 350라인에 있는 <servlet-mapping>요소 주석 해제 (버전에 따라 다를 수 있음)

     -   Tomcat5.5 webapps à Root à WEB-INF 폴더에 classes 하위 폴더 생성

          (지금 만든 폴더에 servlet 파일을 저장 후 사용한다.)

 

 

* 참고 C:\Tomcat 5.5\conf\web.xml 1084라인을 보면 처음으로 자동 읽혀 지는 파일의 목록을 볼 수 있고 추가도 가능.

 

* 환경 변수에 CATALINA_HOME 을 작성 : c:\Tomcat5.5

 

* 아파치-톰캣 서비스는 C:\Tomcat 5.5\bintomcat5w.exe(대화상자 제공) 또는 tomcat5.exe(도스 창 제공 : 개발 중 에러 처리가 편리)를 쓸 수 있다.

 

* request.setCharacterEncoding("euc-kr"); è client에서 server로 한글 자료를 보낼 때 깨짐을 방지할 수 있으나 post만 가능하다.  get에서의 깨짐을 방지하려면 conf/server.xml <Connector> 요소에 URIEncoding=euc-kr />을 추가해야 한다.

 

==========================================================

JDK 1.6 과 apache-tomcat 6 이상 버전에서의 준비 사항

Tomcat 6.0 + jdk 1.6 으로 웹 프로젝트 구현하기
일반 설정은 Tomcat 5.5 + jdk 1.6와 같다.
추가적으로   ~\Tomcat 6.0\conf\context.xml 파일에 <Context>에 <Context privileged="true">라고 적어 준다.


*** eclipse 3.3에서 웹 프로젝트 구현하기 ***
일반 설정은 Tomcat 5.5 + jdk 1.5와 같다.
추가적으로  <Context privileged="true">가 있는
 ~\Tomcat 6.0\conf\context.xml 파일을 이클립스 내에 Servers의 web.xml과 같은 영역에 복사한다.

 

 

HelloServlet.java  : 예제

import!  java.io.*;

import!  javax.servlet.*;

import!  javax.servlet.http.*;

public class HelloServlet extends HttpServlet {

     public void doGet(HttpServletRequest req, HttpServletResponse res)

             throws ServletException, IOException  {

            res.setContentType("text/html;charset=euc-kr");  //Mime Type과 문자 코드

               PrintWriter out=res.getWriter();

               out.println("<html><body bgcolor=skyblue><center>");

               out.println("<h1>서블릿 적용 문서</h1>");

               out.println("</center></body></html>");

               out.close();

    }

}

 

http://localhost:8080/servlet/HelloServlet

 

l       res.setContentType("text/html);  // Mime type

Multipurpose Internet Mail Extensions : 송신되는 문서의 내용을 기술하는 MIME 유형을 사용함으로써 ASCII 이외의 텍스트나 멀티미디어 데이터를 전송 할 수 있게 된다.

Posted by nkdk
My Programing/JAVA2008/03/20 00:56

Eclipse Article

Eclipse 시작

Eclipse 시작하기 : JDK 설치에서부터 Eclipse 다운로드등 Eclipse를 처음 시작하는 개발자들이 알아야하는 내용에 대하여 다루고 있다.

Eclipse에 새로운 플러그인 설치하기 : Eclipse에 새로운 플러그인을 추가하는 방법에 대하여 두가지로 나누어 살펴본다. 또한 새로운 플러그인을 찾을 수 있는 방법에 대해서도 다룬다.

Eclipse 사용시 알아두면 좋은 유용한 단축키 모음

Eclipse 강좌

Eclipse 사용을 위한 동영상 강좌 : Eclipse 3.1이 배포되면서 좋은 동영상 강좌들이 많이 올라와 있다. Eclipse의 많은 기능들을 느끼고 사용해 볼 수 있다.

Eclipse 에서 Middlegen 사용하기 : 프로잭트를 하다보면 Database의 변경이 있을 수 있다. 만일 이러한 상황에서 Hiberanate같은 framework를 사용할 시에 변경될 때마다 해당 xml mapping파일과 java dto 객체를 생성하는 일은 참으로 번거로운 일이 아닐 수 없으며 이러한 비용을 줄이기 위해 eclipse용 plugin으로 middlegen이 나왔습니다.

Eclipse 사용시 유용한 팁

Eclipse 사용시 알아두면 유용한 팁
Eclipse 성능 높히기
Eclipse 기반하에서 Remote Debugging 설정 : Eclipse 기반하에서 Remote Debugging을 실행하는 방법에 대하여 다룬다.

Eclipse With PlugIn

Eclipse에 Web Tools Project 설치 및 사용방법 : 지금까지 Eclipse에서 불편하게 느꼈던 웹 개발의 편의성을 향상 시켜줄 막강한 플러그인에 관한 설치에서부터 다양한 툴들을 사용방법에 대하여 다룬다.

Eclipse에 Tomcat Server플러그인 설치하기
Eclipse에 JRUN Server플러그인 설치하기
Eclipse에 JBoss Server플러그인 설치하기
Eclipse에 Lomboz플러그인 설치하기 1
Eclipse에 Lomboz플러그인 설치하기 2

Eclipse With 버전 관리 시스템

CVS 설치와 Eclipse와의 연동
Eclipse와 CVS과 연결하여 사용하기
[Eclipse와 CVS를 이용하여 팀 작업하기]

Subversion 설치 및 Eclipse와의 연동

Visual Source Safe 설치와 Eclipse와의 연동


 


java.net과 이클립스를 이용한 오픈소스 자바 어플리케이션 개발

이 튜토리얼은 이클립스를 소개하고 이를 활용하여 java.net에 호스팅 된 자바 어플리케이션 개발에 대해 살펴봅니다.

Posted by nkdk
TAG Eclipse