Outsider's Dev Story

Stay Hungry. Stay Foolish. Don't Be Satisfied.
RetroTech 팟캐스트 44BITS 팟캐스트

제10회 Daum DevDay

Daum에서 주최한 제10회 Daum DevDay에 갔다가 왔습니다. 항상 DevDay에는 주제가 되는 OpenAPI가 있어서 이번에는 행사공지를 보면서 당연히 Roadview가 주제라고 생각했지만 꼭 그렇지는 않았던것 같았습니다. 대부분은 로드뷰를 주제로 다루기는 했었습니다. 전에는 그냥 개발자 행사로 참가해서 놀다가 왔었는데 이번에는 is윤군, Miracle, Arawn과 함께 매쉬업 경진대회를 위한 m31프로젝트를 함께 했던 봄싹 JS팀(저에게는 최고의 팀인)과 함께 프로젝트는 진행해서 함께 참여했습니다.

기존에는 세션들 몇개 외에 라이브코딩시간이 주어지고 그 시간에 만들어서(전에도 미리 만들어 오기는 하지만 아주 심한정도까지는 아닌...) 마지막에 발표하고 시상하는 형식으로 진행이 되었지만 이번에는 10회라서 그런지 진행방식을 바꾼 것인지 매쉬업갤러리에 행사 일주일 전까지 올려서 추가점수를 받을수 있는 형태로 진행이 되었습니다.

Daum Devday 2010 현수막

3번째 참여하는 DevDay였지만 이번 행사는 유독 행사진행이 매끄럽지 못했던 DevDay가 아니었나 하는 생각이 들었습니다. 미리 작품내서 전시할 기회도 제공이 되었었는데 전시용 노트북을 직접 가져오라고 해서(아무리 무료행사라고는 하지만 회사용 노트북도 많을텐데요.) 저희팀의 Arawn은 노트북을 전시용으로 제공해서 행사내내 구경만하고 앉아 있어야 되는 좀 어이없는 상황이 되어버렸고(DevDay와서 앉아있을 필요가.. ㅡㅡ;;) OpenAPI를 사용하는 개발행사이기 때문에 인터넷이 반드시 필요함에도 불구하고 무선네트워크가 제대로 안되거나(참가자 뿐만 아니라 세션발표하시는 분들도 네트워크가 계속 끊겨버리는...) 발표중간중간 계속 진행이 끊겨버려서 영 집중도 안되고 지루하게 느껴졌었습니다. 프로젝트라는 목표가 있어서 계속 있기는 했지만 가고 싶었던 xper2010 Agile Seminar for beginners를 포기하고 갔었던 행사라서 더 아쉽게 느껴졌었는지도 모르겠습니다. DevDay자체가 원래 딱딱한 행사는 아니고 상당히 프리한 행사이기는 하지만 진행의 미숙함은 영 아쉬울 따름이었습니다.



Session
첫 세션은 RoadView API 튜토리얼이었는데 타겟팅은 항상 어려운 일이지만 기대치가 달라서인지 많이 아쉬웠습니다. 이전 행사때도 기본적인 내용부터 다루기는 했지만 그래도 API가지고 작품을 만들어서 제출해야하는 행사였는데도 불구하고 튜토리얼은 Daum사이트에 나와있는 기본설명들을 따라해보면 알수있는 정도로 끝나지 않았나 싶었습니다.(사실 이부분은 미리 로드뷰로 이것저것 만들어보고 갔기에 그랬던 것이고 전에는 전혀 모르고 가서 API사용해보면서도 헤매이던것을 생각해 보면 애매한 부분이긴 하지만 그래도 좀 더 구체적인 내용이 가이드와 문서이상의 자세한 설명이 진행되지 않은 것은 좀 아쉬웠습니다.)

두번째 세션이었던 "블로그 API(OAuth기반) 튜토리얼"은 개인적으로 관심있었던 세션이었지만 발표하시는 분의 노트북이 네트워크 문제를 일으켜서 후반부에는 데모진행이 전혀 안되었고 라이브코딩 중에도 따라코딩하기 어렵게 창이 왔다갔다 하면서 진행이 되어서 따라해 보기가 쉽지 않았습니다. 간단히 코딩해서 OAuth연동하는 데모였던 것으로 생각되는데 저는 열심히 다 쳤는데 로그인 페이지가 아닌 Oauth연동된 파라미터 결과값이 찍히더군요.(소스를 보면 그게 맞는것 같고 제 근처사람들은 다 그렇게 동작하던데 발표하시는 분이 로그인페이지가 나와야 된다고 하셔서... ㅡㅡ;;)

