JSON の文法チェックを行う方法

JSON (JavaScript Object Notation) のシンタックスチェック (syntax check? validation? validator?)を行う方法。

JSON は所詮 JavaScript のオブジェクトにすぎないので、JavaScript としてチェックすればよい。
手軽な方法としては、Firebug のコンソールのコマンドラインから実行し、エラーがあった場合、コンソールにエラー箇所が出力される。

例えば、
以下のような JSON のシンタックスチェックを行う場合、

{
  "name": "thira",
  "age": "21",
  "live": "ube",
  "affiliation": "Yamaguchi University"
}

このようにオブジェクトにすればよい

var user={
  "name": "thira",
  "age": "21",
  "live": "ube",
  "affiliation": "Yamaguchi University"
}

firebug
Firebug のコンソールのコマンドラインから実行するところ

Firebug が使えない場合は、add workbench のブックマークレットを使用すると便利。エラーは Firefox のエラーコンソールで見る。

あと数時間で博多へ行きます。

追記 (2008.05.25)
この方法だと、Firefox は以下の両方とも通しちゃう。

正 { "name": "thira" }
誤 { name: "thira" }

この場合はチェックできないみたい。
はてブで教えてもらいました。id:kgbu さんありがとうございます。

参考
今日の「僕は馬鹿でした」 - kgbu?

ヤマケイのマウルベアのカレンダーがかわいすぎる

山と渓谷社-商品紹介>Maule Bear and Friends
雑誌『ヤマケイJOY』にも登場したかわいいクマのマウルくんが、仲間たちと海、川、山の自然を冒険しながら、魚、植物、鳥などの豆知識を教えてくれます。

マウルベアのカレンダー1 マウルベアのカレンダー2
ご覧のように、上側 3/4 がめくれあがるデザインになっている。

そろそろ生活に支障が出始めたので、2008年のカレンダーを購入した。
山と渓谷社 (通称:ヤマケイ) のカレンダーは、どれも美しい写真がたくさん。

例えば、
日本百名山」のようないかにもヤマケイらしいものから、
世界の文化遺産」、や「世界の自然遺産」といった癒される写真でいっぱいのものや、
カエルのカレンダー」のようなカエルマニアにはたまらないものなど、
さまざまな種類のカレンダーを発売している。

以下、Amazon へのリンク。
Maule Bear and friends HOLES 360×260ミリ判 ¥1,260(税込)
日本百名山 2008 220×297ミリ判 ¥840(税込)
美しき世界の山 300×380ミリ判 ¥1,260(税込)
美しき日本の山 300×380ミリ判 ¥1,260(税込)
世界の文化遺産 (海外編) 300×380ミリ判 ¥1,260(税込)
世界の文化遺産 (日本編) 300×380ミリ判 ¥1,260(税込)
世界の自然遺産 (世界編) 300×380ミリ判 ¥1,260(税込)
世界の自然遺産 (日本編) 300×380ミリ判 ¥1,260(税込)
FROGS! 2008 160×180ミリ判 ¥1,000(税込)
PENGUINS! 2008 160×180ミリ判 ¥1,000(税込)
BEETLES! 2008 160×180ミリ判 ¥1,000(税込)
KINOKO! 2008 160×180ミリ判 ¥1,000(税込)
日本の仏像 2008 370×300ミリ判 ¥1,890(税込)

中でもこれはすごい。

FLOGS! 2008
この商品の目次
表紙 アフリカウシガエル
1月 ハイチオオアマガエル/アカマクトビガエル
2月 ヒラタピパ
3月 ベルツノガエル
4月 モモアカアルキガエル/ジュウジメドクアマガエル
5月 ウルグルオオクサガエル
6月 アマゾンツノガエル
7月 スイレンクサガエル
8月 フタイロネコメアマガエル/ヒロズトゲハダアマガエル
9月 コイチョウコグチガエル
10月 イエアメガエル/アジアジムグリガエル
11月 チョウセンスズガエル/ソノラミドリヒキガエル
12月 アフリカウシガエル

カエルづくしだ。

Flashに外部から変数を読み込みさせる方法

Flash に外部から変数を読み込ませる方法は、GET パラメータのようにして渡すのが最も簡単である。

hoge.swf?var1=abc&var2=def...

受け取った変数は、自動的に _root のレベルの変数として格納される。
_root レベルでは、以下のようにして大変簡単にアクセスできる。

trace(var1); //"abc" を出力
trace(var2); //"def" を出力

ムービークリップや _root 以外のレベルから変数にアクセスするときには、以下のようにすればよい。

trace(_root.var1); //"abc" を出力
trace(_root.var2); //"def" を出力

