IT pass HikiWiki - [Exp2019]シェルスクリプト課題 Diff

  • Added parts are displayed like this.
  • Deleted parts are displayed like this.

{{toc}}

= 提出について

* 提出期限: 08/29 (木) 23:59
* 修正期限: 09/13 (金) 17:00

== レポートの作成方法

* ((<ITPASS サーバでレポートを公開するには|[Exp2019]ITPASS サーバでレポートを公開するには>)) を参照してください. また, ((<簡単なレポートの書き方指南>)) も良く読みましょう.
* レポートの一番上に以下のことを必ず明記してください.
  * タイトル (例: ITPASS 実習レポート1)
  * 名前
    * 学籍番号は書かないでください.
  * 担当情報実験機名 (例: joho01)
* レポートの HTML ファイルの名前は index.html にしてください.
  複数の HTML ファイルを作る場合は, 以下の要件を満たすようにしてください.
  * index.html を表紙, 目次とする
  * どの HTML ファイルも index.html との相互リンクが張ってある
* ((<レポートのテンプレート|URL:/~itpass/exp/fy2019/190806/practice_kadai/hiki-samples/sample.html>))  を置いてあります. 自由に使ってもらってかまいません.
* HTML の書き方については実習の時間内では解説しません.
  Web や書籍などで書き方を調べてください.
  上記のテンプレートを参照するのもよいでしょう.
  これもレポートの一環としてがんばってください.
* 問題の難易度を高めに設定しています.
  解けない場合は, 未完成のスクリプトを提出し,
  どこまでできて, 何につまづいたかを詳しく解説してください.
  問題そのものができていなくても,
  きちんとした解説があるレポートには高い評価を与えます.
* 自力で頑張っても分からない場合は, 他の人が提出したレポート
  (実習のメーリングリストに投げられたレポート提出報告メールに
  書かれている (はずの) URL から見られます)
  を参考にすることを推奨します.
  その場合, 参考にしたレポートを参考資料に挙げるようにしてください.
  また, 丸写しにするのではなく, 自分なりの改良も加えましょう.
* ((<2009 年のレポート課題|[Exp2009]シェルスクリプト課題>)), ((<2010 年のレポート課題|[Exp2010]シェルスクリプト課題>)), ((<2011 年のレポート課題|[Exp2011]シェルスクリプト課題>)) , ((<2012 年のレポート課題|[Exp2012]シェルスクリプト課題>)) , ((<2013 年のレポート課題|[Exp2013]シェルスクリプト課題>)) , ((<2014 年のレポート課題|[Exp2014]シェルスクリプト課題>)) , ((<2015 年のレポート課題|[Exp2015]シェルスクリプト課題>)) , ((<2016 年のレポート課題|[Exp2016]シェルスクリプト課題>)) , ((<2017 年のレポート課題|[Exp2017]シェルスクリプト課題>)) , ((<2018 年のレポート課題|[Exp2018]シェルスクリプト課題>)) も参考にしてみてください.

=== 授業時間外のレポート作成について

