OpenGLES2.0 のあれこれメモ

iOS6のiPhone4で確認しているので、iPhone4をミニマムスペックとしている人用のメモです。

iPhone4より性能がいい端末は、ここまで気を遣わなくてもいいはず‥。

・InstrumentsでOpenGL解析を使用して毎フレーム警告がでる部分は
解消すればそれなりに処理時間も改善されている模様。

・Mipmapは1.1同様、2の累乗サイズでしか作成できない。
必要ないならデフォルトで有効になっているので、テクスチャフィルタの設定で無効にする。
Mipmapを使わなければ、OpenGLES2からテクスチャサイズの2の累乗制限を受けないで自由度が増す。

・サイズの大きい画像は圧縮テクスチャにしてから使った方が何かといいみたい。

・でもベタ絵は苦手で圧縮テクスチャにすると劣化がわかりやすくなる事が多かった。写真系はOK。

・作成できる最大テクスチャサイズは、GL_MAX_TEXTURE_SIZEで取得できるがそのまま使用しない事。
glGetIntegerv(GL_MAX_TEXTURE_SIZE, &maxTextureSize);のように関数経由で取得してから
その変数を使用する。

・glGet系はできるだけ呼ばないように心がける。
例えば、上記の最大テクスチャサイズを毎フレーム調べるような処理はせず初期化時一回で済ませる。

・頂点シェーダもフラグメントシェーダも最終的に変数はfloatで扱う。
色情報をGL_UNSIGNED_BYTEで転送した場合は、
そのattribute変数の各種RGBAを255.0で割った値を最終的にシェーダに渡す。

・フラグメントシェーダはいるのか?ってくらいシンプルなものを心がける。
iPhone4 では、条件分岐だけでも使い方を工夫しないと重くなりやすい模様。
頂点シェーダで計算できるものは全部頂点シェーダで計算し、
varying経由で結果をフラグメントシェーダに渡して参照させるだけにした方が良い。

・attributeは頂点シェーダのみに渡せる変数
varyingは頂点シェーダからフラグメントシェーダに渡せる変数と覚える。
uniformは頂点シェーダ、フラグメントシェーダ両方に渡せる変数

・80ピクセル平方のスプライトをFPS60を切るまで画面中に散乱させたら
250枚前後しか出せず落胆。が、32ピクセルだと1200枚を超えたのでタイルサイズの考慮が大事?

[追記]
ブレンディングをしないと80ピクセルも1200近く出た。

円の描画も円のテクスチャではなく、円型ポリゴンをブレンドかけずに出したほうが早いかも?

OpenGLES2.0は、1.1より気難しくて意外と苦労しますね…。

ヤマトヌマエビが底に横たわって動かない…そんな時に試したい事

たまにはアクアリウムネタでも書いてみる。


先日ヤマトヌマエビが3匹抱卵したので、

ペットボトルに普段生活していた水槽の水とウィローモス、

エアレーションをしてそこに移した。

1匹は抱卵してから20日後くらいに移したので無事放卵し、水槽に戻せたのだが

他の二匹は数日後、底の方で横になって動かず瀕死の状態になってしまった。

卵をまだ抱えていて、触ると驚いてビクッ!っと動くのだが

ほぼ停止状態で歩けも立てもせず、辛うじて手がぴくぴく動く程度。

しかし、当てずっぽうながら行った処置が悪くはなかったようで、

今では元気に水槽を走ったり泳ぎ回っています。

今回は同じ症状をかかえてしまった方の為にその方法をご紹介。
(※私自身の1回しか確認できていないので確証はありません)

1. プラケースなど狭めの小さい入れ物に
横たわったエビちゃんが水面からほんのちょっと出るくらい(ほぼ水面と体高が同じくらいで浸かる)まで
元々暮らしていたメイン水槽の水を入れる。(あまりに水温差があるなら水合わせ)

2. 横たわったエビちゃんの口元に、棒かなにかでそーっと小さくしたエビタブまたはエビ用餌を
水中をスライドするようにして当ててあげる。
少しでも早くスライドしたり、変な箇所に当てるとびっくりして跳ねるので注意

