2015年4月25日土曜日

[セキュリティ] Twitterの「このリンクは安全ではない」「このリクエストを保留しています」の対策2015年版

How to remove the URL blocking by Twitter
2015年4月2週目、Twitterにてドメイン名にfujiu.jpを含むURLの投稿がブロックされていることが分かりました。

投稿しようとするとこうなります。
このリクエストはコンピュータによる自動的なものと判断されました。Twitterユーザーをスパムやその他の迷惑行為から保護するために、このリクエストを保留しています。しばらくしてからもう一度お試しください。

ブロックされる前に投稿したリンクをクリックするとこうなります。
警告:このリンクは安全ではない可能性があります
ひどい言われようです。

念のため、Googleセーフブラウジングやウェブマスターツールで管理下のウェブサーバーを全てチェックしましたが不審な点はありません。
当サイトのセーフブラウジングのリンク
http://www.google.com/safebrowsing/diagnostic?site=http://blog.fujiu.jp/


ヘルプセンターからの申告は機能しない

2013年はTwitterのヘルプセンターから
Twitterがスパムと判断したため、リンクをツイートできません
の申告をすれば数日後に解除してもらえたとともに謝罪のメールが届いたのですが2014年頃から全く機能しなくなりました
ブロックされている理由を推測した結果、スパムの疑いのあるドメインをブラックリスト化して投稿を拒否していると仮定し、fujiu.jpがブラックリストに登録されていないか調べることにしました。


ブラックリストのチェックツールで調べる

複数のブラックリストを一括検索して結果を教えてくれるWebサービスはいくつかあるのですが、最初に利用したのが次のサービスでした。
Sucuri SiteCheck - Free Website Malware Scanner
https://sitecheck.sucuri.net/

このサービスで検索できる10種類のブラックリストのうち、誤判定率の高さで悪名高いSpamHausのThe Domain Block Listに無断で登録されていました。


SpamHausにブロックリストの解除を申請する

SpamHausのThe Domain Block Listはスパムメールのドメインをデータベース化したもののようです。
ウェブサーバーがマルウェアに感染したのではなく、SpamHausがスパムメールのドメインとして誤判定したようです。
ちなみにSpamHausではブラックリストのことをブロックリストと呼ぶようです。
http://www.spamhaus.org/lookup/
SpamHausにブロックリスト解除の申請をします。
SpamHausのウェブサイトのBlocklist Removal CenterにメールアドレスとCaptchaを入力します。ヤフーメールやGmailのアドレスは拒否されるのでプロバイダーから提供されるメールアドレスを使いました。
解除のためのURLが記載されたメールが送られてくるのでそのURLを開くだけでした。
それから30分ほどでブロックリストから消えました。


SpamHausが誤判定した原因を探る

SpamHausがfujiu.jpをスパムメールと誤判定した理由は不明です。
そこでDNSのMXレコードをチェックするWebサービスを使ってみました。
MX TOOLBOX
http://mxtoolbox.com/SuperTool.aspx
その結果、いくつかの警告が表示されました。
特にSPF No RecordsというDNSにSPFレコードが登録されてない警告は看過できないと思われたのですぐに登録しました。

DNSのSPFレコードは必ずしも登録する必要はないのですが、スパムメールの判定に使われることがあります。
例えば自分の管理下にあるメールサーバー(SMTPサーバー)のIPアドレスが11.22.33.44の場合、DNSに次のレコードを登録します。

fujiu.jp TXT 0 v=spf1 +ip4:11.22.33.44 ~all

こう設定した場合、IPアドレスが11.22.33.44のメールサーバーが送信したメールが「@fujiu.jp」で終わるメールアドレスなら本物であると宣言したことになります。
メールの受取手はDSNサーバーを見て11.22.33.44以外のメールサーバーが送信したメールが「@fujiu.jp」で終わるメールアドレスならスパムメールであると判定できるわけです。

