2009/12/30

今年の動画

面白い動画を見つけました。

http://www.youtube.com/watch?v=-G1fHyYyQgw


リンクがだめなときは

youtube で ”合気道 ドラゴン” と検索してください。


なら

2009/12/28

筋肉痛

木、金曜日にやった筋トレの痛みがまだ残ってます
運動不足なのに無理するもんじゃないですね
あ~痛い痛い

ところで「筋肉痛が痛い」 っていう表現は
     「馬から落馬した」と同じような感じですか?




あと今日は誰も研究室にいらっしゃらない感じですか?
一人はさびしいです

AR

2009/12/17

謝罪

今朝(12/17 11時頃)の鹿児島の地震は僕のせいです。

すいませんでした。

グララララ

気温

久々の更新です。

最近めっきり冬になってきました。
寒くてこまるなぁ、と思っていたら豊田がやたら寒いことに気づきました。

夜に学校から駅まで自転車で向かうときに
”こんなに気温が低かったら、家まで帰れないじゃないか。”
と思ったのに、埼玉に変えると暖かい気がしてしまいます。

気のせいではないのです。
なぜなら夜10時を過ぎると埼玉には日本中のエネルギーが集まってくるからです。
そのエネルギーが県内を暖かくしている、と書いてありました[1]。

みんな寒い豊田にいるので研究の際の防寒は万全にしましょう。

ならたく

>>四谷君
   FireFoxなどのブラウザでいけばダウンロードできます。
   ウィルス検索もかけました。


参考文献

1) Jane's All the Aircraft, 2010

2009/12/11

短期集中連載 第2弾 『Makefile』

皆さんスクリプトファイルについては大体理解できたと思うので、
今日はMakefileについて書きたいと思います。

≪Makefileとは≫
 結論から言うと、Makefileはたくさんのファイルのコンパイル方法を詰め込んだものです。
スクリプトファイルにもコンパイル方法を詰め込むことができますが、
Makefileの便利なとこは余計な処理をしないでくれることです。

例 ファイル main.f, subroutine1f, subroutine2
   の用に沢山のファイルから成る実行ファイルをコンパイルする場合、
   通常は

   g77 -c subroutine2.f
g77 -c subroutine1.f
g77 -c main.f
g77 -o main.exe subroutine2.o subroutine1.o main.o

   とします。スクリプトファイルでまとめておくと、
   subroutine2.f だけを変更したときもこの4個のコマンドを実行することになります。
プログラムが小さい時はこれでいいかもしれませんが、数値計算で大きなプログラムを
   コンパイルするときは毎回時間がかかって面倒です。
   しかし、Makefileであれば

   g77 -c subroutine2.f
g77 -o main.exe subroutine2.o subroutine1.o main.o

   だけを抜き出してくれます。

と便利なMakefileです。ではその書き方の基本を次で説明します。

/*-------------------------------------------------------------------------------*/
≪Makefileの最小単位≫
 さっきのプログラムを例にします。

ファイル    main.f, subroutine1f, subroutine2
実行ファイル main.exe

このときMakefileはこうなります。

#-----------------------------------------------#
main.exe : subroutine2.o subroutine1.o main.o
g77 -o subroutine2.o subroutine1.o main.o

subroutine2.o : subroutine2.f
g77 -c subroutine2.f

subroutine1.o : subroutine1.f
g77 -c subroutine1.f

main.o : main.f
g77 -c main.f
#------------------------------------------------#

見ると何となくわかると思いますが、説明します。

まず、文章の単位として2行ごとになっています。
Makefileは基本的にこの2行を作っていくことで作成します。

では、2行を日本語にしてみましょう。

(①作成ファイル名): (②材料ファイル名)
<*タブ>(③材料ファイルから作成ファイルを作るコマンド)
  ↑
スペースではない、必ずタブにする。

③について
  まずは③から説明します。ここには自分でコマンドを打つ時の文字を並べます。
  sample.f から sample.o を作る時は

  g77 -c sample.f

  としますね。これをそのまま打ち込みます。
