2014年12月17日水曜日
JavaScriptまとめ2
var a = [5, 10]; alert(a.length); // → 2が表示される a.push(15); alert(a.length); // → 3が表示される
a[1000] = 500; alert(a.length); // →1001が表示される
実際に中身を見てみると、配列の要素は4つしかないことがわかる
var tmpArray = [];
for (var key in a) {
tmpArray.push(key);
}
// 結果は「0,1,2,1000」
alert(tmpArray.join());
結果は「0, 1, 2, 1000」つまり、lengthの値が1001を表しているのに、実際配列に格納されている要素は4つしかない.
従って、JavaScript配列のlengthプロパティは「配列にどれだけ値が格納されているか」を表すものではありません。結論を言うとlengthプロパティは、「インデックス最大値 + 1」を表す値で自動的に更新される特殊なプロパティ
※このことから、配列の値を走査する場合は「for (var i = 0; i < a.length; i++)」とやるよりも、in演算子を用いた方が速いことが多い
上の例で言えば、前者の場合1000回ループしますが、後者の場合は4回で済む
ただし、配列の添え字を飛び飛びで使用することはあまりないでしょうから、気にする状況は限られてくるでしょう。
添え字として無効なキーは、lengthに影響を与えない
配列添え字として無効なキー(2の32乗までの正数以外)を配列オブジェクトに格納しても、lengthプロパティは変化しません。
var a = []; // lengthは0
a[0] = "aaa"; // lengthは1になる
a["1"] = "bbb"; // lengthは2になる。文字列も有効
a["a"] = "ccc"; // "a"は添え字として無効なので、lengthは変化しない
lengthプロパティは書き込みも可能
lengthプロパティは、読み取りを行えるだけではありません。lengthプロパティに数値を代入すると、その大きさまで配列は切り詰められます。
var a = [1, 2, 3, 4];
a.length = 0; // 空の配列になる
配列を一定の長さに保ちたい、という場合などに役立つテクニック
○参考
JavaScriptの配列をも〜っと深く理解する:lengthの不思議な動作
http://builder.japan.zdnet.com/script/sp_javascript-kickstart-2007/20366841/2/
2014年12月15日月曜日
2014年12月4日木曜日
GoogleMobile小手先テクニック
○Ajaxのリンク無効化
$("a").attr({ "rel":"external" });
/*または*/
$("a").attr({ "data-ajax":"false" });
rel="external" は、他のサイトへのリンクに用いられますが、data-ajax="false" は同じサイト内であっても何らかの理由でAjaxによる遷移を行いたくないという場合に使います。
○Ajaxのリンクをダイアログ以外無効化
$("a:not([data-rel=dialog])").attr({ "data-ajax":"false" });
○セレクトボックス初期化
$("id").selectmenu('refresh');
○ローディング表示
$.mobile.loading('show', {
text: 'データ取得中',
textVisible: true,
textonly: false,
theme: 'a'
});
○ローディング停止
$.mobile.loading('hide');
$("a").attr({ "rel":"external" });
/*または*/
$("a").attr({ "data-ajax":"false" });
rel="external" は、他のサイトへのリンクに用いられますが、data-ajax="false" は同じサイト内であっても何らかの理由でAjaxによる遷移を行いたくないという場合に使います。
○Ajaxのリンクをダイアログ以外無効化
$("a:not([data-rel=dialog])").attr({ "data-ajax":"false" });
○セレクトボックス初期化
$("id").selectmenu('refresh');
○ローディング表示
$.mobile.loading('show', {
text: 'データ取得中',
textVisible: true,
textonly: false,
theme: 'a'
});
○ローディング停止
$.mobile.loading('hide');
jQuery Mobileの特徴
スマートフォン向けのフレームワークは数多く存在していますが、jQuery Mobileの大きな特徴としては以下が挙げられます。- クロスプラットフォーム対応(iOS、Android、Windows Phone、BlackBerry等)
- セマンティックなHTML記述による高いアクセシビリティ性
- HTML、CSSの知識があれば、簡単に構築が可能
- Dreamweaverでのモバイル開発機能追加
また、jQuery Mobileの特徴の一つとして、ページ遷移時のトランジション(アニメーション効果)が標準で機能されている点があります。
この機能はAjaxといって、非同期通信を利用して遷移先のデータを取得し、通信結果に応じて動的にページの内容を書き換えるという動きにより実現しています。
以下の章ではこのAjaxによるページの遷移方法とその問題点・解決方法についてご紹介致します。
Ajaxによるページ遷移の問題点
jQuery Mobileで使われているAjaxでのページ遷移ではCSS、jsファイルの読み込みを行っているHEAD部分はそのままで、BODY部分のみ置き換わる動きをします。一見ページが切り替わったように見えますが、URLは#で繋がれ実際にはページ遷移をしていない状態なのです。
- 1ページ1HTMLという概念ではなくなるため、ページ固有のcss、jsが使えない(全ページ同じcss、jsを使用しないといけない)
- ページ個別での解析タグ(Google AnalyticsやAdSense等)を入れるには別途スクリプト追加による対処が必要
- HTMLのID重複に注意が必要
Ajaxで遷移先のデータを取得し現在のDOMに挿入する動きになるので、遷移元のページに同じIDを持つ要素があると、1つのDOM中に2つ以上の同じIDが含まれる事になってしまう。
IDが重複するために、jQueryなどでセレクタでの要素をうまく取得できない。
http://webnaut.jp/markup/597.html
2014年9月18日木曜日
サーバのグローバルIPアドレスを確認する
サーバのグローバルIPアドレスを調べるには下記のようにすると良いです。
http://qiita.com/syrinx05p/items/55060ab2e3dead4a370d
http://itpro.nikkeibp.co.jp/free/NNW/NETHOT/20040624/146335/
ネットワーク関連の技術書などを読んでいると,例として登場するネットワークで「192.168.x.x」といったアドレスがよく使われている。特に覚えやすいわけでもないのに,なぜこのようなアドレスを使っているのだろうか。今回はここに焦点を当てていこう。
IPアドレスは,IPというプロトコルで相手を識別するのに使うアドレス。世界中のネットワークを相互接続するインターネットはプロトコルにIPを使っ ているので,インターネットに接続しているすべてのコンピュータは,ほかと重複しないIPアドレスを割り当てる必要がある。このため,インターネットで使 われるIPアドレスは,だれがどのアドレスを使っているのか厳重に管理されているのである。このように,一元的に管理され,インターネットで使えるIPア ドレスのことを「グローバル・アドレス」と呼んでいる。
ただし,IPネットワークの技術はインターネットに直接つながっていない社内ネットワークや家庭内ネットでも使える。こうしたネットワークでも,いちい ちグローバル・アドレスを割り当てるとなると,手間やコストがかかる。また,限られた数しかないグローバル・アドレスの無駄使いにもなりかねない。
このように,インターネットに直接つながってないネットワーク向け専用のアドレスを「プライベート・アドレス」と呼ぶ。インターネットに接続しないネットワークで使う限り,特に許可を取らなくても自由に割り当てて使えるアドレスである。
ご存知の人も多いと思うが,冒頭で紹介した「192.168.x.x」(192.168.0.0~192.168.255.255)の範囲のIPアドレスは,このプライベート・アドレスにあたる。
社内ネットワークなどではプライベート・アドレスを使うのが一般的になっている。社内からインターネットへアクセスするときは,インターネットとの境界 に置いたゲートウエイ装置でIPアドレスをプライベートからグローバルに付け替えるアドレス変換という技術が使われている。
プライベート・アドレスを割り当てたコンピュータが間違ってインターネットにつながってしまうと,どうなるのだろうか。実は何も起こらない。単に通信で きないだけである。プライベート・アドレスのホストはインターネット上に存在しないことになっているので,プロバイダなどのルーターは,プライベート・ア ドレスあてのパケットを破棄してしまうからである。
技術書や雑誌の誌面で例示としてプライベート・アドレスを使う理由の一つはここにある。プライベート・アドレスにしておけば,万が一,例示の通りに設定 したコンピュータをインターネットに接続しても,大きなトラブルにならない。それに対して,間違ったグローバル・アドレスを割り当てたパソコンをインター ネットにつないでしまうと,インターネット上の通信に問題が発生する危険性がある。
ただし,例示に「192.168.x.x」のアドレスを使わなければならないという決まりはない。それどころか,インターネットの技術規格を定めた RFC(request for comments)のRFC3330では,こうした例示のために使うアドレスとして,「192.0.2.x」 (192.0.2.0~192.0.2.255)を割り当てている。このため,RFCに準拠した技術文書では,例として192.0.2.xを使うことが多 いようだ。
% wget -q -O - ipcheck.mycurse.netちなみに
% /sbin/ifconfigでわかるのは現在所属しているネットワークのローカルIPアドレスです。
http://qiita.com/syrinx05p/items/55060ab2e3dead4a370d
http://itpro.nikkeibp.co.jp/free/NNW/NETHOT/20040624/146335/
ネットワーク関連の技術書などを読んでいると,例として登場するネットワークで「192.168.x.x」といったアドレスがよく使われている。特に覚えやすいわけでもないのに,なぜこのようなアドレスを使っているのだろうか。今回はここに焦点を当てていこう。
IPアドレスは,IPというプロトコルで相手を識別するのに使うアドレス。世界中のネットワークを相互接続するインターネットはプロトコルにIPを使っ ているので,インターネットに接続しているすべてのコンピュータは,ほかと重複しないIPアドレスを割り当てる必要がある。このため,インターネットで使 われるIPアドレスは,だれがどのアドレスを使っているのか厳重に管理されているのである。このように,一元的に管理され,インターネットで使えるIPア ドレスのことを「グローバル・アドレス」と呼んでいる。
ただし,IPネットワークの技術はインターネットに直接つながっていない社内ネットワークや家庭内ネットでも使える。こうしたネットワークでも,いちい ちグローバル・アドレスを割り当てるとなると,手間やコストがかかる。また,限られた数しかないグローバル・アドレスの無駄使いにもなりかねない。
このように,インターネットに直接つながってないネットワーク向け専用のアドレスを「プライベート・アドレス」と呼ぶ。インターネットに接続しないネットワークで使う限り,特に許可を取らなくても自由に割り当てて使えるアドレスである。
ご存知の人も多いと思うが,冒頭で紹介した「192.168.x.x」(192.168.0.0~192.168.255.255)の範囲のIPアドレスは,このプライベート・アドレスにあたる。
社内ネットワークなどではプライベート・アドレスを使うのが一般的になっている。社内からインターネットへアクセスするときは,インターネットとの境界 に置いたゲートウエイ装置でIPアドレスをプライベートからグローバルに付け替えるアドレス変換という技術が使われている。
プライベート・アドレスを割り当てたコンピュータが間違ってインターネットにつながってしまうと,どうなるのだろうか。実は何も起こらない。単に通信で きないだけである。プライベート・アドレスのホストはインターネット上に存在しないことになっているので,プロバイダなどのルーターは,プライベート・ア ドレスあてのパケットを破棄してしまうからである。
技術書や雑誌の誌面で例示としてプライベート・アドレスを使う理由の一つはここにある。プライベート・アドレスにしておけば,万が一,例示の通りに設定 したコンピュータをインターネットに接続しても,大きなトラブルにならない。それに対して,間違ったグローバル・アドレスを割り当てたパソコンをインター ネットにつないでしまうと,インターネット上の通信に問題が発生する危険性がある。
ただし,例示に「192.168.x.x」のアドレスを使わなければならないという決まりはない。それどころか,インターネットの技術規格を定めた RFC(request for comments)のRFC3330では,こうした例示のために使うアドレスとして,「192.0.2.x」 (192.0.2.0~192.0.2.255)を割り当てている。このため,RFCに準拠した技術文書では,例として192.0.2.xを使うことが多 いようだ。
2014年9月15日月曜日
達人プログラマー
第1章:達人の哲学
完了できない、納期に間に合わない、壊れているといった理由をだれかに報告する前に、いったん立ち止まって自分自身の言い訳に耳を傾けてください。ディスプレイの上に置かれているゴム製のアヒルちゃんでも猫でもかまいませんので、まず話しかけてみるのです。あなたの弁解は筋が通っているでしょうか?あなたがばかげたことを主張しているのでしょうか?あなたの上司にはどのように聞こえるでしょうか?
あなた自身の心と対話してみてください。他の人ならどのようなことを言うでしょうか?彼らの「これは試してみたのかい?」とか「こんなことは考えなかったのかい?」といった問いにどのように返答できるでしょうか。まうは悪いニュースを報告する前に、何かできることはないでしょうか?彼らが何を言うか予想できるばあいもあるでしょうから、彼らの手間を省いてあげるのです。
ヒント4:割れた窓を放置しておかないこと
放置しておくことは他のどのような要因よりも腐敗を「加速」させるのです。
完了できない、納期に間に合わない、壊れているといった理由をだれかに報告する前に、いったん立ち止まって自分自身の言い訳に耳を傾けてください。ディスプレイの上に置かれているゴム製のアヒルちゃんでも猫でもかまいませんので、まず話しかけてみるのです。あなたの弁解は筋が通っているでしょうか?あなたがばかげたことを主張しているのでしょうか?あなたの上司にはどのように聞こえるでしょうか?
あなた自身の心と対話してみてください。他の人ならどのようなことを言うでしょうか?彼らの「これは試してみたのかい?」とか「こんなことは考えなかったのかい?」といった問いにどのように返答できるでしょうか。まうは悪いニュースを報告する前に、何かできることはないでしょうか?彼らが何を言うか予想できるばあいもあるでしょうから、彼らの手間を省いてあげるのです。
ヒント4:割れた窓を放置しておかないこと
放置しておくことは他のどのような要因よりも腐敗を「加速」させるのです。
登録:
投稿 (Atom)
で確認可能。
外部APIサーバと連携するときによく使う。