SPFレコードが設定されてなければどのメールサーバーが送信したメールが本物なのか判断しようがないのでSpamHausのブロックリストに登録されてしまったのかもしれません。
ただし必ずしもSPFレコードが未設定のドメインがSpamHausのブロックリストに登録されるわけではないようです。


SPFレコードは設定するべき

Gmailやヤフーメールは受け取ったメールがスパムメールかどうかを判定する迷惑メール機能があります。
大事なメールまで迷惑メール扱いされていたのでメールアドレスをMX TOOLBOXで調べたらSPFレコードが未登録だったことがあります。
SPFレコードの有無で迷惑メールとして扱われることがあるようです。
ブラックリストに登録されてなくてもSPFレコードは設定した方がいいようです。
ちなみにメールアドレスとして使用しないドメインのSPFレコードは次の設定でよいかと思います。

ドメイン名 TXT 0 v=spf1 -all


Twitterのヘルプセンターに申告する

ブラックリストの解除とブラックリストに登録されたと思われる原因を排除したら、Twitterのヘルプセンターに申告します。
上の方にも書きましたがヘルプセンターは全く機能していないので気休めにしかなりませんが。
ブラックリスト抹消後から3日後に何の連絡もなくTwitterのブロックが解除されました。


なお、「ブラックリストに登録されているURLはツイートできない」というのはMtkの勝手な推測なのでTwitterの投稿が拒否される件とブラックリストとの因果関係は不明です
複数のブラックリストに登録されているのにツイッターに投稿できるURLも沢山あります。
何の断りもなくブラックリストに登録されるのは腹が立ちますが、スパムに利用されるのは他人に迷惑が及びますので見過ごせません。


関連ブログ

[セキュリティ] Twitterに「スパム、または安全でない」と誤認されたら(2013年版)
[セキュリティ] bitly.com にスパムサイトと誤認されたら
[インターネット] Googleストリートビューにプライバシー情報が公開されてしまったら

以上、参考になれば幸いです。

2015年4月18日土曜日

Internet Explorer 11の動画再生のプリフリーズ(コマ飛び・コマ落ち)が直るまで

How to remove the small freezes from IE11
ThinkPadのOSをWindows8.1にしてからInternet Explorer 11(以下IE11と略します)で再生する動画がコマ飛びするようになりました。
不定期なタイミングで動画の映像が一時停止したようになります。音声は途切れません。
映像が止まった場所をもう一度再生すると映像は停止せずに再生されるので動画には問題なく、再生環境に原因があると思われました。
長いこと原因が不明でしたが、少しだけ対策方法が分かりました。

環境

・Lenovo ThinkPad
・Windows8からWindows8.1へ強制アップデートされた


結論

Lenovoのサービスをすべて停止したらコマ飛びが減りました。


設定方法

チャームから
設定 - コントロールパネル - システムとセキュリティ - 管理ツール
を開き、その中にあるサービスを起動します。
名前がLenovoで始まるサービスのうち、状態が実行中のサービスをダブルクリックしてスタートアップの種類を手動に変更します。

設定を変更したら再起動し、手動に設定したサービスの状態が実行中にならなければ設定完了です。


設定変更の影響は?

Leoovoのサービスの中で特に動画再生への影響が強そうなのが「Leonovo PM Service」でした。
PMはおそらくPower Managerの略だと思うのですが、Lenovo Power Managerをアンインストールしてもサービスが残り常駐し続けます。
停止しても特に影響もありませんでした。


試したけど改善しなかった内容

  • Flash以外のIE11のアドオンをすべて無効にする
  • IE11の設定「GPUレンダリングではなくソフトウェアレンダリングを使用する」を有効にする
  • 最新バージョンのFlashをインストールする
  • グラフィックスのなどデ各バイスドライバーを最新にする
  • ウィルス対策ソフトを一時的に停止する


試してない内容

  • ウィルス対策ソフトを別のものにする
  • Windows8.1をクリーンインストール
    ディスクドライブに代替品がないのと、もうすぐWindows10がリリースされるため


