Mac - ターミナル上でGitのブランチ名を表示する

この記事を読んで分かること

Macのターミナル上でGitのブランチ名を表示する方法が分かる。

~/git [master]$ こんな感じで表示される


https://raw.github.com/git/git/master/contrib/completion/git-completion.bashリンク先のコードを git-completion.bash という名前で保存してください。

ホームディレクトリに今作ったファイルを .git-completion.bash というファイル名で保存してください。 ファイル名の先頭にある .(ドット) は隠しファイルにすることを意味しています。

.bash_profile に .git-completion.bash へのパスを通して環境変数 PS1 に値を設定します。私は以下のように設定しました。

~/.bash_profile

# git settings
source ~/.git-completion.bash
GIT_PS1_SHOWDIRTYSTATE=true
PS1='\[\033[32m\]\[\033[00m\]\[\033[34m\]\w\[\033[31m\]$(__git_ps1 " [%s]")\[\033[00m\]\$ '

下のソースコードのコメントと参考サイトを参考にすれば、他の表示パターンも作れると思うので 自分の好きな表示にしてみてください。

PS1 については「bash PS1」などと調べればいろいろ出てきます。 ここで全部説明するのは面倒なので terminal上でgitを使うような人ならこれだけいえば十分ですよね?

git-completion.bash 一部抜粋

# To use these routines:
#
# 1) Copy this file to somewhere (e.g. ~/.git-completion.sh).
# 2) Added the following line to your .bashrc:
# source ~/.git-completion.sh
#
# 3) Consider changing your PS1 to also show the current branch:
# PS1='[\u@\h \W$(__git_ps1 " (%s)")]\$ '
#
# The argument to __git_ps1 will be displayed only if you
# are currently in a git repository. The %s token will be
# the name of the current branch.

参考

bash - .inputrcでキーバインドを編集する

ホームディレクトリ直下に .inputrc というファイルにキーバインドについて記述することで、自分専用のキーバインドを設定することができます。

$ cd ~
$ vi .inputrc

.inputrcの書式は以下のようになります。

"Control-i": "hello"  ← Ctr+i で hello を表示
"\C-g": " | grep "  ← Ctr+g で | grep を表示

以下のコマンドで、.inputrcファイルへの変更を読み込み更新します。

$ bind -f .inputrc

絶対にやってはいけないこと

Ctr+m はRETURNと同じ意味になります。つまり、Ctr+m に別の意味を持たせてしまうと、コマンドを実行できなくなります。下のような設定は絶対にしないようにしましょう。

"\C-m": " | less"

ちなみに上のような設定をするとどうなってしまうかというと、例えば下のような場合。

$ ls(ここでRETURN)

こうなる\(^o^)/

$ ls | less

なんどRETURNを打ち込んでも・・・

$ ls | less | less | less | less | less | less | less

気をつけましょうね。

MacOSの場合の救済措置

Macのターミナルの場合 [コマンド+Sfift+N]または、「シェル⇒新規コマンド・・・」でコマンドを実行できるので、表示されたプロンプトに

rm -f .inputrc または、
vi .inputrc

などと入力して.inputrcを削除または編集すれば、キーバインドを戻せます。カレントディレクトリはホームディレクトリになっているようです。

最後にもう一度言います、Ctr+mのキーバインドを変えるのは絶対によしましょう。コマンドを実行できなくなります。Mac以外の人はどうなっても知りませんよ。

notepad++ - にExecを入れてJavaの実行環境をつくろう

この記事を読んでできるようになること

この記事を読めば、notepad++で書いたJavaのソースコードをその場で、「F6⇒Enter」するだけで即座にコンパイル・実行することができるようになります。実行結果はnotepad++内のコンソール画面に出力されます。なので、いちいちコマンドプロンプトを開いて「javac Src.java」「java Src」なんてことをする必要はなくなります。

notepad++について

notepad++は、Windowsで動作するフリーソフトウェアのソースコードエディタです。

なにはともあれまずはnotepad++の入手から。 窓の杜 - NotePad++ EUC-JP 対応版

前準備

