|
2009년 08월 19일
가끔씩 치환할때 헛갈리는 것들이다..^^;; * ⇒ [*]
( ⇒ \\(
" ⇒ \"
! # % & @ ` : ; - . < > , ~ '
ex ) 위에 놈들 다 지워 보자. String c = "!\"#$%&(){}@`*:+;-.<>,^~|'[]";
for(int i=0;i<filter_word.length;i++){ return str; }
public class WebUtil
# by 멋진승현 | 2009/08/19 11:37 | 트랙백
2009년 04월 02일
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」는 Apache에 디폴트로 허가되어 있는 「Trace」메소드의 온・오프를 설정하는 옵션으로 Apache 1.3.34 와 2.0.55부터 서포트되고 있다. telnet 192.168.0.201 80
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메소드를 무효로 할 것을 권장하고 있는 것이다.
그럼 실제로 httpd.conf를 변경해 보자. 실제로는 매우 간단하다. httpd.conf의 적당한 부분에 다음을 기술하고 Apache를 재기동한다. TraceEnable Off 「TraceEnable Off」를 기술하기 전과 후의 Apache 반응을 「OPTIONS」메소드를 사용하여 비교해 보자. 적용 전 telnet 192.168.0.201 80 HTTP/1.1 200 OK
telnet 192.168.0.201 80 HTTP/1.1 200 OK 「적용 후」에는 「Allow」부분에 「TRACE」가 삭제되어 있다. Apache 1.3.34과 2.0.55에는 「TraceEnable」가 서포트되고 있어 상기와 같이 간단히 TRACE메소드를 무효로 할 수 있지만, 이전 버전(1.3.33과 2.0.54)을 사용하고 있는 경우에는「mod_rewire」를 사용하는 방법이 있다. 이 방법은 「TraceEnable」과는 달리 TRACE메소드가 허가되고 있는 것처럼 보이지만, 내부 처리에 의해 무효화하는 방법이다.
우선, 「mod_rewrite」가 유효하게 되어 있는지 확인한다. 무효로 되어 있다면 유효하게 할 것. LoadModule rewrite_module libexec/mod_rewrite.so 위의 부분이 확인되었다면, 적당한 부분에 <IfModule mod_rewrite.c>
이것으로 TRACE메소드는 유효하게 되어 있지만, 클라이언트로부터 송신할 수 없게 된다.
예를 들어 TRACE메소드를 송신한 경우 적용 전 telnet 192.168.0.201 80 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 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 2007년 12월 29일
1. jdk 1.5이상이면 아래 설정을 JAVA_OPTS안에 추가한다면 YourKit을 가지고 힙덤프를 분석할 수 있다. 2. Jasper 2 JSP Engine 지원을 위해 $CATALINA_BASE/conf/web.xml 설정 변경하라. 3. 가용성 확보를 위해 Tomcat의 clustering/session replication을 사용하라. 4. error pages를 작성하여 적용하라.(web.xml) 5. 어플리케이션에서 System.out과 System.err를 제거하고 Log4j를 사용하라. 6. application마다 같은 라이브러리는 WEB-INF/lib에서 CATALINA_HOME/shared/lib로 옮겨서 공유하라. 7. memory parameters를 잘 활용하라. 8. 불필요한 어플리케이션을 제거하라. 9. Manager서버의 보안을 강화하라. 10. server.xml을 최적화 하라. 11. 톰켓 업그레이드는 설치디렉토리를 분리하여 적용하라. 12. Tomcat 서버는 root로 띄우지 마라. 13. Precompile JSPs (at build time) 14. 디렉토리 보이는 걸 막아라. 15. 듀얼 코어 CPU를 사용할 경우 쓰레드풀을 250개 이상 설정하라. 16. Tomcat MBeans이나 다양한 모니터링 도구를 활용하여 서버를 모니터링하라. 17. jdk1.5, 1.6이 성능이 좋다. 18. -server JVM option을 사용하라. 19. GZIP compression을 사용하라. 20. Security Manager를 잘 사용하라. # by 멋진승현 | 2007/12/29 18:00 | 트랙백
2007년 12월 28일
mypda.net 은 XP 서버에 XAMPP 1.6.4 (Apache + php + mysql) 환경에서 구동되고 있습니다. [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.
Win32DisableAcceptEx
<추가> Win32DisableAcceptEx 는 Apache version 2.0.49 부터 이후 버전에만 가능합니다 Apache 1.X 버전을 사용하고 있는 분들은 다른 해결책을 찾으셔야 합니다.
# by 멋진승현 | 2007/12/28 11:50 | 트랙백
2007년 11월 26일
이렇게 저렇게 하다보니 굳이 연동을 해야 하는 경우가 생겨서 연동에 대한 내용을 가장 빨리 할 수 있는 방법을 기록으로 남깁니다. include conf/tomcat_user.conf 추가 LoadModule jk_module modules/mod_jk.so <IfModule mod_jk.c> 저장... workers.tomcat_home=%Tomcat_Home% workers.java_home=%JAVA_HOME% ps=/ 저장.... 2007년 09월 06일
이클립스 프로젝트를 통째로 압축하면 그것을 바로 가져올(import) 수 있습니다. daysago-0.22.zip 파일을 다운로드 받습니다. filter text에 "ex"를 입력하면 Existing Projects into Workspace 라는 항목이 보입니다. 두 번째 옵션인 Select archive file 를 선택하고 Browse... 버튼을 클릭해서 다운로드 받은 daysago-0_22.zip 파일을 선택합니다. daysago라는 프로젝트가 보입니다. 가져오기 작업 끝이죠. ^^ # by 멋진승현 | 2007/09/06 12:01 | 트랙백
2007년 09월 06일
파일 검색을 많이 하는 편입니다. ctrl+H 를 클릭하거나 그림처럼 메뉴를 부를 때 해당 창이 뜹니다.
제일 먼저 나타나는 게 Java Search 탭입니다. 그런데 저는 보통 File Search 탭을 많이 사용하고 나머지 탭은 거의 사용하지 않습니다. 그래서 File Search 탭만 남겨보겠습니다. 창 하단의 Customize 버튼을 클륵하면 됩니다. 다른 두 개의 옵션은 꺼둡니다. 그리고 OK 버튼을 클릭하면 끝! 탭이 깔끔하게 정리됩니다. 간단하게 탭 조정에 대해서만 알아보았습니다. Replace... 를 통해서 찾은 패턴을 일관 대치할 수 있기도 합니다. # by 멋진승현 | 2007/09/06 12:00 | 트랙백
2007년 09월 06일
이클립스 콘솔뷰에도 좋은 기능이 있습니다. 바로 resource연결입니다. 스택트레이스 같이 예외 메시지가 뿌려질 때 java파일일 경우 에러난 위치를 바로 보여줍니다. try catch에서 잡은 로그 메시지인 듯합니다. MemoServlet:... 로그가 보이는군요. 엇, 링크까지. 클릭해봤습니다. Source not found for MemoServlet:java.lang.NumberformatException 라고 나옵니다. 보통 이쯤 되면 ctrl+shift+R을 눌러서 파일을 찾겠지만, 잠깐! MemoServlet 글자를 마우스로 드래그해서 선택해보시죠. 그리고, ctrl+shift+R 를 하시면 다음과 같이 착하게 나옵니다. 착합니다. ^^ 파일을 열어서 살펴보겠습니다. 아마 이 부분인 듯 합니다. 디버깅을 해보니 || 가 아니라 && 이 되어야 되는군요. ^^ 요기까지입니다. # by 멋진승현 | 2007/09/06 12:00 | 트랙백
2007년 09월 06일
이클립스 Workspace 외부에 있는 자원은 모두 external 이라는 제한이 걸립니다. 하지만 일정부분 읽고, 쓰기가 가능합니다. Open Resource를 통해서 검색도 됩니다. 새로운 폴더를 만듭니다. 다이얼로그 창이 다음과 같이 뜹니다. 하단의 Advance... 버튼이 보입니다. 감 잡으셨죠. 네 거깁니다. 쩜쩜쩜이 왜 있겠습니까. ㅎㅎ Link to folder in the file system 첵크박스에 체크해주시면 아래가 활성화됩니다. Browse... 버튼을 클릭하시고, 원하는 외부 디렉토리를 선택하세요.temp 아이콘에 이물질 보이시죠. 윈도우 바로가기 아이콘과 비스타네요. ^^ 다 됩니다. 이클립스. # by 멋진승현 | 2007/09/06 11:59 | 트랙백
|
|