언어2012. 10. 25. 10:51

.NET 쪽이야 워낙 TFS가 독보적이라 말할 필요가 없지만

 

예전 아이폰 개발할때는 Xcode 소스관리를 어떻게 해야 했었는지 고민을 많이 했었다.

 

맥에서도 TFS를 사용할수 있나 싶어서 조사도 해봤지만  결국 그냥 일반적으로 쓰는 SVN을 사용하기로 하고

 

툴도 제일 윈도우에서 쓴거와 같은 툴을 구해서 쓴 기억이 난다.

 

현재 내가 알고 있는 소스관리는 CVS,SVN,GIT 정도 인데

 

CVS야 이제 거의 안쓰니 설명할 필요가 없을꺼 같고

 

SVN은 정말 보편적으로 많은 사람들이 쓰는것이라 Xcode,이클립스에서 완벽 지원하며

 

Tool도 Mac용,Windows용으로 정말 많다

 

대부분의 개발자가 사용가능하며 단일 프로젝트 관리하기 좋음

 

커밋하면 중앙 저장소에 바로 저장

 

단점은 서버를 설치해야함,여러사람이랑 작업시 가끔 머지가 두려움

 

GIT는


개개인의 로컬 저장소가 있어서 커밋을 하면 로컬 저장소에 저장이 된 후 push를 해야 중앙 저장소에 저장이 됨, 때문에 중앙

 

저장소에 의존적이지 않음

 

핵심은 로컬 저장 관리!! 그래서 일단 로컬에 저장하고 서버에 push하는 형태

 

GIT가 좀더 많은 기능을 지원하지만 이클립스 플러그인에서 불안하다고함

 

하지만 대세가 GIT이고 명령어 모드에 익숙해지면 GIT가 잇점이 많다고 생각함

 

물론 서버가 있어야함

 

GitHub와 google code 는 오픈소스라 프로그래밍계의 소셜이라 생각하는데 회사프로젝트면 사용 안하는게 좋다고 생각


물론 서버는 필요 없음

 

결론은 무난하고 여러사람이 같이 개발하는것이 아니라면 svn이 낫고

 

대새를 따르거나 여러사람이 함께 작업하고 여러가지기능을 사용하는것이라면 git가 낫다고 생각

 

나중에 GIT는 꼭 써봐야겠다는 생각이 들었다.

Posted by 동동(이재동)
언어2010. 4. 13. 16:16
COM (Component Object Model)
DCOM (Distributed Component Object Model)
COM+ (Component Object Model+)

COM은 간단히 말해서 프로그램에 사용되는 버튼이나 bar, 메뉴, table등과 같은 것도 되고, 사용자 눈에는 안보이는 fuction일 수도 있습니다.
즉, 그 자체로 특정 기능을 수행하지만, 자기 혼자서는 프로그램이 아닌것으로, 다른 곳에서도 사용이 가능한 것이죠. 예를 들면 버튼이 있는데, 이것은 A라는 프로그램에서도 사용하고, B라는 프로그램에서도 사용할 수 있습니다. 필요하면 그 버턴을 어디든 가져다 사용가능하도록 미리 만들어 두고, 그것을 버튼 컴포넌트라고 부릅니다. 버튼이나 메뉴등 자주 사용하는 것들을 윈도우즈 프로그래밍에서 미리 만들어 두고, 가져다 쓰는 것을 말합니다.(실체는 이중 포인터입니다.)

DCOM이라는 것은 Distributed 라는 분산체제, 즉, 네트웍으로 연결된 COM입니다. 이것은 다른 컴퓨터에 있는 컴포넌트를 자기 컴퓨터에서 사용할 수있도록 해놓은 것입니다.

COM+는 위에 COM/DCOM과 약간 다른 계념으로 MTS라고 불리는 일종에 서비스입니다. 쉽게 말하자면 COM을 네트웍에서 사용가능하도록 해주는 서비스로 windows2000에서부터 지원을 해주기때문에 DCOM을 구지 사용해서 프로그래밍을 하지 않아도 쉽게 네트웍상에서 COM을 가져다 사용할 수있습니다.


