スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書く事で広告が消せます。

Enyo2でHTMLタグを含む文字列を表示する方法について

Enyo2ではEnyo1にあったDomNodeBuilderのallowHtmlプロパティがなくなったため、(このエントリーを書いている2012.01.29時点では)enyo.Controlのcontentプロパティは常にエスケープされない状態でHTMLへレンダリングされます。

20120129_01.png

これが永続的な仕様なのか、今後ウィジェット等が実装される中でフレームワーク側で何らかの仕様変更がされるかはわかりませんが、ここではとりあえずの方法として、HTMLタグを含む文字列を表示するときに、アプリ側でどんな対策がとれるか考えてみたいと思います。

続きを読む

tag : enyo

Cloud9 IDEで作るTouchPad用壁紙チェンジャー その2

前回は簡易版として画像ファイルをそのまま壁紙にしましたが、今度は複数の画像を連結してタイル状の画像にし、そのタイル画像右下にテキスト情報(日付)を書き込んだものを壁紙にしてみたいと思います。

なお、今回は扱う外部コマンドやモジュールの数が増えるので、画像を操作するモジュールのインストール&設定方法を中心に書いていきたいと思います(全体のソースは「hankei6km / chgtw」にアップしてあります)。

続きを読む

tag : HPwebOS TouchPad nodejs Cloud9

Cloud9 IDEで作るTouchPad用壁紙チェンジャー その1

TouchPadのエミュレータ上でCloud9 IDEを動くようにしたので、今度はその環境を使ってTouchPad+node.jsで動くちょっとしたツール(壁紙チェンジャー)を作ってみる実験など。

完成予想図

20111223_00.jpg

続きを読む

tag : HPwebOS TouchPad nodejs Cloud9

linaro-nanoでCloud9 IDEを使ってみる

前回まででWindows上のqemuで動くlinaro-nanoの環境が出来たので、今度はlinaro-nano上でCloud9 IDEを動かしてみたいと思います。
目標

TouchPadのエミュレータで動かしたときと同じように、Cloud9のサーバー部分をqemu上のlinaro-nanoで動かし、IDEはPC(ホストOS)のブラウザ上で動かすというのを最終目標にします

node.jsのインストール

Cloud9 IDEを動かしたりモジュールをビルドするためにはnode.jsが必要なので、まずはnode.jsをインストールします。

前回作成したqemu上のlinaro-nano環境にPuTTYなどでログインした後、PC上のUbuntuでクロスコンパイルしたときのように「Ubuntu 11.04 Natty Narwhal に Node と npm をインストール - 自分の感受性くらい」を参考にnvmとnode.jsのインストール作業を行います(この先、とくに記述がなければログインしたPuTTY上でコマンドを実行しています。また、今回はrootで全ての作業を行っています)。

なお、手順自体にUbuntuのときととくに違いはないのですが、node.jsのインストール(ビルド)に結構時間がかかります。Core i5 2400のPCで大体1時間くらいかかりました。

Cloud9 IDEのインストール

通常のインストール手順ではエラーになるので、以下のように手動でリポジトリを作業ディレクトリなどに複製します。

git clone git://github.com/ajaxorg/cloud9.git
cd cloud9
git submodule update --init --recursive

※これもsubmodule updateの完了までにそこそこ時間がかかります。ネットーワーク環境にもよると思いますが大体10分くらい。

また、このままでは、Cloud9 IDEのREADMEの「Startup errors: Binaries and node.js」にあるように、ARM環境では動かないので、次の項目からの手順でモジュール(o3.node)をARM用にビルドします。

libxml2-devのインストール

o3.nodeのビルドにはやはりlibxml2が必要なのですが、今回はクロスコンパイルのときのようにライブラリのビルドを行わなくても、aptでパッケージからインストールすることもできます。

apt-get install libxml2-dev

を実行すれば準備は完了です。

o3.nodeのビルド

こちらはクロスコンパイルのときのように

git clone http://github.com/ajaxorg/o3

でリポジトリを複製します。

また、クロスコンパイルのときと同じようにCCFLAGSなどでエラーになるので、o3ディレクトリに移動しにwscriptの該当部分を以下のように編集します。

