moodle2.0devではファイルの扱いが素晴らしくよくなりましたね

moodle2.0devではファイルの扱いが素晴らしくよくなりましたね

- Minoru Akiyama の投稿
返信数: 13
秋山@eラーニングサービスです

明けましておめでとうございます。
久しぶりにmoodle2.0をインストールして、新しい機能をチェックしてみました。
mdl_filesテーブルができて、アップロードしたファイルのファイル名はテーブルに格納されていますので、もう文字化けに悩まされることがほとんどなくなりそうですね。
個人が管理できるファイルのリポジトリもできましたし、、、今年は未だ1.9で行くつもりでおりましたが、正式リリースされたら、移行したいと思うようになりました。

ホスト: localhost
データベース: m20
生成時間: 2009 年 1 月 06 日 20:09
生成環境: phpMyAdmin 2.11.3deb1ubuntu1.1 / MySQL 5.0.51a-3ubuntu5.4
実行した SQL: SELECT * FROM `mdl_files` LIMIT 0, 30 ;
行: 3

id contenthash pathnamehash contextid filearea itemid filepath filename userid filesize mimetype status timecreated timemodified
1 e7fedd6ef9728e22ce9c701bc623ab254e2fddbe 200fb4beab84038fbe02e7f9262b36e73830ea59 11 course_content 0 / jkks2008.doc 2 107008 application/msword 0 1231239459 1231239459
2 da39a3ee5e6b4b0d3255bfef95601890afd80709 a5f348bd2062aeaeefd192fd3ed92812051ecca3 11 course_content 0 / . 2 0 NULL 0 1231239459 1231239459
3 eb8b1b9d3c28d78617018022e7da6d8d869d04a6 250018c180349659320abb24408080dba4871317 11 course_content 0 / 平成20年度情報教育研究集会 2 3488 document/unknown 0 1231239585 1231239585

評点平均:有益(Useful) (1)
Minoru Akiyama への返信

Re: moodle2.0devではファイルの扱いが素晴らしくよくなりましたね

- Tatsuya Shirai の投稿

 とても興味があります.

>mdl_filesテーブルができて、アップロードしたファイルのファイル名はテーブルに格納されていますの で、もう文字化けに悩まされることがほとんどなくなりそうですね。

 アップロードされた,つまりmoodledataに格納されたファイルのファイル名はどうなるのでしょう.リソースナンバーのようなシリアルナンバーに改名して保存されるのでしょうか? (サーバ管理者にとっては良し悪し?)

 それともfilesizeやMIME type,それとuseridがデータベースに登録されることでパフォーマンスの向上や付加価値が付くといったメリットが付いたということでしょうか.

 既にアップロード済みのファイルのことを考えると,Moodle2.0へのアップグレード時の処理は大きくなりそうですね.それともMoodle2.0以前にアップロードされたファイルに関しては従来と同じ扱いで行くのでしょうか.

 useridが保存されているのは良いですね.誰がアップロードしたファイルかが分かるようになりますね.

Tatsuya Shirai への返信

Re: moodle2.0devではファイルの扱いが素晴らしくよくなりましたね

- Minoru Akiyama の投稿
秋山@eラーニングサービスです

