2008年11月18日火曜日

jQueryでSelectの表示を変えるプラグイン



元ネタは、こちらを参考にさせていただきました。



プルダウンで都道府県などを入力(選択)するイライラを解消するPrefSupport.js


http://moto-mono.net/2008/07/19/prefsupport.html



プルダウンでたくさんの選択肢を表示するときに、スクロールバーがでてしまうのは


どうも、不恰好だなぁと思ったことのあるかたなら、利用してみてください。


デモ


JQueryでselectタグのプルダウンをカスタマイズする demo


ダウンロード


jquery.cs.js


利用には、jQueryが必要です。


追記(2009/11/20):jQuery-1.3.2 に対応いたしました。








特に、デザイン的に配慮はあまりしていませんので、シックで無骨な感じが気になる方は


素敵なデザインでサンプルを作ってもらえるとうれしいです。


プログラム的に、いろいろ悩んだところは


select タグをクリックすると、デフォルトのプルダウンが即座に出てしまうのを


Javascriptでどうやって制御するのかに苦労しました。


ブラウザごとに、プルダウン表示のタイミングが違うみたいで最終的に



1 mousedown event 取得
2 focus 実行
3 select disabled 属性 ture
4 blur 実行
5 event stop 実行


この順番で、処理をすると、意図した通りになりました。


(IE6,IE7,FF3,GC)


この辺は、ソースを見てもらえればわかると思います。


また、もっと上手な方法があるよーって方は、教えてもらえるとうれしいです。





2008年11月7日金曜日

MySQL の Out of memoryで悩む



mysql で、最近たまにエラーログに以下のような Out of memory が出ていた。


サーバは、メモリーを 6G 積んでるので Out of memory ってのが


そんなに簡単にでるとは思ってなかったので困惑してしまった。


(半年前までは、1G で、増強したばっかりだったので。。。)


今回の環境


MySQL-server-5.0.51a-tritonn.1.0.9


CentOS5.2


すべてのクエリーに対して出ているわけではなく、たまに出るって感じ。


毎秒100件程度のクエリーに対して、1日で10~20件程度、時間帯も混んでる時間帯のような気がするが


それほどでもないときもたまに出ていた。




081106 12:12:05 [ERROR] /usr/sbin/mysqld: Out of memory (Needed 2091016 bytes)



いろいろ調べてみたのだが、これといってぴったりの情報もなし。


海外のコミュニティーで同様の質問している人は見つけたけど、


読み進めても、英語なもんでどういう風に話が進んだのか詳細はわからず。


http://forum.mysqlperformanceblog.com/s/mv/tree/577/


クライアント側でメモリーがたらないかもとか、mysql の本家にはあったけど


どうもそういうわけではない。。。


http://dev.mysql.com/doc/refman/5.1/ja/out-of-memory.html


MySqlユーザMLのほうで、スレッドごとにメモリを消費する、sort_buffer_size あたりを


小さくすれば解決したらしい内容があったので試してみる


(ちょっと内容は古いし、バージョンも異なるけど)


http://www.mysql.gr.jp/mysqlml/mysql/msg/14193




myisam_sort_buffer_size=64M <- 128M
sort_buffer_size=2M <- 8M



とりあえずは、エラーログはでなくなったんだけど、


これでよかったのかな。何か間違った解決をした気がしてならない。


(行き当たりばったりだな、ホンと)


スレッドで使用するメモリー量 × 同時接続スレッド数=メモリ消費量


ってのは、わかるんだけど オーバーしたら即 Out of memory ってのもなんだかなぁ。


古いメモリーを自動的に解放したりしないのかなぁ。GC的なものは期待しすぎ?


ちょっとこの辺の仕組みにうといです。勉強不足ですみません。


まぁどのクエリーのときに、Out of memory がでるのかトレースできたら


一番よかったんだけど、毎秒 100 件近く走ってるクエリーを時間もばらばらなものを特定するのは


至難の業だなぁーっと。。。ものぐさな考えで、あきらめていました。


MySQLのパラメータの設定は、1からちゃんと勉強しなおした方がよさそうだなぁ。