image cloud

배려,
유대,
화목한 가족,
기분 좋은 웃음,
따뜻한 미소,
고마움,
맛있는 요리,
촐싹맞음,
솔직함,
믿음,
여성스러움,
일식 돈까스.

오늘 얻은 이미지들.

블로그 문제 생기다

엊그제 웹호스팅 업체에서 계정 용량 초과했다고 경고 메일이 날아왔다. 주말 한가할때 파일 몇개 지우지 뭐, 하고 있었는데…

아침에 출근해서 어제 퇴근하면서 열어두고 간 블로그 로그 통계 파일을 새로고침 했는데 내용이 하나도 없다. 문제가 생겼음을 직감하고 블로그를 열었는데 다행히 페이지가 열린다. 찬찬히 살펴보니 뭔가 이상하다. 방문자 카운터 값이 안찍혔다. 터미널을 띄워서 실제 파일들을 에디터로 열어봤다. 내용이 텅비었다. 파일 사이즈가 전부 0 이다. 마지막 수정 시간이 04:05. 아놔… 용량 초과했다고 파일 지운거냐 이게 어찌된 일이냐고 업체 게시판에 질문을 올렸더니 계정 용량을 초과한 상태에서 파일이 쓰기 모드로 열리면 그럴수 있다고 그런다. 제길쓴!!! 디스크 쿼터를 겨우 3메가 넘겼단 말이다. 한달에 꼴랑 오백원 내고 쓰면서 너무 많은걸 바라긴 뭐하지만, 이건 너무하잖아.

일단 파악한 문제는 로그 통계 파일이 초기화됐고, 방문 카운터도 초기화 됐다. 글쓰기는 잘 되는지 확인차 이 글을 작성 중이다. 또 어딘가에 문제가 생겼는지 모르겠지만 그것 말고는 아직 별 문제가 없어 보인다.

천지인 – 청계천 8가

어제는 jaein님의 생일날, 늦게까지 술 한잔 걸치고, jaein님과 같이 택시를 탔다. 낙성대에서 jaein님은 내리고 택시는 다시 흑석동으로 향했다.

기사님이 무슨 일 하시는 분들이세요? 하고 묻는다. 새벽에 택시를 타면 기사님들과 이런 저런 얘기를 하면서 가는 경우가 많다. 기사님이 졸지 않고 운전 잘하고 계시다는 믿음도 들고 나도 심심치 않아서 좋다. 아까 jaein님과 낙성대까지 가는 길에 회사 이런저런 얘기를 했는데 들으시면서 내심 궁금하셨나 보다.

네이버나 다음이라고 들어 보셨어요?
전혀 모르신다고 한다. 대충 인터넷 포털에 대해 설명드렸다.
중앙대 후문으로 가자고 그랬죠?
목적지 다시 한번 확인 하신다.
저는 중대 사범대 체육교육학과 71학번예요.
헉! 저는 컴퓨터공학과 95학번입니다. 선배님이셨네요.
허헛, 후배님이시군요, 반갑습니다.

71학번이면 나하고 24학번 차이가 나니까 현재 연세가 54세…

택시 운전한지 일주일 됐어요.
그런데도 길을 잘 아시네요?
다행히 서울토박이라 큰길은 왠만큼 알고 나머지는 손님들한테 물어물어서 갑니다.
제 후배도 예전에 택시운전 아르바이트를 했는데 그 녀석은 한달이 지나도 헤매던데요?
한달이 뭐예요, 6개월째 헤매는 사람도 있어요.

이런 저런 얘기를 하다 후문에 도착하니 요금이 2만2천원 정도.
2만원만 주세요.
네, 고맙습니다. 조심히 가세요.

학교를 가로질러 바로 쪽문으로 갈 작정이다. 무슨 연유로 저 연세에 야간 택시일을 시작하게 되셨을까… 세상살이 참 녹록치 않구나. 새벽 세시가 넘은 시간임에도 도서관 뒤 농구코트에서 농구를 하고 있는 녀석들을 지나쳐 학생회관옆 쪽문으로 가는 길로 접어들었다. 그 때 학관 어디선가 들리는 안치환 노래. 요즘같은 시절에도 민중가요를 부르는 놈이 다 있네…

철 모르는 대학 2학년 시절 동아리 집행부를 맡았을 때, 나를 동생처럼 챙겨주던 한 학번 위의 동아리 연합회 누나가 있었다. 팬플룻 연주하는 동아리를 왜 하필 거기다 뒀는지 모르겠지만 유독 학관 4층엔 운동권 성향의 동아리들이 밀집해 있었다. 그 누나도 예의 그 운동권 성향의 민속춤 동아리 사람였는데, 어느날 동아리 방 소파 구석에 파묻혀 기타 튕기면서 안치환 노래를 부르고 있던 나를 지나다 보더니, 나는 변절자 안치환 싫다 한마디 하고 집회 장소로 갔다.
변절자 안치환.
벙쪘다.

운동권 노래패 출신이면서도, 결국은 돈이 되는 연가, 속칭 사랑타령 대중가요 같은 노래들을 만드는 것을 두고 한 말이리라. 하지만 운동권과는 거리가 먼 나에게 안치환의 노래들은 그 양반의 성향이 변했다고는 해도 상당히 거리가 느껴지는 것들이었다. 요즘이야 랩이니 홈레코딩이니 하는 것들이 대중화가 되어 있어서 찾아보면 요즘식으로 구성된 사회비판 성향의 노래들이 많이 있지만, 당시는 고등학교 졸업하고 처음 접한 그런 류의 노래들이 말하는 이야기들은 마냥 낯설고 다른 세상의 이야기들이었다.