3. 1時間くらい付きっきりで様子を見てやる。
数十分に一回口元のエビタブをもしょもしょし始め
口に運ぶのを何回かするようになったら成功と思われる。

4. エビタブが離れてしまったらまた口元へ持って行ってあげる。

この方法で2時間近くずーっと面倒みたのち、寝て起きたら

すっかり起き上がって動き回れるようになっていました。

あとはそのプラケースで2日ほどリハビリして水槽に戻せば復活です。

…って、お腹が空いていただけ?

[追記:2013/10/30]

上記は体が白濁していないエビちゃんによる結果。その後、2回成功してます。

しかし、体が白濁したエビちゃんはこの手は通用しないっぽいです。

Draw call accessed overlapping Vertex Data.

OpenGLESにて、

Draw call accessed overlapping Vertex Data. という警告が出た場合、

VBOの構造体サイズが4byteアラインになっていない可能性がある。

sizeof(VertexData)みたいな感じでサイズを調べ、

これが、18byteだった場合は4で割り切れない(割り切れる20まで2不足している)ので

自分で構造体にchar padding[2]; 的なダミー変数を加えてサイズを調節すると直る。

AIRアプリのプロセスが終了しても残ってしまう

event.CLOSING内でexitを発行してやる必要あり

NSObjCRuntime.hでerror: expected unqualified-id のようなエラーがたくさん出る

c や cpp でコーディングしていて、NSObjCRuntime.hでerror: expected unqualified-id のようなエラーが

たくさん出た時は、c/cpp/h/hpp などから obj-c を使っているヘッダをインクルードしているのが原因。

c や cpp を m、mm にリネームするか、なんとか objc を使用しているファイルを

インクルードしないでもいいような形に変えてやるとひとまずおさまる。

Mac(Lion)にWindowsからVNCで接続すると壁紙だけの画面になる

Lionの画面共有、またはリモートマネージメントを有効にして

Windows7からVNCで接続すると壁紙背景だけの画面になり

一切操作ができない状態になったので困った。

この状態になったら、一度ログアウトなり再起動なりして、

Lionをログイン画面にした状態でVNCでリモートログインをしたら

すんなりできた。

でもスクリーンセーバ等が動いちゃうとまたLionをログイン画面にしないと操作できなかったりするので注意。

余計な設定をせずにすぐVNCを使いたい場合は、

Windowsキーをcommandキー扱いで使えるRealVNCがオススメ。

=====[ 間違った方法も念のためメモ ]===========

他のプログラムに頼れないかと探した結果、

