FixZip

CE6 の課題ツールで、提出物をZIPファイルで一括ダウンロードできるが、

  1. ZIPファイル内に入っているフォルダやファイル名がUTF-8になっており、Windowsで展開すると文字化けする。
  2. 複数課題をまとめてダウンロードもできるが、この際に課題毎にフォルダにまとめられていない。
  3. 提出者毎にフォルダで分けられているが、そのフォルダ名にユーザIDが含まれていない。

という問題がある。これらを解消するように、ダウンロードしたファイルを変換する Python スクリプトを作成した。ダウンロードは以下から。

(本スクリプトはコマンドラインツールとして、もしくはCGIプログラムとして動作する。)

上記 3 の問題は、フォルダ名に含まれる課題IDを CE6 のデータベースに直接問い合わせて提出者 ID を取得する事で解決している。なので、3 の機能を動作させるには

  • スクリプトを動作させるホストに cx_Oracle (Oracle DB にアクセスするためのpythonモジュール) がインストールされている事
  • スクリプトを動作させるホストから CE6 のデータベースサーバへ Oracle の問合せができるようになっていること
  • Oracle に問い合わせるための情報(SID、接続ユーザ名、パスワード) がわかっている事

が必要である。

3 の機能が動作する条件が揃っていなくても、1,2 だけでスクリプトは動作する。

動作確認環境

作者が動作を確認した環境は以下。

  • CE6 サーバ:BbLS CE 8.0.1, 8.0.2, 8.0.3 / Linux + Oracle 版
  • スクリプトの動作:CentOS 5.3+Python 2.4.3, MacOS X 10.5 + Python 2.5

利用方法

コマンドラインとして使う

シェルコマンドとして下記のように実行する。

./fixzip.cgi inputzipfile outputzipfie

CE6 からダウンロードしたファイルを inputzipfile に指定し、outputzipfile に変換後のzipファイル名を書く。

CGI スクリプトとして使う

  1. CGI が利用できるディレクトリにスクリプトを保存。
  2. スクリプトの最初の部分に tmpdir があるので、ここに CGI 実行者権限で書込みができるか確認をする。
  3. Oracle を参照する場合には ora_connect_str に以下を書く。
    • 接続ユーザ名
    • パスワード
    • SID
    • 接続ポート
    • サーバ名

ブラウザで、設置した CGI にアクセスすると以下のような画面になるので、CE6 からダウンロードしたファイルを指定し、「変換」をクリック。

http://sumi.riise.hiroshima-u.ac.jp/skitch/fixzip-20090824-044229.png

上記は cx_Oracle がインストールされていない場合。Oracle データベースを参照して、IDの追加ができる場合には以下のような画面となる。

http://sumi.riise.hiroshima-u.ac.jp/skitch/fixzip-20090824-044141.png

変換と変換したZIPファイルのダウンロードが始まる。変換後のファイル名は「年月日-時刻-????.zip」という形式になる。

このスクリプトの利用について

このスクリプトは http://www.els.hiroshima-u.ac.jp/s/fixzip/ で使っているものと同一です。

ご自由にご利用下さい。改変しての利用ももちろん可です。

ただし、このスクリプト、またはそれを改変したものの利用により、いかなる損害が発生しても作者(隅谷)は責任をとれません。

バージョン履歴

  • 2009-07-01 v1.0 初期バージョン

添付ファイル: filefixzip-1.0.zip 489件 [詳細]

トップ   差分 バックアップ リロード   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2009-09-30 (水) 10:52:10 (2825d)