投稿者「sumihiro」のアーカイブ

風呂で浮かぶスピーカー「UQUA」がイイ感じ。

最近、風呂に入るのがしんどい。シャワーですませちゃう。でも、ゆっくりと湯につからないと疲れが取れない。

ならば、風呂の環境を良くして、自分が湯につかるモチベーションを上げればいいじゃない!という理由をつけてポチッテモウターのは、風呂やプールに浮かべて使える防水型Bluetoothスピーカー「UQUA」。とてもかわいい。

UQUA

本体下部が青く光る。綺麗。大きさは手のひらサイズ。

UQUA

iPhone4Sと比較したら、こんな感じ。
注文する前はもうちょっと大きそうなイメージをしてたので、開封時は小さい?って思ったけど、箱から出してみたら大きすぎず、小さすぎず、ちょうどいいサイズ。

UQUA

箱はプラでテカテカ。安っぽい?
でも、音質は良い。もちろんモノラルスピーカー。
でも、風呂場では音が反響するのでモノラルで十分。浮かんでたら勝手に回転するから左右なんてあってないようなもの。
低音もしっかりしてる。

電源は単3電池3本。それで連続32時間使用できるとか。専用充電池じゃなくて電池でいいので使い勝手良いよな。エネループが使えるし。
充電待ちをしたりせず、使いたいタイミングで使えるの大事。

UQUA

青いイルミネーションは、明るいところで見てるとそんなにインパクトはない。でも、湯につけると光景が一変する。
水と空気の屈折率が違うので水面がとても強調されて幻想的な光景になる。これは予想外。

イルミネーションのボタンを押すと点灯、明滅、消灯を選べる。
明滅は本当にゆっくりに明るくなり暗くなり、見てて気持ちいい。ラウンジな曲とかかけてるとリラックスできる。

UQUA

サービスショットのオマケ。

お値段はおおよそ2013年2月現在でおおよそ4980円。
ちょっとお高い感じはするけど、買ってよかった。

また後で風呂に入ろうっと。

色は赤と白の二色が用意されてる。 個人的にはやっぱり白かな。赤はもうちょっと上品ならいいかも。

UQUA公式サイトはこちら。

Amazonでの購入はこちら。

パズドラ800万ダウンロード記念ゴッドフェス大回転!!

今日もぶん回してみよう。

20130215-232614.jpg

いきなりペルセポネ。セクシー。

20130215-232751.jpg

サキュバス。

20130215-232847.jpg

トイトプス。何体目やねん。

20130215-233022.jpg

フレイムゴーレム。

20130215-233105.jpg

ジーニャ。なんか好きになれない。

20130215-233158.jpg

オロチ!キタコレ!ド根性はめっちゃ貴重。

20130215-233239.jpg

進化後アヌビス。10コンボ10倍は流石に使いづらいやろなぁ。8コンボ5倍の狩人の方がいいかも。

20130215-233359.jpg

魔剣士。

20130215-233439.jpg

マーメイド。

20130215-233520.jpg

また魔剣士。

20130215-233546.jpg

そしてまさかのまたペルセポネ。うん。そうか。ありがとう。

20130215-233731.jpg

トール。おっさん。

20130215-233825.jpg

進化後エンジェル。昔はお世話になりました。

20130215-233944.jpg

進化後アポロン!これで弱めの光デッキが強化できそう!

20130215-234103.jpg

周りの報告を見るに金玉率は低かったけど持ってなかったのが色々出たのでヨシ!
楽しかった。

UIImageが気づいたらNSCodingに対応していた件。そしてベンチマーク。

今日、コードを書いてて気づいた。

すると、

さすがのきしかーさん。iOS5から対応していたと。
確かにシミュレータで確認してみたらiOS5.0から対応していたっぽい。

ところが、iOS5.0では正式対応されていなかったような?

UIImage and NSCoding iOS 5.1

ともかく、使えるのは使えるらしい。

そうすると、こう来るわけで。

分かりました。ベンチマークとってみましょう。

