masat999's posterous http://masat999.posterous.com Most recent posts at masat999's posterous posterous.com Sun, 31 Jul 2011 00:38:15 -0700 Untitled http://masat999.posterous.com/63222787 http://masat999.posterous.com/63222787
Media_https1i1picplzt_eifof

Taken with picplz.

Permalink | Leave a comment  »

]]>
http://files.posterous.com/user_profile_pics/881492/27350_100001241700967_5524_n.jpg http://posterous.com/users/YrBcdfy4Gpb masat999 masat999
Sat, 30 Jul 2011 19:23:47 -0700 Untitled http://masat999.posterous.com/63196012 http://masat999.posterous.com/63196012
Media_https2i1picplzt_rcwqr

Taken with picplz at 丹生川上神社上社 in Kawakami Vil., Japan.

Permalink | Leave a comment  »

]]>
http://files.posterous.com/user_profile_pics/881492/27350_100001241700967_5524_n.jpg http://posterous.com/users/YrBcdfy4Gpb masat999 masat999
Sat, 30 Jul 2011 17:54:04 -0700 奈良県大宇陀 http://masat999.posterous.com/63188417 http://masat999.posterous.com/63188417
Media_https0i1picplzt_hbato

Taken with picplz.

Permalink | Leave a comment  »

]]>
http://files.posterous.com/user_profile_pics/881492/27350_100001241700967_5524_n.jpg http://posterous.com/users/YrBcdfy4Gpb masat999 masat999
Thu, 28 Jul 2011 22:36:04 -0700 今日は二人でお留守番 http://masat999.posterous.com/62939809 http://masat999.posterous.com/62939809
Media_https2i1picplzt_fevko

Taken with picplz.

Permalink | Leave a comment  »

]]>
http://files.posterous.com/user_profile_pics/881492/27350_100001241700967_5524_n.jpg http://posterous.com/users/YrBcdfy4Gpb masat999 masat999
Mon, 14 Feb 2011 06:25:01 -0800 渋谷も雪景色なう http://masat999.posterous.com/43029515 http://masat999.posterous.com/43029515
110214_232301

Permalink | Leave a comment  »

]]>
http://files.posterous.com/user_profile_pics/881492/27350_100001241700967_5524_n.jpg http://posterous.com/users/YrBcdfy4Gpb masat999 masat999
Tue, 25 Jan 2011 05:58:00 -0800 Mercurial on CentOS でバージョン管理(+ mod_wsgi) http://masat999.posterous.com/mercurial-on-centos-modwsgi http://masat999.posterous.com/mercurial-on-centos-modwsgi

ソースコードのバージョン管理として Mercurial を導入してみました。お勧めらしい mod_wsgi の導入も何とかできたので、記録として残しておきます。

GitHubを使ってみようと Eclipse + EGit も試してみたんですが、EGit の動きがイマイチよろしくなかった印象が…そんなこともあって、Google code の Mercurial を試した結果が割と良かったので、とあるプロジェクトで実用できるか環境構築も含めて評価してみることにしました。

Git や Mercurial は CVS、Subversion などのようなシングルリポジトリではなく、分散型バージョン管理ができる次世代(もう”現代”と言っても良いと思うけど)ツールです。Subversion の居心地に慣れきった方も一度使ってみることをお勧めします。HTTP経由で push / pull できるところが魅力なんだと私は思ってます、ハイ。

1. Mercurial をインストールする

# yum install mercurial

2. mod_wsgi をソースからコンパイルし、インストールする

$ wget http://modwsgi.googlecode.com/files/mod_wsgi-3.3.tar.gz
$ tar xfv mod_wsgi-3.3
$ cd mod_wsgi-3.3
$ ./configure
$ make
$ su -c "make install"

3. /etc/mercurial/hgrc を作成する
確か mod_wsgi など、hgwebdir で HTTP 経由での push はデフォルトoff になっていたはずなので、そのおまじないと考える。
社内イントラでセキュリティ保護を考えなくて良い場合に push_ssl = false とすれば良い 

[web]
allow_push = *
push_ssl = false

4. /etc/httpd/conf.d/hg.conf を作成する(httpd.conf に直接追加でもお好きなように。)
ちなみに Location ディレクティブでDigest認証をするように設定していますが、いらないかもしれません。pushするときの認証に必要です。(1/28修正)