conf.env.append_value('CCFLAGS', ['-O3',  '-ffast-math'])
conf.env.append_value('CXXFLAGS', ['-O3', '-ffast-math'])

あとは、「./tools/node_modules_build」を実行すると、「build/default」内にo3.nodeが作成されるので、Cloud9 IDEのREADMEの「Startup errors: Binaries and node.js」で指定されているディレクトリ(support/jsdav/support/node-o3-xml-v4/lib/o3-xml)にコピーします。

※これもビルドが完了するまでにそこそこ時間がかかります。Core i5 2400のPCで大体15分くらいかかりました。

linaro-nano上でサーバー部分を起動する

o3.nodeのビルドが完了してCloud9 IDEを起動する準備ができたので、実際にlinaro-nano上で起動してみます。

まずはlinaro-nano上でPC(ホストOS)側に向いてるインターフェースのIPアドレスが必要なので、ifconfigなどでeth0のIPアドレスを確認しておきます(デフォルトならおそらく10.0.2.15)。

アドレスが確認できたら、Cloud9 IDEディレクトリのbinディレクトリに移動し、

node cloud9.js -l 10.0.2.15

のように手動で起動すると以下のような画面が表示されます。

20111210_21.png

PC(ホストOS)から接続できるようにする

PC側からエミュレータの特定ポートに接続するには、qemuの起動オプションを変更する必要があります。一旦エミュレータをシャットダウンした後に

qemu-system-arm -M vexpress-a9 -cpu cortex-a9 -kernel vmlinuz-3.1.0-1800-linaro-lt-vexpress-a9 -initrd initrd.img-3.1.0-1800-linaro-lt-vexpress-a9 -m 512 -append "root=/dev/mmcblk0p2 vga=normal mem=512M devtmpfs.mount=0 rw" -drive file=vexpress-nano.img,if=sd,cache=writeback -redir tcp:6622::22 -redir tcp:3001::3000

のようにポートフォワーディングの設定を追加して、エミュレータを再起動します(前回実行したコマンドと比べて、末尾に「 -redir tcp:3001::3000」を追加してあります)。

※PC(ホストOS)のファイアーウォールなどで外部からqemu-system-armへの接続に制限がかかっていない状態では、上記のようにエミュレータを起動すると他のPCからもエミュレータ上のCloud9に無制限に接続できるようになるので注意してください。

IDEが起動できることを確認する

エミュレータの起動が完了したら、再度Cloud9 IDEのサーバー部分を開始し、PC側のブラウザで「http://localhost:3001」を開くと、以下のようにIDEの画面が表示されます。

20111210_51.png

だいたいこんな感じでlinaro-nano上でCloud9 IDEを動かすことができました。

モジュールのビルドにちょっと時間がかかるのが難点なのと、共有ライブラリのバージョンなどに注意する必要はありそうですが、外部コマンドや*.nodeを含むようなモジュールをデバイス用にちょっとビルドしたいとか、TouchPadエミュレータ上のCloud9 IDEで作業していたワークスペースを持ってきてARM上で動くか検証したい、といった場合に使えるのでないかなと。

tag : linaro qemu cloud9 nodejs ARM

Windows上のqemuでlinaro-nanoを動かしてみる

前回はCloud9 IDEが利用しているモジュールをUbuntu上でARM用にクロスコンパイルしてみましたが、今回はARM上でのCloud9 IDEの動作を確認をしたりモジュールをビルドできるようにする環境の土台として、Widnows上のqemuでlinaro-nanoを動かしてみたいと思います。
※linaroについては「Open source software for ARM SoCs」「Linaro とは - Linuxキーワード:ITpro」などを参照してみてください。
目標

ここではWindows上でqemuを使ってlinaro-nano(vexpress-a9用イメージ)を動かすことを当面の目標とします(linaro-nano上でCloud9 IDEを動かす方法などについては、次のエントリーにメモしてあります)。

※ちなみにUbuntu上でlinaro-nanoを動かす方法は「Platform/DevPlatform/Ubuntu/ImageInstallation - Linaro Wiki」から辿って「Resources/HowTo/Qemu - Linaro Wiki」や「Virtual ARM Linux environment - MDN」などに記載されてます(linaro-nanoのバージョンによってちょっと内容が異なるようですが)。こちらでは最初から作成するイメージファイルのサイズを指定できるので、Ubuntuではイメージファイルを直接ダウンロードするよりもこちらの方法の方が楽だと思います。

