오랜만에 글을 쓰는 것 같다. 최근 회사에서는 유지보수 하던 업무가 인수인계중에 있어 업무를 넘겨주다 보니 기존의 단순한 유지보수 시스템에 문제가 생긴다 생각하여 유지보수 시스템에 대해 생각하고, 이에 대하여 시스템을 구축하고 있다.

나는 회사에서 JSP로 만들어진 사이트를 유지보수 한다. 프레임 워크는 오래 전 회사에서 만든 것인데, 나름대로 폴더 구조만 잘 맞춰주면 로그도 잘 남고, DB 풀이나 객체 재사용에 대한 대비, 기본적인 JSP 내에서 사용해야 할 예를들어 자동 문자열 콤마라던가 기타 편리한 기능들은 잘 만들어져 있다.

내가 속한 회사는 사실 웹보다는 Active X 와 TR-transaction을 통한 금융 거래를 주로 하던 업체라 웹에 대해서는 단순히 viewer의 기능만 할 뿐이라 크게 신경쓰지 않았다. 허나, 최근들어 웹을 통한 거래가 많아지자 웹, 특히 WAS단과 DB에 대한 관심도가 높아져서 올 초 웹 전담 유지운영팀이 생기게 되었다.

기존에 웹 개발자들은 소수에 불과하였고, 서로 다른 팀에 있던 사람들이 모이다 보니 사실 유지보수 하는 사이트들도 준구난방, 하지만 사실 원천은 위에서 언급한 프레임워크를 사용한 파생 상품이고, 구조 또한 동일하다. 하지만 사람들이 자기 일을 관리하기에도 벅차기 때문에 아무도 이 프레임워크에 대해 신경쓰지 않았다.

그래서 처음 내가 한 일은 원천 소스를 찾는 일이었다. 다행히도 jdk 1.5로 컴파일된 버전을 찾긴 하였는데, 알고 보니 또 우리가 유지보수 하는 소스는 jdk 1.4로 컴파일 되어 있다. 내참.. 당장 원천 클래스 파일을 수정할 일은 없으므로 원천 소스를 가지고 있는 자체로 만족하고, jdk 1.4버전으로 향후 downgrade하기로 생각하고 일단 패스.

그리고 초창기부터 형상관리가 전혀 되지 않아 백업도 제각기이고 그나마 테스트 서버가 있어 그곳에서 마구잡이로 우선 에디트로 소스 수정을 하고 리얼 서버에 반영한다. 하지만 혼자 작업할 때에는 이게 참 좋겠지만, 문제는 얼마 전 내가 받은 신입 두명이 차례로 받아 작업한 사이트에서 발생한 것이다. 거래량으로 따지면 일순위인데 이 사이트를 신입급 둘이 유지보수 하고 했으니, 다른건 몰라도 소스가 2천줄 이상 되는 것, 자바스크립트 내에 보안도 되지 않은 상황에서 중요한 정보가 노출되는 것, 소스 상에 DB화 되지 않은 데이터가 배열로 박혀 있는 것(-_-;;) 등 아주 심각한 상황이 크게 발생해 있었다.

물론 지금이야 내가 수정해 놓아서 다행이긴 하지만, 또 다시 나는 이 서비스를 다른 분에게 인수인계 해야 하는 시점이 왔고, 그렇게 바로 인수인계 한다면 또 같은 상황이 발생할 것이라는 판단 하에 형상관리 시스템을 구축하기로 했다. 뭐 단순히 SVN만 생각했었는데, 결론적으로는 온갖 삽질 끝에 SVN+HUDSON+ANT 라는 구조를 잡았다.


SVN을 통한 버전관리, HUDSON을 통한 리얼 서버의 WAS에 통합, 그리고 윈도우 배치와 Ant 스크립트를 통한 배포환경을 만들었다. 개발자는 로컬에 환경을 세팅하고 커밋하면 Hudson에서 변경된 파일을 받고 Ant를 통해 자동으로 WAS의 루트에 Different Task를 통해 변경된 파일만 올리게 된다. 이 과정에서 WAS의 루트 중 바뀌는 파일은 Copy Task 이전에 Ant의 Zip Task를 통해 자동 백업하게 된다.

[개발자 로컬 -> 테스트 서버 배포과정]
1. 개발자 Commit -> SVN 저장
2. SVN을 통해 Hudson에서 최신 소스파일 저장
3. WAS 의 Root 중 변경된 파일만 비교하여 백업(Ant의 Different Task 및 Zip Task 사용)
4. 최신 소스파일 -> WAS의 ROOT로 이동(Ant의 Copy Task 이용)

그럼 일단 테스트에서 정상 작동 여부를 확인할 수 있고,  정상 작동시 리얼에 배포 과정을 거치는데 이 역시 사용자의 윈도우 배치파일을 실행함에 따라 아래 절차를 자동으로 수행한다.

[테스트 서버 -> 리얼서버 배포 과정, 리얼 서버는 L4로 구분되어 2대로 정의.] 
1. 리얼 기존 파일 temp폴더로 내려받기. 만약 기존에 temp폴더에 내려받은 것이 있다면, 변경된(업로드할) 파일만 내려받기
2. temp폴더와 테스트 서버의 WAS Root를 비교하여 변경된(업로드할) 파일 자동 압축백업(Ant Zip Task)
3. 수정된 파일 -> temp 폴더로 이동(향후 1번 과정을 하면서 중복 다운로드를 하지 않기 위해)
4. 수정된 파일만 -> 리얼 업로드 (1,2번 서버)

약 3일간 고심해서 이렇게 세팅을 해 놓았는데 나름대로 만족하고 있다. 다만, 아직 리얼 이관을 실제로 해보지 못해서 좀 걱정이긴 하지만;; 확실히 자동화 작업은 많은 편의성이 있는가 하면 제대로 세팅해 놓지 않는다면 크나큰 문제가 발생할 것 같다. 그리고 그런 문제를 방지하기 위해서 메뉴얼 작업 역시 필수인 것 같다. 메뉴얼이 단순히 글로만 써놓은 그런 글이 아닌, 이미지를 통한 따라하기 방식으로 설명해 놓은 메뉴얼 말이다. 

말이 나온 김에 메뉴얼에 대해 얘기해 보자면, 단순히 유지보수 운영 메뉴얼 같은 것들이 정보성 글들만 쓰인 것이 많은데, 많은 유지보수 업무를 도맡아 하는 사람들은 대부분 신입이다. 그들을 위해 나름 경력이 있는 개발자들은 절대 실수할 염려가 없는 이미지를 통한 따라하기 식의 튜토리얼을 만들면, 그 정도의 상급자들의 배려가 있으면 더 좋지 않을까 하는 아쉬움이 든다.

나야 물론 팀 작업을 위해 이런 자동화를 구축하는 것도 있지만 사실 다 내 개발의 편의를 위해서이다. 솔직히 운영하다 보면 저런 과정에서 쓸때없이 발생하는 문제가 많이 생긴다. "최신 소스 동기화" 작업이 안되있으면 말이다. 급한 오류건에 대해서 보통 일반적으로 리얼에서 작업해서 처리하는 경향이 많은데, 그러다가 자칫 잘모해서 비정상적인 소스가 리얼로 올라가게 된다면? 그야말로 얼마나 큰 문제점이 초래되겠는가? 이는 사용자의 편의가 생명인 웹 서비스에서 사활이 걸린 문제이기도 하다.

