[Info]Tags categorized posts and contents patterns..

[AJAX] Ajax Code E xamples.. [Book] About the book.. [CSS] CSS Code E xamples.. [DB] Sql Code E xamples.. [DEV] All development stor...

2016년 3월 25일 금요일

[Talk]Three hundredth article..

어느 덧 300번째 글이구나.. 200번째 글을 올리게 됬을 때보단 그래도 나만의 포스팅을 조금 더 올릴 수 있었다.. 항상 그럴수는 없겠지만 해보니 아예 안되는건 아니라는 것을 느끼게 되었다..

또한, 나의 카테고리도 조금 더 늘게 되었다.. 추가적으로 올려볼만한 것이 생기게 된 것이기도 하다.. 단, 개발쪽이 아닌것도 있긴하지만.. ㅋㅋㅋ.. 그리고 포스팅을 갖고 올 때도 조금 더 구분을 하게 되었다.. 기준도 나름 생기게 되는 것 같고 말이지..

포스팅을 갖고 오거나 포스팅을 하거나 할 때 처음에 중구난방으로 하던 것에서 어느정도 패턴이 잡혀가고 있는 듯하다.. 글씨 크기도 바꾸고, 중요한 내용을 표시하는 패턴, 소스코드 삽입 방법 등등.. 무엇보다 내가 항상 글을 쓰다보면 .. 을 잘 넣고 자주 넣곤 한다.. 그런데 이제는 어느정도의 글이 마무리가 되었을 때 넣는다..

왜냐면, 예전 습관처럼 너무 자주 넣으니까 이건 머 글의 흐름이 깨지는듯한 느낌을 받아서 의도적으로 좀 바꿔봤다.. 그렇게 하다보니 과거 글을 쓸 때 느낌보단 훨씬 깔끔하다고 해야될까..?? 무튼 더 좋다.. ㅋㅋㅋ..


이젠 햄의 글도 목록 기준으로 보면 500 번대를 읽고 있는데 과거처럼 무조건 다 읽지는 않는다.. 예를 들면, 스칼라 같은 내용들은 걍 스킵한다.. 내가 관심있거나 봤거나 한 것도 전혀 아니고 해서 그런 부분은 과감하게 스킵하는데 글 번호가 앞으로 갈수록 드는 생각은 나중에 다 읽고나면 과연 나 스스로 포스팅을 잘 할까 싶은 것이다..

열심히 그리고 꾸준히 하고자 블로그를 시작한것이긴 하지만 걱정은 되긴 한다.. 햄처럼 관심사가 많거나 개발이란 것을 엄청 좋아하거나 그런것이 아니다보니 아무래도 쓸것이 많지는 않을 것 같다.. 그래도 나름의 관심 혹은 꾸준함을 이어가기 위해서 노력해봐야지..

나 스스로 항상 생각하는게 있는데 머리가 명석하지 않거나 특별한 재능을 갖고 있는게 아니라면, 꾸준하기라도 해야된다는 것이다.. 그래서 내가 하고 있는 헬스, 공인중개사 등등 모든 것을 엄청 특출나지는 않더라도 꾸준하게 하고 있다.. 설령 집중력이 흐트러지더라도 꾸준히 하는데 왜냐면, 티끌 모아 태산 이라고 믿기 때문이다.. 남들보다 조금 늦을 뿐 할 수 있다고 믿기 때문이다.. 그러니 블로그도 꾸준히 하자.. 400번째 글을 향해서..

GoGo !!!

[CSS]Blueprint - 쉽게 Grid 레이아웃을 잡을수 있는 CSS Framework..

출처 : Outsider's Dev Story https://blog.outsider.ne.kr/

순전히 제 기준으로 봤을때 작년 후반부부터해서 CSS Framework라는 얘기를 많이 듣고 있습니다. JavaScript는 물론이도 프로그래밍 언어에는 모두 프레임워크시대가 도래했는데 프로그래밍은 아니지만 이젠 CSS에도 프레임워크가 도입되기 시작하고 있습니다.

이번에 처음 CSS Framework를 찾아봤는데 아직 그 역사가 짧아서인지 구분이 좀 명확하지 않은 듯한 느낌이지만 이것저것 찾아보니 크게 미리 정의된 스타일에 맞게 class만 지정해서 사용하는 방식과 심플한 문법으로 CSS를 작성하면 컴파일을 통해서 완전한 CSS가 나오는 형태 2가지로 분류할 수 있는 것 같습니다.

전자에 해당하는 프레임워크들에는 Blueprint, 960 Grid System, YAML, Elastic, Less Framework 4등이 있습니다. 프레임워크별로 특성들이 있겠지만(저도 종류별로 만져본 것은 아니라서...) 대표적으로 제공하는 Grid같은 경우 프레임워크에서 제공하는 CSS파일을 받아서 페이지에 적용하고 가이드대로 class만 적용하면 복잡한 레이아웃도 간단하게 잡을 수 있도록 제공하고 있습니다. 후자같은 경우는 SassLESS가 대표적입니다.(여기서 LESS는 앞의 Less Framework 4와는 다릅니다.) Sass나 LESS는 변수를 사용한다거나 공통적인 부분을 함수로 분리해서 재사용하는 등 약간의 프로그래밍적인 요소들이 추가되어 쉽게 작성할 수 있게 해주고 이를 컴파일해서 일반적인 CSS파일로 만들어주는 방식을 취합니다. 그런면에서 프레임워크라는 용어는 솔직히 적합하지 않은 면이 있다고 생각합니다.

Blueprint 설정하기
이번에 개인적으로 웹사이트를 만들면서 CSS로 레이아웃을 잡는게 힘들어서 Blueprint를 적용해보고 있습니다. Blueprint의 소스는 Github에서 관리되고 있어서 개발중인 소스도 받을 수 있으면 공식사이트에서도 다운로드받을 수 있습니다. 현재 최신 버전은 1.0입니다. Blueprint가 제공하는 간단한 샘플페이지가 제공되고 있으며 간단한 Quick Start Tutorial을 제공되고 있고 nettuts+의 포스팅정도가 제공하는 문서의 전부입니다. 처음 Blueprint를 만져보았을 때는 문서가 꽤 부실한 느낌이라 약간 헤메기는 했는데 약간 사용해보면 사용하기는 꽤 간단한 편입니다. 간단히 문서로 사용방법만 익히고는 Cheat Sheet를 참고하는게 더 사용하기 편한 것 같습니다.

Blueprint를 사용하려면 기본적으로 아래 3개의 CSS파일을 인클루드해야 합니다.


Html
1
2
3
4
5
<link rel="stylesheet" href="css/blueprint/screen.css" type="text/css" media="screen, projection">
<link rel="stylesheet" href="css/blueprint/print.css" type="text/css" media="print"> 
<!--[if lt IE 8]>
    <link rel="stylesheet" href="css/blueprint/ie.css" type="text/css" media="screen, projection">
<![endif]-->

screen.css는 일반적인 스크린화면용 스타일이고 print.css는 프린트를 위한 스타일이며 ie.css는 IE호환성을 맞추기 위한 스타일입니다. Blueprint는 3가지 레이어를 제공하고 있는데 CSS Reset, Typography, Grid입니다. CSS Reset은 각 브라우저의 차이점을 맞춰주기 위한 부분이고 Typography는 글자에 대한 사이즈나 색을 조정하고 Grid는 그리드 레이아웃을 맞추기 위한 레이어입니다.

Blueprint 사용하기

