« 2008年12月 | トップページ | 2009年2月 »

2009年1月27日 (火)

情報倫理デジタルビデオ小品集3の申込URL

取り扱っている三友株式会社のサイト構成が変わったので、URLも変わりました。簡単ですがお知らせです。

| | コメント (0) | トラックバック (0)

2009年1月25日 (日)

「USBメモリー経由のウイルス感染、大学で猛威振るう」の記事

昨年4月、ある知合いの先生から、「3月にあちこちの学会で講演をしていたら、PCがウイルスに感染しちゃったんだよね。なぜだと思いますか?」という質問をききました。さっそく調べてみたところ、どうも、USBメモリーを介してウイルスが伝播しているようだということがわかりました。その後、9月にも同じ話がでてきて、そして1月にも出てきました。8月には学会が多く、12月には学生からUSBメモリーを預ることも多いわけで、そのあとに感染が増えているということだと思います。

で、そんな大学の状況を伝える記事が、2009年1月24日付読売新聞夕刊と、Yomiuri OnLine(YOL)に掲載されました。ここでは 新聞、YOL ではおそらく紙面の制約上掲載されなかったであろうことについて、補足説明?をしておきます。

★「コンピューターウイルス対策ソフトを最新のものにアップデートしておけばいい」と誤解している人が多い

まず、昨今はウイルス対策ソフトもフリーのものも含めて普及し、OSやウイルス対策ソフトのアップデートをしている人も増えているのに、それでもコンピューターウイルス感染事例が報告されました。実は、今回の「Autorun」は、有名なウイルス対策ソフトでは発見・駆除できない期間が相当長くありました。その時期と大きな学会が多い時期が重なっていたことが、このウイルスの感染拡大を食い止められなかった理由の一つでしょう。また、今回のウイルスは亜種による変異が多く、同種のウイルスの一部を検知できても他を検知できないということもありました。

他には、PDF や Flash の脆弱性を利用したウイルスもあります。これらは OS とウイルス対策ソフトのアップデートでは対応できないので、別途注意をしておく必要があります。

★「コンピューターウイルスはネット経由で感染」と誤解している人が多い

「最近のコンピューターウイルス感染の多くは、電子メールに添付されたファイルからである」という神話が、いまもまだ流れています。つい先日も、ある企業の営業さんからそういう説明をききました。でも、現実はそうではないですね。他の経路もたくさんあるのです。

USBメモリー経由のウイルス感染は、昔流行ったフロッピーディスク経由を思い出させます。また、ネットワークドライブ経由というのもありますよね。また、メール以外だと、webブラウザが拾ってくる場合、メッセンジャーが拾う場合、リモートアシスタンスが拾う場合なども考えられます。さらに「繋いでいるだけで感染するWORMを拾う場合」もあります。また、パソコンでなくサーバーになるとさらにアタックの危険は高まります。他に、購入したソフトウェアが入っているCD-ROMから感染ということもあります。

どれが多いかという議論・結論自体が、無意味だと思います。それをいうと、その部分だけの対策で済ませる人がでてくるからです。この辺の誤解が、結果として対策を怠らせていると思います。

★「自動再生を止めておけばいい」と誤解している人が多い

まず、Windows XP/Vistaには「自動再生(AutoPlay)」と「自動実行(AutoRun)」があります。前者は、ポータブルデバイス・リムーバブルデバイスにリッチコンテンツ(音声や動画や静止画)が入っている場合、利用者の確認なしに表示する機能です。後者は、同じ種類のデバイスに入っているプログラムを、そのデバイスが接続されたら実行するものです。ときどき「オートランウイルス対策には自動再生を無効にすればよい」と書いている人がいますが、これは完全な誤解。自動実行を無効にする必要があります。また、リッチコンテンツにウイルスが入っている可能性も否定できないので、自動再生も無効にする必要があります。

でも、これだけでは完璧ではないのです。実は、アプリケーションソフトやフリーソフトの中には、インストールすると、自動実行や自動再生をこっそりと有効にするものがあります。さらに、OSの自動実行・自動再生の機能を利用しない代わりに、別のソフトを常駐させて、USBメモリなどの接続状況を監視して、差し込まれたらすぐに中身を見に行くというものもあります。この辺を全部止めないといけないのです。

★「おすすめ設定が安全だ」と誤解している人が多い

メーカーお勧めの初期設定は安全だと誤解している人が、あいかわらず多いようです。例えば、ファイル一覧を見ようとして、フォルダをクリックすると、左下に「プレビュー」がでるように設定されているのが初期設定ですが、これは大変危険です。感染ファイルを消そうとファイルアイコンをポイントした途端にプレビューが動作して感染したという例もあります。フォルダオプションから「クラシック表示」にしておくべきでしょう。今回のケースの場合は、「登録された拡張子は表示しない」「保護されたオペレーティング システム ファイルを表示しない」あたりは初期設定のままにしておいては発見や対応ができなくなります。


ということで大変面倒なのですがオートラン感染を疑われるPCの場合の対応方法を作ってみました。 間違いがあったら教えてください。

