iKnow Archive

AUG
7

iKnow1000語完了。

Published:2008-08-07 21:53:04 UTC

image iKnowの学習完了アイテム数が1000を突破した。大学受験や定期試験があるわけでもなしに、よくここまで到達したものだと自分でも思う。これからも頑張りたい。

AUG
7

ある程度進むと…

Published:2008-08-07 00:19:46 UTC

それ以上一日には進められなくなるのな。前はそんなことなかったと思うのだが、何時の間に仕様変更が入ったのだろうか?

image

追記:cerego公式のブックマークレットがリリースされています。こっちの方が便利かも。

image

タイトルはホッテントリメーカーで生成したw 無駄に愛愛うるさい気もするが、まぁ気にしない。春じゃないのも気にしちゃいけない。

それはともかく。
iKnowは英語学習用SNSサービスで、英語を学ぶためのe-learningコンテンツと、SNSが融合したサービス。Ruby on RailsとFlashで作成された素晴らしい学習アプリが特徴で、TOEIC向け、TOEFL向けなど様々なコースを、目標日から自動で逆算されたペース配分に従って学習を進めることができる。

さて、そんなiKnowには、「iKnowアイテムバンク」という名前で、登録されている10万語超の英単語を調べることができる辞書機能が存在する。そして、その単語を集めて自分の英単語帳を作ることができる「マイリスト」という機能も存在している。作成したマイリストは、運営元のceregoによって提供されているコースと同じように、iKnowの学習アプリを使ってペース配分しながら勉強することが出来、iKnowを非常に効率的な英語学習プラットフォームとして活用することが出来る。

で、今回はそのマイリスト機能を活用するための基盤となる、iKnowアイテムバンクを検索するための検索プラグインを作成してみた。なお、iKnowアイテムバンクはAjaxを活用しているので、SearchQueryGeneratorは使えないので注意。

OpenSearchプラグイン

Firefox向けOpenSearchプラグイン。以下のリンクからインストールできます。
iKnow ItemBank Searchをインストール(Firefox)

image これを使えば、

  1. 英語ページをブラウズ
  2. 分からない単語に出会う
  3. その単語を検索バーにD&D
  4. 検索結果のページからマイリストに登録
  5. 分からなかった単語リストが出来て、しかもiKnowで復習できるので(゜Д゜)ウマー

となれる。

検索エンジンの切り替えが面倒だ、という場合は、コンテキストメニューから検索できるようにするContext Searchという拡張を入れれば幸せになれるかも知れない。

なおこのOpenSearchプラグインはIEでは使用不能。iKnowが対応していないのか検索結果ページを上手く表示できない。残念…。よってIEコンポーネントブラウザであるSleipnir、Lunascape等も同様。

JUL
26

iKnow再開

Published:2008-07-26 00:32:48 UTC

image

テストも終わってはいないが大体片付いたので、iKnowを再開。TOEFLやら何やらで忙しかったのもあるが、二ヶ月近く放置していたのか…。反省。これからはまた10unit/日のペースに戻してゆきたい。

MAY
18

i18n

Published:2008-05-18 16:45:29 UTC

sc0004

iKnowって英語表示に切り替えられたのか。素敵。Fiddlerで通信を覗いた時に、言語リソースを送っているのを確認していたが、ちゃんとi18nしてたのね。

MAY
17

iKnow500語完了!!!

Published:2008-05-17 14:02:24 UTC

遂にiKnowの学習完了語数が500を達成。いやはやiKnowは素晴らしい。ものぐさな自分でも毎日続くのだから。
そしてコミットメント効果を強化するために、「iKnow進捗状況」という独立ページを設け、進捗状況の可視化デモを纏めてみた。
TOEFL Standard 3」の量の多さに心が折れないよう、頑張っていきたい。

MAY
17

id:amachangさんによる紹介記事を読んで知ったXPathGraphを使って、自分のiKnowの学習中アイテム数と学習完了アイテム数を表示するグラフを描いてみた。木曜の1限が休講になって、ボケっとしているうちに思いついたので勢いで書いたのだが、グラフが描かれるまで待ってたのでエントリが遅くなってしまった。

さて、XPathGraphはURLで指定したデータソースに対して、1日1回XPath式を実行し、得られる数字をグラフにしてくれるというサービス。
iKnowの学習中アイテム数は、Flashで作成されたブログパーツが使用しているXMLファイルから取得できることはiKnowLastAccessTimeCheckerを書いた時に確認済。これを使えばすぐ終わるかなと考えていたのだが…、XPathGraphは困ったことに、XMLファイルを解さないらしい。XPathなのに。…XPathなのに。その訳を調べてみると、どうやらXPathGraphはXPathの処理系にHTML::TreeBuilder::XPathとかいうHTML処理用?の奴を使っているらしく、XMLでもHTMLとして処理しようとする為らしい。仕方ないのでYahoo pipesという米Yahoo!のサービスと組み合わせてみようとしたところ、今度はiKnowのXMLファイルにXML宣言が無いせいでパースエラー。/(^o^)\ナンテコッタイ

