就職が既に決まってしまっていたので面接は受けれなかったのだが、リクルーターから記念に非売品のマグカップをもらった。かなりのお気に入りなので、近いうちに社会人になったら会社でも使おうと思う。
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
今日は今取り組んでいる電話会議プロジェクトのログイン画面を公開したいと思います。
一日でも早く友人たちを使ったテストを始めたいですねw。WebUIの経験はあまり無いので、デザインが微妙とかいうクレームはなしの方向でお願いします(笑)。

WebUI_Concal.JPG

疲れました!

| | Comments (0) | TrackBacks (0)
今日の夜にキャリアフェアのあったボストンから帰ってきました。
いや~、久しぶりにたくさんの日本人を見ました。
そして疲れました、特に一日目のハプニングのせいで。
というのも、出発日に予約しておいた飛行機がメカニックトラブルでキャンセルされ、午前中の面接をキャンセルする羽目になり、それらを午後に詰め込んだためスケジュールがなかなか激しいことに。。。会場を走り回りましたw。
ちなみに今回受けた5社は全て外資系になりました。IT系の会社と外資系投資銀行ですね。
2年前のキャリアフォーラムでは応募しなかった金融系の会社を今回受けてみたのですが、なかなか勉強になりましたね。それにしても外資系投資銀行は受けてる人のレベルが高いな~と。
ディナーにも連れてってもらったりしたのですが、MIT、UPENN、Columbiaなど名の通った大学の方々がたくさんいました。
とにかく、僕的には結果も含めて満足のいくキャリアフォーラムになりましたね。
あまり時間はかけられませんが、納得のいく結論を出したいです。
今日は疲れたのでこれから爆睡します。おやすみなさい。
今週末はついにボストンキャリアフォーラムです。無職の管理人も職を探しに行ってまいります。
もう受ける企業は決まっているので、後は現地に行って面接に臨むだけであります。
ちなみに今日は縁起を担ぐためにとんかつを食べました(笑)
うまくいくといいですなぁ。というのも、やっぱ自分は日本で働きたいので。
でもあんまり給料が安いとこは嫌ですけどね。

話は変わって、今学期から取り組んでいる電話会議プロジェクトがもう少しでオープンテストの段階まで持っていけそうです。今週かボストンから帰ってくる来週あたりに先生に見せてOKがでればいいかなあと。ふっふっふ、ついに購入したサーバーマシーンの出番がやってきそうだw。

サーバー稼働中!

| | Comments (0) | TrackBacks (0)
まだ公開はしていませんが、サーバーのセットアップは数日前に全て終了しました。
いや~、メールサーバーやバーチャルホストの設定などいろいろ勉強になりました。
ちゃんとスパムフィルターやウィルススキャンの設定もしましたよ~!

というわけで、とりあえずサーバーのセットアップが終わったので来週からはまた例のプロジェクトの開発に取り組めそうです。公開できるレベルにまで達したらこのブログでも発表したいですね。
まあトラフィックはかなり低いですがw。
まずメールユーザのアカウントの設定をWebで簡単に行えるように postfixadmin をインストールします。
UbuntuのRepositoryには入っていないので、

http://sourceforge.net/projects/postfixadmin/
から現時点で最新版のpostfixadmin2.2.1.1all.debをダウンロードしてインストール。


dpkg -i postfixadmin_2.2.1.1_all.deb

上記コマンドを実行するとPostfixadminは"/usr/share/postfixadmin/ "にインストールされます。
設定ファイルは"/etc/postfixadmin/config.inc.php"です。
またApacheにaliasが追加されます → /etc/apache2/conf.d/postfixadmin

続いてPostfixadminの設定ファイルを編集します。

vim config.inc.php
[...]
$CONF['configured'] = true;
$CONF['postfix_admin_url'] = 'http://example.com/postfixadmin'; 

$CONF['database_type'] = 'mysql';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'YourPassword'; //Change here
$CONF['database_name'] = 'postfix';

$CONF['domain_path'] = 'YES';
$CONF['domain_in_mailbox'] = 'NO';
$CONF['encrypt'] = 'cleartext';


設定ファイルの中に記載されているドメインを自分のものと置き換えます。

cd /usr/share/postfixadmin
sed -i "s/\@change-this-to-your.domain.tld/\@example.com/g" config.inc.php
sed -i "s/change-this-to-your.domain.tld/example.com/g" config.inc.php
sed -i "s/Return to example.com/Return to www.example.com/g" config.inc.php

Postfix用のデータベースとユーザーを作成します。


mysql -u root -p
mysql> create database postfix;
mysql> grant all privileges on postfix.* to 'postfixadmin'@'localhost'
                        identified by 'YourPassword!';
mysql> flush privileges;
mysql> \q

ブラウザを開いてhttp://yourdomain.com/postfixadmin/setup.phpへ移動します。
SetUpCheckerが全ての項目に対してOKと表示するか確認。
場合によってはphp5-imapなどをapt-getでインストールする。
OKならAdmin用のEmailAddressとパスワードを登録。 登録し終わったらsetup.phpは削除。
続いてhttp://yourdomain.com/postfixadmin/へと移動。 先程setup.phpで作成したAdminアカウントでログインできるか確かめておく。 (注...まだドメインやメールボックスは作成できません)

次回はPostfix本体の設定を暇なときに書きます。
今回はテキストパスワードによるログインを無効化し、公開鍵暗号方式によるログインを可能にする。
鍵方式によるログインの方が攻撃者の侵入を防ぎやすいからです。
これでセキュリティ的にはかなり上昇します。

初めての方は下のリンク先にあるページでも見てみるといいと思います。
Puttyで鍵交換方式によるSSH接続

(メモ)
1. Puttyで作成した公開鍵をOpenSSH形式に変換するコマンド。
  • ssh-keygen -i -f id_rsa.pub >> authorized_keys
2. 転送した公開鍵ファイル(id_rsa.pub)を忘れずに削除。
3. ターミナルエミュレーターとしてPoderosaを使う場合はPuttyで生成した秘密鍵を「ssh.com」形式へとエクスポートする必要あり。

鍵のセットアップが終わってテストログインにも成功したら再度sshd_configファイルを編集します。

1. #PasswordAuthentication yesの行をUncommentして以下のように修正。
これで秘密鍵を所持していないとログインできなくなりセキュリティが向上します。
  • PasswordAuthentication no
2. 最後に新しい設定を有効にするためSSHを再起動!
  • sudo /etc/init.d/ssh restart

Recent Assets

  • YahooMugCup.jpg
  • motorola.jpg
  • gtplayer5.png
  • gtplayer4.png
  • gtplayer3.png
  • gtplayer2.png
  • gtplayer1.png
  • AndroidG1.JPG
  • paulsmith.JPG
  • WebUI_Concal.JPG

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