今回使用したコードは以下の通り。

	NSString *path = [NSTemporaryDirectory() stringByAppendingPathComponent:@"test.dat"];
	int loop = 1000;
	UIImage *image;
	
	image = [UIImage imageNamed:@"42616"];
	
	NSLog(@"start.");
	NSDate *d;
	NSTimeInterval t;
	NSData *data;
	UIImage *imagei;
	
	// 従来使用していた UIImage を PNG の画像にして保存する方法
	d = [NSDate date];
	for (int i = 0; i < loop; ++ i) {
		@autoreleasepool {
			data = UIImagePNGRepresentation(image);
			[data writeToFile:path atomically:YES];
			data = [NSData dataWithContentsOfFile:path];
			imagei = [UIImage imageWithData:data];
			NSAssert(imagei, @"failed.");
		}
	}
	t = [[NSDate date] timeIntervalSinceDate:d];
	NSLog(@"Test1 %f sec",t);
	NSLog(@"data length: %d",data.length);
	NSLog(@"image size: %@",NSStringFromCGSize(imagei.size));

	// -[UIImage imageNamed:] で読み込んだ UIImage を NSCoding で NSData にする方法
	d = [NSDate date];
	for (int i = 0; i < loop; ++ i) {
		@autoreleasepool {
			data = [NSKeyedArchiver archivedDataWithRootObject:image];
			[data writeToFile:path atomically:YES];
			data = [NSData dataWithContentsOfFile:path];
			imagei = [NSKeyedUnarchiver unarchiveObjectWithData:data];
			NSAssert(imagei, @"failed.");
		}
	}
	t = [[NSDate date] timeIntervalSinceDate:d];
	NSLog(@"Test2 %f sec",t);
	NSLog(@"data length: %d",data.length);
	NSLog(@"image size: %@",NSStringFromCGSize(imagei.size));

	
	// ビットマップから読み込んだ UIImage を NSCoding で NSData にする方法
	UIImage *subimage = [UIImage imageNamed:@"42616"];
	UIGraphicsBeginImageContext(subimage.size);
	[subimage drawAtPoint:CGPointZero];
	image = UIGraphicsGetImageFromCurrentImageContext();
	UIGraphicsEndImageContext();

	
	d = [NSDate date];
	for (int i = 0; i < loop; ++ i) {
		@autoreleasepool {
			data = [NSKeyedArchiver archivedDataWithRootObject:image];
			[data writeToFile:path atomically:YES];
			data = [NSData dataWithContentsOfFile:path];
			imagei = [NSKeyedUnarchiver unarchiveObjectWithData:data];
			NSAssert(imagei, @"failed.");
		}
	}
	t = [[NSDate date] timeIntervalSinceDate:d];
	NSLog(@"Test3 %f sec",t);
	NSLog(@"data length: %d",data.length);
	NSLog(@"image size: %@",NSStringFromCGSize(imagei.size));
	NSLog(@"fin.");

バンドルに含まれている画像を読み込む -[UIImage imageNamed:] を使った画像の保存。そしてそれとは別に UIImagePNGRepresentation を使って PNG の NSData にした従来のシリアライズ方法。
使用した画像 42616.png は コードをオサレにしてくれるInstacodeが美しい の Instacode で作成したこちらの画像。

42616

サイズは 512px x 512pxのPNG画像。大きすぎず小さすぎず。

使用した端末は iPhone5 iOS6.1。
そして結果が以下の通り。

2013-02-05 23:50:29.645 TestAutoCoding[9062:1103] start.
2013-02-05 23:52:08.185 TestAutoCoding[9062:1103] Test1: 98.538096 sec
2013-02-05 23:52:08.186 TestAutoCoding[9062:1103] data length: 454924
2013-02-05 23:52:08.187 TestAutoCoding[9062:1103] image size: {512, 512}
2013-02-05 23:52:10.562 TestAutoCoding[9062:1103] Test2: 2.373970 sec
2013-02-05 23:52:10.564 TestAutoCoding[9062:1103] data length: 393
2013-02-05 23:52:10.565 TestAutoCoding[9062:1103] image size: {512, 512}
2013-02-05 23:54:14.506 TestAutoCoding[9062:1103] Test3: 123.921053 sec
2013-02-05 23:54:14.507 TestAutoCoding[9062:1103] data length: 501234
2013-02-05 23:54:14.509 TestAutoCoding[9062:1103] image size: {512, 512}
2013-02-05 23:54:14.510 TestAutoCoding[9062:1103] fin.

なんと、TEST2 の結果がアホみたいに速い。
TEST2 と TEST3 については差があるものの、TEST2に比べれば大きくない。いや、20秒差は大きいけど。

ここで、書き込んだファイルのサイズを見てみると TEST2 のサイズだけとても小さい。
画像の PNG のデータを書き込んでいるとはとても思えない。
この NSData の中身を見てみると、どうやら plist のデータらしく、また、 42616.png のファイル名が見受けられる。

つまり、 -[UIImage imageNamed:] で読み込んだ UIImage は画像のデータではなくファイル名だけ記録している模様。そら PNG のデータ圧縮とかせんかったら速いわけやわ。

逆に、 TEST3 のデータを見てみると次のような感じ。

PNG のデータがそのまま埋め込まれているように見える。
TEST1 は純粋に PNG のデータだけ。

よって、速度比較では以下のような結果になった。

-[UIImage imageNamed:] で読み込んだ image を NSCodingで > ビットマップを PNG のデータにした NSData を保存 > ビットマップを NSCoding で

確かに -[UIImage imageNamed:] で読み込んだ image は速いけど、元ファイルが削除されてしまうと復元できなくなりそう。

UIImage が NSCoding に対応したのはいいけど、用途によって使い分けが必要、という結果になった。

追記:

なるほどねぇ。