PCにいるウイルスを駆除する

まず、当該PCはネットから外しておいてください。

[1] hostsファイルの確認
  1. 当該PCの
    C:\Windows\system32\drivers\etc\hosts
    をメモ帳で開く。
    127.0.0.1 localhost

    の下に大量のブランク行、さらにその下に著名ウイルス対策ソフトアップデートホストに関する記述があれば、確実に感染している。(ブランク行がないと感染していない、ということはない。)

  2. ブランク行の下を全部削除する。(127.0.0.1 の行は残す)
[2] avast! 4 を入手

未感染のPCを使って「avast! 4」のファイルを入手する。他にも 「Avira AntiVir」や、「AVG FreeEdition」なども検討していいと思います。

[3] 当該PCに入っているウイルス対策ソフトを、いったんアンインストールする。

「プログラムの追加と削除からアンインストールができない場合は、手動アンインストールで対応する。手動アンインストールの方法は別のPCから調べるしかない。

[4] 駆除

当該PCに「avast! 4」をインストールする。rebootすると Windows がセーフティーモードで起動して、 avast! 4 が汚染ファイルを見つけて駆除してくれます。(約1時間かかります。)

[5] いじられた設定を戻す
  1. スタート→「ファイル名を指定して実行」→「regedit 」をタイプしてレジストリーエディタを起動する。起動できないときはレジストリー復活ツールをダウンロードして入れる。
  2. そのあと、
    HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT
    をたどる。その下に 「SystemRestore」というサブキーがあり、 それをクリックして右の窓を見ると「DisableConfig」と言うのがある。 その「DWORD 値」で「1」になっていたら、そのサブキーごと削除する。 この時に「DWORD 値」で「0」でも システムの復元がグループポリシーで無効に設定にはなる事もある。
  3. いったん、PC再起動する。
  4. マイコンピュータ上で右クリック→プロパティ→システムの復元→すべてのドライブでシステムの復元を無効にする
  5. また、PC再起動する。
  6. スタート→「ファイル名を指定して実行」→「gpedit 」をタイプして、gpedit.msc を起動
  7. 「コンピュータの構成\管理用テンプレート\システム\自動再生機能をオフにする」→プロパティを開く(ダブルクリック)→「自動再生機能をオフにする」で「すべてのドライブ」を選択→有効をチェック→OKをクリック
  8. またまた、PC再起動する。
    C:\Program Files\Alwil Software\Avast4\DATA\report\aswBoot.txt
    に、ブート時スキャンの記録が残っています。それの一番下に 0 と出ていればOkです。 (圧縮ファイルの中をチェックするようにすると、書庫が壊れていてチェックできないという記録も残っています。それはスルーしてください。)

今後の感染防止対策
[1] 次の手順にしたがって作業をする。
[2] 拡張子を常に表示するようにする
  1. スタート→「ファイル名を指定して実行」→「regedit 」をタイプしてレジストリーエディタを起動する。
  2. メニューの中の「編集」→「検索」を選び、検索語に NeverShowExt を入力する。
  3. 見つかったら、 DELキー を使って削除を選ぶ。
  4. そのあと、F3 を押すと、次の NetShowExt が見つかる。これも削除。
  5. 同じことを繰り返して、すべてのNeverShowExtを削除する。
[3] 次のページを見て、自動実行をOFFにする。

USBメモリから問題のファイルを削除する
[1] マイコンピュータを開く
  1. ツール→フォルダオプション→表示→詳細設定→「保護されたオペレーティングシステムファイルを表示しない」のチェックをはずす。→Ok
  2. マイコンピュータを開いたままにしておく
  3. 念のためSHIFTキーを押しながら 疑わしいUSBメモリ をさす。USBメモリがドライブとして認識されたらSHIFTキーを離してもよい。
  4. ドライブの上で右クリック→ウイルス対策ソフトで検査
  5. 感染が見つかったら「チェストに移動」などを選ぶ。
[2] 再発防止のための工夫
  1. スタート→「ファイル名を指定して実行」→「 cmd 」をタイプして、以下のコマンドをタイプする。

    (★以下、USBメモリが E: の場合です。)

    E:
    cd \
    attrib -r -h -s autorun.inf
    del autorun.inf
    md autorun.inf
    cd autorun.inf
    md nokill..\
    cd ..

    最後の4行は再発防止のために「感染ファイルと同名で、かつ簡単には消せないフォルダ」をつくる作業です。

  2. またまた、PC再起動する。
  3. 他のドライブ(HDD(C:)なども含める)でも、autorun.infという名前のディレクトリを作って、さらに削除が難しいように設定するといいようです。(この辺、検証できてない…)
    E:
    cd \
    md autorun.inf
    cd autorun.inf
    md nokill..\
    cd ..

以上です。間違いがあったら教えてください。

| | コメント (1) | トラックバック (0)

2009年1月22日 (木)

「情報科教育法」(オーム社)の改訂

御購入予定の方は、2月25日の記事を御覧下さい。


