글쓴이 보관물: snowall

snowall에 대하여

onecup, research department

∼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/라는 경로명까지 모두 적어주어야 한다는 부분이다.

삽질의 세계는 여전히 넓고 깊구나.

마법공부

연구 주제가 대강 결정되었다. 연구 주제는 “양자역학”

양자역학이 얼마나 분야가 넓은데 뭔 뜬금없는 헛소리냐는 질문이 있겠지만. 진짜다.

일단은 양자컴퓨터라는 분야로 가기로 했는데, 이 분야는 응용으로 가면 컴퓨터지만 이론 수준에서는 양자역학 그 자체이다.

그리고 우리 연구실은 광학을 연구하므로 빛을 이용해서 양자역학을 연구할 것이다.

그래서 교수님이 나보고 해보라고 시킨 것은 광자 1개를 광자 3개로 바꾸는 마법을 요구하셨다.

광자 1개를 광자 2개로 바꾸는 과정은 Spontaneous parametric down conversion 과정을 사용하면 되는데, 이건 이미 많이 했다. 1개를 2개로 바꾸고 그 2개중에 한개를 골라서 다시 2개로 바꾸면 3개가 되는데 이것을 Cascade 방식이라고 한다.

Cascade 방식을 이용해서 1개를 3개로 바꾸는 것은 제안된건 20년 전인데 구현된건 3년전이다.


http://www.nature.com/nature/journal/v466/n7306/full/nature09175.html

Cascade 방식으로 구현해서 네이처를 갔으니, 직접 구현하면 PRL정도는 갈 수 있지 않을까? 하는 기대를 해본다. 되든 안되든 해보면 뭔가 얻는게 있겠지.

미친 보안

방금 계좌이체하다가 놀라운 사실을 발견했다. 정말 식겁했다.



기업은행 오픈뱅킹. 최근에 지원되기 시작해서 모든 웹 브라우저, 모든 운영체제에서 인터넷 뱅킹이 가능하도록 해준다는 전설의 웹 서비스이다.



이건 기존에 쓰던 인터넷 뱅킹.

분명 차이가 있다. 오픈뱅킹에는 https프로토콜을 사용하고, 그냥 기존 웹 뱅킹에는 http 프로토콜을 사용한다.

이러니까 털리지.


http://en.wikipedia.org/wiki/HTTP_Secure

위키백과에 의하면, https는 1994년에 만들어지고 2000년에 규격이 확립되었다.

“아직까지도” https를 사용하지 않는 저 기존의 인터넷 뱅킹은, 만약 악의적인 공격자가 적절히 털어준다면 ibk.co.kr도메인으로 연결했을 때 똑같은 웹 페이지에 똑같은 입력창을 갖고서 개인정보를 털어갈 수 있는 여지를 남겨두고 있다. https는 서버의 인증서를 확인할 수 있으므로, 내가 지금 연결한 서버가 “진짜 ibk의 서버”인지 확인할 수 있고, 따라서 개인정보를 털릴 위험이 줄어든다.



이런 해킹 방지 프로그램에 의존하는 것보다 https로 인증하는 것이 당연히 더 안전한 법이다.

당장이라도 기존의 인터넷 뱅킹 웹 페이지를 폐쇄하고 https를 사용한 오픈뱅킹으로 연결하는 것이 좋다. 하지만 ibk는 그렇게 하지 않겠지.

다른 은행은 어떤지 모르겠지만, 다들 비슷비슷할 것이라 별로 기대도 안된다.

설국열차

오래간만에 극장에 가서 본 영화다.

음… 원피스?

그러나 뭔가, 좀 더 추구하는 것이 있어 보인다.

저기로 가야 한다는 것.

옛날에 누가 그랬더라, 황후장상의 씨가 따로 있는거냐고. 주인공은 그렇게 외치는 앞자리 사람들을 밀어내고 가장 앞칸에 도달한다.

하지만 그도 결국은 열차 그 자체에서 나가야 한다는 생각은 하지 못했다.

생태계의 문제, 환경 문제, 부처의 살신성인, 여러가지 이야기가 잘 섞여 있다.

파프리카

곤 사토시 감독의 파프리카.

인셉션에게 영향을 주지 않았을까 하는 생각이 강렬하게 드는 작품이다. 물론 제작 연도나 시기나 이런저런걸 보면 그닥 관련 없어보이기도 하지만.

