月: 2011年5月

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導入

猫カフェ ときわ屋へ行ってきた。

会社の同僚に教えてもらった浜北に新しく出来た猫カフェに行ってきた。

手を消毒してから中に入るとすぐに猫が寄ってきてびっくり。

全部で10匹くらいいたきがする。

猫の写真を撮ろうとカメラを構えていたら黒猫がひざに乗ってきたりした。
他の猫カフェでは人に触られすぎたのか猫が全然寄ってこないとか聞いたけど
ここは全然違う。猫がかなり人懐っこい。

子猫も2匹いた。今の時期は子猫がいるらしい。

以下猫達の写真。

子猫の反応がすごくいい。

もっと読む 猫カフェ ときわ屋へ行ってきた。

Galaxy s ファームウェアアップデート完了

数ヶ月前にもアップデートを試すも失敗し、以後ずっと放置していました。

沢山の人がアップデートでつまずいているみたい。。

アップデートできない! むかつく!

docomo GALAXY S SC-02Bのソフトウェアアップデート

色々調べると自分の場合は64bit版Windowsだからっぽい↓↓↓

バックアップまではできても、直後に接続が切れて再接続…の無限ループだったんだが、
113に電話して聞いたら、64bitのWindows7だとファームウェアアップデートができないらしい。
そういう回答がすぐ出てくるのなら、HPでそう書いといてほしいよ。

docomo Galaxy S (SC-02B) part 70

家にある32bit Vistaで再挑戦したら時間はかかったけどできた。

アップデートがこんなに難しいとか・・・。

MySQL GROUP_CONCAT関数

いつも思い出せなくて困るやつ。

GROUP_CONCAT関数

この関数は、グループからの連結された非 NULL 値を伴うストリング結果を戻します。
非 NULL 値がない場合は NULL を戻します。

GROUP BY ( 集約 ) 関数

こことか

[mysql]group_concat 問い合わせ結果を配列化

GROUP_CONCAT関数の便利さは異常

1対多の関係を持つテーブルで主キーで検索した時に結果が複数行になることは

かなり頻繁にあります。そのとき「GROUP_CONCAT」関数を使うと複数行の結果のうち

特定の列の値をカンマ区切りで一つの列にまとめることができる。

例はここがわかりやすいかも。

MySQL 1対他のデータをGROUP_CONCATで取得

便利なのでメモ。

 

GDとImageMagickでリサイズ時の画質の比較

CodeIgniter1.7.3の画像操作クラス「image_lib」でgd2を使って画像をリサイズしてましたが、
なんか元画像と較べると色が少し変と言われてので調査。

qualityを100にしても少し色が違うと・・・。

少し調べると以下のようなサイトが・・・。

GDとImageMagickの画質比較(Asial blog)
GDとImageMagick比較(プログラミングを始める10の理由)

ImageMagickのほうが画質はいいんですね。

で、image_libではGD/GD2、NetPBM、および ImageMagickに対応しているようなので
ImageMagickに変更してみた。

※以下メモ。処理は少し省いています。ファイルアップロード部分とか。

$data = $this->CI->upload->data();

$this->CI->load->library('image_lib');
$config = array();
$config['image_library'] = 'imagemagick';
$config['library_path'] = '/usr/local/bin/convert';
$config['source_image'] = $data['full_path'];
$config['maintain_ratio'] = TRUE;
$config['quality'] = 100;
$config['master_dim'] = 'auto';
$config['new_image'] = $data['file_path'] . $data['raw_name'] . "-" . $size . $data['file_ext'];

$setting = $this->CI->config->item('resize');

if($data['image_width'] >= $data['image_height']) {
    $config['width'] = 400;
    $config['height'] = 240;
} else {
    $config['width'] = 240;
    $config['height'] = 400;
}

$this->CI->image_lib->initialize($config);
$this->CI->image_lib->resize();
$this->CI->image_lib->clear();

だいたい上記の用な感じでリサイズしたら元画像と比較しても遜色の無い
綺麗な画像ができました。

※ちなみに上がgd2下がimagemagickです。

わかりずらいけどimagemagickのほうが背景色がより白く元画像に近い。。

ブログだとおなじみ見えるかも。。

CodeIgniter xss_cleanの謎

ぺらたんからのタレコミ。

CodeIgniterの1.7.3や2系でxss_cleanの挙動が不思議らしい。

例えば「EPA&DHA」の文字列をxss_cleanにかけると「EPA&DHA;」となるらしい。

xss_cleanの該当箇所を抜き出して試してみた。

<?php
$str = 'EPA&DHA';

$hash = '901119URL5918AMP18930PROTECT8198';

$str = preg_replace('|\&([a-z\_0-9]+)\=([a-z\_0-9]+)|i', $hash."\\1=\\2", $str);
echo $str . "\n";

$str = preg_replace('#(&\#?[0-9a-z]{2,})([\x00-\x20])*;?#i', "\\1;\\2", $str);
echo $str . "\n";

$str = preg_replace('#(&\#x?)([0-9A-F]+);?#i',"\\1\\2;",$str);
echo $str . "\n";

$str = str_replace($hash, '&', $str);
echo $str . "\n";

$str = rawurldecode($str);
echo $str . "\n";

実行結果

$ php ci_xss_test.php
EPA&DHA
EPA&DHA;
EPA&DHA;
EPA&DHA;
EPA&DHA;
$str = preg_replace('#(&\#?[0-9a-z]{2,})([\x00-\x20])*;?#i', "\\1;\\2", $str);

ここが原因みたい。
&のあと2文字以上なら「;」挿し込む?
ちょっと意味が分かっていない・・・。

そもそもxss対策を全部自前でやってるのはどうなのかな?

ちょっとぐぐってみたら

CodeIgniterのGlobal XSS Filteringには要注意?

CodeIgniter XSS対策

とか出てきた。

あんまり使わないほうがいいのかなー。

 

 

30分で英語が話せる 読了。

30分で英語が話せる

30分で英語が話せる

posted with amazlet at 11.05.23
クリス 岡崎
ダイヤモンド社
売り上げランキング: 13

ここのサイトで見たのと、タイトルに釣られて購入。

1時間以内で読み終わる。

目次

【第1章】あなたの知っている「700語」で英語が話せる
【第2章】「6つの発音」を直すだけで英語が通じる
【第3章】文法で大切なのは「1つ」だけ
【第4章】楽しみながら英語を学ぶ方法
【第5章】最新の「700語」をチェックしよう

この本のコンセプトは↓これ

正しさも大事だけれど、正しい英語にこだわって、結局、話せないよりは、
ちょっとくらい正しくなくても、30分で英語が話せるようになっちゃったほうがいい!

文法的な正しさを求めない勇気を!!!!

勇気がもらえる1冊。

Hello! Can you help me?
Just few minutes.
I need to speak to English native speaker today,
as my homework from my English school.

「たった6つの発音で英語が話せる」音声