Html
1
2
3
4
5
6
<div class="container">
    <header class="span-24 success">Header</header>
    <article class="span-16 ">Article</article>
    <aside class="span-6 prepend-2 last ">Sidebar</aside>
    <footer class="span-24 error">Footer</footer>
</div>

위와같이 각 엘리먼트에 class를 지정해주는 것 만으로 아래와 같은 레이아웃을 구성할 수 있습니다.

Blueprint로 간단한 레이아웃을 잡은 화면

사용하는 각 클래스는 Quick Start Tutorial이나 Cheat Sheet를 참고하면 됩니다. Blueprint는 기본적으로 1024x768해상도에 맞춰진 950px로 최대폭이 맞춰져 있습니다.(다른 사이즈가 필요하면 커스터마이징을 해야 합니다.) 950px를 기준으로 30px짜리 폭에 10px의 마진을 가진 24개의 컬럼으로 한 로우가 기본적으로 구성됩니다. 그리고 Grid를 사용하는 곳을 감짜는 엘리먼트가 container로 클래스가 지정되어야 사용이 가능합니다. 각 로우는 sapn-x라는 클래스로 x의 위치에 숫자를 넣어서 폭만큼의 칸을 지정하면 되고 각 로우의 마지막 컬럼에는 last라는 클래스를 지정합니다. append-x는 현재 컬럼의 앞에 prepend-2는 현재컬럼의 뒤에 추가해줄 컬럼갯수를 지정해 주면 됩니다. 24개의 컬럼을 기준으로 필요한만큼 폭을 정해주면 다양한 레이아웃을 간단하게 만들수 있습니다.

레이아웃에 그리드를 표시한 화면

showgrid라는 클래스를 주면 위와같이 Grid를 보여주어서 레이아웃을 잡을때 참고하기가 좋습니다. 그외의 클래스들은 문서를 참고해 보면 쉽게 그 내용을 파악할 수 있습니다.

그외 Blueprint를 커스터마이징하기 위한 BlueprintBLUECALC등의 도구들도 제공되고 있어서 필요한 크기의 그리드를 만들어서 사용할 수 도 있습니다.

Conclusion
사실 프레임워크라는 용어를 부르기 민망할 정도이고 미리 정의된 스타일셋 정도의 수준에 가깝습니다. 다양한 스타일이 정의되어 있기 때문에 성능이나 디테일한 면에서는 직접 스타일을 잡아서 정의한 것에 비하면 부족한 것이 사실이지만 생산성면에서는 훨씬 뛰어날 꺼라고 생각되고 전문적으로 마크업과 CSS를 잡아주는 사람이 따로 없다면 상당한 수준의 레이아웃을 쉽게 구성할 수 있기 때문에 괜찮은 선택이라고 생각됩니다.

기본적인 레이아웃을 잡은 뒤에 CSS는 얼마든지 재정의할 수 있기 때문에 다루기도 쉽고 개인적으로 만드는 사이트에 적용해보고 있는데 꽤 만족하고 있는 편입니다. CSS는 브라우저별의 차이도 많고 CSS의 특성이나 경험을 많이 해보지 않으면 다양한 레이아웃에서 원하는 스타일을 적용하기가 쉽지 않고 상당히 피곤합니다. 저같은 경우는 마크업과 CSS에 관심은 있지만 주업무롤은 아니기 때문에 한계도 있는데 Blueprint를 사용하니까 쾌적하고 좋더군요. ㅎ


My Comment..
퍼블리셔가 아닌 관계로 CSS 프레임워크를 쓸일이 있을듯하지는 않지만, 글을 갖고 왔는데.. CSS 에 프레임워크가 있다는 것이 신기해서 읽어보고 가져왔다.. CSS 를 만진다고 해봐야 퍼블리셔가 준것에서 정말 소소한 것 몇 개만 수정하는 정도인데 신기 신기.. CSS 에도 프레임워크란 것이 있다니.. +_+..


[Book] 자바 세상의 빌드를 이끄는 메이븐..

출처 : Outsider's Dev Story https://blog.outsider.ne.kr/

자바 세상의 빌드를 이끄는 메이븐 - 8점
박재성 지음
한빛미디어

앞에서 포스팅[개인 후기여서 가져오지 않았던 포스팅..] 했던 대로 저는 이 책의 베타리더로 작년에 초안을 미리 읽었었습니다. 저자만큼은 아니겠지만 베타리딩을 하면 왠지 더 책에 정감이 가게 되는것 같습니다. 베타리딩을 한 것을 초안이었기 때문에 책을 받고 다시 읽어보았습니다. 전체적으로 흐름도 깔끔하고 내용도 명확하게 잘 정리되어 있다는 느낌입니다.

메이븐은 현재 국내에서도 많이 보급이 되고 있다는 느낌이 있기는 하지만 전체적으로 보면 아직은 도입시기로 기술을 선도하거나 새로운 기술을 잘 받아들이는 조직위주로 많이 쓰이고 있다고 생각하고 있습니다.(메이븐이 최고다라는 의미는 아닙니다.) 하지만 대부분의 오픈소스 프로젝트를 받아서 사용하려고 보면 상당수가 메이븐을 사용하고 있기 때문에 자신의 프로젝트에서 메이븐을 쓰지 않는다고 하여도 메이븐에 대해서 익혀볼 가치는 충분하다고 생각됩니다.

이 책의 전개는 메이븐의 사용법을 열거한 레퍼런스 타입은 아니고 박재성님이 위키북이라는 프로젝트를 진행하면서 메이븐을 사용하기로 결정하고 프로젝트를 진행하면서 단계별로 메이븐을 테스트하고 작용하면서 확장해 나가는 단계를 프로젝트 진행 타임라인대로 설명해 놓은 책입니다. 단순히 메이븐에 대한 사용법뿐만 아니라 프로젝트를 진행중 메이븐을 도입하면서 고민했던 부분이나 프로젝트에서 발생한 이슈들을 메이븐으로 어떻게 풀어나갔는지에 대한 고민이 그대로 담겨져 있습니다. 이러한 부분들은 다른 프로젝트에서도 충분히 공통적으로 발생할 수 있는 이슈들이기 때문에(사실 일반적으론 이정도도 고민을 하지 않죠. ㅎ) 현재 프로젝트에 메이븐을 적용하려고 한다면 정말 많은 도움이 될 수 있을 꺼라고 생각합니다.

메이븐에 대한 설명은 터미널에서 명령어로 사용하는 것을 위주로 되어 있습니다. 메이븐을 쓸 때 이클립스에서 많이 쓰는 m2eclipse에 대해서는 한 챕터정도만 설명이 되어 있을 뿐이고 중간중간 약간의 가이드만 되어 있을 뿐이고 대부분은 직접 터미널에 명령어를 입력해서 사용하는 것으로 설명하고 있습니다. 저를 포함해서 대부분의 개발자들이 GUI툴에 익숙하고 거의 GUI툴만 쓰기 때문에 이런 부분은 직접 와닿지 않고 약간 돌아가는 느낌이 있을수 있지만 개념을 잡기에는 터미널을 위주로 설명하는 것이 훨씬 좋다고 생각합니다.

