ほげぐらまの別館

プログラムに限らずてきとーに、ね?

如何にもプログラマチックなタイトルですが、何のことは無い! 自分がほげグラムをする中でこれはブロック構文にしたほうが明らかに美しいと思われる部分を適当に選んだもの。

  • UIAlertView(alertView:didDismissWithButtonIndex:)…アラートビューのボタン押下が決定した瞬間に通知されるデリゲートイベント。UIAlertView-BlocksとかUIKitCategoryAdditionsが使えるらしい
  • SKPaymentKit(paymentQueue:updatedTransactions :) …マネタイズが必須なプロジェクトで使いまわしたいけど、ということでサンプル的に自分の過去ログ
  • UIView Animation (animateWithDuration:animations:)…iOS4.0以降で新規に追加されたプロトコル。多分、does animateWithDuration:animations: block main thread?あたりが有用かもしれない
  • NSURLConnection (connection:didReceiveResponse:, connection:didFailWithError:, connection:didReceiveData:, connectionDidFinishLoading:)…NSURLConnectionの非同期通信を使ったときに、非常に煩雑になる部分で有用だと思われるstackverflow投稿よりNSURLConnection and grand central dispatch

リンク先の記事の内容をすべて実践したわけではないので本当に使えるかどうか、については保証しかねますということと、私が関わったほんの一部であり、CoreAudioフレームワークのAudioBufferあたりはブロック構文にしても良いかもしれないかな、とか。

一方で、ブロック構文には気を付けるべきことが幾つかあるようなので(といっても有用なページが見つけられず案内できませんが)、使う前には予めその性質を理解しておくことも重要ですね。

どうでもいいことですが、勤労感謝の日に出社するのは社畜だ~みたいなスレ挙がっていましたね。えぇ、私は出社しましたとも。こんな不景気でも勤労できることに感謝できた日でした!、と皮肉っておこう。・・・・、というのは冗談さておき。

元ネタ記事はCNetより”グーグルのオープンソース責任者、モバイル用ウイルス対策ソフト業者を非難”というもの。以前に私も携帯にアンチウイルスを入れないければならないプラットフォームなんて論外だ、なんて記事を書きました。つまり、GoogleのオープンソースプログラムマネージャーChris DiBona氏から言わせれば私も間違っているな、と思わされます。というのも、普段日常的に使う言葉で”ウイルス”と”マルウェア”の明確な使い分けをしていないから。

ただ、私的に思うことは仮に言葉が間違っているとはいってもユーザから見れば”ウイルスだろうがマルウェアだろうがどちらも実行されたくない悪意のあるプログラムなわけで、Androidではそのプログラムが実行される危険性が他のプラットフォームより著しく高い”のは明らかではないかなと。記事(訳文)を見る限りでは、Chris DiBona氏は”開発者視点として”の意見、Kaspersky LabのDiBona氏は”ユーザー視点として”の意見だな、とうかがい知れます。

セキュリティ専門家ではないので、果たして”AndroidOSそのものに対してそれらのプログラムに対する脆弱性がある”のか、それとも単に”存在して無いようなAndroidMarketの審査体制が危険な状況を作った”のか、詳細は知りません。が、いずれにしてもやはり現状ではユーザが危険にさらされているのは自明だし、それに対して何も手を打たないことも間違っているかな、と。既にKindle携帯やらFacebook携帯やら、AndroidOSをベースとした携帯端末が出るということがニュースとして流れる中で、そのOSをリリースしているGoogleさんはどこまでセキュリティに対しての責務を負うのでしょうね、疑問なところです。

 

さて、訳文では話にも挙がらなかった愛機”Windows Phone 7”はどんな感じか? とってもいいですよ。”できること”と”できないこと”がわかってくると飼いならされたかのように居心地が良くなります。携帯に対して携帯(+PCブラウザ)としての機能しか求めない人にはお勧めですね。

先日の日記?で自宅ネットワーク環境を挙げました。用途はいろいろ書きましたが、あの用途に一個抜けていたものがあって”モバイルデバイスの無線アップデートホスト”の役割があります。Hyper-V2.1+Windows 7のおかげで私がメインで使用するポータブルデバイス、iPad2 + iPod Touch 4G + Windows Phone 7がWi-Fiアップデート可能になりました。(当然?)サーバー機は電源がつけっぱなしなので、自宅に帰ってWi-Fi環境に接続されればPCに接続することなくこれらの同期が取られます。

