2015年10月24日土曜日

2015/10/22(木) da2 授業実施

正午のちょっと前からオフィスで仕事開始。


●進路指導Webサイトの更新
CSCからメールで流れてきたSPI選手権の資料を掲載した。

●学生への修学指導
研究室に所属する3年次生10名の全員と個別に面談をすることにした。来週の月曜から金曜までの昼休みに毎日2名ずつと面談をするという計画を立てた。その旨をK'sLifeを通じて当該学生らに通知した。

●計算機環境の整備
研究室内Wikiの移行: daybreak (Windows Server 2003 R2)からdawn (CentOS 7)へ
続き。残作業6に取り組んだ。
まず、PukiWikiのサイトからバージョン1.5.0をダウンロードして圧縮ファイルを展開し、その中身をサーバ dawn の /var/www/html の下に置いた。次に、INSTALL.txt の記載に従ってパスワードを設定したり、 chmod 777 やら chmod 666 やらを実行してディレクトリやファイルのパーミッションを調整したりした。その上でWebブラウザから index.php を閲覧したところ、次のようなエラーメッセージが表示された。
Runtime error
Error message :

Directory is not found or not writable (DATA_DIR)
Directory is not found or not writable (DIFF_DIR)
Directory is not found or not writable (BACKUP_DIR)
Directory is not found or not writable (CACHE_DIR)
ディレクトリ wiki, diff, backup, cache のパーミッションは前述の通り 777 にしたが、このエラーメッセージによるとこれらのディレクトリは書き込み可能ではない(not writable)ということであった。別途簡単なテスト用PHPスクリプトを書いて、その中から適当なディレクトリへの書き込みを実行できるかどうかを試してみたところ、確かに失敗した。プロセス httpd はユーザ apache として動いているので、これに合わせてディレクトリ wiki の下を chown -R apache:apache /var/www/html/wiki としてみても、やはり結果は同じであった。

今回も「不思議なことが起きたらSELinuxのせい」という経験則に基づいて調べた。Webを検索して見つかったページのうち、PukiWikiの質問箱4/74というページで同様の問題についての質問があったが、ここので解決方法は「SELinuxを setenfoce 0 で黙らせる」らしかった。SELinux関連のリンク集からRed Hatのドキュメントも見つけたが、この中からすぐに今回の問題の解決方法を見つけるのは難しそうであった。
さて getsebool -a | fgrep 'httpd' すると表示されるブール値のうち httpd_anon_write が何やら関係ありそうな名称であったので、これを検索語に加えて探したところ httpd_selinux のページが見つかった。ここの情報をヒントに次のように実行したところ、めでたくPukiWikiのエラーが消えた。どうやらこれが解決方法のようである。
# setsebool httpd_anon_write on
# chcon -R unconfined_u:object_r:public_content_rw_t:s0 ディレクトリを列挙
普通にWebアプリケーションを動かすだけのために public_content_rw_t を使うのはどうも納得がいかないが、さしあたりこれでしのぐことにする。
なお chcon で実行しただけでは何かの拍子に元に戻ってしまうことがあるので、あとで semanage できっちり変更しておきたい。これはもう少しPukiWikiの動作を確認してからのこととする。

(追記)
より適切な解決方法は httpd_sys_rw_content_t を使うことである。 httpd_anon_write を有効にする必要はない。10/23(金)の記載を参照。

●卒業研究の指導
YoくんにSQLのCOUNT関数とGROUP BY句の組み合わせについて指導した。
Naくんに行事日程のCSVデータをサンプルとして渡し、彼がやるべきことをあらためて説明した。

●PB演習 授業準備
続きサンプルコードの改訂の続きを行った。これは未完了である。また、技術教育の予告の改訂版をメール添付で関係学生に送付した。宿題の残りは次の通りである。

・宿題1: 技術教育の準備をする。
・宿題2: 技術教育のメニューを作成し、先にスタッフに知らせた上で、受講者に周知する。
・宿題3: 改訂途中のサンプルプログラム(PHPやHTMLのコード)を完成させる。

●da2 授業実施
4限目・5限目に第6回を実施した。
4限目には小テストのあと講義を行った。今回のテーマは再帰呼び出しと二分木の探索であった。説明すべき内容の分量が多い上に、途中の二分木に関するクイズでは、新しい方針に反して数週間ぶりに受講者に答えさせるということをしたので、今回は4限目の時間を講義だけで使い切った。
5限目には学習環境に関するアンケートに回答するよう指示したのち演習を指導した。5限目の終わりまでにほとんどの受講者が退室した。必答問題を解き終わらなくて6限目にまで居残ったのは2名だけであった。方針に基づいて、18:15には撤収する旨を6限目開始時に宣言した。撤収直前に1名が解答を終えた。最後の1名は撤収後に私の部屋まで解答を持ってきた。

●da2 授業処理
K'sLifeの出席登録データの修正、小テストおよび演習の得点の記録、成績確認システムへの掲載などの処理を行った。

●その他
K'sLifeの「試験実施調査報告」に各科目の定期試験の予定を入力した。また da2 についてはその旨を関係の先生方にメールで連絡した。

0 件のコメント:

コメントを投稿