そのとき、注意しなければいけない点は、ステージ上のインスタンスのタイプ (インスタンスのビヘイビア?) を「グラフィック」から「ムービークリップ」にしておかないと、ActionScript が実行されず、変数を読み込めないこと

flash_instance

「グラフィック」のままになっていたため、変数が出力されない...、と何時間も悩まされたのでメモ。

Yahoo!アドパートナーはコンテンツマッチ広告か?

アドパートナー - Yahoo!ウェブオーナーセンター
アドパートナーは、ご登録いただいたサイトに広告を配信し、掲載された広告がサイト訪問者に閲覧されることで報酬を獲得できるサービスです。

ヤフー版 AdSense? が開始されたらしいので、どんなものか試してみた。
利用登録について」を見ると審査に2週間ほどかかるようなのだが、実際には2日で済んだ。

12/25 12:00頃 登録・バナー貼り付け
12/26 14:00頃 ヤフーより。貼り付け確認。テスト完了。

ご登録いただいたサイトへのテスト配信が完了いたしましたので
お知らせいたします。
これより、ご登録いただいたサイトの審査を開始いたします。
審査は、2週間程度かかりますのでご了承ください。

12/27 10:00頃 ヤフーより。合格通知。

お客様のサイトを審査させていただいた結果、対象範囲が
審査基準を満たしていましたので合格と判定いたしました。


今のところ、160×314 の1種類しか選べない。広告はまだ数種類で社会貢献広告を除いて全てイメージ広告の模様。
経験上、縦長の広告 (スカイスクレイパー) は左より右に配置したほうがクリック率が高いので、このページではちょうどよい。

2日テストして気になったのは、Google AdSense と違って「コンテンツマッチ広告ではないかも」しれないという点。
つまり、ページの内容とは無関係に一方的に広告を出力しているのでは、ということ。
アドパートナーのサイトを見た限りでは「コンテンツマッチ」などといった内容は見当たらなかった。

ちなみに、不合格通知をもらった人もいるらしく、審査は厳しいのかもしれない。
[yahoo]Yahoo!のアドパートナーの審査落ちたー - カサヒラボ

まだ広告も少なく時間も経っていないので AdSense とは比較できないが、とりあえず貼っておく。

ノートPCで開発作業

dualmonitor

22日から冬休みなので時間が大量に確保できる!そこで、不安定だったデスクトップ PC の OS 再インストールをやっと行う。ついでに挙動が変だった BIOS のアップデートも行う。

アップデートが済んでリブート...起動しない。 BIOS の起動ロゴが出ない。
ファンだけ回って他は動いていない。BIOS のアップデートに失敗したようだ。
CMOS クリアや BIOS のリカバリを行っても変わらず。

Intel のマザーボード (D945GNT) は3年保証がついているので、修理に出すことにした。
しかし、Intel も既に冬休みに入っていた。

製品保証に基づく返品・交換プログラム - インテル
誠に勝手ながら、製品交換業務は、年内は12月21日(金)午後2時までとさせて いただきます。新年は2008年1月7日(月)午前9時から営業させていただきます。

↑大学生の冬休みより長い。どういうことだ。

サブのデスクトップ PC は PCI-Express×16 スロットがないので今持っているグラフィックボードじゃデュアルモニタにできない。それに正月に実家に持って帰ることも考えて、冬休みはノートパソコンをデュアルモニタにして作業です。

参考リンク
液晶モニタ故障... | BlueSky Lab.

Flash Player や Adobe Reader などのリンクロゴボタン

以前、 Adobe 「Get Flash Player」バナーの配布元URL という記事を書きました。
最近、Flash Player 9 のリリースに合わせてリンクバナーが新しくなったようです。

検索してもなかなか出てきそうにないので、自分用メモも兼ねてまとめ。とりあえず使用頻度の高い Flash と Acrobat と Windows Media Player のものを掲載。

・"Get ADOBE Flash Player"
Adobe - Style Guide : Adobe Web Buttons
Get ADOBE Flash Player
Shockwave や ColdFusion のリンクロゴも。

・"Get Adobe Reader"
Adobe Systems Incorporated permissions and trademark guidelines
Get ADOBE READER
Adobe社のコーポレートロゴ や GoLive、SVG Viewer のリンクロゴも。

・"Windows Media Player 11 FREE"
Windows Media Player ダウンロード ボタン ロゴとガイドライン
Windows Media Player の入手
"Windows Media Player 10" や "Windows Media Player 9 series" のリンクロゴも。

JavaScriptでスマートにダイアログを表示するライブラリを作りました

