2009년 08월 19일
특수문자 치환방법

가끔씩 치환할때 헛갈리는 것들이다..^^;;


1. []으로 싸주면 문자자체로 인식하는 것들.

*  ⇒ [*]
+  ⇒ [+]
$  ⇒ [$]
|  ⇒ [|]


2. \\를 붙여줘야 하는 것들.

( ⇒ \\(
) ⇒ \\)
{ ⇒ \\{
} ⇒ \\}
^ ⇒ \\^
[ ⇒ \\[
] ⇒ \\]


3. 자바의 특수문자는 \을 쓴다.

 " ⇒ \"


4. 나머지 부호들은 괜찮은 듯 하다.
확인된 것.

! # % & @ ` : ; - . < > , ~ '

 

ex ) 위에 놈들 다 지워 보자.

    String c = "!\"#$%&(){}@`*:+;-.<>,^~|'[]";
    c = c.replaceAll("!\"#[$]%&\\(\\)\\{\\}@`[*]:[+];-.<>,\\^~|'\\[\\]", "");

 


 public static String getSTRFilter(String str){
  int str_length = str.length();
  String strlistchar   = "";
  String str_imsi   = ""; 
  String []filter_word = {"","~","!","@","#","$","%","^","&","*","(",")","_","+","=","|","\","}","]","{","[",""","'",":",";","<",",",">","\\.","\\?","\\/" target=_blank>\\.","\\?","\\/">\\~","\\!","\\@","\\#","\\$","\\%","\\^","\\&","\\*","\\(","\\)","\\_","\\+","\\=","\\|","\\\\","\\}","\\]","\\{","\\[","\\\"","\\'","\\:","\\;","\\<","\\,","\\>","\\.","\\?","\\/"};

  for(int i=0;i<filter_word.length;i++){
   //while(str.indexOf(filter_word[i]) >= 0){
      str_imsi = str.replaceAll(filter_word[i],"");
      str = str_imsi;
   //}
  }

  return str;

 }


import java.util.StringTokenizer;

public class WebUtil
{
           // 문자열 변환  String a= "abc" => replace(a, "c") => a : ab
           public String strReplace(String s1, String s2){
                      String res = "";
                      StringTokenizer str = new StringTokenizer(s1, s2);


                       while(str.hasMoreTokens()){
                                     res += str.nextToken();  
                               System.out.println(res);
                       }
               return res;
           }
}

 

by 멋진승현 | 2009/08/19 11:37 | 트랙백
2009년 04월 02일
실시간으로 프로그램상에서 이미지를 그린후 binary화 시켜 웹 서비스나, gif 파일로 저장 할 수 있다.
jar cvf Acme.jar Acme

