close

Trust Me!! Trust You!!


  • Blog
  • Local Log
  • Tag Cloud
  • Key Log
  • Guestbook
  • RSS Feed
  • Write a Post
  • Admin

혹시 블로그 스킨이 깨져 보이시나요? 최신버전의 Internet Explorer(Windows용), Opera, Firefox를 사용해보세요.

Found 3 article(s) for 'tomcat'.

  1. 2015/08/24 [java servlet에서 pdf 다루기,오라클자바커뮤니티 자바서블릿강좌]
  2. 2013/05/27 jsp UTF-8관련 개발
  3. 2013/05/27 Tomcat 폴더 구조

[java servlet에서 pdf 다루기,오라클자바커뮤니티 자바서블릿강좌]

분류없음
2015/08/24 23:36
 
[java servlet에서 pdf 다루기,오라클자바커뮤니티 자바서블릿강좌]
 
PDF(Portable Document Format)는 Adobe systems에서 만든 파일 형식인 줄은 다 아실 겁니다.
:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /> 
PDF 페이지 내의 모든 요소는 모두 객체들로 이루어 져 있습니다.

객체들은 순차적으로 표현되고 마지막에는 파일내의 각 객체들을 OFFSET을 나열하는 상호참조 테이블로 구성하며 마지막 부분은 root 객체를 가리키고 있고 또한 상호 참조 테이블의 시작까지의 OFFSET을 포함 합니다.
 
PDF의 장점이라면 HTML, XML보다 유연하게 문서의 출력 형식을 제어 할 수 있다는 것이며 Adobe의 Acrobat Reader는 PDF를 읽고 쓰는 프로그램 입니다.
 
PDF 문서는 LZW 알고리즘을 이용하여 압축 하며 PDF를 텍스트 에디터로 열어 보면 알아볼 수 없는 문자가 나오는 것이 바로 이 때문 입니다.
 
PDF 파일에서 정확한 정보들을 읽어 내기 위해서는 PDF내의 텍스트 기반의 명령어들을 검색하여 적합한 데이터의 압축을 풀어야 합니다.
 
자바에서 사용 할 수 있는 PDF API로는 상법용과 무료버전 몇 가지가 있는데 간단히 소개하면 다음과 같습니다.
 
l  http://www.klg.com 시트라카/KL 그룹
l  http://www.InetSoftCorp.com StyleWriterEE
l  http://www.pdflib.com/pdflib C로 작성된 PDFlib가 있으며 자바 Wrapper를 사용 합니다. 상업용이 아니라면 무료
l  http://www.reportlab.org 에서는 자바 버전은 없지만 파이썬으로 만들어진 것은 있습니다.
l  http://www.etymon.com PDF의 전체 스펙을 제공하지는 않지만 PDF를 검색하고 수정하는 것을 자바 프로그램을 통해 편리하게 할 수 있습니다.
 
 
본 강좌에서는 http://www.pdflib.com/pdflib의 pdflib를 이용하여 서블릿으로(물론 JSP로 만들어도 무방 합니다.) PDF 파일을 만들어 보겠습니다.
 
환경에 대해 말씀 드리면…
 
전 Tomcat4.1에서 작업을 했으며 그 이상의 버전에도 문제가 없으리라 생각 됩니다…
(혹시 톰캣이 설치되어 있지 않으신 분들은 본 사이트의 Tomcat 설치 강좌를 참고 하시어 설치하시기 바랍니다.)
 
1.     http://www.pdflib.com/products/pdflib/download/601/PDFlib-6.0.1p1-Windows.zip 에서 pdflib를 다운 받습니다.
 
2.     다운받은 파일을 적당 한곳에 압축을 풉니다.
압축을 푼 후  PDFlib-6.0.1p1-Windows\bind\java 폴더로 이동 합니다.
 
그곳에 보면 pdflib.jar 파일이 있는데 이 파일을 톰캣 홈 아래 common/lib에 복사 합니다.
 