元記事にテーブルを追加している間に質問されてしまった。
テーブルの構造をご覧になれば分かるようにハッシュになっています。
そのハッシュの2桁、次の2桁、その次の2桁を階層の深いサブディレクトリにして、その下にハッシュのファイル名で置かれています。
しかし、ファイルハンドリング用にAPIが用意されているはずですから、扱いは容易だと思います。
私のノートPC内のubuntuで動かしているmoodle2.0devのmoodledataのディレクトリ構造です。
akiyama@akiyama-laptop:~$ sudo ls -l /var/moodledata/m20
合計 32
drwxrwxrwx 2 www-data www-data 4096 2009-01-06 16:43 1
drwxrwxrwx 2 www-data www-data 4096 2009-01-06 16:13 cache
drwxrwxrwx 2 www-data www-data 4096 2009-01-06 17:59 environment
drwxrwxrwx 5 www-data www-data 4096 2009-01-06 19:59 filedir
drwxr-xr-x 3 www-data www-data 4096 2008-09-21 20:29 lang
drwxrwxrwx 2 www-data www-data 4096 2009-01-06 19:56 sessions
drwxrwxrwx 3 www-data www-data 4096 2009-01-06 17:59 temp
drwxrwxrwx 2 www-data www-data 4096 2009-01-06 15:59 upgradelogs
akiyama@akiyama-laptop:~$ sudo ls -l /var/moodledata/m20/filedir/
合計 16
drwxrwxrwx 3 www-data www-data 4096 2009-01-06 19:57 da
drwxrwxrwx 3 www-data www-data 4096 2009-01-06 19:57 e7
drwxrwxrwx 3 www-data www-data 4096 2009-01-06 19:59 eb
-rw-rw-rw- 1 www-data www-data 168 2008-09-30 06:28 warning.txt
akiyama@akiyama-laptop:~$ sudo ls -l /var/moodledata/m20/filedir/da/
合計 4
drwxrwxrwx 3 www-data www-data 4096 2009-01-06 19:57 39
akiyama@akiyama-laptop:~$ sudo ls -l /var/moodledata/m20/filedir/da/39/
合計 4
drwxrwxrwx 2 www-data www-data 4096 2009-01-06 19:57 a3
akiyama@akiyama-laptop:~$ sudo ls -l /var/moodledata/m20/filedir/da/39/a3/
合計 0
-rw-rw-rw- 1 www-data www-data 0 2009-01-06 19:57 da39a3ee5e6b4b0d3255bfef95601890afd80709

Minoru Akiyama への返信

Re: moodle2.0devではファイルの扱いが素晴らしくよくなりましたね

- Minoru Akiyama の投稿
秋山@eラーニングサービスです

このやり方は、Bbと同じですね。サブディレクトリにはしていませんけど、、。
井上さんの方が良く知ってらっしゃると思いますが、いかがでしょう?
Minoru Akiyama への返信

Re: moodle2.0devではファイルの扱いが素晴らしくよくなりましたね

- Haruhiko Okumura の投稿
秋山さん,ありがとうございます。おもしろそうですね。

Expected mid 2009. ということですから,あちらの新学期に間に合うように出すつもりでしょうか。こちらの新学期は無理っぽいですね。
Haruhiko Okumura への返信

Re: moodle2.0devではファイルの扱いが素晴らしくよくなりましたね

- Minoru Akiyama の投稿
秋山@eLSです

うちで開発した下記のプラグインを2.0対応にすることを考えようと思います。
・catモジュール(1パラメータロジステッィクモデルのアダプティブテスト)
・tdapブロック(項目応答理論[Raschモデル]でテスト結果を分析するツール)
・時計ブロック(Flashで作ったサーバ時計)
・階層Webページ(階層構造を持つWebページ)リソースタイプ
・リソース参照リソースタイプ(ロールを付与されたコースのリソースを参照できる)
・リソース複製リソースタイプ(ロールを付与されたコースのリソースを複製できる)≒インポート
・ダウンロード/アップロード機能付き出席ブロック
・Myコース(My moodle)設定ブロック
・Flash question type(Word Order question)
・E-Editブロック(語彙使用頻度別レベル判定機能付きQuestionエディタ)
・J-Editブロック(語彙・漢字の級別レベル判定機能付きQuestionエディタ)
・一括ダウンロード機能付き課題モジュール
Minoru Akiyama への返信

Re: moodle2.0devではファイルの扱いが素晴らしくよくなりましたね

- Tatsuya Shirai の投稿

なるほど,なるほど.

でもそうなると,コッソリとサーバ側でファイルをアップロードするのが難しそうですね^^;

(たとえば制限に引っ掛かるような大きなファイル)

Tatsuya Shirai への返信

Re: moodle2.0devではファイルの扱いが素晴らしくよくなりましたね

- Minoru Akiyama の投稿
秋山@eLSです

