년도별 글 목록: 2010

구루에게 물어보세요 http://ask.xguru.net

전 문제를 해결하는걸 좋아합니다. 제가 만든 프로그램들중 꽤 많은 것들은 특정 문제를 해결하기 위한 것들이구요.
문제를 해결하기 위한 정보검색도 좋아합니다. 그러면서 알게되는 어떤 종류의 지식이라도 머리에 담아두면 언젠가는 다 쓸모가 있더군요 🙂

최근에는 블로그와 트위터를 통해 많은 분들과 알게되면서 트위터 나 아이폰 및 각종 소프트웨어 개발에 관련해서 이런 저런 다양한 질문을 받게 되는데, 계속 되는 질문들에 대해 찾아 보기 쉬운 데이타 베이스가 있으면 어떨까 해서 사이트를 하나 구축해봤습니다.

구루에게 물어보세요 http://ask.xguru.net

제 도메인이 제 닉네임으로 되어있는지라, 서브도메인으로 ask 를 붙여서 http://ask.xguru.net 으로 만들었습니다.
사이트 이름은 그냥 구루에게 물어보세요 ( Ask XGuru ) 입니다. ^^

제가 사용하는 아이디 Guru (구루) 는 ‘‘을 의미하는 산스크리트어입니다. 이 빛은 어둠에서 길을 인도하는 존재란 뜻으로 큰 지식을 가진 스승님을 지칭합니다. 그래서 xguru는 모든걸(x) 잘하는, 많은 사람에게 도움이 되는 사람이 되어보자라는 의미로 지은 것입니다. 그냥 구루 또는 엑스구루 라고 불러주시면 됩니다 🙂

구루에게 물어보세요

구루에게 물어보세요

보시다 시피 화면의 구성은 최근에 개발자들 사이에 널리 알려진 StackOverflow 와 비슷합니다. StackOverflow 는 StackExchange 를 이용하면 비슷하게 구축은 가능합니다만, 호스팅 기반이고 영문에다 돈이 드는지라 ^^; PHP 기반의 오픈소스인 Question2Answer를 도입하여 한글화한 후 트위터 연동을 위해 약간의 수정을 하였습니다.

제가 답변을 주로 하겠지만, 혹시 저랑 같은 취미를 가지신 분들은 질문에 마음대로 답변 남겨주셔도 좋습니다 🙂

  1. 질문만 할 때는 가입이 필요없습니다. 물론 회원가입후 질문하게 되면 질문/답변이 자신의 계정에서 관리되어 보기가 좋습니다 🙂
  2. 회원 가입시에는 아이디/암호/이메일 만으로 가능합니다.
  3. 회원으로 가입하면 질문/답변에 덧글&답변 등록이 가능합니다.
  4. 이메일 알림기능을 지원하며, 질문에 대한 답변 등록/자신의 답변에 덧글 등록/자신의 답변이 선택 되는것 등을 알려줍니다.
  5. 이메일 수신은 개별 질문마다 받기/안받기 선택 가능합니다.
  6. Twitter 연동기능이 있습니다. 트위터 ID가 있으시면 회원 가입후 자신의 계정정보 화면에서 트위터 ID 연동이 가능합니다. (OAuth를 이용합니다)
    • 공식 트위터 계정은 @AskXGuru 입니다.
    • 질문 등록시 @AskXGuru 계정에 등록되며, 질문자가 트위터 아이디 인증된 사용자라면 by @ID 형태로 질문자도 알려줍니다.
    • 답변 등록시 @AskXGuru 계정에 질문자/등록자의 트위터 ID 가 기재되어 트윗되므로 질문자는 답변 등록시 바로 트위터로 알수있습니다.
    • 이 사이트의 회원ID 는 트위터 ID와는 다릅니다. 트위터 사용자가 아니라도 사용이 가능하게 하기 위해서입니다.
  7. 질문자는 자신의 질문에 대한 답변중 최고의 답변 (추천 답변)을 선택할수 있습니다.
  8. 각 활동내역은 점수로 관리되며, 차후에 제가 만들 다른 서비스와 연계할 예정입니다.
  9. 아이폰에서도 잘 보입니다. 혹시 CSS 만으로 더 이쁘게 해주실 수 있는분은 도움주세요! 🙂

그냥 혼자 질답 리스트를 만든다는게 일이 약간 커져서 작업이 좀 오래걸렸지만, 깔끔한 오픈소스를 도입해서 계속 잘 사용할수 있을듯 합니다.
저에게 트위터나 메일로 질문주시는 내용들은 제가 정리해서 질문/답변으로 등록할 예정입니다.
많이 질문들 해주시고, 아시는 내용이 있으시면 답변도 달아주셔서 좋은 지식창고로 활용되길 기대합니다.

엉뚱한 개발자 구루 입니다.

Excel 과 Twitter 매쉬업 – 엑셀로 100명이상에게 트위터 DM 동시에 보내기

