OctoberSky 스터디 후기

기본

너무 잘 쓰려다 보니 어디를 다녀와도 후기를 못쓰겠더라구요. 그래서 간단하게라도 남겨보려고 합니다. 이것도 쓰다보면 발전하겠죠 ㅋ

어제 컨시어지 아카데미에서 있었던 OctoberSky 스터디에 다녀왔습니다. 채수원님은 한빛에서 TDD 세미나 하실 때 처음 뵜었는데 발표를 재미있고 편한하게 하시는게 인상 깊었습니다. 이번 스터디 진행도 매끄럽게 잘 하셨구요 🙂

OctoberSky 스터디는 온오프라인을 병행하는 재미있는 구조로 스터디가 진행되는데요. 스터디 때 어떤 분이 말씀하셨듯이 ‘느슨한 진행’이 묘미입니다. 언제까지 뭘 해야돼! 하는 부담이 없으니까 더 즐겁게 스터디를 할 수 있더라구요 🙂

node.js 스터디에 참여한 계기는 혼자 공부하기엔 좀 어려운 부분이 있어서 인데요. 한글로 된 문서가 거진 없을 뿐더러 node.js만 가지고 뭔가를 하지 않고 또 관련된 프레임워크나 다른 모듈들을 함께 사용하고, 아직 환경이 윈도우에서는 돌려보기 어렵기 때문에 진입장벽이 높다고 생각됩니다.. 라고 생각하고 있었는데 OctoberSky에 참여하신 분들이 관련된 문서를 많이 번역해 주셔서 공부하기가 한결 편해진 것 같습니다. 우분투도 막상 설치해서 돌려보니 괜찮네요. 이제 몇 일 써봤지만 왜 개발자들이 리눅스를 선호하는지 알 것도 같습니다 ㅋ

OctoberSky.js 스터디 주제에 대한 짧은 감상

Cloud9 IDE에서의 개발

한 반 년 전에 웹상에 프로그램을 업로드하고 서버에서 프로그램을 실행시켜서 원격제어 하듯이 웹에서 돌아가는 이클립스를 만져본 적이 있었는데, Cloud9 IDE는 아예 웹기반 IDE입니다. 코딩하고 저장한 다음 리프레쉬 한 번 하면 적용된게 보이는 ㅎㄷㄷ한 IDE였네요.(그것도 웹으로!) 웹 개발은 환경 설정이 반이라 이런 웹기반 IDE 아이디어는 굉장히 좋은 것 같습니다. 앞으로 발전이 기대되네요.

자바스크립트 코어 – Prototype Chain & Closure

정말이지 코어한 주제였다고 생각됩니다. 자바스크립트가 처음엔 자바처럼 생겨서 쉬울 것 같다가 만지다 보면 상당히 하드코어해지죠.

자바스크립트도 결국 모든 것이 객체고, 객체에는 __prototype__ 이라는 프로퍼티가 존재합니다. 이 프로퍼티를 따라가보면 Object __prototype__ 을 가지게 되고, 결국 체인처럼 연결돼 있습니다. 동적으로 프로퍼티를 추가해 주는 역할만 하는 줄 알았는데, 이러한 프로토타입 체인을 따라서 프로퍼티를 검색하게 된다는 점은 생각 못해봤네요. 자바스크립트 클로저의 동작원리도 흥미로운 발표였습니다.

node.js 적용 경험담 듣기

firejune님의 발표였는데, HTML5 발표 만큼이나 흥미진진 했습니다. node.js로 다양한 시도를 해보신 것에 대해서도 놀라웠지만 생각한 것을 구현하고 적용하는 모습이 부러웠습니다. 뼈속까지 개발자가 아니라 한 없이 작아신다고 하셨지만 이미 그러한 사람이 되신 것 같더군요 ㅋ

ECMAScript 변천사

이것 또한 재미있는 발표였습니다. 자바스크립트가 어떻게 생겨나게 됐는지 어떻게 발전돼 왔는지 재미있더라구요. 그리고 ppt가 아닌 vi 에디터로 발표하시는 모습이 멋졌습니다 ㅋㅋㅋ 아 나도 해보고 싶다!!

