2008년 4월 24일 목요일

Google Summer of Code 2008 : 시작하기

Google Summber of Code 이라는 행사에 대해서 (이하 Soc) 들어본 분도 계시고 처음 듣는 분도 있을 겁니다. 일단 SoC가 무슨 행사인지 설명하자면;
구글에서 오픈소스 개발 단체들을 지원하여 여름 방학 동안 해당 단체의 프로젝트의 일정 작업을 학생들의 참여로 해결할 수 있도록 돕는 행사. 참여한 학생들에게는 최대 $4500의 돈이 지급된다.


한마디로 구글에서 돈을 줘가면서 오픈소스 프로젝트를 돕는 그런 행사인데요. 이미 3-4년은 된 행사이니만큼 어느 정도 규모도 커져서 2008년 현재 174개의 단체들에서 각자 3-10개 정도의 해결과제를 제시하고 있습니다. 이 과제들에 학생들이 참가서를 제출해서 단체의 멘터들이 참여여부를 결정하는거죠.

SoC를 처음 알게 된 것은 시작을 하던 2005년 부터인데 참여하고 싶었지만, 2005년 11월에 입대를 하느라(혹은 그 당시 회사를 다니느라) 하지 못했습니다. 군복무 중에도 행사를 눈여겨 보다가 이번에 복학을 하고 4학년으로 학교를 다니면서 얼마전에 지원을 했었는데 해당단체(MoinMoin Proejct)에서 제가 지원한 FCK Editor Improving 이 통과되었다고 메일이 왔네요.

하던 아르바이트들이 몇개가 있어서 정말 치여가며 작성했던 참가서이고 제가 봐도 부끄럽기만 한데 MoinMoin팀에서 잘 봐주신 것 같습니다. 이제 열심히 해야죠. ㅜㅜ 할일을 생각하니 앞길이 막막..

여튼, 준비를 하면서 새롭게 알게 된것도 많고 저와 비슷한 행사들이나 다음번 SoC 참여를 준비하시는 분들을 위해서 조만간 SoC를 준비하는데 알아야 할 것들과 제가 준비했던 것들을 정리해서 올리겠습니다.

Have a nice day :-)

2008년 4월 4일 금요일

Motion Picture Screensaver

예전에 Apple의 OS X을 처음 봤을 때, 가장 인상 깊었던 것은 미려한 인터페이스 디자인이었습니다. 그리고 또 다른 인상 깊었던 것이 슬라이드쇼였습니다. 제가 말하는 대상은 정말 단순한 슬라이드쇼인데요. 그림이 한장 한장씩 바뀌면서 표시가 되는거죠. 얼핏보면 정말 단순한 작업입니다. 물론, 생각한큼 단순한 작업이기도 하구요. 그런데 OS X의 그 작업은 뭔가가 달랐습니다. 단순히 이미지가 변경되는게 아니라 그 중간에 변경되는 효과, 이미지가 보여지는 효과가 달랐습니다.

그때는 그 효과를 뭐라고 말해야 할지 몰랐는데 뒤져보니 moving slideshow정도로 말하면 될 것 같습니다. 여튼 그 효과가 굉징히 인상 깊었는데, 윈도우에서 그런 효과를 내주는 프로그램이 없나 뒤지다가 motion picture screensaver라는 걸 찾았습니다. 화면보호기 말고도 그림을 보여주는 다양한 곳에서 사용할 수 있을 것 같은데, 일단은 화면 보호기네요.

설치 방법은 간단합니다. 일단 이곳을 클릭해서 프로그램을 다운로드 하시고, 받은 압축파일을 열어보면 디렉토리가 하나 보이는데 들어가보면 여러 파일들이 보입니다. 그 중에 MotionPicture.scr 라는 제목의 파일을 마우스 오른쪽 버튼으로 클릭하고 나오는 메뉴에서 설치를 선택하면 설치가 완료됩니다.

바 탕화면에서 마우스 오른쪽 버튼을 클릭 후, 나오는 메뉴에서 속성을 선택하면 창이 하나 뜨는데 거기서 화면보호기를 선택하면 아까 설치한 화면 보호기가 보입니다. 설정을 누르면 아래와 같은 메뉴가 나옵니다. 오른쪽 중간 즈음에 File Settings 라는 제목의 부분에서 원하는 사진이 있는 디렉토리를 선택하면 화면보호기에 그 사진으로 구성된 슬라이드쇼가 출력됩니다.

단순하지만 굉장히 멋있으니 즐겨보세요~

Motion Picture Screensaver Preference

2008년 4월 3일 목요일

Daum Dev Day 2008 : 열정 그리고 재미

DevDay에 대한 감상


지난주 토요일에는 비가 주룩주룩 내렸지만, 비와는 상관 없이 기분이 좋았습니다.

다음에서 주최한 Dev Day 2008이라는 행사에 다녀와서 그런데요. 한나절 동안 개발자들이 모여 OpenAPI를 이용하여 다영한 프로그램을 만드는 행사였습니다. 50명이라는 많지는 않은 인원이었지만 정말 활발하게 개발을 해서 6시간정도의 개발 시간 동안 20여개의 작품들이 만들어졌습니다.