関連ブログ

[Windows] Internet Explorer 11 が遅い、フリーズする時の対処
[Windows] FirefoxでFlashがクラッシュ
HTMLのソースをWebコンテンツを見ながら素早く見つける [Internet Explorer][Firefox]
[ThinkPad] ウィンドウの前後が勝手に入れ替わる

以上、参考になれば幸いです。

2015年4月4日土曜日

[Android] Google Cardboard用の立体視動画をVegas Pro/Movie Studioで編集する

How to optimize the movies for Google cardboard
動画編集ソフトVegas Pro/Movie Studioは立体視動画を編集出来ます。
実際に立体視動画を作るにはステレオカメラを使って撮影するか、右目用と左目用の映像をCGで作るなど必要がありますが、ステレオスコピックの素材さえ用意できれば編集出来ます。
Google Cardboardを使ってステレオスコピック動画を立体視するまでの手順をまとめてみました。


Google Cardboardとは

Google Cardboardはスマートフォンに映したサイドバイサイドの画像や動画の左右の視差を制限して立体視するのぞき箱です。
純正品は段ボールとレンズとマジックテープと磁石だけで、自分で組み立てて使います。
既に類似の製品が多数で回っていて、HOMiDOのようなプラスチック製の高級品も販売されています。
完成した製品は卓上カレンダーくらいの大きさです。


環境

・Windows8.1
・Vegas Pro 13 / Movie Studio 12
・Android4.2スマートフォン


スマートフォンとPCに外部モニター化アプリをインストールする

スマートフォンをWindowsの外部モニターとして使うためのアプリをインストールします。
Windows PCの外部モニターとして使えればAndroidでもiPhoneでもWindows Phoneでも構いません。
今回は制限時間内は無料、800円の課金で制限解除されるAndroid用Komado2というアプリで試します。
http://komado.abt.jp/manual.html
AndroidスマートフォンにはKomado2を、Windows PCにはKomado2の専用ソフトをインストールします。
Komado2の説明によるとTCPとUDPのポートを使うとのことです。
アドホックなのかインフラストラクチャーなのか説明がありませんが環境によってはファイアウォールやルータの設定が必要になるかもしれません。


スマートフォンを外部モニター化する設定

Komadoでの操作方法の説明です。
WindowsPCでKomadoコントロールパネルを開いてデスクトップ拡張に設定して反映ボタンをクリックします。
スマートフォンのKomadoアプリを起動して画面が映ることを確認します。


Vegas Pro/Movie Studioの設定

スマートフォンのKomadoを起動させた状態でVegas Pro/Movie Studioを起動します。
オプション - ユーザー設定
を開きます。バージョンによって表現が異なりますが、「プレビューデバイス」とか「ビデオプレビュー」といったタブがあるのでディスプレイアダプタの2を選択してOKをクリックします。
ビデオプレビュー画面の上にある「外部モニターでビデオのプレビュー」をクリックします。

これでビデオプレビューがスマートフォンに表示されるようになりました。


Google Cardboardで立体視を楽しむ

ステレオスコピックの動画作成は過去のブログに記載しました。良かったら参考にしてください。
[動画編集] MMDとMovie Studioでステレオスコピック3D動画を作る
ステレオスコピックの動画をGoogle Cardboardで立体視するには
プロジェクト - プロパティ
を開いてステレオスコピック3Dモードをサイドバイサイド(フル)に設定します。


レンズの歪みを処理する

Google Cardboardのレンズを通して映像を見るとレンズ歪み(レンズディストーション)のため中央が縮小されるように見えます。
ビデオエフェクトの変形などを使ってあらかじめ映像の中央を拡大しておくとゆがみが打ち消し合ってオリジナルの映像に近づくと思います。
ステレオスコピックのビデオクリップは一つのビデオエフェクトで左右に効果がつきます。
レンズ補正前・左側
レンズ補正後・画面の端が見切れます。
サイズを調整してクッキーカッターでトリミングしました。とGoogle Cardboard SDKを使ったような絵になりました。