LoadModule wsgi_module modules/mod_wsgi.so
<VirtualHost *:80>
    ServerName hoge
    DocumentRoot /var/www/html
    ErrorLog /var/log/httpd/hoge-error_log
    CustomLog /var/log/httpd/hoge-access_log common
    WSGIScriptAlias /hg /var/www/wsgi-bin/hgwebdir.wsgi
    <Directory /var/www/wsgi-bin>
        Options ExecCGI FollowSymlinks
        AddHandler wsgi-script .wsgi
        AllowOverride None
        Order allow,deny
        Allow from all
    </Directory>
    <Location /hg>
        AuthType Digest
        AuthName "Mercurial"
        AuthDigestProvider file
        AuthUserFile /var/lib/hg/hgusers
        <LimitExcept GET>
            Require valid-user
        </LimitExcept>
    </Location>
</VirtualHost>

5. /var/www/wsgi-bin/hgwebdir.wsgi を作成する(4. の WSGIScriptAlias のパスと合わせれば良い)

from mercurial import demandimport; demandimport.enable()
from mercurial.hgweb.hgwebdir_mod import hgwebdir

application = hgwebdir('/var/www/wsgi-bin/hgwebdir.config')

6. /var/www/wsgi-bin/hgwebdir.config を作成する(5. の hgwebdir 引数と合わせれば良い、はず)

[collections]
/var/lib/hg = /var/lib/hg

7. /var/lib/hg/hgusers を作成する
ここで作成したユーザーが Mercurial にアクセスできるユーザーになります。

(1/28追記) 4.の AuthNameで定義した値と realm が一致する必要があるので注意。ここでハマりました…

# htdigest [-c /var/lib/hg/hgusers] 'Mercurial' hguser

8. Apache 再起動

# service httpd restart

Permalink | Leave a comment  »

]]>
http://files.posterous.com/user_profile_pics/881492/27350_100001241700967_5524_n.jpg http://posterous.com/users/YrBcdfy4Gpb masat999 masat999
Tue, 18 Jan 2011 04:20:00 -0800 Google Map API + Geocoding API on Android http://masat999.posterous.com/google-map-api-geocoding-api-on-android http://masat999.posterous.com/google-map-api-geocoding-api-on-android

AndroidにはGoogle APIアドオンがあるので、単純な地図アプリの実装は簡単ですよね。

ここではそのプラスアルファ編として、Geocoding API を利用して住所から緯度・経度を取得し、MapControllerを操作する方法について説明したいと思います。

// リクエストパラメータを設定する
String url = "http://maps.google.com/maps/api/geocode/xml?address=%s&region=%s&language=%s&sensor=true";
Locale locale = Locale.getDefault();
url = String.format(url, address, locale.getCountry(), locale.getLanguage());

// Androidでテキストボックスから住所文字列を取得する場合
String address = URLEncoder.encode(((EditText)findViewById(R.id.address)).getText().toString());

HttpClient client = new DefaultHttpClient();
HttpResponse response = client.execute(new HttpGet(url));
client.getConnectionManager().shutdown();

// レスポンスがHttpStatus.SC_OKを返したら、XmlPullParserで処理する。(Android2.2以降ならXPathも使えるはず)
XmlPullParser parser = Xml.newPullParser();
parser.setInput(response.getEntity().getContent(), "UTF-8");
for (int e = parser.getEventType(); e != XmlPullParser.END_DOCUMENT; e = parser.next()) {
    // 略
}

// ViewPortから適切なズームサイズを設定する
int latSapn = Math.abs(/*//viewport/southwest/lat}*/ - /*//viewport/northeast/lat*/);
int lngSpan = Math.abs(/*//viewport/southwest/lng*/ - /*//viewport/northeast/lng*/);
mapController.zoomToSpan(latSpan, lngSpan);

// Locationを地図の中心に設定する
mapController.animateTo(new GeoPoint(/*//location/lat*/, /*//location/lng*/));

XmlPullParserでの処理についてやnullチェックなど、諸々を割愛してしまいましたが、要はXMLデータが取得できたら、中心となる<location>だけでなくズームサイズの設定に必要な<viewport>も返してくれているよ、ということです。

