chrome extension の databaseですが
openDatabaseに指定するサイズは、制限値ではなくて、初期値?的なもののようで、超えてもエラーも何も出ません・・・
基本 html5では、5MBを超えるとメッセージが出て、okしたら自動拡張されるようです。
http://html5doctor.com/introducing-web-sql-databases/
とりあえず、今のところサイズを知ることは、出来ないようなので、データを入れるときにデータ容量だけ計算して保存しておこうかと思います。
サイズ取得に成功した方がいましたら教えてください。
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をします。
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と入れておく。
objectの要素を削除する。
obj = {
prop: 100
};
// 100
console.log( obj.prop );
delete( obj.prop );
// undefined
console.log( obj.prop );
ショートカットメニューを付けようと
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とかですかね

数字で分かる部分が出ていたのでちょっと・・・
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ヶ月掛からないで納品終わった感じかな?
そんな感じなのかな?
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
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と。
まだまだタブレットという言葉は浸透していないようです。
本田さんに聞くと俺は持っているとのこと

タブレットとは? by wikipedia
タブレット(英語: tablet)は「板、机、テーブル」などを意味した table に縮小辞を添えたもので、元来、携帯できるサイズの石板や木板などのこと。おもに文書の作成などに関連して用いられ、直接文字を書き込むものや、下敷きとして用いるものがあった。 また英語では、16世紀以来、「錠剤」のような意味でも使われるようになっている
16世紀から錠剤のような意味で使われていると。
本田圭佑さんが、ミンティアとドコモとかのWタブレットCMに起用される日も近いですね。
とりあえず 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のイメージと違うちょっと。