달력

42025  이전 다음

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

윈도우 7 JAVA_HOME 설정하기

Posted by 행복한삶~!!
|

보통 usb driver 설치하는 방법은 


http://developer.android.com/tools/extras/oem-usb.html#InstallingDriver


와 같지만 정상적으로 설치가 되지 않을때는 아무리 동일하게 해도 안된다. 


폭풍 구글링... 

https://code.google.com/p/android/issues/detail?id=62365#c7

http://stackoverflow.com/questions/19838016/what-usb-driver-should-we-use-for-the-nexus-5


이미 유사한 문제를 호소하는 경우가 맞고 솔루션도 제시가 되어있지만, 정확히 해결하는데 2시간은 까먹은듯... 


간략히 요약하면, android_winusb.inf를 직접 수정하고 driver update를 하면 되는데 절차가 좀 복잡하다. 


1. hardware id 확인하기 

내 컴퓨터 -> 관리 -> 장치 관리자 -> nexus 5 -> 속성 -> 자세히 -> 하드웨어 ID

USB\VID_18D1&PID_D001 or PID_D002 형태로 되어 있는경우이다. 

android_winusb.inf



2. android_winusb.inf 수정

inf 파일에서 아래 부분을 찾고


;Google Nexus (generic)

%SingleBootLoaderInterface% = USB_Install, USB\VID_18D1&PID_4EE0 



한줄을 추가한다. (  하드웨어 id 값에 따라서 PID_D001 or PID_D002를 추가한다. )


%CompositeAdbInterface%     = USB_Install, USB\VID_18D1&PID_D002



본인 cpu type에 따라서 [Google.NTx86] section or [Google.NTamd64] section에 추가하면 된다. 

물론 두군대 모두 추가해도 된다. 


최종적으로 아래와 같은 형태로 되면 된다. 


;Google Nexus (generic)

%SingleBootLoaderInterface% = USB_Install, USB\VID_18D1&PID_4EE0

%CompositeAdbInterface%     = USB_Install, USB\VID_18D1&PID_D002


그리고 나서 usb driver update를 진행하면 디지털 서명이 맞지 않아서 설치를 할수가 없다고 나온다. 

아래 절차를 통해서 부팅하고 설치하면 디지털 서명이 맞지 않지만 설치를 진행 할수 있다. 


3. usb driver update 진행


1. Windows키 + R을 눌러 실행창을 표시합니다. 

2. 실행창에서 아래 그림과 같이 “Shutdown.exe /R /O /F /T 00”을 입력 후 확인 버튼을 누릅니다. 

3. PC가 다시 시작되고 옵션 선택 화면이 나타납니다.

“문제 해결” -> “고급 옵션” -> “시작 설정”을 순서대로 선택합니다. 

4. 시작 설정까지 선택한 후 화면 하단의 “다시 시작” 버튼을 누릅니다. 

5. 옵션을 선택할 수 있는 시작 설정 화면이 나타납니다.

“7) 드라이버 서명 적용 안함”을 선택하기 위해 숫자키 “7”을 누릅니다. 

6. 옵션을 선택한 후 재부팅이 시작됩니다.(PC 성능에 따라1 ~ 3정도 소요)

*서명 적용 안함 설정은 PC 재부팅시 리셋됩니다. 

7. 부팅 후 nexus 5 usb driver update를 진행하면 정상 설치되고 인식된다. 


Posted by 행복한삶~!!
|

http://www.tutorialspoint.com/index.htm

'그외 주제들 > Study..합시당~~' 카테고리의 다른 글

ExtJS 강좌 좋은 사이트  (0) 2013.12.31
html5 storage  (0) 2013.12.30
Sencha 동영상들...  (0) 2013.12.27
phonegap tutorial..  (0) 2013.12.26
웹동네 js 강좌..  (0) 2013.12.05
Posted by 행복한삶~!!
|

출처 : http://songhwajun.com/554  

난 경영인이 아니지만 하나씩 짬날때 보도록 하자... 


1광고쟁이에게 배우는 인생 교훈(로리 서더랜드)_세계 최대 광고그룹 중 하나인 오길비그룹의 부회장 로리 서더랜드는 '광고 업계의 구루'라고 불릴 정도의 거물이다. 그는 광고와 엔터테인먼트의 경계를 허무는 상호작용 광고와 트렌드를 이끄는 광고를 기획해 광고계의 혁명을 이끌어 온 인물이다. 그는 이 강연을 통해 "광고는 상품 자체를 바꾸기보다 상품에 대한 우리의 인식을 바꿈으로써 부가가치를 창출한다"며 "이렇게 인식된 가치가 우리가 '진짜' 가치라고 인정하는 것들만큼이나 만족스러울 수 있다"고 과감한 주장을 펼친다. 여러 사례와 행동경제학을 근거로 한 설명을 유머러스하게 풀어놓았다.(동영상보기)

2 스파게티 소스 제조사 캠벨의 소비자 분석(말콤 글래드웰)_미국 타임지에서 '세계에서 가장 영향력 있는 100인' 중 하나로 선정된 말콤 글래드웰은 워싱턴포스트의 기자 출신이다. 국내에서는 '그 개는 무엇을 보았나(What the dog saw)'라는 책으로 유명해졌다. 그는 강연에서 세계적인 스파게티 소스 제조사 캠벨이 소비자를 만족시킬 수 있는 완벽한 소스를 만들기 위해 얼마나 많은 노력을 기울였는지 소개한다. 캠벨은 미국 소비자의 입맛을 분석한 수많은 데이터를 모으고 그에 맞는 수많은 실험 끝에 결국 소비자를 행복하게 하는 데 성공했다고 설명한다.(동영상보기)

