Archive for February, 2007

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는 어떤지 모르겠다.

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