無題 @ はてな このページをアンテナに追加 RSSフィード

2007 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2008 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2009 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2010 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |

2008-05-25

手つき

D

LEDが光センサとしても機能するという性質を応用して、タッチセンサを実現しているんですね。

でもって、以前、この動画を友人に見せた時の反応。



「手つきがやらしい」



視点が違う!

しかし、確かにやらしい!

2008-05-16

hidep222008-05-16

as3xlsで作ったxlsファイルをas3xlsで読めない

Google Code Archive - Long-term storage for Google Code Project Hosting.

このライブラリを使うことでflash内でExcelファイルを読み書きすることができるようになります。AIRで便利に使わせてもらっています。

で、ちょっと問題にブチあたったのでメモしておきます。

var xls:ExcelFile = new ExcelFile();
xls.loadFromByteArray(myByteArray);

こんな感じでxlsファイルを読み込むのですが、このas3xlsで作ったxlsファイルを再びas3xlsで読み込もうと思っても読み込めません!(エラーがでる)

あまり検証する時間もなく、再び読み込まないことで問題を避けましたが、来週ちゃんと見ていこうと思います。

flashでPDFを作る - AlivePDF

f:id:hidep22:20080517005807j:image

Google Code Archive - Long-term storage for Google Code Project Hosting.

flashPDFを生成できるライブラリAlivePDFのご紹介。AIRで簡単にPDFを作ることができるようになります。ver.0.1.4.1では画像(JPG)を埋め込めるようになっていて使いやすいです。

これと以前作ったプリントサーバを使うことで、AIRからキレイなドキュメントを印刷することができるようになります。flashでプリントといえばPrintjobですが、あまり自由度が高くないんですよね。AIRもがんばっているようなので、リッチなプリントAPIが出てくることを期待しています。。

gsprintでカラー印刷

gsprintは標準ではグレースケールで印刷されますので、カラーで印刷するためには-colorオプションが必要となります。

no title

2008-05-09

SUZAKUでLCD制御

suzakuでLCD

SUZAKUでLCDを制御しています。

ucLinux on MicroBlazeです。

このLCD、1画素9bit(RGBそれぞれ3bitずつ)なので、あまりキレイではありません。

2008-05-07

AIRから印刷ダイアログを出さないで印刷したい

AIRキオスク端末みたなものを作っているのですが、その画面に表示されている「印刷」ボタンを押せば印刷ダイアログなしでローカルに保存されているPDFを印刷する方法を考えていました。

どうもAIR(Flex)のprintjobだけでは印刷ダイアログがどうしても出てしまうので、ここはひとつ印刷サーバを立てて、そのサーバが代わって印刷してくれるようにしました。サーバ側はいつものpythonを使い、ダイアログなしで印刷するためにGSViewに付属する「gsprint」を用いました。gsprint ならコマンド内で完結しますので、印刷ダイアログが出ません。AIRとの通信はAMFを使っています。OSはWindwosです。


import os
from pyamf.remoting.gateway.wsgi import WSGIGateway
from wsgiref import simple_server

def printPdf(name):
	os.chdir('D:')
	return os.system('gsprint ' + name)

services = {'printPdf': printPdf}

if __name__ == '__main__':
	gw = WSGIGateway(services)
	httpd = simple_server.WSGIServer(
		('localhost', 8000),
		simple_server.WSGIRequestHandler,
	)
	
	httpd.set_app(gw)
	
	print "Running PDF Print Server on http://localhost:8000"
	
	try: 
		httpd.serve_forever() 
	except KeyboardInterrupt:
		pass

印刷しているのは os.system('gsprint ' + name) で、name に印刷したいファイル名をフルパスで入れれば印刷ダイアログなしで印刷できます。

ついでに、AIR側では

gateway = new NetConnection();
gateway.connect("http://localhost:8000");
var param:String = input.text; // ファイル名
var responder:Responder = new Responder(onResult, onFault);
gateway.call("printPdf", responder, param); // ここでサーバ側のprintPdfをコールする。