실시간으로 프로그램상에서 이미지를 그린후 binary화 시켜 웹 서비스나, gif 파일로 저장 할 수 있다.
Article 내용:
웹에서 흔히 볼 수 있는 실시간 이미지 처리, 또는 프로그램에서 그려진 이미지를 파일로 저장하는 방법에
대해서 다룰것이다. 증권 사이트의 실시간 주가 그래프는 어떻게 보여줄까?
그에 대한 방법을 소개 하고자 한다.
참고) 여기에서 사용하는 GIFEncoder는 "Copyright (C)1996,1998 by Jef Poskanzer "에 
지적 소유권이 있음을 알려준다.
* BufferedImage 소개    
    jdk1.* 버젼에서는 메모리상에 이미지를 직접 그리지 못하여 awt package를 이용하여 Frame,Window,Applet을 
    사용하여 이미지를 그렸으며, 그 이미지를 이용하여 여러가지 서비스를 할 수 있었다.
    그러나, 웹 서비스 시대가 도래하면서 서버측에서도 실시간 이미지 전송을 요구받게 되었지만, 
    그러한 awt package를 이용해야 이미지 처리가 가능하므로 어려움을 겪어왔다.
    현재는 jdk1.2 버젼 이상 부터 제공하는 BufferedImage 클래스를 이용하여 메모리 상에 이미지 구현을 
    마음껏 한후에 그 이미지를 GIFEncoder를 통하여 서버에서의 실시간 이미지 처리를 할 수 있게 되었다.
    
    BufferedImage 클래스는 java.awt.image package에 있지만 jdk1.7 버젼에서와 같이 Frame,Window,Applet없이도
    메모리 상에 존재하는 이미지 클래스이다.
    
    BufferedImage의 자세한 사용은 API를 참고하기로 하고 간단한 사용 방법을 소개한다.
    
    //BufferedImage bi=new BufferedImage(int width, int height, int imageType);
    
    위와 같은 방법으로 객체생성을 할 수 는데.....
    width,height는 메모리상의 가상 이미지 크기이다.
    imageType은 여러가지 color를 제공하는 ImageType으로 보통 BufferedImage.TYPE_4BYTE_ABGR 을 사용한다.
    
    //BufferedImage bi=new BufferedImage(200, 300, BufferedImage.TYPE_4BYTE_ABGR);
    
    실제 위와 같이 객체생성한다. 그러면 가로 200, 세로 300 크기의 이미지가 메모리상에 만들어진다.
    그 다음은 간단하다.
    BufferedImage에서 Graphics 객체를 얻어 올 수 있으므로 여러가지 그림을 그릴 수가 있다.
    2D구현도 가능하다.
    
    BufferedImage bi=new BufferedImage(200, 300, BufferedImage.TYPE_4BYTE_ABGR);
    Graphics g=bi.getGraphics() ;
    g.setColor(Color.black);
    g.drawLine(50,50,50,300);
    g.drawLine(50,300,300,300);
    g.drawString(" speed ( km / hour )",100,320);
    g.drawRect(50,50,50,50);
    g.fillRect(100,100,50,50);
        
    위와 같이 메모리 상에 간단한 그래프를 그릴 수 있다.
    이제 실시간으로 그린 이미지를 파일로 저장하거나, 아니면 stream으로 서버에서 클라이언트로 
    전송할 수 있는데..   문제는 현재의 이미지는 .gif .jpg형식의 binary가 아니라는 것이다.
    BufferedImage의 내용을 사용가능한 binary로 변환시켜주는 것이 GIFEncoder,JPGEncoder라는 것이다.
    이것은 공개용으로 아래 싸이트에서 자바 클래스로 제공하고 있다.
    다운 받아 사용해 보기 바란다.
GIFEncoder
* GIFEncoder 사용법
    GIFEncoder사용법은 간단하다.
    
    //GifEncoder ge=new GifEncoder(Image img,OutputStream out);
    
    위와 같이 객체생성하므로 이미지와 encode한 binary를 보내줄 OutputStream만 있으면 된다.
    
    1. 파일로 저장
        FileOutputStream fout=new FileOutputStream("my.gif");
        GifEncoder ge=new GifEncoder(bi,fout);// bi는 BufferedImage
        ge.encode();
        fout.close();
        
    2. 서블릿에서 browser로 전송
        response.setContentType("image/gif");        
        ServletOutputStream out=response.getOutputStream();
        GifEncoder ge=new GifEncoder(bi,oout);// bi는 BufferedImage
        ge.encode();
        out.close();
        
Article 정리:

BufferedImage, GIFEncoder를 사용하는 방법을 알아 보았는데...
인테넷에서는 이러한 방법을 사용하여 다양한 서비스를 제공할 수 있다. 지금 막 아이디어들이 떠오르지 않는가?
참고로 JPGEncoder도 같은 방법으로 사용할 수 있으니 JPGEncoder만 구할 수 있으면 되겠다.
by 멋진승현 | 2009/04/02 00:18 | 트랙백
2008년 11월 05일
TraceEnable 하라고 보안팀에서 연락이 왔다..

TraceEnable

 

TraceEnable」는 Apache 디폴트로 허가되어 있는 Trace메소드의 온오프를 설정하는 옵션으로 Apache 1.3.34 2.0.55부터 서포트되고 있다.
Trace
메소드는 클라이언트가 송신한 리퀘스트를 그대로 반환하는 것이다.
예를 들어Host: www.test.com」라는 문자열을 송신한 경우.

 

telnet 192.168.0.201 80
TRACE / HTTP/1.0
Host: www.pentest.com

 

HTTP/1.1 200 OK