3.     마찬가지로 PDFlib-6.0.1p1-Windows\bind\java 아래의 pdf_java.dll 파일을 windows 폴더아래의system32 폴더에 복사 합니다.
 
4.     서블릿 파일을 만들어 명령프롬프트에서 컴파일 해야 하므로 톰캣 홈 아래 common/lib/servler.jar 파일을 환경변수의 클래스패스에 추가 합니다.(톰캣5 이상이면 common/lib/servlet-api.jar 파일 임)
 
5.     이제 서블릿 파일을 아래 처럼 작성 합니다. 톰캣홈/webapps/ROOT/WEB-INF/classes 에 만듭니다.
 
/**
PDF.java
**/
 
/* $Id: helloServlet.java,v 1.11 :namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />2004/05/17 12:47:19 rp Exp $
 *
 * PDFlib client: hello servlet example in Java
 */
 
import java.io.*;
import javax.servlet.*;
 
import com.pdflib.pdflib;
import com.pdflib.PDFlibException;
 
public class PDF extends GenericServlet
{
    public void service(ServletRequest request, ServletResponse response)
    {
       int font;
       pdflib p = null;
       byte[] buf;
       ServletOutputStream out;
 
       try{
           p = new pdflib();
           // Generate a PDF in memory; insert a file name to create PDF on disk
           if (p.begin_document("d:/test.pdf", "") == -1) {
                     throw new Exception("Error: " + p.get_errmsg());
           }
 
           p.set_info("Creator", "helloServlet.java");
           p.set_info("Author", "Thomas Merz");
           p.set_info("Title", "Hello world (Java/Servlet)!");
 
           p.begin_page_ext(595, 842, "");           
 
           font = p.load_font("Helvetica-Bold", "unicode", "");
 
           p.setfont(font, 18);
 
           p.set_text_pos(50, 700);
           p.show("Hello world!");
           p.continue_text("(says Java/Servlet)");
           p.end_page_ext("");                             
 
           p.end_document("");                           
 
           buf = p.get_buffer();
 
           response.setContentType("application/pdf");
           response.setContentLength(buf.length);
 
           out = response.getOutputStream();
           out.write(buf);
           out.close();
        } catch (PDFlibException e) {
            System.err.print("PDFlib exception occurred in hello sample:\n");
            System.err.print("[" + e.get_errnum() + "] " + e.get_apiname() +
                            ": " + e.get_errmsg() + "\n");
        } catch (Exception e) {
            System.err.println(e.getMessage());
        } finally {
            if (p != null) {
                p.delete();                   
            }
        }
    }
}
 
6.     서블릿을 컴파일 하신 후 실행 하기 위해 서블릿 등록 및 매핑을 합니다. 톰캣홈/webapps/ROOT/WEB-INF/web.xml 파일에 다음을 추가 합니다. (<web-app> 와 </web-app> 사이에 넣습니다.)
 
<servlet>
        <servlet-name>PDF</servlet-name>
        <servlet-class>PDF</servlet-class>
    </servlet>
 
    <servlet-mapping>
        <servlet-name>PDF</servlet-name>
        <url-pattern>/servlet/PDF</url-pattern>
    </servlet-mapping>
 
7.     톰캣을 Shutdown 후 다시 Start 하시구요,,, 브라우저에서 http://localhost/servlet/PDF 라고 하신 후 화면에 오류가 없는 것을 확인 후 d:\ 에 가시면 test.pdf가 있을 겁니다.
 
열어 보시면 환하게 웃고 있는 “Hello World”를 보실 수가 있을 겁니다. ㅎㅎ
 
성공 하시기를 바라구요,
 
감사합니다.
 
참고로 JSP 예제는 아래를 참고 하세요~
 
<%@ page language="java" contentType="text/html; charset=euc-kr" %>
<%@ page import="java.io.*, javax.servlet.*, com.pdflib.* " %>
 