OAuth 인증에 대한 진행방식과 각 단계별로 넘겨주어야 하는 값들에 대해서는 발표PPT에(정리되면 곧 올려주신답니다.) 상당히 잘 정리가 되어 있었고 몇달전에 Twitter때문에 OAuth를 연동해 본 관계로 어느정도는 이해하고 있었기에 정리된 흐름도는 꽤 도움이 되겠다 생각하고 있었지만 후반에 데모진행과 (네트워크때문인지) 제대로 동작되지 않은 데모소스코드 때문에 OAuth를 처음 본 사람들이 그 흐름을 이해할지에 대한 의문이 좀 들었습니다.



Project m32 (aka Memento)
저희는 m32라는 코드명으로 진행했던(저번에는 m31이어서.... 안드로메다의 별(?)이름인데 m100까지도 있더군요) memento라는 작품을 참가했습니다.(포스터에는 "백문이불여일견"이라는 제목으로 ㅡㅡ;;)

M32 전시모습

로드뷰가 길을 보여주는 상당히 활용도가 높은 기능이기 때문에 약도를 일반적인 지도로 보여주는 것이 아닌 찾아오는 길을 로드뷰로 녹화를 해 놓고 동영상플레이어처럼 재생함으로써 좀더 비쥬얼적으로 편리한 약도를 제공하자는 아이디어에서 출발했습니다.

m32 Preview
(녹화된 영상입니다.)

저는 재생쪽을 맡아서 개발을 하였는데 Java에 Spirng, jQuery등을 이용해서 개발을 하였습니다. 아이디어 자체가 로드뷰 API를 사용해 보고 생각해 낸것이 아니었기 때문에 실제로 개발을 하면서는 많은 어려움이 있었습니다. 제가 처음 생각했던대로 일반적인 다른 API처럼 Javascript로 다루는 것이 아닌 로드뷰를 요청하면 저희한태는 Roadview의 swf이 던져지고 이 파일에 로드뷰에 대한 정보에 대한 파라미터를 던져서 로드뷰를 띄워주는 방식이었기 때문에 거의 제어할 수 있는 것이 없어서 로드뷰의 강력함에 비해 OpenAPI는 반쪽짜리로 느껴졌습니다.

플래시와 Javascript는 동작하는 레이어자체가 완전히 다르기 때문에 Javascript로 swf를 제어하는것 자체가 어려웠고 처음에는 HTML5를 이용해서 프로세싱하는 하는 쪽을 Web Worker로 넘기거나 Local Storage에 저장해서 재생을 상당히 유연하게 할 생각이었지만 SWF로 떨어지는 결과에 모든 것을 포기하고 플래시를 4개 띄워서 순차적으로 보여주었습니다. 말은 녹화이지만 실제적으로는 녹화라기 보다는 등록할때 이동한 각 로드뷰의 좌표와 방향을 모두 저장한후에 재생시에 차례대로 로드뷰를 띄워서 보여주는 방식이기 때문에 4개의 플래시를 돌리면서 사용한 건 새로운 좌표로 바꿔주고 하는 방식으로 하였는데 플래시 때문인지 종종 4개중 하나가 제대로 로딩 안되는 문제도 수시로 발생했었습니다.

이런 부분은 플래시의 성능문제라고 하더라도 로드뷰를 띄울려면 파노라마ID를 통해서 로드뷰를 로딩하고 수평각과 수직각과 줌을 setPan, setTitlt, setZoom을 이용해서 위치를 잡아주는 방식인데 로드뷰의 로딩타이밍을 전혀 보장해주지 않았기 때문에 일반적인 사용에서는 큰 문제가 없어보였지만 저희처럼 뒤에서 여러개를 돌리기 시작하자 파노라마id로 호출한 로드뷰는 아직 다 로딩되지 않았는데 setPan등을 호출해버리자 값을 찍으면 제대로 찍혔는데 실제 로딩된 화면에서는 설정한 수직,수평값이 아닌 그이전에서 봤던 각도를 그대로 유지해버리는 문제까지 있어서 꼼수로 약간 딜레이를 주고 각도를 셋팅해 주어야 정상적으로 동작했습니다.(이제 완전 꼼수인게 더 느린 컴퓨터나 더 느린 네트워크상에서는 딜레이타임도 통하지 않겠죠.)

