2014年1月7日火曜日

[Linux]GitHubの公開鍵設定で複数のプロジェクトに対応する方法

GitHubはプロジェクトごとに秘密鍵・公開鍵を設定できるようになっている。
だけど

Host github.com
  IdentityFile /home/yamanaka/.ssh/asagao_openssh.ppk

と.ssh/configに書いてしまうと、他のプロジェクトを作成したときにも再びasagao_openssh.ppk
の秘密鍵を使わないといけなくなってしまう。

そこでAliasを用いて次のように書くと解決
まず.ssh/configを下記のように訂正
Host asagao
  HostName github.com
  IdentityFile /home/yamanaka/.ssh/asagao_openssh.ppk

次にプロジェクトの.git/configを以下のように訂正
url = git@asagao:userName/asagao.git

これにより複数のプロジェクトを作成した時に一つのプロジェクトにつき一つのKey Pairを用意
することができ、共同作業も捗る。以上。




2013年12月22日日曜日

rbenvのインストール

ruby on railsを勉強するに当たり、バージョンアップがめんどくさかったりするのでrbenvをlinuxに入れてみる。現在すでにrubyのversion1.93が入っているが、これをやめてrbenv経由で最新のruby 2.0.0を入れてみたい。

1.まずはrbenvのインストールを行う。
git hubで公開されている。
https://github.com/sstephenson/rbenv に行く

rbenvはどうやって動くのか?
->どうもRubyを実行するPathをrbenvが傍受し、すなわちどのRubyのバージョンをアプリケーションが必要としているのかを一旦rbenvが中継として受け持つ事で、適切なRubyへのパスを導いてやるようである。

設定方法
rbenvのshimsというフォルダへのパスを設定する。中継する役割を担っているため

~/.rbenv/shims:/usr/local/bin:/usr/bin:/bin
のようにPATHの先頭に記述する。


どうやってRubyのバージョンを選択するのか?
rbenvはどのバージョンのRubyを使うのか次の条件で決定する。
1.RBENV_VERSIONが環境変数としてセットされている場合それを使う。
2..ruby-version ファイルが最初に見つかる。
・・・
4.
 rbenv global コマンドを使う。 rbenv global 1.9.3-p484 のように打つと、それがつかわれるようになる。
rbenv rehashがそのあとに必要

後でrubyの切り替え方法がわかる。
http://qiita.com/zss_tr/items/8c1ff505532aa17d8b47

またrailsでrails serverとした時にエラーが出る場合は
gem 'execjs'
gem 'therubyracer'
をgemfileに追加してbundle installをやり直す必要がある。

2012年9月10日月曜日

メモリマップについて

プログラムのメモリはその確保場所から3つのセグメントに大別できる。
テキストセグメント、データセグメント、スタックセグメントである。

テキストセグメント
-プログラムの実行部分(コード部分)が含まれる。
-上書きされるとまずいため、書き込み保護された領域に書き込まれる。
-文字列定数もココに書き込まれる。またconst intで宣言したglobal変数もここ。
 -要するに読み込み専用のものはテキストセグメントに含まれる。

データセグメント
-mallocにより確保されるヒープ領域、グローバル変数が格納されるBSS,データ領域に更に細かく分けられる。BSSはBlock started by Symbolの略、プログラムがメモリ上にロードされた時に初期値0が書き込まれる(ポインタの場合はNULLが書き込まれる)。

スタックセグメント
-ローカル変数、復帰情報、引数、関数の戻り値などが一時的に収められる場所

static変数はどこ
-データの書き換えができるかつ、関数の終了とともに消滅しない->消去法的にデータセグメントに割り当てられる。

2012年9月3日月曜日

プログラムのハードとの関わり、実行のされ方。

プログラムのハードとの関わり、実行のされ方。

メモリ・・主記憶装置(プログラムが実行されるときには必ずメモリ上にロードされている必要がある)
ハードディスク・・・補助記憶装置
OSの管理下で実行されるプログラム・・アプリケーションプログラム
アプリケーションからOSの機能を呼び出すこと・・・システムコール、APIと言われることもある。

Q:プログラムはハードディスクに入っている?
A:ハードディスクに収められているが、実行時にはメモリにコピーされてから実行される。
 -プログラムをメモリにコピーすることをロード
 -実行可能なプログラムのファイル(即ちメモリにコピーされた)をロードモジュールと言う

Q:アドレスとは
A:メモリに付けられた番地のこと、メモリアドレスとも言う
 -番地はコンピュータは数字で表現されるが、人間にとってはわかりにくいため、アドレスに
  対して名前をつける。 char* tanaka のようにである。

Q:i++というインクリメント処理はCPUでどのように行われている?
A:  1.レジスタに値をメモリから取ってくる、
   2.CPUが演算する
   3.演算後の値がレジスタに書かれる
   4.レジスタに書かれた内容をメモリに書き出す
  -メモリからレジスタにロードして、足し算をしてレジスタの内容をメモリにストアする。
   -ストア・・メモリに値を代入すること。

Q:アセンブラはCPUとの命令に1対1で対応しているが、文字による命令を行うことができる。
この文字による入力を何というか
A:ニーモニック

Q:コンパイラとは?
A:アセンブラがCPUの命令(機械語)に1対1で対応しているが、より複雑な命令を機械語に翻訳するために開発された変換機器。