Rails in Real World

오늘은 교수님께 중간 검사를 받으러 간 날이다.

무엇을 검사 받았느냐...하면, 학생 연구 기간에 X-ray 필름 데이터를 정리하고 11월에 있을 학회에 낼 논문에 사용되기 위해 준비중인 기본의 필름 데이터 기록을 정리하는 것에 관한 웹 프로그램이다. 다른 프로젝트도 해야할 일이 많이 있지만, 엑셀의 한계 (오오 가로축에 넣을 수 있는 컬럼 개수가 256개밖에 안된다.) 때문에 지금 당장 데이터 정리를 못하는 것이 문제였다. 가칭 Patient Repository System이라고 하는 꿈 속의 머나먼 일일 것 같았던 프로젝트의 prototype을 만드는 셈 치고 일단 맥북을 열었다.

오늘까지 개발에 들어간 시간은 딱 3일. 첫 2일동안은 초 완전 삽질. 아아아.. "아는 것과 하는 것"의 차이는 지구에서 안드로메다 별까지의 거리만큼이나 크다는 것을 뼈저리게 느끼면서 Agile Web Development with Rails 책을 열심히도 뒤적거리면서 코드를 짰다. 예제로 나와있는 depot의 경우 단일 테이블을 이용하고 있는 데다가 2 table을 엮어서 쓰는 것을 따라하는 예제는 아직 동아리 후배들한테 강의하지 않은 상태라 내가 정확히 파악하고 있지 못했다. 그게 문제였다. 이미 읽은 부분이라 어렴풋이 되는 건 아는데 어떻게 해야되는지 정확히 손가락이 반응하지 않는 상태. 머릿속으로는 무수히 그림이 그려지는데 손가락이 뻣뻣하게 움직이지 않는 상태.

그동안 중간 중간 뒷부분을 살펴보면서 대충 내용 파악을 해두지 않았더라면 일단 프로젝트고 머고 책부터 우선 다 다시 읽어야 할 상황. 그래도 꾸역 꾸역...했다. 어쨌든. 그동안 맥북이랑 노느라 시간을 많이 뺏겼으니 일은 해야지. 하면서.. 애구.. 첫째날은 그렇게 2 table 엮는거 하다 잘 안되서 좌절하고 둘째날은 파일 업로드 하는게 마음대로 잘 안되서 또 삽질.. 오늘에 이르러서야 갑자기 "뻥~~" 뚤리면서 버그도 안나고, 이해도 잘 되고, "손가락 나는 어떻게 움직여야 하는가"를 느낀 듯한 나의 소중한 10개의 손가락들이 꼼지락 거리기 시작했다. 이제야 겨~우 2 table 갖고 노는 것에 조~금 익숙해진 듯. 그리고 파일 업로드도 해결했고. ^-^/ (가만히 생각해보니까 PHP에선 그냥 보드에서 제공하는 기능만 사용했지 내가 하드코어하게 파일 업로드 하는 걸 직접 짜본적은 없는 것 같다. modification은 가능하지만 creation이 불가능한 암울한 상태 ㅠ.ㅠ)

뭐 그 다음부터는 그럭 저럭 잘 되는 편이라 중간 중간에 문법이 막히면 Rails Framework Doc. 파일 열어다가 찾아서 쓰고.. 꾸역 꾸역 했다. 뭐랄까.. 에러를 하도 많이 보니까 이제는 당황하지 않고 "어 반가워 에러야~" 이러면서 적당히 로그파일도 뒤지는 요령도 생기고, 어디쯤에 문제가 생겨서 그런건지 파악하는 실력도 늘고..

만약 오늘까지가 기한이 아니었으면 중간에 지쳐서 딴짓하고 놀았을 듯. 아니면 "책을 다시 통독해보자!" 라면서 시간을 또 흘려보냈을 듯. Rails가 참 맘에 드는게, 어느정도 익숙해지고 나니까 정말 편하다는 것이다. Rails에는 정말 명성 만큼이나 "필요한 만큼의 편의"를 제공하는 것 같다. 너무 많은 것을 제공 한다면 그거 배우는 게 더 고역일 거 같은데, 도큐먼트를 마구 뒤적거리다보면 "오~ 이것도 있네?" "오오~ 이런것도~" 하면서 슬슬 지겨워질 만 하면 거기까지가 끝. 그 이상의 것은 내가 만들어 써야할 것. 즉, 일반적인 상황에서는 잘 안쓰이는 것이니 더 배울 것도 없고 기본만 알고 있으면 되는 것!.

