내나이 29, 술에 대한 단상..

와인 2008/08/15 16:19 posted by 과묵
공부는 좀 못했지만, 나름 모범적인 생활을 했던 관계로..
고등학교때 까지는 술에 대해서 그다지 아는것이 없었다..
1년에 마시는 술이라고 해봐야 명절에 제사지내면서 마시는 한두잔 정도의 술..
막연히 쓰게만 느껴지고 시간지나면 머리 아픈 이런걸 왜 마시지?
생각했지만..

대부분이 그렇듯 대학에 들어가는 순간 아무 이유도 없이 '마시자'가 되버리고..
술맛은 이런거다라는 것을 느낄 여유도 없이 그냥 습관적으로, 혹은 술자리를 위한 수단으로 술을 마시게 된다..

...

TV에서 보면 실연의 충격을 당해 시름시름 앓는 사람들의 모습을 보고 있으면..
단칸방 안에서 소주병하나 있고, 무서운건 안주나 잔도 없이, 막연히 술만 마시는 모습만 그려진다..
그래서, 술은 저런 용도로도 마시는 구나 하는 생각도 했던거 같다..

...

제대를 하고 다시 사회로 복귀했을때 느껴지는 술은..
나름 술도 그때그때마다 맛이 다르고, 상황이 더욱 절실할때 술로 얻을 수 있는 효과가 크다는거..
막연한 걱정과 공포는 술맛을 더욱 달게 만든다..

...

그러고 시간이 지나 사회생활의 시작..
학교 다닐때랑은 조금 다른 모양들이 그려진다..
그동안은 단순히 같은 또래의 애들끼리 마시는 먹고 놀자 판이었지만..
지금의 판은,
나보다 어린 사람도 있고, 어버지뻘 되는 회사 동료도 있는, 계층이 다양한 사람들과 마시게 된다..
기분 좋아라고 마시는 술이지만, 회식이라는건 엄연히 회사 생활의 연장이고..
이자리에서 실수는 가끔 치명적이 결과를 야기하기도 하고, 눈치껏 술에대한 적절한 컨트롤이 필요한 시기 이기도 하다..

...

아무튼..
언제부터 인지는 모르겠다..
이런 제약적인 회식이라는 분위기가 싫어서 인지는 몰라도..
집안에서 혼자 야금야금 술을 마시는 버릇이 생겼다..
원룸 자취 2년째..
매일매일 회사일을 마치고 늦은 시각에 들어오는 사각의 방, 그리고 반복되는 혼자라는 상황이..
어느 순간 너무 힘들게 느껴지더라..

사용자 삽입 이미지
 
[최근 2달 동안 집에 마신 와인]


처음의 시도는 '그냥 마셔봤어' 에서 시작되었지만..
칠흙같은 어둠과, 깊은 침묵과, TV나 PC 모니터랑 대화하며 마시는 술이 언제 부턴가 술자리의 친구들과 마시는 술보다 더욱 좋게 느껴지더라..

미국에서 생활하고 돌아온 어떤 분이 나에게 예기한다..
미국에서 차지하는 대부분의 알콜 중독자이 알콜 중독으로 빠져드는 루트가 (독신 + 사회생활)의 스트레스에서 시작된다고..
예기가 맞다면 나는 알콜중독으로 가는 첫번째 관문을 지나고 있는지도 모르겠다..

...

최근..
칠레산 와인을 한병 훌쩍 마시고 심하게 고생을 한적이 있다.. (윗 사진에선 빠졌음..ㅋ)
극도로 몸이 좋지않고, 혼미한 상황에서 내가 왜 이러고 있나.. 생각을 해본적이 있다..

결론은 하나였다..
과거에 어떤 아픈 기억이 있었고, 수년의 세월이 흐른 지금도 그 기억이 너무 생생해서 무슨 수를 써도 지워지지 않는 다는거..
그래서 그 기억을 지우고자 지금까지 의도했던 그렇지 않던, 의식적이던 무의식적이던..
현실의 고통을 지우는 진통제로 술을 마셔왔다는 거..

누구에게나 지우고 싶은 하나쯤은 있을것이고, 술을 마실때면 그 기억이 조금은 떠오를 거라 본다..

아무튼..
진통제로 마셔왔던 술은, 지우고 싶은 기억을 더더욱 선명하게 머리속에 각인 시켜주는 약이 아닌 독이었던거 같다..

사진에서도 보여지듯 우리집 전망이 탁 트여있다..
가끔 비오는 날이나, 술시고 정신이 혼미한 날은 나도 모르게 상당히 sensitive 해진다..
이 상태로 계속 가다간 저 바깥 풍경속으로 뛰어들지도 모를거라는 상상의 나래를 펼치며,
그제부터 집에서, 혼자서는 술을 마시지 않기로 하였다..

