Python시작

이번 년도 개강(?)부터 두어가지 목표를 두고 공부를 할 계획이다. 그렇지 않아도 매 년 적어도 한 개씩의 언어를 공부해보자는 의지가 2년째 지켜지지 않고 있어서 Python을 공부하려고 한다. 내 기억속에서는 모던-다이나믹-객체지향 언어의 시초로 기억되고 있어서 택했다.

마침 IronPython도 나왔고 하니 주력 언어인 C#과의 연결로 학습효과도 극대로 끌어 올릴 수 있고. 하지만 일단 그냥 Python을 어느 정도 마친 후에 IronPython으로 들어갈 계획. (당연한 이치~!)

여튼 시작이다.

개강

개강한지 2주가 넘었다. 공부에대한 욕구가 슬슬 치밀어 오는 시기가 이 시기인 것 같다. 동기도 부여되고 경쟁의식도 약간 생기고.

물론 나는 졸업한지 2년이 넘었다. 그런데 몸은 기억하더라. 이 시기를.

좌측통행

한국에서는 사람은 좌측통행, 차는 우측통행이다.

사람이 좌측 통행인 것은 옛 일본의 잔재라는 설이 있다. 일본은 사무라이의 나라라고 일컫을 만큼 칼을 가지고 다니는 사람이 많았고, 대부분의 사람은 오른손잡이 이다보니 자연스레 칼집은 왼쪽에 있었을 것이다.

왼쪽의 칼집과 좌측통행의 관계에서 다시 2가지 설이 있다. 첫번째로는 옛 일본에서는 자신의 칼집을 남의 칼집에 부딪치는 행위는 곧 결투를 신청한다는 의미라는데, 이러다보니 우측통행시 필요 없는 싸움들이 생겨났던 것이다. 한쪽에서 결투신청으로 오해를 해서 싸움이 일어나기도 하고, 당사자 둘 다 결투신청이 아닌 것을 알면서도 남의 이목도 있고하다보니(체면과 명예가 중요한 옛날이다보니 아마 지금보다 더 그랬을 것이다) 어쩔수 없이 싸워야 하는 일들이 자꾸만 발생되서 자생적으로 좌측통행이 되었다는 설. 두번째로는 왼쪽에 칼집이 있을 시에는 왼쪽으로 붙어있어야 싸울 수 있는 오른쪽 공간을 확보할 수 있고 칼을 꺼내드는데 있어서도 서로 방해없이 째빠르게 할 수 있어서 그렇게 되었다는 설.

잠시나마 일본의 지배를 받았으니 이래저래 일리가 있는 말이기도하다.

그런데 내가 꽤 오랜기간 지켜본 결과 사람(한국사람)들은 우측통행을 더 선호하는 것 같다. 어릴적부터 귀에 못이 박히도록 좌측통행을 들어왔을 터이고(중/고등학교시절 복도나 계단에서 오른쪽으로 다니다 선생님께 혼이 났던 적이 꽤 있었다) 거리에는 친절하게도 발밑에 좌측통행이라고 뻔히 써있는데도 사람들은 우측으로 잘 다닌다. 특히나 급할 수 밖에 없는 공간 - 지하철승강장 같은 곳 - 에서는 우측통행 비율이 더 높은 것 같다.

게다가 차도는 우측이고, 인도는 좌측이니 운전을 하는 사람들이 걸을 때 헤깔려 하는 것 같다. 억지스러울 수도 있겠지만 막상 나만해도 차가 우측통행인지 좌측통행인지 가끔 헤깔릴 때가 있다(본인은 운전면허 없음)

한가지 의문점은 내가 기억하기로 기차는 대부분 좌측통행이었던 것 같고, 지하철은 2/3/5호선은 우측통행, 나머지 호선은 잘 모르겠고.

뭐가 이렇게 헤깔리게 해놨지?

————————여기까지는 나의 머리속 내용이었고 아래 내용은 검색 후 알아낸 정보—–