위 3가지는 windows가 생기면서 나온 용어들로, 객체지향 프로그래밍을 하고, 윈도우즈 프로그래밍을 하게 된다면 학습중에 최종적으로 거쳐야할 관문입니다. 자신만의 컴포넌트를 만들어서 쓰는 것은 자기만에 함수를 만들어서 쓰는 것과 같지만, 그 사용법이 조금 복잡합니다.
COM을 사용하게 되면 dll 이라는 확장자가 붙은 파일이 필요한데, 한게임같은 게임을 설치하면 거기에 사용되는 dll이 설치가 되는것을 볼 수가 있습니다. 그럼 그때, 아~ dll파일 안에 어떤 컴포넌트를 부르는 함수가 있구나 라고생각하시면 되고, 실제 컴포넌트는 한게임 서버에있는 것이라 생각하세요.


출처 :: 지식인 aoww_seegle (2003-05-16 14:48 작성)님 답변

//--------------------------------------------------------------------------------------

com 은 Component Object Model 의 약자이지만 일반적으로 컴포넌트라고 발음합니다. 정확한 해석은 아니지만 줄여서 부르는 셈이지요.

기존의 프로그램을 살펴보면 여러가지 문제점이 있었지요. 그 많은 문제점중 하나가 예를 들어 dll 의 이름 문제점을 들수 있는데요. 많이 보셨을 겁니다. ****.dll 이라고 하는 파일을요. 이는 메인 프로그램에서 다 처리하지 못하거나 특정한 모듈을 따로 처리하기 위해 만든 일종의 메인에 딸린 하부적인 실행파일이라고 볼수 있는데(일단은 dll 도 실행파일입니다. 자체 실행파일은 아닙니다만...) 이는 dll 의 이름을 가지고 접근하고 있습니다. 하지만 소프트 웨어를 만드는 회사가 많은만큼 같은 dll의 이름을 가진 실행파일들이 많아지고, 또 그것을 인스톨 하면서 윈도우 폴더에 복사하면 문제가 생기지요. 전혀 다른 회사에서 개발한 dll 이 이름만 같고 전혀 다른 기능을 하는데도 이를 모르고 덮어 쓰기 해버리면...

이를 해소하기 위한 하나의 방법이 컴포넌트 입니다. 사용해 보셨는지는 모르지만 컴포넌트는 GUID 라는 128비트의 일종의 아이디 비슷한게 있습니다. 이걸로 접근하므로 이름의 문제로 인한 충돌이 일어나지 않는 것입니다.

여기까지는 com 을 사용하는 목적중의 하나만 예를 든것이고 com 을 한마디로 정의하자면 객체 지향적 모듈개발이라고 정의하고 싶네요. 아니 이건 제가 개인적으로 내린 정의입니다. 제가 느낀 바로는요...^^ 다른 분들은 어떻게 생각하실지 모르겠습니다.

어떤 프로그램을 짤때, 예를 들어 메신져를 생각해 보겠습니다. 메신져를 짜려면 접속자 파악, 파일전송, 메시지 보내기 등의 작업들이 있습니다. 그런데 이경우 com 을 사용하지 않고 짜려면 한사람이 설계한 프로그램에 다른 사람들이 달라붙어서 거기에 맞춰가면서 프로그래밍 할 수 밖에 없습니다. 상당히 비효율적이고 또 그렇게 프로그래밍한 소스는 그 메신져에서 밖에 쓸수가 없죠. 하지만 컴포넌트화 해버리면... 쉽게 말해서 모듈별로 따로 만들어 버리면, 넌 메시지 보내는 루틴을 만들어, 난 파일 전송하는 루틴을 만들게 그리고 만들때는 com 으로 만들자. 라고 하면 쉽게 끝나는 거죠. 조립만 하면 되기 때문이죠.

