tinyURL で、長い data スキームを処理させる
忘れたらググればいい に書いてあったことを見て、こんなのを考えてみました。
原理上は、どのような長さの data スキームであっても、 tinyURL で短い URL に変換できるはずです (対応ブラウザなどは調べていません)。
こういうことを tinyURL がよいと思っているかどうか不明なので、 GitHub などには置きません。
自己責任でどうぞ。
長い data スキームであっても tinyURL で処理可能にするスクリプト
できること
原理上、どれだけ長くても tinyURL で data スキームへリダイレクトさせることができます。
例えば、前に作ってみた iPhone Safari 上で動くテトリスでは、 http://tinyurl.com/7zsxzgl
のようになります。
このリンクをクリックすると、 Loading...
と出た後、 data スキームで記述されたテトリスの画面になります。
本題とは関係ないですが、このテトリスは、枠内を、フリック・タップすることで、移動・回転です。
手順
あらかじめ、任意の長さの data スキームに変換済みの HTML ページを用意し、以下のようなコマンドで、 URL が生成されます。
なお、 Ruby スクリプト test.rb
は、記事の末尾につけておきます。
原理
概要としては、だいたい以下のようになります。
- data スキームを短い断片に分割し、それぞれを tinyURL で短縮 URL にしておきます。
- トップページとなる Loading 用のページを用意します。最終的に、このトップページを data スキーム化し、 tinyURL で短縮 URL にしたものにユーザーはアクセスします。
このトップページでは、以下のようなことを行います。- JSONP を用いることで、動的に、分割した断片の data スキーム文字列を集めて結合します。
- すべての文字列が結合されたら、
location.replace
で、生成された data スキームにジャンプします。
実際には、リンクリストになるように、少し工夫した断片 tinyURL を生成したりしていますが、原理は以上のようなものです。
スクリプトでは、対象となる data スキームファイルを用意するだけで、上記をすべて自動で行ってくれます。
というような方法で、あらかじめ tinyURL を生成しておけば、 Twitter などでも容易に長いデータや画像などのやりとりができると思います。
なお、繰り返しておきますが、 tinyURL 側が、これを良いと思っているのかどうかは分かりませんし、私も推奨しているわけではありません。
あくまで、技術的にはこういったことができる、ということだとご理解ください。
なお、ターゲットとなる data スキームファイルは、以下のように、 data:
なども付与した状態で作成しておいてください。
data:text/html;base64,PD94bWwgd...
以下にスクリプト test.rb
全文を載せます。 Ruby 1.8, 1.9 で動くはずです。
適当に作ったので、バグなどあるかもしれませんが、ご了承ください。
なお、このスクリプトは、プロキシ下の環境ではうまく動かないかもしれません。
get_tiny_url
の中をプロキシ対応にするのと、12行目の length
を短めにすると、うまく動作すると思います。
0 件のコメント:
コメントを投稿