요즘은 잘 안듣고 지내는 노래들이지만 오랫만에 연주기에 걸고 들어봤다. 왠지 편안해 지는 기분이다. 세상이 변하고 사람이 변한다. 그럼에도 불구하고 변치 않는 것들이 있는 것 같다.

아래는 어제 새벽에 방금 탔던 택시 기사님 생각을 하며 학관 옆을 지날때 누군가 부르는 안치환의 노래를 듣다가 생각났던 천지인의 청계천 8가다. 술마시고 놀고 새벽에 집에 들어가다 이 노래가 생각났다는 것이 이 노래를 만들고 부른 분들께 조금은 부끄럽지만, 93년에 발표된 노래임에도 불구하고 헤이해질 때마나 나를 정신차리게 만드는 노래다.

//<![CDATA[
writeCode2("http://iam312.pe.kr/attachment/cln1325.wma“)//]]>

천지인의 공식 홈페이지는 개편중이라, 관련 기사가 들어있는 천지인 카페의 글을 링크한다. 관심 있으신 분은 한번 보시길.

하지만 누가 뭐래도 난 여전히 안치환식의 연가도 사랑한다.

 

안치환 6집- track 10. 사랑하게 되면

ajax에 관한 짧은 생각

간만에 tool for tools에 포스팅을 한다. 이번 검색 컨텐츠 개편 작업을 하면서 한개 탭을 ajax 기반으로 구축하기로 작정하고 어느정도 구현이 된 상태다. ajax 기반 작업은 추천검색창, dw top 실시간 검색어 에 이미 적용을 해 본 상태지만, 그 때는 소량의 한정된 데이터를 전송받아서 출력에 사용했었다. 이번은 이전과는 다르게 대량의 XML 데이터가 전송된다. 그에 따른 예전에는 경험하지 못한 문제들에 봉착하게 되었고, 그 문제들을 하나 하나 어렵게 해결해 가는 과정을 거치면서 한번 정리할 필요성을 느껴 오늘 포스팅을 하게 되었다. 실은 dw top 실시간 검색어 작업을 마치고 나서 위키에 정리해서 포스팅을 하려 했으나 몸이 많이 지친 상태라 잠깐 쉬자 하다가 결국 때를 놓쳐 버렸다. 물론 이렇게 블로그에 끄적 거릴만한 주제가 아니긴 하지만 일단 여기다 생각나는대로 조금씩 정리해서 나중에 위키로 옮기기로 하자.

AJAX (Asynchronous JavaScript and XML). 이거 요즘 많이들 얘기한다. 아약스, 아작스, 에이작스 등등으로 불리는데, 많은 이들이 에이잭스 라고 발음 한다. 뭐 꼴리는대로 읽어도 뭐라 그럴 사람 없는 것 같다. 아무튼 이걸 이용하면 웹페이지를 새로 받아오지 않고서도 서버에서 데이터를 받아와 웹페이지의 특정 내용을 갱신하는 것이 가능하다. 쉽게 예를 들면 추천 검색창이나 구글 맵 등과 같은 것이 ajax를 활용한 예라고 할 수 있겠다. 이 ajax 란 것, 아니 좀 더 구체적으로 얘기 하자면 XML HTTP Request 란 것이 언제부터 웹브라우저에 껴 들어오게 됐는지는 모르겠으나 현재는 거의 De Facto가 되다시피 해서 이를 지원하지 않는 브라우저는 거의 없는 듯 하다. 문제는 브라우저 별로 이 ajax를 구현한 방식이 조금씩 달라서(심지어 버전별로도!!!) 브라우저 별로 약간의 조건을 걸어주는 루틴이 필요하긴 하지만서도 점점 통일이 되어가는 것 같으니 앞으론 큰 문제가 아닐 것 같다.

자, ajax가 뭘 어떻게 하길래 웹페이지를 새로 받아오지 않고서도 특정 내용을 갱신할 수 있는지 좀 더 구체적으로 보자. 결국은 이렇게 요약 가능할 것 같다. XML HTTP Request, JavaScript, CSS(Cascading Style Sheet), DOM(Document Object Model). XML HTTP Request 저 이상한거 말고는 뭐, 다 아는 거라고? 그렇다. ajax는 알고보면 전혀 새로울 것이라곤 없는 것들의 짬뽕인 것이다. 그나마 생소한 저 XML HTTP Request 조차도 일단 내가 확인한 동작 가능한 브라우저가 IE5 였으니 이것들이 브라우저에 들어간지는 상당히 오래됐다.

하나씩 보자.

XML HTTP Request :
가장 핵심이라고 할 수 있다. 이름에서 알 수 있듯이 XML하고 연관이 좀 있다. 일종의 javascript 객체로서 각 브라우저별로 객체를 생성하는 방법이 조금씩 다르다.

var xmlhttp=false;
/*@cc_on @*/
/*@if (@_jscript_version >= 5)
// JScript gives us Conditional compilation, we can cope with old IE versions.
// and security blocked creation of the objects.
 try {
  xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
 } catch (e) {
  try {
   xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
  } catch (E) {
   xmlhttp = false;
  }
 }
@end @*/
if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
	try {
		xmlhttp = new XMLHttpRequest();
	} catch (e) {
		xmlhttp=false;
	}
}
if (!xmlhttp && window.createRequest) {
	try {
		xmlhttp = window.createRequest();
	} catch (e) {
		xmlhttp=false;
	}
}

