Archives by date

You are browsing the site archives by date.

【Javascript】時間、回数、パフォーマンスを詳細に計測する。

めも。

console.profile()、console.profileEnd()を用いると各関数の実行回数、合計の実行時間などを計測し、コンソールへ詳細に吐き出してくれる。
上記関数にはそれぞれ同一のキーを引数として渡し、同じキーが指定されたものをペアとしてその区間の計測結果を出力してくれる。

例えば下記のようなjQueryを用いたコードのパフォーマンスを詳細に計測したい場合。

<script>
var obj = {};

obj.test = function(){
	console.log('ok');
}

$(function(){
	for(var i = 0; i < 100; i++){
		for(var j = 0; j < 10; j++){
			obj.test();
		}
	}
})
</script>

下記のようにconsole.profile()、console.profileEnd()を挿入してみる。

<script>
var obj = {};

obj.test = function(){
	console.log('ok');
}

$(function(){
	console.profile('key');
	for(var i = 0; i < 100; i++){
		for(var j = 0; j < 10; j++){
			obj.test();
		}
	}
	console.profileEnd('key');
})
</script>

そして、これを実行すると下記のようなデバッグ結果が出力される。
※下記はChromeで実行した場合のデバッグコンソール。

c7321b7fafc05912cf004164673dfe9a

パフォーマンスを極限まで追及する際に欠かせない非常に強力な機能だね。

 

【Javascript】コンソールでスタックトーレスを表示する。

めも。

console.trace();

変数のデバッグ時はconsole.log()関数を用いるが、その関数がどこから呼ばれたのかを詳細に表示したい場合は、console.trace()関数を用いるとよい。
console.trace()はトリガーになったイベントがどのオブジェクトのものであるかまで判明するため、イベントドリブン形式でプログラムを記述している場合は非常に有用。

 

【Javascript】外部JSファイルの実行を遅延させる方法。

めも。

<script src="//example.com/hoge.js"></script>
<script src="//example.com/fuga.js" defer></script>

上記2行目のようにscriptタグに対しdefer属性を追加してやると、そのscriptタグの評価を他全てのscriptタグの評価終了後に遅延させることが出来る。
逆に非同期で外部JSファイルを読み込み逐次評価させたい場合は下記のように、async属性を追加してやればよい。

<script src="//example.com/hoge.js"></script>
<script src="//example.com/fuga.js" async></script>

まぁ普通にjQueryの$(function(){…})でやればいいことなんだけれども。

 

【jQuery】Classの存在チェックを行う。

めも。

■HTML

<div class="target piyo">hoge</div>

■Javascript

<script>
$(function(){
	var c = $('.target').hasClass('piyo');
	console.log(c);
	// true
});
</script>

 

【jQuery】Datepickerを日本語対応させる。

以前の記事←に加えて、下記のスクリプトを読み込むことで日本語化が可能。

<script src="jquery.ui.datepicker-ja.js"></script>

jQuery本体をダウンロードした際に同梱されている「i18n」というフォルダ内に各国のローカライズ用スクリプトが格納されているのでそこから持ってくる。

そして下記コードを記述

// 日本語化する場合
$.datepicker.setDefaults($.datepicker.regional['ja']);
// デフォルトの言語に戻す場合
$.datepicker.setDefaults($.datepicker.regional['']);

特定のカレンダー対してだけローカライゼーションを行いたい場合は下記の通り。

$('selector').datepicker($.datepicker.regional['ja']);

 

【MySQL】LIKEキーワードで前方一致、後方一致検索を行う方法。

めも。

いつもどおりのLIKE文をちょっと変えてやるだけでOK。

まずはいつもの中間一致。

■中間一致

SELECT * FROM table_name WHERE col_name LIKE '%str%';

この場合、文字列中のどこかに「str」が含まれているレコードが取得される。

■前方一致

SELECT * FROM table_name WHERE col_name LIKE 'str%';

対象文字列前の「%」をはずしてやることで「str」から始まるレコードを取得できる。

■後方一致

SELECT * FROM table_name WHERE col_name LIKE '%str';

上記の前方一致に習い、後方一致検索を行う場合は後ろの「%」をはずしてやればよい。これで「str」で終わるレコードを取得できる。

 

【jQuery】指定した要素の中身を空にする。

めも。

remove()だとその要素ごと消し去ってしまうので、子要素のみを空っぽにしたい場合はempty()を用いる。

以下例。

■HTML

<div class="target">hogehogehogehogehogehoge<span>piyopiyopiyo</span></div>

■Javascript

$(function(){
	$('.target').empty();
});

これで外側のdiv要素は残り中身だけを空にする事が出来る。

 

【MySQL】重複行を除いてリストを作成する。

DISTINCT文を用いる。

SELECT DISTINCT [列名], [列名], [列名], ... FROM [テーブル名] WHERE ... ORDER BY ... LIMIT ...

例。

SELECT DISTINCT category FROM items WHERE 1

※上記は重複無しでカテゴリーを全て取得するSQLの例