ITPASS 実習レポート 1

亀井 翔太

担当情報実験機:joho04

問 1

スクリプトの URL

scripts/script1.sh.txt

スクリプトの使い方の解説

 使用するデータと同じディレクトリにこのスクリプトをおき、実行権限をchmodコマンドによって変更する。データはITPASSサーバ上(scp hoge@itpass.scitec.kobe-u.ac.jp:/home/itpass/dc-arch/exp/fy2019/190806/practice_kadai/kadai1_data.tar.gz ~を用いる)にあるのでそれをコピーすれば良い。そののちに実行すると、”何年の開花予想を知りたいですか”と尋ねられるので、四桁の数字を打ち込むとその年の開花予想が年/月/日(例:2019/3/20)で表示される。

実行結果へのリンク

results/result1.txt

参考資料

無し

共同作業した人の名前

無し

工夫したこと, 感想

最初はawkを用いて行の足し算をして、条件をつければよいと思いついたが、awkを以前扱った際にコマンドが複雑で面倒だったのを思い出したので、異なる方法を用いた。ここでは、listから温度の行だけ抜き出し、順に足していって400を超えた時の列番号を記憶させておいて、その番号の日付を抜き出すという発想でスクリプトを書いた。 第一回の提出からの変更(修正)としては2019年の気温データがまだ5月までしかないことや閏年の影響を考慮できていなかったので、その部分に修正を加えた。藤林さんからのメールに2019年の結果が違うという旨の文章と正しい結果が記載されていたのだが、2019年に関してはその正しい結果と同じものが得られるようになった。

問 2

スクリプトの URL

scripts/script2.sh.txt

スクリプトの使い方の解説

 使用するデータはディレクトリ群としてまとまっているのでそのディレクトリと同じ階層にこのスクリプトをおき、実行後にその状態から各ディレクトリに移動できる状態にしておく。データはITPASSサーバ上にあるのでそこからコピーすれば良い。( scp hoge@itpass.scitec.kobe-u.ac.jp:/home/itpass/dc-arch/exp/fy2019/190806/practice_kadai/kadai2_data.tar.gz ~を用いる)また、chmodで実行権限を変更しておく。その後、実行すると、日時(年月日)を八桁で、時刻(時分秒)を六桁で入力するよう求められるので、従うと入力した時刻に最も近い時間に撮影された画像が画像の名前(ファイル名)とともに表示される。また、その誤差が秒単位で表示される。

実行結果へのリンク

results/result2.txt

参考資料

無し

共同作業した人の名前

なし

工夫したこと, 感想

list.txtから、入力された日にちを含むディレクトリを探して、そのディレクトリに移動し、その中で時刻が最も近いものを選ぶという目論見でスクリプトを書いた。最も苦悩したのはやはり最も近い時刻を選ぶ、という点であったが、ここは日にちを秒に直してから引き算を行う、という方法をとった。つまり (既存ファイルの日時)-(入力した日時) これを各ファイルについて計算させ、最小となる日時をその都度記憶させて、最後にその最終的に最小となる日時の画像ファイルを開かせる、という計算を行った。  しかし、ここで達成できなかった点がある。それは、2016年以外の年に関してはエラーが出てしまうという点である。経緯を説明すると、例えば、20160913を2016年9月13日として秒に直すと桁が大きくなりすぎるからか、errorが出てしまう。そのことと、list.txtに記載された日時の多く(データの数的な意味で)が2016年の範囲に収まっていたことから、年の部分はあらかじめ20160000を引いておくことで計算しなくても良いという形にしたので、2016年以外の日時については正しい計算がなされなくなってしまった。。こうした経緯に関して、当スクリプトの一部にコメントとして痕跡を残しておいた。  また、この方法によると、一個前(時間的に)のディレクトリに真に最も近い値があったとしても、スクリプト上、最も近いのはその次のディレクトリの頭のファイルであると表示してしまう。これを解消するには一つのディレクトリ内で誤差の評価をするのではなく、複数のディレクトリに渡って誤差を評価しなければならないが、その方法については良い案が思いつかなかった。  入力された日時が含まれるディレクトリを選ぶ際にも、数字を全て自分で打ち込んだので、その部分だけでも何十行も占めてしまい、大変見苦しいスクリプトになってしまった。  工夫した点としては、最後に誤差を表示させたところです。このスクリプトを使用する人がどんな目的で使用するのかは知りませんが、最も近い時刻がどれ程の誤差の範囲にあるのかは情報として有益であると考えました。