좀비PC의 접속 제한


http://www.dt.co.kr/contents.html?article_no=2009090802010151739002



http://www.etnews.co.kr/news/detail.html?portal=001_00001&id=200909070221

뭐…흥미로운 결과가 나올 것 같다.

감염 확인 솔루션은 뭘 쓸건지 (아마 윈도 전용?)

감염되어있는지 아닌지 확인할 수 없는 경우 어떻게 할 것인지 (무조건 접속 차단?)

그럼 해외 접속자는 어떻게 처리할 건지 (접속 차단?)

시행 되면…

우리나라는 100%의 가능성으로 인터넷 불모지가 될 것 같다. 컴퓨터는 더 느려질 것이고, 인터넷은 더 비싸진다. 물론 윈도의 점유율은 지금보다 더 올라갈 것이다.

무슨 근거로 이런 주장을 하냐고 물어보면, 별다른 근거는 없다. 하지만 이 정책을 추진하는 자들이 과연 윈도우 이외의 운영체제를 알기나 할까, 인터넷 익스플로러 이외의 웹 브라우저를 구경이나 해봤을까 싶다.

컨트롤 룸

내가 일하고 있는 연구실에서는 양성자 발생 실험을 하기 때문에 실제 실험을 하면 각종 방사선이 뿜어져 나온다. 따라서, 방사선으로부터 유발되는 각종 질병을 피하기 위해서 실험 중에는 실험실 안에 아무도 없어야 한다.

물론 방사선 뿐만 아니라 사용되는 레이저가 워낙에 강하기 때문에 그 레이저를 피하기 위해서라도 아무도 없어야 한다. 그럼 실험은 어떻게 할까?

실험은 건물 2층에 별도로 마련된 컨트롤 룸에서 진행된다. 컴퓨터를 이용해서 원격으로 모든 것을 통제하는데, 다음과 같이 생겼다.


(이 사진은 내가 직접 찍은 것이며, 인터넷에 올려도 된다는 허락은 구두로 받았다. 다만 절대로 다른 곳에 유포하지는 않았으면 좋겠다. 혹시 이 사진을 퍼가고 싶은 사람은 나에게 이메일로 문의 후 사용 바란다. Please let me know if you want to use this photo.)


이 컨트롤 룸의 특징은, 내가 프로그램 설치를 했다는 점이다. (너무나 특징적이지 않은가…)

그중, 가장 앞쪽으로 보이는 6대의 모니터 밑에는 사실 6대의 모니터가 더 있다. 그리고, 옆에 벽에 붙어있는 12대의 모니터는 컴퓨터 3대가 4개씩 제어한다.

이 수많은 모니터를 한번에 제어하기 위해서 시너지Synergy 프로그램을 이용했다.

적당한 세팅을 통해서, 총 6대의 컴퓨터에 붙어 있는 24개의 모니터를 하나의 마우스와 키보드로 제어하게 한 것이다. 나도 시너지가 이렇게 강력한 프로그램이 될줄은 몰랐는데, 써보니까 멀티 모니터, 멀티 컴퓨터 환경에서 너무나 유용한 프로그램인 것 같다.

터치패드 드라이버

노트북의 터치패드를 자동으로 켜고 끌 수 있는 드라이버가 있으면 좋겠다. 가령, 열심히 노트북 키보드를 두드리고 있는 동안에는 터치패드의 입력이 잠시 멈추어서 손바닥으로 터치패드를 치게 되더라도 눌려서 포커스가 다른데로 가 버리는 일이 없는, 그런 기능이 있었으면 좋겠다. (소원이랄까.)

가령, 2초 이상 키보드 입력이 없으면 다시 터치패드를 입력 가능한 상태로 만들고, 특정 키 입력 이후 1초 이내에 다시 키보드 입력이 들어오면 터치패드를 입력 불능 상태로 만들어서 그러한 오류를 줄이는 것이다. 지금은 수동으로 켜고 끄고 해야 하는데, 이거 사실 좀 불편하다. 물론 외부 마우스를 따로 쓰고 언제나 꺼둔다면 해결되는 문제이긴 하지만 마우스를 언제나 들고다닐 수 있는 것도 아니고 어쨌든 이런 기능도 있으면 좋지 않겠나 하는 생각이 든다.

다이하드4

케이블 TV에서 하는걸 봤다. 중간부터 봐서 대체 걔들이 왜 싸우고 있는지는 모르겠지만 -_-;