어쨌든.

꿈에 관한 이야기다. DC미니라는 장치를 이용해서 다른 사람과 꿈을 공유할 수 있다. 그런데 그게 도난당하고, 사람들이 미쳐가기 시작한다. 어떤 일이 일어나는 것인가.

어쨌든.

90분짜리 애니메이션이지만, 아주 흥미롭게 봤다. 원작 소설을 구해서 봐야겠다.

그리고 주인공 성우가 하야시바라 메구미라서 더 마음에 들었다.

근황

약 2주간 유럽 여행을 다녀왔다. 그 바람에 이래저래 블로그에 글 쓰는게 없어졌다. 바쁘기도 하고…

연구도 이제 본격적으로 시작해야 하는데 아직도 감이 안 오고 있어서 조금 문제다. 8월 중으로 감을 잡아야한다.

열대야와 jet-lag이 동시에 오니까 밤에 잠이 안온다. 미치겠다.

구독자들께서는 당분간 업데이트 안되더라도 그런가보다 하시기를. 답글은 잘 달겠습니다.

파이썬 기초4




lecture4.py

# -*- coding:utf-8 -*-

# Python lecture 4

# keeHwan Nam, Dept. of physics, KAIST, 2013.

# 실험 데이터 파일 처리하기 실전 테크닉 – 기초, 반복작업, 결과물 다듬기, 소소한 팁

# 실제로 실험을 하게 되면, 적게는 수십개에서 많게는 수만개의 데이터 파일이 쌓이게 된다. 이 파일들을 어떻게 자동으로 처리할 수 있는지 알아보자.

# 실험 데이터 처리에서 가장 중요한 것은 파일을 일단 자동으로 읽어오는 것이다.

# 어쨌든, 일단 다음의 모듈을 불러오는 것이 가장 첫 단계이다.

import os

import os.path

# 이 모듈들은 파이썬에서 ‘파일의 경로명’을 다룰 수 있도록 한다. 경로명이란 실제로 파일이 어디에 있는지 말해주는 주소 같은 것이다.

# 경로명이 다음과 같이 주어졌다고 치자.

mypath = ‘c:\\data’

# \기호를 두개 넣은건 나중에 괴이한 일이 벌어지지 않도록 하기 위하여 미리 손을 써둔 것이다. 경로명에 있는 \를 모두 \\로 바꿔두지 않으면, 틀린데가 없어 보이는데 실행이 안되는 일이 벌어질 수 있다. 왜 그런지는 python escape characters 에 대해서 알아보면 된다.

# 그럼 이제 우리에게는 저 디렉토리 안에 있는 파일들의 목록이 필요하다.

myfiles = os.listdir(pymath)

# os.listdir()이라는 함수가 그 일을 해준다. 이제 myfiles라는 ‘리스느’가 생겼으므로 다음과 같이 써서 일을 할 수 있다.

for mf in myfiles:

fileProcess(mf)

# 하지만 문제는 이것만으로는 충분하지 않다는 것이다. 왜냐하면 os.listdir() 함수는 경로명을 뺀, 순수한 그 ‘이름’들의 목록만을 알려주기 때문이다. 우리가 파일을 열기 위해서는 경로명+파일명이 필요하므로, 실제로는 다음과 같이 처리해야 한다.

for mf in myfile:

fileProcess(mypath+”\\”+mf)

# 이제 fileProcess()라는 함수를 만들어서, 파일 하나하나를 어떻게 처리할지 생각해 보자.

# 데이터 파일은 텍스트 파일 아니면 바이너리 파일로 저장된다. 일단 바이너리는 쓰기 힘드니까 텍스트 파일을 처리하는 것 부터 해본다.

# 데이터 파일에 실제로 다음과 같이 기록되어 있다고 하자.

”’

-1.9e-06 7.97e-07 -8.5783931549247703e-10 -9.7362985182677175e-10 -1.3762538408048596e-10 9.9564622537186427e-11

-1.9e-06 8.46e-07 -7.4824717605474142e-10 -9.1441781733662261e-10 -1.2837483027640561e-10 8.8900007035819333e-11

-1.9e-06 8.96e-07 -6.4783294293579292e-10 -8.5092345806972556e-10 -1.1860950379225859e-10 7.8859478980600898e-11

