ContactQRアプリのv0.9.5を昨日リリースしました。
最初はv0.8からスタートしましたが、ユーザーからのコメントやフィードバックを元に改良を重ね、
ついにv0.9.5まで来ました。おかげ様で、少しずつ良くなってきているのではないかと思います。
貴重なご意見を提供してくださった方々、どうもありがとうございました!
他に修正依頼、バグ報告、機能追加のリクエストなどありましたら、ご連絡ください。
このブログエントリにコメントしていただくのもOKです。

contactqr_12.pngcontactqr_15.png
contactqr_13.pngcontactqr_14.png
アプリ名: ContactQR
マーケット > アプリケーション > ツール
検索ワード:QR、アドレス、アドレス交換
ContactQR_QRCode.png









- 更新履歴
===============================================
[v0.9.5]
オープンソースライブラリであるZXingを用いるように修正。
これにより、ネットワークに接続せずともQRコードを作成できるようになりました。
※また、Update後、QRコード作成に失敗する場合がある問題を修正。
ご迷惑おかけしました。
[v0.9.3]
保存済みQRコードを閲覧する際、登録内容を表示。
また、メール送信の際、本文にQRコードの登録内容を表示。
[v0.9.0]
連絡先データの表示形式を変更。
作成したQRコードの保存が可能(JPEG形式)。
なお、メニューより、保存したQRコードの削除、またメール送信も可能。
パフォーマンスの改善。バグ修正。
アドレス帳のデータ交換用に作成したContactQRアプリですが、多くの方にご利用いただいているようで、どうもありがとうございます!
コメントにてご要望のあった保存したQRコードの閲覧機能は以下のように現在作成中ですので、もうしばらくお待ちください。
他にも機能追加のご要望がありましたらお知らせください。
時間の関係上、できる範囲で対応したいと思います。

contactqr_12.png

HT-03Aを買ったときに少し驚いたのが、最初からバッテリーが2個ついてきたこと。
バッテリー消費が激しいのはわかってたけど、いきなり2個ついてくるとは思わなかった。
んで、2個あるのはいいけど、同時に充電できないから、長期間出掛けるときに
困るなあと思っていたら、こんなんあったんですね。
クレードルで、同時に充電が出来、3.5mmφヘッドフォン端子もついてる。
買おうか悩むなーと思ったら、人気なのか、現在品切れ中のようです。。
みんな考えることは同じですねw。

android_cradle.jpg

デラックスUSBクレードル for HT-03A

先週、知り合いがドコモのAndroid携帯(HT-03A)を買ったんですが、なんかアドレス帳のデータの受け渡しに困ってるらしく、日本語のQRコード作成アプリ作ってよと頼まれたのがこのアプリの始まり。。報酬は特になし(涙)
(※実は自分も最近HT-03A買ってしまいました。かなり安くなっていたのでw。)
なんでも彼はAndroid標準の連絡先にあるコンタクトと連携するのが欲しかったらしい。
マーケットに探せばありそうだったけど、日本発のは数が少ないので、
とりあえず作ってみることにした。
そして偶然にも12月24日、イブの日に大体動くようになったので、公開してみました。
開発はQRコードの作成をAPIに頼ったので、短時間で終えることが出来ました、へへ。
ただ、こういうアプリを作るときにいつも思うのが、いいアイコン誰か作ってくれないかなーということ。
友達にそういうのをパッと作れる人がいないので、どなたかとお知り合いになりたいものです。

一応、他のアプリとの少しばかりの差別化ということで、出力項目を選択できるようにしてみました。
使っていただいてる方、本当ありがとうございます!
ちなみに、細か~いテストはしてないので、バグとかがあったらすみません。。。
今は追加機能として、作成したQRコードをイメージとして保存できるようにするとか、
メールで送れるようにするとかいうのをやろうかなと思っています。他にはアンドロイド標準の連絡先みたいに使えるようにするとか。。まあ、そんなのいらないっていう話もありそうですけどね。

