Ajaxで今よみがえる(^^;;-->[クロスブラウザ技術 ]DHTMLサンプル集
-- リスト --
【カテゴリー】 ActionScript ( 6 ) AIR ( 4 ) AjaSQL ( 10 ) Ajax ( 675 ) Arax ( 1 ) canvas ( 15 ) CSS ( 24 ) ( 9 ) DLNA ( 1 ) Dojo ( 25 ) DOM ( 51 ) ES4 ( 4 ) Ext JS ( 5 ) 反重力物質 ( 1 ) ffAdd-on ( 1 ) Flash ( 48 ) Flash Remoting ( 11 ) FTP ( 2 ) GAF ( 9 ) Google Maps ( 124 ) Google ガジェット ( 1 ) GPS ( 44 ) HTML ( 11 ) HTTPヘッダサンプル ( 11 ) IME ( 2 ) Internet ( 2 ) iPhone ( 50 ) IPv6 ( 1 ) 漫画 ( 4 ) Java ( 49 ) JavaScript ( 344 ) jKamo ( 8 ) jQchart ( 4 ) jQuery ( 207 ) jquery-ref ( 1 ) jsGadget ( 19 ) jslb_ ( 3 ) jslb_ajax ( 9 ) JSON ( 49 ) JSR223 ( 7 ) kjscmd ( 1 ) KNOPPIX ( 1 ) Linux ( 18 ) Mac ( 9 ) Memo ( 3 ) Microformats ( 2 ) Mini AJAX ( 2 ) MochiKit ( 2 ) mootools ( 10 ) Movable Type ( 58 ) MySQL ( 10 ) NewGameWeb ( 2 ) Nucleus ( 8 ) OpenAJAX ( 3 ) OpenDocument ( 1 ) OS ( 10 ) P2P ( 2 ) Perl ( 8 ) PHP ( 38 ) PostGIS ( 1 ) PostgreSQL ( 4 ) prototype.js ( 28 ) ROBOT ( 1 ) RSSリーダー ( 15 ) Ruby on Rails ( 7 ) SPDY ( 1 ) Spry ( 6 ) SQLite ( 17 ) SQLiteWorker ( 2 ) ssh ( 1 ) SSI ( 2 ) SVG ( 23 ) TRON ( 1 ) Ubiquity ( 7 ) Video ( 1 ) VML ( 1 ) Web Slice ( 1 ) Web Sockets ( 25 ) Webサービス ( 107 ) widget ( 6 ) Wii ( 1 ) Wiki ( 1 ) Win ( 6 ) WSH ( 1 ) X01HT ( 30 ) XML ( 32 ) XOOPS ( 1 ) XQuery ( 2 ) XUL ( 4 ) Yahoo! UI ( 74 ) 日付入力用カレンダー ( 1 ) 『Ajax実践テクニック』 ( 1 ) 『入門 Ajax』 ( 42 ) WinTips ( 2 ) こりゃすごい ( 7 ) チューニング ( 30 ) ダイナミックロード関数 ( 7 ) リファレンス ( 20 ) ライブラリ ( 210 ) レーダー雨量表示 ( 1 ) ハード ( 35 ) ペンギン ( 2 ) ブラウザ ( 109 ) ブログでBBS ( 1 ) アクセスグラフ ( 3 ) イベント ( 2 ) カレンダーによる日付入力スクリプト ( 4 ) クロスブラウザ ( 14 ) クロスブラウザ関数 ( 8 ) スポーツ ( 1 ) スマートフォン ( 8 ) セキュリティ ( 155 ) ソフトイーサ ( 1 ) マッシュアップ ( 23 ) 暗号 ( 4 ) 映画 ( 57 ) 河川の水位グラフ ( 3 ) 回線 ( 2 ) 開発ツール ( 38 ) 牛久大仏 ( 19 ) 携帯 ( 150 ) 言語 ( 19 ) 故障 ( 9 ) 高橋家の謎 ( 3 ) 広告とか ( 1 ) 洪水警報システム ( 2 ) 今日のひと言 ( 10 ) 仕様 ( 113 ) 雑談 ( 357 ) 実装 ( 2 ) 書籍 ( 20 ) 親子ウインドウ有無の確認関数 ( 3 ) 新海誠 ( 3 )
Web Sockets Domo

* サーバー側は、小松氏のこれをbloga.jp:80へ置いてあります。
* クライアント側はWS処理をjQueryプラグイン化してみました。これです。
* ちなみに、このDemoサンプルは、下記5行でローカルでも別ドメインでもどこにでも設置出来ます。
<script src="http://bloga.jp/ws/jq/js/jquery-1.3.2.min.js" type="text/javascript"></script> <script src="http://bloga.jp/ws/jq/js/jquery.ws-0.3-noenc-pre.js" type="text/javascript" charset="utf-8"></script> <script src="http://bloga.jp/ws/jq/conn/wschatdemo0.3.js" type="text/javascript"></script> <script>/*サポートしてない時のalertメッセージを抑止*/$.ws.wsSetup({nonosupportmsg:true});</script> <div id="wsdemos"></div>

【info】いつもいろいろなテストなどをページ内のあちこちでやっているので、重かったり、壊れていたりするf^^;ことも多いです。実験用ですので、カオス(混沌)をあえて意図したりもしますので、標準やValidとは無縁だったりしますが、何卒、ご了承ください ( _ _ b

【info】 最近はTwitterでぶつぶつ言ってることが多いです。
>http://twitter.com/toshirot

【info】 Chrome Extension [WebSocket Chat] もちろんChrome専用です
https://chrome.google.com/extensions/detail/fnoegeafibddabfhmpmhniphlcojkjli

2008年07月28日

【iPhone】iPhone用 JavaScriptデータベースプログラミング入門 (3)

Ajax , JavaScript , SQLite , iPhone , リファレンス , 携帯 ブックマークに追加する ブックマーク-- Hatena  / Livedoor track feed


| 目次 |

10.openDatabase の第三引数(displayName)

第三引数は、ディスプレイ名ということになっています。何でしょう?

やってみます。
  openDatabase("myDB1","1.0");
  openDatabase("mydisplayName2","1.0","displayName is ほげ");
第三引数無しと有りです。で、ディスプレイ名とは何でしょう?

たぶんこれかな?と思うわけです。



日本語も使えています。

11.openDatabase の第四引数(size)

第四引数は、サイズです。データベースファイルのサイズで、単位はbytesです。

これは、セキュリティのこともありますので少し気になります。

デフォルトで最大サイズが5MBだったことは、前項の画像でもわかりますが、これを指定するとどうなるのでしょうか?

やってみましょう。
  openDatabase("size","1.0","テスト",60000);




指定したサイズ(60000 byte 約0.057MB)とは関係なく5MBと表示されています(いいのかな?)。


12.データベースの最大サイズは? 

では、5MB(5242880byte)を超えたり逆に0byteだったりするとどうなるでしょう?
 openDatabase("size 0 byte","1.0","サイズ 0",0);
  openDatabase("size 1 byte","1.0","サイズ 1",1);
  openDatabase("size 5000000 byte","1.0","サイズ 5000000",5000000);
  openDatabase("size 5000001 byte","1.0","サイズ 5000001",5000001);//一回目
  openDatabase("size 5200000 byte","1.0","サイズ 5200000",5200000);
  openDatabase("size 5200001 byte","1.0","サイズ 5200001",5200001);
  openDatabase("size 5200002 byte","1.0","サイズ 5200002",5200002);
  openDatabase("size 5200003 byte","1.0","サイズ 5200003",5200003);
  openDatabase("size 5200004 byte","1.0","サイズ 5200004",5200004);
  openDatabase("size 5200005 byte","1.0","サイズ 5200005",5200005);
  openDatabase("size 5200010 byte","1.0","サイズ 5200010",5200010);
  openDatabase("size 5200100 byte","1.0","サイズ 5200100",5200100);//再起動後
  openDatabase("size 5210000 byte","1.0","サイズ 5210000",5210000);
  openDatabase("size 5240000 byte","1.0","サイズ 5240000",5240000);
  openDatabase("size 5242000 byte","1.0","サイズ 5242000",5242000);
  openDatabase("size 5242800 byte","1.0","サイズ 5242800",5242800);
  openDatabase("size 5242879 byte","1.0","サイズ 5242879",5242879);
  openDatabase("size 5242880 byte","1.0","サイズ 5242880",5242880);
  openDatabase("size 5242881 byte","1.0","サイズ 5242881",5242881);
  openDatabase("size 6000000 byte","1.0","サイズ 6000000",6000000);
  openDatabase("size 10485760 byte","1.0","サイズ 10485760",10485760);
  openDatabase("size 104857600 byte","1.0","サイズ 104857600",104857600);
  openDatabase("size 524288000 byte","1.0","サイズ 524288000",524288000);

一回目は次のように、size 5000001 byteまで生成されました。でも 5000001 byteは5MBではありません。4.768MBです。それでも、最大サイズは5MBと表示されています。



試しに、1度電源を切って再起動してから試したら、今度は次のように、size 5200100 byteまで生成されました。でも 5200100 byteも5MBではありません。4.9592MBです。そして、最大サイズはこれも5MBと表示されています。



推測ですが、このサイズは残メモリなども影響しつつ?動的にリミッターがかかるのかもしれません。いずれにしても、約5MBを超える指定は無視されます。

この約5MBの「約」という動作の仕方が少しいやな感じですが、どうせ、指定なしでも、0byteを指定しても、5MBになってしまうので、あまり深く考えずに、第四引数は省略してiPhoneにおまかせで良いのかもしれません。

ユーザー側のキャパを超えることはできないわけですし。

ちなみに、例外はどうでしょうか?
   try{
    openDatabase("size 1000000000 byte","1.0","サイズ 1000000000",1000000000);
  } catch(e) {
     alert(e);//ダイアログは表示されません。
  }

エラーは出ずに、無視されます。コンソールにも何も表示されません。ただ、無視されます。

これが、PC版のSafariだと、[設定]-[セキュリティ]の中で、「規定のデータベースの最大サイズ」を 1,5,10,50,100,500MBの中から選択できるようになっていますが、iPhoneは携帯であるためか、小さく、単純な設定になっているわけです。

13.データベースの最大個数は? 

データベース1個あたりの最大サイズは5Mでしたが、では、何個作れるのでしょう?これは、iPhone 8Gバイトモデルと16Gバイトモデルでは異なるかもしれません。

今回は、16Gバイトモデルで試しました。試したコードは次のとおり。一応1byteで100回まわしています。
 function createDB(){
  cnt=0;
  setInterval(function(){
      if(cnt<100)
        openDatabase("size"+cnt,"1.0","sizeテスト",1);
      cnt++
    },100
  )
}
createDB();

この結果、1回目は30個できました。1byte指定でも前項のとおり5MBできてしまうので、5MB×30で150MB分です。

次に、クリアして、再起動し、もう一度試したら、今度は55個できました。275MB分です。

その後、他のDBを作成したり、もう一度繰り返したりしていると、今日のところは、100個以上は楽に作れることまでは確認しました。

生成されたデータベースの削除は、iPhoneユーザーは、設定から行うわけですが、一括選択での削除ができず、1個1個削除しなければならないので、結構面倒です。

これだけ一気に生成するのに、何の警告メッセージも出ませんでしたので、少し問題かな?と思います。
| 目次 |


  

All About/JavaScript

All About のJavaScript関連記事を書いています。参考にしていただければ幸いです。