wifi_sync_ios

画面はWindows 7上のiTunes(更にiPad 2からSplash Remote経由)ですが、Wi-Fi上のデバイスが表示されています。iOS4.3.3以前は同期中に画面が完全にロックされていたのですが、iOS5.0以降ではUSBとしての接続、非接続(Wi-Fi同期)のどちらにも関わらず非同期アップデートがサポートされたのが便利なことですね。

ちなみにWi-Fi同期でデバイスが消えることが稀にあったのでその対処法が以下にありました。

iTunesの起動時、及び、Wi-Fiの接続した瞬間にデバイスを探しにいっているのかな、という感じです。なので、iOSデバイスを再起動しなくても最も確実で簡単な方法、”設定”-”機内モード”のON/OFFを切り替えるのが手っ取り早いかもしれません(それでもダメなら再起動)。

 

そして、IS12T(Windows Phone 7)とZuneソフトウェア間でもワイヤレス同期(Wi-Fi同期)は有効にしてあります。この同期の発動条件が非常に残念で、使用者が「今同期している!」ってことを確認することができないようです。

 

こちらにも上記抜粋(2011/11/22現在)より書いておくと、以下の感じ。

  1. 電話とPCの両方が自宅のWi-Fiネットワークに接続されていること。ワイヤレス同期は、職場のWi-Fiネットワークではサポートされません。
  2. 電話のバッテリーが少なくとも半分充電されていて(半分充電されたバッテリーアイコン)、電話がAC電源に接続されていること(つまり、電話がコンピューターではなくコンセント用充電器に接続されていること)。
  3. 電話を操作していないこと。たとえば、画面を触っていない、バックライトがオフになっている、音楽やビデオが再生されていないこと(曲やビデオが一時停止されている場合も問題ありません)。

ワイヤレス同期が有効なんだ!、という感じのスクリーンショットというには非常に怪しいですが、同期が行われればコレクションのところに自動的に実機との整合が取られるようです(因みに、本体にデータが全く存在しない状態でワイヤレス同期を有効にして放置した結果です)。あと、写真は先週いつの間にか行っていた海遊館のサンタさんです。

wifi_sync_wp7

 

という感じでHyper-Vを有効活用しています、多分。その他家庭内のコンテンツサーバだったりとメモリが許す限りの別インスタンス仮想OSを起動すれば、個々が干渉しない一つのプラットフォームができるな、と。一点問題があるとすれば、物理HDDは全OS共有なのでそれが逝ったときは取り返しがつかないという。ホストOSは原則何も操作しない(RemoteFX USBを回すためにソフトウェアを若干追加する程度)ので、Domain Adminsグループに属するユーザアカウントが乗っ取られない限りはほぼほぼ安全なはず・・・・?。

※1. これを書いている最中に思ったのが、VPN用のアカウントがDomain Adminsに属するアカウントと兼用でよろしくないな、と思ったこと。VPNログイン専用のアカウントを準備することにしよう、そうしよう。

※2. ちなみに、Domain Adminsに属するアカウントをデスクトップとインタラクティブ対話を行うアカウントとして常用している部分もセキュリティ的には本来危険だという認識はしていますが、そこは企業ではなく個人の範囲で、ということで無視します。

 

そして最後に・・・、iCloudっておいしいのですか? 正直、個人レベルでここまでの環境を構築するとほとんど要らない気が・・・します、多分。iCloud(ストレージ)使ったことないけど。