このviewportがなければ、パッと見とんでもないところに中心座標が移動してしまったように見えることがあります。例えばaddress=Hawaiiを渡してみてください。locationは海のど真ん中を返すので、ズームサイズが適切でないと島が見えずにバグったかと思ってしまいますよ。

あとは、これを別スレッドで処理するなど、モッサリ感満載の動作にならないようにケースバイケースで対処すれば大丈夫だと思います。

Permalink | Leave a comment  »

]]>
http://files.posterous.com/user_profile_pics/881492/27350_100001241700967_5524_n.jpg http://posterous.com/users/YrBcdfy4Gpb masat999 masat999
Sun, 02 Jan 2011 06:41:00 -0800 明けましておめでとうございます http://masat999.posterous.com/38228460 http://masat999.posterous.com/38228460

今年の正月は両親の還暦をお祝いしてきました。妹(長女)も3人目を妊娠中ということで、兄妹3人揃って実家で正月を祝うことができたのも本当に久々なことで、とても良い時間を過ごせました。

母はもちろんのことですが、普段寡黙で笑顔を多く見せない父が、赤いちゃんちゃんこを羽織りながら、これ以上無い程の笑顔で子供達からのサプライズを喜んでくれた様は、私にとってとても感慨深いものです。

特に昨年は体調を崩し、転職などもあってかなり心配させた一年だっただけに、新年早々から最高の親孝行が一つできたのではないかと思います。準備に奔走してくれた妹たちにも本当に感謝しなきゃですね。

 

Permalink | Leave a comment  »

]]>
http://files.posterous.com/user_profile_pics/881492/27350_100001241700967_5524_n.jpg http://posterous.com/users/YrBcdfy4Gpb masat999 masat999
Fri, 24 Dec 2010 22:22:00 -0800 ANAインターコンチネンタルホテルでクリスマス http://masat999.posterous.com/anaiso-2022-jpbgyrcjsqlcyuitwlmyvzjueltsvzjt8 http://masat999.posterous.com/anaiso-2022-jpbgyrcjsqlcyuitwlmyvzjueltsvzjt8

101225_122750

娘には可哀相だけど、ピエール・ガニエールで半年ぶりの夫婦水入らずのランチ。

Permalink | Leave a comment  »

]]>
http://files.posterous.com/user_profile_pics/881492/27350_100001241700967_5524_n.jpg http://posterous.com/users/YrBcdfy4Gpb masat999 masat999
Wed, 22 Dec 2010 00:43:00 -0800 iアプリでTwitterのOAuth認証を実装する http://masat999.posterous.com/itwitteroauth http://masat999.posterous.com/itwitteroauth

PHP や Ruby での OAuth 認証については幾つも情報がありますが、iアプリで OAuth 認証をやった話題はとんと見かけません。ドコモマーケットで個人がDXアプリを提供することもできるようになった今、ログを兼ねてどのように実装したか残しておきたいと思います。

(1) ライブラリの入手

J2ME で使える OAuth ライブラリですが、次の2種を検討しました。   