술은 약이 아니라 독이다..

29살이 되고서야 이걸 알았네..
물론 같이 마실 사람 있으면 고민없이 마심.. 단지 혼자 먹는 술은 정신의 병을 키우는 것이라고..
예기하고 싶다.. ㅋ
크리에이티브 커먼즈 라이선스
Creative Commons License
이올린에 북마크하기(0) 이올린에 추천하기(0)
TAG 금주,

주말을 이용하여 만들어본 웹크롤러..

일반적인 웹크롤러는 다음과 같은 과정으로 URL을 수집합니다..

- Root Site Source Download
- 해당 페이지에서 정규식을 이용하여 'http://www~' 와 같은 주소로 인식되는 문자열 추출
- 추출 주소에 대한 재귀적 반복 (깊이 우선 탐색 or 너비 우선 탐색)

위와 같은 구현은 단일 Thread로 구현시 재귀적 호출구조를 가지므로 간단하게 구현할 수 있지만..
일반적으로는 지정 Site에서 source를 download할때 network blocking time이 크기 때문에.. (CPU를 최대로 활용 못함)

보통 Crawler는 MultiThread기반으로 만들어 집니다.

아래는 위에서 설명한 크롤러와는 틀리게 Anchor Text 기반 URL 및 Anchor Text(링크문장) 추출하는 크롤러..

사용자 삽입 이미지

다음은 위의 크롤러를 구현하면서 생각해본 크롤러 구현시 고려사항들 입니다..

1. 최근 검색의 추세로 볼때 Crawling 된 URL을 잘 활용하기 위해서는 ..
URL을 대표하는 문자열로 볼수 있는 Anchor Text의 추출이 데이터 활용 측면에서 유용해 보입니다.
물론 이러한 추출을 위해서는 HTML lexing이 필요하므로 정규식을 사용한 URL 추출보다는 속도상 손해를 감수해야 합니다.

2. Crawling 시 최대한 데이터를 빨리 수집하기 위해서는 CPU 자원을 최대로 활용할 수 있어야 한다는 것입니다.
앞서 설명했듯이 Network 사용으로 인한 Blocking으로 단일 Thread로는 자원을 최대로 쓸 수 없습니다.
 
 위의 Crawler는 Blocking Thread Pool을 이용하여 동시에 4개의 Thread가 URL-Anchor Data를 수집합니다..
하나의 주소에 대해서 Crawling Thread가 생성되면 Thread 객체 생성이 과다하므로 Thread Pool의 사용도 필수적이라 할 수 있습니다.
 
물론 Pool의 구현도 Blocking이 아닌 NonBlocking 으로 구현시 더할 나위 없겠죠..

기초적인 Thread Pool의 구현은 아래 Site를 참고하세요..
http://gyro74.zerois.net/lecture/threadpool.htm

3. Crawler의 최대 난제는 수집정보의 중복을 제거하는 것입니다.
 하나의 Root에서 시작되는 크롤러는 다수의 파생 페이지를 연쇄적으로 Crawling 하므로, 유기적인 연결구조를 가지는 웹문서의 특성상 반드시 다수의 페이지에서 중복 URL이 발생 할 수 밖에 없습니다.
이러한 중복을 check 하기 위해서 위의 크롤러에서는 검색이 빠른 Hash 함수를 사용했습니다만 depth가 깊어짐에 따라 저장 자료가 급격히 늘어나 결국 heap space Exception으로 프로그램이 종료되는 현상이 발생 하였습니다.

즉, URL 중복을 고속으로 검사하기 위해서는 추출 데이터를 메모리상에 유지해야 하지만 용량의 한계가 있기때문에, 메모리의 용량과 속도와의 타협점이 필요하다는 것입니다. 물론 중복으로 데이터를 수집하고 수집데이터에 대해 2차 보정 작업을 거치는 구현으로도 이 문제를 해결 할 수 있습니다.

결론은, Crawler를 제대로 구현할려면,
NonBlocking Queue 기반의 Crawler Process Pool,
CPU 사용량 check에 의한 Pool Size의 동적 조절,
데이터 중복 검사를 위한 적절한 자료구조의 개발이 필수적으로 보입니다.

크리에이티브 커먼즈 라이선스
Creative Commons License
이올린에 북마크하기(0) 이올린에 추천하기(0)

현재 회사 생활 한마디로..

회사생활 2008/08/07 21:02 posted by 과묵

재미없음..

크리에이티브 커먼즈 라이선스
Creative Commons License