3 시장에서 실패한 아이디어들(세스 고든)_작가이자 마케팅계 구루인 세스 고든은 시장에서 실패했던 아이디어와 반면 급속도로 확대된 성공 사례를 비교하며 얻을 수 있는 교훈을 설명한다. 특허에 의존하거나 공장 설비 개선에 따른 성공이 아니라 '아이디어 전파'를 통해 성공을 일궈 낸 사례를 나열한다. 식빵 슬라이스를 개발했지만 왜 15년 동안 아무도 몰랐는지, 코카콜라일본이 왜 3주마다 신제품을 내놓는지, 왜 전 세계 사람들이 애플의 고 스티브 잡스 론칭 쇼에 주목했는지 등의 이야기는 그 자체로 흥미진진하다.(동영상보기)

4 우리는 스스로 결정을 컨트롤할 수 있는가(댄 아일리)_ 왜 같은 색의 화살표를 보고 사람들은 서로 다른 색으로 느낄까. 그리고 사람들은 직관적으로 매력을 느끼는 사람을 결정할 수 있다고 믿는데 과연 그럴까. 행동경제학자이자 '예측 가능한 불합리성(Predictably Irrational)'의 저자인 댄 아일리는 전형적인 착시 현상과 반직관적인 행동에 대한 연구 결과를 알려준다. 그는 비이성적인 의사결정, 즉 사람들의 우스꽝스러운 행위에 대한 여러 사례와 매사추세츠공과대(MIT)에서 행했던 여러 실험들을 재미있게 보여준다.(동영상보기)

5 오늘날 소비자의 전환(존 거지마)_지난 수십 년간 소비자 데이터를 수집하고 트렌드를 분석해 광고의 새로운 접근을 시도해 왔던 존 거지마는 최근의 경기 침체가 긍정적인 변화의 기회가 될 수 있다고 주장한다. 경기변동에 따라 태도를 바꾸고 또한 점점 더 많은 권한을 확보하는 소비자를 잘 이해하면 분명 성공적인 결과를 갖고 온다는 것이다. 일례로 미국의 과자 회사 프리토레이는 소비자들이 월초와 월말 소비 행태가 다르다는 것에 착안해 포장 크기를 월초와 월말에 따라 다르게 내놓았고 이는 성공적이었다. 언제나 유동적으로 대처하는 것이 키포인트라고 그는 강조한다.(동영상보기)

6 탄소 배출 0을 위한 에너지 혁신(빌 게이츠)_마이크로소프트 창업자이자 최근 설립한 재단을 통해 대대적인 자선사업을 하고 있는 빌 게이츠의 메시지에 귀기울여볼만하다. 그의 강연 주제는 세계의 미래 에너지 전망이다. 지구 대재앙을 피하고 왜 원자력발전을 멀리해야 하는지 설명한다. 그리고 2050년까지 지구의 탄소 배출을 0으로 만들기 위해 우리가 해야 할 일을 제안한다.(동영상보기)

7 발명의 근원, 감성(딘 카멘)_두 바퀴로 이동하는 세그웨이를 개발해 유명해진 딘 카멘은 고교 시절부터 발명에 몰두해 현재 150개의 특허를 보유하고 있다. 최근에는 제3세계를 위해 물 정화 장치나 휴대용 에너지, 불구가 된 군인을 위한 보철물 등을 개발하고 있다. 그는 강연에서 왜 자신이 이들을 위한 장치를 발명하게 됐는지 그 동기와 스토리를 들려준다. 그는 이 강연이 기술에 대한 이야기가 아니라 사람들의 사연에 대한 것이라고 운을 띄우며 잔잔한 감동을 선사한다.(동영상보기)

8 창의성, 혁신, 상호작용 그리고 협력(찰리 리드비터)_영국의 싱크탱크 데모스(Demos)의 연구원인 찰리 리드비터는 혁신에 대해 아주 쉽게 접근한다. 기업들이 할 수 없는 새로운 제품, 새로운 패러다임을 전문가가 아닌 일반인들이 만들어 내고 있는 사례를 들려준다. 산악자전거의 개발, 랩뮤직의 유래 등을 통해 현대시대에는 거대한 조직보다 개인들의 창의적인 생각이 협력을 통해 파이프처럼 연결되고 혁신이 시작된다고 그는 강조한다. 사람들은 지식수준이 높아졌고 다른 사람과 소통하기 편해졌고 협업할 기회가 많기 때문이라고 설명한다.(동영상보기)

9 위키피디아·리눅스 사례로 보는 오픈 소스 경제(요차이 벤클러)_요차이 벤클러는 '정보화 시대를 이끄는 지성'으로 불린다. 그는 자원봉사자들을 통해 만들어지는 위키피디아나 리눅스와 같은 프로젝트를 다음 단계로 전환할 수 있다는 가능성을 제시한다. 그는 가장 적합한 웹페이지를 찾는 기준을 만들기 위해 외부 일반인들의 참여를 유도한 구글의 혁신 기술을 소개한다. 오픈 소스라는 새롭고 지속 가능한 생산 양식이 과거의 산업 시스템을 위협하며 빠르게 확대되고 있다는 점을 강조한다.(동영상보기)

10 지속 가능한 비즈니스 논리(레이 앤더슨)_레이 앤더슨은 누구나 갖고 싶어하는 카펫을 생산하는 인터페이스사의 창업자다. 이 인기 카펫의 독특한 디자인 배후에는 그가 비즈니스를 지속 가능하게 할 수 있도록 설계한 수십 년간 심도 있는 노력이 숨어 있었다. 이제까지는 전통적인 산업 시스템에서 벗어나 지속 가능한 비즈니스 방정식을 통해 그는 전통적으로 제조하고 매출을 늘리고 수익을 수배로 늘렸다. 그의 비즈니스 스토리는 많은 경영자에게 귀감이 될 수 있다.(동영상보기)

