01/15

Scheme(Gauche)で疑似IRCサーバを立てるモジュール & はてなハイクのIRCプロキシを書いてみた

とりあえず動くようになったのでCodeReposにコミット。

モジュール名をなんとするか迷ったけど、一応 RFC に沿ってはいるので rfc.pseudo-irc-server にしてみました。もっと適した名前があれば変えます。あんまりGaucheの作法が分かってないんだよなぁ。ドキュメントもそのうち。

hatena-haiku-irc.scm の使い方

以下のようにファイルを配置します。括弧内はリポジトリのURL:

hatena-haiku-irc.scm (http://svn.coderepos.org/share/lang/scheme/hatena-haiku-irc/hatena-haiku-irc.scm)
lib/
|- rfc/ (http://svn.coderepos.org/share/lang/scheme/rfc)
|  `- pseudo-irc-server.scm
`- www/ (http://svn.coderepos.org/share/lang/scheme/www)
   |- hatena
   |  `- haiku.scm
   `- hatena.scm

gosh hatena-haiku-irc.scm で起動したら、ログイン名をはてなID、サーバパスワードをはてなのパスワードに設定して、IRCクライアントでポート6667に接続します。

例えばチャンネル "#Vim"にJOINすると、Vim - はてなハイクのエントリをIRCクライアントから見ることができます。チャンネルに発言すればそのキーワードでエントリがポストされます。あとチャンネル "id:motemen" にJOINすると motemenのエントリを追うことができたりする(このチャンネルでの発言は無視されます)。

あと

  • はてなハイクはトップページとかfollowingの流れが重要っぽいけどRSS吐かないので無理
  • 今はチェック間隔(*interval*)を300秒にしてるけどもっと長くしたほうがいいのかな
  • エラーチェックを全然してない(特にはてなログイン/ポスト失敗など)
  • /eval expr でコードが実行できたりする
    • 61-67 行目をコメントアウトすれば無効にできます
  • 画像はURLに置換されます

絵が見られないはてなハイクなどどれほどのものかって感じだけどまぁ。

03:39 | 0 writeback(s) | (13), (1) | ?B

12/30

Vimからはてなダイアリーを更新: CodeReposに移動しました

CodeReposのコミット権もらった!

せっかく使ってくれている人がいるのにあまり更新ができていないのが心苦しいのもあり、hatena.vim を CodeReposにコミットしました。皆さんもぜひ開発にご参加下さい。

03:21 | 1 writeback(s) | (13), (12) | ?B

08/22

Yet another YAML syntax file for Vim

Vimにデフォルトで入ってるYAMLのシンタックスファイルでPlaggerの設定を弄ってると

# before
plugins:
  - module: Subscription::Config
    config:
      feed:
        - url: http://www.examle.com

(スタイルシートを有効にしてカラーディスプレイでご覧下さい)

と変にハイライトされてきもいので新しく書いてみた。

syntax/yaml.vim

# after
plugins:
  - module: Subscription::Config
    config:
      feed:
        - url: http://www.examle.com

こんな風になる。

元のはブロックにも対応していなかったので、ハイライトするようにした。

# before
text: |-
  You can browse the plugin repository by simply going to source:trunk/plagger/lib/Plagger/Plugin directory. Document for each plugin is available as in POD document, which is available as HTML on Search CPAN distribution page.
  We're in the active development right now. API and config file format might be changed in the future. 
# after
text: |-
  You can browse the plugin repository by simply going to source:trunk/plagger/lib/Plagger/Plugin directory. Document for each plugin is available as in POD document, which is available as HTML on Search CPAN distribution page.
  We're in the active development right now. API and config file format might be changed in the future. 

YAMLの文法はよく分からないので完璧なハイライトができる訳ではないと思いますが。

インデントの深さを用いたマッチには、\z() ... \z1(ひとつの:syntax中でグローバルな後方参照みたいなもの)を利用しています。こんなの初めて知った。

文章は http://plagger.org/trac/wiki からコペペ。

09:42 | 0 writeback(s) | (12) | ?B

08/21

AutoPagerizeで継ぎ足しされたエントリにもはてなスターを表示するユーザースクリプト

動いていなかったのを修正してCodeReposに移動しました。これからはこっちでよろしくお願いします。

AutoPagerizeでぐりぐりしてると継ぎ足されたエントリにはてなスターのアイコンが出なくてムキムキして体に悪いのでユーザースクリプト。

AutoPagerize + Hatena::Star

var _ = unsafeWindow;
if (typeof AutoPagerize != 'undefined'
    && typeof _.Hatena != 'undefined'
    && typeof _.Hatena.Star != 'undefined') {
    AutoPagerize.addFilter(function(docs) {
    var EntryLoader = _.Hatena.Star.EntryLoader;
    var _getHeaders = EntryLoader.getHeaders;
    EntryLoader.getHeaders = function() {
        var t = EntryLoader.headerTagAndClassName;
        return Array.concat.apply([], docs.map(function(d) { return Array.slice(_.Ten.DOM.getElementsByTagAndClassName(t[0], t[1], d)) }));
    };
    new EntryLoader();
    EntryLoader.getHeaders = _getHeaders;
    });
}

はてなダイアリーで動作確認したのでたぶん大丈夫です。

17:58 | 1 writeback(s) | (12), (13), (37) | ?B

07/08

Vimからはてなダイアリーを更新 #3

hatena.vim ver.20070708

はてなのログイン画面がちょっと変わっていたのでとりあえず(というには遅いけど)の対応です。それ以外は変更なし。set noswapfilesetlocal noswapfile に変更。報告ありがとうございます。

hatena.vimはCodeReposに移動しました。これからはCodeReposから最新版をチェックアウトして下さい。

20:58 | 0 writeback(s) | (13), (12) | ?B

07/03

Googleでゲイツポイントを日本円に換算するユーザースクリプト

ついに待望のこの機能が実装されました!

Screenshot

しないほうが幸せになれるんですけどね。

Gates Point to Yen

レートはWikipediaから、1ゲイツ = 1.48円。表見て知ったけど日本って意外と優遇されてたんですね。これは買うしかありませんね。

参考: 煤 - Note : Google 電卓機能で「156cm in hyde」を実現するGM

22:20 | 1 writeback(s) | (1), (1), (37), (4) | ?B

06/19

Xbox 360 のゲーマースコアをはてなグラフに投稿

Xboxにはゲーマースコア(実績)というシステムがあって、各ユーザがゲームをどれだけクリアしたか/やりこんだかでそのポイントが増えるようになっています。最初は「なんだこれ」って思うシステムですが、いつの間にかだんだん実績のことしか考えられなくなってきて「モンハンやりたいけどPSPのゲームじゃ実績増えないしなー」と思うようになったら360ゲーマーとして一人前と言っていいでしょう。

それはいいとして、そのゲーマースコアの増え具合をはてなグラフに記録するスクリプト。実績の伸び具合を記録すると面白いと思うよ!360始めた頃にこれを思いつかなかったことを後悔しています。

xbox-gamerscore-to-hatena-graph.pl

ついでに晒すと今こんな感じ

01:46 | 0 writeback(s) | (13), (5), (4) | ?B

06/15

Vimからはてなダイアリーを更新 #2

hatena.vim ver.20070615

スクリプトを更新しました。更新しましたよー。主な変更点は以下です。

  • はてなグループ日記に対応
  • 送信のタイミングをBufWritePost
  • いくつかの新しい記法に対応

あと細かくごにょごにょ。今まではコマンド呼び出し(:HatenaUpdateだったかな)で更新してましたが、svncommand.vimなんかを見てると:wで更新できたほうが断然いいなーってことでそのようにしました。あとデフォルトで<Leader>heを編集開始コマンドにマップします。

流れはこんな風になる。

  1. <Leader>he (e!するのでそれまでのバッファの中身は消えます)
  2. はてなID(とグループ名)を[group:]idという形式で入力
  3. パスワードとか日付を入力
  4. 書く
  5. :w (:wqとかするとたまに送信失敗したときに困ることになります) で送信
  6. (また書きたい場合)そのバッファでもう一度<Leader>heすれば、はてなIDを入力せずに編集画面に入ります

インストール方法とかはplugin/hatena.vim前回のエントリを見てください。

hatena.vimはCodeReposに移動しました。これからはCodeReposから最新版をチェックアウトして下さい。

17:04 | 2 writeback(s) | (13), (12) | ?B

05/22

Xbox Live のフレンドリストを表示するツール、XULで

xbfriendsl

PCからぼんやりフレンドリストを眺めたり。360でプレイするときはいつもlive.xbox.comをブラウザで開いているので、代わりになるものをXULで作ってみた。XBLFriendsの劣化版ー。

xbfriendsl

XUL(Mozilla)を使ったのは

  • ウェブページの内容を(XPathとかDOMとか使って)簡単に解析できる
  • GUIも超簡単に書ける

から。適当に書いてもそれなりのものになるってすげー。

使い方

XULRunner(まとめサイトのページ)をインストールしていれば、zipを展開してxulrunner application.iniで起動できる。XULRunner入れてない人も、zipファイルの拡張子をxpiにしてFirefoxにアドオンとしてインストールすれば、firefox -chrome chrome://xbfriendsl/content/xbfriendsl.xulでも使えます。

起動したらXbox Liveのメールアドレスとパスワードを入力してログイン。次回以降はたぶん自動でログインします。これクッキーはどこに保存されてるんだろうなぁ。

あとフレンドをダブルクリックしたらその人のページをブラウザで開くとかそんなところです。

11:51 | 0 writeback(s) | (4), (1) | ?B

04/18

Twitterのfriends/followers一覧にその人のステータスを表示するgreasemonkey script

friends一覧でステータス見れたらいいなぁ。というぐりもん。

スクリーンショット

Twitter add statuses to friends/followers

作成にあたってbrさんにいろいろ助言をいただきました!ありがとう!

03:27 | 3 writeback(s) | (12), (4), (18) | ?B

recent entries

tags

syndication

powered by