<%
    int font;
    pdflib p = null;
    byte[] buf;
    ServletOutputStream output;
 
 
       try {
                     p = new pdflib();
 
                     // Generate a PDF in memory; insert a file name to create PDF on disk
                     if (p.begin_document("d:/test.pdf", "") == -1) {
                                  System.err.println("Error: " + p.get_errmsg());
                                  System.exit(1);
                     }
 
                     p.set_info("Creator", "hello.jsp");
                     p.set_info("Author", "JCLEE");
                     p.set_info("Title", "PDF Demo JSP!");
 
                     p.begin_page(595, 842);               
 
                     font = p.load_font("Helvetica-Bold", "unicode", "");
 
                     p.setfont(font, 18);
 
                     p.set_text_pos(50, 700);
                     p.show("Hello world!");
                     p.continue_text("(says Java/JSP)");
                     p.end_page();                             
 
                     p.close();                                                 
 
                     buf = p.get_buffer();
 
                     response.setContentType("application/pdf");  //--> 요기가 키 포인틉니다.
                     response.setContentLength(buf.length);
 
                     output = response.getOutputStream();
                     output.write(buf);
                     output.close();
 
       }
       catch (PDFlibException e) {
                     System.err.println("PDFlib exception occurred in hello sample:\n");
                     System.err.println("[" + e.get_errnum() + "] " + e.get_apiname() +
                                                                          ": " + e.get_errmsg() + "\n");
       } catch (Exception e) {
                     System.err.println(e.getMessage());
       } finally {
                     if (p != null) {
                                  p.delete();                     
                     }
       }
%>


http://java-source.net/open-source/pdf-libraries
http://neosm.tistory.com/13
http://api.itextpdf.com/itext/com/itext ··· der.html
https://pdfbox.apache.org/

http://www.planet-source-code.com/vb/sc ··· gwid%3D1
이올린에 북마크하기
TAG java, pdf, Servlet, tomcat
No received trackback. / No comment.

Trackback Address :: http://viper150.cafe24.com/trackback/259

You can also say.

jsp UTF-8관련 개발

웹 프로그래밍
2013/05/27 10:19
 

OKJSP( http://www.okjsp.pe.kr/seq/72792 )

1. 모든 문서는 UTF-8 인코딩으로 저장되어야 합니다.

에디트 플러스의 경우 도구 -> 기본설정 -> 파일 부분에서 새 파일 형식을

UTF-8 로 해놓음으로써 새파일 작성시 UTF-8을 기본으로 작성할수 있고,

이미 다른 인코딩 타입에서 작성된 문서인 경우 내용을 모조리 Ctrl+C로 복사후

문서 -> 인코딩 변경 로드에서 UTF-8로 변경후 다시 붙여넣기 하면 됩니다.


이클립스의 경우 Package Explorer 에서 프로젝트에서 우측 버튼을 누른 후

Properties->Info->Text file encoding->Other 을 UTF-8 로 잡아주면 됩니다.

( 기존 다른 인코딩 타입에서 작성된 문서 내부 한글은 모조리 깨지게 됨 )


2. jsp 파일 상단에는 다음과 같은 방식으로 UTF-8 설정합니다.

<%@ page contentType = "text/html;charset=utf-8" %>


3. 서블릿은 다음과 같은 방식으로 UTF-8을 설정합니다.

request.setCharacterEncoding("utf-8")


4. 자바스크립트에서 encodeURIComponent 처리 및 톰캣 server.xml 의 설정 변경

위 1,2,3번의 방식으로 하면 post 방식의 데이터는 잘 받지만

get 방식의 데이터는 한글이 깨집니다.

이와 같은 경우 자바스크립트의 encodeURIComponent 함수와

server.xml 을 이용하여 처리하면 됩니다.


4.1 server.xml

톰캣 폴더의 conf 폴더에는 server.xml 파일이 존재합니다.

에디터로 열어보면


예)

    <Connector port="8080" maxHttpHeaderSize="8192"
               maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
               enableLookups="false" redirectPort="8443" acceptCount="100"
               connectionTimeout="20000" disableUploadTimeout="true" />


