Amazon Campaign

2013年1月11日金曜日

ゴンはきっと復帰する!

今日、ネットニュースに「ゴン」こと中山雅史が「引退したにもかかわらず、自主トレ中」みたいな記事が流れてましたが、さっそく今夜の報道ステーションで特集組まれて修造がインタビューに行ってました。

かなり本気の自主トレ(リハビリ)のようで、あながちカムバック宣言も冗談ではなさそうです。選手を諦めきれない思いが伝わってきて、ちょっとウルッと来てしまいました。。。 昨年末のチャリティーマッチで久々にゴンゴール決めちゃったので、その思いが強くなっちゃったのかも。もしカムバックしたら、きっと観戦しに行きます!



それにしても、ゴンゴールを相手チームも含めて皆で喜んでいいシーンですね!サッカーって素晴らしい!

2012年11月26日月曜日

Evernote の OAuth対応 SDK は Snow Leopard ではコンパイルできない

EvernoteがAOuth認証へ移行になったので、iOS用のクラウドAPI SDK(Evernote Web Service API SDK) を最新版の「Evernote SDK for iOS version 0.2.1」へ入換えたところ、Xcode 3.2.5 ではコンパイルができなくなってしまいました。


<コンパイルエラーのメッセージ>
/evernote-sdk-ios/EvernoteUserStore.m:68:0 /Users/isatanisatan/Documents/WordCard5/evernote-sdk-ios/EvernoteUserStore.m:68: error: incompatible block pointer types initializing 'void (^)(struct EDAMBootstrapInfo *)', expected 'void (^)(struct objc_object *)'

正直、勉強不足で原因は不明なのですが " incompatible block pointer types initializing" と言っているので言語的な互換性がなさそう。
そこで、Xcodeを最新版の 4.5 へアップデートしようと思ったのですが、MacOS が Lion 以上でないとインストールできません。

ボクの MacBook Air 2010ではパフォーマンスが心配で最新OSへ上げることはためらっていたのですが、パフォーマンス的に悪い評判は聞かないし、ちょうどiCloudも使ってみたかったので、良い機会だと思い Snow Leopard へ移行しちゃいました。

結果、無事コンパイルすることができました。心配していたパフォーマンスについても、今のところ目に見えて遅くなるようなこともありません。
Xcodeのビルド処理も今まで通りだし、eclipseの起動速度も今までと同じように感じられます。

パフォーマンスを気にして躊躇している方はアップデートを検討してみてもよいと思います。

2012年11月17日土曜日

ダイソーにインクジェットのリサイクルインクが売ってる


100円ショップのダイソーにインクジェットプリンタのリサイクルインクが売ってるんですね。価格は1色210円。

そろそろ年賀状用に買っておいた方がいいかも。

EvernoteのAPIにおける認証方式がOAuthに変更になったようです

ノロノロとiOSでEvernoteのクラウドAPIを使ったiPhoneアプリを作っているのですが、11月に入ってから認証処理が上手くいかなくなってしまいました。
調べたところ、APIでの認証方式がOAuthに移行し、id, passwordでの認証ができなくなってしまったようです。

ユーザ名とパスワードによる認証から OAuth 認証への移行

http://dev.evernote.com/intl/jp/documentation/cloud/chapters/Transition.php

Evernote日本語版Blog

http://blog.evernote.com/jp/2012/11/02/10913

「ぺんぎんまむ」さんのBlogでとても分かりやすく解説されています。

http://penguin-mam.com/archives/314/

あーぁ。やっと組み上がった認証フォームが不要になってしまいました。。。
APIキー取得時に申込める開発者向けのメーリングリストに入っていれば9月の時点でお知らせが来ていたようなので、今後のために今から再登録することにします。

2012年11月11日日曜日

カメラはiPhone5の大きな魅力

買い物帰りに足を伸ばして、大田区にある「浅間神社」に自転車を飛ばして来てみました。
神社は小さな山の上にあるのですが、なんとタイミングの良いことか、今日は晴天で時間的にもちょうど夕日が落ちる時だったので、とても奇麗な夕日を拝むことができました。
写真ではだいぶ小さいですが、夕日の右側には富士山もハッキリみえて、すっごい得した気分です。
ここはちょっとした夕日ポイントのようで、結構な人が夕日を眺めるために集っていました。

あいにくカメラは持っていなかったのですが、先週機種変した iPhone5 の iSightカメラを試す絶好の機会となりました。
空のグラデーションも奇麗だし、暗い部分もしっかり描写されており個人的には十分満足できる写真が撮れました。iPhone5 はディスプレイサイズや本体の軽さ・薄さなど目立つポイントが多く、iSightカメラは目立ちませんが、良いカメラを積んでいるってことをうっかり忘れがちですね。今後は多いに活用したいと思います。

■Apple の iPhone 写真ギャラリー
http://www.apple.com/jp/iphone/gallery/