트위터를 사용하다보면 동시에 여러명에게 DM을 보내야할 일이 가끔 생깁니다. 모임을 진행한다던지, 몇몇 지인들에게만 중요정보를 알린다던지 할때 말이죠. 공개트윗으로 날리긴 곤란하고, DM 으로 각각보내자니 힘들고.. 그래서 예전에 TweetGuru 의 MultiDM 이라는 서비스를 만들었는데요. 서버의 제약 문제 때문에 동시에 12명까지밖에 보낼수가 없게 되어있습니다. 그리고 계정정보들을 따로 저장해놨다가 하는등의 작업들이 필요했는데요. 많이들 쓰시는 Microsoft Excel 을 이용해서 DM 을 여러명에게 편하게 보낼수 있는 매쉬업을 공개합니다.

Excel 과 Twitter 매쉬업하기

지난번 파워포인트와 트위터 매쉬업하기 에서 사용했던 소스를 거의 그대로 활용합니다. VBA 코드로 되어있습니다. 아래와 같은 화면입니다.

Excel to Twitter Mashup

너무 간단해서 보시면 사용법은 다 아실듯 합니다. ID 칸에 보낼사람 트윗ID를 @ 없이 적고, 메시지를 적으면 됩니다. 메시지가 빈칸이면 위칸것을 재활용합니다. 캡쳐에 있는 대로라면 @clien_net 과 @tweet_id8 까지는 “즐거운 설날되세요!” 를 받고, 나머지 @tweet_id9-16 은 “즐거운 설날되세요! 새해 복많이 받으세요!” 를 받게 됩니다. 버튼을 누르면 작은창이 떠서 트위터 ID 와 암호를 물어봅니다.

주의하실 점은 화면에 있는 대로 트위터 자체의 제한인 일일 DM 250 개 제한과 시간당 API 150번 호출제한을 염두에 두세요.
이 파일로 150명에게 DM 보내고 나면 트위터 클라이언트가 바로 리밋걸리게 됩니다. 한시간동안 웹으로 밖에 못쓰시게 되는거죠.

그리고 정말 중요! 트위터의 정책상 같은 DM 을 반복해서 보내면 스팸으로 인식되어 계정사용에 문제가 생길수도 있습니다. 조심해서 사용하세요.
혹시 이 파일로 인해 생기는 문제는 제가 책임지지 않습니다.

아래는 이 엑셀+트위터 매쉬업의 코드입니다.

Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Function DM(touser, tweetmsg, uid, pwd)
     Dim objHTTP As Object
     Set objHTTP = CreateObject("Microsoft.XMLHTTP")
          objHTTP.Open "POST", "http://twitter.com/direct_messages/new.xml", False, uid, pwd
          objHTTP.send "user=" & touser & "&text=" & tweetmsg
          DM = objHTTP.responseText
     Set objHTTP = Nothing
End Function
Function getStringBetween(str, sstart, send)
    PosStart = InStr(str, sstart)
    PosEnd = InStr(str, send)
    If (PosStart > 0) And (PosEnd > 0) Then
        getStringBetween = Mid(str, PosStart + Len(sstart), PosEnd - PosStart - Len(sstart))
    Else
        getStringBetween = ""
    End If
End Function
Function Send_DM()
    Load frmLogin
    frmLogin.Show
    strUID = frmLogin.txtUID
    strPWD = frmLogin.txtPWD
    Unload frmLogin
    If Len(strUID) = 0 Or Len(strPWD) = 0 Then Exit Function
    ' Twitter Limits 250 DM per day. You can't exceed this
    Application.Cursor = xlWait
    For i = 2 To 151
        TweetID = Cells(i, 1)
        If Len(Cells(i, 2)) > 0 Then
            tweetmsg = Cells(i, 2)
        End If
        If Len(TweetID) > 0 Then
            res = DM(TweetID, tweetmsg, strUID, strPWD)
            Cells(i, 5) = res
            If (Len(getStringBetween(res, "id", "/id")) > 0) Then
                Cells(i, 3) = "성공"
            Else
                Cells(i, 3) = "실패"
            End If
        Else
            Exit For
        End If
        ' 혹시 몰라서 한건의 DM당 1초씩 딜레이를 뒀습니다. 트위터 서버측에 부하를 줄이기 위함입니다.
        ' 시간이 문제가 안되시는분은 5000 정도로 해서 5초 딜레이를 주시면 전혀 무리없을듯 합니다.
        Sleep 1000
    Next i
    Application.Cursor = xlDefault
End Function

가지고 계신 트위터 사용자들 주소록이 있다면, 간단히 ID 부분에만 복사하셔서 쉽게 메시지 보내시면 됩니다.
주의! 다운 받아서 오픈한후 보안경고 창에서 매크로 사용토록 확인해주셔야 기능이 동작됩니다.

▶ 엑셀파일 다운로드 : Excel + Twitter Multi DM 엑셀 다운받기 – 제 Dropbox 입니다.

( 혹시 Dropbox 사용 안해보신분들은 꼭 만들어 두세요 윈도우/맥/아이폰 모두 연동되는 쓰기편한 웹하드로 2 Giga 까지 무료입니다. )

어떻게 사용하시느냐에 따라 좋은 전달도구가 될수도, 나쁜 광고용 도구로 전락될수도 있습니다.
국내 트위터 사용자분들을 믿습니다. 이걸 광고 및 나쁜용도로 사용하지 말아주세요.

엉뚱한 개발자 구루였습니다.