高等学校の情報科の教員免許を大学で取得するために使う大学生用の教科書(あぁ、なんだかややこしい)である「情報科教育法」という本を、僕も含めて5名で出版してから8年が経ちました。お蔭様で、いわゆる理科系の大学・学部における情報科教員養成の教科書としてスタンダードとなりました。とはいうものの、本の内容はどんどん古く見えてくるものです。また、2007年秋には「2008年度前半に新しい学習指導要領も発表される」という発表もありました。

そこで2007年12月、久野先生と僕で、この本の改訂作業に着手することになりました。単に時代に合わせて書き直すだけでなく、追加すべき項目もあるはず…ということで案を練り、結果として新たに5名の方に著者として加わって頂き、10名の共著という大変豪華な本を作ることになりました。共著者が10名もいまると、通常は意思統一が大変なのですが、そこは今回は極めて順調でした。

この本の執筆で一番大変だったのは、高等学校の新学習指導要領が当初の予定通りに公表されないことでした。実際には、昨年夏の時点でほとんどの章の原稿案は脱稿を迎えており、その気になれば昨年11月には出版できる状態でした。これは、当初「2008年前半には高等学校の新学習指導要領を決める」という文部科学省の発表に合わせていたからです。ですが、世の中はそんなにうまく動かないものです。結果として、新学習指導要領は5ヶ月ほど遅れることになりました。

そこで私たちは、新学習指導要領に関する部分だけはページ数を決めた上で白紙とし、他の部分について念入りに校正をして準備をしました。2008年12月22 日、高等学校の新学習指導要領が発表されるやいなや、この章を担当される中野先生が電光石火の勢いで書き上げてくださいました。その後、年末・年始をかけて監修作業を行ない、先日やっと最終脱稿となりました。

そんな作業を経たこの本、書誌情報と発売日などが決まりましたので、目次も含めて公開します。また、本書を教科書としてご検討いただけます先生には「採用検討用見本」として献本させていただきます。希望される方は私宛に御連絡ください。

  • 情報科教育法(改訂2版)
  • 久野 靖 / 辰己 丈夫 監修
  • オーム社・A5判・240頁・定価2,520円(税込)
  • ISBN:978-4-274-20664-1
  • 発売予定:2009年2月20日発売日:2009年2月24日
  • URL: http://ssl.ohmsha.co.jp/cgi-bin/menu.cgi?ISBN=978-4-274-20664-1
  • 執筆者
    • 久野 靖(筑波大学)
    • 辰己 丈夫(東京農工大学)
    • 大岩 元(帝京平成大学)
    • 小原 格(東京都立町田高校)
    • 兼宗 進(一橋大学)
    • 佐藤 義弘(東京都立東大和高校)
    • 橘 孝博(早稲田大学高等学院)
    • 中野 由章(千里金蘭大学)
    • 西田 知博(大阪学院大学)
    • 半田 亨(早稲田大学本庄高等学院)
  • 目次
    •   序章 情報科教育法とは(久野)
    •  第1部 情報科とは
    •    1章 情報科の成立(橘)
    •    2章 新学習指導要領における情報教育(中野)
    •  第2部 情報活用の実践力の指導法
    •    3章 情報活用の実践力の指導法(中野)
    •  第3部 情報の科学的な理解の指導法
    •    4章 情報の科学的な理解の指導法(兼宗)
    •    5章 問題解決とモデル化・シミュレーションの指導法(辰己)
    •    6章 アルゴリズムとプログラミングの指導法(西田)
    •    7章 情報検索とデータベースの指導法(久野)
    •  第4部 情報社会に参画する態度の指導法
    •    8章 情報モラル・情報倫理の指導法(辰己)
    •    9章 メディアリテラシーの指導法(橘)
    •   10章 情報通信ネットワークとコミュニケーションの指導法(久野)
    •   11章 情報システムと社会の指導法(兼宗)
    •  第5部 情報科の教員として
    •   12章 総合的な学習の時間との協調(半田)
    •   13章 コラボレーションとプレゼンテーション(半田)
    •   14章 評価の工夫(小原)
    •   15章 学習指導案の作成(小原、佐藤、橘)
    •   16章 情報科とプレゼンテーション(佐藤)
    •   17章 授業形式の実習(橘)
    •   18章 これからの情報科教育(大岩)
    •  第6部 情報(処理)教育に必要な知識
    •   19章 情報の表現と発信(久野)
    •   20章 ソフトウェア制作から見た情報教育(大岩)

| | コメント (1) | トラックバック (0)

2009年1月21日 (水)

FreeBSD に Moodle 1.9 を新規インストール

前回の作業の結果を別の観点で見ると、「Moodleを入れていない FreeBSD ユーザでも、こうすればインストールできる…」というのが見えてきました。さらに FreeBSD の Ports には Moodle があり活用しない手はありません。ということで、今度は標準的な FreeBSD のインストール状態からの Moodle 1.9 立ち上げを書いておきます。なお、この記述は日本国内では利用者が多いPostgresql を使用する場合です。MySQLの場合は奥村先生のWiKiを御参照ください。