여튼 내가 아무리 유지보수만 전담해서 한다 하더라도, 한번의 작업을 참여하더라도 항상 끝 마무리는 제대로 하도록 하는 것이 좋겠다. 뒷사람을 생각하는 배려. 그것이 없다면, 뒷사람들이 얼마나 욕을 할 지는 정말 상상하기도 힘들다. 나 역시도 전에 개발한 사람의 욕을 무지하게 해댔으니 말이다. 배려라는 것이 다른데 있는 것이 아닌, 나의 주위에 나와 함께 하는 사람들에 대한 배려가 진정한 배려라는 사실. 이번 기회에 깊히 깨닫는 것 같다.
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 메튜장

트랙백 주소 http://izect.kr/trackback/661 관련글 쓰기

댓글을 달아 주세요


나도 어느덧 20대도 꺾이고, 사회 경험으로썬 벌써 연차로 6년차에 접어들었다. 친구들이 대학을 다니고 있을 때 나는 회사를 만들어 나가고, 관리하다가 이제는 웹 개발 실무만 4년차에 접어들게 되었다. 연차로 따지면 대리급 정도 되지만, "병특" 이니깐 뭐라 할 말은 없고.. ㅎㅎ 그리고 딱히 직급에 목메고 살지는 않는다. 다만, 사회생활을 하면서 내가 좋아하는 웹 프로그래밍을 하고 있으니 나는 참 축복받았다고 생각된다. 물론 병특 기간은 무한대로 길긴 하지만 말이다.


여하튼 최근 한두달 간은 회사에서 나보다 5살 많은 사람을 교육하고 있다. 이리 저리 떠돌다가 30이 다되서야 웹 개발자로 정착하신 분이다. 우리 회사 소속은 아닌데, "파견직"으로 타 회사에서 나온 사람이다. 뭐 소속만 다를 뿐이지, 회사 분위기가 좋아서 그냥 정직원과 별반 차별을 하지 않는다. 아마 웹 프로그래머 뿐만 아니라 IT 업계에서 인력 파견 업체는 너무나도 흔한 일이고, "파견"이란 자체도 갑이 아닌 이상 비일비재한 일이니깐 말이다.


내 바로 전 직장은 인력파견 업체인데도 불구하고 SI성 사업을 진행하고, 자체 인력들을 파견하고 매출은 그 회사의 것으로 기록하곤 했다. 단지 그들이 챙기는 것은 10% 남짓의 인력 수수료일 뿐인데 말이다. (직원 50여명으로 매출이 1억이나 되던가..) 소속된 개발자들만 죽어나고, 이익은 윗선에서 다 챙긴다. 회사 복지는 4대보험이 전부다. 왜? 그들은 "프리랜서" 이니깐. 프리랜서들은 회사에서 벗어나 자유로운 삶을 원하지만, 정작 그들이 프로젝트에 투입되면 9시 출근이 적용되고 출근시간에 따른 제약조건이 생기지만 퇴근 시간에 따른 보상은 없다. 무리한 일정인 것을 알면서도 "IT 업체니깐 어쩔 수 없다" 라는 식으로 야근 수당 하나 없이(야근은 프리랜서의 능력 부족이라나..) 그들은 무리한 일정을 소화해 내려고 밤샘을 밥먹듯 하고, 여기 저기서 잠을 자고 스틱 커피의 카페인과 담배에 의지하며 버텨나간다. 프로젝트를 완료 하더라도 그들에겐 별다른 보상은 없다. 다만, 선배들의 "그렇게 좀 고생을 해야 프로그래밍을 좀 배워" 라는 따스한(?) 격려만 있을 뿐.


한 회사에 소속되서 웹 프로그래머로써 그 회사의 프로젝트만 꾸준히 하는 경우도 있고, 위의 경우처럼 여러 회사를 드나들며 파견직 업무를 진행하는 경우도 있을 것이다. 뭐 어떻든 간에 웹 프로그래머 신입들에게 내가 하고 싶은 말은 바로 "올바른 방향을 보고 열정을 쏟아붙자." 라는 것이다.

사용자 삽입 이미지



여느 신입들이 그렇겠지만 프로그래밍에서 바른 방향을 찾아나간다는 것은 어려운 일이다. 그리고 대부분의 경우는 이를 생각할 겨를도 없이 자신의 진로가 결정되는 경우도 있다. 웹 개발에 있어서 닥치는 대로 주어진 업무를 하다 보니 나중에 잠시 한숨 돌릴 때 나는 비전도 없는 개발을 하고 있을지도 모른다. "아, 이거해서 이 회사 옮기면 어떻게 먹고살지?" 개인적으로 10여년 전에 php개발을 하시던 분들을 몇몇 알고 있는데, 대부분의 php 10년차 이상 개발자 분들은 미래 비전에 대해 비희망적이다. 그들은 단지 PHP를 써 왔으니깐, 자바나 닷넷을 몰라도 그정도는 PHP로 분명 구현할 수 있으니깐. 그래서 그들은 PHP를 하지만, 현업에서 컨설턴트는 조금이라도 단가를 올리기 위해 프리미엄 전략을 추구하고, 서버부터 WAS, 언어까지 모든 것을 비용이 들게 되는 것으로 변경하게 된다. 2년전 진행하던 공기업 웹사이트 프로젝트에서는 서버부터 대형 밴더의 서버를 사용하며, 각종 서버 진단 도구하며 방화벽, UPS.. WAS는 라이센스가 있는 resin, DB는 오라클. 이렇다 보니 다양한 서비스를 통합하기에 가장 적합한 스프링을 사용하고, 스프링에 딸린 ibatis를 사용하고... 아주 그냥 주어진 예산에 맞추기 위해서 단가가 안맞으면 쓸때없는 기능을 추가해서 단가를 팍팍 올리려고 한다. 물론 그것이 회사의 매출을 올리고 컨설턴트의 실적을 올리는 데에는 더 없이 좋은 행동이지만..


이야기가 좀 샜는데, 여하튼 PHP개발자들이 참 자기 언어만 고수하고 있다는 자체가 좀 아쉽다. 요즘 PHP는 아주 간단한 서비스 혹은 돈안되는 SM성 프로젝트에나 사용되니 어찌 보면 그들은 편의를 추구하는 것 같기도 하고, 혼이 빠진 개발자의 느낌도 들곤 하고 말이다.


내가 20살때 모 업체에서 JSP로 구성된 인트라넷을 유지보수하고 후에 병특으로 최초 회사에 입사했을 때 개발적인 것 보다 내가 가장 깊히 추구했던 것은 "이 언어가 과연 내게 어떤 결과를 가져다줄 것인가?" 였다. 그때는 php,asp,jsp,닷넷,flex 등 웹 언어가 사용되는 프로젝트는 전부 투입되기를 바랬고, 투입되었었다. 개개별로 OS도 달랐고 WAS도 달랐고 DB도 달랐다 .이렇게 다양한 기술을 접하다 보니 자연스레 각각의 기술(언어)에 대해서 정보를 접하게 되었고, 추세를 알게 되니깐 방향이 잡혔다.(나의 경우는 자바 쪽으로 방향을 결정했다.)


일단 그렇게 방향이 정해졌으면 그쪽 프로젝트를 할 수 있도록 발판을 마련해야 한다. 기회가 있을 때 힘들더라도 프로젝트에 참여할 수 있도록 하는 것이 좋다.