前準備

ARMのエミュレータとしてqemuを使います。今回は「Qemu On Windows」からv0.15.1のバイナリをダウンロードし、アーカイブを展開後にPATHを通しておきます。

次にlinaro-nanoのimgファイルの操作が必要になってくるので、7zipExt2Read(Ext2explore)もダウンロードしてインストールしておきます。

最後に、img内のパーティションを操作する必要もあるので、Gpartedのisoイメージもダウンロードしておきます(isoイメージはダウンロードするだけで、CDに焼いたりするなどの必要はありません)。

linaro-nanoのイメージファイルのダウンロード

linaroのイメージは「Linaro Releases」からダウンロードできます。どのイメージを選択するかは用途や利用するエミュレータなど変わってくるかと思いますが、今回は「http://releases.linaro.org/images/11.10/oneiric/nano/」から「vexpress-nano.img.gz」をダウンロードします

※これを書いてる時点で既に11.12が出ているようです。11.11はちょっと試したところ起動するのは確認できたので、11.12でも同じようにできるのかなと思います。なお、vexpress以外のマシンタイプ用のイメージなどもありますが、今回は利用するqemuの関係からvexpress用を選択しておくのが無難です(beagleなどは試してみた限りでは起動できなきなかったです)

カーネルなどの取り出し

qemuでカーネルのコマンドラインオプションを指定するので、以下のようにカーネルなどをimgファイルから取り出しておく必要があります。

まず7zipで「vexpress-nano.img.gz」から「vexpress-nano.img」を取り出します。

次に、取り出した「vexpress-nano.img」を再度7zipで開き、「1.img」を作業用のフォルダに取り出します。

20111210_41.png

最後に、取り出した「1.img」を「Ext2explore」で開き、bootの下にあるvmlinuz*とinitrd*の2ファイルをSaveしておきます。

20111210_42.png

イメージファイル内のパーティションの拡張

ダウロードしたimgファイルの容量だと、Cloud9 IDEを動かすには空き少ないのでこれを拡張します。

まずPCのコマンドプロンプトから

qemu-img resize vexpress-nano.img +1G
のようにimgファイル自体を拡張します。

この後にimgファイル内のパーティションを拡張するために、コマンドプロンプトから

qemu -L qemuのBIOSのフォルダ -boot d -cdrom ダウンロードしておいたGpartedのisoファイル -hda vexpress-nano.img
を実行します
(qemuのBIOSのフォルダは、qemuを展開したフォルダ内にBIOSというフォルダがあります)

20111210_43.jpg

メニュー項目をデフォルトで選択していくとGpartedの環境が起動します(途中で、1分くらい黒い画面のまま止まっているように見えることもあります)

20111210_44.png

パーティションのサイズを拡張します。

イメージファイルの起動

カーネルの取り出しやパーティションの拡張ができたら、「Virtual ARM Linux environment - MDN」などの内容をもとにqemuの起動オプションを決めてイメージファイルを動かしてみます。

qemu-system-arm -M vexpress-a9 -cpu cortex-a9 -kernel vmlinuz-3.1.0-1800-linaro-lt-vexpress-a9 -initrd initrd.img-3.1.0-1800-linaro-lt-vexpress-a9 -m 512 -append "root=/dev/mmcblk0p2 vga=normal mem=512M devtmpfs.mount=0 rw" -drive file=vexpress-nano.img,if=sd,cache=writeback

これを実行すると新しいウィンドウが開き、しばらく待つとコンソールで操作ができるようになります。

※qemu-system-armのエラーメッセージなどは、qemu-system-armが保存されているフォルダにstderr.txtなどのテキストファイルとして作成されます。コマンドを実行しても何も反応がない場合は、stdout.txtやstderr.txtが作成されてないか確認してください。

linaro-nanoのネットワーク環境設定

ダウンロードしたイメージファイルのバージョンなどで状況が違うようですが、デフォルトではPC(ホストOS)側と接続するネットワーク環境が設定されていないことがあります。コンソール(エミュレータのウィンドウ)からifconfigでeth0が確認できない場合は以下の手順を実行します(すでにeth0にアドレスが振られているならこの手順は飛ばすことができます)