contactqr_1.png あ、ここでコンタクトの名前に関する突っ込みはなしでw。
相当久しぶりの更新になってしまった。。これからは、もう少し更新するようにしよう。
さて、今の仕事に対するモチベーションが下がり気味の自分ですが、
社会人になって初めてのボーナスが出ました!
というわけで、とりあえず前から欲しかったインテルSSDをポチっとしてしまいました。
送料込みで25800円。。。
これを高いと思うか安いと思うかは人それぞれといったところか。
Windows 7も出たことだし、2年前に買ったノートPC(ThinkPad T60p)のHDDをインテルSSDに換装し、ついでにOSもXPから7にアップグレードする予定。
まあチップセットが945PMでSerialATA 1.0だから150MB/Sが上限で、フルにSSDのパフォーマンスを引き出せないのが残念だが、まあ仕方ない。新しいノートPCを買うお金がないので。
とりあえず、買うとしたらインテル次期モバイルCPUのArrandaleが出てからかな~。

もう社会人。。

| | Comments (0) | TrackBacks (0)
実は大学生活ももう終わり、6月から東京で社会人としての生活が始まっています。
とは言っても社会人としての自覚とかはほぼ皆無ですが。
それとわかってはいたものの、学生時代の自由という名のありがたみを痛感しています。
いやぁー、もっといろいろと勉強しておくべきでした。
まあでも、社会人生活もそこまで悪くありませんけどね、そんなに良くないけど、お給料というものがそこそこもらえますし、何より日本の食事はおいしいですしね。
ただ、今のところ仕事自体はそんなに楽しくないです、正直言って疲れます。
早く楽しいと感じられるようになりたいものです、何と言っても一日24時間のうち3分の1以上は会社にいますからね、何とか楽しく過ごしたいものであります。
就職が既に決まってしまっていたので面接は受けれなかったのだが、リクルーターから記念に非売品のマグカップをもらった。かなりのお気に入りなので、近いうちに社会人になったら会社でも使おうと思う。
YahooMugCup.jpg
Obviously, the bigger the image, the easier to detect faces.
The API uses eyes as the "facial detection" and there is no other detail (face dimensions mouth location etc.).
Also faces that are taken from the side will not be detected. Sunglasses/glasses turns out to interfere with detection.
It seems to take the same amount of time regardless of how many faces you specify in the FaceDetector constructor.
I recommend the picture size smaller than 800x800 pixels coz it will take a lot of time to process the large image.

The following app runs the image processing code in a separate thread, and notifies the UI thread when the processing gets done, then calls invalidate() to redraw the canvas.
(画像解析のコードは別スレッドで走らせて、処理が終了したらUIスレッドに知らせてキャンバスを描き直しています。)
特に何でもないアプリですが、
もしコード見たい方がいたらアップしますので、コメントでお知らせください。

Demo Video:

幸か不幸か来週にモトローラからSTBが届いてしまうらしい(汗)。
というわけで、Android上でのアプリ開発はいったんストップかな。前回のエントリー以降いくつか機能を追加して音楽も再生できたりして結構いい感じまでいったのにな~。
なんでも、来週にはクラスの生徒へのサンプルとして公開されるそうです。

しかし、STBが届いてしまうと忙しくなってしまう。卒業研究がピンチだw。どうせならもっと暇だった1月前半に送って欲しかった(涙)今週末からOCAP Platformの勉強をしないといけない。。。

motorola.jpg
今週の月曜からいじりだしたAndroidですが、Eclipse上での開発環境が予想以上に充実していてなかなか素晴らしいです。特にEmulatorの出来がいいのではないでしょうか?音楽だけではなくビデオまでEmulatorで再生できて驚きました。

というわけで、今日時点でのアプリのスクリーンショットをちょっとご紹介!

gtplayer1.png LocalのSDカードにあるビデオをブラウズして再生したり、ネット上にあるファイルを再生できたりします。ただAPIの仕様上、プロトコルはhttpとrtspのみのサポートになります。しかもコンテンツはProgressive Streamableじゃないといけないといったコーデック以外の制約もあります。

gtplayer2.png
gtplayer3.png
ビデオリストの追加、編集、削除ができます。それぞれのビデオにはタイトル、コメント、URLなどの情報を入力できます。
gtplayer4.png上はWebServerにある007最新作のMovie Trailerを再生しているところ。
gtplayer5.pngタッチパネルを使った操作も可能で、動画をタッチするとPauseとかResumeとかできます。

