BLOG main image
분류 전체보기 (68)
excel.101 (0)
rewind (9)
(3)
(2)
목공 (3)
(3)
me2day (0)
The Ethereal Void (9)
코드 (14)
귀찮은것 (0)
Visitors up to today!
Today hit, Yesterday hit
daisy rss
tistory 티스토리 가입하기!
2008. 10. 30. 11:45
내가 생각하는 참된 관용은, 자기 자신의 신앙에 대한 신념을 굽히지 않으면서도 동시에 모든 정직한 신앙을 허용하고 참아 주는 것이다. 진리의 일부는 알 수 있다고 믿으나, 모든 진리를 다 알 수 있다고는 믿지 않는 태도야말로 진정한 기독교적 관용의 기초이며, 모든 사람에게 호의를 가지고 평화롭게 대할 수 있는 원천이다.


- 우찌무라 간조

반응형
2008. 10. 16. 19:51
그리워요,
반응형
2008. 10. 16. 18:48
정확히 말하자면,

두 계단 아래쯤이다.

눈과 바람이 마주치는 내가 서 있는 곳,

어디로 갔을까, 나를 지나친 것들은,

서린 모습이, 

어리다.
반응형
2008. 10. 16. 14:14

어디에서 어디론가, 시간을 벗삼아 달음질 친다. 어제도, 지금도, 아닌 곳으로

거기서, 내가 전하고 싶었던 이야기들을 만나 줄을 세워 본다.

너의 이야기는 뒤로, 너의 이야기는 앞으로, 너는 먼 곳에서 흐리게 보이게,

첫 줄에 선 아이가 못내 울음을 터트린다.

"왜 울어?,"

"모르겠어, 내가 왜 우는 것인지, "

"하지만, 네가 저 사과나무에 사과를 한 개 가져다 주면 울음을 멈출 수 있을거야,"

나는 아이가 가르키는 사과나무를 바라본다, 내 눈에는 아무 것도 보이지 않았다.

하지만, 나는 사과나무를 올라, 나뭇잎을 따다 준다.

아이는 나뭇잎에서 사과향기를 맡고 흐려지다 결국 사라져 간다.

떨어진 나뭇잎은 시들어 버리고, 내 이야기들은 가을 낙엽처럼 스러져 있다.
반응형
2007. 12. 11. 11:27