まずは、コンソールで「ifconfig eth0 up」「dhclient eth0」を実行します。

これでeth0にアドレスが振られて外部と繋がるようになるはずなので、続いて「apt-get update」「apt-get install vim」などでコンソール上で使えるエディタを導入します。

最後に導入したエディタなどで「/etc/network/interfaces」に

auto eth0
iface eth0 inet dhcp
の2行を追加しておきます。

PC(ホストOS)とsshで接続できるようにする

この後もコンソール上で作業してもよいのですが、PCとのファイルのやりとりやPuTTYなどで作業できるように、OpenSSHを導入することにします。

まずは、コンソールから「passwd」でrootのパスワードを設定しておきます。

次に「apt-get update」「apt-get install openssh-server」を実行してOpenSSHを導入します。

これでlinaro-nano内でOpenSSHのサーバーは動きましたが、このままだとPC(ホストOS)側からエミュレータに接続できないので、一旦エミュレータをshutdownします(コンソールからshutdown -h nowなどを実行すれば自動的にウィンドウが閉じてqemu-system-armも停止します)。

その後、

qemu-system-arm -M vexpress-a9 -cpu cortex-a9 -kernel vmlinuz-3.1.0-1800-linaro-lt-vexpress-a9 -initrd initrd.img-3.1.0-1800-linaro-lt-vexpress-a9 -m 512 -append "root=/dev/mmcblk0p2 vga=normal mem=512M devtmpfs.mount=0 rw" -drive file=vexpress-nano.img,if=sd,cache=writeback -redir tcp:6622::22
のようにポートフォワーディングの設定を追加して再度起動します(先ほど実行したコマンドと比べて、末尾に「 -redir tcp:6622::22」を追加してあります)。

これでPuTTYなどからlocalhostの6622ポートを指定すると、エミュレータに接続できるようになります。

※PC(ホストOS)のファイアーウォールなどで外部からqemu-system-armへの接続に制限がかかっていない状態では、上記のようにエミュレータを起動すると他のPCからも接続できるようになるので注意してください。

以上でとりあえずは、Widnows上のqemuでlinaro-nano-vexpress-a9が動くようになりました。次のエントリーではlinaro-nano上にCloud9 IDEをインストールして動かしてみたいと思います。

tag : linaro qemu ARM

node.jsのモジュールをPC(x86)上でARM用にビルドする

前回はTouchPadのエミュレータ(x86)上でCloud9 IDEを動かしてみましたが、TouchPadの実機などARM上でサーバー部分を動かす場合、Cloud9 IDEが利用しているモジュールにo3.nodeというバイナリーのモジュール(という言い方でいいのかな)が含まれいてるため、そのままでは動かすことができません。
※詳しくはCloud9 IDEのREADMEの「Startup errors: Binaries and node.js」を参照してみてください。 これについては、該当する部分のリポジトリをForkしてARM用にビルドいる人がいるので、そちらを利用させていただくという手もありますが、ARM用にビルドしたいモジュールやツールなどが他にも出てくる場合のことも想定して、Ubuntu上にクロスコンパイルの環境を作って試しにo3.nodeをビルドしてみたいと思います。
目標

今回はo3.nodeをARM用にビルドできたら完了とします。いちおう稼動確認もしていますが、今回はARM環境にnode.jsやCloud9 IDE本体をインストールする方法についてはとくには触れません(その辺については次のエントリーとその次のエントリーでメモしてあります)。

Ubuntuのインストール

node.jsのモジュールをビルドする場合、Linux環境の方がやりやすそうなので、VirtualBoxUuntu11.10の日本語Remixをインストールします(この先、とくに記述がなければインストールしたUbuntu上で作業します)。

ARM用のコンパイル環境のインストール

最初はwebOSのPDKに入ってるコンパイラなどを利用しようかとも思ったのですが、実際にやってみるといろいろ不都合があったので、PDKが利用している「Sourcery CodeBench Lite Edition - Mentor Graphics」から「Sourcery CodeBench Lite Edition for ARM GNU/Linux」の最新版を使うことにします。

上記のアドレスから「IA32 GNU/Linux TAR」版をダウンロードし、/optなどに展開してPATHを通しておきます。

