TIARRA

TIARRA : Thomson parabola Image Analyzer for Radiation Research and Application

현재 개발중인 프로그램이다. Thomson Parabola Spectrometer의 결과 데이터를 분석하기 위한 툴. Python+wxPython+PIL+pylab+numpy를 이용한다. 필요한 모든것이 이미 다 만들어져 있는건 좋은데, 아직 배운지 얼마 안되다 보니 계속해서 문서를 찾느라 시간이 간다.

로고에 숫자가 막 써 있는건 곡선 눈금자를 테스트 해본 것이다. 실제 데이터가 저 눈금자를 따라서 움직인다. 우측의 그래프는 곡선 눈금자를 따라서 RGB값을 그래프로 그린 것이다. 물론 실제 데이터의 밝기 정보를 그래프로 그려준다.

이제 다음 단계는 1. 저 눈금자를 이온 종류에 따라 여러개 생기도록 하는 것 2. 해상도 교정 3. 영상 회전 보정 4. 아이콘 툴바 사용 5. 사용설명서 제작이다. 써놓고 보니 많네…

비트맵에 그림 그려서 출력하기.

비트맵 파일을 불러온 후, 그 위에 그림을 그리고, 그 결과를 화면에 출력해야 한다. 이때 사용하는 것이 wx.MemoryDC이다. DC는 Device Context인데, 그림을 그릴 수 있는 화면이라고 생각하면 된다. 그중 MemoryDC는 흐린 기억속의 그대처럼 임시로 선언해서 잠깐 쓰고 버릴 수 있는 객체이다.

#일단 하나 만들자.

self.mydc = wx.MemoryDC()

#밑그림으로 사용할 파일을 하나 마련한다.

self.wxBmp = wx.Bitmap(datafilename, wx.BITMAP_TYPE_ANY)

#그 밑그림을 MemoryDC에 집어넣는다.

self.mydc.SelectObject(self.wxBmp)

#MemoryDC에서 이제 원하는대로 그림을 그린다.

self.mydc.DrawLine(1,1,100,100) #그림 그리는 메소드는 많으니 알아서 찾아보도록 한다.

#방금 쓰던 MemoryDC에 wx.NullBitmap을 연결하면 원래 있던 녀석은 그림이 그려진 채 버려지게 된다.

self.mydc.SelectObject(wx.NullBitmap)

#이제, 조작이 완료된 self.wxBmp를 가져다 쓰면 된다.


http://www.python-forum.org/pythonforum/viewtopic.php?f=2&t=10224



http://wiki.wxpython.org/WorkingWithImages



http://www.wxpython.org/docs/api/wx.MemoryDC-class.html

이 방법을 찾느라 한 2주 걸린듯…

당황…

프린터 설치를 하는데, 윈도 비스타용 드라이버를 설치했더니 양면인쇄가 안된다.

그래서 홧김에 윈도 XP용 드라이버를 설치했더니 양면인쇄가 잘된다.

낚시인가?

—-

알다시피, 신도리코 LP3232 프린터를 윈도7 64비트 버전에서 사용할 때 윈도7용 드라이버를 설치하면 양면인쇄가 안된다.

여기에 “빠른 설치 버전 for 윈도우 비스타, 7″을 설치하면

프린터 속성 메뉴에서 양면인쇄 옵션이 나온다.

하지만 양면인쇄는 안된다.

더 당황…-_-

—————–

추가 – 윈도우즈7 64비트 버전에서 양면인쇄 성공했다.

드라이버를 LP3232 공식 드라이버 대신, Windows Update에서 제공하는 드라이버 중 Lexmark T430(MS)를 선택하면 잘 나온다.

—–

추가 – 윈도우즈7 64비트 버전에서 신도리코LP2200 프린터의 드라이버를 Lexmark T420으로 선택하면 된다.

뭐 이래.

신도리코 LP4000dn = Lexmark E360

디자이어 – 진저브레드 안됨


http://www.kbench.com/news/?&pr=0&no=101585



http://www.t3.com/news/htc-desire-no-android-gingerbread-upgrade?=57545


디자이어에서 진저브레드 업그레이드를 하지 않는다고 한다.

센스UI가 너무 무거워서 그렇다고 한다.

커펌을 쓰거나, 그냥 프로요를 쓰거나 해야 한다.

귀찮으므로 그냥 프로요를 쓰다가, 언젠가 커펌을 올려보는 삽질을 하게 될 듯 싶다. 내년 이맘때쯤?

파이썬의 어려움

난데없이 1주일만에 파이썬 공부해서 GUI 프로그래밍을 해야 하니 참으로 어려운 일이다. C나 VB와 비교할 때, type이 실행시에 지정되니 편한 사람도 있겠지만 이것때문에 계속해서 헷갈리고 있다.

파이썬의 클래스는 말만 클래스지 완전한 클래스가 아니다. 심지어, 클래스 내부에서 참조할 때에도 항상 self를 붙여야 하고, 클래스 내부의 메소드를 정의할 때 항상 self를 인자로 넘겨받아야만 한다. 다시말해서, 메소드를 호출 할 때, 클래스 내부에서 사용하는데도 불구하고 self.methodName(a, b)라는 형식으로 self를 참조해야만 한다.



[각주:

1

]



VB는 써도 되지만, 안써도! 된다.

그리고.

myBmp = wx.Bitmap.LoadFile(filename, filetype)

이런식으로 불러올 수 없다. 당연하다면 당연한건데, 쓰다보면 불편하다. 선언도 없는데…

myBmp = wx.EmptyBitmap(1,1)

