#ぷるがしメモ

趣味とかプログラミングとか色々

cd ../../../../../が嫌いな人向け

Motivation

プロジェクトが大きくなるにつれディレクトリ構造は深くなっていきがち。 (深くなる前にプロジェクトを分割しろ,構造考えなおせって話なんやけども)

上の階層に戻るために../../../../../をひたすら打つのが苦痛だから、 それっぽくスマートに上位ディレクトリに戻れるようにcdコマンドにエイリアスを貼って対処した。

How to use

cdコマンドの引数として数字を単体で与えるとその数字だけ上位ディレクトリに移動する。 $ cd 3 == $ cd ../../../

$ pwd
/home/ripple/project/src/common/test

$ cd 3

$ pwd
/home/ripple/project

Code

  • $HOME/.bashrc
isNum() { 
  if [ $# -ne 1 ]; then
    return 1
  fi
  expr "$1" + 1 >/dev/null 2>&1
  if [ $? -ge 2 ]; then
    return 1
  fi
  return 0
}

dirUp () {
  hierarchy_path=""
  isNum "$@"
  if [ $? -eq 0 ]; then
    for i in `seq 1 $1`
      do
        hierarchy_path=${hierarchy_path}"../"
      done
      \cd $hierarchy_path
  else
    \cd "$@"
  fi
}

alias cd="dirUp"

Description

わからないところ個別に聞いてください。 Twitter: @Ripple_apple

Q&A

  1. ディレクトリ名が数字のディレクトリに移動したいときはどうする?
  2. クソみたいなディレクトリ名つけてんじゃねえ。renameしろ。

引数の個数が1個、かつ数字の時のみ適用する仕様にしてるから、

$ cd 3 hoge

みたいな感じで2個目の意味のない引数を与えてあげえれば[3]ディレクトリに移動できる。

テキスト入力してる時にタブ閉じようとすると確認ダイアログ出す

昨日10行くらい書いた文が誤ってタブを閉じてしまって全部消えるという悲しみを背負ったので対策プラグイン書いた。 サイトによってはこんもの書かなくても同じ状況になった時に確認取ってくれるんだけど,不親切なサイトが多すぎる。

  • confirm.js
window.addEventListener("beforeunload", function(event){
  var tag = document.activeElement.tagName;
  if (tag == "TEXTAREA" || tag == "INPUT")
    event.returnValue = "plugin";
  else
    ;
});
{
  "manifest_version": 2,
  "name": "alert",
  "description": "When you close browser tab and focus input or textarea, this plugin show alert dialog",
  "version": "1.0",
  "content_scripts": [{
    "matches": ["http://*/*","https://*/*"],
    "js": ["confirm.js"]
  }]
}

この2ファイルを置いたディレクトリをプラグインとして読み込めばOK. 読み込み方とかは適当にこのへんでも見てどうぞ liginc.co.jp

どのページでもいいけど,inputタグ or textareaタグにフォーカスがある時に タブを閉じようとするとダイアログが出て一旦止めてくれる。

任意の文字列をクリップボードにコピー

スクリプト内で実行すれば貴方のクリップボードに( ᐛ) パァが入る。

function copyToClipBoard() {
  var anyText= "( ᐛ) パァ";
  var textBox = document.createElement("textarea");
  textBox.setAttribute("id", "target");
  textBox.setAttribute("type", "hidden");
  textBox.textContent = anyText;
  document.body.appendChild(textBox);

  textBox.select();
  document.execCommand('copy');
  document.body.removeChild(textBox);
}

以下のコードでブックマークレットを作るといつでもどこでもクリックひとつで( ᐛ) パァをあなたの手元に用意することが出来る。

javascript:
  var anyText= "( ᐛ) パァ";
  var textBox = document.createElement("textarea");
  textBox.setAttribute("id", "target");
  textBox.setAttribute("type", "hidden");
  textBox.textContent = anyText;
  document.body.appendChild(textBox);

  textBox.select();
  document.execCommand('copy');
  document.body.removeChild(textBox);

Githubで特定のファイルを外部から参照するときのURL

例えばhtmlで外部のライブラリを読み込む時に

<script type="text/javascript" src="http://hoge.js">

みたいに書く時がたまにあるけど,Github上のファイルをターゲットにする時は注意が必要。 まぁ注意と言っても公式がそう言ってるからそうしましょうってレベル。

全部大文字のものは適当に読み替えて

https://cdn.rawgit.com/USERNAME/PROJECT/BRANCH/dist/FILENAME

curlコマンドで引っ張ってくるときも多分こっちのほうがいい

JSを追加で読み込む

ブックマークレットとか作るときとかにたまに使う。

function readJS() {
  var script=document.createElement('script');
  script.setAttribute("src", "https://hoge.js");
  script.setAttribute("src", "./foo.js");
  document.body.appendChild(script);
}