Date: Tue, 25 Jul 2006 01:39:23 GMT

Server: Apache

Transfer-Encoding: chunked

Content-Type: message/http

 

25

TRACE / HTTP/1.1

Host: www.pentest.com

리퀘스트에 송신한 문자열 Host: www.test.com」이 그대로 반환되었다.

왜 이 메소드가 문제가 되는가 하면 Trace메소드를 사용한 공격 방법에 XST(Cross-Site Tracing)」이라는 것이 있기 때문이다.

다운로드: http://www.cgisecurity.com/lib/WH-WhitePaper_XST_ebook.pdf


이것은 공격자가 클라이언트에 TRACE메소드를 발행하도록 하여, 레스폰스를 취득하는 것으로 Basic인증의 패스워드를 착취하는데 사용되는 공격이다.

이런 이유로 Trace메소드를 무효로 것을 권장하고 있는 것이다.
또한, 취약성 스캐너로 Trace메소드가 유효로 되어 있는서버를 스캔하면 대부분 리스크로 보고하므로, 대책을 취하는 것이 좋다.

 

그럼 실제로 httpd.conf 변경해 보자. 실제로는 매우 간단하다.

httpd.conf 적당한 부분에 다음을 기술하고 Apache를 재기동한다.

 

TraceEnable Off



TraceEnable Off」를 기술하기 전과 후의 Apache 반응을 OPTIONS」메소드를 사용하여 비교해 보자.

 

적용

telnet 192.168.0.201 80
OPTIONS / HTTP/1.0

 

HTTP/1.1 200 OK
Date: Sun, 12 Mar 2006 17:27:26 GMT
Server: Apache/1.3.34 (Unix)
Content-Length: 0
Allow: GET, HEAD, OPTIONS, TRACE
Connection: close


적용

telnet 192.168.0.201 80
OPTIONS / HTTP/1.0

 

HTTP/1.1 200 OK
Date: Sun, 12 Mar 2006 17:28:28 GMT
Server: Apache/1.3.34 (Unix)
Content-Length: 0
Allow: GET, HEAD, OPTIONS
Connection: close

 

「적용 후」에는 Allow」부분에 TRACE」가 삭제되어 있다.
이것으로 대책이 완료되었다.


추가
Apache 1.3.34
2.0.55에는 TraceEnable」가 서포트되고 있어 상기와 같이 간단히 TRACE메소드를 무효로 있지만, 이전 버전(1.3.33 2.0.54) 사용하고 있는 경우에는mod_rewire」를 사용하는 방법이 있다.

방법은 TraceEnable」과는 달리 TRACE메소드가 허가되고 있는 것처럼 보이지만, 내부 처리에 의해 무효화하는 방법이다.

 

우선, mod_rewrite」가 유효하게 되어 있는지 확인한다. 무효로 되어 있다면 유효하게 .
다음의 항목이 httpd.conf 들어 있으면 된다.

 

LoadModule rewrite_module libexec/mod_rewrite.so
AddModule mod_rewrite.c

 

위의 부분이 확인되었다면, 적당한 부분에

 

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_METHOD} ^TRACE
RewriteRule .* - [F]
</IfModule>


같이 기술하고, Apache 재기동한다.

이것으로 TRACE메소드는 유효하게 되어 있지만, 클라이언트로부터 송신할 없게 된다.

 

예를 들어 TRACE메소드를 송신한 경우

 

적용

telnet 192.168.0.201 80
TRACE / HTTP/1.1

Host:localhost

 

HTTP/1.1 200 OK

Date: Tue, 11 Jul 2006 10:57:30 GMT

Server: Apache/1.3.12 (Unix)

Transfer-Encoding: chunked

Content-Type: message/http

 

TRACE / HTTP/1.1

Host: localhost


적용

telnet 192.168.0.201 80
TRACE / HTTP/1.1

Host: localhost

 

HTTP/1.1 403 Forbidden

Date: Tue, 11 Jul 2006 10:55:04 GMT

Server: Apache/1.3.12 (Unix)

Transfer-Encoding: chunked

Content-Type: text/html; charset=iso-8859-1

 

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">

<HTML><HEAD>