신입들이 가장 아쉬운 점들 중 또 한가지는 웹 프로그래밍을 한다고 자료구조나 OOP 등 프로그래밍의 가장 기본적인 개념을 전혀 모르고 프로그래밍 한다는 점이다. JSP가 WAS를 통해 어떻게 돌아가는 지도 모르고 로그를 보더라도 호출 스텍이 어떤 개념인지도 모른다. 단지 그들은 alert 혹은 system.out.println , out.write로 찍어보기 일수이다. JSP페이지가 JAVA로 변환되서 WAS에서 읽어드리는 것을 모르다 보니 xxx.jsp에서 에러가 나는데 왜 자바 파일에서 에러가 나는지 모른다. 그리고 자바 파일이 어딨는지도 모르고, 심지어는 로그를 볼 줄 모른다. 옆에서 보고 있으면 왜 이리도 답답하던지..


그리고 그들은 무엇보다 환경설정에 관해 지속적으로 배워나가야 한다. jsp개발자라면 최소한 tomcat apache oracle 의 연동 세팅 정도는 해볼 줄 알아야 한다. apache.conf와 server.xml 에서 최소한 사이트 하나 추가를 하는데 context설정이니 virtual host설정이니 이 정도는 알아야 한다. php개발자라면 LAMP정도는 세팅할 줄 알아야 한다. 방법을 다 모르더라도 구글에서 찾아다가 세팅할 줄 알아야 한다. 그렇게 기본이 되었을 때, 나아가서 다양한 기술을 다루게 되고 대부분의 기술은 환경설정이 정말 그 기술의 "다" 이다. 그리고 돌이켜 봤을 때, 환경 설정이 내 몸값이구나 라는 생각을 하게 될 것이다.


여하튼 최근 내가 가르치고 있는 개발자는 성격도 소심해서 질문도 잘 안한다. 그나마 내가 가서 "잘되요?" 라고 했을 때 질문이 쏟아지는 편.. 사수(?) 입장에서 이렇게 되면 상당히 짜증나게 된다. 퇴근할 때 잠깐 "잘되요?" 라 물어보고 뭐 안된다 해서 붙어서 있다 보니 어느새 야근을 하게 되면 그 기분은 참.. 그러니 신입들은 모르는게 있으면 눈치껏 잘 물어보는 스킬좀 키웠으면 좋겠다. 모르는걸 물어보는 것이 정말 "최고"다. 쓸때없는 삽질로 시간 날리지 않고 빠른 시간에 기술을 습득할 수 있다.


그러니 우리 개발자 신입들은 바른 방향을 인지하고, 사수에게 거침없이 물어보고 사수의 기술을 쏙쏙 습득해서 개발자들이 당당한 세상을 만들어 주었으면 한다. 답답하지 않은 신입의 길, 그리고 멋진 개발자로 한발 한발 나아가는 자신이 되었으면 좋겠다.
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 메튜장

트랙백 주소 http://izect.kr/trackback/607 관련글 쓰기

댓글을 달아 주세요

  1. Favicon of http://mahabanya.com BlogIcon mahabanya 2011/01/17 18:36  댓글주소  수정/삭제  댓글쓰기

    지나고 나서 알게 되고, 알고 나면 후회하는 케이스가 개발경력인 것 같다는 생각도 들어요. 그렇다고 시니어가 자신의 시행착오를 바탕으로 충고를 하면, 그것이 받아들여지느냐...대부분 그 깜냥이 안 되는 경우가 일상다반사인듯;;;

    지난주에 미팅했던 개발자가 '요즘 웹개발자는 라이브러리를 쓰는 데 있어서 언어가 다르면 곤란해하더라...도대체 뭘 배워서 개발을 하는 것인지 모르겠다'라는 말까지 할 정도;; 웹개발이라는 것이 다른 개발에 비해서 진입장벽이 좀 낮은 것이 사실이다보니(그렇다고 진입만 하면 다 되는 것도 아니고...사실 그게 더 큰 문제일수도) 기초 없이 집을 그럴듯한 집을 지으려는 분들이 많은게 아닌가 싶기도 하구요. 아이젝님은 목적의식이 있어서 훌륭한 테크트리를 고민하고 있으니 ㅎㅎ 화이팅입니다!

  2. hooo 2011/04/13 10:22  댓글주소  수정/삭제  댓글쓰기

    음... 이제 취업을 앞둔 대학생으로써 마음가짐을 잡아주게하는 글이네요ㅎ

  3. 웹프학생 2011/04/22 13:13  댓글주소  수정/삭제  댓글쓰기

    웹프 쪽으로 현재 대학교에서 공부중인 학생인데, 많은 충고와 길이라는걸 알게되었습니다.
    자주 와서 글을좀 읽어보려구요~수고하세요~~

  4. 소원 2011/07/11 01:24  댓글주소  수정/삭제  댓글쓰기

    많은 생각을 하게 되는 글이었습니다. 저도 지금 30입니다. 전공도 아니고 늦게 시작해서 입사하여
    일하고 있는 중입니다.. 글을 나누어 주신분의 의도는 신입직원의 방향을 바로 잡아 주고픈 뜻으로 보여집니다. 정말 멋지십니다. 하지만 대 다수의 경력자(여기선 직장 상사를 의미 합니다)분들이 글 쓰신 이 분과 같은 마인드를 가진다면 우리나라의 소프트웨어 기술 인력도 상당한 대우를 받을 수 있것 같습니다.
    젊으신 분이라 역시 틀립니다. 현직에 짬밥좀 드신 분들은 이 분과 말은 똑같이 하되, 직장에선 전혀 일관성 없는 행동들이 난무 합니다. "너의 실력 향상을 위해서 스스로 파고들어 해결하라 !" , "이런 삽질 하고 있을줄 알았다~ 이런건 물어 봐야지~" 이 두가지 멘트의 기로에서 이도 저도 파악 하기 쉽지 않은게

  5. 소원 2011/07/11 01:28  댓글주소  수정/삭제  댓글쓰기

    신입직원들의 실상입니다. 그렇다면 여기서 경력자분께선 그 중심을 잡아주셔야 하는데,
    "야, 나는 내때 이렇게이렇게 어쩌고 저쩌고 니보다 더 힘들었따 !!" 라는식의 멘트 팍팍 쏘아 주시며,
    '아 난 아직 멀었구나..' 라는 무력감을 안겨 주십니다.
    신입직원이 정말 크기를 바라는겁니까? 내 밑의 직원의 스킬이 늘기를 바라는 겁니까?
    내밑의 직원의 업무파악 능력이 더 빨라지길 바라는겁니까?
    왜 신입 타이틀을 달고 개 거지 같은 연봉도 아닌 연봉받고 있는 그 사람은,

  6. 소원 2011/07/11 01:32  댓글주소  수정/삭제  댓글쓰기

    꿈도 희망도 없어 보이시나요 ? , 혹시나 이 글을 보신 다른 경력자 분들.. 절 욕하셔도 좋습니다.
    하지만 그 전에 이 한가지만 생각 해 보고 욕하십시오.
    당신은... 스승입니까? 아니면 직장 상사 입니까...
    기분 많이 나쁘실 수 있겠지만 이 글을 계기로 멋진 프로그래머를 꿈꾸는 신입들과 그리고 우리나라의
    소프트웨어 개발자의 입지 확보를 위해서 오늘 하루는 한번 다시 생각 해 주십시오.
    모든 개발자들 화이팅입니다!!