もっとスマートな方法があれば教えてください!

2008-05-06

BlazeDSどうでしょう

はてブのホッテントリしているこの技術ですが↓

Comet/Ajaxの上を行く技術 - Blog by Sadayuki Furuhashi

名前はアリエールに一票。

そして、これってBlazeDSでやればいいんじゃないでしょうか。

BlazeDSRPC(リモーティング)とサーバからのプッシュ(メッセージング)を実現するためのサーバ側のテクノロジーです。

リモーティング機能は、RPC(Remote Procedure Call)モデルでJavaメソッドを呼び出すことができますし、AS3のクラスのオブジェクトJavaオブジェクトを相互に、自動的にマッピングしてくれます。また、サーバと通信するときは、バイナリデータフォーマットのAMF(Action Message Format)を使えるので、上のページで使われているようなXMLSocketよりもパフォーマンス的に良いです。

メッセージング機能は、Cometと同様のポーリングモデルか、クライアントサーバ間に永続的なデータプッシュ用の接続を実現する新しいHTTPストリーミングチャネルを使用できます。ネックは1CPU当たり約100〜200程度の接続しか処理できないところでしょうか。

これらは一般的な HTTP のリクエスト・レスポンスで行われるので、ネットワーク環境について心配する必要もありません。

BlazeDSクライアント側にはFlex3を使いますので、上のページにもあるように、External Interfaceを使えばJavaScriptとも連携できます。サーバ側はJavaですが、なんならjRubyJythonも使えます。

ま、作る事に醍醐味があると言えばそれまでですが、上のやつはsocket使わずFlashRemotingでやればもっといいかなーと思った。しかし、ハチロク世代がんばってるなー!

チャットではありませんが、サンプル的なもの→BlazeDSでGoogle Mapsのグリグリを共有 - 無題 @ はてな


参考

2008-05-03

GPSリアルタイムトラッキングしてみた

パソコンを持って、外に出よう!!

秋月のGPSレシーバが使える事が分かったので、1秒ごとに取得できるGPSからの情報をGoogle Maps APIを使ってマップに表示してみました。

まずは、GPSレシーバが裸だったのでケースを作りました。

ケース作りました

ジャストサイズです。

そして、GPSリアルタイムトラッキングシステムの概要↓

リアルタイムマップ表示アプリ

USB(仮想シリアルポート)からデータを受け取り、FlexにGPS情報を渡すサーバpythonで書かれています。XMLで受け渡すのもなんなので、pyAMFを使ってみました。RemoteObjectでウハウハです。pyAMFは、Google App Engineでも使えるので勉強しておくと良いかもしれない!no title

表示部は、この前作ったBlazeDSの習作をそのまま流用しています。

見た目はこんな感じ。

GPSレシーバを持って歩いてみた

よくあるカーナビっぽい見た目です。

で、実際に動いているところもがんばって撮ってみました。

D

無線LANの範囲でしか動けないので、建物の周りをうろうろしています。誤差はほぼない感じです。レスポンスが遅い気がしますが、GPS自体使った事がないのでよくわかりません。なによりも、パソコンを持って歩くのでモバイルどころではありません!

しかし手は打っています。無線インターネットはe-mobileで大丈夫です。PCとGPSはUSB接続なのでどっかのCPUlinuxのっけたら動くかなと思っています。

あんまり関係ありませんが、よくよく考えると、リアルタイムで位置情報を公開したい!というのは技術が創りだした欲望ですね。

追記

ソースはこちらです。

参考

python
pyAMF
Flex
Google Maps API
回路

2008-05-02

Flex勉強会@愛知/岐阜

no title

FxUG全国展開に向けて動き出しているようです。

期待!

2008-05-01

これはなつかしい

D

D

作った人のページ↓

404 Not Found