①について
  次は①です。ここには③のコマンドで作成されるファイル名を記述します。
  上の例のsample.f ならば sample.o です。
②について
  最後に②です。ここには③のコマンドで使うファイル名を入れます。
  上の例の sample.f ならば sample.f なります。

以上①、②、③を入れていけばMakefileの最小単位について作成することができます。

/*-------------------------------------------------------------------------------*/
≪Makefileの仕組み≫
ここまでで、Makefileの最小単位について説明しました。
Makefileはこの最小単位となる2行を並べるだけなのか?
という問いに対する答えは“否”です。

では最小単位の2行をどうやって並べて行けばいいのか説明します。
さっきの例で気づいてる人もいると思いますが、ルールは
実行コマンドを逆から書いていく”です。
つまり、リンクコマンドは最後にやるから一番上に書く。
subroutine2.f, subroutine1.f, main.f のコンパイルは最初にやるから
下に書く。となります。
詳しくはmain.f とsubrouine2.f, subroutine1.f の依存関係などもありますが、
今は逆からコマンドを構成していくと覚えておけば問題ないでしょう。

さて、具体的なMakefileの動きを簡単に説明します。
さっきのMakefileはこうでした。(行番号は説明のためにつけました。)

   #-----------------------------------------------#
1 :main.exe : subroutine2.o subroutine1.o main.o
2 : g77 -o subroutine2.o subroutine1.o main.o
3 :
4 :subroutine2.o : subroutine2.f
5 : g77 -c subroutine2.f
6 :
7 :subroutine1.o : subroutine1.f
8 : g77 -c subroutine1.f
9 :
10:main.o : main.f
11: g77 -c main.f
   #------------------------------------------------#

(1) Makefileは1行目のmain.exe を作る材料ファイルsubroutine2.oを
現在のディレクトリで探します。
   コンパイルされてないならどのオブジェクトファイルもありません。
   (ファイルがあれば次のsubrouine1.o を探します。)

(2) Makefileは材料ファイルsubroutine2.o を作ろうとします。
   そのために3行目以降で作成ファイル名がsubroutine2.o となっている行を探します。
   (この場合4行目です。)

(3) 4行目にsubrouitne2.o が作成ファイル名になっていたので、
   Makefileは5行目のコマンドを実行します。
   これでsubrouitne2.oが作られます。

(4) subrouitne1.o について同じ手順を繰り返す。

(5) main.o について同じ手順を繰り返す。

(6) 1行目の材料ファイルがそろったので、
   2行目のコマンドを実行してmain.exe ができます。

以上がMakefileの動きです。

/*-------------------------------------------------------------------------------*/
≪まとめ≫
 ここまでの説明ではMakefileの有用性がわからないという人もいると思います。
なれないとスクリプトのほうが簡単にかけるので、それでいいじゃないかと思うかもしれません。
しかし、書いた内容はMakefileの入口の部分です。
ここでは書きませんでしたが、マクロサフィックスといったさらに便利な機能がMakefileにはあります。
これらの機能を使うと膨大なファイルを一気に処理できる、コンパイル環境に合わせて書き換えが簡単になる、などMakefileの大切さがわかると思います。TASやGAが簡単にコンパイルできるのはMakefileのおかげなのです。


これで金崎研究室の学生はMakefileについてわかったと思います。
油断しないでください。

2009/12/08

短期集中連載 第1弾 『sh ファイル(スクリプト)入門』

金崎研では数値計算をたくさんやるので、
同じ作業を30回やらないといけない場合がよくあります。
コマンドライン(cygwinなど)で計算の後処理とかやってると
わけわかんなくなってきます。
その時に役立つのが“スクリプトファイル”です。

/*-------------------------------------------------------*/
≪スクリプトファイルとは?≫
 スクリプトファイルとは簡単に言うとUNIXコマンドを並べたファイルということです。
同じ作業を何十回も繰り返す、決まった作業を勝手にやる、
などあらかじめ動作内容の分かっているときは
これを作ると操作がぐっと楽になります。

