Team G.HARD :: cult of hard-corder

오랜동안 강의를 쉬었습니다. 바로 웹 프로그래밍에 들어가려고 했으나, 순서를 생각해보니 WAS를 설명해야되더군요. 솔직히 WAS를 설명하려고 하니 막막해서 일부러 강의를 피하고 있었습니다. 저가 아는 조그마한 지식으로 한번 풀어보겠습니다. (이미 다들 알고 계시리라 생각되지만.)
이번 강의는 네트워크(특히 http protocol)의 이해가 기반이 되어야 합니다.

WAS란?
Web Application Server의 줄임말입니다. Web Server의 대표적인 예인 apache(httpd)는 정적인 페이지(*html, *htm)를 보여준다면, WAS는 동적인 페이지를 보여준다고 생각하면 됩니다.

php로 프로그래밍하고 웹브라우저로 보여주기 위해서는 apache(Web Server)와 php 인터프리터, 그리고 Web Server와 php를 연결해주는 apache 모듈이 필요합니다.
간단히 보면, http://ghard.tistory.com/example1.php로 Web Server가 요청을 받으면 example1.php를 Client(Web Browser)에게 바로 보여주는 게 아니라, php로 example1.php를 실행한 다음 그 결과를 Client에게 보여주는 겁니다. 소위 웹 프로그래밍이란 위의 example1.php를 프로그래밍하는 것이겠지요.

블로그가 이렇게 프로그래밍된 거라면 이해하기 쉽겠네요. DB에서 데이터를 꺼내와서 화면에 뿌려주는 거라 생각하면 됩니다. 동적인 페이지라는 건 DB의 데이터는 가변적으로 변하기 때문에 데이터가 추가, 수정될 때마다 웹 페이지가 변경되는 겁니다.

그렇지만 php 자체가 Web Application Server는 아닙니다. (php 프로그래밍을 거의 안해봐서 잘은 모르지만... 혹시 틀렸다면 지적해주시기 바랍니다.) 독자적으로 Client에게서 Request를 받을 수 있는 Server가 아니지요. 단지 인터프리터로서 그 중간에서 apache 모듈이 php를 실행하는 겁니다.

그럼 WAS는 무엇인가? 독립적으로 Client에게서 Request를 받아, 지정된 비지니스 로직을 실행한 후 그 결과를 Client에게 보여주는 Server입니다.  대표적인 예로는 Tomcat(Java WAS), mongrel(Ruby On Rails WAS) 등이 있겠군요. 보통 URL 끝에 보면 jsp, do, asp 등으로 끝나면 WAS에서 해석해서 동적으로 결과를 보여준다고 생각하면 됩니다.

자, 우리의 목표는 자바 웹 어플리케이션이므로 당연히 Java WAS에 대해 알아봐야겠지요. Java의 정책이 그렇듯이, 항상 Interface를 sun에서 제정하고, 그 외 Vendor들이 그 Interface에 맞춰 구현해놓습니다. JDBC가 그 대표적인 예겠지요. Java WAS 역시 그렇습니다.
javax.serlvet package의 interface에 맞게 구현해놓은 몇몇 Java WAS가 있습니다. tomcat, resin, Weblogic 등이 각각의 vendor들이 제공하는 WAS입니다.

저는 그중에서 Open Source로 유명한 tomcat 5.5.x로 프로그래밍할 예정입니다. (소스가 공개되어 있으므로, 관심있으신 분들은 홈페이지에서 소스 다운 받아 분석해보시길. 자바에 대해서도 많은 공부가 됩니다^^)

WAS. 조금 이해가 되셨나요?
Posted by xHuro
teQnical/Java dev. l 2007. 2. 2. 22:56
프레젠테이션에 대한 이야기 첫번째를 진행할려고 합니다
글에대한 순서를 정해놓고 쓰지는 않겠습니다.
연재도 다소...랜덤하게 진행될 예정입니다. @.@;;
내용은...항상 그렇듯이 길게 쓰지 않겠습니다 :)

