Stackoverflow の短い公式URLでコピペ用ブックマークレットを作る

例えば, この非常に有益なこのページ.

Difference between px, dp, dip and sp on Android? - Stack Overflow

コードの中に参照先として貼り付けていましたが長いのでどうにかならないものかな,と.

long_url

フツーにブラウザのURLバーから取得できるURLはこのような以下のような形式.

Question
http://stackoverflow.com/questions/2025282/difference-between-px-dp-dip-and-sp-on-android

Answer
http://stackoverflow.com/questions/2025282/difference-between-px-dp-dip-and-sp-on-android/2025541#2025541

調べてみると, URLの書式はたくさん存在していて以下のURLは すべて同じ Question「2025282」の Answer「2025541」を参照している.

http://stackoverflow.com/questions/2025282/difference-between-px-dp-dip-and-sp-on-android#answer-2025541

http://stackoverflow.com/questions/2025282/2025541#2025541

http://stackoverflow.com/questions/2025282/#2025541

http://stackoverflow.com/questions/2025541

http://stackoverflow.com/q/2025282/#2025541

http://stackoverflow.com/a/2025282/#2025541

Google ShortURL や TinyUrl などサービスを使わずに, ページ内「share」のリンクから取得できる形式の公式の短縮URLを利用したい.

Difference_between_px__dp__dip_and_sp_on_Android__-_Stack_Overflow

ログインしていない場合は,

Question:
http://stackoverflow.com/q/2025282

Answer:
http://stackoverflow.com/a/2025541

この場合,
「2025282」は, Question投稿のID.
「2025541」は, Answer投稿のID.

ログインしている場合だと,

Question:
http://stackoverflow.com/q/2025282/000000

Answer:
http://stackoverflow.com/a/2025541/000000

この場合,「000000」はログインしているユーザのID.

ということで, ログインしていないときの公式のshareリンククリックからのダイアログに表示するURL形式に合わせてURLバーのURL文字列から公式の短いURLに変換した文字列に「タイトル」を加えたものをすばやくコピーできるブックマークレットを作る.

[Title]
http://stackoverflow.com/q/[question_id]

[Title]
http://stackoverflow.com/a/[answer_id]

Question へのリンクであれば,

http://stackoverflow.com/questions/2025282/difference-between-px-dp-dip-and-sp-on-android

Difference between px, dp, dip and sp on Android?
http://stackoverflow.com/q/2025282

Answer へのリンクであれば,

http://stackoverflow.com/questions/2025282/difference-between-px-dp-dip-and-sp-on-android/2025541#2025541

Difference between px, dp, dip and sp on Android?
http://stackoverflow.com/a/2025541

で,

こんなブックマークレットに.

javascript:
var pathinfo = window.location.pathname.split('/');
window.prompt('', document.title + '\n' + 
  location.protocol + '//'+ location.host +
    (pathinfo[4] ? '/a/' + pathinfo[4] : '/q/' + pathinfo[2]));
void(0);

結果.

Difference_between_px__dp__dip_and_sp_on_Android__-_Stack_Overflow

ここで, コピーして貼る.

short_url

と短く収まるようになりました.

ログイン中でもユーザIDを含めずにタイトルを付けてかんたんにコピペできます.

ちなみに,

http://s.tk/so

http://stackoverflow.com/#

What shortened URLs are available through s.tk? - Meta Stack Exchange

とホスト部分も短縮できたりするらしいがまあいいか.

👉 まとも検索 検索オプション追加 のブックマークレット 


コマンドラインで stackoverflow を快速に検索できる「how2」

使い方はこうです.

usage: how2 [-l python/ruby/etc.] search string

コマンドである「how2」に続いて, 検索したいキーワードを入力します.

bz2

言語 (タグ?) を限定する場合はオプション「 -l 」を付けます.

例えば, キーワードを「retrolambda」「RxJava」として android 関連の情報を探します.

$ how2 -l android retrolambda rxjava

how2

さらに他に情報を見たい場合は [SPACE] を押すと一覧で表示されて選択できます.

__—_how2 2

__—_how2 3

__—_how2 4

これはもう「tldr」よりも広く分かりやすい説明をみつけることができそうです.

インストールは以下で.

$ brew install node
$ npm install -g how2

santinic/how2: stackoverflow from the terminal

man は長すぎるので「tldr」


【AndroidStudio 不要】サンプルアプリは「dryrun」で試してすぐ捨てよう

参考にしたいサンプルアプリをGiHubで見つけて試してみる場合は以下のような手順

1. サンプルアプリのリポジトリを探す.
2. zip をダウンロードする.
3. それを展開する.
4. AndroidStudio などIDEを開く.
5. インポートする.
6. Gradle が sync する.
7. プロジェクトを run.
8. 実行するデバイスを選択する.
9. 実際に動かしてみる.
10. zipファイルとプロジェクトフォルダを捨てる.

となりますが,「dryrun」をインストールすると

$ gem install dryrun
...
$ dryrun -h
Usage: dryrun GITHUB_URL [OPTIONS]

Options
    -m, --module MODULE_NAME         Custom module to run
    -p, --path PATH                  Custom path to android project
    -h, --help                       Displays help
    -v, --version                    Displays version

dryrun: Try the demo project of any Android Library

リポジトリのURLのみでターミナルからの一行で起動までが可能になります. AndroidStudioなどIDEは起動しなくてよいです.

プロジェクトディレクトリは残りません.

$ dryrun https://github.com/cesarferreira/android-helloworld

usage_v2

cesarferreira_dryrun__Try_the_demo_project_of_any_Android_Library

アプリ起動後, 動かしてみて, いらなくなったらターミナル出力の最終行に表示されているadbコマンドでアンインストール.

...
> If you want to remove the app you just installed, execute:
adb uninstall github.cesarferreira.helloworld

あなたのマシンには試したテストアプリの不要なプロジェクトディレクトリがたくさんありませんか?

man は長すぎるので「tldr」