という訳で最終的にはpipeにあたるものをphpで自作。要はXMLからデータを取ってきて、HTML化すれば良いわけだから、iKnowLastAccessTimeCheckerの時と同じ要領。

<?php
function getScores($id){

    $req = 'http://www.iknow.co.jp/assets/user/' . $id . '/iknow_badge.xml';

    $iknow = @simplexml_load_file($req);
    if($iknow===false){
        echo('パースエラー');
        exit();
    }

    $studying = $iknow->history->fragment->score[0];
    $finished = $iknow->history->fragment->score[1];

    return array("studying"=>$studying, "finished"=>$finished);
}

?>

<?php
    $id = htmlspecialchars($_GET['id']);
?>

<!DOCTYPE html PUBLIC '-/W3C/DTD XHTML 1.0 Strict/EN'
    'http:/www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd'>
<html xmlns='http:/www.w3.org/1999/xhtml' xml:lang='ja' lang='ja'>
    <head>
        <meta http-equiv='Content-Type' content='text/html; charset=utf-8'> 
    </head>
    <body>
        <p>

<?php
    if(!empty($id) && (strpos($id,'/')===false)){
        $scores= getScores($id);
        echo('<ul>');
            echo('<li class="studying">');
                echo($scores["studying"]);
            echo('</li>');
            echo('<li class="finished">');
                echo($scores["finished"]);
            echo('</li>');
        echo('</ul>');
    }
?>

        </p>
    </body>
</html>

これをデポに設置したうえで、XPathGraphから以下のようにidをパラメータとして渡して呼び出し。

http://depot.sharplab.net/php/iknow/PipeToXPathGraph.php?id=shiroica

XPathの方はこれだけ。

//li[1]

さて、出来たグラフ。まだ二点分のデータしかない(5/17時点)けど、まぁ動作しているのが確認できる。

shiroicaのiKnow学習中アイテム数

そして学習完了アイテム数。

shiroicaのiKnow学習完了アイテム数

これで進捗状況が一目で分かるようになった。さぁがんばれ自分。

MAY
13

iKnow300完

Published:2008-05-13 00:01:38 UTC

iKnow300語完了。そろそろDictationも真面目にやり始めるか・・・。

MAY
9

「動詞コロケーション1」完了!

Published:2008-05-09 01:06:52 UTC

iKnowの「動詞コロケーション1」というコースが完了。始めたのが4/11だから、大体四週間ほどか。他にも三つのコースを進めているが、なんとか順調にこなせている。iKnowについて何度かこのBlogでも触れたが、もう一度まとめとくと、iKnowは初心者から上級者向けまで様々なコースがそろっており、単語・熟語を学習するにはもってこいのe-Learningサイト。こちらでもshiroicaというidで通しているので、やっている方、始めた方は、是非フレンドリクエストを下さいな。

MAY
3

iKnowLastAccessTimeChecker

Published:2008-05-03 11:03:12 UTC

一般に公開するphpスクリプトとしてはWordPressのテンプレートを除き、記念すべき第一弾かな?

iKnowのBlogパーツの通信を覗いてみた」というエントリで書いたように、iKnowではBlogパーツのために、ユーザーの学習中アイテム数などをxmlファイル形式で外部に公開している。今回は、その中の最終学習日時を表示するphpスクリプトを書いてみた。

<?php
function getLastAccesseTime($id){

    $req = 'http://www.iknow.co.jp/assets/user/' . $id . '/iknow_badge.xml';

    $iknow = @simplexml_load_file($req);
    if($iknow===false){
        echo('パースエラー');
        exit();
    }

    $date = strtotime($iknow->history->fragment['date']);
    
    return $date;
}

?>

<?php
    $id = htmlspecialchars($_GET['id']);
?>

<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Strict//EN'
    'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd'>
<html xmlns='http://www.w3.org/1999/xhtml' xml:lang='ja' lang='ja'>
    <head>
        <meta http-equiv='Content-Type' content='text/html; charset=utf-8'> 
        <title>iKnowLastAccessTimeChecker - 
            <?php
                echo($id);
            ?>
        </title>
    </head>
    <body>
        <p>

<?php
    if(!empty($id) &amp;&amp; (strpos($id,'/')===false)){
        $accessedTime = getLastAccesseTime($id);
        echo(date('Y年m月d日 H:i:s',$accessedTime));
    }
?>

        </p>
    </body>
</html>

こんな感じ。get変数idを与えると、そのidを持つユーザーの最終アクセス日時を表示する。で、このスクリプトを早速デポにUPしてみたので、その検索窓を設置してみる。

自分のIDで試してみた例:

http://depot.sharplab.net/php/iknow/LastAccessTimeChecker.php?id=shiroica

脆弱性対策はDirectory Traversal対策位しか思いつかなかったけど、大丈夫かな?