javaCompileAndRun.bat という名のテキストファイルを「notepad++.exe」があるフォルダに保存して下さい。
テキストファイルの内容は以下の通りです。
call javac "%1"
if ERRORLEVEL 1 exit
call java "%2"

プラグインのインストールと設定

次に「プラグイン⇒Plugin Manager⇒Show Plugin Manager」を選択。「Available」タブの中の「NppExec」にチェックを入れ「Install」をクリックして下さい。途中で、再起動しますよろしいですか?という内容のダイアログボックスが出てくるので「OK」を押して再起動します。

notepad++を再起動したら、「F6」または、「プラグイン⇒NppExec⇒Execute...」を押します。すると、ダイアログボックスが出てくるので、そこのテキストエリアに以下のコードをコピペして下さい。

cd "$(CURRENT_DIRECTORY)"
NPP_SAVE
cmd /c "$(NPP_DIRECTORY)\javaCompileAndRun.bat"  $(FILE_NAME)  $(NAME_PART)

上のコードをテキストエリアに貼り付けたら「Save」を押して適当な名前で保存し、「OK」でコマンドを実行するとコンパイルした後、生成されたクラスファイルを実行してくれます。

これでnotepad++によるJavaの実行環境が整いました。次回からは「F6⇒OK」ですぐにコンパイル・実行することができます。

注 cmd /c "$(NPP_DIRECTORY)\javaCompileAndRun.bat"のjavaCompileAndRun.batの部分は「notepad++.exe」があるフォルダに保存したバッチファイル(.bat)と同じファイル名なら何でも構いません。

特徴

ソースに変更を加えるたびに保存しなくてもコンパイル時に自動的に保存されるようになっています。

コンパイルエラーが出た場合、コードは実行されません。

コードを書いたら「F6」 => 「Enter」!!ただそれだけです。 Ctr + S する必要すらありません。どうです?便利でしょう。参考サイト様には本当に感謝しています。

参考

Bookmarklet - ニコニコ大百科

ニコニコ大百科←Bookmarkletです。
function dicnico(){
	var dicNico = 'http://dic.nicovideo.jp/a/';
	var word = prompt('ニコニコ大百科で検索します。');
	if(word != null) window.location = dicNico + word;
}
// Bookmarklet
// javascript:(function(){var s=prompt('ニコニコ大百科で検索します。');if(s!=null)location='http://dic.nicovideo.jp/a/'+s;})();
// javascript:(function(){location='http://dic.nicovideo.jp/a/'+prompt('ニコニコ大百科で検索します。');})();

Firefoxユーザー専用

ここから先は以下のアドオンが入っていることを前提としています。 ニコニコ大百科トップページ - ニコニコ大百科の右上にある「Googleサーチ検索」上で右クリック⇒サーチバーを追加
・検索バーの左にあるアイコンをクリック⇒検索バーの管理…⇒ニコニコ大百科を選択し、上の方にある「Properties」をクリック
・Search URLに先ほどのjavascriptコード()を張り付けて、「Parameter」を「Remove」ですべて消去。

これでCtr + K⇒Enterで本記事トップのブックマークレットと同じコードを起動可能。こうすることで、ブックマークバーを圧迫しなくて済みます。

・・・、これ俺以外に使う人いないだろうな。



と私と同じことを考えた人には、これをお勧めしておきます。
illstandのスタンドページ - StartComman

JavaScript - エラトステネスの篩シミュレータ

エラトステネスの篩 - Wikipediaにあるものを自分で作ってみたいなーと思ったので、実装してみました。

エラトステネスの篩シミュレータ

× 探索時間:[ms]
素数:

エラトステネスの篩シミュレータのソースコード

