IT pass HikiWiki - [Exp2016]シェルスクリプト課題 Diff
- Added parts are displayed like this.
- Deleted parts are displayed
like this.
{{toc}}
= 提出について
* 提出期限: 08/31 (水) 23:59
* 修正期限: 09/09 (金) 17:00
== レポートの作成方法
* ((<ITPASS サーバでレポートを公開するには|[Exp2016]ITPASS サーバでレポートを公開するには>)) を参照してください. また, ((<簡単なレポートの書き方指南>)) も良く読みましょう.
* レポートの一番上に以下のことを必ず明記してください.
* タイトル (例: ITPASS 実習レポート1)
* 名前
* 学籍番号は書かないでください.
* 担当情報実験機名 (例: joho01)
* レポートの HTML ファイルの名前は index.html にしてください.
複数の HTML ファイルを作る場合は, 以下の要件を満たすようにしてください.
* index.html を表紙, 目次とする
* どの HTML ファイルも index.html との相互リンクが張ってある
* ((<レポートのテンプレート|URL:/~itpass/exp/fy2015/150807/practice_kadai/hiki-samples/sample.html>)) を置いてあります. 自由に使ってもらってかまいません.
* HTML の書き方については実習の時間内では解説しません.
Web や書籍などで書き方を調べてください.
上記のテンプレートを参照するのもよいでしょう.
これもレポートの一環としてがんばってください.
* 問題の難易度を高めに設定しています.
解けない場合は, 未完成のスクリプトを提出し,
どこまでできて, 何につまづいたかを詳しく解説してください.
問題そのものができていなくても,
きちんとした解説があるレポートには高い評価を与えます.
* 自力で頑張っても分からない場合は, 他の人が提出したレポート
(実習のメーリングリストに投げられたレポート提出報告メールに
書かれている (はずの) URL から見られます)
を参考にすることを推奨します.
その場合, 参考にしたレポートを参考資料に挙げるようにしてください.
また, 丸写しにするのではなく, 自分なりの改良も加えましょう.
* ((<2009 年のレポート課題|[Exp2009]シェルスクリプト課題>)), ((<2010 年のレポート課題|[Exp2010]シェルスクリプト課題>)), ((<2011 年のレポート課題|[Exp2011]シェルスクリプト課題>)) , ((<2012 年のレポート課題|[Exp2012]シェルスクリプト課題>)) , ((<2013 年のレポート課題|[Exp2013]シェルスクリプト課題>)) , ((<2014 年のレポート課題|[Exp2014]シェルスクリプト課題>)) , ((<2015 年のレポート課題|[Exp2015]シェルスクリプト課題>))も参考にしてみてください.
=== 授業時間外のレポート作成について
* 自宅, 学内から 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 号室にいる人に一言断ってから使用してください. ((<[Exp2016]実習部屋(507号室)の使い方>)) もよく読んでください.
== レポートの提出方法
=== ファイルを置く
今回のレポートは全て
ITPASS サーバ (ika-itpass) の ~/public_html/report01/
以下に置いてください.
置き場所となるディレクトリは必要に応じて自分で作ってください.
情報実験機で作ったファイルを ITPASS サーバに転送するには scp というコマンドを使うとよいでしょう. 詳しくは man を見てください.
各ファイルの置き方は以下のようにしてください.
* html ファイルは ~/public_html/report01/ 以下に置く.
* シェルスクリプトは ~/public_html/report01/scripts/ 以下に置く.
* 結果として出力されたファイルは
~/public_html/report01/results/ 以下に置く.
* 注意: 問題として配布するデータファイルは置かなくても結構です.
ただし, どこからどうやって入手したかはレポート本文に明記しておきましょう.
=== アップロード確認
ブラウザから全部のファイルにアクセスできるか確認してみましょう.
例えば, ITPASS サーバ (ika-itpass) では,
~/public_html/report01/index.html に対応する URL は
http://itpass.scitec.kobe-u.ac.jp/~(自分のアカウント名)/report01/index.html
になります.
=== 提出完了の報告
提出期限までに以下のメールを送ってください.
内容を確認した後, 修正すべき点があればその旨を連絡します.
修正完了後, 再度メールで報告してください.
こちらから, レポート提出完了のメールが送られた時点で
レポートを提出したことになります.
* メールの内容
* 件名
* 「ITPASS実習レポート ??/?? 出題分 (自分の氏名)」
* 宛先
* itpass のメーリングリスト
* メール本文に必ず記入すること
* 情報実験機番号
* 氏名
* レポートの URL
= 必須課題
== 問題 1
=== RGB をカラーコードに変換し, 対応する色の名前を探して表示するスクリプト
RGB とは, 色を R (赤), G (緑), B (青)の和によって表現する方法のことです. この問題では, RGB のそれぞれの要素の階調を 10 進数の 0 から 255 までの 256 段階で表現することにします. 一方カラーコードとは, 色を 0 から f までの 16 進数を用いて 6 桁の値で表現する方法のことです.
RGB とカラーコードの対応例を以下に示します.
R=20 G=58 B=186 --> #163aba
R=14 G=62 B=225 --> #0e48d2
任意の R, G, B のそれぞれの値の入力に基づいて, 与えられたカラーコードのデータファイルから対応するカラーコードや色の名前を表示するスクリプトを作成してください.
ただし, 10 進数から 16 進数に変換する処理は bc, printf コマンドを使わずに自分で書いてください.
また, 入力した RGB の値に対応するカラーコードが存在しない場合は, そのことがわかるようにエラー処理を行ってください.
==== 事前準備
カラーコードのデータファイルは itpass サーバ上にあります. 以下のコマンドを実行して自分のホームディレクトリにファイルをコピーしてください.
cp /home/itpass/dc-arch/exp/fy2016/160808/practice_kadai/colorcode_list/eurocolor.csv /home/hoge/
cp /home/itpass/dc-arch/exp/fy2016/160808/practice_kadai/colorcode_list/jpcolor.csv /home/hoge/
cp /home/itpass/dc-arch/exp/fy2016/160808/practice_kadai/colorcode_list/metrocolor.csv /home/hoge/
==== レポートに書く内容
レポート内には以下を記述してください.
ただしリンクを貼る際は((*相対パスで指定するようにしてください*)).
* シェルスクリプトファイル quiz1.sh.txt へのリンク
上記で作成した quiz1.sh を quiz1.sh.txt という名前に変更してください. ブラウザ上から読めるようにするためです.
* シェルスクリプトの解説
スクリプト内の各行が何をしているのか, ((*スクリプト内にコメント文として書く*)).
* スクリプトの使い方の解説
これをもとに TA が実際にテストします.
実行する際のスクリプト, データの置き場を明示すること.
* 実行例 result_1.txt へのリンク
実行例とは, スクリプトの作業記録です. 自分が実際にスクリプトを実行したときのコンソールをテキストファイルにコピーするなどしてください.
* 参考資料
URL をベタ書きにするのではなく, そのページの作者やタイトル, および何を参考にしたのかも明記する.
* 共同作業した人の名前
* 工夫したこと, 感想など
=== 実行結果の例
$ ./quiz1.sh 255 255 255
#ffffff,ホワイトwhite
metrocolor.csv中に対応する色はありません.
#ffffff,白しろ
== 問題 2
=== 2016 年から任意の年の間に存在する 13 日の金曜日を表示するスクリプト
2016 年 1 月 1 日から, 指定された任意の年の 12 月 31 日までの期間中に存在する 13 日の金曜日の日数を表示するスクリプトを作成してください.
任意の日付の曜日を算出するツェラーの公式を用いても構いません.
ただし, 任意の年は実行時引数で指定してください.
また, 2016 年より前の年を指定した場合のエラー処理も行ってください.
==== レポートに書く内容
レポート内には以下を記述してください.
ただしリンクを貼る際は((*相対パスで指定するようにしてください*)).
* シェルスクリプトファイル quiz2.sh.txt へのリンク
上記で作成した quiz2.sh を quiz2.sh.txt という名前に変更してください. ブラウザ上から読めるようにするためです.
* シェルスクリプトの解説
スクリプト内の各行が何をしているのか, ((*スクリプト内にコメント文として書く*)).
* スクリプトの使い方の解説
これをもとに TA が実際にテストします.
実行する際のスクリプト, データの置き場を明示すること.
* 実行結果 result_2.txt ページへのリンク
実行例とは, スクリプトの作業記録です. 自分が実際にスクリプトを実行したときのコンソールをテキストファイル result_2.txt にコピーしてください.
* 参考資料
URL をベタ書きにするのではなく, そのページの作者やタイトル, および何を参考にしたのかも明記する.
* 共同作業した人の名前
* 工夫したこと, 感想など
=== 実行結果の例
$ ./quiz2.sh 2100
145 日
$ ./quiz2.sh 1900
2016 年以降の年を指定してください.
= 提出されたレポート
* joho 01
* ((<秋山 峻寛|URL:/~itpass/exp/fy2016/160808/kadai_answer/answers_final_190830/akikam8>))
* joho 02
* ((<有末 大輝|URL:/~arisued/report01/index>))|URL:/~itpass/exp/fy2016/160808/kadai_answer/answers_final_190830/arisued>))
* joho 04
* ((<岩佐 海詩|URL:/~iwasa516/report01/index>))|URL:/~itpass/exp/fy2016/160808/kadai_answer/answers_final_190830/iwasa516>))
* joho 05
* ((<杉村 瞭|URL:/~sugi0630/report01/index.html>))|URL:/~itpass/exp/fy2016/160808/kadai_answer/answers_final_190830/sugi0630>))
* joho 07
* ((<高砂 裕也|URL:/~yuyagoal/report01/index>))|URL:/~itpass/exp/fy2016/160808/kadai_answer/answers_final_190830/yuyagoal>))
* joho 08
* ((<都丸 秀之|URL:/~tomabo/report01/index.html>))|URL:/~itpass/exp/fy2016/160808/kadai_answer/answers_final_190830/tomabo>))
* joho 10
* ((<中村 誠人|URL:/~nakamst/report01/index>))|URL:/~itpass/exp/fy2016/160808/kadai_answer/answers_final_190830/nakamst>))
* joho 11
* ((<中村 嘉孝|URL:/~nakamu06/report01/index.html>))|URL:/~itpass/exp/fy2016/160808/kadai_answer/answers_final_190830/nakamu06>))
* joho 13
* ((<西川 直輝|URL:/~nsikw057/report01/index.html>))|URL:/~itpass/exp/fy2016/160808/kadai_answer/answers_final_190830/nsikw057>))
* joho 14
* ((<山本 裕也|URL:/~yymmt/report01/index>))|URL:/~itpass/exp/fy2016/160808/kadai_answer/answers_final_190830/yymmt>))
= 提出について
* 提出期限: 08/31 (水) 23:59
* 修正期限: 09/09 (金) 17:00
== レポートの作成方法
* ((<ITPASS サーバでレポートを公開するには|[Exp2016]ITPASS サーバでレポートを公開するには>)) を参照してください. また, ((<簡単なレポートの書き方指南>)) も良く読みましょう.
* レポートの一番上に以下のことを必ず明記してください.
* タイトル (例: ITPASS 実習レポート1)
* 名前
* 学籍番号は書かないでください.
* 担当情報実験機名 (例: joho01)
* レポートの HTML ファイルの名前は index.html にしてください.
複数の HTML ファイルを作る場合は, 以下の要件を満たすようにしてください.
* index.html を表紙, 目次とする
* どの HTML ファイルも index.html との相互リンクが張ってある
* ((<レポートのテンプレート|URL:/~itpass/exp/fy2015/150807/practice_kadai/hiki-samples/sample.html>)) を置いてあります. 自由に使ってもらってかまいません.
* HTML の書き方については実習の時間内では解説しません.
Web や書籍などで書き方を調べてください.
上記のテンプレートを参照するのもよいでしょう.
これもレポートの一環としてがんばってください.
* 問題の難易度を高めに設定しています.
解けない場合は, 未完成のスクリプトを提出し,
どこまでできて, 何につまづいたかを詳しく解説してください.
問題そのものができていなくても,
きちんとした解説があるレポートには高い評価を与えます.
* 自力で頑張っても分からない場合は, 他の人が提出したレポート
(実習のメーリングリストに投げられたレポート提出報告メールに
書かれている (はずの) URL から見られます)
を参考にすることを推奨します.
その場合, 参考にしたレポートを参考資料に挙げるようにしてください.
また, 丸写しにするのではなく, 自分なりの改良も加えましょう.
* ((<2009 年のレポート課題|[Exp2009]シェルスクリプト課題>)), ((<2010 年のレポート課題|[Exp2010]シェルスクリプト課題>)), ((<2011 年のレポート課題|[Exp2011]シェルスクリプト課題>)) , ((<2012 年のレポート課題|[Exp2012]シェルスクリプト課題>)) , ((<2013 年のレポート課題|[Exp2013]シェルスクリプト課題>)) , ((<2014 年のレポート課題|[Exp2014]シェルスクリプト課題>)) , ((<2015 年のレポート課題|[Exp2015]シェルスクリプト課題>))も参考にしてみてください.
=== 授業時間外のレポート作成について
* 自宅, 学内から 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 号室にいる人に一言断ってから使用してください. ((<[Exp2016]実習部屋(507号室)の使い方>)) もよく読んでください.
== レポートの提出方法
=== ファイルを置く
今回のレポートは全て
ITPASS サーバ (ika-itpass) の ~/public_html/report01/
以下に置いてください.
置き場所となるディレクトリは必要に応じて自分で作ってください.
情報実験機で作ったファイルを ITPASS サーバに転送するには scp というコマンドを使うとよいでしょう. 詳しくは man を見てください.
各ファイルの置き方は以下のようにしてください.
* html ファイルは ~/public_html/report01/ 以下に置く.
* シェルスクリプトは ~/public_html/report01/scripts/ 以下に置く.
* 結果として出力されたファイルは
~/public_html/report01/results/ 以下に置く.
* 注意: 問題として配布するデータファイルは置かなくても結構です.
ただし, どこからどうやって入手したかはレポート本文に明記しておきましょう.
=== アップロード確認
ブラウザから全部のファイルにアクセスできるか確認してみましょう.
例えば, ITPASS サーバ (ika-itpass) では,
~/public_html/report01/index.html に対応する URL は
http://itpass.scitec.kobe-u.ac.jp/~(自分のアカウント名)/report01/index.html
になります.
=== 提出完了の報告
提出期限までに以下のメールを送ってください.
内容を確認した後, 修正すべき点があればその旨を連絡します.
修正完了後, 再度メールで報告してください.
こちらから, レポート提出完了のメールが送られた時点で
レポートを提出したことになります.
* メールの内容
* 件名
* 「ITPASS実習レポート ??/?? 出題分 (自分の氏名)」
* 宛先
* itpass のメーリングリスト
* メール本文に必ず記入すること
* 情報実験機番号
* 氏名
* レポートの URL
= 必須課題
== 問題 1
=== RGB をカラーコードに変換し, 対応する色の名前を探して表示するスクリプト
RGB とは, 色を R (赤), G (緑), B (青)の和によって表現する方法のことです. この問題では, RGB のそれぞれの要素の階調を 10 進数の 0 から 255 までの 256 段階で表現することにします. 一方カラーコードとは, 色を 0 から f までの 16 進数を用いて 6 桁の値で表現する方法のことです.
RGB とカラーコードの対応例を以下に示します.
R=20 G=58 B=186 --> #163aba
R=14 G=62 B=225 --> #0e48d2
任意の R, G, B のそれぞれの値の入力に基づいて, 与えられたカラーコードのデータファイルから対応するカラーコードや色の名前を表示するスクリプトを作成してください.
ただし, 10 進数から 16 進数に変換する処理は bc, printf コマンドを使わずに自分で書いてください.
また, 入力した RGB の値に対応するカラーコードが存在しない場合は, そのことがわかるようにエラー処理を行ってください.
==== 事前準備
カラーコードのデータファイルは itpass サーバ上にあります. 以下のコマンドを実行して自分のホームディレクトリにファイルをコピーしてください.
cp /home/itpass/dc-arch/exp/fy2016/160808/practice_kadai/colorcode_list/eurocolor.csv /home/hoge/
cp /home/itpass/dc-arch/exp/fy2016/160808/practice_kadai/colorcode_list/jpcolor.csv /home/hoge/
cp /home/itpass/dc-arch/exp/fy2016/160808/practice_kadai/colorcode_list/metrocolor.csv /home/hoge/
==== レポートに書く内容
レポート内には以下を記述してください.
ただしリンクを貼る際は((*相対パスで指定するようにしてください*)).
* シェルスクリプトファイル quiz1.sh.txt へのリンク
上記で作成した quiz1.sh を quiz1.sh.txt という名前に変更してください. ブラウザ上から読めるようにするためです.
* シェルスクリプトの解説
スクリプト内の各行が何をしているのか, ((*スクリプト内にコメント文として書く*)).
* スクリプトの使い方の解説
これをもとに TA が実際にテストします.
実行する際のスクリプト, データの置き場を明示すること.
* 実行例 result_1.txt へのリンク
実行例とは, スクリプトの作業記録です. 自分が実際にスクリプトを実行したときのコンソールをテキストファイルにコピーするなどしてください.
* 参考資料
URL をベタ書きにするのではなく, そのページの作者やタイトル, および何を参考にしたのかも明記する.
* 共同作業した人の名前
* 工夫したこと, 感想など
=== 実行結果の例
$ ./quiz1.sh 255 255 255
#ffffff,ホワイトwhite
metrocolor.csv中に対応する色はありません.
#ffffff,白しろ
== 問題 2
=== 2016 年から任意の年の間に存在する 13 日の金曜日を表示するスクリプト
2016 年 1 月 1 日から, 指定された任意の年の 12 月 31 日までの期間中に存在する 13 日の金曜日の日数を表示するスクリプトを作成してください.
任意の日付の曜日を算出するツェラーの公式を用いても構いません.
ただし, 任意の年は実行時引数で指定してください.
また, 2016 年より前の年を指定した場合のエラー処理も行ってください.
==== レポートに書く内容
レポート内には以下を記述してください.
ただしリンクを貼る際は((*相対パスで指定するようにしてください*)).
* シェルスクリプトファイル quiz2.sh.txt へのリンク
上記で作成した quiz2.sh を quiz2.sh.txt という名前に変更してください. ブラウザ上から読めるようにするためです.
* シェルスクリプトの解説
スクリプト内の各行が何をしているのか, ((*スクリプト内にコメント文として書く*)).
* スクリプトの使い方の解説
これをもとに TA が実際にテストします.
実行する際のスクリプト, データの置き場を明示すること.
* 実行結果 result_2.txt ページへのリンク
実行例とは, スクリプトの作業記録です. 自分が実際にスクリプトを実行したときのコンソールをテキストファイル result_2.txt にコピーしてください.
* 参考資料
URL をベタ書きにするのではなく, そのページの作者やタイトル, および何を参考にしたのかも明記する.
* 共同作業した人の名前
* 工夫したこと, 感想など
=== 実行結果の例
$ ./quiz2.sh 2100
145 日
$ ./quiz2.sh 1900
2016 年以降の年を指定してください.
= 提出されたレポート
* joho 01
* ((<秋山 峻寛|URL:/~itpass/exp/fy2016/160808/kadai_answer/answers_final_190830/akikam8>))
* joho 02
* ((<有末 大輝
* joho 04
* ((<岩佐 海詩
* joho 05
* ((<杉村 瞭
* joho 07
* ((<高砂 裕也
* joho 08
* ((<都丸 秀之
* joho 10
* ((<中村 誠人
* joho 11
* ((<中村 嘉孝
* joho 13
* ((<西川 直輝
* joho 14
* ((<山本 裕也