11 아이를 기업가로 키우는 법(캐머론 해럴드)_혹시 자녀가 학교 수업을 따분해하고 낙제를 거듭할 뿐만 아니라 친구들에게 이상하다고 놀림을 받고 있지는 않은가. 이런 아이라면 기업가로 성장할 자질이 충분하다고 캐머론 해럴드는 말한다. 그는 어릴때부터 여러 가지 사업을 시작했고 부모와 선생님이 이런 자질을 알아봐 주길 바랐다고 밝힌다. 그는 지난 수십 년간 성공적인 벤처회사를 경영했고 현재 전 세계 기업가들의 코치 역할을 하고 있다. 그가 우리의 교육 시스템이 변호사나 의사를 만들어 내는 데는 적합하지만 기업가를 키워내는 데는 맞지 않다고 말한다. 그는 "다양한 아이디어와 열정, 다양한 요구를 볼 수 있는 기업가 자질을 가진 아이를 부모들이 잘 이끌어야 한다"며 "가장 먼저 해야 하는 것은 '하지 마라'는 말을 하지 않는 것"이라고 강조한다.(동영상보기)

12 그린 테크놀로지의 혜택과 구제책(존 도어)_"나는 정말 두렵습니다. 우리가 해낼 것 같지 않기 때문이죠." 벤처 투자가 존 도어는 의미심장한 말로 강연을 시작한다. 그는 기후변화와 투자에 대해 격정적으로 주장을 개진한다. 이제 인류는 무공해, 그린 에너지에 많은 투자를 하지 않으면 안 된다고 강조한다. 그는 아미리스라는 회사를 설립해 생물 연료를 만드는 기술을 개발하고 있다. 이 회사는 그린 에너지를 개발하기 위해 수십억 달러를 투자하고 있지만 미국의 대표적인 에너지 기업은 어마어마한 매출에도 불구하고 단지 0.2%만을 연구·개발에 투자하고 있다는 점을 비난한다.(동영상보기)

13 인간의 행동 패턴에 접목한 모바일 기술(잰 칩체이스)_노키아의 개발·연구원이자 인간 행동 연구의 전문가인 잰 칩체이스는 세계 각국을 돌아다니며 사람들의 행동 패턴을 분석한다. 그는 언제나 사람들의 주머니에 있는 휴대전화를 통해 사람들이 원한다고 생각하지도 못한 디자인의 제품을 만들어 낸다. 인도·중국·티베트 등에서 겪은 다양한 일을 통해 이를 어떻게 디자인에 적용하고 비즈니스로 연결할 수 있는지 안내한다.(동영상보기)

14 버진그룹의 성공 스토리(리처드 브랜슨)_버진그룹은 독특하면서도 대단한 회사다. 항공·미디어·통신·금융·헬스케어·레저·에너지·투자 등 다양한 분야에 진출해 있지만 주식회사도 아닌 개인회사고 리처드 브랜슨 회장도 매우 비범한 인물이다. 그는 남다른 도전 정신과 열정, 창의성이 뛰어난 사람이다. 버진그룹은 우주에 휴양 시설을 만드는 사업도 진행할 정도다. 인터뷰 형식으로 진행된 이 강연을 통해 리처드 브랜슨 회장의 열정과 독특한 도전 정신을 엿볼 수 있다.(동영상보기)

15 구글의 성공 스토리(세르게이 브린, 래리 페이지)_혁신적인 기업으로 유명한 구글의 공동창업자 세르게이 브린과 래리 페이지를 만나 직접 이야기를 들어볼 수 있는 좋은 기회다. 1988년 구글 창업 후 어떻게 지속적인 혁신 사업을 해왔는지, 직원들의 행복을 위해 어떤 노력을 기울였는지 알 수 있다. 이제는 세계 최대 부자에 속한 두 명이지만 지금도 회사에서 둘이 어떤 놀이를 하며 노는지 알 수 있다.(동영상보기)

16 선택의 모순(베리 스와츠)_심리학과 경제학을 연계하는 연구를 하는 베리 스와츠가 전하는 메시지는 명료하다. "선택의 폭이 넓다면, 더 많은 자유를 가지게 되고 자유가 더 확보되면 사람들의 복지는 향상된다." 과거에는 벨이 만든 전화기만 샀지만 현대에는 MP3, 심지어 코털깎이 기능이 있는 전화기 등 수많은 종류의 전화기를 고를 수 있다. 선택 사항이 많다는 것은 좋은 점이 많지만 반면 사람들의 의사결정을 마비시키고 참여를 줄인다는 단점도 있다. 또한 더 행복하게 하는 것이 아니라 더 불만족하게 만든다고 그는 말한다.(동영상보기)

17 테크놀로지의 4단계 주기(크리스 앤더슨)_세계적인 테크놀로지 잡지 와이어드(WIRED)의 편집장 크리스 앤더슨은 모든 주요 기술은 4단계를 거친다고 말한다. 이를 통해 미래 기술 동향을 예측할 수 있다는 것이다. 기술이 변화를 일으킬 때마다 단계별로 많은 기회가 존재한다. 그는 DVD와 무선 인터넷, 리눅스 등의 예시를 통해 '임계 가격' 이하로 떨어져 대중화되고 기존 제품을 대체하며 가격이 0이 되는 시점에 다다르는 과정을 묘사한다.(동영상보기)

18 미래 웹 혁신(제프 베조스)_닷컴 붐은 흔히 골드러시에 비유된다. 그러나 아마존닷컴의 창업자 제프 베조스는 닷컴의 부흥은 전기가 처음 생겨났을 때와 더 비슷한 점이 많다고 말한다. 그는 당시 시대와 현재 닷컴의 전성기를 비교하며 현재 인터넷 사업은 초창기에 불과하다고 보고 있다. 지금까지 거쳐 온 혁신보다 앞으로 다가올 혁신이 훨씬 많다는 점을 강조한다.(동영상보기)

19 삶을 가치있게 만드는 것들(칩 콘리)_칩 콘리가 만든 '즐거운 호텔'에서는 직원들·손님·투자자가 모두 행복하다. 그는 행복에 근거를 둔 비즈니스 모델을 만들어 냈다. 그는 직원들과 오랜 신뢰와 부처의 지혜를 통해 성공이란 우리가 중요하게 여기는 가치로부터 나온다고 말한다. 직원·고객들과의 교감을 통해 충성도를 높여 사세를 3배 늘리고 이직률을 업계 3분의 1 수준으로 낮춘 비결을 소개한다.(동영상보기)