・ Twitter API ME (http://kenai.com/projects/twitterapime/pages/Home)
・ j2me-oauth (https://github.com/simonpk/j2me-oauth) ←今回採用したのはこちら

Twitter API ME は Twitter に特化したライブラリで、Twitter Dev のどこかでも推奨されているような記述がありましたが、結論から言いますと、iアプリでは外部jar の組み込みが簡単にできない仕様から諦めました。少なくともそのまま使うことはできません。(ソースから iアプリライブラリを生成する手順が必要です。面倒、っつーか Write once, Run anyware じゃないのかよ、と…。)

とりあえず今は認証だけどうにかやってみたかったので、少なくとも j2me-oauth で十分です。とはいえこちらも jar をそのまま使うことはできませんので、ソースを再利用して実装しました。

特に Doja/Star では javax.microedition.io パッケージにあるはずのクラスの一部がドコモ独自パッケージにあったり、j2me-oauth 自体にもバグがあったりと、そのまま使えるとまではいきませんでしたが、対処できる範疇でした。access_token で渡すべき oauth_verifier パラメータは自分で追加するなど、多少の修正は覚悟しておきましょう。

もしライブラリを使わずに自力で全部実装するなら、signiture の生成(Twitter は HMAC-SHA1 のみ。書けるスキルがあるならライブラリの再利用の方がよほど楽だと思います)のところが特に大変だと思われます。あとは決まった宛先にパラメータつなげて送受信するだけ、と言ってしまえばそれまでなので。iアプリでは「それまで」のところがまた面倒なんですが、それはまた別の話。

(2) OAuthの認証フローについて

検索には色々ヒットしますが、頭の悪い私には難解すぎて意味不明…。認証フローについて結局一番よく理解できたのが以下の Twitter Dev の情報でした。 xAuth なら 3. 4. の代わりに id, password を渡せば良いはずだと思いますが、xAuth は個別にリクエストして承認してもらえないと使えませんし、Twitter 自体も推奨はしていない方法です。となれば、純粋な OAuth 認証で解決する方法は把握しておきたいものです。

Authenticating Requests with OAuth
Overview of "Sign in with Twitter"

(3) 実装の手順

流れは以下の通りです。xAuth を使わない限り、3. 4. のステップでブラウザアクセスが必要になることは覚悟しておく必要があります。 3. のレスポンスから hidden パラメータ諸共引っこ抜いてアプリで実装できなくもないですが、Twitter の利用規約上それが許されているかどうかまでは調べていないのでやってません。

1. https://api.twitter.com/oauth/request_token から request token を取得する。
2. 取得した request token を保存する。
    * iアプリならスクラッチパッド領域にでも保存してしまえばよろしいかと。
3. https://api.twitter.com/oauth/authenticate にブラウザでアクセスして承認、画面に表示される PIN を入手する。
4. アプリに戻り PIN を入力させる。
    * これも次回以降のアクセスで必要なのでスクラッチパッドですね。
    * request token が変わってしまったら PIN も再取得なので注意。
5. https://api.twitter.com/oauth/access_token に 2. の token と 4. の PIN を渡す。
    * レスポンスから user_id と screen_name ももらえます。
6. OAuth 認証が通れば、statuses/home_timeline, statuses/update などの API が呼べるようになります。

(4) サンプル

詳細出せないので余計に分かりにくいかもしれませんが、ソースはだいたいこんな感じになります。ご参考になれば幸いです。

Consumer consumer = new Consumer(CONSUMER_KEY, CONSUMER_SECRET, "oob");
consumer.setSignatureMethod("HMAC-SHA1");
try {
    String token = null;
    String pin = null;
    if (ScratchPadManager.isSaved(0)) {
        token = ScratchPadManager.loadString(0);
        RequestToken rToken = new RequestToken(token, CONSUMER_SECRET);
        rToken.setAuthorized(true);
        // pin (=oauth_verifier) has to be set.
        AccessToken aToken = consumer.getAccessToken("https://api.twitter.com/oauth/access_token", rToken);
    }
    if (token == null || token.equals("")) {
        RequestToken rToken = consumer.getRequestToken("https://api.twitter.com/oauth/request_token");
        ScratchPadManager.save(0, rToken.getToken());
        Launcher.launch(Launcher.LAUNCH_BROWSER,
            new String[] {"https://api.twitter.com/oauth/authenticate?oauth_token=" + rToken.getToken()});
    }
} catch (OAuthServiceProviderException e) {
    e.printStackTrace();
} catch (BadTokenStateException e) {
    e.printStackTrace();
} catch (IOException e) {
    e.printStackTrace();
}

Permalink | Leave a comment  »

]]>
http://files.posterous.com/user_profile_pics/881492/27350_100001241700967_5524_n.jpg http://posterous.com/users/YrBcdfy4Gpb masat999 masat999
Mon, 20 Dec 2010 05:25:50 -0800 多幸一なう http://masat999.posterous.com/36948123 http://masat999.posterous.com/36948123
101220_222333

豚玉ネギマヨ祭り!

Permalink | Leave a comment  »

]]>
http://files.posterous.com/user_profile_pics/881492/27350_100001241700967_5524_n.jpg http://posterous.com/users/YrBcdfy4Gpb masat999 masat999
Tue, 07 Dec 2010 07:04:00 -0800 結果を出すこと http://masat999.posterous.com/35619712 http://masat999.posterous.com/35619712