잊혀질만 하면 올라오는 이야기입니다. :) 8개의 이야기중 가장 슬픈 이야기입니다. :(

7부

희생 - Julia와 시계

옛날의 Minoc은 예술가와 장인들이 모여 사는 중심지로 유명했었는데, 그 중에서도 가장 이름이 드높았던 두 명이 있었습니다.

한 명은 Jervaise라는 조각가로, 브리타니아가 낳은 가장 훌륭한 장인으로 추대받는 사람으로써, 돌이나 나무로부터 견고하면서도 실용적이고, 거기다 놀라운 예술성까지 가진 물건들을 만들어 내었습니다. Jervaise가 손으로 만든 탁상용 램프는 거대한 저택들에 놓여진 대리석 조각상이나 초상화들 보다 더 큰 값어치를 가지고 있었습니다. 다른 한 명은 좀 더 젊은, Minoc의 장인들의 수장이며, 수선공인 Julia였습니다. Jervaise가 뛰어난 예술가 라고 한다면, Julia는 뛰어난 장인이었습니다. 그녀가 만든 시계를 상처없이, 잘 간수만 한다면 수 백년동안 단 수초의 오차밖에 나지 않을 만큼 정확할 것이라 전해져 왔습니다. 그리고 그녀는 매우 난해한 작업들을 더 쉽고 정확하게 처리할 수 있는 많은 장치들을 발명하였습니다.

이 땅의 위대한 귀족들 중 하나가 복잡하면서도 아름다운 어떤 물건이 필요할 때면, 종종 Julia와 Jervaise에게 공동으로 작업을 해 줄 것을 위임하였고, 그런 협동의 결과물은 곧 전설에 남을 만한 물건이 되었습니다. Julia와 Jervaise 또한, 그들의 작업에 만족하며 일하였고, 그들의 후원자로 부터 그들이 가진 기술에 합당한 보상을 받았습니다. 그리하여, 그 둘은 Minoc에서 가장 부유한 시민이며 유명인사가 되었습니다.

어느 날 Moonglow(사치스럽고 교묘한 물건들이 크게 인기가 있는 곳입니다.)의 한 부유한 귀족으로부터 한 명의 전령이 왔습니다. (전령이 말하기를) 귀족은 그 어느 것과 비견할 바가 없는 아름다움과 복잡함을 지닌 시계를 만들어 주기를 원한다고 하였습니다. 그것은 가장 좋은 목재와 대리석으로 만들어져야 하고, 단지 시간만을 보여주는 것 뿐만 아니라, 달의 모습과 12궁도, 그리고 계절과 연도, 거기다 그 날의 날씨가 예측할 수 있어야 하며, 그런 것들을 아름다운 음악과 더불어 다양한 기계 인형의 움직임을 통해 표현되어야 한다고 전하였습니다. 그리고 계약과 더불어 큰 금액이 지불될 것이며, 재료와 그에 대한 비용, 작업 기간동안 매년 상당량의 보수, 그리고 완성이 된다면, 그에 상응하는 추가적인 큰 부를 약속하였습니다.

Julia와 Jervaise는 서로 의논을 하였고, 이 작업을 끝낼려면 6년 정도의 기간이 걸릴 것이라고 답신을 하였습니다. 전령은 곧 이 소식을 전하였고, 돈에 관한한 어떤 왈가왈부없이 첫 보수를 지불하였습니다.

현재 그 어떤 커다란 작업을 맡지 않고 있던 둘은 곧 바로 그 일에 착수하였습니다. 복잡한 계획과 스케치들을 그려 Moonglow에 있는 그들의 의뢰인에게 보내었고, 의뢰인은 그 계획에 대해 열광적인 답신을 하였습니다. 그 동안 Jervaise는 시계의 외관이 될 값 비싼 재료를 주문하였고, Julia는 시계의 핵심이 될 기계 장치를 작업하기 시작했습니다.

2년 뒤, 시계는 점차 그 멋진 모습을 갖추어 가고 있었고, Julia는 이 시계가 생각했던 것보다 더 빨리 그들의 의뢰인에게 배달될 것으로 생각하고 있었습니다. 그러던 어느 날 Moonglow로 부터 전령이 짧막한 내용만을 담은 편지를 가지고 왔습니다. 그것은 그들의 의뢰인이 열병으로 인해 죽었다는 것과, 그의 모든 재산이 그의 누이에게 넘어갔다는 것이었습니다. 그 누이는 의뢰인의 취향과 달리 그러한 장식품에는 어떠한 관심도 없으므로, 시계가 완성될 때까지 지불하기로 했던 돈을 더 이상 주지 못하겠다는 것, 그리고 계약 파기에 대한 보상으로 완성되지 않은 시계와 그에 대한 값비싼 재료들은 그대로 가져도 좋다는 내용이었습니다.

그 소식을 전해 들은 Julia는 오랫동안 그녀답지 않게 욕을 퍼부었습니다. 하지만, 결국 그녀는 지난 2년동안 (비록 시계가 완성되지 못한 것을 슬픈 일지만) 이 일 덕분에 좋은 수입을 올렸다는 것에 만족하기로 하였습니다. 그리고 곧 그녀는 다른 이들에게 계획하도록 위탁했었던 일들의 설계도에 대한 답신을 하기 시작했습니다. 그러나 Jervaise는 한 숨을 쉬며, 늦은 밤까지 완성하지 못한 시계를 바라보며 앉아 있었습니다.

몇 일후 Jerviase는 Julia에게 시계의 재료들을 팔아버리는 대신, 그가 시계의 새 주인을 찾아봐도 되겠냐고 부탁해 왔고 그녀는 그 시계를 다시 쳐다보는 것조차 싫었기 때문에 그의 부탁에 동의하였습니다.

그 다음 해까지 그녀는 Jervaise에 대한 소식을 거의 듣지 못하였습니다. 그는 다른 일을 하고 있다고 하면서 그녀의 모든 공동 작업에 대한 부탁을 정중히 거절하였고, 그녀가 그에게 시계의 새로운 구매자를 찾았냐고 물어봤을 때, 그는 슬픈 표정으로 고개를 가로저을 뿐이었습니다.

그러던 어느 날 Julia는 용건이 있어 마을 외곽의 광산에 가게 되었습니다. 그리고 거기서 그녀는 뜨거운 태양하래 광물 수레를 끌고 있는 Jervaise를 보았습니다. Minoc은 항상 노동자를 필요로 하고 있었는데, 그 곳은 그 도시에서 가장 힘든 일에 대해 가장 낮은 임금을 주는 곳이었습니다. Jervaise는 뜨거운 열기때문에 허리 위로는 모두 벗고 있었고, 뜨거운 날씨로 인해 그을린 살갗위로 고통스러울 정도로 갈비뼈가 튀어나와 있었습니다. Julia는 그 광경에 너무 놀라, 그녀가 본 것을 믿기가 힘들었습니다. 곧 그녀의 친구가 끌던 수레는 그의 힘없는 손아귀에서 미끄러져 굴렀고, 그는 허기와 극도의 피로로 인해 바닥위로 무너져 내렸습니다. 쓰러진 그에게 현장 감독은 게으르고 쓸모 없는 놈이라며 흔들며 고함을 쳤고, Julia는 분노와 저주를 감독에게 퍼부으며 그 친구 앞을 가로 막아섰습니다. 곧 그 감독은 물러섰고, 그녀는 광산 노동자 두 명을 사서 Jervaise를 마을에 있는 그녀의 집으로 데리고 왔습니다.

몇 일 동안 그는 알 수 없는 헛소리를 하며 의식을 잃고 누워 있었습니다. Julia는 그에게 묽은 스프와 물탄 포도주를 먹이며 간병을 하였고, 겨우 그는 의식을 회복하게 되었습니다. 그는 그 계약이 파기된 후에도 그에게 그 시계는 진정한 걸작이었기 때문에 그것을 완성하는 일을 포기할 수 없었다고 고백하였습니다. 그러나 어느 누구도 그러한 사치스러운 물건을 살려고 하지 않았기에, 그는 모든 다른 일을 거절한 채, 먹을 것정도를 사기 위해 필요한 경우만 일을 하며, 시계에 매달리다가, 파산 상태에 이르렀고, 먹을 것을 구하기 위해 하는 일조차 할 수 없을 정도로 약해져 버린 것이었습니다.

Julia는 그의 고백에 놀랐습니다. 그리고 오랫동안 그의 고집을 꺽고, 시계에 대한 작업을 그만 두도록 하기 위해 설득하였지만, Jervaise는 참을성있게 한참 동안을 듣고 있다가 고개를 가로저으며,

"친구여, 보이지 않나? 돈은 아무 것도 아니라네, 오직 저 시계만이 나의 전부라네.."

라고 말할 뿐이었습니다.

결국 Julia는 진저리를 치며, 포기하고, 대신 Jervaise에게 매일 먹을 것을 가져다 주기로 하였습니다. 한 때 Minoc에서 가장 부유한 사람이 될 뻔했던 그는, 겨우 끼니만 면하는 가난한 신세로 전락하게되었습니다. 그는 매일 같이 시계를 완성하는 작업에 매달렸지만, 그 일을 도와 줄 조수를 고용하여 쓸 돈이 없었기에 작업은 더디게 진행되어 갔습니다.

다시 2년이 지났습니다. Julia의 하녀가 Jervaise의 저녁을 들고 그의 작업장 문을 두드렸지만, 아무런 인기척도 없었습니다. 하녀가 문을 열고 들어갔을 때 발견한 것은 시계 앞에 쓰러져 죽어 있는 Jervaise였습니다. 그의 손에는 작은 망치와 끌이 쥐어져 있었고, 얼굴에는 알 수 없는 미소가 띄어져 있었습니다. 그의 곁에서 유서가 발견되었는데, 모든 것을 Julia에게 남긴다는 내용이었습니다. 그 모든 것은 Jervaise의 낡은 작업장과, 그의 도구, 그리고 아직 완성되지 못한 시계였습니다.

그 날, 그의 장례를 치르고 난 뒤, Julia는 홀로 작업장으로 갔습니다. 거기서 천천히 복잡하게 조각된 시계함을 만져보며, 그녀는 아직 작업이 필요한 몇몇 부분을 찾아내었습니다. 그녀는 Jervaise가 만든 작고 화려한 조각들을 정말 애지중지하였고, 처음 이 일을 시작할 당시 그것들에 기계장치를 달아 생명을 불어넣겠노라고 생각했던 것을 떠올렸습니다.

그녀가 작업장을 나오자 마자, Britain으로 부터 온 전령이 그녀에게 말을 걸었습니다. 내용은 Lord British가 그녀에게 새로운 종류의 망원경을 만들어 줄 것을 부탁하는 것이었습니다.

"감사한 일지만.." 그녀가 대답했습니다.

"그러나 저는 지금 꼭 마무리져야 될 일을 하나 맡고 있습니다. 만약 Lord British께서 원하신다면 3년 뒤에 다시 요청을 해주셨으면 합니다."

다음 3년 동안 Minoc에서 Julia를 본 사람은 거의 없었습니다. 그녀는 어떤 방문자도 받지 않았고, 그녀에게 음식과 집안 청소정도를 도맡아 줄 늙은 아주머니 한 분을 제외한 모든 하인과 수련생들을 해산시켰습니다. 그녀 자신의 작업장도 비운 채로 그녀는 이전에 Jervaise의 것이었던 작업장에서 홀로 일하였습니다.

3년이 지난 뒤, 그녀는 커다란 좌물쇠를 Jervaise의 작업장 문에 채웠습니다. 그리고 다시 그녀의 일을 도와줄 사람들을 구하였고, 그녀가 다시 작업을 하기 시작할 것이라고 알리도록 하였습니다. 그녀는 곧 이전 그 어느 때보다도 바빠졌습니다. 그녀의 부재 중 동안 그녀의 명성은 하나도 빛이 바래지 않았고, 왕의 망원경도 더불어 완성하였습니다. 그리고 몇 년동안 그녀는 종종 홀로 Jervaise의 작업장에 들러 몇 시간이고 머물렀는데, 그 곳을 지나는 사람들은 오래된 그 건물에서 희미하게 흘러나오는 아름다운 음악소리를 들을 수 있었습니다. 하지만 그 안에 어떤 것이 있는지 본 사람은 거의 없었는데, 간혹 들리는 얘기로는 커다랗고 긴 상자 혹은 장롱이 두꺼운 헝겊에 덮힌 채로 한 쪽 구석에 놓여 있다고 전해졌습니다

반응형
2007. 11. 28. 20:13
뭐 관심이 있는 사람만 관심이 있을 뚱딴지같은 내용.

호출 스택입니다.

오래 전에 지뢰 찾기를 만들어 본적이 있었습니다. 기본적으로 빈 칸을 눌렀을 때, 주변에 연계된 모든 빈 공간이 열리는 부분은 현재 칸을 중심으로 팔방이 빈 공간인지를 조사해가며 열어나가면 되는데, 여기서 재귀 호출을 할 때 게임 영역이 일정 수준 이상이 되면, 스택 오버플로우가 일어나더군요.. 그래서 아래와 같은 테스트 코드를 작성하였습니다.

var sc = 0;
try
{
	(function recursive_stack_test()
	{
		recursive_stack_test(++sc);
	})();		
}
catch (e) 
{
	document.writeln("stack count -> " + sc);
}
 

현재 브라우져에서 위의 테스트를 누르면 결과가 나옵니다.. 몇몇 다른 블로그에서 확인한 결과 값과 조금 씩 다른데 그 현상에 대한 기록을 조사해 보았습니다.

먼저 IE의 경우에는 Eric Lippert에 따르면..
function context에 진입할 때마다 새로운 "activation" frame이 JScript 스택에 쌓이게 된다. 이 JScript 스택은 힙영역에 위치하기 때문에 그다지 문제가 되지 않지만, 이와 동시에 새로운 인터프리터의 사본도 생성되어 시스템 스택영역에 위치하게 되는데, 이는 수 백 바이트 정도를 차지하며, 가용한 시스템 스택의 크기가 1,000,000 Bytes 라고 할 때 순식간에 이 용량을 소비하게 된다..
라고 하였습니다. 직접 실시한 브라우져마다 테스트 결과는
  • Internet Explorer 6 : 900~1200
  • Internet Explorer 7 : 1700~
  • FireFox 2.0.0.4 : 1000 (1001) (!) 고정
  • FireFox 3.0b2pre : 245160 (Wow)
  • Opera 9.24 : 3300+
  • Safari 3.0.4 : 499 (500)
FireFox의 경우 1000 (fencepost 1001)에서 고정되는 현상은 버그질라에 많이 올라와 있습니다. 위에 3.0에 보시면 아시겠지만, 이미 버그 처리되어 수정된 사항입니다.

Safari의 경우 원래 제한이 100(fencepost)이었습니다. 몇몇 웹 어플(gmail 같은..)데서 "Maximum call stack size exceeded" 에러가 버그 리포팅되어 수정된 현재가 500입니다. (근데 이것도 모자르지 않나요?)

기본적으로 FireFox 3.0b2pre를 제외하고는 상황에 따라서는 고정된 재귀 호출 스택 제한을 고려해야 됩니다. 특히 Safari의 경우는 문제가 좀 있죠. :(

참고가 되셨으면 합니다.
반응형
2007. 8. 29. 11:23
[System.Threading.Timer] 만약에 특정 시간에 어떠한 작업을 수행할려고 하면 어떻게 해야 될까? 기본적으로 프레임워크상에 Timer Class를 제공하기 때문에 우리는 그다지 크지 않은 노력을 통해 이를 사용할 수 있다. 하지만, 간혹 가다 이러한 Timer를 잘못 사용하는 경우가 있다.

서두에 밝힌 것처럼 매일 "오전 09:00"에 특정 작업을 수행하고 싶다고 할 경우, 어떠한 사람들은 Timer를 사용하여 매 초, 혹은 일정 주기 간격으로 시간을 확인하는 작업을 수행하여 현재 시간과 특정 작업이 일어나야 될 시간을 비교하여 시간이 지났거나, 같을 경우 작업을 실행한다. 하지만 이는 낭비이다. 유저에게 특정 간격으로 Notify를 줄 필요성이 없다면 굳이, 주기적인 Timer를 다시 주기적으로 실행되도록 할 필요는 없다. 이는 꼭 "역전"이라고 표기해야 될 것을 "역전앞"이라고 표기하는 것과 마찬가지이다.

이러한 "낭비"를 없애기 위한 간단한 방법은 간단하게 dueTime을 계산해 주는 방법이 있다.

현재 시간이 09:00이고 특정 작업이 실행되어야 할 시간이 10:00라면 1시간을 dueTime으로 넣어주면 원하는 시간에 특정작업이 한번 실행된다. 만약 24시간 주기로 특정 시간에 특정 작업을 해야 된다면, Timer의 실행 주기를 24시간을 넣어주면 된다.

public delegate void stCallBackDelegate();

    public class ScheduledTimer
    {
        private Timer _timer;

        public ScheduledTimer() { }

        public static TimeSpan GetDueTime(TimeSpan A, TimeSpan B)
        {
            if (A < B)
            {
                return B.Subtract(A);
            }
            else
            {
                return new TimeSpan(24, 0, 0).Subtract(B.Subtract(A));
            }
        }

        public void SetTime(TimeSpan _time, stCallBackDelegate callback)
        {
            if (this._timer != null)
            {
                // Change 매서드 사용 가능.
                this._timer.Dispose();
            }

            TimeSpan Now = DateTime.Now.TimeOfDay;
            TimeSpan DueTime = GetDueTime(Now, _time);
 
            this._timer = new Timer(new TimerCallback(delegate(object _callback)
            {
                ((stCallBackDelegate)_callback)();
            }), callback, DueTime, new TimeSpan(24, 0, 0));
          }
    }
기본적으로 TimeSpan 클래스는 "시간의 길이"를 나타낸다. 즉 9시간에 24시간을 더하면 33시간, 1일 9시간이 된다. DateTime.Now.TimeOfDay는 해당 날짜의 0시부터 현재 시간까지의 길이를 돌려준다. 즉 TimeSpan 클래스를 사용하면서 착각해서는 안되는 부분은 9시간에 24시간을 더하면 24시간 주기로 다시 9시가 될 것이라는 생각이다. 우리가 원하는 스캐쥴러는 이러한 방식이 필요하다. 즉 현재 시간이 오전 11시이고, 특정 작업이 실행되어야 할 시간이 이미 지난 시간이 오전 9시라면, 지연되어야 할 시간은 22시간이다.

작업 예약 시간이 현재 시간보다 나중이면 간단하게 현재 시간에서 예약 시간을 빼면 지연되어야 할 시간이 계산된다. 하지만 반대로 예약 시간이 이미 지난 시간이면, 마이너스 시간 길이가 나오는데, 이를 dueTime에 넣어주면 Timer는 Disable상태가 되어 버린다. 고로 위와 같은 방법으로 지연시간을 계산하여야 한다.
반응형
2007. 8. 29. 09:36
간혹가다 두 개의 독립된 Process간의 통신이 필요한 경우가 있다. 기본적으로 .NET Remoting을 통해 구현을 할수도 있겠지만, 좀 더 간단한 구현을 원할 경우에는 Process 클래스에서 제공하는 표준 입출력 Redirection을 통해 두 개의 프로세스간에 메세지를 교환할 수 있다.

ProcessStartInfo psi = new ProcessStartInfo();
psi.FileName = "Program.exe";
psi.RedirectStandardOutput = true;
psi.UseShellExecute = false;

Process TargetProgram = new Process();
TargetProgram StartInfo = psi;
TargetProgram.OutputDataReceived += 
new DataReceivedEventHandler(TargetProgram_OutputDataReceived);

TargetProgram.Start();

//대상 프로세스의 표출 출력을 읽어들인다.
TargetProgram.BeginOutputReadLine();

void TargetProgram_OutputDataReceived(object sender, DataReceivedEventArgs e)
{    
    if (!String.IsNullOrEmpty(e.Data))
    {
         Console.WriteLine(e.Data);
    }
}
// "Program.exe"
Console.WriteLine("Hello :)");
반대의 경우로 송신을 원할 경우에는 대상의 표준 입력을 재설정하고, 표준 입력 스트림에 메세지를 송신하면 된다.
TargetProgram.StartInfo.RedirectStandardInput = true;
StreamWrite sw = TargetProgram.StandardInput;
myStreamWriter.WriteLine("Hello ;)");
반응형
2007. 8. 8. 11:05
System Wake-up Events

원래의 목적은 SetSuspendState를 통해 Standby 상태로 진입시켜 놓고 Wake up Event를 발생시켜 활성상태로 복귀시키는 것이 목적이었다. MSDN에서는 Waitable timer를 통해 이러한 과정을 진행시키는 내용을 명기해 놓았고, 몇몇 자료에서 .NET 환경에서 Waitable timer는 System.Threading.Timer와 대응하기 때문에 이를 통해 Wake up Event를 발생시킬수 있다고 나와있으나, System.Threading.Timer도 API의 Waitable timer도 Standby 상태에서 자동으로 활성상태로 복귀시켜주지 않았다.

일단 주 목적은 모니터를 끄는 것이었기 때문에, 시간 관계상 SendMessage를 통해 모니터를 제어하는 수준에서 처리 하였다.
const int WM_SYSCOMMAND = 0x0112;
const int SC_MONITORPOWER = 0xF170;

const int MONITOR_ON = -1;
const int MONITOR_OFF = 2;
const int MONITOR_STANBY = 1;

[DllImport("user32.dll")]
private static extern int SendMessage(int hWnd, int hMsg, int wParam, int lParam);

/* ... Turn Off ... */

SendMessage(this.Handle.ToInt32(), WM_SYSCOMMAND, SC_MONITORPOWER, MONITOR_OFF);

반응형
2007. 6. 19. 21:26
안녕하세요. :) 다시 간만 입니다. 지난 주에 맥북을 구매했는데, 맥북으로 처음 작성하는 포스트군요. 적응이 잘 안되서 이래저래 힘듭니다. :( 이번 이야기는 Jaana입니다. Jaana는 실제 핀란드인으로써 법률쪽 일을 하던 리차드의 친구라고 합니다. 이름도 같고요. 뭐 이렇게 생각하면 울티마에는 실제 픽션으로 만들어진 인물보다 실제 실존인물을 바탕으로 만들어진 인물이 더 많군요. 짬짬히 오역을 하는데도 다음 글까지 나오는 텀이 점점 길어지네요. 으흑. 다음 이야기는 개인적으로 가장 좋아하는 이야기인데, 빨리 올리도록 하겠습니다.


6부

정의 : Jaana와 고블린


당신은 드루이드 공동체의 주된 사명이 정의의 미덕이라는 것을 아마 아실겁니다. 그리고 그들은 고대로부터 대법정의 수호자들이었습니다. 지금은 사라졌지만, 그들의 오래된 관습중에는 왕의 명의으로 방랑을 하며, 대법정의 대리인으로써 정의를 수호하기 위한 여행을 하던 때가 있었습니다. 대법정에 세우지 않아도 될 만한 많은 사건들이 그런 여행에서 판결이 내려지곤 했었습니다. 제가 말하려는 이야기도 바로 그 때를 배경으로 하고 있습니다. Jaana는 그러한 드루이드중 하나였고, 젊고, 강한 여성이었습니다. 그리고 또한 방랑 생활에 대한 어떤 두려움도 없었기 때문에, 그녀의 상관들은 기꺼이 그녀에게 더 넓은 야생지역을 관할하도록 맡기었습니다. 그녀는 여행하면서 수 많은 작은 마을과 촌락들을 거의 일년에 두 세번이 넘게 방문하였습니다.

그 일은 그녀가 맡고 있던 지역에서 비교적 큰 마을 - 산으로 둘러쌓인 요새 - 에서 일어 났습니다. 마을은 그 지역에 있는 고블린 부족과 피 비린내나는 전투를 치루고 있던 중이었습니다. 전투의 목적은 바로 협곡의 길에서 고블린들이 지나가는 상인들을 약탈하는 것을 막고, 안전을 보장해 주기 위함이었습니다. 이러한 분쟁의 주된 견인차는 바로 수 년간 그 길을 지나는 모든 사람들을 벌벌떨게 만든 뛰어난 지략과 야망을 가진 고블린 대장때문이었습니다.

어느날, 한 무리의 순찰대원들은 그다지 많지 않은 무리의 고블린들과 마주쳤습니다. 그들은 그다지 무장을 하지 않은 터라, 즉시 제압할 수 있었습니다. 하지만, 놀라운 일은 그 다음에 벌어졌는데, 전투가 끝난뒤에 그들이 발견한 것은 여전히 살아는 있지만, 힘없이 쓰러져 있는, 이 모든 분쟁의 주범인 고블린 대장이었습니다.

기쁨에 가득한 채 포로를 이끌고 마을로 돌아가는 길은 그들에게 그렇게 멀게만 느껴졌습니다. 고블린 대장없는 저 산의 고블린 부족들은 곧 몰락할 것이고, 다시 그들의 손에 안전과 평화가 보장될 것이었기 때문이었습니다. 그렇게, 고블린 대장을 마을로 데리고 왔을때, 마을 사람들은 바로 큰 축제를 시작하였습니다. 축제를 치르는 동안 많은 음식이 소비되었고, 그들이 먹어치운 음식보다 더 많은 술 역시 없어져 갔습니다.

 그렇게 술을 마시며 흥청거리며 떠드는 동안에 이야기가 오간 가장 주제는 어떻게 포로로 잡은 적들을 처리할 것이냐 하는 것이었습니다. 즉흥적인 이 축제가 계속되는 동안, 고블린을 어떻게 죽일 것이냐에 대한 계획은 점점 비현실적이고, 복잡해져만 갔습니다.

바로 그런 분위기 속에서, 드루이드인 Jaana는 그 마을에 도착하고 있었습니다. 그 때 마을 사람들의 생각은 점점 한 가지로 치닫고 있었는데, 그것은 그 짐승같은 포로를 그들의 문명화된 재판을 통해, 왕의 정의 아래 처형을 한다면 정말 좋겠다는 것이었습니다. 그리고, Jaana가 마을의 입구에 도착하기도 전에, 그들은 그렇게 실행하기로 결정했습니다.

마을에 도착하자마자, Jaana는 냄새나고, 이를 드러내며 웃고 있는, 무리들과 맞딱드리게 되었습니다. 그들은 그녀에게 조롱이 섞인 말투로 악명높은 살인마가 잡혔고, 곧 정의의 심판을 위해 그녀앞에 데려올 것이라고 이야기했습니다.

Jaana 는 마을 전체가 지나치게 흥청망청 들떠 있는 것과, 이 시원한 맥주 한잔을 먼저 드시고 정의의 판결을 내려 달라고 권하는 모습에, 점점 불쾌해지기 시작했습니다. 그럼에도 불구하고, Jaana는 마을 사람들중에 그 동료들보다 좀 더 높은 지위에 있음직한 사람을 골라내어 이 사건의 전체의 전말을 털어놓게 만들었습니다.

사건의 모든 이야기를 듣고 나서 Jaana는 사람들을 단념시키기 위해 말하기 시작했습니다

"보십시요! 오늘 왕의 재판은 없을 것입니다!"

" 이 고블린은 전쟁중에 잡혀왔습니다. 전쟁은 명예와 용기로 다스려지는 것이지, 정의가 판단할 것이 아닙니다. 만약 당신들이 적들 전투중에 죽였다면, 그것은 명예로운 업적이 될것입니다. 바로 지금도 만약 도시의 의원들이 그들의 서약에 따라 죽음을 선고한다면, 그것은 마을의 어린아이들과 여행자들의 안전을 위한 동정의 결정일 것입니다. 만약 당신들의 결정이 법적으로 문제가 없고 정의로운 결정이라면 당신들의 뜻대로 하십시요. 그러나 나는 이 고블린에 대한 어떤 재판도 필요없다고 생각하고, 또 이 일로 인해 나의 지위의 품위를 떨어뜨리지도 않을 것입니다."

몇몇은 Jaana의 말에 동의하고 물러섰으나, 술에 취해 정신이 없던 대다수는 그들의 재밋거리가 사라지자 몹시 격노하기 시작했습니다. 그리고 몇몇 마을의 젊은 선동자들은 그것은 그들 자신들이 결정할 문제라고 이야기하고, Jaana가 왕의 재판 아래 그들이 그들 공동체를 수호할 권리를 거부했다고 떠들기 시작했습니다. 그리하여, 불과 수 분만에 Jaana는 다시 전보다 더 수가 많으면서 더욱 화가 나 있는 무리들과 대면해야하는 상황에 놓이게 되었습니다. 그리고 그들은 Jaana에게 왕의 재판 아래 고블린을 세워줄 것을 요구했습니다. Jaana는 더 이상의 논쟁의 모두에게 위험하고, 아무런 소용이 없을 것임을 깨닫고, 그들이 요구한 왕의 재판을 거절할만한 다른 적절한 대안을 찾아야 겠다고 생각하였습니다. Janna는 그의 머리를 덮고 있던 심판의 두건을 내리고는, 고블린을 그녀 앞으로 데리고 오라고 명령했습니다. 그리고 말했습니다.

"이 고블린은 법에게 맡겨졌으니, 이제 그 생명은 재판의 결과아래 놓여질 것입니다. 그런고로, 지금부터 그 누구도 정의의 판결이 내려지기 전까지 이 고블린에게 해쳐서는 안됩니다."

말을 마치고, 그녀는 고블린을 귀중품들을 보관하는 튼튼한 창고에 가두고, 문 근처 있던, 술에 취하지 않고, 가장 강직해 보이는 병사들에게 다음 날 아침 재판까지 감시하도록 명령했습니다.

다음 날 아침, 고블린은 Jaana앞으로 이끌려 나왔고, Jaana는 왕의 정의 재판이 시작되었음을 선포했습니다. 그녀는 수 시간동안 앉아서 대장 고블린과 그의 부족들의  발톱아래 살해당하고 약탈당한 많은 마을주민들의 자세한 이야기들과 증거들을 침묵속에 듣고 있었습니다. 그것은 정말 끔직한 기록들이었습니다.  Jaana가 고블린 대장에게 스스로 변론하기를 원하는가하는 것을 묻자 그는 단지 분노에 차 침을 뱉을 뿐이었습니다. 그리고 마을 주민 그 어느 누구도 그를 위한 변호를 맡으려 하지 않았습니다.

결국 Jaana는 손을 들어 지금하는 판결이 법적 구속력이 있음을 나타내고 사람들에게 공표하였습니다.

"이 고블린은 어떤 법도 위반한 것이 없습니다. 그가 고소된 것은 그들의 본성이자, 그 종족의 습성에 따라 당신들의 마을을 공격한 것입니다. 그것은 유죄로 선고받을 만한 행위가 아닙니다. 고로 그는 자유입니다."

사람들은 놀랐습니다. 그리고 그 말에 대해 분노하며, Jaana의 판결에 대해 비난을 하기 시작했습니다. 그리고 판결에도 불구하고 고블린을 끌어내어 사형시킬것을 요구하였습니다. 그러자 Jaana는 일어서서 그녀의 두건을 벗어넘겼습니다. 그녀의 분노의 무게에 짓눌린 군중들은 일순간에 조용해졌습니다.

"이 자리에 교수형따위는 없다!" 드루이드가 선언하였습니다.

"나는 어제 너희들에게 합법적으로 이 고블린을 죽일 수 있는 기회를 주었다. 그러나 너희는 너희 자신을 만족시키기 위한 재판을 요구하며, 이 고블린을 재판에 맡기었다. 이제 너희 뜻대로 법의 판결아래 모든 것이 놓여졌으니, 누구든 나의 판결을 기만하려는 자가 있다면, 무거운 법의 심판이 이 마을에 임할 것이며, 모든 미덕의 축복을 몰수당할 것이다!"

몇몇은 Jaana의 목까지도 내놓을 것을 요구했으나, 대다수의 마을 주민은 이미 밤새 마신 술이 깨어버린 상태였고, 그들의 무례함이 얼마나 도를 넘었던 가를 깨닫기 시작했습니다. 그제서야 그들은 법에 대한 복종에 따라 Jaana의 판결을 이행하는 것에 동의하였고, 비로소, 동정을 넘어선 미덕의 승리가 이루어지게 되었습니다. 그러나 한가지 큰 불만이 있었으니, 바로 고블린의 왕을 놓아 준다는 사실이었습니다. 그로 인해 그들의 목숨과 재산을 희생했던 이 오래된 전쟁이 새롭게 다시 시작된다는 것은 자명한 일이었습니다.

  그리하여, Jaana는 사슬에 묶인 고블린을 마을을 나가는 입구로 이끌고 갔고, 사슬을 풀어 줄 수 있는 열쇠는 그녀의 손에 쥐어져 있었습니다. Jaana는 고블린을 놓아 줄 때, 그 누구도 암살할려는 시도를 하지 못하도록, 모든 사람들에게 그녀가 서 있는 곳으로 부터 화살이 미치는 거리보다 5배나 멀리 떨어질 것을 명령하였습니다. 사람들이 멀리 물러서자, 그녀는 고블린의 사슬을 풀어주었습니다. 그리고 단검 한 자루를 그에게 주고가도 좋다는 표시를 했습니다. (어떤 생명체라도 자신을 보호할 수 있는 장비없이 야생에 풀어주는 것은 불법이었습니다.)

비탄에 잠긴 사람들의 울음을 뒤로  한채, 그 고블린은 성큼성큼 몇 걸음을 걸어 나가다가 갑자기 멈춰서서 살의에 가득찬 표정으로 뒤를 돌아 보았습니다. 그리고 거의 무장도 하지 않은 한 여자가 홀로 서 있는 것을 보자 인간들에 대한 증오가 넘쳐나 잔악하게도 Jaana를 향해 공격을 해오기 시작했습니다. Jaana는 그녀의 검을 빼어 들어 단독으로 맞써 싸웠고, 비록 큰 상처를 입기는 했지만, 고블린을 죽일 수 있었습니다. 그것은 정당한 자기 방어행위였습니다.

높은 고개로 부터 내려왔을 때, 그녀는 놀란 마을 주민들에게 아무 말도 하지 않았습니다. 그리고는 상처를 치유하기 위해 마을로 발길을 돌리지 않고, 아무런 말도 남기지 않은 채 곧장 마을을지나 왕의 공로를 향해 걸어내려 갔습니다.

그리고 그 다음에 마을에 재판을 주관하기 위해 온 드루이드는 Jaana가 아니었습니다.

반응형