20 창의성과 놀이(팀 브라운)_'혁신과 디자인' 회사로 유명한 IDEO의 팀 브라운 최고경영자(CEO)는 강연을 시작하자마자 청중을 대상으로 한 가지 실험을 한다. 이를 통해 사람들은 타인의 평가를 두려워하고 동료에게 아이디어를 보여주기 부끄러워 한다는 것을 증명한다. 이러한 공포가 우리의 사고를 보수적으로 만든다고 지적한다. 그리고 창의성과 노는 것은 매우 연관이 높다고 말한다. 그리고 IDEO의 디자이너들이 어떻게 창의력을 발휘하는지 알려준다.(동영상보기)

- See more at: http://songhwajun.com/554#sthash.hbXHasHH.dpuf

Posted by 행복한삶~!!
|


표준액션


<jsp:xxxxxx /> 형태의 action tag들.. 

대표적으로  <jsp:include .../>    < jsp:forward ....  />    

<jsp:useBean   .....   />    <jsp:getProperty .... /> <jsp:setProperty .....  /> 


참조할만한 글.. 

http://blog.naver.com/PostView.nhn?blogId=toplms78&logNo=70182158839

http://blog.naver.com/PostView.nhn?blogId=julymorning4&logNo=100194830950


JSTL - jstl.jar, standard.jar를  import 해야 사용가능함. 

<c:xxxx  .....   />  - Core  

<fmt:xxxx   />  - 포맷팅 관련 (숫자,날짜,시간, 국제화, 다국어 지원 기능을 제공 )

<fn:xxxx  /> - 문자열을 처리하는 함수 관련


 <sql:xxxx  /> <x:yyyy /> - 잘사용하지 않는다. 


참조할만한 글...


http://kimseunghyun76.tistory.com/326

http://www.cyworld.com/vattle/9918251

http://seven00.tistory.com/373


LPAS 소스 살펴보고, 사용여부에 따라서 사용한 문번들은 다시한번 정리해서 익히도록 합시당... 

'BackEnd > JSP&Servlet' 카테고리의 다른 글

서블릿 라이프사이클  (0) 2014.03.12
Expression Language  (0) 2014.03.11
JSP 기초 1 - Session/Cookie/URL 재작성/ 페이지 forward,include  (0) 2013.10.11
Posted by 행복한삶~!!
|

출처 : http://kwon37xi.egloos.com/3666564


초보 Java 웹 개발자들을 위한 학습 로드맵 프로그래밍

OKJSP에 자주 가서 요즘 자바 개발자들이 어떻게 살아가나를 보는 편인데, 아주 많이 반복적으로 올라오는 질문이 "대체 뭘 공부해야 하나요? 프레임워크는 Spring을 해야 할까요? iBATIS를 해야 할까요?" 하는 식의 질문들이다(이 질문은 사실 말이 안된다. 왜 그런지 읽다보면 나온다).

Java는 웹 관련 프레임워크들이 너무 다양하고, Ruby나 Python 같은 경우에는 RubyOnRails나 Django 처럼 하나의 프레임워크 안에 기능별 프레임워크들도 모두 다 All in one 형태로 들어 있어서 혼란을 주지 않는 반면, Java는 각 영역별로 프레임워크가 모두 다르고, 또한 각 영역별로 존재하는 프레임워크들의 종류도 많아서 초보 개발자들에게 극심한 혼란을 주고 있다.

그래서 나름대로 Java Web 개발자들을 위한 학습 로드맵을 정리해 보았다.

1. Java 그 자체
많은 웹 개발자들이 마치 JSP 코드를 짤 줄 알면 그걸로 Java 웹 개발을 할 줄아는 것이라 생각하고 Java 그 자체를 소홀히 하는 것을 본다.
말도 안되는 소리이다. Java를 모르고서 Java 웹 개발을 제대로 한다는 것은 어불 성설이다. Java 그 자체를 먼저 공부하라.

특히 Java 5 문법을 숙지하길 권한다. 이제 우리나라도 점차 Java 5가 대세가 되어 가고 있다. 대부분의 프레임워크들과 WAS(JSP와 서블릿을 구동하는 서버)도 모두 Java 5를 기준으로 바뀌었으며, JVM 자체도 버전이 높을 수록 성능이 더 좋다.

2. JSP와 Servlet 그리고 Model 1
모델 1은, JSP 하나에 DB에 접속해서 쿼리를 날리는 등의 모든 업무적인 기능(Business Logic)을 넣고, 그 아래에 HTML 코드를 박아 넣는 식으로 개발하는 것을 의미한다.
아직도 많은 개발자들이 여기에 길들여져 있는데, 일단 JSP 자체에 대한 기본기를 익힌 뒤로는 재빨리 버려야 할 습관이다.

그리고 많은 개발자들이 Servlet을 무시하고 JSP만 하는 것을 보곤 하는데, Servlet에 대한 학습이 제대로 이뤄지지 않으면 더 나은 웹 개발이 곤란하다. Servlet에 대한 기초 개념을 확실히 잡길 권한다.
모델 1은 제가 알기로는 HTML과 로직을 모두 한 JSP에 넣는 방식이 아니라 jsp:beans를 이용하는 방식입니다. 모델 1에서도 여전히 비즈니스 로직과 UI는 분리할 수 있죠. thin controller, fat model에는 더 맞는 방식이라고도 할 수 있습니다. - 영록, 그리고 Servlets and JSP Pages Best Practices에서 Model 1 관련 부분 참조