結果出すんだよ。なんで決めつける? QT “(とある人): @takapon_jp ホリエモンの本何冊が読んだけど「死んだら終わり」って考え方なのになんでホリエモンが生きてる間には結果が出ないような宇宙事業に手を出してんの?なんだかんだ死んだ後に名前残したいとか思ってる?

via Twitter

仮に来世ってものがあったとしたら、また夢の続きって見られるんですか?あなたと私の想い、器の形や大きさは違いますよね?

他人を否定することは即ち自分自身の可能性を否定していることなると思いますし、肯定してみて、良いと思えばそれに近づけるように、「できること」からやり遂げてみることが成功への唯一の道なのであって、少なくとも、そのために努力している人を批判して良い理由などどこにも見当たりません。

NHK仕事の流儀で、秋元康さんもこんな風に言っておられました。

「眼に見えないけれども、成功は指先に届かないその1mm先にあるんです。諦めずに指先を伸ばし続けた人だけが手にできるんです。」

 

 

Permalink | Leave a comment  »

]]>
http://files.posterous.com/user_profile_pics/881492/27350_100001241700967_5524_n.jpg http://posterous.com/users/YrBcdfy4Gpb masat999 masat999
Wed, 01 Dec 2010 02:04:00 -0800 Google Static Mapの活用(移動・マーカー) http://masat999.posterous.com/chief-technical-officer-google-static-maps http://masat999.posterous.com/chief-technical-officer-google-static-maps

今開発中のアプリと連携してGoogle Static Mapをサイト上に表示する仕組みを実装しているところで、地図を移動する時のロジックを調べてました。ズームレベルと移動距離の関係ってどこかに仕様無いのか?

ありました。ドンピシャな答えをまとめてくれてる人がいました。

Google Static Mapsの画像はズームレベル0のとき、幅256ピクセルで経度360度分を表示し、高さ256ピクセルで緯度170度分(画像は南緯・北緯ともに85度 までの模様)を表示します。ズームレベルが1になると4倍ズームになるので表示できる範囲が半分になり、256ピクセルで経度180度分、緯度85度分を 表示します。

これを計算式にすると以下のような感じになります。
[東へ移動したときの中心経度]=
(180 + [元の中心経度] - [画像幅] / 256 * 180 / 2^[ズームレベル]) mod 360 - 180
[南へ移動したときの中心緯度]=
(90 + [元の中心緯度] - [画像高さ] / 256 * 85 / 2^[ズームレベル]) mod 180 - 90

すばらしいです。この場を借りてお礼申し上げます。

ちなみに、アプリ上からGPSで取得した緯度・経度はDBに保存して、Static Map上のマーカーとして表示しています。当然のことですが、データが蓄積すると全てデータを取得することは不可能になるので、”今いる場所から半径○○メートル以内”且つ”最新○○件”のデータを取得するようにしたいと思っています。

そこで問題なのが、単純なクエリーだと範囲は長方形状になり、円ではないということです。そこはあえて妥協したくないので、これも調べてみました。内容が濃いのでリンク参照してください。

Geo/Spatial Search with MySQL

リンク先で言っていることは、要はストアドプロシージャ使えってことです。統計上133倍速くなるそうです。が。これだけのためにストアド書くのもどうなんだろうなぁ…と立ち止まる。

DB側は単純クエリーで長方形のレンジだけ絞って、残りの円から外れるものはSQLの外でフィルタすれば良くないか?乏しいリソースなんだから何でもかんでもDBにやらせてボトルネックが集中するのは良くないよ!と心の声がつぶやくのです。ロジックは分散するけどリスクを議論するほど大きなシステムでもないですし。

ってことでやるべき事のベクトルは定まりました。後は実装してiPhone版もそろそろ手をつけてみなきゃ。
そういえばデザインもそろそろ上がってくるはずなんだけど、どうなってんだ?

Permalink | Leave a comment  »

]]>
http://files.posterous.com/user_profile_pics/881492/27350_100001241700967_5524_n.jpg http://posterous.com/users/YrBcdfy4Gpb masat999 masat999
Tue, 30 Nov 2010 20:26:39 -0800 Android タブレットサイズの設定 http://masat999.posterous.com/android http://masat999.posterous.com/android

