So-net無料ブログ作成

Open Flash Chart は iモードから使えるか? [NT]

前回のエントリ JavaScript 実行後のコードを見るには? で少し触れた Open Flash Chart 。これは Flash を用いてチャートを表示するライブラリである。

では、これをドコモ携帯の iモードから見ることができるだろうか?

実験した結果、SH905i では Open Flash Chart ver.1.9.x も 2.x.x も両方とも表示できなかった。より正確に述べると、ver.1.9.x では flash そのものは実行できたが、チャートは表示されず、チャートデータの URL だけが表示される。iモード HTML シミュレータ2 での表示も同様。シミュレータでのスクリーンショットを掲載する。

image4.png

Open Flash Chart ver.2.x.x では、flash の読み込みもできない。これは、swf のサイズが原因である。

  • open-flash-chart.swf ver.1.9.7  64KB
  • open-flash-chart.swf (Version 2 Ichor (20th March 2009))  265KB

SH905i での swf の使用可能サイズは 100KB であり、ver.2.x.x 系列では上限を超えているため使用できない。

iモード HTML シミュレータ2 の表示によると、Flash Lite 3.1 を搭載している端末データでは ver.1.9.7 のチャートを表示できた。

どちらのバージョンを利用するにせよ、swf のサイズが大きいので、利用にはパケット定額制の加入が望ましい。

チャートを携帯電話で表示するためには、素直に画像にした方が良いようだ。

参考文献


タグ:Flash 携帯 CHART
nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:携帯コンテンツ

JavaScript 実行後のコードを見るには? [NT]

JavaScript を用いると Script をブラウザ上で実行し、必要に応じて DOM を操作することでページの内容を変更することが出来る。

多くのブラウザには「ページのソースを表示」する機能があるが、ここで表示されるソース(html)は Script が実行される前のものである。では、Script 実行後のソースを見るためにはどうすればよいか?

例えば、Open Flash Chart - Tutorials のサンプルコード http://teethgrinder.co.uk/open-flash-chart-2/tutorial/chart-6.html を見てみる。この HTML は次図である。これを見ると JavaScript のコードが埋め込まれていることが分かる。

image.png

Mozilla Firefox 限定であるが、次のどちらかの方法を使うと簡単に Script 実行後の HTML を表示できる。

JavaScript Shell はブックマークレットで、これを使うとその名の通り JavaScript のシェルを別ウィンドウか別のタブで表示させることができる。このシェルは、ブックマークレットを実行するときに表示していたページの内容を引き継ぐ。そのため、

document.body.innerHTML

とすると、DOM の内容を見ることができる。こうして表示させた内容は JavaScript 実行後の内容になる。

image2.png

ここで表示したコードには Script タグは埋め込まれて織らず、object タグになっている。つまり、ソースコード中にあった Script タグは Object タグを出力するものであったことが分かる。

【訂正】script タグは head タグ内に記述されており、Script 実行後も削除されない。正しくは、「ソースコード中にあった Script タグは id=my_chart で特定される div を Object タグに置き換えるもの」である。

もう一つの方法の Firebug は Firefox の機能拡張(Extention)である。この機能拡張には様々な機能があるが、HTML タブを使うと Script 実行後のコードを表示することができる(Firebug は HTML タブで保存はできないが一時的に編集することも可能)。

image3.png

この図でも Shell の場合と同様に、Script タグが Object タグに変換されていることがわかる。

本エントリでは 2 つの方法を紹介したが、注意することがある。JavaScript によって DOM が変更されるタイミングは必ずしもソースコードが読み込まれた時点とは限らないと言うことだ。何かマウス操作をしたときに DOM が変更される場合もある。だから、どの状態のコードが必要なのかは考慮しないと、期待する結果を得られない。


タグ:JavaScript

Firefox の機能拡張でアクセスキーを設定するには? [NT]

Firefox の機能拡張でアクセスキーを設定するには xul で accesskey 属性を付記すれば良い。

例えば、

<menu label="Smlmod" insertbefore="sanitizeSeparator" accesskey="S">

とする。 このようにすると、

image.png

と表示される。 「accesskey="S"」と設定したので、メニュー項目に「Smlmod(S)」が表示されている。.NET Framework の Windows Forms を使うときは「&S」で同じことができたと思う。

ちなみに、上記スクリーンショットでは、「Web 検索(S)」と「Smlmod(S)」の両方に「(S)」が付与されている。この場合、「ツール」を選んだ状態で、「S」キーを 2 回たたくと 「Smlmod(S)」を選択することが出来るため、重複したとしても無駄にはならない。


タグ:Firefox extention

便利な XPath のメモ [NT]

DOM を操作/走査するのに便利な XPath。Greasemonkey と XPath にもエントリを書いた。

便利だが忘れっぽい書き方があったのでメモしておく。

//div[@id="loading_container"]/ul/li[3]//div[@class="' + idType + '"]

と書くと 「//div[@id="loading_container"]/ul/li[3] に該当する要素 以下 の idType というクラスを持つ div 要素全て」になる。ある要素に該当する要素「以下」という部分が便利。直下である必要は無く、子孫のいずれかにあればマッチする。