교육세미나를 준비하게 되면서 다른 분들의 자료라던지
그리고, 기타 여러가지 조언 및 도서들을 많이 보게되었습니다.
아직은 뭐 기술세미나에는 질문할만한 지식도 갖추지 못한 상태이지만
저번 주에 기술세미나에 참석하여 연구실 선배들의 발표를 잘 들었습니다.
특히 정연수 옹의 발표는 아주 정말 인상깊었습니다
프레젠테이션의 정석을 보여주는 것이랄까요
막힘없이 내용을 술술 풀어내는 데에는 정말 감동을 받았죠
왜 선배들이 연수옹의 발표를 주의깊게 잘 보라고 했는지 알 거 같더군요
들으면서 그때그때 느낀점을 적어놓아야 했는데 그때는
내용을 따라가기 바빠서 미처 적지 못한 내용들이 있는데
일단 가장 기억나는것부터 적도록 하겠습니다.

첫째주제는 ...

작성하였으면 반드시 출력해서 3번 이상 보라는 것입니다.

저도 그랬지만.많은 대학생들은 자료를 만들고는 출력해서 보지는 않는 것 같습니다.
대학교에서 하게되는 학생들의 발표의 경우 오타 정도는 별것 아닌 실수라고 볼 수 있습니다

하지만.....막상 이게 학부 수준을 넘어가게 되면 얘기가 달라집니다
회사도 마찬가지겠지요.

이 주제는 오타에 대한 것만을 얘기하는 것이 아닙니다만
오타는 그만큼 자신의 주제에 대해 세밀히 살피지 않았다는 걸 얘기해줍니다.
그만큼 어찌보면 그까짓거 라고 할 수도 있겠습니다만
오타는 상당히 보는 사람의 입장에선 다른 얘기가 될수 있습니다.
준비를 철저히 하지 않았다는 느낌부터 해서 여러가지가 되겠습니다만
이것이 크게 확장된다면 남과 같은 주제에 대한 경쟁적인 프레젠테이션이라면
크게 될 수도 있겠죠. 학점이나 회사의 이익을 좌우하는.

단순한 이유인 "오타 misprint"얘기는 그만하고. 본론으로 들어가면

자신이 작성한 PPT를 보는 관점이 좀 달라질수 있더군요

같은 자료라도 어떻게 놓고 보느냐에 따라 다른 느낌을 주고
또한 어떤 환경에서 보느냐에 따라 다른 생각을 가져오게 됩니다

큼지막한 모니터 화면에서 페이지를 보던 것과, 뽑아서 자신이 직접 읽어보면서
보는 것은 대단히 다른 느낌을 줍니다. 그리고 생각보다 자신이 발견하지 못했던
부분들을 많이 보게 되죠.

이 것이 주는 가장 좋은 장점은 작성자에게 있어 자신의 자료를 좀 더 간결하고 정확한 방향으로 고칠 수 있게 해준다는 것입니다. 어떤 언어로 작성을 하던지간에 한 페이지에 말이 많이 적힌 것은 생각보다 가독성을 많이 떨어뜨리고 보는 사람의 집중을 흐트립니다.
저도 처음에 CDMA, CSMA라는 주제를 가지고 쓰다보니 한 주제에 대해서만해도
몇페이지 분량이 나오더니 뽑아서 읽어보고 고치고 빼고 더하고 하니 각각 한페이지 분량으로 줄어들더군요. 분명히 더한 부분도 있었음에도 불구하고 말이죠.
글로 적었던 많은 부분들의 쓸모없는 어휘를 줄이고 그림으로 혹은 표로 정리하고 나니
양이 많이 줄어들었습니다
. 처음의 40장 짜리 프레젠테이션이 무려 24장으로 줄었습니다
물론 양이 줄어든 만큼 기억해서 설명해야 할 부분은 더 늘어났지만요.

