<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
	<channel>
		<title>허니몬의 자바guru</title>
		<link>http://java.ihoney.pe.kr/</link>
		<description>자바와 관련된 것들에 대해서 정리하고 알리는 블로그로 만들어보고자 합니다. ^^ 많은 응원 부탁 합니다!!</description>
		<language>ko</language>
		<pubDate>Wed, 16 May 2012 00:04:15 +0900</pubDate>
		<generator>Tistory 1.1 (http://www.tistory.com/)</generator>
		<managingEditor>허니몬</managingEditor>
		<image>
			<title>허니몬의 자바guru</title>
			<url>http://cfile4.uf.tistory.com/image/203BA90F4A01705B557440</url>
			<link>http://java.ihoney.pe.kr</link>
			<description>자바와 관련된 것들에 대해서 정리하고 알리는 블로그로 만들어보고자 합니다. ^^ 많은 응원 부탁 합니다!!</description>
		</image>
		<item>
			<title>Javascript, Date, 이번달의 첫날과 마지막날 알아내기</title>
			<link>http://java.ihoney.pe.kr/213</link>
			<description>&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;table style=&quot;WIDTH: 100%; BORDER-COLLAPSE: collapse; HEIGHT: 31px&quot; bgcolor=&quot;#ffffff&quot; cellpadding=&quot;1&quot; cellspacing=&quot;1&quot;&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td style=&quot;BORDER-BOTTOM: rgb(48,88,210) 1px solid; BORDER-LEFT: rgb(48,88,210) 0px solid; BORDER-TOP: rgb(48,88,210) 0px solid; BORDER-RIGHT: rgb(48,88,210) 0px solid&quot; width=&quot;1%&quot; bgcolor=&quot;#3058d2&quot;&gt;&lt;span style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;span style=&quot;FONT-FAMILY: Gulim&quot;&gt;&lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;BORDER-BOTTOM: rgb(48,88,210) 1px solid; BORDER-LEFT: rgb(48,88,210) 0px solid; BORDER-TOP: rgb(48,88,210) 0px solid; BORDER-RIGHT: rgb(48,88,210) 0px solid&quot; width=&quot;99%&quot;&gt;&lt;p&gt;&lt;span style=&quot;COLOR: rgb(48,88,210); FONT-SIZE: 10pt&quot;&gt;&lt;span style=&quot;FONT-FAMILY: Gulim&quot;&gt;&lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;&amp;nbsp;이번달의 첫날과 마지막날 알아내기&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;font color=&quot;#c8056a&quot;&gt;&lt;strong&gt;&lt;span style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;span style=&quot;FONT-FAMILY: Gulim&quot;&gt;&lt;span style=&quot;COLOR: rgb(48,88,210)&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td style=&quot;BORDER-BOTTOM: rgb(255,70,197) 1px solid; BORDER-LEFT: rgb(48,88,210) 0px solid; BORDER-TOP: rgb(48,88,210) 0px solid; BORDER-RIGHT: rgb(48,88,210) 0px solid&quot; width=&quot;100%&quot;&gt;&lt;span style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;span style=&quot;FONT-FAMILY: Gulim&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;5월의 시작하는 날과 마지막날을 알아내는 것을 가정해본다.&lt;br /&gt;
&lt;font face=&quot;굴림&quot;&gt;&lt;span style=&quot;FONT-SIZE: 9pt&quot;&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;/div&gt;&lt;p&gt;
var startDayOfMay = new Date(2012, 4, 1);&lt;/p&gt;&lt;p&gt;var endDayOfMay = new Date(2012, 5, 0);&lt;/p&gt;&lt;p&gt;console.log(&quot;startDayOfMonth : &quot; + startDayOfMay + &quot;, endDayOfMonth : &quot; + endDayOfMay);&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&amp;gt;&amp;gt; 결과&lt;/p&gt;&lt;p&gt;&amp;nbsp;startDayOfMonth : Tue May 01 2012 00:00:00 GMT+0900 (KST), endDayOfMonth : Thu May 31 2012 00:00:00 GMT+0900 (KST)&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div&gt;&lt;table style=&quot;WIDTH: 100%; BORDER-COLLAPSE: collapse; HEIGHT: 31px&quot; bgcolor=&quot;#ffffff&quot; cellpadding=&quot;1&quot; cellspacing=&quot;1&quot;&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td style=&quot;BORDER-BOTTOM: rgb(48,88,210) 1px solid; BORDER-LEFT: rgb(48,88,210) 0px solid; BORDER-TOP: rgb(48,88,210) 0px solid; BORDER-RIGHT: rgb(48,88,210) 0px solid&quot; width=&quot;1%&quot; bgcolor=&quot;#3058d2&quot;&gt;&lt;span style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;span style=&quot;FONT-FAMILY: Gulim&quot;&gt;&lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;BORDER-BOTTOM: rgb(48,88,210) 1px solid; BORDER-LEFT: rgb(48,88,210) 0px solid; BORDER-TOP: rgb(48,88,210) 0px solid; BORDER-RIGHT: rgb(48,88,210) 0px solid&quot; width=&quot;99%&quot;&gt;&lt;span style=&quot;COLOR: rgb(48,88,210); FONT-SIZE: 10pt&quot;&gt;&lt;span style=&quot;FONT-FAMILY: Gulim&quot;&gt;&lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;&amp;nbsp;생성한 Date 객체에서 월(Month)의 값을 꺼내면 어떤 값이 나올까?&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;font color=&quot;#c8056a&quot;&gt;&lt;strong&gt;&lt;span style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;span style=&quot;FONT-FAMILY: Gulim&quot;&gt;&lt;span style=&quot;COLOR: rgb(48,88,210)&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/font&gt;&lt;/td&gt;
&lt;td style=&quot;BORDER-BOTTOM: rgb(255,70,197) 1px solid; BORDER-LEFT: rgb(48,88,210) 0px solid; BORDER-TOP: rgb(48,88,210) 0px solid; BORDER-RIGHT: rgb(48,88,210) 0px solid&quot; width=&quot;100%&quot;&gt;&lt;span style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;span style=&quot;FONT-FAMILY: Gulim&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;font face=&quot;굴림&quot;&gt;&lt;span style=&quot;FONT-SIZE: 9pt&quot;&gt;&lt;/span&gt;&lt;/font&gt;&lt;div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: rgb(219, 232, 251); border-right-color: rgb(219, 232, 251); border-bottom-color: rgb(219, 232, 251); border-left-color: rgb(219, 232, 251); background-color: rgb(219, 232, 251); padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; &quot;&gt;&lt;p&gt;&lt;span style=&quot;color: rgb(0, 51, 153); &quot;&gt;var today = new Date();&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: rgb(0, 51, 153); &quot;&gt;console.log(&quot;Date : &quot; today + &quot;, Month : &quot; +today.getMonth());&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: rgb(0, 51, 153); &quot;&gt;&amp;gt;&amp;gt; 결과&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: rgb(0, 51, 153); &quot;&gt;Date : Tue May 15 2012 16:26:13 GMT+0900 (KST), Month : 4&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: rgb(0, 51, 153); &quot;&gt;출력된 Date 문자열은 분명 5월(May)를 나타내고 있는데, Date 객체에서 추출한 Month는 4가 나타났다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: rgb(0, 51, 153); &quot;&gt;이렇게 나타나는 이유는 자바스크립트의 Date 객체에서 월Month 가 0부터 시작하기 때문이다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: rgb(0, 51, 153); &quot;&gt;0 = 1월,&amp;nbsp;1 = 2월,&amp;nbsp;2 = 3월, ..., 10 = 11월, 11 = 12월.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;color: rgb(0, 51, 153); &quot;&gt;확인하는 방법은 간단하다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: rgb(219, 232, 251); border-right-color: rgb(219, 232, 251); border-bottom-color: rgb(219, 232, 251); border-left-color: rgb(219, 232, 251); background-color: rgb(219, 232, 251); padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; &quot;&gt;&lt;div class=&quot;logRow logRow-command&quot;&gt;&lt;span role=&quot;presentation&quot; class=&quot;objectBox objectBox-text &quot; style=&quot;color: rgb(0, 51, 153); &quot;&gt;var modifyDate = new Date(2012, 0, 1);&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;logRow logRow-command&quot;&gt;&lt;span style=&quot;color: rgb(0, 51, 153); &quot;&gt;console.log(&quot;Date : &quot;&amp;nbsp;modifyDate&amp;nbsp;+ &quot;, Month : &quot; +&amp;nbsp;modifyDate.getMonth());&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;logRow logRow-log&quot;&gt;&lt;span role=&quot;presentation&quot; class=&quot;objectBox objectBox-text &quot; style=&quot;color: rgb(0, 51, 153); &quot;&gt;&amp;gt;&amp;gt; 결과&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;logRow logRow-log&quot;&gt;&lt;span role=&quot;presentation&quot; class=&quot;objectBox objectBox-text &quot; style=&quot;color: rgb(0, 51, 153); &quot;&gt;Date : Sun Jan 01 2012 00:00:00 GMT+0900 (KST), Month : 0&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;logRow logRow-log&quot;&gt;&lt;span role=&quot;presentation&quot; class=&quot;objectBox objectBox-text &quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;logRow logRow-command&quot;&gt;&lt;span role=&quot;presentation&quot; class=&quot;objectBox objectBox-text &quot; style=&quot;color: rgb(0, 51, 153); &quot;&gt;var modifyDate = new Date(2012, 11, 1);&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;logRow logRow-command&quot;&gt;&lt;span style=&quot;color: rgb(0, 51, 153); &quot;&gt;console.log(&quot;Date : &quot;&amp;nbsp;modifyDate&amp;nbsp;+ &quot;, Month : &quot; +&amp;nbsp;modifyDate.getMonth());&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;logRow logRow-log&quot;&gt;&lt;span role=&quot;presentation&quot; class=&quot;objectBox objectBox-text &quot; style=&quot;color: rgb(0, 51, 153); &quot;&gt;&amp;gt;&amp;gt; ru&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;logRow logRow-log&quot;&gt;&lt;span role=&quot;presentation&quot; class=&quot;objectBox objectBox-text &quot; style=&quot;color: rgb(0, 51, 153); &quot;&gt;Date : Sat Dec 01 2012 00:00:00 GMT+0900 (KST), Month : 11&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div&gt;&lt;table style=&quot;WIDTH: 100%; BORDER-COLLAPSE: collapse; HEIGHT: 31px&quot; bgcolor=&quot;#ffffff&quot; cellpadding=&quot;1&quot; cellspacing=&quot;1&quot;&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td style=&quot;BORDER-BOTTOM: rgb(48,88,210) 1px solid; BORDER-LEFT: rgb(48,88,210) 0px solid; BORDER-TOP: rgb(48,88,210) 0px solid; BORDER-RIGHT: rgb(48,88,210) 0px solid&quot; width=&quot;1%&quot; bgcolor=&quot;#3058d2&quot;&gt;&lt;span style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;span style=&quot;FONT-FAMILY: Gulim&quot;&gt;&lt;span style=&quot;font-weight: bold; &quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;BORDER-BOTTOM: rgb(48,88,210) 1px solid; BORDER-LEFT: rgb(48,88,210) 0px solid; BORDER-TOP: rgb(48,88,210) 0px solid; BORDER-RIGHT: rgb(48,88,210) 0px solid&quot; width=&quot;99%&quot;&gt;&lt;p&gt;&lt;span style=&quot;COLOR: rgb(48,88,210); FONT-SIZE: 10pt&quot;&gt;&lt;span style=&quot;FONT-FAMILY: Gulim&quot;&gt;&lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;&amp;nbsp;왜 0부터 시작할까?&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;font color=&quot;#c8056a&quot;&gt;&lt;strong&gt;&lt;span style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;span style=&quot;FONT-FAMILY: Gulim&quot;&gt;&lt;span style=&quot;COLOR: rgb(48,88,210)&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td style=&quot;BORDER-BOTTOM: rgb(255,70,197) 1px solid; BORDER-LEFT: rgb(48,88,210) 0px solid; BORDER-TOP: rgb(48,88,210) 0px solid; BORDER-RIGHT: rgb(48,88,210) 0px solid&quot; width=&quot;100%&quot;&gt;&lt;span style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;span style=&quot;FONT-FAMILY: Gulim&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;font face=&quot;굴림&quot;&gt;&lt;span style=&quot;FONT-SIZE: 9pt&quot;&gt;&lt;/span&gt;&lt;/font&gt;&lt;div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;/div&gt;
참고 :&amp;nbsp;http://www.evotech.net/blog/2007/07/javascript-date-object/&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;위의 사이트로 가보면, 마지막 Date.prototype... 코드 부분에 월Month을 배열Array로 처리하는 것을 확인할 수 있는데, 컴퓨터에서 사용하는 배열의 순서Index는 0부터 시작한다는 것을 생각해보면 어느정도 유추해볼 수 있을 듯 하다. getMonth()를 하면 객체가 속한 달의 순서Index값을 내놓는 것이라 생각해볼 수 있을 것 같다.&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;entry-ccl&quot; style=&quot;clear: both; text-align: right; margin-bottom: 10px&quot;&gt;
	&lt;img id=&quot;ccl-icon-213-0&quot; class=&quot;entry-ccl-by&quot; src=&quot;http://i1.daumcdn.net/cfs.tistory/v/0/static/admin/editor/ccl_black01.png&quot; alt=&quot;저작자 표시&quot;/&gt;
	&lt;!--
	&lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
		&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-fr/2.0/kr/&quot; /&gt;
		&lt;/Work&gt;
		&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-fr/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/DerivativeWorks&quot;/&gt;
		&lt;/License&gt;
	&lt;/rdf:RDF&gt;
	--&gt;
&lt;/div&gt;
&lt;div class=&quot;another_category another_category_color_gray&quot;&gt;
&lt;h4&gt;'&lt;a href=&quot;/category/Web%28HTML,%20CSS,%20JSP,%20JavaScript%29&quot;&gt;Web(HTML, CSS, JSP, JavaScript)&lt;/a&gt;' 카테고리의 다른 글&lt;/h4&gt;
&lt;table&gt;
&lt;tr&gt;
&lt;th&gt;
&lt;a href=&quot;/213&quot; &gt;Javascript, Date, 이번달의 첫날과 마지막날 알아내기&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;span&gt;(0)&lt;/span&gt;
&lt;/th&gt;
&lt;td&gt;
2012/05/15&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th&gt;
&lt;a href=&quot;/205&quot; &gt;JSON 데이터 정렬하기&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;span&gt;(0)&lt;/span&gt;
&lt;/th&gt;
&lt;td&gt;
2012/01/26&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th&gt;
&lt;a href=&quot;/187&quot; &gt;클라이언트 측 객체 계층구조&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;span&gt;(0)&lt;/span&gt;
&lt;/th&gt;
&lt;td&gt;
2011/09/16&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th&gt;
&lt;a href=&quot;/180&quot; &gt;전화번호 검증 스크립트(숫자만 입력 가능)&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;span&gt;(0)&lt;/span&gt;
&lt;/th&gt;
&lt;td&gt;
2011/08/16&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th&gt;
&lt;a href=&quot;/151&quot; &gt;&amp;lt;article&amp;gt;  과 &amp;lt;section&amp;gt;의 차이점&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;span&gt;(0)&lt;/span&gt;
&lt;/th&gt;
&lt;td&gt;
2011/04/18&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th&gt;
&lt;a href=&quot;/62&quot; &gt;090625_학습내용 :  onkeyup 사용 + onkeypress 이벤트 사용하기&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;span&gt;(0)&lt;/span&gt;
&lt;/th&gt;
&lt;td&gt;
2009/06/25&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;</description>
			<category>Web(HTML, CSS, JSP, JavaScript)</category>
			<category>Date</category>
			<category>javascript</category>
			<category>시작일</category>
			<category>종료일</category>
			<author>허니몬</author>
			<guid>http://java.ihoney.pe.kr/213</guid>
			<comments>http://java.ihoney.pe.kr/213#entry213comment</comments>
			<pubDate>Tue, 15 May 2012 16:45:25 +0900</pubDate>
		</item>
		<item>
			<title>크롬 브라우저 파일다운로드시, '서버에서 중복 헤더를 수신했습니다.'  생길경우</title>
			<link>http://java.ihoney.pe.kr/210</link>
			<description>&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center; clear: none; float: none; &quot;&gt;&lt;span class=&quot;imageblock&quot; style=&quot;display:inline-block;width:797px;&quot;&gt;&lt;img src=&quot;http://cfile24.uf.tistory.com/image/127E88504F7E9EF42FDDA3&quot; filemime=&quot;image/jpeg&quot; filename=&quot;duplicate_header.PNG&quot; height=&quot;192&quot; width=&quot;797&quot;/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;위 현상은 IE에서는 나타나지 않는다. 크롬브라우저에서만 나타난다.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div&gt;&lt;p&gt;&lt;table style=&quot;WIDTH: 100%; BORDER-COLLAPSE: collapse; HEIGHT: 31px&quot; bgcolor=&quot;#ffffff&quot; cellpadding=&quot;1&quot; cellspacing=&quot;1&quot;&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td style=&quot;BORDER-BOTTOM: rgb(48,88,210) 1px solid; BORDER-LEFT: rgb(48,88,210) 0px solid; BORDER-TOP: rgb(48,88,210) 0px solid; BORDER-RIGHT: rgb(48,88,210) 0px solid&quot; width=&quot;1%&quot; bgcolor=&quot;#3058d2&quot;&gt;&lt;span style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;span style=&quot;FONT-FAMILY: Gulim&quot;&gt;&lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;BORDER-BOTTOM: rgb(48,88,210) 1px solid; BORDER-LEFT: rgb(48,88,210) 0px solid; BORDER-TOP: rgb(48,88,210) 0px solid; BORDER-RIGHT: rgb(48,88,210) 0px solid&quot; width=&quot;99%&quot;&gt;&lt;p&gt;&lt;span style=&quot;COLOR: rgb(48,88,210); FONT-SIZE: 10pt&quot;&gt;&lt;span style=&quot;FONT-FAMILY: Gulim&quot;&gt;&lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;&amp;nbsp;문제가 생기는 이유 :&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font color=&quot;#c8056a&quot;&gt;&lt;strong&gt;&lt;span style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;span style=&quot;FONT-FAMILY: Gulim&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td style=&quot;BORDER-BOTTOM: rgb(255,70,197) 1px solid; BORDER-LEFT: rgb(48,88,210) 0px solid; BORDER-TOP: rgb(48,88,210) 0px solid; BORDER-RIGHT: rgb(48,88,210) 0px solid&quot; width=&quot;100%&quot;&gt;&lt;span style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;span style=&quot;FONT-FAMILY: Gulim&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;응답헤더에 ContentType 이외에 파일정보를 Header에 추가하는 코드 때문에 나타는 증상이다. &amp;nbsp;Internet Explore에서는 다운로드에 대한 파일정보를 헤더에 넣어줘도 이상이 없었지만, 크롬에서는 그것을 취약점 공격을 위한 수단으로 판단한 것으로 보인다.&amp;nbsp;&lt;br /&gt;
&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;예제 코드 :&amp;nbsp;&lt;/p&gt;&lt;div&gt;&lt;pre class=&quot;brush:java&quot;&gt;&lt;p&gt;HttpServletResponse response = (HttpServletResponse) ActionContext.getContext().get(StrutsStatics.HTTP_RESPONSE);
response.setContentType(&quot;application/octet-stream; charset=utf-8&quot;);
try {
    //다운로드되는 파일의 정보를 헤더에 추가하는 코드
    response.setHeader(&quot;Content-Disposition&quot;,
            &quot;attachment; filename=&quot; + URLEncoder.encode(item.getName(), &quot;utf-8&quot;) + &quot;;&quot;);
}
catch (UnsupportedEncodingException ignored) {
    // do nothing
}
&lt;/p&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;table style=&quot;WIDTH: 100%; BORDER-COLLAPSE: collapse; HEIGHT: 31px&quot; bgcolor=&quot;#ffffff&quot; cellpadding=&quot;1&quot; cellspacing=&quot;1&quot;&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td style=&quot;BORDER-BOTTOM: rgb(48,88,210) 1px solid; BORDER-LEFT: rgb(48,88,210) 0px solid; BORDER-TOP: rgb(48,88,210) 0px solid; BORDER-RIGHT: rgb(48,88,210) 0px solid&quot; width=&quot;1%&quot; bgcolor=&quot;#3058d2&quot;&gt;&lt;span style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;span style=&quot;FONT-FAMILY: Gulim&quot;&gt;&lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;BORDER-BOTTOM: rgb(48,88,210) 1px solid; BORDER-LEFT: rgb(48,88,210) 0px solid; BORDER-TOP: rgb(48,88,210) 0px solid; BORDER-RIGHT: rgb(48,88,210) 0px solid&quot; width=&quot;99%&quot;&gt;&lt;p&gt;&lt;span style=&quot;COLOR: rgb(48,88,210); FONT-SIZE: 10pt&quot;&gt;&lt;span style=&quot;FONT-FAMILY: Gulim&quot;&gt;&lt;span style=&quot;FONT-WEIGHT: bold&quot;&gt;&amp;nbsp;해결방법 : application/x-download 를 활용&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;font color=&quot;#c8056a&quot;&gt;&lt;strong&gt;&lt;span style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;span style=&quot;FONT-FAMILY: Gulim&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;&lt;/td&gt;
&lt;td style=&quot;BORDER-BOTTOM: rgb(255,70,197) 1px solid; BORDER-LEFT: rgb(48,88,210) 0px solid; BORDER-TOP: rgb(48,88,210) 0px solid; BORDER-RIGHT: rgb(48,88,210) 0px solid&quot; width=&quot;100%&quot;&gt;&lt;span style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;span style=&quot;FONT-FAMILY: Gulim&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/p&gt;&lt;p&gt;해결 코드 :&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div&gt;&lt;pre class=&quot;brush:java&quot;&gt;&lt;p&gt;HttpServletResponse response = (HttpServletResponse) ActionContext.getContext()
        .get(StrutsStatics.HTTP_RESPONSE);
response.setContentType(&quot;application/x-download&quot;);
try {
    HttpServletRequest request = (HttpServletRequest) ActionContext.getContext()
            .get(StrutsStatics.HTTP_REQUEST);
    LOG.debug(&quot;User-Agent : &quot; + request.getHeader(&quot;User-Agent&quot;));
    if(request.getHeader(&quot;User-Agent&quot;).contains(&quot;Firefox&quot;)) {
        response.setHeader(&quot;Content-Disposition&quot;,
                &quot;attachment;filename=\&quot;&quot; + new String(item.getName().getBytes(&quot;UTF-8&quot;), &quot;ISO-8859-1&quot;) + &quot;\&quot;;&quot;);
    } else {
        response.setHeader(&quot;Content-Disposition&quot;,
                &quot;attachment;filename=\&quot;&quot; + URLEncoder.encode(item.getName(), &quot;utf-8&quot;) + &quot;\&quot;;&quot;);
    }
}
catch (UnsupportedEncodingException ignored) {
    // do nothing
}
response.setHeader(&quot;Content-Transfer-Encoding&quot;, &quot;binary&quot;);
LOG.debug(&quot;Content-Disposition : &quot; + response.getHeader(&quot;Content-Disposition&quot;));
LOG.debug(&quot;Content Type : &quot; + response.getContentType());

File file = new File(item.getPath());
FileInputStream fileIn = null;
ServletOutputStream outstream = null;
try {
    fileIn = new FileInputStream(file);
    outstream = response.getOutputStream();
    byte[] outputByte = new byte[8192];

    while (fileIn.read(outputByte, 0, 8192) != -1) {
        outstream.write(outputByte, 0, 8192);
    }
    outstream.flush();
}
catch (FileNotFoundException e) {
    LOG.error(e);
}
catch (IOException e) {
    LOG.error(e);
}
finally {
    try {
        fileIn.close();
    }
    catch (IOException e) {
    }
    try {
        outstream.close();
    }
    catch (IOException e) {
    }
}&lt;/p&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div&gt;&lt;hr style=&quot;border: black 0 none; border-top: black 1px dotted; height: 1px&quot;&gt;&lt;/div&gt;&lt;p&gt;인터넷을 뒤져봤지만, 쉼표(,)를 다른 문자로 대체하면 된다는 해결책 외에는 딱히 방법이 없었다.&lt;/p&gt;&lt;p&gt;구글을 돌아디나다가 검색해서 찾은 해결책을 기록한다. &lt;br /&gt;&lt;/p&gt;&lt;p&gt;출처 :&amp;nbsp;&lt;a href=&quot;http://stackoverflow.com/questions/2405568/java-webapp-adding-a-content-disposition-header-to-force-browsers-save-as-beh&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;http://stackoverflow.com/questions/2405568/java-webapp-adding-a-content-disposition-header-to-force-browsers-save-as-beh&lt;/a&gt;&lt;/p&gt;&lt;p&gt;익스플로러8, 크롬(18.0.1025.151), 파이어폭스(11)에서 정상 동작합니다.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class=&quot;entry-ccl&quot; style=&quot;clear: both; text-align: right; margin-bottom: 10px&quot;&gt;
	&lt;img id=&quot;ccl-icon-210-0&quot; class=&quot;entry-ccl-by&quot; src=&quot;http://i1.daumcdn.net/cfs.tistory/v/0/static/admin/editor/ccl_black01.png&quot; alt=&quot;저작자 표시&quot;/&gt;
	&lt;!--
	&lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
		&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-fr/2.0/kr/&quot; /&gt;
		&lt;/Work&gt;
		&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-fr/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/DerivativeWorks&quot;/&gt;
		&lt;/License&gt;
	&lt;/rdf:RDF&gt;
	--&gt;
&lt;/div&gt;
&lt;div class=&quot;another_category another_category_color_gray&quot;&gt;
&lt;h4&gt;'&lt;a href=&quot;/category/Servlet/JSP&quot;&gt;Servlet/JSP&lt;/a&gt;' 카테고리의 다른 글&lt;/h4&gt;
&lt;table&gt;
&lt;tr&gt;
&lt;th&gt;
&lt;a href=&quot;/210&quot; &gt;크롬 브라우저 파일다운로드시, '서버에서 중복 헤더를 수신했습니다.'  생길경우&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;span&gt;(0)&lt;/span&gt;
&lt;/th&gt;
&lt;td&gt;
2012/04/06&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th&gt;
&lt;a href=&quot;/104&quot; &gt;Form 에서 method='post'를 깜빡잊고 코딩하지 않았다면?&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;span&gt;(0)&lt;/span&gt;
&lt;/th&gt;
&lt;td&gt;
2009/12/23&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th&gt;
&lt;a href=&quot;/64&quot; &gt;JSP - JFreeChart 이용하여 차트 그래프 구현하기(JSP 페이지로만, 서블릿 No!!)&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;span&gt;(0)&lt;/span&gt;
&lt;/th&gt;
&lt;td&gt;
2009/08/01&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th&gt;
&lt;a href=&quot;/44&quot; &gt;EL과 JSTL&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;span&gt;(0)&lt;/span&gt;
&lt;/th&gt;
&lt;td&gt;
2009/06/01&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th&gt;
&lt;a href=&quot;/38&quot; &gt;09/05/22 쿠키&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;span&gt;(0)&lt;/span&gt;
&lt;/th&gt;
&lt;td&gt;
2009/05/25&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th&gt;
&lt;a href=&quot;/30&quot; &gt;09/05/19, 서블릿과 JDBC를 연결하다.&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;span&gt;(0)&lt;/span&gt;
&lt;/th&gt;
&lt;td&gt;
2009/05/19&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;</description>
			<category>Servlet/JSP</category>
			<category>Chrome</category>
			<category>Firefox</category>
			<category>ie</category>
			<category>Java</category>
			<category>servlet</category>
			<category>파일 다운로드</category>
			<category>한글처리</category>
			<author>허니몬</author>
			<guid>http://java.ihoney.pe.kr/210</guid>
			<comments>http://java.ihoney.pe.kr/210#entry210comment</comments>
			<pubDate>Fri, 06 Apr 2012 18:26:06 +0900</pubDate>
		</item>
		<item>
			<title>문자열 IP주소 목록 정렬하기</title>
			<link>http://java.ihoney.pe.kr/209</link>
			<description>&lt;p&gt;IP주소&amp;nbsp;문자열을 가지는 목록 List&amp;lt;String&amp;gt; ipList 내부에 있는 IP주소를 &amp;nbsp;정렬하는 방법&lt;/p&gt;

&lt;p&gt;사용하는 클래스&amp;nbsp;java.util.Collections(class), java.util.Comparator(Interface)&lt;/p&gt;

&lt;p&gt;정렬하는데 사용식 :&amp;nbsp;&lt;/p&gt;
&lt;div&gt;&lt;pre class=&quot;brush:java&quot;&gt;Collections.sort(ipList, new IpListSortByIp());
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;&lt;b&gt;IpListSortByIp.java&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&lt;pre class=&quot;brush:java&quot;&gt;
public class IpListSortByIp implements Comparator&amp;lt;String&amp;gt; {

        @Override
        public int compare(String o1, String o2) {
            try {
                if (InetAddress.getByName(o1).hashCode() &amp;gt; InetAddress.getByName(o2).hashCode()) {
                    return 1;
                } else if (InetAddress.getByName(o1).hashCode() &amp;lt; InetAddress.getByName(o2).hashCode()) {
                    return -1;
                }
            }
            catch (UnknownHostException e) {
                //Exception 처리
            }
            return 0;
        }
    }
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;간단히 정의를 한다면,&lt;/p&gt;

&lt;p&gt;문자열 IP주소를 java.net.InetAddress 객체로 변형하여 그 객체가 가지고 있는 HashCode를 비교하여 정렬하는 방식이다.&amp;nbsp;&lt;/p&gt;&lt;div class=&quot;entry-ccl&quot; style=&quot;clear: both; text-align: right; margin-bottom: 10px&quot;&gt;
	&lt;img id=&quot;ccl-icon-209-0&quot; class=&quot;entry-ccl-by&quot; src=&quot;http://i1.daumcdn.net/cfs.tistory/v/0/static/admin/editor/ccl_black01.png&quot; alt=&quot;저작자 표시&quot;/&gt;
	&lt;!--
	&lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
		&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-fr/2.0/kr/&quot; /&gt;
		&lt;/Work&gt;
		&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-fr/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/DerivativeWorks&quot;/&gt;
		&lt;/License&gt;
	&lt;/rdf:RDF&gt;
	--&gt;
&lt;/div&gt;
&lt;div class=&quot;another_category another_category_color_gray&quot;&gt;
&lt;h4&gt;'&lt;a href=&quot;/category/JAVA%20Language&quot;&gt;JAVA Language&lt;/a&gt;' 카테고리의 다른 글&lt;/h4&gt;
&lt;table&gt;
&lt;tr&gt;
&lt;th&gt;
&lt;a href=&quot;/209&quot; &gt;문자열 IP주소 목록 정렬하기&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;span&gt;(0)&lt;/span&gt;
&lt;/th&gt;
&lt;td&gt;
2012/03/29&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th&gt;
&lt;a href=&quot;/198&quot; &gt;[Java Object] java.lang.Class&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;span&gt;(0)&lt;/span&gt;
&lt;/th&gt;
&lt;td&gt;
2011/11/11&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th&gt;
&lt;a href=&quot;/193&quot; &gt;자바 음력날짜 얻기&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;span&gt;(0)&lt;/span&gt;
&lt;/th&gt;
&lt;td&gt;
2011/10/11&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th&gt;
&lt;a href=&quot;/178&quot; &gt;자바언어의 패키지 코딩 관례&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;span&gt;(0)&lt;/span&gt;
&lt;/th&gt;
&lt;td&gt;
2011/08/07&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th&gt;
&lt;a href=&quot;/175&quot; &gt;Java Method Chaining : '자바에서 메소드 이어서 쓰기' 랄까?&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;span&gt;(0)&lt;/span&gt;
&lt;/th&gt;
&lt;td&gt;
2011/07/17&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th&gt;
&lt;a href=&quot;/169&quot; &gt;테스트 케이스에서 Transaction 예외시키는 방법, @Trasactional, @Transactional(propagation=Propagation.NOT_SUPPORTED)&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;span&gt;(0)&lt;/span&gt;
&lt;/th&gt;
&lt;td&gt;
2011/06/23&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;</description>
			<category>JAVA Language</category>
			<category>compare</category>
			<category>ipaddress</category>
			<category>Java</category>
			<category>java.util.Collections</category>
			<category>sort</category>
			<author>허니몬</author>
			<guid>http://java.ihoney.pe.kr/209</guid>
			<comments>http://java.ihoney.pe.kr/209#entry209comment</comments>
			<pubDate>Thu, 29 Mar 2012 13:35:28 +0900</pubDate>
		</item>
		<item>
			<title>안드로이드 비인증 앱 업데이트하면 요래요래</title>
			<link>http://java.ihoney.pe.kr/208</link>
			<description>&lt;p&gt;&amp;nbsp; 인증되지 않은 애플리케이션을 실행해서 '안드로이드 마켓(최근 'play store'로 명칭 변경)'으로 이동하여 동일한 애플리케이션을 업데이트하려고 하면 위와 같은 팝업이 뜬다. 제거를 눌러서 폰에 설치되어 있는 애플리케이션을 제거하고, 설치하면 간단하게 처리가 된다.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;
&lt;/p&gt;&lt;p&gt;위와 같은 상황이 뜬 것은, 안드로이드앱 업데이트 확인절차(안드로이드 마켓 말고 서비스를 제공하는 운영서버에 등록된 앱버전을 확인)를 걸쳐서 마켓으로 이동을 했을 때 나타나는 현상이다.&lt;/p&gt;
&lt;p&gt;현재 구글마켓에서 등록된 앱버전을 확인할 수 있는 방법은 없어보인다.&lt;/p&gt;&lt;div class=&quot;another_category another_category_color_gray&quot;&gt;
&lt;h4&gt;'&lt;a href=&quot;/category/Android%20go%20andromeda&quot;&gt;Android go andromeda&lt;/a&gt;' 카테고리의 다른 글&lt;/h4&gt;
&lt;table&gt;
&lt;tr&gt;
&lt;th&gt;
&lt;a href=&quot;/208&quot; &gt;안드로이드 비인증 앱 업데이트하면 요래요래&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;span&gt;(0)&lt;/span&gt;
&lt;/th&gt;
&lt;td&gt;
2012/03/11&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th&gt;
&lt;a href=&quot;/195&quot; &gt;WebView CookieManager removeSessionCookie() : 갤럭시S 개 썩을!&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;span&gt;(0)&lt;/span&gt;
&lt;/th&gt;
&lt;td&gt;
2011/10/30&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th&gt;
&lt;a href=&quot;/190&quot; &gt;SVN으로 소스받은 안드로이드 프로젝트 인식시키기&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;span&gt;(0)&lt;/span&gt;
&lt;/th&gt;
&lt;td&gt;
2011/09/26&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;</description>
			<category>Android go andromeda</category>
			<category>등록버전 확인</category>
			<category>비인증</category>
			<category>안드로이드</category>
			<category>앱</category>
			<author>허니몬</author>
			<guid>http://java.ihoney.pe.kr/208</guid>
			<comments>http://java.ihoney.pe.kr/208#entry208comment</comments>
			<pubDate>Sun, 11 Mar 2012 13:57:12 +0900</pubDate>
		</item>
		<item>
			<title>JSON 데이터 정렬하기</title>
			<link>http://java.ihoney.pe.kr/205</link>
			<description>&lt;p&gt;&lt;/p&gt;
JavaScript sort 참고 : &lt;a href=&quot;http://www.w3schools.com/jsref/jsref_sort.asp&quot; target=&quot;_blank&quot; title=&quot;[http://www.w3schools.com/jsref/jsref_sort.asp]로 이동합니다.&quot;&gt;http://www.w3schools.com/jsref/jsref_sort.asp&lt;/a&gt;
&lt;div&gt;
&lt;pre class=&quot;brush:javascript&quot;&gt;  
var testArray = [
    {&quot;id&quot; : 1, &quot;total&quot; : 3}, {&quot;id&quot; : 2, &quot;total&quot; : 20}, {&quot;id&quot; : 3, &quot;total&quot; : 12}, {&quot;id&quot; : 4, &quot;total&quot; : 9}, {&quot;id&quot; : 3, &quot;total&quot; : 24}
];
function custonSort(a, b) {
  if(a.total == b.total){ return 0} return  a.total &amp;gt; b.total ? 1 : -1;
}
testArray.sort(custonSort);
console.log(testArray);
&lt;/pre&gt;&lt;/div&gt;
&lt;div&gt;
&amp;lt;&amp;lt; 정렬 결과 &amp;gt;&amp;gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-family: Menlo, monospace; font-size: 11px; line-height: normal; white-space: pre-wrap; background-color: rgb(255, 255, 255); &quot;&gt;[&lt;/span&gt;&lt;span class=&quot;console-formatted-object source-code&quot; style=&quot;box-sizing: border-box; position: relative; display: inline-block; vertical-align: top; color: rgb(0, 0, 0); font-family: Menlo, monospace; font-size: 11px; white-space: pre-wrap; line-height: normal; background-color: rgb(255, 255, 255); &quot;&gt;&lt;div class=&quot;section expanded&quot; style=&quot;box-sizing: border-box; position: static; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 12px !important; &quot;&gt;
&lt;div class=&quot;header monospace&quot; style=&quot;box-sizing: border-box; padding-top: 0px; padding-right: 8px; padding-bottom: 0px; padding-left: 0px; min-height: 0px; white-space: nowrap; -webkit-background-origin: padding; -webkit-background-clip: padding; background-image: none; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; border-image: initial; border-width: initial; border-color: initial; &quot;&gt;&lt;div class=&quot;subtitle&quot; style=&quot;box-sizing: border-box; float: right; margin-left: 5px; max-width: 55%; text-overflow: ellipsis; overflow-x: hidden; overflow-y: hidden; &quot;&gt;
&lt;/div&gt;&lt;div class=&quot;title&quot; style=&quot;box-sizing: border-box; word-wrap: break-word; white-space: normal; line-height: 18px; &quot;&gt;
Object&lt;/div&gt;
&lt;/div&gt;&lt;ol class=&quot;properties properties-tree monospace&quot; tabindex=&quot;0&quot; style=&quot;box-sizing: border-box; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 6px; padding-bottom: 2px; padding-left: 16px; list-style-type: none; list-style-position: initial; list-style-image: initial; min-height: 18px; &quot;&gt;
&lt;li title=&quot;&quot; style=&quot;box-sizing: border-box; margin-left: 12px; white-space: nowrap; text-overflow: ellipsis; overflow-x: hidden; overflow-y: hidden; -webkit-user-select: text; cursor: default; &quot;&gt;&lt;span class=&quot;name&quot; style=&quot;box-sizing: border-box; color: rgb(136, 19, 145); &quot;&gt;id&lt;/span&gt;&lt;span class=&quot;separator&quot; style=&quot;box-sizing: border-box; &quot;&gt;:&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;value console-formatted-number&quot; style=&quot;box-sizing: border-box; color: rgb(28, 0, 207); &quot;&gt;1&lt;/span&gt;&lt;/li&gt;
&lt;li title=&quot;&quot; style=&quot;box-sizing: border-box; margin-left: 12px; white-space: nowrap; text-overflow: ellipsis; overflow-x: hidden; overflow-y: hidden; -webkit-user-select: text; cursor: default; &quot;&gt;&lt;span class=&quot;name&quot; style=&quot;box-sizing: border-box; color: rgb(136, 19, 145); &quot;&gt;total&lt;/span&gt;&lt;span class=&quot;separator&quot; style=&quot;box-sizing: border-box; &quot;&gt;:&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;value console-formatted-number&quot; style=&quot;box-sizing: border-box; color: rgb(28, 0, 207); &quot;&gt;3&lt;/span&gt;&lt;/li&gt;
&lt;li title=&quot;&quot; class=&quot;parent&quot; style=&quot;box-sizing: border-box; margin-left: 1px; white-space: nowrap; text-overflow: ellipsis; overflow-x: hidden; overflow-y: hidden; -webkit-user-select: text; cursor: default; &quot;&gt;&lt;span class=&quot;name dimmed&quot; style=&quot;box-sizing: border-box; color: rgb(136, 19, 145); opacity: 0.6; &quot;&gt;__proto__&lt;/span&gt;&lt;span class=&quot;separator&quot; style=&quot;box-sizing: border-box; &quot;&gt;:&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;value console-formatted-object&quot; style=&quot;box-sizing: border-box; position: relative; display: inline-block; vertical-align: top; &quot;&gt;Object&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;
&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-family: Menlo, monospace; font-size: 11px; line-height: normal; white-space: pre-wrap; background-color: rgb(255, 255, 255); &quot;&gt;, &lt;/span&gt;&lt;span class=&quot;console-formatted-object source-code&quot; style=&quot;box-sizing: border-box; position: relative; display: inline-block; vertical-align: top; color: rgb(0, 0, 0); font-family: Menlo, monospace; font-size: 11px; white-space: pre-wrap; line-height: normal; background-color: rgb(255, 255, 255); &quot;&gt;&lt;div class=&quot;section expanded&quot; style=&quot;box-sizing: border-box; position: static; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 12px !important; &quot;&gt;
&lt;div class=&quot;header monospace&quot; style=&quot;box-sizing: border-box; padding-top: 0px; padding-right: 8px; padding-bottom: 0px; padding-left: 0px; min-height: 0px; white-space: nowrap; -webkit-background-origin: padding; -webkit-background-clip: padding; background-image: none; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; border-image: initial; border-width: initial; border-color: initial; &quot;&gt;&lt;div class=&quot;subtitle&quot; style=&quot;box-sizing: border-box; float: right; margin-left: 5px; max-width: 55%; text-overflow: ellipsis; overflow-x: hidden; overflow-y: hidden; &quot;&gt;
&lt;/div&gt;&lt;div class=&quot;title&quot; style=&quot;box-sizing: border-box; word-wrap: break-word; white-space: normal; line-height: 18px; &quot;&gt;
Object&lt;/div&gt;
&lt;/div&gt;&lt;ol class=&quot;properties properties-tree monospace&quot; tabindex=&quot;0&quot; style=&quot;box-sizing: border-box; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 6px; padding-bottom: 2px; padding-left: 16px; list-style-type: none; list-style-position: initial; list-style-image: initial; min-height: 18px; &quot;&gt;
&lt;li title=&quot;&quot; style=&quot;box-sizing: border-box; margin-left: 12px; white-space: nowrap; text-overflow: ellipsis; overflow-x: hidden; overflow-y: hidden; -webkit-user-select: text; cursor: default; &quot;&gt;&lt;span class=&quot;name&quot; style=&quot;box-sizing: border-box; color: rgb(136, 19, 145); &quot;&gt;id&lt;/span&gt;&lt;span class=&quot;separator&quot; style=&quot;box-sizing: border-box; &quot;&gt;:&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;value console-formatted-number&quot; style=&quot;box-sizing: border-box; color: rgb(28, 0, 207); &quot;&gt;4&lt;/span&gt;&lt;/li&gt;
&lt;li title=&quot;&quot; style=&quot;box-sizing: border-box; margin-left: 12px; white-space: nowrap; text-overflow: ellipsis; overflow-x: hidden; overflow-y: hidden; -webkit-user-select: text; cursor: default; &quot;&gt;&lt;span class=&quot;name&quot; style=&quot;box-sizing: border-box; color: rgb(136, 19, 145); &quot;&gt;total&lt;/span&gt;&lt;span class=&quot;separator&quot; style=&quot;box-sizing: border-box; &quot;&gt;:&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;value console-formatted-number&quot; style=&quot;box-sizing: border-box; color: rgb(28, 0, 207); &quot;&gt;9&lt;/span&gt;&lt;/li&gt;
&lt;li title=&quot;&quot; class=&quot;parent&quot; style=&quot;box-sizing: border-box; margin-left: 1px; white-space: nowrap; text-overflow: ellipsis; overflow-x: hidden; overflow-y: hidden; -webkit-user-select: text; cursor: default; &quot;&gt;&lt;span class=&quot;name dimmed&quot; style=&quot;box-sizing: border-box; color: rgb(136, 19, 145); opacity: 0.6; &quot;&gt;__proto__&lt;/span&gt;&lt;span class=&quot;separator&quot; style=&quot;box-sizing: border-box; &quot;&gt;:&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;value console-formatted-object&quot; style=&quot;box-sizing: border-box; position: relative; display: inline-block; vertical-align: top; &quot;&gt;Object&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;
&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-family: Menlo, monospace; font-size: 11px; line-height: normal; white-space: pre-wrap; background-color: rgb(255, 255, 255); &quot;&gt;, &lt;/span&gt;&lt;span class=&quot;console-formatted-object source-code&quot; style=&quot;box-sizing: border-box; position: relative; display: inline-block; vertical-align: top; color: rgb(0, 0, 0); font-family: Menlo, monospace; font-size: 11px; white-space: pre-wrap; line-height: normal; background-color: rgb(255, 255, 255); &quot;&gt;&lt;div class=&quot;section expanded&quot; style=&quot;box-sizing: border-box; position: static; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 12px !important; &quot;&gt;
&lt;div class=&quot;header monospace&quot; style=&quot;box-sizing: border-box; padding-top: 0px; padding-right: 8px; padding-bottom: 0px; padding-left: 0px; min-height: 0px; white-space: nowrap; -webkit-background-origin: padding; -webkit-background-clip: padding; background-image: none; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; border-image: initial; border-width: initial; border-color: initial; &quot;&gt;&lt;div class=&quot;subtitle&quot; style=&quot;box-sizing: border-box; float: right; margin-left: 5px; max-width: 55%; text-overflow: ellipsis; overflow-x: hidden; overflow-y: hidden; &quot;&gt;
&lt;/div&gt;&lt;div class=&quot;title&quot; style=&quot;box-sizing: border-box; word-wrap: break-word; white-space: normal; line-height: 18px; &quot;&gt;
Object&lt;/div&gt;
&lt;/div&gt;&lt;ol class=&quot;properties properties-tree monospace&quot; tabindex=&quot;0&quot; style=&quot;box-sizing: border-box; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 6px; padding-bottom: 2px; padding-left: 16px; list-style-type: none; list-style-position: initial; list-style-image: initial; min-height: 18px; &quot;&gt;
&lt;li title=&quot;&quot; style=&quot;box-sizing: border-box; margin-left: 12px; white-space: nowrap; text-overflow: ellipsis; overflow-x: hidden; overflow-y: hidden; -webkit-user-select: text; cursor: default; &quot;&gt;&lt;span class=&quot;name&quot; style=&quot;box-sizing: border-box; color: rgb(136, 19, 145); &quot;&gt;id&lt;/span&gt;&lt;span class=&quot;separator&quot; style=&quot;box-sizing: border-box; &quot;&gt;:&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;value console-formatted-number&quot; style=&quot;box-sizing: border-box; color: rgb(28, 0, 207); &quot;&gt;3&lt;/span&gt;&lt;/li&gt;
&lt;li title=&quot;&quot; style=&quot;box-sizing: border-box; margin-left: 12px; white-space: nowrap; text-overflow: ellipsis; overflow-x: hidden; overflow-y: hidden; -webkit-user-select: text; cursor: default; &quot;&gt;&lt;span class=&quot;name&quot; style=&quot;box-sizing: border-box; color: rgb(136, 19, 145); &quot;&gt;total&lt;/span&gt;&lt;span class=&quot;separator&quot; style=&quot;box-sizing: border-box; &quot;&gt;:&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;value console-formatted-number&quot; style=&quot;box-sizing: border-box; color: rgb(28, 0, 207); &quot;&gt;12&lt;/span&gt;&lt;/li&gt;
&lt;li title=&quot;&quot; class=&quot;parent&quot; style=&quot;box-sizing: border-box; margin-left: 1px; white-space: nowrap; text-overflow: ellipsis; overflow-x: hidden; overflow-y: hidden; -webkit-user-select: text; cursor: default; &quot;&gt;&lt;span class=&quot;name dimmed&quot; style=&quot;box-sizing: border-box; color: rgb(136, 19, 145); opacity: 0.6; &quot;&gt;__proto__&lt;/span&gt;&lt;span class=&quot;separator&quot; style=&quot;box-sizing: border-box; &quot;&gt;:&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;value console-formatted-object&quot; style=&quot;box-sizing: border-box; position: relative; display: inline-block; vertical-align: top; &quot;&gt;Object&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;
&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-family: Menlo, monospace; font-size: 11px; line-height: normal; white-space: pre-wrap; background-color: rgb(255, 255, 255); &quot;&gt;, &lt;/span&gt;&lt;span class=&quot;console-formatted-object source-code&quot; style=&quot;box-sizing: border-box; position: relative; display: inline-block; vertical-align: top; color: rgb(0, 0, 0); font-family: Menlo, monospace; font-size: 11px; white-space: pre-wrap; line-height: normal; background-color: rgb(255, 255, 255); &quot;&gt;&lt;div class=&quot;section expanded&quot; style=&quot;box-sizing: border-box; position: static; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 12px !important; &quot;&gt;
&lt;div class=&quot;header monospace&quot; style=&quot;box-sizing: border-box; padding-top: 0px; padding-right: 8px; padding-bottom: 0px; padding-left: 0px; min-height: 0px; white-space: nowrap; -webkit-background-origin: padding; -webkit-background-clip: padding; background-image: none; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; border-image: initial; border-width: initial; border-color: initial; &quot;&gt;&lt;div class=&quot;subtitle&quot; style=&quot;box-sizing: border-box; float: right; margin-left: 5px; max-width: 55%; text-overflow: ellipsis; overflow-x: hidden; overflow-y: hidden; &quot;&gt;
&lt;/div&gt;&lt;div class=&quot;title&quot; style=&quot;box-sizing: border-box; word-wrap: break-word; white-space: normal; line-height: 18px; &quot;&gt;
Object&lt;/div&gt;
&lt;/div&gt;&lt;ol class=&quot;properties properties-tree monospace&quot; tabindex=&quot;0&quot; style=&quot;box-sizing: border-box; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 6px; padding-bottom: 2px; padding-left: 16px; list-style-type: none; list-style-position: initial; list-style-image: initial; min-height: 18px; &quot;&gt;
&lt;li title=&quot;&quot; style=&quot;box-sizing: border-box; margin-left: 12px; white-space: nowrap; text-overflow: ellipsis; overflow-x: hidden; overflow-y: hidden; -webkit-user-select: text; cursor: default; &quot;&gt;&lt;span class=&quot;name&quot; style=&quot;box-sizing: border-box; color: rgb(136, 19, 145); &quot;&gt;id&lt;/span&gt;&lt;span class=&quot;separator&quot; style=&quot;box-sizing: border-box; &quot;&gt;:&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;value console-formatted-number&quot; style=&quot;box-sizing: border-box; color: rgb(28, 0, 207); &quot;&gt;2&lt;/span&gt;&lt;/li&gt;
&lt;li title=&quot;&quot; style=&quot;box-sizing: border-box; margin-left: 12px; white-space: nowrap; text-overflow: ellipsis; overflow-x: hidden; overflow-y: hidden; -webkit-user-select: text; cursor: default; &quot;&gt;&lt;span class=&quot;name&quot; style=&quot;box-sizing: border-box; color: rgb(136, 19, 145); &quot;&gt;total&lt;/span&gt;&lt;span class=&quot;separator&quot; style=&quot;box-sizing: border-box; &quot;&gt;:&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;value console-formatted-number&quot; style=&quot;box-sizing: border-box; color: rgb(28, 0, 207); &quot;&gt;20&lt;/span&gt;&lt;/li&gt;
&lt;li title=&quot;&quot; class=&quot;parent&quot; style=&quot;box-sizing: border-box; margin-left: 1px; white-space: nowrap; text-overflow: ellipsis; overflow-x: hidden; overflow-y: hidden; -webkit-user-select: text; cursor: default; &quot;&gt;&lt;span class=&quot;name dimmed&quot; style=&quot;box-sizing: border-box; color: rgb(136, 19, 145); opacity: 0.6; &quot;&gt;__proto__&lt;/span&gt;&lt;span class=&quot;separator&quot; style=&quot;box-sizing: border-box; &quot;&gt;:&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;value console-formatted-object&quot; style=&quot;box-sizing: border-box; position: relative; display: inline-block; vertical-align: top; &quot;&gt;Object&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;
&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-family: Menlo, monospace; font-size: 11px; line-height: normal; white-space: pre-wrap; background-color: rgb(255, 255, 255); &quot;&gt;, &lt;/span&gt;&lt;span class=&quot;console-formatted-object source-code&quot; style=&quot;box-sizing: border-box; position: relative; display: inline-block; vertical-align: top; color: rgb(0, 0, 0); font-family: Menlo, monospace; font-size: 11px; white-space: pre-wrap; line-height: normal; background-color: rgb(255, 255, 255); &quot;&gt;&lt;div class=&quot;section expanded&quot; style=&quot;box-sizing: border-box; position: static; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 12px !important; &quot;&gt;
&lt;div class=&quot;header monospace&quot; style=&quot;box-sizing: border-box; padding-top: 0px; padding-right: 8px; padding-bottom: 0px; padding-left: 0px; min-height: 0px; white-space: nowrap; -webkit-background-origin: padding; -webkit-background-clip: padding; background-image: none; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; border-image: initial; border-width: initial; border-color: initial; &quot;&gt;&lt;div class=&quot;subtitle&quot; style=&quot;box-sizing: border-box; float: right; margin-left: 5px; max-width: 55%; text-overflow: ellipsis; overflow-x: hidden; overflow-y: hidden; &quot;&gt;
&lt;/div&gt;&lt;div class=&quot;title&quot; style=&quot;box-sizing: border-box; word-wrap: break-word; white-space: normal; line-height: 18px; &quot;&gt;
Object&lt;/div&gt;
&lt;/div&gt;&lt;ol class=&quot;properties properties-tree monospace&quot; tabindex=&quot;0&quot; style=&quot;box-sizing: border-box; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 6px; padding-bottom: 2px; padding-left: 16px; list-style-type: none; list-style-position: initial; list-style-image: initial; min-height: 18px; &quot;&gt;
&lt;li title=&quot;&quot; style=&quot;box-sizing: border-box; margin-left: 12px; white-space: nowrap; text-overflow: ellipsis; overflow-x: hidden; overflow-y: hidden; -webkit-user-select: text; cursor: default; &quot;&gt;&lt;span class=&quot;name&quot; style=&quot;box-sizing: border-box; color: rgb(136, 19, 145); &quot;&gt;id&lt;/span&gt;&lt;span class=&quot;separator&quot; style=&quot;box-sizing: border-box; &quot;&gt;:&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;value console-formatted-number&quot; style=&quot;box-sizing: border-box; color: rgb(28, 0, 207); &quot;&gt;3&lt;/span&gt;&lt;/li&gt;
&lt;li title=&quot;&quot; style=&quot;box-sizing: border-box; margin-left: 12px; white-space: nowrap; text-overflow: ellipsis; overflow-x: hidden; overflow-y: hidden; -webkit-user-select: text; cursor: default; &quot;&gt;&lt;span class=&quot;name&quot; style=&quot;box-sizing: border-box; color: rgb(136, 19, 145); &quot;&gt;total&lt;/span&gt;&lt;span class=&quot;separator&quot; style=&quot;box-sizing: border-box; &quot;&gt;:&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;value console-formatted-number&quot; style=&quot;box-sizing: border-box; color: rgb(28, 0, 207); &quot;&gt;24&lt;/span&gt;&lt;/li&gt;
&lt;li title=&quot;&quot; class=&quot;parent&quot; style=&quot;box-sizing: border-box; margin-left: 1px; white-space: nowrap; text-overflow: ellipsis; overflow-x: hidden; overflow-y: hidden; -webkit-user-select: text; cursor: default; &quot;&gt;&lt;span class=&quot;name dimmed&quot; style=&quot;box-sizing: border-box; color: rgb(136, 19, 145); opacity: 0.6; &quot;&gt;__proto__&lt;/span&gt;&lt;span class=&quot;separator&quot; style=&quot;box-sizing: border-box; &quot;&gt;:&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;value console-formatted-object&quot; style=&quot;box-sizing: border-box; position: relative; display: inline-block; vertical-align: top; &quot;&gt;Object&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;
&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-family: Menlo, monospace; font-size: 11px; line-height: normal; white-space: pre-wrap; background-color: rgb(255, 255, 255); &quot;&gt;]&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-family: Menlo, monospace; font-size: 11px; line-height: normal; white-space: pre-wrap; background-color: rgb(255, 255, 255); &quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
간단하게 예제를 만들어봤다.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
참고사이트 :&amp;nbsp;&lt;a href=&quot;http://stackoverflow.com/questions/881510/json-sorting-question&quot; target=&quot;_blank&quot; title=&quot;[http://stackoverflow.com/questions/881510/json-sorting-question]로 이동합니다.&quot;&gt;http://stackoverflow.com/questions/881510/json-sorting-question&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
난 전혀 다른 곳을 파고 있었던 것이다.&amp;nbsp;&lt;/div&gt;
&lt;p&gt;&lt;br /&gt;
&lt;/p&gt;&lt;div class=&quot;entry-ccl&quot; style=&quot;clear: both; text-align: right; margin-bottom: 10px&quot;&gt;
	&lt;img id=&quot;ccl-icon-205-0&quot; class=&quot;entry-ccl-by&quot; src=&quot;http://i1.daumcdn.net/cfs.tistory/v/0/static/admin/editor/ccl_black01.png&quot; alt=&quot;저작자 표시&quot;/&gt;
	&lt;!--
	&lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
		&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-fr/2.0/kr/&quot; /&gt;
		&lt;/Work&gt;
		&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-fr/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/DerivativeWorks&quot;/&gt;
		&lt;/License&gt;
	&lt;/rdf:RDF&gt;
	--&gt;
&lt;/div&gt;
&lt;div class=&quot;another_category another_category_color_gray&quot;&gt;
&lt;h4&gt;'&lt;a href=&quot;/category/Web%28HTML,%20CSS,%20JSP,%20JavaScript%29&quot;&gt;Web(HTML, CSS, JSP, JavaScript)&lt;/a&gt;' 카테고리의 다른 글&lt;/h4&gt;
&lt;table&gt;
&lt;tr&gt;
&lt;th&gt;
&lt;a href=&quot;/213&quot; &gt;Javascript, Date, 이번달의 첫날과 마지막날 알아내기&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;span&gt;(0)&lt;/span&gt;
&lt;/th&gt;
&lt;td&gt;
2012/05/15&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th&gt;
&lt;a href=&quot;/205&quot; &gt;JSON 데이터 정렬하기&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;span&gt;(0)&lt;/span&gt;
&lt;/th&gt;
&lt;td&gt;
2012/01/26&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th&gt;
&lt;a href=&quot;/187&quot; &gt;클라이언트 측 객체 계층구조&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;span&gt;(0)&lt;/span&gt;
&lt;/th&gt;
&lt;td&gt;
2011/09/16&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th&gt;
&lt;a href=&quot;/180&quot; &gt;전화번호 검증 스크립트(숫자만 입력 가능)&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;span&gt;(0)&lt;/span&gt;
&lt;/th&gt;
&lt;td&gt;
2011/08/16&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th&gt;
&lt;a href=&quot;/151&quot; &gt;&amp;lt;article&amp;gt;  과 &amp;lt;section&amp;gt;의 차이점&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;span&gt;(0)&lt;/span&gt;
&lt;/th&gt;
&lt;td&gt;
2011/04/18&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th&gt;
&lt;a href=&quot;/62&quot; &gt;090625_학습내용 :  onkeyup 사용 + onkeypress 이벤트 사용하기&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;span&gt;(0)&lt;/span&gt;
&lt;/th&gt;
&lt;td&gt;
2009/06/25&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;</description>
			<category>Web(HTML, CSS, JSP, JavaScript)</category>
			<category>javascript</category>
			<category>JSON</category>
			<category>sort</category>
			<author>허니몬</author>
			<guid>http://java.ihoney.pe.kr/205</guid>
			<comments>http://java.ihoney.pe.kr/205#entry205comment</comments>
			<pubDate>Thu, 26 Jan 2012 17:53:27 +0900</pubDate>
		</item>
		<item>
			<title>프로그래머가 되기 위해서는 운영체제에 대한 이해도 필요하다.</title>
			<link>http://java.ihoney.pe.kr/203</link>
			<description>&lt;p&gt;&lt;span style=&quot;font-size: 11pt;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;blockquote style=&quot;color: rgb(227, 22, 0);&quot;&gt;&lt;p&gt;&lt;span style=&quot;font-size: 11pt; font-weight: bold;&quot;&gt;나는 웹 애플리케이션 개발자이기 때문에 운영체제를 몰라도 된다?&lt;/span&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;/blockquote&gt;&lt;p&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: 11pt;&quot;&gt;&amp;nbsp; 모든 프로그램은 운영체제를 기반으로 하여 동작한다. 운영체제는 플랫폼이다. 최근에는 웹과 &lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: 11pt;&quot;&gt;&amp;nbsp; 운영체제에 대해서 이해를 함으로 인해서 프로그래밍을 할 때, 운영체제의 오류에 빠져드는 실수를 회피할 수 있는 가능성이 높아진다.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: 11pt;&quot;&gt;&amp;nbsp; 자바는 운영체제에서 실행시킨 JVM(Java Virtual Machine)에 의해서 바이트 코드를 실행하기 때문에 운영체제의 영향을 받지 않는다고 알려져 있다(운영체제마다 약간의 차이는 있다는 생각이 들지만, 코딩하는 중에는 윈도우, 리눅스, 유닉스 에서 큰 영향은 없었다. 통합된 빌드과정과 웹서버에 코드를 배포하고 웹서버에서 구동시키는 형태였으니 그랬겠지만…). &lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: 11pt;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: 11pt;&quot;&gt;&amp;nbsp; 프로그래머가 직접 운영서버에다가 빌드를 하게 되는 경우가 얼마나 될까? 외부에서 접근이 가능한 서버라면 통합빌드 환경을 구축해두고서 원격배포를 할 수 있으니 크게 신경쓸 것이 그리 많지가 않다(SSH, FTP 접속, 웹서버의 설치 위치 확인, 스크립트 작성… 또 뭘 신경써야 하더라?). &lt;/span&gt;&lt;span style=&quot;font-size: 11pt;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: 11pt;&quot;&gt;&amp;nbsp; 이전 프로젝트에서는 개발빌드환경을 신경쓸 필요가 없었다. 아키텍트가 개발에 필요한 웹서버 및 빌드환경을 구축해주고 알려줬기 때문에 이런 것들을 신경쓸 필요가 없었다. 로직과 기능을 개발하고 커밋하고 개발서버에서 빌드를 누르고 오류가 발생했는지 지켜보다가 정상빌드되며 개발서버에서 내가 구현한 기능이 정상동작하는지 확인하면 되었다. &lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: 11pt;&quot;&gt;&amp;nbsp; 최근 공공기관에서 수주한 작은 SI프로젝트를 하면서 직접 리눅스LINUX(Redhat 6.0 Enterprise) 서버 콘솔Console로 접근해서 톰캣 서버(Tomcat 6.0)를 설치하고 jar파일을 복사하는 등의 일을 하면서 느끼는 거지만 프로그래머는 단순히 코딩만 하는 것이 아니라 운영체제를 충분히 알고 있어야 한다는 것이다. 어디가서 '리눅스 좀 씁니다, 요즘은 유닉스(맥북의 맥OS가 Unix 기반이니까)도 좀 씁니다.' 라고 이야기 했지만, 운영서버에 집접 배포본(.war)을 설치하고 구동시키는 것은 만만치가 않았다. 그나마 운영서버들이 모두 GUI를 제공했기 때문에 내가 운영체제를 쓰던 그대로 사용할 수가 있었다. &lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: 11pt;&quot;&gt;&amp;nbsp; 리눅스 운영체제에서 애플리케이션이 설치되는 위치, 로그파일 생성 위치와 배포본의 압축해제 위치 등을 주의깊게 본 적이 없었는데, 이번 프로젝트를 하면서 깨달은 바가 좀 있다. &lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: 11pt;&quot;&gt;&amp;nbsp; 물론 나 혼자였다면 훨씬 더 많은 시간을 들여야 했겠지만 곁에서 알려주시는 멘토가 있으셨기에 훨씬 수월하게 일을 처리할 수가 있었다. 우리 회사에서 진행하는 솔루션들도 이런 과정을 직접 프로그래머가 진행해야할 상황이 될 가능성이 높으니 이런 경험은 성장을 위한 좋은 밑거름이 되지 않을까?&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: 11pt;&quot;&gt;&amp;nbsp; '프로그래머라면 자신이 사용하는 개발환경의 운영체제를 스스로 구축하고 사용하는 것을 피하지 않아야 한다.'고 생각한다. 꽤 많은 시간이 소요되는 작업이지만, JDK가 어떻게 설치되고 JDK_HOME의 위치가 어떻게 설치되는지, 경로를 설정할 때 ';'(윈도우)을 써야하는지 ':'(리눅스, 유닉스)을 써야하는지는 알아야 하지 않을까? &lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;/p&gt;&lt;div class=&quot;entry-ccl&quot; style=&quot;clear: both; text-align: right; margin-bottom: 10px&quot;&gt;
	&lt;img id=&quot;ccl-icon-203-0&quot; class=&quot;entry-ccl-by&quot; src=&quot;http://i1.daumcdn.net/cfs.tistory/v/0/static/admin/editor/ccl_black01.png&quot; alt=&quot;저작자 표시&quot;/&gt;
	&lt;!--
	&lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
		&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-fr/2.0/kr/&quot; /&gt;
		&lt;/Work&gt;
		&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-fr/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/DerivativeWorks&quot;/&gt;
		&lt;/License&gt;
	&lt;/rdf:RDF&gt;
	--&gt;
&lt;/div&gt;
&lt;div class=&quot;another_category another_category_color_gray&quot;&gt;
&lt;h4&gt;'&lt;a href=&quot;/category/Developer%27s%20History&quot;&gt;Developer's History&lt;/a&gt;' 카테고리의 다른 글&lt;/h4&gt;
&lt;table&gt;
&lt;tr&gt;
&lt;th&gt;
&lt;a href=&quot;/203&quot; &gt;프로그래머가 되기 위해서는 운영체제에 대한 이해도 필요하다.&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;span&gt;(1)&lt;/span&gt;
&lt;/th&gt;
&lt;td&gt;
2012/01/04&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th&gt;
&lt;a href=&quot;/142&quot; &gt;자바 프로젝트 의존성 라이브러리 해결 빌드 Maven을 손에 익히며&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;span&gt;(0)&lt;/span&gt;
&lt;/th&gt;
&lt;td&gt;
2011/03/29&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th&gt;
&lt;a href=&quot;/134&quot; &gt;내가 짰던 코드를 회상하며,&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;span&gt;(0)&lt;/span&gt;
&lt;/th&gt;
&lt;td&gt;
2011/03/09&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th&gt;
&lt;a href=&quot;/107&quot; &gt;100207_발표내용정리&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;span&gt;(0)&lt;/span&gt;
&lt;/th&gt;
&lt;td&gt;
2010/02/07&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th&gt;
&lt;a href=&quot;/100&quot; &gt;01-1. Android SDK 설치하기(WIndows)&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;span&gt;(0)&lt;/span&gt;
&lt;/th&gt;
&lt;td&gt;
2009/11/29&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th&gt;
&lt;a href=&quot;/94&quot; &gt;04. Application manifest&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;span&gt;(0)&lt;/span&gt;
&lt;/th&gt;
&lt;td&gt;
2009/11/10&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;</description>
			<category>Developer's History</category>
			<category>linux</category>
			<category>Unix</category>
			<category>개발환경</category>
			<category>운영체제</category>
			<category>이해</category>
			<category>프로그래머</category>
			<author>허니몬</author>
			<guid>http://java.ihoney.pe.kr/203</guid>
			<comments>http://java.ihoney.pe.kr/203#entry203comment</comments>
			<pubDate>Wed, 04 Jan 2012 10:22:05 +0900</pubDate>
		</item>
		<item>
			<title>openJpa, nonfatal user error 발생시, persistence.xml 에 Item을 추가하세요.</title>
			<link>http://java.ihoney.pe.kr/200</link>
			<description>&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;openjpa-2.1.1-r422266:1148538 &lt;b&gt;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#e31600&quot;&gt;nonfatal user error&lt;/font&gt;&lt;/b&gt;&amp;gt; &lt;b&gt;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#e31600&quot;&gt;org.apache.openjpa.persistence.ArgumentException: Attempt to cast instance&lt;/font&gt;&lt;/b&gt; &quot;...EntityItem@bbef5e8&quot; to &lt;b&gt;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#e31600&quot;&gt;PersistenceCapable failed. &amp;nbsp;Ensure that it has been enhanced.&lt;/font&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;FailedObject: ...EntityItem@bbef5e8&lt;/p&gt;
&lt;p&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;at org.apache.openjpa.kernel.BrokerImpl.assertPersistenceCapable(BrokerImpl.java:4631)&lt;/p&gt;
&lt;p&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;at org.apache.openjpa.kernel.BrokerImpl.persistInternal(BrokerImpl.java:2610)&lt;/p&gt;
&lt;p&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;at org.apache.openjpa.kernel.BrokerImpl.persist(BrokerImpl.java:2555)&lt;/p&gt;
&lt;p&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;at org.apache.openjpa.kernel.BrokerImpl.persist(BrokerImpl.java:2538)&lt;/p&gt;
&lt;p&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;at org.apache.openjpa.kernel.BrokerImpl.persist(BrokerImpl.java:2442)&lt;/p&gt;
&lt;p&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;at org.apache.openjpa.kernel.DelegatingBroker.persist(DelegatingBroker.java:1077)&lt;/p&gt;
&lt;p&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;at org.apache.openjpa.persistence.EntityManagerImpl.persist(EntityManagerImpl.java:715)&lt;/p&gt;
&lt;p&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;...&lt;/p&gt;
&lt;p&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre; &quot;&gt;	&lt;/span&gt;at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)&lt;/p&gt;
&lt;p&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)&lt;/p&gt;
&lt;p&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)&lt;/p&gt;
&lt;p&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;at java.lang.reflect.Method.invoke(Method.java:597)&lt;/p&gt;
&lt;p&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)&lt;/p&gt;
&lt;p&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)&lt;/p&gt;
&lt;p&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)&lt;/p&gt;
&lt;p&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)&lt;/p&gt;
&lt;p&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;at org.junit.runners.BlockJUnit4ClassRunner.runNotIgnored(BlockJUnit4ClassRunner.java:79)&lt;/p&gt;
&lt;p&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:71)&lt;/p&gt;
&lt;p&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:49)&lt;/p&gt;
&lt;p&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)&lt;/p&gt;
&lt;p&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)&lt;/p&gt;
&lt;p&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)&lt;/p&gt;
&lt;p&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)&lt;/p&gt;
&lt;p&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)&lt;/p&gt;
&lt;p&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)&lt;/p&gt;
&lt;p&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31)&lt;/p&gt;
&lt;p&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;at org.junit.runners.ParentRunner.run(ParentRunner.java:236)&lt;/p&gt;
&lt;p&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)&lt;/p&gt;
&lt;p&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)&lt;/p&gt;
&lt;p&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)&lt;/p&gt;
&lt;p&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)&lt;/p&gt;
&lt;p&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)&lt;/p&gt;
&lt;p&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;	&lt;/span&gt;at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;
&lt;hr style=&quot;height: 1px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-right-style: none; border-bottom-style: none; border-left-style: none; border-color: initial; border-top-width: 1px; border-top-style: dotted; border-top-color: black; border-right-color: black; border-bottom-color: black; border-left-color: black; display: block; &quot;&gt;&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;span id=&quot;tx_left_marker&quot;&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 11pt; &quot;&gt;[해결책]&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;margin-left: 4em; &quot;&gt;&lt;span style=&quot;font-size: 11pt; &quot;&gt;persistence.xml 에 Item들을 추가하세요.&lt;/span&gt;&lt;span id=&quot;tx_right_marker&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;div class=&quot;entry-ccl&quot; style=&quot;clear: both; text-align: right; margin-bottom: 10px&quot;&gt;
	&lt;img id=&quot;ccl-icon-200-0&quot; class=&quot;entry-ccl-by&quot; src=&quot;http://i1.daumcdn.net/cfs.tistory/v/0/static/admin/editor/ccl_black01.png&quot; alt=&quot;저작자 표시&quot;/&gt;
	&lt;!--
	&lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
		&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-fr/2.0/kr/&quot; /&gt;
		&lt;/Work&gt;
		&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-fr/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/DerivativeWorks&quot;/&gt;
		&lt;/License&gt;
	&lt;/rdf:RDF&gt;
	--&gt;
