このサイトについて

このサイトはHajime Miyauchiが運営する、PC関係の話題を扱う個人サイトです。

  • 氏名
    • Hajime Miyauchi
    • 宮内 はじめ
  • 生年
    • 1981年
  • 性別
  • 所有PC
    • NEC PC-8801mkII
    • NEC PC-8801mkIISR
    • NEC PC-8801mkIIMR
    • NEC PC-8801mkIIMH
    • DELL Insipiron 4100
    • 自作デスクトップ
    • IBM ThinkPad X31(メインマシン)
  • 職業
    • システムエンジニア
  • 使える言語
    • C
    • C++
    • perl
    • PHP
    • BASIC(VB, BHT-BASIC, N88-BASIC)
    • SQL
    • ECMAScript
    • ...
  • 使えるOS
    • Windows(メイン)
    • Linux(RedHatがメイン)
  • このドメインを運用しているサーバについて(~2010)
    • プロバイダー
      • ASAHIネット
    • サーバーマシン
      • ASUS Terminator P4 533A
    • サーバーソフトウェア
      • Debian GNU/Linux
      • Apache HTTP Server
      • PHP
      • ...
  • このドメインを運用しているサーバについて(2011~)
    • さくらのVPS 512

連絡先

画像の説明

最終更新時刻: 2016年05月20日

Logwatchでメールの送信元を設定する

RHEL/CentOSの4.xか5.xかでLogwatchのバージョンが異なり、送信元の変更方法が異なる。

5.xは設定ファイルの変更で可能。

4.xのLogwatchでは設定で変更できないため、スクリプトを変更する必要がある。

5.xの場合。設定ファイルに下記を追記するだけ。

# /etc/logwatch/conf/logwatch.conf に追記
MailTo = root@example.com
mailer = "sendmail -t -f root@example.com"

テストするには下記のようにコマンドを発行する。

# /etc/cron.daily/0logwatch

もし、何も送られない場合は送られなる内容を表示してみる(--print)。範囲も全部(--range all)で。

もしかしたら送信すべき内容が無いため送られていないかもしれない為。

# /etc/cron.daily/0logwatch --range all --print

4.xの場合。まず設定ファイルを書き換える。

# mailer = /bin/mail <-- コメントアウト
mailer = "sendmail -t -f root@example.com"
MailFrom = root@example.com

次にスクリプトを書き換える。スクリプトのバージョンによっては変更箇所が微妙に異なるため注意。下記はLogwatch 5.2.2 (released 06/23/04)での変更箇所。

$ diff 00-logwatch /etc/cron.daily/00-logwatch
679c679,689
<          open(OUTFILE,"|$Config{'mailer'} -s \"LogWatch for $Config{'hostname'}\" " . $Config{'mailto'}) or die "Can't execute /bin/mail\n";
---
>          #open(OUTFILE,"|$Config{'mailer'} -s \"LogWatch for $Config{'hostname'}\" " . $Config{'mailto'}) or die "Can't execute /bin/mail\n";
>
>          open(OUTFILE,"|$Config{'mailer'}") or die "Can't execute /bin/mail\n";
>
>          print OUTFILE "From: $Config{'mailfrom'}\n";
>          print OUTFILE "To: $Config{'mailto'}\n";
>          print OUTFILE "Subject: LogWatch for $Config{'hostname'}\n\n";
>          if (($Config{'splithosts'} eq 1) && ($Config{'multiemail'} eq 0)) {
>             print OUTFILE "Reporting on hosts: @hosts\n";
>          }
最終更新時刻: 2011年06月09日

tDiaryのデータをtDiary+BlogKitに変換した

旧ブログはtDiary。新ブログはtDiary+BlogKit。

データがtDiaryは日単位、tDiary+BlogKitは記事単位になっている。

日単位のデータはもう分割することなくそのまま複数記事まとめて1記事とすることにした。

タイトルは、記事内のタイトルを/で繋げたものにすることにした。

1日=1記事の場合は記事中のタイトルを削除した。

最終更新時刻: 2011年06月09日