<TITLE>403 Forbidden</TITLE>

</HEAD><BODY>

<H1>Forbidden</H1>

You don't have permission to access /

on this server.<P>

<HR>

<ADDRESS>Apache/1.3.12 Server at localhost.localdomain Port 80</ADDRESS>

</BODY></HTML> 

 

「적용 후」를 보면 있듯이 TRACE메소드를 송신할 없게 되어 있다.

 

IIS(Intenet Information Service)의 경우

IIS Lockdown툴에 포함되어 있는 URLScan 사용한다.

1. IIS Lockdown Tool 설치한다.

2. IIS Lockdown Tool 포함되어 있는 URLScan 설치한다.

3. urlscan.ini 다음의 내용을 추가한다.

UseAllowVerbs=1 지정한 경우

 [options]

 UseAllowVerbs=1

 

 [AllowVerbs]

 GET

 HEAD

 POST

 

UseAllowVerbs=0 지정한 경우

 [options]

 UseAllowVerbs=0

 

 [DenyVerbs]

 TRACE

 TRACK

 

[2] IIS Lockdown Wizard

http://www.microsoft.com/korea/technet/security/tools/locktool.asp

 

[3] URLScan 보안

http://www.microsoft.com/korea/technet/security/URLScan.asp

 

[4] KB326444 - URLScan 툴의 구성 방법

http://support.microsoft.com/kb/326444/ko

 

Sun One WebServer (iPlanet6.0SP2이후 버전)

1. /config/obj.conf Default오브젝트안에 다음의 기술을 추가한다.

 

 <Client method=""TRACE"">

   AuthTrans fn=""set-variable""

   remove-headers=""transfer-encoding""

   set-headers=""content-length: -1""

   error=""501""

 </Client>

 

2. 서버를 재기동한다.

 

[5] Sun ONE/iPlanet Web Server Enable HTTP TRACE Method by Default to Emulate the CERT VU

http://sunsolve.sun.com/search/document.do?assetkey=1-26-50603-1

by 멋진승현 | 2008/11/05 13:42 | 보안,해킹 | 트랙백
2007년 12월 29일
톰켓을 사용하는데 필요한 20가지 Tips

 

1. jdk 1.5이상이면 아래 설정을 JAVA_OPTS안에 추가한다면 YourKit을 가지고 힙덤프를 분석할 수 있다.
 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/logs/heapdump

2. Jasper 2 JSP Engine 지원을 위해 $CATALINA_BASE/conf/web.xml 설정 변경하라.
 - development : false, genStringAsCharArray : true, modificationTestInterval : true, trimSpaces : true
 - 자세한 건 여기를 참조하라.

3. 가용성 확보를 위해 Tomcat의 clustering/session replication을 사용하라.
 - 사용방법은 여기를 참조하라.

4. error pages를 작성하여 적용하라.(web.xml)
 - <error-page>
      <error-code>404</error-code>
      <location>/error/404.html</location>
   </error-page>

5. 어플리케이션에서 System.out과 System.err를 제거하고 Log4j를 사용하라.

6. application마다 같은 라이브러리는 WEB-INF/lib에서 CATALINA_HOME/shared/lib로 옮겨서 공유하라.
 - 메모리를 절약할 수 있다.

7. memory parameters를 잘 활용하라.

8. 불필요한 어플리케이션을 제거하라.

9. Manager서버의 보안을 강화하라.
 - CATALINA_HOME/conf/tomcat-users.xml
  <role rolename="manager">
   <user username="darren" password="ReallyComplexPassword" roles="manager"></user>
  </role>
 - CATALINA_HOME/conf/server.xml에 IP 블럭킹 기능도 유용하다.
  <Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="192.168.1.*"></Valve>

10. server.xml을 최적화 하라.
 - 서버 환경에 맞는 CATALINA_HOME/conf/server-original.xml, CATALINA_HOME/conf/server-minimal.xml 선택하여 server.xml로 변경하라.

11. 톰켓 업그레이드는 설치디렉토리를 분리하여 적용하라.

12. Tomcat 서버는 root로 띄우지 마라.
 - 자세한 내용은 여기를 참조하라.