GIFアニメーションを作ればツイッターにも投稿できます。


Komado2を使うと拡張デスクトップが増える

Komado2はWindowsの拡張デスクトップを増やしてスマートフォンに割り当てる仕様のようです。
デスクトップの出力先や解像度がおかしいと思ったらWindowsの「画面の解像度」で設定を見直してください。


画像に使用したMMDモデル

・プロ生ちゃん
・湯葉式東北ずん子
・キオ式弱音ハク
・カーグラP式クラウン
・データP式玉ボケ
・SkyBlue式豊倉市
・額田倫太郎式skydome
・elorin jo式瓶
・柿竹式ハンバーガー



関連ブログ

[Unity3D] サイドバイサイドで立体視できるゲームを作るには [クエリちゃん][ユニティちゃん]
[GIMP] GIFアニメーションの作り方
[動画編集] MMDとMovie Studioでステレオスコピック3D動画を作る
[Unity3D] ゲーム画面をキャプチャしてMovie Studioで動画に編集する
[動画編集] Movie Studio 13 でVSTプラグインを使ってみました
[動画編集] Vegas Pro 13とMovie Studioを比べてみました

以上、参考になれば幸いです。

[Unity3D] サイドバイサイドで立体視できるゲームを作るには [クエリちゃん][ユニティちゃん]

How to make the stereo 3D games
Unity5でサイドバイサイドの立体視(ステレオスコピック)で画面を表示するまでの手順をまとめてみました。


環境

・Windows8.1
・Unity5.0.0.f4
「Render Texture」や「Fisheye」という機能を使いますが、Unity4まではProfessional以上の有償版でないと使えないようです。
Unity5では無償版で使えます。
ところがUnity5でFisheyeをインポートする際に「Pro Only」と表示されることがありましたが、いつの間にか表示されなくなってました。
「Pro Only」を再現させる手順と修正する方法は不明です。


下準備

Sceneを作ります。
とりあえずユニティちゃんとクエリちゃんを配置しました。
「ユニティちゃん」はユニティ・テクノロジーズ・ジャパン、「クエリちゃん」はポケットクエリーズのマスコットキャラクターです。
公式サイトやUnity Assetストアから無料でダウンロードできます。
どちらのキャラクターも著作権が緩めで、モデル・音声・スクリプト・アニメーションなどが含まれています。
複数のカメラを追加しますが、はじめから配置されているMain Cameraも後で使います。
必要に応じてDirectional lightなども配置します。


左目用カメラの配置する

メニューの
GameObject - Camera
からカメラを追加します。
左目用カメラとするので名前はLeftCameraとします。


左目用カメラの映像をテクスチャ表示する

Projectウィンドウの
Create - Render Texture
をクリックして追加します。
名前はLeftCameraTextureとします。

LeftCameraを選択してInspectorのTarget TextureにLeftCameraTextureを設定します。

LeftCameraTextureのSizeの初期値は256 x 256です。このサイズでは画像が粗いのでほどほどに設定してください。

メニューの
GameObject - 3D Object - Plane
でPlaneを配置します。
名前はLeftCameraPlaneとします。

LeftCameraPlaneのInspectorを開いてLeftCameraTexgureをドラッグ&ドロップします。

LeftCameraTextureのシェーダーはUnlit/Textureがよさそうです。

LeftCameraPlaneに何かが写りました。

LeftCameraPlaneがLeftCameraに映り込まないように位置と角度を調整しました。ちゃんと映ってます。

LeftCameraPlaneがどの位置にあってもLeftCameraに映らないようにレイヤーを設定します。
LeftCameraPlaneを選択してInspectorの
Layer - Add Layer
でレイヤーを追加します。
追加するレイヤーの名前はStereo3Dとします。

