投稿者: uep

  • ibdata1肥大化解消

    学認連携Moodleのibdata1は11GBになっている。よく言われることだが、InnoDBはOSがどのていどのファイルを扱えるか認識できない。肥大化が困るのは、ファイルシステムを食い潰すことであり、最適化したとしても縮小することはない。一度ダンプからリストアするしかない。また、ファイルごとに.idbを作成する「innodb_file_per_table」が効果があるとされており、my.cnfに

    [code]
    innodb_data_file_path = ibdata1:1G
    innodb_file_per_table
    [/code]

    を記述するという2009年の記事が見られるが、MySQLマニュアルを見ると、MySQL 5.6からこれがデフォルトになるそうだ。つまり、自動的にテーブルごとの.ibdを作成してくれるということである。先日のシステムメンテナンスで学認連携MoodleはMySQL 5.7にバージョンアップした。学認連携Moodleのデータディレクトリを見てみると、

    [code]
    -rw-r—– 1 mysql mysql 8720 3月 8 04:19 mdl_workshop_aggregations.frm
    -rw-r—– 1 mysql mysql 147456 3月 8 04:20 mdl_workshop_aggregations.ibd
    -rw-r—– 1 mysql mysql 9260 3月 8 04:19 mdl_workshop_assessments.frm
    -rw-r—– 1 mysql mysql 147456 3月 8 04:20 mdl_workshop_assessments.ibd
    -rw-r—– 1 mysql mysql 9222 3月 8 04:19 mdl_workshop_assessments_old.frm
    -rw-r—– 1 mysql mysql 163840 3月 8 04:20 mdl_workshop_assessments_old.ibd
    [/code]

    のように、ダンプをリストアする作業を行っていないのもかかわらず、夜中のmysqlcheck時に自動的にこのようになっているようだ。つまりmy.cnfは一切変更する必要はない。

    「innodb_data_file_path = ibdata1:1G」について、このサイズを越えたらどうなるのか見当がつかないので、明示的な固定サイズは止めることにした。しかしながら今のままの肥大を続けるのは良くないので、データベースのダンプをリストアする作業は必要である。この結果、ibdata1は11Gから79Mとなり、消費メモリが劇的に減少した。

    security-learning のメモリ使用状況。メンテナンス後は空きメモリが劇的に増加している。
    security-learning のメモリ使用状況。メンテナンス後は空きメモリが劇的に増加している。

    作業手順は次の通り。この記事の流れが非常に参考になった。
    (さらに…)

  • SCORM受験削除の効果

    学認連携Moodleのメンテナンスの真っ最中である。今回のメンテナンスの目的の一つは、肥大したSCORM関係のデータを削除すること。MoodleはSCORM関連のデータをシステム全体のデータベースとして持っている。たとえば、

    [code]
    | mdl_scorm | 25 |
    | mdl_scorm_aicc_session | 0 |
    | mdl_scorm_scoes | 516 |
    | mdl_scorm_scoes_data | 4043 |
    | mdl_scorm_scoes_track | 8530377 |
    [/code]

    mdl_scorm_scores_track にSCORMのトラッキングデータがあるものと思われる(参照:mysqlでテーブルのレコード数を確認する方法)。これを「全てのSCORM受験を削除」する。3/1 21:26に削除を開始した。

    security-learningのロードアベレージ。開始から4時間以上高負荷状態が続いていることが分かる。
    security-learningのロードアベレージ。開始から4時間以上高負荷状態が続いていることが分かる。

    削除開始からしばらくした時の状態。増えているが一時的なトランザクションのためであろうと推察する。

    [code]
    | mdl_scorm | 25 |
    | mdl_scorm_aicc_session | 0 |
    | mdl_scorm_scoes | 516 |
    | mdl_scorm_scoes_data | 4040 |
    | mdl_scorm_scoes_track | 8855805 |
    [/code]

    削除後

    [code]
    | mdl_scorm | 25 |
    | mdl_scorm_aicc_session | 0 |
    | mdl_scorm_scoes | 454 |
    | mdl_scorm_scoes_data | 3345 |
    | mdl_scorm_scoes_track | 171273 |
    [/code]

    およそ1/50に削減できたことになる。なお、4コアサーバで同様の操作を行ったときは最後のクエリ投入まで16分で完了した(実行時間は不明)が、security-learning(2コア)ではクエリの投入だけで47分、実際の実行に4時間以上かかっていると推定され、データベースはスケールアップが効果的ということを実感した。

  • Moodleのメンテナンスモード

    予告することができるのを今さらながら初めて知った。cronなどで1日前(つまり1440分前)から予告しておいてメンテナンスモードにすることもできる。該当のMoodle Docsはこちら
    [code]
    if ($options[‘help’]) {
    $help =
    "Maintenance mode settings.
    Current status displayed if not option specified.

    Options:
    –enable Enable CLI maintenance mode
    –enablelater=MINUTES Number of minutes before entering CLI maintenance mode
    –enableold Enable legacy half-maintenance mode
    –disable Disable maintenance mode
    -h, –help Print out this help

    Example:
    \$ sudo -u www-data /usr/bin/php admin/cli/maintenance.php
    "; //TODO: localize – to be translated later when everything is finished

    echo $help;
    die;
    }
    [/code]

  • Linux Mintを試す

    ローカルに開発環境を整備したかったことと、Emacs関連で使いたいパッケージがWindowsでどうしてもビルドできなかった(CygwinとかMinGWは嫌)ので、10年ぶりにデスクトップLinuxを試すことにする。

    最後に使っていたのはGentoo Linuxで、インストールにひたすら時間がかかった記憶しかないが、好きにできるので数年使用していた。もちろん、今はそんなに凝ることはできないので安直にUbuntuかなと思っていたが、最近はMintというのが人気があるようだ。Webを見るとエディションが色々あって分かりにくい(分かりにくいシステムにろくなものはないというのが私の持論)が、試してみる価値はありそうだ。

    • 無印Linux Mint:Ubuntuベース
    • LMDE:Debianベース

    特に制約がなければ無印を選ぶ。あとはデスクトップ環境によってエディションが決まる。MATE(軽量)かCinnamon(綺麗)、つまり昔のxfceかKDE/Enlightment/GNOMEかって感じだろうか。今回はCinnamonを選択した。DVD ISOで1.5GBと隔世の感がある。しかもUnetbootinを使えばDVDを焼く必要もない。またディスクもSSDが1万円を切るなどデュアルブートする必要性もない。良い時代になったものだ。

    インストールはUSBからブートし、デスクトップにある「Install」をダブルクリックすると開始される。パーティションの設定もわざわざする必要もなく、無線LANドライバをどっかからコピーすることもなく淡々と進み30分もかからずに完了。本当に簡単。

    この後は、beamerでDual Headプレゼンするという最初の目標に向かっていく。

  • 「表計算ソフトで学ぶ微分方程式」が2015年度ベスト・ムードル・オープン・コース賞を受賞しました

    表計算ソフトで学ぶ微分方程式」が佳作を受賞しました。ありがとうございます。恐らく、語学のコースばかりでは良くないという判断が働いて、数少ない理系コースとしてスポットを当てていただいたのだと思います。今後も語学以外の分野におけるLMS利用を進めて行く所存です。

    しかしながら、この賞を「上田浩(京都大学)」として受賞するのはためらいがあります。このコースは私が2007〜2011年度群馬大学教養教育で開講していた科目であり、バックアップを5年ぶりにパブリッシュしたものだからです。残念ながら京都大学では私の力不足で、全く同様の科目を開講できていません。ここに群馬大学で「表計算ソフトで学ぶ微分方程式」を受講し、貴重なフィードバックをくださった群馬大学の学生諸君に心から感謝します。学生諸君は大学院など次の道に進んでいるでしょう。

    Don Hinkelman先生と
    Don Hinkelman 先生と

    写真はThom Rawson (@tallthom) 先生が撮ってくださいました。Thom先生ありがとうございます。

  • 脆弱性診断への対応 (SSLCipherSuite)

    Webシステムを研究で使用するため、学内の脆弱性診断サービスの使用と対応を行った。いつも困るのが SSLCipherSuite である。実装がそれなりにあり組み合わせを含めると…というのは分かる。分からないのが Web サーバの設定ファイルである。今回は以下のサイトを参考にさせていただいたので感謝とともに備忘のため記録しておく。

  • モバイルルータ更新

    MR04LNを選択した。旧ルータとSIMを差し替えスピードテスト結果を比較した。あまり変わりばえしないがしばらくこれで運用することとする。

    BM-AR5210BK MR04LN
    b-mobile 6ヶ月定額 (a) 2.4GHz 5.05Mbps (b) 2.4GHz 6.21Mbps
    (c) 5.2GHz 7.74Mbps
    0SIM (d) 2.4GHz 8.04Mbps
    (e) 5.2GHz 6.36Mbps
    6.06Mbps
    (a) 6.06Mbps
    (c) 7.74Mbps
    (c) 7.74Mbps
    (d) 8.04Mbps
    (d) 8.04Mbps
    (e) 6.36Mbps
    (e) 6.36Mbps
  • RapidMinerことはじめ

    RapidMinerはデータ分析に使う著名なソフトウェアであり、ググるとKSKなんとかという会社のページが先頭に来るが、ここは無視してもよい。

    本家に行くと、何やらログインが求められたり、Starterだ、Communityだとエディションの違いについての説明がうるさい。こういう分かりにくいソフトウェアはろくなものがないというのが私の持論だが、KSKの説明によれば、ダウンロードしたままのものがFreeのStarter Editionで、アカウントを作成してサインアップしたものがCommunity Edition、対応データベースが増えたりSPSS、SASデータファイルの読み込みにも対応した有償のものがProfessional Editonということになる。なぜこのような形になっているかについてはここの説明の通り、コアはオープンソース化し、サポートを有償としたということのようだ。

    私はedXの「Big Data in Education」を遅まきながら受講しているため、Wekaが必須であった。もちろんWekaはRapidMinerとは独立した別のソフトウェアであるが、RapidMinerのライブラリ/プラグイン的にWekaが使えるようになっており、「MarketPlace」からダウンロードする。その際RapidMinerのアカウントが必須となるので、Editonはこの制約によりCommunity Editionとなった。

  • SCORM 2004をSCORM 1.2にダウングレード

    MoodleのSCORM 2004サポートしない問題については先の記事にまとめた通りである。この他にも、私達が開発しているeラーニング教材はMoodleで「完了」ステータスのAPI呼び出しができないという問題があり困っていた。仕方がないので以下の手順でSCORM 1.2化することにした。

    1. Moodleで「完了」ステータスが動作するパッケージのうち、複雑そうでないものをダウンロード
    2. 解凍し既存コンテンツとマージする
      • imsmanifest.xml の編集
      • JavaScriptの確認
      • 既存コンテンツで読み込んでいるJavaScript部分の一括編集(TextSS.netを使った)
    3. できたimsmanifest.xmlを「eXe」でSCORM1.2プロファイルで読み込みエラーがないことを確認

    地味な作業である、いつかはやらなければならないものだった。

  • SCORMを使うべきか、それとも???

    xAPIとかCaliparという時代だが今困っているので調べたことをまとめて(いや羅列になっているが)おく。
    SCORM とは、Shareable Content Object Reference Modelのことで、Rustici Softwareによる簡潔な説明がこちら。この会社はSCORM Cloudというサービスを運営しており、Moodleのプラグインもある。現在歴史的経緯もあり私の研究ではSCORMを使用しているが、そもそものSCORMの思想はLMSに依存するのを避けるため、コンテンツそのものに機能を持たせ、LMSとのやり取りはAPI経由で行うものである。SCORMには以下の3つの問題がある。
    1. (Moodleのみを使うのであれば)SCORMを使うべきなのか?SCORM FAQにそのものズバリトピックがある。
    2. どのように SCORM パッケージを作成すれば良いのだろうか?FlashからSCORMパッケージを作成することはできるらしいが今更である。個人的には、manifestを書くためにReload Editorを使ったことがあるがイマイチ、いやイマサン。それなりに公開されている既存SCORMパッケージを参考にする(こことかこことかここ)と良い。
    3. MoodleではSCORM 1.2までしかサポートしないという問題もある。したがって、Moodleの問題なのか、コンテンツの問題なのか、ブラウザの問題なのか切り分けが難しい。Moodleの方でAPIデバッグをONにすると役に立つかもしれない(その割にMoodleにはSCORM 1.2に起因する制限を回避する設定があるから分かりにくい)。