なお、FreeBSDやUnixに詳しくない人は、コマンドをみてすぐに実行せずに、一度最後まで読んで理解し、わからないコマンドは、検索して他の人の説明で意味を理解するなどの十分な準備をしておいてください。

以下の内容は僕専用の備忘録です。掲載直後はバグ、書き間違い、忘れていることも多数あると思いますので、わかっている人以外は真似をしないでください。また、間違いなどがありましたら、御指摘大大大大大歓迎です。
●準備

まず、次の条件を満たすホストを構築してください。通常、FreeBSDをWebサーバに使っていれば標準的だとは思います。

  • FreeBSD-6.x 以上 (7.xでもOK)
  • Ports から Apache 2.0 以上を導入済。(以下の例では Apache 2.2)
  • http:///your-web-site.example.jp/moodle/ は、 /usr/local/www/data/ に対応(Portsの標準位置)
  • PHP-5.x を導入済。
●Postgresql用のユーザ作成

まず、 sysinstall を使って、DBの操作権限をもつアカウント pgsql を作ります。

% su
# sysinstall
(Configure → User Management → Add User)

pgsql の home は、どこでもいいですが、今回は /home/pgsql としておきます。

●Postgresql-8.1 の導入

DB を導入しましょう。

/usr/ports/database の下を見るとたくさんのバージョンがあって悩みますが、Moodle 1.9 を安定して動かせるのは 8.1.x です。8.2以上ではエラーがでます。

# cd /usr/ports/databases/postgresql81-server
# make install

導入がおわったら、いつもの /etc/rc.conf に動作環境を設定します。この例では DB を /home/pgsql/data の下に作ります。運用をすると容量が大きくなるので注意。

# echo postgresql_class=\"postgres\" >> /etc/rc.conf
# echo postgresql_data=\"/home/pgsql/data\" >> /etc/rc.conf
# echo postgresql_initdb_flags=\"--encoding=UTF8 --lc-collate=C \" >> /etc/rc.conf
# echo postgresql_enable=\"YES\" >> /etc/rc.conf
# mkdir /home/pgsql/data
# chown pgsql /home/pgsql/data

環境設定がおわったら、DBの初期化をし、そしてDBのデーモンを起動します。

# /usr/local/etc/rc.d/postgresql initdb
# /usr/local/etc/rc.d/postgresql start

次に、Moodle用の DBの雛型を構築します。ここで、moodleuser というのは、Unixのアカウント pgsql が、DB に接続するときの DBサーバへに対するユーザ名です。また、p-a-s-u-w-a-d-o は、その際のパスワードです。p-a-s-u-w-a-d-o の部分は、自分で好きなものにしてください。

# su - pgsql
% psql -c "create user moodleuser createdb;" template1
% psql -c "alter user moodleuser password 'p-a-s-u-w-a-d-o';" template1
% psql -c "create database moodle16;" -U moodleuser template1
% psql -c "alter user moodleuser nocreatedb;" template1
% psql -l (←出来たかどうかの確認)
% exit
●Moodle 1.9 を用意する

まっさらから入れるので Ports を使います。

# cd /usr/ports/www/moodle
# make config
(PGSQL にチェックをつけます。)
# make install

これで Moodle-1.9.x がインストールされます。

●データディレクトリの退避

Moodleを動作させると、大きく2つのディレクトリが作成されます。

Moodleのプログラムとコンフィグファイル
/usr/local/www/moodle
Moodleのコースデータ
/usr/local/www/moodledata

このうち、コンフィグファイルは1つしかない(しかも非常に小さい)ので、前者のディレクトリは運用をしていっても容量が増えません。一方、後者のディレクトリは運用をすると容量が増えていきます。また、FreeBSDの場合は deinstall をすると、このディレクトリがどちらも消去されます。アップグレードのときなどにトラブルになる可能性もあります。そこで、後者のディレクトリを退避させておきます。

# mkdir /home/moodledata
# chown www:www /home/moodledata
# cd /usr/local/www
# mv moodledata moodledata.orig
# ln -s /home/moodledata
●Apacheの設定変更

まず、php5-pgsql を入れます。

# cd /usr/pors/lang/php5-extensions
# make config
(MBSTRING と PGSQLにチェックをつける)
# make install

次に、httpd.conf に、Moodle 対応をします。以下の内容を httpd.conf に追加します。追加場所は、最後でいいと思います。

   Alias /moodle /usr/local/www/moodle/
   AcceptPathInfo On
   <Directory /usr/local/www/moodle>
      AllowOverride None
      Order Allow,Deny
      Allow from all
   </Directory>
   <Directory /usr/local/www/moodledata>
      AllowOverride None
      Order Allow,Deny
      Deny from all
   </Directory>

おわったら、apacheを再起動します。

# /usr/local/etc/rc.d/apache22 restart
●初期設定