화면에서 볼 때는 생각지 못했던 부분들이 프린트를 통해 보았을 때는 또 다른 부분들로 발견이 되더군요. 이 부분은 이렇게 고치면 어떨까. 라는 생각도 들고, 무엇보다 주의가 좀 덜 분산되는 효과랄까요. 생각보다 많은 문제도 발견하고 발전적인 방향으로 전환할 수 있었습니다

지금 24장으로 줄어든 프레젠테이션도 각 페이지를 뽑아서 골격을 다시 그려보니
또 고칠 부분이 보입니다. '')=3

그렇지만 이렇게 고쳐놓고 보니 점차 고칠 부분도 줄어들고 (마치 코딩처럼 말이죠.)
뭔가 깔끔하다는 느낌이 듭니다. 발표도 걱정이 되지만 고치고 또 고치면서
내용이 어느새 머리속에 정리가 되어갑니다. 학부시절 공부도 이렇게 했으면
좋았을 건데! 라는 후회도 됩니다만. ㄷㄷ;

여튼...짧게 한다고 해놓고 말이 길어져 버렸습니다. 
지금까지 이 전문성 없는(oveRock 행님 표현대로 하자면 550점 짜리인가요. ㄱ-) 필자의 글을 보시느라 수고 많으셨습니다.;;
그럼 :)
Posted by 알 수 없는 사용자
teQnical l 2007. 1. 22. 16:57
안철수씨는.. 늘 무거운 가방을 가지고 다닌다지요.
지금은 여행가방인지 어떤가방인지..내가 수독허..도 아니므로 잘 모르겠지만.
어쨌든 그 가방의 존성대명은 소위 " idea back"이십니다

늘 뭔가 떠오르는 생각이 있을 때마다 적어놓는다시던데

저는...글케까지 부지런하지는.. 못할꺼 같고..

여기다 틈틈이 글을 남겨보려 합니다

주제는 프레젠테이션인데.

대상은...글쎄. 나도 되겠지만.

우리 공돌이라인들과 특히 자라나는 울과 후배들을 위해서랄까요.

제목하야. "공돌이들을 위한 프레젠테이션" 이라고 하면 좋겠군요.

아직 글쓰거나 이럴 내공도 안되지만.;

새로운 비급을 배우거나 절초를 배운다면 즉시즉시 올리겠습니다.;

이번에 연구실 교육세미나와 인적자원관리 수업을 들으면서 느낀 것은.

어떤 상황에든 대비해야 된다는 것이고(정말 불의의 사고에 할 말을 잃었다.)

리허설을 몇번이든 해야 된다는 것입니다.

겨우 "학부수업인데"," 중요한 일도 아니고." 라는 생각으로 한다면

"당신은 남에 대한, 그리고 당신의 고객에 대한 눈꼽만큼의 배려심도 없는거다"라고 생각이 듭니다.

학부때까지는 무려...졸업과제 발표 당시 조차..내가 발표자가 아니라 생각을 안했었고

이번 인적자원관리 수업때도 PPT만 열심히 만들고 정작 발표는 다른사람이 하다 삽질을 했기에

준비가 다소 소홀했던 점도 있었습니다.

그러면서....

아마 oveRock 행님도 잘 아시겠지만

"스티브 잡스의 프레젠테이션"

사용자 삽입 이미지

이것이 나를 충격과 감동의 폭풍에 휘말리게 했지요.


 
이 책을 읽고 너무나 감명을 받아버린 나머지.

잡스..그리고 프레젠테이션의 간지나는 폭풍에 휘말렸달까요.

사용자 삽입 이미지

한동안 정신을 차릴 수가 없었죠.

사과 홈페이지도 들어가보고.

그리고 매주 교회에서 파워포인트 작업을 주당 3개 이상씩 하는 바람에

우리가 주로 쓰는 파워포인트를 사용한 프레젠테이션에 대한 고찰 및 지켜가야할 것들에 대해

포스팅해보겠습니다.

아마.. 이글을 포스팅하게 되면. oveRock 행님을 비롯하야 많은 분이 도와주시리라 믿습니다.