- 서울 지하철 2호선, 우리나라 첫 ‘우측통행’ 철도
2호선이 첫 우측통행 철도로군! 그럼 1호선은 좌측통행?

- 섬나라(일본,영국)는 왜 차들이 좌측통행할까요?!
   듣고보니 그러네?

- 한강에서의 보행자는 우측통행? 좌측통행?
내가 다리 좀 건너봤는데, 차랑 같은 방향(우측통행)이 좋다. 차와 반대방향으로 걷게되면 일단 운전자와 마주보게되어 매우 민망하고, 눈 앞에서 트럭이 돌진해오면 꼭 나한테 달려들 것 같아서 몸이 휭~하고 흔들린다. 안보이면 좀 낫다.

- [교통사고 판례] 차도와 인도의 구분이 없는 도로에서 좌측통행을 하지 아니한 자의 과실책임 (제일상단 클릭)
아;; 사람이 우측으로 다니면 법에 불리하군! (76년 판례라서 이제는 좀 다를 수도 있겠지만)

- 왜 나를 ‘갈지자’로 걷게 만드는 거야? (오마이뉴스)
오~~하려던 얘기들이 여기!

- 사람은 좌측통행?
거봐거봐 내말이!!!

이방인 김범

지난 금요일 방영했던 하이킥의 김범에피소드를 떠올려보니, 외국인노동자들의 한국 내에서 위치와 닮아있다는 느낌이 들었다. 고향에 부모님과 형제자매, 어떤 사람은 아내와 딸까지 있지만 한국을 제2의 고향이라 여기고 열심히 일하는 노동자 분들과 그들을 영원한 이방인으로 몰아부치는 사람들.

타지에서 안됐다며 반찬도 나눠주시고 잘 챙겨주시던 아주머니. 그 아주머니의 자식이 동남아에 놀러가서 폭행을 당했다면, 과연 그 노동자를 계속 고운 눈으로 바라볼 수 있을 건지.
이슬람국가에 파견나갔던 아들이 싸늘히 시체가 되어 돌아왔다면 이태원의 이슬람 사원을 멋지다며 구경할 수 있을지.

무엇이 ‘우리나라사람’을 구분짓게 하고, 더 나아가 무엇이 ‘우리’라는 둘레를 정하게 만드는지.

갑작스레 하이킥의 여러 시선들 중 하나는 ‘이방인 김범의 대안가족물’이 아닐까하는 생각도 든다.(훗)

 

그런데 어떻게 할머니 생신인데 김범도 안부르시지?

IronPython for ASP.NET

바로 전 포스트에서  얘기했다시피 IronPython은 .NET으로 구현되어져있기때문에 IIS위에서 쌩쌩 잘 돌아간다. 돌아가게 하기위해서는 이런저런 작업이 필요하겠지만, Setting에 어려움이 있다고 느꼈는지 MS에서는 고맙게도 설치형(아직 CTP지만)으로 제공해주고 있다.  더욱 더 고맙게도 설치후에는 Visual Studio 2005 (혹은 Visual Web Develper 2005 Express)에 기능들이 추가된다.

IronPython for ASP.NET을 다운받으려면 여기를 클릭~

설치파일은 MWSetup.msi. 실행하고 완료하면 ProgramFiles에 Microsoft IronPython for ASP.NET폴더가 생긴다.  폴더로 가보면 “AddPyScriptMap.vbs”파일이 있다. 가볍게 실행~  이 파일은 간단히 말해서 .py를 .aspx(.cs)돌리듯이 돌리게 하는 스크립트다.

자 이제 Visual Studio 2005로 가서 새 웹사이트를 만들면 언어에 IronPython이 생긴 것을 볼 수 있을 것이다.

프로젝트 생성하면 Bin폴더에는 IronMath.dll, IronPython.dll, Microsoft.Web.IronPython.dll가 생기고, 루트에는 Global.py도 있고  App_Script폴더도 있다.  App_Code랑 비슷한 폴더인 듯 싶음.