かなり前(4,5年?)のDesignWaveで、ALTERAのCycloneの評価ボードを使って1つめの動画にあるようなポリゴンエンジンを実装した記事を見て、こいつはすげーやと思った思い出があります。今頃になってニコニコ動画で凄まじい再生数になっているとは思いもしなかった!そんでもって、まだNiosIIを使っている人がいて安心しましたw

あのころはSoCでガリガリ作るのが流行で、そこで使われるCPUコアがAlteraの「NiosII」か、Xilinxの「MicroBlaze」でした。上の動画で使われているのはNiosIIです。(私はMicroBlaze派!

OPENCORESができたとき、クロック数のしょぼいCPUコアとかUSBホストコアとかのIPが少し転がっていて、FPGAの将来にワクワクしていましたが、今はどうなんでしょう。最近あんまりFPGAの話題から遠のいていたのでわかりませんが、市場的には活気づいているのかどうか。。。

しかしまあ、JSとかRubyとかVHDLとかのコーディング自体を楽しむ人が最近多い気がしますが、やっぱり上の動画の人みたいに何かを作り上げることってのは大事だなーと思いますねー。私のまわりでも「手段が目的に」というのがまた流行りそうなので、毒されないよう自戒の念もこめて。

それにしてもMake:Tokyo Meetingはおもしろかったんだなー!いいなー!行きたかった!才能の無駄遣いは良い!

tomcatとapacheの連携

どうやら、昨日のgooglemapsのやつは、tomcatサーバの8180番が塞がれていてアクセスできない状態になっていたみたいです。すみません。

ということで、80番でアクセスできるようにしました。「http://サーバ:8180/samples/」でtomcatにアクセスしていたのを「http://サーバ/tomcat/samples/」でtomcatにアクセスできるようになりました。

Google Maps sharing (BlazeDS)

これでちゃんと見える、はず。。

アドレスが「http://サーバ/tomcat/samples/」となったので、FlexBuiler側でも変更する箇所があります。

BlazeDS側のservices-config.xml

<channel-definition id="my-longpolling-amf" class="mx.messaging.channels.AMFChannel">

<endpoint url="http://{server.name}:{server.port}/{context.root}/messagebroker/amflongpolling" class="flex.messaging.endpoints.AMFEndpoint"/>

<properties>

<polling-enabled>true</polling-enabled>

<polling-interval-seconds>5</polling-interval-seconds>

<wait-interval-millis>60000</wait-interval-millis>

<client-wait-interval-millis>1</client-wait-interval-millis>

<max-waiting-poll-requests>200</max-waiting-poll-requests>

</properties>

</channel-definition>

このurl中に{server.name}と{context.root}というのがありますが、これはFlex Builder 3でのプロジェクトプロパティ中の「Flexサーバ」での「ルートURL」と「コンテキストルート」のところで設定します。アドレスが変更されたため、コンテキストルートを「/samples」から「/tomcat/samples」に変えないといけないんですねー。

ついに測位できた?!

アルミホイルが実は近くにあったので、それを使って回路を作り直してみました。

GPSレシーバver.2

GPSレシーバとPCの接続にはUSBを使っています。電源もUSBから引いていますので別電源もいりません。回路、コード共にとってもシンプルになりました。

で、資料を見てみると、測地系の設定がTOKYO Mean Solutionがデフォルトなんですね。じゃあ、GoogleMapsはどうなんだというとWGS84。ということで、測地系を変更してみました。

GPSVPで測地系をWGS84に変更

GPSレシーバを差してGPSVPを起動し、Tool →Manual commandでコマンドを送ります。

手順としては、

  1. 「$PSRF106,21」と入力。
  2. Checksumをチェック(*0Fがいるので)。
  3. sendボタンを押す。

で、WGS84に変更できます。

で、実際に外に出て試してみると、、

誤差はほとんどありません

トンピシャです。やったー(・∀・)結局測地系の設定が悪かったんですかねー。ちゃんと資料読まないと。。

次はリアルタイムでGPSのデータを地図にマッピングするアプリを作る。。

2007 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2008 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2009 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2010 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |