Fork me on GitHub

2009/08/05


このエントリーをはてなブックマークに追加
ReverseHttp面白いですね。
ReverseHttp

Tunnel HTTP over HTTP, in a structured, controllable, securable way. Let programs claim part of URL space, and serve HTTP, all by using an ordinary HTTP client library.

http://www.reversehttp.net/
ただ勘違いされやすいのが「何がReverseなの」という部分。通常ブラウザからリクエストが送信され、それに対する応答がサーバから返されます。ReverseHttpはサーバで何かアクションが起きた場合に、ブラウザ側がその通知を受信する...なんて事が出来るプロトコルです。仕組みはcometというlong pollに似た仕組みで、サイトのdemoを観るとなんなく理解出来るかと思います。
例えば何が出来るのか...

ローカルPC内で動作するファイアウォール内のwebアプリを外部に公開する

rubyにhookoutというライブラリがあり、これを使用するとrackアプリがさも外部に公開されているかの様に振舞う事が出来ます。
paulj's hookout at master - GitHub

Expose Ruby applications to the web via ReverseHTTP

http://github.com/paulj/hookout/tree/master
グローバルIPが無くても、webアプリを公開出来るなんて素晴らしい!
なお、ReverseHttpはプロトコルですのでhookout以外にも同様のソフトウェアはあります。例えばmiyagawaさんが書いたAnyEvent::ReverseHttpに含まれるeg/proxy.plを使うとローカルPC内のwebアプリを外部に公開する事が出来ます。

外部で起きたアクションをローカルPCに通知させる

例えば、はてなブックマークで自分のサイトがブックマークされた瞬間にデスクトップPCが反応したらどうしますか?
スターを付けに行きませんか(笑)?ReverseHttpを使えば出来るのです。


今日はこの「はてなブックマーク通知」をやってみたいと思います。
使う材料は以下の通り。
  • hookout : 上記で紹介したrackアプリを公開するライブラリ
  • sinatra : ruby製webアプリケーションフレームワーク
  • ruby_gntp : snakaさん作のruby用Growl For Windowsインタフェース
こんだけ。
上記のサイトからhookoutを取得してインストールし、以下のsinatraアプリケーションを作成します。
my-hatebu-growler.rb
require 'rubygems'
require 'sinatra'
require 'ruby_gntp'
  
growl = GNTP.new
growl.register({
  :app_name => "はてブ",
  :notifies => [{
   :name     => "hatenabookmark",
    :enabled  => true,
  }]
})

post '/' do
  return "ng" if params[:status] !~ /add|update/
  user = params[:username]
  text = "#{params[:comment]}\r\r#{params[:title]}\r#{params[:url]}"
  icon = "http://www.hatena.ne.jp/users/#{user[0,2]}/#{user}/profile.gif"
  p params[:status]
  growl.notify({
    :name  => "hatenabookmark",
    :title => user,
    :text  => text,
    :icon  => icon,
  })
  'ok'
end
config.ru
require 'my-hatebu-growler'
set :run, false
run Sinatra::Application
これを以下の様に起動します。
hookout -a http:/www.reversehttp.net/reversehttp -n my-hatebu-growler-application -R config.ru start

my-hatebu-growler-applicationの部分は適当な物に変えて下さい。

起動すると以下の様に出力されます。
Bound to location http://my-hatebu-growler-application.www.reversehttp.net/
このURLを、はてなブックマークにwebhook登録します。
hatebu-webhook
あとは、じっとブクマされるのを待ちます。










hatebu-growler
デタ━━━゚(∀)゚━━━!!

秋の夜長に、こんなツールお一つどうでしょうか。


追記1
HTTP::Engine::Interface::ReverseHTTPもあるよとmiyagwawaさんに教えてもらいました。
hookout for HTTP::Engineらしいです。

追記2
例では分かり易くする為にwebhook APIのキー認証を省いていますが、本当はちゃんと判定する必要があります。

追記3
PerlでHTTP::Engine::Interface::ReverseHTTPを使ってみた。ネットワークGrowlにはアイコンが使える仕組みがないのが残念。
Posted at 14:40 in web
Tagged as: hatebu, hatena, reversehttp, ruby, はてな, はてなブックマーク
Bookmarks: add to hatena add to hatena | add to delicious.com | add to livedoor.clip add to livedoor.clip

2009/06/03