일단. 포스팅은 틈틈이 하겠습니다.많이들 댓글로 도와주세요. :)
Posted by 알 수 없는 사용자
teQnical l 2007. 1. 15. 17:29
이번에는 자바 웹 어플리케이션을 구현할 때 각 Layer별로 사용하는 오픈 소스 프레임 웍에 대해 알아보겠다. 자바의 대부분 오픈 소스 프레임 웍은 Apache Project에서 유지보수 및 업데이트 된다. 종종 Apache Project 사이트에 가보는 것도 현재의 개발상황등을 보는 것도 재미있다.

* Controller
 : 최근에 각광받고 있는 컨테이너 중 하나인 Spring을 주로 Controller Layer에서 사용한다. xml을 이용하여 단순한 bean Class 선언 부터 다양한 라이브러리를 통합 관리할 수 있다. 또한 Interface와 implement를 나눌 수 있기 때문에 (decoupling) 디자인 패턴을 적용하기에도 용이(IoC)하다. 자바 웹 어플리케이션 뿐만아니라 자바 프로그래머가 되려면 어떤 오픈 소스인지는 알고 있는 것이 좋다. (해외의 많은 회사들이 이 spring 기반으로 어플리케이션을 만든다.)

* Model - Dao
 : Model Layer라기보다는 Controller에서 DB 사이에 존재하는 Dao 역할을 하는 프레임웍인 iBatis가 있다. sql문을 하드 코딩하는 것이 아니라 xml 파일로 빼내어 따로 관리할 수 있고, 적절하게 Model에 DB 데이터를 매핑시킬 수도 있다. 복잡한 JDBC 프로그래밍을 간단히 할 수 있다. 역시 알아둬야하는 프레임웍이다.

* View
 : 보통 jsp 및 servlet 프로그래밍시에 문제는 jsp 파일안에 <%~%>로 자바 코딩이 들어간다는 것이다. 이는 곧 View의 UI가 변경되면 소스 코드까지 건드려야한다는 위험요소가 발생하게됨을 의미한다. 최근에는 Servlet과 UI부문을 분리하기 위해 여러 오픈 소스가 사용된다. Servlet단은 Struts를, View에는 Velocity를 적용해서 사용한다. struts는 너무 큰 기능때문에 무거워 사장되어 가고 있고, 현재 struts2의 베타 버전이 발표된 이후 다시 한번 기대를 모으고 있다. 앞으로 정식 릴리즈이후의 충분한 검증을 거치면 서비스에서 써보려는 개발자들이 꽤 있다.
Velocity는 Servlet단에서 넘어온 request의 데이터들을 스크립트 언어 방식으로(정말 스크립트 언어로 보인다. 하지만 자바로 파싱된다) UI를 표현한다. 그다지 무겁지도 어렵지도 않으므로 앞단에서 많이 사용된다.

다음에는 아주 간단한 웹 어플리케이션을 만들어 로컬에서 테스트 해보겠다. (서버가 없으므로 각자가 로컬에서 테스트해야할 듯)

p.s 여기에 소개된 건, 현재 내가 프로젝트에서 주로 쓰는 프레임웍이다. (여기 소개된 것들 말고도 좋은 프레임웍이 참 많다. 한번씩 찾아보길...) 물론 서비스 자체가 이벤트성으로 가볍고 한번 쓰고 버릴 것들은 이렇게 프레임웍 쓰는 자체가 무모한 짓이다. 좋다고 해서 무조건 소 잡는 칼로 닭을 잡아서는 안되는 것이다.

계속적인 유지보수가 요구되고, 어느 정도 큰 규모의 서비스에서 적절하게 필요한 프레임웍을 넣고 어플리케이션을 만들어 나가는 것이 곧 실력이 아닐까?
Posted by xHuro
teQnical/Java dev. l 2007. 1. 14. 21:16
1 2 

최근에 올라온 글

카테고리

분류 전체보기 (32)
G.HARD bunker (4)
daily routine (18)
rumor says... (0)
teQnical (7)
projeKt (2)

달력

«   2024/03   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
tistory!get rss Tistory Tistory 가입하기!