저도 최근에는 터미널을 많이 사용하지만 메이븐은 거의 m2eclipse로만 사용하고 있었습니다. 사실 m2eclipse는 그리 안정적인 플러그인이 아니라서(써보신 분들은 아실듯...) 문제가 생기면 해결하기 위해서 터미널로 가서 mvn eclipse:eclipse를 입력하곤 했지만 이 명령어가 무슨 의미인지도 잘 모르고 사용했습니다. GUI툴은 사용하기는 편리하지만 개념을 잘 잡고 있지 못하고 쓸때는 문제가 생기면 정말 해결하기가 어려운 편인데 이 책에서 명령어로 일일이 설명해 주고 있기 때문에 설사 m2eclipse를 쓰고 있다고 하더라도 메이븐의 동작 개념을 잡기가 정말 좋습니다.(물론 연습도 터미널로 하면 이해하기가 훨씬 좋겠죠. ㅎ) 저도 앞으로는 이 책을 참고삼아 터미널 위주로 사용을 하려고 하고 있습니다.

저는 Ant도 제대로 써본적이 없어서 잘 모르지만 Maven은 많은 부분이 자동화되어 있어서 처음에 동작원리를 배우기가 어려운 부분이 있습니다. 하라는대로 하니까 프로젝트 설정이 되기는 했는데 어떻게 된건지 잘 모르는 상황인거죠. 하지만 어느정도 사용하다보면 리아브러리 디펜던시관리나 프로젝트 설정관리등이 너무 편하고 공유하기에도 좋아서 금새 빠져들게 됩니다. 처음 메이븐을 접했을 때는 자료도 많지 않고 공부하기가 어려웠었는데 현재 국내에는 번역서인 Maven : Sonatype이 만든 Maven 핵심 가이드 다음으로 나온 두번째 메이븐에 대한 책입니다. 먼저 나온 책을 아직 보지는 않았지만 이 책에서는 단순히 메이븐에 대한 사용법이 아닌 메이븐의 개념을 알려주려고 하는 노력이 많이 느껴지기 때문에 그 개념을 제대로 공부한다면 차후에 메이븐을 더 다양하게 활용할 수 있을것이라고 생각됩니다. 


My Comment..
메이븐이라는 것은 과거부터 얘기만 들었지 내가 써본적은 없다.. 그래서 해당 글은 좀 고민을 하다가 갖고 왔다.. 글에 언급된 Ant 는 직접적으로 관여해서 썼다기보다는 누군가 해둔 것을 잠시 활용만 해봤던 적은 있다.. 그러다보니 개념은 안드로메다에 있는 실정이고.. ㅎㅎ..

[Book] 실전 jQuery 쿡북..

출처 : Outsider's Dev Story https://blog.outsider.ne.kr/

실전 jQuery 쿡북 - 8점
jQuery 코어 커뮤니티 지음
김경균.최지훈 옮김
김태영 감수
비제이퍼블릭

Amazon에서도 꽤 많이 팔린걸로 알고 있는 제이쿼리 쿡북입니다. 사실 jQuery의 인기의 비해서 국내에는 책이 그다지 많지 않은데 괜찮은 책들도 있기는 하지만 버전이 1.3 이하버전을 기반으로만 되어 있어 아쉬움이 있었는데 작년에 이 책이 나왔습니다. 사실 예판할때 바로 지르긴 했는데 계속 미루고 못보고 있다가. 이책도 원서는 1.3 기반인데 번역서가 1.4로 증보하였는데 jQuery는 이미 1.5.2대로 들어섰고 1.6얘기도 나오고 있는 관계로 더 늦으면 아예 이책도 안보겠다 싶어서 집어들었습니다.

쿡북이라는 이름대로 이 책은 레시피소개 방식으로 쓰인 책입니다. 모든 챕터의 구성이 많이 필요할 만한 상황을 주고 그부분은 jQuery로 어떻게 작성하는지에 대해서 보여준 다음 코드에 대한 설명이 이어붙습니다. 이런 레시피 방식이기 때문에 나중에 필요한 기능이 생겼을때 참고해 보기에 좋은 편이고 각 상황에 대한 구성도 많이 쓰일만한 패턴을 위주로 잘 설명하고 있다는 느낌입니다. 그리고 원 저자가 jQuery의 코어개발자들이 작성한 것이기 때문에 기본적으로 소스에 대한 신뢰도 할 수 있습니다.

저도 jQuery를 상당히 좋아하고 jQeury같은 프레임웍자체를 안쓰는걸 좀 답답해 하는 편이기는 하지만 한편으로는 jQuery덕분에 개발자들이 JavaScript를 너무 쉽게 생각하고 크로스브라우징 같은 이슈를 고려조차 하지 않는 것에 대해 불만을 가지고 있는 사람중 하나인데 이 책은 당연히 jQuery책이니 jQuery를 설명하고 있기는 하지만 초반에 이 책은 JavaScript책은 아니니 JavaScript에 대한 공부는 미리 따로 하기를 권하는 점이나 전체적으로 jQuery의 좋은 사용법을 강조하기는 하지만 순수 JavaScript의 사용의 고려를 강조하는 것은 상당히 좋게 느껴집니다. jQuery는 jQuery일 뿐이니까요 ㅎ

현재 jQuery버전이 1.5.2이기는 하지만 이 번역서가 나올 당시 1.4.x가 릴리즈되었기 때문에 첫장에 taeyo님의 jQuery 1.4의 새로운 기능에 대해서 설명하고 있기 때문에 1.4이상버전을 쓰는 사람에게도 유용하리라 생각이 됩니다. 1.5.x에서는 ajax리팩토링이 주요 이슈이기에 사용하는 개발자 입장에서는 성능이 이점이 있을 뿐 공부하는데는 이정도로도 충분하다고 생각됩니다. .sub()의 추가가 있기는 한데 이런 부분은 따로 찾아서 보면 되기 때문에 한참 동안은 이책을 참고해서 jQuery를 공부하기에 문제가 없다고 생각합니다.

저한테는 상당히 좋은 느낌의 책이고 초심자가 보기에도 괜찮다고 생각은 하지만 레시피방식이기 때문에 정확히 초심자가 어떻게 느낄지는 잘 모르겠습니다. 기본적인 DOM이나 CSS 셀렉터같은 지식은 가지고 있고 어느정도는 jQuery를 쓰고 있었기 때문에 다양한 jQuery의 사용법과 코드작성법, 컨벤션등에 대해서 자세히 가이드하고 있는 부분은 아주 유용하게 느껴지고 jQuery의 특징인(머 다른 JavaScript라이브러리도 그렇지만요) 체인방식이나 셀렉터를 활용하는 부분에 대해서 친절하게 잘 설명해주고 있다는 느낌입니다. 아주 간단한 DOM 핸들링부터 다루고 있기 때문에 초심자가 jQuery를 익히기에도 무리는 없겠지만 좀더 제대로 익히고 싶다면 DOM등의 기본적인 JavaScript지식은 따로 공부해 두는 것이 더 좋다고 생각됩니다.

후반부에는 jQuery 플러그인들에서도 많이 다루고 있습니다. jQeury를 쓰다보면 플러그인 도배가 되는 느낌이 없잖아 있어서 꼭 좋다고 해야할지는 잘 모르겠지만 jQuery코어팀이 추천하는 유용한 플러그인들을 참고할 필요는 있다고 생각되고 jQuery UI에 대해서도 2-3장을 할애해서 설명해 주고 있습니다.(jQuery UI에 대해서는 CSS를 커스터마이징하는 부분이나 자신만의 디자인을 적용하는 부분에 대해서도 많이 나와있어서 읽을때는 좀 지루하긴 한데 나중에 참고할때는 유용할 듯 합니다. ㅎ)