iPad から始まり GALAXY Tab やら GALAPAGOS Tablet やらと、にわかに熱くなってきたタブレット型デバイス。

「さらっと開発できへんの?」と上司に聞かれまして、ちょいと AVD の設定いじれば解像度なんか関係無いと思っていたら甘かったです。そんな記録。

おさらいしておくと、Eclipse上でVirtual Deviceの設定を編集する場合は、簡単2ステップ。

  1. "Android SDK and AVD Manager > Virtual Devices"を開く
  2. 新規ボタンでウィンドウ開いて、名前・ターゲット等々を設定

GALAXY Tabの解像度は1024x600ということなので、2.でResolution(解決、と何故か訳されてる)で1024x600って設定すればできちゃうんじゃないの?って思ってました。

ところがエミュレータが起動しない。

実はSDKにバンドルされている解像度以外のものはSkinを自分で用意しなければダメ、ということだそうで。

GALAXY TabのSkinはSamsungから公式にAdd-onとして提供されていました。リポジトリーサイトを使ってAVD Managerからリモートインストールできるので、導入はとっても簡単でした。(手順はサイトに記載されてますので割愛します。)
Samsung GALAXY Tab Add-on

ついでにソニエリ公式のXperia X10のSkinはこちら。ダウンロードして{android-sdk-home}/add-onsに自分でデプロイする必要があるみたいです。
Sony Ericsson | developer WORLD | Xperia X10 add-on for the Android SDK

さて先日発売日が決まったばかりのGALAPAGOS Tablet。標準外の解像度だという理由で?Android Marketも使えないそうですね。TSUTAYA GALAPAGOSとの云々だとか、どうも臭う…開発中に想定外のトラブルとか怖いなぁ…。

Permalink | Leave a comment  »

]]>
http://files.posterous.com/user_profile_pics/881492/27350_100001241700967_5524_n.jpg http://posterous.com/users/YrBcdfy4Gpb masat999 masat999
Tue, 30 Nov 2010 02:59:00 -0800 マイクロソフト、高速起動OS無料配布  :日本経済新聞 http://masat999.posterous.com/34929650 http://masat999.posterous.com/34929650

米ITベンチャーのスプラッシュトップ(カリフォルニア州)は30日、米マイクロソフト(MS)と組んで、MSの検索エンジン「ビング」を搭載した高速起動OS(基本ソフト)の無料ダウンロード(取り込み)を始めたと発表した。MSは「ウィンドウズOSの起動が遅い」とユーザーから指摘されており、ITベンチャーと組んでパソコンの高速起動を実現する。

~中略~

スプラッシュトップと組むことで、高速起動を売り物に、近く搭載パソコンが登場するとみられるグーグルのパソコン用OS「クロームOS」の機先を制する。検索事業でグーグルに差をつけられていることもあり、検索事業「ビング」の普及を急ぐ狙いもあるとみられる。

クロームOSの機先を制するのにChroniumベースはないだろwと思うのだが、それはさて置き早速ググってみる。

なるほど、ネットブックに標準搭載してクイック起動できるLinuxベースのモバイル向けOSと思っておけば良いのか。ベータ版にしてもサポート環境寂しいな…ご覧の通りWindowsなんかよりUIもカッコイイ!!VMwareにインスコできないかなー?後でやってみよう。

Splash1
(本家blogより転載)

ちなみに国内では、ソフトウェア販売で有名なベクターがゲームコンテンツライセンス契約を結んでいるとのニュースも発見。携帯ゲームでは後塵拝するベクターがブラウザゲーム市場でイニシアチブを取れる足がかりになるのか。グリー、DeNAがどう出るか。VRMLに変わる3D標準規格の策定云々やらGoogleもO3Dを出したりしてブラウザ世界の3D関連技術が勢いに乗るとActiveXベースのPCゲームに取って代わる可能性も非常に高い。というかビジネス市場の幅が広がって、市場規模は拡大すると予想する。

ビジネス的視点でも、技術的視点でも、イマジネーションが膨らむ面白いニュースだなこれ。ゲームという切り口ならMacユーザーにとって選択肢が増える意味でも良い。