Moodleの設定は、webで行ないます。

  1. http:///your-web-site.example.jp/moodle/ にアクセスしてください。
  2. 言語設定は「日本語(ja)」
  3. ウェブアドレスは http:///your-web-site.example.jp/moodle/
  4. データディレクトリは、 /usr/local/www/moodledata (←注意)
  5. データベースの指定
    • タイプは PostgreSQL(postgres7) です。7と書いてありますが大丈夫。
    • ホストサーバー: localhost(defaultのまま)
    • データベース: moodledb です。(この記事の上の方で作成したときの名称)
    • ユーザ: moodleuser
    • パスワード: p-a-s-u-w-a-d-o
    • テーブル接頭辞: mdl_ (defaultのまま)
  6. サーバーチェックのときに openssl について苦情をいわれるかも知れませんが、無視していいです。
  7. 言語パックのダウンロードで、「日本語(ja)」言語パックをダウンロードしてください。
●Cron登録

Moodleは daemon ではないので、定期的にメール配送などをするきっかけを必要とします。通常は cron に以下の内容を設定します。(メール配送などは10分間隔にする場合)

*/10 * * * * /usr/bin/fetch -q -o /dev/null http:///your-web-site.example.jp/moodle/admin/cron.php

実際には、上記の1行を書いたファイル(/tmp/crontab-moodle)を用意しておいて、

# cd /tmp
# crontab -l > crontab.now
# cat crontab.now crontab-moodle > crontab.new
# crontab crontab.new

とすればよいでしょう。これでインストール完成です。

●運用

運用をすると容量が変化するディレクトリは、次の2つです。

  • /home/pgsql/data
  • /home/moodledata

これらのバックアップをとっておく必要があります。

  1. Postgresql のバックアップは、次のようにしてとっておきましょう。
    # su - pgsql
    % pg_dump -Ft moodledb | gzip -c > moodledb.tar.gz

    moodleのDBが飛んでしまったときは、apacheを止め、次のコマンドで、それ以前に取ってあったDBをリストアします。

    # su - pgsql
    % psql -l (DBの名前を確認)
    % dropdb moodledb (←大変危険なコマンドなので超注意)
    % psql -l (壊れたDBが消えたことを確認)
    % psql -c "alter user moodleuser createdb;" template1
    % psql -c "create database moodledb with template template0;" -U moodleuser template1
    % psql -c "alter user moodleuser nocreatedb;" template1
    % psql -l (←出来たかどうかの確認)
    % gzip -dc < moodle.tar.gz | pg_restore -d moodledb
  2. moodledataのバックアップは、普通に Unix 的な方法で取っておきましょう。
  3. また、Moodle自体にコースバックアップの機能があります。これを使うと、各コース毎にバックアップが作成されます。
    /home/moodledata/(コース番号)/backupdata/backup-コース名-年月日-時刻.zip

    このファイルをどこかに保管しておいて、コースが壊れたときにMoodleのコース設定画面からリストアをすることで復活させることもできます。


とりあえず以上です。間違いがあるかも知れないので、御指摘大歓迎です。

| | コメント (0) | トラックバック (0)

2009年1月19日 (月)

Moodle 1.5/EUC-JP/Postgres をバージョンアップする方法(作業内容編)

以下の内容は僕専用の備忘録です。掲載直後はバグ、書き間違い、 忘れていることも多数あると思いますので、わかっている人以外は真似をしないでください。 また、間違いなどがありましたら、御指摘大大大大大歓迎です。

経緯などは前の記事に記しました。ここでは作業内容をまとめておきます。

●移行直前の状況
  • FreeBSD-5 STABLE
  • Apache 2.2
  • Postgresql-8.2 (DB は 7.4 のファイルが無理矢理突っ込まれている。)
    • DBは、psql -l でみると、SQL_ASCII で構築されている。
  • PHP-5.x
  • Moodle 1.5.x (EUC-JP)