액션이 볼만하긴 했는데, 마지막 엔딩이 재미가 없다.

액션영화라기보다는 재난영화에 가까운 장면도 몇개 보였다.

인체의 신비와 자료구조

여러가지 자료구조가 있다.

큐, 스택, 그래프, 트리, 배열, 연결 리스트 등이 유명한 자료구조이다.

큐와 스택은 자료를 쌓아놓는 방법을 말하는데, 먼저 들어간 놈이 먼저 나오면 큐, 나중에 들어간 놈이 먼저 나오면 스택이다.

우리 몸에서 음식을 처리하는 과정은 큐를 통해서 이루어 지는데, 그것은 먹은 순서대로 싼다는 사실을 보면 알 수 있다. 반면, 가끔은 스택처럼 처리하기도 한다. 너무 많이 먹으면 나중에 들어간 놈이 먼저 입으로 나와 버리는 사고가 터진다.

인체의 구조는 그래프이다. 혈관을 보면 점과 점을 잇는 선으로 구성된 것을 알 수 있다. 그래프는 점과 선으로 이루어진 것을 말한다. 그중에서, 고리가 하나도 없는 것을 트리라고 한다. 고리는 어떤 점에서 출발하여 한번 갔던 길을 되돌아오지 않고도 원래의 점으로 되돌아올 수 있는 경로를 말한다. 트리 중에서 가장 중요한 1개의 점을 정할 수 있다면 뿌리가 있는 트리가 된다.

배열은 정보를 늘어놓고서 인덱스를 통해서 접근할 수 있는 것을 말한다. 가령, “몇번째 정보”라고 말하면 어떤 정보인지 알 수 있는 것을 배열이라고 한다. 우리 몸에서는, 가령 치아의 위치가 배열처럼 되어 있다. (실제로 배열이다.) 연결 리스트는 배열이랑 비슷하긴 한데, “다음번의 다음번의 다음번 정보”라는 식으로 상대적인 위치만을 알 수 있는 자료이다. 이것은 신경망과 비슷한 자료구조이다. 신경세포들은 자신이 몇번째 신경세포인지는 알지 못하고, 단지 받은 신호를 적당히 처리해서 다음번 신경세포로 넘겨줄 뿐이다.

Melotopia재탕계획

에반게리온은 수없이 많이 우려먹어지면서 사골게리온이라고 불리운다. 나의 소설도 사골토피아…라고 불리어질 정도로 우려먹을 수 있을 것인가. 그래봐야 아무도 보지 않는 소설을 개정해서 내놓는 거니까 그다지 상관은 없을 것 같다.

일단은 아레스의 학교 생활을 보강해서 적어야 할 것 같다. 왠지 모르게 호그와트 마법학교에 다니는 해리 포터같은 느낌이 들지만, 솔직히 해리 포터보다 아레스가 먼저 태어났다. -_-;

(말하고보니 올해가 멜로토피아를 쓰기 시작한지 12년째니까, 작품상에서의 아레스 나이랑 같다.)

예전에 멜로토피아를 동네 책방 누나에게 보여줬었는데, 시놉시스같은 느낌이 들고 스토리 자체는 재밌는데 좀 더 보강할 필요가 있다는 평을 들었다. 그땐 그 얘기가 왜 그런지 몰랐는데, 지금 다시 읽어보니까 나도 그런 얘기를 해주고 싶다. 완전 쓰레기…

어쨌든 이건 보강 수준이 아니라 완전히 다시 쓰는 수준의 작품이 될 것 같다. 내용상 좀 더 짜임새 있는 현대 소설같은 느낌이 들기 위해서는 아레스가 왜 영웅이 되어가는지를 잘 서술해야만 하기 때문이다. 물론 고전 소설처럼 우연에 우연이 겹치는 그런 스토리를 싫어하는건 아니지만 (사실 선호하는 편이다.) 내부적인 논리는 갖추어야 좀 더 소설에 몰입하게 되지 않을까.

쓰면서 생각나는 각종 외전 시나리오도 차츰 쌓여가고 있다. 아레스의 아빠 얘기, 누나들 얘기, 중간중간에 빼먹은 얘기, 그리고 앞으로 나올 출연진들의 역사. 멜로토피아 세계의 역사 등등. 쓰다보면 장편소설 수십권 분량의 스토리가 나올 것 같다. 문제는 돈 되는건 아니라는 점…