저는 Ajax를 다룬 부분이(요즘은 Ajax의 사용빈도를 생각할때) 다른 장에 비해서 좀 빈약하지 않나 생각을 하고 있습니다. 내용이 부실하다거나 그런것은 아니고 유용한 내용이 있고 하지만 좀더 다양한 레시피를 제공해 주었었다면 더 좋았겠다하는 느낌은 있습니다. 그리고 마지막장의 QUnit까지 다뤄주고 있어서 jQuery에 대한 모든 것을 다뤄주고 있다고 생각합니다. 개인적으로는 17장인 대형프로젝트에서 jQuery 사용하기는 굳이 왜 들어간걸까 하는 생각은 좀 있습니다. 앞부분은 HTML5에 대한 얘기인데 HTML5에 대한 설명도 빈약하고 플러그인과 내용을 섞어놔서 이해하기가 좀 어렵게 되어 있으며 다른 플러그인들은 꼭 다루지 않아도 될만한 플러그인이라고 생각이 들었습니다. 일단 장의 이름인 대형프로젝트하고 무슨 상관이 있나 싶기도.. ㅎ

jQuery는 어느정도 익히고 나면 레퍼런스문서가 잘되어 있어서 레퍼런스 문서를 보는게 더 좋다고는 생각하지만 이책과 병행해서 보면 jQuery작성의 수준을 많이 높일 수 있을 듯합니다.



[Book] 토비의 스프링 3..

출처 : Outsider's Dev Story https://blog.outsider.ne.kr/

토비의 스프링 3 - 10점
이일민 지음
에이콘출판

드디어 다 봤습니다. 사실 드디어라고 하기에는 너무 오랫동안 봤습니다 .동시에 여러가지를 하기도 하고 봄싹에서 하는 스터디의 교재로 하다보니 스터디 진도에 맞추면서 보다보니 6개월동안이나 책을 봐버렸네요. 1400페이지나 되니 책이 좀 두껍기는 하죠. 원래 계획은 한번 먼져 보고 스터디 진도는 계속 따라가는 거였는데 그렇게 되지는 못했습니다.

어쨌든 책은 정말 최고입니다. 아니 최고라는 말로도 부족할 정도입니다. 그 이전에 스프링 책을 웹 개발자를 위한 스프링 2.5 프로그래밍프로 스프링 2.5를 보았었는데 스프링에 대해서 감이 잘 안왔었습니다. 물론 이부분은 제가 스프링을 업무에서 만지고 있지 않았던 데다가 그냥 책만 보았지 따로 코딩하면서 연습해볼 기회가 없었던 부분도 더 크기는 했지만 보통은 책을 보면 어느정도 감이 오는데 스프링을 공부할 때는 계속 XML설정 얘기만 있는것 처럼 느껴지고 책을 다 보았는데도 어떻게 개발해야되는지도 감도 잘 안오고 했습니다만 이 "토비의 스프링 3"는 달랐습니다. 스프링이 가진 철학상 다양한 선택권을 주다보니 공부하는 입장에서는 더 헷갈릴 수 밖에 없었던 것이었는데(물로 그 사이에 공부하면서 어느정도 깨닫기는 했지만) 이 책에서 아주 명확하게 알려주고 있습니다.

이 책에서 토비님이 알려주려고 하는 것은 제가 느끼기에는 2가지인것 같습니다. 스프링이 구현하고 있는 자바에 대한 것과 그 철학을 바탕으로한 스프링의 사용법입니다. 그 부분에 따라 1부와 2부로 나누어져 있습니다.

1부는 스프링이 구현하고 있는 기술들에 대한 설명들이지만 결국은 자바에 대한 얘기이고 스프링이 다양한 부분에서 자바기술에서 가장 괜찮은 구현을 해내고 있다는 면에서 봤을때 현재 자바라는 기술을 어떻게 사용하면 잘 사용할 수 있는지에 대해서 설명하고 있습니다.(물론 당연히 스프링에 대한 설명부분도 있습니다.)그래서 시작은 아주 간단하게 DAO 클래스부터 해서 OOP에 원칙에 근거해서 어떻게 분리하고 왜 인터페이스를 도입해야 하고 IoC나 DI를 어떤 원리로 구현하고 어떤 이점이 있는지 찬찬히 설명해 주고 있습니다. 아주 이해하기 쉽게 일일이 코드로 예를 들어주면서 AOP라는 기술이 어떤 원리로 적용되고 예외처리는 어떻게 해야하며 서비스 추상화는 어떻게 해야하는지 일일이 설명해 주고 있습니다. 개인적으로 스프링을 사용하지 않는 개발자라고 하더라도 자바개발자라면 최소한 이 책의 1부를 읽고 학습한다면 크게 도움이 될 것이라고 생각합니다.

2부는 실제 스프링을 어떻게 사양하는지에 대한 레퍼런스 격인 성격을 가지고 있습니다. 다른 책을 볼때는 XML설정에 대한 나열이라 지루한 면도 있었는데(물론 그사이에 스프링이 애노테이션을 더 강화시킨 부분도 있지만요) 1부에서 각 기술이 뒤에서 어떻게 돌아가고 왜 그렇게 하는지를 설명했기 때문인지 레퍼런스라고 하더라도 지루하지 않고 갈 설정이나 사용법을 설명하는 중간에도 경험에서 우러나온 셜명들이 함께 있기 때문에 비교적 이해하기 쉽다고 느껴집니다.(비교적입니다.. 한번 읽었다고 스프링을 이해할리는 없죠 ㅎ)

이 책에서 가장 좋은 점은 아주 친절하다는 것입니다. 저는 아는 거랑 가르치는 것은 약간 다르다고 생각하는 편이고 잘 아는 사람이 잘 모르는 사람을 위해서 설명해 준다는 것은 쉽지 않다고 생각하는데 리차드 파인만이 "쉽게 설명할 수 없다면 그에 대한 지식이 모자라다는 것"이라고 말한 것을 증명이라도 하듯이 토비님은 스프링의 구현기술들을 완전히 이해하고 있다는 것이 느껴질 정도로 쉽고 친절하게 가르쳐 주고 있습니다. 그래서 스프링에 대한 공부는 이 책 한권이면 되겠다고 느껴질 정도라서 이 책에서 말하는 것만 연습해서 제대로 자신의 것으로 만들기만 해도 실력이 크게 향상 될 것 같습니다. 사실 이런 수준의 노하우를 5만원 정도에 얻을 수 있다는 건 거의 공짜가 아닌가 싶습니다. 책을 3년정도 쓰신 것으로 알고 있는데 이정도의 책이 나오려면 그만큼에 노력이 드는거구나 하는 생각이 듭니다.(기술에 대한 얘기는 아니지만 토비님의 "토비의 스프링 3이 나오기까지"시리즈를 읽어보시는 것도 재미있습니다.)

또한 단순히 기술을 가르치는 것 이상으로 개발자의 방향을 제시하시고자 하는 부분도 상당히 맘에 들고 있습니다. 스프링의 기술들을 설명하면서 책에서 전체적으로 강조하고 있는 것 중 하나가 Test입니다. 새로운 것을 배우기 위해서 하는 Learning test부터 개발에서 테스트가 얼마나 중요한지... 그리고 단순히 스프링의 API만 사용하는 개발자가 아니라 스프링의 철학을 이해하고 구현코드도 스프링의 철학을 담아서 개발하는 것이 왜 중요한지를 책 내내 강조해서 이 책을 통해서 공부하는 개발자들이 그냥 스프링만을 배우는 것이 아닌 개발자로써 배워야 하는 부분까지 포함하려고 했다는 부분에서 책을 읽는 내내 많은 생각이 들었습니다.