しかしまぁMicrosoftもやり方も一貫性が無いですよねぇ。WindowsもIEもXboxも全部切り離してコレかよ、と。活かしながら作りこむ選択肢、、、いや、よそう。あるいはこれが成功したら「実はこれが次世代Windowsへの第一歩だったんです!」って言っちゃうんでしょ。

Appleは「これが次世代のOSだ」ってOSXを出してから10年が過ぎた。これが成功したとして、MicrosoftはこのOSを何と言って世にアピールするんだろうか?

 

splashtop OS (http://os.splashtop.com/)

Permalink | Leave a comment  »

]]>
http://files.posterous.com/user_profile_pics/881492/27350_100001241700967_5524_n.jpg http://posterous.com/users/YrBcdfy4Gpb masat999 masat999
Mon, 29 Nov 2010 01:29:52 -0800 iアプリの実装でアレなトコ http://masat999.posterous.com/33857594 http://masat999.posterous.com/33857594

以前書いたネタで、 Androidスゲー!な結論だったんですが、iアプリ版では同じようにやりたいことがイチイチできません。

例えば、高レベルAPIがちっとも高レベルでない。
例えば、低レベルAPIが本当に低レベルすぎてビックリする。

レベル云々はCDLCの標準仕様に準拠しているためでドコモさんのせいでは無いのですけれどね。

ただ、いずれにしてもちょっとアニメーションするボタンを配置したくなったら、全部ゴリゴリ実装しなきゃいけないんですよ。Buttonクラスは高レベルAPIなので使えません。Graphicsクラスでボタン画像をdrawImageして、フォーカスを自分で管理して、onClickもonReleaseも…

一から作る楽しさはあるけど、なんだろう?この愛しさと切なさと(ry

ちなみにドコモさんにはしっかり改善して欲しいポイントがGPS周り。
ブラウザでは Aタグとか Formタグとかに lcs 属性仕込めばGPS搭載機種ならどんなサイトでも動作できるのに、アプリではTrustedアプリの承認が取れないと使えないって…。

結局そんな差を埋めるために作ったのがブラウザアプリ。

iアプリの存在価値、ほぼゼロになったwww

Tmp
そして今の気がかりは Google Static Map API の利用上限回数。携帯だとIPがアレなのすっかり忘れてました。大丈夫かなぁ…。

Permalink | Leave a comment  »

]]>
http://files.posterous.com/user_profile_pics/881492/27350_100001241700967_5524_n.jpg http://posterous.com/users/YrBcdfy4Gpb masat999 masat999
Sun, 28 Nov 2010 22:00:00 -0800 Let's Zen Coding !!! http://masat999.posterous.com/lets-zen-coding http://masat999.posterous.com/lets-zen-coding
先日、書店へネタを漁りに行った際、こんな本に出会った。

何何?Zen Coding?Xenなら知ってるけど…ほほぉぅ。
って感じにグッときたので評価してみることにした。(が、本は買ってません。ごめんなさい。)
ZenCodingのインストールについては下記のblogを参考にさせて頂きました。
ついでに前から気になっていたAptana Studioも一緒に入れてみる。

Aptana, Eclipse Monkeyときて、肝心のZenCodingのところで躓いた。
ちょっと方法が変わったのか?readme をよく読んでみる。

あった。Update site を使えということらしい。

さて、これでインストール完了。[ウインドウ>設定>Zen Coding>変数] で設定変えておくのを忘れないように。
lang | en → ja
locale | en-US →ja-JP
肝心の Zen Coding ですが、こんな感じで使います。
CSS のセレクタや XPath などに慣れ親しんでる方であれば、この威力がどれほどかお分かり頂けるでしょう。
特に手打ち大好きな職人さんにもってこい。
例えば、3行3列のテーブルにアンカーと説明文を入れるとしましょうか。
<table>
    <tr>
        <td class="cell">
           
            <blockquote></blockquote>
        </td>
        <td class="cell">
           
            <blockquote></blockquote>
        </td>
        <td class="cell">
           
            <blockquote></blockquote>
        </td>
    </tr>
    <tr>
        <td class="cell">
           
            <blockquote></blockquote>
        </td>
        <td class="cell">
           
            <blockquote></blockquote>
        </td>
        <td class="cell">
           
            <blockquote></blockquote>
        </td>
    </tr>
    <tr>
        <td class="cell">
           
            <blockquote></blockquote>
        </td>
        <td class="cell">
           
            <blockquote></blockquote>
        </td>
        <td class="cell">
           
            <blockquote></blockquote>
        </td>
    </tr>
