head
2014年6月19日木曜日
HTML5 canvasで、スライドショー部品を作成。 2014-06-19
梅雨ですね。
HTML5で、スライドショー部品を作成してみます。
全編の
http://knaka0209.blogspot.jp/2014/06/chrome-packaged-appshtml5canvas-2014-06.html
chrome Appsのスライド部品の続編です。
HTML5版に一部修正しました。
[前おき]
スライドショー部品で、jQueryプラグインを使用していたのですが、
画像の数が多くなると、読込み起動が重たくなる場合があり。
対策で別ライブラリ等を探したのですが。結局、HTML5で自作する事にしました。
(初期化で、ブラウザ画面内のIMGタグなどに、全画像配置する仕組みが重かったようです)
[主な要件]
1) 1画像づつスライドさせる。
2) 1画像を通信して取得後完了後、アニメーションを開始。
*) 目安目標で、大きめの画像(500KB以上) 100-150 枚程度を、永久ループ可能。
[Screen]
[source code]
Github : https://github.com/kuc-arc-f/h5_canvas_slide
起動画面
https://github.com/kuc-arc-f/h5_canvas_slide/blob/gh-pages/top.html
ブラウザから、XMLHttpRequestを一部設定変更を除き使えないようで
Image.src 属性で直接URL指定します。
コールバックからのアニメ起動は同じ。
==========================
var image = new Image();
image.src = item.url + '?' + new Date().getTime();
image.onload = function() {
CustomSlide.start_anim( image, mNUM_TIMER );
}
==========================
Chrome Packaged Appsで、スライドショー部品を作成。(HTML5/canvas) 2014-06-19
梅雨ですね。
HTML5で、スライドショー部品を作成してみます。
[前おき]
スライドショー部品で、jQueryプラグインを使用していたのですが、
画像の数が多くなると、読込み起動が重たくなる場合があり。
対策で別ライブラリ等を探したのですが。結局、HTML5で自作する事にしました。
(初期化で、ブラウザ画面内のIMGタグなどに、全画像配置する仕組みが重かったようです)
[主な要件]
1) 1画像づつスライドさせる。
2) 1画像を通信して取得後完了後、アニメーションを開始。
*) 目安目標で、大きめの画像(500KB以上) 100-150 枚程度を、永久ループ可能。
[Screen]
[source code]
Github : https://github.com/kuc-arc-f/chrome_slide
初期データの配列作成します。 get_slideData()
スライド部品のインスタンスを作成し、
間隔=ミリ秒
配列データ(URL etc)
canvas width
canvas height
を渡す。
XMLHttpRequest で画像を取得
Imageのロードのコールバック内から
アニメーションを開始させる。
アニメーション処理。
タイマで起動、画面左の端でアニメ終了> 次の画像の処理>LOOP
*) 各描画間隔=20 msecですが、10 -15msecでも良いかと思います。
*) 画像読込みを、1画像づつで。メモリ消費は減らせた気がします。
[update 2014-06-19 13:11]
続編のHTML5版も追加しました。
http://knaka0209.blogspot.jp/2014/06/html5-canvas-2014-06-19.html
HTML5で、スライドショー部品を作成してみます。
[前おき]
スライドショー部品で、jQueryプラグインを使用していたのですが、
画像の数が多くなると、読込み起動が重たくなる場合があり。
対策で別ライブラリ等を探したのですが。結局、HTML5で自作する事にしました。
(初期化で、ブラウザ画面内のIMGタグなどに、全画像配置する仕組みが重かったようです)
[主な要件]
1) 1画像づつスライドさせる。
2) 1画像を通信して取得後完了後、アニメーションを開始。
*) 目安目標で、大きめの画像(500KB以上) 100-150 枚程度を、永久ループ可能。
[Screen]
[source code]
Github : https://github.com/kuc-arc-f/chrome_slide
初期データの配列作成します。 get_slideData()
スライド部品のインスタンスを作成し、
間隔=ミリ秒
配列データ(URL etc)
canvas width
canvas height
を渡す。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
onload = function() { | |
var canvas =document.getElementById('id_canvas'); | |
var iW = canvas.width; | |
var iH = canvas.height; | |
console.log( 'iW='+ iW +',iH=' + iH) | |
var items= get_slideData(); | |
var slide = new CustomSlide(1000 * 10 ,items, iW, iH ); | |
slide.start(); | |
} | |
// | |
//function | |
// | |
function get_slideData(){ | |
var items= new Array(); | |
items[0]={ title:'p11.JPG' , url: 'http://kuc-arc-f.github.io/h5_t0604_page/img/p11.JPG' }; | |
items[1]={ title:'p12.JPG' , url: 'http://kuc-arc-f.github.io/h5_t0604_page/img/p12.JPG' }; | |
items[2]={ title:'p13.JPG' , url: 'http://kuc-arc-f.github.io/h5_t0604_page/img/p13.JPG' }; | |
items[3]={ title:'p14.JPG' , url: 'http://kuc-arc-f.github.io/h5_t0604_page/img/p14.JPG' }; | |
return items; | |
} |
Imageのロードのコールバック内から
アニメーションを開始させる。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
CustomSlide.load_image = function ( item, ipos) { | |
console.log('#load_image=' + item.url ); | |
var xhr = new XMLHttpRequest(); | |
xhr.open('GET', item.url ); | |
xhr.responseType = 'blob'; | |
xhr.onload = function() { | |
console.log('#r.onload,url=' + item.url ); | |
var image = new Image(); | |
var objURL = URL.createObjectURL(xhr.response); | |
image.src = objURL; | |
image.onload = function() { | |
console.log('#image.onload.w='+ image.width + ',h='+ image.height); | |
CustomSlide.start_anim( image, mNUM_TIMER ); | |
}; | |
}; | |
xhr.send(); | |
}; | |
アニメーション処理。
タイマで起動、画面左の端でアニメ終了> 次の画像の処理>LOOP
*) 各描画間隔=20 msecですが、10 -15msecでも良いかと思います。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
CustomSlide.start_anim = function (image, msec ) { | |
var ixSt = mWidthSlide; | |
var ix = 0; | |
var imx = msec / mDuration; | |
var ixDf = ixSt / imx; | |
console.log('imx='+ imx + ',ixDf=' +ixDf +',ipos='+ mPosition_Slide ); | |
setTimeout(function(){ | |
function gravity() { | |
mContext.clearRect(0, 0, mWidthSlide, mHeightSlide); | |
var iposX= ixSt - (ix * ixDf); | |
// console.log('iposX =' + iposX ); | |
var iposY= CustomSlide.get_positinY(image); | |
mContext.drawImage(image, iposX, iposY, image.width, image.height); | |
if(iposX < 0){ | |
clearInterval(g); | |
$(this).delay( mNUM_WAIT_AFT ).queue(function() { | |
CustomSlide.display_anim( mPosition_Slide +1 ); | |
$(this).dequeue(); | |
}); | |
} | |
ix++; | |
}; | |
var g = setInterval(gravity, mDuration); | |
}, 100 ); | |
}; | |
[update 2014-06-19 13:11]
続編のHTML5版も追加しました。
http://knaka0209.blogspot.jp/2014/06/html5-canvas-2014-06-19.html
2014年6月13日金曜日
asm.js で, 引数を渡す。 2014-06-13
asm.js で, 引数を渡す。 2014-06-13
さて、asm.jsの件です。
jsとの連携部分で
C言語側の関数をエクスポートしておき、JSから呼び出すメモです。
SRC:
main関数なしで、関数のみ配置。
引数=数値、数値、文字 を型変換と結合設定します。
リターンコードは、JS側で使います。
destの下に、HTML形式でコンパイルします。
引数は、
EXPORTED_FUNCTIONSで、Cは、接頭語=アンスコ[_]が必要。
EMCC_FAST_COMPILER=0 emcc export1.c -o dest/export1.html -s EXPORTED_FUNCTIONS="['_ex_func01' ]"
呼び出すJS、書きます。
ccall, cwrap() などで、関数使えるようです。
cwrap の場合は
関数名、戻り値、引数(複数可能)
を指定します。
出力されたHTMLに、読み込みます。
===
<script async type="text/javascript" src="test.js"></script>
===
ブラウザで読み込むと、asm.js処理結果が
JS呼出側からコンソールにログ出力されます。
さて、asm.jsの件です。
jsとの連携部分で
C言語側の関数をエクスポートしておき、JSから呼び出すメモです。
main関数なしで、関数のみ配置。
引数=数値、数値、文字 を型変換と結合設定します。
リターンコードは、JS側で使います。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//export1.c | |
#include <emscripten.h> | |
#include <stdio.h> | |
#include <stdlib.h> | |
char* ex_func01( int a, float b, const char* c ) | |
{ | |
char *po= (char *)malloc(sizeof(char) * 128 ); | |
sprintf(po, "a=%d ,b=%f ,c=%s\n", a, b, c ); | |
printf( "%d %f %s\n", a, b, c ); | |
return po; | |
} |
destの下に、HTML形式でコンパイルします。
引数は、
EXPORTED_FUNCTIONSで、Cは、接頭語=アンスコ[_]が必要。
*) 関数指定無しは、-s EXPORT_ALL=1
>EMCC_FAST_COMPILER=0 emcc export1.c -o dest/export1.html -s EXPORTED_FUNCTIONS="['_ex_func01' ]"
呼び出すJS、書きます。
ccall, cwrap() などで、関数使えるようです。
cwrap の場合は
関数名、戻り値、引数(複数可能)
を指定します。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//test.js | |
onload = function(){ | |
console.log('#onload'); | |
var ex_func01= cwrap( 'ex_func01', 'string', ['number' ,'number' ,'string' ] ); | |
var ret= ex_func01(1, 2.0, 'arg3'); | |
console.log('#ret=' +ret ); | |
} |
出力されたHTMLに、読み込みます。
===
<script async type="text/javascript" src="test.js"></script>
===
ブラウザで読み込むと、asm.js処理結果が
JS呼出側からコンソールにログ出力されます。
*) 通常js(非asm) vs asm.js 性能比較の検証も、今後企画したいと思います。
単純な重たい計算処理を実装したところ、あまり誤差が出ませんでした。(汗、、)
asm.js で, helloworldに挑戦。 2014-06-13
さて、asm.jsの件です。
環境:
macで
emscripten :1.19
LLVM : 3.3
clang : 3.3
環境構築の詳細は省略とさせて頂きます。(探せば出そうでした。)
流れ的には、下記のイメージだったようです。
============================================
node.js git homebrew がインストール済みの状態で、
git clone https://github.com/kripken/emscripten
*) /emscripten はPATHに追加した方が良いかもです。
brew install llvm --with-clang
で、
emcc を1回実行して、
ホームの $HOME/.emscripten を編集(LLVM_ROOT=llvmを、 brewでインストールしたフォルダ)
LLVM_ROOT = os.path.expanduser(os.getenv('LLVM') or '/usr/local/Cellar/llvm33/3.3_1/bin') # directory
*)pyhton2のエラーで出る場合、/usr/bin/pythno2 に、pyhton2.7のリンク張って下さい。
============================================
[hello world出す。]
testフォルダにサンプルありましたのでコピー。emscripten/hello_world.c
emccでコンパイルですが、fastcomp関係のエラーがでる場合、
EMCC_FAST_COMPILER=0
を設定します。 dest の下にコンパイルします。
>
EMCC_FAST_COMPILER=0 emcc hello_world.c -o dest/hello_world.js
node.js で、確認します。
>
node dest/hello_world.js
hello, world!
シェルで記載する場合(参考)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
#export EMCC_CFLAGS="-O3" | |
rm -rf dest/* | |
export EMCC_FAST_COMPILER=0 | |
emcc hello_world.c \ | |
-o dest/hello_world.js \ |
HTML出力する場合
>
EMCC_FAST_COMPILER=0 emcc hello_world.c -o dest/hello_world.html
dest/hello_world.html を、ブラウザで開いて確認。
[インラインJavascript]
C言語側から、インラインで、javascript実行できるようです。コンパイルします。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <emscripten.h> | |
#include <stdio.h> | |
#include <stdlib.h> | |
int main() { | |
printf("hello, world!\n"); | |
EM_ASM( | |
//js-call | |
console.log( '#hello, world-Inline-JS '); | |
); | |
return 1; | |
} |
EMCC_FAST_COMPILER=0 emcc hello_world_in.c -o dest/hello_world_in.js
nodeで確認します。
Cの表示と、JSの表示が両方出力されます。
>node dest/hello_world_in.js
hello, world!
#hello, world-Inline-JS
*)それでは、また
2014年6月11日水曜日
Chromium OS を、VMWareにインストールしてみる (2)。2014-06-11
さて、前編
http://knaka0209.blogspot.jp/2014/06/chromium-os-vmware2014-06-10.html
の続編です。
chrome OSのクローンOSぽい、Chromium OS
のレポートで
といってもカンタンな使い方編で、技術的な内容はありません。
再度OS起動して、ログインします。
パスワードの入力が必要なようです。
http://knaka0209.blogspot.jp/2014/06/chromium-os-vmware2014-06-10.html
の続編です。
chrome OSのクローンOSぽい、Chromium OS
のレポートで
といってもカンタンな使い方編で、技術的な内容はありません。
再度OS起動して、ログインします。
パスワードの入力が必要なようです。
ランチャーを開けると
ブラウザ、ストア、Filesアプリなど。あります。
下のブラウザのボタン押すと、デスクトップが表示されます。
右ボタン押すと、メニュー表示内に壁紙の設定ができそうです。
壁紙の設定です。
ファイルの選択ボタンなどあります。
あらかじめDLした画像を、
ダウンロードのフォルダから設定してみました。
次に、Filesアプリ起動します。
左側に
ダウンロード
Googleドライブ
など、選択できそうです。
ファイルなどは、Googleドライブに保存が前提に見えます。
(ローカルにファイルを置く概念が無いように、見えます)
*) 開発に使えそうなOSでは無い気がしてきましたが。。
どちらかというと、スマホOSぽいかもしれませんね。
文書作成、システム開発でなく。軽めのネット作業を中心のOS
と考えると。できる事は限定されるが十分使える範囲かもしれません。
以上、Chromium OS使用したレポートでした。
2014年6月10日火曜日
Chromium OS を、VMWareにインストールしてみる。2014-06-10
さて、chrome OSのクローンOSぽい、Chromium OS
が存在しているようで、インストールしてみました。
環境など;
win7 64bit
VMWare player 6.x (古い)
下記から、DLできました。
http://chromeos.hexxeh.net/
[インストールの動画]
http://www.youtube.com/watch?v=Bnln_0iojWE
DLしたファイル
===============================
ChromeOS-Vanilla-4028.0.2013_04_20_1810-r706c4144-VMWare.vmdk
ChromeOS-Vanilla-4028.0.2013_04_20_1810-r706c4144-VMWare.vmx
===============================
設定の変更。
vmxファイルを開き, ethernet 関係の設定を追加。
===============================
ethernet0.virtualDev = "e1000"
===============================
仮想マシンを開き、設定変更。
プロセッサ、コア数の変更 =2
左下のchrome 起動して、webサービスは使えるようです。
webStoreは開きましたが、アプリのインストールはできませんでした。
(DLボタンが表示されない。chromeOSではないので、当たり前ですね、、)
外部サバに、自社ブランドのchrome Apps(ZIP)置く。⇒DL後
機能拡張タブから読み込むと、インストールできました。
(開発時のカンタンな動作確認程度には、使えそうです。)
[update 2014/06/11]
続編も追加しました。
http://knaka0209.blogspot.jp/2014/06/chromium-os-vmware-22014-06-11.html
が存在しているようで、インストールしてみました。
環境など;
win7 64bit
VMWare player 6.x (古い)
下記から、DLできました。
http://chromeos.hexxeh.net/
[インストールの動画]
http://www.youtube.com/watch?v=Bnln_0iojWE
DLしたファイル
===============================
ChromeOS-Vanilla-4028.0.2013_04_20_1810-r706c4144-VMWare.vmdk
ChromeOS-Vanilla-4028.0.2013_04_20_1810-r706c4144-VMWare.vmx
===============================
設定の変更。
vmxファイルを開き, ethernet 関係の設定を追加。
===============================
ethernet0.virtualDev = "e1000"
===============================
仮想マシンを開き、設定変更。
プロセッサ、コア数の変更 =2
ネットワークアダプタの変更。
カスタム>NAT でOKでした。
起動すると、ログイン入力要求されますので
ユーザ等入力、するとログインできます。
左下にランチャーも開きました。
左下のchrome 起動して、webサービスは使えるようです。
webStoreは開きましたが、アプリのインストールはできませんでした。
(DLボタンが表示されない。chromeOSではないので、当たり前ですね、、)
外部サバに、自社ブランドのchrome Apps(ZIP)置く。⇒DL後
機能拡張タブから読み込むと、インストールできました。
(開発時のカンタンな動作確認程度には、使えそうです。)
*)実機は、見たことないのですが、
webサービス、chrome Appsは使えそうですので
機能は限定されるけど
ネットユーザの、サブマシン的な使い方は十分できるるかもですね。
*) chrome bookが早く日本で発売されるといいのですが。。
[update 2014/06/11]
続編も追加しました。
http://knaka0209.blogspot.jp/2014/06/chromium-os-vmware-22014-06-11.html
2014年6月6日金曜日
Chrome Packaged Apps, Indexed DB編(2) 2014-06-06
前回のIndexed DDB編
http://knaka0209.blogspot.jp/2014/06/chromedb1.html
の続きです。
Project: https://github.com/kuc-arc-f/chrome_db1
検索、表示系の処理
cursor 使って、データ格納します。
cursor.continue() で、次の行へ移動みたいです。
[表示系]
DOM追加操作します。<li>タグで追加。
[スクリーン]
*) データ量も少ないので、動作は軽いですが、
5MB限界みたいですので、拡張できるか調べたいと思います。
*) まとめ一覧。こちら、
http://knaka0209.blogspot.jp/2014/06/chrome-pkg.html
http://knaka0209.blogspot.jp/2014/06/chromedb1.html
の続きです。
Project: https://github.com/kuc-arc-f/chrome_db1
検索、表示系の処理
cursor 使って、データ格納します。
cursor.continue() で、次の行へ移動みたいです。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
DbHelper.prototype.get_allItems = function(view) | |
{ | |
var rqOpen = indexedDB.open(DB_NAME); | |
rqOpen.onsuccess = function(e) { | |
var db= e.target.result; | |
var tx = db.transaction(STORE_NAME, 'readonly' ); | |
var store = tx.objectStore(STORE_NAME); | |
var rq = store.openCursor(); | |
rq.onsuccess = function(e) { | |
cursor = rq.result; | |
if(cursor) { | |
var item= new Item(); | |
var data = cursor.value; | |
item.id =data.id; | |
item.name = data.name; | |
item.nameKana=data.nameKana; | |
view.disp_line(item); | |
cursor.continue(); | |
} | |
db.close(); | |
}; | |
} | |
}; |
[表示系]
DOM追加操作します。<li>タグで追加。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
View.prototype.disp_init = function() { | |
$('ul#id-ul-out').remove(); | |
var divOut= $('div#id-div-out'); | |
var ulObj= $('<ul id="id-ul-out"></ul>'); | |
divOut.append( ulObj ); | |
}; | |
View.prototype.disp_line = function( item ) { | |
// console.log( items ); | |
var ulObj= $('ul#id-ul-out'); | |
var sLine='<li>' + item.id + ': '+ item.name + ': '+item.nameKana+ '</li>'; | |
ulObj.append( $(sLine) ); | |
console.log( sLine ); | |
}; |
*) データ量も少ないので、動作は軽いですが、
5MB限界みたいですので、拡張できるか調べたいと思います。
http://knaka0209.blogspot.jp/2014/06/chrome-pkg.html
Chrome Packaged Apps, Indexed DB編 2014-06-06
Chrome Packaged AppsのIndexed DB操作などについて。
HTML5の内容になり、Packagedに依存する部分は無いかと思いますが。
クライアント開発で使える技術かと思いますので、メモです。
*)Indexed DBは、開発中の製品でも実績が無いため、
サンプル作りがあまい部分あります。。
対応ブラウザなどのチェック、
今回は、Chromeのみで必要無いと思いますが、
window.indexedDB などを、一般的に起動時チェック方法ありそうです。
[DB初期化など]
DB存在しない場合、
onupgradeneeded() が呼ばれ、ストア作成する。
key:Id
Index : name
とかにしときます。(一旦、db.close() しときます。)
[データ追加] HTML
追加の入力欄作成します。
id
name
kana など
[データ追加]
store に、putします。
*)
トランザクション開始>ストアへPUT みたいな流れ。
key=id なので、重複値(id)は、追加されないようです。
*) 続きは、続編(表示系の処理)
に記載予定です。
http://knaka0209.blogspot.jp/2014/06/chromedb1-2.html
*)まとめ一覧。こちら、
http://knaka0209.blogspot.jp/2014/06/chrome-pkg.html
HTML5の内容になり、Packagedに依存する部分は無いかと思いますが。
クライアント開発で使える技術かと思いますので、メモです。
*)Indexed DBは、開発中の製品でも実績が無いため、
サンプル作りがあまい部分あります。。
Project: https://github.com/kuc-arc-f/chrome_db1
対応ブラウザなどのチェック、
今回は、Chromeのみで必要無いと思いますが、
window.indexedDB などを、一般的に起動時チェック方法ありそうです。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
function init_proc() | |
{ | |
if (window.indexedDB || window.webkitIndexedDB || window.mozIndexedDB) { | |
console.log('OK: use indexedDB'); | |
}else{ | |
console.log('NG: use indexedDB'); | |
} | |
var db= new DbHelper(); | |
db.getInstance(); | |
} |
DB存在しない場合、
onupgradeneeded() が呼ばれ、ストア作成する。
key:Id
Index : name
とかにしときます。(一旦、db.close() しときます。)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
DbHelper.prototype.getInstance = function( ) { | |
var db=null; | |
//open | |
var rq = indexedDB.open(DB_NAME); | |
rq.onupgradeneeded = function(result) { | |
console.log('#onupgradeneeded'); | |
db = this.result; | |
var store = db.createObjectStore(STORE_NAME, { | |
keyPath: 'id', // key= id | |
autoIncrement: false, | |
}); | |
store.createIndex('byName', 'name'); | |
db.close(); | |
}; | |
}; |
[データ追加] HTML
追加の入力欄作成します。
id
name
kana など
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<form name="form1"> | |
id (int): | |
<input type="text" id="id-text-id" value=""></input ><br /> | |
name: | |
<input type="text" id="id-text-name" value=""></input ><br /> | |
kana: | |
<input type="text" id="id-text-kana" value=""></input ><br /> | |
</form><br /> | |
<a href="#" id="id-a-add" >[ add ]</a><br /> | |
<br /> | |
<a href="#" id="id-a-show" >[ show ]</a><br /> | |
<hr /> |
[データ追加]
store に、putします。
*)
トランザクション開始>ストアへPUT みたいな流れ。
key=id なので、重複値(id)は、追加されないようです。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
DbHelper.prototype.proc_addItem = function(item ,view) | |
{ | |
var rq = indexedDB.open(DB_NAME); | |
rq.onsuccess = function(e) { | |
console.log('#onsuccess_open'); | |
var db= e.target.result; | |
var tx = db.transaction(STORE_NAME, 'readwrite'); | |
tx.oncomplete = function() { }; | |
var store = tx.objectStore(STORE_NAME); | |
var request =store.put({ | |
id : parseInt(item.id ), | |
name : item.name, | |
nameKana: item.kana | |
}); | |
request.onsuccess = function(e) { | |
console.log('#onsuccess_add'); | |
db.close(); | |
proc_addComplete(view); | |
} | |
} | |
}; |
に記載予定です。
http://knaka0209.blogspot.jp/2014/06/chromedb1-2.html
*)まとめ一覧。こちら、
http://knaka0209.blogspot.jp/2014/06/chrome-pkg.html
2014年6月5日木曜日
Chrome Packaged Apps ajax編、2014-06-05
Chrome Packaged Appsのajax通信で、RSS取得などについて。メモです
(Packagedインストール及びデバック方法は省略させて頂きます。)
参考サイト様(公式かも):
https://developer.chrome.com/apps/about_apps
ソースこちら、 https://github.com/kuc-arc-f/chrome_ajax1
(jQuery使ってます。)
chrome : v35.0.1916.114 での動作確認できました。
画面は、ボタンを配置して、イベント設定しておきます。
RSS記事の表示領域は、空テーブルを配置。
*)スタイリングは, bootstrap3使ってますが、無しでもOK。
https://github.com/kuc-arc-f/chrome_ajax1/blob/master/top.html
===============================================
<button class="btn btn-primary" id="id-a-get">[ RSS GET]</button>
<table style="width:100%;" class="table table-striped table-hover" id="id-table1">
<tbody>
</tbody>
</table>
===============================================
通信クラス(ctlNews)から、
ajax通信し、XMLパースします。
N社のRSS通信して、記事を表示
*)クロスドメイン等のエラーがでると想定してましたが、
問題なく通信できました。
https://github.com/kuc-arc-f/chrome_ajax1/blob/master/js/ctlNews.js
===============================================
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
ctlNews.prototype.load_rss = function( surl ) { | |
var items =new Array(); | |
console.log( 'surl=' + surl ); | |
$.ajax({ | |
url: surl, | |
type: 'get', | |
dataType: 'xml', | |
timeout: 5000, | |
success: function(xml, status) { | |
if (status === 'success') { | |
var row = 0; | |
var data = []; | |
var nodeName; | |
$(xml).find('item').each(function() { | |
data[row] = {}; | |
//get-childre | |
$(this).children().each(function() { | |
//nodeName | |
nodeName = $(this)[0].nodeName; | |
data[row][nodeName] = {}; | |
// sttr | |
attributes = $(this)[0].attributes; | |
for (var i in attributes) { | |
data[row][nodeName][attributes[i].name] = attributes[i].value; | |
} | |
//text | |
data[row][nodeName]['text'] = $(this).text(); | |
}); | |
row++; | |
}); | |
var ict= 0; | |
for (i in data) { | |
var itm= new Item( ); | |
itm.title= data[i].title.text; | |
itm.url = data[i].link.text; | |
if(ict < mMAX_CountItem){ | |
items[i] =itm; | |
console.log( 'lnk='+ itm.title ); | |
console.log( 'url='+ itm.url ); | |
} | |
ict++; | |
} | |
} //if_stat_success. | |
$(this).delay( 500 ).queue(function() { | |
disp_news(items); | |
$(this).dequeue(); | |
}); | |
} | |
}); | |
}; |
データ格納して、DOM追加操作します。
ID=id-table1 のテーブル内に描画します。
A要素は、target="_blank" で、別ブラウザ起動で内容を表示。
===============================================
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
function disp_news(items) | |
{ | |
for(var i = 0; i < items.length ; i++){ | |
var body= $('table#id-table1'); | |
var trObj = $('<tr></tr>'); | |
var tdObj = $('<td></td>'); | |
var a_tag = $('<a href="'+ items[i].url +'" target="_blank">'+ items[i].title +'</a>'); | |
var tdObj02 = $('<td align="right"></td>'); | |
var sAtag02 = '<a href="'+ items[i].url +'" target="_blank">'; | |
sAtag02 += ' <button class="btn btn-default" style="margin-left:10px;">'; | |
sAtag02 += ' <i class="glyphicon glyphicon-chevron-right"></i>'; | |
sAtag02 += ' </button>'; | |
sAtag02 += '</a>'; | |
tdObj.append(a_tag); | |
tdObj02.append( $(sAtag02) ); | |
trObj.append(tdObj); | |
trObj.append(tdObj02); | |
body.append(trObj); | |
} | |
} |
ajax通信後、RSS記事を表示できました。
*) まとめ(Chrome Packaged Apps 開発メモ)こちら、
http://knaka0209.blogspot.jp/2014/06/chrome-pkg.html
2014年6月4日水曜日
Chrome Packaged Apps, image編 2014-06-04
Chrome Packaged Appsのimage(画像)などについて。メモです
(Packagedインストール及びデバック方法は省略させて頂きます。)
参考サイト様(公式かも):
https://developer.chrome.com/apps/about_apps
画像の表示で、
IMG要素-SRC属性に、画像URLを指定すると。
セキュリティ関係のエラーが発生して、
表示できないようです。対策はありそうでした。
xhr(XMLHttpRequest) を使用すると、表示可能のようです。
*) 検索するとサンプルなどに、含まれてました。
ソースこちら、 https://github.com/kuc-arc-f/chrome_image
(jQuery使ってます。)
画像の取得処理。
*)どちらかというと、単純なDOM構築でなく。
通信処理後、バイナリをオブジェクトに渡す
みたいな処理ぽいです。
https://github.com/kuc-arc-f/chrome_image/blob/master/js/controller.js
===============================================
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var xhr = new XMLHttpRequest(); | |
xhr.open('GET', imageUrl); | |
xhr.responseType = 'blob'; | |
xhr.onload = function() { | |
var img = document.createElement('img'); | |
img.setAttribute('data-src', imageUrl); | |
img.setAttribute('id', s_id); | |
img.className = 'icon'; | |
var objURL = this._createObjectURL(xhr.response); | |
img.setAttribute('src', objURL); | |
element.appendChild(img); | |
return img; | |
}.bind(this); | |
xhr.send(); |
表示用のDIVタグ配置します。
https://github.com/kuc-arc-f/chrome_image/blob/master/sub.html
===============================================
<div id="id-div-img" ></div><br />
<div id="id-div-img2" ></div><br />
<div id="id-div-img3" ></div>
===============================================
サブ画面を開くと、
起動時に、外部クラウドから画像ダウンロードして
描画しています。
https://github.com/kuc-arc-f/chrome_image/blob/master/sub.js
*) 画像は、Github-page に、適当に事前に配置しておきます。
===============================================
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
AppShow.prototype.proc_init = function() { | |
console.log('#proc_init'); | |
var s1='http://kuc-arc-f.github.io/h5_t0604_page/img/p1.png'; | |
var s2='http://kuc-arc-f.github.io/h5_t0604_page/img/p2.JPG'; | |
var s3='http://kuc-arc-f.github.io/h5_t0604_page/img/p3.JPG'; | |
var ctl = new Controller(); | |
var divcont = document.querySelector('div#id-div-img'); | |
var img_t= ctl._requestRemoteImageAddElem( s1, divcont ,'id_img1'); | |
var divcont2 = document.querySelector('div#id-div-img2'); | |
var img_t= ctl._requestRemoteImageAddElem( s2, divcont2 ,'id_img1'); | |
var divcont3 = document.querySelector('div#id-div-img3'); | |
var img_t= ctl._requestRemoteImageAddElem( s3, divcont3 ,'id_img1'); | |
} |
サブ画面に表示しました。
まとめ(Chrome Packaged Apps 開発メモ)こちら、
http://knaka0209.blogspot.jp/2014/06/chrome-pkg.html
*)
[update: 2014/06/05] Gistにコード一部貼付け修正しました。
Chrome Packaged Apps 開発メモ,2014-06-04
Chrome Packaged Apps 開発メモ
(コンテンツは必要に応じて追加を計画しております。)
[ 背景 ]
chrome OS向け(及びマルチプラットフォーム)の製品開発を目標とし、
Packaged Apps の開発技術メモとして、掲載させて頂こうと思います。
*) それにしても、chrome book とかまだ販売されませんね。日本は、、
試してみたい気分です。。
参考サイト様(公式かも):
https://developer.chrome.com/apps/about_apps
[chapter-01]
window操作http://knaka0209.blogspot.jp/2014/06/chromewindow1.html
[chapter-02]
window操作, 画面間の値渡しhttp://knaka0209.blogspot.jp/2014/06/chromewindow2.html
[chapter-03]
storage操作http://knaka0209.blogspot.jp/2014/06/chromestore.html
[chapter-04]
image操作http://knaka0209.blogspot.jp/2014/06/chromeimage.html
[chapter-05]
ajax通信で簡易RSSリーダ作成http://knaka0209.blogspot.jp/2014/06/chromeajax1.html
[chapter-06]
Indexed DB編(1)
[chapter-07]
Indexed DB編(2)
[番外編1] cca(cordova chrome app)でAndroid apk作成してみる
cordova を利用したandroid Apps(APK)の手順等です。http://knaka0209.blogspot.jp/2014/07/ccacordova-chrome-appandroid-apk2014-07.html
Chrome Packaged Apps, storage操作編 2014-06-04
Chrome Packaged Appsのstorage操作などについて。
(Packagedインストール及びデバック方法は省略させて頂きます。)
参考サイト様(公式かも):
https://developer.chrome.com/apps/about_apps
storage使う例で、local
chrome.storage.local使います。
Packagedは、HTML5のlocalStorageが使えないようで、
移植する場合は、置き換えが必要みたいですね。
*) 非同期I/Oが推奨される為とか。みたいですけど、
ソースこちら、 https://github.com/kuc-arc-f/chrome_store
(jQuery使ってます。)
データ管理用に、
追加、表示、削除のA要素おきます。
https://github.com/kuc-arc-f/chrome_store/blob/master/top.html
===============================================
<a href="#" id="id-a-add" >[ add ]</a><br />
<br />
<a href="#" id="id-a-show" >[ show ]</a><br />
<br />
<a href="#" id="id-a-delete" >[ delete ]</a><br />
<hr />
===============================================
追加の処理。
https://github.com/kuc-arc-f/chrome_store/blob/master/top.js
ストレージ名=strlist
この場合、N番目の配列にid, text(文字)の各列にデータ埋め込みます。
*) Add数回押すと、N番目のデータに、
test-0, test-1 などの数値付の文字が格納されます
===============================================
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
function click_addStore() | |
{ | |
var ct = mItems.length; | |
mItems[ct] = {'id': ct, 'text': 'test-'+ ct }; | |
chrome.storage.local.set({ 'strlist' : mItems }); | |
} |
表示します。showおす。
storageから値取得して、div要素を書き換えます。
*) 前回表示データは全て削除、
配列データから、全てを再表示します。
===============================================
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
function click_showStore() | |
{ | |
$('div#id-div-box').remove(); | |
var divShow =$('#id-div-diplay'); | |
var divBox= $('<div id="id-div-box"></div>') | |
chrome.storage.local.get( 'strlist' , function(value) { | |
if(value && value.strlist) { | |
console.log( value.strlist ); | |
console.log( 'len='+ value.strlist.length ); | |
var items = value.strlist; | |
for(var i=0; i< items.length ; i++){ | |
var itm = items[i]; | |
divBox.append('<p>'+ itm.text + '</p><br />'); | |
} | |
divShow.append(divBox); | |
} | |
}); | |
} |
削除の処理、
この場合、空の配列を。ストレージ名指定で上書きしています。
*)別領域を、各個別に削除したい場合などに使える。かと思います。
===============================================
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
function click_deleteStore() | |
{ | |
mItems= new Array(); | |
chrome.storage.local.set({ 'strlist' : mItems }); | |
$('div#id-div-box').remove(); | |
} |
値を表示。追加後、[show]押した時、
まとめ(Chrome Packaged Apps 開発メモ)こちら、
http://knaka0209.blogspot.jp/2014/06/chrome-pkg.html
*)
[update: 2014/06/05] Gistにコード一部貼付け修正しました。
Chrome Packaged Apps, window操作編、画面間で値を渡す 2014-06-04
Chrome Packaged Appsのwindow操作などについて。
(Packagedインストール及びデバック方法は省略させて頂きます。)
参考サイト様(公式かも):
https://developer.chrome.com/apps/about_apps
画面間で、値を渡す例です。
前回のwindow関連の説明と、ほぼ同じです。
http://knaka0209.blogspot.jp/2014/06/chromewindow1.html
*) クライアントAppsだと、サーバ言語使えないので苦労しますね。
ソースこちら、 https://github.com/kuc-arc-f/chrome_window2
chrome.app.window.create
を使って、サブ画面を開きます。
https://github.com/kuc-arc-f/chrome_window2/blob/master/top.js
クリックイベントでサブ画面開きますが、
DOMContentLoaded の処理で、
querySelector()、次画面の要素を指定して。
値を埋め込みます。
この場合value値に、適当な文字を埋め込みます。
次画面の詳細の描画処理などは、
キー情報などを渡して使える手法かと思います。
*) ストレージに書き込んで渡す手もあるかと思います。
===============================================
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
function click_sub() | |
{ | |
chrome.app.window.create( | |
'sub.html', | |
{id: "browserSlideID", | |
bounds: { | |
'width' : 1024, | |
'height': 600 | |
} | |
} | |
, function(appWin) { | |
appWin.contentWindow.addEventListener('DOMContentLoaded', | |
function(e) { | |
console.log( '#.DOMContentLoaded' ); | |
var text1 = appWin.contentWindow.document.querySelector('#id-text1'); | |
text1.setAttribute('value', "moji-1234 from topWindow"); | |
appWin.show(); | |
} | |
) | |
} | |
); | |
} |
サブ画面に、値を埋め込み表示。
まとめ(Chrome Packaged Apps 開発メモ)こちら、
http://knaka0209.blogspot.jp/2014/06/chrome-pkg.html
*)
[update: 2014/06/05] Gistにコード一部貼付け修正しました。
Chrome Packaged Apps, window操作など, 2014-06-04
Chrome Packaged Appsのwindow操作などについて。
(Packagedインストール及びデバック方法は省略させて頂きます。)
参考サイト様(公式かも):
https://developer.chrome.com/apps/about_apps
さて、初歩的ですがwindowを開くあたり。メモしたいと思います。
manifestに記載した。起動用スクリプトからwindow開く説明は省略したいと
思います。サブ画面を開く例です。
ソースこちら、 https://github.com/kuc-arc-f/chrome_window1
chrome.app.window.create
を使って、サブ画面を開きます。
画面にA要素を置き、
https://github.com/kuc-arc-f/chrome_window1/blob/master/top.html
===============================================
<a href="#" id="id-a-open">[ open-Sub ]</a>
===============================================
jsで、イベント処理を実装します。。
https://github.com/kuc-arc-f/chrome_window1/blob/master/top.js
===============================================
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
onload = function() { | |
document.querySelector('a#id-a-open').onclick = function() { | |
click_sub(); | |
} | |
} |
クリックイベントで、サブwindow開きます。
===============================================
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
function click_sub() | |
{ | |
chrome.app.window.create( | |
'sub.html', | |
{id: "browserSlideID", | |
bounds: { | |
'width' : 1024, | |
'height': 600 | |
} | |
} | |
, function(appWin) { | |
appWin.contentWindow.addEventListener('DOMContentLoaded', | |
function(e) { | |
console.log( '#.DOMContentLoaded' ); | |
appWin.show(); | |
} | |
) | |
} | |
); | |
} |
サブ開きました。
まとめ(Chrome Packaged Apps 開発メモ)こちら、
http://knaka0209.blogspot.jp/2014/06/chrome-pkg.html
[update: 2014/06/05] Gistにコード一部貼付け修正しました。
登録:
投稿 (Atom)
google colaboratory お試し編 、GPUも使える機械学習の環境構築
前回続き、機械学習の関連となります。 開発環境まわりの内容となり。先人様の情報を元に調査しました。 google colab(google colaboratory) を試してみました。機械学習系の いくつかのライブラリがインストール済みで、 クラウド上で、ある程度機械学...
Social
-
前回続き、機械学習の関連となります。 開発環境まわりの内容となり。先人様の情報を元に調査しました。 google colab(google colaboratory) を試してみました。機械学習系の いくつかのライブラリがインストール済みで、 クラウド上で、ある程度機械学...
-
esp32 での、SNTP JST 取得、ESP-IDF 版 事例が少なかったので、メモです。 時刻の表示や、指定時刻のデバイス稼動制御 等で使えそうです。 # Code UTC 時間を取得し、 struct tm に、日本時間 JST (UTC + 9) を...