LeftCameraPlaneを選択してInspectorのLayerをStreo3Dに設定します。

LeftCameraを選択してInspectorのCulling MaskのStreo3Dをオフにします。

これで左目用カメラの映像は期待通りになったと思います。


右目用カメラを配置する

HierarchyウィンドウのLeftCameraを右クリックしてDuplicateします。

Sceneに新しいカメラが追加されるので名前をRightCameraとします。
RightCameraの位置はLeftCameraよりX方向にプラス0.10くらいの位置にしてください。

LeftCameraとRightCameraは常にセットで移動させたいので一つのオブジェクトにまとめます。
メニューの
GameObject - Create Empty
で空(から)のオブジェクトを作ります。
HierarchyウィンドウにGame Objectというオブジェクトが追加されるので名前をStreo Camerasと、LeftCameraとRightCameraを子オブジェクトにします。

これで視点変更はStreo Camerasを動かすだけで済みます。


右目用カメラの映像をテクスチャ表示する

右目用カメラの映像をテクスチャ表示する方法は左目用と同じです。
  • ProjectウィンドウにRender Textureを追加して名前RightCameraTextureに設定する
  • RightCameraのTarget TextureにRightCameraTextureを設定する
  • RightCameraTextureのSizeを設定する
  • Planeを追加してRightCameraPlaneに設定する
  • RightCameraPlaneのInspectorにRightCameraTextureをドラッグ&ドロップする
  • RightCameraPlaneのシェーダーをUnit/Textureに設定する
  • RightCameraPlaneのLayerをStreo3Dに設定する


左右のカメラの映像を左右に並べる

SceneのLeftCameraPlaneとRightCameraPlaneが重ならないように左右に並べます。


メインカメラを設定する

はじめから配置されているMain CameraをLeftCameraPlaneとRightCameraPlaneの前に移動します。

Inspectorを設定します。
  • Culling MaskをStreo3Dのみにする
  • ProjectionをOrthographicにする
  • SizeやViewpoint Rectは左右の映像が収まるように調整する

Gameウィンドウに左右が収まるまで調整してください。

これでゲーム画面にサイドバイサイドの画像だけが表示されるようになりました。
キャラクターにポーズを付けて背景を配置しました。
Android用にビルドしたらスマートフォンで動作しました。


どうやってゲームに利用するか?

サイドバイサイド式なので立体視するにはスマートフォンでGoogle Cardboardを使う方法が思い浮かびます。
ですがGoogleからリリースされている「Cardboard SDK for Unity」を使えばもっと簡単に済みます。
Oculus Rift用SDKの代替手段という方法も思い浮かびます。
ですがUnity5からは無償版がOculus Rift用SDKに対応したうえ、このブログを書いている時点でOculus Riftは価格が4万円ほどします。
今のところ有効活用できそうな方法は「立体視のトレーニング用アプリ」でしょうか。
です。

ここまではスクリプト無しで出来たので良しとします。


Google Cardboard SDK for Unityはもっと簡単でした

Google Cardboard SDK for UnityはGoogleがApache Licenseの規定で公開しているUnity用アセットです。
Sceneに「CardboardMain」というプレハブを配置するだけで、実行時にサイドバイサイド・レンズ補正・トリミングの処理をしてくれました。
カメラを増やす必要もありません。
というわけでGoogle Cardboard SDKを使った方が圧倒的に簡単なのですが、CardboardMainは実行中でなければ何の効果もありません。
どうしても自力で実装したいこともあると思います。
自力で実装する際のレンズ補正はStandard AssetsのEffectsの中にあるFisheye(魚眼)のスクリプトを左右のカメラに割り当てるいいと思います。
下の画像はFisheyeを強めにかけた結果です。
アスペクト比や左右オフセットの調整はスクリプトを書く必要がありそうです。


参考にしたサイト

Create side-by-side stereo pairs in the Unity game engine(英語)
http://paulbourke.net/stereographics/Unitystereo/


関連ブログ