이 것이 하는 일은 백그라운드로(어렵게 말해 asynchronous 비동기적으로) 웹서버를 호출해서 그 결과를 XML로 받아오는 역할을 한다.

JavaScript :
물론 아시겠지만 Java와 JavaScript는 별개의 것이다. ajax 작업을 하게 되면 가장 큰 비중을 차지하게 되는 것이 바로 이 javascript다. XML HTTP Request 가 넘겨준 XML 데이터를 지지고 볶아서 웹페이지의 특정 내용을 갱신하는 역할을 한다. javascript로 객체지향 프로그래밍을 할 수 있다는 것을 아시는지? 클래스를 생성하고 멤버 변수와 멤버 함수들을 이용할 수 있다. 물론 정통 객체지향 언어인 C++이나 Java 처럼 객체 상속이라든지 메서드 오버라이드와 같은 것은 불가능 하지만 저것 만으로도 상당히 깔끔한 객체지향 프로그래밍을 할 수 있다. 받아온 XML 데이터를 지지고 볶느라 기존의 cgi 클라이언트와는 비교할 수 없을 정도로 상당한 분량의 javascript 코드가 들어가게 되는데 객체지향으로 코딩을 하면 조금이나마 깔끔한 코드를 만들 수 있다.

아래는 위에서 생성한 javascript 객체로 웹서버를 호출해서 데이터를 받아오는 루틴이다.

xmlhttp.open("GET", "/test.txt", true);
xmlhttp.onreadystatechange=function() {
 if (xmlhttp.readyState==4) {
  alert(xmlhttp.responseText)
 }
}
xmlhttp.send(null)

위의 코드에서도 보다시피 실제 받아오는 데이터가 꼭 XML일 필요는 없다. responseText 속성은 텍스트 형식의 데이터를 돌려준다. 즉 웹페이지 내용을 갱신하는데 사용가능한 html 코드를 넘겨줘도 무방하다는 얘기다. 만약 웹서버의 test.txt의 내용이 well-formed XML 문서일 경우 responseXML 속성엔 XML DOM 객체가 들어 있게 된다. well-formed XML 문서가 아닌 일반 텍스트일 경우 responseXML 의 DOM 객체는 아무 자식노드도 갖고 있지 않은 널 트리의 DOM 객체이다.

DOM :
위에서 javascript로 XML 데이터를 지지고 볶는다고 했는데, 그 지지고 볶는 도구가 바로 DOM이다. DOM은 현재 웹페이지의 HTML 구조를 XML 트리형식으로 관리를 한다. 이를 이용해 특정 노드의 값을, 서버에서 받아온 DOM 객체의 값으로 수정, 대체가 가능하다. 즉 웹페이지의 특정 내용을 변경 시키는 것이다.

이름 : <span id="contents">바보</span>


var objContents = document.getElementById("contents");
objContents.innerHTML = "똥개";

이 페이지가 실행되면 이름 : 바보 가 페이지 리로드 없이 이름 : 똥개 로 바뀌게 된다.

CSS :
이러한 일련의 동작들을 예쁘게 꾸며주는 역할을 한다. 디자이너가 아니라면 크게 신경쓰지 않아도 무방하다.

이것들을 짬뽕해서 간단히 동작하게 만든 test.html 이다.

이름 : <span id="name">똥개</span>



var xmlhttp=false;
/*@cc_on @*/
/*@if (@_jscript_version >= 5)
// JScript gives us Conditional compilation, we can cope with old IE versions.
// and security blocked creation of the objects.
 try {
  xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
 } catch (e) {
  try {
   xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
  } catch (E) {
   xmlhttp = false;
  }
 }
@end @*/
if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
	try {
		xmlhttp = new XMLHttpRequest();
	} catch (e) {
		xmlhttp=false;
	}
}
if (!xmlhttp && window.createRequest) {
	try {
		xmlhttp = window.createRequest();
	} catch (e) {
		xmlhttp=false;
	}
}


xmlhttp.open("GET", "/cgi-bin/name.cgi", true);
xmlhttp.onreadystatechange=function() {
  if (xmlhttp.readyState==4) {
    var objName = document.getElementById("name");
    objName.innerHTML = xmlhttp.responseText;
  }
}
xmlhttp.send(null)



자, 대충 이게 어떻게 구성이 되어 동작하는지를 알아 봤다. 하지만 어떤 것이든 만만한 것은 없다.

이제부터는 이 ajax를 이용해서 웹페이지를 맹글때 발생하는 지랄같은 것들에 대해 살펴본다.