SplashStream2をLionにインストールしたが、
(http://www.splashtop.com/splashtop2)

アンダースコア _ やバックスラッシュが入力できない

(キーコード誤認)不具合?がSplashにあるみたいでこれも諦める。

ちなみにSplashStream2を使いたい場合は以下の設定が必要。

SplashStream2の設定画面からドライバを追加インストール(要再起動)

Windows7にSplashtop Remote Desktop(gen 1)をインストール
(http://www.splashtop.com/splashtop2#otherproducts-tab)

Lionの時計横のアイコンからStream2のパスワードなりを設定し(ログイン不要)

Windows7からインストールしたクライアントを起動して接続すればOK

SnowLeopard時代に使ってた画面共有+(UltraVNC or RealVNC)より動作や描画が早い気がするので残念。

JavaScript & Flash連携でブラウザ終了時通信できない

ExternalInterfaceを使えば、JavaScriptのイベントからas3の関数を呼べる。

ブラウザ終了時に通信しようと、as3のブラウザ終了時に呼ばれる関数に

URLLoaderを設定したが、loadを読んでも一向にCOMPLETEもErrorもハンドラが呼ばれず

try{}catchに引っかかることもない…。そのまま関数が終了してしまう。

ブラウザ終了じゃない時に呼ぶと普通に処理される事がわかったので、

ブラウザ終了時のURLLoaderは使えないようだ。

で、無理やりやる方法としては、ExternalInterfaceで設定した関数から

通信させたい情報をJavascriptにreturnし、JavaScriptで通信してしまう。

ただし、情報内容が駄々漏れになるので用途は相当限られるかと思う。

Error: Syntax error: expecting rightparen before ********.

Error: Syntax error: expecting rightparen before ********.

が表示される場合は、エラーの文字通り

「前行のカッコ閉じ忘れ」が原因。

FlashDevelopからブラウザ経由の埋め込みSWFをデバッグする方法

まず、以下からFlashPlayer(デバッグ版)を別途ダウンロード・インストールする。

http://www.adobe.com/support/flashplayer/downloads.html

※もしリンクが切れてたら「Flash player debug」なんかでググれば出るはず。



IEでデバッグしたいなら、

Download the Windows Flash Player 11.4 ActiveX control content debugger (for IE)


ChromeやFireFoxなどでデバッグしたいなら

Download the Windows Flash Player 11.4 Plugin content debugger (for Netscape-compatible browsers)

をダウンロードしてインストールする。(バージョン11.4はこの記事を書いた時点のもの)


もちろん両方入れても構わない。




IEは特にPlayerを切り替える設定の必要はないはず。以下の7.まで飛ばして良い

今回はChromeでデバッグしたい場合なのでChromeの人は1.から行う事。


1.インストール後、一度すべてのChromeウインドウを閉じてから再起動する。

こうしないと新たにインストールしたデバッグ版Playerがプラグインとして認識されない。



2.スパナアイコンから「設定」>画面最下部の「詳細設定を表示...」

>プライバシーの「コンテンツの設定...」ボタンを押す


3.中段ほどにあるプラグインの「プラグインを個別に無効にする...」リンクをクリック


4.右上の「[+]詳細」を押す


5.Flashに3Fileほどあるはずなので、場所に「\Google\Chrome」が含まれているものを「無効にする」を押す

(おそらくデバッグ版は最後にインストールしたので一番下に出ている。これだけ有効にする)

6.Chromeをすべて閉じる


7.デバッグしたいSWFと同じ階層(今回はFlashDevelop任意プロジェクトフォルダののbin下)に

objectタグなどでSWFをembedしたhtmlファイルを用意する。(今回はtest.htmlとする)


8.FlashDevelopを起動


9.プロジェクト>プロジェクトの設定で一番下のプロジェクトをテスト(T)から

「ドキュメントを開く...」を選択し、「編集」ボタンを押す


10.「bin/test.html」を入力


11.実行するとhtml経由でSWFを読み込みデバッグできる。flashVarなどチェックしたい時に便利。

Chromeでブレイクポイントを使うと、一定時間動きがなかったので

プラグインを強制終了しますか?とか定期的に出るのが残念だけど

これはChromeの機能なので仕方ないっぽい。


追記:Chromeは設定しても自動更新後、5の無効にするが戻されてる場合があるみたい。

設定したのにできない時は、5から見なおして

Chrome標準のPlayerが有効になってしまってないかみると良い。

それと、埋め込みSWFがビルドしたSWFじゃない別のSWFを指している場合、

当然デバッグがおかしな事になる(ブレイク後、変な移動をしたりする)ので設定ミスに注意。






Admobの振込失敗時は来月再試行される模様

Admobから月頭に一定額貯まったからPaypalに振り込むよーとメールが来た。

しかしそれから一週間待てど、二週間待てど全然振り込まれない…。

某掲示板によれば実際に振り込まれるのは、20日後とか月末になるらしい。

そもそもPaypalをプレミアムアカウントにしていなかった事をすっかり忘れていて、

Paypalへ20日直前になってアカウントをプレミアムに変更する申請を行った。

が、当然間に合わず、振込処理が行われる日はパーソナルアカウントのままだった。

それが原因かAdmobからPaypalに拒否されてしまったよと

21日に以下のメールが届く

==============================
Dear AdMob Publisher,

Your PayPal payment for AdMob earnings was returned to us status "Denied."
We apologize for any inconvenience, and will reattempt payment in our
September payment cycle. We are working with PayPal to determine the
cause of this issue.
==============================

来月もう一回振込を試みるよって事みたいなのでひとまず安心ですが、

Admobを使う方はひとまずPaypalのプレミアムアカウントを

取得orアップグレードしておいた方が無難だと思われます。

※プレミアムにしたからといって料金が別途かかるみたいな事は今の所ないようです。

=====[ 追記 ]=====

翌月、しっかりと振り込まれました。

(この時は15日に振り込まれてました。)

埋め込みスプライトがBitmapDataにdrawできない

埋め込みスプライトの生成タイミングの都合上

2フレーム待てばdrawに反映されるようになるみたい。

2フレーム経っていないとdrawしても何も描画されないのでハマった。

addChildしたのに表示されない

同じ参照物をどこかで2回以上addChildすると起こる

一度addChild済みのDisplayObjectは

複製するなりしてからaddChildする事

Windows7(64bit)のFlashDevelopでデバッグできない

Windows7(64bit)のFlashDevelopで

このバージョンの %1 は、実行中の Windows のバージョンと互換性がありません。コンピューターのシステム情報を確認して、プログラムの x86 (32 ビット) のバージョンと x64 (64 ビット) のバージョンのどちらが必要か確認してから、ソフトウェアの発行元に問い合わせてください。

と表示されてデバッグができなくなったのでメモ。


解決方法:

FlashDevelop(以下FDと記述)のプロジェクトを右クリック>「プロジェクト設定」を開く

Playerのバージョンを確認する。(今回は11.3として記述していく)

http://www.adobe.com/support/flashplayer/downloads.html

「Download the Windows Flash Player 11.3 Projector content debugger」をダウンロード
(11.3はこの記事を書いた時点のものなので、バージョンはその時に合わせる)

そのexeを適当な場所に置く。

FDのメニューから「ツール」>「環境設定」>「FlashViewer」を選択

「External Player Path」に先ほどのexeを指定する。

ビルドを一度クリーンしてからリビルド&実行。





GAE/P の通信でuser-agentを設定する

urlfetchの場合は、

urlfetch.fetch( your_url, headers={'User-Agent': your_ua })

とする。

urllib2の場合は、

o = urllib2.build_opener()
o.addheaders = [('User-agent', your_ua)]
o.open(your_url)

とする。

Google app engine / python で lxml

1.7.0の更新履歴に lxmlのunicodeサポートみたいな事が書いてあった。

つまり、lxmlが使えるようになったらしい。早速使ってみようと思ったらちょっと詰まったのでメモ。

自前でHTMLパーサを作らない場合、BeautifulSoup3くらいしか手軽に導入できるライブラリがない上に

ベンチマークしているサイトの情報によれば、lxmlの方が結構な差が出るくらい早いようなので

これからGAE/PでHTMLやXML解析をしたい人はlxmlを選んだほうがいいかも?


さて、導入方法は、まずPython2.7にする必要があるのと、

app.yamlに以下を追加

libraries:
- name: lxml
version: latest


もし、Python2.7にしたばかりで、app.yamlの設定がまだなら

application: your-app-name
version: 1
runtime: python27
api_version: 1
threadsafe: true

- url: /(.*)
script: main.app

みたいな感じの設定を追加。

この2.7用の設定については別記事参照。

開発環境では、これだけではダメで(本番環境ではまだ試していない)

別途、lxmlをインストールする必要がある。

コマンドでインストールもできるみたいだけど、

面倒くさがりな私は

ちょい古いバージョンでリリースされているインストーラを使って導入した。

インストーラが用意された中で一番最新のバージョンは、

この記事を書いた時点では2.3のものみたい。

http://pypi.python.org/pypi/lxml/2.3

今回WindowsでGAEのPythonも2.7用の設定なので、

下の方にある「lxml-2.3.win32-py2.7.exe (md5)」をDLしてインストールした。

あとは使い方が書いてあるサイトなり、マニュアルなりに書かれた通り

importして使うだけ。

as3 埋め込みフォントが表示されない

例えば、Verdanaというフォントを埋め込もうとした時、

[Embed(source = '(フォントまでの相対パス)/Verdana.ttf', fontName = 'Verdana', mimeType='application/x-font')] private static var FONT_VERDANA:Class;

みたいな定義をした後、TextFormatのfontに"Verdana"

そのフォーマットを適応するTextFieldのembedFontをtrueにする。

で、defaultFormatに上記フォーマットを指定。(※textを設定する前にする事)

でいいはずがまっさらで何も表示されない状態になった。

そんな時は、[Embed(略)のパラメータに「embedAsCFF="false"」を付け足して解決した。


例:
[Embed(source = '(フォントまでの相対パス)/Verdana.ttf', fontName = 'Verdana', mimeType='application/x-font'), embedAsCFF="false"] private static var FONT_VERDANA:Class;

node.jsで2回リクエストが走る

ブラウザによっては「favicon.ico」のリクエストも行なってくるので

URLを見て分けてやらないと2回実行されちゃう模様。

以下のようにfaviconリクエストのチェックをすれば解決。


http.createServer(function (request, response) {

// ここにfaviconチェックを入れる
if (request.url != '/favicon.ico') {

// Your code here.

}


}).listen(12345);

console.log("Started port 12345.");


iPhoneホームボタンの効きが悪い時の応急処置方法

ホームボタンが効かなくなった時が、デコピンだなんだと

いろいろな改善策のウワサが色々あるみたいですが、

自分は端末下部のスピーカー、マイク穴からフーーッ!っと思い切り

息を吹き入れてやると、短時間だがなぜかかなり良好な状態まで改善します。

至近距離から強くて長めの息を吹き入れる感じです。

それを片方やってもう片方みたいな感じ。

短時間で一日と持ちませんが、数分は効きがかなり改善しますので

お困りの方は、ぜひ一度お試しあれ。

---------------------
追記:

それでもやっぱり毎回やるのはキツイ…

最近は爪や指の先でホームボタンを端から対面までスライドさせるように

押すと反応する事がわかりその方法で慣れてしまった

(もはやゴリ押し…)

Eclipse(Pleiades)のPHPデバッグでブレイクポイントが効かない

Windows7のPleiades3.7(all in one)でPHPをステップ実行しようした所

ブレイクポイントでも止まらない状態になったので解決までの道のりをメモ。



xampp内にもApacheとPHP(verは5.3.8)が入っているので、

PHPとApacheを別にインストールしている場合は消さないとダメげ。


その後、Pleiadesも念のため再インスト。

( プロジェクトのバックアップを忘れずに )



次に、http.confで設定してあるドキュメントルートを

xampp内のhtdocから別の所にしたかったので別パスに変更(この設定は任意)



xamppフォルダ下にある「setup_xampp.bat」を一回実行する。

これでxamppサーバセットが使えるようになる。


同フォルダにある「xampp-control.exe」を実行しApacheをStartする。


続いて、Eclipseを開いて

PHPプロジェクトを作成する。

プロジェクトの場所は、「既存のディレクトリ」からApacheのドキュメントルートにした。


これでデバッグの構成からPHP Webサーバを設定し実行してみる。

…まだダメ。


なお、デバッグの構成は、虫のアイコンの▼アイコンを押して「デバッグの構成」をクリック。

PHP Web アプリケーションをダブクリして新規作成。

名前:適当

[サーバータブ]
サーバー・デバッガー:「XDebug」

PHPサーバー:「Default PHP Web Server」

ブレークポイント:最初の行でブレーク(ブレイクが効くようになったら任意でオフ)

ファイル:参照を押してプロジェクト内の任意php

URL: 自動設定を切る

ドキュメントルートの位置に合わせる。


例えば、作ったプロジェクト名がaaaでindex.phpをデバッグしたい場合、

上記「ファイル」は「aaa/index.php」だが、

「URL」は右欄を「/index.php」のように直す

(これはindex.phpがドキュメントルート直下の場合。

ドキュメントルート/test/index.phpみたいに

直下から更にフォルダ掘ってその中に入れていたら、/test/index.php)

[拡張タブ]
そのまま何もしないでスルー

[共通タブ]
「お気に入りのメニューに表示」の

デバッグにチェックを入れておくと後々すぐ選べて楽かも。


これで下の「適用」ボタンを押す。

これでもまだ動かないので「デバッグ」は押さない。

( もしこの時点でデバッグボタンを押してしまったら、

次にデバッグボタンを押した時に既にサーバが立ってる的な事が出て

起動しなくなるので、画面右上の「PHP」の左にある

「パースペクティブを開く」アイコンをクリック or ウィンドウメニューからそれを選ぶ。

「デバッグ」を選択。開いた画面で赤い四角の停止ボタンを押す。)

最後に、

xampp/php/php.iniを開き、2165行目の

「xdebug.remote_enable = 0」を

「xdebug.remote_enable = 1」にする

万が一「;xdebug.remote_enable = 0」と先頭に「;」がついていたら

それはコメントアウトになっているので、「;」を取る

保存してxamppコントローラからApacheを一旦「stop」し再度「start」

先程設定したデバッグの構成からデバッグボタンを押す。

パースペクティブをデバッグに設定しますか?的ダイアログが出れば成功。

これでブレイクポイントの効いたデバッグが出来るようになった。


正規表現で部分抜出するHTML

FlashDevelopでas3を書いてて、自作列挙から変数名だけ抜きたかったけど

標準機能でそれっぽいことができなかったので、HTMLとJSで取り急ぎで作ってみた。

かなりお粗末コード。

関係ないけどas3でEnumっぽい事をする方法は

http://d.hatena.ne.jp/katana_a/20070930/p1」を参照。

正規表現でテキスト抜き出し用HTML
<html><head> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> </head> <body> <script> function runre(){ var _src = $("#src").val(); var _re = $("#re").val(); var _text= ""; var _checked = $("#ignorecase").get(0).checked; var _opt = (_checked?"im":"m"); var _reobj= new RegExp(_re, _opt); var _res = null; try{ do{ _res = _src.match( _reobj ); if(_res && _res.length==2){ _text += _res[1]+"\n"; } _src = _src.substring( _res['index']+_res[1].length ); }while( _res ); }catch(e){} $("#result").val(_text); } </script> 処理したいテキスト<br/> <textarea id="src" cols="40" rows="10"></textarea><br /> 正規表現<br/> <textarea id="re" cols="40" rows="10"></textarea><br /> <br /> <br /> 処理結果<br/> <textarea id="result" cols="40" rows="10"></textarea><br /> <br /> <input type="checkbox" id="ignorecase">大文字・小文字の区別なし</input><br /> <input type="button" id="run" value="実行" onClick="runre();"/> </body> </html>


例えば、処理したいテキストに

public static const AAA:uint = 0;
public static const BBB:uint = 1;
public static const CCC:uint = 2;
public static const DDD:uint = 3;
public static const EEE:uint = 4;

みたいなテキストをコピペして、正規表現に

const (.*):

と入れて実行すると結果に

AAA
BBB
CCC
DDD
EEE

と出力される感じ。

Command /Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/llvm-g++-4.2 failed with exit code 1

調べると「変数二重定義」とか、「Xcodeとビルドキャッシュをクリーンすると直った」とか

あるみたいだけど、自分の場合はいつなんでそうなったのか

プロジェクトのファイルリストに同じファイルが2つできてた(どうやったらこうなるんだ…)

片方の参照を削除したら直った。

webkiterrordomain error 101

パラメータのURLがどこかおかしいと発生するみたい。

自分の場合、http://をhttp//とコロン抜けで渡していた時に発生した。

no previous prototype for function 〜の対処方法

no previous prototype for function 'hoge' みたいな警告が出るのは

プロトタイプがねーよ!って事なのだが、逐一言われてもうるさいので

ビルド設定の「Missing Function Prototypes」をNOにすれば出なくなる。

EclipseでGAE/P実行をする為の設定メモ

WindowsでEclipseの場合。Macならパス等各種合わせる事。

「デバッグの構成」>「PyDev Google App Run」

メインタブ
--------------------------
「プロジェクト」にデバッグするプロジェクト

「メイン・モジュール」に「SDKのパス\dev_appserver.py」
--------------------------

引数タブ
--------------------------
「プログラムの引数」に
(前略)\workspace\YourApp --address=192.168.123.45 --port=8080 --datastore_path=C:\datastore --use_sqlite
※最初のパス部分は相対パス指定でもいいけど何かをキッカケに
 エラーを吐いて動かなくなる事が多々あったので絶対パスをおすすめする

IPやポートは参考の為の適当な値なので、各々好きなように
--------------------------

パラメータ各種が何をしているかについては以下を参照
ttps://developers.google.com/appengine/docs/python/tools/devserver?hl=ja

ChromeでiPhoneサイトを見る方法

1.見たいページを普通に開く

2.Ctrl+Shift+iを押し「開発コンソール」を開く

3.右下の歯車マークを押し設定画面を出す

4.「Network」の項目にある「Override UserAgent」をチェック

5.リストから「iPhone4」または「iPhone5」を選択

6.リロード

ChromeでOrigin null is not allowed by Access-Control-Allow-Origin.が出る

Chromeでローカルファイルを開くとAJAX部分で

「XMLHttpRequest cannot load file:///(中略:ローカルファイルのパス).html. Origin null is not allowed by Access-Control-Allow-Origin.」

と出てうまく動かない状態になった。

解決策は、

Chromeのショートカットを作り、右クリック>プロパティ

リンク先の「~~(略)~~\chrome.exe」の後ろに

「 --allow-file-access-from-files」を加えればOK。


【重要】

すでに Chrome を開いている場合は、一度全て閉じてから

改めてパラメータ付きの Chrome を開かないと機能しない。

Windows7/64bitでブルースクリーン多発

某PCパーツショップで購入したPCがブルースクリーン多発。

1時間起動していればいい方で、1時間に平均4回はブルースクリーンで落ちてた。


付属していたハード診断ソフトを使用しても不良品は検出されず

さすがに構築時にそれくらいわかるだろうなと他の原因を探ることに。


chkdiskしてもインストールしたてで何もしてないので異常なし。


うーむ、と思ったが、通信している時だけしか起こらないっぽい事に気がつく。

通信は「USB無線LANアダプタ」を使用している。


ブルースクリーンの原因ファイルが大体etronうんちゃらと出ていたので

(他の時もあったけど半々くらい)

etronで調べるとUSBのハードがetronという所のドライバを使用しているようだ。


そこから何となくUSBが悪さをしていそうな気がしたのでWHQLドライバ0.96を入れる。

さらにBIOSで3.0を切ってみると以後青画面がお目見えする事がなくなった。

USB3.0を切ってもUSB2.0は使えるので安心である。

なお、ドライバは「0.96_whql」でぐぐった先の公式ドライバを入れた。

調べてて知ったけどWindows7/64bitって結構ハード相性厳しいのね。


※ 0.96 WHQLを入れてもUSB3.0を切らないと発生する事があったので

 ドライバ云々というよりは、単純にBIOSのUSB3.0をOFFにするだけでも改善するかもしれない。

EXC_BAD_INSTRUCTIONが出る理由

mallocしていないオブジェクトfreeしたり

obj-cでrelease不要のオブジェクトをreleaseすると発生するみたい

TargetのIdentifierやVersion、Buildが空になり保存しても消える

プロジェクト複製後、Xcodeにリネームして頂くと起こりやすいかも。

plistの位置が変な設定にしてくれちゃうので、

プロジェクトのTARGETの「BuildSettings」から「Info.plist File」の項目を直す。

自分の場合はどういうわけかSDK内の絶対パスに設定されてたので

「〜〜〜.plist」とファイル名だけにしたら解決した。

CSSアニメーションを最後で止めたい

-webkit-animation-fill-mode:forwards;

Webkit以外は未調査