따라서 업데이트는 매우 늦어지게 될 수도 있다. 죽기 전에는 완결짓고 떠날테니 혹시라도 이 글을 읽는 독자가 있다면 걱정하지 않아도 된다.

Melotopia I – revised edition #1

* 97년에 처음으로 시작한 첫 판타지 소설 Melotopia를 개정하여 다시 연재합니다. 인터넷 어딘가에서 떠돌고 있는 불법복사판을 받아서 읽어보신 분들은 뭐 그냥 유치한 판타지 소설 하나 읽었거니 생각하시길 바랍니다. 물론 개정판 역시 유치함은 그대로 남아있으니 실망하지 마시기 바랍니다. 당시 유행하던 무협소설과 판타지 소설의 영향을 강하게 받았음을 부정하지 않으며 오히려 현대에 이르러서는 신선한 맛이 느껴질 수도 있는 부분이므로 스토리 진행은 그대로 갑니다.

[세계, 하나의 땅]

아주 먼 옛날, 이 세상이 만들어 졌다. 45억년 전이라 하자. 아마 대충 그때쯤 욀 것 같다. 태고부터 있었던 혼돈을 바로잡아 신은 땅을 만들었고, 그 땅에 이것저것 신경써서 생명과 물질을 창조하였다. 그리고, 땅 위를 인간계라 불렀고,그곳에는 인간이락 부르는 지적인 존재가 살았다. 세상의 혼돈은 없어졌지만 인간이 가진 마음속의 혼돈은 어떻게 하고싶지 않았다. 하지만 그 속의 악을 그대로 놔두었다간 자신에게 도전할지도 모른다는 생각이 들었다. 그래서 신은 언제 뛰쳐나올지 모르는 악을 가두기 위하여 땅 속에, 인간이 아무리 삽질을 해도 도달할 수 없는 깊은 곳에 악을 가두는 지옥을 만들었다.

인간은 생각을 할 줄 아는 생물중의 하나였고, 인간들은 세상의 모든 것을 지배하고 있다고 생각하고 있었다. 착각에 불과한 생각이지만 그것을 알지 못한 채 사람들은 차츰 오만해지게 되었다. 결국 이러한 오만함에 인간들은 자신들이 신의 능력조차도 지배할 수 있을 것이라고 생각하게 되는 지경에 이르렀다. 이것을 모를리 없는 신은 모든 인간들을 지옥으로 몰아넣고 인간계에 새로운 지적 생명체를 만들려고 했었다. 하지만 인간들에게는 다양성이라는 것이 있어서, 많은 인간들이 오만함에 물들어 있었지만 그렇지 않고 신을 경배하며 살아가는 인간들 또한 존재하였다. 그들이 서로 도우며 진화해 나가는 모습을 보려고 남겨두었는데,너무 착한 나머지 욕망이 없어서 문명을 발전시키지를 않을 것이 예상되는 것이다. 여러가지로 고민한 끝에, 인간을 모두 세 부류로 분류하여 일부는 지옥으로 내리고, 일부는 천계로 올렸다. 이러한 광경은 인간들 사이에서 전설로 전해지고 있다. 그래서 새로 만들어진 세상이 천계. 이제 이야기가 시작된다.

마계의 인간들을 악마라 칭하며 모든 악의 근원이 되리라!

인간계의 인간들을 인간이라 칭하며 모든 문명의 근원이 되리라!

천계의 인간들을 천사라 칭하며 모든 선의 근원이 되리라!

자동 눈금자 알고리즘

그래프 그리는 프로그램을 보면 눈금자가 적당히 그려진다.

가령, 그래프가 출력되는 범위가 13부터 30까지라면, 눈금자가 15, 20, 25, 30의 위치에 그려져 있는 뭐 그런거. 격자(grid)를 그린다고도 한다.

이런건 어떻게 구현 할 수 있을까?

Gnuplot같은 오픈소스 프로그램을 보면 알 수 있겠지만, 난 다른 사람이 만든 프로그램을 뜯어볼 정도로 고수도 아니고 의지도 없으므로 직접 만들어 보기로 했다.

아래의 소스는 구간의 길이를 적당히 판단해서, 1단위, 2단위, 5단위로 눈금의 위치를 출력하는 알고리즘이다.

