カテゴリー
ツール

GitHub Pages で static な短縮URLサイト作成

nelsontky/gh-pages-url-shortener は、GitHub の静的ファイル公開機能 GitHub Pages を使った、短縮URLホスティングです。

clone して自分でもホストしてみました。s.akimoto.jp の DNS が GitHub Pages を指すように設定します。

https://s.akimoto.jp/ (説明用の index.html が開きます)

そして、GitHub issues にタイトルがURLになる issue を投げる

と、 issue 番号⇒URL の転送が実施されます。

https://s.akimoto.jp/1 ( issue のタイトルに書いた別のアドレスへ転送されます)

その動作原理

  1. CNAME で gh-pages ブランチを指させる
  2. (短縮URLのパス)すべては 404.html に渡される
  3. GitHub issues から JSON API でURL転換情報を JavaScript が取得し、(それに従って)転送
  4. 役に立つ?

ということ。なるほど。GitHub issues を、転送用の lookup table として使っているわけですね。この後転送したい短縮URLを増やすのは、issue を発行すればよいということです。更新や削除も同様。面白い事考えるなあ。

# GitHub API の公開アクセスには60回/時間の制限が掛かっているので、実用的には使えないでしょう。

via Hacker News

カテゴリー
ツール

Link to Text Fragment – Googleによるウェブページの任意の場所をリンクできるブラウザ拡張

新しいLink to Text Fragment Google社自身によってリリースされた、ウェブサイトの好きな箇所をURL化して共有できるChrome拡張です。

拡張をインストールした状態でページ上のテキストを選択し、右クリックメニューを出すと、Copy Link to Selected Text (選択されたテキストへのリンクをコピー)というメニューが増えています。

ここでクリップボードに取得されたURLを Chrome ブラウザ上で開いてみると、

先ほどリンクを作成したwebページが開かれた上で、選択していた部分が黄色くハイライトされ、ページもそのハイライトされた部分までスクロールした状態で開かれます。

選択するテキストが短すぎると、URLが作れない、というエラーが出ます。

利用シーン

これまで、他人が作ったウェブサイトのURLを他の人と共有することはできても「この特定の部分を見せたい」というのは難しかったと思います。やるとすればページを開いた後にページ内検索で”○○○”を探して、とかでしょうか。

最新のブラウザとこの拡張を使えば、ページの特定の箇所をはっきりと示して共有できるため、長いページのある特定の箇所を素早く見てもらいたい、といった作業が効率化されるでしょう。

受ける側はブラウザが最新のバージョンであればこの拡張は不要です。Chrome を随時アップデートしている相手なら問題ないでしょう。

仕組み

Chrome バージョン80 から使えるようになった、Text URL Fragments の機能を使ったものだそうです。

コピーされたURLの後ろに、選択した文字列を含む文字列が追加されていますね。

日頃、チャットツールや社内のグループウェアなどでネット上のウェブページを紹介することが多い人などにとって、紹介の質が上がる良いツールなのではないかと思いました。

via The Verge

カテゴリー
ツール

JSONCrush – JSONをURIに圧縮して載せるためのライブラリ

KilledByAPixel/JSONCrush は、JSONをURLに載せやすい形に変換するライブラリです。

JSONCrushのデモサイト。JSON形式のデータを左上に入力すると、それをテキストとして圧縮し(↓)、さらにURIとして使える文字に縁故度しています(→)。

今回入れてみたJSONでは、そのままURIエンコードした場合に比べて52%、約半分のサイズとなりました。

URLにユーザーが入力した結果のJSONデータをなるべく小さくして載せるというのがライブラリの目的です。URLに再現のためのパラメータが全部載っていれば、結果をブックマークしてもらえばいつでも同じパラメータのページが再現できます。サーバーサイドでいろいろ面倒な処理をして覚えておく必要がありません。

そのままURLEncodeする手もあるけど、URLのサイズ上限(2000バイトちょっと)に引っ掛かるのは避けたい、と。HTTPパラメータとして個別に受け取ればもっとコンパクトにできるのでしょうけど、JSONのまま渡せるのは場合によっては楽なのでしょう。作り手側に楽という意味ですが。

使ってるJSCrush ライブラリが変換部分を担っていて、これは特定の文字列内でテキストをエンコードしてくれるもののようです。JSCrushのデモサイトはこちら。

JSCrush は minify したものしかないらしく、
その動作を解析してる人がいました。この解説によれば、JSCrushライブラリは、1KbyteのJavaScriptで何ができるか、というコードゴルフコンテストの2012年の作品で使われたものだそうです。

via Hacker News