2010/06/07

geolocation APIとGoogle map API v3

ちょっと必要にかられてgeolocation APIとGoogle Map APIについて
勉強してみた。

geolocation APIにはGears(元Google Gears)とHTML5の2通りがあるみたい。
GoogleはGearsの開発をHTML5があるからって事で止めてたと思うので、
HTML5の方が今後使われる事になるだろうけど。

今はまだ過渡期みたいなので、GearsとHTML5両方書いてみて対応・非対応を調査してみた。

ちなみに後から見つけたがHTML5のgeolocation APIとGoogleMapAPI(v3)については
このページがわかりやすくてよい。


で、今の所こんな感じ。
- Mac OS X 10.6
-- Safari4.0.5 HTML5:Not support、Gears:Not support
-- Chrome5.0.375.55 HTML5:OK、Gears:Not support
-- Firefox3.6.3 HTML5:OK、Gears:Not support
- Windos Vista
-- Chrome(バージョン後で) HTML5:OK、Gears:インストールすればOK
-- Firefox(バージョン後で) HTML5:OK、Gears:インストールすればOK
- iPhone Safari HTML5:OK、Gears:Not support
- Nexus One ブラウザ:HTML5:OK、Gears:Not support

とまあ、何気なくブラウザのHTML5の対応が進んでいてGearsを使う理由はなんだろう。IE?
そういえば普段IEを使ってなかったのでうっかり調べ忘れた。




2010/05/17

Beagleboard