●1.5→1.6 の作業手順
  1. 別のホストに Moodle 1.6 を入れる準備をする。
    • FreeBSD
    • Postgresql-8.1.x を入れる。 8.2以上では Moodle がエラーを出すので注意。
      # su
      # cd /usr/ports/databases/postgresql81-server
      # make install
      # mkdir -p /home/DB/data
      # chown -R pgsql /home/DB
      # echo postgresql_class=\"postgres\" >> /etc/rc.conf
      # echo postgresql_data=\"/home/DB/data\" >> /etc/rc.conf
      # echo postgresql_initdb_flags=\"--encoding=UTF8 --lc-collate=C \" >> /etc/rc.conf
      # echo postgresql_enable=\"YES\" >> /etc/rc.conf
      # /usr/local/etc/rc.d/postgresql initdb
    • DBの雛型を構築する。p-a-s-u-w-a-d-o の部分は、自分で好きなものにしてください。
      # su - pgsql
      % psql -c "create user moodleuser createdb;" template1
      % psql -c "alter user moodleuser password 'p-a-s-u-w-a-d-o';" template1
      % psql -c "create database moodle16;" -U moodleuser template1
      % psql -c "alter user moodleuser nocreatedb;" template1
      % psql -l (←確認コマンド)
      % exit
    • 次に Apache 2.2 と PHP-5.x さらに php5-extensions を入れる。Postgres の前に入っていた場合は、 make config をして作りなおして、 Postgres 用のモジュールを追加しておく。
    • 作業用に nkf, iconv, convmv の3つをすべて入れておく。
  2. Moodle 1.6 を入れる
    • http://download.moodle.org/ から Moodle 1.6をダウンロード。
    • こんな感じで解く。(以下では /home/WWW がwebサイトのルートになると仮定しています。)また moodle-16dataというディレクトリを準備しておく。
      # cd /home/WWW/WORK
      # tar xzfvBp /DOKOKA/moodle-weekly-16.tgz
      # mv moodle moodle-16
      # chown -R www moodle-16
      # mv moodle-16 ..
      # cd /home/MOODLEDATA
      # mkdir moodle-16data
      # chown www moodle-16data
    • http:///web.site-no-URL.example.jp/moodle-16/ にアクセスして、設定する。
      • 途中の設定:データディレクトリ(/home/MOODLEDATA/moodle-16data)、DBの名称(moodle16)、DBユーザー名(moodleuser)、DB接続パスワード(p-a-s-u-w-a-d-o)には気をつける。
    • インストールが済んだら、最初に一度だけフロントページでバックアップ作業をして、作業用ディレクトリを作っておく。
  3. Moodle 1.5からコースをすべて移行させる
    • Moodle 1.5でコースごとにバックアップを作る。
    • (★) (a) Moodle 1.6の 作業用ディレクトリに、さきほどのバックアップを解く。
    • (b) moodle.xml の文字コードを直す
    • (c) 非ASCII文字のファイル名をもつファイルの名前を変更する。
    • (d) 再び zip に固める。
    • (e) 固めたファイルを Moodle 1.6 の moodledata/1/backupdata/ におく。(★★)
    • Moodle1.6の「リストア」メニューを利用して、さきほどのバックアップをリストアする。
      (うまくいかないときは、ログのリストアなどいくつかのリストアをあきらめてください。)
    • この作業を、移行させたいすべてのコースについて繰り返す。

    以下、★のあと★★までのコマンドヒストリー。

    a# mkdir ~/WORK
    a# cd WORK
    a# unzip dokokano-dir/backup-hogehoge.zip
    b# mv moodle.xml ../moodle.xml.latin1eucjp
    b# cat ../moodle.xml.latin1eucjp\
        | iconv -f UTF-8 -t latin1\
        | nkf -x -I -m0 -e\
        | iconv -f EUC-JP -t UTF-8\
        > moodle.xml
    c# convmv -r -f latin1 -t utf-8 .
     (↑で作業内容を確認してから、これ↓で反映)
    c# convmv -r -f latin1 -t utf-8 . --notest
    d# zip -r ../backup-hogenew.zip .
    d# rm -fr c* g* m* u* ../moodle.xml.latin1eucjp
    e# cd /home/MOODLEDATA/moodle-16data/1/backupdata
    e# mv ~/backup-hogenew.zip .
●1.6→1.9の作業手順
  1. Moodle 1.9 用のDBを、1.6用のDBの複製で作る。(元のDBが移行中に壊れるとヤバイので…)
    # su - pgsql
    % pg_dump -Ft moodle16 > moodle16.tar
    % psql -c "alter user moodleuser createdb;" template1
    % psql -c "create database moodle19 with template template0;" -U moodleuser template1
    % psql -l
    % psql -c "alter user moodleuser nocreatedb;" template1
    % pg_restore -d moodle19 < moodle16.tar
    # exit
  2. Moodle 1.9 を用意する。
    • http://download.moodle.org/ から Moodle 1.9をダウンロード。
    • こんな感じで解く。また moodle-19dataというディレクトリを準備し、1.6の内容を複製しておく。
      # cd /home/WWW/WORK
      # tar xzfvBp /DOKOKA/moodle-weekly-19.tgz
      # mv moodle moodle-19
      # chown -R www moodle-19
      # mv moodle-19 ..
      # cd /home/MOODLEDATA
      # mkdir moodle-19data
      # chown www moodle-19data
      # rsync -avH ./moodle-16data/ ./moodle19data/
    • http:///web.site-no-URL.example.jp/moodle-19/ にアクセスして、設定する。
      この際に、データディレクトリや、DB名は、新しいものを指定する。
    • 教師用フォーラムなども含めてほぼ全部が変換・移行される。

| | コメント (0) | トラックバック (0)

Moodle 1.5/EUC-JP/Postgres をバージョンアップする方法(経緯と奮闘編)

●きっかけ

現在、僕が管理している moodle をおいてあるサーバーですが、個人情報の管理についても「サーバー室にあるので、他のサーバーと同じ程度に安全」なのですが、実はディスク溢れ(ログ領域)を数回やってまして、また、データベースファイルにも一部不整合がある…ということで、moodleのバージョンアップをすることにしました。