-1.9e-06 9.46e-07 -5.5678785177338635e-10 -7.8505574393254601e-10 -1.0861474129660382e-10 6.9501614214156576e-11

-1.9e-06 9.96e-07 -4.7504242597008922e-10 -7.1847384904530101e-10 -9.8635766382808557e-11 6.0863824434377259e-11

-1.9e-06 1.04e-06 -4.0238736681761767e-10 -6.5259129272929548e-10 -8.8875171315561072e-11 5.2964091511969546e-11

-1.9e-06 1.09e-06 -3.3836132632978519e-10 -5.8856342378430333e-10 -7.9493842491901663e-11 4.5803169315989476e-11

-1.9e-06 1.16e-06 -2.8244751702740876e-10 -5.2729175071217892e-10 -7.0613168120409343e-11 3.9367080075227634e-11

”’

# 위의 파일은 숫자로 되어 있고, 중간에 빈칸이 있으며, 한줄이 하나의 데이터를 나타낸다. 그럼, 파이썬에서 저걸 다루려면 리스트로 해보는 것이 가장 간편할 것이다.

# 그럼 일단 fileProcess() 함수를 정의하자.

def fileProcess(fn):

mydata = open(fn, ‘r’) # 이렇게 하면 파일을 읽기 전용 모드로 열어서 mydata라고 부르기로 한 것이다.

for i in range(datafile_Length):

data1=dataProcess(mydata.readline())

# 여기서 dataProcess()는 fileProcess()보다 앞부분에서 정의(def) 되어 있어야 한다. 지금은 설명을 위해서 뒤에 배치했을 뿐이다.

# mydata.readline()은 mydata에 있는 파일에서 1줄을 읽어오라는 뜻이다.

# dataProcess()는 나중에 정의한다 치고, 일단 위의 코드를 잘 보자. for 구문으로 돌리는데, datafile_Length만큼 돌리게 되어 있다. datafile_length는 데이터 파일의 길이이다. 즉, 데이터 파일이 몇줄인지 알고 있을 때 그 수를 여기에 집어넣어주면 된다. 하지만 대부분의 경우 데이터 파일의 길이는 계속 변하고, 변하지 않더라도 신경쓰고 싶지 않을 것이다. 그런 경우에 다음과 같은 방법을 사용할 수 있다.

import numpy

def fileProcess(fn):

mydata = open(fn, ‘r’)

while True:

data1=mydata.readline()

tmp = numpy.array(eval(“[“+data1.replace(“\t”,”,”)+”]”))

if len(tmp)==0:

break

data1=dataProcess(tmp)

# 위와 같이 while 구문을 이용해서 반복시키면, 조건에 True가 들어가 있으므로 무한 반복된다. 즉, 파일의 길이와 상관 없이 무한히 파일 처리 과정이 계속된다는 뜻이다. 물론 모든 데이터 파일은 길이가 정해져 있고, 유한하기 때문에 실제로 그런 일이 일어나서는 안될 것이다.

# 그래서 그 뒤에 if 구문을 이용해서, 읽어온 데이터가 없으면 break를 써서 while 루프를 벗어나도록 하고 있다. 읽어온 데이터가 없는 경우엔 dataProcess()함수가 실행되지 않고 그대로 while 루프를 빠져나가 버릴 것이다. 그럼 그 앞에서 tmp에 무슨 짓을 한 것일까?

# tmp에는 numpy.array를 집어넣었다. 그럼 그 안에서는 eval이 있고 replace()가 보일 것이다.

# data1.replace()는 data1에 있는 내용을 고친다. replace(“\t”, “,”)함수가 하는 일은 내용중에서 \t를 찾아서 ,으로 바꿔주는 일이다. 여기서 \t나 ,는 원하는대로 다른 기호나 문자열로 바꿀 수 있다. 1글자뿐만 아니라 여러 글자도 된다.

# \t가 보이지 않는다는 사람이 있을 수 있는데, 그런 사람은 아마 python escape characters가 뭔지 찾아보지 않은 사람일 것이라고 생각한다. 물론 찾아볼 필요는 없지만. \t는 위에 있는 데이터에서 “탭 문자”를 나타낸다. 탭 문자란, 키보드의 탭 키를 눌렀을 때 입력되는 글자인데, 탭 키는 키보드 왼쪽의 CapsLock 키 바로 위에 있는 키이다. 이걸 누르면 빈칸이 생기는데, 스페이스 바를 눌러서 나온 빈칸보다는 조금 더 긴 빈칸이 나올 것이다. 이 빈 칸을 탭 문자라고 부른다. 그리고 빈칸을 나타내기 위해서 별다른 방법이 없으므로 \t라는 표현을 사용한 것이다.