myBmp.LoadFile(filename, filetype)

이런식으로 가짜로 선언(?)한 후에 사용해야 한다.

  1. self는 VB에서의 me, C++에서의 this처럼 자기가 소속된 클래스를 가리키는 이름이다.

    [본문으로]

에너지 절약


h


ttp://www.newsis.com/ar_detail/view.html?pID=10400&cID=10401&ar_id=NISX20110610_0008426533

등유 가격보다 전기요금이 더 싸면, 당연히 “비용 절감” 관점에서는 전기를 더 사용하게 되어 있다. 즉, 현재 상황에서 “온실가스 배출량 줄이기”와 “비용 줄이기”는 모순의 관계에 있다.

비용절감을 외치지 말든가, 등유가격을 더 낮추든가, 전기요금을 올리든가.

웬만하면 서민을 위해서 등유 가격을 낮추자. 정부가 원하는 것은 “전기요금 현실화”라는 이름으로 전기요금을 올리는 것이겠지만. 비용절감을 포기할 생각은 없나?

라플라스 방정식을 컴퓨터로 풀기

라플라스 방정식은 아주 유명한 2차 편미분 방정식 중의 하나이다. 라플라시안 연산자는 n차원 공간에서 잘 정의된 어떤 함수 f를, x로 두번, y로 두번, … 등등 같은 방향으로만 2번 미분하여 그 편도함수들을 모두 더한 함수로 보내는 연산자이다.

라플라시안 연산자를 L이라고 하자. 그럼 L[f] = 0 을 만족하는 함수 f를 찾는 것이 라플라스 방정식을 푸는 방법이다. 만약 1차원 라플라스 방정식이라면, 이 문제는 2번 미분해서 0이 되는 함수이므로 직선의 방정식을 찾으면 되고, 직선을 유일하게 결정하기 위해서 이 직선이 지나는 점 2개를 결정하면 된다는 사실을 알 수 있다.

2차원 라플라스 방정식이라면, 이제 문제가 심각해 진다. 가장자리가 점이 아니라 곡선이 된다. 심지어 n차원 라플라스 방정식이라면 n-1차원의 초곡면이 가장자리를 이루게 된다. 이것을 어떻게 풀 것인가?

일단, 적어도 하나의 해가 있다고 가정하자. 그냥 있다고 치자. 그럼, 만약 어떤 라플라스 방정식에 대해서 2개의 해를 찾을 수 있을까? 가령 f와 g가 둘 다 라플라스 방정식의 해라고 하자. 그럼 L[f]=0이고 L[g]=0이다. 라플라시안 연산자는 선형 연산자이므로 당연히 L[f-g]=0이 성립한다. 그런데 f-g=h라고 가정해보자. f와 g는 완전히 임의의 함수이므로 경계를 포함한 모든 점에서 h=0일 수밖에 없다. 따라서 f=g이다. 우리가 해를 여러가지 방법으로 찾아도, 주어진 경계조건을 만족하는 해는 하나밖에 없다는 걸 알 수 있다. 다시 말해서, 수단과 방법을 가리지 않고 하나를 찾으면 그게 바로 정답이라는 것이 확실하다. 이에 대한 엄밀한 증명은 생략한다.

그렇다면, 이것을 어떻게 컴퓨터로 풀 것인가?

이에 대해서 Relaxation method라는 것이 있다. 라플라스 방정식을 통째로 가우스 적분 하게 되면, 그 내부에서의 함수값이 그 주변에서의 함수값들의 평균값과 같아지는 성질을 이용한 것이다. 즉, 모든 점에서 라플라스 방정식이 만족될 때 까지 계속해서 평균을 내면서 진행하는 것이다.

가령, 격자를 9칸으로 잘라서

123

456

789

라고 해 보자. 그럼, 5번에 해당하는 값 f[5] 는 모르니까 처음에 0이라고 하자. f[2]=1, f[4]=5, f[6]=3, f[8]3이라고 해 보자. 그럼, 만약 저 9칸의 공간에 주어진 함수 f가 라플라스 방정식을 만족한다면, f[5]=3이어야만 한다. 그리고 그렇게 찾아낸 f[x]는 반드시 그 라플라스 방정식의 해이다. 수단과 방법을 가리지 않고 어떻게든 찾아내기만 하면 되니까. 이 방법을 더 큰 공간으로 확장해서 풀게 되면 문제를 잘 풀 수 있게 된다. 이 방법을 반복적으로 적용해서, 경계조건으로 주어진(=정해진) 값들은 계속 고정시켜 놓고서, 나머지 부분의 값들을 계속해서 평균을 내면서 바꿔가다보면, 경계조건의 값이 사방으로 퍼져 나간다. 하지만 충분히 여러번 반복하다보면, 거의 값이 바뀌지 않는 정도로 수렴하게 되는데, 이때가 바로 “답”이 된 상태이다. 이제 함수값들을 잘 읽어다가 “정답”이라고 생각하면 된다. 모든 점에서 “근처값들의 평균과 그 안에 있는 함수값이 같은” 상태가 되었기 때문에, 이 상태는 라플라스 방정식을 만족하는 상태이다.

그리고 앞에서 말했듯이, 아무튼 답을 찾기만 하면 그 답이 정답이 맞다.


http://tutorial.math.lamar.edu/Classes/DE/LaplacesEqn.aspx



http://rugth30.phys.rug.nl/potentiaal_eng/relaxatiemethode_hoe.htm

답을 찾기 위해 수단과 방법을 가리지 않는 것이 바로 수학의 정신이랄까.