メモ .htsccessのRewriteでメンテ画面表示

ErrorDocument 503 任意のURL(http://~ もしくは /~ )

RewriteEngine On
RewriteCond %{REQUEST_URI} !任意の文字列
RewriteCond %{REMOTE_ADDR} !^000\.000\.000\.000$
RewriteRule ^.*$ - [R=503,L]

・リダイレクト後のurl(に含まれる文字列)で判定してループを防ぐ(ロリポで試してるけどこの記述がない場合503の素のページが表示された)
・自分のipのみを許可
・503のとび先をhttp://〜にしてるとリダイレクト
・とび先はこの記述の.htaccessがあるのと別のディレクトリにしないと画像とか表示されないので注意

audioタグ覚書

想像をはるかに下回る

http://www.ibm.com/developerworks/jp/web/library/wa-ioshtml5/

・対応状況が異なるために複数ファイルが必要
・ループ再生がスムーズにつながらず、1回再生し終わった時点で音が途切れる

 iOSでの問題点
 ・プリロードの術がない(初回読み込み時に必ず遅延が発生)
 ・ユーザーのタッチイベント以外のタイミングで音を鳴らすことはできない

 某Android機種での問題点
 ・タッチイベントにバインドしたaudio.play()が、2度目以降のタッチできかなかった

もうWindowssafariの大々的な配布は終わってるようなので切り捨てていい部分かもしれないけど、
QuickTimeインストールしてない場合にWindowssafariはaudioタグ認識しない
audioのメソッド実行する部分で 'undefined' is not a function ていわれてた

  • -

PCのみならまよわずflash
モバイルはつぎのようなことにちゅうい

プレイヤー設置してユーザーの任意で音を再生、程度の使い方なら実用的。
プレイヤー設置しない場合でも、クリックしたときに音を出す、程度ならつかえる。
ただゲーム制作などでリアルタイムに好きなタイミングで音を出すということがかなり困難。

プリロードなどの問題点については
オーディオスプライトという手法が有効らしいけど、回りくどい

クリックをトリガーにしてsetTimeoutで指定秒数ずらして再生、なら、かろうじて可能。
(でも普通に書いてたらできない、setTimeout直前にload()必要)

ちゃんと調べてないけど、ひとつのクリックハンドラの中でふたつ音が出せない?
audioひとつ再生につき、ひとつのアクションが必要っぽい。

for inループの挙動

IE8なんなの

var arr =["a","b","c"]
for(var i in arr){
  alert(i);
}

// 0
// 1
// 2
// indexOf

4回まわってる上に
最後のやつなんなの

140322追記:
IndexOfの正体はArrayのprototypeに追加したIndexOfメソッドだったことが判明
for inループはprototypeに追加したメソッドもプロパティとして数えられるのか…

別途Array.IndexOfが存在しないブラウザのみArray.IndexOfを追加する記述をしていた。
IE8でだけIndexOfが出力されたのはIE8にもともとIndexOfメソッドがなかったからだ。

文句言ってごめんIE8。でもArray.IndexOfメソッドないのがいかんのだよ。

(反省)event.targetのさすものを忘れるな

初歩的過ぎるミス
イベントオブジェクトのtargetプロパティで取れるのはイベントが発生したオブジェクトだ
必ずしもイベントリスナーを登録したオブジェクトとは限らない
AS3いじりたての頃に散々やったはずなんだけど

<ul>
<li id="btn"><div>ボタン</div></li>
</ul>
$("#btn").click( function(e){ 
   alert( $(e.target).attr("id")); // undefined
 }

マウスイベント受け取ったのがdivの場合、divのidをとろうとしてundefinedに

$("#btn").click( function(e){ 
    alert($(e.target).closest("li").attr("id")); // btn
 }

こっちは確実にliのidがとれる

AS3ではボタンにしたインスタンスのmouseChildren=falseにして、
ボタンの子がマウスイベントを受け取ること自体を防止するのが通例になってたから...
すっかり忘れてた。

(あまり役立たない)IE8で擬似要素の背景を動的に切り替えられない場合

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" >
<title></title>
<style>
#box{width:200px;height:200px;background:#eee;}
#box:before{content:"before box";color:#fff;display:block;background:#aaa;width:100px;height:100px;}
#box.change:before{background:#ccc}
</style>
<script src="js/jquery.js"></script>
<script>
$(function(){
	$("#chengeBeforeBox").click(function(){
		$("#box").toggleClass("change");
	});
})
</script>
<!---->
</head>
<body>
<div id="box">box</div><a id="chengeBeforeBox" href="#">chengeBeforeBox</a>
</body>
</html>

#chengeBeforeBoxをクリックすると:beforeボックスの背景色が#aaaから#cccになる記述。

しかしIE8では背景色が変化しない。
contentプロパティに変化がない場合には背景の変化が反映されない様子。
contentの中身を少し変えるだけで反映されるようになる。
この場合もとの文字列に半角スペース加えるだけでもよかった。

以下に詳しくまとまっていた
http://terkel.jp/archives/2013/07/redraw-pseudo-element-style-ie8/

Illustrator web用に書き出し時に透明背景にならない

まっさらレイヤーにおいてあるオブジェクトをpngで書き出そうとするも、なぜか白背景。

表示>オーバープリントプレビュー が入っていたせいだった。
きったら解決。

PhotoshopCCの移動ツールでCtrl+ドラッグ選択する際の不具合?

移動ツールのCtrl+ドラッグでキャンバス上の選択範囲から複数レイヤーを選択する際、
ロックされたレイヤーグループ内の子レイヤーも選択してしまう

おかげで「移動ツールを使用できません。...」のメッセージが出ちゃって移動できない事態に
子レイヤーに直接ロックをかけると発生しない模様

http://forums.adobe.com/thread/1277371
言及している記事があまりないけどみんな困ってないのか
はたまた珍しい症状だったりするのか