전체적으로 지루할 틈 없이 진행되는 스터디였고 상당히 알찼습니다. 발표 내용 외에도 참석한 분들의 자기소개, 스터디 후기 듣는 재미도 쏠쏠했습니다 😀

2010 한국 자바 페스티벌 트랙2 후기

기본

첫 인상

저번 주 토요일 이화여대 ECC에서 진행하는 2010 한국 자바 개발자 페스티벌에 갔다 왔습니다. 이화여대는 처음 가봤는데 ECC는 거의 던전이더군요. 익숙해지고 나니까 그렇게 어려운 구조는 아니었는데 문제는 페스티벌 한다는 기척이 전혀 보이지 않았다는 것에 있었습니다. 그 흔한 푯말 하나 안보이더라구요. 트랙 2가 진행되는 B161호에 제가 11시(행사는 12시부터 등록 시작) 좀 넘어서 도착을 했는데, 정말 아무것도 없었습니다. 행사가 정말 하는건가 싶어서, 발표자 한 분께 전화해서 물어봤을 정도였거든요. 어떻게 하다보니 트랙 1 접수대에서 잠시간 봉사 활동(?)도 했습니다. 다음 부턴 미리 봉사 요원들을 구하시는게 좋을 것 같습니다 🙂
저는 트랙 2를 쭉 들었구요, 트랙 2에는 세션이 2개 밖에 없었습니다.

첫 번째 세션 // 개발자가 성공하는 길 – 오픈소스 비지니스 모델, 유엔진

