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

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は、接頭語=アンスコ[_]が必要。
*) 関数指定無しは、-s EXPORT_ALL=1

>
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呼出側からコンソールにログ出力されます。

*) 通常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!

シェルで記載する場合(参考)
HTML出力する場合
>
EMCC_FAST_COMPILER=0 emcc hello_world.c -o dest/hello_world.html

dest/hello_world.html を、ブラウザで開いて確認。

[インラインJavascript]

C言語側から、インラインで、javascript実行できるようです。
コンパイルします。
>
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起動して、ログインします。
パスワードの入力が必要なようです。



ランチャーを開けると
ブラウザ、ストア、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

ネットワークアダプタの変更。
カスタム>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

Chrome Packaged Apps, Indexed DB編  2014-06-06

Chrome Packaged AppsのIndexed DB操作などについて。
HTML5の内容になり、Packagedに依存する部分は無いかと思いますが。
クライアント開発で使える技術かと思いますので、メモです。

*)Indexed DBは、開発中の製品でも実績が無いため、
 サンプル作りがあまい部分あります。。

Project: https://github.com/kuc-arc-f/chrome_db1


対応ブラウザなどのチェック、
今回は、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


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
===============================================
===============================================

データ格納して、DOM追加操作します。
ID=id-table1 のテーブル内に描画します。
A要素は、target="_blank" で、別ブラウザ起動で内容を表示。
===============================================
===============================================

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
===============================================
===============================================

表示用の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 に、適当に事前に配置しておきます。

===============================================
===============================================

サブ画面に表示しました。

まとめ(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 などの数値付の文字が格納されます

===============================================
===============================================

表示します。showおす。
storageから値取得して、div要素を書き換えます。
*) 前回表示データは全て削除、
配列データから、全てを再表示します。
===============================================
===============================================

削除の処理、
この場合、空の配列を。ストレージ名指定で上書きしています。
*)別領域を、各個別に削除したい場合などに使える。かと思います。
===============================================
===============================================

値を表示。追加後、[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値に、適当な文字を埋め込みます。
次画面の詳細の描画処理などは、
キー情報などを渡して使える手法かと思います。

*) ストレージに書き込んで渡す手もあるかと思います。

===============================================
===============================================

サブ画面に、値を埋め込み表示。

まとめ(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
===============================================
===============================================

クリックイベントで、サブwindow開きます。
===============================================
===============================================

サブ開きました。


まとめ(Chrome Packaged Apps 開発メモ)こちら、
http://knaka0209.blogspot.jp/2014/06/chrome-pkg.html


[update: 2014/06/05] Gistにコード一部貼付け修正しました。


google colaboratory お試し編 、GPUも使える機械学習の環境構築

前回続き、機械学習の関連となります。 開発環境まわりの内容となり。先人様の情報を元に調査しました。 google colab(google colaboratory) を試してみました。機械学習系の いくつかのライブラリがインストール済みで、 クラウド上で、ある程度機械学...

AD-parts

Shop
Bluetooth搭載
ベース基板

Social