&lt;/div&gt;
&lt;div class=&quot;another_category another_category_color_gray&quot;&gt;
&lt;h4&gt;'&lt;a href=&quot;/category/Frameworks&quot;&gt;Frameworks&lt;/a&gt;' 카테고리의 다른 글&lt;/h4&gt;
&lt;table&gt;
&lt;tr&gt;
&lt;th&gt;
&lt;a href=&quot;/200&quot; &gt;openJpa, nonfatal user error 발생시, persistence.xml 에 Item을 추가하세요.&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;span&gt;(0)&lt;/span&gt;
&lt;/th&gt;
&lt;td&gt;
2011/11/14&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th&gt;
&lt;a href=&quot;/197&quot; &gt;'Simple' Framework를 이용하여 자바 객체를 XML로 변환하기&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;span&gt;(0)&lt;/span&gt;
&lt;/th&gt;
&lt;td&gt;
2011/11/07&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th&gt;
&lt;a href=&quot;/194&quot; &gt;Maven을 이용하여 간단하게 Struts2 프로젝트 생성하기&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;span&gt;(0)&lt;/span&gt;
&lt;/th&gt;
&lt;td&gt;
2011/10/12&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th&gt;
&lt;a href=&quot;/186&quot; &gt;config.properties 파일에서 프리마커 템플릿 엔진에서 properties 사용하기&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;span&gt;(0)&lt;/span&gt;
&lt;/th&gt;
&lt;td&gt;
2011/09/07&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th&gt;
&lt;a href=&quot;/160&quot; &gt;iBatis  가동 전 Sqlmap XML 읽기, Caused by: com.ibatis.common.beans.ProbeException:&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;span&gt;(4)&lt;/span&gt;
&lt;/th&gt;
&lt;td&gt;
2011/05/30&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th&gt;
&lt;a href=&quot;/157&quot; &gt;iBatis parameterClass&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;span&gt;(1)&lt;/span&gt;
&lt;/th&gt;
&lt;td&gt;
2011/05/21&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;</description>
			<category>Frameworks</category>
			<category>Java</category>
			<category>nonfatal user error</category>
			<category>openJPA</category>
			<category>PersistenceCapable failed</category>
			<author>허니몬</author>
			<guid>http://java.ihoney.pe.kr/200</guid>
			<comments>http://java.ihoney.pe.kr/200#entry200comment</comments>
			<pubDate>Mon, 14 Nov 2011 17:56:50 +0900</pubDate>
		</item>
		<item>
			<title>[가이드] 우분투에서 안드로이드 앱을 개발하려면?</title>
			<link>http://java.ihoney.pe.kr/199</link>
			<description>&lt;p style=&quot;background-color: transparent; &quot;&gt;&lt;span style=&quot;font-size: 11pt;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;blockquote style=&quot;background-color: transparent; &quot;&gt;&lt;p&gt;&lt;span style=&quot;font-size: 11pt;&quot;&gt;Why? 왜 우분투에서 안드로이드 앱 개발을 해야할까?&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: 11pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1. 윈도우 보다는 안드로이드 개발하기가 편하다.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: 11pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; 이유 : 윈도우에서 안드로이드폰을 테스트하기 위해서는 USB 드라이버를 제조사별로 설치해야 한다.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: 11pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; -&amp;gt; 우분투에서는 android용 rule.set만 설정해주면 된다.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: 11pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2. 무료로 사용할 수 있는 안정적인 리눅스 운영체제이다.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: 11pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3. 개발 중에 필요한 서버테스트 환경 등을 손쉽게 구축할 수 있다.&lt;/span&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;/blockquote&gt;&lt;p style=&quot;background-color: transparent; &quot;&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: 11pt;&quot;&gt;&amp;nbsp; 적어도 안드로이드 앱 개발자에게는 윈도우보다는 나은 환경을 제공한다(맥북에서 써보니까 맥북도 괜찮다. 하지만, 맥북을 사야한다. 우분투는 지금 쓰는 노트북의 운영체제를 밀고 설치하면 된다).&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: 11pt;&quot;&gt;&amp;nbsp; 우분투에서 안드로이드 앱 개발환경을 구축하기는 쉽다.&lt;/span&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: transparent; font-size: 11pt; &quot;&gt;1. JDK 설치하기&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: transparent; font-size: 11pt; &quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1.1. JDK 설치 여부 확인&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: transparent; font-size: 11pt; &quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; - honeymon$ java -version&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: transparent; font-size: 11pt; &quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; = 설치되어 있는 경우 : 2.1.로 넘어가자.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: transparent; font-size: 11pt; &quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; = 설치되어 있지 않은 경우 : 1.2.로 넘어가자.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: transparent; font-size: 11pt; &quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1.2. JDK 설치하기&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: transparent; font-size: 11pt; &quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; - JDK 중 하나를 선택하자.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: transparent; font-size: 11pt; &quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; = OpenJDK(참조하는 라이브러리에서 오류가 발생한다고 합니다. 다른 분들은 이걸 비추.)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: 11pt; &quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: transparent;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; = SunJDK(&lt;/span&gt;&lt;b&gt;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#3058d2&quot; style=&quot;background-color: rgb(194, 194, 194);&quot;&gt;많은 분들은 이걸 추천합니다.&lt;/font&gt;&lt;/b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: transparent;&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: transparent; font-size: 11pt; &quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; = IBMJDK 듣보잡!&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: transparent; font-size: 11pt; &quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; - JDK를 설치하기&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: transparent; font-size: 11pt; &quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; = sudo apt-get install sun-6-jdk&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: transparent; font-size: 11pt; &quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; = 설치 완료 확인 : java -version&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: transparent; font-size: 11pt; &quot;&gt;2. Android SDK 설치하기(ADK -&amp;gt; Android SDK로 변경)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: transparent; font-size: 11pt; &quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2.1. 구글 안드로이드 개발 사이트 : http://developer.android.com/index.html&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: transparent; font-size: 11pt; &quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; - 우분투용&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 15px; line-height: 22px; &quot;&gt;Android SDK&lt;/span&gt;&lt;span style=&quot;background-color: transparent; font-size: 11pt; &quot;&gt;를 다운로드 받는다&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: transparent; font-size: 11pt; &quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 15px; line-height: 22px; &quot;&gt;Android SDK&lt;/span&gt;&lt;span style=&quot;background-color: transparent; font-size: 11pt; &quot;&gt;&amp;nbsp;url : http://developer.android.com/sdk/index.html&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: transparent; font-size: 11pt; &quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ** i386이라고 되어있지만 아키텍쳐(32bit/64bit)는 크게 신경쓰지 않아도 된다.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: transparent; font-size: 11pt; &quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; -&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 15px; line-height: 22px; &quot;&gt;Android SDK&lt;/span&gt;&lt;span style=&quot;background-color: transparent; font-size: 11pt; &quot;&gt;를 지정한 위치에 푼다.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: transparent; font-size: 11pt; &quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; = honeymon : /home/honeymon/Dev/android-sdk 에 설치함&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: transparent; font-size: 11pt; &quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2.2.&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 15px; line-height: 22px; &quot;&gt;Android SDK&lt;/span&gt;&lt;span style=&quot;background-color: transparent; font-size: 11pt; &quot;&gt;가 설치된 경로(PATH)를 .bashrc 에서 설정해준다.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: transparent; font-size: 11pt; &quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; - 설정 이유 : adb, ddms와 같은 안드로이드를 다루는데 필요한 커맨드를 실행할 수 있도록 해주는 것이다.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: transparent; font-size: 11pt; &quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; - Tip. 윈도우에서는 1개의 경로가 끝나면 끝에 ;(세미콜론)을 붙이지만, 유닉스와 리눅스에서는 :(콜론)을 사용한다.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: transparent; font-size: 11pt; &quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; = 윈도우 사용자가 유닉스나 리눅스 환경에서 낯설어하는 부분 중 하나다. 윈도우가 유닉스를 따라한 것이다. 모든 운영체제의 시작은 유닉스였다고 보면 된다.&lt;/span&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;div style=&quot;border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(219, 232, 251); border-right-color: rgb(219, 232, 251); border-bottom-color: rgb(219, 232, 251); border-left-color: rgb(219, 232, 251); background-color: rgb(219, 232, 251); padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; &quot; class=&quot;txc-textbox&quot;&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: bold; color: rgb(25, 61, 169);&quot;&gt;&lt;span style=&quot;font-size: 11pt;&quot;&gt;설정방법 :&lt;/span&gt;&lt;/span&gt;&lt;br style=&quot;font-weight: bold; color: rgb(25, 61, 169);&quot;&gt;&lt;span style=&quot;font-weight: bold; color: rgb(25, 61, 169);&quot;&gt;&lt;span style=&quot;font-size: 11pt;&quot;&gt;
&amp;nbsp; .bashrc 제일 마지막 문장에 PATH 추가&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;/div&gt;
&lt;p style=&quot;background-color: transparent; &quot;&gt;&lt;/p&gt;
&lt;div style=&quot;background-color: transparent; &quot;&gt;
&lt;pre class=&quot;brush:bash&quot;&gt;ANDROID_PATH=/home/honeymon/Dev/android-sdk
PATH=$PATH:$ANDROID_PATH/bin
&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;p style=&quot;background-color: transparent; &quot;&gt;
&lt;span style=&quot;font-size: 11pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2.3.&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 15px; line-height: 22px; &quot;&gt;Android SDK&lt;/span&gt;&lt;span style=&quot;font-size: 11pt;&quot;&gt;&amp;nbsp;경로설정이 완료되었는지 확인한다.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: 11pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; - adb help&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: 11pt;&quot;&gt;3. Eclipse 설치하기&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: 11pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3.1. Eclipse DownLoad site : http://www.eclipse.org/downloads/&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: 11pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; - Eclipse IDE for Java Developers 가 안드로이드 앱 개발에는 더 적합해 보인다.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: 11pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; - 내가 처음에 배울 때는 Eclipse classic 을 추천받았었는데...&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: 11pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3.2. Eclipse의 압축을 푼다.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: 11pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3.3. eclipse.ini 환경을 설정한다.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: 11pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; - 개발에 적합한 것들과 설정했을 때 관련이 있는 것을 알려준다.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: 11pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3.4. eclipse를 설치한다.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: 11pt;&quot;&gt;4. ADT 플러그인 설치하기&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: 11pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; - 참고 사이트 : http://developer.android.com/sdk/eclipse-adt.html&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: 11pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4.1. eclipse adt update site 추가 : https://dl-ssl.google.com/android/eclipse/ &lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: 11pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4.2. Update 목록에 나온 플러그인을 선택하고 설치한다. 설치 완료 후 이클립스 재시작&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: 11pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4.3. android Manager에서 ADK의 위치를 설정한다.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: 11pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4.4. 개발하려고하는 android 버전의 라이브러리를 확인한다.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: 11pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; - 다운로드 속도가 느린 편이므로 마음의 여유를 가지고 임하자.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: 11pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4.5. 라이브러리 다운로드가 완료된 후 이클립스를 다시 시작한다.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: 11pt;&quot;&gt;5. ADT 설치확인&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: 11pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 5.1. Android manager를 선택한다.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: 11pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 5.2. Android Emulator를 추가한다.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: 11pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 5.3. Android Emulator를 실행한다.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: 11pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 5.4. DDMS perspective를 선택하여 화면전환 후 5.3.에서 실행한 에뮬레이터가 인식되는지 확인한다.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: 11pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 5.5. 가볍게 화면을 캡쳐해본다.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: 11pt;&quot;&gt;6. Android Project 생성하기(맛뵈기)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: 11pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 6.1. Android Project 추가&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: 11pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 6.2. 실행하기&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: 11pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; - Android Application 선택 -&amp;gt; 수행&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: 11pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 6.3. 5.3.에서 실행한 Emulator에서 실행되는지 확인하기&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: 11pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; - Emulator가 동작하는데 걸리는 시간은 실제 안드로이드가 실행되는 시간보다 오래걸린다.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: 11pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; - CPU의 성능에 따라서 그 차이가 제법 난다.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: 11pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; - Emulator보다는 넥서스, 넥서스S, 넥서스 프라임과 같은 레퍼런스폰을 개발기기로 연결해서 테스트하는 것이 좋다.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: 11pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 6.4. 실행시킨 에뮬레이터가 에뮬레이터에 보이면 정상적인 빌드 및 설치가 완료된 것이다.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: 11pt;&quot;&gt;7. 안드로이드 개발 Tip&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: 11pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 7.1. Java에 대한 공부는 꾸준하게 한다.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: 11pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 7.2. 커뮤니티 활동을 한다.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: 11pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 7.2. 로그(Log)를 잘 이용해서 동작을 체크하자.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: 11pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; - 디버그(Debug)모드를 자주 이용하면 동작을 한눈에 확인하기 어렵다.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: 11pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; - 기록(로그)을 세밀하게 남겨서 확인하는 습관을 가지자.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: 11pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 7.3. Android Reference를 꼼꼼히 읽어두자.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: 11pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; - 어느 개발서적보다 낫다.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: 11pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; - 개발서적들은 대부분 저자가 자세히 모르는 내용은 얼버무리게 된다.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: 11pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: transparent; &quot;&gt;&lt;span style=&quot;font-size: 11pt;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: transparent; &quot;&gt;&lt;/p&gt;
&lt;div style=&quot;background-color: transparent; &quot;&gt;
&lt;hr style=&quot;height: 1px; border-width: 1px 0px 0px; border-style: dotted none none; border-color: black; -moz-border-top-colors: none; -moz-border-right-colors: none; -moz-border-bottom-colors: none; -moz-border-left-colors: none; -moz-border-image: none; display: block;&quot;&gt;&lt;/div&gt;
&lt;p style=&quot;background-color: transparent; &quot;&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: transparent; &quot;&gt;&lt;span style=&quot;font-size: 11pt;&quot;&gt;P.S. 안드로이드 개발용 rule.set 설정하기&lt;/span&gt;&lt;br /&gt;
&lt;/p&gt;&lt;div class=&quot;entry-ccl&quot; style=&quot;clear: both; text-align: right; margin-bottom: 10px&quot;&gt;
	&lt;img id=&quot;ccl-icon-199-0&quot; class=&quot;entry-ccl-by&quot; src=&quot;http://i1.daumcdn.net/cfs.tistory/v/0/static/admin/editor/ccl_black01.png&quot; alt=&quot;저작자 표시&quot;/&gt;
	&lt;!--
	&lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
		&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-fr/2.0/kr/&quot; /&gt;
		&lt;/Work&gt;
		&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-fr/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/DerivativeWorks&quot;/&gt;
		&lt;/License&gt;
	&lt;/rdf:RDF&gt;
	--&gt;
&lt;/div&gt;
&lt;div class=&quot;another_category another_category_color_gray&quot;&gt;
&lt;h4&gt;'&lt;a href=&quot;/category/우분투%28Ubuntu%29%20에서%20개발하기&quot;&gt;우분투(Ubuntu) 에서 개발하기&lt;/a&gt;' 카테고리의 다른 글&lt;/h4&gt;
&lt;table&gt;
&lt;tr&gt;
&lt;th&gt;
&lt;a href=&quot;/199&quot; &gt;[가이드] 우분투에서 안드로이드 앱을 개발하려면?&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;span&gt;(2)&lt;/span&gt;
&lt;/th&gt;
&lt;td&gt;
2011/11/12&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;</description>
			<category>우분투(Ubuntu) 에서 개발하기</category>
			<category>Android</category>
			<category>eclipse</category>
			<category>Java</category>
			<category>SDK</category>
			<category>ubuntu</category>
			<category>안드로이드</category>
			<category>우분투</category>
			<category>자바</category>
			<author>허니몬</author>
			<guid>http://java.ihoney.pe.kr/199</guid>
			<comments>http://java.ihoney.pe.kr/199#entry199comment</comments>
			<pubDate>Sat, 12 Nov 2011 21:07:12 +0900</pubDate>
		</item>
		<item>
			<title>[Java Object] java.lang.Class</title>
			<link>http://java.ihoney.pe.kr/198</link>
			<description>&lt;p&gt;&lt;span style=&quot;font-size: 11pt;&quot;&gt;API 참고 URL : http://download.oracle.com/javase/6/docs/api/java/lang/Class.html&lt;/span&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;
&lt;div style=&quot;BORDER-LEFT: #000000 200px solid; PADDING-BOTTOM: 3px; BACKGROUND-COLOR: #e8e8e8; PADDING-LEFT: 6px; WIDTH: 690px; PADDING-RIGHT: 6px; FONT: bold 1pt/1 나눔고딕, Sans-serif; MARGIN-BOTTOM: 10px; HEIGHT: 1px; COLOR: #fff; PADDING-TOP: 3px&quot;&gt;
&lt;span style=&quot;FONT-SIZE: 11pt&quot;&gt;&lt;span style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;span style=&quot;FONT-SIZE: 11pt&quot;&gt;&lt;span style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;span style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;span style=&quot;FONT-FAMILY: Batang&quot;&gt;&lt;span style=&quot;FONT-SIZE: 11pt&quot;&gt;&lt;span style=&quot;FONT-SIZE: 1pt&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;LINE-HEIGHT: 1.7&quot;&gt;
&lt;span style=&quot;FONT-FAMILY: Dotum&quot;&gt;&lt;font color=&quot;#474747&quot;&gt;&lt;span style=&quot;font-size: 11pt;&quot;&gt;﻿&lt;/span&gt;&lt;/font&gt;&lt;span style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;font color=&quot;#474747&quot;&gt;&lt;span style=&quot;font-size: 11pt;&quot;&gt;﻿&lt;/span&gt;&lt;/font&gt;&lt;span style=&quot;FONT-FAMILY: Dotum&quot;&gt;&lt;font color=&quot;#474747&quot;&gt;&lt;span style=&quot;font-size: 11pt;&quot;&gt;﻿&lt;/span&gt;&lt;/font&gt;&lt;span style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;font color=&quot;#474747&quot;&gt;&lt;span style=&quot;font-size: 11pt;&quot;&gt;﻿ &lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 11pt;&quot;&gt;&amp;nbsp; Class는 JVM(Java Virtual Machine)에서 정의된 클래스로 자동 생성해준다. 자바에서 사용하는 모든 클래스에 존재하는 한다. ㅡ_-)&amp;gt; &lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-size: 11pt;&quot;&gt;처음에는 내가 원하는 기능을 만들기 위해, 내가 할 수 있는 것들을 총동원해서(총동원해도 다른 이들보다 역량이 부족하니 턱없이 완성도가 낮은) 만들려고 했었다. 하지만, 요즘 들어 꺠닫게 되는 것이지만 '내가 필요로 하는 것들은 이미 누군가에 의해 만들어져 있다' 라는 경험을 자주 접하고 있다. 인터넷 검색만 제대로 해도 내가 원하는 기능을 '내가 할 수 있는 방법'보다 훨씬 깔끔하고 간결하게 표현한 것들을 많이 찾아볼 수가 있다. &lt;/span&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;span style=&quot;font-size: 11pt;&quot;&gt;최근 진행하고 있는 프로젝트에서도 '오픈 소스'로 제공하고 있는 다양한 기능들을 활용하여 만족스런 성과를 거두고 있다(아는 만큼 보인다. '오픈소스'도 마찬찬가지다. 아는 만큼 보인다. 제대로 소스와 언어를 이해하는 사람에게는 잘 보이는 것 같다. &lt;/span&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;&lt;span style=&quot;font-size: 11pt;&quot;&gt;나는 아직 안보여!!&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 11pt;&quot;&gt;). &lt;/span&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-size: 11pt;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;&lt;span style=&quot;font-size: 11pt;&quot;&gt;'오픈소스' 라고 무턱대고 가져다 쓰다보면 나중에 고생할 수가 있다.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 11pt;&quot;&gt; 우리 수석님이 강조하고 강조하시는 부분이다.&lt;/span&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;/blockquote&gt;&lt;p&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-size: 11pt;&quot;&gt;어쨌든!&lt;/span&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-size: 11pt;&quot;&gt;'객체에 있는 필드명을 이용해서 정보를 가져올 수 있지 않을까?'&lt;/span&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-size: 11pt;&quot;&gt; 라는 기대를 하면서 인터넷 검색을 하다보니&lt;/span&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-size: 11pt;&quot;&gt;'왠걸?'&lt;/span&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-size: 11pt;&quot;&gt;이미 JDK에 기본적으로 있는 java.lang.Class 에서 필요한 부분들을 제공하고 있었다. 우선은 간단하게 어떻게 동작하는지 알아볼겸 테스트 케이스를 작성해봤다. 어떻게 정보를 가져올지 찔러본달까?&lt;/span&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;
&lt;pre class=&quot;brush:java&quot;&gt;package javastudy.clazz;

import static org.hamcrest.CoreMatchers.*;
import static org.junit.Assert.*;

import java.lang.reflect.Field;

import org.junit.Before;
import org.junit.Test;

public class ClassTest {

    private TestMakeClass makeClass;
    private String FIELD_NAME = &quot;fieldName&quot;;
    private String FIELD_ATTRIBUTE = &quot;filedAttribute&quot;;
    private String MAKE_VALUE = &quot;testMakeValue&quot;;
    private String MAKE_ATTRIBUTE = &quot;string&quot;;

    @Before
    public void setUp() {
        makeClass = new TestMakeClass();
        makeClass.setFieldName(MAKE_VALUE);
        makeClass.setFieldAttribute(MAKE_ATTRIBUTE);
    }

    /**
     * private 접근제어 선언이 되어 있는 경우,
     * field.setAccessible(true) 선언을 해주면 접근이 가능하다. 
     */
    @Test
    public void testClassGetPrivateField() {
        
        Field field = null;
        try {
            field = makeClass.getClass().getDeclaredField(FIELD_NAME);
            field.setAccessible(true);
        } catch (SecurityException e) {
            e.printStackTrace();
        } catch (NoSuchFieldException e) {
            e.printStackTrace();
        }

        String fieldNameValue = null;
        try {
            fieldNameValue = (String) field.get(makeClass);
        } catch (IllegalArgumentException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        }
        assertThat(fieldNameValue, is(makeClass.getFieldName()));
    }
    
    /**
     * private 선언된 필드 정보를 가져오려고 하면 IllegalAccessExceptino이 발생함.
     * 
     * @throws SecurityException
     * @throws NoSuchFieldException
     * @throws IllegalArgumentException
     * @throws IllegalAccessException
     */
    @Test(expected=IllegalAccessException.class)
    public void testClassGetPrivateFieldThrowsEception() throws SecurityException,
    NoSuchFieldException, IllegalArgumentException,
    IllegalAccessException {
        
        Field field = makeClass.getClass().getDeclaredField(FIELD_NAME);
        
        String fieldNameValue = (String) field.get(makeClass);
        assertThat(fieldNameValue, is(makeClass.getFieldName()));
    }
    
    @Test
    public void testClassGetPublicField() throws SecurityException,
    NoSuchFieldException, IllegalArgumentException,
    IllegalAccessException {
        
        Field field = makeClass.getClass().getDeclaredField(FIELD_ATTRIBUTE);
        
        String fieldAttribute = (String) field.get(makeClass);
        assertThat(fieldAttribute, is(makeClass.getFieldAttribute()));
    }
    
    @Test
    public void testClassGetFileds() throws IllegalArgumentException, IllegalAccessException {
        Field[] fields = makeClass.getClass().getFields();
        System.out.println(&quot;fields size is[&quot; +fields.length+ &quot;]&quot;);
        
        for(Field field : fields) {
            //public 선언되어 있는 필드 정보만 나타난다. 
            String fieldValue = (String) field.get(makeClass);
            System.out.println(fieldValue);
            
        }
    }

    public class TestMakeClass {
        private String fieldName;
        public String fieldAttribute;

        public String getFieldName() {
            return fieldName;
        }

        public void setFieldName(String fieldName) {
            this.fieldName = fieldName;
        }

        public String getFieldAttribute() {
            return fieldAttribute;
        }

        public void setFieldAttribute(String fieldAttribute) {
            this.fieldAttribute = fieldAttribute;
        }

    }
}
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;span style=&quot;font-size: 11pt;&quot;&gt;
이렇게 해서 fieldName을 이용해서 객체의 필드정보를 뽑아내고, 그 필드정보에서 원하는 정보를 가져오는 방법을 익혀봤다.&lt;/span&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-size: 11pt;&quot;&gt;객체의 필드를 다루기 위해서 숙지해둬야할 것은,&amp;nbsp; 접근하려고 하는 필드의 '접근제어'&lt;/span&gt;&lt;span style=&quot;font-size: 11pt;&quot;&gt;에 대한 선언이 어떻게 되어있는지 알고 있어야 한다는 것이다. &lt;/span&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-size: 11pt;&quot;&gt;처음에는 &lt;/span&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;span style=&quot;font-size: 11pt;&quot;&gt;&amp;nbsp; '뭐야? 이렇게 필드값을 빼낼 수 있으면 캡슐화를 할 이유가 없잖아?'&lt;/span&gt;&lt;span style=&quot;font-size: 11pt;&quot;&gt; &lt;/span&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;/blockquote&gt;&lt;p&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-size: 11pt;&quot;&gt;하고 생각했지만, 테스트 케이스를 작성하면서&lt;/span&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;span style=&quot;font-size: 11pt;&quot;&gt;&amp;nbsp; '아, 그 객체 안에 있는 필드명을 모르면 예외만 보겠구나.'&lt;/span&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;/blockquote&gt;&lt;p&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-size: 11pt;&quot;&gt;라고 생각하면서 테스트 케이스를 작성해보다가&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;span style=&quot;font-size: 11pt;&quot;&gt;&amp;nbsp; '아, 이걸 XML 등에서 정의해놓고 이 xml에서 정보를 가져와서 요렇게 해서 저렇게 할 수 있곘는데?'&lt;/span&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;/blockquote&gt;&lt;p&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-size: 11pt;&quot;&gt;라는 '내가 찾던 해결책'을 찾았다.&lt;/span&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;p style=&quot;margin-left: 4em;&quot;&gt;&lt;span style=&quot;font-size: 11pt;&quot;&gt;&amp;nbsp; 이 부분에 대해서는 나중에 공개하도록 하겠다. ^^; 오늘은 여기&lt;/span&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;div class=&quot;entry-ccl&quot; style=&quot;clear: both; text-align: right; margin-bottom: 10px&quot;&gt;
	&lt;img id=&quot;ccl-icon-198-0&quot; class=&quot;entry-ccl-by&quot; src=&quot;http://i1.daumcdn.net/cfs.tistory/v/0/static/admin/editor/ccl_black01.png&quot; alt=&quot;저작자 표시&quot;/&gt;
	&lt;!--
	&lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
		&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-fr/2.0/kr/&quot; /&gt;
		&lt;/Work&gt;
		&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-fr/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/DerivativeWorks&quot;/&gt;
		&lt;/License&gt;
	&lt;/rdf:RDF&gt;
	--&gt;
&lt;/div&gt;
&lt;div class=&quot;another_category another_category_color_gray&quot;&gt;
&lt;h4&gt;'&lt;a href=&quot;/category/JAVA%20Language&quot;&gt;JAVA Language&lt;/a&gt;' 카테고리의 다른 글&lt;/h4&gt;
&lt;table&gt;
&lt;tr&gt;
&lt;th&gt;
&lt;a href=&quot;/209&quot; &gt;문자열 IP주소 목록 정렬하기&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;span&gt;(0)&lt;/span&gt;
&lt;/th&gt;
&lt;td&gt;
2012/03/29&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th&gt;
&lt;a href=&quot;/198&quot; &gt;[Java Object] java.lang.Class&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;span&gt;(0)&lt;/span&gt;
&lt;/th&gt;
&lt;td&gt;
2011/11/11&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th&gt;
&lt;a href=&quot;/193&quot; &gt;자바 음력날짜 얻기&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;span&gt;(0)&lt;/span&gt;
&lt;/th&gt;
&lt;td&gt;
2011/10/11&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th&gt;
&lt;a href=&quot;/178&quot; &gt;자바언어의 패키지 코딩 관례&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;span&gt;(0)&lt;/span&gt;
&lt;/th&gt;
&lt;td&gt;
2011/08/07&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th&gt;
&lt;a href=&quot;/175&quot; &gt;Java Method Chaining : '자바에서 메소드 이어서 쓰기' 랄까?&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;span&gt;(0)&lt;/span&gt;
&lt;/th&gt;
&lt;td&gt;
2011/07/17&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th&gt;
&lt;a href=&quot;/169&quot; &gt;테스트 케이스에서 Transaction 예외시키는 방법, @Trasactional, @Transactional(propagation=Propagation.NOT_SUPPORTED)&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;span&gt;(0)&lt;/span&gt;
&lt;/th&gt;
&lt;td&gt;
2011/06/23&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;</description>
			<category>JAVA Language</category>
			<category>CLASS</category>
			<category>field</category>
			<category>getField</category>
			<category>Java</category>
			<author>허니몬</author>
			<guid>http://java.ihoney.pe.kr/198</guid>
			<comments>http://java.ihoney.pe.kr/198#entry198comment</comments>
			<pubDate>Fri, 11 Nov 2011 23:24:42 +0900</pubDate>
		</item>
		<item>
			<title>'Simple' Framework를 이용하여 자바 객체를 XML로 변환하기</title>
			<link>http://java.ihoney.pe.kr/197</link>
			<description>&lt;p&gt;관련 사이트 : &lt;a title=&quot;[http://simple.sourceforge.net/home.php]로 이동합니다.&quot; target=&quot;_blank&quot; href=&quot;http://simple.sourceforge.net/home.php&quot;&gt;http://simple.sourceforge.net/home.php&lt;/a&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;
자바를 위한 XML 직렬화처리 및 설정을 해주는 높은 성능의 프레임워크다.&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;&lt;b style=&quot;color: #000000;&quot;&gt;- Simple&amp;nbsp;framework&amp;nbsp;with&amp;nbsp;powerful&amp;nbsp;capabilities&lt;/b&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;&lt;b style=&quot;color: #000000;&quot;&gt;-&lt;/b&gt; &lt;b style=&quot;color: #000000;&quot;&gt;Can&amp;nbsp;handle&amp;nbsp;cycles&amp;nbsp;in&amp;nbsp;the&amp;nbsp;object&amp;nbsp;graph&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;b style=&quot;color: #000000;&quot;&gt;-&lt;/b&gt; &lt;b style=&quot;color: #000000;&quot;&gt;It&amp;nbsp;requires&amp;nbsp;absolutely&amp;nbsp;no&amp;nbsp;configuration&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;b style=&quot;color: #000000;&quot;&gt;-&lt;/b&gt; &lt;b style=&quot;color: #000000;&quot;&gt;Extremely&amp;nbsp;rapid&amp;nbsp;development&amp;nbsp;with&amp;nbsp;XML&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;b style=&quot;color: #000000;&quot;&gt;-&lt;/b&gt; &lt;b style=&quot;color: #000000;&quot;&gt;Converts&amp;nbsp;to&amp;nbsp;and&amp;nbsp;from&amp;nbsp;human&amp;nbsp;editable&amp;nbsp;XML&lt;/b&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;&lt;b style=&quot;color: rgb(0, 0, 0);&quot;&gt;- &lt;/b&gt;&lt;b style=&quot;color: #000000;&quot;&gt;Contains&amp;nbsp;an&amp;nbsp;XML&amp;nbsp;templating&amp;nbsp;system&lt;/b&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;&lt;b style=&quot;color: #000000;&quot;&gt;&lt;/b&gt;&lt;br /&gt;
위의 특징을 가지고 있는 프레임워크다. 자세한 내용은 사이트에 가서 확인하기 바란다. &lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;아래 튜토리얼을 확인하기 바란다.&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;tutorial : &lt;a title=&quot;[http://simple.sourceforge.net/download/stream/doc/tutorial/tutorial.php]로 이동합니다.&quot; target=&quot;_blank&quot; href=&quot;http://simple.sourceforge.net/download/stream/doc/tutorial/tutorial.php&quot;&gt;http://simple.sourceforge.net/download/stream/doc/tutorial/tutorial.php&lt;/a&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;
&lt;hr style=&quot;height: 1px; border-width: 1px 0px 0px; border-style: dotted none none; border-color: black; -moz-border-top-colors: none; -moz-border-right-colors: none; -moz-border-bottom-colors: none; -moz-border-left-colors: none; -moz-border-image: none; display: block;&quot;&gt;&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;간단한 예제코드&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;1. 먼저 Simple framework를 다운로드 받는다.&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;&amp;lt; Example.java &amp;gt;&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;
&lt;pre class=&quot;brush:java&quot;&gt;  
package javastudy.simplexml;

import org.simpleframework.xml.Attribute;
import org.simpleframework.xml.Element;
import org.simpleframework.xml.Root;

@Root
public class Example {
    
    @Element
    private String text;
    
    @Attribute
    private int index;

    public Example() {
        super();
    }

    public Example(String text, int index) {
        super();
        this.text = text;
        this.index = index;
    }

    public String getText() {
        return text;
    }

    public int getIndex() {
        return index;
    }
    
}
&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;p&gt;&amp;lt;SimpleXmlTest.java&amp;gt; 테스트 코드&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;
&lt;pre class=&quot;brush:java&quot;&gt;  
package javastudy.simplexml;

import static org.hamcrest.CoreMatchers.*;
import static org.junit.Assert.*;

import java.io.File;

import org.junit.Test;
import org.simpleframework.xml.Serializer;
import org.simpleframework.xml.core.Persister;

/**
 * simple Xml serialization 프레임워크를 이용하여 객체를 XML로 변환처리 테스트
 * @author 허니몬
 * 
 * 고려사항 : 
 *  1. Java 객체를 우선 정의해줘야한다.
 */
public class SimpleXmlTest {

    /**
     * Example 클래스의 구조를 example.xml으로 변환하여 xml파일을 생성한다.
     * 이때, 객체 안에 담겨있는 데이터는 @Attribute @Element 애노테이션에 
     * 의해 xml의 attribute와 element로 정의된다. 
     */
    @Test
    public void simpleObjectToXmlTest() {
        Serializer serializer = new Persister();
        Example example = new Example(&quot;Example message&quot;, 123);
        File result = new File(&quot;example.xml&quot;);
        
        try {
            serializer.write(example, result);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    
    @Test
    public void simpleXmlToObjectTest() {
        Serializer serializer = new Persister();
        File source = new File(&quot;example.xml&quot;);
        
        Example example = null;
        try {
            example = serializer.read(Example.class, source);
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        assertThat(example.getText(), is(&quot;Example message&quot;));
        assertThat(example.getIndex(), is(123));
    }
}

&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;p&gt;&amp;lt;example.xml&amp;gt; 위의 코드에서 생성된 xml&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;
&lt;pre class=&quot;brush:xml&quot;&gt;  
&lt;example index=&quot;123&quot;&gt;
   &lt;text&gt;Example message&lt;/text&gt;
&lt;/example&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;p&gt;의 형태를 띄게 된다. 그 이외의 상세한 내용에 대해서는...&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;차근차근 해보도록 하자. 요즘 머리에 주입되는 정보들을 처리하느라 힘들다.&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;
&lt;/p&gt;&lt;p&gt;&lt;div&gt;
&lt;hr style=&quot;height: 1px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-right-style: none; border-bottom-style: none; border-left-style: none; border-color: initial; border-top-width: 1px; border-top-style: dotted; border-top-color: black; border-right-color: black; border-bottom-color: black; border-left-color: black; display: block; &quot;&gt;&lt;/div&gt;
&lt;/p&gt;&lt;p&gt;&lt;br /&gt;
&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;사용용도 : 객체(Java source)를 뼈대로 해서 xml파일을 생성하려고 할 때 사용할 수 있을 것이며,&lt;br /&gt;
&lt;/p&gt;&lt;p&gt;이렇게 생성된 XML에 담긴 정보를 객체에 주입할여 인스턴스를 생성할 수 있을 것이다.&lt;br /&gt;
&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;br /&gt;
&lt;/p&gt;&lt;div class=&quot;entry-ccl&quot; style=&quot;clear: both; text-align: right; margin-bottom: 10px&quot;&gt;
	&lt;img id=&quot;ccl-icon-197-0&quot; class=&quot;entry-ccl-by&quot; src=&quot;http://i1.daumcdn.net/cfs.tistory/v/0/static/admin/editor/ccl_black01.png&quot; alt=&quot;저작자 표시&quot;/&gt;
	&lt;!--
	&lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
		&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-fr/2.0/kr/&quot; /&gt;
		&lt;/Work&gt;
		&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-fr/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/DerivativeWorks&quot;/&gt;
		&lt;/License&gt;
	&lt;/rdf:RDF&gt;
	--&gt;
&lt;/div&gt;
&lt;div class=&quot;another_category another_category_color_gray&quot;&gt;
&lt;h4&gt;'&lt;a href=&quot;/category/Frameworks&quot;&gt;Frameworks&lt;/a&gt;' 카테고리의 다른 글&lt;/h4&gt;
&lt;table&gt;
&lt;tr&gt;
&lt;th&gt;
&lt;a href=&quot;/200&quot; &gt;openJpa, nonfatal user error 발생시, persistence.xml 에 Item을 추가하세요.&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;span&gt;(0)&lt;/span&gt;
&lt;/th&gt;
&lt;td&gt;
2011/11/14&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th&gt;
&lt;a href=&quot;/197&quot; &gt;'Simple' Framework를 이용하여 자바 객체를 XML로 변환하기&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;span&gt;(0)&lt;/span&gt;
&lt;/th&gt;
&lt;td&gt;
2011/11/07&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th&gt;
&lt;a href=&quot;/194&quot; &gt;Maven을 이용하여 간단하게 Struts2 프로젝트 생성하기&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;span&gt;(0)&lt;/span&gt;
&lt;/th&gt;
&lt;td&gt;
2011/10/12&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th&gt;
&lt;a href=&quot;/186&quot; &gt;config.properties 파일에서 프리마커 템플릿 엔진에서 properties 사용하기&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;span&gt;(0)&lt;/span&gt;
&lt;/th&gt;
&lt;td&gt;
2011/09/07&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th&gt;
&lt;a href=&quot;/160&quot; &gt;iBatis  가동 전 Sqlmap XML 읽기, Caused by: com.ibatis.common.beans.ProbeException:&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;span&gt;(4)&lt;/span&gt;
&lt;/th&gt;
&lt;td&gt;
2011/05/30&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th&gt;
&lt;a href=&quot;/157&quot; &gt;iBatis parameterClass&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;span&gt;(1)&lt;/span&gt;
&lt;/th&gt;
&lt;td&gt;
2011/05/21&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;&lt;/div&gt;</description>
			<category>Frameworks</category>
			<category>Java</category>
			<category>object</category>
			<category>Serialization</category>
			<category>Simple</category>
			<category>xml</category>
			<author>허니몬</author>
			<guid>http://java.ihoney.pe.kr/197</guid>
			<comments>http://java.ihoney.pe.kr/197#entry197comment</comments>
			<pubDate>Mon, 07 Nov 2011 18:22:33 +0900</pubDate>
		</item>
	</channel>
</rss>
