아...저번 회 때에는 박재성씨가 준비한 세미나를 들어서 그 때에는 스프링에 관한 것 보다 그냥 협업프로세스를 도울 만한 유용한 프로그램이나 작업 방법을 소개하는 자리였습니다. 그래서 스프링에 관해서는 많이 듣지 못했는데요.

오늘 세미나는 우선 2가지 세션을 못들은 것이 좀 아쉽구요. 그래도 백기선씨의 Spring AOP가 도움이 많이 되었구요. 박찬욱씨의 그 괴물같이 손이 보이지 않을 정도로 하는 라이브로 코딩하는 실력을 보면서 감탄사를 내뱉느라 제대로 못 듣기는 했지만, 꽤나 유용한 시간이였습니다. 그리고 스프링 보안인 Spring Security에 관한 설명도 들었는데....마침 이 시간이 졸려서-_- 잤습니다(발표자님께는 죄송하지만ㅠ)

우선 11시에 도착을 했는데, 20분부터 한다고 공지가 되어있더라구요.

1. 박찬욱님의 Refactoring JDBC Programming
우선 기존 JDBC를 접근하는 방식을 스프링 jdbc templete을 라이브로-_-; 만들어 보는 과정을 보게 되었습니다. 이건 뭐 감탄사밖에 안 나오는 군요. 이런 것을 한번도 보지 못한 저로썬 그냥 놀랄 따름입니다-_-; 보통 이클립스의 리펙토리 기능은 잘 쓰기 힘든데, 저걸 저렇게 활용하는 사람도 있구나 라는 생각이 드는군요 ^^
기존에 JDBC는 Try Catch Finally Try Catch의 반복으로 이루어져있죠. 그래서 그걸 템플릿으로 만들어서 중복코드에 대한 제거를 하고, 바뀌는 부분만 비교해서 잘 보여주셔서 이해가 매우 빨랐습니다. (하지만....휙휙~지나가는 화면들..OTL...)
사실 기존에 DB연동 부분은 그냥 항상 사용하기만 해서 내부 구조를 볼 겨를이 없었거든요. 실제 구현체를 보니 신기할 따름이군요. 그냥 queryForObject, queryForList, update, delete, insert 등의 메소드를 가져다가 쓰기만 했지, 어떻게 돌아가는지 몰랐는데, 이제 보니 확실히는 아니지만, 어느정도 알겠네요. 인터페이스를 활용하여 Strategy패턴을 이용해서 하는 것이더군요. 이제부터 디자인패턴을 공부해야겠다는 생각이 좀 드네요-_-; 사실 Head First Design Patterns책이 있는데...왠지 펼치기 싫습니다만, 이제 펼쳐야겠습니다 ㅠ
아....그리고, 저도 이클립스 단축키를 좀 외워야겠습니다-_-; 저도 이제부터 간지코딩을...-_-;

2. 박현준님의 Spring Security
헉.....순간 졸다가 기절했습니다-_-; Spring Security를 사용 안해봐서 인지 모르겠지만, 내용도 너무 어렵고ㅠ 졸리고 해서....ㅠ 자다가 일어나니 그 데모를 좀 보여줬는데, 대충 내용을 보니, 그....로그인 프로세스를 데모로 보여준 것 같습니다. 인증을 한 페이지를 보여주고 막 그랬던 것 같은데.....사실 잘 모르겠군요 ㅠ
얼마전 OAuth를 공부한 적이 있었는데, Spring Security에서도 지원을 한다고 한 것이 생각나는군요. 갑자기 얘기가 또 새네-_-; 암튼 보안쪽도 공부를 해봐야겠습니다 ㅠㅠ