그전까지는 스프링은 왠지 막막하게 느껴졌었는데 그래도 한번 보고 나니까 스프링이 추구하고자 하는 철학을 상당부분 이해할 수 있게 되어 앞으로 학습의 방향을 잡는데 많은 도움이 되었습니다. 기술 서적들을 보면서 한번더 보면 좋겠다하는 책들이 좀 있기는 한데 이 책은 그것 이상으로 느껴집니다. 개인적으로 올해 반드시 한번 이 상은 더 보면서 직접 코딩해보면서 제것으로 만들어야 겠습니다. 



[EP]OKJSP 10주년 기념 세미나 후기..

출처 : Outsider's Dev Story https://blog.outsider.ne.kr/

지난 3월 26일에 OKJSP 10주년 기념 세미나가 정보통신산업진흥원 5층에서 열렸습니다. 신입시절에는 하루에서 수차례 들락거리면서 글을 보고 세미나에 참가하고 그랬던 OKJSP였는데 어느새 10년이나 되었습니다.(지금은 하루에 한번정도만 가는것 같습니다. 워낙 읽을 글이나 돌아볼 사이트가 많은 지경이라서요. ㅎ) Kenu님하고의 친분(친한척!!)도 이당시에 세미나를 왔다갔다 하면서 자주 뵙게 되어 쌓게 되었습니다. 회사도 10년을 운영하기가 쉽지 않은데 커뮤니티를 10년동안 운영한다는 것은 정말 보통일이 아닌것 같습니다.(요즘은 기술에 대한 논의 보다는 개발자의 삶을 나누는 커뮤니티라는 느낌이 더 강하기는 한데 그런 점이 저는 종종 안락함을 주기도 합니다. ㅎ) 


사실 오전에도 봄싹 스웨거가 있어서 시간이 약간 겹치기는 했는데 Kenu님과의 친분도 있고 해서 참가를 했습니다. 약간 늦어서 키노트세션인 OKJSP 커뮤니티 이야기는 듣지 못했네요 ㅎ java 커뮤니티이기는 하지만 최근에 Kenu님이 모바일쪽에 집중하셔서인지 발표세션도 대부분 모바일쪽이 치중되어서 이루어졌고 대부분 키노트를 사용한 화려한 플라이드가 인상적이었습니다. 발표자료는 여기에 올라와 있습니다. 대부분의 세션이 20~30분 정도였기 때문에 기술적으로 깊게 들어가지는 않았습니다.

MobileWeb(SenchaTouch, jQueryMobile) - 안광운
모바일웹에 대한 세션이었고 안광운님이 발표 처음에 말씀하신 것 처럼 모바일얘기가 요즘은 너무 많아서 좀 지겨운 주제일수도 있기는 한데 그만큼 모바일이 중요해 지고 있다는 의미이기도 하다는데는 동감을 합니다. 전체적으로는 MobileWeb에 대한 간략한 개요정도였습니다.


HTML5는 HTML, CSS, JavaScript의 기술 모음이고 어렵게 생각할 필요 없이 현재 사용중인 HTML의 발전된 형태이고 개발자들이 보통 CSS를 많이 어려워하는데 공부해 두면 좋다고 하셨습니다. 과거에는 iUijQTouch를 많이 썼지만 이젠 모두 개발이 중단되었고 jQueryMobile이나 Sencha Touch를 주로 사용하는 분위기이고 삼성의 Bada플랫폼에 최적화된 Rijj-js도 있습니다.

jQueryMobile같은 경우는 아주 쉬워서 누구나 일주일정도만 만지면 괜찮은 퀄리티로 만들어낼 수 있을 정도이고 지원하지 않는 브라우저에서는 기능을 줄여서 제공하는 점진적 향상, 단계적 기능 축소가 인상적인 기능이었습니다. JQM으로 만들어진 페이지들은 jQuery Mobile Gallery에서 보실 수 있습니다. Sencah Touch로 만들어진 잡지데모가 인상적이었는데 어떤 데모인지는 못찾겠네요 ㅎ

SVG with Raphael - 김종광
제가 알기로는 지난달 WebDevMobile에서도 발표된 내용으로 알고 있는데 그때 못봐서 아쉬웠는데 이번기회에 듣게 되어 좋았습니다. Raphael은 SVG(Scalable Vector Graphics)를 위한 라이브러리이고 SVG는 익히 알려진대로 벡터(Vector)그래픽입니다. 비트맵 그래픽은 2D는 Canvas라고 부르고 3D는 WebGL이라고 부르고 있습니다. 벡터그래픽은 VML과 PGML인 98년에 만들어지고 SVG는 2001년에 만들어졌습니다. 그뒤 PGML은 SVG로 대체되었지만 VML은 IE 6,7,8에 남아있는 상황입니다.

 

벡터그래픽이기 때문에 아무리 확대를 해도 그 모양이 깨지지 않으면 Raphael 사이트도 모든 이미지를 SVG로 그려주고 있으며 Raphael은 VML과 SVG와 JavaScript를 합친 라이브러리이기 때문에  IE6까지 폭넓게 지원해주고 있습니다. 이번 세미나에서 가장 인상적인 세션이었고 Raphael은 이름만 알고 있었는데 사용법도 아주 간단하게 느껴져서 조만간 좀 써봐야겠다고 생각하고 있습니다.

하이브리드 앱 - 강화영


발표자료를 JQM으로 만든 부분이 흥미로웠는데 모바일웹과 네이티브앱의 이점을 둘다 살려서 최근에 발전하고 있는 하이브리드앱에 대한 내용있었습니다. 가장 많이 알려진 PhoneGapTitanium과 함께 Rhodes와 KTH에서 개발해서 얼마전에 런칭한 Appspresso에 대해서 소개했습니다. 기술적인 내용을 다뤘다기 보다는 각 플랫폼에 소개와 간단한 특징비교정도였습니다.

프로그래머가 되는 방법 - Kenny(강윤신)
시간표에는 착하게 살자라는 제목으로 나왔지만 이 세션은 "How to be a Programmer"라는 글에 대한 내용이었습니다. (유명한 글이라더군요. 저도 날잡아서 읽어봐야겠습니다. 다행히도 KLDP에서 번역해놓은 문서가 있습니다.) 아주 예전에 몇번 본적은 있었는데 상당히 어조가 강한 세션이라서 듣는데 개인적으로 약간 거북함이 있었습니다. 세션 초반에 미리 자기 스타일로 그냥 얘기하겠다고 얘기하시기도 했기에 어느정도 예상은 했지만 약간 윗사람이 아랫사람한테 뭐라 하듯이 하는 어조라서 좀 거북함이 있었고 말하는 부분에서 개발자의 현실이 틀린말은 아니라는 부분에서 다시 거북해졌습니다. (개인적으로는 개발자는 약간의 까칠함정도는 있어야 한다고 생각하는 편인데 제가 가지지 못한 부분이라서 약간은 부럽(?)기도 했습니다.)


전체적인 내용은 문서를 읽어보는게 나을것 같기 간략이 보면 아래와 같습니다.

  • 디버그 배우기 - 디버그 못하면 프로그래머라고 하지 말자
  • 요즘 개발자 너무 착하다. 원래 좀 까칠해야 한다.
  • 디바이드앤 퀀커 - 문제공간을 나눠서 디버그하는 방법이고 알고리즘을 직접 구현할 필요는 없다 일반적으로 라이브러리를 쓰는게 낫지만 디바이드앤퀀커를 하려고 알고리즘을 공부하는 것이다.
  • 오류를 제거하는 방법
  • 로그를 이용해서 디버그하는 방법
  • 성능문제를 이해하는 방법
  • 가끔씩 생기는 버그를 다루는 방법
  • 문자열!(그리고 정규식) - java면  java.lang.String, commons.String을 달달 알고 js는 문자열관련을 외워라
  • 프로그래밍 시간을 추정하는 방법
  • 정보를 찾는 방법
  • 사람들을 정보의 원천으로 사용하는 방법 - 아는 사람들에게 물어보는게 제일 빠르다
  • 막힐때는 잠깐 쉬어라
  • 집에 갈 시간을 인지하는 방법
  • 게으름! - 약간의 게으름은 필요하다

