以下の内容はhttp://sonic64.com//2003-06-06.htmlより取得しました。


Landscape トップページ | < 前の日 2003-06-05 2003-06-06 次の日 2003-06-07 >

Landscape - エンジニアのメモ 2003-06-06

* ファイルの内容が変わっていなかったらスクリプトを実行しない

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [シェルスクリプト]

ChangeLog の md5 をチェックし、変わっていなかったら exit するようにした。
2003-05-26 に書いた、/home/hiroaki/backup/changelog が変化のない同じファイルで溢れるという事態もこれで解決するだろう。

# compare previous log with current log
LOG_HASH=`/usr/bin/md5sum $LOG_PATH |perl -na -e 'print @F[0]'`
PREVIOUS_LOG_HASH=`/usr/bin/md5sum $PREVIOUS_LOG_PATH |perl -na -e 'print @F[0]'`
if [ $LOG_HASH == $PREVIOUS_LOG_HASH ]; then
  exit 1
fi


* 実行時間が100000分を超えたプロセスは top でどう表示されるのか

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [Linux]

- sonic で動かしている seti が、いつの間にか CPU 時間100000分を超えたようだ。

以前は分単位だった実行時間表示が、時間単位になっていた。
99999時間を超えると、日単位になるのだろうか?
99999日を超えると、月単位になるのだろうか?
99999月を超えると、(以下略)。
ソースを見ればどう表示されるのかなんて丸わかりだが、それじゃあ野暮だ。

$ date
Fri Jun  6 14:16:43 JST 2003

$ top
  2:16pm  up 83 days, 19:37,  1 user,  load average: 1.00, 1.00, 1.00
34 processes: 32 sleeping, 2 running, 0 zombie, 0 stopped
CPU states:  0.8% user,  6.0% system, 93.0% nice,  0.0% idle
Mem:    65128K av,  61080K used,    4048K free,      0K shrd,  10604K buff
Swap:  257032K av,    1644K used,  255388K free                  17960K cached

  PID USER    PRI  NI PAGEIN  SIZE SWAP  RSS SHARE LC STAT %CPU %MEM  TIME COMMAND
7747 hiroaki  20  19 115933 15816  40  15M  404  0 R N  86.0 24.2  1677h setiathome

$ ps -auxww |grep seti
hiroaki  7747 95.5 24.2 17388 15776 ?      RN  Mar25 100513:53 /home/hiroaki/dist/setiathome-3.03.i386-pc-linux-gnu-gnulibc2.1/setiathome -proxy 172.16.4.1:17241

* UPSERT / MERGE するトリガ MS SQL Server 2000版

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [SQL] [MS SQL Server]

2003-06-03 のトリガは、もっと簡潔に書けることに気づいた。環境は MS SQL Server 2000。

- 冗長版

GO
DROP TRIGGER log_transaction_ao;
GO
CREATE TRIGGER log_transaction_ao ON users FOR INSERT, UPDATE AS
BEGIN
  INSERT INTO users_log SELECT * FROM inserted
  IF (SELECT COUNT(*) FROM inserted WHERE commit_master = 1) > 0 BEGIN
    DECLARE @user_cd VARCHAR(5)
    SELECT @user_cd = user_cd FROM deleted
    IF (@user_cd IS NOT NULL)  BEGIN
      DELETE FROM user_master WHERE user_cd = @user_cd
    END
    INSERT INTO user_master SELECT * FROM inserted
  END
END

- 簡潔版

GO
DROP TRIGGER log_transaction_users;
GO
CREATE TRIGGER log_transaction_users ON ao FOR INSERT, UPDATE AS
BEGIN
  INSERT INTO user_log SELECT * FROM inserted
  IF (SELECT COUNT(*) FROM inserted WHERE commit_master = 1) > 0 BEGIN
    DELETE FROM user_master WHERE user_cd IN (SELECT user_cd FROM deleted)
    INSERT INTO user_master SELECT * FROM inserted
  END
END



以上の内容はhttp://sonic64.com//2003-06-06.htmlより取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14