/*-------------------------------------------------------*/
≪Hallo World!!≫
 では、入門です。入門はやっぱりHallo World!!
まずは以下の文章を test.sc というファイルに入れてみよう。

#!/bin/shecho 'Hallo World!!'

こいつのいるディレクトリで

sh test.sc

と打つと Hallo World と表示されます。
これが一番簡単なスクリプトファイルです。
この例からわかるようにスクリプトファイルの中では 'ls, cd, echo' といった
通常のコマンドがそのまま使えます。

/*-------------------------------------------------------*/
≪繰り返し1≫
では同じ作業を繰り返したい時はどうすればいいのか?
それには

for i in N1 N2 N3
do
”何か作業”
done

とします。これは i に N1, N2, N3 と代入して繰り返す、という意味になります。
ここで注意するのは N1, N2, N3 は連続してなくてもいいということです。
では、具体例をあげましょう。
さっきの test.sc を以下のように書きなおします。

#!/bin/sh
for i in 10 20 30
do
echo $i
echo 'Hallo World!!'
done

こいつを同じように

sh test.sc

で作動させると、
10
Hallo World!!
20
Hallo World!!
30
Hallo World!!

のように表示されます。
i に10,20,30が順に代入されたうえでdo と done に挟まれた作業が繰り返されています。

/*-------------------------------------------------------*/
≪繰り返し2≫
しかし、このままでは30回同じ作業を繰り返す場合、

for i in 1 2 3 4 ..... 28 29 30
do
”何か作業”
done

としなくてはいけません。
30ならいいかもしれませんが、100とか200になったらめんどくさいです。
そこで seq を使います。
具体的には for の後の数字を$(seq 1 30)とすることです。
100 回 Hallo World!! を表示する時の test.sc は下のようになります。

#!/bin/sh
for i in $(seq 1 100)
do
echo $i
echo 'Hallo World!!'
done

これを作動させると

1
Hallo World!!
2
Hallo World!!
3
Hallo World!!


99
Hallo World!!
100
Hallo World!!

の出力を得られます。

/*-------------------------------------------------------*/
≪繰り返し3≫
 最後に30個のフォルダを一度に作るスクリプトを組んでみましょう。
ファイル名を 'dir30.sc' とします。ファイルの中身は以下

#!/bin/sh
for i in $(seq 1 30)
do
mkdir $i
done

これを作動させると、名前が1-30となっているフォルダができています。

/*-------------------------------------------------------*/
≪まとめ≫
 ここまでの内容を応用することで、単純作業をかなり簡略化できます。
皆さん頑張ってください。

/*-------------------------------------------------------*/
≪執筆後≫
 すごい疲れました。わかりにくい、ここどうなってんだ?、うまくいかない、などの感想待ってます。


次回は
 短期集中連載 第2弾 『Makefile


ならたく

研究

最近、金崎研の一部ではプロペラ飛行機を作って飛ばすのがはやっています。
おれもその一人ですが、今日気づきました。

飛行機ばっか作ってるから研究が進んでない!!

危険を感じてきたんで、そろそろ本気で研究はじめます。

今までが “L-1049 Super Constellation” での M = 0.5-0.6 の巡航なら
これからは “F-104 Starfighter” の最高速度 M = 2.2 出します。

そうです、アルミニウムの使用限界までかっ飛ばして研究するんです。

/*-----------------------------------------------------------------*/
ちなみに圧縮性空気のよどみ点温度の計算式は以下

T0 = T*(1+0.2*M^2)

T = 216.65 K (= 高度2万メートルの標準大気温度)
M=2.2
アルミニウムの使用限界温度 150℃
/*-----------------------------------------------------------------*/

次回は“短期集中連載 第1弾 『sh ファイル入門』”です。



ならたく

2009/12/02

朗報

金崎研図書館にまた一つ図書が増えました。

スラムダンクです

全31巻あります。忙しい時期で読んでるヒマないかもしれないですが、息抜きにでもなればと。

個人的にはマキバオーも集めたいです


きやむら