그리고 플래시로 던져주기 때문에 일반적인 지도에 있는 컨트롤에 대한 제어... 즉 로드뷰상에 있는 앞으로/뒤로 버튼이나 풀스크린, 주행버튼등에 대한 제어(사실 이건 플래시에서 제공해도 충분히 가능할거라 생각되지만)를 전혀 제공하지 않고 있었기 때문에 기분상은 OpenAPI라기 보다는 로드뷰에 대한 접근 URL을 오픈해준 정도에 그친 상태가 아닌가 한 생각이 듭니다.

발표 PT

그리고 일정에 맞춰서 로드뷰 OpenAPI를 오픈하느라 급하게 만든 것인지 제대로 동작하는 구간을 찾기가 어려웠습니다. 저희는 약도를 만드는 것이였기 때문에 특정구간의 로드뷰를 이동할 수 있어야 했는데 다음맵에서는 잘 작동하는 부분도 OpenAPI로 호출한 상태에서는 동작안하는 곳이 너무 많아서(해당 부분으로 이동하면 반드시 멈추거나 더이상 이동할 수 없는 상태가 됩니다. is윤군이 플래시 디버거로 띄워보니 플래시에서 null오류같은 것이 떨어지더군요.) 사실 제대로 일정 구간을 다 동작하는 곳을 찾기가 더 어려울 정도였습니다. 데모용 스크린캐스트를 촬영하는데도 Arawn이 원하는 구간 찾는데만 2시간을 헤매었죠... ㅠㅠ



Epilogue
1등 상품인 iPad를 노리고 참가했지만(우리의 목표는 항상 1등. ㅎ) 저번 매쉬업경진대회보다는 나은 결과였지만 4표차이로 2등을 차지했습니다.(2등 상품도 20만원 문화상품권으로 꽤 많은 금액이었지만 아쉬움은 어쩔수 없네요. DevDay 스케일은 엄청 커졌군요 ㅎ) 최고의 멤버지만 대회타이틀과는 별로 인연이 없는 봄싹 JS팀으로써는 다음번 m33프로젝트를 기약할 밖에 없게 되었습니다. 2주간 코딩하면서 즐겁기도 했지만 처음 구상했던 여러가지가 플래시 제어로 인하여 원천봉쇄가 되면서 약간은 무력감에 빠지기도 했고 요즘 엄청나게 할일이 많아져서(요즘 유독 트래픽집중이 ㅡㅡ;;) 완전히 집중하지 못해서 지나고 보니 좀 아쉽기도 하군요. ㅎ

참가 사은품

이번에는 참가 사은품은 상당히 푸짐합니다. 공짜로 놀다가 점심도 맛있는거 얻어먹고는 너무 안좋은 소리만 한게 아닌가 싶기도 합니다.(개인적으로 좋아하는 회사와 행사라 다음 번에는 더 좋은 행사가 되었으면 좋겠습니다.)

DSC00924



덧) 바쁜 일정가운데서도 즐겁게 완성한 봄싹JS팀한테는 감사하고 다음번에는 선진국형 개발모델(?)로 또 재미난걸 만들어 보길 기대합니다. ㅎㅎㅎ (더불어 쉬고 싶을 주말에 저희 참가한다고 응원(?)와주신 Nephilim형님과 새끼사자님, zeide님과 같이 프로젝트는 안했지만 함께 데브데이에 참가하신 daclouds님께 감사를.. ㅎㅎ)

덧2) 무료행사 참가할때마다 느끼지만 무료행사라고 신청만 해놓고 오지 않는 사람들의 무책임함은 이번에도 역시 나타나서 여러번 메일로 확인했음에도 반정도밖에 오지 않은것 같네요. 점점 업체들은 무료행사를 하기가 어려워 지겠지요. 무료행사라고 신청부터하고 대충 그날 기분봐서 행사참여안하고 하지는 않았으면 하는 바램이 있네요.
2010/06/28 01:27 2010/06/28 01:27