node.jsのインストール

node.jsのモジュールをビルドするには、node.jsに含まれるnode-wafコマンドを利用するので、あわせてUbuntu上にもnode.jsをインストールする必要があります。

なお、node.jsは普通にソフトウェアセンターなどからインストールしてもいいのですが、node.jsのいくつかのバージョンを切り替えて試してみたいので、nvmをインストールしてからnode.jsのv0.4.12(TouchPadと同じバージョン)をインストールするようにします。
(Ubuntuにnvmをインストールする方法は「Ubuntu 11.04 Natty Narwhal に Node と npm をインストール - 自分の感受性くらい」が参考になると思います)

※Ubuntu11.10でnode.jsのv0.4.7などをインストール(ビルド)しようとすると「#676: Build fails on debian - Issues - joyent/node - GitHub」に引っかかったりしたので、インストールするのはv0.4.12辺り以降が無難でないかと思います。

libxml2のビルド

o3.nodeをビルドするためにはlibxml2が必要となります。

The XML C parser and toolkit of Gnome」の「Downloads」からソースをダウンロードして展開した後に、展開したディレクトリで「./configure --host=arm-none-linux-gnueabi --prefix=$HOME/local/arm/」「make」「make install」を順番に実行します。

エラーがなければ、ホームディレクトのlocal/arm/libなどにファイルが展開されています。

o3.nodeのビルド

まずはCloud9 IDEのREADMEの「Startup errors: Binaries and node.js」にあるように「git clone http://github.com/ajaxorg/o3」でo3のリポジトリを複製しておきます。

次にARM用にビルドするように環境変数を書き換えます。今回は「cross compiling node.js for arm」を参考に以下のように変更して端末にペースト&実行しました。

export CSTOOLS=/opt/arm-2011.03
export CSTOOLS_INC=${CSTOOLS}/arm-none-linux-gnueabi/libc/usr/include
export CSTOOLS_LIB=${CSTOOLS}/arm-none-linux-gnueabi/libc/usr/lib
export TARGET_ARCH="-march=armv7-a" # must be at least armv5te
export TARGET_TUNE="-mtune=cortex-a8 -mfpu=neon -mfloat-abi=softfp -mthumb-interwork -mno-thumb" # optional

export CPP="arm-none-linux-gnueabi-gcc -E"
export STRIP="arm-none-linux-gnueabi-strip"
export OBJCOPY="arm-none-linux-gnueabi-objcopy"
export AR="arm-none-linux-gnueabi-ar"
export F77="arm-none-linux-gnueabi-g77 ${TARGET_ARCH} ${TARGET_TUNE}"
unset LIBC
export RANLIB="arm-none-linux-gnueabi-ranlib"
export LD="arm-none-linux-gnueabi-ld"
export LDFLAGS="-L${CSTOOLS_LIB} -Wl,-rpath-link,${CSTOOLS_LIB} -Wl,-O1 -Wl,--hash-style=gnu,-L${HOME}/local/arm/lib -Wl"
export MAKE="make"
export CXXFLAGS="-isystem${CSTOOLS_INC} -fexpensive-optimizations -frename-registers -fomit-frame-pointer -O2 -ggdb3 -fpermissive -fvisibility-inlines-hidden"
export LANG="en_US.UTF-8"
export CCLD="arm-none-linux-gnueabi-gcc ${TARGET_ARCH} ${TARGET_TUNE}"
export PATH="${CSTOOLS}/bin:${PATH}"
export CFLAGS="-isystem${CSTOOLS_INC} -fexpensive-optimizations -frename-registers -fomit-frame-pointer -O2 -ggdb3"
export OBJDUMP="arm-none-linux-gnueabi-objdump"
export CPPFLAGS="-isystem${CSTOOLS_INC}"
export CC="arm-none-linux-gnueabi-gcc ${TARGET_ARCH} ${TARGET_TUNE}"
export TITOOLSDIR="/mnt/data/overo-oe/ti"
export TERM="screen"
export SHELL="/bin/bash"
export CXX="arm-none-linux-gnueabi-g++ ${TARGET_ARCH} ${TARGET_TUNE}"
export NM="arm-none-linux-gnueabi-nm"
export AS="arm-none-linux-gnueabi-as"