안드로이드 프로그래밍 - 진성주
안드로이드 프로그래밍의 저자이면서 OKJSP의 안드로이드 프로젝트를 진행하신 진성주님의 세션이었습니다.(발표듣다보니 이미 저랑 트위터 팔로우 관계.. ㅎ) 사실 저는 작년에 잠깐 안드로이드를 만져보고 그뒤로는 안드로이드 개발을 하고 있지는 않고 오히려 관심이 있다면 iOS쪽으로 관심이 넘어간 상태입니다. 이 세션은 그냥 안드로이드 개발에 대한 설명이라기 보다는 안드로이드개발을 공부하기 위해서 Reverse Engineering을 택해서 하는 방법에 대한 설명이었습니다. 이부분은 공개된 소스가 상대적으로 부족한 iOS에 비해서 오픈소스가 주류를 이루고 있는 안드로이드의 특징을 잘 이용한 방법으로 실제 개발을 하려면 책으로 공부한 예제외에도 정말 많은 부분이 필요한데 그부분을 Reverse Engineering으로 접근한 점은 저는 생각지 못했던 부분이라 상당히 인상적이었습니다.


Google codeGoogle code search를 이용해서 소스를 검색할 수 있고 apk로 패키징이 되어 있는 앱의 경우 ApkTook을 이용해서 apk파일을 dex(Java의 jar와 같은)와 리소스로 분리해내고 dex2jar를 이용해서 dex를 jar로 바꾼 다음에 자바 디컴파일러인 JD로 .class파일을 .java로 디컴파일해서 소스를 확인해서 필요한 기능을 어떻게 구현하는지 확인해 봄으로써 아주 퀄리티 좋은 예제의 소스를 참고해서 공부를 할 수 있습니다.

epilogue
OKJSP의 10년이라는 세월처럼 그동안 Kenu님이 얼마나 폭넓게 활동을 하셨는지가 많이 느껴지는 세미나였다고 생각합니다. 왠만한 상업적 컨퍼런스에 부족하지 않을 정도의 장소와 경품등이 지원되었던것 같습니다.(그 많은 경품중에 단 한개도 안걸리다니. ㅡㅡ;;;) 기술적으로 많은걸 배울수 있었던 세미나라기 보다는 많은 사람들을 만나고 10주년을 축하하는 즐거운 자리였던것 같습니다. ㅎ OKJSP의 10주년을 축하합니다. 20주년 세미나를 기대하겠습니다. ㅎ


세미나 사은품으로 나눠준 마이크로소프트웨어 잡지랑 OKJSP 파우치와 메탈스티커입니다. ㅎㅎㅎ 나름 레어네요 ㅎㅎ



[Book] 자바 개발자도 쉽고 즐겁게 배우는 테스팅 이야기..

출처 : Outsider's Dev Story https://blog.outsider.ne.kr/

자바 개발자도 쉽고 즐겁게 배우는 테스팅 이야기 - 8점
이상민 지음
한빛미디어

사실 이 책의 제목만 보았을 때는 책의 내용이 잘 감이 오지 않았습니다. 테스팅이라는 것 자체의 개념이 워낙 넓은 데다가 개발자가 보는 테스트와 QA가 보는 테스트의 관점이 상당히 틀리고 제가 있는 곳에도 QA가 있지만 업무보면서 느낀 QA의 테스트 범위와 다른 외부에서 만난 QA들의 테스트의 범위도 상당히 다르고 접근하는 지식의 범위도 크게 달랐습니다. 이렇게 테스트라는 것 자체의 범주가 너무 크긴 합니다.

제목만 보고 어떤 테스팅인가 하는 궁금증이 있었는데 막상 책을 보고 나니 이 책에서 얘기하는 테스팅은 개발자관점에서 알아야 할 모든 테스트에 대해서 얘기해주고 있었습니다.(제목이 얘기하는 그대로라고 할 수 있습니다.) QA관점에서의 테스트와도 겹치기는 할텐데 QA관점의 테스트가 어떤건지 저로서는 잘 모르겠지만 개발자에게 필요한 모든 테스트는 여기에 다 담겨있다고 할 수 있습니다.

테스트라는 것을 전체적으로 보면 개발자가 개발을 하면서 JUnit으로 단위테스트를 하고 그렇게 만들어진 웹페이지를 Selenium을 통해서 UI테스트를 하고 HttpUnit을 통해서 웹리퀘스트를 테스트하고 PMD나 FindBugs같은 툴을 이용해서 코드를 분석합니다. 그리고 Hudson을 가지고 개발한 소스를 지속적으로 통합하고 성능및 보안테스트를 거친 다음에 FitNess를 이용해서 인수테스트를 거칩니다. 이 모든 과정은 개발자가 개발을 한 뒤에 프로젝트를 완료해서 고객에게 넘길 때까지 필요한 모든 테스트과정(제가 아는 범위내에서는)이 다 담겨있다고 할 수 있습니다.

사실 이런 테스트들은 하나하나가 책 주제로 될 정도로 많은 내용이기 때문에 이 책 한권에서 전체적인 사용법을 모두 알려주길 기대하는 것은 좀 무리가 있다고 생각됩니다. 대신에 이 책은 개발과정중에서 테스트가 이뤄지는 전체 흐름을 잡기에 아주 좋다고 생각됩니다. 유닛테스트나 회귀테스트등 개발을 공부하면서 많은 테스트들에 대해서 듣게 되지만 전체적인 개념을 잡는데는 어려움이 있었는데 이 책을 통해서 어느 테스트가 언제 왜 필요한지를 설명해 주기 때문에 이해하기도 쉽고 프로젝트가 일반적으로 개발되는 흐름에 따라 설명해 주고 있기 때문에 굳이 외우려고 하지 않아도 받아들이는데 어려움이 없는 것 같습니다. 각각의 테스팅에 대해서 구체적인 사용법을 알려주는 것 보다는 전체적인 테스팅에 대한 개념을 알려주는 책이라고 생각하고 있고 전체적인 흐름에 대한 개념을 이해할 수 있어서 각 세부테스팅에 대해서 공부할때도 이해하는데 도움이 될 것 같습니다.

단순히 개념만 설명하는 것은 아니고 간단하지만 설치와 설정을 통해서 사용해 볼 수 있도록 구체적인 설명도 어느정도 해주고 있어서 쉽게 따라해 볼수 있습니다. 물론 실제 업무에 적용해서 어려가지를 해보려면 추가적으로 많은 공부를 해야겠지만요. 저는 뭔가 공부할 때 전체 개념을 잡고 들어가야 이해가 빠르게 되는 편이라 그렇게 느낀것일 수도 있기는 한데 약간은 어려울 수도 있는 테스팅에 대해서 쉽게 설명해 주고 있어서 개념을 잡는데 많이 도움이 된 책이었습니다.



[EP]P-camp와 대안언어축제 2011, "다시 돌아온 대안언어축제!" 후기..

출처 : Outsider's Dev Story https://blog.outsider.ne.kr/

