Entering Passive Mode

カテゴリ 'JavaScript' の記事
< 1 2 3 4 5 >

MixiError 例外クラス

今日は例外処理について考えてみよう。

ユーザと対話的に処理を行うプログラムと違い、
自動化プログラムは、例外処理に厳格である必要がある。

例外処理は、トラップ(catch)するのも大切だが、
必要な所で例外を発生(throw new)させるのも大切である。

例えば、HTTP アクセスを行う場合、
ネットワークの障害があった場合、
通信エラーが発生することがある。

MixiDiary+Iterator クラス

今日は、list_diary.pl へのアクセス手段を提供する、
MixiDiary クラスを設計しよう。

MixiDiary は、各日記(項目)のコレクションの役割となる。
では、メソッドを列挙してみよう。

・コンストラクタ(session)
・iterator()

……以上。

一覧表示と詳細表示

日記一覧ページである、list_diary.pl では、
完全な日記の情報は得られない。

何が不足しているか。

まずは、本文である。
日記一覧ページでは要約しか表示されていない。

そして、日付である。
一見、日付と時間は取得できるように見えるが、
そのうち、「年」の情報が不足している。
2006/7/29 と 2005/7/29 の区別ができないのだ。

正規表現

今日は、昨日と同じ処理を、正規表現を使ってやってみよう。

indexOf による探索は、速度面では速いのだが、
単純な文字列のマッチングしかできなく柔軟性に欠ける。
正規表現は、表現を作るのに若干の知識が必要だが、
文字列の処理を柔軟に行うことができる。

========== Main.js ==========

function main() {

文字列処理

今日は、最新日記一覧ページの HTML を取得し、
日記の情報を抜き出してみよう。

最新日記一覧ページには色々な情報があるが、
mixi の HTML は、人間が読むために最適化されているため、
要点だけ抜き出すためには、HTML を解析する必要がある。

日記の情報を取り出すためには幾つかの方法があるが、
今日は、昔からの文字列処理を使ってみる。
前後のテキストを手ががりとして、
取り出したい情報を抜き出すことにしよう。

最新日記一覧ページの取得

さて、長々と脱線していたので、話を軌道に戻そう。
今日は MixiSession の実装をする。

まず、以前作った _encodeForm 関数を、
「HttpUtil」クラスの静的メソッドにしよう。

========== HttpUtil.js ==========

var HttpUtil = {

    // application/x-www-form-urlencoded でエンコード
    encodeForm : function (hash) {

プロトタイプ

JavaScript はオブジェクト指向である。
しかし、Java や C# のようなクラスベースではなく、
プロトタイプベースの言語である。

クラスベースの言語にクラスがあるように、
プロトタイプベースの言語はプロトタイプがある。

では、プロトタイプとは何か。

プロトタイプは、オブジェクトの雛形である。
それ自身もオブジェクトで、プロパティを持つ。

メソッドと関数

今日は MixiSession クラスのメソッドを考えてみる。
必要なメソッドは、とりあえず以下の 2 つにしよう。

・fetch(url, query)
・post(url, form)

fetch や post は、url を取得し、HTML 文字列を返す。
fetch は GET 用、post は POST 用とする。

では、昨日のコードに追加してみる。

MixiSession クラス

ページを取得する準備は整ったが、
次のステップに移る前に、いつものようにクラス化を行おう。

では、「MixiSession」クラスを考えてみよう。
このクラスは mixi へのログインセッションを管理し、
認証状態の mixi のページを取得する機能を持たせる。
ログインと、XMLHttpRequest のラッパーというわけだ。

まず、コンストラクタとフィールドを決めよう。
コンストラクタは、メールアドレスとパスワードを受け取る。
フィールドは、XMLHttpRequest を格納するために必要だ。
「_client」という名前にしよう。

自分のトップページへのアクセス

ログイン認証まではできたが、
肝心のトップページはまだ取得できていない。

トップページを取得するためには、
サーバが返却した Cookie を送信内容に含めた上で、
トップページ http://mixi.jp にアクセスすればよい。

幸い、Microsoft 実装の XMLHttpRequest は、
Cookie の自動的な管理機能を提供している。

これは、同じ XMLHttpRequest インスタンスを使って、
何度も Web サイトにアクセスする場合、
以前に返してもらった Cookie があれば、
それを自動的に送信してくれるという機能だ。

< 1 2 3 4 5 >
このページのトップへ戻る
© 2008 Project Loafer/Project Fireball and all blog writers. Powered by Nucleus CMS