また、このままだとwscript内で追加されるCCFLAGSなどでエラーになるので、o3ディレクトリに移動しにwscriptの該当部分を以下のように編集します。

conf.env.append_value('CCFLAGS', ['-O3',  '-ffast-math'])
conf.env.append_value('CXXFLAGS', ['-O3', '-ffast-math'])

これで「./tools/node_modules_build」スクリプトを実行すれば「./build/default」内にo3.nodeが作成されます。

※環境変数の指定がうまくいってなくても、意外とX86用にビルドできてしまうこともあったので、o3.nodeが作成されたらfileコマンドなどでARM用になっているか確認しておいた方が良いかと思います。

実際に動かしてみる

今回はあまり詳しくは触れませんが、ARM環境上でCloud9 IDEのリポジトリを複製した後にo3.nodeを指定のディレクトリにコピーし、Cloud9 IDEのディレクトリで「node bin/cloud9.js」と手動で実行すれば、ARM環境上でもCloud9 IDEを動かすことができます

以下、qemu上のlinaro-nano-vexpress-a9で動かしてみた図

20111210_21.png

※Cloud9 IDEを動かす環境上にlibxml2がインストールされていなければ、libxml2関連のファイルもコピーする必要もあります(linaro-nanoではデフォルトではlibxml2が入ってないので、コピーするかsudo apt-get install libxml2が必要です)。
※Cloud9のo3.nodeをロードする部分は、ライブラリが足りてないなどのエラーがあってもそのメッセージを出さずにlinux64用のモジュールをロードしようとしようとして停止するので(大体は「Error: ~/cloud9/support/jsdav/support/node-o3-xml-v4/lib/o3-xml/o3-linux64.node: wrong ELF class: ELFCLASS64」が表示される)、実際のエラーを確認しにくくなっています。ARM環境上でcloud9.jsを実行した後に「wrong ELF class: ELFCLASS64」で停止してしまう場合は、「support/jsdav/support/node-o3-xml-v4/lib/o3-xml/o3.js」の中身を

module.exports = require('./o3.node').root
だけにしてしまえばエラーが確認しやすくなります。

だいたいこんな感じで、ARM上で動くo3.nodeをビルドすることができました。

ただ、ちょっと気になるのはo3.nodeをビルドするときのスクリプト内部で、node.jsのスクリプトからヘッダファイルを作成していることです。これが何をやっているのかはよくはわかりませんが、このスクリプトは本来の環境(ARM上)で動かしたほうがいいのかなという気がしないでもないです(linaro-nanoのvexpress用とUbuntu11.10の32/64bitそれぞれで試してみましたが、同じファイルが作成されたので気にしすぎかもしれませんが)。

また、出来上がったo3.nodeがARM環境上で動かせるか確認したいとか、Windows上で作業したいとかいうこともあるのかなということで、次のエントリーからはWindows上のqemuでlinaro-nanoを動かせる環境を構築して、さらにその上でモジュールのビルドやCloud9 IDEを使う方法などについてメモしてみたいと思います。

tag : HPwebOS cloud9 nodejs ARM

TouchPadエミュレータでCloud9 IDEを使ってみる

TouchPadとnode.js(≠ webOSのJavaScriptサービス)でちょっと実験してみようかと思い、TouchPadのエミュレータ上(*1)でCloud9 IDEを動かして開発環境を作ってみたときのメモなど。
目標

Cloud9 IDEを特定の環境上で動かすという場合、おおざっぱにわけてCloud9のサーバー部分を動かすのと、IDE部分を動かすという内容に分かれると思いますが、このメモではサーバー部分をTouchPadのエミュレータ上で動かして、IDEはPC(ホストOS)のブラウザ上で動かすというのを最終目標にします。

準備
  1. gitを使う必要があるので、PCにgitをインストールしておきます。
  2. TouchPadのエミュレータでは共有ライブラリがおかしいようなので、「emulator's glibc version problem」のアップデータを適用しておきます。 ※これはエミュレータ用で、デバイスに適用するとおかしなことになると思うので、注意してください。
  3. Cloud9 IDEは全体のファイルサイズが結構大きいので、TouhcPadエミュレータの空き容量をできるだけ増やしておきます。
  4. また必須ではないのですが、TouchPadのエミュレータは空き容量が足りなってしまった後は、かなり不安定になるのでスナップショットを作成して、いつでも元に戻せるようにしておきます。