tDiaryのデータをtDiary+BlogKitに変換するPHPスクリプト

昼休み中にでっちあげた。

<?php

// tDiaryのデータ(*.td2)をtDiary+BlogKitに変換します
// Wikiスタイルにしか対応してません。

// 入力ディレクトリと出力ディレクトリ。環境によって書き換えて使ってください。
// 出力ディレクトリは空のディレクトリ作っておいてください。
$input_dir = dirname(__FILE__) . 'data/';
$output_dir = dirname(__FILE__) . 'output/';

ini_set('pcre.backtrack_limit', '9999999');
ini_set('pcre_recursion_limit', '9999999');

function convert($file, $dir)
{
	$td2 = file_get_contents($file);

	$days = preg_split('/\n\n\./s', $td2);

	array_pop($days);

	$output = '';

	foreach($days as $day){
		list($head, $body) = preg_split('/\n\n/', $day, 2);

		preg_match_all('/^![^!].*$/m', $body, $titles);

		for($i = 0; $i < count($titles[0]); $i++){
			$titles[0][$i] = trim(substr($titles[0][$i], 1));
		}

		$title = implode(' / ', $titles[0]) . "\n";

		$head = preg_replace('/^title:.*\n/mi', 'Title: ' . $title, $head . "\n");

		if(count($titles[0]) === 1){
			$body = preg_replace('/^![^!].*$/m', '', $body);
		}

		$output .= $head . "\n" . $body . "\n\n.";
	}

	$yyyy = substr(basename($file), 0, 4);

	if(!file_exists($dir . '/' . $yyyy)){
		mkdir($dir . '/' . $yyyy);
		echo ($dir . '/' . $yyyy) . "\n";
	}

	file_put_contents($dir . '/' . $yyyy . '/' . substr(basename($file), 0, 6) . '.td2', $output);
}

foreach(glob($input_dir . '/*') as $file){
	$file = realpath($file);

	if(!is_dir($file)){
		continue;
	}

	if(preg_match('/^[0-9]{4}$/', basename($file)) === 0){
		continue;
	}

	foreach(glob($file . '/*.td2') as $td2_file){
		convert($td2_file, $output_dir);
	}
}
最終更新時刻: 2011年06月09日

システムを使う/作るときに忘れてはいけないたった一つの原則

システムを使うときに忘れてはいけないたった一つの原則。

ポケットひとつの原則。

システムを作るときに忘れてはいけないたった一つの原則。

KISSの原則。

Read more...

最終更新時刻: 2011年06月10日

URLをwwwあり/なしに統一させる

via http://www.suzukikenichi.com/blog/integrating-www-and-non-www-by-301-redirect/

wwwありに統一する場合

Options +FollowSymLinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^sample\.com
RewriteRule ^(.*)$ http://www.sample.com/$1 [R=301,L]

wwwなしに統一する場合

Options +FollowSymLinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www.sample\.com
RewriteRule ^(.*)$ http://sample.com/$1 [R=301,L]

Redirect使ってシンプルにやればいいと思ってたけど、調べてみるとmod_rewrite使ったやり方が多かったのでそれに倣って設定した。

最終更新時刻: 2011年06月23日

データベースのキーの種類

キーについて整理。

  • 候補キー(candidate key)は「主キーになりうるキー」
  • 外部キーは「他のテーブルの主キーを参照するキー」
  • 複合キーは「複数の列からなる主キー」
  • 代理キー(alternate key)は「主キーに選ばれなかった候補キー」
  • 代替キー(surrogate key)は「連番のように一意性を確保するためにシステムから与えられたキー」

参考

最終更新時刻: 2011年06月23日

2相ロック

2相ロックについて、下記ページがわかりやすかった。

http://www.geocities.jp/sugachan1973/doc/funto60.html

上記ページで参考にされている、下記書籍も良さそう。

RDBMS解剖学 よくわかるリレーショナルデータベースの仕組み (DB Magazine SELECTION)(鈴木 幸市/藤塚 勤也)

最終更新時刻: 2011年06月23日