職場の先輩からBeagleboard(http://beagleboard.org/)を試用させてもらえたので、なにかやってみようかなと思う。
BeagleboardはTIのOMAP3530(ARM+DSP+Chipset)+DVI, USB, SDカード, S-Videoなどがついた開発ボード。
SheevaPlug+もARM系MPU(Kirkwood)をベースにしたLinux開発キットなのでできることは近いが、SheevaPlug+は映像出力端子をもってないのでUSB経由で出すしかないが、Beagleboardはその点で非常にやりやすい。
#KirkwoodってなんだろMarvell社のMPUシリーズ名?IntelでいうPentiumとかCore2Duoとかみたいな?ちょっとARM系プロセッサは勉強不足のようなので、時間があったら調査する。

とりあえずAndroidをインストールしてHDMIケーブル(ただしDVI信号) でTVに出力できるようにする。

手順は、
1. Beagleboard用のAndroidのソースコードダウンロード
2. kernelをコンパイルする用のtoolchainのインストール
3. kernelのコンパイル。
4. rootfs(Android本体)のコンパイル。
5. SDカードのパーティション作成とフォーマットをしてkernelとrootfsをコピー。
6. uBootの起動オプション書き換え。
7. 起動。

といった感じ。

参考にしたサイトは以下
Android1.6(donuts)
http://code.google.com/p/android-development-environment/wiki/Android1_6r1onBeagleBoard
Android2.1(eclair)
http://code.google.com/p/android-development-environment/wiki/EclaironBeagleBoard

参考というかほぼそのままやっても動きます。USB拡張でつけるNetworkデバイスの種類によってはkernelをコンパイルしなおす必要がある可能性はあり。


実際に両方インストールしてみたんですが、2.1は操作するする度に画面がチラチラする、しかも遅い(低い解像度でも)。1.6はそれに比べるとよく動くので1.6を使おうかな・・。(ホントは2.1使いたいけど)

母艦としてUbuntu8.10でやった(古いな・・サポート切れ'10/4してるし・・Upgradeしなきゃ・・。)


1. Beagleboard用のAndroidのソースコードダウンロード
では、repoというgoogleが用意した複数のgitリポジトリから自動でCheckoutしてくれるスクリプト。
なのでこれをダウンロードする必要がある。
$curl http://android.git.kernel.org/repo > repo

$sudo apt-get install git-core
curlはwgetでもいいと思う。(その場合は>は不要かな?)
ちなみに、proxyを使う場合にはcorkscrewというトンネリングをしてくれるツールを使って

$sudo apt-get install corkscew

#!/bin/sh
corkscrew proxy.servername.com portnumber $1 $1

という感じのスクリプトrepo-proxy.shを作っておき、repoの代わりにたたく。

続く。

2010/05/12

googleドキュメントでblogを書く&共有で投稿するテスト

googleドキュメントでblogを書く&共有で投稿するテスト

2010/05/09

esata起動とmediatomb

とりあえずメモ。

esataドライブをつけてesataにubuntuをインストールしてそっちから起動させるようにする。
基本的なやり方は日経Linux5月号にのってるのでそちらで。
ほんとは最新のkernelにsheeva patchを当ててmake+mkimageでuImage作成してesata起動対応したkernel-2.6.33.2を作ってbootしてみたんですが、/dev/sda not found でkernel panicになってしまって、うーん・・orz。

結構調べてみたんですが、今回は近道してもうBuild済みのkernel+ubuntu9.04を使いました。


そんで、まずは当初の目的だったPS3用にNAS+DLNAサーバを作ることにしました。

 $sudo apt-get install mediatomb
 $sudo apt-get install mysql-server
 $sudo apt-get install ffmpegthumbnailer

で、ぱぱっとインストール完了。
ここからはうちの環境用に設定をいじってきます。

$sudo vi /etc/mediatomb/config.xml

で設定を弄ります。
まずはデフォルトでsqliteなのをmysqlにします。
うちの音楽ファイル、写真ファイルは数万ファイルずつあるんですが、以前玄箱で試した経験上、sqliteだとPS3で引いてくるのが遅くて使い物にならなかったです。

<sqlite3 enabled="no"></sqlite3>
(略)
<mysql enabled="yes">

次はわざわざコメントで書いてあるくらいなので以下をyesに変更します。

<protocolinfo extend="yes"></protocolinfo>

文字コードの設定します。
UbuntuのファイルシステムがUTF-8なのと、iTunesでAAC化したメタデータがUTF-8である事をふまえて以下にすると、文字化けせず表示されました。


<import hidden-files="no"></import>
<filesystem-charset>UTF-8</filesystem-charset>
<metadata-charset>UTF-8</metadata-charset>
<scripting script-charset="UTF-8"> &lt;/scripting>

拡張子とmimeのmapping設定をします。

<map from="m4a" to="audio/mp4"> </map>
<map from="mpg" to="video/mpeg"> </map>
 <map from="mts" to="video/mpeg"> </map>
<map from="m2ts" to="video/mpeg"></map>
<map from="m2t" to="video/mpeg"> </map>
<map from="avi" to="video/divx"></map>

上記でwmvと書いてあるんですが・・、実際にはwmvは”壊れたファイルです”エラーがでて今の所再生できてません。

最後にtranscodingの設定、というかvideo thumbnailの設定。


<transcoding enabled="yes"> </transcoding>
<mimetype-profile-mappings></mimetype-profile-mappings>
<transcode mimetype="video/divx" using="video-thumbnail"></transcode>
<transcode mimetype="video/mpeg" using="video-thumbnail"></transcode>
<transcode mimetype="video/mp4" using="video-thumbnail"></transcode>  
<transcode mimetype="video/avi" using="video-thumbnail"></transcode>
<transcode mimetype="video/x-ms-wmv" using="video-thumbnail"></transcode>

<profiles>

<profile enabled="yes" name="video-thumbnail" type="external"> </profile>
<mimetype>image/jpeg</mimetype>
<accept-url>yes</accept-url>
<thumbnail>yes</thumbnail>
<resolution>128x128</resolution>
<agent arguments="-i %in -o %out -s 128 -t 0%" command="/usr/bin/ffmpegthumbnailer"></agent>
<buffer chunk-size="512" fill-size="1024" size="524288"> </buffer>



mysqlの準備。
データベースの初期化用SQL 
resetdb.sql作っとく。ファイルの追加に失敗して一からやり直したい事が結構あったので、作ってた方が楽。
drop database mediatomb;
create database mediatomb;
grant all on mediatomb.* to 'mediatomb'@'localhost';
flush privileges;
$mysql -u root -p < resetdb.sql
$mysql -u root -p < /usr/share/mediatomb/mysql.sql

これで起動準備完了。

$sudo /etc/init.d/mediatomb start

で起動。

ブラウザで
http://server ip addr:49152 へアクセス。

こんな画面。
画面左のペイン?のFileSystem→ディレクトリツリーをたどって音楽ファイル、写真、動画があるディレクトリを選ぶ。右はじの”+”アイコンをクリックすると、ファイル登録が開始。
”+”アイコンの右の”+”と丸っこい矢印アイコンをクリックすると、scanの設定がでる。とりあえず
"Timed"(一定間隔更新), "Full"(更新時に中身も確認), "Recursive", "Scan interval(in second) 172800"(2日に1回)
かな。
"Inotify"を選びたいが、玄箱の時はInotify選ぶと復旧不能になると2chにあったので・・。

これであとはファイルの登録が済むのを待ってPS3で「ビデオ」「フォト」「ミュージック」のアイコンからMediatombを選ぶだけ。
videoファイルはサムネイルが(ちょっと遅いけど)表示されます。

やりたいけどできてないこと。
- CDのジャケットを表示できてない(ファイル内にジャケット画像が含まれている場合でも)
- WMVの再生
あと他にもあったよーな。思い出したら書きます。

ビデオはともかく写真とかは一列に並べる表示よりもグリッド状に表示してくれた方が一覧性がいいなぁ。
音楽もアーティストが"feat. ◯◯"とかが全部でてきて異常に多くなってるし、多くなるとお目当てのアーティストまでスクロールするのが面倒だったり・・。



2010/05/07

/dev/mtd?と/dev/mtdblock?

uImageやrootfsの書き込みの際に、
/dev/mtd?と/dev/mtdblock?と微妙に似て非なる2つのものがでてきたので、ちょっと調べた内容についてメモ。

参考リンクは以下
デバイスドライバー以下http://www.ibm.com/developerworks/jp/linux/library/l-embdev.html

MTDドライバーは、Linuxで、とくに組み込み環境用として開発されてきている新しいクラスのドライバーです。従来のブロック・デバイス・ドライバーと比較してMTDドライバーを利用することの主な利点は、MTDドライバーがとくにフラッシュ・ベースのデバイス用として設計されている点です。したがって、セクター単位の消去や読み書きに関して、サポートや管理やインターフェースが従来よりも良くなっています。
どうも、デバイスにはセクター単位で データにアクセスするデバイス(HDDとか)(=ブロックデバイス)に対して、もっと細かい単位でデータにアクセスするデバイス(フラッシュメモリとか)(=キャラクタデバイスというらしい)がある。
MTD_CHAR には、フラッシュのキャラクタを直接アクセスする機能があるのに対して、MTD_BLOCK は、フラッシュを通常の (IDEディスクのような) ブロック・デバイスとして取り扱い、その上にファイルシステムを作成できるようにしています。MTD_CHAR に関係付けられるデバイスは /dev/mtd0、mtd1、mtd2 (など) で、MTD_BLOCK に関係付けられるデバイスは /dev/mtdblock0、mtdblock1 (など) です。MTD_BLOCK デバイスは、ブロック・デバイスに似せたエミュレーションを行いますので、多くの場合、このエミュレーションの上にFTLやJFFS2のようなファイルシステムを作成すればよいでしょう。
 で、フラッシュメモリが対象になる場合に、/dev/mtd?の方はアクセスする単位を細かいデータ単位(=キャラクタ?)で取り扱えるのに対して、/dev/mtdblock?の方は既存のブロックデバイスであるかのように取り扱えるというような違いかな?

というのを踏まえて参考にしたサイトを見ると、
NANDに直アクセスする場合

 #/usr/sbin/flash_eraseall -j /dev/mtd2
 #/usr/sbin/nandwrite -p /dev/mtd2 /ubuntu-9.0.5.Release.jffs2

となっていて、マウントする場合は

 #mount -t jffs2 /dev/mtdblock2 /mnt1

と使い分けられているわけか。

なんとなく、わかったような気になったよーな気がする。

SheevaPlug+でNFSBoot

SheevaPlug+復旧の記録。

送られてきたSheevaPlug+でapt-getをやろうとすると、
"/usr/lib/methods/http not found"(Pathは少しあやふや)なるエラーがでてしまい、plugcomputing.orgからゲットしてきたrootfs.tar.gzやら展開してみるも効果がなく、途方にくれて結局rootfs自体再インストールする事にしました。


で、NFSBootをやりました。
(後から考えたらSDCardにMiniRoot作ってもいけたような気もするんですが・・)
NFSBootをしてNetwork越しのkernel&rootfsでBootし、NANDを書き換えるという作業。

かなり参考した記事は以下


Ubuntu Weekly Recipe
第69回 GW特別企画・電源プラグ型コンピューターSheevaPlugの使い方(1):基礎編
第70回 GW特別企画・電源プラグ型コンピューターSheevaPlugの使い方(2):インストール編

やりたいことをほぼそのままやってくれているので詳細はそちらにゆずるとして・・。

ざっくりやったことを書くと、
母艦側
1. tftpのインストール&設定
2. NFSのインストール&設定
3. NFSBoot用のkernelとrootfsの準備
SheevaPlug側
4. bootcmd, bootargsをNFSBoot用に設定
5. NFSBootする
6. flash_eraseall, nandwriteを使ってkernel, rootfsの上書き(kernelはついでにやった)
7.bootcmd, bootargsをNANDBoot用に設定
8. Boot

注意点があるとすれば、
rootfsのサイズが記事では0x1f800000なんですが、
自分の環境では0x1fb00000にしないとうまく起動してくれなくて、rootfsが読み込めんといわれてkernel panicを何度も起こしました。


あと、別に起動しなくなるわけではないかもしれませんが、bootargsのmtdpartsを記事ではu-bootから指定してますが、自分の環境ではuImageとrootfsだけ書く方に変えました。

長くなったので、とりあえず一旦ここまで。

2010/05/05

MacでSheevaPlug+のシリアル接続

してみました。MacOSXはSnow Leopardです。


ほとんどHisaoさんの記事
したがってやりました。

Info.plistの更新でFAILがでてたようなきがするもAnyway Applyで強引に更新。

しかしUSBシリアルを抜き差ししても/dev/cu.usbserial*が認識されない。

手順にしたがって

sudo touch /System/Library/Extensions

してみるも、無駄。

結局、元サイト(plugcomputing forum)にあるように

sudo kextunload /System/Library/Extensions/FTDIUSBSerialDriver.kext
sudo kextload /System/Library/Extensions/FTDIUSBSerialDriver.kext

までやると、うまく動きました。
これで楽になります。

2010/04/30

やっとまともに

NICがなにをやってもうんともすんとも
言わなかったので、結局gofieldに事情をはなしたら、快く代替品と交換してくれました。

と思いきやなんかaptしようとしたら、
なんちゃら/method/httpがないとかいわれてaptができぬ状態‥。
そもそもマニュアルにあるブラウザからのセットアップの画面なんて、まったく動かずで、なかなかのじゃじゃ馬っぷり‥orz

最後の頼みの付属のDevKitToolのDVDからリカバリしてもまったく変化はなくて

でもNICはうごいてるみたいなので、気合い入れてnfsbootやってroot file systemをリカバリしてみたところやっとaptが動いた!!
ついでにkernelもアップデートしました。

後で、動くまでにやったことを覚え書きとしてアップします。

しかし、普通にマニュアル通り動いてる機あんのかなぁ(^^;; もしくは脅威的に引きが悪い?

2010/04/20

初期不良

やっとさわれたとおもったら
NICがなにやってもつながらず
初期不良であった‥orz

連絡したら送り直してくれる事に。
一安心。

2010/04/17

久々に

SheevaPlug+を購入。
http://www.debutdirect.com/products/details/8

更新記録を覚え書きする意味をこめて投稿する為に、
blog設定を整理中。
久々だ・・。