データベースサイズを知りたい。。。web sql database | chrome extension html5

chrome extension の databaseですが
openDatabaseに指定するサイズは、制限値ではなくて、初期値?的なもののようで、超えてもエラーも何も出ません・・・
基本 html5では、5MBを超えるとメッセージが出て、okしたら自動拡張されるようです。
http://html5doctor.com/introducing-web-sql-databases/

とりあえず、今のところサイズを知ることは、出来ないようなので、データを入れるときにデータ容量だけ計算して保存しておこうかと思います。

サイズ取得に成功した方がいましたら教えてください。

隠しプロパティ?タブをアクティブにする。 | chrome extension

content scriptからデータを渡して、既存のタブをアクティブに
開いているタブをアクティブにする方法が分からなかったのですが、なんとか
http://code.google.com/chrome/extensions/tabs.html#method-update
ここをみると
update で active:true くらいしか無いのですが

selected というプロパティが存在していると

    chrome.tabs.update( grBk.menu.tab.id, {selected:true}, function(tab){});

これで行けました!
content scriptからbackgroundを呼んで、background で このupdateをします。

focus blur textboxにメッセージを入れておく。 | javascript

input textboxの文字にメッセージを入れておく。


上が初期状態、下がフォーカス時。
(filterワードを入れるボックスなのでfilterと入れてあります。

<input type="text" value="filter" id="textbox_id" >

    $('#textbox_id').focus(function(){
      if( $('#textbox_id').val().match(/filter/)){
        $('#textbox_id').val('');
      }
      $('#textbox_id').css('color','#444444');
    });
    $('#textbox_id').blur(function(){
      if( $('#textbox_id').val() == ''){
        $('#textbox_id').val('filter');
        $('#textbox_id').css('color','#aaa');
      }
    });

focus時にfilterと入っていたら消して、blur時に空のときfilterと入れておく。

javascript delete , undefined

objectの要素を削除する。

obj = {
prop: 100
};

// 100
console.log( obj.prop );

delete( obj.prop );

// undefined
console.log( obj.prop );

shortcut with keydown event keycode | chrome extension

ショートカットメニューを付けようと

key event propertiesを見ると
http://www.quirksmode.org/dom/w3c_events.html

altKey, ctrlKey, shiftKey, metaKeyがあるのでこの辺と組み合わせて。

window.addEventListener(’keydown’, function(e) {
if (!e.ctrlKey && !e.altKey && !e.metaKey && e.shiftKey ){
switch( e.keyCode ){
case 72: // H
break;
case 84: // T
break;
case 73: // I
break;
case 77: // m
break;
}
}
}, false);

shift+のときだけショートカットしてみます。
91はmacでcommandでしたが、metakey = trueになったのでこんな感じで
あと入れるとしたらtabとかですかね

ITなんとか。首相官邸ホームページ 4500万?1億?で話題になったので


数字で分かる部分が出ていたのでちょっと・・・

IIJの随意契約はこの辺、他のも同じ感じでしょうね
随意契約の理由は
> 予測不可能な緊急の調達のために、入札等を
> 行える期間が持てないことから、会計法第2
> 9条の3第4項に該当するため
http://www.e-procurement.cao.go.jp/choutatsujouhou/pdf/KoukyouChoutatsu37.pdf

こちらは、一般入札のものですね
http://www.e-procurement.cao.go.jp/choutatsujouhou/pdf/KoukyouChoutatsu38.pdf

安いー。ー;

番号 76
首相官邸ホームページにか
かる子ども向けコンテンツ
「キッズページ」の企画・
制作等業務
支出負担行為担当官
会計担当内閣参事官

一般競争(総合評価)
予定価格 13,005,300円
契約金額 2,079,000円
落 札 率 16%

番号 43
復興に向けた首相官邸ホームページの日本語版のシステム機能追加等業務にとも
なうデザイン制作等業務
支出負担行為担当官
会計担当内閣参事官

一般競争(総合評価)
予定価格 7,717,149円
契約金額 1,018,500円
落 札 率 13.2%

どんな落札率なんだよ・・・
予定価格がどれくらいの精度かわかりませんが
雰囲気としては、一般的に1300万で見積もる仕事を200万で受けましたということで、たぶんすごく頑張っていると思います。

・PRになる?
・他から仕事を貰って中抜きされるよりマシ?
・普段もっと安く仕事を受けている?
・普通に200万で十分な仕事だった?
( 普通に2人で2ヶ月掛からないで納品終わった感じかな?

そんな感じなのかな?

during tabs.executeScript: Cannot access contents of url | chrome extension

extensions/schema_generated_bindings.js:82

Error during tabs.executeScript: Cannot access contents of url “chrome-extension://myextensionId000000000000000/menu.html”. Extension manifest must request permission to access this host.

backgroundからexecuteScriptでローカルファイルのスクリプトを実行できない。
http://code.google.com/p/chromium/issues/detail?id=30756

manifest.jsonのpermissionで設定しているhttp://*/*に入っているURLは以外はダメ。( chrome-extension://的な設定は出来ないので。

出来ないので、menu.html側にイベントリスナーを書いて、backgroundでpostmessageする。

postmessageの記事はこちら
http://blog.bbtune.com/archives/1685/message-passing-chrome-extension

message passing | chrome extension

http://code.google.com/chrome/extensions/messaging.html

サイトAのとき
http://a.com/

・backgroundから、サイトAにボタンを追加
・サイトAでボタンをクリックしたことをbackgroundで取得

content scriptに、クリックしてrequestするスクリプトを追加
http://code.google.com/chrome/extensions/content_scripts.html
manifest

“content_scripts”: [
{
"matches": ["http://*.a.com/*"],
“js”: ["js/jquery-1.7.2.min.js","js/content.js"]
}
],

js/content.js

var grCont = {};
grCont.doClick = function(){
// クリックしたらメセージを送る
chrome.extension.sendRequest({greeting: “hello”}, function(response) { console.log(response.farewell);});
};
$(document).ready(function(){
var url = location.href;
//ボタンを作る
$(’body’).prepend(”click here“);
// ボタンに関数を
$(’#myclick’).click(grCont.doClick);
});

background.js に イベントリスナーを入れる

chrome.extension.onRequest.addListener(
function(request, sender, sendResponse) {
console.log(’onrequest’);
console.log(sender.tab ?
“from a content script:” + sender.tab.url :
“from the extension”);
if (request.greeting == “hello”)
sendResponse({farewell: “goodbye”});
});

サンプルそのままですが。
これでページに埋めたリンクをクリックするとメッセージのやり取りが発生します。
開いているa.comでクリックするとconsoleにgoodbyeと。

タブレットって何だよ?iPad?android?俺は持っている。

まだまだタブレットという言葉は浸透していないようです。
本田さんに聞くと俺は持っているとのこと

タブレットとは? by wikipedia

タブレット(英語: tablet)は「板、机、テーブル」などを意味した table に縮小辞を添えたもので、元来、携帯できるサイズの石板や木板などのこと。おもに文書の作成などに関連して用いられ、直接文字を書き込むものや、下敷きとして用いるものがあった。 また英語では、16世紀以来、「錠剤」のような意味でも使われるようになっている

16世紀から錠剤のような意味で使われていると。

本田圭佑さんが、ミンティアとドコモとかのWタブレットCMに起用される日も近いですね。

web sql database | chrome extension

とりあえず 50 Mとかで開くことが出来るので OK っぽい?です。 ( unlimited )

gr.webdb ={
db : null,
init:function(){
gr.webdb.open();
gr.webdb.createTable();
},
open : function() {
var dbSize = 50 * 1024 * 1024; // 50MB
gr.webdb.db = openDatabase(”gr”, “1.0″, “gr”, dbSize);
},

ちょっと触って思ったのは、transactionが非同期なのがなかなか
ajaxと同じだけど、普段のsqlのイメージと違うちょっと。