여기까지 말씀을 드리면 그렇다면 com 은 일정한 형식을 가지고 있어야 한다. 왜냐하면 조립을 하려면 표준형식이 있어야 하기 때문이다. 라고 생각하시는 분이 계실지 모릅니다. 네 맞습니다. 일정한 형식을 맞춰서 프로그램을 짜야 합니다. 그래서 com 을 하시는분들 보면 머리붙잡고 쥐어 뜯습니다.(으아..미쵸미쵸 하면서요...^^ 저도 그런 기억이 있죠) com 의 표준형식을 공부하는게 쉬운게 아니거든요. 그리고 객체지향적 설계가 필요합니다. 그래서 com 에 관해서는 바이블도 따로 나와 있습니다. 공부하시려면 com 은 바이블을 꼭 사셔야 합니다. 아니 꼭은 아니더라도 사시는게 좋습니다. 인터넷으로 공부하려고 하시면... 한계가 보일겁니다.

이외에 책에 적어진 com 의 장점을 적어보겠습니다. 이하는 책에 적혀있는 내용입니다.

1. 이식성이 강하다 : 새로운 프로그램에 대한 강력한 이식성은 개발기간을 단축시킨다.
2. 유연성이 있다 : 컴으로 작업한 소프트웨어를 업그레이드 하고자 할 경우 단순히 업그레이드된 컴포턴트만 복사하면 되고 업그레이드 되지 않은 컴포넌트를 사용하지 않은 경우에도 잘 수행된다.
3. 재 컴파일할 필요가 없다.
4. 객체지향 개발 방법론(com) 은 프로그램의 구현방법을 획기적으로 바꾸었다.
5. com 의 경우 플랫폼에 독립적이다.
Posted by 동동(이재동)
언어2008. 11. 17. 17:14
import java.io.*;

public class Foo {
  public static void main(String[] args) {

  try {
    BufferedWriter UniOutput = new BufferedWriter(
                                                  new OutputStreamWriter(
                                                                         new FileOutputStream("out.txt"),
                                                                         "UTF8"
                                                                         )
                                                  );

    // UTF-8의 BOM인 "EF BB BF"를 UTF-16BE 로 변환하면 "65279"라는 값이 됨
    UniOutput.write(65279);

    UniOutput.write("ABC가나다라");
    UniOutput.newLine();
    UniOutput.write("똠방각하");

    UniOutput.close();

  } catch (UnsupportedEncodingException e) {
      System.err.println(e);
      System.exit(1);
  } catch (IOException e) {
      System.err.println(e);
      System.exit(1);
  }

  }
}


Posted by 동동(이재동)
언어2007. 6. 7. 16:46
odbc를 이용한것은 소설같은 자바에 나오기때문에 패스이고

일단 mysql 홈피가서

mysql-connector-java-5.0.6-bin.jar

를 다운받고


C:\Program Files\Java\jre1.5.0_07\lib\ext 에 mysql-connector-java-5.0.3-bin.jar 파일 복사

C:\Program Files\Java\jdk1.5.0_07\jre\lib\ext 에도 복사

대충 이렇게 하면 알아듣겠지 ㅋㅋ




Posted by 동동(이재동)
언어2007. 5. 29. 16:51
지금까지 value 값만 빼다가 키값빼는법을 몰라서 찾아봤더니

    //방이 이미 켜져 있는 지 확인
    public boolean useRoom (String room_name)
    {
        Iterator ih = hRooms.keySet().iterator();
        boolean useroom=false;
        while (ih.hasNext()) {
            //만약 방이 있다면 true로 바꾼다.
            if (ih.next().toString().equals(room_name))
                    {
                    useroom=true;
                    }
        }    
        return useroom;        
        
    }


Iterator ih = hRooms.keySet().iterator();

이것만 바꿔주면 되는것이였다... value() 대신 keySet() 하면 됨.~
Posted by 동동(이재동)
언어2007. 5. 29. 09:51
일단 내가 원하는것은 1,2,3,4,5가 배열에 들어갔을때

만약 3을 제거 했을시 다음에 6이 왔을시 3자리에 6이 들어가게 하는거였다... 정확히 말하면 들어올 6도 3으로 변환되어야 한다.