3. 백기선님의 Spring AOP
우선 AOP에 대한 개념을 쉽게 설명해주어서 좋았구요. 하지만, 제 친구는 AOP에 대한 개념을 처음 접하는데, 용어가 너무 어렵다고 하더군요. 저도 친구들이랑 AOP스터디를 했을 때 advice, advisor, pointcut, joinpoint 등의 용어가 처음에는 헷깔렸는데, 그런 용어를 통해 친구가 그냥 처음에 들으려니까 어려운 부분이 있었나 봅니다. 암튼, AOP에 대한 EMAIL예제를 보여주시고, 1.X대 방식, 2.0.X방식, 2.5방식(어노테이션)을 보여주시고 ^^ 예전에 최범균님의 스프링2.5프로그래밍이라는 책에서 나온 예제가 있는데, 그것이 생각나더군요. 거기에서도 다 나와있었어요. 1.X대 방식은 어떤 인터페이스를 구현하는 것으로 나오고 ^^ 2.0.X는 POJO로 하고, XML설정파일에서 포인트컷을 정의를 해주는 방식이죠. 2.5의 어노테이션은 마법이죠 ^^
아...그리고 신기했던 것이 저도 @AspectJ 붙이면 컴포넌트 스캔이 안되는데, 그걸 포함시킬 수 있더군요.
저는 그냥
[code]<bean class="~~~~.AnnotMyAop" />[/code]그냥 선언해줬는데-_-; 컴포넌트 스캔에 AspectJ클래스를 넣으면 되는군요.
그리고, Spring AOP와 AspectJ를 비교하셨는데, 역시 AspectJ는 안써봐서 모르겠군요-_-;
또 하이버네이트는 제가 안해봐서 몰르겠는데, 이거 db를 객체랑 매핑해주는 거로 알고 있는데, add를 하면 insert를 하는건데, 이거 지가 필요하면 하는 거군요. 그래서 jdbctemplete이랑 같이 쓰면 데이터를 가져오면 insert가 안되서 문제가 발생하는데, 이걸 AOP로 해결할 수 있더군요. AOP를 예전에 회사에 적용해보려고 하다가 실패를 했던 기억이 있어서-_-; 다시 한번 해봐야겠습니다-_-;

근데, 이번 세미나를 마지막으로 무료세미나를 마친다고 한 것 같더라구요. 이제 돈내고 들어야하는건가....
암튼, 어느 정도 좋은 정보를 얻을 수 있었고, 도움이 많이 되었습니다. 스프링에 대해서 공부를 안한지 쫌 됐는데, 다시 한번 되새기게 만들어주네요. 우선 @MVC관련된 강의를 듣지 못해서 좀 아쉽구요. 저도 열심히 공부를 해야겠다는 생각이 드는군요.

이런 모임이 자주 있어서 좋은 정보를 공유했으면 하는데, 아직도 스프링 자료는 외국에서 많이 찾아야해요 ㅠ


 
Posted by 머드초보
,
 

KSUG는 Korea Spring User Group이라고 하는 국내의 스프링 유저 모임입니다.
이번에는 자바지기로 유명한 박재성씨가 세미나를 준비했네요.
박재성씨는 JCO 컨퍼런스에서 강연을 들은 적이 있고, 그 분이 쓴 책인 스프링 워크북과 스트럿츠 워크북을 본 적이 있는데요. 이 분이 주장하는 것은 요약하면 그런 것 같습니다.
좀 더 멋진 환경에서 개발해보자! 인 것 같습니다.
예전에 오픈소스 컨퍼런스에서 봤을 때도 오픈소스를 활용하여 더욱 나은 개발환경을 구축하는 법에 대해서 강의를 하였습니다. 그렇게 좋은 오픈소스가 있는 줄 모르고, 뭐든 수동으로 다 처리하고 그랬었습니다. 하지만 앞으로는 더욱 나은 개발환경을 삽질해보도록 노력해봐야겠습니다. 스프링프레임워크도 그런 개념에서 나온 거니까요^^

우선 첫시간인 사용자 스토리를 기반으로 한 요구사항 분석이였는데, 박재성씨가 NHN에서 일하다보니 NHN은 이렇게 일을 하는구나 라는 생각을 들게 만들더군요. 우선 사진을 찍어서 보여주셨는데 왕따시만한 화이트보드가 있더군요. 거기다가 모두에 대한 업무흐름을 다 그리는 듯 하군요. 우리회사에는 그런거 없는데^^
그리고, 요구사항을 포스트잇에 적고, 뭐 이렇게 하더니 일정산정을 하더군요.
보통 일정산정은 고객이 결정하는데 ^^ 언제까지 하라고 하면 하면 되는겁니다 핫핫-_-;
그리고, 저는 작은 프로젝트만 해와서 그런지 그냥 코딩에 들어갑니다-_-; 정말 나쁜습관입니다-_-; 앞으로 많이 고치려고 노력하고 있는데 잘안되네요. 이번에 기회를 삼아 고쳤으면 하네요.

이슈관리 시스템인 Jira라고 하는 것을 보여주셨는데, 박재성씨 말을 들어보면 참 편하고 유용할 것이라고 생각이 들긴 들지만, 전체다 적용하고 모두를 이해시키는데는 참 오랜시간이 걸릴 듯 합니다. 그리고 한번에 너무 많은 것을 보여주셔서 약간 혼란이 있었네요 ^^ 너무 신기한 것이 많아서 ^^ 박재성씨도 얘기했지만, 이 세미나를 통해 모든 것을 다 배워가는 것보다 약간의 힌트라도 얻고 갔으면 한다고 얘기를 하셨어요. 그 힌트를 가지고 삽질하는 것은 우리들의 몫이 되겠죠 ^^ 어쨌든 요구사항 분석은...잘 안하는데....-_-; 무조건 코딩-_-; 고칩시다-_-;

