'OPENAPI'에 해당되는 글 2건

  1. 2008/03/31 굿모닝 Daum DevDay (2)
  2. 2008/03/31 OpenAPI를 이용하여 엑셀 키워드에 그림표시하기(Beta) (2)

굿모닝 Daum DevDay

행사 2008/03/31 01:13

개발자는 사람이다.

사람은 태양과 함께 움직여야 한다.

사람은 밤에 자야 한다.

이런 논리로 쾌활한 삶을 살려고 노력하는 본인에게 아침부터 시작하는 DevDay는 마치 사람다웠습니다.(?)

하지만 작년에 밤샘코딩도 그에 따라 좋은 점도 있었습니다. 으슥한 밤에는 즐기는 분위기가 물씬 풍기는 듯 하지요. 뭐 아무렴 어떤가요? 즐거우면 그만인 것을....

아쉬운 건 시간이 넉넉하지 못해 코딩 외에 서로 잡담하고 게임 하는 여유가 없었다는 것이죠. (그냥 길게 할 수 있는 데브나잇이 좋았을 듯도 합니다.)

그리고 작년에는 본인 외에 3명의 학생을 데리고 왔지만 이번은 MT로 인하여 본인 혼자만 참석하게 되었고 이 즐거운 행사를 많은 학생이 느끼지 못한 것에 무척 안타깝게 생각이 듭니다. 흠~

먼저 본인은 사진기의 메모리를 놓고 오는 바람에 사진 한 장 못 찍었습니다. 그래서 딱딱한 후기가 될 듯 사료되는군요.

사진은 여기에서 보세요.

조백규님의 후기

유현규님의 후기

유현규님의 플리커

먼저 본인의 프로젝트는 스마트폰에서 구독한 RSS를 TTS기능으로 보이스로 읽어주는 프로젝트입니다. 4시간 만에 어떻게 할 프로젝트도 아니고 아무런 준비도 없었기에 자포자기하며 버스에 올라 탔습니다.

버스에서 곰곰이 생각해 보았습니다. 아주 간단하고 신선하고 놀라운 게 무엇이 있을까??

잠시 고민 하다가 엑셀! OpenAPI하고 엑셀의 VBA하고 연결해 보자! 라는 아이디어가 떠올랐습니다. 누가 생각이나 해봤을까요? 훗훗

문서작업에 키워드를 이용하여 그림으로 변환시키는 매크로를 OpenAPI를 사용하는 프로젝트로서 함수 하나만 만들면 되겠지 하며 버스의 창 밖을 입 꼬리 올린 썩소를 지으며 향했습니다. (그러다 푹 자고..)

자 이젠 도착하고! 자기 소개와 팀 결성을 한 후 본격적으로 타이핑이 시작되었습니다.

코딩에 물이 오를 찰나에 점심시간이 되었고 역시나 아웃백에 가서 스테이크를 뜯었습니다. 그러나 윤석찬님께서 양이 줄지 않았냐는 물음에 왠지 그런 거 같았습니다. 별로 배부르지 않았기에 혹시 물가로 양이 줄지 않았을까 생각이 들었지만 머릿속은 코딩으로 꽉 차 있어서 다른 음식으로 배를 채울 생각이 없었습니다.

더군다나 앞에 2명으로 소중하신 여성분들과 마주 보고 있어서 즐거웠

역시 코딩에 집중을 가하면 시간이 쏜 살 같이 가는 듯 합니다. 어느덧 종료시간이 다 되어 가고 있었으며 완성되지 못한 채 발표를 하게 되었지요.

안타깝게도 멋지게 그림이 슝슝 나오는 장면을 보여 드리고 싶었지만...정말 안타까웠습니다.
2시간만 연장되었으면

제가 처음 시간에 소개하며 말한 내용이 생각 나네요.

"프로젝트의 결과보다 서로 연결되는 그런 장소가 되었으면 좋겠습니다"

연결..., 저는 뜻하지 않는 몇 분과 많은 대화를 나누었습니다. 제 얘기만 주르륵 한 거 같아서 죄송지만요.

그리고 프로젝트의 성공에 힘이 되어주신 심규진님도 알게 되어서 무척 좋았습니다.

더군다나! 아이팟 나노까지 당첨되는....무척 가지고 싶었지만 아이팟에 나훈아노래를 넣어 어머니 들으시라고 드렸지요.^^

아무쪼록 여러 가지 프로젝트에 짓눌려서 많은 스트레스로 힘들어하는 가운데 저에게 아주 신선한 충격과 열정으로 다시 깨우치고 당당함과 자신감을 가질 기회를 준 행사에 무척 정말 무척 감사를 드립니다.

실무 개발에 찌들려 자기시간 내어 개발 할 엄두를 내지 않는 개발자는 어쩔 수 없겠지만 개발을 즐기고 배우려는 학생 또는 개발자에게 더 발전 할 수 있는 좋은 필드를 마련한 Daum에 깊은 감사를 드립니다.

그리고 제주도에서 오셔서 행사를 위해 계획하시고 준비하신 윤석찬님과 박상길님 그리고 다음직원 분들 또한 무척 감사를 드립니다.

화이팅!

크리에이티브 커먼즈 라이선스
Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이선스에 따라 이용하실 수 있습니다.

Daum DevDay 08에 작업한 프로젝트입니다.

와우 엑셀! 엑셀만큼이나 시간을 단축시키는 작업은 찾기 힘들 듯 합니다.

많은 데이터를 변환할 때 직접 프로그래밍을 하거나 일일이 작업하는 것을 봐왔습니다. 하지만 본인은 엑셀의 VBA를 사용하여 한번에 간편하게 처리를 하게 됩니다.