처음에는 블랙박스처럼 저 Framework 안에서 도대체 무슨 일이 일어나는지, 내가 어떻게 데이터를 넘겨줘야하는지 갑갑하지 그지 없었는데, 이제는 겨~우 조금 감을 잡은 듯 하다. ActiveRecord부분은 좀 더 심도깊게 익혀야할 필요가 있는 것 같다.

역시 모든 것에는 실습이 중요한 것 같다. 후배들이 방학을 하면 책 설명하는 것은 보다 간결하게 줄이고 직접 해볼 수 있는 연습 문제 같은 것을 많이 준비해야할 것 같다. 그리고 이건 요즘 다니는 영어 학원에서 텝스 배우면서 "오~ 괜찮군~" 하고 느끼는 공부 방법인데, 정말 중요한 개념은 "남에게 설명할 수 있을 만큼" 공부하는 거다. 그냥 끄덕끄덕 정도로 이해하는게 아니다. 잘 정리해서 내가 남에게 차근 차근 설명할 수 있을 만큼 이해하는 거다. (이럴려면 이해는 물론이고 내용을 다 머리에 담고 있어야한다. 그냥 우겨넣는게 아니라 차곡차곡.) 그리고 정말 유용하고 잘 쓰일 것 같은 것은 많이 많이 외우는 거다. 100% 외울 필요도 없다. 50%라도 외우면 나는 그만큼 더 풍부한 배경 지식을 갖는다. 시험에 너무 쩔어있어서 100% 아니면 망한다는 생각에 시작도 못해보고 접는 것보다 50%라도 머리에 넣는 거다. 그렇게 지식들을 그릇에 차곡 차곡 쌓다 보면 어느 순간 그릇을 넘치게 되고, 말문이 트이고, 키보드 문이 트이고, 어느 순간 언어(영어든 Ruby든 Rails든..)가 진정 "도구"가 되는 것이 아닐런지..

프로그래밍 "언어"라는 것을 잠시 망각했다. 요즘 영어 배우는 것이 재미있던 차에 Rails도 영어처럼 배워보려고 한다. 중요한 구문들을 잘 모아서 자료로 만들어두면 좋을 것 같다.

하여간.. 어설프게 만들어간 prototype 프로그램이 교수님께는 매우 인상적이었던 것 같다. "기대한 것 이상"이라는 표현을 몇번이나 쓰시면서 "이렇게 해오면 더 욕심이 나잖아"라는 핀잔까지. ㅎㅎ 사실 이건 내 머릿속에 있던 그림의 일부분일 뿐인데, 역시 모든 유용한 아이디어는 현실 세계에 등장시켰을 때 진정한 의미를 지니게 되는 것 같다.

오늘 잠깐 또 교수님과 이야기 하면서 고쳐야할 부분을 많이 찾아냈다. 그리고 가칭 Patient Repository System에게 좀 더 강력한 기능을 줄 좋은 아이디어도 많이 생각났다. 아직은 내 손에 완벽하게 익숙하진 않지만, 내 뒤에서 나의 아이디어 실현에 큰 힘을 실어줄 Rails라는 녀석에게 고마운 마음 뿐이다. 그리고 자칫하면 초 단순 노가다 (DB 스키마 코딩만 400여줄, 계산 루틴만도 500여줄에 다달하는 반복 코딩)를 획기적으로 줄여준 TextMate. 그리고 그 이쁜 자태로 변변찮은 웹 소프트웨어를 멋지게 보여준 Safari 브라우져. 그리고 이 모든것을 뛰어난 퍼포먼스로 뒷받침한 나의 든든한 MacBook이 있어서 일렉티브에서의 웹 개발이 즐거울 것 같다.
by 정목 | 2006/07/07 00:46 | Ruby & Rails | 트랙백 | 덧글(1)
트랙백 주소 : http://niceview.egloos.com/tb/2544172
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
Commented by 호종 at 2006/07/07 01:10
오오.. 역시 실전과 후달림은 좋은 것 같아요. 의대 공부의 모든 것이기도 한 것 같은 ㅡㅡ; (내분비학 시험이 내일이라..)

레일즈 실습 기대기대 +_+

:         :

:

비공개 덧글