이것을 해결하기 위해서 hash,vector 이런것으로 구현해 볼려고 했지만 역시 ArrayList 기능은 막강했다.

import java.util.ArrayList;

public class Main{
       public static void main(String[] args) {
            
              ArrayList a = new ArrayList(); //혼합형 데이터 저장
             
              //ArrayList b = new ArrayList();//JDK 1.4버전 이전           
            
            
              a.add(new Integer(0));   //정수 입력
              a.add(new Integer(1));   //정수 입력
              a.add(new Integer(2));   //정수 입력
              a.add(new Integer(3));   //정수 입력
              a.add(new Integer(4));   //정수 입력
              a.add(new Integer(5));   //정수 입력
             
              String result = "";
              for(int i = a.size()-1; i >= 0 ; i--){
                        result += a.get(i) + ", ";
              }
             
              System.out.println(result);
            
              Integer bfind=new Integer(2);
             
              if(a.contains(bfind)){
                  int pos = a.indexOf(bfind);
                  a.set(pos, "null");
                  System.out.println(a.get(pos));
                  System.out.println("데이터 수정완료~~~");
                  System.out.println((pos+1) + " 의 데이터: " + a.get(pos));
           }
           else{
                  System.out.println("수정할 데이터 없음");
           }
              bfind=new Integer(3);
              if(a.contains(bfind)){
                  int pos = a.indexOf(bfind);
                  a.set(pos, "null");
                  System.out.println(a.get(pos));
                  System.out.println("데이터 수정완료~~~");
                  System.out.println((pos+1) + " 의 데이터: " + a.get(pos));
           }
           else{
                  System.out.println("수정할 데이터 없음");
           }
           
            
//            arraylist의 삭제기능
              Integer afind=new Integer(2);
              if(a.contains(afind)){ //arraylist a에서 100.0을 찾으면
                     System.out.println(" 삭제할 데이터를 찾았어요.!!!");
                     a.remove(a.indexOf(afind)); //찾은 데이터 삭제
                     System.out.println(" 삭제 완료~!!");
                     //System.out.println(a.get(a.indexOf(afind)));
              }else{
                     System.out.println("삭제할 데이터 " + afind + "가 없어요.!!!!");
              }
            
              //arraylist의 검색기능
              //Integer find=new Integer(2);
              String find="null";
              if(a.contains(find)){
                     System.out.println(" 검색 위치 : " + a.indexOf(find));
                     System.out.println(" 검색 내용 : " + a.get(a.indexOf(find)));                    
                     a.set(a.indexOf(find),new Integer(a.indexOf(find)));
                    
              }else{
                     System.out.println(find + " 데이터가 없어요.");
              }
             
              System.out.println(a.toString());
             
       }
}

내가 원하는기능을 구현하기 위해 만든 샘플 파일이다.

일단 3값을 제거 하지는 않고 3을 수정하여서 null로 만든다...

새로운 값이 들어올경우  null 값의 index값을 찾아서 원하는값으로 넣어준다(수정으로)

일단 해야할일은 처음에 모든 데이터를 null로 넣어야 겠다.

참고 사이트
http://blog.naver.com/ssorvase?Redirect=Log&logNo=140036418525

http://kin.naver.com/db/detail.php?d1id=1&dir_id=10106&eid=+sO2r52I87z5z7gHj1mQVWIrgq4m2Waq&qb=QXJyYXlMaXN0


내가 이걸 한 이유는 메신저에 채팅폼을  띄울때 10개를 제한으로 띄우는데

채팅폼은 배열로 만들어야 하기떄문에 채팅폼의 번호를 정해주는것을 만들고 있다.

서버에서 1,2,3을 보내주면 클라이언트는 ChatForm[] chat = new ChatForm[1]........  (2)..(3).. 이런식으로

받아서 채팅폼을 만든다. 채팅폼이 사라질경우 만약 1이면 1값을 서버에 반환하고