사실 일일이 작업하는 시간과 VBA를 구현하는 시간이 동일 할 순 있습니다. 하지만 요구사항 변경시에는 몇 배의 효과가 나타나게 되며 VBA의 잦은 구현으로 노하우가 생기게 되어 더 빠른 구현이 가능하게 됩니다.



아주 강력한 VBA 기능에 조금 아쉬운 것은 다양한 예제가 없고 도움말도 많은 도움이 되지 못한다는 것입니다. 그리고 프레임웍의 기능이 약해서 웹 서비스나 현 기술에 걸맞은 작업 시 찝찝한 편법을 구사해야 한다는 것이죠.

이번 Daum 데브데이 프로젝트는 OpenAPI 이용하여 엑셀문서에 키워드를 그림으로 표현한다는 것입니다. 이 프로젝트는 카이스트의 심규진님과 함께 하였습니다.

일반 자바나 C# 같은 고급언어는 주소를 요청하고 받은 XML을 파싱하여 원하는 데이터만 끌어 쓰면 그만입니다. 하지만 VBA는 도저히 그런 쉬운 방법이 없었습니다. XML을 웹에서 바로 받는 것은 없으며 XML을 엑셀에 통합하려는 기능은 있었습니다.

저는 XML을 바로 요청하고 파싱하는 예제나 방법을 열심히 찾았고 심규진님은 편법을 이용한 방법을 구현하였습니다. 결국 시간상, 기능상 심규진님의 방법을 사용하였으며 의외로 아주 잘 돌아갔습니다.(심규진님 아니었으면....ㄷㄷㄷ)

심규진님의 방법은 XML을 새로운 엑셀 시트에 매핑하고 매핑된 시트에 행과 열을 찾아 중요데이터를 긁어 오는 방법이었습니다.

그런데 매핑된 시트는 중요데이터의 위치가 키워드마다 달라 열에 있는 데이터가 진짜 데이터인지 검사하는 모듈을 삽입 하여야 했습니다. 편법도 아주 뺑 돌아서 구현된 결과이지요. 사실 더 빠르고 간단하게도 할 수 있었을 것이지만 시간의 문제로 오로지 결과를 위해 달려야 했습니다.

구현한 코드를 보겠습니다.

Public Sub RequestTest()

Dim urlApi As String
Dim wb As Workbook
Dim getImageURL As String
Dim getImageURL2 As String
Dim oneCell As Range
Dim pic As PictureFormat
For Each oneCell In Selection
Dim se As Object

Set se = ActiveSheet
urlApi = http://apis.daum.net/search/image?q=
& oneCell.Value & --여기에 현재 선택된 키워드 삽입
"&result=10&start=1&output=xml&apikey=xxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

-새로운 시트를 만들고 XML을 매핑한다
Set wb = Workbooks.Open(urlApi, IgnoreReadOnlyRecommended:=True, ReadOnly:=True)

For I = 10 To 15
-새로 만들어진 시트에 "/item/thumbnail" 값을 찾고 바로 아래 행 정보 얻기
    If wb.Sheets("image").Cells(2, I) = "/item/thumbnail" Then
        getImageURL = wb.Sheets("image").Cells(3, I) 
        getImageURL2 = wb.Sheets("image").Cells(3, I - 3)
        'Set p = se.Pictures.Insert("http://static.naver.com/kin/ending/btn_reply_metoo.gif")
        Exit For
    End If
Next I
-키워드 1칸 옆에 썸네일사진주소와 2칸 옆에 링크주소를 넣는다
oneCell.Offset(0, 1).Value = getImageURL
oneCell.Offset(0, 2).Value = getImageURL2

-XML과 매핑된 새로운 시트를 저장하지 않고 종료한다.
wb.Close (False)

Next oneCell

End Sub

먼저 VBA의 능숙한 실력이 아니라 문법도 힘들어 For문 조차도 도움말을 보면서 작성을 하였습니다. 여러 가지 우여곡절 끝에 결국 사진은 시트에 표현을 못하고 링크 주소만 출력하였는데 그럴 수밖에 없는 이유는 엑셀은 이미지를 URL을 사용하여 올릴 수 있지만 내부는 이미지를 다운받고 시트에 삽입하게 되어 있습니다. 이 방법을 코드로 구현 하려면 웹 이미지를 로컬메모리에 올리고 시트에 삽입을 해야 하는 것이죠.

링크주소의 이미지를 다운받고 삽입한다는 건 쉬운 기능이겠지만 아직 능숙한 실력이 아니고 또한 시간은 촉박했기에 못내 아쉽지만 주소만 출력하기로 결정하였습니다.

가능성

우리 팀은 큰 가능성을 보였습니다. OpenAPI를 통해 웹이든 로컬이든 여러 서비스를 할 수 있지만 문서작성에서도 적용 할 수 있다는 것이죠.

이 기능을 사용한다면 많은 기업이나 제품이름을 선택만 하고 매크로를 실행만 하면 됩니다. 그럼 문서는 단지 매크로 실행으로 이미지가 삽입이 되고 문서는 이해하기 쉬운 멋진 문서가 될 것입니다.

마지막으로 같은 팀으로 작업한 심규진님에게 감사를 드립니다.  심규진님이 아니었다면 아마 저 혼자 끙끙 되었을 것입니다.

좋습니다.^^

크리에이티브 커먼즈 라이선스
Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이선스에 따라 이용하실 수 있습니다.
1 

글 보관함

get rsstistory!