비주얼 베이직으로 소스를 만들어 보았다. 물론 이 소스는 아마 제대로 작동하지 않을 것이며 (보안상 그렇다. 난 당연히 작동하는 소스를 이용하고 있다.) 공부한 후 직접 작동하도록 고쳐서 쓰는 것은 숙제이다.

Function determineTics(min, max) As Double()

d = max – min 일단 양쪽 끝 값의 차이를 알아서, 얼마나 긴 구간을 그려야 하는지 조사한다.

tics(0) = 0 첫 값은 그냥 0이라고 해 두자. 아무 의미 없다.

If d < 0 Then
Return tics 만약 구간 길이가 음수라면, 최대값이 최소값보다 작은 경우이므로 아무 의미 없는 값을 돌려준다.

End If

digit = CInt(System.Math.Floor(System.Math.Log10(d))) 자리수가 몇자리인지 세야 한다. 자리수는 상용로그에서 지표값이 된다. 따라서 상용로그를 계산한 후 올린다. 가령, 10은 상용로그값이 1인데 2자리수이며, 0.1은 상용로그값이 -1인데 이런건 0자리수라고 치자.

이제, 가수를 계산하자.

added = System.Math.Log10(d) – CDbl(digit) 이건 가수를 뜻한다. 가수는 상용로그 값의 소수부분을 말한다. 잘 모르겠으면 고등학교 수학 교과서에서 로그함수 부분을 찾아보도록 하자. 어떤 수의 소수부분은 당연히 그 수에서 정수부분을 빼면 된다.

If added >= 0 And added < System.Math.Log10(2) Then 만약 가수가 0보다 크고 2의 상용로그값보다 크면 눈금의 크기는 2눈금이 된다.
s = System.Math.Log10(2)

ElseIf added > System.Math.Log10(2) And added < System.Math.Log10(5) Then 마찬가지로 2의 상용로그값보다 크고 5의 상용로그값보다 작으면 5눈금이 된다.
s = System.Math.Log10(5)

Else

s = 1 나머지는 1눈금으로 가자.

End If

diff = System.Math.Pow(10, s + CDbl(digit – 1)) 이것은 눈금자 사이의 간격을 말한다.

beginning = System.Math.Floor(min / System.Math.Pow(10, digit)) * System.Math.Pow(10, digit) 이것은 최초 시작하는 값이다. 전체 구간의 시작부분보다는 큰 값이면서 눈금에 해당하는 곳을 찾아낸다.

If beginning < min Then
beginning += diff 만약을 위해, 혹시 눈금의 시작값이 구간의 시작부분보다 작다면 한칸 더해준다. 아마 한칸만 더하면 될 것이다. 두칸이나 틀릴수는 없다고 생각한다.

End If

tics(0) = beginning 이제 되돌려줄 배열의 최초값을 설정한다.

Dim i As Integer = 1 원래는 for문을 쓰고 싶었지만 구간이 도대체 얼마나 될지 알수가 없으니까 무한반복문을 쓰고 중간에 빠져나오도록 했다.

Do

ReDim Preserve tics(i) 한칸 늘려주고

tics(i) = tics(i – 1) + diff 그 다음칸의 값은 앞에 있던 칸에다가 눈금의 간격만큼을 더한 값이다

If tics(i) + diff >= max Then 만약 그 다음값이 구간의 끝값을 넘어갈 것 같으면

Exit Do 끝낸다

End If

i += 1 아니면 한단계 더 올리고 다시 반복하자.

Loop

Return tics 이제 배열을 되돌려 주면 된다.

End Function

문제 : 그럼, 로그 눈금으로 그리고 싶으면 어떻게 하면 될까?

답 :

newtic = determineTics(System.Math.Floor(System.Math.Log10(min)), System.Math.Ceiling(System.Math.Log10(max)))

광화문광장, 다시

오래간만에 고향 집에 왔다.

광화문 광장에서 새벽에 버스를 타는데, 가로수 밑에서 아래에서 위로 빛을 뿜어내는 조명이 너무 눈이 부셨다. 이 조명 위에서는 책도 읽을 수 없고 버스를 기다리기도 힘들다. 너무 눈이 부셨다. 새벽 1시가 되니까 꺼지더라.

보기에 이쁘긴 하지만, 오히려 불편해서 공공디자인으로서는 빵점이라고 생각한다. 좀 더 편리한 디자인은 못하는 걸까? 설마 이정도가 우리나라 디자이너들의 역량의 한계인가?