전자파 차단의 나쁜예
http://imnews.imbc.com/replay/nwdesk/article/3329790_5780.html
도난 경보기에 걸리지 않는 특수가방을 이용해서 도둑질을 하던 부부가 붙잡혔다.
이 특수가방의 원리는 ‘패러데이의 새장’이라고 부른다. 그런 원리가 있다.
http://en.wikipedia.org/wiki/Faraday_cage
도체 안에 완전히 둘러싸여있는 물체는 외부의 전자기장의 영향을 받지 않게 된다는 원리인데, 실생활에서 여기저기 사용되거나 체험할 수 있는 원리이다.
엘리베이터에서 무선전화가 자주 끊기는 이유라든가, 전자레인지 옆에 있어도 전자파의 영향을 그다지 받지 않는다거나, 전자파 차단 필름도 같은 원리를 사용한다.
위의 범행에 사용한 특수 가방은 그다지 특별할 것 없이, 은박지 여러겹을 겹쳐서 가방 안에 잘 넣은 것이다. 만들기가 어렵지도 않고, 누구나 간단하게 만들 수 있다. 하지만 이걸 실제로 믿고 사용해도 된다는 사실을 알 정도로 물리학을 열심히 공부한 사람이 이런 나쁜 짓을 하다니 안타깝기 짝이 없는 사건이다.
도난방지 장치의 원리는 간단한 무선전력송신과 무선통신이다. 매장 입구와 출구 양 옆에 설치된 기둥을 본 적이 있을 것이다. 이 기둥에서는 전자기파가 흘러나오고 있다. 이 전자기파는 사람 몸에는 많이 흡수되지 않겠지만, 적당히 잘 설계된 안테나가 그 근처를 지나가면 그 안테나에 확 빨려들어가서 안테나에 전류를 흐르게 할 수 있다.
안테나에 흐른 전류는 도난방지장치의 전원을 켜고 작동시킨다. 아주 잠깐동안 켜진 도난방지장치는 자신이 살아있다는 목소리를 전파를 통해서 송신하고, 이 전파는 문에 설치된 기둥에 포함된 다른 안테나에 검출되어서 도난방지장치가 문짝을 지나가고 있다는 사실을 알린다. 그럼 큰 소리가 나면서 경고를 보내고 도둑이 붙잡히는 것이다.
여기서 이 특수가방은 전자파를 차단시켰으므로 전력의 송신도 안되고 도난방지장치의 전파가 밖으로 빠져나오지도 못한다. 즉, 특수가방은 도난방지장치를 성공적으로 감춰버린 것이다.
이 문제는 어떻게 해결할 수 있을까?
간단한 해결 방법으로는 도난방지장치 자체에 배터리를 달아서 외부와 통신을 계속 하고 있다가 통신이 끊기면 그 순간 소리가 나도록 하는 것이다. 소리는 외부에서 통신하고 있던 장비가 ‘어? 조금전까지 살아있던 놈이 왜 연락이 없지?’ 싶은 순간 울리도록 하면 될 것이다.
하지만 이 방법은 배터리 수명이 있기 때문에 배터리가 다 떨어지면 훔쳐가기가 더 쉬워진다는 문제가 발생한다.
따라서 앞서 이야기한 무선전력송신을 다시 한번 사용하여 배터리를 대신할 수 있다. 배터리 대신 무선전력송신 안테나를 매장 곳곳에 설치한다. 벽에 붙여서 설치하면 옷이나 다른 물건에 가려서 잘 안보이게 되므로 미관을 해치지 않고 깔끔하게 설치할 수 있다. 그럼, 마찬가지로 도난방지장치는 항상 작동하고 있게 되고, 그러다가 특수가방에 들어가버려서 갑자기 연락이 끊기면 그 순간 경보음을 울리도록 하면 될 것이다.
이 경우, 내가 도둑이라면 공범을 사용해서 매장 안의 두 곳에서 동시에 시도할 것이다. 두곳에서 동시에 특수가방에 옷을 넣으면 경보는 한번만 울리게 되고 그럼 적어도 둘 중 하나는 성공해서 매장을 빠져나갈 수 있을 테니까.
그럼, 이런 상황을 방지하기 위한 시나리오는?
도난방지장치의 위치를 추적해야 하는데, 이때 도난방지장치의 위치는 도난방지장치가 내보내는 신호의 세기로부터 알아낼 수 있다. 무선 신호의 세기는 거리의 제곱에 반비례하므로, 도난방지장치의 출력을 미리 알고 있다면 서너군데의 안테나에서 검출된 신호의 세기를 이용하여 도난방지장치가 매장 내에서 어디에 있는지 위치를 정확히 파악할 수 있다. 그럼 그 신호가 완전히 없어진 순간, 바로 직전에 있던 위치에 경고의 불이 번쩍번쩍 하도록 설치하면, 그리고 여러군데서 동시에 울릴 수도 있도록 설치한다면 이와 같은 특수 가방을 이용한 절도를 차단할 수 있다.
문제는 비용인데, 아마 이런 설비를 구현하고 설치하려면 매장 전체에 전력 송신 안테나와 위치 수신기를 설치해야 하므로 기존 장비의 열배 정도는 비용을 들여야 할 것이다. 한 벌에 수천만원 정도 하는 명품 옷이나 가방 같은 물건을 파는 매장이라면 고려해 볼 수 있을 것 같다.
수치해석4 – 빠른 푸리에 변환
이 글은 다음 글을 조금 더 고쳐서 다시 쓴 것이다.
http://snowall.tistory.com/501
파이썬 구현 예제는 생각중이다.
왜 4번이 먼저 올라왔느냐는 중요한 문제가 아니다. 나도 모른다.
# Elementary Numerical analysis 4
# based on Python
# (C) 2013. Keehwan Nam, Dept. of physics, KAIST.
# snowall@gmail.com / snowall@kaist.ac.kr
# Fast Fourier Transform
# 푸리에 변환은 적분변환이다. 다시말해서, 적분을 잘 수행하면 푸리에 변환은 계산된다.
# 0부터 1까지 구간만 생각해 보자.
# F1(k) = Integrate f(x)cos(kx)dx from 0 to 1
# F2(k) = Integrate f(x)sin(kx)dx from 0 to 1
# 위의 두 수를 k를 정해놓고 적분하면 된다. 하지만 현실은 그렇게 만만하지 않은데, 1개의 k에 대해서만 푸리에 계수를 구하는 것이 아니라, k에 대한 함수를 구해야 하는 사태가 벌어지기 때문이다.
# 따라서, 다음과 같이 하자. 조금 바꾼다.
# F = F1+i*F2
# 여기서 i는 제곱하면 -1이 나오는 허수 단위이다.
# 이렇게 되면 F는 오일러 공식을 사용해서 다음과 같이 쓸 수 있다.
# F(k) = Integrate f(x)exp(ikx)dx from 0 to 1
# 이제, 이 함수를 잘 적분하면 되는데, 우리는 지금 수치해석을 공부하고 있으므로 수치적으로 적분하면 된다.
# 0부터 1까지를 N등분하면 dx = 1/N이고 k는 k/N로 생각할 수 있다.
# F(k) = Summation f(x)exp(ikx/N) over integer x from x = 0 to x = N
# 위의 공식을 이산 푸리에 변환Discrete Fourier Transform이라고 한다.
# N등분된 구간은 k가 N개 있으므로, N개의 k값에 대한 각각의 함수를 계산하기 위해서 N개의 값을 더해야 한다. 즉, N*N번의 계산이 필요하다.
# 이제 exp(ikx/N)을 아주 잘 관찰해야 한다.
# f(x)exp(ikx/N)를 계산할 때, 잘 관찰해보면 같은 값들이 반복되는 것을 알 수 있다. k에 대한 값을 계산한 후 k+1에 대한 값을 계산한다면, f(x)exp(i(k+1)x/N)=f(x)exp(ikx/N)exp(ix/N) 이다.
# http://snowall.tistory.com/501
# 이제, 가령 점이 4개만 있다 치고, exp(ikx/N)을 대충 퉁쳐서 w(k*x)라 치고 그냥 대입해보자.
# F(0)=f(0)w(0)+f(1)w(1*0)+f(2)w(1*0)+f(3)w(1*0)
# F(1)=f(0)w(0*1)+f(1)w(1*1)+f(2)w(2*1)+f(3)w(3*1)
# F(2)=f(0)w(0*2)+f(1)w(1*2)+f(2)w(2*2)+f(3)w(3*2)
# F(3)=f(0)w(0*3)+f(1)w(1*3)+f(2)w(2*3)+f(3)w(3*3)
# 뭔가 있어 보인다면, 계산을 완성하자.
# F(0)=f(0)w(0)+f(1)w(0)+f(2)w(0)+f(3)w(0)
# F(1)=f(0)w(0)+f(1)w(1)+f(2)w(2)+f(3)w(3)
# F(2)=f(0)w(0)+f(1)w(2)+f(2)w(0)+f(3)w(2)
# F(3)=f(0)w(0)+f(1)w(3)+f(2)w(2)+f(3)w(1)
# 잘 보면 반복되는 것들이 보인다는 사실을 알 수 있다.
# 따라서 반복되는 부분을 미리 계산하고 재활용하면 된다.
# E1=f(0)w(0)+f(2)w(0)
# E2=f(0)w(0)+f(2)w(2)
# E3=f(1)w(0)+f(3)w(0)
# E4=f(1)w(1)+f(3)w(3)
# F(0)=E1+E3
# F(1)=E2+E4
# F(2)=E1+E3*w(2)
# F(3)=E2+E4*w(2)
# 원래는 16번의 곱셈과 12번의 덧셈이 있었는데, 잘 고쳤더니 10번의 곱셈과 8번의 덧셈으로 줄어들었다.
# 만약 점의 수가 수십만개로 늘어난다면, 아마 그 효율은 매우 좋아질 것이다. 즉 N*N번의 연산이 N*logN번의 연산으로 확 줄어들게 된다.
# 이 알고리즘은 Cooley-Tukey 알고리즘의 특수한 경우이며, 가우스가 최초에 발견하고 쿨리와 튜키가 나중에 다시 발견했다.
# http://ko.wikipedia.org/wiki/고속_푸리에_변환
# 파이썬 구현은 생략한다.
# http://docs.scipy.org/doc/numpy/reference/routines.fft.html 파이썬에서는 numpy 패키지에서 제공한다.
람다 함수
파이썬에서 람다 함수는 이름없는 함수이다. 이름이 없기 때문에 한번 쓰면 다시 불러올 수 없다. 즉, 1회용 함수이다.
왜 쓰냐건, 웃지요.
바꿔 말해서, 한번쓰고 버릴 함수를 만들기 위해서 쓴다.
문법은 lambda를 써 주고, 인자를 써주고, 리턴값을 쓰면 된다.
(lambda x, y, z: x+y+z)(1,2,3)
이게 전부다. 저러면 6이 나온다.
http://coreapython.hosting.paran.com/dive/chap04.html#apihelper.lambda
어쨌든 파이썬의 강력한 기능 중 하나라고 한다.
한가지 중요한건, 람다 함수로 할 수 있는건 람다 함수를 쓰지 않고도 전부 할 수 있다는 점이다. 반대로, 람다 함수가 아닌 다른 함수로 할 수 있는 일 중에는 람다 함수로 할 수 없는 것도 있다.
그럼 람다 함수가 뭐가 좋아서 쓰는걸까? 파이썬 사용자들의 말에 의하면 더 우아하고 더 효율적이라고 한다.
사실 이걸 사용하면 한줄에 다 담을 수 있고, def를 써서 정의하지 않아도 되므로 이름을 붙이는 수고를 덜 수 있고(인간적 관점과 메모리 점유율 관점에서), 함수를 찾아보러 어디 다녀오지 않아도 된다.
내 경우에는, 어떤 함수를 람다 함수로 정의하기 위해서 코드를 머릿속에서 만드는데 걸리는 시간이 15초 이하라면 써볼만 할 것 같다. 그 이상 걸린다면 그냥 함수를 하던대로 정의해서 쓰는 것이 낫겠다는 생각이 든다.
이 문제를 어떻게 풀 것인가? 에 관한 고민에서, 어떤 경우는 람다 함수를 사용하면 매우 간단하고 간결한 해법이 나올 수도 있으므로 사용법과 문법은 익혀두는 것이 좋겠다. map, reduce, filter 등의 함수와 함께 쓰면 조금 더 강력해진다.
궁수자리 A*
http://www.zdnet.co.kr/news/news_view.asp?artice_id=20130902091807&type=xml
지디넷에서 별을 삼키지 않는 블랙홀을 찾았다고 보도했다. 뭐 좀 이상해 보이는 블랙홀인데, 어쨌든 그 이름을 새지태리어스 A*로 이름을 붙였다고 한다.
http://en.wikipedia.org/wiki/Sagittarius_A*
그리고 궁수자리 A*는 꽤 오래전에 발견된 블랙홀이다.
음… 즉, 이번에 새로이 발견된 블랙홀이 아니라, 예전에 발견했던 블랙홀을 계속 관찰해서 새로운 사실을 알아냈다는 뜻이다.
이번에 알아낸 것은 다른 영역에서는 꽤 밝은 편인데 엑스선 영역은 왜 어두운지 알아냈다는 것이다.
외국 언론사의 보도 내용을 갖고 오는건 좋지만, 그래도 뭘 좀 아는 기자가 제대로 보도해준다면 좀 더 흥미로운 소식이 되지 않을까.
수치해석1 – 미분과 적분
# Elementary Numerical analysis 1
# based on Python
# (C) 2013. Keehwan Nam, Dept. of physics, KAIST.
# snowall@gmail.com / snowall@kaist.ac.kr
# Differentiation
# 테일러 정리와 테일러 전개를 적극 사용하면 된다.
# 수치적으로 미분은 다음과 같이 정의한다
# df/dx = (f(x+h) – f(x))/h
# 이 경우 오차가 h의 제곱에 비례한다. 2점 미분공식이다.
# 오차를 줄이고 싶은 경우 대칭성을 이용해서 오차를 줄일 수 있다.
# df/dx = (f(x+h)-f(x))/h-(f(x-h)-f(x))/h = (f(x+h)-f(x-h))/2h
# 이 경우 오차가 h의 세제곱에 비례한다. 3점 미분공식이다.
# 더 줄이고 싶다면 위의 3점 미분공식을 5점으로 확장할 수 있다.
# df/dx = (f(x+2h)+f(x+h)-f(x-h)-f(x-2h))/6h
# 하지만 이래봐야 오차는 그냥 h의 세제곱에 비례하게 된다.
# 머리를 써 보면 5점 미분공식은 다음과 같다.
# df/dx = (-f(x+2h)+8f(x+h)-8f(x-h)+f(x-2h))/12h
# 이렇게 하면 오차가 h의 4제곱에 비례하게 된다.
# 2차 이상의 미분을 계산해야 한다면, 1차 미분을 반복적으로 계산할 수도 있고, 또는 직접 2차 도함수를 얻을 수도 있다.
# d2f/dx2 = 2(f(x+h)-2f(x)+f(x-h))/(h*h)
# 이와 같이 n차 도함수를 직접 계산하는 공식은 테일러 전개에 의하여 손쉽게 얻을 수 있다.
# 실제 구현은?
# 파이썬이라면, 수치가 리스트로 주어져 있을 것이다.
f = numpy.array([x1, x2, x3, x4, x5])
h = 1.0e-2 # 미분에서 사용한 h값이 된다.
# 첫번째로, 2점 미분공식을 얻어보자.
df = (f[1:]-f[:-1])/h
# 이 공식이 왜 작동하는지는 차근차근 생각해 보면 된다.
# 마찬가지로, 3점 미분공식도 똑같이 얻을 수 있다.
df = (f[2:]-f[:-2])/(2*h)
# 5점 미분공식은 직접 고민해 보자.
# 하지만, 항상 리스트로만 주어져 있을리가 없다. 화일에서 직접 값을 한줄씩 읽어오면서 계산해야 하는 경우도 있을 것이다.
# 물론 화일을 리스트에 집어넣고나서 위의 방법을 쓰면 되지만,
# 화일이 메모리에 안 들어가는, 가령 수십 GB용량의 데이터를 미분해야 한다면 그건 그거대로 막막하리라고 본다.
data = open(“mydata.txt”, “r”)
f = [data.readline(), data.readline(), data.readline()]
df = []
while data.EoF():
df.append((f[0]-f[2])/(2.*h))
f.append(data.readline())
f=f[1:]
# data.EoF()는 파일의 끝인지 아닌지 판단하는 함수이다. (구현은 셀프!)
# 이게 왜 작동하는지는 직접 생각해 보고, 5점 미분공식으로 바꾸려면 어떻게 해야 할지 생각해 보자. 또는 2차도함수 계산이라면?
# df.append로 리스트에 집어넣는 것이 메모리를 잡아먹을 것 같다면, df를 파일로 열어서 df.writeline함수를 사용해도 된다.
# 다른 프로그래밍 언어라면 구체적으로는 다르게 구현해야 할 것이다. 자신이 사용하는 언어에서는 어떻게 구현할 수 있을까?
# 파이썬의 scpiy 모듈에서 미분을 제공하는데, scipy.misc.derivative(func, x0, dx=1.0, n=1, args=(), order=3) 함수를 사용하면 된다.
# 이 함수는 func로 주어진 함수가 x0위치에서 주어진 dx로 미분한 n차 “미분계수” 값을 알려준다. order는 3점공식인가 5점공식인가 등등이다. ‘당연히’ 홀수만 넣어야 한다.
# 내가 정의한 함수가 수를 넣으면 수가 나오는 함수라면, 위의 함수로 주어진 점에서의 미분계수를 알아낼 수 있다. 그러나 해석적인 도함수를 알려주지는 않는다.
# Integration
# 용어를 먼저 알고 가자.
# Quadrature 또는 Numerical quadrature는 수치해석에서 말하는 수치 적분을 뜻한다. 1차원 이상의 고차원 수치적분을 포함하기는 하지만, 1차원 수치적분의 뜻이 강하다.
# Cubature는 1차원 이상의 고차원 수치적분을 대체로 뜻한다.
# 1차원 적분을 먼저 논의해 보자.
# 가장 간단하게는 사각형으로 근사할 수 있다. 원래 적분은 연속 함수를 잘게 썰어서 각각의 넓이를 구한 후, 더 많은 조각으로 더 잘게 썰어가며 극한을 구하는 과정이다.
# 따라서 컴퓨터에게 수치적으로 적분을 계산을 시킨다면, 충분히 많은 조각으로 잘게 썰어서 각각의 넓이를 구한 후 다 더하도록 하면 된다.
# 가장 간단하게 사각형으로 근사한다면, i번재 함수값을 f[i]라 한다면
# F = sum(f[i], i=0 to N)*(b-a)/N
# 물론 각 조각은 N등분했다고 가정했다. 조각의 길이가 구간마다 다른 경우라면 골치아파지므로 그러지 말자.
# 위의 코드는 파이썬으로 간단히 구현할 수 있다.
f = [f1, f2, f3, f4, ,f5] # f는 함수값들을 수치적으로 저장하고 있는 리스트이다.
F=0
for i in f:
F+=i
F/=h # h는 구간의 길이이다. h=(b-a)/N 정도로 정의하면 될 듯.
# 대충 이렇게 쓰면 될 것이다. 만약 조금 더 짧게 쓰고 싶다면 reduce와 lambda를 쓸 수 있다. 이 두 구문이 뭔지에 대해서는 자습해보자.
F = reduce(lambda x, y:x+y, f)*h
# 위의 구문이 적분식이다. 이걸 midpoint rule 이라고 한다.
# 사각형으로 적분하는 것보다, 아무래도 사다리꼴로 나누는 것이 조금 더 정확하지 않을까? 하는 마음에 만든 공식이 사다리꼴 규칙이다. Trapezoidal rule (trapezium rule)
F = reduce(lambda x, y:x+y, f)*h – 0.5*(f[0]+f[-1])*h
# 위의 구문이 사다리꼴 적분에 해당한다. 별 차이 없어 보이는데 아주 조금 더 정확하다. 왜그런지는 어렵지 않으니 직접 생각해 보자.
# 이 경우 오차는 대략 구간의 크기인 h의 제곱에 비례한다.
# 보다 정확한 근사식은 Simpson’s rule이 제공한다. 사다리꼴 규칙에서 심슨 규칙으로 진화하는 것은 미분에서 2점 공식을 3점 공식으로 바꾸는 과정과 유사하다.
# 즉, 사다리꼴 규칙은 2점을 이용해서 그 사이의 면적을 근사했지만, 심슨 규칙은 3점을 이용해서 그 사이의 면적을 근사한다.
# 즉, 3점으로 이루어진 2차곡선이 원래 주어진 곡선보다 위인 구간과 아래인 구간이 있게 되는데, 넘치는 부분과 모자라는 부분이 상쇄되어 보다 정확한 근사값을 얻는다. 곡선의 근사는 틀리게 되지만, 적분값은 정확해진다는 것이다.
# 심슨 규칙은 다음과 같다.
# F=(f(a)+4f((a+b)/2)+f(b))*(b-a)/6
# 딱 3점, 즉 a, b, (a+b)/2의 3군데 값을 알고 있을 때 그 사이의 면적은 위와 같이 근사된다. 이 경우 오차는 구간의 크기인 b-a의 5제곱에 비례한다.
# 파이썬으로 구현한다면 어떻게 될까?
# 가장 간단하게 구현한다면 다음과 같을 것이다.
f = [f1, f2, f3]
F = (f[0]+4*f[1]+f[2])*h/6
# 하지만 이런 경우는 점이 정말 3개밖에 없는 경우이다. 만약 그보다 많다면? 일단 정확히 홀수개 있다고 하자.
f = [f1, f2, f3, f4, f5] # 리스트는 더 길어질 수도 있다.
F = (2.*reduce(lambda x, y: x+y, map(lambda x:x[0]+x[1]+x[1],f[:-1].reshape(len(f)/2,2)))-f[0]+f[-1])*h/6
# 이 코드는 간단해 보여도 자그마치 3개의 파이썬 기능이 합쳐진 콤비네이션이다.
# 홀수개만큼 있을 때는 위의 코드를 쓰면 된다. 왜 되는지는 다시 잘 생각해 보도록 하자. 파이썬 공부 겸 아이큐테스트라고 하자. (나도 테스트 안해봄.)
# 짝수개일 때는 어떻게 될까? 짜투리 부분의 오차를 어떻게 정리할 수 있을지는 각자 생각해 보자.
# 파이썬에서 구현된 적분은 scipy에서 제공한다.
# scipy.integrate(f, a, b)는 주어진 함수 f를 a에서 b까지 적분해준다. 다중적분도 다룰 수 있다.
# 1차원 적분의 경우 위의 코드로만 적분하더라도 해볼만하다. 문제는 다차원 적분은 적분 구간을 (a, b)처럼 쉽게 쪼개줄 수 없다는 것이다.
# 물론 잘 쪼개서 다중 반복문을 돌리면 된다. 당연히 된다. 만약 함수가 수치적으로, 즉 모든 위치에서의 함수값이 ‘진짜 값’으로 주어져 있다면 다중반복문을 돌려서 적분해야 할 것이다.
# 하지만, 만약 고차원에서 정의된 매우 이상한 함수가 있는데, 이 함수의 함수값은 구할 수 있지만 함수값이 다 주어진게 아니라 그냥 함수만 주어져 있다면? 그리고 그 해석적인 적분은 구할 수 없는 경우라면?
# 이때는 확률적 방법을 통해서 구할 수 있는데 그것이 바로 Monte-carlo integration이다.
# 다차원 다중적분 및 MC는 다른 기회에 설명하도록 하겠다.
—
Quadratic은 “사각형의”라는 뜻을 담고 있는데, 그래서 “제곱”이라는 뜻도 있다. 일반적으로 사각형은 2차원 평면에서 정의된 도형이고, 1차원에서 1차원으로 가는 함수는 보통 직사각형으로 근사해서 적분하게 되므로 quadrature는 2차원 적분의 뜻이 강하다. Cube는 정육면체를 뜻하고, Cubic은 그래서 세제곱이라는 뜻이 있다. 거기서 나온 Cubature는 3차원 적분의 뜻이 강하다. 3차원 이상에도 각 차원마다 라틴어 어원을 갖는 형용사들이 있겠지만 그냥 Cubature라고 부르는 듯. Curvature는 “곡률”이라는 뜻으로 cubature와는 아무 관련 없다.
과학자는 무슨 재미로 일하나
과학자의 길을 걷고자 대학원에 들어왔는데, 대량의 공부와 막막한 앞길에 그닥 재미있어 보이는 것들이 없다. 하지만 지극히 개인적 관점에서, 이런 재미로 사는 거 아닐까? 싶은 것들이 있어서 적어본다.
1. 새로운 사실
내 분야만 해도, 하루에도 수십 수백건의 논문이 쏟아진다. 투고된 것 말고, 통과되서 학술지에 정식으로 실리는 것들만 쳐도 수백건이 넘는다. 이 논문들을 다 읽어본다는건 말도 안되는 일이지만, 실력있는 과학자라면 이중에서 중요한 것들을 제목과 초록만 보고 어느정도 골라낼 수 있을 것이다. 그렇게 해서 남들이 발견하고 주장하는 새로운 사실들을 알아가는 것은 눈앞에서 벌어지는 과학의 역사를 보고 있는 것이다. 그렇게 작은 논문들이 쌓여서 중요한 이론이 될 테니.
물론 재미가 없어도 새로 발표되는 논문은 따라가면서 읽어볼 필요가 있는데, 내가 지금 하는 연구를 누군가 먼저 해서 결과를 내놓았을수도 있고, 남들이 쓴 논문에서 미처 따져보지 못한 부분이나 시도하지 않은 부분을 내가 먼저 발견해서 논문을 쓸 수도 있기 때문이다.
2. 새로운 시도
내가 붙들고 삽질하고 있는 바로 이 주제는, 누가 돈주고 시켜서 연구하는 것일 수도 있고, 순수한 호기심에 연구하는 것일수도 있고, 둘 다일수도 있다. 아무튼 이 연구를 해야 한다는 사실은 정해져 있다. 모든 일이 그렇듯, 할지 말지 정할 수 있는 일은 그 고민으로도 재미있지만 그런걸 정할 수 없이 일단 해야 하는 일은 그다지 재미가 없는 법이다. 하지만 소소한 재미가 그 사이에 들어있는데, 원하는 결과를 얻기 위해서 무엇을 시도해 볼 수 있을지 고민하는 과정이다. 이 고민은, 마치 로또에서 어떤 번호를 찍을까 고민하는 것과 같은 즐거움을 준다. 원하는 결과를 얻는다면 연구를 마무리짓고 털어버릴 수 있으므로 당연히 즐거울 것이고, 원하는 결과를 얻지 못하더라도 최소한 무엇을 하면 실패하는지 알게 되므로 연구에 진전은 있는 법이다.
3. 결과 분석
실험을 했다. 그래프를 그렸다. 뭐냐 이건.
대체로 실험 그래프는 직선이 좋다. 분석이 편하니까.
그래서 사람들은 직선을 얻기 위해서 로그 눈금을 도입했다. 지수 눈금도 있다. 하지만 그래프가 직선이 아니라 하더라도 내가 그린 그래프는 자연 현상을 관찰한 그래프이다. 그렇다면 이 현상을 설명할 수 있는 이론이 존재할 것이고, 그 이론을 찾아내는 과정은 매우 흥미로운 작업이다.
이론으로 설명되지 않는 실험 결과는 그냥 종이에 찍은 점일 뿐이다. 실험으로 그린 그래프와 이론으로 그래프가 일치해야 하는 이유는 하나도 없다. 그 두 그래프가 일치하는 경우는 오직 올바른 이론을 선택한 경우일 뿐이다.
바로 그 느낌이 나를 공부하도록 만든다. 내가 얻은 실험 결과를 해석할 수 있는 이론을 내가 알고 있기를 바라며.
4. 새로운 제안
물론 이론은 실험을 설명하기 위하여 태어났지만, 어떤 분야에서는 이론의 발전이 너무 빨라서 아직 실험으로 구현할 수 없는 경우가 있다. 이 경우 이론은 실험을 제안할 수 있다. 과학에서 이론을 연구하는 학자들은 비록 소수지만, 자신만의 이론을 만들고 그 이론을 검증할 수 있는 실험 방법을 제안할 수 있다. 이 실험 방법은 어떤 경우에는 너무나 허황되어 헛소리처럼 들리기도 하지만, 그런식으로 만들어진 실험 장치가 그 유명한 대형 강입자 충돌장치(Large Hadron Collider)아니겠는가.
이론가의 실력이 그 극한에 다다르면, 실험이 ?아오기 전에 선도적으로 이론의 검증방법을 제안할 수 있다. 이 경우, 정말 자기 맘대로 실험을 제안할 수 있다. 이 이론이 틀릴까봐 겁낼 필요가 없는것이다. 여기서 상상력을 발휘하며 자기 이론을 마음껏 펼칠 때의 그 즐거움은, 음악가들이 악기를 연주하고 화가들이 붓을 놀릴 때의 그 재미와 비슷하다.
5. 격렬한 토론
니 이론이 맞는건지 내 이론이 맞는건지 격렬하게 싸운다. 심판은 실험 결과. 어떤 이론이 더 정확하게 실험 결과를 맞추는지. 그렇게 해서 내 주장을 관철시키기 위해서 나는 더 정확한 이론을 알아야 하고, 남의 주장을 반박하기 위해서 다른 사람들의 이론도 상세히 공부해야 한다. 각 이론의 장점과 단점을 파악하고, 이론의 요점을 이해해서 실험의 어떤 부분을 설명하는지, 설명하지 못하는지 알고 있어야 한다.
토론은 동료 연구자들과도 이루어지고, 다른 연구소의 과학자와도 이루어지고, 가끔 다른 분야의 학자와도 할 수도 있다. 이런 사람들을 설득시켜가며 얻는 즐거움이 있고, 다른 사람의 주장을 들으며 아이디어와 새로운 지식을 얻는 즐거움도 있다.
내 이론이 맞으면 가장 재미있지만, 내 이론이 맞지 않더라도 제대로 된 이론을 공부할 수 있다면 그것도 나름 재미있는 일이다.
음… 그러나 이렇게 미화시키더라도, 어쨌든 실력있는 과학자가 되지 못한 상태에서는 다 삽질일 뿐이다.
정직은 과학자의 기본이고, 실력은 과학자의 미덕이다.
∼infinity∼∞ HAYASHIBARA MEGUMI
∼infinity∼∞ HAYASHIBARA MEGUMI
로스트 유니버스 오프닝
瞬(またた)く流星(りゅうせい) 願(ねがい)を託(たく)して
일순간에 지나가는 유성에 소원을 빌어보고
3度(さんど)つぶやいた 幼(おさな)い思(おも)い出(で)
삼세번 중얼거려 보았던 어렸을적 추억이
おどき話(ばなし)さと 冷(さめ)た瞳(まなざし)で
허황된 얘기라고 차가운 눈빛으로
あきらめていたら 一生(いっしょう)つかめない
포기해 버린다면 평생토록 잡지 못할거야
Get back (되돌려봐)
もう一度(いちど) 心(こころ)の奧(おく)で眠(ねむ)ってる
다시한번 마음속 깊이 잠들어 있는
あの日(ひ)の 願(おも)いを 時空(そら)に解(と)き放(はな)て
그 옛날의 바램들을 저 하늘속에 풀어 놓아보자
☆ めちゃくちゃにがむしゃらに 空(から)っぽに
엉망이 되어서까지, 억척스럽게, 텅 빈 곳으로
步(ある)いたその先(さき)に
나아가는 그 앞에
透明(とうめい)な道標(みちしるべ)浮(うか)ぶよ
투명한 이정표가 떠오를거야
君(きみ)だけの 心(こころ)に
오직 너만의 마음속에.
限界(げんかい)の向(むこ)うは無限大(むげんだい)
한계를 넘어서면 무한대야
繰(く)り返(か)えす傳說(でんせつ)
되풀이되는 전설을
越(こ)えて行(ゆ)こう 塗(ぬ)り變(か)えて行(ゆ)こう
뛰어 넘어가자 덧칠해 나가자
Do your best for your sake anytime (너 자신을 위해 최선을 다해라)
はじけたコインに 運命(うんめい)託(たく)して
던져올린 동전에 운명을 걸고
迷(まよ)いを斷(た)ち切(き)る それも惡(わる)くない
방황을 멈출수만 있다면 그것도 나쁘진 않아
見(み)えない偶然(ぐうぜん) 確(たし)かな必然(ひつぜん)
보이지 않는 우연, 뻔히 보이는 필연
生(い)きてくゴツなど 誰(だれ)も持(も)っていない
잘사는 요령따윈 아무도 갖고 있지 않아.
Get lost (버려라)
急(いそ
ぎ
)いでる 時代(じかん)の波(なみ)に流(なが)されて
조급한 시대의 파도에 휩쓸려
心(こころ)を 失(うしな)う 時(とき)もあるけれど
내 본심을 잃어버리는 때도 있긴 하지만
★ 先回(さきまわ)りの後悔(こうかい)は いらない
다시 되돌아오는 후회같은 건 필요없어
進(すす)んだその先(さき)に
계속 앞으로 가다보면
新(あたら)しい道(みち)が創(つく)られてく
새로운 길이 만들어져 갈거야.
君(きみ)にしか見(み)えない
그건 너밖에 볼 수 없어
潔(いさぎよ)く負(ま)けを認(みと)めるのは
지금 미련없이 떳떳하게 패배를 인정하는 건
明日(あす)を勝(か)ち取(と)るため
내일 승리하기 위해서야
かっこ惡(わる)く かっこ良(よ)く行(ゆ)こう
보기 싫든 좋든 나아만 가자.
You can have your way in everything (넌 어떻게든 길을 찾아낼거야.)
—
인터넷에서 굴러다니는 해석을 주워다가 틀린 부분을 조금 고치고 다듬었다.
소싯적 수백번 들으며 꿈꾸었던 노래.
구절 하나하나가 버릴 구석이 하나도 없다.
메구미는 어떻게 이런 가사를 쓸 수 있었을까?
유치하기도 하고, 허세같기도 하지만. 글쎄. 후회?ㅋㅋ
윈8
여러가지 부득이한 사정으로 윈8을 설치하게 되었다.
1. 설치는 매우 쉬워졌다.
2. 태블릿에서 쓰기에 매우 좋아졌다.
3. 마우스로 쓸 때는 매우 불편해 졌다. 도저히 어떻게 써야 하는지 모르겠다.
4.
작업표시줄에서 한글 IME아이콘을 삭제할 수 없다.
알림영역 설정에서 끌 수 있다.
근데 꺼놔도 부팅을 다시 하면 저절로 켜진다. 뭐야 이거 버그인가??
5. 왜 파이어폭스 앱 모드에서 ‘뒤로가기’는 있는데 ‘앞으로 가기’는 없는걸까. 그리고 마우스만으로 탭 전환을 하려면 탭 추가 버튼을 눌러야만 하는건가??
6. 같은 프로그램인데 앱 모드와 데스크탑 모드 사이의 정보 공유가 아예 안되는건 말이 안되는 사태다. 차라리2개의 운영체제를 동시에 사용하는 기능이라고 광고했다면 납득할 수 있을지도 모르겠다. 심지어 환경설정 내용도 공유가 안된다. 이 얘기는, 파이어폭스를 앱 모드와 데스크탑 모드 사이에서 따로 설정하라는 뜻이다. 물론 파이어폭스는 동기화 기능이 있기 때문에 설정을 공유할 수는 있지만, 그거랑 이거랑은 다른 얘기지.
7. 결국 단축키 모르면 사용하기 불편한 데스크탑 컴퓨터를 만든 MS의 선택. Back to DOS인가.
8. 어쨌든 파이어폭스에서 마우스 클릭만으로 주소표시줄을 열 수가 없다. 그럼 Ctrl+L을 어떻게 알아내지?
9. 이런저런 이유로 파이어폭스 쓰기가 불편하다.
10. 키트윅도 안 먹는다. Caps-lock 자리에 Ctrl을 쓰지 못한다면 작업 속도가 절반으로 줄어든다.
11. 윈7로 복귀 결정.
—
결국은, 어쩌다보니 부득이하게 윈8을 쓰게 되었다. 윈7로 포맷해도 되지만 그것도 또 귀찮고, 키보드로 해피해킹프로2를 사용하면 굳이 키트윅을 안 써도 되므로 당분간은 괜찮을듯. 그러나…
12. 앱모드에서 전체 앱 목록을 볼 수 있는데, 이거 뭘 찾기가 매우 어렵다.
13. 잠금화면은 데스크탑 모드에서는 화면보호기 이상의 의미가 없다. gpedit에서 없애자.
14. Classic shell을 설치하면 기존의 시작메뉴를 사용할 수 있다. 여기서 몇가지 설정을 하고 Active corner를 모두 꺼버리면 윈7과 비슷해진다. 그래도 뭔가 좀 부족하지만. 윈8.1 업데이트에서 시작버튼을 다시 제공한다고 하니까 그때까진 기다려야겠다.
15. Windows 95 스타일을 지원하지 않는다.
터치패드 없이는 정말 사용하기 어렵게 만들었다.
php+mysql
최근 piwigo라는 갤러리 프로그램을 설치하려고 했는데…
mysql과 이상하게 php가 잘 연동이 안되어서 왜그런가 살펴봤더니 php.ini 파일에 mysql모듈을 “쓰라고!” 알려줘야 했다.
extension=/usr/lib/php5/20090626+lfs/mysqli.so
extension=/usr/lib/php5/20090626+lfs/mysql.so
조금 당황스러웠지만, 2시간동안 웹을 뒤져본 결과 위와 같이 설정해 주면 된다는 사실을 알아낼 수 있었다. 여기서 중요한 것은 /usr/lib/php5/20090626+lfs/라는 경로명까지 모두 적어주어야 한다는 부분이다.
삽질의 세계는 여전히 넓고 깊구나.

