준비 1. 프로그램 만들기
준비는 거의 일주일 내내 진행이 되었다. 이전에 초본 겪으로 만든 프로그램을 토비님께서 영회형이 수정하셔서 1회 때 접수를 받을 때 사용한 프로그램이 되었고 그 프로그램을 다시 손 봐서 접수 화면을 살짝 바꾸고 회원 리스트 화면을 개선하여 출석 체크를 할 수 있도록 변경했으며 거기에 퀴즈를 진행 할 수 있도록 수정하는 작업을 했다. 이때도 역시나 Spring MVC를 사용해서 자주 바뀌는 요구사항에 빨리 대응할 수 있었다. 내심 퀴즈 프로그램이 고장나지는 않을까 걱정이 많이 됐었다. 따라서 이번주 공부 목표는 Spring MVC Testing으로 세웠다. Controller들을 쉽고 간단하게 테스트 할 수 있는 방안과 사용법을 익혀두어야겠다.

준비 2. 장소 섭외
이와 관련된 포스팅을 이전에도 한 적이 있지만 짧게 정리하면 지나친 관료제로 인해 서류 절차가 복잡하고 융통성이 없어보이는 사람들을 움직이게 만들려면 그 사람들에게 먹히는 카드.. 즉 권력을 가진 자를 움직이면 된다. 교학팀의 직원들을 움직이려면 교수님을 설득하고 움직이면 게임은 끝난다. 그 다음은 그냥 가서 말만 전하면 알아서 서류도 보내주고 발로 뛸 필요도 없어진다.

준비 3. 현수막
업체 선정이 중요했다. 어떤 곳은 가격이 너무 비싸고 어떤 곳은 거치대는 안팔고 인쇄한 천들만 파는 곳도 있다. 어떤 곳은 현수막 이미지(시안)를 만들 때 너무 까다롭게 굴어서 ai파일이라는 일러스트 파일을 요구하는 곳도 있다. 또 어떤 곳은 주문 화면이 너무 복잡해서 도대체 어떻게 주문을 해야할지 모르게 만든 사이트도 있었다. 다들 어떻게 장사를 하고 계신건지;;
정말 운 좋게도 두 번의 시도 만에 꽤 괜찮은 업체를 골랐다. 시안 작성에 참고할 이미지가 어떤 파일이든 상관없이 웹 하드에 올려두면 알아서 참고 하시고 만들어 주신다. (이걸 보면 다른 업체는 왜 그렇게 이미지 파일에 집착하며 나를 괴롭혔는지 이해가 안 된다. 거래를 중단하길 잘했지;;) 그리고 시안이 나오는데는 어느정도 시간(3시간 정도?)이 소요 되지만 보정에는 거의  2시간 이내의 소요 시간을 보여주셨으며 배송은 하루만에 되었다. 시안도 마음에 들었고 배송까지 깔끔했다. 성공적이였다.

모임 1. 접수받기
드디어 사전 접수 프로그램을 적극활용할 때가 왔다. 리스트에서 오신 분의 성함을 확인하고 참가로 상태를 변경해주면 된다. 사전 접수를 하지 않으신 분들은 새로 등록할 수 있도록 현장 접수 화면에서 필요한 데이터를 입력하도록 하였다. 별다른 문제는 없었지만 몇 가지 요구사항을 뽑아낼 수 있었다.
1. 정렬 :: 아무리 파폭의 Ctrl + F가 좋다 하더라도 이름 순으로 정렬이 되어 있어야 더 찾기가 편하다.
2. 현장 접수 화면 간편화 :: 현장 접수를 할 때 4가지 주요 정보를 제외한 설문에 응답 할 시간이 없는 관계로 이상한 값들(dd, ㅇㅇ)을 임의로 넣어두었다. 현장 접수는 그냥 짧게 받을 수 있도록 하자.
3. 접수 화면 공통 :: 커서가 자동으로 맨 처음 입력할 필드에 있어야겠다.

모임 2. Inside Spring MVC
접수를 받다가 개회사를 못들었다. 그리고 벌써 Inside Spring MVC가 시작해버렸다. 이런.. 너무 일하는데 집중하고 있었구나 라는 생각이 들었다. 같이 접수를 받아주고 계셨던 윤걸이형, 한수형, 계옥누님과 접수를 끝내고 본격적으로 강의를 들으러 회의실로 들었갔다. 제법 많은 사람들로 이번에도 1회 때와 마찬가지로 맨 뒤에서 듣기 시작했다. Spring MVC의 기본 원리와 주요 매카니즘을 깔끔하게 설명해주셨다. 요즘 AJN에서 스터디하고 있는 JSP Design Patterns가 떠올랐다. 또 맨~처음 Sprign MVC를 접했을 때의 그 당혹감도 떠올랐다. 하지만 이렇게 딴 생각을 할 만큼 널널한 발표가 아니였다. 1회 때 보다 더 완벽한 라이브 코딩을 시연하는 모습에 빠져들었다. 즉석에서 Validation까지 되고 날짜를 PropertyEditor를 사용하여 Date 타입으로 바인딩하는 것 까지 정말 많은 내용을 순식간에 완성했다. 경외로운 모습이었다. 세미나 준비에 회사일 그리고 발표까지.. 정말 무서운 선배님이다. 한가지 아쉬운 것은 역시나 범위가 너무 방대해서 시간 관계상 더 깊게 들어가지는 못했었던 것 같다. 컨트롤러들의 적당한 사용처, 컨트롤러들 단위 테스트 방안, 테스트가 가능한 JSP 대체 기술들 등이 다음에 또 다루게 될 기회가 있을 것으로 예상된다.