값이 약간 틀릴수 있지만 초기 셋팅 값이 보통 저러하고,

Connector 은 초기에 2개가 있는데 8080 포트 부분을 수정하면 됩니다.

수정하는 방법은

URIEncoding="UTF-8" 을 추가하면 됩니다.


예)

    <Connector port="8080" maxHttpHeaderSize="8192"
               maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
               enableLookups="false" redirectPort="8443" acceptCount="100"
               connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="utf-8" />


위와 같이 했다고 해결되는 것은 아닙니다. get 방식으로 데이터를 전송하면

자바 파일에서 확인 했을 경우 물음표 값만 넘어옵니다.


get 방식으로 보낼 경우 자바스크립트로 변환을 해줍니다.

예를 들어 "한글"을 자바스크립트에서

<SCRIPT>alert( encodeURIComponent("한글") )</SCRIPT>

처럼 encodeURIComponent 함수로 변환하게 되면 %ED%95%9C%EA%B8%80 으로

변환됩니다. 이 값을 주소에 "한글" 대신에 넣게 되면 자바에서 알아서 잘~ 받습니다 ^^

[출처] [본문스크랩] [스크랩][인코딩] UTF-8관련 개발|작성자 일리




utf-8 인코딩을 이용한 한글 url 처리
[ 조회수: 393 ]
 

개요

  • utf-8 은 유니코드를 위한 가변길이 문자 인코딩 방식중 하나로 켄 톰프슨과 롭 파이크가 만들었다.
  • 유니코드 한문자를 표시하기 위해 1byte~4byte 까지 가변적으로 표현한다.
  • U+0000부터 U+007F 범위에 있는 아스키 문자들은 UTF-8에서 1바이트만으로 표시된다. 4바이트로 표현되는 문자는 모두 기본 다중언어 평면(BMP) 바깥의 유니코드 문자이며, 거의 사용되지 않는다.

구조

  • U+007F(0~127) 까지의 문자는 7비트 아스키 문자와 동일하게 표시된다.
  • U+007F 이후의 문자는 4byte 까지의 비트 패턴으로 표시되며 7비트 아스키 문자와 혼동되지 않게 하기 위해 모든 바이트의 최상위 비트는 1 이다.
코드 범위UTF-16BE 표현UTF-8 표현설명
000000 ~00007F00000000 0xxxxxxx0xxxxxxx아스키와 동일한 범위
000080 ~0007FF00000xxx xxxxxxxx110xxxxx 10xxxxxx첫바이트는 110 으로 시작하고, 나머지 바이트는 10으로 시작함
000800 ~00FFFFxxxxxxxx xxxxxxxx1110xxxx 10xxxxxx 10xxxxxx첫바이트는 1110으로 시작하고 , 나머지는 10으로 시작함
010000 ~10FFFF110110yy yyxxxxxx 110111xx xxxxxxxx11110zzz 10zzxxxx 10xxxxxx 10xxxxxxUTF-16 "surrogate pair" 영역(yyyy=zzzzz -1)


utf-8 인코딩 예제

'위'(한글) --> U+C7404(유니코드)
U+0800부터 U+FFFF 사이의 영역에 있으므로, 표에 따라 1110xxxx 10xxxxxx 10xxxxxx 형식으로 인코딩
C704(16진수) --> 1100-0111-0000-0100(2진수) --> 11101100 10011100 10000100(utf-8 인코딩)
결과적으로 이 문자는 3바이트로 인코딩 되면 16진수로 표기하면 EC 9C 84가 된다.

(첫 128 문자는 1바이트로 표시되고, 그 다음 1920 문자 (판독 기호가 붙은 라틴 문자, 그리스 문자, 키릴 문자, 콥트 문자, 아르메니아 문자, 
히브리 문자, 아랍 문자)는 2바이트로 표시되며, 나머지 문자들 중 BMP 안에 들어 있는 것은 3바이트, 아닌 것은 4바이트로 표시된다.)