회사에서 작업하는 자바 웹 프로젝트 기반은 Spring 2.5 + ibatis + velocity + resin3.0.27 + oracle 이다. 뭐 아직 작업에 본격 투입된 지는 얼마 되지 않았지만, 뭐랄까.. 요즘 SI쪽의 대세가 자바라고 했던가? 마찬가지로 웹 쪽도 대부분의 대규모 서비스는 자바를 많이 사용하는 추세인 것 같다. (물론, 닷넷도 무시할 수는 없지만..)


10여 명의 중급 경력자들이 참여한 프로젝트에 잠시나마 파트타임으로 참여했었고, 지금은 그 프로젝트의 프로그래밍 유지보수 부분을 전부 담당하고 있다. 어차피 자바라는 게 객체기반이고, 초기 설정은 기존 개발자들이 추가해 놓아서 크게 내가 건드릴 설정 부분은 없고 벌써 3개월째 작업을 하다 보니 대부분이 익숙하다.

물론, 핵심 부분은 아직 건드리기에는 내가 미숙한 점이 많아서 부담스러운 부분이 많다. 그래서 우선 내가 일전에 파트타임으로 참여했던 부분부터 조금씩 역할을 크게 하는 방향으로 하고 있다. 유지보수이다 보니 우선 완제품이 나온 상태인지라, 초반에는 자잘한 업무가 많았는데, 갈수록 조금씩 기능 추가적인 부분이 많아지면서 이때부터 나의 스킬 향상을 위한 분석에 들어간 것이다. 왜 신입이 유지보수부터 하는 것이 최적인지 알 것만 같다.

지금 유지보수 작업이 들어간 3개월 동안 "내가 이것은 꼭 주의하고 명심해야 겠다" 라고 생각한 부분을 정리해 본다.



1. 백업의 생활화 혹은 앤츠를 통한 자동 빌드/백업 설정
우선, 웹 유지보수의 가장 중요한 것이 바로 백업이 아닌가 싶다. 나같은 경우 작업PC->테스트 서버->실 서버 의 3단계를 걸쳐 최종 작업물을 업로드 한다. 그래서 항상 백업 파일이 2개씩 생기는 편이다. 테스트 서버와 실제 서버에 파일명_날짜.vm 이런 형식으로 파일을 우선 백업하고, 업로드 하는 편이다. .class , .xml , .vm 등.. 그리고, 혹여나 신규 작업으로 말미암아 발생할 수 있는 에러상황이 발생할 때는 우선 바로 백업을 원복하고 다시 검토해 보는 게 최선인 것 같다.
앤츠의 설정 및 빌드 :  http://guni.textcube.com/144

2. 작업 내용에 대한 기록 혹은 혼자 작업하더라도 SVN/CVS의 사용
최종 버전에 대한 기록. 이것 역시 백업과 같이 중요한 작업 중 하나이다. 왜냐면 유지보수를 하면서 변경되는 소스코드와 서비스 뷰, sql문, properties등이 있을 것이다. 그런 것들에 대한 히스토리가 없다면 일단은 추후에 인수인계가 제대로 안된다. 그리고 혼자서 소스파일 관리를 하다 보면 아무리 잘한들 소스코드가 꼬일 수 있다는 것이다.
혼자 작업하는데 SVN,CVS의 사용? 사실 상당히 귀찮은 작업이 될 수 있겠지만, 엑셀에 작업 히스토리를 기록하거나 주석으로 설명하는 것보단 훨씬 나은 듯 하다. 귀찮은 일이 많이 줄 수 있으니깐..
간단한 SVN 사용법 : http://www.hybrid.pe.kr/tt/246
간단한 CVS 사용법 : http://www.javajigi.net/pages/viewpage.action?pageId=174

3. 아무리 자신 있는 수정이라도 정책적인 부분은 상사의 승인을 받고 진행
이건 예전부터 느끼고 있었는데, 아무리 잘한다고 섯불리 나서다 보면 큰 책임을 감수해야 할 수도 있다. 내가 관리하는 사이트는 공공기관의 사이트인데, 최근에 아이핀 관련해서 도입해 달라고 요청이 왔다. 솔직히 주민번호 체크하는 방식이 아주 간단해서 아이핀 또한 그리 어렵지 않을 거다 생각했는데, "책임"이라는 것이 딱 떠오르다 보니 이 작업을 내가 책임지기는 어려울 것 같았다. 그래서 실장에게 작업이 힘들 것 같다고 이야기했다. 위에서는 외주를 준다고 하고는 내 책임을 벗어났다.
이처럼 책임 문제는 개발하면서 항상 염두해 놓아야 할 문제이다. 너무 당연한가? 자신이 기회를 잡았다고 좋아라 작업에 아무런 보고도 없이 들어갔다간 피박을 볼 수 있기 때문에, 업무에는 항상 책임이 따른다는 것을 잊으면 안 되겠다.

4. 9시~6시 중 서버 restart는 NO, 리부팅/리스타트는 7시 이후에.
윈도우 서버이다 보니 업데이트 등으로 리부팅을 할 수도 있고, WAS를 리스타트 해야만 적용되는 것들이 있다. 이런 것들은 빠른 작업반영을 위해서라면 필요한 과정이긴 하지만, 서비스되는 사이트가 5분만 접속이 안돼도 사람들은 서비스 회사에 전화를 하기 마련이다. 특히나, 그 과정에서 어떤 사람이 서비스를 사용하며 글을 작성하고 있을지 모르기 때문에 함부로 업무시간 내에 서버를 리스타트 하는 것은 위험한 행동이다. 고로, 회사에서 관리하는 사이트라면 리부팅은 최소한 저녁 6시 이후에 진행하는 것이 안전할 것이다.


이 정도가 내가 그간 느낀 핵심 포인트라 할 수 있겠다. 무엇보다, 유지보수는 개발과 비슷한 면이 있지만 "관리"에 있어서 이를 기록하고, 보고하고 하는 것이 가장 중요하다. 그리고, 끝없이 사이트를 체킹하면서 에러 사항을 찾아두고 전체 소스코드 및 사이트 구조, 프레임워크 구조, DB구조 등을 시간 날 때마다 분석해 두는 것 또한 다음번 추가작업에 있어서 작업 시간을 줄여주는 중요한 요인 중 하나이다.

이런 것들을 명심하며 나와 같이 초짜 웹사이트 유지보수 개발자 분들이 실수하지 않기를 바란다.
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 메튜장