지난 12일과 13일 사이에 3년만에 열린 P-camp와 대안언어축제 2011, "다시 돌아온 대안언어축제!"를 갔다가 왔습니다. 한번도 안가본 행사라 행사에 대해서는 자세히 몰랐지만 작년에 대언언어축제와 약간 얽힌 사연[글은 읽었지만 지극히 개인적인 글이라 안가져왔었음..]이 있는 관계로 대기자에서 올라가자마자 바로 신청해서 참가했습니다. 개인적으로는 행사 바로 전날 몇 년만에 올까말까한 정신적 타격을 입었던 관계로 사실 참석자체를 포기할까도 당일 아침에 생각했었지만 지친 몸을 이끌고 참석은 했는데 좀 멍한 상태라 많은 집중과 적극도는 떨어진 상태였습니다. 이 후기도 개인적인 느낌이기에 그런 부분에 대한 영향이 꽤 있다고 할 수 있습니다.

첫째날 시간표


아이스 브레이킹 "3Keywords" - 박준표
사실 낯가림이 심한 저는 아이스 브레이킹이라는 행사를 그다지 좋아하는 편은 아닙니다. 3Keywords라는 방식으로 진행된 이번 아이스 브레이킹은 꼭 개발과는 관계가 없더라도 "가장 좋아하는 것", "최근에 새로운 것을 시도한 것", "올해 이루고 픈 목표"라는 3가지에 대한 키워드를 종이에 적고 3분간 앞에 사람과 얘기하면서 키워드에 대한 부가정도를 상대카드에 적어주는 방식입니다. 3분이 지나면 옆으로 이동해서 다른 사람과 얘기를 하게 됩니다. 너무 길지 않은 짧은 시간인 데다가 얘기할 키워드도 있기 때문에 상당히 즐겁게 얘기할 수 있었던 시간이었습니다.

 

10명 이상 얘기하고 나니 좀 힘들기는 했지만 시간이 짧아서 낯가리고 뭐할 틈도 없었던데다가 무얼 얘기해야할지에 대한 고민이 없다보니 아이스 브레이킹으로는 괜찮은 방식이라는 생각이 들었습니다. 어설프게 아이스 브레이킹이라며 같은 테이블에 있는 사람과 얘기해 보라는 등의 방식보다는 훨씬 분위기가 좋아지는 것 같았습니다.

대안언어배우기
오후의 세션은 4개의 트랙으로 진행이 되었는데 4시간 전체로 진행되는 대안언어배우기라는 트랙과 프로그래밍 입문하기1, 프로그래밍 입문하기2, SW공학 둘러보기 트랙으로 진행이 되었습니다. 다른 트랙에 엄청 듣고 싶은 세션이 없기도 했고 대안언어축제에 참가한 목적중에 하나가 대안언어를 좀 배워보려는 것이었기 때문에 대안언어배우기 트랙을 선택했습니다.

     

대안언어배우기 트랙에는 LISP, Smaltalk, Haskell, Objective-C, Orca, Erlang, Lua, Ruby, R/Netlogo등의 언어가 있었고 여기서도 선택을 해야 했습니다. ㅠㅠ 시작할때 각 언어별로 발표자가 나와서 5분정도씩 언어 및 세션에 대해서 설명하는 시간이 있었고 그전에 어떤 언어를 들어야 할지 맘의 결정을 하지 못한 저로써는 이시간에 정해야 했었습니다.

   

Lua vs JavaScript - 아샬
시작할 때 발표하는 것을 보고 확 맘을 정해서 선택을 했었지만 개인적으로는 별로 만족스럽지 못했습니다. 객체에 대한 부분과 Duck Typing에 대한 얘기를 하셨었고 처음에 보여주었던 Lua의 코드가 JavaScript와 너무나 유사한 점이 흥미로워서 들었습니다만 기대했던 진화하는 객체에 대해서 좀 알아보려는 것과는 다르게 프로토타입기반 언어의 기초적인 내용정도에 그쳤었습니다. 처음 보고 흥미로웠던 Lua의 코드도 몇번 보다보니 그냥 JavaScript와 거의 동일하게 동작하는구나의 이해정도로 관심이 멈춰버렸고 JavaScript는 그래도 많이 만져봤기에 기초적인 내용에 대한 설명은 제가 기대한 것과는 난이도가 맞지 않았습니다. 앞에서 언어에 대해서 설명할때 객체에 대해서 객체가 어떻게 진화되어 가는지에 대한 설명을 한다고 하셔서 저는 그런 부분에 대해서 기대했습니다만 실제로는 프로토타입기반 언어의 기본적인 특성에 대해서 설명이 되었기 때문에 JavaScript를 오랫동안 저로써는 관심도가 꽤 떨어질 수 밖에 없었습니다.(발표가 안좋았다기 보다는 제가 난이도 기대를 잘못한 것에 더 가까웠습니다. 프로토타입 기반언어를 처음 보신 분들은 꽤 흥미로워 하시더군요.)

Haskell
Lua vs JavaScript는 2시간으로 끝났기 때문에 함수형 언어인 Haskell로 이사를 갔습니다.(언젠가 스칼라를 보면서 헤매고 있을때 함수형 언어를 이해하려면 하스켈을 봐라라는 글을 본 기억때문에 한번 구경해 보고 싶었습니다.) 2시간으로 끝났던 Lua vs JavaScript에 비해서 하스켈은 총 4시간을 이어서 진행했는데 초반 2시간을 빼먹고 후반 2시간만 듣게 된 저로써는 처음에 문법이 좀 생소해서 이해하기가 어려웠습니다. 그래도 작년에 Scala를 한 덕인지 이런 저런 특성을 보다보니 Scala에도 저런거 있는데 하면서 어느정도 이해를 할 수는 있었지만 아무래도 처음의 기초적인 설명을 빼고 듣다보니 이해하는데 한계가 있었습니다.

한꺼번에 여러 세션이 진행된 행사이다 보니 당연하겠지만 듣지 못한 세션에 대해서 아쉬움이 남을 수밖에 없었습니다.(물론 반대의 선택을 했을때도 마찬가지의 결과일수도 있겠지만요.) 축제 전에는 사실 LISP까지 관심을 가지게 되면 너무 많은 곳에 관심을 가지는 결과가 오게 될까봐 약간 의도적으로 LISP는 빼고 생각했는데 결과적으로 이도저도 안된 결과가 나오다 보니 LISP나 4시간 동안 진득하니 듣거나 하스켈만 들을걸 하는 생각이 들었습니다. 옆에서 보니 커먼리습과 클로저를 가지고 잘 설명하고 있는것 같았고요.

Integrated Large Group Method를 이용한 unconference - 미디어아티스트 최승준
LETS, OST, WORLD CAFE로 진행이 되었습니다. LETS에 대해서는 LETS에 대한 소개동영상을 보시면 이하하기가 쉬울 겁니다. 좀더 구체적으로 말하면 행사장 뒷편에 붙어 있는 판에 포스트잇을 이용해서 "알려주고 싶은 것/알려 줄 수 있는 것"에 대해서 적고 자신이 누군지 연락할 트위터 정보등을 적어서 붙히고 또 다른 판에는 "배우고 싶은 것/누가 알려줬으면 좋겠는 것"에 대해서 적습니다. 이 정보를 통해서 서로 연락을 취해서 성사되면 "약속이 성사된 배움들"로 종이를 이동하고 몇시에 어느곳에서(이날은 테이블에 번호를 매겨서 번호를 표시) 할 것인지를 적고 정보를 공유하는 자리를 만들어서 진행이 되었습니다. OST는 배움은 아니지만 이야기해보고 픈 주제들에서 적고 사람들이 모이면 진행이 되고 World Cafe는 좀더 심도있는 토론에 대해서 진행하기 위해서 열립니다.

     

