지난번 겨울에 있었던 매쉬업 경진대회에 이어서 Daum Open API 관련 행사에는 두 번째로 참가하게 되었습니다. Open API를 이용한 웹 개발과 ASP.NET에서의 연동에 개인적으로 관심을 많이 두고 있었지만, Open API의 또 다른 활용 가능성을 살펴보고 싶었습니다. 무엇보다도 평소에 만나기 힘들었던 분들과 함께할 수 있었던 것은 참 좋았습니다. 특히, 길버라이트님을 뵐 수 있어서 무척 반가웠습니다. :-)

지난 겨울에 문방사우를 만들면서 남겨놓은 CLIFX OpenAPI Library를 업데이트한 것을 바탕으로 Inplace 프로젝트를 약 9시간 정도에 걸쳐서 완성했습니다. 부족한 부분도 있었지만 Open API를 통해서 만들어보고 싶었던, 간단하지만, 실용적인 웹 서비스를 데모로 보일 수 있었습니다.

사용자 삽입 이미지
 
사용자 삽입 이미지

검색 결과

로고는 같이 프로젝트에 참여했던 기혁 선배의 작품입니다. -_-v

국내 대부분의 Open API 서비스가 검색 결과를 RSS 컨테이너 기반으로 제공하고 있었기 때문에 일관성있게 프로바이더들을 묶고 검색 결과를 표시할 수 있었습니다.

검색 결과 제일 하단에는 Internet Explorer를 위한 즐겨찾기 일괄 내보내기와 HTML 내보내기 기능을 실행할 수 있는 버튼을 두었습니다.

사용자 삽입 이미지

IE 즐겨찾기 내려받기 결과

사용자 삽입 이미지

HTML 내보내기 결과

 

여러모로 재미있었던 시간이었습니다. 차기 행사때는 더 재미있는 일들이 많을것 같습니다. 벌써부터 기대되네요. :-)


Creative Commons License
Creative Commons License
남정현 이 작성.

당신의 의견을 작성해 주세요.

[로그인][오픈아이디란?]
오픈아이디로만 댓글을 남길 수 있습니다

Scene #1

시상식 후 네터스 사람들과 함께 기념 촬영 한 컷!

2008 Imagine Cup France 소프트웨어 설계 부문 한국 대표 선발전을 오늘 다녀왔습니다. 정말 수준높은 작품들이 많았고 다들 열심히 준비를 하신것 같아서 보는 내내 즐거웠습니다. 저 개인적으로는 TWWA 팀의 응원 겸 지지를 위하여 네터스 사람들과 함께 다녀왔습니다.

Scene #2

(왼쪽부터) 김성진, 이동훈, 곽재경, 유신상

참으로 대단하신 분들이 많았습니다. 비용과 재화의 문제라는 넘기 힘든 벽이 있기는 하였으나 소프트웨어만으로는 해결하기 어려운 문제들에 대한 참신한 시도들이 많았고, 관점의 전환을 통하여 단순한 모니터링이 아닌 정책 입안과 사업 수립에 영향을 줄 수 있는 객관적인 평가 자료를 제시하는데 도움을 주는 전략적인 소프트웨어들까지 있었기 때문입니다.

Scene #3

아쉽지만 그래도 멋졌어요!

아쉽게도, 우리 동아리 사람들이 함께하는 TWWA팀이 2위에 랭크되었지만 옆에서 준비하는 모습을 쭉 지켜봐왔던 저로서는 그래도, 너무나 자랑스러웠습니다. 여러 사람들이 보시는 블로그이긴 하지만 개인적으로 전 이렇게 말하고 싶습니다. "TWWA팀, 정말 최고예요!"

Scene #4

다같이 기념촬영!


Creative Commons License
Creative Commons License
남정현 이 작성.

당신의 의견을 작성해 주세요.

[로그인][오픈아이디란?]
오픈아이디로만 댓글을 남길 수 있습니다

파이썬은 기본적으로 문자열, 리스트, 튜플, 사전을 언어 차원에서 지원할 수 있는 스크립트 언어입니다. 오늘 알아볼 유형은 문자열과 리스트입니다. 나중에는 큐와 스택의 경우 리스트 안에 이를 Emulation (흉내내기)할 수 있는 함수를 호출하는 것으로 작업이 가능함을 확인하고 좀 더 자세히 다루어보기로 하겠습니다.