WebDAVが使えるようです。
mdl_webdav_locksというテーブルがありますね。
リポジトリにもいくつかの種類があって、WebDAVやSMBなど色々あります。
これがリソースとして使えるのかどうかは未だ調べていません。
Tatsuya Shirai への返信

Re: moodle2.0devではファイルの扱いが素晴らしくよくなりましたね

- Haruhiko Okumura の投稿
じつは大量のデジカメ写真をいっぺんにアップロードしたいと持ち込まれて,こっそりサーバに直接アップロードしてしまったことがありましたが,そういう手が使えなくなるのは痛いですね。
Haruhiko Okumura への返信

Re: moodle2.0devではファイルの扱いが素晴らしくよくなりましたね

- Tatsuya Shirai の投稿

 秋山さんの例では,moodledata/m20とありますが,このm20はいままでのコースidによるフォルダに相当すると考えて良いのでしょうか?

 いままではmoodledataの下にコースidのフォルダがあり,そのフォルダ内にmoddata, backupdataのフォルダと,あとはコースファイルがある意味無秩序に同列で存在していた.これを改めて,filedir以下にコースデータ(moddataやbackupdataも?)を保存するようになった?

 旧来の”無秩序なコースファイル”をfiledir以下に移行する機能がupgrade時だけでなく,いつでも使えるのであれば,m20の下にシステムで規定したフォルダ名以外のフォルダやファイルを発見すると「filedir以下に移動する」コマンドで移動できるとか.そして移動しないでもいままで通りにファイルやフォルダをファイルエディタやHTMLエディタ,Wikiなどのリンク,サードパーティ製ブロックなどから意識することなく同等に扱える(その場合には多少のパフォーマンスの犠牲やファイル所有者の情報が欠けることによる機能の制限がある)のであれば,サーバ上でファイルをコピーする緊急措置を取る事ができますね.

 m20はコースidではない,となると,特定のコースのコースデータにサーバ上でファイルをコピーする手は使えないですね.”新しいファイルの管理方法の方が安全かつ多機能・高性能だけれど,旧来の方法にも互換性があるよ!”だと良いですね.

#Moodle2.0Devのテストは3月まで無理そうです.
#でも,うまくすればfs_moodleの役割が終了しそうですね!

Tatsuya Shirai への返信

Re: moodle2.0devではファイルの扱いが素晴らしくよくなりましたね

- Minoru Akiyama の投稿
秋山@eLSです

m20は、複数のMoodleをインストールしているので、そのインスタンスの名前として付けています。
$CFG->dataroot = '/var/moodledata/m20';

Minoru Akiyama への返信

Re: moodle2.0devではファイルの扱いが素晴らしくよくなりましたね

- Tatsuya Shirai の投稿

 Using moodleのフォーラム(backup and restore?)で,Moodle2.0(とPHP5.2.8)では2GBを越えるような大きなバックアップも取り扱えるようなことが書かれていました(読み間違えかも).本当でしょうか?

 zip書庫を作成するライブラリがバイナリのモジュールのようなもので供給されているのか,PHPが2GBを越えるファイルをらくらく扱えるようになったのか,その辺り,調査不足です.


PHP5.2.7のchange logに,

Fixed read or write errors for large zip archives. (Pierre)

とありますね.これかな.

http://www.php.net/ChangeLog-5.php

Tatsuya Shirai への返信

Re: moodle2.0devではファイルの扱いが素晴らしくよくなりましたね

- Minoru Akiyama の投稿
秋山です

moodle2.0のシステムパスの設定のzipとunzipのパスの設定がなくなっています。
だからPHPで全て処理しているのだと思います。
Minoru Akiyama への返信

Re: moodle2.0devではファイルの扱いが素晴らしくよくなりましたね

- Tatsuya Shirai の投稿

 PHP5.2.7は短命だったようですね...
 change log の"Fixed read or write errors for large zip archives"をキーワードにして探してみましたが,全く情報が出ていません.どういう手段で代替したのか知りたいところですね.

 zipとunzipのパスの指定が残っていれば,zipの代わりにlha等を使うという変則技を残せたのかも知れないと思うと残念ですねぇ.