先日の自宅ネットワーク図で既にインフラとして入っていましたが、3Dヘッドマウントディスプレイ HMZ-T1を購入しました。大変心苦しいながらも以前書いた、絶対に転売屋から買わないよ(キリッ、とか書いておきながらも物欲の前に心が壊れたということです。 ε=_/ ̄|○

色んなところで装着図やらレビューやら挙がっているのでここで改めて書くまでもないのですが、一応便乗書き込みしてみます。

 

【視聴的な所感】

  • IMAXのような大きさや画質を期待すると大外れ。精々小シアターのレベル
  • 装着時に垂直各方向で0.2~0.3度ずれただけでも映像がぼやける
  • 水平方向はズレが出にくいものの、画面の左右両端に出る字幕は若干ボケやすい
  • 部屋は真っ暗が最良。下部の斜光ゴムを装着時にシアターとしての臨場感が出る
  • 画素数としては悪くない、意識をすると1ドットが鮮明に見れます
  • サウンドはおまけレベル、と思ったほうがよい。音に深みが無く臨場感に欠ける
  • 映画館と比べて遥かに脳と目が疲れやすい

【装着感的な所感】

  • 機体を支える個所が額(ひたい)、及び下部後頭部で非常に不安定 (その割に映像が垂直方向のズレに弱い)
  • 額のパッドは厚め型(B)と薄め型(A)の2種類あるが、眼鏡をつけている人はほぼBの一択
  • 本体にノーズパット(鼻当て)があるけど、まずこれに当たることがない
  • ヘッドフォン部が非常に狭い。機体は横方向にそこまで伸縮自在な調整ができないのでイヤーパットが当たる
  • 水平方向で見ると頭が重く首が疲れ、額が痛い。リクライニングチェアーか、寝ながらの視聴が必要
  • 装置をつけるとほぼ何もできないので、視聴前に照明リモコンやらAVリモコンなどの事前準備が必須

【その他気を付けるべきこと】

  • ヘッドマウントに伸びるケーブルがよっているので、事前に伸ばしておかないと結構邪魔です
  • HDMI信号は非アクティブ時のスルーパスのみで、電源をつけると信号を遮断(インタラプト)します
  • 光(S/PDIF)出力が無いので、外部オーディオを通す場合は事前にHMDIと光出力のセパレータ装置が必要
  • どれほど装置のサウンドが気に入らないからといって、ヘッドマウントの上からヘッドフォンを装着するのは無理

 

個人的にはこんな感じかな。では定価6万円に対してどれほどの価値かなというのを私的な意見でいえば、払う価値はあるのかもしれません。現行での(ヘッドマウントでは)最先端の映像に対する価値、と今後のヘッドマウント分野への投資、という意味で十分かなと思うところです。

さて、ビックカメラ予約分でもう一台手に入れられるのですが・・・・、どうしましょうね。もう一台買うかどうか迷ってます。

ここ最近出費が激しくてお財布事情が厳しいです。が、出費といっても食べ物や無形のエンターテイメントなどではなくて、割とPC関連が多いです。特に直近では普段から使うPCの全てをHyper-V (with RemoteFX) へ集約したこともあって構成が劇的に変化したかな、と。

そんなわけで、果たして自分の自宅のネットワーク (付随して、ディスプレイなどの物理接続も)がどのようになっているか、をVisio君で描いてみました。

構成図

割と役割的にはすっきりまとまっているのかな、という感じです。狙い通り、サーバ群は全て役割別の仮想PC上の環境、CPU切替えによるWindows/Mac環境の両立、そして無線LANによるスマートフォン環境、更にはHDMI切り替えによるエンターテイメント環境の両立

あ、ちなみに図のファイヤーウォールですがこれは実際にはいません。一応外部からポートチェックをした上でルータ兼となっています。逆NATにより開放しているサーバPC(この場合は、HTTP, VPN)に対してRASS構成サービスを起動して正しい設定をするという事も必要なのかな(昔はそこまでやっていたけど、自宅サーバとしては設定が面倒)。

多分、実験用の仮想PCは今後も増えますが物理的に増えることは無いでしょう。ってか、自分の部屋が環境だけで一杯になるし。

 

略称の表記 (このページを見る人なら必要ないと思いますが)

  • ADDS…Active Directory Domain Services
  • DNS…Domain Name Service
  • WINS…Windows Internet Name Service
  • VPN…Virtual Private Network
  • SMS…Microsoft System Management Service
  • MSSQL…Microsoft SQL Server
  • IIS…Internet Information Services
  • RP…Reverse Proxy

 

その他機器表記 (わかりづらいのだけ)

  • MEDIA JOKER…メディアコンバータの機器名
  • WP7…携帯 WindowsPhone7 (au IS12T)
  • MP-610…Canon製 インクジェットプリンタ/スキャナ
  • WR8700N…NEC製 無線ルータ
  • CG-WLBARGNH…Corega製 無線ルータ
  • HMZ-T1…Sony製 3Dヘッドマウントディスプレイ