さて、たった数日でここまで出来るAndroid Platformはなかなか魅力的ですね。Javaの知識がある程度ある方なら頑張り次第でかなりおもしろいアプリが作れるのではないでしょうか?
今学期は忙しいんであれですが、もし時間があればいろいろと情報交換していきたいですね。
今週の月曜日に大学の研究室からAndroid携帯(開発者向け)を入手しました。
普通の電話機としても使えるんですが、僕の場合は"試しにアプリを作りやがれ"という感じで渡されたので、早速SDKを使っていろいろとアプリを開発しています。ちなみに第一弾はVideoPlayerですかね、Linuxサーバー(TV Tuner Card付き)からのLiveTV Streamを再生できるようにしなければならないんですよね~。

AndroidG1.JPG
上の写真でハイライトされてるのが試しに開発中のアプリです。
1週間ほど前の話ですが、Paul Smithの靴を購入してしまいました。159ドル。。。
セール品とはいえ、それなりのお値段。でも履き心地が結構良くて買ってよかったと思っています。
日本では大人気のPaul Smithですが、アメリカではデパートにちょっと置いてあるだけです。

paulsmith.JPG
今年は珍しいことに冬休みも日本に帰らずにアメリカで過ごしています。
お買い物に行ったり、夜遅くまで24を見たり、まあ優雅な休日を過ごしております(笑)

さてさて、今日はクリスマスだったので、割と高級なSunDialというレストランに行ってまいりました。
コース料理で一人約80ドル。あ~、学生にしては高いですね。
前菜としてはキャビアがちょっとのっかったスモークサーモンサラダを食べました。
キャビアを食べるのは生まれて初めてだったんですが、意外といけました。
生臭くて食べられないんじゃないかと最初は思ったけど、今までのイメージ的には。

最後にちょっとしたニュースなんですが、来学期はモトローラと合同でIPTVプロジェクトに取り組むことになりました。最後のセミスターなんですが、何気にかなり忙しくなりそうです。
SailfinでMySQLを使えるようにするための手順。

1. MySQL JDBCドライバをhttp://dev.mysql.com/downloads/connector/j/5.1.htmlからダウンロード。

2. ダウンロードしたZIPファイルを解凍する。

3. mysql-connector-java-5.x.x-bin.jar を{Sailfinをインストールしたディレクトリ}\lib にコピーする。

4. Sailfinを 'asadmin start-domain domain1'コマンドを実行して起動する。ちなみにasadminコマンドは{Sailfinをインストールしたディレクトリ}/binにあります。

5. Sailfinの管理画面へとログインします。デフォルトではhttp://localhost:4848/login.jsfになっています。インストール時にsetup.xmlなどで変更していなければ、ユーザ名とパスワードはそれぞれadmin,adminadminとなっています。

6. 管理画面の左側にあるCommonTaskのResourcesメニューをクリックし、JDBCメニュー配下にあるConnection Poolsをクリックします。

7. Resource Typeとしてjavax.sql.ConnectionPoolDataSourceを、Database vendorとしてMySQLを選択し、新しいConnectionPoolの名前を入力します。

8. 後はウィザード通りに進んで最後に"Ping"ボタンを押してConnection Poolが正しくセットアップされたかどうか確認してください。

9. 続いてJDBCメニューにあるJDBC Resourcesをクリックします。

10. JDBC Resourceを特定するのに使われるJNDI Nameを入力します。先程作成したConnectionPoolを'Pool Name'として選択します。

11. OKボタンを押して終了となります。コードでは先程指定したJNDI Nameを指定してデータソースにアクセスすることができるようになります。

今回は大学のプロジェクトの関係でmod_jkによるApache-Sailfin連携環境を構築する機会があったので未来の自分のためにもここで紹介しておこうと思う。というのも、一年もすれば確実にやり方を忘れてしまいそうなので。。。
さて、mod_jkを使ったApacheとTomcatの連携はよく知られているけど、ApacheとSailfinでも結果的に同じことが可能であった。ただやり方はちょっと面倒くさい。
ちなみにSailfinとは
  • オープンソースアプリケーションサーバー
  • ベースはGlassfish
  • Sip Servletが使える
  • 管理・Netbeansを使うと開発が簡単
というアプリケーションサーバーである。ベースがGlassfishということなので、この記事あたりを参考にすれば普通にできるかなぁと思ったので今回試してみました。

構築環境:
OS: Ubuntu Server 8.04
Apache(httpd): Apache 2.28
mod_jkのバイナリ 1.2.27

1. mod-jkをインストールする。


mod-jkが我がサーバーにはないので、まずはここからダウンロードする。
Apacheのバージョン情報に応じてダウンロードするものが違うみたいなので、下記のコマンドを実行し出力されたApacheのバージョンに合ったモジュールをダウンロードする。