가장 먼저 맞닥뜨리게 되는 것이 바로 보안 문제이다. cross domain 문제라고도 하는데, xmlhttp.open 메서드는 같은 도메인의 같은 서버에 대해서만 동작한다. 즉 위의 test.html이 a.dreamwiz.com 에 들어있다면 xmlhttp.open(“GET”, “http://b.dreamwiz.com/name.txt&#8221;, true); 를 호출하게 되면 브라우저는 권한 문제가 어쩌구저쩌구 하는 에러를 내면서 스크립트 실행을 멈춘다. 이는 브라우저의 보안 설정과 관련이 있는데 브라우저의 옵션중에 보안설정을 열어서 해당 도메인, 위의 경우는 b.dreamwiz.com 을 신뢰하는 도메인 리스트에 사용자가 직접 추가하는 것 말고는 피해갈 수 있는 방법이 없다. IE의 경우는 개구멍이 있는데 바로 iframe을 이용하는 것이다. 즉 b.dreamwiz.com에 xmlhttp 관련된 스크립트를 담고 있는 iframe.html을 작성하고 a.dreamwiz.com/test.html 에서 iframe으로 b.dreamwiz.com/iframe.html 을 인클루드 하는 것이다. 이렇게 하면 일단 보안 문제는 비껴갈 수 있다. 하지만 이 경우 두 서버, 즉 a와 b서버간의 스크립트 데이터가 공유가 안된다. 이를 해결하기 위해서 a 서버의 test.html과 b 서버의 iframe.html의 스크립트에 document.domain=”dreamwiz.com”; 이라고 상위 도메인을 명시해 줌으로써 같은 도메인 내의 서버간에 javascript 데이터 공유를 가능하게 할 수 있다. 하지만 이 방법은 어디까지나 IE용 개구멍이다. mozilla 기반의 브라우저 들에서는 iframe 내의 객체를 억세스 할 수 있는 방법이 없다.
가만 보면 IE는 보안이 참 느슨하다. 하지만 이는 역으로 개발자에게는 꽤나 달콤한 유혹이 된다. 일단은 돌아가는데 뭐가 문제인가, IE에서 잘 도는데 모질라 따위는 무시하지. 이렇게 되면서 점점 표준과는 멀어지는 웹페이지들을 만들게 된다. 학교 시절엔 개구멍이 무척 유용하긴 하다. 하지만 개구멍은 어디까지나 개구멍인 것이다.
이를 극복하기 위한 아이디어중 아주 기발한 것이 있다. 여기 http://blogs.ebusiness-apps.com/dave/?p=92 를 참고해 보기 바란다. 간략히 설명하자면, cgi가 단순히 xml 데이터를 되돌려 주는게 아니라 xml 객체를 담고 있는 자바스크립트를 리턴해 준다! 일종의 RPC를 구현한 것이다.

다음은 DOM으로 웹페이지 구조를 관리하느라 그런지 구조가 복잡한 웹페이지일 경우 사용자 액션에 대한 반응이 좀 느린 경우가 있다. 이는 특히나 플래시가 많이 들어있고 테이블이 복잡하게 얽혀 있는 탑페이지의 경우 특히 심한데 이는 나날히 발전하는 개인용 pc의 컴퓨팅 파워로 쉽게 극복가능하리라 생각된다.

마지막으로 서버가 보내주는 html 태그를 단순히 출력만하던 멍텅구리 브라우저가 ajax로 인해 리치 클라이언트가 됨에 따라 cgi 클라이언트의 javascript 코딩이 무척 복잡하고 방대해졌다. 아주 제길쓴이다. DOM 객체를 파싱하기 위해 XML 파서가 동원되고 스크립트 코드 안에 html 코드들이 짜깁기 되는게 아주 난장판이다. 이를 피하기 위해 받아온 DOM 객체에 바로 xslt 를 적용해 html로 포맷팅이 가능하지만, xml의 cdata가 escape 되서 포맷팅되기 때문에 html 태그로서의 기능을 상실해 버리는 문제점이 있다. 다른 대안으로 ajax 프레임 워크를 만들어서 간략화 하기 위한 프로젝트들이 한창이다.

간략하게나마 ajax에 관련된 사항들을 정리해 봤다. 브라우저의 보안관련 문제라든가 xslt의 포맷팅 문제는 아직도 테스트를 더 해봐야 하고 자료를 찾아서 공부를 더 해야한다. 앞으로 ajax가 웹어플리케이션에 있어 클라이언트측의 대세가 될 것은 분명하다. 기존의 서버측 cgi에서 데이터를 처리해 html까지 생성해서 클라이언트에 전송하던 방식에서, 이제 서버측은 데이터만 생성하고 클라이언트 측이 뷰를 담당하는 구조로 되므로, 서버측 cgi는 오히려 단순 명료해 진다.
어플리케이션의 활용 구분에 있어 알랜 쿠퍼(Alan Cooper)라는 사람은 몇가지로 분류를 했다. 그 중 트랜지언트(transient) 패턴과 소브린(sovereign) 패턴이란 것이 있다. 소브린 패턴은 지속적인, 즉, 개발자들이 몇시간씩 머리 싸메고 들여다보는 vi와 같은 에디터나 기획자가 몇시간씩 끙끙대는 파워포인트 류가 되겠다. 반면 트랜지언트 패턴은 일회적인, 즉, 파일관리자나 메신저, 웹브라우저 같은 것들이 이 부류가 되겠다. ajax가 대중화 됨에 따라 대표적인 소브린 패턴에 해당하는 업무용 어플리케이션들이 점점 웹 어플리케이션으로 되고 있다(일전의 구글리더에 관한 포스팅 참조). 즉 웹브라우저 자체가 점점 소브린 패턴쪽으로 이동하고 있는 것이다. 더 나아가 웹페이지에서 이와같은 사용자 상호작용이 가능하게 되면 웹 OS가 아예 불가능한 얘기가 아니다. 실제로 웹데스크탑을 구현하는 프로젝트가 진행중이다. 정말 어느날 갑자기 구글 OS 등장이요, 이런 소식이 들릴날이 올 지도… 흥미진진한 미래가 기대반 두려움 반이다.

이 포스팅은 생각나는 대로 계속 추가해서 어느정도 정리되면 위키로 옮길 작정이다. 예전의 추천 검색창 관련 포스팅도 그랬듯이 어느날 갑자기 없어지더라도 그러려니 하시길.

reference :

XML HTTP Request 관련 예제 스크립트 : http://jibbering.com/2002/4/httprequest.html
추천 검색창 관련 나의 작업 내용 : 이 링크는 외부에 노출되면 문제 발생 소지가 있어 링크를 뺀다. 나중에 이 포스팅을 위키로 옮기면 추가할 것이다.
JSON 프로젝트 : http://json-rpc.org/
웹데스크탑 프로젝트 : http://www.x-desktop.org/
어플리케이션 활용 패턴에 관한 알랜 쿠퍼의 글 : http://www.cooper.com/articles/art_your_programs_posture.htm
cross domain 문제를 극복할 수 있는 아이디어 : http://blogs.ebusiness-apps.com/dave/?p=92
위 포스팅과 관련된 JSONP(JSON with Padding) : http://bob.pythonmac.org/archives/2005/12/05/remote-json-jsonp/

하늘에서 본 지구

얀 아르튀스-베르트랑 Yann Arthus-Bertrand.
항공 사진 전문가라고 알려진 프랑스 사진가이다. 회사 아래 교보 서점의 사진 코너에 가보면 대백과 사전 크기의 대빵 큰 사진집이 하나 있다. 하늘에서 본 지구. 얼마전에 우리나라 비무장지대의 항공 촬영을 해 갔다고 그래서 아홉시 뉴스에도 나오더구먼.
오늘 종기씨가 이 사람의 사진을 담은 동영상을 보여주길래 담아왔다. 땅에서는 결코 알 수 없는 하늘 위에서의 모습을 이 양반이 담아줬더구먼.

http://iam312.wowdns.com:9080/movie/yab.wmv
bgm은 살짝 pause를 눌러주시길.

관심있는 분은 이 양반의 홈페이지 http://www.yannarthusbertrand.com 도 들러 봅시다. 스틸 사진을 볼 수 있다. 이왕이면 사진집을 하나 사고 싶지만…

모순

드디어 오늘 dw top에 들어가는 실시간 검색어 작업을 마무리 했다. 퇴근 하려는 희경팀장님을 붙잡고 디자인 조정해서 내일 오전에 받기로 하고 일찌감치 가방 챙겨서 퇴근 했다.

#1 불신 충만 시내 버스를 타보기로 했다.
회사 앞에는 집 앞까지 가는 버스가 꽤 많다. 하지만 자전거를 안 타고 온 날은 지하철을 타고 사당까지 가서야 버스로 갈아타곤 했다. 회사앞에서 출발하는 시내버스는 대부분 밤 10시 30분이 넘으면 끊어지는지라 그닥 유용하지 않기도 했고, 무엇보다도 예전에 토요일 오후에 출근했다가 버스를 타고 퇴근했는데 꽉 막힌 도로에서 옴짝달싹 못하는 도로 체증에 질려 중간에 내려서 지하철을 탄 기억이 있어서 그 후론 버스를 전혀 신뢰하지 않았거든. 그런데 두어번 단아소년님과 회사 앞에서 공항 버스를 타 보았는데 예전만큼의 신뢰부족 버스가 아니었다. 그래 과연 시내버스는 얼마나 걸리는지 궁금했거든.

어제 퇴근길에 탄 362:
승차시간은 대략 밤 10시 20분경. 막차거나 막차 바로 전 차일 듯 하다. 강남, 청담, 압구정, 온 시내를 다 쏘다닌다. 길이 조금 막히긴 했지만서도 하도 돌아다닌 바람에 집에 도착하기까지 걸린 시간 대략 1시간 20분. 기피해야겠다.

오늘 퇴근길에 탄 361:
달빛요정역전만루홈런 앨범에 들어있는 그 361 번인지 아닌지 모르겠다. 암튼, 승차시간은 대략 밤 8시 경. 강남, 압구정 등등, 어제의 362 못지않게 돌아다닌다. 크게 막힌곳 없다가 압구정 부근에서 상당히 막혔다. 하지만 집에 도착하기까지 걸린 시간 대략 1시간. 생각보다 꽤 양호하다.

다음 번 테스트 대상 363:
노선이 더 짧은 걸로 기억한다. 예상되는 소요시간은 대략 50분 안쪽.

600번:
시내를 통과해 가는데도 직행버스인지라 정류장이 거의 없어서 소요시간 대략 50분.

결론 :
361, 363, 600 = 1시간
지하철 + 5524 = 1시간

361, 363, 600은 지하철보다 훨씬 느리지만 결국 도착시간은 더 빠르거나 같다. 지하철이 절약해준 시간을 5524가 다 까먹는다. 버스는 느리면서도 빠르다. 상황은 변한다.

#2 불고추 양념 통닭을 먹기로 했다.
오늘 dw top에 실시간 검색어 붙일 준비를 마쳐 놓으니 마음이 홀가분해서 바로 집에 가서 뒹굴뒹굴 할 생각에 일찌감치 짐싸서 나왔다. 이게 끝나면 바로 컨텐츠 개편 작업을 시작해야 하지만 그건 낼 생각하자. 집에 가는 길에 흑석동에서 가장 맵기로 소문난 쭈노치킨의 불고추 양념을 한마리 튀겨왔다. 시원한 맥주 한잔 곁들일 생각이다. 날씨까지 쌀쌀한게 아주 제격일듯 하다.
룰루랄라 닭을 들고 가며 문득 든 생각. 닭을 튀기는 아저씨의 수고로움과 내가 그 닭을 먹으면서 얻는 즐거움 내지 행복이 과연 정비례할까? 아무리 생각해도 아저씨의 수고보다 지금 내가 받는 즐거움이 세배는 더 큰 것 같단 말야. 아저씨, 오늘은 아저씨가 손해요.
낄낄거리고 tv를 보면서 치킨을 먹었다. 매운것을 좋아하는 나로서도 이 불고추 양념은 반쯤 먹으면 혀가 얼얼할 정도로 고통스럽다. 입에서 불이 나는것 같아 맥주를 벌컥벌컥 마시다가 문득 다시 든 생각. 아니, 혀가 그렇게 고통스러워 하는데도 왜 자꾸 이 매운 걸 먹냐? 고통 뒤에 따르는 묘한 쾌감은 이 고통스러운 짓을 멈출 수 없게 한다. 이 쾌감 또한 고통의 세배는 되는 것 같다.

결론 :
들인 노력에 대한 행복이 꼭 작은것만도 아니고 꼭 정비례하는 것도 아니다. 오히려 더 클 수도 있다.

요점은 컬투의 그때 그때 달라요. 좋게 보면 한없이 좋게만 보이고, 나쁘게 보면 한없이 나쁘게만 보인다.

개그만화

http://dory.mncast.com/mncHMovie.swf?movieID=10000124020050811172532

단아소년님의 블로그에 있는 지구멸망 세시간 전 을 보다 웃겨죽을뻔 했다. 이거 뭐냐고 물었더니 이 시리즈가 잔뜩 있는 링크를 알려줬다. 단아소년님의 추천작 손오공 시리즈를 암만 찾아봐도 비슷한 건 이것 하나 뿐이네. 이거 맞나요?

지구멸망 세시간 전을 처음 봤을때 만큼의 신선함은 없지만 이것도 나름 재밌다. 가볍게 웃어보세~ 근데 이거 동료애 어쩌구 저쩌구 하더니 저팔계를 잡아먹은게야?

남도 기행 (2006-10)

# 목포

고등학교때까지 지냈던 곳. 지금도 부모님은 목포에 계시고, 명절때마다 찾아가기를 10년째를 넘기고 있지만 갈수록 낯설어만 간다. 친구녀석들도 대부분 타지로 떠난터라 갈때마다 허전한 기분이 크다. 그렇다고 서울이 내 고향도 아니기에 마음 둘곳 없긴 매 한가지다. 그래서 자꾸 배낭 메고 어디로 떠나고 싶은 마음이 드나보다.

고향집 화단에 아버지가 심어놓은 무화과 나무

무화과라고 들어본적이 있는지? 전라도 특히, 해남 무안 지역에서 많이 나는 과일이다. 열매안에 꽃이 들어 있다. 무척 맛이 좋다. 올해는 포도와 감이 안열었다고 아버지가 아쉬워 하셨다. 작년엔 감이 많이 열었으니 올해는 좀 쉬어야지. 조그만 화단에 양분이 있으면 얼마나 있겠는가.

유달산 중턱에서 내려다 본 목포 내항

유달산 일등 바위에서 내려다 본 용머리 낙조

섬이 많아 수평선으로 해가 떨어지는 모습은 볼 수 없다. 이날은 수평선 부근에 구름까지 끼어서 좀 아쉬웠다.

대반동 해수욕장 쪽으로 내려가는 길에 찍은 일등 바위

일등 바위쪽 산 동네.

이미 하당쪽으로 중심 시가지가 옮겨간 상황에서 이 곳은 더 이상 개발이 안되는 듯 하다. 그래도 달은 공평하게 고루고루 빛을 비춰주더라.

대반동 해수욕장

이젠 해수욕장으로서의 기능은 상실하고 공원으로 용도가 변경됐다고 한다. 명색이 해수욕장이면서도 어이없게 뻘밭인지라, 해마다 다른 곳에서 모래를 퍼와서 백사장을 만드는 말도 안되는 해수욕장이다.

친구를 만나러 가는 길에 버스정류장에서 찍은 목포 내항

추석 전날이었음에도 불구하고 내항에는 출항 준비를 하는 배들로 분주했다.

이날 만난 친구 녀석은 어린 시절부터 함께한 불알 친구다. 그 동안 운영하던 횟집을 정리하고 지금은 조그만 회사에서 다시 월급쟁이 생활을 하고 있었다. 오랫만에 그 녀석 집 근처 초밥집에서 술한잔 하면서 이런 저런 얘기를 했다. 둘다 어느새 장가 걱정에 집안 걱정 많은 아저씨가 되버렸다. 둘다 답이 안나오는 얘기에 머쓱해져서 다음을 기약하고 헤어졌다.

# 해남

해남은 어떤 직접적인 연이 있는 곳은 아니다. 서울의 대기업에서 직장 생활을 하시던 작은 아버지가 은퇴하시고 이 곳 해남에 광어 양식장을 짓고 작은어머니와 함께 일을 하고 계셔서 명절이면 한번씩 찾아가곤 한다.

어무이

양어장 앞 길가에서 깨금 열매를 발견하고는 어떻게 뽑아갈까 궁리 중이시다. 어무이가 어디에 좋다고 그랬는데 잊어버렸다. 나이를 드시긴 드셨나 보다. 저런 것에 관심을 가지시는 것을 보니. 쪼그만 열매가 까맣게 익는데 달다. 어렸을 때 많이 따먹었다.

길가에 피어있는 꽃이 예뻐서 같이 담았다.

양어장 앞 바다 낙조.

가족중엔 작은 아버지 같은 분이 꼭 있어야 겠구나 하는 생각이 들때가 많다. 아버지 여러 형제중에 가장 속이 깊은 분이시다. 형편이 어려울 때는 어려운 대로, 풀렸을 때는 풀린대로 그때 그때 맞춰서 아버지 형제들에게 꼭 선물을 돌리신다. 그게 크든 작든 받는 사람은 기분이 좋아지는건 당연지사. 작은 아버지 덕분에 친지들이 명절이면 저녁한끼라도 모여서 같이 하게 되는 듯 하다.

# 보성 녹차밭

몇몇 친지분들께 인사 드리고, 가족 여행을 다녀왔다. 먼저 보성 녹차밭. 처음 가봤는데 장관이었다. 봄이면 연녹색이 참 예쁘다고 한다. 지금은 진한 녹색의 단단한 잎으로 자라 있어서 여린 맛은 없었지만, 장관이긴 장관였다. 온 산이 녹차밭이다.

뒤에 보이는 저 통나무집에 유난히 집착하시는 아버지.

꼭 저 집을 배경으로 찍어달라신다. 그냥 관리사무소 같아 보이는데. 사진 찍을때 먼산보기 포즈는 아버지 나름대로의 철학이 있다.

가족 사진

삼각대 세워서 타이머 돌려놓고 찍은 사진인데, 언제 찍히는지 타이밍을 몰라서 다들 딴 짓이다. 어렸을적에 놀러갔을 때 가족사진은 항상 아버지의 사진기 몫이었다. 나이 드시고 이런것까지 조금씩 그 몫을 자식들에게 물려주는 부모님을 보니 짠하다. 물론 아버지의 필름 사진기는 지금도 아버지가 가끔 가지고 나가서 찍으신다고 한다. 다만, 어이없이 큰 사이즈로 인화를 하겠다고 어머니께 큰 돈을 달라고 하시는 바람에 잔소리를 많이 듣는다고 하시는 군.

녹차밭에서 가장 높은 곳.

올라가자고 했더니 다들 힘들다고 그래서 동생하고 둘이만 올랐다. 이 녀석하고는 한 삼년전에 대판 싸운 후로 무척이나 서먹서먹 해졌다. 기념사진이나 한장 찍자, 그랬더니 먼저 어깨동무를 한다. 짜식. 근데 이 녀석 언제부턴가 나보다 키가 더 커졌다.

꼭대기에서 남동생

내려가는 길에 여동생

뭘 그리 정신없이 찍고 있는 건지.

무슨 해수욕장이었는데 기억 안난다. 녹차밭에서 15분정도 가면 나오는데 해수찜질이 유명하다고 한다. 그냥 소나무 숲에서 점심으로 삼겹살만 구워먹고 나왔다.

스캔해보니 필름에 물자욱이 있다. 아놔… 현상소 아줌마 맘에 안드네.

# 강진

목포로 돌아오는 길에 들른 강진. 강진은 도자기로 유명하지만 이 곳엔 김영랑 시인의 생가도 있다.

돌담에 속삭이는 햇발같이
풀아래 웃음짓는 샘물같이

내마음 고요히 고운 봄길 위에
오늘하루 하늘을 우러르고 싶다

영랑 생가 마당에 있는 커다란 은행나무. 그날 오후 볕이 참 좋았다.

은행나무 아래 벤치에서 담소중인 어무이와 동생.

그리고 마지막으로 들른 다산초당

정약용이 유배되어 18년동안 지낸 곳이라 한다. 유배온 주제(?)에 정원에 정자까지 지어놓고 유유자적하며 지냈다. 정자에서 내려다본 풍경은 참 시원하다. 하지만 날이 많이 어두워져 가는지라 얼마 안있어 내려왔다.

어머니가 하시는 말. 니는 어째 갈수록 느그 아부이랑 똑같아 간다. 맨날 배낭 짊어지고 산에 싸돌아 다니고 사진기 들고 돌아댕기는게. 어무이, 그 밥에 그 나물 아니겄소.

남도 기행 끝.

kx, mz-3, tokina 19-35mm, K55mm, FA100mm MACRO | agfa vista 100, vista 400, precia CT 100 | LS30

옥상 급만남

추석때 찍은 필름까지 해서 총 6롤의 필름을 정리 중이다. 퇴근하고서 조금씩 하려니 시간이 꽤 걸리는구먼. 중간중간 제대로 스캔이 안된 몇컷 빼고는 일단 오늘까지 필름 스캔은 마쳤다. 이제부터는 스캔한 이미지들 보정 작업을 해야는데, 음… 뭐 쉬엄쉬엄 하지 뭐.

저저번주, 추석연휴 전 주에 드디어 갖은 옥상 “급만남”. 몇번의 어긋남 후로 강행한 급만남이었는데 특히 뭉대리님도 함께 하게 되어서 그날 하길 참 잘했다는 생각이 든다.

그날 찍은 사진 중 두번째로 맘에 드는 사진.

가장 맘에 드는 사진은 단아소년님의 혼사길을 막을지 모른다는 우려가 있어 내가 올릴순 없었다. 푸하핫… 그 사진 생각만 해도 웃음이 나온다. 혹시 나중에 단아소년님이 그 사진 올리면 트랙백 걸어야 겠다.

퇴근길에 제인님과 단아소년님과 우연히 갖은 그 날의 분수대 “급만남”이 참 고맙다. 그 전엔 이름도 몰랐던 사람들이란 말일세. 허헛~ 마음이 잘 맞는 사람들이 옆에 있다는 건 참 행복한 것이다. 잠깐 동안 용왕님 4종세트를 먹으면서 이런저런 얘기를 하다 왔는데, 이젠 더 이상 문규씨와 “급만남”을 할 수 없는 것이 무척 안타깝다. 든자리는 표가 안나도 난자리는 표가 난다고 하지 않던가. 친하게 지내던 사람들이 퇴사할때 마다 드는 기분은 참 말로 하기 어렵다.

이상하게도 흑백사진을 보노라면 옛 시절이 떠오른다. 그것도 기쁜일보다는 안타깝고 슬펐던 일이 먼저 떠오르더군. 어제의 사진은 예전에 내 여자 동기를 좋아했던 선배가 그 애 결혼식에 축하해주러 간다길래 추억이라도 남겨주려고 일부러 사진기를 가져가서 찍어온 것이다. 그리고 그 날 대부도까지 가서 쓴 소주를 같이 마시고 왔더랬다. 사진을 보고 있자니 괜히 한구석이 짠 해지는게 앞으론 흑백 필름으로 우울한 사진은 절대 찍지 말아야 겠다. 꿀꿀한 기분에 오늘은 일부러라도 이번 옥상 급만남의 가장 맘에 드는 사진을 올리고 싶었으나, 왠지 그러면 안될것 같다. 물론 이 사진도 꽤 맘에 든다우. 가벼운 미소가 보고 있는 내 기분까지 덩달아 좋아지게 만드네. 어제의 우진형 사진도 그렇고 이번 급만남 사진도 그렇고 모두 같은 필름에 들어 있는 사진들이다. 필름 한롤을 여러날에 걸쳐 찍다보니 나중에 이 필름을 꺼내 볼땐 한번에 희노애락을 맛보게 되겠구먼.

그나저나 블로그 주소가 제법 알려져서 이제는 예전같은 글을 남기는게 무척 조심스럽다. 더 이상은 이곳에서 예전처럼 솔직해 질 수 없을 듯 하다. 나를 이해해 주는 한정된 사람들만 오던 곳이 아니라 나를 전혀 모르는 사람들도 오는 이상은, 적당한 타협이 필요하다. 내 기분을 멋대로 푸는 무인도가, 다른 사람 눈도 의식 하지 않을 수 없는 유인도로 바뀐것이 조금 서운하기도 하지만, 새로 적응해야지 뭐 어쩌겠나.

KX, K55mm | konica pan100 | LS30
옥상

아쉬움

지난 9월 30일. 기며녕씨는 캐나다로 반환 되었고, 정도령은 서울에 남아있다. 캐나다 벤쿠버와 서울은 안드로메다까진 아니더라도 카시오페아 정도는 된다고. 거리가 문제가 아니라 마음이 문제겠지. 저 캐주얼… 내가 보기엔 우진형 나름대로의 소심한 깽판이다.
마침 껴 있던 필름이 감도 100짜리 필름인지라 내가 갖고 있는 멍텅구리 플래시라도 붙여서 찍어볼까 했지만, 내 골동품 필름 사진기에 그 플래시를 붙이기엔 내 실력이 미천하여, 그냥 플래시없이 조리개를 활짝 열고 어떻게든 셔터 속도를 확보해서 찍어보기로 작정했다. 하지만 식장은 역시나 무척 어두웠고, 안흔들리게 벽에 기대어 최대한 숨을 참고 셔터를 눌렀건만, 역시나 좀 흔들려버렸구먼. 이 사진 만큼은 정말 잘 찍고 싶었는데, 우진형 미안혀요.

그대로 두 사람이 나란히 식장으로 입장하면 참 좋았을텐데… 나아쁜 기며녕이.
아무리 그래도 인연은 만들어 가는거란 말을 믿고 싶다.

kx, K55mm | konica pan100 | LS30