2009年5月アーカイブ

ブラウザからのデバック中とかに、うっかり無限ループさせてCPUがフル回転に
なっちゃったときとか、Fedoraのシステムモニタ(Windowsでいう
タスクマネージャ?)で止めたいプロセスIDを探したくても、apacheユーザーで
動かしたプロセスは、1ユーザーでログインしてる場合は表示されない。
(rootでログインしないと表示されない)

そんなとき、てっとりばやく騒音をおさえたいのでメモ。


コマンドラインからSUになり、

--------------------------------------------------------
#top
--------------------------------------------------------

コマンドを実行すると、実行中のプロセスIDなどがCPU負荷の高い順に表示されるので、
停止させたいプロセスIDを見つけて、

--------------------------------------------------------
#kill -9 プロセスID
--------------------------------------------------------


これが一番早いかな。

自分がapacheのグループに入ってればシステムモニタで確認できるのかな?
まだ試してないけど。
よく使うのだが、なぜか忘れやすいのでメモ。


<html>
<head>
<script type="text/javascript">
 var count;
 function BoxChecked(check){
  for(count = 0; count < document.form1.checked_user.length; count++){
   document.form1.checked_user[count].checked = check;
  }
}
</script>
</head>
<body>
<form name='form1' action='' method='post'>

全てチェックを
<input type='button' onClick='BoxChecked(true);' value='入れる'>
<input type='button' onClick='BoxChecked(false);' value='外す'>

<input type='checkbox' name='checked_user' value='1'>
<input type='checkbox' name='checked_user' value='2'>
    ・
    ・
    ・

</form>
</body>
</html>
これに関していいものはないかと探していたら、素晴らしいスクリプトを
見つけた。
とても便利なのでかなりブックマークされてるようだ。

→ http://painter.mypets.ws/~raelian/tag/enclose.html

ボタンを押すだけで、テキストエリアのカーソルの位置に任意の文字が、ポンと
挿入できるスグレモノ。


さっそくMIlkyStepにも取り入れようということで・・・イタダキ。

基本的にHTMLタグとかスタイルシートとか編集する目的なので、文字をドラッグして
反転した場合は、実行すると、選択した文字列の前後でタグで挟むような仕様に
なっている。

これを、選択した文字を残さずに、挿入文字にそのまま置き換えるには、
「textarea.js」61行目あたりの、

el.value=click_s + s + click_m + e + click_e; を、
     ↓
el.value=click_s + s + e + click_e;

とすることで対応可能。


また、タグで挟むんじゃなくて、ただ単にある文字だけを挿入したい場合、
ボタンの要素指定時に、

<input type='button name='insbtn' value='挿入' onclick=\"enclose('hogehoge','');return false;\">

などとして、関数に渡す第2引数を空にしてやればOK。

第2引数を指定しないと、undefinedが返されるので注意。
メルマガ配信した累計秒数を管理画面で参照したりするのに、秒数をhh:mm:ss形式に
したいなーということで・・・

例えば、

10  → 00:00:10
60  → 00:01:00
3601  → 01:00:01

みたいな感じ。

これをスクリプト側で操作するとなると、累計秒をローカルタイム形式に直して
sprintfとかで整形してだらだらだら・・・

と、意外とけっこう面倒くさかったり無駄なメモリを消費したり、なんか効率悪い。
てゆーか、こういう処理はなるべく書きたくないし。

そう思って、ググってたら、目的を一発で達成できるなんとも便利なSQL文を
発見。

------------------------------------------------------------------

「SEC_TO_TIME( 秒数 )」

------------------------------------------------------------------

これで、秒数を勝手にhh:mm:ss形式に変換してくれる。


SELECT SEC_TO_TIME(秒数)

で変換&参照できるが、DBから参照するんであれば、最初から
データ型をTIMEにしておき、

※$timeには秒数を格納

INSERT INTO table VALUES('SEC_TO_TOME($time)')

とかで、あらかじめhh:mm:ss形式でデータをぶち込んでおいてやれば、
インタフェイスが変わったときも便利。


あらためて、データベースって素晴らしいと思った次第。


ちなみにこれの逆は、

TIME_TO_SEC( hh:mm:ss )で、

TIME_TO_SEC(01:00:01) は、 3601 となる。
こういった場合、今まで

-------------------------------------------------
##直後に"mogemoge"含まない文字列にマッチ

$str =~ /hogehoge[^(mogemoge)]/;

-------------------------------------------------

これでいけたような気がしたんだが、久々に同じような処理を書いてみたら
これではダメだった。

前回はなんでうまくいったのか分からないが、クラスのマッチはやはり
一文字分しか指定できないらしいので、セオリーどおり、否定先読みを使う。


-------------------------------------------------
##直後に"mogemoge"含まない文字列にマッチ

$str =~ /hogehoge(?!mogemoge)/;



##"mogemoge"の部分はさらに正規表現を使ったり、変数を使ったりもできる

my $later = "moge";

$str1 = "hogehoge";
$str2 = "hogehogemogemoge";

$str1 =~ s/hogehoge(?!($later){1,})/oeoe/;
$str2 =~ s/hogehoge(?!($later){1,})/oeoe/;

print $str1."
".$str2;


結果:
hogehogeoeoe
hogehogemogemoge
-------------------------------------------------

逆に、特定の文字列を後方に含む場合は

(?!mogemoge) を (?=mogemoge)

にかればいいだけ。

このアーカイブについて

このページには、2009年5月に書かれたブログ記事が新しい順に公開されています。

前のアーカイブは2009年4月です。

次のアーカイブは2009年6月です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

ウェブページ

Powered by Movable Type 4.22-ja