사실 이런 방식의 행사자체가 처음이라 잘 이해가 되지 않았었습니다. 시간표에 unconference라고 나와있었지만 어떤 형식의 행사인지도 몰랐고 최승준님이 나와서 오전에 한번 설명하고 저녁먹기 전에 다시 설명을 했지만 2번 설명을 들으면서도 저걸 왜 설명하는지 제대로 감을 잡지 못했고 막상 unconference가 시작되었을때도 정확히 어떻게 배움이 성사가 되는거고 진행된다는 것인지 잘 몰랐습니다. 이런 식의 행사가 제대로 되려나 싶은 걱정도 좀 있기는 했지만 처음에는 다들 망설이고 고민하고 있었지만 시간이 좀 흐르자 다양한 자리에서 다양한 주제에 대한 자리들이 열렸고 상당히 자유롭고 활발한 모임이 구성되었습니다.

   

저는 "Github로 오픈소스 프로젝트에 참여하기"를 듣고 대충 여기저기 기웃거리면서 구경다니다가 펭귄너구리님의 적극적인 권유로 1월에 봄싹에서 발표하려고 준비했던 자료를 가지고 node.js에 대해서 LETS를 진행했습니다. 초반에는 몇명이서 시작했는데 곧이어 많은 사람들이 모여서 긴장하기도 했습니다. 막상 이런 자리를 열고 나니 참으로 다양한 관심사(개발뿐만 아니라 화성학이나 그림그리기 같은 다양한 주제에 대한 LETS가 진행되었습니다.)에 대해서 잘 아는 사람들이 많구나 싶기도 했고 초반에 LETS를 아주 어렵게 생각했는데 나도 나눌수 있는 거리가 약간은 있구나 싶은 생각이 들었습니다.

이번 대안언어축제에서 저로써는 가장 인상적인 행사였고 즐거운 자리였지만 2시간정도 진행된 이후에야 맨앞에 스크린을 통해서 어떤 자리에서 어떤 행사가 진행되고 있는지를 표시했는데 이런 부분이 초반부터 진행되었다면 진행이 더 순조로왔을꺼라는 생각이 들었습니다. 사실 관심이 있던 주제들도 시작시간을 못 맞춰서 또는 이미 끝난뒤에 그런 주제가 있었다는 것을 알게 되었던 경우가 좀 있었습니다. 이런 자리가 처음인 사람들에게는 초반에 어떤 행사인지를 파악하는데 시간이 좀 걸리기도 했고요.


둘째날 시간표


재미있는 튜토리얼

클린코드 - 이준하
하룻밤을 보내고 둘째날 오전은 재미있는 튜토리얼이라는 행사로 진행이 되었습니다. 여러가지 행사가 있었지만 저는 클린코드를 들었는데 제가 기대난이도를 너무 높게 잡았는지 기대만은 못한 자리였고 더군다나 세션진행자체가 듣기에 편한 환경이 아니라서 더욱 그랬습니다. 아마도 제 예상으로는 발표하는 환경에 대한 정보가 발표자에게 정확히 공유가 되지 않아서인 것으로 생각되는데 프로젝터같은 것이 아닌 일반 PC모니터로 프리젠테이션을 진행했는데 한 20여명정도가 모이다 보니 뒷쪽에 앉아있던 저로써는 화면의 글씨가 제대로 보이지 않았고 말도 아주 집중하지 않으면 잘 들리지 않았던 탓이 상당히 있었습니다.(물론 이부분은 제 개인적 사정으로 지속적인 집중을 하지 못했던 이유도 있습니다.) 거기에 작년에 스터디했던 엉클밥의 클린코드에 나온 내용정도로 느껴졌습니다.

둘째날 오후에는 Ignite 프리젠테이션 스타일로 20장의 슬라이드를 15초씩 진행하는 방식으로 자유주제로 각 참가자가 발표하는 자리가 있었지만 체력적 고갈로 인하여 점심이후에 집으로 귀가를 했습니다.

Epilogue
행사에 대한 전체적인 느낌은 많은 세미나나 컨퍼런스등을 참여해봤지만 기존에 참여하던 것과는 성격이 많이 다르다는 느낌이었습니다. 대안언어축제라는 이름에서 축제라는 단어가 들어있듯이 개발자 혹은 개발에 관심이 있는 사람들이 모인 축제에 가깝다는 생각이 들었고 주제가 기술에만 한정되지 않아서 더욱 그렇게 느껴졌습니다. 사실 저는 대부분의 관심사가 기술에만 집중되어 있었고 그렇기에 이번 행사에서도 기술에 대해서 배우고 익히는데만 관심을 가지고 있었는데 좀 다양한 주제에 관심을 가지고 즐겼더라면 훨씬 즐거운 시간을 보냈을꺼라는 생각이 들었습니다.

너무 기술에 대해서만 들으려고 하다보니 오히려 대안언어축제의 성격에 맞추지 못해서 우왕좌왕하게 된 느낌이 있었습니다. 그리고 기술에 대한 세션에 대해서도 발표자라는 입장에서 보면 이런 식의 불특정다수를 대상으로 하는(특히 기술의 대한 관심사도 제각각인)  기술 세션에 대해서는 당연히 세션의 난이도를 초심자를 대상으로 할 수 밖에 없는데 제가 느끼기에는 대안언어라는 행사 자체를 약간은 Geek스럽고 수준이 높은 행사라고 무심코 느끼고 있었기 때문인지 그런 부분은 간과해서 세션에 대한 난이도 예상을 제대로 하지 못했던 것 같습니다.

     

이번 행사에서는 행사장 뒷편에 TEST와 FEEDBACK이라는 판이 붙어있어습니다. TEST는 세션을 듣기 전에 어떤 내용을 기대하는지 어떤 것을 배우기 원하는지를 적어서 발표자 혹은 진행자가 참고할 수 있게 하는 TEST CASE같은 역할을 하고 FEEDBACK은 행사후에 소감을 적어서 발표자에게 피드백을 주는 공간입니다. 이 방식은 전에는 보지 못했던 지라 꽤 인상적인 부분이었는데 초반에 한번 설명한 뒤에는 지속적으로 이부분에 대해서 적극적인 홍보가 좀 부족해서 시간이 갈수록 참여가 좀 적어지지 않았나 하는 생각을 하고 있습니다.

작년에 행사가 무산되었을때는 정말 많은 실망을 하기는 했고 그뒤에도 여러번 연기되는 것을 계속 보고 있기는 했었지만 행사에 대한 진행은 상당히 만족스러운 수준이었습니다. 불만하나 없을 정도로 완벽한 진행이었다는 얘기는 아지만 이정도 규모에 행사를 프로들이 진행한 것도 아닌 것을 감안하면 적당히 아마추어 냄새가 나면서(좋다는 얘기입니다.) 전체적으로 큰 문제 없는 원활한 진행을 보여주었다고 생각됩니다. 이번에 3년만에 열린거라 언제 또 열릴지는 모르겠지만 다음 대안언어축제가 열리면 좀 좋은 컨디션으로 다시 참여해 보고 싶습니다.

행사가 끝나고 와서 온라인으로 펭귄너구리님이 행사에 대한 후기를 채팅으로 공유해 보자는 제안을 하셔서 약간은 어색한(?) 인터뷰같은 성격으로 온라인상에서 진행이 되었습니다. 이 내용은 펭귄너구리님의 블로그에 올라와 있습니다.