트랙백 주소 http://izect.kr/trackback/418 관련글 쓰기

  1.  삭제

    Subject: 자바 애플릿을 이용한 이진 트리 그래픽 구현

    2009/11/06 19:34 | Tracked from 세상속

    자바 애플릿을 이용하여 이진트리를 그래픽으로 구현한 소스파일입니다. 삽입, 삭제, 검색 사용가능하며 전위,후위,중위 순회를 구현하였습니다. 다음은 본문에 사용된 애플릿 초기화 소스입니다. public void init(){ T = new BinarySearchTree(); setLayout(new BorderLayout()); setBackground(Color.lightGray); p1=new Panel(); p1.setBounds(0,0,600,..

  2.  삭제

    Subject: 자바 swing 으로 구현한 윈도우 메모장

    2009/11/06 19:36 | Tracked from 세상속

    자바 swing 으로 구현한 윈도우 메모장입니다. 윈도우 메모장가 거의 흡사하게 제작 했습니다. swing, awt 공부하시는 분들에게 큰 도움이 될거라 생각합니다. 어렵지 않게 짜여있고, 윈도우 메모장 기능을 가지고 있습니다. 자바 swing으로 구현한 윈도우 메모장

  3.  삭제

    Subject: 스프링(SPRING) 2.5 어노테이션을 활용한 iBatis 연동 분석 활용정리 자..

    2009/11/06 19:37 | Tracked from 세상속

    1. 톰캣과 JDK1.5 이상 버전을 설치한다.(테스트 – JDK 1.6 톰캣 5.5) http://tomcat.apache.org http://java.sun.com 2. 이클립스 WTP를 다운 받는다. www.eclipse.org 참조 http://www.eclipse.org/downloads/download.php?file=/webtools/downloads/drops/R2.0/R-2.0.1-20070926042742/wtp-all-in-one..

댓글을 달아 주세요


하루종일 고민한 것 같다. 어제, 자바개발자로서 완전히 길을 잡은 이상 내가 향후에 주 수입원이 될 것에 대해서 자바에 대해 그 방대한 프레임워크나 기술들에 대해.

JSR도 뒤져보고, 자바 웹 개발자로서 로드맵도 검색해보고, 관심있어하는 RIA기술도 계속적으로 알아보고 모바일 개발에 대해 과장님께 이것저것 이야기도 들어보고.

결론은 그거다. "내가 좋아하는 것을 하자." 아무리 봐도 내가 지금 이 Spring 2.5를 활용한 웹 프로그램을 유지보수 하고 있다지만 그것이 과연 내가 좋아서 하는 일인가? 라는 생각이다.

물론, 웹 서비스 제작에는 나도 동의를 하지만 너무나도 편한 Spring과 이것 저것 기술의 연동.. 모 자바 관련 로드맵을 보니, 이미 절반 이상의 기술은 습득한 상태였던 것이다. 그리고, 이러한 기술은 앞으로 내가 이 회사를 다니면서 계속적으로 배울 기술은 분명하다.

돈벌이 수단이라, 내 일을 돈과 연계시키는 것은 그렇게 즐거운 일은 아니지만 삶을 현실적으로 바라보면서 신경쓰이지 않을래야 않을 수가 없는 부분이다. 그러면 자바 개발, 특히 모바일 개발로 어느정도 대우를 받으려면? 시스템 단의 개발과 동시에 경력 10년은 되야 한다고 한다... 엥이, 내 마음속엔 이미 30 이후에는 개발자보다는 다른 길(Consulting or Architecture, 둘다 개발자를 뛰어넘은 과정이다.)을 생각하고 있는데 말이지..

가볍게 접근했던 내 마인드도 참 문제다. 오늘, 심심해서 Adobe Flex Builder를 설치하고 보니깐 참 RIA개발 하나 하기가 쉽더라..; 플래쉬를 프로그래밍 하듯이 다루는 걸 보니 감회가 새로웠다. 거기다 이클립스로 개발 안되는 게 뭐있으랴.. 그리고 무언가를 만들고 싶으면 Application단에서는 자바 Swing이나 SWT로, 웹쪽은 귀찮으면 php, 요즘엔 asp도 아주 쉬워졌다. 이렇게 만들면 된다는 생각에, 세상 참 무서울 것이 없어진 것이다.

하지만 여기서 내가 간과하고 있던 것은 아주아주아주아주 단순하다. 이렇게 알고 있으면 뭐하느냐, 귀찮아서 프로그램 하나도 제대로 못만들고 있다는 것언어단에서 알고 있는 것은 나의 진정한 능력이 아니라는 것이다.

하악, J2EE 패턴만 해도 공부할 것이 많다..

패턴과 리팩토링.. 그리고 진정한 OOP의 사용.. 결국 내가 자바를 Based로 하고 개발을 한다 해도 디자인 패턴과 리팩토링, 배포, 디버깅, 알고리즘 등의 기본기가 되어 있지 않으면 어떤 개발을 하건 간에 나는 초보 수준으로 머물 수 밖에 없다는 것이다. 그리고 특히 자바는 JSR문서만 봐도 공부할 것이 정말 엄청나게 많다....

그리고 한가지. 웹이든 소프트웨어 개발자이든지 간에 뭔가 개발을 하고 좀 말을 하던지 말던지 해야할 것 아닌가!?!? 그간 내가 개발한 것? 하아, 한숨만 나온다. 회사에서 진행한 일 빼곤 개인적으로 만든 것이 뭐가 있는지 원..

어쨌든 내가 추구하는건 UI, UX다. 난 프로그래밍도 하지만 나름대로(?) 디자인도 꾸준히 하고 있기 때문에.. 아니 그건 이유라기보단 그냥 자랑인가; 그래도 디자인이 부여되지 않은 프로그램은 나는 프로그램이라 인식하기 싫다~~ 그래서 내가 웹을 좋아하는 것 같다..

RIA플랫폼이나 안드로이드 폰에 대해 계속 공부하고 개발하고 싶다. RIA로는 Adobe Air도, JavaFX도, Flex도 전부 고민된다. 근데 고민보다는 내가 무엇을 만들 것인가부터 정해야지 않겠싸용~? 어차피 개인적으로 공부하는 것들인데 말이다.

이야기가 샜는데, 어쨌든 웹과 모바일이 주축이 되서 나 자신이 포장되길 바라고 있을 뿐이다. 자바에 대해서도 말이다. 계속적으로 신기술을 접해 보고 나아가고 싶다. 그렇게 개발자로 포장되고, 개발보다는 Management를 하고..(이걸 하려면 대졸은 필수.. T.T) 컨설팅을 하고싶다규~~ 라지만 아직 한참 멀었다~!

아, 그리고 한가지 큰 목표가 생겼는데. 나의 30대 초반의 직장 생활은 외국계 회사에서 보내고 싶다는 것이다. 무엇보다 해외 이직이 자유로운(-_-;;) 하아, 이건 생각만 해도 너무나도 큰 목표인 듯 싶지만 그럴만한 이유도 있다.(정말이지, 내가 추구하는 인생의 목적과 맞먹는..)

그리고 지금 나는 계속 방황한다는 생각을 하고 있지만, 나의 20대는 정말 수 많은 시행착오와 판단으로 뒤덮인 시절 같다. 20살 초반에 회사일도 하면서 이것저것 노느라고 바뻤지만, 그러다 보니 선택과 집중에 대해 알고 난 지금은 정해지지 않은 것에 대해서는 살펴보려고 하지도 않는다. 하지만 그렇다고 일을 쉬지도 않는다. 20세가 되고 나서 내가 회사를 쉰 날은 공휴일을 제외하면 채 10일이 되지 않는다.

그런 것이다. 일이라는 것과 나 자신을 떼어놓기는 힘든 것이다. 지금은 그 일을 자의든 타의든 내 한계까지 끌어내려는 것이고, 사회를 배우려는 것이다. 그리고, 다시 대학에 들어가면 멋진 삶을 추구해 갈 수 있도록. 프리랜서를 하면서 20대 중반에 학교를 다니면서 이것 저것 능력을 키우고 싶다. 나는 내가 한 만큼의 우대를 바랄 뿐이다. 그리고, 나이가 들어서는 그런 개발자들을 우대해 줄 수 있는 platform을 만드는 것이 목표. 그리고 더 나이가 들면은 아마 내가 욕심이 있다면 정치적(?)으로도 나가지 않을까.. 물론 우리가 소위 말하는 정치라기보다는 정부 정책면에서 이것 저것 정말 옳바른 길을 만들기 위해 나아간다는 것이다.

하하, 그래도 이렇게 글을 쓰니 조금은 정리가 되는 듯 하다. 이제 내 선택이 이 앞으로의 미래에 비전이 있는가에 대한 고찰과, 그것이 확실히 정해졌다면 한우물을 파고 드는 것만이 남았다.

선택과 집중, 인생에서 그것 만큼 멋진 것이 없다. 이것 저것 잡다하게 다 아는 사람보다는 나의 인생에 비춰볼 때 집중할 수 있는 것에 온 정신을 쏟는 것, 그것이 나는 사람답게/멋지게 살아가는 것이라 생각한다. 비단 그것이 일적인 부분이 아니더라도 말이다. (사랑도 마찬가지)
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 메튜장

트랙백 주소 http://izect.kr/trackback/384 관련글 쓰기

댓글을 달아 주세요


php -> javascript -> c -> c++ -> Win32 API -> MFC -> Direct X -> Direct 3D -> java -> jsp -> c# -> WPF -> asp -> Java Framework (내가 접했던 언어와 framework)

프로그램 세계에는 수 많은 언어들이 있다. 내가 처음 프로그래밍을 하던 98년에도 베이직이나 c, 포트란, 코볼, 기계어, 어셈블리어 등의 언어가 있었는데 10년이 지난 지금은 정말 언어들은 헤아릴 수 없을 만큼 많이 존재한다.

언어의 시대를 넘어 요즘은 표준화와 프레임워크의 시대이다. 정말 자바를 접하면서 이 framework라는게 그렇게 많은 줄을 누가 알았을 까. 또한, eclipse툴을 사용하면서 그 수 많은 언어들을 이 이클립스라는 오픈 툴 안에서 plug-in방식으로 지원하게 되는 것을 보면 Visual Studio는 이제 아무것도 아닌 툴이 된다.

사수가 바뀔 수도 있다. 회사에서. 자바를 배우고 싶어하다 보니, 회사에서 특별 대우를 해준 것이다. 아니, 사실 나의 실력에 대한 강한 어필의 결과랄까나.. "병특이고, 배우는 입장이니 열심히는 하되 배울 수 있도록 해달라. " 이게 나의 공식적인 입장이었다. 그리고, 이제 실력있는 사수 아래서 배울 수 있게 된다. 물론, 사수가 둘이나 되는 상황이 일단 발생한 것이지만 말이다.


어차피 신입때 major-skill을 바랄 수 있는 상황은 아닌 것 같다. 이것 저것 배우면서 내게 맞는 것을 찾아가는 것이 좋다고 생각하는 바이다. 다만, 분명한 것은 현재의 트랜드를 확실히 알아야 하고 아웃소싱 업체에 있는 만큼 어떤 기술을 배워야 내가 단순 coder가 아닌 개발자로서 대우를 받을 수 있는가에 대해 생각해 보아야 하겠다. 그것이 신입인 지금 입장에서의 해답이랄까.

그리고 나는 UI프로그래머에 대해서도 생각해 보았다. 하지만, 자바쪽에서 UI개발은 모두 Flash로 개발한다고 한다. 즉, 이젠 디자이너 단으로 영역이 확장된 것이다. 그럼 개발자는..?
자바를 접하면서 나는 눈이 너무나도 높아진 것 같다. ASP나 PHP는 OOP를 지원 안한다고 그냥 믿는다. 물론, Class를 지원하긴 하지만 그게 무슨 OOP인가.. 참 아이러니 하다.
하지만, 자바를 접해서 좋은 점도 많이 있다. 어차피 C#이나 자바나 그게 그거 아니겠는가. OOP개념은 비스무리 하고.. 아니, C++과 자바가 비슷하다 해야 더 말이 되련지.. 어쨌든, 큰 뭉탱구리인 자바에서 창작물을 내놓기는 그렇게 시간이 오래걸리진 않는다. 다만, 어떤 것이 나의 기술이 되련지는 좀더 두고 봐야지 알 것이지..

그리고 무엇보다 기본 공부에 충실해야 할 것 같다. "자바"라는 일단의 기본 기술을 정한 이상, 자바에 대해서는 누구보다도 잘 알 수 있도록 노력해야겠다. 참고로 내가 일하는 회사는 아웃소싱 회사인데, 이곳에서 알선해주는 사람 중 c#(ASP.NET)의 수요는 자바와 비교하면 월등히 많다는 점을 잘 인식하고 있다. 그래, 사실 자바를 접하려면 정말이지 이클립스 세팅이나 환경설정이 c#이 속한 Visual Studio보단 확실히 어려우니깐 말이다. 그래도, 그게 블루오션이라는 것 아니겠는가!?

어차피 나는 초보적인 입장이다. 하지만, 이제 조금씩 나의 핵심 기술을 익혀가고 있다는 것에 의의를 둔다. 이제는 새로운 사수가 말했던 Core개발자 / 코더 / 모바일 개발자 / 웹개발자 .... 이렇게 다양하게 나누어져 있는 자바 기술 중 내게 맞고 내가 하고자 하는 길을 선택하는 길만 남았을 뿐이다 ^^
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 메튜장

트랙백 주소 http://izect.kr/trackback/381 관련글 쓰기

댓글을 달아 주세요



고정 방문자가 거의 없는 제 블로그로선 무슨 네이버 블로그에서 이웃들에게 저의 소식을 알리기 위해 작성하는 글도 아니고 해서 알리는 사실이 조금 웃기긴 하지만 그래도 근황 관련된 포스팅은 하는게 좋다고 생각되어 오랜만에 다시 결심하여 꾸준히 포스팅을 해보려 합니다.

바쁘고, 사소한 것에 신경 쓸 시간 없는 하루하루 였습니다. 몇일 후면 수습기간도 종료되는 터인지라 거의 3주간 매일같이 야근을 강행했고, 저번주는 목요일 빼고는 거의 12시에 들어가거나 철야를 한 것 같네요..
사실 안정적인 상태를 유지하기 위해서라도 눈치것 야근이라는게 필요하긴 했지만, 제 개인적으로는 이번에 태어나서 처음으로 큰 웹사이트 구축 프로젝트의 몇몇 부분을 맡은지라, 그리고 생소한 기술을 배우는데 있어서 좋은 기회라 생각하여서 야근을 시작하게 되었네요 ^^

이번에 맡은 프로젝트는 물론 제가 이전부터 자바(특히 JSP) 프로그래밍을 해 왔었지만, 말이 자바지 제가 처음보는 기술들이었습니다. eclipse기반이었지만 velocity, ibatis, spring, resin 서버 등등... 얘기만 들어도 생소한게 투성이었습니다. 기존에 tomcat과 단순 jsp만으로 2년여간 코딩 기술을 배워왔었는데, 솔직히 욕심이 엄청났지요. 프로젝트에서 필요한 사람이 되기 위해서 필사적으로 스프링 프레임워크를 공부했었습니다.

스프링 프레임워크.. 정말 편리하더군요. 제가 내부 구성 등은 확실히 모르지만, 컨트롤러-다오(DB)-서비스 와 서블릿만 잘 설정해 주고 ibatis로 xml맵핑만 제대로 해준다면 DB pool이라던가 서비스 등등.. 이런 부분은 신경쓰지 않아도 알아서 해주더군요. 예전 제가 유지보수하던 jsp 프로젝트가 2004년에 개발되었으니깐, 이러한 기술은 4년 사이에 정말 자바 쪽에서는 엄청난 발전이었습니다.

아무튼 그러한 프로그래밍과 관련된 이야기는 차차 하도록 하고 다시 회사 이야기입니다. 나름 그래도 제가 개발자라는 명목 하에 회사에 입사하게 되었으므로 개발 업무는 많이들 옵니다만 아직까지도 정확히 뭔가를 꾸준히 개발할 수 있는 여건은 주어지지 않았습니다.

저희 회사는 아웃소싱 업체입니다. 인력 소개 업체라 보시면 되는데, 이런 회사에서 개발자란? 저도 사실 직무의 구분이 모호합니다만 회사에서 가끔 직접 따오는 수주를 프리랜서를 고용하여 진행하는데 그 부분에서 사람이 모자를 경우(급하게 일손이 필요한 경우) 제가 투입됩니다. 그리고 추후 이러한 프로젝트들의 유지보수를 제가 담당하게 됩니다.

벌써 혼자서 하는 유지보수 사이트가 4개 입니다. 물론, 유지보수라는게 일이 그렇게 많은 것은 아니고 초반에 분석만 정확히 되어 있다면 혼자서 유지보수 정도야 쉽게 가능하지요. 하지만 회사에서 수주를 따올 때마다 제가 부담해야 하는 유지보수 사이트가 늘어난다는 것에 대한 부담이 없지않아 있습니다. 물론, 회사에서도 지속적으로 병역 특례를 뽑겠지만.. 회사에서도 병특이 처음이고, 저도 처음이기 때문에 이러한 부분은 잘 생각을 해둘 필요가 있다고 봅니다. 병특중에서는 저도 이제 시간이 지나면 사수가 되어 후임들에게 업무를 분담해야 되는데, 이쯤 되면 이제 중요하고 복잡한 것은 제가 담당하고 쉬운 부분을 차차 넘길 수 있는.. 일종의 팀장의 업무와도 비슷하겠지요.

5월 1일부터 국방부 시계가 돌아가게 됩니다. 2009년 제 나이 23살, 전역은 예상에 2012년 2월쯤.. 까마득한 미래 같지만 수습 기간 2개월이 어찌보면 눈코 뜰새 없이 순식간에 지나간 것 같습니다. 그것처럼 시간은 흐르니깐 언젠가는 끝이 오겠지요? ^^ 그날을 위해 5월 1일 근로자의 날, 조금 쉬면서 다시금 마음을 다잡고 새출발 즐겁게 하려고 합니다 !!
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 메튜장

트랙백 주소 http://izect.kr/trackback/283 관련글 쓰기

댓글을 달아 주세요



사용자 삽입 이미지
오늘따라 이리 생각이 많은지 모르겠다.
php프로그램을 본격적으로 개발하려.. 하였으나 이에 앞서 수 많은 생각들 때문에 결국 개발을 포기했다.
php.. 내가 처음 접한 것은 2001년, 중학교 2학년 시절 웹 프로그래밍에 대한 무수한 열망으로 수업시간에도 php책 한권을 들고 소스를 무조건 파기 시작했다. 그리고 개발을 시작했던 아이보드..
그러나 그 당시 막강한 세팔보드니, 제로보드니 등의 출현으로 내가 개발한 것보다 편한 프로그램이 있다는 생각 하에, 게다가 2002년부터 시작된 정보올림피아드 준비는 나를 웹에서 점점 멀리 떨어지게 만들었다. 결국 개발 포기, 그리고 php를 접하지 않은게 어느세 6년..

내가 왜 php를 개발하려 했던가? 사실 홈페이지 계정에서 php밖에 지원하지 않았기 때문이다. 하지만 요 근래 내가 가장 주로 접했던 것은 자바와 JSP였다. 이걸로 회사 인트라넷도 개발했고 유지보수도 했고..

PHP, 쉬운 문법과 더불어 객체지향이 지원 안되는게 가장 큰 단점이었다. 하지만 일전에 나는 객체지향에 대한 개념을 숙지하고 있던 편은 아니었기 때문에 크게 상관하지 않고 있었지만.. 이제와서 느꼇다. php측에서도 객체지향을 지원한 php5를 개발했다고 한다. 하지만 지금와서는 php는 perl이나 cgi등과 같이 추억속에 묻여 간다. 단순이 "웹"에 특화된 php는 더 이상 나의 눈에는 그저 단순한 프로그래밍 용도로밖에 생각되지 않기 때문이다.

이제 나는 jsp의 환경에 너무나도 익숙해져 버렸다. 아직 톰켓이나 XML등에 대한 이해는 상당히 부족한 편이지만, 이것도 하나 하나 정복해 가야 한다. 그런데 그것도 하기 전에 추억의 언어인 PHP를 공부하려 했다니, 내생각엔 잘못 생각한게 아닌가 싶다.

물론 어떻게 보면 자기 핑계일 수도 있겠지만..(사실 제로보드를 분석해 보려 했는데 귀찮았다 -_-) 지금 시점에서 내가 jsp로 게시판을 만드는 것이 php로 만드는 것보다 몇배는 빠를 것 같다고 생각한다.(실제로도 그렇지만..)

쨋든, 프로그래밍 분야에서 상당히 갈등하고 있는 나에게 이러한 작은 선택은 많은 힘이 되고 있다. 그리고 세상에는 뭐이리 고민해야 할 분야가 많은지 정말 어렵다 어려워... ㅜㅜㅜㅜ

암튼 jsp공부라도 열심히 하자~!
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 메튜장
 TAG JSP, php, 자바

트랙백 주소 http://izect.kr/trackback/199 관련글 쓰기

댓글을 달아 주세요

  1. HSM 2008/11/26 08:30  댓글주소  수정/삭제  댓글쓰기

    JSP는 라이센스가 비싸~~~

  2. Favicon of http://deuxksy.tistory.com BlogIcon 김석영 2008/11/28 16:35  댓글주소  수정/삭제  댓글쓰기

    헛!~ 뚜우!~
    사진에 처자분이 누구신가요?
    상당이 매력적인되요!~


인트라넷 개발 중 결제 시스템을 만들면서 경험한 사항이다.
오늘 거의 3시간 동안 고민을 했는데, 문제는 다름아닌...
결제 시스템의 결제자 리스트가 Select Box에 있는데 분명 FORM에서 POST방식은 값이 한개 밖에 전송이 안되었다.
그렇다면, 결제자 리스트를 어떻게 보내야 하는가?



라는 문제에서 비롯되, 몇가지 방법을 찾았는데 그 방법을 잠시 소개할까 한다.

셀렉트 폼은 다음과 같다.
<select name="sel" size="5" id="select" style="width:100px">
</select>


물론, 내부에 <option></option> 들은 자바스크립트로 추가/삭제 기능을 만들어 두었다.
문제는 이 많은 결제자를 어떻게 순서대로 JSP로 보내서 DB에 등록할 수 있을까?

우선 멀티 셀렉트 속성을 집어넣어야 한다.
<select name="sel" MULTIPLE size="5" id="select" style="width:100px">
</select>


다음은 폼 전송시에 자바스크립트 함수를 거치게 만든다.

<form method="post" name="settleForm" onsubmit="return settleFormCheck();">


다음은 자바스크립트 내의 폼 체크 부분이다.

function settleFormCheck(){
   
        var frm = document.settleForm;
       
        AllSelect();
        frm.action = "write_DB.jsp";
        return true;
    }


이 AllSelect() 부분이 중요한데, 이는 select 부분을 모두 선택한 것처럼 만든다.
    function AllSelect(){
        var obj = document.all.sel;
       
        try{
            for( var i=0 ; i<obj.length ; i++ ){
                obj.options[i].selected = true;
            }
        }catch(e){}
    }


이렇게 하면 Select들이 모두 선택되고, Write_DB.jsp로 넘어가게 된다.
위의 내용은 입력 폼 내부에서 설정할 내용이고, 이제 JSP에서 어떻게 받아야 하는가를 알아보자.
일반적으로 JSP에서 POST로 넘어온 값을 받을 때는 다음과 같이 받는다.

String sh        = request.getParameter("sh");


그러나 위의 select 같이 다중 객체들이 POST방식으로 넘어올 경우에는 다음을 써준다.

String[] sel = request.getParameterValues("sel");


그러면... sel 배열에 하나 두울 결제자들의 아이디가 들어가게 된다는 ^^
이제는 알아서 알고리즘을 제작해주면 된다.

히야... 힘든 과정이었는데... 참고로 안된다면 request를 multi로 바꿔보기 바란다.. 필자는 multi로 작업해서 됬을지도.. 뭐 상관없지만 ^^;
크리에이티브 커먼즈 라이선스
Creative Commons License

'IZECT DEV LAB > 웹 프로그래밍' 카테고리의 다른 글

프로그래밍에서 설계의 중요성  (1) 2009/03/12
ASP.NET의 정규식  (0) 2008/12/13
UML(Unified Modeling Language)  (0) 2008/11/21
개발 계획..  (2) 2008/11/19
Select Box값을 JSP로 넘기기!  (0) 2008/08/05
자바의 매력에 빠지다.  (0) 2008/06/26
Posted by 메튜장

트랙백 주소 http://izect.kr/trackback/143 관련글 쓰기

댓글을 달아 주세요


사용자 삽입 이미지

 근래 들어 학교 후배들의 자바 프로젝트를 진행해 주면서 자바의 매력을 새심 느끼기 시작했다.

객체 지향적인 언어. 객체지향이라는 말은 C를 위주로 5년을 공부했던 내게는 MFC를 접하면서 상당히 생소한 언어였지만 객체지향 언어의 그 다양성과 유연함에 상당히 놀랄 수가 없었다.

객체. 인스턴스. 사실 C프로그래머, while-loop, for-loop를 남발하며 수직적인 프로그래밍을 하는 사람들에게는 그다지 필요없는 용어이다. 포인터 정도는 그들에게 중요할 수 있지만 객체지향? 클래스? 그런게 중요할까.. 라는 생각은 수없이 많이 해보았다.

허나, 자바는 기본적으로 구조체라는 것이 없었다. 대신 JSP에서는 빈즈라는 어떠한 데이터 사용의 규칙을 통하여 구조체라는 것을 객체화 시킨 것을 이해하고 나서 점차 객체지향에 대한 관심도가 높아졌다. 더불어, 프로그램과 메모리 사용에 관해 생각해 보니 객체라는 것이 얼마나 중요한 것인지를 느끼게 해준 계기도 되었다.

물론 객체지향 언어는 기본적으로 C++이 있다. 허나, 원천적으로 이러한 콘솔 응용프로그램에는 큰 관심이 없는 나이다. 별 이유는 아니지만, 어렸을 때부터 KOI를 준비하던 내게는 콘솔, 특히 win32-based가 아닌 only-console-based 에 굳어진 머리여서, 고교 들어 객체지향을 배우는 데에 상당한 어려움이 있었다. 그중 가장 컷던 것은 물론 객체지향 사용의 의문점이었지만..

어하튼, 내가 특히나 자바의 매력에 빠졌던 이유는 당연 자바의 가장 큰 장점인 "다중 플렛폼" 이다. 이건 말은 쉽지만 경험해 보지 않은 사람은 모른다. 한 예로, 나는 노트북에 MAC OS X 를, 집에는 Vista와 Linux를, 회사에는 XP와 window server 2008을, 아버지 회사 서버에서는 솔라리스를 사용하고 있다.(솔라리스는 솔직히 좀 오버이긴 하지만 -_-)

와.. 거기서 내가 제작한 프로그램이 다 돌아가는걸.. 한번 느껴보면 안다.. 맥을 사용할 때, 세상 수 많은 프로그램들이 win32 기반으로 개발되었다는 사실에 정말 눈물까지 났고, 그러다 맥북에 xp를 깔게 된 나이다. 그러나, 자바는 어디든 다 돌아간다. 비쥬얼 스튜디오와는 플렛폼 자체가 다르다는 것이다!

회사에서 올해 초부터 인트라넷 개발 업무를 담당하게 되었다. 기존에도 아버지 회사의 인트라넷(JSP와 mysql 기반이다.)을 개발했었던 나이지만, 이번에 우리 회사 인트라넷을 개발하면서 JSP와 내가 가장 자신있는 분야인 데이터 베이스(이번에는 오라클에 도전해 볼 생각이다.) 기타 수 많은 분야에 한번 도전해 볼 예정이다.

특히나 나의 가장 큰 단점이었던 설계능력의 부족. 이부분을 이번엔 좀 확고히 하고 싶다. 기능명세서라 하던가... 요새는 이걸 작성 중에 있는데, 초기에 똑빠로 기능에 대한 명세를 하고 나가야 추후에 수정하는 사항이 발생하지 않는다는 생각에 최선을 다해 제작중에 있다.

JSP... 그 무한한 능력. 요즘에는 PHP에서도 객체지향을 지원한다 하는데.. 그건 아직 관심 밖이고, 무엇보다 JSP와 자바빈즈, 서블렛과 JDBC의 이해에 올해의 마지막을 투자할 생각이다. 화이팅!

크리에이티브 커먼즈 라이선스
Creative Commons License

'IZECT DEV LAB > 웹 프로그래밍' 카테고리의 다른 글

프로그래밍에서 설계의 중요성  (1) 2009/03/12
ASP.NET의 정규식  (0) 2008/12/13
UML(Unified Modeling Language)  (0) 2008/11/21
개발 계획..  (2) 2008/11/19
Select Box값을 JSP로 넘기기!  (0) 2008/08/05
자바의 매력에 빠지다.  (0) 2008/06/26
Posted by 메튜장

트랙백 주소 http://izect.kr/trackback/86 관련글 쓰기

댓글을 달아 주세요

이전버튼 1 이전버튼



블로그 이미지
html5,모바일웹,웹앱,자기브랜드,시간관리 등을 다룹니다.
메튜장

Yesterday198
Today86
Total478,681

달력

 « |  » 2012.02
      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