Eclipse를 기반으로 한 통합개발환경 시간에는 이슈관리툴을 Eclipse에 연동해서 보여준 것 같은데요. Mylyn인가?-_-; 어쨌든 완전 모르는 겁니다. Maven이라는 것도 소개했는데 얘기만 들었지 써보지는 않았어요. ANT만 쓰고 있어서. 근데 MAVEN에 대해서 얘기를 들으니 ANT에서 기능을 더 업그레드한 개념이라고 하네요. 라이브러리같은 것을 자동으로 업데이트가 되는 듯합니다. 보통 라이브러리 버전이 업데이트가 되면 그것을 다시 받아서 JAR로 추가하고 그랬어야 했는데 MAVEN을 이용하면 버전 숫자만 바꿔주면 가능하다고 합니다. Eclipse플러그인으로 제공한다고 하네요 ^^

아.....그리고 로컬에 개발DB를 하나 둔다고 말씀하셨는데, 음 그거 좀 공감이 갑니다. DB서버가 하나면, 스키마변경하면 다른 사람 작업에 영향을 미치게 됩니다. 전에 제가 개발서버에 있는 DB와 연동해서 개발하는데 저쪽에서 갑자기 칼럼을 바꿔버려서 제가 개발해놓은 프로그램이 잘 돌아가던게 안 돌아갔던 일이 있었어요.

어쨌든, 참 모르는 말 투성이만 듣고 온 듯 합니다. 마지막시간인 Teamcity CI툴을 활용한 지속적인 통합 방법에 대해서 얘기를 했습니다. Teamcity라는 것도 처음 들어봅니다-_-; 대충 얘기를 들어보니 코드를 서브버전에 커밋한다음에 팀시티가 커밋된 것을 확인하고 빌드를 하고 이 코드에 대한 리포트를 작성해서 개발자들에게 알려주는 듯합니다. 완전 자동화를 위한 툴인 듯 합니다. CI(Continuous Integration)가 지속적인 통합이라는 뜻으로 계속 통합한다는 뜻입니다-_-; 이것을 이용해서 협업도 가능하게 하고 자동화도 가능하게 하려고 하는 것같은데, 아직은 잘 모르겠습니다 ^^ 많은 ci툴중에 팀시티를 도입한 이유중 하나가 시스템 트레이로 리포트를 알려준다고 하네요^^
뭐 빌드가 깨지면, 바로바로 알려주고, 소스에 대한 피드백도 받고 그러는 것 같은데, 이렇게 멋진 툴이 있는지도 몰랐네요 ^^ 무조건 ant로 빌드하고 업로드했는데 ^^

아.....그리고, 테스트를 만드는 것을 강조했는데, 테스트만드는 것은 왠지 정말 귀찮은 일입니다. 박재성씨도 그것을 잘 아는지 테스트 잘 안만드는거 알고 있더군요 ^^ 테스트를 만드는 습관을 들여야하겠군요. 테스트도 자동화에 추가해서 할 수 있다고 하네요.

아.....그리고, 마지막에 신기한 툴을 하나 보여줬는데 와티즈인가?-_-; 암튼 잘 못들었는데요. 실제 환경에서 테스트할 수 있게 도와주는 것 같은데. 만약 로그인 하는 화면이라면 웹을 띄우고, 로그인을 하는 테스트를 자동으로 해버리는 툴같았는데-_-; 너무 빨리 지나가서 볼 수가 없었어요 ^^ 찾아봐야겠군요 ^^

마지막으로 참 재미있었던 것은 NHN에서는 10시20분에 회의를 하는데 1분전에 쥬얼리의 원모어타임이 나오는 듯 합니다-_-; 그리고, 퇴근시에는 빅뱅의 마지막인사를.....-_-; 어쨌든 박재성이라는 분은 어두운 개발자 환경의 빛을 보여주려고 많은 노력을 하시는 것 같네요 ^^

오늘 가서 아무 것도 몰랐지만, 많은 힌트를 얻을 수 있었던 것 같습니다. 근데 강의가 너무 빨라서 ㅠㅠ 앞으로 이런 세미나를 자주 참석해서 많은 것을 배웠으면 하는 바램입니다. 이것저것 공부해야할 것이 많이 늘었네요 ^^

 
Posted by 머드초보
,