앞에 글에서 약간 얘기했지만 Lift를 사용하려고 공부할 리소스를 찾아왔는데 Wiki는 약간 부실한 감이 없지않아 있었습니다. 다행히도 무료로 제공되는 Lift책들이 있었는데 Exploring Lift와 Simply Lift였습니다. 아무것도 모르는 입장에서 어느 책이이나 비슷했겠지만 아무래도 만든 사람이 제일 잘 알꺼라는 생각에 Lift를 만든 David Pollak(보통 DPP라고 쓰더군요. 레일즈를 만든 David Heinemeier Hansson이 보통 닉을 DHH라고 쓰는데 그 영향일까요? ㅎㅎ)이 쓴 Simply Lift를 선택했습니다.
약간의 잡설...
Scala는 국내 자료가 부족하기 때문의 Scala에 대한 대부분의 공부리소스는 영문자료에 의존하고 있습니다. 전에는 Programming Scala를 보고 그 다음에는 Scala By Example를 봤습니다만 이 두가지를 공부하면서 좀 느껴진 봐가 있었습니다. Programming Scala를 공부할때는 너무 모르겠어서 거의 모든 챕터를 번역하듯이 공부하고 정리하면서 봤고 Scala By Example를 볼때는 그냥 죽죽 읽어내려가면서 봤습니다. 물론 투자시간 대비가 전자가 월등하게 크기에 당연한 결과이지만 영어가 짧다보니 그냥 속독(영어를 잘 못한다는 기준하에서)처럼 읽어버린 문서는 그자리에서는 좀 이해된것 같았지만 결국 제것이 되지 못했고 이미 본 내용도 영문원서로만 남아있다보니 나중에 다시 찾아보기도 쉽지 않았습니다.
그리고 그냥 리딩만 하다보니 해석이 잘 안되거나 개념이 잘 이해안되는 부분을 읽을때는 더욱 집중력이 떨어져서 상당히 띄엄띄엄 읽게된 저를 볼 수 있었습니다. 번역을 하면서 읽었던 Programming Scala의 경우에는 번역을 위해서 따로 문서에 적어나가는 과정을 통해서 반강제적으로 집중력을 유지할 수 있었고 시간이 지나서 다시 잃어버린 내용들도 번역하고 정리했던 내용들이 있기에 다시 찾아보고 어떤 내용이었는지 찾아볼 수 있었습니다.(사실 내용이해보다 번역에 많은 노력이 들어간 탓인지 어라? 이런 내용을 내가 정리했었어?에 더 가깝습니다.) 결국 지금에 와서 생각해 보니 시간투자가 힘들어도 번역작업이 들어가는게 이왕 공부하는거 훨씬 남는 생각이 들었습니다.
그래서 Simply Lift는 좀 정리를 할 수 있는 형태로 공부하자고 맘을 먹었는데 문서를 펄치니 이 책은 CCL을 따르기 때문에 "변경금지(No Derivatives)"가 포함되어 있었습니다. 흠.. 이왕 시간들여서 번역한 부분은 공유도 하고 싶고 해서 David Pollak한테 메일을 썼습니다. "전체내용을 다 할건 아니지만 Simply Lift를 공부하면서 번역한 부분은 블로그에 올리고 싶은데 가능한가?"를 물었습니다. 자기전에 메일 보내고 잤더니 아침에 답장이 와있었습니다. 오옷!! 흔쾌히 좋다고 하면서 작업하면 Lift 그룹스에 공유만 해달랍니다.
기뻐하다가 제가 보낸 메일을 보니 큰 실수가 있었습니다. 영문 메일을 쓰다보니 작문에 고민을 하면서 쓰다가 "라이센스를 무시하고 싶지 않다"고 쓴다는게 "라이센스를 무시하고 싶다"고 써놨더군요. 아놔!! "I really want to ignore your license of Simply Lift." 이 문장인데 사실 not을 want에다가 붙혀야 하나 ignore쪽에 붙혀야 하나를 고민하다가 결국 아무데도 안붙히고 그대로 보내버렸습니다.(창피해!) ㅠㅠ 다시 답장으로 미안하다고 실수였다고 하니까 바로 영어가 자국어가 아닌걸 알아서 무슨 의미인지 알았다고 괜찮다고 하더군요. 사진은 좀 무섭게 느껴졌는데 친절하더군요. Lift와 dpp에 대한 호감이 급격히 올라가서 원래 공부하면서 조금 인상깊은 부분만 정리하려고 했으나 올라간 호감덕에 전체를 다 해보자 하는 생각으로 맘을 바꾸었습니다.
물론 이 번역은 번역을 위해서 하는 것은 아닙니다. 앞에서 얘기한대로 Lift를 공부하면서 좀 더 집중해서 Simply Lift를 읽기 위해서 한 작업이기 때문의 번역의 품질은 좋지 않습니다.(소위 발로 번역했습니다.) 의역을 한 부분도 있지만 대부분은 직역이고 문체를 다듬기 위한 검토작업 같은 건 없었기 때문에 가능하면 그냥 원서를 보기기를 추천드립니다. 이 내용은 Simply Lift의 2011/ 2 / 6일자 업데이트 버전 20011/4/5일자 업데이트 버전(작업완료전에 새버전이 나와서 갱신했습니다.)에 기초하고 있습니다.
원문 : http://simply.liftweb.net/index-Chapter-1.html#toc-Chapter-1
Part 1 : The Lift Web Framework
1장
소개
Lift 웹프레임워크는 안전하고 상호작용하고 확장성있는 웹애플리케이션을 다른 어떤 웹프레임워크보다 쉽게 작성할 수 있는 웹애플리케이션 개발자도구를 제공합니다. 이 책의 Part 1을 읽고 나면 Lift의 핵심개념을 이해하고 Lift 애플리케이션을 작성할 수 있게 될 것입니다. 그러나 어떤것이든지 연습은 중요합니다. Lift와 Scala를 4년동안 사용하고 있는데 매주 언어와 프레임워크에 대해서 새로운 것을 배우고 있습니다. 종착점 보다는 방향과 탐사로 Lift를 고려해보세요.
“이봐 데이비드 그만 투덜거리세요. 나는 Rails, Spring, Struts, Django를 사용하고 있고 Lift를 아주 빠르게 시작하기를 원합니다.” 13장 From MVC를 보세요.
Lift는 Scala 프로그래밍 언어로 만들어졌습니다. Scala는 JVM상에서 동작합니다. Lift 애플리케이션은 WAR파일로 팩키징되고 J/EE 서블릿이나 서블릿필터로 동작합니다. 이 책은 성공적으로 Lift 웹애플리케이션을 작성하는데 필요한 핵심개념을 설명할 것입니다. 이 책은 서블릿과 서블릿 컨테이너, Scala 언어(Beginning Scala의 1-6 챕터는 언어데 대한 좋은 기초를 설명해 주고 있습니다.), 빌드툴, 프로그램 에디터, HTML이나 JavaScript를 포함하는 웹개발에 대한 지식이 있다고 가정하고 있습니다. 게다가 이 책에서는 퍼시스턴트는 설명하지 않을 것입니다. Lift는 관계형/비관계형 데이터저장소에 대한 추가적인 모듈을 가지고 있습니다. Lift는 어떻게 객체가 주소공간으로 할당되는지로 구별하지 않습니다. Lift는 당신이 바라는 어떤 이전 방법으로도 모든 객체를 다룰 수 있습니다. JVM에서 데이터를 유지하기 위한 방법에 대한 많은 리소스들(Exploring Lift 포함)이 있습니다.
Lift는 대부분의 웹프레임워크와는 다르고 Lift의 이 다른 점들은 당신이 기존의 웹프레임워크의 MVC에 친숙하다면 도전과 혼란을 줄 것입니다. 그러나 이 다른점들은 인터렉티브한 애플리케이션을 만드는데 더 강력함을 줍니다. Lift의 다른점들은 더 간결한 웹애플리케이션으로 이끌어주고 더 안전하고 확장성 있는 애플리케이션을 만들어 줍니다. 또한 Lift의 다른점들은 당신을 더욱 생산적이게 해주고 작성한 애플리케이션에 대한 유지보수를 쉽게 해줍니다. Lift의 다른점들을 이해해 보도록 하겠습니다. 그리고 어떻게 웹애플리케이션을 만들기 위한 Lift의 특징들을 잘 사용할 수 있는지 보겠습니다.
Lift는 비즈니스로직을 더 쉽게 표현하도록 추상화해주고 이러한 추상성들을 HTTP나 HTML에 매핑해줍니다. 이 접근은 HTTP와 HTML에 기반하여 추상화하고 개발자가 일반적인 비즈니스로직 패턴과 기초를 이루는 프로토콜간의 연결을 해야하는 전통적인 웹프레임워크와는 다른 것입니다.이 차이점은 의미하는 것은 애플리케이션에 대해서 더 많이 생각하고 부수적인 것들에 대해서는 덜 시간을 소비하도록 해줍니다.
저는 개념을 배우는 것을 좋아하는 사람입니다. 개념을 배우고 그것들은 현실에 계속해서 적용합니다. 이 책은 많은 개념들에 초점을 맞추고 있습니다. 당신도 개념을 배우는 것을 좋아한다면 이 책은 당신에게 잘 맞을것이고 그렇지 않다면 별로 맘에 들지 않을 것입니다.
이 책의 최신버전은 http://simply.liftweb.net/Simply_Lift.pdf 에서 PDF로 이용이 가능하고 소스코드는 https://github.com/dpp/simply_lift 에서 볼 수 있습니다.
질문이나 피드백 혹은 이 문서를 향상시킬만한 내용이 있다면 Lift Google Group에 참여해 주세요.
저는 “소매를 걷고 코드로 손을 더럽히는(roll up your sleaves and get your hands dirty with code)” 종류의 사람입니다. 그래서 간단한 채팅애플리케이션을 Lift로 만들어 보겠습니다. 이 애플리케이션은 어떻게 Lift가 다른지를 보여주는 간단한 시연을 통해서 Lift의 핵심 특징들의 일부를 보여줄 것입니다.
Smack in the face...
들켰;; ㅡㅡ;;
재밌는 에피소드네요ㅋㅋ 멋쟁이!
덕분에 전 정리된 자료로 편하게 공부를~
제루님은 그냥 원서보시는게 헷갈리지 않고 더 나으실듯... 충분히 보실수 있으시잖아요 ㅋㅋㅋ
드디어 에피소드(DPP편)가 공개되었네요. teaser만 봤는데... 직접 보니 역시 재밌어요
ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ ㅡㅡ;;
아... pdf 로 배포해줘~
그건 니가 퀄리티좋게 만들어서.. ㅋㅋㅋ
아웃사이더님...감사합니다^^
별말씀을요.. ^^
Liftweb 2.3이 나왔는줄 지금알았네요;
블로깅 하신걸 보니깐 애독해야겠군요ㅎㅎ
저는 영어 울렁증이 있어서...
아직은 2.2가 정식 아닌가요? ㅎㅎ
Lift 쓰시나봐요.. 전 이제 처음 보는거라서요 ㅎ
애독해 주시면 감사하죠. 잘못된 내용있으면 말씀해 주세요 ㅎㅎ