コードをオサレにしてくれるInstacodeが美しい

Instagramなんてーものが流行ってますが、こちらはプログラマ御用達、コードを美しくしてくれるサービス、Instacodeをご紹介。

Instacode

美しく、といっても、インデントが奇麗にーとか、ロジックが奇麗にとかじゃなく、コードをオサレな画像にしてくれるサービス。

Objective-C

AFNetworking
https://github.com/AFNetworking/AFNetworking

C#

sestoft / C5
https://github.com/sestoft/C5

Ruby

rails / rails
https://github.com/rails/rails

Python

simplegeo / python-oauth2
https://github.com/simplegeo/python-oauth2/blob/master/setup.py

JavaScript

shichuan / javascript-patterns
https://github.com/shichuan/javascript-patterns

こんな感じで様々な言語に対応してハイライトしたオサレーな画像を作ってくれる。

久しぶりにグッときた。使うしか無い。

Instacode

パズドラ700万ダウンロード記念ゴッドフェス大回転!

20130131-230000.jpg

石を85個追加。

20130131-230044.jpg

シャードラ。

20130131-230106.jpg

闇魔剣士。

20130131-230133.jpg

フェアリオン。

20130131-230211.jpg

光魔剣士。

20130131-230246.jpg

ロキ。

20130131-230320.jpg

フェリオ。

20130131-230357.jpg

ビーストライダー。

20130131-230438.jpg

ナーガ。

20130131-230517.jpg

ウンディーネ。

20130131-230600.jpg

タイタン。

20130131-230647.jpg

トイトプス。

20130131-230716.jpg

またフェリオ。

20130131-230749.jpg

インドラ。

20130131-230812.jpg

バールヴァティー。

20130131-230906.jpg

まとめ。
壮絶に全敗!\(^o^)/

git で merge –no-ff をデフォルトにする方法メモ。

gitでマージするときにデフォルトは –no-ff にしたいと思ったのでメモ。

Can I make fast forwarding be off by default in git?

git の config の default を変更する。

現在のレポジトリだけならこちら。
git config branch.master.mergeoptions "--no-ff"

全体の設定を変更するならこちら。

git config --global branch.master.mergeoptions "--no-ff"

iPhoneだけじゃない、怪しい三股ケーブルを見つけた。

壮大な出オチ感があるけど。

さっき、 iPhone5 Lightning / iPhone4S 30pin 二股ケーブルを買ってみた とか言って喜んでたけど、なにやらもっとすごいケーブルを見つけた。

ch0674-01

“Lightningコネクタ/Dockコネクタ/microUSB端子の三位一体” とか怪しすぎる。
全部一度に充電できたりするのか?というか、そもそも同時に挿そうとしてもiPhone本体が干渉し合って無理か。

怪しすぎる。

iPhone5 Lightning / iPhone4S 30pin 二股ケーブルを買ってみた

iPhone5 Lightning / iPhone4S 30pin 二股ケーブル

なにやら便利そうなので即ポチってみた。

商品は注文後数日で到着。包装は至ってシンプルで注文書、納品書の類は一切付属せず、本体がビニール袋に入れられて届くというエコの最先端を思わせた。
領収書も含まれていなかったので、経費に含める必要がある人は注文時のメールを印刷しておくべし。

slooProImg_20130129081447.jpg

写真を見ての通り、巻き取りケーブルの片側が二股に分かれてiPhone5と従来のiPhone4SやiPhone4などを同時に接続できるようになっている。

Macに接続したところ、両方とも同時に充電もできた。

開発にも非常に役に立ちそう。

購入時のお値段1280円送料別也。

ダマスカス鋼で作られた包丁 IKEA SLITBAR を買ってみた。

うちにある包丁がええ加減ダメになってきたので、買い替えた。

色々と選択肢はあったけど、包丁なんてそうそう買い換えんし長く使うしで、ならば好きで良いものを買ってやろうと奮発した。

その包丁がこちら。
image
IKEA SLITBARシリーズのダマスカス鋼で作られた包丁。

ダマスカス鋼といえばアニメや漫画でも名前を聞く珍しい金属で、鋭い斬れ味とその面に現れる木目状の模様が特徴的。
作り話と思っている人もいるけど、現実に存在するんやで。

実際に斬れ味がとても良い。
スパッと切れるのではなくて、ストンと切れる。
分かるかなー?包丁の刃を当てたらそのまま自分の重さで切れてしまうような、そんな斬れ味。
とても気持ちいい。

長く使ってやりたい。

ワイングラスを吊ってみた。

ハッカソンをやる度にバージョンアップする我が家。
今回はワイングラスを吊ってみた。

20130127-231908.jpg

使用したのはIKEAのINREDAシリーズのグラスフック
5レーンセットでお値段1000円也。
3個ずつ5レーンで計15個掛けられる。シャンパングラスなら4個ずつ掛けられるかな。

次は何をしてみようか。