기본 설정을 바꾸려면 아까의 Microsoft IronPython for ASP.NET폴더 밑의 WebAppTemplate를 바꿔주면 될듯하다. C#일때와 특별히 다른 것은 없으니 겁먹지 말고 아무거나 만들어보자.

<form id=”form1″ runat=”server”>
   <div>

      <asp:Label ID=”lbl1″ runat=”server” Text=”Hello, IronPython” />
      <asp:Button ID=”btn1″ runat=”server” Text=”Click ME!” OnClick=”btn1_Click”/>

   </div>
</form>

굵은 이탤릭부분을 추가한 후 F7키를 눌러 소스코드로 이동.

소스코드에는 익숙한 네임스페이스들(System이나 System.Data등등)은 보이지만 쫌 낯설게 보인다. C#일때와 마찬가지로 Page_Load는 기본적으로 추가되어져 있다.  여기서 주의할 점은 C#에서처럼 “디자인모드”에서 버튼을 더블클릭한다거나 하지 마시길. 이벤트 추가 절대 안됨. 손으로해야함;; 또 주의 점. “.”을 아무리 찍어도 Intellisense(자동완성)은 안먹는다. 자자 그럼 하려던 btn1_Click를 추가.  모두 손노가다.

def btn1_Click():
    lbl1.Text = “Hello, IronPython For ASP.NET”

지겹게 따라붙던 “object sender, EventArgs e”는 안써줘도 된다. F5를 눌러 실행. 매우 잘 될것이다!!

그러면 지겹게 따라붙던 sender나 EventArgs가 필요하다면? 그냥 붙여주면 된다. 둘 다 붙여주면 당연히 잘되고, 둘 중에 sender만 붙여주어도 된다.

def btn1_Click(sender):
    lbl1.Text = “Hello, IronPython For ASP.NET<br/>”+sender.ID

실행하면 역시나 너무너무~~ 잘된다.

여기서 특이할 만한점 하나

def btn1_Click(sender):
    lbl1.Text = “Hello, IronPython For ASP.NET<br/>”+sender

이건 될까?

안타깝게도 안된다. “스트링+객체”의 경우 C#은 객체를 자동으로 ToString해주었는데 IronPython은 ToString()을 명시적으로 불러줘야한다.

그럼 Python의 기본 기능들은 잘되는지 확인

def btn1_Click():
    sum = 0
    r = range(0,10)
    f = add(5)
    for x in r:
       sum += f(x)
    lbl1.Text = sum.ToString()    

def add(n):
    return lambda x: x + n

 내용인즉 “0~9까지 리스트를 만들고, 각 값에 5씩 더한후 리스트의 값들을 모두 더한다”임. 종합하자면 5부터 14까지 덧셈을 구한다는 것.

검산 : (5+14) * 10 / 2 = 95

lambda, range 등등 다 잘된다!!!

마지막으로 하나만 더

def btn1_Click():
    lbl1.Text = dir(lbl1).ToString()

편리한 dir기능.

잘된다!!~~~

IronPython 1

IronPython은 .NET 아키텍쳐 위에 문법으로 Python을 쓸 수 있게 하는 것이다. 문법 뿐이 아니라 .NET에서 사용 가능한 클래스들도 이용할 수 있어서 기존의 WinForm, DataSet 등을 Python문법 위에서 사용 할 수 있다.  내용(소스)을 보면 C#으로 Python을 구현하고 있다. (그렇다면 IronPython을 IIS위에서 돌릴 수 있다는 말)

다운은 여기서 받으면 된다.

몇 가지 사용평

- 빠른 개발(rapid development)을 목표로 만들었다지만 해본 결과 사실상 그렇게까지 빠른 것 같지는 않다. intellisense가 지원되지 않아서 소스 코드량은 좀 많더라도 그냥 C#쓰는게 더 빠를 것 같다.

