2011/06/15

自分のスキルマップ

自分の値段を考えたことがなかったけど、それを決めるための指標になりそうな手段

実際に、Google検索でスキルマップを検索してみると、画像検索に結構出てきたり
作り方のページが表示されたり。

ただ、見てて思うのは、

  • 表の形状にして、そこに文字を当てはめる
  • できることが数値化されているが、その数値はどこから?(5段階評価みたいなレーダーチャート)

実際に見たい、見てもらいたいデータは、分野に分かれて、その分野でどの程度のことを
やったのか、どんなことができるのか、どんな経験があるのかだと思う。

そんわけで、自分のスキルをマインドマップ化するっていうのが流行ってたし、そんなデータを自分でも作ってみた。

この図も経験とスキルに色分けされてなくてちょっと見づらい・・・

多分だけど、自分の値段がある程度正確に把握できてる人は少ないんじゃないかと思う。
(そもそも、そんなもの導き出せるのか?という話もあるけど、診断サイトとかあるしなぁ)
実際、時代の流れ(流行り廃り)でも、評価はどんどん変化するわけで、変わらないのは
自分が出来る言語や、自分の経験かなと。

上に書いたような自分の財産を見せられる「元データ」があって、

「コレだけのことをやってきて、こんなことができるんですが、僕いりません?」

と聞けるようになってたら、転職しやすいんじゃないかと思って。
お前は何ができるんだ?という疑問を投げられたときに、胸を張って、

このページを見てもらえれば!と言えれば作った価値があるってもんだ。

2011/06/09

Cygwin+Windowsのエディタで歴史改変(git rebase -i)

僕は、現状でCygwinをつかってgitをいじってます。
んで、コミットログとかの入力はWindowsアプリでやってます(terapad)

んで、最近自動コミットを試してみてたんですが、どーにもgit rebase -i を実行すると、
エディタが開いて何も表示されないことが続いてました。

ついったで、なんでじゃーってつぶやいてたら、

@riskrisk cygpathで変換してあげないとだめな気がしますless than a minute ago via TwitVim Favorite Retweet Reply

おお、なるほど、Windowsのエディタに、Cygwinのパス /homeとかああいうやつがそのままわたるのか・・・

ためしに、/lib/git-core/git-rebase--interactive の最初でパスを設定してるので、そこでechoを突っ込んでみたら
見事に、homeから始まるアドレスが出てきた!

で、解決方法も、cygpath -w でWindowsのパスに変換してくれるよ ということなので、
さっそく、スクリプトをいじって試すと動くようになったんだけど・・・

そこで、もう一通

@riskrisk 自分は引数をcygpathで変換してから渡すシェルスクリプト書いて、それをGIT_EDITORに指定してますless than a minute ago via TwitVim Favorite Retweet Reply

そりゃそうですね・・・ その方法が一番正攻法だと思います

というわけで、下記にサンプルです。

$ git config --global core.editor ~/.git-editor

これで、自分のhomeディレクトリの直下にある .git-editor を実行してくれるので、
このスクリプトを書きます。

#!/bin/sh
# editor setting
"/cygdrive/c/Program Files/TeraPad/TeraPad.exe" /cu8 `cygpath -w $1`

僕のやつはこんな感じ。

これで、git rebase -i の編集に、terapadが使えました。

ほんとありがとうございました。

2011/06/03

makeをファイル更新のトリガで自動実行

今日は、makeを使ってTDDするときに、

  1. コード変更
  2. いちいちmake -> エンター(ターン ビンゴだ!)

ってやるのが、結構めんどくさく感じてまして。

求めてる動きは、ソース変更したら、勝手に結果でねぇかな と思ってたんですよね。

で、今まさに

  • 開発言語 C++
  • Cygwinで開発中
  • GoogleTest と GoogleMock

で、結局シェルスクリプトで実現することにしました。(いろんなアドバイスもらったので、それに関しては後述します)

まずシェルスクリプトです

#!/bin/sh

echo "check file update!"

makeOpt=$1

# 作業ディレクトリ(衝突しない名前に)
workDir=autorun

rm -rf $workDir
mkdir -p $workDir

while [ 1 -eq 1 ]
do
isMake=0

# 更新確認するファイルを、in のあとに並べる
for file in *.cpp *.hpp Makefile tmp/*.cpp
do
backup=${workDir}/${file}
if [ ! -e $backup -o $file -nt $backup ] ; then
cp -f --parents $file ${workDir}/
isMake=1
fi
done

if [ $isMake -eq 1 ] ; then
make $makeOpt
if [ $? -eq 0 ]
then
echo success!
# 成功時の処理をここに書く
else
echo failed!
# 失敗時の処理をここに書く
fi
fi

sleep 1
done

このスクリプトのいいところ

  • スクリプトの第一引数で make の引数を指定できるので、モジュールごとに実行しておくことが可能
  • makeとテストが両方成功した場合の判断ができるので、シェルスクリプトの編集で成功時にコミットとかできる(と思う)
  • 後片付けは、作業ディレクトリを消すだけ(.gitignore とかに指定しておくとよさそう)
  • 使うときはシェルスクリプトをmake用のディレクトリに置くだけ。

使うに当たって修正するところ

  • 自動でworkディレクトリとか作る(スクリプト内のworkDirで指定可能)ので、衝突しない名前にしておく
  • 更新チェック対象は、for の in のあとに付け加えるだけ
  • 成功時、失敗時(make失敗 or テスト失敗)の処理が必要な場合は、success と failed の場所を修正

という感じで。

実行は、

./autorun.sh make-option

で走りっぱなしになります。更新チェック対象のファイルが更新されたら、自動でmakeが始まります。

 

スクリプトの説明は以上で、ここから先は皆様からいただいたアドバイスですが

  • omakeでそんなことできたんじゃないかな(omake -p)
  • eclipse で 自動ビルド
  • make に仕込みをいれていく

なんて話をもらいました。

できない系の否定的な意見は、嫌なので、下のは自分の調査不足です。(実際にomakeもできたよーって話ももらいましたw)
んで、その上で僕の現状ですが

omakeは、もの凄いツールで、使いたくて頑張ったんですが、make -> ocaml -> flexlink -> アクセスが拒否されました。
というコンボが重なり、いまのところペンディングです(涙

omakeは、あとで使いたいのでLinux環境いったときに使いますね。

eclipseとgmakeについては、実際に「C++とGoogleTestのTDDをeclipseでどうか」を実験してたんですが、
あまりおいしくできなくて、やめていた経緯がありました。

  • eclipseが自動で作ってくれるmakeだと、実行ファイルが一つしかつくれなくて、うまくできなかった
  • makeを読込ませてやってみたが、makeターゲットの指定とかが意外と面倒

こんなところです。

とりあえずやりたいことはできた、よかった!