서버는 그 값을 나중에 재사용해야 하기때문에 null로 변환하고 나중에 새로운창을 뜨면 2값이 아닌 1값을 띄우는거다.

만약 이걸하지 않으면 계속 1씩 증가하기때문에 계속 폼을 띄우고 닫고 이렇게 10번하면 10개의 제한을 벗어나 10개이상

이 되므로 안된다.
Posted by 동동(이재동)
언어2007. 5. 11. 14:50
이클립스 플러그인, Easy Eclipse WebDav

일단 위의 트랙백에 가보면 자세한 설명이 나온다..

이런게 있으면 상당히 도움될꺼 같다..

일단 url은

http://www.easyeclipse.org/site/plugins/eclipse-webdav-ftp.html

이고

이걸 설치하고 show view에 보면 target Managemnet-site exploer에 가면 있다..

무엇보다 Synchronize 기능이 참좋다 실시간으로 수정해주기 때문이다..

이것은 show view-team 쪽에 있다.


Posted by 동동(이재동)
언어2007. 5. 8. 12:48
아..  괜히 class 파일을 하위폴더에 백업하다가 에러났다......ㅠㅠ

왜냐하면 resin이 web-inf 폴데에있는것은 막 컴파일 시키기 때문이다...

앞으로 백업할때는 로컬로 하거나 확장자를 바꿔야겠다......

jsp 파일은 갠찮다..
Posted by 동동(이재동)
언어2007. 5. 3. 11:32

If Len(Txt_Width.Text) > 0 Then

        If IsNumeric(Txt_Width.Text) = False Then

           MsgBox "숫자만 입력가능합니다.", vbOKOnly + vbCritical, "입력오류"

           Txt_Width.Text = ""

           Txt_Width.SetFocus

           Exit Sub

        End If

     End If

 

IsNumeric 함수를 이용해 숫자가 입력되었는지 조사

한글이나 영문,특수문자가 입력시 False 로 처리하여 입력된 값을 지움

Posted by 동동(이재동)
언어2007. 4. 27. 12:50

getParameter() 은  return 값이 String만이 가능하지만

 

getAttribute() 는 return 값으로 Object 가 가능합니다.

 

모든 객체를 담을 수 있죠..

 

이게 큰 차이점입니다.

 

즉 parameter (변수) 의 값으로 받을 수 있는 것은 string 뿐이고

attribute (속성) 의 값으로 받을 수 잇는 것은 object(객체)가 가능하다고 보시면 됩니다.

Posted by 동동(이재동)
언어2007. 4. 26. 11:00

어이 없다.......

난 단순히 (String)값 하면 될줄 알았지만 그게 아니였다......

막 찾아본 끝에  나온 어이 없는 해답

setSeq2(""+값);

단순히 "" 만 붙이면 되는것이다.... 이러면 int형이 String형이 된다...........

헐........

C는

itoa

이다..

'언어' 카테고리의 다른 글

[vb] 숫자만 입력 가능하게 edit box  (0) 2007.05.03
getParameter아 getAttribute의 차이점  (0) 2007.04.27
jsp 에서 디버깅 하기.......  (0) 2007.04.25
log4j 간단한 사용법  (0) 2007.04.11
Eclipse 에서 ve 설치하기  (0) 2006.11.14
Posted by 동동(이재동)
언어2007. 4. 25. 11:30

asp에서는

response.write 변수명

response.end

하면 end 밑으로는 실행이 안되지만

jsp에서는 그런게 없을까 찾던중 찾았다 ㅋㅋ

out.println(request.getParameter ( "seq" ));

if ( true ) return; //break

이부분이다...

if ( true ) return; //break

하면 소스 아래에 있는건 실행이 안된다....

참고로 php는 

Exit;


 

Posted by 동동(이재동)
언어2007. 4. 11. 09:23

다운로드 : http://myhome.gimhae.go.kr/cugain/cugain_pds/cugain_board_javadata/de.jayefem.log4e_free_1.0.4.zip

 

1. Log4J 간단한 사용법