function p(s){
  document.getElementById('stdout').innerHTML += s + '<br>';
}
function getRandomInt(min, max){
  return Math.floor(Math.random() * (max - min + 1)) + min;
}
function fill(a, n){
  if(a instanceof Array){
    for(var i = 0; i < a.length; i++){
      a[i] = n;
    }
  }
}
function throughASieve(p){
  if(!(p instanceof Array)) return;
  
  var len = p.length;
  var border = Math.sqrt(len);
  for(var i = 1; i <= border; i++){
    if(p[i] == 1){
      var num = i + 1;
      for(var j = num * 2; j <= len; j += num){
        p[j - 1] = 0;
      }
    }
  }
}
run_demo = function(){
  var parentOfTable = document.getElementById('div');
  var stdout = document.getElementById('stdout');
  parentOfTable.innerHTML = '';
  stdout.innerHTML = '';
  
  var rowMax = document.getElementById('rowMax').value;
  var colMax = document.getElementById('colMax').value;
  var cellMax = rowMax * colMax;
  var prime = new Array(parseInt(cellMax));
  
  fill(prime, 1);
  throughASieve(prime);
  
  var cells = (function createTable(rowMax, colMax, opt_parent){
    try{
      if (rowMax < 1 || colMax < 1) throw 'createTable : Bouth rowMax and colMax should not be a negative number.';
    } catch(e){
      alert(e);
    }
    
    var parent = opt_parent || document.getElementsByTagName('body')[0];
    var cells = new Array(rowMax * colMax);
    var table = document.createElement('table');
    var tbody = document.createElement('tbody');
    var index;
    for(var i = 0; i < rowMax; i++){
      var row = document.createElement('tr');
      
      for(var j = 0; j < colMax; j++){
        index = parseInt(i * colMax + j);
        var cell = document.createElement('td');
        var cellText = document.createTextNode((index + 1));
        
        cell.style.border = '1px #666 solid';
        
        cell.appendChild(cellText);
        row.appendChild(cell);

        cells[index] = cell;
      }
      row.style.textAlign = 'center';
      tbody.appendChild(row);
    }
    table.style.borderCollapse = 'collapse';
    table.appendChild(tbody);
    parent.appendChild(table);
    
    return cells;
  })(rowMax, colMax, parentOfTable);

  var Color = {
    value : 0,
    changeColorMin : 60,
    changeColorMax : 80,
    nextColor : function(){
      this.value += getRandomInt(this.changeColorMin, this.changeColorMax);
    },
    toHsl : function(lightness){
      return 'hsl(' + this.value + ', 100%, ' + lightness + ')';
    }
  };
  
  var border = Math.floor(Math.sqrt(cellMax));
  var searchTime = document.getElementById('searchTime').value;
  (function paint(index){
    if(index + 1 > border) {
      return finish();
    }
    p((index+1));
    
    Color.nextColor();
    cells[index].style.backgroundColor = Color.toHsl('50%');
    
    var intervalId = window.setInterval((function(){
      var num = index + 1;
      var i = num * num;
    
      return function(){
        if(i > cellMax) {
          window.clearInterval(intervalId);
          while(prime[++index] != 1);
          return paint(index);
        }
        cells[i - 1].style.backgroundColor = Color.toHsl('75%');
        i += num;
      }
    })(), searchTime);
    
    function finish(){
      var intervalIdFinish = window.setInterval((function(){
        Color.nextColor();
      
        return function(){
          while(index < cellMax && prime[index] != 1) index++;
          if(index >= cellMax) {
            window.clearInterval(intervalIdFinish);
            return;
          }
          p((index + 1));
          cells[index].style.backgroundColor = Color.toHsl('50%');
        
          index++;
        }
      })(), searchTime);
    }
  })(1);
}

備考

シミュレータの実行中に「Run」を押すと、window.clearInterval()が実行されず素数の出力結果に前回実行時の素数が混ざって表示されます。

IE9ではhslがサポートされていないため、正しく動作しません。Firefox4, Google Chrome11, Opera11での動作は確認しました。

C言語-エラトステネスの篩 : Please Comment on My Codeこちらもどうぞ。

参考

JavaScript - テスト投稿