첫 번째 세션은 유엔진의 장진영 대표님이 발표해 주셨습니다. 유엔진은 BPM을 2003년에 오픈소스 S/W 프로젝트로 전환시킨 후, 현재까지 국내에서 연 성장률 100%를 달성하고 있다고 합니다. (자세한 내용은 http://mssql.tistory.com/893 이 포스트와 유엔진 홈페이지를 참조해 보세요.)

세션은 오픈 소스에 대한 이야기와 어떻게 오픈 소스로 돈을 버는지(듀얼 라이센싱, LGPL) 그리고 kalm에 대한 이야기로 마무리가 됐습니다.

기억에 남는 건 유엔진이 BPM의 모든 것을 만들지 않고, 다른 오픈소스 모듈들을 매쉬업 하면서 자연스럽게 TDD를 사용했다는 점과 소스가 오픈돼 있기 때문에 오히려 다른 곳에서 이를 가져다 사용하는 건 자사의 제품을 홍보해주는 역할 밖에 안된다는 말이었습니다. 개인적으로 다른 상용 S/W의 경우 서비스 보단 제품에 대해 가격을 청구하는 반면에 오픈 소스 S/W는 서비스에 중점을 두는게 성공의 비결 중 하나가 아닐까 하고 생각해 봤습니다.

KALM은 Korean Application Lifecycle Management의 약자로 JCO, 유엔진이 참여하는 오픈소스 S/W입니다. 개발에 참여하면 커미터 명단에 등록되고, 개발비도 지원된다고 하니 관심 있는 분들은 참여를~

두 번째 세션 // RESTful Java, 김병곤

제가 트랙 2를 선택한 이유는 5월 말에 자바 개발자를 위한 공감 세미나에서 ‘RESTful Java와 모바일의 만남’ 이라는 주제로 발표하신걸 들었었는데 이번에 더 자세하게 들어보고 싶었기 때문입니다. 김병곤님은 JBoss User Group 운영자 이시구요, 현재 RESTful Java, Oreilly 책을 번역 중이시라고 합니다. 구글링 해보니 번역 하시는 책이 무료 pdf 버전으로 공개가 됐네요. 단, 영어…………. 번역이 시급합니다 ;ㅁ;
발표하실 때 사용한 프레젠테이션에도 나와있지만 네이버 SVN에 소스 코드랑 다른 자료들도 많으니 관심 있으신 분들은.. 🙂

REST를 간단히 말하자면 ‘HTTP 프로토콜의 의도를 그대로 따라가자’는 것 같습니다. HTTP하면 요청할 때 GET, POST 방식으로 보낸다.. 외에 더 알아야 할게 뭐 있나 싶었는데, REST는 사용자가 요청한 주소와 PUT, DELETE, HEAD, GET, POST 등의 HTTP 헤더를 자바 어노테이션과 매핑시켜 자연스럽게 웹 서비스를 구현해 줍니다.

포트폴리오 만들려고 Struts를 3-4번 써봤는데요. 이것과 REST를 비교해 보자면 Action 상속받아 구현한 다음, XML 설정 파일에서 Action 매핑하는 부분이 그냥 POJO 클래스 + 어노테이션으로 대체됐다고 보시면 되겠습니다. 상당히 심플해요!

HTTP 프로토콜을 사용하기 때문에 관심을 가져야 하는 부분이 하나 더 있습니다. 바로, 응답 코드입니다. 만약 어떤 게시물을 조회 요청 했고 관련된 메소드도 잘 호출됐습니다. 그런데 해당 게시물이 없었다면 그건 404(Not Found) 일까요? REST는 그런 상황에서 204(OK but No Content)를 사용하라고 합니다. 넵.. 상황에 맞는 응답 코드요.

REST는 원래 비표준이었는데 JavaEE6에 포함이 됐구요(JAX-RS), REST의 개발 편의성을 대폭 상승시켜주기 위한 규격이 하나 더 있습니다. 바로, JAXB 입니다. JAXB는 객체와 XML 간의 상호 변환을 해주는 규격입니다. JAX-RS에서는 객체를 JSON 또는 XML로 변환하기 위해 사용됩니다. 그런데 이런 변환을 위한 규격이 왜 필요하냐면 그건 바로 컨텐츠 협상(Contents Negotiation) 때문입니다.

REST가 주목받는 이유 중 하나가 컨텐츠 협상이라고 생각되는데요. 왜냐면 단순히 html 같은 컨텐츠가 아닌 클라이언트가 원하는 컨텐츠(XML, JSON 같은)를 돌려주기 때문입니다. 물론 if문 분기가 아닌.. 우아한 방법으로요! 따라서 요즘같이 클라이언트가 누가될지 알 수 없고 다양한 애들이 생겨나는 상황에서 빛을 발하지 않나 싶습니다.

컨텐츠 협상은 URL 뒤에 파라미터를 붙여서 넘기는 형태는 아니고, 요청을 하는 쪽은 HTTP 헤더 ACCEPT에, 응답을 하는 쪽은 HTTP 헤더 Content-Type에 MIME 데이터 타입으로 넣어줍니다. 이로써 서로 어느 컨텐츠를 원하는지 알 수 있죠.

이외에 스프링과의 통합, 테스트, JBoss의 RESTEasy 프레임워크에 대한 내용이 있었고, 현재 JAX-RS의 구현체로 참조 구현체Jersey, Apache CXF, JBoss RESTEasy가 있는데 이 중에는 RESTEasy가 가장 낫다는 평도 해주셨습니다.

스프링 프레임워크의 경우 JAX-RS를 자체적으로 구현하지는 않은 것 같은데 다른 구현체들이 스프링과의 통합을 손쉽게 해주는 것 같았습니다.

뒷풀이

저는 이런 뒷풀이 자리엔 참석해 본적이 없는데, 이번에 처음으로 참석해 봤습니다. 아는 분들도 거의 없고 해서 뻘쭘한 것도 있었지만 그래도 좋은 얘기 많이 들을 수 있어서 좋았습니다. 그런데 안주가 너무 매웠어요 거기.. ㅎㅎ

끝으로

이런 후기는 처음 써보는데, 사진을 못찍은게 좀 아쉽네요. 암튼 유익한 시간이었고, 설문지 작성으로 받은 JRebel 라이센스는 잘쓰겠습니다 🙂