http://logging.apache.org/ 가셔서 Log4J 파일을 다운받으세요.

압축을 풀면 몇몇 폴더들이 보이는데 그중 dist 라는 폴더에서 들어가보시면 log4j-???.jar 파일이 있는데 그파일을 해당 프로젝트에 추가해 넣으시면 되겠네요.

(jre/lib/ext
넣고 쓰셔도 되긴 하지만, appender 관련 경고메세지가 뜬다고 하니 유저라이브러리처럼 필요할때마다 삽입하는것도 괜찮을듯)

그런뒤에 이제는 Eclipse 플러그인 Log4E 이용하여 Log4J 사용해 볼께요.

(
플러그인은 Eclipse 업데이트 메뉴를 이용하여 http://log4e.jayefem.de/update 다운받으세요. Pro버전은 45일간 무료, Pro버전이 아닌것을 사용해도 무방)

먼저 단순하게 Hello World 찍어내는 클래스를 만들어보죠.

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

public class Hello
{
      public static void main(String argv[])
      {

           System.out.println("Hello world.");
           System.out.println("What a beatiful day.");
      }
}

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

이제 소스에서 Log4J 이용해보도록 하죠. 우선 마우스를 아무곳에 가져다대고 오른쪽버튼 클릭

그곳에서 Log4E->Declare Logger 선택하면

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

import org.apache.log4j.Logger;

public class Hello
{

      private static final Logger logger = Logger.getLogger(Hello.class);

      public static void main(String argv[]) {
           System.out.println("Hello world.");
           System.out.println("What a beatiful day.");
      }
}

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

이렇게 logger 생성 됩니다. 다시 여기서 마우스 오른쪽 클릭후 Log4E->Inserts Log Statements for This Class 선택하게 되면 클래스의 처음과 마지막에 로깅문이 추가됩니다.

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

import org.apache.log4j.Logger;

public class Hello
{

      private static final Logger logger = Logger.getLogger(Hello.class);


      public static void main(String argv[])
      {

           if (logger.isDebugEnabled())
           {
               logger.debug("main(String) - start");
           }

           System.out.println("Hello world.");
           System.out.println("What a beatiful day.");

           if (logger.isDebugEnabled())
           {
               logger.debug("main(String) - end");
           }

      }
}

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

선택에 따라서 메소드에만 혹은 커서가 위치한 곳에만 로깅문 삽입이 가능하네요.

(debug
문이 if(logger.isDebugEnabled()) 안쪽에 위치하지 않기를 원한다면 Log4E 옵션의 Profile->Statements 부분의 Embed isDebugEnabled() statements 부분의 체크를 해제바람)

이제 System.out 문을 이용하여 디버그하였던 구문들을 전부 로깅문으로 바꿔보죠.

마우스 오른쪽 버튼을 눌러서 Log4E->Replace System.out's For This Class 선택해보세요.

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

import org.apache.log4j.Logger;



public class Hello
{

      private static final Logger logger = Logger.getLogger(Hello.class);


      public static void main(String argv[])
      {

           if (logger.isDebugEnabled())
           {
               logger.debug("main(String) - start");
           }

           logger.debug("Hello world.");
           logger.debug("What a beatiful day.");

           if (logger.isDebugEnabled())
           {
               logger.debug("main(String) - end");
           }
      }
}

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

System.out.println
구문이 logger.debug 바뀐것을 보실수 있네요.

(if
문이 제거된 것은 위에 쓴것처럼 옵션을 조정하였음)

상태에서 컴파일한뒤 실행해보면 콘솔창에는

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

2005-09-01 15:28:55,418 [main] DEBUG Hello - main(String) - start
2005-09-01 15:28:55,428 [main] DEBUG Hello - main(String) - Hello world.
2005-09-01 15:28:55,428 [main] DEBUG Hello - main(String) - What a beatiful day.
2005-09-01 15:28:55,428 [main] DEBUG Hello - main(String) - end

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

같이 뜨게 됩니다.


이제 로그내용을 파일로 저장 해보도록 하죠.

아래의 내용을 log4j.properties라는 이름으로 Hello.java 들어있는 폴더안에 같이 넣습니다.

(Eclipse Property Editor 이용하여 작성하세요.)

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

######## log4j.properties ########



####################################
# Categories & Levels
####################################
log4j.rootCategory=DEBUG, FileApp, ConApp



####################################
# Appender
####################################

# ConApp is set to be a ConsoleAppender
log4j.appender.ConApp=org.apache.log4j.ConsoleAppender
# ConApp use PatterLayout.
log4j.appender.ConApp.layout=org.apache.log4j.PatternLayout
# Define Pattern
log4j.appender.ConApp.layout.ConversionPattern=%d [%t] %-5p %c - %m%n


# FileApp is to create log-file using RollingFileAppender
log4j.appender.FileApp=org.apache.log4j.RollingFileAppender
log4j.appender.FileApp.File=./MyLog.log
log4j.appender.FileApp.MaxFileSize=500KB

# Keep One Backup File
log4j.appender.FileApp.MaxBackupIndex=1
log4j.appender.FileApp.layout=org.apache.log4j.PatternLayout
log4j.appender.FileApp.layout.ConversionPattern=%d [%t] %-5p %c - %m%n

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

이상과 같이 기록후 저장한뒤에 다시 실행해 보세요.

그러면 해당 프로젝트가 위치하는 폴더의 루트에 MyLog.log라는 파일이 생성되어있을거예요.

만약 로그메세지중에

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

log4j:WARN No appenders could be found for logger (
해당클래스이름).
log4j:WARN Please initialize the log4j system properly.

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

이런것이 나온다면, 나름대로 분석해본 결과 2가지의 경우더군요.

  1.
클래스가 디폴트패키지가 아닌 유저가 지정한 패키지안에 있을경우.

  2.
디폴트 패키지인데도 발생하는 경우.

1
번의 경우 단순히 log4j.properties파일을 디폴트패키지안에 넣으면 되더군요.

2
번의 경우에는 약간 귀찮지만 클래스 파일의 내용에 아래의 구문을 추가합니다.

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

import org.apache.log4j.Logger;

import org.apache.log4j.PropertyConfigurator;


public class Hello
{

      private static final Logger logger = Logger.getLogger(Hello.class);


      public static void main(String argv[])
      {

           PropertyConfigurator.configure("
해당log4j.properties 위치한 절대경로명지정");

           // ex}   PropertyConfigurator.configure("C:\\Test\\log4j.properties");



           if (logger.isDebugEnabled())
           {
               logger.debug("main(String) - start");
           }

           logger.debug("Hello world.");
           logger.debug("What a beatiful day.");

           if (logger.isDebugEnabled())
           {
               logger.debug("main(String) - end");
           }
      }
}

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

위와 같이 한다면 아마 대부분은 문제 해결될 거라고 보네요.



(참조 웹페이지&블로그)

1.
http://blog.empas.com/jutanme/4967864

2. http://tong.nate.com/minijava/886534

3. http://log4e.jayefem.de/index.php/Log4E:FAQ (log4j.properties
파일작성시 참조)

[
출처 :: http://blog.naver.com/cds2363.do?Redirect=Log&logNo=100016800156 ]

Posted by 동동(이재동)
언어2006. 11. 14. 01:08
이클립스에서 netBean처럼 비쥬얼 에디트가 가능하다.. 플러그인을

설치해야 하는데 3개를 설치해야 한다.

http://download.eclipse.org/tools/ve/downloads/

여기서 다운받으면 된다..

VE,EMF,GEF를 다운받은후 폴더에 그냥 맞춰 넣으면 끝..

그런다음 이클립스 환경설정가서 설정후 new-project에 보면 SAMPLE 이 있는데

거기 보면 Swing이나 awt 기본 소스가 있다 그거를 수정하면 된다..

무지 쉬운거 같지만 NetBean은 어떨까... 한번 깔아바야지 ㅋㅋ
Posted by 동동(이재동)