思い立ってバージョンしました。
セキュリティ面で問題があるというわけではなかったのと、自分で好き勝手にカスタマイズしているので、手間を惜しんで更新していなかったのです。
こういった作業の時に diff は便利ですね。
ところで chalow 1.0 rc6 が出たのが 2005-08-21 ということなので、2年近く前の更新を今更やったわけですが、一番最初のエントリ(当時は非公開)が [2004-08-27] だという事実に驚きです..
光陰矢の如し。
これからもマイペースに続けるつもりなので、末永くよろしくお願いします。
Windows の ProductKey を調べる
Windows Product Key Viewer(サイト2, サイト3)
自分が使っている Windows OS (95、98、ME、NT、2000、2003、XP)のプロダクトキー等システム情報を閲覧することができます。
bind で設定が反映されない場合の原因と対策
– named.conf の場所が違う, または権限が不足している
named の起動オプションで
named -c /etc/named/named.conf
のように -c で設定ファイルへのパスを指定してみましょう。
– 名前解決で自分を見ていない
> nslookup example.com 127.0.0.1
または
> dig @127.0.0.1 example.com
でDNSサーバを明示してみます。
これで解決できるなら、解決先が正しくない可能性が高いです。
たとえば UNIX 系なら /etc/resolv.conf で
> nameserver 127.0.0.1
のように解決先を指定していない可能性があります。
– 設定ファイルの文法が間違っている
文法が間違っていると、黙ってその設定ファイルを無視します。
named.conf と zone ファイルの文法を次のコマンドでチェックしてみましょう。
named-checkconf <named.conf のパス>
named-checkzone <ゾーン名> <ゾーンファイルのパス>
具体的にはたとえば次のようにします。
named-checkconf /etc/named/named.conf
named-checkzone example.com /etc/named/example.com.zone
これを実行し、named-checkconf の場合何も表示されなければ、named-checkzone の場合最後に OK と出れば、そのファイルの文法は正しいということです。
文法が間違っている場合、エラーメッセージが出力されるので、それを元に正します。
– 設定ファイルの変更後、DNS をリロード/再起動していない
設定ファイルは、リロードまたは再起動しないと即時反映されません。
> /sbin/named.reload
などとして、明示的にリロードすることで直ちに反映されます。
参考:
– @IT:実用 BIND 9 で作る DNS サーバ
MySQL の公式 GUI 管理ツール
MySQL GUI Tools Downloads(MySQL AB)にある、MySQL Administrator が便利なのでお勧めです。
Windows 版 ver. 5.0-r10 の直ダウンロード
接続方法:
– インストール後、スタートメニューから MySQL -> MySQL Administrator を実行する
– Stored Connection の … をクリック
– 左の General Options を選択(パスワードを保存したくない場合これは不要)
– Store Passwords にチェック
– Password storage method を Obscured にしておく
– Apply ボタンをクリックして設定を保存
– 左の Connections をクリックして戻る
– 下の new Connection ボタン
Connection: 分かり易い名前(例: ユーザ名@ホスト名)
ユーザーネーム: ログイン名(例: foo)
パスワード: ログインパスワード(例: pass)
Hostname: 接続先ホスト名(例1: www.example.com , 例2: 192.168.0.10)
ポート: 3306
Schema: 接続先DB名
以下デフォルト。
– Apply ボタンで設定を保存、Close ボタンで閉じる
– Stored Connection のコンボボックスで、2で作った接続を選択
– OK ボタンで接続
接続後、カタログから、データベース(このツールでは Schema と呼ばれる)の操作や、テーブルの作成、編集ができます。
テーブルの中身を閲覧したい場合は、クエリブラウザを使うと便利です。
クエリブラウザを実行するには、MySQL Administrator の Tools メニューから MySQL Query Browser を選択します。
MySQL Query Browser の使い方は大体直感でわかると思いますが、上部のテキストエリアに
SELECT * FROM db1.footable;
のように SQL クエリをいれ、Execute ボタンを押せばクエリが実行され、かねやんMySQLAdmin などのように結果が一覧表示されます。
また、右の Schema からテーブルをドラッグ、上のテキストエリアにドロップすれば、そのテーブルの SELECT クエリが自動生成されます。
MySQL Administrator のその他の機能や使い方についてはこちらを参照してください。
【MySQLウォッチ】第6回 管理者向け新GUIツールMySQL Administratorを検証
CUI メーラーを使う
– ローカルにあるメールを読みたい
– メールサーバにあるメールを POPや IMAP 経由でいちいちダウンロードすることなく SSH でつないでそのまま読みたい
という場合に便利なのが、mutt というCUI メーラです。
日本語対応版パッチ, RPM はここからダウンロードできます。(FreeBSD の ports では mail/mutt)
利用の際はMutt Japanese Editionにある、日本語マニュアルが大変参考になります。
たとえば
mutt -f ./Maildir
とすれば、カレントディレクトリの Maildir を参照し、その中にあるメールの閲覧、削除、返信等ができます。
q:中止 d:削除 u:復活 s:保存 m:メール r:返信 g:全員に返信 ?:ヘルプ
1 May 31 **** project ( 0) [*****] 登録内容確認のお願い
2 Mar 21 Charlie Root ( 0) ClamAV Scanning Report
3 O Mar 21 Charlie Root ( 0) www.ecoop.net security updates
4 O Mar 21 Charlie Root ( 0) test
5 Mar 21 Cron Daemon ( 0) Cron <root@local> /root/sbin/task.sh
6 N Mar 21 ********* ( 0) <<重要>>「******」登録依頼用認証コード
7 N Mar 21 ********* ( 0) <<重要>>「*******」登録依頼用認証コード
8 N Mar 21 ********* ( 0) 「******」登録確認メール
-*-Mutt: postmaster [Msgs:8 3.0M]—(date/date)————————-(all)—
詳細はマニュアルに譲りますが、大まかな使い方は
– mutt -f /path/to/Mailbox でメールボックスを開き
– エンターで、指定メールを開く
– スペースでページを送る(最後尾の場合次のメールに切替え)
– メール表示中 q でメール一覧に戻る
– d で指定メールを削除
– メール一覧表示中 q で mutt 終了
です。ちなみに一覧で
– N とフラグが立っているのが新規メール
– O とフラグが立っているのは未読の古いメール
– D とフラグが立っているのは d キーで削除チェックをいれたメール(この状態でメーラを終了するとその時に削除されます)
– フラグの無いものは、既読メール
です。
pear コマンドで Smarty や phpMyAdmin をインストール
PHP の autoload を使ってみる
PHP5 からは、オブジェクト指向言語らしくクラスのオートローディングが可能になりました。
具体的には、明示的に require_once “foo.php” としなくても、
function __autoload($class){
include_once $class . “.php”;
}
としておけば、
$foo = new foo;
とした時に include_path から自動的に foo.php をインクルードしてくれる,というものです。
ただ、class_exists()はデフォルトで__autoload()を呼び出すらしいので __autoload() の実装は以下のような感じにするのがよさそうです。
function __autoload($class){
// 検索する拡張子一覧
$exts = array(“php”, “inc”, “class.inc”, “class.php”);
// 検索するディレクトリ一覧( “./” や “../” で始めると,その指定については include_path を見なくなるので注意 | PHP マニュアル include() 参照)
$dirs = array(“”, “include/”, “classes/”);
// include_path を検索し、存在すればそのファイルをインクルードする。
// 存在しなければ何もしない。
foreach($dirs as $dir){
foreach($exts as $ext){
$file = $dir . $class . “.” . $ext;
// echo “Debug: trying $file \n”;
if($fp = @fopen($file, “r”, 1)){
@fclose($fp);
require_once $file;
return;
}
// PEAR Style
$file = $dir . str_replace(“_”, “/”, $class) . “.” . $ext;
// echo “Debug: trying $file \n”;
if($fp = @fopen($file, “r”, 1)){
@fclose($fp);
require_once $file;
return;
}
}
}
}
MeCabのコンパイルでエラー
mecab-0.94 をインストールしようとしたところ、make で
no matching function for call to `basic_string,__default_alloc_template >::clear ()’
というエラーが出たので調べたところ
こちら(CJ?ごろうのひとりごとかも?)によると、GCC 2.X にはstring.clear() がないためにエラーになっているとのこと。
作業環境に GCC3.4 があり、ports でインストールしようとしていたので
cd /usr/ports/japanese/mecab
make USE_GCC=3.4
として無事解決しました。
XCache を使ってみた
前の記事に書いた、XCache を使ってみました。
例1:
if(!xcache_isset(“time”)){
xcache_set(“time”, “現在の時刻: “.date(“Y-m-d H:i:s”), 30); // 30 秒間キャッシュ. 数値を省略すると、おそらく php.ini の設定依存
}
echo xcache_get(“time”);
結果例:
現在の時刻: 2007-03-14 11:30:56
30秒未満でアクセスすると、キャッシュを参照するため常に同じ結果を返します。
30秒以上経過後にアクセスすると、新たに現在時刻をキャッシュ、表示します。
例2:
echo “count: ” . xcache_inc(“count”);
結果:
count: 1
数値は 1, 2, 3… と、アクセスする度に増加していきます。
手軽に扱え、管理ページもあるということでなかなか便利そうです。
ちなみに、php.ini の設定は大体以下のようにしました(xcache.admin.user, xcahe.admin.pass は要変更)。
[xcache-common]
zend_extension = /usr/local/lib/php/20060613/xcache.so
; extension = xcache.so
; extension = php_xcache.dll[xcache.admin]
xcache.admin.user = “admin”
xcache.admin.pass = “fded9601747e160c1dac9b7eb0ce4af9” ; md5($your_password)[xcache]
xcache.shm_scheme = “mmap”
xcache.size = 4M
; set to cpu count (cat /proc/cpuinfo |grep -c processor)
xcache.count = 1
xcache.slots = 8K
xcache.ttl = 600
xcache.var_ttl = 600
xcache.var_maxttl = 3600
xcache.var_size = 4M
; interval of gc scanning expired items, 0=no scan, other values is in seconds
xcache.gc_interval = 300
xcache.test = Off
xcache.readonly_protection = Off
xcache.mmap_path = “/dev/zero”
;xcache.mmap_path = “/tmp/xcache”
xcache.coredump_directory = “”
; per request settings
xcache.cacher = On
xcache.stat = On
xcache.optimizer = On
[xcache.coverager]
xcache.coverager = Off
cache.coveragedump_directory = “”
;xcache.coveragedump_directory = “/tmp/pcov/”
参考:
– XCache API
PHP5 とキャッシュまわり
PHP5 でメモリキャッシュをしようと思うと、選択肢は APC, eAccelerator, XCache のいずれかになるようです。
ちなみに、BSD の ports ではそれぞれ www/pecl-APC, www/eaccelerator, www/xcache が該当パッケージです。
参考:
– Do You PHP? – eAccelerator を導入してみる, XCache を導入してみる
– ZAPAブロ〜グ2.0 – XCache のインストールとphp用アクセラレータ比較
– XCache API