Cloud9のダウンロード(リポジトリの複製)

Cloud9 IDEのREADMEにあるインストール方法そのままは使えないので、手動でリポジトリを複製するために、まずはPC上で以下のコマンドを実行します

git clone git://github.com/ajaxorg/cloud9.git
cd cloud9
git submodule update --init --recursive

これでCloud9 IDEのダウンロードが完了したのですが、そのままコピーするとエミュレータの空き容量が足りなくなるので、TouchPadで動かすのに必要のない以下のファイルを削除します。

  • support/node-builds-v4フォルダ
  • 各フォルダ内の.gitフォルダ

これで大体110Mくらいになります。

インストール(コピー)

ダウンロードしておいたcloud9フォルダを、WinSCPなどでTouchPadのエミュレータにコピーします。

コピー先のフォルダはどこでもいいのですが、今回はとりあえず/media/internal/.cloud9にしておきました(/media/internalの下にそのままコピーすると画像ファイルなどがwbOSのIndexerに検出されてDBの容量を消費するので注意が必要です)。

※コピーするファイルの容量に対して10Mくらい余裕がある状態でも、容量不足の警告が表示されることがありますので、余裕を持って空き容量を確保しておく必要があります。
※警告が表示された後、ファイルを削除して空き容量を確保しても警告が止まらない場合があります。このような場合は、あきらめてスナップショットの復元をした方が早いです。

TouchPad上でサーバー部分を起動する

TouchPadエミュレータ上でPC(ホストOS)側に向いているインターフェースのIPアドレスが必要なので、PuTTYなどでエミュレータにログインしifconfigなどで、eth0のIPアドレスを確認しておきます(デフォルトならおそらく10.0.2.15)。

アドレスが確認できたら

node /media/internal/.cloud9/bin/cloud9.js -l 10.0.2.15

のように手動で起動すると以下のような画面が表示されます。

20111210_11.png

PC(ホストOS)から接続できるようにする

PC側からエミュレータの特定ポートに接続するには、VirtualBoxの設定を変更する必要があります。VirtualBoxのマネージャーを開き、TouchPadエミュレータの仮想マシンのネットワーク設定にポートフォワーディングルールを追加します。

20111210_12.png

※PC(ホストOS)のファイアーウォールなどで外部からVirtualBoxへの接続に制限がかかっていない状態では、上記の設定を行うことで他のPCからもTouchPadエミュレータ上のCloud9に無制限で接続できるようになるので注意してください。

IDEが起動できることを確認する

PC側のブラウザでhttp://localhost:3000を開くと、以下のようにIDEの画面が表示されます。

20111210_13.png

だいたいこんな感じで、あとはワークスペースの指定など起動オプションを調整したりすれば、とりあえずはPCのブラウザ上からTouchPadエミュレータ上のファイルの編集や実行、デバッグなどが出来るようなります(自分が使う範囲での確認しかしてなので、本来必要な機能が全て動いているかはわかりませんが…)。

*1
今回のメモは、外部から接続されない状態のTouchPadエミュレータ(x86)上でCloud9 IDEのサーバー部分を動かし、ホストOSであるPC側から接続する場合の手順です。この手順のままではTouchPadのデバイス(ARM)には転用できないので(あと変にファイアーウォールのサービスAPIで穴をあけるのも危なそうなので)注意してください。

なお、TouchPadのデバイス向け専用の内容ではないですが、ARM上での検証をしてみたかったので、Cloud9 IDEが利用しているモジュール(o3.node)をARM用にクロスコンパイルする方法や、Windows上でlinaro-nanoを動かしその上でCloud9 IDEを動かす方法なども次のエントリーからメモしていくので、興味のある方はそちら(「node.jsのモジュールをPC(x86)上でARM用にビルドする」「Windows上のqemuでlinaro-nanoを動かしてみる」「linaro-nanoでCloud9 IDEを使ってみる」)も参照してみてください。

tag : HPwebOS cloud9 nodejs

もじもか for HP webOS コンセプトバージョンをv.0.2.7へ更新しました