しかし、これが全然簡単ではない。まず、自分が管理しているmoodleのDBファイルのエンコーディングがどうなっているか、設定した自分でも完全に把握できでなかったのです。というのも、このmoodleを構築したのは、Moodle 1.5 がでた直後のこと。当時は Moodle の非ヨーロッパ系言語対応は活発でなく、DBのエンコーディングについても、あちこち調べないと情報をまとめられないという状況でした。また、世界的にはメジャーな組合せは Linux, Apache, MySQL, PHP ですが、我がサーバーは FreeBSD, Apache, Postgresql, PHP の組合せ。他に、WiKiも一緒のサーバーで動かす必要もありました。当時utf-8の編集環境が整っていなかったこともあり、Moodle, DBともに EUC-JP で統一して作ってあったのでした。時代はあれから4年が過ぎ、Moodleも 1.5→1.6→1.7→1.8→1.9と上がっていきました。1.6のときに、標準はUTFとなり、1.7でロールやフォーラムの構成が大きく変わり、1.8ではAJAXっぽい動作もはいり、現在の1.9は安定性が重視されています。

●調査

ということで、作業をする立場になっていろいろ調べ始めました。最初に構築したときの構成をまとめておきます。

  • FreeBSD-5STABLE
  • Apache 2.0
  • Postgresql-7.4
    • DBは、psql -l でみると、SQL_ASCII で構築されている。
  • PHP-5.x
  • Moodle 1.5.x (EUC-JP)

で、これで動かしていたのですが、僕があるときに誤って Apache 2.2 にしてしまいました。このときに Moodle がしばらく動作しなくなりました。原因は PHPのバージョン不整合でした。php5-extensions を再構築で、再び動き始めました。で、さらに僕が誤って Postgres を 8.2 にしてしまいました。7.4 の DB を 8.2 にするときに、適切な移行作業をしなかった(pg_dumpしたあといい加減な作業で 8.2 に読ませている)ことが原因で DB がエラーをたくさん出すようになりました。

●最初は通常作業→破綻

で、まず最初に試みたのは「通常のバージョンアップ作業」でした。ですが、7.4のDBを8.2で動かしているので、これを Postgres のどのバージョンに食わせても駄目。駄目な理由がテーブルやコラムの相違、文字コードの違いでした。それで困り果ててしまいました。

●コースバックアップの利用

いろいろ調べると Moodle には、通常のバージョンアップ以外に「バックアップ・リストア」(backup, restore)もあることに気がつきました。幸い、新しいmoodleは別のホストで動かすことになっていたので、先に別ホストに 1.9 を入れて、そこに 1.5 のバックアップをレストアすれば、うまくいくだろう…と思ったのですが、甘い話でした。コース名からして思いっきり文字化け。全然駄目でした。

●文字コード問題

そこで、悩んだ挙げ句の果て、、漢字1文字だけの名前のコースを作って、そのバックアップファイルを解凍して文字コードを調べようとしました。とはいうものの僕は文字コードの知識が不足していて判別できず、最終的に三重大学の奥村先生から「EUC-JPをlatin1のバイト列と見て,それをutf-8に変換したもの」と助けて頂きました。これで解決の道筋が見えてきました。 iconv の2段重ね( iconv -f UTF-8 -t latin1 | iconv -f EUC-JP -t UTF-8)です。これで試しに作ったコースは完璧にリストアできました。

バンザーイと思いながら他のコースを変換してみたところ、こんどはiconvが止まりました。なぜだろう?と od で dump をとって調べてみると、利用者が無理矢理テキスト領域に入れた制御コードでした。そこで、これを止めるために "nkf -x -I -m0 -e" を挟み込むことにしました。これで基本的にはめでたし…です。

●次はファイル名

ところが次なる問題発生。こんどは添付ファイルの名前に非ASCII文字を使用したフォーラムへの投稿があると、そこでファイル名が化けてリストアされるのです。そうか…ファイル名も変更しないとということで convmv の登場です。そして次の壁です。ファイル名も上記と同じように2段の変換が必要ですが convmv は安全指向で作られているので、解釈できない場合は絶対に動作してくれません。今回のファイル名は間違ったエンコーディングで付けられているので、convmvではなおらないということになってしまいました。

ただ、不思議なことに「作業内容編」に記した方法を使うと、ファイル名こそ化けるものの、ちゃんと添付ファイルをダウンロードできるのです。

●教師用フォーラムの消滅

ということで、無事移行できるかと思っていたのですが、さらなる壁がありました。Moodle 1.5, 1.6 には教師用フォーラムというモジュールがあったのですが、 1.7以降にはありません。しかも、バックアップ・リストアをすると教師用フォーラムは消えてしまいます。教師用フォーラムの内容を残すには、通常のバージョンアップ 作業を必要とするのです。(ロールの設定で学生には見えないようにできるので、帰納的には何ら問題ない。)

●三重大バージョンは Postgresql では動かない

ということで1.6まではコースバックアップとリストアを使用し、1.6→1.9は通常のバージョンアップ作業で教師用フォーラムの自動変更をするということで作業をしたのですが、こんどはクイズモジュールのバージョンアップのところで無現ループに入ります。で、これまた奥村先生に見て頂いたのですが、どうも原因不明。ただ「MySQL固有のところでつまづいているかも」というヒントのあと「三重大バージョンは MySQL を前提にしているので、もしかしたらそれが原因かも」というメッセージを頂きました。そこで、公式サイトから 1.9 をとってきて作業をしたら、こんどは最後までバージョンアップできました。僕は尊敬する奥村先生(三重大学)が配布されている「Moodle 三重大バージョン」を使おうとしていたのですが、結果としてそれは Postgresql では無理ということがわかったのでした。