[Unity3D] Unity4からUnity5へのバージョンアップでの変化
[Android] OpenGLでシャープ製端末用3D(立体視)アプリケーションを作る
[Android] 3Dアプリケーションの作り方
[動画編集] MMDとMovie Studioでステレオスコピック3D動画を作る
[Unity3D] 透視投影と平行投影を合成するには[ユニティちゃん]

以上、参考になれば幸いです。

2015年3月27日金曜日

[Unity3D] Unity4からUnity5へのバージョンアップでの変化

How to uninstall Unity4 after installing Unity5
2015年3月、Unity TechnologiesからUnity5が公開されました。
Unity5は今までのUnityとは挙動が違うので注意したい点をまとめてみました。


環境

・Windows8.1


Unity4と5は共存する

Unity4までは、最新版をインストールするとインストール済のUnityは上書きされました。
例えばUnity3がインストールされた環境にUnity4をインストールするとUnity3は使えなくなりました。
Unity5からは仕様が変わったようで、Unity4がインストールされた環境にインストールするとどちらも使えるようになります。
どちらもショートカットが同じ画像なのでとても紛らわしいです。


アンインストーラーは共存しない

  1. Unity4がインストールされた状態のコントロールパネルです。
    「Unity」でキーワード検索した結果なのでMicrosoft Visual Studio...がありますが今回は無関係です。
  2. Unity4の後にUnity5をインストールしたコントロールパネルです。Unity4のアンインストーラーが無くなりました。
  3. Unity5をアンインストールしました。Unity4が残っている関わらずUnity4アンインストーラーは無くなったままです。

おそらくUnity4とUnity5は先にインストールした方のアンインストーラーが上書きされるようです。
幸いにもUnityはアンインストールせずに再インストールすることが出来ます。
Unity5のアンインストーラーが無くなってもUnity5を再インストールすればアンインストーラーは復活します。


Unity5は複数起動できる

Unity4までは1つのUnityプロジェクトしか起動できませんでした。
Unity5は複数起動して別のプロジェクトを開くことが出来ます。
複数起動できると別のプロジェクトの内容を見ながら開発できるので便利です。


旧バージョンのプロジェクトは互換性がない

Unity5は廃止されたAPIがあるようで、Unity4で作ったプロジェクトを開くとAPIのアップデートを促されます。
アップデートせずに開くことも出来ますが、まともに動きません。


Asset Storeからダウンロードしたコンテンツは保存場所が違う

Unity4でAsset Storeからダウンロードしたコンテンツは
%USERPROFILE%\AppData\Roaming\Unity\Asset Store
に保存されます。

Unity5では
%USERPROFILE%\AppData\Roaming\Unity\Asset Store-5.x
に保存されます。

保存先が違うのでUnity4で使っていたダウンロードAssetを引き続きUnity5出使う場合は、コピーするかダウンロードし直す必要があります。
Unity5に最適化されてないAssetもプロジェクト同様にAPIアップデートされるようです。


メニューの場所が変わった

機能が増えた影響か、メニューの配置が変わりました。
Skyboxの設定場所が
Window - Lighting
に変わっています。

Standard Assetsも階層が変わったため、数が減ったように見えてびっくりしました。


そのほか、Unity起動中のPC本体の発熱が少なくなったような気がします。


関連ブログ

[Unity3D] Visual Studio Community 2013を日本語化してUnityアプリを作る
[Unity3D] ゲーム画面をキャプチャしてMovie Studioで動画に編集する
[Unity3D] 透視投影と平行投影を合成するには[ユニティちゃん]
[Unity] オーディオの音量が小さい
[Android] Unity + Eclipse のRuntimeException unable to link library を解決する
[Unity 3D] Blender could not be found.を解決するには
[Android] Unity + EclipseのClassNotFoundExceptionを解決する
[Android] Unity + Eclipse の unityplayerproxyactivity.jarの欠落を解決する

以上、参考になれば幸いです。