13. Precompile JSPs (at build time)
 - 자세한 내용은 여기를 참조하라.

14. 디렉토리 보이는 걸 막아라.
  - CATALINA_HOME/conf/web.xml
  <servlet>
   <servlet-name>default</servlet-name>
   <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
   <init-param>
   <param-name>debug</param-name>
   <param-value>0</param-value>
   </init-param>
   <init-param>
   <param-name>listings</param-name>
   <param-value>false</param-value>  <!-- make sure this is false -->
   </init-param>
   <load-on-startup>1</load-on-startup>
  </servlet>

15. 듀얼 코어 CPU를 사용할 경우 쓰레드풀을 250개 이상 설정하라.

16. Tomcat MBeans이나 다양한 모니터링 도구를 활용하여 서버를 모니터링하라.
 - 자세한 내용은 여기를 참조하라.

17. jdk1.5, 1.6이 성능이 좋다.

18. -server JVM option을 사용하라.

19. GZIP compression을 사용하라.
 - <Connector>compression="on"
   compressableMimeType="text/html,text/xml,text/plain,application/xml"
   </Connector>
 - 자세한 건 여기를 참조하라.

20. Security Manager를 잘 사용하라.
 - 자세한건 여기를 참조하라.

by 멋진승현 | 2007/12/29 18:00 | 트랙백
2007년 12월 28일
웹서버 속도 저하 문제 해결 (xp,Apache 2.2.X, XAMPP)

mypda.net 은 XP 서버에 XAMPP 1.6.4 (Apache + php + mysql) 환경에서 구동되고 있습니다.

트래픽이 그다지 없고, 대역폭이 여유로운 상황에서 서버 사양이 P4 3.0 Ghz 에 Ram 1G 환경이라
웹서버가 느려질 이유가 전혀 없음에도 불구하고, 상당히 느린 반응 속도가 고질 적인 문제 였습니다.

현재 한참 개발 중인 Zeroboard XE 문제도 아니었던 것이 Zeroboard 4 나 Wordpress 를 사용할 때에도
상당히 느린 반응 속도를 가지고 있었습니다.

생각 날때마다 mysql 이나 httpd.conf 설정을 살펴 보긴 했지만 해결이 되지 않았었는대, 문제 해결을 위한
가장 기본적인 접근 방법을 잊고 있었더군요. (서버를 만지는걸 어느 순간 신경 안쓰게 된 탓이겠지요)

Apache 의 error 로그를 뒤져 보았습니다.

[Fri Sep 08 04:02:33 2006] [warn] (OS 121)세마포어 시간 초과 기간이 만료되었습니다. : winnt_accept: Asynchronous AcceptEx failed.
[Fri Sep 08 04:02:33 2006] [warn] (OS 64)지정된 네트워크 이름을 더 이상 사용할 수 없습니다. : winnt_accept: Asynchronous AcceptEx failed.


 위와 같은 에러가 정말 많더군요. 이상 적인 CPU 점유율과 느린 반응의 원인이 MS 환경 (Win32- xp,2000 서버) 의 멀티 프로세스 모듈과 어우러진 아파치의 버그 더군요.

해결 방법은 httpd.conf 에 다음과 같은 라인을 추가 하는 것 입니다.

Win32DisableAcceptEx


"Win32DisableAcceptEx"  이 라인 핵심 라인 입니다.

추가 시켜 주시고 아파치를 재구동 하면 됩니다.

http://www.mydigitallife.info/2006/03/09/winnt_accept-asynchronous-acceptex-failed-error-in-apache-log/  (영문)

이곳에서 확인하시면 서버 안정성에 문제를 발생 시킬 수도 있다고는 하는대, 서비스가 엄청나게
느려지는 것 보다는 나아서 httpd.conf 를 바꾸고 반응 속도를 보았더니 속이 다 시원합니다.

acceptEX 는 MS 가 만든 확장 Network API 라더군요. Linux 나 다른 OS 환경에서는 발생하지 않는 오류입니다.
개인적인 생각에 확장 API 를 사용하지않는 설정 이기 때문에 안정성과는 큰 관련이 없을 것이라 여겨집니다.