Greasemoneky user script を作っているときに覚えた。便利^2。


タグ:XPath

Java で全角半角変換を行うには? [NT]

携帯電話向けの Web ページを作っていると、画面サイズが小さいために、より多くの文字を表示させたくて全角文字を半角文字に変換したいことがある。

例) ソフトウェア -> ソフトウェア

このような全角から半角への変換は ICU Home Page ‎(International Components for Unicode)‎ で公開されている ICUJ を使用すると容易に行える。

サンプルコードは Thief's Guild Blog: [Java]全角半角変換 を参照。

ICUJ には、アイウエオ -> aiueo に変換するものや日付の処理を行う API も用意されており便利である。


Glassfish v3 Prelude で encodeURL が動作しない? [NT]

DoCoMo の iモードなど Cookie が使用できないときにセッションを維持させるためには、全てのリンクにセッション ID を埋め込む必要がある。 Servlet の場合 encodeURL を利用すれば良い。

encodeURL が動作しないように見えたのは、Cookie が利用できるか否かの判定ができていなかったからのようだ。

Cookie が利用できるか否かは Servlet Container が自動的に判定すると思っていたのだが、Glassfish v3 Prelude ではうまくいかなかった。

Glassfish v3 Prelude で Cookie を使用しない設定は、sun-web.xml(このファイルは web.xml と同じディレクトリに配置する) で

<?xml version="1.0" encoding="UTF-8"?>
<sun-web-app>
    <session-config>
        <session-properties>
            <property name="enableCookies" value="false" />
        </session-properties>
    </session-config>
</sun-web-app>

と設定すればよい。このようにすると、Cookie が使用できる環境であっても使用しなくなる。

Nabble - java.net - glassfish users - No SessionID で Cookie とセッションについて取り上げられている。それによると、特に設定しなくても、既定で必要なプロパティが true になっているから、自動的に判定してくれると思うのだけれど...

glassfish-2 氏によると

V2.1
- automatically detection of url rewrite or cookie is not possible anymore
- only url rewriting or only cookie is possible definend in sun-web.xml
- have to add enableCookies=false to support all client requests
(中略)
V3
- automatically switching is possible again
- therefore its neccessary to remove enableCookies=false setted in V2.1 to get the default behaviour back

とある。つまり、v2.1では Cookie を使用できるか否かの判定は自動では出来なかったが、v3 では可能になったと読める。

もしかして、 Glassfish v3 Prelude ではまだ無理?

Nabble - java.net - glassfish users - No SessionID での話を、私はちゃんと理解できていないので、間違ってるかもしれないけど。


Firefox 機能拡張配布時にダイアログにアイコンを表示するには? [NT]

前回のエントリでは Firefox の機能拡張を配布するとき、update.rdf が安全な方法で配布されて無ければならないということを書いた。

今回のエントリでは、機能拡張をインストールするときに表示されるインストールダイアログで機能拡張のアイコンを表示させる方法をメモしておく。

簡単に言うと、Web ページから拡張機能とテーマをインストールする - MDC に書いてあるとおりで、アイコンを設定すれば良いだけだ。アイコンを設定すると、例えば次のように表示される。

image2.png

※ここで URL は架空のもので、合成している。

Smlmod という機能拡張のタイトルの左側にアイコンが表示されているのが分かる。MDC では同時に xpi のハッシュ値を含めるようにとの記載がある。ハッシュに関しては MDC のページで

これはダウンロードしたファイルを検証し、例えば、ミラーサーバによって改変されたファイルが供給されるのを防ぐために使用されます。

と解説されている。sha1 のハッシュ値を得るには、Windows なら、例えば、Vector:ElleFileInfo (WindowsNT/2000/XP/Vista / ユーティリティ) - ソフトの詳細 などを利用すれば良い。

アイコンを表示させると、既定のものよりは華やかな感じがするけど...ま、あってもなくてもいいかな。ちなみに、株式会社はてなが Firefoxでもっと便利に使おう - はてな で提供している hatenabar では 2009/04/18 時点でインストールするときにアイコンは表示されなかった。


タグ:Firefox extention

Firefox の機能拡張(Extention/アドオン)を配布するには? 補足 [NT]

Firefox の機能拡張(Extention/アドオン)を配布するには? の補足。

昨日のエントリでは

update.rdf が安全な方法で配布されていないと、Firefox 3 以降は機能拡張をインストールできなくなったようだ。

と書いた。しかし、ここには抜け道が存在する。update.rdf が安全な方法で配布されているかいないかにかかわらず、xpi を一端ローカルな環境にダウンロードし、Firefox にドラッグ&ドロップすればインストールできる。

「インストールできなくなった」は、より適切に言えば「直接インストールできなくなった」と言うべきだろう。

update.rdf が安全な方法で配布されている機能拡張の場合、Web ページ中の XPI のリンクをクリックすると、次図のようなダイアログが表示され、インストールするか否かを選択できる。

image.png

