TIARRA
현재 개발중인 프로그램이다. Thomson Parabola Spectrometer의 결과 데이터를 분석하기 위한 툴. Python+wxPython+PIL+pylab+numpy를 이용한다. 필요한 모든것이 이미 다 만들어져 있는건 좋은데, 아직 배운지 얼마 안되다 보니 계속해서 문서를 찾느라 시간이 간다.
로고에 숫자가 막 써 있는건 곡선 눈금자를 테스트 해본 것이다. 실제 데이터가 저 눈금자를 따라서 움직인다. 우측의 그래프는 곡선 눈금자를 따라서 RGB값을 그래프로 그린 것이다. 물론 실제 데이터의 밝기 정보를 그래프로 그려준다.
이제 다음 단계는 1. 저 눈금자를 이온 종류에 따라 여러개 생기도록 하는 것 2. 해상도 교정 3. 영상 회전 보정 4. 아이콘 툴바 사용 5. 사용설명서 제작이다. 써놓고 보니 많네…
비트맵에 그림 그려서 출력하기.
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가 너무 무거워서 그렇다고 한다.
커펌을 쓰거나, 그냥 프로요를 쓰거나 해야 한다.
귀찮으므로 그냥 프로요를 쓰다가, 언젠가 커펌을 올려보는 삽질을 하게 될 듯 싶다. 내년 이맘때쯤?
파이썬의 어려움
파이썬의 클래스는 말만 클래스지 완전한 클래스가 아니다. 심지어, 클래스 내부에서 참조할 때에도 항상 self를 붙여야 하고, 클래스 내부의 메소드를 정의할 때 항상 self를 인자로 넘겨받아야만 한다. 다시말해서, 메소드를 호출 할 때, 클래스 내부에서 사용하는데도 불구하고 self.methodName(a, b)라는 형식으로 self를 참조해야만 한다.
1
VB는 써도 되지만, 안써도! 된다.
그리고.
myBmp = wx.Bitmap.LoadFile(filename, filetype)
이런식으로 불러올 수 없다. 당연하다면 당연한건데, 쓰다보면 불편하다. 선언도 없는데…
myBmp = wx.EmptyBitmap(1,1)
myBmp.LoadFile(filename, filetype)
이런식으로 가짜로 선언(?)한 후에 사용해야 한다.
-
self는 VB에서의 me, C++에서의 this처럼 자기가 소속된 클래스를 가리키는 이름이다.
[본문으로]
Melodies of life
이거 다시 보니 정말 웃기네요. ㅎㅎㅎ
에너지 절약
h
ttp://www.newsis.com/ar_detail/view.html?pID=10400&cID=10401&ar_id=NISX20110610_0008426533
등유 가격보다 전기요금이 더 싸면, 당연히 “비용 절감” 관점에서는 전기를 더 사용하게 되어 있다. 즉, 현재 상황에서 “온실가스 배출량 줄이기”와 “비용 줄이기”는 모순의 관계에 있다.
비용절감을 외치지 말든가, 등유가격을 더 낮추든가, 전기요금을 올리든가.
웬만하면 서민을 위해서 등유 가격을 낮추자. 정부가 원하는 것은 “전기요금 현실화”라는 이름으로 전기요금을 올리는 것이겠지만. 비용절감을 포기할 생각은 없나?
만화가 현실로
http://coldstar.egloos.com/4419550
현실이 만화를 모방하는 세상.
http://mbn.mk.co.kr/pages/news/newsView.php?news_seq_no=1071009
http://news.sbs.co.kr/section_news/news_read.jsp?news_id=N1000929808
이건 내가 나인 꿈을 꾸는 건지 꿈을 꾸는 내가 나라고 생각하는건지…
라플라스 방정식을 컴퓨터로 풀기
라플라시안 연산자를 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칸으로 잘라서
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
답을 찾기 위해 수단과 방법을 가리지 않는 것이 바로 수학의 정신이랄까.