* 自宅, 学内から ITPASS サーバ (ika-itpass) にログインする場合,
  ((<[TEBIKI]SSHサーバへの公開鍵認証によるログイン>)) を参考にして下さい.
  * Windows からの接続については, ((<こちら|URL:https://itpass.scitec.kobe-u.ac.jp/hiki/hiki.cgi?%E8%A8%88%E7%AE%97%E6%A9%9F%E3%81%A8%E3%83%8D%E3%83%83%E3%83%88%E3%83%AF%E3%83%BC%E3%82%AF%E3%81%AE%E6%89%8B%E5%BC%95%E9%9B%86>))の
    * [TEBIKI]Tera Term を用いた SSH サーバへのログイン
    * [TEBIKI]Xming を用いた X (ウィンドウ) の飛ばし方
    * [TEBIKI]ITPASS サーバへのファイル転送方法
    を参考にすると良いでしょう.
  * なお, 学外からは情報実験機 (johoXX-itpass) に直接ログインすることはできません. 学外からは itpass サーバ (itpass.scitec.kobe-u.ac.jp) にログインし, itpass サーバから情報実験機に ssh でログインしましょう.
* シェルスクリプトを作って実行するだけなら学内の Mac でもできます.
* 507 号室にある自分の担当マシンは, 部屋の使用予定がない限り,
  許可なく使ってもらってもよいです. ゼミなどで使用している場合も, その場で許可をとってもらえば使用してかまいません.
  * 507 号室の使用予定は以下の予定表で確認できます.
    * ((<507 号室の予約表|URL:https://itpass.scitec.kobe-u.ac.jp/~bldg3/hiki/hiki.cgi?507%E5%8F%B7%E5%AE%A4%E3%81%AE%E4%BA%88%E7%B4%84%E7%AE%A1%E7%90%86>))
* 507 号室への入室にあたり事前に許可は不要ですが,
  鍵がかかっていて入れないことがあります. 希望者には鍵を貸し出しますので, TA にご一報ください.
* 部屋を使用するときには, 506 号室 もしくは 508 号室にいる人に一言断ってから使用してください. ((<[Exp2019]実習部屋(507号室)の使い方>)) もよく読んでください.


==  レポートの提出方法

=== ファイルを置く

今回のレポートは全て
ITPASS サーバ (ika-itpass) の ~/public_html/report01/
以下に置いてください.
置き場所となるディレクトリは必要に応じて自分で作ってください.

情報実験機で作ったファイルを ITPASS サーバに転送するには scp というコマンドを使うとよいでしょう. 詳しくは man を見てください.
各ファイルの置き方は以下のようにしてください.

* html ファイルは ~/public_html/report01/ 以下に置く.
* シェルスクリプトは ~/public_html/report01/scripts/ 以下に置く.
* 結果として出力されたファイルは
  ~/public_html/report01/results/ 以下に置く.
* 注意: 問題として配布するデータファイルは置かなくても結構です.
  ただし, どこからどうやって入手したかはレポート本文に明記しておきましょう.

=== ディレクトリ構造の例

/home/hoge/public_html/report01/
:
|-- index.html
|
|-- scripts/
|   |-- quiz1.sh.txt
|   |-- quiz2.sh.txt
|
|-- results/
|   |-- result1.txt
|   |-- result2.txt
:

* 上の例にある hoge は自分のアカウント名に置き換えてください.

=== アップロード確認

ブラウザから全部のファイルにアクセスできるか確認してみましょう.
例えば, ITPASS サーバ (ika-itpass) では,
~/public_html/report01/index.html に対応する URL は

  http://itpass.scitec.kobe-u.ac.jp/~(自分のアカウント名)/report01/index.html

になります.

=== 提出完了の報告

提出期限までに以下のメールを送ってください.
内容を確認した後, 修正すべき点があればその旨を連絡します.
修正完了後, 再度メールで報告してください.
こちらから, レポート提出完了のメールが送られた時点で
レポートを提出したことになります.

* メールの内容
  * 件名
    * 「ITPASS実習レポート ??/?? 出題分 (自分の氏名)」
  * 宛先
    * itpass のメーリングリスト
      * itpass-ml -at- itpass.scitec.kobe-u.ac.jp (-at- は @ に変更すること)
  * メール本文に必ず記入すること
    * 情報実験機番号
    * 氏名
    * レポートの URL

= 必須課題

== 問題 1

=== 気象庁のデータを用いたスクリプト

2010年1月1日から2019年5月31日までの, 東京都で観測された日平均気温のデータファイルがあります. 

  /home/hoge/kadai1_data
      |
      | -- .......
      | -- data2017.csv    ( 2017年 のデータ )
      | -- data2018.csv    ( 2018年 のデータ )
      | -- data2019.csv    ( 2019年 のデータ )

例えば, 2019年のデータファイルの各列には以下のように気象データが記述されています.

ダウンロードした時刻:yyyy/mm/dd ,,,,,,
,,,,,,
,東京,東京,東京
年月日,平均気温(℃)
,,,,,,
,,,,,,
2019/1/1,5.3
2019/1/2,6.2
2019/1/3,4.9
2019/1/4,5.1
2019/1/5,7.4
2019/1/6,5.3

csv ファイルに関する詳細は((<こちら|URL:http://www.data.jma.go.jp/gmd/risk/obsdl/top/help3.html>))

これらのファイルに収められている日平均気温を使って, 2019年
の東京都の桜の開花予想日を調べ, 開花予想日を表示するスクリプト
を作成しなさい.
開花日の予想にはいくつかの方法が提案されているようですが,
ここでは, 2 月 1 日以降の日平均気温の累積温度が 400 ℃ を
越える日を予想日とします.

余裕のある人は, 2010年から2019年のデータをすべて用いて, 2010年から2019年までの 10 年分の開花予想日が一度の実行ですべて出力されるスクリプトに改良してください.

==== 事前準備

スクリプトを作成する前に, 以下の手順に従って, ITPASS サーバ上のデータファイルを自分のホームディレクトリに持ってきてください.

* 自分の使用している情報実験機にログインします.
* 以下のコマンドで, ITPASS サーバ上のデータファイルを情報実験機のホームディレクトリにコピーします
$ scp hoge@itpass.scitec.kobe-u.ac.jp:/home/itpass/dc-arch/exp/fy2019/190806/practice_kadai/kadai1_data.tar.gz ~
* データファイルは圧縮ファイルにまとめられています. tar コマンドを用いて圧縮ファイルを展開してください.
$ cd ~hoge
$ tar xvzf ./kadai1_data.tar.gz

==== ヒント

* シェルスクリプト内の計算で小数を扱う際は bc コマンドを用いるとよいでしょう.
  例えば, 変数 num  に x^2+y^2 の平方根の値を代入するときには
  num = `echo "sqrt( x^2+y^2 )" | bc -l` (-l オプションは標準数学ライブラリを使用します.)
適宜 bc コマンドをインストールしてください

$ sudo apt-get install bc

==== レポートに書く内容

レポート内には以下を記述してください.
ただしリンクを貼る際は((*相対パスで指定するようにしてください*)).
* シェルスクリプトファイル quiz1.sh.txt へのリンク

  上記で作成した quiz1.sh を quiz1.sh.txt という名前に変更してください. ブラウザ上から読めるようにするためです.
* シェルスクリプトの解説

  スクリプト内の各行が何をしているのか, ((*スクリプト内にコメント文として書く*)).
* スクリプトの使い方の解説

  これをもとに TA が実際にテストします. 
  実行する際のスクリプト, データの置き場を明示すること.
* 実行例 result1.txt へのリンク

  実行例とは, スクリプトの作業記録です. 自分が実際にスクリプトを実行したときのコンソールをテキストファイルにコピーするなどしてください.

* 参考資料

  URL をベタ書きにするのではなく, そのページの作者やタイトル, および何を参考にしたのかも明記する.
* 共同作業した人の名前
* 工夫したこと, 感想など

=== 実行結果の例

$ ./quiz1.sh
開花予想日は 2019/3/20


$ ./quiz.sh
開花予想日は
2010/3/22
2011/3/27
......
......
2019/3/20


== 問題 2

=== 金星探査機「あかつき」の画像データを用いたスクリプト

金星探査機「あかつき」が撮影した画像データが収められたディレクトリがあります. このディレクトリは, 以下のようなディレクトリ構造となっています.

  /home/hoge/kadai2_data
      |
      | -- list.txt  (リストファイル)
      | -- c0000/    (軌道番号 c0000 ディレクトリ)
      |        |
      |        | -- ir2_20100521_115244_202_l2b_v10.jpg  (2010 年 05 月 21 日に撮影された画像ファイル)
      |        | -- ir2_20100609_102844_202_l2b_v10.jpg  (2010 年 06 月 09 日に撮影された画像ファイル)
      |        | -- ......
      | -- r0001/    (軌道番号 r0001 ディレクトリ)
      | -- r0004/    (軌道番号 r0004 ディレクトリ)
      | -- r0005/    (軌道番号 r0005 ディレクトリ)
      | -- ......

任意の日時を入力すると, その入力された日時に最も近い日時に撮影された画像を, 上記のデータディレクトリから探索し, それを表示させるスクリプトを作成してください. また, ((*表示する画像ファイルの置き場所を絶対パスで出力してください*)).

==== 注意点

* リストファイルには各軌道番号ディレクトリにある画像データの撮影日時のカバー範囲が記述されています.
* 軌道番号ディレクトリの名前にある頭文字は crusing の c もしくは revolution の r を指します. また, 軌道番号 (4 桁の数字) は探査機が近金点を通過するごとに + 1 されます.
* データファイルの命名規則については以下の通りです.
  * CAM_YYYYMMDD_hhmmss_FILTER_PRODUCT_vVER.EXT
    * CAM: カメラ名 (ここでは ir2 のデータを使用)
    * YYYYMMDD: データの撮影年月日
    * hhmmss: データの撮影時刻
    * FILTER: 観測波長 (単位は 0.01 μm)
    * PRODUCT: プロダクトの種類 (ここでは l2b のデータを使用)
    * VER: バージョン文字列 (ここでは 10 のデータを使用)
    * EXT: 拡張子 (ここでは jpg のデータを使用)
* 画像ファイルの表示には eog コマンドを用いてください. また, 適宜 eog コマンドをインストールしてください.

$ sudo apt-get install eog

* 画像ファイルの中には金星が写っていないものがあります.
* 金星探査機「あかつき」のデータアーカイブに関しては以下の資料を参考にするとよいでしょう.
  * 惑星大気研究会オンラインセミナー第 90 回: ((<あかつきデータを見てみよう: データアーカイブ (村上真也)|URL:http://wtk.gfd-dennou.org/2017-08-03/murashin/pub/20170803-wtk-akatsuki-data-archive.pdf>))

==== 事前準備

スクリプトを作成する前に, 以下の手順に従って, ITPASS サーバ上のデータファイルを自分のホームディレクトリに持ってきてください.

* 自分の使用している情報実験機にログインします.
* 以下のコマンドで, ITPASS サーバ上のデータファイルを情報実験機のホームディレクトリにコピーします
$ scp hoge@itpass.scitec.kobe-u.ac.jp:/home/itpass/dc-arch/exp/fy2019/190806/practice_kadai/kadai2_data.tar.gz ~
* データファイルは圧縮ファイルにまとめられています. tar コマンドを用いて圧縮ファイルを展開してください.
$ cd ~hoge
$ tar xvzf ./kadai2_data.tar.gz

==== レポートに書く内容

レポート内には以下を記述してください.
ただしリンクを貼る際は((*相対パスで指定するようにしてください*)).
* シェルスクリプトファイル quiz2.sh.txt へのリンク
  上記で作成した quiz2.sh を quiz2.sh.txt という名前に変更してください. ブラウザ上から読めるようにするためです.
* シェルスクリプトの解説

  スクリプト内の各行が何をしているのか, ((*スクリプト内にコメント文として書く*)).
* スクリプトの使い方の解説

  これをもとに TA が実際にテストします. 
  実行する際のスクリプト, データの置き場を明示すること.

* 実行結果 result2.txt ページへのリンク
  
  実行例とは, スクリプトの作業記録です. 自分が実際にスクリプトを実行したときのコンソールをテキストファイル result_2.txt にコピーしてください.

* 参考資料

  URL をベタ書きにするのではなく, そのページの作者やタイトル, および何を参考にしたのかも明記する.
* 共同作業した人の名前
* 工夫したこと, 感想など

=== 実行結果の例 

$ ./quiz2.sh
年月日 (yyyymmdd) を指定してください:
20160825
時刻 (hhmmss) を指定してください:
050300

/home/hoge/kadai2_data/r0025/ir2_20160825_050333_226_l2b_v10.jpg
を表示します.
((<URL:http://itpass.scitec.kobe-u.ac.jp/~itpass/exp/fy2019/190806/practice_kadai/quiz2_result_sample.png>))

= 提出されたレポート

* joho 01
   * ((<小池 隆介|URL: http://itpass.scitec.kobe-u.ac.jp/~rkoike/report01/index.html >))
* joho 04
   * ((<亀井 翔太|URL: http://itpass.scitec.kobe-u.ac.jp/~itpass/exp/fy2019/190806/kadai_answer/answer_final_190914/shota >))
* joho 05
   * ((<鉄谷 圭人|URL: http://itpass.scitec.kobe-u.ac.jp/~itpass/exp/fy2019/190806/kadai_answer/answer_final_190914/tetsuya >))
* joho 07
   * ((<丸山 響|URL: http://itpass.scitec.kobe-u.ac.jp/~hibiki/report01/index.html http://itpass.scitec.kobe-u.ac.jp/~itpass/exp/fy2019/190806/kadai_answer/answer_final_190914/hibiki >))
* joho 08
   * ((<山口 海斗|URL: http://itpass.scitec.kobe-u.ac.jp/~kaito/report01/index.html http://itpass.scitec.kobe-u.ac.jp/~itpass/exp/fy2019/190806/kadai_answer/answer_final_190914/kaito >))