/usr/sbin/apache2ctl -v (もしくはhttpd -v など実行)

ダウンロードしたモジュールをmod-jk.soとリネームして/usr/lib/apache2/modulesに配置する。
続いてmod_jk.confとworkers.propertiesを下記を参考にして作成し、/etc/apache2/confに配置する。

[mod_jk.conf]
JkWorkersFile /etc/apache2/conf/workers.properties
# Where to put jk logs
JkLogFile /var/log/apache2/mod_jk.log
# Set the jk log level [debug/error/info]
JkLogLevel debug
# Select the log format
JkLogStampFormat "[%a %b %d %H:%M:%S %Y]"
# JkOptions indicate to send SSL KEY SIZE
JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories
# JkRequestLogFormat: set the request format
JkRequestLogFormat "%w %V %T"
# Send all jsp requests to Sailfin
JkMount /examples/*.jsp ajp13
# Send all XMLTester/XmlService requests to Sailfin
JkMount /XMLTester/XmlService ajp13

(注)JkMount->場合によってはVirtualHostごとに設定が必要。

[workers.properties]
worker.list=ajp13
worker.ajp13.port=8009
worker.ajp13.host=localhost
worker.ajp13.type=ajp13
worker.ajp13.cachesize=10
worker.ajp13.cache_timeout=600
worker.ajp13.socket_keepalive=1
worker.ajp13.socket_timeout=300
次は/etc/apache2/mods-availableにmod_jk.confとmod_jk.loadを作成し、
/etc/apache2/mods-enabledからシンボリックリンクを張る。

cd /etc/apache2/mods-enabled
sudo ln -s ../mods-available/mod_jk.load mod_jk.load
sudo ln -s ../mods-available/mod_jk.conf mod_jk.conf

[mod_jk.load]
LoadModule jk_module /usr/lib/apache2/modules/mod_jk.so
[mod_jk.conf]
<IfModule mod_jk.c>
   Include /etc/apache2/conf/mod_jk.conf
</IfModule>

最後にApacheを再起動します。
sudo /etc/init.d/apache2 restart

2. AJPコネクタモジュールなどをインストール。

Apache Jakarta Projectからcommons-logging-1.1.1.jarを入手します。
Tomcat 5.5.16のserver/libに含まれている下記の2ファイルをコピーします。

  1. tomcat-ajp.jar
  2. commons-modeler.jar
ここで下記3ファイルをsailfinがインストールされたディレクトリ(例えば/usr/share/sailfin)のlibディレクトリにコピーします。
  1. tomcat-ajp.jar
  2. commons-logging-1.1.1.jar
  3. commons-modeler.jar
Sailfinをあらかじめ起動しておき、SailfinのbinディレクトリにあるasadminコマンドでJVMオプションを追加します。

asadmin 
create-jvm-options -Dcom.sun.enterprise.web.connector.enableJK=8009

(Sailfinディレクトリ)/domains/(ドメイン名)/configディレクトリに以下の内容でsailfin-jk.propertiesファイルを作成。他サイトの情報によるとこれをやらないとREMOTE_USER情報がSailfinに渡されないとのこと。
 
[sailfin-jk.properties]
tomcatAuthentication=false

続いて設定するドメインに応じて下記コマンドを変更した上で実行し、Sailfinが
sailfin-jk.propertiesをロードするようにする。

asadmin create-jvm-options
-Dcom.sun.enterprise.web.connector.enableJK.propertyFile=
/usr/share/sailfin/domains/domain1/config/sailfin-jk.properties


最後にドメインを再起動して終了です。
後は適当なJSPファイルを使ってちゃんと動いているか確認してください。
asadmin stop-domain domain1
asadmin start-domain domain1

お疲れ様でした。
[参考サイト]
http://www.office-matsunaga.biz/dev/description.php?id=6
http://weblogs.java.net/blog/jfarcand/archive/2006/03/running_glassfi_1.html

Recent Assets

  • ContactQR_QRCode.png
  • contactqr_14.png
  • contactqr_13.png
  • contactqr_15.png
  • contactqr_12.png
  • android_cradle.jpg
  • contactqr_1.png
  • YahooMugCup.jpg
  • motorola.jpg
  • gtplayer5.png

Find recent content on the main index or look in the archives to find all content.