모델 1은 JSP나 혹은 서블릿 하나가 요청에 대한 처리, 데이터 유효성 검사, 비즈니스 로직 처리, 응답 생성을 모두 다 책임지는 방식이다. 모델 1은 작고, 간단한 애플리케이션에서 개발을 쉽게하고자 할때 사용된다.

In Model 1, a request is made to a JSP or servlet and then that JSP or servlet handles all responsibilities for the request, including processing the request, validating data, handling the business logic, and generating a response. The Model 1 architecture is commonly used in smaller, simple task applications due to its ease of development. - Wikipedia


3. Model 2 - 프레임워크의 등장
JSP로 열심히 개발을 하다보니 프로젝트 규모도 커지기 시작하고, JSP 파일 크기도 수천줄에 달하는등 엄청나게 커진다.
그런데 이 JSP에다 두서없이 모든 기능을 다 때려 넣다보니 JSP마다 똑같은 기능들이 Copy&Paste로 들어가고, JSP 안에 들어 있는 Java 코드들에서 에러가 발생하면 찾아내서 디버깅 하는 일이 지옥같이 느껴지기 시작한다.

여기서 Model 2가 구원자로 등장한다.

Model 2는 말만 멋드러졌지 실제로는 간단한 개념이다.

JSP에서 수행하던 DB 쿼리 등의 작업을 Servlet에게 넘겨주고 JSP에서는 오로지 화면 출력만 담당하는 것이다.

Servlet에서 DB 쿼리등 화면 출력과는 상관없는 비지니스 로직을 일단 먼저 모두 수행하고, 그 결과를 request.setAttribute("key",결과객체);로 담은 다음 JSP 페이지로 포워딩(forward)을 하면 JSP에서는 request.getAttribute("key")로 그 객체를 받아서 화면에 뿌려주기만 한다.
이런 업무 수행단/화면 출력단의 철저한 역할 분리가 Model 2이다.

여기서 이러한 각 역할을 "MVC - Model View Controller" 라고 한다. 그래서 Model 2는 MVC와 동일한 의미로 사용하기 도 한다. MVC의 의미는 공부하면서 찾아보라.

이게 뭐가 좋냐고? 개발 기간이 좀 길어지고 프로젝트 규모가 쬐끔 커지고, 기존 프로젝트를 유지보수를 해보면 얼마나 좋은지 몸소 뼈져리게 느끼게 된다.

Model 2의 기능을 정형화해서 쉽게 구현하게 해주는 것이 MVC Framework들의 역할이다.
가장 유명한 Model 2 웹 프레임워크들은 다음과 같은 것들이 있다.

스트럿츠 1 - Struts 1
스트럿츠 2 - Struts 2
스프링 MVC - Spring MVC
* 기타 덜 유명한 Wicket, Stripes, JSF, Tapestry 등.

Struts 1은 MVC의 효시라고 할 수 있다. 우리에게 MVC라는 축복을 주기는하였으나, 나온지 오래된 만큼 낡은 개념들이 많이 녹아있고 쓸데 없이 복잡하고 배우기도 어려운 편이다.

오히려 Struts 2와 Spring MVC가 더 배우기 쉬울 것이며, 개발도 더 쉽다. 현재 추세는 Struts 2와 Spring MVC이다. 대형 포탈이나 SI 업체들도 Spring/Struts 2를 주로 채택하는 추세로 가고 있는 것으로 알고 있다.

둘 중 하나의 개념만 확실히 이해해도 다른 것을 배우는데 어려움이 별로 없으므로 그냥 둘중에 골라서 배우길 권한다. 나는 Spring을 선호한다.

그리고 MVC 프레임워크를 사용하기 시작하면서 View를 만드는 JSP에 대해서도 재조명이 시작된다. 기존에 Java 코드를 JSP에 직접 넣던 관행을 버리고 JSTL과 태그 라이브러리를 사용하거나 아예 JSP를 버리고 다른 템플릿 엔진으로 만들기도 한다. 이에 관해서는 맨 마지막에.

4. 퍼시스턴스 프레임워크 : JDBC 반복 작업에 짜증이 나기 시작하다.
현대 웹 개발에서 가장 큰 역할을 차지하는 것은 뭐니뭐니해도 단연 Database 작업이다.
지금까지는 아마도 JDBC에서 DB 커넥션을 맺고, 쿼리를 날리고 그 결과 ResultSet을 JSP로 넘겨주어서 출력하는 식으로 했을 것이다.
이미 다들 알고 있겠지만 JDBC를 사용하면 똑같은 코드가 굉장히 많이 반복해서 나온다. 한마디로 "삽질"의 전형이 JDBC 작업이다.
이것을 깨달은 많은 개발자들이 조금 어정짱하게 반복작업을 해결해주는 Util 클래스들을 프로젝트별로 만들어서 사용하곤 한다.
하지만, 물론 이에 대해 정형화하고 깔끔하고 훨씬 더 사용하기 쉬게 만들려는 노력이 이미 수년에 걸쳐 이루어졌다.

이렇게 DB관련된 작업을 정형화한 것들을 Persistence Framework 라고 한다.

아이바티스 - iBATIS : SQL Mapper - JDBC보다 더 쉽게 배우고, 더 편하게 사용한다.
하이버네이트 - Hibernate : 객체지향을 객체지향답게, 개발 기간을 엄청나게 단축시켜주다.

퍼시스턴스 프레임워크의 양대 산맥은 iBATIS와 Hibernate이다. 이 둘 모두 우리나라에 책이 나와 있다.
iBATIS는 SQL Mapper의 한 종류이고, Hibernate는 ORM의 한 종류이다.

이 둘의 차이는 iBATIS는 개발자가 SQL 쿼리를 직접 작성한 것을 객체에 매핑시켜주는 것이고, ORM은 DB 스키마와 객체간의 관계를 설정파일로 만들면 자동으로 쿼리를 만들어주는 것이다.

자, 이 둘을 보면 미국에서는 Hibernate가 인기가 좋고, 우리나라에서는 iBATIS가 사실상 SI 업계를 평정했다.
그러니까, 일단은 우리나라에서는 iBATIS를 공부하면 된다고 보면 된다.