# 원래부터 탭이 아니라 쉼표로 저장되어 있는 경우에는 굳이 저렇게 바꿀 필요가 없을 것이다.

# 그 다음 “[“과 “]”을 +로 더해주고 있다. 글자를 어떻게 더하느냐고 질문할텐데, 아주 간단하다. 그냥 이어붙이면 된다. 파이썬에서 문자열은 그냥 리스트로 취급된다. 예를 들어서 “abc”+”def”는 “abcdef”가 된다. 그러므로 “[“+는 data1의 앞부분에 [를 추가할 것이고 +”]”는 뒷부분에 ]를 추가해줄 것이다.

# 그 다음 밖으로 나와보면 eval이 있다. eval()함수는 아주 신기한 함수인데, 그 안에 있는 글자를 읽어서 파이썬 문법으로 해석해준 결과를 알려준다. 즉, 지금 위와 같은 경우 eval()의 안쪽에 있는 글자는 “[5342, 4551, 34255]”처럼 생긴 문자열이다. 이것은 아직 리스트가 아니다. 저건 저기에 써 있는 글자 그대로를 나타내는 문자열일 뿐이다. 하지만 eval(“[5342, 4551, 34255]”)이라고 쓰면 이제 저 문자열은 [5342, 4551, 34255] 이라는 리스트가 된다. 그럼 안에 있는 것들도 숫자로 떨어진 5, 3, 4, 2같은 글자가 아니라 5342라는 하나의 수를 나타내는 것이다.

# 그 다음에 numpy.array에다가 그걸 그대로 집어넣었는데, 이것은 numpy.array는 벡터로 취급되어서 우리가 흔히 알던 리스트나 어레이와 다른 행동을 하기 때문이다. 가령 그냥 리스트나 어레이는 [3,5,2]+[6,4,3]를 했을 때 [3, 5, 2, 6, 4, 3]이 된다. 하지만 numpy.array([3,5,2])+numpy.array([6,4,3])는 numpy.array([9, 9, 5])가 된다. 우리는 이것들을 갖고서 이어붙일 것이 아니라 각 항을 갖고 사칙연산을 해야 하기 때문에 이런식으로 작동하는 것은 매우 중요하다. 이게 안되면 매우 괴로웠을 것이다.

# 그럼 len(tmp)는 뭘까? tmp는 어쨌든 어레이의 한 종류인데, len은 그 어레이의 길이를 알려주는 기본 내장 함수이다. 즉 len([5,3,2])는 3이라고 알려준다.

# 그러므로 if len(tmp)==0: 이라고 썼다는 것은 tmp라는 어레이가 텅 비어있는 어레이라는 사실을 알려주는 것이다. 물론 위와 같은 경우, 텅 빈 줄이 데이터 파일의 중간에 들어가 있고, 그 다음에 다시 의미있는 데이터가 이어지는 경우에는 제대로 작동하지 않는다. 이 경우에 어떻게 해야 할지는 각자 생각해 보도록 하자. 알고보면 그다지 어렵지 않다.

# 그럼 이제 dataProcess() 함수를 어떻게 만들어 볼지 알아보자.

def dataProcess(d):

…

# 일단 d라는 데이터를 받았고, 이건 한줄짜리 어레이 형태의 값들이다. 어떻게 처리하지?

# http://scipy-lectures.github.io/intro/numpy/index.html 여기에 numpy.array에 대해 여러가지를 알려주는 내용이 있다.

# 평균, 최대값, 최소값, 중앙값, 이런 것들을 찾는 건 그냥 이미 다 되어 있다. 예를 들면,

d.mean() # 이건 d의 평균을 구해서 알려준다.

# 나머지도 한번 알아보자.

# 데이타 처리의 세세한 부분은 데이터의 종류에 따라서 다 다르다. 자신의 데이터를 처리하는 방법은 본인만이 알고 있으므로, 그 방법을 어떻게 하면 파이썬으로 구현할 수 있을지도 자신만이 알 수 있다. 이 부분은 반복 숙달을 통해서 연습하는 것이 최선이다.