Hatena::Groupcadr

わだばLisperになる このページをアンテナに追加 RSSフィード

2004 | 12 |
2005 | 01 | 02 | 07 | 10 | 11 |
2006 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2007 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2008 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2009 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2010 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2011 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 11 |

2010-08-28

REPLでTwitter

| 01:30 | REPLでTwitter - わだばLisperになる を含むブックマーク はてなブックマーク - REPLでTwitter - わだばLisperになる

Index of /project/cl-twitterというCommon LispのTwitterクライアントがあるのですが、この1ヶ月位試しに使ってみています。

自分の使い方なのですが、SLIMEでREPLにタイムラインを表示させっぱなしにして、つぶやき関数をエディタバッファ上で評価でつぶやきという感じにしています。

コンパイルした結果や警告とつぶやきが混ざって表示されたりしてカオスなのですが、SLIMEを立ち上げっぱなしの人には割と便利じゃないかなあと思っていますが、誰得情報なのかも知れませんw

そしてもちろん、プログラミングの集中の邪魔にはなりますw

とりあえず、自分はこんな感じで必要な範囲で適当に関数を定義して使っています。

;; ユーザーオブジェクト(ログイン)
(DEFPARAMETER *G??????* (TWIT:AUTHENTICATE-USER "G??????" "password"))

;; 牧歌的な複数ユーザー対応
(SETQ *TWITTER-USERS* (LIST *G??????*))

(DEFUN PRINT-ALL-TWEETS ()
  (LET ((ANS () ))
    (DOLIST (USER *TWITTER-USERS*)
      (LET ((TWIT:*TWITTER-USER* USER))
        (SETQ ANS
              (NCONC (TWIT:TWITTER-OP :FRIENDS-TIMELINE)
                     ANS))))
    (TWIT:PRINT-TWEETS 
     (SORT (DELETE-DUPLICATES ANS :KEY #'TWIT::TWEET-ID)
           #'<
           :KEY #'TWIT::TWEET-ID))
    NIL))

;; SLIMEのREPLに表示
(DEFPARAMETER *TWITTER-OUTPUT*
  #.*STANDARD-OUTPUT*)

;; 別スレッドで回す
(DEFUN START-TWIT ()
  (PORTABLE-THREADS:SPAWN-THREAD 
   "twit"
   (LAMBDA ()
     (LET ((*STANDARD-OUTPUT* *TWITTER-OUTPUT*))
       (LOOP (PRINT-ALL-TWEETS)
             (SLEEP (* 6 60)))))))

;; 更新用関数
(DEFUN UPDATE-G?????? (MESG)
  (LET ((TWIT:*TWITTER-USER* *G??????*))
    (TWIT:UPDATE MESG)))

色々便利関数を定義したり、結果をブラウザに表示させてみたり、色々工夫してみるとLISPプログラミングを楽しめるかもしれません。

ゲスト



トラックバック - http://cadr.g.hatena.ne.jp/g000001/20100828