오류가 나온지 한참 되었는대도 아파치에서 수정되지 않는 걸 보면 MS 쪽 문제 일려나요


<추가>

Win32DisableAcceptEx 는 Apache version 2.0.49 부터 이후 버전에만 가능합니다

Apache 1.X 버전을 사용하고 있는 분들은 다른 해결책을 찾으셔야 합니다.

 

by 멋진승현 | 2007/12/28 11:50 | 트랙백
2007년 11월 26일
Apache2.0 + Tomcat 5.5 연동 (Windows XP)

이렇게 저렇게 하다보니 굳이 연동을 해야 하는 경우가 생겨서 연동에 대한 내용을 가장 빨리 할 수 있는 방법을 기록으로 남깁니다.

최대한 빨리 연동을 하는 방법이니....어처구니 없더라도 잠시 참아주시길....
연동환경은 Windows XP 였습니다.

1.DownLoad
1-1.Apache 2.0.61 DownLoad
http://ftp.kaist.ac.kr/pub/Apache/httpd/binaries/win32/apache_2.0.61-win32-x86-no_ssl.msi

1-2.Tomcat 5.5 DownLoad
http://mirror.apache-kr.org/tomcat/tomcat-5/v5.5.25/bin/apache-tomcat-5.5.25.exe

1-3.mod_jk DownLoad
http://mirror.apache-kr.org/tomcat/tomcat-connectors/jk/binaries/win32/jk-1.2.25/mod_jk-apache-2.0.29.so

이상으로 모든 파일 다운로드 완료~~

2.설치
(%Apache_Home% 설치된 아파치 경로
%Tomcat_Home% 설치된 Tomcat 경로
%JAVA_HOME% 설치된 Java 경로)
2-1. Apache 설치 : 그냥 실행파일인 관계로 설명 無

2-2. Tomcat5.5 설치 : 그냥 실행파일인 관계로 설명 無

2-3. %Apache_Home%\modules 밑에 'mod_jk.so'로 파일명 변경하여 복사

2-4. %Apache_Home%\conf\http.conf 파일 열기

2-5. 맨 마지막 줄에

include conf/tomcat_user.conf

추가

2-6. %Apache_Home%\conf 디렉토리에
tomcat_user.conf 파일 추가
workers.properties 파일 추가

2-7. tomcat_user.conf 파일 편집

LoadModule jk_module modules/mod_jk.so