smartdialog.js
「Yahoo!画像検索」や「Lightbox」のように、画面全体にレイヤーを重ねてダイアログを表示するJavaScriptのライブラリです。
他のライブラリと比較して、任意の色を背景色に選ぶことができ、CSSファイルや透過画像が不要だという長所があります。

必要だったから作ったので、ついでに公開。
JavaScriptのライブラリを作ったのも、JavaScriptでオブジェクト指向プログラミングを実践したのも初めてなので、バグが残っているかも。glayer.jsを一部参考にさせていただきました。

Yahoo!画像検索では、LightBox風UIを実装してから使い勝手がよくなった。
Flickrに登録されている画像が優先されて表示されるっぽいけど、日本語版も登場する予兆かな。しかし、FlickrでCCライセンスで公開している画像を「(C) All right reserved.」と著作権表示するのはまずい気がするんだが。

「宅配便の配達状況 API」を公開しました

宅配便の配達状況 API
「宅配便の配達状況 iGoogleガジェット」をAPIとして使えるように改造したものです。
各社の配達状況ページにジャンプします。また、ジャンプせずURLを表示させることも可能です。

宅配便の配達状況 iGoogleガジェット」が意外に好評なので、「宅配便の配達状況 API」を公開しました。何に使うかは、おまかせします。

ガジェットでIE6.0+特定のテーマ?を選択した時に警告ウインドウが出るエラーを修正しました。

テストしていて気づいた点。
日本国内から差し出されたDHLの伝票は「DHL」で検索してもエラーになり、「クロネコヤマト」だと検索できる場合があること。
当たり前か...。DHLは国内ではクロネコヤマトが担当しているからね。

ページにも免責事項や問い合わせ先などを追加しました。
それにしても、「iGoogleガジェット」+「Google page creater」+「問い合わせ先がGmail」+「Google Adsense」+「Google Analytics」ってGoogleのサービスばかりでなんだか気持ち悪いな...。

Lights-Out Game

ライツアウト - Wikipedia
ライツアウトは、5×5の形に並んだライトをある法則にしたがってすべて消灯させる(lights out)ことを目的としたパズル。

こんなのがあるらしいので、JavaScriptを書いてみました。
Lights-out Game

問題1
問題2

暇つぶしにどうぞ。

宅配便の配達状況 iGoogleガジェットを作ってみた

宅配便の配達状況 Googleガジェット
宅配便の配達状況を確認できるiGoogleのガジェットを探してみたけど、なかったので自作した。
screenshot

以下、思ったこと。


ガジェットを作るのは予想以上に簡単である

Google ガジェット API 開発者向けガイド
上のマニュアルを見ながら、XMLファイルを作るだけ。
作りたいガジェットによっては、JavaScriptを記述する必要があるが、JavaScriptが苦手な人はFlashをEmbedするだけでもガジェットになる。例えば、CO2 CalculatorはFlashで作られているっぽい。


なぜ、宅配便ガジェットがないのか?

→運送業者がAPIを公開していないから。また、仕様がバラバラで、意図的に再使用しにくくしている会社もあり、システム更新のたびに仕様変更しなくちゃならず、手間がかかる。

・素直にGETで飛ばせる
日本郵政・DHL・UPS・FedEx

・POSTしなくちゃいけない
クロネコ・佐川・西濃・福通 (佐川は古い画面ならGETできるみたいなんだけどね)

・例外
日通は"s8fid"という謎のパラメータでトークン(?)を得てからPOSTしないと、配達状況を表示できない。そのため、古いバージョンの画面を見つけてきて無理やり飛ばすことにした。日本郵政と合併したらどうなるんだろう?
クロネコもトークンのようなものがあったが、POSTする時はなくても大丈夫みたいだった。

どの会社も早くAPIを公開して欲しい。例えば、ショッピングサイトの注文確認画面から配達状況を確認できるようになるはず。Amazon.co.jpでは日通の場合表示できるみたいだけど。


伝票番号の仕様がいいかげんな運送業者

動作確認のために適当に入力した伝票番号がなんと「配送済みです」と表示された。びっくり。
UPS「123456789」
西濃「1234567890」

日本郵政は、最後の桁がチェックディジットになっている。
しかし、連番検索で、手持ちのお問い合わせ番号から100通指定すれば、次の伝票、その次の伝票も見放題。そして最後の伝票からまたさらに100件分検索できる!


おねがい

うちじゅうの段ボールや配送伝票の控えを探しましたが、郵便書留、福通、DHL、UPS、FedExの伝票がなかったので、誰か伝票持ってる人はうまくいくか教えてください!

「宅配便の配達状況」をiGoogleに追加