모임 3. 스프링 퀴즈왕
드디어 퀴즈 프로그램 개봉박두... 이름이 대문짝 만하게 나오는 것이 특징인 매우 간단한 프로그램이였다. 사전 접수를 한 사람들 중에서 랜덤으로 한 명씩 딱 한 번만 기회가 주어지며 문제를 맞춘 사람 명단을 기록하는 프로그램이다. 프로그램을 처음 기획했을 때는 토너먼트였다. 따라서 16강전을 대비하여 만들어 두었다가. 중간에 변경이 되서 오히려 더 간단해졌다. 찬욱이가 구현해둔 reset 기능이 없었으면 17번째 사람을 뽑기 위해 서버를 재부팅 했을지도 모른다;; 다행이였다. 퀴즈 문제가 너무 어려워서 재밌었다.ㅋ

모임 4. Inside Spring DAO
최고였다. 토비님의 빠른 말투 하지만 차분하며 논리정연하고 재미난 이야기 처럼 잘 구성되어 있는 발표는 몸이 경직 될 만큼 완전히 빠져들게 만들었다. DAO 계층을 두는 이유는? 이라는 질문에 혼잣말로 대답을 하고 있었는데 갑작스래 공개적으로 물어오셔서 깜짝놀랬다. JDBC로 DAO 구현 -> 탬플릿 사용한 DAO-> 템플릿 헬퍼 사용한 DAO -> Spring 을 사용한 DAO 구현 순서로 Spring이 제공하는 API의 편의성을 가장 이해하기 좋고 재밌게 보여주셨으며 DataAccessException의 유용함과 타당성 그 뒤로 Transaction 처리에 대한 내용으로 트랜잭션 처리의 문제점으로 비즈니스 로직에서 데이터베이스 관련 코드들이 보인다는 단점이 있는데 이것을 AOP를 적용하여 깔끔하게 모듈화 하고 사용하기 쉽게 XML에서 선언적으로 처리할 수 있는 코드를 보여주셨다. 마무리는 ORM과 JDBC코딩의 장단점과 타협점을 제시해 주셨다. 1회 때에 비하면 이번 발표는 많이 이해할 수 있었다는 것에 만족할 수 있었다. 영회형의 발표와 더불어 역시나 배우고 본 받을 것이 많은 발표였으며 다음에는 Spring AOP를 또 다시 멋지게 보고 들을 수 있지 않을까 하는 기대가 생겼다.

모임 5. 질의 응답
마지막 코너로 마지막 까지 남은분들의 질문과 의견을 받는 시간이 진행됐다. 많은 분들이 지치셨는지 회의장은 처음과는 다르게 많이 비어있었지만 오히려 묘한 열기가 보다 더 모임스러운 분위기를 만들어냈다. 처음에는 잘 발언을 안하셨지만 맨 마지막에 인상 깊은 발언을 해주시는 분을 보며 제가 작년 여름에 처음 Spring을 접하고 본격적으로 Spring 공부에 착수한 올해 초를 떠올리며 그 분의 심정에 많이 공감을 할 수 있었다. 하지만 그 분과 다르게 나는 맨땅에 해딩을 하지 않고 항상 참조할 수 있는 책들과 레퍼런스가 있었고 언제든 물어볼 수 있고 같이 공부할 수 있는 AJN 스터디 매니아 분들이 곁에있어서 그랬는지 또 다른 커뮤니티의 필요성을 느낄 수 없었다. 물론 아직도 Spring에 대해 공부할 것들이 산더미 같다.

마무리.
꽤 열심히 준비했던 모임이였고 많은 분들이 참여하길 바랬었다. 그리고 딱 예상한 만큼의 인원들이 오셨고 행사도 딱 준비 한 만큼
성과가 있었던 것 같았다. 너무도 솔직하고 정당한 결과에 기분이 들뜨지도 가라앉지도 않는 홀가분한 하루였다. 일이 끝나서..ㅋ
개인적으로는 잠시 손을 놓고 쉬고 있었던 Spring 공부에 불을 지피는 개기가 되었고 초고수들의 놀랍도록 짜임새 있고 멋진 라이브 코딩 발표에 감동을 받을 수 있었다.
이제는 방학도 됐고(학교가 안 괴롭히고) 세미나도 끝났으니(일거리가 떨어졌고) 공부에 집중할 수 있을 것 같다.(그러길 바란다.) 열심히 해서(당연히 그래야지), 무언가 만들었을 때(개발 했을 때) 자신있고 상쾌한 기분이 드는 그런 것을 만들고 싶다.