이렇게 말하니까 마치 이 둘이 경쟁자 같은데, 사실 이 둘은 경쟁 상대라기 보다는 보완해주는 역할을 한다. SI에서 처럼 DB 테이블이 정규화 되어 있지 않은 경우에는 Hibernate같은 ORM을 사용하면 프로젝트를 말아먹을 수 있다.

iBATIS는 테이블 정규화에 무관하게, 개발자가 작성한 SQL을 객체로 매핑하기 때문에 DB 스키마가 마구 꼬여 있는 상황에서도 유연하게 작동하고, 개발자가 직접 SQL 튜닝을 할 수 있다는 장점이다.

그리고 Hibernate는 배우기가 굉장히 어려운 프레임워크이고 튜닝이 매우 어렵다. Hibernate책을 보면 캐싱을 통해 성능을 향상시키라고 하지만 캐싱은 iBATIS도 못지않게 잘 지원한다. 하지만 일단 배우면, 그로인한 코딩 생산성이 iBATIS가 감히 넘볼 수 없을 정도록 급격히 향상된다.

Hibernate는 DB 정규화가 잘되어 있는 웹 포탈 업체나 패키지 소프트웨어 제작시에 강력히 권장할만 하다.

5. IoC와 DI - 객체의 생성주기와 의존성을 관리하고 싶어지다
사실 내가 경험한 SI를 보면 4단계 까지만 가도 막장은 아닌 프로젝트라고 본다. 아직도 신규 프로젝트를 하면서도 Model 1에 JDBC로 코딩하는 것을 많이 보았기 때문이다.

앞서, MVC라는 형태로 웹 애플리케이션의 역할을 철저하게 분할해서 처리하라고 했었다.

이제 여기서 좀 더 역할을 분할하기 시작한다.

Database를 관장하는 코드(DAO)와 Database 처리 결과를 가지고 그외 비지니스 로직을 추가로 수행하는 코드(Service), 그리고 웹으로 들어온 요청을 받아서 비지니스 로직을 호출하고, 그 결과를 다시 웹(HTML 등)으로 내보내는 코드(Controller)로 분할을 하면 유지보수가 더 쉽고, DB가 Oracle에서 DB2 로 변경되는 식의 중대 변화가 있을 때도 DAO만 바꾸면 되는 식으로 변화에 대한 대처가 유연해 진다는 것을 깨닫기 시작한다.

이제는 각 역할별로 클래스를 분할하고 컨트롤러 객체는 서비스 객체에 서비스 객체는 DAO 객체에 의존해서 작동하도록 코드를 바꾸기 시작한다. 그리고 객체의 생성과 파괴 주기도 관리해야만 하게 된다. 객체를 하나만 생성하면 되는데 불필요하게 매번 new를 할 필요는 없으니까.

이렇게 객체의 생성/파괴 주기를 관리하고 객체간의 의존성을 관리해주는 프레임워크를 IoC 컨테이너라고 부른다.

1. Spring Framework
2. EJB 3.0

사실상 대세는 Spring Framework로 굳어졌다. EJB 3.0은 내가 안써봐서 뭐라 말은 못하겠다.

Spring MVC는 이 Spring Framework의 일부분이다.

Spring은 또한 AOP도 지원한다.

AOP 의 개념이 상당히 어려운 편이라서 개념 자체를 확실히 한마디로는 표현하지 못하겠다. 어쨌든 개발자들에게 가장 쉽게 다가오는 표현으로 하자면, AOP는 동일한 패턴으로 반복적으로 해야하는 일을 설정을 통해 자동으로 해주는 것이다.
이에 관한 가장 보편적인 예가 바로 트랜잭션이다.
지금까지는 아마도 비지니스 로직이 시작될 때 트랜잭션이 시작되고, 비지니스 로직이 끝날 때 트랜잭션을 종료하는 코드를 매번 작성해서 넣었을 것이다.
AOP를 사용하면, 비지니스 로직의 역할을 하는 메소드가 무엇인지 설정파일에 넣어주기만 하면 자동으로 메소드가 시작될 때 트랜잭션을 시작시키고, 메소드가 끝날 때 트랜잭션을 종료시켜준다. 물론 예외가 발생하면 트랜잭션을 rollback도 해준다. 따라서 Spring을 사용한 프로젝트에서는 트랜잭션 관련 코드를 볼 수 없을 것이다.

Spring 프레임워크는 기본적으로 IoC 컨테이너 역할을 하는 것이 핵심이다. 따라서 Spring을 사용한다고 해서 꼭 Spring MVC를 사용할 필요는 없다. Struts 2 + Spring + iBATIS 나 SpringMVC + Spring + Hibernate 등... 어떠한 조합이라도 가능하다.

6. 그 외
◈ Template Engine : JSP 보다 더 간결하면서 강력한게 필요해!
   * JSP + JSTL : Sun이 지정한 산업표준이다. JSTL은 당연히 쓰고 있으리라 믿는다.
   * Freemarker : 가장 권장할 만하다.
   * Velocity : 굉장히 배우기 쉽다. JSTL보다 더 빨리 배워서 쓸 수 있다. 가독성도 좋다. 그러나 Freemarker 만큼 편하고 강력하지는 못하다.
많은 사람들이 Java 웹 개발을 그냥 "JSP 개발"이라고도 부르는데, MVC가 도입되고, Freemarker 같은 다른 템플릿 엔진을 사용하게 되면 더이상 JSP는 코빼기도 안보이게 된다. 그러므로.. JSP 개발이라는 말은 쓰지 않았으면 좋겠다.

◈ Layout Engine
   * Sitemesh : 헤더 푸터 처럼 동일 패턴이 반복되는 레이아웃을 관리해준다.

◈ XML 도우미 : W3C DOM은 너무 어렵고 난잡하다. 좀 더 편한 XML관련 개발을 원한다면..
   * JDOM : Java 표준으로 지정됐다고 한다.
   * DOM4J