- 원래 Python에서 잘되던 라이브러리가 잘 안돌아간다. FeedParser 좀 돌려보려는데 당췌 잘 되지를 않는다. 상황을 봐서는 이 외에도 많은 라이브러리들이 잘 안돌아 갈 것 같다.

- 일반 Python보다 Startup시간이 상~~당하게 길다.

설치한지 얼마 되지 않은 현재로서 아직까지 Python보다 눈에띄게 나은 점, C#보다 눈에띄게 나은 점은 찾기 힘듬.

Quick And Publish

무엇이든지 재빠르게. 그러나 꼭 Publish.

ruby나 python과 같은 Dynamic Lang들이 각광받는 이유도
기존의 자바나 닷넷보다 빠르게 개발이 가능한데다가 Deploy까지 쉬워서가 아닐까

그런 의미에서 나도 삶의 태도를 바꿔야지 않을까 싶다. (개발말고)
받아들이는 건 Quick하긴 한데 정리가, Publish가 너무너무 Quick하지 못하다.

결국은 게으름을 핑계로한 사고의 숙성.
Beta Release를 몸에 익혀야겠음.

사실 지금 쓰고 있는 이 짧은 글조차도 쉽게 쓰여지지가 않는다.

쓰자고 마음 먹은게 3일전인가이고, 편집기 열어서 글 적는 데도 20여분은 걸린 모양이다.

그런데

그런데
[Ⅰ][부사]
1 화제를 앞의 내용과 관련시키면서 다른 방향으로 이끌어 나갈 때 쓰는 접속 부사.
2 앞의 내용과 상반된 내용을 이끌 때 쓰는 접속 부사. ‘그러한데’가 줄어든 말.

(네이버 국어사전발췌)

네이버 국어사전에 따르면 2가지 뜻 전부 다 앞 내용의 반대되는 내용을 이어나갈 때 쓰는 부사로 뜻이 나와있다.

이 단어의 문제는 “앞 내용의 반대”라는 것에 대해 기대하는 바가 말하는 사람과 듣는 사람이 다르다는 것이다.

월요일날 MBC아침뉴스의 날씨코너에서 기상캐스터는 아래와 같이 말했다.

“주말 내내 쌀쌀했습니다. 그런데 오늘……”

나는 여기까지 듣고 ‘오늘 푹한 날씨군!’이라고 기대했다. 그러나..

“오늘도 여전히 춥겠습니다~” (여자 기상캐스터 특유의 끝말올리기)

내가 봐온 바로는 기상 캐스터들은 자주 저런 표현을 쓴다.

처음에는 약올랐지만 생각해보니 맞는 것 같기도하고, 나만 이상하게 받아들이는 것 같기도 하고.

해킨토시 설치 완료!

맥의 CPU가 x86으로 옮겨가면서 맥의 기본OS인 OS X가 일반(x86계열)PC에도 설치가능하게 되었다. 물론 기분좋고 평탄하게 깔려주진 않는다-_-;; 여러가지 Hack, 우회, 패키지화 등을 통해 지금은 좀 예전보다는 좀 나아진 것 같지만 여전히 드라이버 문제가 좀 심각하다;; 여하튼 그렇게해서 나온단어가 해킨토시(Hacintosh)이다. Hack+Macintosh. 나도 컴퓨터도 교체한 김에 며칠간 해킨토시 설치를 시도했지만, 역시나 만만치 않다; 게다가 해킨토시와 그다지 궁합이 안맞는다는 965P-DS보드. 윽; OS자체는 그나마 잘깔리는데(약간의 CMOS노가다) 드라이버 문제가 심각했다. 잘못된 드라이버 깔고, 안전모드도 부팅 안되면 바로 OS재설치;;; 한 15번은 깐 것 같다. 여튼 여차저차해서 성공!!! 사파리 브라우져로 지금 이 글을 쓰고 있음! 후훗 스크린샷공개~

1) 일반화면
macosx.JPG