관련자료

  • ksc5601 문자셋 
  • cp949변환테이블 

utf-8 체크

    1. 입력된 문자열이 utf-8로 인코딩 되었는지 하기 위해서는 utf-8 의 인코딩 패턴을 조사한다. 즉 바이트 배열의 패턴이 utf-8 인코딩 패턴(1110xxxx 10xxxxxx 10xxxxxx)과 맞는지를 비교한다.
    2. 000080 ~0007FF 범위의 110xxxxx 10xxxxxx 패턴 일 경우엔 중복되는 코드값으로 인해 utf-8 인코딩인지 아닌지 체크하는것은 사실상 불가능하다.
      110xxxxx 10xxxxxx 패턴의 utf-8 판독

      110xxxxx 10xxxxxx 패턴의 코드일 경우 utf-8로 인코딩 되었는지 아닌지를 확인하는것은 사실상 불가능하다. 
      하지만 utf-8로 인코딩 되면 아스키 영역은 1byte 한글은 3byte 내지는 4byte를 사용하므로 단순하게 생각하여 2 바이트 110xxxxx 10xxxxxx 패턴의 경우는 utf-8 인코딩이 아님을 유추할수 있다. 
      판독 기호가 붙은 라틴 문자, 그리스 문자, 키릴 문자, 콥트 문자, 아르메니아 문자, 히브리 문자, 아랍 문자 등이 입력되면 판독 오류가 발생하겠지만 이는 무시해도 좋을듯 하다.

    3. Null 값의 경우 자바에서는 변형된 utf-8 인코딩 방식에 따라 1byte가 아닌 2byte(11000000 10000000)로 표기하므로 110xxxxx 10xxxxxx 의 경우 null 인지 비교해야 정확한 판독이 가능하지만 입력된 값의 인코딩여부를 판독하므로 상황에 따라서는 무시해도 괜찮을듯 하다.
    4. CJK 2바이트+한글 2바이트 가 '1110xxxx 10xxxxxx 10xxxxxx 0xxxxxxx' 와 같은 패턴으로 utf-8 3바이트 와 아스키1바이트 조합과 유사할 경우 앞자리 3바이트를 유니코드 형태로 역치환 해서 000800 ~00FFFF 범위가 맞는지 체크한다.

utf-8 인코딩 체크 예제

utf-8 인코딩 판독 예제

1. '위'.getBytes("ISO-8859-1") : -20 , -100, -124
2. unsigned byte = 236, 156, 132
3. 16진수 : EC , 9C, 84
4. 2진수 : 11101100 10011100 10000100
5. urf-8 패턴제거: 00001100 00011100 00000100 
6. 유니코드 타입으로 치환 : 00001100<<12 + 0011100<<6 + 00000100 = 11000000 00000100 
7. 16진수 : 000800 <= 00E704 =< 00FFFF

package util;

import java.io.UnsupportedEncodingException;

/** 
 *  <pre>
 *  작성자 : 이종희 (qola@naver.com)
 *  JAlbum.com (http://jalbum.net/download.jsp?ref=list) 소스 참고함.   
 *  <b>특정 문자열이 utf-8 인코딩인지 아닌지 체크한다.</b>
 * 
 *  utf-8 인코딩 패턴인  110xxxxx 10xxxxxx , 1110xxxx 10xxxxxx 10xxxxxx 인지 비교한다.
 *  2바이트 (110xxxxx 10xxxxxx) 패턴의 유니 코드 중복으로 인해 100% 검증할수 없지만 
 *  한글의 경우 3byte 로 표기 되므로  2바이트 패턴일 경우 utf-8 인코딩이 아닌것으로 간주한다.
 *  
 *  따라서 000080 ~0007FF 영역의 라틴 문자, 그리스 문자, 키릴 문자, 콥트 문자, 
 *  아르메니아 문자, 히브리 문자, 아랍 문자 등은 utf-8 인코딩을 비교할수 없다. 
 *  
 *  수정된 utf-8의 의한 null값 \u0000 은 11000000 10000000 로 표기되지만 무시하기로 한다.
 *  
 *  </pre>
 */