主な変更点は
  • バグの修正
  • 制限事項の追記(QuickOfficeのDocument画面上での入力はできないこと等)。
  • TouchPadのウェブブラウザ対応
などです。

詳しくは以下のリンクからどうぞ
もじもか for HP webOS コンセプトバージョンのドキュメント ― MojiMoca v0.2.7 documentation

tag : HPwebOS

もじもか for HP webOS コンセプトバージョンをv.0.2.6へ更新しました

前回のv0.2.5でTouchPad用のExtentionモードに対応したつもりだったのですが、TouchPadの実機では動作しなかったので、対応版のv0.2.6を公開しました。TouchPadでExtentionモードを利用される場合には、v0.2.6へのアップデートをお願いします。

もじもか for HP webOS コンセプトバージョンのドキュメント ― MojiMoca v0.2.6 documentation

なお、今回はTouchPad用のファイルのみの更新なので、TouchPad以外の機種で利用されている場合には、v0.2.6に入れ替える必要はありません。
(TouchPad実機対応検証版を入れている場合も、そのままで大丈夫です)

tag : HPwebOS enyo

もじもか for HP webOS コンセプトバージョンをv.0.2.5へ更新しました

主な変更点は、ExtentionモードをTouchPad(*)へ対応させるためのオプションファイル(もじもかEO)の追加です。また、webOS3.0.4ではLauncherなどにマルチバイト文字が使えないようなので、アプリのタイトルを英字のみ(MojiMoca)へ変更しました。
20111019_10.png

なお、既に以前のもじもかをwebOS3.0.4へインストールされて以下のように文字化けしている場合は、上書きインストールではタイトルは更新されないようなので、一旦もじもかをアンインストールした後にv0.2.5をインストールしてください(それでもダメなときは、アンインストール→リセット→v0.2.5インストールを試してみてください)
20111019_11.png


あとは、今回新しくenyo用のオプションファイルが追加されたことで、インストール手順が増えてしまいましたが、大きな流れとしては「従来通りにアプリモードとExtentionモードをセットアップする」→「追加でもじもかEOをインストール」→「もじもかEOのExtentionモードをONにする」といった感じになっています。

(*) TouchaPad対応の処理はwebOS3.0.4上でのみ稼動します。webOS3.0.2ではダッシュボードによるモード表示など、一部機能が動作しませんので注意してください。

もじもか for HP webOS コンセプトバージョンのドキュメント ― MojiMoca v0.2.5 documentation

tag : HPwebOS enyo

プロフィール

Author:hankei6km

リンク
ドキュメントの一覧とか
(自作ソフトウェアなどはだいたこちらにアップしてます)
ざわざわの半径ウェブ
(ちょっと放置気味なホームページ。ドキュメントの一覧とかに無いソフトウェアはこちらを探してみてください…)
最新記事
最新コメント
最新トラックバック
ユーザータグ

enyo HPwebOS Cloud9 TouchPad nodejs cloud9 qemu ARM linaro PhoneGap QUnit Android Bitbucket Git webOS WindowsLive 海外ドラマ twitter Python Twitter はてな node.js PalmwebOS ラジオ Google 最前線 Greasemonkey html5 yahoopipes SkyDrive Firefox ふおんコネクト! 早川書房 カオスだもんね NetFront イーモンスター S-Fマガジン ガンダムUC ひだまりスケッチ 講談社BOX 講談社 rss 音泉 PalmPixi PalmPre 東京創元社 JAXA NASA google Palm まんがタイムきらら 化物語 太田出版 文藝春秋 東のエデン アニメ会 ラジオ番組 PIM RememberTheMilk ミカるんX アフタヌーン marble うみものがたり ギャラクティカ 大河ノベル 四方世界の王 バスカッシュ! 朝日ノベルズ ニコニコ動画 ジェネオンエンタテインメント TAF2009 エネループ 黒神 OP 宇宙をかける少女 Genji ヲタめし メディアファクトリー s-cast.net 

カテゴリ
月別アーカイブ
検索フォーム
RSSリンクの表示
Powered By FC2ブログ

今すぐブログを作ろう!

Powered By FC2ブログ

ブロとも申請フォーム

この人とブロともになる

QRコード
QRコード
QLOOKアクセス解析