<IfModule mod_jk.c>
JkMount /*.jsp jsp
JkWorkersFile "%Apache_Home%\conf\workers.properties
</IfModule>

저장...

2-8. workers.properties

workers.tomcat_home=%Tomcat_Home%
workers.java_home=%JAVA_HOME%

ps=/
worker.list=jsp
worker.jsp.port=8009
worker.jsp.host=localhost
worker.jsp.type=ajp13
worker.jsp.lbfactor=1
#worker.jsp.cachesize=1
worker.jsp.socket_timeout=10

저장....

3. Test
3-1. Apache, Tomcat Server 시작

3-2. 페이지 Test

http://localhost 페이지확인
http://localhost:8080 페이지 확인
http://localhost/1.jsp 404 Error 발생 (Tomcat Error)
http://localhost:8080/1.jsp 404 Error 발생 확인 (Tomcat Error)

연동은 끝~

by 멋진승현 | 2007/11/26 14:34 | TOMCAT | 트랙백
2007년 09월 06일
eclipse 압축된 프로젝트 가져오기

이클립스 프로젝트를 통째로 압축하면 그것을 바로 가져올(import) 수 있습니다.
http://code.google.com/p/daysago/ 에 올려 놓은 파일은 이클립스 프로젝트를 압축해 놓은 것입니다.

zipped project

zipped project

daysago-0.22.zip 파일을 다운로드 받습니다.

project import

project import

이클립스의 패키지 익스플로러에서 import를 선택합니다.
filter text에 "ex"를 입력하면 Existing Projects into Workspace 라는 항목이 보입니다.
Select archive file

Select archive file

두 번째 옵션인 Select archive file 를 선택하고 Browse... 버튼을 클릭해서 다운로드 받은 daysago-0_22.zip 파일을 선택합니다. daysago라는 프로젝트가 보입니다.

imported project

imported project


가져오기 작업 끝이죠. ^^
by 멋진승현 | 2007/09/06 12:01 | 트랙백
2007년 09월 06일
eclipse 파일 검색창 조정하기
파일 검색을 많이 하는 편입니다. ctrl+H 를 클릭하거나 그림처럼 메뉴를 부를 때 해당 창이 뜹니다.
사용자 삽입 이미지

제일 먼저 나타나는 게 Java Search 탭입니다. 그런데 저는 보통 File Search 탭을 많이 사용하고 나머지 탭은 거의 사용하지 않습니다. 그래서 File Search 탭만 남겨보겠습니다. 창 하단의 Customize 버튼을 클륵하면 됩니다.
사용자 삽입 이미지

다른 두 개의 옵션은 꺼둡니다. 그리고 OK 버튼을 클릭하면 끝!
사용자 삽입 이미지

탭이 깔끔하게 정리됩니다.
사용자 삽입 이미지

간단하게 탭 조정에 대해서만 알아보았습니다. Replace... 를 통해서 찾은 패턴을 일관 대치할 수 있기도 합니다.
by 멋진승현 | 2007/09/06 12:00 | 트랙백
2007년 09월 06일
eclipse console과 source

이클립스 콘솔뷰에도 좋은 기능이 있습니다. 바로 resource연결입니다. 스택트레이스 같이 예외 메시지가 뿌려질 때 java파일일 경우 에러난 위치를 바로 보여줍니다.
모든 경우 적용 되는 것은 아닙니다만 똑똑해진 Open Resouce와 연결되면 편리하게 디버깅이 가능합니다.

WTP를 통해서 톰캣을 시작하면 콘솔뷰에 시스템 로그가 남습니다. 또 볼 수 있구요.
제 사이트를 돌려 보는 중에 메시지가 눈에 띄었습니다.

console log

console log


try catch에서 잡은 로그 메시지인 듯합니다. MemoServlet:... 로그가 보이는군요. 엇, 링크까지.
클릭해봤습니다.
Source not found

Source not found


Source not found for MemoServlet:java.lang.NumberformatException 라고 나옵니다.
보통 이쯤 되면 ctrl+shift+R을 눌러서 파일을 찾겠지만, 잠깐!
MemoServlet 글자를 마우스로 드래그해서 선택해보시죠. 그리고, ctrl+shift+R 를 하시면 다음과 같이 착하게 나옵니다.
Open Resource after text selection

Open Resource after text selection

착합니다. ^^ 파일을 열어서 살펴보겠습니다. 아마 이 부분인 듯 합니다.
review source

review source

디버깅을 해보니 || 가 아니라 && 이 되어야 되는군요.

^^ 요기까지입니다.
by 멋진승현 | 2007/09/06 12:00 | 트랙백
2007년 09월 06일
eclipse 외부 디렉토리 링크

이클립스 Workspace 외부에 있는 자원은 모두 external 이라는 제한이 걸립니다. 하지만 일정부분 읽고, 쓰기가 가능합니다. Open Resource를 통해서 검색도 됩니다.
단 history관리는 되지 않습니다.

다른 디렉토리를 이클립스 프로젝트에 붙여보도록 하죠. 만만한게 temp라 c:\temp 디렉토리를 붙여보겠습니다.

new Folder

new Folder

새로운 폴더를 만듭니다. 다이얼로그 창이 다음과 같이 뜹니다. 하단의 Advance... 버튼이 보입니다. 감 잡으셨죠. 네 거깁니다. 쩜쩜쩜이 왜 있겠습니까. ㅎㅎ

Link to folder in the file system

Link to folder in the file system

Link to folder in the file system 첵크박스에 체크해주시면 아래가 활성화됩니다. Browse... 버튼을 클릭하시고, 원하는 외부 디렉토리를 선택하세요.

external link

external link

temp 아이콘에 이물질 보이시죠. 윈도우 바로가기 아이콘과 비스타네요. ^^

다 됩니다. 이클립스.
by 멋진승현 | 2007/09/06 11:59 | 트랙백


<< 이전 페이지 | 다음 페이지 >>