ツールパネルの黒三角がついているアイコンは、サブメニューが表示されるはずなんだけど、表示される時とされない時があって、なんでだろうと思っていたら、どうやら長押し(クリック)しないと表示されないみたいですね。自分はクリックが一瞬なので表示されていなかったようです。すごく基本なのに検索しても出てこない。
2012年12月27日木曜日
2012年12月26日水曜日
[AWS]EC2 Command Line Toolsを導入した。
以下を参照してできました。(英語)
Setting Up the Amazon EC2 Command Line Tools
ただ、Windows XPでやっていますが、コマンドプロンプトでsetxが使えなかったので、
環境変数の設定はGUI、「システムのプロパティ」→「環境変数」で行いました。
また、環境変数のパスをクオテーションで囲む場合、シングルでやるとだめで
ダブルクオテーションだといけました。
Setting Up the Amazon EC2 Command Line Tools
ただ、Windows XPでやっていますが、コマンドプロンプトでsetxが使えなかったので、
環境変数の設定はGUI、「システムのプロパティ」→「環境変数」で行いました。
また、環境変数のパスをクオテーションで囲む場合、シングルでやるとだめで
ダブルクオテーションだといけました。
2012年12月20日木曜日
[AJAX]ajaxで取得したレスポンス内のjavascriptはデバッグできないので
Ajaxで取得したHtml等の中に書かれているjavascriptはFirebugなどで
デバッグすることができない。
なので、なるべくソースはもともとあるjavascript(Ajaxではなく最初にそのページを
表示した際に読み込まれるjavascript)内に関数として記述しておき、Ajaxで取得した
javascriptからはその関数を呼び出すだけ、という形にしておけば、デバッグが可能だ。
デバッグすることができない。
なので、なるべくソースはもともとあるjavascript(Ajaxではなく最初にそのページを
表示した際に読み込まれるjavascript)内に関数として記述しておき、Ajaxで取得した
javascriptからはその関数を呼び出すだけ、という形にしておけば、デバッグが可能だ。
[JavaScript]htmlのタグIDと同じ名前の変数を作ってはいけない
下記で説明されているとおりとなります。
IE8で「オブジェクトでサポートされていないプロパティまたはメソッドです」と表示される
変数宣言する際にvarをつければエラーは発生しないのだが、
タグIDの方が無効になってしまうので、やはり違う名前をつけるべき。
IE8で「オブジェクトでサポートされていないプロパティまたはメソッドです」と表示される
変数宣言する際にvarをつければエラーは発生しないのだが、
タグIDの方が無効になってしまうので、やはり違う名前をつけるべき。
[JavaScript]普通のfor文とfor-in文の微妙な違い
JavaScriptで配列やオブジェクトを扱う際に、普通のfor文とfor-in文の微妙な違いについて
紹介する。
■一次元配列の場合。
・普通のfor文
定義有り→エラーが発生しない。
定義なし→エラーが発生する。
エラー: 'list' は宣言されていません。
・for-in文
定義あり→エラーが発生しない。
定義なし→エラーが発生する。
エラー: 'list' は宣言されていません。
つまり、上記のように一次元配列においての挙動は同じである。
■多次元配列の場合
・普通のfor文
二次元目までの定義あり→エラーが発生しない。
二次元目までの定義なし(一次元目のみ定義)→エラーが発生する。
エラー: 'list.a.length' は Null またはオブジェクトではありません。
・for-in文
二次元目までの定義あり→エラーが発生しない。
二次元目までの定義なし(一次元目のみ定義)→エラーが発生しない。
つまり、for-in文で多次元配列を扱う場合は、2次元目の配列を定義していなくても
なぜかエラーが発生しない。
ちなみ三次元にしたところ、
以下のように一次元のみ定義だとエラーが発生。
エラー: 'list.a.b' は Null またはオブジェクトではありません。
二次元まで定義したらエラーが発生しなくなる。
■結論
①普通のfor文でx次元配列を扱う場合、x次元まで定義する必要がある。
②for-in文でx次元配列を扱う場合は、x-1次元まで定義すればよい。
※①はlengthを参照するのでx次元目まで定義していないとエラーが発生するのはかるが、
②でx次元目まで定義していないのにエラーが発生しない理由がわからない。
紹介する。
■一次元配列の場合。
・普通のfor文
定義有り→エラーが発生しない。
list=new Array();
for(i=0;i<list.length;i++){
alert(list[i]);
}
定義なし→エラーが発生する。
エラー: 'list' は宣言されていません。
for(i=0;i<list.length;i++){
alert(list[i]);
}
・for-in文
定義あり→エラーが発生しない。
list=new Array();
for(var item in list){
alert(list[item]);
}
定義なし→エラーが発生する。
エラー: 'list' は宣言されていません。
for(var item in list){
alert(list[item]);
}
つまり、上記のように一次元配列においての挙動は同じである。
■多次元配列の場合
・普通のfor文
二次元目までの定義あり→エラーが発生しない。
list=new Array();
list["a"]=new Array();
for(i=0;i<list["a"].length;i++){
alert(list["a"][i]);
}
二次元目までの定義なし(一次元目のみ定義)→エラーが発生する。
エラー: 'list.a.length' は Null またはオブジェクトではありません。
list=new Array();
for(i=0;i<list["a"].length;i++){
alert(list["a"][i]);
}
・for-in文
二次元目までの定義あり→エラーが発生しない。
list=new Array();
list["a"]=new Array();
for(var item in list["a"]){
alert(list["a"][item]);
}
二次元目までの定義なし(一次元目のみ定義)→エラーが発生しない。
list=new Array();
for(var item in list["a"]){
alert(list["a"][item]);
}
つまり、for-in文で多次元配列を扱う場合は、2次元目の配列を定義していなくても
なぜかエラーが発生しない。
ちなみ三次元にしたところ、
以下のように一次元のみ定義だとエラーが発生。
エラー: 'list.a.b' は Null またはオブジェクトではありません。
list=new Array();
for(var item in list["a"]["b"]){
alert(list[item]["a"]["b"][item]);
}
二次元まで定義したらエラーが発生しなくなる。
list=new Array();
list["a"]=new Array();
for(var item in list["a"]["b"]){
alert(list[item]["a"]["b"]);
}
■結論
①普通のfor文でx次元配列を扱う場合、x次元まで定義する必要がある。
②for-in文でx次元配列を扱う場合は、x-1次元まで定義すればよい。
※①はlengthを参照するのでx次元目まで定義していないとエラーが発生するのはかるが、
②でx次元目まで定義していないのにエラーが発生しない理由がわからない。
2012年12月19日水曜日
[Windows]LAN上のサーバにつながらない時の注意点
BuffaloのNASになぜか接続できないなぁ、と3時間位試行錯誤
していて今日気づいたのですが、「 Microsoft ネットワーク用クライアント」が
無効になっていました。
有効にしたところ接続できるようにまりました。
たぶん先日この辺いじっちゃったときに無効にしたんだろうな。
以下で紹介されています。
Microsoft ネットワークへの接続を無効にする
していて今日気づいたのですが、「 Microsoft ネットワーク用クライアント」が
無効になっていました。
有効にしたところ接続できるようにまりました。
たぶん先日この辺いじっちゃったときに無効にしたんだろうな。
以下で紹介されています。
Microsoft ネットワークへの接続を無効にする
2012年12月12日水曜日
[PHP]演算子の優先順位
以下のサイトで説明していただいているように、演算子には優先順位があります。
演算子の優先順位
今日以下のようなコードを書いていたのですが、
$votable_flgには"!empty($auth)"の値(真偽値)しか代入されていませんでした。
"or"や"and"より"="が優先されて処理されるためのようです。
なので、"="の右辺を以下のように丸括弧でくくると、期待通りの値が代入されました。
演算子の優先順位
今日以下のようなコードを書いていたのですが、
$votable_flg = !empty($auth) and $check <1 and $theme['Theme']['kind']==1;
$votable_flgには"!empty($auth)"の値(真偽値)しか代入されていませんでした。
"or"や"and"より"="が優先されて処理されるためのようです。
なので、"="の右辺を以下のように丸括弧でくくると、期待通りの値が代入されました。
$votable_flg = (!empty($auth) and $check <1 and $theme['Theme']['kind']==1);
登録:
投稿 (Atom)