2) 일반화면 2
 macosx2.jpg

3) 창들어갈때 말려올라감
macosx1.jpg

4) Expose - 바탕화면보기 잘보면 귀퉁이에 뭔가들 있다. 바탕화면보기 단축키를 누르면 창들이 화면 밖으로 슈욱하고 빠진다
. macosx3.jpg

 5) 위젯들 - 바탕화면이 회색처리되는게 인상적
macosx4.jpg

6) 창최소화 - 유령이 고스트바스터즈에게 잡히듯 쇽하고 들어가버린다. macosx5.jpg

7) 윈도우에선 애물단지 같았던 퀵타임과 iTunes가 맥에선 휙휙이었다. 화면에 등장하는 애는 정상이 아니지만, 화면은 정상이었음. (정말 어글리한 베티;; )
macosx6.jpg

8) 브라우져 - 사파리에서 RSS보기화면이다. 기사 길이를 조절할 수 있는게 인상적. 파폭과 오페라도 잘 동작한다. (느낌은 윈도우용하고 왠지 꽤 틀리긴하다) spotlight - 화면 오른쪽 상단의 spotlight창에 검색할 파일 이름을 치면 결과가 쭈우욱 나온다. 키보드위주의 플레이어(나같은)에게 아주 유익함. 윈도우에선 맨날 windowkey+r키를 눌렀는데, 비교가 안됨; macosx7.jpg

니 문서

윈도우를 깔게 되면 해당드라이브에 Windows를 비롯하여 Program Files등의 폴더들이 자동생성된다. (자동생성이라기보다 설치?라고 해야할까)
무엇보다도 사용자에게 확~~와닿는 자동생성 폴더는 뭐니뭐니해도 ‘내 문서’폴더이겠다.
아시겠지만 ‘내 문서’ 폴더는 ‘내 그림’과 ‘내 음악’폴더도 같이 만들어준다.

윈도우(XP sp2)를 새로깐지 어어언~십여일!
그럼 지금 본인의 컴퓨터 ‘내 문서’폴더를 봐보자.

your_doc.png

내그림,내음악은 자동생성되었고, Flock Blog Posts는 Flock브라우져를 까니 생겼다.(원격 포스팅을 위해 설치)
Sony와 Sony ACID Pro 6.0 Projects는 음악프로그램인 ACID를 까니 생겼다.
Updater5는 Adobe Reader 8.0(원래는 Acrobat Reader였는데 언제부터인가 이름이 바뀌었다)을 까니 생겼다.
Visual Studio 2005는 말그대로 개발툴인 Visual Studio 2005를 까니 자동으로 생겼다.

그럼 이번엔 ‘내 문서’의 ‘내 음악’ 폴더를 봐보자.

your_music.png

CDDB와 MP3폴더는 CDex를 까니 생기는 것 같다.
iTunes폴더는 iPod을 위해 iTunes를 설치하니 생겼다(윈도우환경에서 플레이어로는 별로 좋은 것 같지 않음)

이게 “내 문서(My Document)”냐? “니 문서(Your Document)”지? (정확히는 ‘니들 문서’)
지금 “내 문서”에서 내가 만든 문서는 덧셈뺄셈할께 있어서 임시로 만든 Book1.xls이 끝이다.
내가 이래서 내 문서 폴더를 못쓰겠다. 뭐 프로그램만 깔면 ‘내 문서’에 자기네들 폴더를 덕지덕지 만들어버니 원~~
다른 방법이 없다면 ‘내 문서’에 ‘Application Data(응용프로그램 데이터)’라는 폴더라도 만들어서 거기에 일괄적으로 넣으면 안되나?
‘내 문서’의 의도는 백분알겠는데, 저러니 사용할 맛이 안난다. 낯선 폴더들이 마구마구. 지저분~
내가 리눅스나 Max OS를 안써봐서 다른 OS는 어떤지 모르겠다.

과연 저게 맞는걸까????

 

« Previous PageNext Page »