시시껄렁하지만 중요한, ‘자료 구조’에 대해
그동안 좀 바빴습니다. 여기저기로 외근도 나가고 밤새 코드도 짜고 하면서 2주 동안 초죽음이 됐었죠. 이젠 좀 살만하네요. 살만해지면 시시껄렁한 얘기라도 꼭 웹마스터 블로그에 써야 겠다고 생각했습니다.
누군가 웹마스터 블로그를 두고, 웹사이트 애용자들에게 ‘보너스 코너’ 같은 역할을 한다고 말씀해 주셨는데, 그 ‘애용자’분들께 작은 거라도 이야기를 해 드리고 싶은 생각이 들어서 말입니다.
1주년 페이지를 갖고 얘기를 하면 좋을 것 같네요. 일단 아래 그림을 보세요
레프트21 1주년 축하 페이지죠.(모르는 분들이 많을 텐데 사실 오른쪽 위에 있는 X 버튼을 누르면 닫히도록 설계돼 있답니다. F5 누르면 다시 나타나서 별로 효용은 없어 보이지만 말입니다. ㅋ)
이 페이지는 어떻게 만들었을까요?
1번. <레프트21> 첫 생일을 축하합니다 기사에 있는 말을 일일이 긁어서 새로 페이지를 만든다.
2번. 위 기사에 있는 걸 자동으로 긁어와서 뿌려 준다.
당연히 2번이 더 쉽겠죠? 기사 내용을 자동으로 긁어와서 위와 같은 방식으로 뿌려 주게 되면 말입니다, 기사에 인삿말이 한 명 더 들어가도 첫화면은 고칠 필요가 없어요. 자동으로 반영되니까 말입니다. 이런 걸 ‘원 소스 멀티 유스’라고 부르죠. 소스는 하나고 다양하게 활용을 한다는 겁니다. 기사에 있는 걸 그대로 긁어오는 것이기 때문에 오타의 염려도 없고, 프로그래머가 신경쓸 필요도 적어집니다. 기사는 기자들이 입력할 수도 있기 때문입니다.
프로그래밍에 몰두해 있다가 “이봐 녹풍씨~ 왕투쟁씨 축사 새로 추가했는데 그거 첫 화면에도 반영해 줘~!” 하는 소리를 듣고 첫 화면 HTML을 고치다가 흐름을 다 깨먹는 일이 없어도 된다는 얘기죠.
그런데 그동안 <레프트21>을 비롯해서 많은 일처리들이 그리 간단하게 이뤄지지는 않았습니다. 보통 이런 사고과정을 거쳤던 것 같아요.
“긁어오는 코드를 짤까 그냥 손으로 긁을까… 급하니깐 코드 짜는 것보다 긁는 게 편하겠다!”
그래요. 이런 과정을 거쳤던 것 아닐까 합니다.
당장은 이런 방식이 편할지 모릅니다. 하지만 시간이 지나면 지날수록 프로그래머는 엄청나게 성가셔집니다. 사소한 기사 수정에도 첫 화면이 연동되어 프로그래머가 HTML을 일일이 수정해야 하기 때문이죠.
사람은 기막힌 창의성이 있지만 정확도는 컴퓨터보다 떨어집니다. 멋진 그림을 그릴 수는 있지만 직선을 컴퓨터가 훨씬 잘 긋죠. 마찬가집니다.
왼손으론 전화를 받고 오른쪽 귀로는 “녹풍씨~!” 하면서 부르는 소리를 들으면서 기사 내용을 긁어 HTML로 붙여 넣다 보면 왕투쟁 씨 축사가 자유아빠 씨 축사 자리에 들어갈 지 아무도 모르는 일이죠. 사람은 정신이 없어요.
컴퓨터가 자동으로 처리하게 하면 웹마스터 입장에서도 편하고, 오류 가능성도 적어집니다. 특히 기사 하나로 여기서는 한 번에 주욱 보여 주고, 저기서는 슬라이드로 보여 주고 하는 식으로, 한 가지 소스를 다양한 형태로 활용할 때는 소스만 수정하면 모든 곳에서 다 수정이 될 수 있도록 구성하는 것이 좋겠죠. 안 그러면 웹마스터는 성가셔서 죽어버릴 겁니다. 그러면 저는 하루 종일 컨트롤 씨 컨트롤 브이 신공만 구사하다가 녹초가 될 거라구요. 옆에서는 “녹풍 씨~ 사회포럼 업데이트 해야 돼~!” 이러고(사회포럼도 자동으로 갱신됩니다.) 다른 쪽에서는 “첫 화면 축사좀 추가해 줘!”, “서점 목록좀 바꿔야 겠는데?”, “녹풍씨 회사 전화번호 잘못됐어!” 하루 종일 이런 소리만 듣게 되면 완전 죽음인 거죠. 저는 아마 아무 일도 못 할 거라고요.
그래서 강조하고 싶은 것은, 항상, 중복 활용을 하는 경우는, 이게 정말로 한 번만 HTML을 짜면 그 다음부터 손보지 않아도 되는 건지를 물어야 한다는 것입니다. 만약 사소한 수정이 계속될 것 같으면 시간을 다소 들여서라도 코드를 짜야 합니다. 5분씩 10번 단순반복노동으로 방해받는 것보다는 10분 정도 프로그래밍을 하는 게 훨씬 창조적이고 즐겁고, 성가지지 않은 일이거든요.