public class UTFUtil {
	   
	
	public static boolean isUTF8(String str) throws Exception{
		byte[] bytes=str.getBytes("ISO-8859-1");
		return isUTF8(bytes,0,bytes.length);
	}
	   
	public static boolean isUTF8(byte[] buf, int offset, int length) {

	       boolean yesItIs = false;
	       for (int i=offset; i<offset+length; i++) {
	          if ((buf[i] & 0xC0) == 0xC0) { // 11xxxxxx 패턴 인지 체크 
	             int nBytes;
	             for (nBytes=2; nBytes<8; nBytes++) {
	                int mask = 1 << (7-nBytes);
	                if ((buf[i] & mask) == 0) break;
	             }
	            
                      //CJK영역이나 아스키 영역의 경우 110xxxxx 10xxxxxx 패턴으로 올수 없다.
	             if(nBytes==2) return false;
	             
	             // Check that the following bytes begin with 0b10xxxxxx
	             for (int j=1; j<nBytes; j++) {
	                if (i+j >= length || (buf[i+j] & 0xC0) != 0x80) return false;
	             }
                
                if(nBytes==3){
                	// 유니코드 형태로 역치환 해서 0x0800 ~ 0xFFFF 사이의 영역인지 체크한다. 
                    char c = (char) (((buf[i] & 0x0f) << 12) + ((buf[i+1] & 0x3F) << 6) + (buf[i+2] & 0x3F));
                    if(!(c >= 0x0800 && c <= 0xFFFF)){
                        return false;
                    }	                	
                }
	                
	             yesItIs = true;
	          }
	       }
	       return yesItIs;
	 }
	    
}


 



한글 URL 사용시 문제 발생 케이스

  • IE에는 유니코드 지원을 위해 기본적으로 URL을 UTF-8 로 전송해 주지만 옵션 사항이므로 사용자 마다 환경이 다를수 있다.
  • utf-8로 다시 보내는 기능을 제공하지 않는 브라우저도 존재한다.
  • RSS 리더와 같은 별도의 클라이언트를 사용할경우 서버인코딩, 클라이언트, 브라우저 인코딩 이 모두 일치하여야만 한다.

해결책

  • REQUEST 요청시 URL이 UTF-8 인코딩 방식인지 아닌지를 체크하여 UTF-8 방식이면 "ISO-8859-1 --> UTF-8" 형태로 인코딩 변환을 해주고 그렇지 않으면 "ISO-8859-1 --> MS949" 로 인코딩 변환을 시켜준다.

구현 예제

  • APACHE MOD_REWRITE
    • 아래 예와 같이 MOD_REWRITE를 이용해 특정 패턴의 URL을 REWRITE 시킨다.
      RewriteEngine   on
          # // http://tag.naver.com/tag2/한글 --> http://tag.naver.com/tag/index.jsp?tag=한글
          RewriteRule ^/tag2/(.+)$  /tag/index.jsp?tag=$1 [PT]
  • JSP 샘플
    • isUTF8() 체크 메소드를 이용해 파라메터의 인코딩을 각각 처리해준다.
      <%@page language="java" contentType="text/html;charset=utf-8"%>
      <%@page import="java.net.URLEncoder, util.*" %>
      
      <html>
      <head>
      	<meta http-equiv="Content-type" content="text/html; charset=utf-8">
      </head>
      
      <body>
        index.jsp... <br>
        
        <%
          String uri=request.getRequestURL().toString();
        	String tag=request.getParameter("tag");
        	byte[] tagBytes=tag.getBytes("ISO-8859-1");
        	
        	out.println("byte[]===");
        		for(int i=0;i<tagBytes.length;i++){
        			out.println(tagBytes[i]+",");
        		}
        	out.println("<br>");  
        	
        	boolean isUTF8=UTFUtil.isUTF8(tag);
        	
        	if(isUTF8) {
        		out.println(util.Enco.toUtf(tag));
        		out.println("<br>");
        		out.println(isUTF8);
        		
        	}else{ 
        		out.println(new String(tag.getBytes("ISO-8859-1"),"ms949"));
        		out.println("<br>");
        		out.println(isUTF8);
        	}
        %>
        
        <a href="http://tag_test.com/tag2/한글">http://tag_test.com/tag2/한글</a><br>
        <a href="http://tag_test.com/tag2/코리아">http://tag_test.com/tag2/코리아</a><br>
        <a href="http://tag_test.com/tag2/위">http://tag_test.com/tag2/위</a>
      </body>
      </html>

      [출처] [본문스크랩] [스크랩][인코딩] UTF-8관련 개발|작성자 일리