둘 다 비슷하게 편한거 같다. 예전엔 JDOM을 썼었는데, 나 같은 경우 현재 프로젝트에서는 DOM4J를 사용한다. Hibernate가 DOM4J를 사용하기 때문에, 별도의 라이브러리 더 넣는게 귀찮아서.

◈ 단위 테스트
   * jUnit : 코드를 철저하게 테스트하자.

◈ 소스코드 버전관리
   * CVS
   * Subversion : 현재 대세는 Subversion
내가 최고 막장으로 꼽는 프로젝트는 아직도 FTP로 소스 관리하는 프로젝트이다. 이런 프로젝트에는 절대로 참여하지 않을 것이라고 굳게 맹세하고 또 맹세했다. --;
소스 코드 버전관리는 여러 개발자들이 동시에 개발할 때 소스코드를 저장하고 충돌을 관리해주며, 소스 변경 내역을 계속해서 추적해서 과거 소스로 언제든지 돌아갈 수 있도록 도와준다.
현재 대세는 Subversion이지만 CVS로도 버전관리의 이점을 충분히 만끽할 수 있다. 그리고.. 사실 CVS가 사용법을 익히기는 더 쉽다.

◈ 자동 빌드
   * Ant : Ant 면 만사 Ok!
   * Maven
아직도 javac 로 컴파일하고 있고, FTP로 파일 올려서 복사하고 있다면.. 이 모든일을 자동으로 명령 한방에 처리하도록 해야 실수도 적고, 퇴근도 일찍한다.
Ant로 빌드와 배포를 자동화 하자.

결론

내가 권하는 조합은
* SI 업체에서 일하는 경우 : Struts 2 혹은 SpringMVC + iBATIS + JSP/JSTL + 가능하다면 Spring Framework
* 웹 포털등과 같은 업계, 패키지 소프트웨어 제작 업체 : Struts 2 혹은 Spring MVC + Hibernate + Spring Framework + Freemarker + Sitemesh


성윤's Comment !! 

Back end 개발자 위주로 나름 잘 정리되어 있네요.. 

Front end까지 더 보탠다면... Javascript 각종 Framework, Android , PhoneGap 등이 포함되겠네요.. 

Posted by 행복한삶~!!
|

서블릿은  init(), destroy() 함수에 초기화 및 종료 코드를 기술할 수 있다. 

서블릿에서 반복해서 사용될 먼가를 구현하거나,초기화 할때, 공통되는 종료처리를 할때 사용하면 좋을듯.. 


JSP의 경우 jspInit(), jspDestory()를 정의해서 사용하면 된다. 


서블릿 init()의 경우 서블릿이 최초 실행될때 그때 수행이 되는데, 이렇게 하면 최초 실행될때 그 만큼의 시간이 더 소요되는데 

최초에 application이 초기화되는 시점 web.xml이 로딩되는 시점에 초기화를 수행하도록 할 수 있다. 

방법은 web.xml 에 등록하는것이다.. 


예> 

<servlet>

      <servlet-name>   ....  </servlet-name>  

       <servlet-class> .... </servlet-class>

             <load-on-startup /> 

</servelt>


서블릿의 초기화 파라미터

<servlet>

      <servlet-name>  xxx       </servlet-name>

       <servelt-class> xxx </servlet-class>

       <init-param>   

               <param-name>  file_name </param-name>

                <param-value> agreement.txt </param-value>  

        </init-param>

</servlet>


소스에서 해당정보를 얻어오려면.. 


String filename = getInitParameter("file_name"); 



// 유사하게 jsp 파일의 초기화 파라미터를 지정하고 읽어올수도 있다.
그렇게 하기 위해서는 해당 jsp 파일을 servlet으로 web.xml 에 등록해야 한다.  거의 쓸일이 없을것 같아서 생략.. 
( 뇌를 자극하는 JSP Servlet 302 페이지... ) 


웹 어플리케이셔 전체의 초기화 파라미터 

<web-app ... >

       <context-param>   

               <param-name>  file_name </param-name>

                <param-value> agreement.txt </param-value>  

        </context-param>

</web-app> 


소스에서 해당정보를 얻으려면.. 
String str = application.getInitParameter("file_name");


로그 메시지를 기록하는 log 메서드 
application.log("xxxx"); 

Tomcat의 경우 logs 폴더 아래의 해당 날짜파일에 로그가 기록됨. 




page, request, session, application 객체에서 setAttribute, getAttribute, removeAttribue 함수 사용하여 정보 공유하기 

Posted by 행복한삶~!!
|

Servlet 에서 

request.setAttribute("result", total);


JSP에서

$(result)  형태로 간단히 출력가능함.. 


스크립트릿으로 출력하려면 더 복잡함.. 

<%= request.getAttributes("result") %>



JSP 2.0에서 추가됨. 


HTML로 결과 출력을 더 간편하게 하도록 도와주는 문법. 

<%= xxxx.getAtrribute("yyyy") %>  을  간단히   $( "yyyy" ) 형태로 표기가능하다. 


내장객체를 사용하여 application,page,session, request 의 getAttribute를 할수 있고,,, 
post나 get 방식으로 넘어온 파라미터들에 접근,  header, initParam, cookie, pageConext등에 접근가능하다. 


EL의 내장객체

  • pageScope : page scope 의 변수들
  • requestScope: request scope 의 변수들
  • sessionScope : session scope 의 변수들
  • applicationScope : application scope 의 변수들
  • param : parameter 변수들 문자열
  • paramValues: parameter 변수들 문자열 배열
  • header: HTTP request 헤더
  • headerValues: HTTP request 헤더 문자열 배열
  • initParam : 컨텍스트 초기 변수 web.xml 에서 지정
  • cookie : 쿠키 변수들
  • pageContext : 현재 페이지의 pageContext 객체


각종 산술연산 및 논리연산이 가능하다. 