참고로 파이썬은 STL이나 .NET에서처럼 Stack과 Queue라는 것이 명확하게 존재하는 것이 아니므로 주의할 점이 있겠지요. 즉, 리스트를 사용하고 있지만 리스트가 아닌 스택이나 큐로서의 역할을 하고 있음을 명확히 알려줄만한 어떤 힌트가 포함되어야 한다는 뜻입니다. 쉬운 예로 변수 이름의 정의부터 달리한다거나 주석을 달거나 하는 등의 일이 있을 것입니다.

다시 본론으로 돌아가서, 파이썬이 기본적으로 제공하는 네 가지 유형의 데이터 구조를 분석해 보도록 하겠습니다.

* 문자열 (String)

파이썬의 문자열은 우리가 아는 문자열과 90% 같습니다. 나머지 10%가 무엇일까요? 파이썬에서의 문자열은 우리가 C/C++/Java/C#에서처럼 문자열의 특정 인덱스에 있는 글자를 치환하는 것을 지원하지 않습니다. C 계열 언어를 사용하다가 제일 어렵게 느껴지게 되는 부분이 바로 이 부분일 것입니다. 또한,  파이썬 코드에서의 문자열 표기는 작은 따옴표가 문자 하나를 나타내고, 큰 따옴표가 문자열을 나타내는 것이 아닙니다. 양쪽 표기 방식 모두 문자열을 의미합니다.

* 리스트 (List)

앞에서 예를 들었던 문자열과는 달리 리스트는 원소 단위의 편집이 가능하며 서두에서 설명하였던 그대로 큐와 스택을 에뮬레이션할 수 있는 관련 함수도 제공한다고 하였습니다.

리스트를 만들기 위해서는 다음과 같이 작성할 수 있습니다.

name = [ 'young-hee', 'cheol-soo', 'joo-yeon', 'min-ji' ]
loves = [ 'young-hee', [ 'min-su', 'cheol-soo' ], 'dong-soo', [ 'min-ji', 'jinee' ] ]

loves 리스트가 독특해 보입니다. 즉, 리스트 안에 리스트를 중첩해서 삽입하는 것이 가능함을 보여주고 있습니다.

리스트는 앞서 설명한 문자열과는 달리 훨씬 유연합니다. 원소의 개별 편집을 지원하기도 합니다. 특정 원소를 지우기 위해서는 다음과 같이 명령을 내리면 됩니다.

del name[0]
del loves[0]
del loves[0][1]

리스트에 제공되는 몇 가지 함수를 알아보도록 하지요. 우선 리스트를 사용하면서 가장 많이 사용할 정렬 함수를 살펴보면 간단합니다.

name.sort()
loves.sort()

결과를 확인해보려면 간단히 변수 이름만 입력해봐도 알 수 있습니다. 그런데 loves의 경우 중첩된 리스트에 있는 것이 앞으로 오고 개별 원소만 정렬된 상태로 되어있습니다. 무엇을 의미하는 것일까요? 중첩 리스트에서의 정렬은 재귀적이지 않음을 보여주는 것입니다.

중첩 리스트를 이용하여 간단히 행렬도 표현해볼 수 있을 것입니다. 예를 들면 [[1, 2, 3], [1, 1, 1], [3, 2, 1]] 과 같다고할 수 있겠지요.

** 돌발 퀴즈: 문자열과 리스트는 서로 형식 변환이 가능한 관계입니다. 문자열을 리스트로 바꾼 것과 리스트를 문자열로 바꾼 것의 차이점을 확인해 보시고 댓글로 그 차이점을 남겨주시기 바래요. ^^

돌발 퀴즈를 위한 힌트를 하나 드리겠습니다. 리스트와 문자열 사이의 형변환은 아래와 같이 하면 됩니다.

a = list('my lover')
b = str(a)

다음 Chapter에서는 리스트에서 제공하는 큐와 스택 에뮬레이션 기능을 살펴보기로 합니다.

Creative Commons License
Creative Commons License
남정현 이 작성.

당신의 의견을 작성해 주세요.

[로그인][오픈아이디란?]
오픈아이디로만 댓글을 남길 수 있습니다