run_demo = function (that){
	function fill (a, n){
		if(a instanceof Array){
			for(var i = 0, l = a.length; i < l; i++){
				a[i] = n;
			}
		}
	}
	function eratos(p){
		var len = p.length;
		
		for(var i = 1; i <= Math.sqrt(len); i++){
			if(p[i] == 1){
				var num = i + 1;
				for(var j = num * 2; j <= len; j += num){
					p[j - 1] = 0;
				}
			}
		}
	}
	var val = that.previousSibling.value;
	var pre = that.nextSibling;
	pre.innerHTML = '';
	var prime = new Array(parseInt(val));
	
	fill(prime, 1);
	eratos(prime);
	
	var str = '';
	for(var i = 0, l = prime.length; i < l; i++){
		if(prime[i] == 1){
			str += (i + 1) + '<br>';
		}
	}
	
	pre.innerHTML += str + '<br>';
};


		

Eclipse - Mac OS X Snow LeopardでEclipse3.6.2 Heliosを日本語化

参考サイト:[mac]eclipseインストールとpleiadesで日本語化 : うえちょこ@ぼろぐ

細かい操作などはすべて上の参考にさせていただいたサイトの方で説明されていますので、そちらを参考にしてください。

自分の場合は、PleiadesのEclipse 3.6.2のHeliosのdropinsで上書きしました。使うEclipseは「Eclipse IDE for Java Developers」のMac OS X 64bit版です。

この記事は、3.6で成功した人もいますよ。という報告です。

Mac版Eclipse 3.6.2のeclipse.ini

-startup
../../../plugins/org.eclipse.equinox.launcher_1.1.1.R36x_v20101122_1400.jar
--launcher.library
../../../plugins/org.eclipse.equinox.launcher.cocoa.macosx.x86_64_1.1.2.R36x_v20101019_1345
-product
org.eclipse.epp.package.java.product
--launcher.defaultAction
openFile
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
256m
--launcher.defaultAction
openFile
-vmargs
-Dosgi.requiredJavaVersion=1.5
-XstartOnFirstThread
-Dorg.eclipse.swt.internal.carbon.smallFonts
-XX:MaxPermSize=256m
-Xms40m
-Xmx384m
-Xdock:icon=../Resources/Eclipse.icns
-XstartOnFirstThread
-Dorg.eclipse.swt.internal.carbon.smallFonts
上のファイルの最後に一行付け足すだけで日本語化されました。付け足す一行は、

-javaagent:../../../dropins/MergeDoc/eclipse/plugins/jp.sourceforge.mergedoc.pleiades/pleiades.jar

です。

SWI-Prolog - Macで使うための準備

SWI-Prologのダウンロード

SWI-PrologはいろんなOSに対応しているPrologです。

SWI-Prologのダウンロードは以下からできます。

SWI-Prolog downloads

使う前の準備。PATHを通す。

下のサイトを見ればPATHの通し方はわかります。

Mac OS Xでシェルのパスを通す

SWI-Prologの本体?はインストールするときにMacのHDDを選んでいれば「/opt/local/bin」の中にあります。ファイル名は「swipl」です。

したがって、この場合「.bash_profile」に書く命令は「export PATH=$PATH:/opt/local/bin」になります。

使い方

以下のリファレンスによると、-fか-sでソースファイルを指定できるらしいです。

2.4 Command-line options

ソースコードを実行するときは、ソースファイルがあるディレクトリに移動してから「swipl -f ソースファイル名.swi」で起動できます。こうすると、ソースに記述された規則などが登録された状態で起動させることができます。

ちなみに、拡張子を「.pl」にするとPerlとかぶってよくないです。

参考

macbookにswi-prologをインストール

C++ - 分数クラスを作ってみる 目次

C++ - 分数クラスを作ってみる(7) 文字列表記

今回ご紹介するのは分数を文字列として表示したり返したり、文字列から対応する分数クラスのインスタンスを返したりする関数です。

関数toString()とtoBunsu()は今日記事に載せる直前まで整数に対応させることをすっかり忘れていて、途中から整数に対応するように書き換えたので、あまりスマートな変換方法ではないかもしれません。

ちなみに関数toBunsu()は静的メンバ関数です。文字列から分数に変換するのにそれぞれのインスタンスごとに関数を使う意味はありませんからね。続きを読む
プロフィール

add20

ブクログ
RSSを購読
記事検索
最新コメント
スポンサードリンク
QRコード
QRコード
  • ライブドアブログ