</table>
わざと長くしたけど、コピペもできるけど、やっぱりHTML直打ちするのは面倒ですよね。
こういう時に最強なわけですよ。Zen Coding。
table>tr*3>td.cell*3>a+blockquote
上の長ったらしいタグを手打ちしなくても、これだけ書いて、Ctrl (Command) + E。
わっしょーい!!

それからこれ、
ul>li#list$*5
こんな感じになっちゃいます。
<ul>
    <li id="list1"></li>
    <li id="list2"></li>
    <li id="list3"></li>
    <li id="list4"></li>
    <li id="list5"></li>
</ul>
欲を言うと属性もこんな感じでできたら最強なんだけど、もしかしたら知らないだけかもしれません。
もうちょっといじり倒してみないとな。
table@border="1">tr*3>td.cell*3>a#link$@target="_blank"+blockquote
とにかくこれ、直打ち派にはたまらないアイテムです。今まで知らなかったのが残念なくらい。
WYSIWYGじゃないと嫌な人にはさっぱり分らんでしょうけど、ソースコードが見えないと気持ち悪い人にとってはそんなものなのです。

Permalink | Leave a comment  »

]]>
http://files.posterous.com/user_profile_pics/881492/27350_100001241700967_5524_n.jpg http://posterous.com/users/YrBcdfy4Gpb masat999 masat999
Sun, 28 Nov 2010 01:57:22 -0800 銀座なう。今年のイルミネーションはシンプルイズベストっぽい。 http://masat999.posterous.com/34732430 http://masat999.posterous.com/34732430

Permalink | Leave a comment  »

]]>
http://files.posterous.com/user_profile_pics/881492/27350_100001241700967_5524_n.jpg http://posterous.com/users/YrBcdfy4Gpb masat999 masat999
Sat, 27 Nov 2010 01:38:03 -0800 有楽町。街はすっかりクリスマスモードなう。 http://masat999.posterous.com/34639671 http://masat999.posterous.com/34639671
101127_183139

Permalink | Leave a comment  »

]]>
http://files.posterous.com/user_profile_pics/881492/27350_100001241700967_5524_n.jpg http://posterous.com/users/YrBcdfy4Gpb masat999 masat999
Tue, 16 Nov 2010 20:49:00 -0800 asahi.com(朝日新聞社):こんにゃくゼリー窒息死訴訟、両親の訴えを棄却 - 食と料理 http://masat999.posterous.com/asahicom http://masat999.posterous.com/asahicom
兵庫県の男児(当時1)が「こんにゃくゼリー」をのどに詰まらせて死亡したのは食品としての安全性に欠陥があったとして、両親が製造物責任(PL)法に基づいてマンナンライフ(群馬県富岡市)と同社社長らに約6240万円の損害賠償を求めた訴訟の判決が17日、神戸地裁姫路支部であった。中村隆次裁判長は「通常の安全性を備えており欠陥はない」と述べ、両親の請求を棄却した。こんにゃくゼリーの製造元の責任をめぐる判決は初めて。

子供を持つ親の立場として、やり場の無い怒りや悲しみをぶつけたい気持ちも十分理解はできるけど、のどを詰まらせないように小さくカットするとか、そもそもそんなリスクのある食べ物を与えないとか、リスクを回避してあげるのも親としての責任じゃないんでしょうか。

餅で窒息死したら餅屋は訴えられるのか?うつぶせ寝で窒息死したら布団屋は訴えられるのか?同じ次元の話でしょう。むしろ自分なら、そんなリスクにさえ気付けなかった浅はかさを死ぬまで背負うのだと思います。

亡くなった男の子が早く安らかに眠れますように、ご冥福をお祈りします。

Permalink | Leave a comment  »

]]>
http://files.posterous.com/user_profile_pics/881492/27350_100001241700967_5524_n.jpg http://posterous.com/users/YrBcdfy4Gpb masat999 masat999