이올린에 북마크하기
TAG JSP, tomcat, UTF-8
No received trackback. / No comment.

Trackback Address :: http://viper150.cafe24.com/trackback/224

You can also say.

Tomcat 폴더 구조

웹 프로그래밍
2013/05/27 10:17
 
이올린에 북마크하기
TAG context.xml, lib, tomcat, web.xml, 디렉토리구조, 톰캣
Trackback 8 / No comment.

Trackback Address :: http://viper150.cafe24.com/trackback/223

You can also say.

Prev 1 Next
블로그 이미지
이것저것 불펌금지도 퍼다가 담습니다. 외부에 비공개된 페이지 입니다. By. 어른왕자

카테고리

  • 전체 (298)
    • 사는 이야기 (115)
    • 웹 프로그래밍 (102)
    • App 프로그래밍 (22)
    • IT 뉴스&기타 (22)
    • 박한별 (4)
    • 역사&기타지식 (9)

태그목록

  • 개통이력
  • 황금레시피
  • 조선왕조실록
  • 탕평책
  • 아이유착각
  • 서비스
  • 공권력
  • javascript
  • TV 보기
  • vga성능
  • I Got A Boy
  • DataMatrix
  • 휴대폰
  • 오지호
  • 달걀찜
  • 국가통계포털
  • 수원성
  • Image Buttron
  • Menu
  • 탬버린
  • 성향
  • 이중성향
  • java.util.Map
  • 공무원
  • 얻은것
  • java.util.List
  • ftp
  • 아이유
  • IIS
  • 팝

최근에 올라온 글

  • 보험사의 조정신청 대응방법.
  • 어느 천재의 앞선 시선.
  • [병맛더빙] 누구게..... (1)
  • 韓경제 `회색 코뿔소` 상황...
  • SVN Connector 설치 URL.
  • 군대를 가지 않는 서울대생.
  • “운은 하늘의 귀여움 받는...
  • 목장에서 알바하다가 캐스...
  • [펌]믿고 거르는 관상.
  • 하루에 1세트씩 하면 좋다...

최근에 달린 댓글

  • <p align="center"><a href="h... 미구구나 01/19
  • <p align="center"><a href="h... 미구구나 01/19
  • <p align="center"><a href="h... 미구구나 01/17
  • <p align="center"><a href="h... 미구구나 01/17
  • <p><img src="https://i.imgur... 덤프 01/13

최근에 받은 트랙백

  • công ty may đồng phục. công ty may đồng phục 01/08
  • Israelnightclub`s recent blo... Israelnightclub`s recent blo.. 01/06
  • Suggested Browsing. Suggested Browsing 01/06
  • similar site. similar site 01/06
  • לאתר הבית שלנו. לאתר הבית שלנו 01/06

글 보관함

  • 2019/03 (1)
  • 2018/12 (1)
  • 2018/09 (1)
  • 2018/08 (1)
  • 2018/02 (1)

달력

«   2021/01   »
일 월 화 수 목 금 토
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31            

링크

  • Total : 261872
  • Today : 36
  • Yesterday : 47
Tattertools
Eolin
rss

어른왕자's blog is powered byTattertools1.1.2.2 : Animato