もし、 update.rdf が安全な方法で配布されてない機能拡張の場合、zip やその他のフィルと同様にファイルの保存ダイアログが表示され、上記のインストールダイアログは表示されない。それでもインストールしたければ、先述したように、ダウンロードした機能拡張を Firefox にドラッグ&ドロップしなければならない。

こうして、意図的に手間をかけさせることで、不用意にインストールをさせないようにしているようだ。であるならば、署名されていない機能拡張の場合も同様にすべきかもしれないとは思う。機能拡張を署名するにはコードサイニング証明書が必要になり、手間がかかるので、そこまでは行っていないと言うことなのかもしれない。


タグ:Firefox extention

Firefox の機能拡張(Extention/アドオン)を配布するには? [NT]

Greasemonkey で作成したスクリプトを Firefox の機能拡張にコンパイルして xpi を作成した。では、配布しよう。さて、どうするか。

Firefox には「機能拡張の更新を確認」する機能がある。「更新」については update.rdf について記述するのだが、その update.rdf が安全な方法で配布されていないと、Firefox 3 以降は機能拡張をインストールできなくなったようだ。

これらについては、次に挙げるサイトが有益だ。

尚、上記の件と機能拡張に「署名」をする件とは別件であるので注意が必要だ。機能拡張に署名していても、update.rdf が安全な方法で配布されていなければインストールできない。

ちなみに、株式会社はてなは Firefoxでもっと便利に使おう - はてな で Firefox の機能拡張を提供しているが、この機能拡張は 2009/04/14 の時点では署名されていない。しかし、update.rdf は https から始まる URL で提供されているので、問題なくインストールできる。

結局、費用をかけないのならば「McCoy を使え」ということになるのだが、私は はてな?と同様に update.rdf を https から始まる URL で提供することにした。私は共有SSL を使用できるサーバを借りていたのだが、初めてその機能が役に立った。

Firefox の機能拡張(Extention/アドオン)を配布するには? 補足 に補足エントリを書きました。


タグ:Firefox extention

iアプリで Google Static Map API を使うには? [NT]

DoCoMo の iアプリ(Doja)や Softbank/au の CLDC/MIDP による S! アプリ、EZ アプリから Google Static Map API を使うにはどうしたらいいか?

結論からすると、「ブラウザ以外から利用してはいけないので、自分でブラウザを作らないとならなくなりそう」。

How can i change the default icon of a marker? - Google Maps API | Google グループ で似たような話題があって、

Junny 氏の

> Thanks, but the problem is that i'm not using jscript, no web browser,
> is an appplication in j2me. I'm using google static maps, and the api
> don't show how change the icon.

という質問に対し、Andrew Leach 氏は

If you're using Static Maps but not in a web browser, you are
contravening the Terms of Service. See http://code.google.com/apis/maps/terms.html
paragraph 10.8

と答えている。Junny 氏の

> Somebody knows another way to use google maps in j2me (mobile)?

に対して Andrew Leach 氏は

I suspect you need to write a J2ME browser, like Opera Mini. That can
handle static maps, and even makes an attempt at the dynamic maps (not
all that successfully, though).

You can vary the markers in Static Maps by changing the colour and using letters instead of the dot in the middle. You can't use custom icons.

と回答している。

ここで、  http://code.google.com/apis/maps/terms.html paragraph 10.8 を確認してみると

10. License Restrictions. Except as expressly permitted under the Terms, or unless you have received prior written authorization from Google (or, as applicable, from the provider of particular Content), Google's licenses above are subject to your adherence to all of the restrictions below. Except as explicitly permitted in Section 7, you must not (nor may you permit anyone else to):
10.1 ~ 10.7 は引用を省略

10.8 use the Static Maps API other than in an implementation in a web browser;

となっており、Static Maps API は web browser の実装以外からの使用を制限している。
だから Andrew Leach 氏はその制限を回避するために、Opera Mini のような J2ME ブラウザを作ったらどうかと述べている。

Google maps in non-web applications - Google Maps API | Google グループ でも似たような議論がなされている。

Terms of Service は FAQ の Can I use Google Maps in my non-Web application? で YES という回答よりも優先されるから、

Consequently the Static Maps must only be used in a web browser.

であると。

ということで、今のところ勝手には作っては駄目っぽい。ブラウザ以外でやりたい人は Google に問い合わせて許可を得ると良さそう。

Google Static Maps は便利なんだけど、JavaScript 版のように任意のアイコンを使えないんだよねー。それが、ちょっと不便なんだよなぁ。

商業利用もOK! Google Mapsについて知りたいこと -@IT では Google のエンジニアとのインタビューがあって若干の質疑応答がなされているけど、

最近増えているのは、Webブラウザではなく、デスクトップアプリから使用していいかという質問だ。しかし、これも誰でも自由に利用できるよう作成し配布していれば「構わない」そうである。JavaScriptエンジンを持つクライアントアプリで使うことはいい。

と書いてあるし。「JavaScript エンジンを持つクライアントアプリ」ですか。Google Static Map の場合はこの部分が「ブラウザなら」になるのだろうか。

やはり、私と似たようなことを考える人はいるんだなーと。


この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。

×

この広告は1年以上新しい記事の更新がないブログに表示されております。