2012年10月20日土曜日

UIActivityIndicatorView の実装まとめ

iPhoneアプリにおける定番のインジケーター、いわゆる「考え中」アイコンを実装するにあたり、いくつかポイントがあったのでまとめておきます。

UIKitにインジケーターを表現する"UIActivityIndicatorView"があるので、「このViewを表示してあげるだけでいーのね」と思ったら、とんでもない。以下を考慮した実装が必要です。

  • Viewの実装
  • 別スレッドで処理
  • コールバック
  • リリースタイミング

Viewの実装

まずは UIActivityIndicatorView を生成します。これは当然ですね。

UIActivityIndicatorView *indicator = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];
indicator.activityIndicatorViewStyle = UIActivityIndicatorViewStyleWhite;
[indicator setCenter:CGPointMake(self.bounds.size.width / 2, self.bounds.size.height / 2)];

別スレッドで処理

インジケーターを表示したいってことは、当何らかの処理をさせたい訳なんですが、同一スレッド上で
インジケーター生成 → インジケーターViewを追加 → やりたい処理 → インジケーターView削除
ではダメなんです。
インジケーターViewを追加した状態でViewControllerの処理をいったん抜けて、端末上で描画処理まで進めてあげなければいけません。だから別スレッドで「やりたい処理」を実行させないとダメなんです。
そこで、メソッド"performSelectorInBackground"で別スレッドを立てて、引数のselectorで「やりたい処理」を呼び出してあげます。

// インジケーターView追加
[self.navigationController.view addSubview:self.indicator];

// インジケーター再生
[self.indicator startAnimating];

// 別スレッドで処理
[self performSelectorInBackground:@selector(othreProcess) withObject:nil];
[self.window makeKeyAndVisible];


コールバック

続いて、別スレッドでの「やりたい処理」が終わったら、メインスレッドへ処理が終わった旨を通知(コールバック)し、インジケーターの表示を止めてあげます。ここでは"hideIndicator"というメソッドを呼び出しています。
また、別スレッドを立てる場合は新たなスレッドでのautoreleaseを格納する"NSAutoreleasePool"を宣言してあげる必要があるようです。

NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];

//
//  ここでやりたい処理を実行。
//

[pool release];
 
// 終了処理をメインスレッドへ通知
[self performSelectorOnMainThread:@selector(hideIndicator) withObject:nil waitUntilDone:NO];
-(void)hideIndicator {
 [self.indicator removeFromSuperview];
 [self.indicator stopAnimating];
}


リリースタイミング

最後に、別スレッドで実行した「やりたい処理」で、何らかのインスタンスを生成する場合、慣習的に "autorelease" を明示していると、先ほどの"NSAutoreleasePool"のreleaseメソッドを呼んだタイミングで開放されてしまいます。
ですので、autorelease とせずに、適切なタイミングを考慮して "release" を呼んであげる必要があります。

なんかインジケーターってよく見るので、もっと簡単、簡潔に実装できるもんだと思っていましたが、結構手間ですね。UIKit ってやつは。。。

2012年10月13日土曜日

TX-8050 で任意のネットラジオ局を登録してみる

もっぱらFMラジオとして使っている TX-8050 ですが、たまにはネットレシーバーっぽい使い方をしてみようと、任意のインターネットラジオ局を登録してみました。
登録方法としては3つ用意されています。
  1. リモコンを駆使して登録
  2. ローカルネットワークから TX-8050 へアクセスして登録
  3. vTuner というクラウドサービスを使ってクラウド上で登録
写真の付属リモコンには文字キーはなく、本体の小さなディスプレイ上でカーソルキーを使って文字を選択することになり面倒なので、今回は 2. でやってみます。


まず、登録する好みの局を探します。80年代ののRock&Pops を聞きたいので iTunes を使って探しました。iTunes上で選曲後にタイトルバーのプロパティを見るとビットレートとURLを確認することができます。ビットレートは当然高い方がいいので、今回は「BEST80 POP&ROCK」(128kbps)を選びました。


ローカルネットワークで TX-8050 にアクセスするため、IPアドレスを確認します。リモコンの[セットアップ]ボタンを押して、メニューから「5. NetworkSetup」を選択後、「IP Address」で確認できます。
ブラウザでアクセスすると以下のような画面が表示されます。


「My Favorites」で登録した局が本体から選局できるようになります。入力後「Save」ボタンを忘れずに押しましょう。


本体の「My Favorites」を表示させてみると・・・選局できました!


128kbps のソースはだいぶ良い音に聴こえます。TX-8050 は機能が豊富な割には安価なので、あまり音質には期待していませんでしたが期待以上に再生してくれます。
また、ネットラジオやファイルサーバー上の音楽ファイルなど、高品位なデジタルソースを簡単に再生できるため、ソースの質が上がったことにより、より高音質になっているように感じます。

Amazon_ad