<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-5629370754721541274</id><updated>2012-02-16T19:00:17.199-08:00</updated><category term='읽는중..'/><category term='성윤정'/><category term='최범균'/><category term='Beginning Android'/><category term='Personal Project'/><category term='디자인패턴'/><category term='Access denied'/><category term='struts2'/><category term='Programming'/><category term='design pattern'/><category term='모바일'/><category term='spring'/><category term='에러'/><category term='iBATIS'/><category term='프로젝트'/><category term='Book'/><category term='자바스크립트'/><category term='더블셀렉트'/><category term='하이버네이트'/><category term='hibernate'/><category term='실용주의'/><category term='jQuery'/><category term='FCKeditor'/><category term='java'/><category term='ajax'/><category term='구글'/><category term='HARNESSING'/><category term='DoubleSelect'/><category term='안드로이드'/><category term='개발'/><category term='이미지업로드'/><category term='액세스 거부'/><category term='읽고나서..'/><category term='android'/><category term='책'/><category term='자바'/><category term='프로그래머'/><category term='orm'/><category term='closure'/><category term='스프링'/><category term='Think'/><category term='Resolve'/><category term='액세스거부'/><category term='오류'/><category term='클로져'/><category term='JavaScript'/><category term='웹에디터'/><category term='json'/><category term='프로그래밍'/><title type='text'>For developer</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://genikim.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5629370754721541274/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://genikim.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>sap</name><uri>http://www.blogger.com/profile/02773930379424971513</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>23</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5629370754721541274.post-3359453085709719644</id><published>2010-07-26T01:16:00.000-07:00</published><updated>2010-12-21T01:07:40.222-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Think'/><title type='text'>미쳐가고 있다</title><content type='html'>무기력..&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5629370754721541274-3359453085709719644?l=genikim.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://genikim.blogspot.com/feeds/3359453085709719644/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://genikim.blogspot.com/2010/07/%EB%AF%B8%EC%B3%90%EA%B0%80%EA%B3%A0-%EC%9E%88%EB%8B%A4.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5629370754721541274/posts/default/3359453085709719644'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5629370754721541274/posts/default/3359453085709719644'/><link rel='alternate' type='text/html' href='http://genikim.blogspot.com/2010/07/%EB%AF%B8%EC%B3%90%EA%B0%80%EA%B3%A0-%EC%9E%88%EB%8B%A4.html' title='미쳐가고 있다'/><author><name>sap</name><uri>http://www.blogger.com/profile/02773930379424971513</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5629370754721541274.post-5274577758945071269</id><published>2010-05-24T08:57:00.000-07:00</published><updated>2010-12-21T01:07:39.753-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Personal Project'/><category scheme='http://www.blogger.com/atom/ns#' term='안드로이드'/><category scheme='http://www.blogger.com/atom/ns#' term='프로젝트'/><category scheme='http://www.blogger.com/atom/ns#' term='android'/><category scheme='http://www.blogger.com/atom/ns#' term='개발'/><title type='text'>프로젝트가 거진 마무리 단계다..</title><content type='html'>필요한 기능은 다 구현했다..&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;사실상 개발시간만 따지면 20시간 정도 걸렸고&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;책보는 시간이 더 많았던 것 같다. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;역시.. 책으로 다 읽고 지나갔던 것들은 혼자 직접 응용해서&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;만들어 보지 않으면 머리에서 금방 잊혀진다는 걸 깨달았다&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;프로페셔널 안드로이드 어플리케이션 개발은 번역은 그닥이나 수많은 예제들은&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;엄청난 도움이 되었으며 알짜만 골라배우는 안드로이드 프로그래밍 서적은&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;기초 개념과 간단한 화면을 만들때는 더 없이 좋은 책이었다.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;교육받는거보다 책이 낫다 ㅡ.ㅡ;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;요즘 받고 있는 안드로이드 교육이 도움이 많이 될 줄 알았는데..정말 실망스럽다.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;직장인 교육은 대부분의 강사님들이 (죄송하지만) 수업 준비를 많이 안해 오시는듯..&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;여튼 앞으로 직장인 교육은 여러번 살펴보고 참여 해야 할듯 하고..&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;프로젝트는 이미지만 이제 만들어서 &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;정식으루 배포 하면 될 정도로&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;완성 되었으나&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;안드로이드 에뮬에서만 테스트하고 돌려봐서..&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;정확하게 동작 할지는 모르겠다..&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;수정 할것도 있고 &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;앞으로 더 넣고 싶은 기능도 많지만&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;조급해 하지말고.. 천천히 공부 하자&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;오픈은 언제 할까나..&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5629370754721541274-5274577758945071269?l=genikim.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://genikim.blogspot.com/feeds/5274577758945071269/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://genikim.blogspot.com/2010/05/%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8%EA%B0%80-%EA%B1%B0%EC%A7%84-%EB%A7%88%EB%AC%B4%EB%A6%AC-%EB%8B%A8%EA%B3%84%EB%8B%A4.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5629370754721541274/posts/default/5274577758945071269'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5629370754721541274/posts/default/5274577758945071269'/><link rel='alternate' type='text/html' href='http://genikim.blogspot.com/2010/05/%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8%EA%B0%80-%EA%B1%B0%EC%A7%84-%EB%A7%88%EB%AC%B4%EB%A6%AC-%EB%8B%A8%EA%B3%84%EB%8B%A4.html' title='프로젝트가 거진 마무리 단계다..'/><author><name>sap</name><uri>http://www.blogger.com/profile/02773930379424971513</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5629370754721541274.post-4622438137872907559</id><published>2010-05-19T00:58:00.000-07:00</published><updated>2010-12-21T01:07:39.285-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Personal Project'/><title type='text'>Android 프로젝트 시작..</title><content type='html'>역시나.....&lt;div&gt;완성 날짜에 비해 늦어졌다..&lt;/div&gt;&lt;div&gt;공부만 했다 ㅡ,.ㅡ;;;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;막막하기도 하고 ....&lt;/div&gt;&lt;div&gt;그래도 마음속으로 기획과 관련 자료들 공부는 완료 되었다고 생각한다.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;어플의 이름은 Where you at&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;위치 확인 및 연락 서비스..&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;이 어플은 자기의 위치를 서비스로 서버에 송신한다.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;서버에 커넥팅 하면 등록된 사용자들의 위치를 &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;구글 맵에 오버레이해서 보여준다.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;오버레이된 아이콘을 클릭하면 전화, 문자, email 작성을 할수 있다.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;서버는 구글 앱엔진으로 하기로 결정했다.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;우선 구글 앱엔진으로 위치들을 저장 할 서버부터 제작!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5629370754721541274-4622438137872907559?l=genikim.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://genikim.blogspot.com/feeds/4622438137872907559/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://genikim.blogspot.com/2010/05/android-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-%EC%8B%9C%EC%9E%91.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5629370754721541274/posts/default/4622438137872907559'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5629370754721541274/posts/default/4622438137872907559'/><link rel='alternate' type='text/html' href='http://genikim.blogspot.com/2010/05/android-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-%EC%8B%9C%EC%9E%91.html' title='Android 프로젝트 시작..'/><author><name>sap</name><uri>http://www.blogger.com/profile/02773930379424971513</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5629370754721541274.post-228690394066968372</id><published>2010-04-11T19:21:00.000-07:00</published><updated>2010-12-21T01:07:38.829-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Beginning Android'/><category scheme='http://www.blogger.com/atom/ns#' term='읽는중..'/><category scheme='http://www.blogger.com/atom/ns#' term='모바일'/><category scheme='http://www.blogger.com/atom/ns#' term='안드로이드'/><category scheme='http://www.blogger.com/atom/ns#' term='프로그래밍'/><category scheme='http://www.blogger.com/atom/ns#' term='Book'/><category scheme='http://www.blogger.com/atom/ns#' term='android'/><title type='text'>알짜만 골라 배우는 안드로이드 프로그래밍</title><content type='html'>&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN class=thumb&gt;&lt;A href="/product/detailViewKor.laf?ejkGb=KOR&amp;amp;mallGb=KOR&amp;amp;barcode=9788960771017&amp;amp;orderClick=LAG"&gt;&lt;IMG alt="알짜만 골라 배우는 안드로이드 프로그래밍" src="http://image.kyobobook.co.kr/images/book/medium/017/m9788960771017.jpg"&gt;&lt;/A&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Beginning Android&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;알짜만 골라배우는 안드로이드 프로그래밍 &lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;마크머피 저/ 강철구 역&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;에이콘 출판사&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;지금 50% 정도 읽고 있는 책인데..&lt;/P&gt;&lt;P&gt;너무 좋다. &lt;/P&gt;&lt;P&gt;세세한 설명과 예제들.....&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;안드로이드라면 이 책을 강추 해야 겠다!&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;다&amp;nbsp; 읽고 보자..&lt;/P&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5629370754721541274-228690394066968372?l=genikim.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://genikim.blogspot.com/feeds/228690394066968372/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://genikim.blogspot.com/2010/04/%EC%95%8C%EC%A7%9C%EB%A7%8C-%EA%B3%A8%EB%9D%BC-%EB%B0%B0%EC%9A%B0%EB%8A%94-%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9C-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5629370754721541274/posts/default/228690394066968372'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5629370754721541274/posts/default/228690394066968372'/><link rel='alternate' type='text/html' href='http://genikim.blogspot.com/2010/04/%EC%95%8C%EC%A7%9C%EB%A7%8C-%EA%B3%A8%EB%9D%BC-%EB%B0%B0%EC%9A%B0%EB%8A%94-%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9C-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D.html' title='알짜만 골라 배우는 안드로이드 프로그래밍'/><author><name>sap</name><uri>http://www.blogger.com/profile/02773930379424971513</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5629370754721541274.post-8273041863511431524</id><published>2010-04-11T19:11:00.000-07:00</published><updated>2010-12-21T01:07:38.343-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='구글'/><category scheme='http://www.blogger.com/atom/ns#' term='읽고나서..'/><category scheme='http://www.blogger.com/atom/ns#' term='모바일'/><category scheme='http://www.blogger.com/atom/ns#' term='안드로이드'/><category scheme='http://www.blogger.com/atom/ns#' term='프로그래밍'/><category scheme='http://www.blogger.com/atom/ns#' term='Book'/><category scheme='http://www.blogger.com/atom/ns#' term='android'/><title type='text'>구글의 안드로이드 프로그래밍</title><content type='html'>&lt;span class="thumb"&gt;&lt;a href="/product/detailViewKor.laf?ejkGb=KOR&amp;amp;mallGb=KOR&amp;amp;barcode=9788931550252&amp;amp;orderClick=LAG"&gt;&lt;img alt="안드로이드 프로그래밍" src="http://image.kyobobook.co.kr/images/book/medium/252/m9788931550252.jpg"&gt;&lt;/a&gt;&lt;/span&gt; &lt;p&gt;&lt;strong&gt;&amp;nbsp;김정훈 지음/ 성안당&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;대학교재로 쓰이는 듯한 책인데&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;너무너무 쉽게 잘만들어져있어서 감탄을 금 할 수가 없었다.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;하루 3시간씩만 봐도 5일이면 다볼 책이다.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;책은 어려우면 안된다 나는 쉽고 간단명료하고 쉽게 따라 해볼수 있는 책이 너무너무 좋다 &lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;대학교재가 이렇게 쉽고 간단하게 되어있으니.. 학생들은 참 좋겠다 ㅡ,ㅡ&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;다소 빠진 부분이 많아 아쉽긴 하지만&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;간단히 안드로이드를 쉽게 접해 보기엔&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;더할나위 없는 책이다.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5629370754721541274-8273041863511431524?l=genikim.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://genikim.blogspot.com/feeds/8273041863511431524/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://genikim.blogspot.com/2010/04/%EA%B5%AC%EA%B8%80%EC%9D%98-%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9C-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5629370754721541274/posts/default/8273041863511431524'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5629370754721541274/posts/default/8273041863511431524'/><link rel='alternate' type='text/html' href='http://genikim.blogspot.com/2010/04/%EA%B5%AC%EA%B8%80%EC%9D%98-%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9C-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D.html' title='구글의 안드로이드 프로그래밍'/><author><name>sap</name><uri>http://www.blogger.com/profile/02773930379424971513</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5629370754721541274.post-382926382375562570</id><published>2010-04-11T18:52:00.000-07:00</published><updated>2010-12-21T01:07:37.855-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='프로그래머'/><category scheme='http://www.blogger.com/atom/ns#' term='읽고나서..'/><category scheme='http://www.blogger.com/atom/ns#' term='프로그래밍'/><category scheme='http://www.blogger.com/atom/ns#' term='실용주의'/><category scheme='http://www.blogger.com/atom/ns#' term='Book'/><title type='text'>실용주의 프로그래머 (The Pragmatic Programmer)</title><content type='html'>&lt;DIV style="WIDTH: 82px" class="thumb size3"&gt;&lt;P&gt;&lt;A href="/product/detailViewKor.laf?ejkGb=KOR&amp;amp;mallGb=KOR&amp;amp;barcode=9788991268074&amp;amp;orderClick=LAG"&gt;&lt;IMG alt="실용주의 프로그래머" src="http://image.kyobobook.co.kr/images/book/medium/074/m9788991268074.jpg"&gt;&lt;/A&gt;&amp;nbsp;&lt;/P&gt;&lt;/DIV&gt;&lt;DL style="WIDTH: 654px"&gt;&lt;DT&gt;&lt;STRONG&gt;데이비드 토머스 / 앤드류 헌트&amp;nbsp; 지음&lt;/STRONG&gt;&lt;/DT&gt;&lt;DT&gt;&lt;STRONG&gt;김창준 정지호 옮김&lt;/STRONG&gt;&lt;/DT&gt;&lt;DT&gt;&lt;STRONG&gt;인사이트&lt;/STRONG&gt;&lt;/DT&gt;&lt;/DL&gt;&lt;P&gt;&amp;nbsp;&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;P&gt;뭐랄까... 개발자로써의 마음가짐이 특히 와닿았는데&lt;/P&gt;&lt;P&gt;난 좀 실용주의적인 측면이 있는 것 같다 .&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;특히 왜? ㅋㅋ 라는 늘 궁금증, ㅋㅋ&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;좋은 책 &lt;/P&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5629370754721541274-382926382375562570?l=genikim.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://genikim.blogspot.com/feeds/382926382375562570/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://genikim.blogspot.com/2010/04/%EC%8B%A4%EC%9A%A9%EC%A3%BC%EC%9D%98-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8-pragmatic-programmer.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5629370754721541274/posts/default/382926382375562570'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5629370754721541274/posts/default/382926382375562570'/><link rel='alternate' type='text/html' href='http://genikim.blogspot.com/2010/04/%EC%8B%A4%EC%9A%A9%EC%A3%BC%EC%9D%98-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8-pragmatic-programmer.html' title='실용주의 프로그래머 (The Pragmatic Programmer)'/><author><name>sap</name><uri>http://www.blogger.com/profile/02773930379424971513</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5629370754721541274.post-4992265757954196432</id><published>2010-04-11T18:46:00.000-07:00</published><updated>2010-12-21T01:07:37.394-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='하이버네이트'/><category scheme='http://www.blogger.com/atom/ns#' term='읽고나서..'/><category scheme='http://www.blogger.com/atom/ns#' term='orm'/><category scheme='http://www.blogger.com/atom/ns#' term='HARNESSING'/><category scheme='http://www.blogger.com/atom/ns#' term='Book'/><title type='text'>하이버네이트 프로그래밍(HARNESSING HIBERNATE)</title><content type='html'>&lt;DIV style="WIDTH: 82px" class="thumb size3"&gt;&lt;A class=N=a:bls.thumb,r:1,i:98000001_0000000000000000005C2A94 href="http://book.naver.com/bookdb/book_detail.nhn?bid=6040212" target=_blank&gt;&lt;IMG onerror="this.src='http://static.naver.com/book/image/noimg3.gif';" src="http://bookthumb.phinf.naver.net/cover/060/402/06040212.jpg?type=m1" width=82 height=117&gt;&lt;/A&gt;&lt;/DIV&gt;&lt;P&gt;&lt;STRONG&gt;제임스 엘리어트 저/ 정미영 역/ 한빛미디어&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&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;P&gt;진짜 이해 안되는 번역,&lt;/P&gt;&lt;P&gt;책의 내용은&amp;nbsp; Ant 와 Maven&amp;nbsp; 설명이 반정도 먹고 있는 듯 하다.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;국내에선 그다지 인기 없는 하이버네이트,&lt;/P&gt;&lt;P&gt;더 인기 없는 Ant&lt;/P&gt;&lt;P&gt;알지도 못하는 Maven 까지..&lt;/P&gt;&lt;P&gt;&amp;nbsp;&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 class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5629370754721541274-4992265757954196432?l=genikim.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://genikim.blogspot.com/feeds/4992265757954196432/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://genikim.blogspot.com/2010/04/%ED%95%98%EC%9D%B4%EB%B2%84%EB%84%A4%EC%9D%B4%ED%8A%B8-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8Dharnessing-hibernate.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5629370754721541274/posts/default/4992265757954196432'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5629370754721541274/posts/default/4992265757954196432'/><link rel='alternate' type='text/html' href='http://genikim.blogspot.com/2010/04/%ED%95%98%EC%9D%B4%EB%B2%84%EB%84%A4%EC%9D%B4%ED%8A%B8-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8Dharnessing-hibernate.html' title='하이버네이트 프로그래밍(HARNESSING HIBERNATE)'/><author><name>sap</name><uri>http://www.blogger.com/profile/02773930379424971513</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5629370754721541274.post-9138843932429654692</id><published>2010-04-11T18:42:00.000-07:00</published><updated>2010-12-21T01:07:36.930-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='하이버네이트'/><category scheme='http://www.blogger.com/atom/ns#' term='hibernate'/><category scheme='http://www.blogger.com/atom/ns#' term='읽고나서..'/><category scheme='http://www.blogger.com/atom/ns#' term='orm'/><category scheme='http://www.blogger.com/atom/ns#' term='프로그래밍'/><category scheme='http://www.blogger.com/atom/ns#' term='최범균'/><category scheme='http://www.blogger.com/atom/ns#' term='Book'/><title type='text'>하이버네이트3 프로그래밍</title><content type='html'>&lt;P&gt;&lt;IMG onerror="this.src='http://static.naver.com/book/image/noimg2.gif';" src="http://bookthumb.phinf.naver.net/cover/028/885/02888558.jpg?type=m1" width=70 height=100&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;최범균 / 가메 출판사&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;하이버네이트의 책으로는 이만한 책이 있을까? ( 책도 없지만-_-)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;최고의 책이다. 최범균님의 책은 날 언제나 생각하고 고민하고 공부하게 만들어준다.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;어려우면서도 탁 이해해주는 설명과 짤막짤막한 코드들은 늘 즐겁다.!&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5629370754721541274-9138843932429654692?l=genikim.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://genikim.blogspot.com/feeds/9138843932429654692/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://genikim.blogspot.com/2010/04/%ED%95%98%EC%9D%B4%EB%B2%84%EB%84%A4%EC%9D%B4%ED%8A%B83-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5629370754721541274/posts/default/9138843932429654692'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5629370754721541274/posts/default/9138843932429654692'/><link rel='alternate' type='text/html' href='http://genikim.blogspot.com/2010/04/%ED%95%98%EC%9D%B4%EB%B2%84%EB%84%A4%EC%9D%B4%ED%8A%B83-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D.html' title='하이버네이트3 프로그래밍'/><author><name>sap</name><uri>http://www.blogger.com/profile/02773930379424971513</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5629370754721541274.post-3937565411916849987</id><published>2010-04-11T18:38:00.000-07:00</published><updated>2010-12-21T01:07:36.498-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='모바일'/><category scheme='http://www.blogger.com/atom/ns#' term='안드로이드'/><category scheme='http://www.blogger.com/atom/ns#' term='프로그래밍'/><category scheme='http://www.blogger.com/atom/ns#' term='Book'/><category scheme='http://www.blogger.com/atom/ns#' term='android'/><title type='text'>예제로 시작하는 안드로이드 개발</title><content type='html'>&lt;DIV style="WIDTH: 82px" class="thumb size3"&gt;&lt;P&gt;&lt;A class=N=a:bls.thumb,r:7,i:98000001_0000000000000000005CB508 href="http://book.naver.com/bookdb/book_detail.nhn?bid=6075656" target=_blank&gt;&lt;IMG onerror="this.src='http://static.naver.com/book/image/noimg3.gif';" src="http://bookthumb.phinf.naver.net/cover/060/756/06075656.jpg?type=m1" width=82 height=117&gt;&lt;/A&gt;&lt;/P&gt;&lt;/DIV&gt;&lt;DIV class=review_point&gt;&lt;SPAN style="WIDTH: 0%"&gt;&lt;STRONG&gt;릭 로저스 저/ 안드로이드펍 역 / 에이콘 출판사&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class=review_point&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV class=review_point&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV class=review_point&gt;&lt;SPAN style="WIDTH: 0%"&gt;난감한 책이다..&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class=review_point&gt;&lt;SPAN style="WIDTH: 0%"&gt;좋지도, 나쁘지도 않은 번역, &lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class=review_point&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV class=review_point&gt;&lt;SPAN style="WIDTH: 0%"&gt;분명히 안드로이드 초보 서적인데도,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class=review_point&gt;&lt;SPAN style="WIDTH: 0%"&gt;실행도 안되는 자기 프로젝트를 가지고 설명하며 어렵사리 프로젝트를 실행 시켜본다고 한들&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class=review_point&gt;&lt;SPAN style="WIDTH: 0%"&gt;이런 깊이도 없고 세세하지도 않은 설명들로는 (그것도 번역서를)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class=review_point&gt;&lt;SPAN style="WIDTH: 0%"&gt;공부하기가 꽤나 힘들다.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class=review_point&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV class=review_point&gt;&lt;SPAN style="WIDTH: 0%"&gt;절대 추천하지 않는 책이다.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class=review_point&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV class=review_point&gt;&lt;SPAN style="WIDTH: 0%"&gt;그래도 나름대로의 장점이라고 한다면, 디버깅 부분은 좋다.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class=review_point&gt;&amp;nbsp;&lt;/DIV&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5629370754721541274-3937565411916849987?l=genikim.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://genikim.blogspot.com/feeds/3937565411916849987/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://genikim.blogspot.com/2010/04/%EC%98%88%EC%A0%9C%EB%A1%9C-%EC%8B%9C%EC%9E%91%ED%95%98%EB%8A%94-%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9C-%EA%B0%9C%EB%B0%9C.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5629370754721541274/posts/default/3937565411916849987'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5629370754721541274/posts/default/3937565411916849987'/><link rel='alternate' type='text/html' href='http://genikim.blogspot.com/2010/04/%EC%98%88%EC%A0%9C%EB%A1%9C-%EC%8B%9C%EC%9E%91%ED%95%98%EB%8A%94-%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9C-%EA%B0%9C%EB%B0%9C.html' title='예제로 시작하는 안드로이드 개발'/><author><name>sap</name><uri>http://www.blogger.com/profile/02773930379424971513</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5629370754721541274.post-7544679562619582589</id><published>2010-04-11T18:31:00.000-07:00</published><updated>2010-12-21T01:07:36.052-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='읽는중..'/><category scheme='http://www.blogger.com/atom/ns#' term='Book'/><title type='text'>스프링 2.5 프로그래밍</title><content type='html'>&lt;DIV class=book_info&gt;&lt;DIV class="thumb size2"&gt;&lt;IMG onerror="this.src='http://static.naver.com/book/image/noimg2.gif';" src="http://bookthumb.phinf.naver.net/cover/044/546/04454644.jpg?type=m1" width=70 height=100&gt;&lt;br /&gt;&lt;br /&gt;&lt;STRONG&gt;최범균 / 가메 출판사&lt;/STRONG&gt;&lt;/DIV&gt;&lt;DIV class="thumb size2"&gt;&lt;br /&gt;최범균님의 책은 언제나 좋다.&lt;br /&gt;최범균님의 책이 거진 그렇듯 다양한 API의 소개는 &lt;br /&gt;언제나 찾아보는 레퍼런스식의 활용도가 높으며&lt;br /&gt;전체적으로 한번 읽어 보는 것도 좋은 공부가 된다.&lt;br /&gt;&lt;br /&gt;다양한 스프링 클래스들의 소개.. 조금은 깊이 있는 내용..&lt;br /&gt;&lt;br /&gt;두고두고 봐야 할 책이당..&lt;br /&gt;&lt;br /&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5629370754721541274-7544679562619582589?l=genikim.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://genikim.blogspot.com/feeds/7544679562619582589/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://genikim.blogspot.com/2010/04/%EC%8A%A4%ED%94%84%EB%A7%81-25-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5629370754721541274/posts/default/7544679562619582589'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5629370754721541274/posts/default/7544679562619582589'/><link rel='alternate' type='text/html' href='http://genikim.blogspot.com/2010/04/%EC%8A%A4%ED%94%84%EB%A7%81-25-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D.html' title='스프링 2.5 프로그래밍'/><author><name>sap</name><uri>http://www.blogger.com/profile/02773930379424971513</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5629370754721541274.post-3409306113138728331</id><published>2010-04-11T18:18:00.000-07:00</published><updated>2010-12-21T01:07:35.630-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='읽고나서..'/><category scheme='http://www.blogger.com/atom/ns#' term='스프링'/><category scheme='http://www.blogger.com/atom/ns#' term='책'/><category scheme='http://www.blogger.com/atom/ns#' term='프로그래밍'/><category scheme='http://www.blogger.com/atom/ns#' term='spring'/><category scheme='http://www.blogger.com/atom/ns#' term='성윤정'/><category scheme='http://www.blogger.com/atom/ns#' term='Book'/><title type='text'>Spring 2.5 실무 프로그래밍</title><content type='html'>&lt;DIV id=start class=blind&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV class=location&gt;&lt;!-- layer --&gt;&lt;DIV style="DISPLAY: none; LEFT: 0px" id=location1_depth class=layer_select onmouseover="showLocationLayer('location1_depth')" onmouseout="hideLocationLayer('location1_depth')"&gt;&lt;UL&gt;&lt;LI&gt;&lt;A class=N=a:bil.category1,i:100 href="http://book.naver.com/category/index.nhn?cate_code=100"&gt;소설&lt;/A&gt;&lt;/LI&gt;&lt;LI&gt;&lt;A class=N=a:bil.category1,i:110 href="http://book.naver.com/category/index.nhn?cate_code=110"&gt;시/에세이&lt;/A&gt;&lt;/LI&gt;&lt;LI&gt;&lt;A class=N=a:bil.category1,i:160 href="http://book.naver.com/category/index.nhn?cate_code=160"&gt;경제/경영&lt;/A&gt;&lt;/LI&gt;&lt;LI&gt;&lt;A class=N=a:bil.category1,i:170 href="http://book.naver.com/category/index.nhn?cate_code=170"&gt;자기계발&lt;/A&gt;&lt;/LI&gt;&lt;LI&gt;&lt;A class=N=a:bil.category1,i:120 href="http://book.naver.com/category/index.nhn?cate_code=120"&gt;인문&lt;/A&gt;&lt;/LI&gt;&lt;LI&gt;&lt;A class=N=a:bil.category1,i:190 href="http://book.naver.com/category/index.nhn?cate_code=190"&gt;역사/문화&lt;/A&gt;&lt;/LI&gt;&lt;LI&gt;&lt;A class=N=a:bil.category1,i:180 href="http://book.naver.com/category/index.nhn?cate_code=180"&gt;사회&lt;/A&gt;&lt;/LI&gt;&lt;LI&gt;&lt;A class=N=a:bil.category1,i:250 href="http://book.naver.com/category/index.nhn?cate_code=250"&gt;과학/공학&lt;/A&gt;&lt;/LI&gt;&lt;LI&gt;&lt;A class=N=a:bil.category1,i:210 href="http://book.naver.com/category/index.nhn?cate_code=210"&gt;예술/대중문화&lt;/A&gt;&lt;/LI&gt;&lt;LI&gt;&lt;A class=N=a:bil.category1,i:200 href="http://book.naver.com/category/index.nhn?cate_code=200"&gt;종교&lt;/A&gt;&lt;/LI&gt;&lt;LI&gt;&lt;A class=N=a:bil.category1,i:310 href="http://book.naver.com/category/index.nhn?cate_code=310"&gt;유아&lt;/A&gt;&lt;/LI&gt;&lt;LI&gt;&lt;A class=N=a:bil.category1,i:320 href="http://book.naver.com/category/index.nhn?cate_code=320"&gt;어린이&lt;/A&gt;&lt;/LI&gt;&lt;LI&gt;&lt;A class=N=a:bil.category1,i:130 href="http://book.naver.com/category/index.nhn?cate_code=130"&gt;가정/생활/요리&lt;/A&gt;&lt;/LI&gt;&lt;LI&gt;&lt;A class=N=a:bil.category1,i:140 href="http://book.naver.com/category/index.nhn?cate_code=140"&gt;건강&lt;/A&gt;&lt;/LI&gt;&lt;LI&gt;&lt;A class=N=a:bil.category1,i:150 href="http://book.naver.com/category/index.nhn?cate_code=150"&gt;취미/레저&lt;/A&gt;&lt;/LI&gt;&lt;LI&gt;&lt;A class=N=a:bil.category1,i:270 href="http://book.naver.com/category/index.nhn?cate_code=270"&gt;여행/지도&lt;/A&gt;&lt;/LI&gt;&lt;LI&gt;&lt;A class=N=a:bil.category1,i:230 href="http://book.naver.com/category/index.nhn?cate_code=230"&gt;국어/외국어&lt;/A&gt;&lt;/LI&gt;&lt;LI&gt;&lt;A class=N=a:bil.category1,i:240 href="http://book.naver.com/category/index.nhn?cate_code=240"&gt;사전&lt;/A&gt;&lt;/LI&gt;&lt;LI&gt;&lt;A class=N=a:bil.category1,i:280 href="http://book.naver.com/category/index.nhn?cate_code=280"&gt;컴퓨터/IT&lt;/A&gt;&lt;/LI&gt;&lt;LI&gt;&lt;A class=N=a:bil.category1,i:300 href="http://book.naver.com/category/index.nhn?cate_code=300"&gt;청소년&lt;/A&gt;&lt;/LI&gt;&lt;LI&gt;&lt;A class=N=a:bil.category1,i:220 href="http://book.naver.com/category/index.nhn?cate_code=220"&gt;학습/참고서&lt;/A&gt;&lt;/LI&gt;&lt;LI&gt;&lt;A class=N=a:bil.category1,i:260 href="http://book.naver.com/category/index.nhn?cate_code=260"&gt;취업/수험서&lt;/A&gt;&lt;/LI&gt;&lt;LI&gt;&lt;A class=N=a:bil.category1,i:330 href="http://book.naver.com/category/index.nhn?cate_code=330"&gt;만화&lt;/A&gt;&lt;/LI&gt;&lt;LI&gt;&lt;A class=N=a:bil.category1,i:290 href="http://book.naver.com/category/index.nhn?cate_code=290"&gt;잡지&lt;/A&gt;&lt;/LI&gt;&lt;LI&gt;&lt;A class=N=a:bil.category1,i:340 href="http://book.naver.com/category/index.nhn?cate_code=340"&gt;해외도서&lt;/A&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/DIV&gt;&lt;DIV style="DISPLAY: none; LEFT: 0px" id=location2_depth class="layer_select layer2" onmouseover="showLocationLayer('location2_depth')" onmouseout="hideLocationLayer('location2_depth')"&gt;&lt;UL&gt;&lt;LI&gt;&lt;A class=N=a:bil.category2,i:280020 href="http://book.naver.com/category/index.nhn?cate_code=280020"&gt;IT 전문서&lt;/A&gt;&lt;/LI&gt;&lt;LI&gt;&lt;A class=N=a:bil.category2,i:280030 href="http://book.naver.com/category/index.nhn?cate_code=280030"&gt;그래픽/멀티미디어&lt;/A&gt;&lt;/LI&gt;&lt;LI&gt;&lt;A class=N=a:bil.category2,i:280040 href="http://book.naver.com/category/index.nhn?cate_code=280040"&gt;오피스활용도서&lt;/A&gt;&lt;/LI&gt;&lt;LI&gt;&lt;A class=N=a:bil.category2,i:280010 href="http://book.naver.com/category/index.nhn?cate_code=280010"&gt;웹/컴퓨터입문/활용&lt;/A&gt;&lt;/LI&gt;&lt;LI&gt;&lt;A class=N=a:bil.category2,i:280050 href="http://book.naver.com/category/index.nhn?cate_code=280050"&gt;컴퓨터수험서&lt;/A&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/DIV&gt;&lt;DIV style="DISPLAY: none; LEFT: 0px" id=location3_depth class="layer_select layer3" onmouseover="showLocationLayer('location3_depth')" onmouseout="hideLocationLayer('location3_depth')"&gt;&lt;UL&gt;&lt;LI&gt;&lt;A class=N=a:bil.category3,i:280020010 href="http://book.naver.com/category/index.nhn?cate_code=280020010"&gt;개발/OS/데이터베이스&lt;/A&gt;&lt;/LI&gt;&lt;LI&gt;&lt;A class=N=a:bil.category3,i:280020030 href="http://book.naver.com/category/index.nhn?cate_code=280020030"&gt;네트워크보안&lt;/A&gt;&lt;/LI&gt;&lt;LI&gt;&lt;A class=N=a:bil.category3,i:280020040 href="http://book.naver.com/category/index.nhn?cate_code=280020040"&gt;컴퓨터공학&lt;/A&gt;&lt;/LI&gt;&lt;LI&gt;&lt;A class=N=a:bil.category3,i:280020020 href="http://book.naver.com/category/index.nhn?cate_code=280020020"&gt;프로그래밍언어&lt;/A&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;SCRIPT type=text/javascript&gt;				var openLocationLayerName = ""; 									function showLocationLayer(layerName) {					if (layerName == null) {						return false;					}					document.getElementById(layerName).style.left = ((document.getElementById("category_" + layerName).offsetLeft + document.getElementById("category_" + layerName).parentNode.offsetLeft) - 7) + "px";										openLocationLayerName = layerName;										var layerObj = document.getElementById(layerName);					layerObj.style.display = '';				}				function setLayerClassName(objName, className) {					document.getElementById(objName).className = className;									}								function hideLocationLayer(objName) {					if (objName == null) {						return false;					}						openLocationLayerName = "";			        setTimeout('hideLocationLayerByName("' + objName + '")',50);				}					function hideLocationLayerByName(objName) {					if (openLocationLayerName != objName) {						var layerObj = document.getElementById(objName);						layerObj.style.display = 'none';					}				}			&lt;/SCRIPT&gt;&lt;SCRIPT type=text/javascript&gt;		var nsc = "book.detail";	var ccsrv = "cc.naver.com";	var nclk_evt = 3;		nclk_do();&lt;/SCRIPT&gt;&lt;DIV id=content&gt;&lt;SPAN style="DISPLAY: none" id=tempBaseBiblioInfo&gt;&lt;A class=N=a:bil.author,i:55492 href="http://book.naver.com/search/search.nhn?query=%EC%84%B1%EC%9C%A4%EC%A0%95&amp;amp;frameFilterType=1&amp;amp;frameFilterValue=55492"&gt;&lt;FONT color=#0033ac&gt;성윤정&lt;/FONT&gt;&lt;/A&gt;&amp;nbsp; 저&amp;nbsp;&lt;SPAN class=bar&gt;| &lt;/SPAN&gt;&lt;A class=N=a:bil.publisher href="http://book.naver.com/search/search.nhn?filterType=7&amp;amp;query=%EC%82%BC%EC%96%91%EB%AF%B8%EB%94%94%EC%96%B4"&gt;&lt;FONT color=#0033ac&gt;삼양미디어&lt;/FONT&gt;&lt;/A&gt;&amp;nbsp;&lt;SPAN class=bar&gt;| &lt;/SPAN&gt;2009.02.25&lt;/SPAN&gt; &lt;DIV class="thumb size2"&gt;&lt;IMG onerror="this.src='http://static.naver.com/book/image/noimg2.gif';" src="http://bookthumb.phinf.naver.net/cover/054/441/05444167.jpg?type=m1" width=70 height=100&gt;&lt;IMG class=bg_shadow alt="" src="http://sstatic.naver.com/search/images11/blank.gif" width=70 height=106&gt;&lt;/DIV&gt;&lt;DIV class=book_info&gt;&lt;DL&gt;&lt;DT&gt;&lt;FONT face="DotumChe, Sans-serif"&gt;&lt;FONT size=2&gt;&lt;STRONG&gt;&lt;FONT color=#000000&gt;SPRING 2.5실무프로그래밍 &amp;nbsp;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/DT&gt;&lt;DT&gt;&lt;SPAN&gt;&lt;FONT color=#000000 size=2 face="DotumChe, Sans-serif"&gt;&lt;STRONG&gt;성윤정 / 삼양 미디어&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DT&gt;&lt;/DL&gt;&lt;/DIV&gt;&lt;P&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;&lt;FONT size=2&gt;성윤정씨의 책이 그렇듯, 초보들을 상대로 하는 무지막지하게 쉬운 책이긴 하나&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;&lt;FONT size=2&gt;당최 이해가 안되는 프로젝트의 구조 쓸데 없이 자잘하게 나눠둔 프로젝트 설계등은&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;&lt;FONT size=2&gt;내 실력이 미천한지 이해가 되지 않는다.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;&lt;FONT size=2&gt;스프링이 어렵고 힘들게 느껴진다면 한번 쭈욱 실습 해 볼만 한 책.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;여전히 두깨는 쓸데 없으며, 같은 소스의 반복으로 30%는 잡아 먹는다.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/DIV&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5629370754721541274-3409306113138728331?l=genikim.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://genikim.blogspot.com/feeds/3409306113138728331/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://genikim.blogspot.com/2010/04/spring-25-%EC%8B%A4%EB%AC%B4-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5629370754721541274/posts/default/3409306113138728331'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5629370754721541274/posts/default/3409306113138728331'/><link rel='alternate' type='text/html' href='http://genikim.blogspot.com/2010/04/spring-25-%EC%8B%A4%EB%AC%B4-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D.html' title='Spring 2.5 실무 프로그래밍'/><author><name>sap</name><uri>http://www.blogger.com/profile/02773930379424971513</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5629370754721541274.post-4777314428337360397</id><published>2010-04-11T18:12:00.000-07:00</published><updated>2010-12-21T01:07:35.203-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Personal Project'/><title type='text'>나의 첫번째 안드로이드 프로젝트</title><content type='html'>&lt;P&gt;개인적인 안드로이드 공부겸&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;우리 회사를 위해 개인적인 프로젝트를 기획&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Project Name : Where you at&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Contents : 간단하다. 어플리케이션을 실행 시키면 등록된 사원들의 위치정보를 보여준다.&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 파견을 주로 나가는 업체인 만큼 사원들의 위치정보는 서로에게 요긴하게 쓰일 듯&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;5월 15일 이전에 완성하는 것으로 한다.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5629370754721541274-4777314428337360397?l=genikim.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://genikim.blogspot.com/feeds/4777314428337360397/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://genikim.blogspot.com/2010/04/%EB%82%98%EC%9D%98-%EC%B2%AB%EB%B2%88%EC%A7%B8-%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9C-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5629370754721541274/posts/default/4777314428337360397'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5629370754721541274/posts/default/4777314428337360397'/><link rel='alternate' type='text/html' href='http://genikim.blogspot.com/2010/04/%EB%82%98%EC%9D%98-%EC%B2%AB%EB%B2%88%EC%A7%B8-%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9C-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8.html' title='나의 첫번째 안드로이드 프로젝트'/><author><name>sap</name><uri>http://www.blogger.com/profile/02773930379424971513</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5629370754721541274.post-5942356066319126666</id><published>2010-03-09T23:09:00.000-08:00</published><updated>2010-12-21T01:07:34.809-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='액세스거부'/><category scheme='http://www.blogger.com/atom/ns#' term='Resolve'/><category scheme='http://www.blogger.com/atom/ns#' term='이미지업로드'/><category scheme='http://www.blogger.com/atom/ns#' term='FCKeditor'/><category scheme='http://www.blogger.com/atom/ns#' term='에러'/><title type='text'>FCKEditor 이미지 업로드 기능 구현하기</title><content type='html'>FCKEditor를 사용하는 Java 환경에서 이미지 업로드를 구현 하기 위해서는 &lt;br /&gt;FCKEditor Java 버전을 다운받아서 사용해야 한다.&lt;br /&gt;&lt;br /&gt;WAS가 톰캣인 경우라면 별다른 수정없이 웹에 널리 알려진 방법대로 사용이 가능하나,&lt;br /&gt;업로드 쪽을 직접 뜯어 고치고 싶다던지, 톰캣 환경이 아니라면 소스의 수정은 불가피하다.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;우리가 지금 진행중인 프로젝트 역시 조금은 다른 환경에서 가동되므로,&lt;br /&gt;FCKEditor 를 약간 수정 하되, FCKEditor에서 제공하는 디자인과 틀을 그대로 가져가면서&lt;br /&gt;업로드 처리 부분만 제작했다. &lt;br /&gt;다시 간단하게 말해서, FCKEditor 에서 요구하는 양식에 맞춰 주기만 하면 된다.&lt;br /&gt;&lt;br /&gt;서버측 파일 업로드 프로그램이야 알아서 간단하게 개발 가능할 테지만&lt;br /&gt;이를 FCKEditor 이미지 업로드 폼에서 작동 되게 하는건 조금의 설정이 필요!. &lt;br /&gt;&lt;br /&gt;fckeditor 폴더의 editor -&amp;gt; dialog 폴더와 그아래 fck_image 폴더에 우리가 찾는 이미지 업로드 다이얼로그 html 폼과 js 파일이 존재 한다. (이는 FCKEditor 2.6.6 기준이다)&lt;br /&gt;&lt;br /&gt;fck_image.js 파일을 열고 &lt;br /&gt;window.onload 이벤트에서 아래와 같은 부분을 찾아서 직접 만든 업로드 처리 서블릿을 명시한다.&lt;br /&gt;&lt;div style="padding: 10px; background-color: rgb(255, 255, 255); border: 1px dashed rgb(204, 204, 204);"&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; // Set the actual uploader URL.&lt;br /&gt;&amp;nbsp; &amp;nbsp; if ( FCKConfig.ImageUpload )&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: rgb(0, 47, 255);"&gt;&amp;nbsp; GetE('frmUpload').action = "니업로드처리서블릿주소";&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; dialog.SetAutoSize( true ) ;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;여기 주소만 수정해줘도 거의 모든 설정은 끝난 것과 마찬가지&lt;br /&gt;(이부분에서 설정이 중요하다. html 파일의 upload form 영역의 action 주소는 공백으로 놔둘것)&lt;br /&gt;&lt;br /&gt;아래로 더 살펴보면 아래와 같은 두가지 메소드를 찾을 수 있다.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="padding: 10px; background-color: rgb(221, 221, 221); border: 1px dashed rgb(187, 187, 187);"&gt;&lt;span style="font-weight: bold; color: rgb(0, 47, 255);"&gt;function OnUploadCompleted( errorNumber, fileUrl, fileName, customMsg )&lt;/span&gt;&lt;br /&gt;{&lt;br /&gt;&amp;nbsp; &amp;nbsp; // Remove animation&lt;br /&gt;&amp;nbsp; &amp;nbsp; window.parent.Throbber.Hide() ;&lt;br /&gt;&amp;nbsp; &amp;nbsp; GetE( 'divUpload' ).style.display&amp;nbsp; = '' ;&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; switch ( errorNumber )&lt;br /&gt;&amp;nbsp; &amp;nbsp; {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; case 0 : &amp;nbsp;&amp;nbsp; // No errors&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; alert( 'Your file has been successfully uploaded' ) ;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; break ;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; case 1 : &amp;nbsp;&amp;nbsp; // Custom error&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; alert( customMsg ) ;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return ;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; case 101 : &amp;nbsp;&amp;nbsp; // Custom warning&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; alert( customMsg ) ;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; break ;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; case 201 :&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; alert( 'A file with the same name is already available. The uploaded file has been renamed to "' + fileName + '"' ) ;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; break ;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; case 202 :&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; alert( 'Invalid file type' ) ;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return ;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; case 203 :&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; alert( "Security error. You probably don't have enough permissions to upload. Please check your server." ) ;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return ;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; case 500 :&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; alert( 'The connector is disabled' ) ;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; break ;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; default :&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; alert( 'Error on file upload. Error number: ' + errorNumber ) ;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return ;&lt;br /&gt;&amp;nbsp; &amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; sActualBrowser = '' ;&lt;br /&gt;&amp;nbsp; &amp;nbsp; SetUrl( fileUrl ) ;&lt;br /&gt;&amp;nbsp; &amp;nbsp; GetE('frmUpload').reset() ;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;var oUploadAllowedExtRegex &amp;nbsp;&amp;nbsp; = new RegExp( FCKConfig.ImageUploadAllowedExtensions, 'i' ) ;&lt;br /&gt;var oUploadDeniedExtRegex &amp;nbsp;&amp;nbsp; = new RegExp( FCKConfig.ImageUploadDeniedExtensions, 'i' ) ;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 47, 255);"&gt;function CheckUpload()&lt;/span&gt;&lt;br /&gt;{&lt;br /&gt;&amp;nbsp; &amp;nbsp; var sFile = GetE('txtUploadFile').value ;&lt;br /&gt;&amp;nbsp; &amp;nbsp; if ( sFile.length == 0 )&lt;br /&gt;&amp;nbsp; &amp;nbsp; {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; alert( 'Please select a file to upload' ) ;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return false ;&lt;br /&gt;&amp;nbsp; &amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; if ( ( FCKConfig.ImageUploadAllowedExtensions.length &amp;gt; 0 &amp;amp;&amp;amp; !oUploadAllowedExtRegex.test( sFile ) ) ||&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ( FCKConfig.ImageUploadDeniedExtensions.length &amp;gt; 0 &amp;amp;&amp;amp; oUploadDeniedExtRegex.test( sFile ) ) )&lt;br /&gt;&amp;nbsp; &amp;nbsp; {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; OnUploadCompleted( 202 ) ;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return false ;&lt;br /&gt;&amp;nbsp; &amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; // Show animation&lt;br /&gt;&amp;nbsp; &amp;nbsp; window.parent.Throbber.Show( 100 ) ;&lt;br /&gt;&amp;nbsp; &amp;nbsp; GetE( 'divUpload' ).style.display&amp;nbsp; = 'none' ;&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; return true ;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;메소드 명만 봐도 아! 우리는 저것이 뭘 하는 이벤트겠구나 하는 감을 잡을 수 있다.&lt;br /&gt;폼이 전송 되기전 onSubmit 이벤트 처리 메소드이며 하나는 전송이 완료되어 호출 되는 callback 메소드이다.&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 47, 255);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;이 두가지 메소드는 뜯어 고칠 일이 전혀 없다&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;파일 업로드를 처리하는 서블릿에서 파일 전송이 끝났다면 &lt;br /&gt;직접 &lt;span style="font-weight: bold; color: rgb(0, 47, 255);"&gt;OnUploadCompleted &lt;/span&gt;메소드만 호출 해 주면 끝난다.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;ex&lt;/span&gt;: 업로드를 처리하는 서블릿에서 스크립트 메소드 호출&lt;br /&gt;&lt;div style="padding: 10px; background-color: rgb(225, 253, 255); border: 1px dashed rgb(178, 232, 237);"&gt;&amp;nbsp; &amp;nbsp; if(!item.isFormField() &amp;amp;&amp;amp; item.getSize()&amp;gt;0) {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; String fieldName = item.getFieldName();&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; String fileName = item.getName();&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; String contentType = item.getContentType();&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; boolean isInMemory = item.isInMemory();&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; long sizeInBytes = item.getSize();&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; File uploadedFile = new File(savePath,fileName);&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; try {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; item.write(uploadedFile);&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; item.delete();&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; String retVal="0";&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; String newName="";&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; String fileUrl= "http://"+request.getServletRequest().getServerName()+":"+request.getServletRequest().getServerPort()+"/common/uploads/"+fileName;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; String errorMessage="";&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; HttpServletResponse res = request.getServletResponse(true);&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; PrintWriter out = res.getWriter();&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; out.println("&amp;lt;script type=\"text/javascript\"&amp;gt;");&lt;/span&gt;&lt;br style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; out.println(" window.parent.OnUploadCompleted("+retVal+",'"+fileUrl+"','"+newName+"','"+errorMessage+"');");&lt;/span&gt;&lt;br style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; out.println("&amp;lt;/script&amp;gt;");&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; out.flush();&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; out.close();&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;끝...&lt;br /&gt;&lt;br /&gt;혹시라도 위의 작업을 완료하고 이미지를 업로드 하는데 만약, &lt;br /&gt;액세스 거부 에러 또는 권한 없다는 스크립트 에러가 나면 본문과 이 서블릿에서 &lt;br /&gt;document.domain 을 서로 맞춰주면 된다.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5629370754721541274-5942356066319126666?l=genikim.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://genikim.blogspot.com/feeds/5942356066319126666/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://genikim.blogspot.com/2010/03/fckeditor-%EC%9D%B4%EB%AF%B8%EC%A7%80-%EC%97%85%EB%A1%9C%EB%93%9C-%EA%B8%B0%EB%8A%A5-%EA%B5%AC%ED%98%84%ED%95%98%EA%B8%B0.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5629370754721541274/posts/default/5942356066319126666'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5629370754721541274/posts/default/5942356066319126666'/><link rel='alternate' type='text/html' href='http://genikim.blogspot.com/2010/03/fckeditor-%EC%9D%B4%EB%AF%B8%EC%A7%80-%EC%97%85%EB%A1%9C%EB%93%9C-%EA%B8%B0%EB%8A%A5-%EA%B5%AC%ED%98%84%ED%95%98%EA%B8%B0.html' title='FCKEditor 이미지 업로드 기능 구현하기'/><author><name>sap</name><uri>http://www.blogger.com/profile/02773930379424971513</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5629370754721541274.post-8313517737962041325</id><published>2010-03-08T01:51:00.000-08:00</published><updated>2010-12-21T01:07:34.168-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Resolve'/><category scheme='http://www.blogger.com/atom/ns#' term='Access denied'/><category scheme='http://www.blogger.com/atom/ns#' term='웹에디터'/><category scheme='http://www.blogger.com/atom/ns#' term='FCKeditor'/><category scheme='http://www.blogger.com/atom/ns#' term='오류'/><category scheme='http://www.blogger.com/atom/ns#' term='에러'/><category scheme='http://www.blogger.com/atom/ns#' term='액세스 거부'/><title type='text'>IE8에서 FCKEditor 액세스 거부 (Access Denied) 문제 해결하기</title><content type='html'>&lt;br /&gt;중요한 사항이라 기록 해 둠. &lt;br /&gt;(전혀 안쓰는 블로그지만 가끔씩 생각나면 여기다. 쓰게 되는군아!!)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;FCKEditor 2.x 버전에서 (혹은 그 이하도 마찬가지일지도 모름) IE8로 접근 할 시에 &lt;br /&gt;액세스가 거부되었습니다 라는 스크립트 에러 메세지로 글쓰기 영역이 생성되지 않는 문제가 있다.&lt;br /&gt;&lt;br /&gt;해당 문제는 IE8 에서 일어나며 원인은 몇가지 있으나 우리에겐 원인이 중요 한 것이 아니라&lt;br /&gt;해결책과 대안이 늘 중요하다 ㅡ.ㅡ&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;원인과 또 다른 해결 방법: &lt;blockquote&gt;&lt;a target="_blank" href="http://blog.naver.com/webdzang?Redirect=Log&amp;amp;logNo=50047871069"&gt;http://blog.naver.com/webdzang?Redirect=Log&amp;amp;logNo=50047871069&lt;/a&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;하지만 위 링크의 해결 방법은 우리의 상황에 맞지 않으며 &lt;br /&gt;직접적인 원인을 수정해야만 했다.&lt;br /&gt;따라서 구글신에게 문의 해 본 결과, 아래와 같은 해결책을 찾았다.&lt;br /&gt;&lt;br /&gt;소스에 IE8 일때의 경우를 추가: &lt;br /&gt;&lt;blockquote&gt;&lt;p&gt;&amp;nbsp;&lt;a target="_blank" href="http://cksource.com/forums/viewtopic.php?f=6&amp;amp;t=13378&amp;amp;p=36503"&gt;http://cksource.com/forums/viewtopic.php?f=6&amp;amp;t=13378&amp;amp;p=36503&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;&amp;nbsp;&lt;br /&gt;이에 따라 수정 하려면 몇가지 고통이 필요 한데, &lt;br /&gt;Compressed 된 fckeditorcode_ie.js 파일을 그대로 눈알빠지게 봐가며, 변수명 비교해가며, 수정 할 것인가&lt;br /&gt;아니면 source 폴더의 스크립트 파일들을 수정하여 재 압축 할 것인가 라는 선택&lt;br /&gt;&lt;br /&gt;선자는 고통이고 후자는 좀 귀찮다..&lt;br /&gt;귀찮은건 고통보다 싫기에,&amp;nbsp; 선자를 택하여 수정 했다.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;fckeditorcode_ie.js 파일을 연다.&lt;/span&gt; (FCKEditor 2.6.6 버전 기준)&lt;br /&gt;&lt;div style="padding: 10px; background-color: rgb(255, 255, 255); border: 1px dashed rgb(204, 204, 204);"&gt;&lt;br /&gt;var FCKBrowserInfo={IsIE:/*@cc_on!@*/false,IsIE7:/*@cc_on!@*/false&amp;amp;&amp;amp;(parseInt(s.match(/msie (\d+)/)[1],10)&amp;gt;=7),IsIE6:/*@cc_on!@*/false&amp;amp;&amp;amp;(parseInt(s.match(/msie (\d+)/)[1],10)&amp;gt;=6),IsSafari:s.Contains(' applewebkit/'),IsOpera:!!window.opera,IsAIR:s.Contains(' adobeair/'),IsMac:s.Contains('macintosh')};&lt;br /&gt;&lt;/div&gt;&lt;br style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;부분을 찾아 &lt;/span&gt;&lt;br style="font-weight: bold;"&gt;&lt;br style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;IsIE8: /*@cc_on!@*/false &amp;amp;&amp;amp; ( parseInt( s.match( /msie (\d+)/ )[1],10)&amp;gt;=8) 를 추가한다. &lt;/span&gt;&lt;br style="font-weight: bold;"&gt;&lt;div style="padding: 10px; background-color: rgb(221, 221, 221); border: 1px dashed rgb(187, 187, 187);"&gt;&lt;br /&gt;var FCKBrowserInfo={IsIE:/*@cc_on!@*/false,&lt;span style="color: rgb(255, 102, 0);"&gt;IsIE8: /*@cc_on!@*/false &amp;amp;&amp;amp; ( parseInt( s.match( /msie (\d+)/ )[1],10)&amp;gt;=8),&lt;/span&gt;IsIE7:/*@cc_on!@*/false&amp;amp;&amp;amp;(parseInt(s.match(/msie (\d+)/)[1],10)&amp;gt;=7),IsIE6:/*@cc_on!@*/false&amp;amp;&amp;amp;(parseInt(s.match(/msie (\d+)/)[1],10)&amp;gt;=6),IsSafari:s.Contains(' applewebkit/'),IsOpera:!!window.opera,IsAIR:s.Contains(' adobeair/'),IsMac:s.Contains('macintosh')};&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;fckeditor.html 파일을 열어 아래 부분을 &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="padding: 10px; background-color: rgb(255, 235, 255); border: 1px solid rgb(246, 209, 246);"&gt;&lt;br /&gt;// Save a reference to the default domain.&lt;br /&gt;var FCK_ORIGINAL_DOMAIN ;&lt;br /&gt;&lt;br /&gt;// Automatically detect the correct document.domain (#123).&lt;br /&gt;(function()&lt;br /&gt;{&lt;br /&gt;&amp;nbsp; &amp;nbsp; var d = FCK_ORIGINAL_DOMAIN = document.domain ;&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; while ( true )&lt;br /&gt;&amp;nbsp; &amp;nbsp; {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Test if we can access a parent property.&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; try&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var test = window.parent.document.domain ;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; break ;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; catch( e ) {}&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Remove a domain part: www.mytest.example.com =&amp;gt; mytest.example.com =&amp;gt; example.com ...&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; d = d.replace( /.*?(?:\.|$)/, '' ) ;&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if ( d.length == 0 )&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; break ; &amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; // It was not able to detect the domain.&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; try&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; document.domain = d ;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; catch (e)&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; break ;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;&amp;nbsp; &amp;nbsp; }&lt;br /&gt;})() ;&lt;br /&gt;&lt;br /&gt;// Save a reference to the detected runtime domain.&lt;br /&gt;var FCK_RUNTIME_DOMAIN = document.domain ;&lt;br /&gt;&lt;br /&gt;var FCK_IS_CUSTOM_DOMAIN = ( FCK_ORIGINAL_DOMAIN != FCK_RUNTIME_DOMAIN ) ;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;아래와 같이 바꾼다&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="padding: 10px; background-color: rgb(225, 253, 255); border: 1px dashed rgb(178, 232, 237);"&gt;var IsIE8 = /*@cc_on!@*/false &amp;amp;&amp;amp; ( parseInt( navigator.userAgent.toLowerCase().match( /msie (\d+)/ )[1], 10 ) &amp;gt;= 8 );&lt;br /&gt;// if IE8, setup a bunch of popups that use a domain we can touch....&lt;br /&gt;var GLOBAL_POPUP_BUCKET_FCK_IE8 = [];&lt;br /&gt;if(IsIE8){&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; for(i=0; i&amp;lt;20; i++){&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; GLOBAL_POPUP_BUCKET_FCK_IE8.push(window.createPopup());&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;// Save a reference to the default domain.&lt;br /&gt;var FCK_ORIGINAL_DOMAIN ;&lt;br /&gt;var FCK_RUNTIME_DOMAIN ;&lt;br /&gt;// Automatically detect the correct document.domain (#123).&lt;br /&gt;(function()&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp; var d = FCK_ORIGINAL_DOMAIN = FCK_RUNTIME_DOMAIN = document.domain ;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; while ( true )&lt;br /&gt;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; // Test if we can access a parent property.&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; try&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; var test = window.parent.document.domain ;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; break ;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; catch( e ) {}&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; // Remove a domain part: www.mytest.example.com =&amp;gt; mytest.example.com =&amp;gt; example.com ...&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; d = d.replace( /.*?(?:\.|$)/, '' ) ;&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; if ( d.length == 0 )&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; break ; &amp;nbsp; &amp;nbsp;&amp;nbsp; // It was not able to detect the domain.&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; try&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; // Before setting document.domain, set it for all the popups we've created.&amp;nbsp; I hope this fucking works....&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; for(i=0; i &amp;lt; GLOBAL_POPUP_BUCKET_FCK_IE8.length; i++){&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; GLOBAL_POPUP_BUCKET_FCK_IE8[i].document.domain = d;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; document.domain = d ;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; catch (e)&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; break ;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;})() ;&lt;br /&gt;&lt;br /&gt;var FCK_RUNTIME_DOMAIN = document.domain ;&lt;br /&gt;&lt;br /&gt;var FCK_IS_CUSTOM_DOMAIN = ( FCK_ORIGINAL_DOMAIN != FCK_RUNTIME_DOMAIN ) ;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;다시 fckeditorcode_ie.js 를 열어 아래 부분에&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="padding: 10px; background-color: rgb(244, 244, 244); border: 1px solid rgb(204, 204, 204);"&gt;var B; if (FCKBrowserInfo.IsIE){this._Popup=this._Window.createPopup();var C=this._Window.document;if (FCK_IS_CUSTOM_DOMAIN&amp;amp;&amp;amp;!FCKBrowserInfo.IsIE7){C.domain=FCK_ORIGINAL_DOMAIN;document.domain=FCK_ORIGINAL_DOMAIN;};B=this.Document=this._Popup.document;if (FCK_IS_CUSTOM_DOMAIN){B.domain=FCK_RUNTIME_DOMAIN;C.domain=FCK_RUNTIME_DOMAIN;document.domain=FCK_RUNTIME_DOMAIN;};FCK.IECleanup.AddItem(this,FCKPanel_Cleanup);}else{var D=this._IFrame=this._Window.document.createElement('iframe');&lt;/div&gt;&lt;br style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;빨간색으로 표시된 브라우저 처리 부분을 추가해준다&lt;/span&gt;&lt;br style="font-weight: bold;"&gt;&lt;br /&gt;&lt;div style="padding: 10px; background-color: rgb(244, 244, 244); border: 1px dashed rgb(204, 204, 204);"&gt;var B; &lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;if ( FCKBrowserInfo.IsIE8 )&lt;/span&gt;&lt;br style="color: rgb(255, 0, 0);"&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; {&lt;/span&gt;&lt;br style="color: rgb(255, 0, 0);"&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; this._Popup = GLOBAL_POPUP_BUCKET_FCK_IE8.pop();&lt;/span&gt;&lt;br style="color: rgb(255, 0, 0);"&gt;&lt;br style="color: rgb(255, 0, 0);"&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; B = this.Document = this._Popup.document ;&lt;/span&gt;&lt;br style="color: rgb(255, 0, 0);"&gt;&lt;br style="color: rgb(255, 0, 0);"&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; FCK.IECleanup.AddItem( this, FCKPanel_Cleanup ) ;&lt;/span&gt;&lt;br style="color: rgb(255, 0, 0);"&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; }&lt;/span&gt;&lt;br style="color: rgb(255, 0, 0);"&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;nbsp; &amp;nbsp; else&lt;/span&gt; if (FCKBrowserInfo.IsIE){this._Popup=this._Window.createPopup();var C=this._Window.document;if (FCK_IS_CUSTOM_DOMAIN&amp;amp;&amp;amp;!FCKBrowserInfo.IsIE7){C.domain=FCK_ORIGINAL_DOMAIN;document.domain=FCK_ORIGINAL_DOMAIN;};B=this.Document=this._Popup.document;if (FCK_IS_CUSTOM_DOMAIN){B.domain=FCK_RUNTIME_DOMAIN;C.domain=FCK_RUNTIME_DOMAIN;document.domain=FCK_RUNTIME_DOMAIN;};FCK.IECleanup.AddItem(this,FCKPanel_Cleanup);}else{var D=this._IFrame=this._Window.document.createElement('iframe');&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;끝 ㅡ.ㅡ;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5629370754721541274-8313517737962041325?l=genikim.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://genikim.blogspot.com/feeds/8313517737962041325/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://genikim.blogspot.com/2010/03/ie8%EC%97%90%EC%84%9C-fckeditor-%EC%95%A1%EC%84%B8%EC%8A%A4-%EA%B1%B0%EB%B6%80-access-denied-%EB%AC%B8%EC%A0%9C.html#comment-form' title='5개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5629370754721541274/posts/default/8313517737962041325'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5629370754721541274/posts/default/8313517737962041325'/><link rel='alternate' type='text/html' href='http://genikim.blogspot.com/2010/03/ie8%EC%97%90%EC%84%9C-fckeditor-%EC%95%A1%EC%84%B8%EC%8A%A4-%EA%B1%B0%EB%B6%80-access-denied-%EB%AC%B8%EC%A0%9C.html' title='IE8에서 FCKEditor 액세스 거부 (Access Denied) 문제 해결하기'/><author><name>sap</name><uri>http://www.blogger.com/profile/02773930379424971513</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5629370754721541274.post-8142241795454495016</id><published>2009-12-27T21:25:00.000-08:00</published><updated>2010-12-21T01:07:33.630-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='json'/><category scheme='http://www.blogger.com/atom/ns#' term='jQuery'/><title type='text'>jQuery Plugin (폼 체크)</title><content type='html'>&lt;script src='http://ss.textcube.com/service/blog/script/blogger.js' type='text/javascript'&gt;&lt;/script&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;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;내 스스로의 기록들을 위한 포스팅..&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;지금 프로젝트에 쓰이고 있는 효과인데.. 간단한 플러그인을 만들어보았다.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;지겨운 alert창 .... 일일이 텍스트필드를 체크하며 아래와 같은 소스코드를 반복한다.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="border: 1px dashed rgb(204, 204, 204); padding: 10px; background-color: rgb(244, 244, 244);"&gt;&lt;p&gt;if(sadasd.value=="")&lt;/p&gt;&lt;p&gt;&amp;nbsp; alert("xxxxx를 입력하세요");&lt;/p&gt;&lt;p&gt;&amp;nbsp; sadasd.focus();&lt;/p&gt;&lt;p&gt;else if(sdsad1.value=="")&lt;/p&gt;&lt;p&gt;&amp;nbsp; alert("yyyy를 입력하세요..");&lt;/p&gt;&lt;p&gt;else...&lt;/p&gt;&lt;p&gt;.&lt;/p&gt;&lt;p&gt;else..&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;입력텍스트가 수십개라면 저렇게 일일이 체크하고 설명하고, 포커스를 갖다줘야 하는가?&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;저짓은 정말... 개발자나 유저에게나 서로에게 힘든일인것 같다.&lt;/p&gt;&lt;p&gt;간단하면서도 심플한 시각적인 효과로 필수 입력창을 알리면 &lt;/p&gt;&lt;p&gt;개발자도 편하고 유저의 입장에서도 짜증나는 얼럿 경고창 확인 눌러대지 않아도 된다.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;그래서 만든 텍스트 입력창 체크 플러그인.....( 이런건 널렸지만..)&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;table style="border: medium none ; width: 450px; height: 40px;" bgcolor="#aaaaaa" cellpadding="0" cellspacing="1"&gt;&lt;tbody&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td&gt;&amp;nbsp;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;img src="http://ss.textcube.com/blog/3/39281/attach/XMi3GZk5mS.jpg" style="width:542px;height:133px;" alt=""  /&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td&gt;이런 텍스트가 입력 필드가있다.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;table style="border: medium none ; width: 450px; height: 40px;" bgcolor="#aaaaaa" cellpadding="0" cellspacing="1"&gt;&lt;tbody&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td&gt;&amp;nbsp;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;img src="http://ss.textcube.com/blog/3/39281/attach/XIs64wiMJQ.jpg" style="width:548px;height:134px;" alt=""  /&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td&gt;입력하지 않고 ADD를 누르면 주어진 색깔대로 배경을 바꾼다.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;table style="border: medium none ; width: 450px; height: 40px;" bgcolor="#aaaaaa" cellpadding="0" cellspacing="1"&gt;&lt;tbody&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td&gt;&amp;nbsp;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;img src="http://ss.textcube.com/blog/3/39281/attach/XMi3GZk5mS.jpg" style="width:542px;height:133px;" alt=""  /&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ffffff"&gt;&lt;td&gt;주어진 시간 경과후 다시 원래 색깔대로 돌아간다.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;a href="http://ss.textcube.com/blog/3/39281/attach/XVoViVl0pO.js" rel="enclosure" &gt;&lt;img src="http://ss.textcube.com/service/blog/image/extension/unknown.gif" alt="" style="vertical-align: middle;" /&gt; jquery.checkformtext.kyj_1.js&lt;/a&gt;&lt;/div&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;소스는 더럽게 허접하고 간단해서..... 1초만 봐도 알게된다..;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5629370754721541274-8142241795454495016?l=genikim.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://genikim.blogspot.com/feeds/8142241795454495016/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://genikim.blogspot.com/2009/12/jquery-plugin-%ED%8F%BC-%EC%B2%B4%ED%81%AC.html#comment-form' title='3개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5629370754721541274/posts/default/8142241795454495016'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5629370754721541274/posts/default/8142241795454495016'/><link rel='alternate' type='text/html' href='http://genikim.blogspot.com/2009/12/jquery-plugin-%ED%8F%BC-%EC%B2%B4%ED%81%AC.html' title='jQuery Plugin (폼 체크)'/><author><name>sap</name><uri>http://www.blogger.com/profile/02773930379424971513</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5629370754721541274.post-7493193898673013534</id><published>2009-10-25T06:06:00.000-07:00</published><updated>2010-12-21T01:07:33.138-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='struts2'/><category scheme='http://www.blogger.com/atom/ns#' term='ajax'/><category scheme='http://www.blogger.com/atom/ns#' term='json'/><category scheme='http://www.blogger.com/atom/ns#' term='DoubleSelect'/><category scheme='http://www.blogger.com/atom/ns#' term='더블셀렉트'/><category scheme='http://www.blogger.com/atom/ns#' term='jQuery'/><title type='text'>Struts2 jQuery JSON 으로 구현한 더블셀렉트</title><content type='html'>&lt;DIV style="BORDER-BOTTOM: #f6d1f6 1px dashed; BORDER-LEFT: #f6d1f6 1px dashed; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #ffebff; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BORDER-TOP: #f6d1f6 1px dashed; BORDER-RIGHT: #f6d1f6 1px dashed; PADDING-TOP: 10px"&gt;&lt;P&gt;•본 코드는 개인적인 공부용으로 또는 그냥 생각나는 데로 만들어 본, 초보 개발자의 &amp;nbsp;&lt;/P&gt;&lt;P&gt;쓰레기 코드 입니다. 아무렇게나 수정 하실 수 있으며 코드에 관한 개선사항은 언제든지 환영합니다.&lt;/P&gt;&lt;/DIV&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;예전에 지금 진행 하고 있는 프로젝트에 대비해 한번 만들어 본것인데..&lt;/P&gt;&lt;P&gt;역시나 간단하다. 조금 까다로운게 있다면 Struts2 는 Dojo 라는 자바스크립트 툴을 사용 한다는 것인데&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Struts2 관련 서적을 뒤져봐도 Struts2 와 Dojo 를 사용한 예제는 극히 적으며&lt;/P&gt;&lt;P&gt;외우기도 힘든 struts2 tag library 를 사용해가며 낯선 Dojo 를 사용 할 바에야&lt;/P&gt;&lt;P&gt;그냥 jQuery 로 갖다 쓰기로 했다-_-;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;jQuery 로 비동기 통신한 데이터를 javascript 단에서 처리 하려면 json 으로 데이터를 받는것이&lt;/P&gt;&lt;P&gt;반드시 필요하다.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;struts2 는 json 을 완벽히(?) 그리고 간단하게 지원해주고 있다.&lt;/P&gt;&lt;P&gt;먼저 struts2 에서 result type으로 json 으로 받으려면 json 라이브러리를 추가 해주어야 한다.&lt;/P&gt;&lt;P&gt;&lt;div class="imageblock center" style="text-align: center; clear: both;"&gt;&lt;a href="http://ss.textcube.com/blog/3/39281/attach/XXjpJSzgNc.jar" rel="enclosure" &gt;&lt;img src="http://ss.textcube.com/service/blog/image/extension/unknown.gif" alt="" style="vertical-align: middle;" /&gt; jsonplugin-0.30.jar&lt;/a&gt;&lt;/div&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;struts2 최신 버전은 2.1.8 버전 부터는 번들로 포함 되어 있다고 하는데&lt;/P&gt;&lt;P&gt;지금 구버전이라 ..;;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;위의 라이브러리 파일을 WEB-INF/lib 에 추가하고 작업을 시작한다.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;먼저 struts.xml 파일에서 result type을 json 으로 사용 하려면 다음과 같이 해야 한다.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;DIV style="BORDER-BOTTOM: #cccccc 1px dashed; BORDER-LEFT: #cccccc 1px dashed; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #ffffff; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BORDER-TOP: #cccccc 1px dashed; BORDER-RIGHT: #cccccc 1px dashed; PADDING-TOP: 10px"&gt;&amp;nbsp;&amp;lt;package name="example" namespace=""&lt;FONT color=#ff0000&gt; extends="json-default&lt;/FONT&gt;"&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;lt;action name="JSONExample" class="JSONExample"&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;&lt;FONT color=#ff0000&gt;result type="json"/&lt;/FONT&gt;&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;lt;/action&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;lt;action name="JSONForm" class="JSONForm"&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;result type="json"/&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;lt;/action&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;lt;/package&amp;gt;&lt;/DIV&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;중요한 부분은 빨간색 표시 해두었다.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;반드시 package가 json-default를 상속 받아야 하며 result type에는 json을 명시하여야 한다.&lt;/P&gt;&lt;P&gt;또한 json 은 주로 비동기 요청 (Ajax) 에서 요청 되어지므로 결과 페이지는 안적어두 된다..&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;이제 jQuery에서 $.getJSON 메소드를 사용할 준비가 되었다.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;먼저.. &lt;/P&gt;&lt;P&gt;Action 파일을 작성 해보자. 첫번째 action 요청은 MakeSelect.java 파일에서 이루어진다&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;MakeSelect.java&lt;/P&gt;&lt;P&gt;&lt;DIV style="BORDER-BOTTOM: #cccccc 1px dashed; BORDER-LEFT: #cccccc 1px dashed; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #f4f4f4; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BORDER-TOP: #cccccc 1px dashed; BORDER-RIGHT: #cccccc 1px dashed; PADDING-TOP: 10px"&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;import java.util.*;&lt;/P&gt;&lt;P&gt;import com.opensymphony.xwork2.*;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;public class MakeSelect extends ActionSupport{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;private HashMap hm = new HashMap();&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;public String execute() throws Exception {&lt;br /&gt;&amp;nbsp; &lt;br /&gt;&amp;nbsp; hm.put("001", "서울시");&lt;br /&gt;&amp;nbsp; hm.put("002", "부산시");&lt;br /&gt;&amp;nbsp; hm.put("003", "마산시");&lt;br /&gt;&amp;nbsp; &lt;br /&gt;&amp;nbsp; return SUCCESS;&lt;br /&gt;&amp;nbsp;}&lt;/P&gt;&lt;P&gt;&amp;nbsp;public HashMap getHm() {&lt;br /&gt;&amp;nbsp; return hm;&lt;br /&gt;&amp;nbsp;}&lt;/P&gt;&lt;P&gt;&amp;nbsp;public void setHm(HashMap hm) {&lt;br /&gt;&amp;nbsp; this.hm = hm;&lt;br /&gt;&amp;nbsp;}&lt;br /&gt;&amp;nbsp; &lt;br /&gt;}&lt;br /&gt;&lt;/P&gt;&lt;/DIV&gt;&lt;P&gt;&lt;P&gt;&lt;P&gt;그리고 view 페이지에서 첫번째 셀렉트를 고르면 보여줄 두번째 셀렉트 리스트를 위한 액션&lt;br /&gt;&lt;P&gt;JSONExample.java &lt;P&gt;&lt;DIV style="BORDER-BOTTOM: #cccccc 1px dashed; BORDER-LEFT: #cccccc 1px dashed; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #f4f4f4; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BORDER-TOP: #cccccc 1px dashed; BORDER-RIGHT: #cccccc 1px dashed; PADDING-TOP: 10px"&gt;&lt;P&gt;import com.opensymphony.xwork2.*;&lt;br /&gt;import java.util.*; &lt;P&gt;&lt;P&gt;public class JSONExample extends ActionSupport{ &lt;P&gt;&lt;P&gt;&amp;nbsp;private Map hMap = new HashMap();&lt;br /&gt;&amp;nbsp;private String value;&lt;FONT color=#338000&gt; // 셀렉트 구분값&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;public String execute() {&lt;br /&gt;&amp;nbsp; &lt;br /&gt;&amp;nbsp; if(value.equals("001"))&lt;br /&gt;&amp;nbsp; {&lt;br /&gt;&amp;nbsp; &amp;nbsp;hMap.put("001001","종로구");&lt;br /&gt;&amp;nbsp; &amp;nbsp;hMap.put("001002","중구"); &lt;br /&gt;&amp;nbsp; &amp;nbsp;hMap.put("001003","강남구");&lt;br /&gt;&amp;nbsp; }&lt;br /&gt;&amp;nbsp; else if(value.equals("002")) &lt;br /&gt;&amp;nbsp; {&amp;nbsp; &lt;br /&gt;&amp;nbsp; &amp;nbsp;hMap.put("002001","몰라 부산1");&lt;br /&gt;&amp;nbsp; &amp;nbsp;hMap.put("002002","모른다니까 부산2");&lt;br /&gt;&amp;nbsp; &amp;nbsp;hMap.put("002003","아아아아");&lt;br /&gt;&amp;nbsp; &amp;nbsp;hMap.put("002004","kaskdkasd");&lt;br /&gt;&amp;nbsp; }&lt;br /&gt;&amp;nbsp; else&lt;br /&gt;&amp;nbsp; {&lt;br /&gt;&amp;nbsp; &amp;nbsp;hMap.put("003001","회원구");&lt;br /&gt;&amp;nbsp; &amp;nbsp;hMap.put("003002","합포구"); &lt;br /&gt;&amp;nbsp; }&lt;br /&gt;&amp;nbsp; return SUCCESS;&lt;br /&gt;&amp;nbsp; &amp;nbsp; } &lt;br /&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;public Map getHMap() {&lt;br /&gt;&amp;nbsp; return hMap;&lt;br /&gt;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;public void setHMap(Map hMap) {&lt;br /&gt;&amp;nbsp; this.hMap = hMap;&lt;br /&gt;&amp;nbsp;} &lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;/DIV&gt;&lt;P&gt;&lt;P&gt;&lt;P&gt;&lt;P&gt;액션을 만들었으니 struts.xml 에서 매핑을 시켜줘야겠지.. &lt;P&gt;&lt;P&gt;struts.xml &lt;P&gt;&lt;DIV style="BORDER-BOTTOM: #f6d1f6 1px dashed; BORDER-LEFT: #f6d1f6 1px dashed; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #ffebff; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BORDER-TOP: #f6d1f6 1px dashed; BORDER-RIGHT: #f6d1f6 1px dashed; PADDING-TOP: 10px"&gt;&lt;P&gt;&amp;lt;struts&amp;gt; &lt;P&gt;&amp;nbsp;&lt;FONT color=#4dbf00&gt;&amp;nbsp;&amp;nbsp; &amp;lt;!-- 첫번째 액션에서는 json 타입이 아니다. --&amp;gt; &lt;/FONT&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;lt;package name="default" namespace="" extends="struts-default"&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;action name="myaction" class="MakeSelect"&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;result&amp;gt;/jsp/myaction.jsp&amp;lt;/result&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/action&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/package&amp;gt; &lt;P&gt;&lt;P&gt;&lt;FONT color=#4dbf00&gt;&amp;nbsp;&amp;nbsp; &amp;lt;!-- 비동기 요청이 이루어질 액션 --&amp;gt; &lt;/FONT&gt;&lt;P&gt;&lt;FONT color=#4dbf00&gt;&amp;nbsp; &lt;/FONT&gt;&lt;P&gt;&lt;FONT color=#4dbf00&gt;&amp;nbsp; &amp;nbsp; &amp;lt;!-- Add JSON packages here --&amp;gt;&lt;br /&gt;&lt;/FONT&gt;&amp;nbsp;&amp;lt;package name="example" namespace="" extends="json-default"&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;lt;action name="JSONExample" class="JSONExample"&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;result type="json"/&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;lt;/action&amp;gt; &lt;P&gt;&amp;nbsp;&amp;lt;/package&amp;gt; &lt;P&gt;&amp;lt;/struts&amp;gt; &lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/DIV&gt;&lt;P&gt;&lt;P&gt;&lt;P&gt;이제 비동기 요청을 할 자바스크립트 파일.. &lt;P&gt;&lt;P&gt;jQuery-getJSON.js &lt;P&gt;&lt;DIV style="BORDER-BOTTOM: #b4997e 1px dashed; BORDER-LEFT: #b4997e 1px dashed; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #e6d8c9; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BORDER-TOP: #b4997e 1px dashed; BORDER-RIGHT: #b4997e 1px dashed; PADDING-TOP: 10px"&gt;&lt;P&gt;&lt;STRONG&gt;&lt;FONT color=#338000&gt;// 첫번쨰 인자 url 은&amp;nbsp; 요청 주소, param은 파라미터, callback은 알다시피..;&lt;/FONT&gt;&lt;/STRONG&gt; &lt;P&gt;function jqGetJSON(url,param,callback,indicator)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;if(indicator) &amp;nbsp;&lt;STRONG&gt; &lt;/STRONG&gt;&lt;FONT color=#4dbf00&gt;&lt;STRONG&gt;&lt;FONT color=#338000&gt;//indicator 는 로딩 이미지 표시 여부&lt;br /&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&amp;nbsp;&lt;/FONT&gt;{&lt;br /&gt;&amp;nbsp; makeLoadingDiv();&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&lt;FONT color=#338000&gt;//ajax 요청이 시작되기 전에 일어나는 전역함수 ajaxStart&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&lt;FONT color=#338000&gt;//로딩중 이미지를 표시한다.&lt;br /&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&amp;nbsp; $("#divLoading").ajaxStart(function(){&lt;br /&gt;&amp;nbsp; &amp;nbsp;$(this).show();&lt;br /&gt;&amp;nbsp; }); &lt;br /&gt;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&lt;FONT color=#338000&gt;//jQuery 의 getJSON 요청 시작&lt;br /&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&amp;nbsp;$.getJSON(url,param,callback);&lt;br /&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&lt;FONT color=#338000&gt;// 로딩 이미지를 표시 했다면 숨긴다.&lt;br /&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&amp;nbsp;if(indicator)&lt;br /&gt;&amp;nbsp;{&lt;br /&gt;&amp;nbsp; $("#divLoading").ajaxStop(function(){&lt;br /&gt;&amp;nbsp; &amp;nbsp;$(this).hide();&lt;br /&gt;&amp;nbsp; });&lt;br /&gt;&amp;nbsp;}&lt;br /&gt;} &lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&lt;FONT color=#338000&gt;// 로딩 이미지 영역을 만든다.&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;function makeLoadingDiv() &lt;br /&gt;{&lt;br /&gt;&amp;nbsp;if (document.getElementById("divLoading")) &lt;br /&gt;&amp;nbsp;{&lt;br /&gt;&amp;nbsp; var str = '';&lt;br /&gt;&amp;nbsp; str += "&amp;lt;div id='divLoading' style='display：none;z-index:1002;position：absolute;'&amp;gt;";&lt;br /&gt;&amp;nbsp; str += " &amp;lt;img src='./img/indicator.gif' alt='로딩중..' /&amp;gt;";&lt;br /&gt;&amp;nbsp; str += "&amp;lt;/div&amp;gt;";&lt;br /&gt;&amp;nbsp; &lt;br /&gt;&amp;nbsp; $("body").append(str);&lt;br /&gt;&amp;nbsp;}&lt;br /&gt;}&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/DIV&gt;&lt;P&gt;&lt;P&gt;&lt;P&gt;이제 view 페이지 &lt;DIV style="BORDER-BOTTOM: #cccccc 1px dashed; BORDER-LEFT: #cccccc 1px dashed; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #f4f4f4; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BORDER-TOP: #cccccc 1px dashed; BORDER-RIGHT: #cccccc 1px dashed; PADDING-TOP: 10px"&gt;&lt;P&gt;&lt;P&gt;&amp;lt;%@ page language="java" contentType="text/html; charset=EUC-KR"&lt;br /&gt;&amp;nbsp; &amp;nbsp; pageEncoding="EUC-KR"%&amp;gt;&lt;br /&gt;&amp;lt;%@ page import="java.util.*"%&amp;gt;&lt;br /&gt;&amp;lt;%&lt;br /&gt;&amp;nbsp;HashMap hm = (HashMap)request.getAttribute("hm");&lt;br /&gt;%&amp;gt;&lt;br /&gt;&amp;lt;!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "&lt;A href="http://www.w3.org/TR/html4/loose.dtd"&gt;http://www.w3.org/TR/html4/loose.dtd&lt;/A&gt;"&amp;gt;&lt;br /&gt;&amp;lt;html&amp;gt;&lt;br /&gt;&amp;lt;head&amp;gt;&lt;/P&gt;&lt;P&gt;&lt;br /&gt;&amp;lt;script type="text/javascript" src="./script/jquery-1.3.2.js"&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&amp;lt;script type="text/javascript" src="./script/jQuery-getJSON.js"&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&amp;lt;script type="text/javascript"&amp;gt;&lt;br /&gt;&amp;nbsp;$(function() {&lt;/P&gt;&lt;P&gt;&lt;br /&gt;&amp;nbsp;&lt;STRONG&gt;&lt;FONT color=#338000&gt; // 첫번째 셀렉트 박스에서 change 이벤트가 일어나면 ajax 요청&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; $("#s1").change(function(){&lt;br /&gt;&amp;nbsp; &amp;nbsp;jqGetJSON("JSONExample.action",{value:$(this).val()},loadSelect,true);&lt;br /&gt;&amp;nbsp; }); &lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;}); &lt;/P&gt;&lt;P&gt;&lt;P&gt;&amp;nbsp;function loadSelect(data)&lt;br /&gt;&amp;nbsp;{ &lt;br /&gt;&amp;nbsp; var sval = $("#s1").val();&lt;br /&gt;&amp;nbsp; if(sval!="none")&lt;br /&gt;&amp;nbsp; {&lt;br /&gt;&amp;nbsp; &amp;nbsp;$("#s2").attr("disabled",false);&lt;br /&gt;&amp;nbsp; &amp;nbsp;$("#s2").each(function(){ this.options.length=0;});&lt;br /&gt;&amp;nbsp; &amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&lt;FONT color=#338000&gt;&amp;nbsp;//넘어온 JSON의 property 들로 option을 생성한다.&lt;br /&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&amp;nbsp; &amp;nbsp;for(var myData in data.HMap)&lt;br /&gt;&amp;nbsp; &amp;nbsp;{&lt;br /&gt;&amp;nbsp; &amp;nbsp; $("#s2").each(function(){&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;var option = new Option(data.HMap[myData], myData);&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;if($.browser.msie)&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; this.add(option);&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;else&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; this.add(option,null); &amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; });&lt;br /&gt;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp; }&lt;br /&gt;&amp;nbsp; else if(sval=="none")&lt;br /&gt;&amp;nbsp; { &lt;br /&gt;&amp;nbsp; &amp;nbsp;$("#s2").attr("disabled","true");&lt;br /&gt;&amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;} &lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;lt;/script&amp;gt;&lt;/P&gt;&lt;P&gt;&lt;br /&gt;&amp;lt;meta http-equiv="Content-Type" content="text/html; charset=EUC-KR"&amp;gt;&lt;br /&gt;&amp;lt;title&amp;gt;Insert title here&amp;lt;/title&amp;gt;&lt;br /&gt;&amp;lt;/head&amp;gt; &lt;br /&gt;&amp;lt;body&amp;gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&lt;FONT color=#338000&gt;&amp;lt;!-- 본문 시작 --&amp;gt;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&lt;FONT color=#338000&gt;&amp;lt;!-- 첫번쨰 액션에서 받아온 데이터로 셀렉트 리스트를 만든다. --&amp;gt;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;lt;select name="s1" id="s1"&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;lt;option value="none"&amp;gt;-----선택--------&amp;lt;/option&amp;gt;&lt;br /&gt;&amp;lt;%&lt;br /&gt;&amp;nbsp;Iterator it = hm.keySet().iterator();&lt;br /&gt;&amp;nbsp;while(it.hasNext())&lt;br /&gt;&amp;nbsp;{&lt;br /&gt;&amp;nbsp; String key = (String)it.next(); &lt;br /&gt;&amp;nbsp; String value = (String)hm.get(key);&lt;br /&gt;%&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;lt;option value=&amp;lt;%=key %&amp;gt;&amp;gt;&amp;lt;%=value %&amp;gt;&amp;lt;/option&amp;gt;&lt;br /&gt;&amp;lt;%&lt;br /&gt;&amp;nbsp;}&lt;br /&gt;%&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;lt;/select&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&amp;nbsp; &amp;amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;lt;select name="s2" id="s2" disabled="disabled"&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;lt;option value="none"&amp;gt;---시를 선택하세요---&amp;lt;/option&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;lt;/select&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;lt;/body&amp;gt; &lt;br /&gt;&amp;lt;/html&amp;gt; &lt;/P&gt;&lt;P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/DIV&gt;&lt;P&gt;&lt;P&gt;.... &lt;P&gt;여기까지다.. &lt;P&gt;&lt;P&gt;struts2에서 json 타입을 사용하면 알아서 json 구조로 바꿔서 넘어오니 &lt;P&gt;eval 함수를 사용할 필요도 없고 너무너무 간단해진다.. &lt;P&gt;&lt;P&gt;&lt;P&gt;끝 &lt;P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5629370754721541274-7493193898673013534?l=genikim.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://genikim.blogspot.com/feeds/7493193898673013534/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://genikim.blogspot.com/2009/10/struts2-jquery-json-%EC%9C%BC%EB%A1%9C-%EA%B5%AC%ED%98%84%ED%95%9C-%EB%8D%94%EB%B8%94%EC%85%80%EB%A0%89%ED%8A%B8.html#comment-form' title='2개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5629370754721541274/posts/default/7493193898673013534'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5629370754721541274/posts/default/7493193898673013534'/><link rel='alternate' type='text/html' href='http://genikim.blogspot.com/2009/10/struts2-jquery-json-%EC%9C%BC%EB%A1%9C-%EA%B5%AC%ED%98%84%ED%95%9C-%EB%8D%94%EB%B8%94%EC%85%80%EB%A0%89%ED%8A%B8.html' title='Struts2 jQuery JSON 으로 구현한 더블셀렉트'/><author><name>sap</name><uri>http://www.blogger.com/profile/02773930379424971513</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5629370754721541274.post-8453709087037601181</id><published>2009-10-13T08:19:00.000-07:00</published><updated>2010-12-21T01:07:32.693-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='클로져'/><category scheme='http://www.blogger.com/atom/ns#' term='closure'/><category scheme='http://www.blogger.com/atom/ns#' term='프로그래밍'/><title type='text'>closure 의 기본 사용법</title><content type='html'>&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&amp;nbsp;&lt;/P&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 12pt"&gt;&lt;FONT face="맑은 고딕"&gt;&lt;DIV style="BORDER-RIGHT: #bbbbbb 1px solid; PADDING-RIGHT: 10px; BORDER-TOP: #bbbbbb 1px solid; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; BORDER-LEFT: #bbbbbb 1px solid; PADDING-TOP: 10px; BORDER-BOTTOM: #bbbbbb 1px solid; BACKGROUND-COLOR: #dddddd"&gt;&lt;FONT size=2&gt;원문 :&lt;FONT color=#4d4d4d&gt; &lt;/FONT&gt;&lt;/FONT&gt;&lt;A href="http://diditwith.net/2007/02/09/WhatsInAClosure.aspx" target=_blank&gt;&lt;FONT color=#808080 size=2&gt;http://diditwith.net/2007/02/09/WhatsInAClosure.aspx&lt;/FONT&gt;&lt;/A&gt;&lt;br /&gt;&lt;FONT size=2&gt;번역 : &lt;/FONT&gt;&lt;A href="http://zmeun.tistory.com/80" target=_blank&gt;&lt;FONT color=#808080 size=2&gt;http://zmeun.tistory.com/80&lt;/FONT&gt;&lt;/A&gt;&lt;/DIV&gt;&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&amp;nbsp;&lt;/P&gt;&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 12pt"&gt;&lt;FONT face="맑은 고딕"&gt;What’s A Closure?&lt;/FONT&gt;&lt;/SPAN&gt;&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 12pt"&gt;&lt;FONT face="맑은 고딕"&gt;&amp;nbsp;&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;FONT size=2&gt;&lt;FONT face="맑은 고딕"&gt;&lt;SPAN&gt;&lt;STRONG&gt;Closure는 자신의 코드 블록 상위에 선언된 코드를 포함하는 함수이다&lt;SPAN lang=EN-US&gt;. &lt;/SPAN&gt;따라서 함수는 자신의 코드 블록이 포함되어 있는 상위 요소를 참조&lt;/STRONG&gt;한다&lt;SPAN lang=EN-US&gt;. &lt;/SPAN&gt;이 경우&lt;SPAN lang=EN-US&gt; C# 2.0&lt;/SPAN&gt;에서는 익명 메소드&lt;SPAN lang=EN-US&gt;(anonymous method)&lt;/SPAN&gt;가 해당되고&lt;SPAN lang=EN-US&gt;, &lt;/SPAN&gt;이 익명 메소드는 자신의 코드 블록 상위의 메소드에 포함된다&lt;SPAN lang=EN-US&gt;. &lt;/SPAN&gt;이것은 부모 메소드에 존재하는 지역 변수를 익명 메소드의 코드 블록에 참조 할 수 있다는 것을 의미한다&lt;SPAN lang=EN-US&gt;. &lt;/SPAN&gt;아래의 코드는 우리가 예상하는 것과 같이 콘솔 창에&lt;SPAN lang=EN-US&gt; 0&lt;/SPAN&gt;을 출력하게 된다&lt;SPAN lang=EN-US&gt;.&lt;?xml:namespace prefix = o /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;TABLE class=MsoTableGrid style="BORDER-RIGHT: medium none; BORDER-TOP: medium none; BORDER-LEFT: medium none; BORDER-BOTTOM: medium none; BORDER-COLLAPSE: collapse; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-yfti-tbllook: 1184; mso-padding-alt: 0cm 5.4pt 0cm 5.4pt" cellSpacing=0 cellPadding=0 border=1&gt;&lt;TBODY&gt;&lt;TR style="mso-yfti-irow: 0; mso-yfti-firstrow: yes; mso-yfti-lastrow: yes"&gt;&lt;TD style="BORDER-RIGHT: black 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: black 1pt solid; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: black 1pt solid; WIDTH: 461.2pt; PADDING-TOP: 0cm; BORDER-BOTTOM: black 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid black .5pt; mso-border-themecolor: text1" vAlign=top width=615&gt;&lt;P class=MsoNormal style="BACKGROUND: white; MARGIN: 0cm 0cm 0pt; WORD-BREAK: keep-all; LINE-HEIGHT: 18pt; TEXT-AUTOSPACE: ideograph-numeric; mso-pagination: widow-orphan"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 11pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: Tahoma; mso-font-kerning: 0pt; mso-fareast-font-family: 굴림"&gt;delegate&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 11pt; COLOR: black; FONT-FAMILY: Consolas; mso-bidi-font-family: Tahoma; mso-font-kerning: 0pt; mso-fareast-font-family: 굴림"&gt; &lt;/SPAN&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 11pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: Tahoma; mso-font-kerning: 0pt; mso-fareast-font-family: 굴림"&gt;void&lt;/SPAN&gt;&lt;SPAN&gt; Action();&lt;br /&gt;&lt;br /&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 11pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: Tahoma; mso-font-kerning: 0pt; mso-fareast-font-family: 굴림"&gt;static&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 11pt; COLOR: black; FONT-FAMILY: Consolas; mso-bidi-font-family: Tahoma; mso-font-kerning: 0pt; mso-fareast-font-family: 굴림"&gt; &lt;/SPAN&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 11pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: Tahoma; mso-font-kerning: 0pt; mso-fareast-font-family: 굴림"&gt;void&lt;/SPAN&gt;&lt;SPAN&gt; Main(string[] args)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp; int x = 0;&lt;br /&gt;&amp;nbsp; &lt;br /&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 11pt; COLOR: #0099cc; FONT-FAMILY: Consolas; mso-bidi-font-family: Tahoma; mso-font-kerning: 0pt; mso-fareast-font-family: 굴림"&gt;Action&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 11pt; COLOR: black; FONT-FAMILY: Consolas; mso-bidi-font-family: Tahoma; mso-font-kerning: 0pt; mso-fareast-font-family: 굴림"&gt; a = &lt;/SPAN&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 11pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: Tahoma; mso-font-kerning: 0pt; mso-fareast-font-family: 굴림"&gt;delegate&lt;/SPAN&gt;&lt;SPAN&gt; { Console.WriteLine(x); };&lt;br /&gt;&lt;br /&gt;&amp;nbsp; a();&amp;nbsp; &lt;br /&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN lang=EN-US style="mso-bidi-font-size: 10.0pt"&gt;&lt;o:p&gt;&lt;FONT face="맑은 고딕" size=2&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN style="mso-bidi-font-size: 10.0pt"&gt;&lt;FONT size=2&gt;&lt;FONT face="맑은 고딕"&gt;대부분의 개발자들은 위 코드에 대해서 아무런 의문도 갖지 않는다&lt;SPAN lang=EN-US&gt;. &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN style="mso-bidi-font-size: 10.0pt"&gt;&lt;FONT size=2&gt;&lt;FONT face="맑은 고딕"&gt;지역변수 &lt;SPAN lang=EN-US&gt;“x”&lt;/SPAN&gt;는 선언되자마자&lt;SPAN lang=EN-US&gt; 0&lt;/SPAN&gt;으로 초기화 되었고&lt;SPAN lang=EN-US&gt;, &lt;/SPAN&gt;그리고 나서&lt;SPAN lang=EN-US&gt; Action &lt;/SPAN&gt;타입의&lt;SPAN lang=EN-US&gt; delegate &lt;/SPAN&gt;변수 &lt;SPAN lang=EN-US&gt;“a”&lt;/SPAN&gt;가 선언 된 후&lt;SPAN lang=EN-US&gt;, &lt;/SPAN&gt;콘솔 창에 변수 &lt;SPAN lang=EN-US&gt;“x”&lt;/SPAN&gt;를 출력하는 익명 메소드로 할당 되었다&lt;SPAN lang=EN-US&gt;. &lt;/SPAN&gt;코드는 마지막으로 &lt;SPAN lang=EN-US&gt;“a”&lt;/SPAN&gt;를 호출하면서&lt;SPAN lang=EN-US&gt;, &lt;/SPAN&gt;그 결과로 콘솔에 변수 &lt;SPAN lang=EN-US&gt;“x”&lt;/SPAN&gt;의 값을 출력한다&lt;SPAN lang=EN-US&gt;. &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN style="mso-bidi-font-size: 10.0pt"&gt;&lt;FONT size=2&gt;&lt;FONT face="맑은 고딕"&gt;여기에서 문제는 코드가 아래처럼 변경되었을 때 나타난다&lt;SPAN lang=EN-US&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;TABLE class=MsoTableGrid style="BORDER-RIGHT: medium none; BORDER-TOP: medium none; BORDER-LEFT: medium none; BORDER-BOTTOM: medium none; BORDER-COLLAPSE: collapse; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-yfti-tbllook: 1184; mso-padding-alt: 0cm 5.4pt 0cm 5.4pt" cellSpacing=0 cellPadding=0 border=1&gt;&lt;TBODY&gt;&lt;TR style="mso-yfti-irow: 0; mso-yfti-firstrow: yes; mso-yfti-lastrow: yes"&gt;&lt;TD style="BORDER-RIGHT: black 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: black 1pt solid; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: black 1pt solid; WIDTH: 461.2pt; PADDING-TOP: 0cm; BORDER-BOTTOM: black 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid black .5pt; mso-border-themecolor: text1" vAlign=top width=615&gt;&lt;P class=MsoNormal style="BACKGROUND: white; MARGIN: 0cm 0cm 0pt; WORD-BREAK: keep-all; LINE-HEIGHT: 18pt; TEXT-AUTOSPACE: ideograph-numeric; mso-pagination: widow-orphan"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 11pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: Tahoma; mso-font-kerning: 0pt; mso-fareast-font-family: 굴림"&gt;delegate&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 11pt; COLOR: black; FONT-FAMILY: Consolas; mso-bidi-font-family: Tahoma; mso-font-kerning: 0pt; mso-fareast-font-family: 굴림"&gt; &lt;/SPAN&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 11pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: Tahoma; mso-font-kerning: 0pt; mso-fareast-font-family: 굴림"&gt;void&lt;/SPAN&gt;&lt;SPAN&gt; Action();&lt;br /&gt;&lt;br /&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 11pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: Tahoma; mso-font-kerning: 0pt; mso-fareast-font-family: 굴림"&gt;static&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 11pt; COLOR: black; FONT-FAMILY: Consolas; mso-bidi-font-family: Tahoma; mso-font-kerning: 0pt; mso-fareast-font-family: 굴림"&gt; &lt;/SPAN&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 11pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: Tahoma; mso-font-kerning: 0pt; mso-fareast-font-family: 굴림"&gt;void&lt;/SPAN&gt;&lt;SPAN&gt; Main(string[] args)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp; int x = 0;&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 11pt; COLOR: #0099cc; FONT-FAMILY: Consolas; mso-bidi-font-family: Tahoma; mso-font-kerning: 0pt; mso-fareast-font-family: 굴림"&gt;Action&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 11pt; COLOR: black; FONT-FAMILY: Consolas; mso-bidi-font-family: Tahoma; mso-font-kerning: 0pt; mso-fareast-font-family: 굴림"&gt; a = &lt;/SPAN&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 11pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: Tahoma; mso-font-kerning: 0pt; mso-fareast-font-family: 굴림"&gt;delegate&lt;/SPAN&gt;&lt;SPAN&gt; { Console.WriteLine(x); };&lt;br /&gt;&lt;br /&gt;&amp;nbsp; x = 1;&lt;br /&gt;&lt;br /&gt;&amp;nbsp; a();&lt;br /&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN lang=EN-US style="mso-bidi-font-size: 10.0pt"&gt;&lt;o:p&gt;&lt;FONT face="맑은 고딕" size=2&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN style="mso-bidi-font-size: 10.0pt"&gt;&lt;FONT size=2&gt;&lt;FONT face="맑은 고딕"&gt;현재 &lt;SPAN lang=EN-US&gt;“x”&lt;/SPAN&gt;는&lt;SPAN lang=EN-US&gt; delegate &lt;/SPAN&gt;변수 &lt;SPAN lang=EN-US&gt;“a”&lt;/SPAN&gt;가 호출되기 이전에 값&lt;SPAN lang=EN-US&gt; 1&lt;/SPAN&gt;로 다시 할당되었다&lt;SPAN lang=EN-US&gt;. &lt;/SPAN&gt;그렇다면 콘솔 창에 출력되는 값은 무엇일까&lt;SPAN lang=EN-US&gt;?&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN lang=EN-US style="mso-bidi-font-size: 10.0pt"&gt;&lt;o:p&gt;&lt;FONT face="맑은 고딕" size=2&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN style="mso-bidi-font-size: 10.0pt"&gt;&lt;FONT size=2&gt;&lt;FONT face="맑은 고딕"&gt;정답은&lt;SPAN lang=EN-US&gt; 0&lt;/SPAN&gt;이 아니라&lt;SPAN lang=EN-US&gt; 1&lt;/SPAN&gt;이다&lt;SPAN lang=EN-US&gt;. &lt;/SPAN&gt;이렇게 된 이유는&lt;SPAN lang=EN-US&gt;, &lt;/SPAN&gt;&lt;STRONG&gt;익명 메소드는 &lt;SPAN lang=EN-US&gt;closure&lt;/SPAN&gt;이고 반드시 부모 메소드의 코드 블록 안에 위치해야 하며&lt;SPAN lang=EN-US&gt;, &lt;/SPAN&gt;지역 변수를 자신의 코드 블록 안에 포함해야 한다&lt;SPAN lang=EN-US&gt;. &lt;/SPAN&gt;중요한 차이점은 그것은 반드시 값이 아닌 변수를 참조한다는 것이다&lt;SPAN lang=EN-US&gt;. &lt;/SPAN&gt;&lt;/STRONG&gt;다른 말로 &lt;SPAN lang=EN-US&gt;“x”&lt;/SPAN&gt;의 값은 &lt;SPAN lang=EN-US&gt;“a”&lt;/SPAN&gt;가 익명 메소드로 할당 된 후에 &lt;SPAN lang=EN-US&gt;“x”&lt;/SPAN&gt;의 값이 복사되지 않고 &lt;SPAN lang=EN-US&gt;“x”&lt;/SPAN&gt;의 참조가 사용된다&lt;SPAN lang=EN-US&gt;. &lt;/SPAN&gt;그렇기 때문에 &lt;SPAN lang=EN-US&gt;“a”&lt;/SPAN&gt;는 항상 &lt;SPAN lang=EN-US&gt;“a”&lt;/SPAN&gt;가 호출되기 전에 가장 마지막으로 할당된 &lt;SPAN lang=EN-US&gt;“x”&lt;/SPAN&gt;의 값을 사용 할 것이다&lt;SPAN lang=EN-US&gt;. &lt;/SPAN&gt;사실 &lt;SPAN lang=EN-US&gt;“x”&lt;/SPAN&gt;의 참조는 &lt;SPAN lang=EN-US&gt;“x”&lt;/SPAN&gt;가 포함 된 코드블럭을 벗어난다 해도 지속될 것이다&lt;SPAN lang=EN-US&gt;. &lt;/SPAN&gt;아래 코드를 살펴보자&lt;SPAN lang=EN-US&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;TABLE class=MsoTableGrid style="BORDER-RIGHT: medium none; BORDER-TOP: medium none; BORDER-LEFT: medium none; BORDER-BOTTOM: medium none; BORDER-COLLAPSE: collapse; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-yfti-tbllook: 1184; mso-padding-alt: 0cm 5.4pt 0cm 5.4pt" cellSpacing=0 cellPadding=0 border=1&gt;&lt;TBODY&gt;&lt;TR style="mso-yfti-irow: 0; mso-yfti-firstrow: yes; mso-yfti-lastrow: yes"&gt;&lt;TD style="BORDER-RIGHT: black 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: black 1pt solid; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: black 1pt solid; WIDTH: 461.2pt; PADDING-TOP: 0cm; BORDER-BOTTOM: black 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid black .5pt; mso-border-themecolor: text1" vAlign=top width=615&gt;&lt;P class=MsoNormal style="BACKGROUND: white; MARGIN: 0cm 0cm 0pt; WORD-BREAK: keep-all; LINE-HEIGHT: 18pt; TEXT-AUTOSPACE: ideograph-numeric; mso-pagination: widow-orphan"&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 11pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: Tahoma; mso-font-kerning: 0pt; mso-fareast-font-family: 굴림"&gt;delegate&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 11pt; COLOR: black; FONT-FAMILY: Consolas; mso-bidi-font-family: Tahoma; mso-font-kerning: 0pt; mso-fareast-font-family: 굴림"&gt; &lt;/SPAN&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 11pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: Tahoma; mso-font-kerning: 0pt; mso-fareast-font-family: 굴림"&gt;void&lt;/SPAN&gt;&lt;SPAN&gt; Action();&lt;br /&gt;&lt;br /&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 11pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: Tahoma; mso-font-kerning: 0pt; mso-fareast-font-family: 굴림"&gt;static&lt;/SPAN&gt;&lt;SPAN&gt; Action GetAction()&lt;br /&gt;{&lt;br /&gt;&amp;nbsp; int x = 0;&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 11pt; COLOR: #0099cc; FONT-FAMILY: Consolas; mso-bidi-font-family: Tahoma; mso-font-kerning: 0pt; mso-fareast-font-family: 굴림"&gt;Action&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 11pt; COLOR: black; FONT-FAMILY: Consolas; mso-bidi-font-family: Tahoma; mso-font-kerning: 0pt; mso-fareast-font-family: 굴림"&gt; a = &lt;/SPAN&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 11pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: Tahoma; mso-font-kerning: 0pt; mso-fareast-font-family: 굴림"&gt;delegate&lt;/SPAN&gt;&lt;SPAN&gt; { Console.WriteLine(x); };&lt;br /&gt;&lt;br /&gt;&amp;nbsp; x = 1;&lt;br /&gt;&lt;br /&gt;&amp;nbsp; return a;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 11pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: Tahoma; mso-font-kerning: 0pt; mso-fareast-font-family: 굴림"&gt;static&lt;/SPAN&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 11pt; COLOR: black; FONT-FAMILY: Consolas; mso-bidi-font-family: Tahoma; mso-font-kerning: 0pt; mso-fareast-font-family: 굴림"&gt; &lt;/SPAN&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 11pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: Tahoma; mso-font-kerning: 0pt; mso-fareast-font-family: 굴림"&gt;void&lt;/SPAN&gt;&lt;SPAN&gt; Main(string[] args)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;Action a = GetAction();&lt;br /&gt;&lt;br /&gt;&amp;nbsp; a();&lt;br /&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN lang=EN-US style="mso-bidi-font-size: 10.0pt"&gt;&lt;o:p&gt;&lt;FONT face="맑은 고딕" size=2&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN style="mso-bidi-font-size: 10.0pt"&gt;&lt;FONT size=2&gt;&lt;FONT face="맑은 고딕"&gt;위 코드는 &lt;SPAN lang=EN-US&gt;“a”&lt;/SPAN&gt;가 호출되는 시점에서 변수 &lt;SPAN lang=EN-US&gt;“x”&lt;/SPAN&gt;의 실행 범위가 끝났다 하더라도&lt;SPAN lang=EN-US&gt;, &lt;/SPAN&gt;호출된 &lt;SPAN lang=EN-US&gt;“a”&lt;/SPAN&gt;의 결과값은&lt;SPAN lang=EN-US&gt;, &lt;/SPAN&gt;어김없이 콘솔 창에&lt;SPAN lang=EN-US&gt; 1&lt;/SPAN&gt;을 출력할 것이다&lt;SPAN lang=EN-US&gt;. &lt;/SPAN&gt;어떻게 이렇게 되었을까&lt;SPAN lang=EN-US&gt;? &lt;/SPAN&gt;이것은 컴파일러를 통해 처리되었다&lt;SPAN lang=EN-US&gt;. &lt;/SPAN&gt;런타임은&lt;SPAN lang=EN-US&gt; closure&lt;/SPAN&gt;를 처리하기 위해 아무런 지원도 하지 않는다&lt;SPAN lang=EN-US&gt;. &lt;/SPAN&gt;이 말은 여러분은 익명 메소드의 사용 없이도&lt;SPAN lang=EN-US&gt; closure&lt;/SPAN&gt;를 처리하기 위해 컴파일러가 처리하는 것과 같은 동일한 방법을&lt;SPAN lang=EN-US&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;사용 할 수 있다는 것이다&lt;SPAN lang=EN-US&gt;. &lt;/SPAN&gt;실제로 이 방법은 &lt;SPAN lang=EN-US&gt;C# 1.0&lt;/SPAN&gt;에서도 동작한다&lt;SPAN lang=EN-US&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5629370754721541274-8453709087037601181?l=genikim.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://genikim.blogspot.com/feeds/8453709087037601181/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://genikim.blogspot.com/2009/10/closure-%EC%9D%98-%EA%B8%B0%EB%B3%B8-%EC%82%AC%EC%9A%A9%EB%B2%95.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5629370754721541274/posts/default/8453709087037601181'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5629370754721541274/posts/default/8453709087037601181'/><link rel='alternate' type='text/html' href='http://genikim.blogspot.com/2009/10/closure-%EC%9D%98-%EA%B8%B0%EB%B3%B8-%EC%82%AC%EC%9A%A9%EB%B2%95.html' title='closure 의 기본 사용법'/><author><name>sap</name><uri>http://www.blogger.com/profile/02773930379424971513</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5629370754721541274.post-8919053961830909534</id><published>2009-10-13T08:01:00.000-07:00</published><updated>2010-12-21T01:07:32.285-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='자바스크립트'/><category scheme='http://www.blogger.com/atom/ns#' term='읽고나서..'/><category scheme='http://www.blogger.com/atom/ns#' term='책'/><category scheme='http://www.blogger.com/atom/ns#' term='Book'/><title type='text'>자바스크립트 완벽 가이드 (Javascript The Definitive Guide) 5판</title><content type='html'>&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P align=center&gt;&lt;A onclick="clickcr(this,'bil.image','98000001_000000000000000000459889','',event);" href="?bid=4561033"&gt;&lt;IMG src="http://bookimg.naver.com/hash_coverimg/kangcom/l_pic/0/0/0/6/200805090006.jpg" width=104 height=154&gt;&lt;/A&gt;&lt;/P&gt;&lt;P align=center&gt;&lt;STRONG&gt;자바스크립트 완벽 가이드 5판&lt;/STRONG&gt;&lt;/P&gt;&lt;P align=center&gt;&lt;STRONG&gt;(Javascript The Definitive Guide 5/E)&lt;/STRONG&gt;&lt;/P&gt;&lt;P align=center&gt;&lt;STRONG&gt;데이비드 플래너건 지음, 송인철외 번역&lt;/STRONG&gt;&lt;/P&gt;&lt;P align=center&gt;&amp;nbsp;&lt;/P&gt;&lt;P align=left&gt;&amp;nbsp;&lt;/P&gt;&lt;P align=left&gt;2009년 10월 13일 구입&lt;/P&gt;&lt;P align=left&gt;무지막지하게 비싼 가격이다.. 회사에 구입을 해달라고 할 수도 있었지만..&lt;/P&gt;&lt;P align=left&gt;책사는데 절대 돈 아끼면 안된다는 신념과.. 이런 명서는 반드시 소장해야 한다는 생각과..뭐.. 이런저런..&lt;/P&gt;&lt;P align=left&gt;&amp;nbsp;&lt;/P&gt;&lt;P align=left&gt;..&lt;/P&gt;&lt;P align=left&gt;.&lt;/P&gt;&lt;P align=left&gt;&amp;nbsp;&lt;/P&gt;&lt;P align=left&gt;&amp;nbsp;&lt;/P&gt;&lt;P align=left&gt;jQuery, Ajax를 공부함에 있어서 막히는 부분이 많았다.&lt;/P&gt;&lt;P align=left&gt;특히나 자바스크립트의 함수동작에 관한 부분과 이펙트, 애니메이션 관련 부분&lt;/P&gt;&lt;P align=left&gt;&amp;nbsp;&lt;/P&gt;&lt;P align=left&gt;이 책을 다 읽고 나면 나의 궁금증을 풀어주겠지&lt;/P&gt;&lt;P align=left&gt;&amp;nbsp;&lt;/P&gt;&lt;P align=left&gt;하루만에 꽤 많이 읽었는데... 정말.... 좋은 책이다&lt;/P&gt;&lt;P align=left&gt;ㅠㅠ 감동의 서적이다&lt;/P&gt;&lt;P align=left&gt;&amp;nbsp;&lt;/P&gt;&lt;P align=left&gt;자바스크립트가 이렇게 유연하고도 멋진 언어 였던가!?!&lt;/P&gt;&lt;P align=left&gt;&amp;nbsp;&lt;/P&gt;&lt;P align=left&gt;그동안 정적언어만 공부하다 보니 동적언어의 개념이 잘 이해되진 않지만&lt;/P&gt;&lt;P align=left&gt;문법자체나 사용법에 관해서는 슈슈슉 읽혀진다.&lt;/P&gt;&lt;P align=left&gt;&amp;nbsp;&lt;/P&gt;&lt;P align=left&gt;&amp;nbsp;&lt;/P&gt;&lt;P align=left&gt;읽고나서..&lt;/P&gt;&lt;P align=left&gt;&amp;nbsp;&lt;/P&gt;&lt;P align=left&gt;좋은 책이다.. 정말 말 그대로 완벽한 가이드이며&lt;/P&gt;&lt;P align=left&gt;두말할것 없는 명서!&lt;/P&gt;&lt;P align=left&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5629370754721541274-8919053961830909534?l=genikim.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://genikim.blogspot.com/feeds/8919053961830909534/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://genikim.blogspot.com/2009/10/%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8-%EC%99%84%EB%B2%BD-%EA%B0%80%EC%9D%B4%EB%93%9C-javascript-definitive.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5629370754721541274/posts/default/8919053961830909534'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5629370754721541274/posts/default/8919053961830909534'/><link rel='alternate' type='text/html' href='http://genikim.blogspot.com/2009/10/%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8-%EC%99%84%EB%B2%BD-%EA%B0%80%EC%9D%B4%EB%93%9C-javascript-definitive.html' title='자바스크립트 완벽 가이드 (Javascript The Definitive Guide) 5판'/><author><name>sap</name><uri>http://www.blogger.com/profile/02773930379424971513</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5629370754721541274.post-138149175799557769</id><published>2009-10-11T01:50:00.000-07:00</published><updated>2010-12-21T01:07:31.828-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='읽는중..'/><category scheme='http://www.blogger.com/atom/ns#' term='design pattern'/><category scheme='http://www.blogger.com/atom/ns#' term='프로그래밍'/><category scheme='http://www.blogger.com/atom/ns#' term='자바'/><category scheme='http://www.blogger.com/atom/ns#' term='Book'/><category scheme='http://www.blogger.com/atom/ns#' term='디자인패턴'/><title type='text'>Java 언어로 배우는 디자인 패턴 입문</title><content type='html'>&lt;P align=left&gt;&amp;nbsp;&lt;/P&gt;&lt;P align=center&gt;&lt;A onclick="clickcr(this,'bil.image','98000001_000000000000000000451BE7','',event);" href="http://sapphirez.textcube.com/script/editor/default.html?bid=4529127"&gt;&lt;IMG height=154 src="http://bookimg.naver.com/coverimg/yes24/momo/TopCate62/MidCate10/6199615.jpg" width=104&gt;&lt;/A&gt;&lt;/P&gt;&lt;P align=center&gt;&amp;nbsp;&lt;/P&gt;&lt;P align=center&gt;YUKI HIROSHI, 영진닷컴&lt;/P&gt;&lt;P align=center&gt;&amp;nbsp;&lt;/P&gt;&lt;P align=left&gt;&amp;nbsp;&lt;/P&gt;&lt;P align=left&gt;2009년 9월 말 경 구입&lt;/P&gt;&lt;P align=left&gt;&amp;nbsp;&lt;/P&gt;&lt;P align=left&gt;천천히 두고 봐야 할 책이다..&lt;/P&gt;&lt;P align=left&gt;나같은 초짜 프로그래머는 몇몇 디자인 패턴 말고는&lt;/P&gt;&lt;P align=left&gt;효용성을 전혀 모르겠다-_-&lt;/P&gt;&lt;P align=left&gt;&amp;nbsp;&lt;/P&gt;&lt;P align=left&gt;꼬박꼬박 읽고 공부해나가보자..&lt;/P&gt;&lt;P align=left&gt;서평은 다읽고 느껴본 후에!&lt;/P&gt;&lt;P align=left&gt;&amp;nbsp;&lt;/P&gt;&lt;P align=left&gt;일단.. 이것 역시 설명은 아주 쉽게 잘되어있다&lt;/P&gt;&lt;P align=left&gt;&amp;nbsp;&lt;/P&gt;&lt;P align=left&gt;근데 .. 디자인 패턴에 필요성에 관한 설명은 적다.&lt;/P&gt;&lt;P align=left&gt;문제를 먼저 보여주고, 디자인패턴을 적용해 문제를 해결해 나가는 식의 접근이었다면&lt;/P&gt;&lt;P align=left&gt;이해도가 높았을 테지만.. &lt;/P&gt;&lt;P align=left&gt;인터넷에서 좋은 책이라 소문이 자자하길래 .. 한번 소스코드 다 뚜드려보고.. 공부해보고&lt;/P&gt;&lt;P align=left&gt;다시 읽어보고.. 그렇게 이해될때까지 곁에 두고 읽어보자&lt;/P&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5629370754721541274-138149175799557769?l=genikim.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://genikim.blogspot.com/feeds/138149175799557769/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://genikim.blogspot.com/2009/10/java-%EC%96%B8%EC%96%B4%EB%A1%9C-%EB%B0%B0%EC%9A%B0%EB%8A%94-%EB%94%94%EC%9E%90%EC%9D%B8-%ED%8C%A8%ED%84%B4-%EC%9E%85%EB%AC%B8.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5629370754721541274/posts/default/138149175799557769'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5629370754721541274/posts/default/138149175799557769'/><link rel='alternate' type='text/html' href='http://genikim.blogspot.com/2009/10/java-%EC%96%B8%EC%96%B4%EB%A1%9C-%EB%B0%B0%EC%9A%B0%EB%8A%94-%EB%94%94%EC%9E%90%EC%9D%B8-%ED%8C%A8%ED%84%B4-%EC%9E%85%EB%AC%B8.html' title='Java 언어로 배우는 디자인 패턴 입문'/><author><name>sap</name><uri>http://www.blogger.com/profile/02773930379424971513</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5629370754721541274.post-6789409283379023697</id><published>2009-10-11T01:42:00.000-07:00</published><updated>2010-12-21T01:07:31.433-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='읽고나서..'/><category scheme='http://www.blogger.com/atom/ns#' term='책'/><category scheme='http://www.blogger.com/atom/ns#' term='프로그래밍'/><category scheme='http://www.blogger.com/atom/ns#' term='struts2'/><category scheme='http://www.blogger.com/atom/ns#' term='Book'/><category scheme='http://www.blogger.com/atom/ns#' term='iBATIS'/><title type='text'>Struts2</title><content type='html'>&lt;P align=center&gt;&lt;A onclick="clickcr(this,'bil.image','98000001_0000000000000000005CC368','',event);" href="http://sapphirez.textcube.com/script/editor/default.html?bid=6079336"&gt;&lt;IMG height=154 src="http://bookimg.naver.com/coverimg/kyobo/images/book/xlarge/213/x9788972808213.jpg" width=104&gt;&lt;/A&gt;&lt;A onclick="clickcr(this,'bil.image','98000001_0000000000000000005CC368','',event);" href="http://sapphirez.textcube.com/script/editor/default.html?bid=6079336"&gt;&lt;br /&gt;&lt;/A&gt;&lt;STRONG&gt;성윤정 지음 , 대림출판사&lt;/STRONG&gt;&lt;/P&gt;&lt;P align=center&gt;&amp;nbsp;&lt;/P&gt;&lt;P align=left&gt;&amp;nbsp;&lt;/P&gt;&lt;P align=left&gt;2009년 10월 초 구입&lt;/P&gt;&lt;P align=left&gt;&amp;nbsp;&lt;/P&gt;&lt;P align=left&gt;회사에서... 나는 충남으로 프로젝트를 나갈 줄 알았다.. &lt;/P&gt;&lt;P align=left&gt;(난 입사한지 아직 한달 밖에 안됐고 실무경험은 0 인 초보 프로그래머임)&lt;/P&gt;&lt;P align=left&gt;&amp;nbsp;&lt;/P&gt;&lt;P align=left&gt;근데 이런저런 업무 사정상 생애 첫 프로젝트는 계속 연기되고..&lt;/P&gt;&lt;P align=left&gt;회사 과장님께서 가실 프로젝트에 스터디를 같이 하게 되었다.&lt;/P&gt;&lt;P align=left&gt;&amp;nbsp;&lt;/P&gt;&lt;P align=left&gt;Struts2+iBatis 를 공부해야 했는데..&lt;/P&gt;&lt;P align=left&gt;시간이 일주일밖에 없어서 , Struts2는 잘 몰라서 -_-&lt;/P&gt;&lt;P align=left&gt;역시나 내가 좋아하는 얇은책, 쉬운책 을 골라보게 되었다.&lt;/P&gt;&lt;P align=left&gt;심오한 부분이나 모르는 부분은 인터넷을 통해 배우면 되니까..;&lt;/P&gt;&lt;P align=left&gt;&amp;nbsp;&lt;/P&gt;&lt;P align=left&gt;나온지 일주일 정도된 따끈한 책!&lt;/P&gt;&lt;P align=left&gt;몇년전에 JSP 공부를 처음할때 성윤정씨가 지은 JSP 서적을 쉽고 편하게 읽은 기억이 있어서..&lt;/P&gt;&lt;P align=left&gt;결정하고 사서 보았다만..&lt;/P&gt;&lt;P align=left&gt;&amp;nbsp;&lt;/P&gt;&lt;P align=left&gt;이건 Struts2 입문 책인가 아예 컴맹 입문 책인지 모를 정도로&lt;/P&gt;&lt;P align=left&gt;설치 설명으로 페이지 다잡아 먹고, 똑같은 소스코드로 페이지 다잡아 먹고..&lt;/P&gt;&lt;P align=left&gt;소스 코드의 수준은 너무 쉽고.. &lt;/P&gt;&lt;P align=left&gt;게다가 초판이라 그런지, 나온지 일주일도 안되서 그런지, 엄청난 오타와 &lt;/P&gt;&lt;P align=left&gt;잘못 인쇄된 부분, 밀려서 인쇄된 부분은 소스코드를 보는데 굉장한 인내심을 유발한다.&lt;/P&gt;&lt;P align=left&gt;(내가 찾은 인쇄 미스 부분만 10군데는 넘는다..)&lt;/P&gt;&lt;P align=left&gt;또한 설치부터 굉장히 차곡차곡 설명해 나가는 듯 싶다가&lt;/P&gt;&lt;P align=left&gt;챕터 후반 iBatis 부분부터는 날치기 설명으로 돌입, &lt;/P&gt;&lt;P align=left&gt;끝에는 별다른 설명없이 게시판 하나 만들어버린다-_-&lt;/P&gt;&lt;P align=left&gt;&amp;nbsp;&lt;/P&gt;&lt;P align=left&gt;&amp;nbsp;&lt;/P&gt;&lt;P align=left&gt;여튼.. 후딱 다 읽어 버렸다..&lt;/P&gt;&lt;P align=left&gt;&amp;nbsp;&lt;/P&gt;&lt;P align=left&gt;다시 들추게 될 일은 없을 책인듯 하지만&lt;/P&gt;&lt;P align=left&gt;&amp;nbsp;&lt;/P&gt;&lt;P align=left&gt;그래도 책은 책이니.. Struts2에 관한 전반적인 이해, Struts2 로 게시판 만드는 것 정도는&lt;/P&gt;&lt;P align=left&gt;너무너무 쉽고 간단하게 배워볼수 있다.&lt;/P&gt;&lt;P align=left&gt;&amp;nbsp;&lt;/P&gt;&lt;P align=left&gt;나도 초보지만... 나보다 더한 초보에게는.. 아주 좋은 책인듯 싶다... 라고 하고 싶지만&lt;/P&gt;&lt;P align=left&gt;초보들은 소스코드에 밀려서 인쇄된 부분을 알아볼수 있을까라는 의문에 그것도 아니고&lt;/P&gt;&lt;P align=left&gt;.... 뭐 추천 하긴 좀 그런 책이다.&lt;/P&gt;&lt;P align=left&gt;&amp;nbsp;&lt;/P&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5629370754721541274-6789409283379023697?l=genikim.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://genikim.blogspot.com/feeds/6789409283379023697/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://genikim.blogspot.com/2009/10/struts2.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5629370754721541274/posts/default/6789409283379023697'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5629370754721541274/posts/default/6789409283379023697'/><link rel='alternate' type='text/html' href='http://genikim.blogspot.com/2009/10/struts2.html' title='Struts2'/><author><name>sap</name><uri>http://www.blogger.com/profile/02773930379424971513</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5629370754721541274.post-2549459374785113361</id><published>2009-10-11T01:24:00.000-07:00</published><updated>2010-12-21T01:07:30.988-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='읽고나서..'/><category scheme='http://www.blogger.com/atom/ns#' term='ajax'/><category scheme='http://www.blogger.com/atom/ns#' term='Book'/><title type='text'>최범균의 Ajax Programming 기초부터 중급까지</title><content type='html'>&lt;P align=center&gt;&lt;A onclick="clickcr(this,'bil.image','98000001_00000000000000000025E0AC','',event);" href="http://sapphirez.textcube.com/script/editor/default.html?bid=2482348"&gt;&lt;IMG height=154 src="http://bookimg.naver.com/hash_coverimg/kangcom/l_pic/0/0/6/7/200605170067.gif" width=104&gt;&lt;/A&gt;&lt;/P&gt;&lt;P align=center&gt;최범균의 Ajax Programming&lt;/P&gt;&lt;P align=center&gt;가메 출판사&lt;/P&gt;&lt;P align=center&gt;&amp;nbsp;&lt;/P&gt;&lt;P align=center&gt;&amp;nbsp;&lt;/P&gt;&lt;P align=left&gt;&amp;nbsp;&lt;/P&gt;&lt;P align=left&gt;2008년 12월인가 11월 인가 그 즈음에 구입했으나 당시에 시간 관계상&lt;/P&gt;&lt;P align=left&gt;읽다가 말다가 읽다가 말다가.. 그랬지만 끝끝내 다 읽게 되었다.&lt;/P&gt;&lt;P align=left&gt;&amp;nbsp;&lt;/P&gt;&lt;P align=left&gt;javascript 의 기초가 없는 사람은 봐선 안될 책이다.&lt;/P&gt;&lt;P align=left&gt;쉽게 시작하지만 가면 갈수록, 확실히 제목 그대로 기초부터 중급까지 수준은 올라간다.&lt;/P&gt;&lt;P align=left&gt;&amp;nbsp;&lt;/P&gt;&lt;P align=left&gt;Ajax의 기본 개념과 설명, 간단한 Ajax 프로그램을 만들어보고&lt;/P&gt;&lt;P align=left&gt;자바스크립트의 이벤트, 매쉬업 서비스 활용해보기 등의 구성은 만족스럽다.&lt;/P&gt;&lt;P align=left&gt;&amp;nbsp;&lt;/P&gt;&lt;P align=left&gt;개인적으로는 굉장히 재미있게 많이 배우며 읽은 책이지만&lt;/P&gt;&lt;P align=left&gt;적당히 얇은 두께 (400p)라 그런지 세세한 설명은 빠져 있다.&lt;/P&gt;&lt;P align=left&gt;하지만 Ajax의 전체적인 흐름, 구현 방식, 소스코드들을 이해 하는데 필요한 설명은 충분하다.&lt;/P&gt;&lt;P align=left&gt;&amp;nbsp;&lt;/P&gt;&lt;P align=left&gt;Javascript의 기본이 되어있고 Ajax의 원리를 공부해보고 싶은 사람에게는&lt;/P&gt;&lt;P align=left&gt;더할 나위 없는 책이다.&lt;/P&gt;&lt;P align=left&gt;&amp;nbsp;&lt;/P&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5629370754721541274-2549459374785113361?l=genikim.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://genikim.blogspot.com/feeds/2549459374785113361/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://genikim.blogspot.com/2009/10/%EC%B5%9C%EB%B2%94%EA%B7%A0%EC%9D%98-ajax-programming-%EA%B8%B0%EC%B4%88%EB%B6%80%ED%84%B0-%EC%A4%91%EA%B8%89%EA%B9%8C%EC%A7%80.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5629370754721541274/posts/default/2549459374785113361'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5629370754721541274/posts/default/2549459374785113361'/><link rel='alternate' type='text/html' href='http://genikim.blogspot.com/2009/10/%EC%B5%9C%EB%B2%94%EA%B7%A0%EC%9D%98-ajax-programming-%EA%B8%B0%EC%B4%88%EB%B6%80%ED%84%B0-%EC%A4%91%EA%B8%89%EA%B9%8C%EC%A7%80.html' title='최범균의 Ajax Programming 기초부터 중급까지'/><author><name>sap</name><uri>http://www.blogger.com/profile/02773930379424971513</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5629370754721541274.post-6065761207612240556</id><published>2009-10-11T01:11:00.000-07:00</published><updated>2010-12-21T01:07:30.609-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='읽고나서..'/><category scheme='http://www.blogger.com/atom/ns#' term='책'/><category scheme='http://www.blogger.com/atom/ns#' term='Book'/><category scheme='http://www.blogger.com/atom/ns#' term='jQuery'/><title type='text'>jQuery in Action</title><content type='html'>&lt;P align=center&gt;&lt;SPAN class=bimg&gt;&lt;A onclick="clickcr(this,'bil.image','98000001_000000000000000000485F22','',event);" href="http://sapphirez.textcube.com/script/editor/default.html?bid=4742946"&gt;&lt;IMG height=154 src="http://bookimg.naver.com/coverimg/kyobo/images/book/xlarge/449/x9788991268449.jpg" width=104&gt;&lt;/A&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;&lt;P align=center&gt;&lt;STRONG&gt;프로그래밍 jQuery (jQuery in Action) 증보판&lt;/STRONG&gt; &lt;/P&gt;&lt;P align=center&gt;베어바이볼트, 예후다카츠 지음&lt;/P&gt;&lt;P align=center&gt;김성안,송효종,이두원 옮김&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;2009년 9월 중순 구입&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Javascript 로 구현한 UI 에 관한 개인적인 호기심과&lt;/P&gt;&lt;P&gt;회사의 팀장님께서 jQuery 사용을 추천해주셔서 사보게 된 책이다..&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;400페이지 정도의 적당히 얇은 분량과 적당히 작은 사이즈는 출퇴근 시에 지하철 내에서&lt;/P&gt;&lt;P&gt;읽어보기 딱 좋았다.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;책의 제본 상태도 좋았고 오타도 거의 발견 할 수 없다.&lt;/P&gt;&lt;P&gt;(내가 오타찾기 도사임에도 불구하고!)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;jQuery의 기초를 잘 설명하고 있으며 jQuery 의 기본적 함수들은 거의 다 다루고 있다.&lt;/P&gt;&lt;P&gt;고급 이펙트 구현 방법이나 예제는 없지만 곁에서 두고 레퍼런스용으로 보기 좋다.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;부록으로 javascript의 closure 부분과 jquery plugin 소개 및 사용법이 포함 되어있어서 &lt;/P&gt;&lt;P&gt;javascript 의 초보자나 jquery 의 강력한 plugin 들을 가져다 쓰기 쉽도록 안내한다.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;jQuery 의 기초를 공부 하고 간단 간단한 참고용 레퍼런스 책을 원한다면&lt;/P&gt;&lt;P&gt;이책을 사는 것을 적극 추천&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5629370754721541274-6065761207612240556?l=genikim.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://genikim.blogspot.com/feeds/6065761207612240556/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://genikim.blogspot.com/2009/10/jquery-in-action.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5629370754721541274/posts/default/6065761207612240556'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5629370754721541274/posts/default/6065761207612240556'/><link rel='alternate' type='text/html' href='http://genikim.blogspot.com/2009/10/jquery-in-action.html' title='jQuery in Action'/><author><name>sap</name><uri>http://www.blogger.com/profile/02773930379424971513</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5629370754721541274.post-174311796951981231</id><published>2009-10-11T00:18:00.000-07:00</published><updated>2010-12-21T01:07:28.826-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='jQuery'/><title type='text'>jQuery Modal창 Overay 효과</title><content type='html'>&lt;script src='http://ss.textcube.com/service/blog/script/blogger.js' type='text/javascript'&gt;&lt;/script&gt;&lt;DIV style="BORDER-RIGHT: #f6d1f6 1px dashed; PADDING-RIGHT: 10px; BORDER-TOP: #f6d1f6 1px dashed; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; BORDER-LEFT: #f6d1f6 1px dashed; PADDING-TOP: 10px; BORDER-BOTTOM: #f6d1f6 1px dashed; BACKGROUND-COLOR: #ffebff"&gt;&lt;P&gt;•본 코드는 개인적인 공부용으로 또는 그냥 생각나는 데로 만들어 본, 초보 개발자의 &amp;nbsp;&lt;/P&gt;&lt;P&gt;쓰레기 코드 입니다. 아무렇게나 수정 하실 수 있으며 코드에 관한 개선사항은 언제든지 환영합니다.&lt;/P&gt;&lt;/DIV&gt;&lt;P&gt;&lt;br /&gt;jQuery로 만들어진 멋진 UI의 해외 싸이트를 구경 다녀 보면 "도대체 어떻게 이렇게 만들었지?" &lt;/P&gt;&lt;P&gt;라는 의문이 내 가슴을 뛰게 한다 -.-;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;그 멋진 싸이트들에서 보면 빠지지 않고 등장하는 것이 overay, expose, modal window 등등인데&lt;/P&gt;&lt;P&gt;뭐.. 어떤 소스코드도 참고하지 않은채 그냥 생각나는데로 만들어 봤다.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;반투명 div 태그에 투명도를 주고 전체를 덮어 버리면 overy 효과다;&lt;/P&gt;&lt;P&gt;동시에 숨겨 뒀던 div 태그를 보여주면 이것 또한 완벽한! modal window가 된다..&lt;/P&gt;&lt;P&gt;오버레이 효과로 반투명하게 뒤 덮는 것과 모달 창의 효과는 &lt;/P&gt;&lt;P&gt;z-Index 의 순서가 담당한다..&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;.&lt;/P&gt;&lt;P&gt;.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;안습이다.. ㅠㅠ&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;아직 jQuery도 초짜고 javascript 의 effect 부분에서도 초짜지만..&lt;/P&gt;&lt;P&gt;뭐 비슷하겠지..?&lt;/P&gt;&lt;TABLE style="BORDER-RIGHT: medium none; BORDER-TOP: medium none; BORDER-LEFT: medium none; WIDTH: 558px; BORDER-BOTTOM: medium none; HEIGHT: 300px" cellSpacing=1 cellPadding=0 bgColor=#f2f2f2&gt;&lt;TBODY&gt;&lt;TR bgColor=#ffffff&gt;&lt;TD width=135&gt;&amp;nbsp;&lt;div class="imageblock left" style="float: left; margin-right: 10px;"&gt;&lt;img src="http://ss.textcube.com/blog/3/39281/attach/XVMESYVqkF.jpg" style="width:284px;height:243px;" alt="" onclick="TC$PRIV_open_img('http://ss.textcube.com/blog/3/39281/attach/XVMESYVqkF.jpg')" /&gt;&lt;/div&gt;&lt;/TD&gt;&lt;TD width=135&gt;&amp;nbsp; &lt;P&gt;1. 글자 test for html 의 아래 텍스트 필드에 마우스를 올리면 &lt;/P&gt;&lt;P&gt;이벤트가 발동한다 &lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;나머지 test 버튼이나 ds 테이블은 그냥 있는거다..;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR bgColor=#ffffff&gt;&lt;TD width=135&gt;&amp;nbsp; &lt;P&gt;&lt;div class="imageblock left" style="float: left; margin-right: 10px;"&gt;&lt;img src="http://ss.textcube.com/blog/3/39281/attach/XAYK3QklL5.jpg" style="width:276px;height:197px;" alt="" onclick="TC$PRIV_open_img('http://ss.textcube.com/blog/3/39281/attach/XAYK3QklL5.jpg')" /&gt;&lt;/div&gt;&lt;/P&gt;&lt;/TD&gt;&lt;TD width=135&gt;&lt;P&gt;&amp;nbsp;2. 배경은 다 회색으로 덮는다.&lt;/P&gt;&lt;P&gt;(overay), &lt;/P&gt;&lt;P&gt;동시에 덮혀진 div 태그로 인해 &lt;/P&gt;&lt;P&gt;z-index가 아래에 있는 태그 컨트롤들은 작동 불가(modal)&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR bgColor=#ffffff&gt;&lt;TD width=135&gt;&amp;nbsp; &lt;P&gt;&lt;div class="imageblock left" style="float: left; margin-right: 10px;"&gt;&lt;img src="http://ss.textcube.com/blog/3/39281/attach/XaKL3bBxXA.jpg" style="width:281px;height:189px;" alt="" onclick="TC$PRIV_open_img('http://ss.textcube.com/blog/3/39281/attach/XaKL3bBxXA.jpg')" /&gt;&lt;/div&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/TD&gt;&lt;TD width=135&gt;&lt;P&gt;&amp;nbsp;3. 아이디를 적고 버튼을 누르면 적용된다&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR bgColor=#ffffff&gt;&lt;TD width=135&gt;&amp;nbsp;&lt;div class="imageblock left" style="float: left; margin-right: 10px;"&gt;&lt;img src="http://ss.textcube.com/blog/3/39281/attach/XWBHXZ2iyx.jpg" style="width:285px;height:204px;" alt="" onclick="TC$PRIV_open_img('http://ss.textcube.com/blog/3/39281/attach/XWBHXZ2iyx.jpg')" /&gt;&lt;/div&gt;&lt;/TD&gt;&lt;TD width=135&gt;OK&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Source (Noname1.html)&lt;/P&gt;&lt;DIV style="BORDER-RIGHT: #b7e0a9 1px dashed; PADDING-RIGHT: 10px; BORDER-TOP: #b7e0a9 1px dashed; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; BORDER-LEFT: #b7e0a9 1px dashed; PADDING-TOP: 10px; BORDER-BOTTOM: #b7e0a9 1px dashed; BACKGROUND-COLOR: #d3eeca"&gt;&lt;P&gt;&amp;nbsp;&amp;lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"&amp;gt;&lt;br /&gt;&amp;lt;HTML&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;lt;HEAD&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;lt;TITLE&amp;gt; Study jQuery &amp;lt;/TITLE&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;lt;script type="text/javascript" src="jquery-1.3.2.js"&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;lt;script type="text/javascript"&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp;$(function() { // jQueryStart&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;STRONG&gt;&lt;FONT color=#38cc1a&gt;&amp;nbsp; // 오버레이 효과를 낼 div 를 만들어서 body의 끝에 달아둔다.&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&lt;FONT color=#38cc1a&gt;&amp;nbsp;&amp;nbsp; //&amp;nbsp; z-index 가 중요하다..&lt;br /&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&amp;nbsp; &amp;nbsp; $("body").append( $("&amp;lt;div id='bgdiv'&amp;gt;&amp;lt;/div&amp;gt;").css(&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; {background: '#333333',&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; width:'100%',&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; height:'100%',&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; position:'absolute',&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; opacity:'0.6',&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; 'top':'0',&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; 'left':'0',&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; 'z-index':'10',&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; 'display':'none'&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;&amp;nbsp; &amp;nbsp; ));&lt;/P&gt;&lt;P&gt;&lt;FONT color=#38cc1a&gt;&lt;STRONG&gt;// 텍스트 필드에 focus 이벤트 등록&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color=#38cc1a&gt;&lt;STRONG&gt;// overay용 bgdiv 를 보여주고 modal 역할을 할 div를 보여준다.&lt;br /&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&amp;nbsp; &amp;nbsp; $("#fts").focus( function() {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;$("#bgdiv").show("fast");&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;$("#login").css("z-index","15").show("slow");&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;$("#logintext").focus();&lt;br /&gt;&amp;nbsp; &amp;nbsp; });&lt;br /&gt;&amp;nbsp; &amp;nbsp; $("#close_btn").click( function() {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;var id_val = $("#logintext").val();&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;$("#fts").val(id_val);&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;$("div#login").hide("slow");&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;$("#bgdiv").hide("fast");&lt;br /&gt;&amp;nbsp; &amp;nbsp; });&lt;br /&gt;&amp;nbsp; &amp;nbsp;} );&amp;nbsp; // jQueryEnd&lt;br /&gt;&amp;nbsp; &amp;lt;/script&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;lt;/HEAD&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;lt;BODY&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;lt;br&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;lt;br&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;lt;div&amp;gt;test for html&amp;lt;/div&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp;&amp;lt;input type="text" id="fts"/&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;lt;br&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;lt;table border="2"&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;ds&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;lt;/table&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;lt;br&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;lt;input type="button" value="test"/&amp;gt;&lt;br /&gt;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&lt;FONT color=#4dbf00&gt;&amp;lt;!-- modal window div --&amp;gt;&lt;/FONT&gt;&lt;br /&gt;&lt;/STRONG&gt;&amp;nbsp; &amp;lt;div id="login" style="position:absolute; display:none"&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;lt;table width="100" height="50" border="2" bgcolor="blue"&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;lt;tr&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;td bgcolor="white"&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; 아이디:&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/td&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;td bgcolor="white"&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type="text" id="logintext"/&amp;gt;&amp;lt;input type="button" id="close_btn" value="apply"&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/td&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/tr&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;lt;/table&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;lt;/div&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;lt;/BODY&amp;gt;&lt;br /&gt;&amp;lt;/HTML&amp;gt;&lt;br /&gt;&lt;/P&gt;&lt;/DIV&gt;&lt;P&gt;&lt;br /&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;jQuery 자바스크립트 파일을 준비하고 &lt;/P&gt;&lt;P&gt;본 코드를 그대로 복사해서 가져다 써보면 작동한다.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;근데..&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&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 class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5629370754721541274-174311796951981231?l=genikim.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://genikim.blogspot.com/feeds/174311796951981231/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://genikim.blogspot.com/2009/10/jquery-modal%EC%B0%BD-overay-%ED%9A%A8%EA%B3%BC.html#comment-form' title='5개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5629370754721541274/posts/default/174311796951981231'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5629370754721541274/posts/default/174311796951981231'/><link rel='alternate' type='text/html' href='http://genikim.blogspot.com/2009/10/jquery-modal%EC%B0%BD-overay-%ED%9A%A8%EA%B3%BC.html' title='jQuery Modal창 Overay 효과'/><author><name>sap</name><uri>http://www.blogger.com/profile/02773930379424971513</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry></feed>