ということで、いままでの作業を、次の記事にまとめます。

| | コメント (0) | トラックバック (0)

2009年1月 6日 (火)

LiveCapture2, Stsrec, 午後のこ〜だ で収録装置を作ってみた

研究の過程で、どうしても18時間程度、連続して撮影・録音を行なう必要が生じました。そこで、画像と音声を長時間記録するソフトウェアについて、いろいろ調べたので、備忘録を兼ねて、ここに書いておきます。内容は「無保証」ですので、この通りにやって何かトラブルが起こっても責任はとれませんけど、それでもいいという人はやってみて下さい。

  1. 映像と音声の両方を長時間記録する

    • 小型のビデオカメラを使用する
    • USBカメラに附属のソフトを使用する
    • 有料のソフトを使用する

    の3通りがあります。僕が調べたところでは、最初の方法と2番目の方法(Logitechのカメラソフトについていた)では、長時間の記録をとると、長時間の巨大なファイルが出来上がります。(3番目の方法は、ソフトを入手しないとわからない。)ファイルがひとつだと、それはそれなりに使い易いのかも知れませんが、なにせ18時間にもなると、1GB程度の大きさのファイルになります。そうなると扱いにくいですね。

  2. 映像と音声を別々の方法で記録する。(映像編)

    映像を記録したり配信したりするソフトウェアとして調べてみたところ、「LiveCapture2」がよいとおもいました。というか、これよりいいものが全く見つからないほど、素晴らしいです。

    いろいろな機能がありますが、例えば「1分間隔で静止画像を撮影」しながら、かつ、「動体検知により10秒動画を撮影」ということもできます。ほかにもスケジュールに合わせて録画を始めたり終らせたりもできます。また、ストリーミングサーバー機能もあります。動画配信もOKです。("LiveCapture2" で検索するとたくさんでてきます。)

  3. 映像と音声を別々の方法で記録する。(音声編)

    映像と比べて、音声の記録ソフトには「決定打」というべきものがありませんでした。

    午後のこ〜だをそのまま利用すると、巨大なファイルになってしまいます。

    RecodingScheduler は、途中のバージョンからMP3作成のためには、別のソフトをコマンドラインで起動し標準入力に流し込むという方法をとるようになりました。古いバージョンは gogo.dll を利用できたのですが、こんどは、古いバージョンが mscomct2.ocx などのランタイムが古過ぎて途中で止まってしまいます。

    で、いろいろ探して見つけたのが、STSRECでした。これと、午後のこ〜だの gogo_8hz.exe を使用する設定を決めるのが大変でした。検索すると失敗例が紹介されていていますが、それを参考にして、いろいろやってできました。

    1. STSRECをインストールする。
    2. 午後のこ〜だをインストールする。
    3. 午後のこ〜だのインストール先("C:\Program Files\WinGOGO")に gogo.dll と gogo_8hz.exe というファイルができる。これらを、STSRECをインストールしたディレクトリ("C:\Program Files\stsrec" )にコピーする。
    4. メモ帳をひらいて次の内容を入力(コピペ)して、 "C:\Program Files\stsrec\gomp3.bat" という名前でバッチファイルとして保存する。
      "C:\Program Files\stsrec\gogo_8hz.exe" -b 128 %1 C:\tmp\%2.mp3
      del %1

      なお、上記の一番右のドライブ名とディレクトリ名は、最終的に mp3 ファイルができる場所です。

    5. stsrecを起動する。まずは全体設定から。
      1. 設定→保存→ファイル完成後コマンド実行にチェック
      2. その下の空欄の右の「参照」を押して、先ほどのバッチファイルを指定する。
      3. さらにその下の欄は、 "%F" %f とする。(引数の指定になる。)
      4. ほかは自分の好きな通りに設定する。(特に音質の設定を自由に。)
      次に分割設定をおこなう。これは「Split」を押して設定する。
    6. あとは、赤い丸ボタンを押すと録音開始。ファイルはSplitで指定された時間毎に別のファイルとして wav 形式で生成され、それを gogo_8hz.exe が mp3 に吐き出してくれます。バッチファイル中の del コマンドでファイルは自動消去されます。

とりあえず、以上でうまくいくはずです。情報の正確性を上げたいので、うまくいかないという報告大歓迎です。ちなみに、僕の場合、

  • 写真は 320x240 で 1枚 12,288byte で、写真を1分1枚にすると、10分あたり 122,288byte
  • 音声は 22.050Hz, 16bit, モノラルで10分当たり 9,605,120 byte
でした。10分で写真と音声を合わせて約10Mbyte、1時間にすると60Mbyteで、18時間で 1Gbyte となります。ほとんどが音声データです……。

| | コメント (1) | トラックバック (0)

« 2008年12月 | トップページ | 2009年2月 »