HaskellでTwitterクライアント開発blog(仮)

今すぐに挫折するかもしれない程度のモチベーションによるTwitterクライアント開発記

2012-01-01から1年間の記事一覧

アイコンを表示(Twitterアイコンを取得→表示)

かなり空きましたが、投げたわけではないですよ?大学始まったので忙しいのです。 さて、何をやっていたかというと、ちょっと混沌とし始めたコードを若干整理したのと、今まで改行だけでダラーッと一つのStringをプリントするだけだったタイムライン表示を、…

DrawingAreaの描画について

タイムラインをDrawingAreaに描画する仕様に変えた際(http://hshstter.hatenablog.com/entry/2012/04/14/190927)に、ちょっとまずいことをしていたようなのでメモ。 DrawingAreaの再描画を行うのに、いままで Graphics.UI.Gtk.Gdk.DrawWindow.drawWindowCl…

「.gladeファイルのデータ→GUIの各ウィジェット読込」のコードをTHで自動生成する。

前記事(http://hshstter.hatenablog.com/entry/2012/04/15/121001)でTemplate Haskellを使ってみましたが、Mainモジュールにはもっと大きなboilerplateがあるので、それを何とか出来ないかと思ってやってみました。今まで気になっていたけどどうしても直せ…

Template Haskellでタプル版map, mapMっぽいものを作ってみた。

小ネタ。 Mainモジュールに次のようなコード (body, width, height) <- (,,) <$> newIORef "" <*> newIORef 300 <*> newIORef 0 (tlBody, tlWidth, tlHeight) <- (,,) <$> readIORef body <*> readIORef width <*> readIORef height があり、ふと「タプル版m…

DrawingAreaにタイムラインを表示できた

前回(http://hshstter.hatenablog.com/entry/2012/04/12/232132)挑戦して解決しなかったDrawingArea更新の件が解決しました。 わかったことは、 (1)onExposeイベントにセットしたアクションは、drawWindowClearAreaExposeなどで再描画するとちゃんと実行され…

DrawAreaにタイムラインを表示したい(Pangoで文字列描画)

ちょっと現状報告。 ずいぶん間が開いてしまいましたが、別にやめたわけではないです。タイムラインにアイコンやらボタンやらを表示させたい関係で、タイムラインの表示方法をTextAreaからDrawAreaに変更することを目論んでコードを書き換えているのですが………

ファイル入出力をConduitに

メインモジュールがごちゃごちゃしてきたのでリファクタリング中。 ファイル入出力に関わる部分をConduitを用いたコードに直してみました。最近Hotなので練習の意味も兼ねて。以下のPDFを参照しました。 http://mew.org/~kazu/material/2012-conduit.pdf と…

Network.CurlでHTTPS通信に対応しようとしてみたけど……

今までHTTP通信でOAuthのトークンリクエスト・API呼び出しをやっていたのをHTTPS通信に変更することを試みてみました。 今回、HTTPS通信に切り替えるにあたって、少々関数のインタフェースを変更……変更したのはOAuthモジュールのoauthRequest,apiRequest関数…

ユーザ認証の機構を再考・エラー処理

一応前回(http://hshstter.hatenablog.com/entry/2012/03/27/025504)まででクライアントとしての基本的な機能は揃ったのですが、Access Tokenを持たない(つまり初回ログイン時)にはCUIに表示されるアドレスをコピーし、CUIの標準入力にPINを打って認証………

gtk2hs+GladeでGUI対応:タイムライン表示+ツイート

前回GLUTを使いましたが、やっぱりこのままこれでGUI開発を続けるのは不可能な気がしたので、なんとかしてgtk2hsをインストールしました。 インストール時に出るエラーが"gtk2hsC2hsのバージョンが違います"だったので、cabalをアップデートしてからもう一度…

HaskellでGLUT使ってみた: ウインドウ表示・塗りつぶし

ちょっと気が早いかもですが、GUIの勉強をはじめました。gtk2hsを使おうと考えていたのですが、どうもうまくインストールできず断念。とりあえずGLUTを使ってみることに。こちらはcabal install GLUTで入りました。 しかし、GLUTそのものの資料はわりと見か…

タイムラインのJSONデータを解析してみる(Text.JSON)

API利用は前回できましたので、次はタイムラインの取得を。とは言ったものの、CUIなので見栄えはしませんが……自動更新もつけてません。 自分のアカウントのタイムラインを取得するには、home_timelineを使えばOK。パラメータはいりませんが、いろいろとオプ…

Haskell で OAuth API利用Tweetしてみた

いよいよOAuth APIを使ってtweetしてみました。が、そのまえに前記事・前々記事には気づかなかった署名アルゴリズムに関する私の誤解について。 署名対象文字列生成の際、パラメータ部分を接合する時 パラメータを' & ' , ' = 'で接合→URLエンコード という…

ユーザ認証・アクセストークン取得

追記)署名アルゴリズムに誤りがあったので訂正 ユーザ認証をどうすべきか悩んだのですが、あんまりいいのが思いつかなかったんで保留。とりあえず認証用URL表示→PINを手入力でアクセストークン取得まで書いた。 いろいろと型を再考しなきゃならないような気…

HaskellでOAuth(1): Request Token取得

追記)署名アルゴリズムに誤りがあったので訂正 HTTP通信のやり方を適当に抑えた所で、いよいよHaskellでOAuthプロトコル通信をやってみました。 大体は下のサイトあたりを参考にしました。 OAuthプロトコルの中身をざっくり解説してみるよhttp://d.hatena.n…

HaskellでHTTPリクエスト送信(2)・HTTPレスポンス取得

HTTPリクエストを送信する方法を前の記事で書き忘れたけど、Request型の値をそのまま送信するには simpleHTTP :: HStream ty => Request ty -> IO (Result (Response ty)) を使えばいいようです。当然リクエスト送信なので返り値はIO型。 ty型はとりあえずSt…

HaskellでHTTPリクエスト送信(1)

HaskellでのHTTPリクエスト送信について調べたことメモ。このへんのページを参考に"HaskellでHTTP"http://d.hatena.ne.jp/kenkov/20110430/1304162021 "HaskellでOAuthとTwitter API"http://d.hatena.ne.jp/kenkov/20110503/1304441705 "Haskell で OAuth"ht…

勢いで始動

HaskellでTwitterクライアントを作ったらどうなるだろうかという、 ただの興味によりblogを立ち上げ。 ちょっとでも関係の有りそうなこと(HaskellのTipsやOAuth関連?)を適当に書きなぐっていくだけの場所になる予定。