일단, 생각보다 대학생들이 많이 와서 놀랐구요(저도 대학생이었지만). 그 중 상당수가 숭실대인 것에 놀랐습니다(한양대도 좀 오지..). 아무래도 직장인들의 참여가 적은 것은 황금같은 토요일 오전, 오후가 행사시간 이었기 때문일 것 같은데요. 저도 예전에 회사 다닐때는 토요일에 집에서 뒹굴거리면서 자는게 젤 좋았던 기억이 있는데, 그것 때문에 직장인들이 참여를 적게 한게 아닐까 생각되네요.

행사는 오전 10시에 시작해서 30분정도 각자 소개를 간단하게 하고 1시간 가량 준비해온 프로그램을 만들고 점심을 먹고 다시 5시 좀 넘게까지 프로그램을 만들고 마지막에 제작한 것들을 발표하는 형식이었습니다. 그 중에 옆에 만든 작은 공간에서는 작은 세미나 같은 형식으로 발표가 이루어지고 있었구요. 개발을 하는 공간에서는 자유롭게 팀을 이루어서(혹은 이미 만들어온 팀에서) 프로그램을 만들었습니다. 전 학교 후배 두명이랑 갔었는데 계속 프로그램을 만들다가 마지막 튜토리얼만 잠시 들을 수 있었습니다.

제가 했던 것은 대학에서 활도하고 있는 전산전공학회인 자람이라는 단체의 새로운 홈페이지 중에 위젯기능이 있는데 거기에 사용될 위젯을 만드는 일이었습니다. 일단 OpenAPI를 이용하여 프로그램을 만드는게 행사의 목적이었던 만큼 평소 하던 것 중에서 관련된 것을 찾다보니 위젯이 생각났고 후배 두명과 함께 위젯들을 만들면서 시간을 보냈습니다.

그런데, 처음부터는 위젯 구동 시스템을 세팅하는데 30분이 넘게 걸렸고, 전역 후 간만에 소스를 만지다보니 또 적응하는데 시간이 걸려서 이런 저런 시간 낭비가 많았습니다. 또, 후배들은 처음으로 PHP를 써보는거라서 이것저것 가르쳐주고 찾아보면서 개발하다보니 위젯 2개 정도 밖에 만들지 못했네요.

그래도 같이 모여 즐겁게 프로그래밍하고 서로 만든 결과도 보면서 열정을 나눌 수 있었고 재미도 많았습니다. 무엇을 했는가보다는 어떻게 했느냐가 더 중요한 거겠죠.

결과물


RSS Reader Widget

rss_reader_1.png

Weather Widget

weather_1.png

2008년 4월 2일 수요일

Origin of A* Algorithm

오늘 인공지능 수업 을 들으면서 A*알고리즘 에 대해서 배웠는데, 수업 중간에 문득 한가지 의문이 떠올랐습니다.
A* 알고리즘 이라는 이름을 지었을까?

점점 궁금해지더군요. 결국 교수님께 물어보긴 했는데 교수님도 그 유래는 잘 모르셔서 제가 한번 알아봤습니다.

일단 위키피디아의 A*알고리즘 페이지 를 살펴보니 처음으로 이 알고리즘이 소개 된 것은 1968년에 한 논문 을 통해서였습니다.

The algorithm was first described in 1968 by Peter Hart, Nils Nilsson, and Bertram Raphael. In their paper, it was called algorithm A. Since using this algorithm yields optimal behavior for a given heuristic, it has been called A*.

- from wikipedia A* Algorithm page

"A Formal Basis for the Heuristic Determination of Minimum Cost Paths in Graphs" 라는 제목의 논문 이었는데요, 간단히 말해서 "그래프 상에서 최소 비용의 경로의 휴리스틱 결정을 위한 기초 원리" 정도로 해석할 수 있겠습니다. 논문의 내용들이야 A*알고리즘에 대한 일반적인 설명(지금 시점에서는요)이지만 한가지 눈여겨 볼 부분이 있습니다. 논문 2페이지의 오른쪽 단의 하단 부분에 아래와 같은 내용이 있습니다.

We call an algorithm admissible if it is guaranteed to find an optimal path from s to a preferred goal node of s for any 8 graph. Various admissible algorithms may differ both in the order in which they expand the nodes of G, and in the number of nodes expanded.

- from "A Formal Basis for the Heuristic Determination of Minimum Cost Paths in Graphs", page 2

인용문의 강조 표시는 제가 했습니다. 바로 강조 표시된 부분이 유래라고 설명 될 만한 부분이죠. 일단 A*의 A가 어디서 유래했는지는 알 수 있게 되었습니다. admissible 이라는 단어에서 유래한거죠. 사전에서 그 뜻을 찾아보면 "자격이 있는" 정도로 해석되는데 적합한 혹은 최적이라는 정도의 뜻으로 이해하면 될 것 같습니다. 왜 그런 이름을 붙였는지는 모르겠지만, 일단 위키피디아에 언급된 algorithm A는 알게 되었죠. 그리고 위키피디아에 언급된 것처럼 논문에서 A*라는 단어가 처음으로 언급되는 부분은 algorithm A라고 명명했던 알고리즘에 휴리스틱한 함수를 사용하도록 하면서 A*라고 부르게 됩니다.

결론은 그냥 A 알고리즘의 발전형이라서 A*라고 부른 것 같네요.

Man of Month를 마치며

벌써 2020년 1월 14일이다. 19년의 마지막 달에 Man of Month라는 팀의 제도를 시작한다고 했었는데, 12월이 지나고 그 다음 달도 거의 절반이 흐른 것이다. MoM을 시작하면서 하겠다고 계획했던 것들도 실제 한 것들과 비교해보니...