배열, ArrayList, Map 객체에 접근가능하다. 

자바빈 객체에 손쉽게 접근가능하다. 

자바 정적 메소드 호출도 가능하다.  ( 아래 EL 함수 예제 참조 )


EL 함수 예제

http://seung-jun.tistory.com/222

Posted by 행복한삶~!!
|

netstat 명령어를 통해서 현재 사용중인 포트정보를 알수 있다. 

톰캣등을 설치할때 사용하지 않는 포트를 얻을때 유용함.


옵션설명

 -a            모든 연결과 수신 대기 포트를 표시합니다.

 -n            주소와 포트 번호를 숫자 형식으로 표시합니다.


C:\Users\sungyun>netstat -na


활성 연결


  프로토콜  로컬 주소           외부 주소              상태

  TCP    0.0.0.0:135            0.0.0.0:0              LISTENING

  TCP    0.0.0.0:445            0.0.0.0:0              LISTENING

  TCP    0.0.0.0:1025           0.0.0.0:0              LISTENING

  TCP    0.0.0.0:1026           0.0.0.0:0              LISTENING

  TCP    0.0.0.0:1027           0.0.0.0:0              LISTENING

  TCP    0.0.0.0:1028           0.0.0.0:0              LISTENING

  TCP    0.0.0.0:1029           0.0.0.0:0              LISTENING

  TCP    0.0.0.0:1030           0.0.0.0:0              LISTENING

  TCP    0.0.0.0:8009           0.0.0.0:0              LISTENING

  TCP    0.0.0.0:8080           0.0.0.0:0              LISTENING

  TCP    0.0.0.0:31067          0.0.0.0:0              LISTENING

  TCP    127.0.0.1:5037         127.0.0.1:5037         ESTABLISHED

  TCP    127.0.0.1:8005         0.0.0.0:0              LISTENING

  TCP    127.0.0.1:8080         127.0.0.1:12351        ESTABLISHED

  TCP    127.0.0.1:12351        127.0.0.1:8080         ESTABLISHED

  TCP    192.168.43.159:12131   192.241.178.140:443    ESTABLISHED

  TCP    192.168.56.1:139       0.0.0.0:0              LISTENING

  TCP    [::]:135               [::]:0                 LISTENING

  TCP    [::]:445               [::]:0                 LISTENING

  TCP    [::]:1025              [::]:0                 LISTENING

  TCP    [::]:1026              [::]:0                 LISTENING

  TCP    [::]:1027              [::]:0                 LISTENING

  TCP    [::]:1028              [::]:0                 LISTENING

  TCP    [::]:1029              [::]:0                 LISTENING

  TCP    [::]:1030              [::]:0                 LISTENING

  TCP    [::]:8009              [::]:0                 LISTENING

  TCP    [::]:8080              [::]:0                 LISTENING

  TCP    [::1]:1031             [::]:0                 LISTENING

  UDP    0.0.0.0:5355           *:*

  UDP    0.0.0.0:53378          *:*

  UDP    127.0.0.1:1900         *:*

  UDP    127.0.0.1:51096        *:*

  UDP    192.168.56.1:137       *:*

  UDP    192.168.56.1:138       *:*

  UDP    192.168.56.1:1900      *:*

  UDP    [::]:5355              *:*

  UDP    [::1]:1900             *:*

  UDP    [::1]:51095            *:*

  UDP    [fe80::4446:a049:7fa3:6851%14]:546  *:*

  UDP    [fe80::4446:a049:7fa3:6851%14]:1900  *:*

'그외 주제들 > 기타' 카테고리의 다른 글

웹쪽.. 용어 부터 좀 알자  (0) 2014.01.03
첫번째 글... syntaxhighlighter 3.0 좋아  (0) 2013.09.26
Posted by 행복한삶~!!
|

http://www.okjsp.net/bbs?seq=45969

SimpleDateFormat 에서 시간을 24시간타입으로 나오게 할려면요?어떻게?

java.text.SimpleDateFormat formatter=new java.text.SimpleDateFormat("yyyyMMddHHmmss");

 

위처럼 하면 오후 1시면 01로 나오는데 13시로 나오게 할수 없나요?

HH로 하시면 될텐데요....? 
hour에 관련된 pattern문자는 

HH : 0 -23 
kk : 1 - 24 
KK : 0 -11 
hh : 1 - 12 
이렇게 정의되어 있습니다. 
일반적인 24시간 표시일 경우... 
0 - 23인 HH를 쓰는게 맞습니다.



http://ra2kstar.tistory.com/123


JAVA 현재 시간 구하기




JAVA에서 제공하는 다양한 메서드는 굉장히 편하다. 이번에는 그 중에서 현재 시간을 구하는 메서드를 알아본다. 


System.currentTimeMillis(); 


currentTimeMillis()의 리턴형은 long 값이며, 1/1000초의 값을 리턴한다. 

(검색을 통해서 좀 알아보니 1970년 1월 1일 부터 계산된 것이란다.) 


이 메서드를 통하여, 현재 시간을 계산 할 수 있고, 프로그램의 실행 시간 또한 나타낼 수 있다. 


  현재 시간 출력 및 실행 시간 출력

public class trunc_tweet_tag {

public static void main(String [] args){

long time = System.currentTimeMillis(); 

SimpleDateFormat dayTime = new SimpleDateFormat("yyyy-mm-dd hh:mm:ss");

String str = dayTime.format(new Date(time));

System.out.println(str);

long start = System.currentTimeMillis() ; 

new trunc_tweet_tag("./message/");

long end = System.currentTimeMillis(); 

System.out.println((end-start)/1000 +" 초 걸림");

}

......



'BackEnd > Java' 카테고리의 다른 글

윈도우 7 JAVA_HOME 설정하기  (0) 2014.09.16
초보 Java 웹 개발자들을 위한 학습 로드맵  (0) 2014.03.12
Posted by 행복한삶~!!
|