jQuery チェックボックスの値復元

仕事でcheckboxの値を復元する必要があったのでjQueryでやってみた。

とりあえずコード

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script type="text/javascript">
$(function(){
    var tags = ['1', '2', '3']; // 復元する値の例
    $('#main :checkbox').each(function(){
        if($.inArray($(this).val(), tags) > -1){
            $(this).attr("checked", "checked");
        }
    });

});
</script>

HTML部分(大体こんな感じ)

<div id="main">
    <input type="checkbox" name="sample" value="1" />hoge
    <input type="checkbox" name="sample" value="2" />moge
    <input type="checkbox" name="sample" value="3" />fuga
    <input type="checkbox" name="sample" value="4" />fuzz
    <input type="checkbox" name="sample" value="5" />buzz
</div>

この場合だと「hoge」、「moge」、「fuga」にチェックが入る想定。

$(‘#main :checkbox’)でcheckboxをさらって一つずつeachで処理。
その際順番に処理されるcheckboxの値がtags配列(復元対象)中に
あるかどうかを$.inArray($(this).val(), tags)でチェックし、「-1」(存在しない)
以外であれば復元するという感じ。

とりあえずできたけどこれがいいのかどうか・・・。

参考URL
■[jquery]チェックボックスのチェックを反転させるボタン

PHP:array_intersect 配列の共通項を計算する

毎回思い出せなくなる関数。

array_intersect

2つの配列の共通項を取り出すことができる。

別の言い方をすると2つの配列の重複箇所を取り出すことができる関数。

intersectはこいう意味

intersect
【名】
交差、横断
【自他動】
交差する、交わる、横切る、横断する

マニュアルに記載されている例はこれ

<?php
$array1 = array("a" => "green", "red", "blue");
$array2 = array("b" => "green", "yellow", "red");
$result = array_intersect($array1, $array2);
print_r($result);
?>

実行結果

Array
(
    [a] => green
    [0] => red
)

注意: 二つの要素は、 (string) $elem1 === (string) $elem2 の場合のみ等しいとみなされます。言い換えると、文字列表現が同じ場合となります。

上記のような簡単な例だけでなく、入れ子になった配列でも使う事ができる。
※注意にもあるように文字列表現が同じ事が前提。

大文字・小文字は区別されます。

その他intersect関係

array_intersect_assoc
追加された添字の確認も含めて配列の共通項を確認する

array_intersect_key
キーを基準にして配列の共通項を計算する

array_intersect_uassoc
追加された添字の確認も含め、コールバック関数を用いて 配列の共通項を確認する

array_intersect_ukey
キーを基準にし、コールバック関数を用いて 配列の共通項を計算する

Lightbox 2導入した。

Web活メモ帳で紹介されていたLightbox 2を導入してみた。

インストールは普通に「プラグイン」⇒「新規追加」で「Lightbox2」で検索して

見つかったらインストールして、有効にするだけ。

このブログのテンプレートの場合は何もしなくても以下のような表示に勝手に

なりました。

1エントリーに複数画像がある場合は画像の上にマウスを乗せるとちゃんと

Nextが表示されます。

導入の簡単と実際の使い勝手のよさがとても優れているプラグインだと思います。

 

今日は以前の同僚と飲みに行ったのでこのくらいで。。

PHP5 fgetcsv 日本語文字が消える場合

2019/1/16 追記 現在は以下の記事を参照してください。

PHP「fgetcsvはsetlocaleしないと日本語が読めない」は迷信なのか?


PHP5 で fgetcsvを使ってマルチバイト文字列を読込む際に
日本語が消える、もしくは一部消える現象が起きるのでその対策。

fgetcsvの使い方はここに書いてあります。

fgetcsv — ファイルポインタから行を取得し、CSVフィールドを処理する

注意点

この関数はロケール設定を考慮します。もし LANG が例えば en_US.UTF-8 の場合、 ファイル中
の 1 バイトエンコーディングは間違って読み込まれます。

wonder on server sideにも書いてます。
csvファイルを読み込む

もっと読む PHP5 fgetcsv 日本語文字が消える場合

スイートポテト

嫁さんが何にも無い日にお菓子を作ってくれたので記念に。

裏ごしする道具がないのでゴロゴロな感じで。

おいしかった。

MySQL: SHOW PROCESSLIST まとめてプロセス消す

CIのトランザクションがこけてロックがかかったときに
自分のMySQLのプロセスだけを一気に消したくなったので調べた。

ちょっぴり上行く SHOW PROCESSLIST の使い方

↑ここに詳しく書かれている。

SHOW PROCESSLIST;

↑が↓と同じ意味ということなので

SELECT * FROM information_schema.PROCESSLIST;

自分の場合はこんな感じで。

> SELECT group_concat(id) FROM information_schema.PROCESSLIST WHERE User='name';
+--------------------------------------------------------------+
| group_concat(id)                                             |
+--------------------------------------------------------------+
| 508,506,503,502,500,400,399,398,397,372,299,297,279,261,66,2 |
+--------------------------------------------------------------+
1 row in set (0.00 sec)

ワンライナーで消すのにビビったので以下の方法で。
※この方法にする為にgroup_concat()使ったという・・・。

$ mysqladmin kill 508,506,503,502,500,400,399,398,397,372,299,297,279,261,2 -u name -p

参考
プロセスを強制的に停止する(mysqladmin)

Linux: Monit導入

Monitとは?

Monit とは、プロセスを監視して、 なにか問題があったときに再起動などを行ってくれる、便利なユーティリティです。

 

便利そうなのでいれてみる。

CentOS5.3はrpmforgeを見ないとmonitが無いようなので一度確認する。

# yum search --enablerepo=rpmforge monit
・・・
monit.x86_64 : Process monitor and restart utility
・・・

もっと読む Linux: Monit導入