Entering Passive Mode

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

Web スクリプティング言語 JavaScript (ECMAScript)

JavaScript。

Web 業界でこの言葉を知らない人は少ないだろう。

しばらくは、言語としての JavaScript (ECMAScript) にスポットライトを当て、
重箱の隅をつつくようなネタをぽつぽつ書いていこうと思う。

古くはサーバ側での HTML 動的生成エンジンとして、
数年前では、ブラウザ上で簡単に使える飾り言語として、
今では、ブラウザの表現力を最大限に引き出す言語として、
Web 業界で欠かせないものになっている。

特別な設備なしに、Web ページ上で利用できるということで、
JavaScript は Web プログラマだけでなく、
Web サイトの製作者やデザイナーにも普及している。

そのため、Web サイトで利用するためのサンプルやリファレンスは、
Web 上のそこらじゅうに情報が転がっているだろうから、
そういったことには触れるつもりはない。

一覧表の出力

基本的な所は大体終わった。
最後に、日記の一覧を出力しよう。

日記は別々のファイルとして出力されるので、
ファイル名だけを見ても内容が分からない。
日付とタイトルの一覧をファイルに出力しておけば便利だ。

Excel 等でも扱えるように、UTF-8 のタブ区切りにしよう。
これさえあれば、日記の一覧はすぐに作れるので、
後で一覧のページを作る事も可能になる。

HTML 出力への写真埋め込み

アイコン 写真 サイト

現在は、保存した日記に写真が関連付けられていない。
HTML で出力する際は、やはり写真を埋め込んで表示したい。

ただ、その HTML 用のテンプレートは少し厄介だ。
写真は、0 ~ 3 個と数が可変なので、
ちゃんとしたマクロの設計は少し困難である。

まぁ、今のところ試行錯誤の段階なので、
$html_photo_links とでもしておき、
自動的に写真用の HTML に展開するようにしよう。
このあたり、ちゃんとした設計が必要なら後でやればいい。

フォルダの作成と写真の保存

これで、写真をダウンロードする準備は整った。

写真には、MixiDiaryEntry クラスの、
getImages メソッドからアクセスできる。
getImages は配列を返し、各要素はオブジェクトで、
thumbnailURL と photoURL をプロパティとして持つ。

それらを HTML から参照することもできるのだが、
日記の写真を mixi へのアクセスなしに参照するには、
それをファイルに保存しておく必要がある。

写真のダウンロード

次は写真だ。

日記から取り出せるのは写真の URL 文字列である。
なので、エクスポート時に URL を出力することはできるが、
肝心の写真自体は、mixi のサーバ上にある。

写真の URL はログインなしで参照することは可能なようだが、
エクスポータの機能を考えれば、
写真もローカルに保存しておいた方が安全と言える。

mixi の日記の写真は JPEG なのでバイナリデータだ。
どうやってダウンロードするか。

参照の適用

MixiExporter はテンプレートに埋め込む方式なので、
出力する対象がテキストか HTML かによって、
埋め込み方を変えないといけない。

テキスト形式のテンプレートに埋め込むなら、
そのままの置き換えで構わないが、
HTML/XML 形式のテンプレートに埋め込むなら、
以前とは逆に、一部の文字を実体参照に置き換える必要がある。

また、昨日論じた改行に関しては、
テキストの場合はそのままで良いが、
HTML の場合は、<BR> 等、XHTML の場合は <br />、
XML の場合は CDATA 空間や適当な要素にする必要がある。

参照の展開

さて、8/9 に考察した、HTML の参照について考えてみよう。
基本的には以前に作成した decodeHTML メソッドを使い、
HTML の参照を展開してやればよいのだ。

HTML を解析して返却しているのは、
MixiDiaryIterator と MixiDiaryEntry の 2 クラスなので、
まずはそれらを修正しよう。

最初に MixiDiaryIterator#next だ。
ここで扱っている文字列は日記のタイトルである。
これを MixiDiaryEntry に渡しているが、
渡す時点でテキストにしておこう。

実際の日記を書き出す

さすがにお盆は忙しいなぁ。
時間がないので、今日はコード一色でいこう。
とにかく、ページの出力をしてみたいので、
コードを吐き出すところまで一気にいこう。

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

// 起動関数
function main() {

    try {

ライブラリ定数の利用

昨日のコードには、2 やら -1 やらの生の数値が出てきた。

これらの数は、ADODB タイプライブラリで定義されている、
列挙型の定数なのだが、JavaScript では、
それらの列挙型のシンボルを理解できないので、
昨日は整数値をそのまま書いて利用した。

var adTypeText = 2;

のように先頭に書いて使ってもいいのだが、
WSH には、列挙型シンボルを取り込む仕組みがある。

ファイルアクセス

JavaScript は、ブラウザ上で動作する言語だ。
そのため、セキュリティ上の問題もあり、
ファイルアクセスの API は用意されていない。

そのため、ファイルアクセスを行うためには、
外部の COM オブジェクトの力を借りる必要がある。

WSH から利用できるオブジェクトは 2 つ。

・Scripting.FileSystemObject から取得する TextStream
・ADODB.Stream

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