このエントリーをはてなブックマークに追加
どっちかって言うと前向きな発言が好きかな。私は

Web進化論も読んでないし、私本人Web屋でもない。ただ後ろ向きな話が多くて滅入る。
実験的なサービスを出したり、模索したりするのは良い事。ただ新しくサービスを作ると既存ユーザから「あーだこーだ」言われる事もあるだろう。
そんな中最近感じているのは、はてなは今後既存ユーザを無視したサービスを作って行くべきなんじゃないかと。

物理的にも切り離して良いと思う。新しくサービス作って、はてなのアカウントは引き継がず。さらに言うなら、既存ユーザに告知もせず後から「へぇ、これはてなが作ってたんだ」なんてのも良いと思う。
ラボなんかで出てくるサービス見てても既存ユーザありきで盛り上がってるだけだし、おおよそ検討が付いてしまうサービスは数日で飽きてしまい、いつもの辛口ユーザに叩かれてブクマ炎上し、まだ使ってもなかったユーザに悪い印象垂れ流し状態になるまで半月も掛からないだろう。

じゃぁ何を作ればいいか。とても漠然として難しいお題だろうけど、コンテンツはサービスが作るんじゃなく、ユーザが作る物。それをどう引き出すかでサービスの良し悪しが決まるはず。
これはWebが進化したとしても変わらないよね?
例えば、馴れ合った既存ユーザを新しいサービスに持ち込んだとしても、新規サービス開始時に見られる「誰だこれ」「面白いじゃんこの人」とか全く無いだろうし、新規サービスにありがちな「サービス規約を無視したユーザと、自警団」みたいな物は既存ユーザは既にやってしまっていて、ある意味面白みがない。既存ユーザは新しいサービスが出たとしても、その中で一定の認知度を獲得してしまうと納得してしまって使わなくなってしまうんだよね。アカウントの早取り合戦や新規ユーザ同士でルール作って行ったりしてサービスの色が付いて行くんじゃないかな。新規のサービスで盛り上がるまでを体験した事のある人なら分かるよね?

別に自分の所で全部作らなくてもいいと思う。Googleだって色んなサービスは別の会社が作ってた物を買い取ってGoogleブランドにしてたりするし、「はてなだってやっちゃえ!」って思うな。なんていうかびっくり出来ないんだよな。
言ってしまうと既存ユーザに見きられる程度の行動範囲しか取れてないんじゃないかと。

Web屋でも無い私に言われる筋合いもないだろうし、内情知らない部外者が何を言ってるんだと言われるかもしれない。

だとしてもやっぱり思うのは、既存ユーザに見られながら作られる新規サービスには高揚感が無い。


んー。オチも結論も無い話になるけど、言って置きたいのは、はてないっそはてなアカウントを切り離したサービスを作ってみるのが面白いんじゃないかなと思うなー。
Posted at 03:07 in web::はてな
Tagged as: はてな
Bookmarks: add to hatena add to hatena | add to delicious.com | add to livedoor.clip add to livedoor.clip

2009/04/03


このエントリーをはてなブックマークに追加
こうすればいいのか...
デザイン設定画面のスタイルシートに
.hatena-star-star-image { background-image: url('http://mattn.kaoriya.net/images/unko.gif'); }
こんな感じになります。
Posted at 09:00 in web
Tagged as: うんこ, はてな, はてなスター, ウンコ
Bookmarks: add to hatena add to hatena | add to delicious.com | add to livedoor.clip add to livedoor.clip

2009/04/02


このエントリーをはてなブックマークに追加
追記
vimperatorrcに追加するスクリプトを少し修正する必要があります。詳しくはココを参照。

こうするといいよ。

add to your .vimperatorrc
javascript if (typeof hBookmark) liberator.loadScript('chrome://hatenabookmark/content/vimperator/plugin/hatenabookmark.js', {__proto__: this});
javascript if (typeof hBookmark != 'undefined') liberator.loadScript('chrome://hatenabookmark/content/vimperator/plugin/hatenabookmark.js', {__proto__: this});

and try
:hbsearch はてな
:hbtabsearch はてな
id:hazime2914さんに間違いを指摘して頂きました。正しくはhbtagsearchではなくhbtabsearchです。
はてなブックマーク Firefox 拡張のベータテストを開始します - はてなブックマーク日記 - 機能変更、お知らせなど