2008.01.31 Thu

USB メモリ vs ハードディスク ベンチマーク

USB メモリ vs ハードディスク ベンチマーク

ハードディスクに比べてUSBメモリの読み書きが非常に遅く感じます。どの程度遅いのかHDBENCHを使って図ってみました。

※テスト環境 USB2

Rectangle Text Ellipse BitBlt Read Write Copy Drive
0 0 0 0 15274 3952 300 U:\100MB
0 0 0 0 41984 46799 3546 C:\100MB

HDD に対して USBメモリは読込みは3倍遅く書き込みは15倍遅いということになりました・・・。

ベンチマークソフト

2008.01.30 Wed

Linux ファイルとディレクトリのコピー

Linuxコマンドでファイルとディレクトリをコピーする方法

ファイルのコピー

ファイルのコピー方法

cp コピー元 コピー先
cp sample_A.txt sample_B.txt

フォルダのコピー方法

cp -r コピー元 コピー先
cp -r sample_A sample_B

オプション機能

  •  -i -- interactive
    • コピーするファイルがコピー先のファイルを上書きする場合に確認メッセージが出されます。これはミスを防げるので便利なオプションです。
  •  -r -- recursive
    • ファイルおよびディレクトリをすべてコピーするだけでなく、ディレクトリツリー、サブディレクトリの全体を他の場所にコピーします。
  •  -v -- verbose
    • ファイルコピーの進行状況を表示します。
2008.01.30 Wed

Mysql テーブル内の重複レコードを抽出

テーブル内のデータで重複しているレコードを表示させるためのSQL


重複しているレコードを1行ずつ表示

SELECT * FROM テーブル GROUP BY 対象フィールド HAVING COUNT(*) > 1;

重複しているレコードを全行表示

SELECT * FROM テーブル
WHERE 対象フィールド in
(SELECT 列A FROM テーブル GROUP BY 対象フィールド HAVING COUNT(*) > 1);

2008.01.27 Sun

便利なソフトシリーズ Windowsソフト

@icon変換

画像からアイコン(favicon.ico)を簡単に作成できるソフト



ProFTPd Php/MySQL administrations tool

admin ProFTPDのユーザーおよびグループへの簡単なWEBベースの管理のユーティリティ

NetEnum

ネットワーク内PCのコンピュータ名とIPアドレスを一覧表示できるソフト

cronNT

Windows版 cron(UNIX風 タスクスケジューラ)

Webよ止まれ 〜EternalWeb〜

今見てるWebページをそのまま瞬間冷凍のように永遠に保存するソフト

Moonlight2

コマンドラインランチャー

PCサイト−>携帯変換

パソコン向けホームページのHTMLや画像などを、iモードなどの携帯電話端末向けに変換するPHPスクリプト

おまかせ確定申告2007(給与・年金所得者用)

税務署にそのまま提出できる確定申告書を作成するツール

2008.01.25 Fri

BeckyでHotmailを送受信 Hotmail Popper

BeckyでHotmailを送受信 Hotmail Popper

BeckyでどうにかHotmailを送受信できないかと探してたどり着いたのが、Hotmail Popper。
Beckyで問題なくメールの送受信ができたので、設定を記録。


Hotmail Popper

Hotmail Popperのインストール

1.無料版 Hotmail Popper ダウンロード

2.Hotmail Popperがタスクトレイに起動していることを確認

※特に設定を変える必要はありません。

Beckyの設定 新規メールボックスの作成



Beckyの設定 Hotmail Popper経由でHotmailを使う設定

メールアドレス : hotmail のメールアドレス
POP3サーバー : 127.0.0.1
SMTPサーバー : 127.0.0.1
ユーザーID : hotmail のメールアドレス
パスワード : hotmailのパスワード
受信メールをサーバーに残る : チェックを入れる

詳細タブでSMTP認証にチェックを入れてください。
チェックを入れないと送受信できません。

参考サイト

2008.01.25 Fri

PHPでエラーログが表示されない・記録されないときの対応

PHPのエラーをブラウザに表示、ログファイルに記録するための設定

エラーをブラウザに表示

# vi /etc/php.ini (※環境によって異なる)

error_reporting = E_ALL & ~E_NOTICE
display_errors = On

apacheを再起動する

# service httpd restart

これでエラーが発生した場合はブラウザ上に表示されるようになります。
運用時にエラーを表示するのはセキュリティーの面でも好ましくないので、display_errors を Off にして運用することをオススメします。

エラーをログに記録する

ブラウザにエラーを表示させずに運用を行うとどこでどんなエラーが発生しているのか確認できないため、ログファイルに記録するようにします。

# vi /etc/php.ini (※環境によって異なる)

display_errors = Off
log_errors = On
error_log = /usr/local/apache2/logs/php_erro.log

apacheを再起動する

# service httpd restart

これでブラウザにエラーを表示させず、指定したファイルにログが残るようになります。

参考サイト

2008.01.24 Thu

エックスサーバーでPHPにて文字化けせずにメール送信する設定

PHPよりメール送信処理を行ったときに文字化けが発生することがあります。
実際に文字化けが発生してしまったエックスサーバーでの対応方法の記録

環境

  • エックスサーバー
  • PHP文字コードSJIS
  • 他のサーバーでは正常に動くがエックスサーバーだと文字化けしてしまう場合

PHP 設定の変更

php.ini というファイルを作成し、

HTTP input encoding translation = on
mbstring.detect_order = auto
mbstring.encoding_translation = on
mbstring.http_input = auto
mbstring.http_output = SJIS
mbstring.internal_encoding = SJIS
mbstring.language = Japanese

を記述して設定を反映させたいディレクトリにアップロードします。

php.iniの設定が有効になっていれば文字化けすることなくSJISでメール送信できるようになりました。

参考サイト

2008.01.23 Wed

SleipnirでGoogleページランクを表示させる

SleipnirでGoogleページランクを表示させる

IEではGoogleツールバーを入れてPageRankを表示できますが、SleipnirではGoogleツールバーを入れることが出来ないのでPageRankの表示が出来ません。あると便利なので、何とか入れれないかと探してみたところプラグインがあったので、その導入記録

プラグインのダウンロード

  1. 上記リンクから1149783578_12.zipをダウンロード
  2. ダウンロードしたファイルを解凍
  3. 解凍後、ファイル名を GooglePageRank.js から GooglePageRank.user.js に変更
  4. Sleipnirのpluginsディレクトリ内のSeahorseフォルダに入れます。

※標準インストールをしている場合は

C:\Program Files\Fenrir & Co\Sleipnir\plugins\seahorse

Seahorseをインストールしていない場合はこちらよりインストールしてください。

あとはSleipnirを再起動すれば、ページのタブに[R0]〜[R10]が表示されるようになります。

GooglePageRank.user.jsの改良

これでページランクは表示されるようになったのですが、パスワードをかけているサイトなどはPageRankを取得することができないため、[Rundefined]と表示されます。

タブにこれだけ長い文字列が表示されてしまうとさすがに使いにくくなってしまうので、[Rundefined]から[R]に表示を変更します。

GooglePageRank.user.jsをエディタで開き、

if(_document.title.indexOf("[R")!=0){
while(_window.busy){
sleipnir.Sleep(10);
}
if(_document.title.indexOf("[R")!=0){
var t=_document.title;
var pr=getPageRank(_document.location.href);
if(_document.title.indexOf("[R")!=0){
_document.title="[R"+pr+"]"+t;
}
}
}

上の部分を以下のように変更します。

if(_document.title.indexOf("[R")!=0){
while(_window.busy){
sleipnir.Sleep(10);
}
if(_document.title.indexOf("[R")!=0){
var t=_document.title;
var pr=getPageRank(_document.location.href);
if(pr == null){
_document.title="[R]"+t;
}else{
_document.title="[R"+pr+"]"+t;
}
}
}

これでSleipnirを再起動させると[Rundefined]が[R]で表示されるようになります。

参考サイト

2008.01.22 Tue

Memtest86・Drive Fitness Testでのサーバー診断

PC・サーバーを購入した際に、初期不良があるか確認します。サーバーの場合は故障が発生すると、非常に困るので、最初に十分にチェックをしておきましょう。不具合が見つかった部位に関しては交換することをお勧めします。

メモリの診断 Memtest86

  1. フロッピーをフォーマットします。
  2. ダウンロードしたファイルを解凍し、install.batを実行します。
  3. ドライブに a を入力し、次にそのままエンターを押して実行します。

※フロッピー内にどのようなファイルが作成されているか確認しようとするとフォーマットされていませんというダイアログが表示されます。

フロッピーをセットしブートさせると自動的にメモリチェックが実行されます。
メモリチェックはとめない限りひたすら実行されつづけます。
終了させる場合は[Esc]を押してください。

HITACHI/IBMハードディスク診断 Drive Fitness Test

上記サイトよりDrive Fitness Testをダウンロード
使い方に関しては参考サイトに詳しく書かれていたので、参考サイトを参照してください。

参考サイト

2008.01.21 Mon

Linux での圧縮・解凍

LZH/lzhの圧縮・解凍

ファイルを圧縮

# lha -a [アーカイブファイル名] [ディレクトリ・ファイル名]
例 lha -a data.lzh /tmp

ファイルを解凍

# lha -e [アーカイブファイル名]
例 lha -e data.lzh

ZIP/zipの圧縮・解凍

ファイルを圧縮

# zip [アーカイブファイル名] [ディレクトリ・ファイル名]
例 zip data.zip /tmp

ファイルを解凍

# unzip [アーカイブファイル名]
例 unzip data.zip


tar.gzの圧縮・解凍

ファイルを圧縮

# tar cvf [アーカイブファイル名] [ディレクトリ・ファイル名]
例 tar cvf data.tar.gz /tmp

ファイルを解凍

# tar zxvf [アーカイブファイル名]
例 tar zxvf data.tar.gz

tar.gz2の圧縮・解凍

ファイルを圧縮

# tar jcvf [アーカイブファイル名] [ディレクトリ・ファイル名]
例 tar jcvf data.tar.gz2 /tmp

ファイルを解凍

# tar jxvf [アーカイブファイル名]
例 tar jxvf data.tar.gz2

2008.01.19 Sat

Winedows でログインパスワードを忘れたとき Ophcrack Live CD

Winedows でログインパスワードを忘れたとき Ophcrack Live CD

ログインパスワードを忘れて再インストールをしたことがある人も多いと思いますが、再インストールする前にパスワードを解析してログインできるようになるか試してみるのもいいかもしれません。

Ophcrack Live CD

Ophcrack Live CDはWindowsのパスワードを解析するソフトです。

  1. ダウンロード
  2. 上記サイトからダウンロードしたisoファイルをCDに焼きます
  3. パスワードを解析したいパソコンに作成したCDをいれブートできる状態にします。


ブート画面

Ubuntu Linux のブートプロセスが始まります。

auto mode を選択する

正常に起動するとX Windowが立ち上がりパスワードの解析が始まります。
簡単なパスワードなら数分程度で解析してしまいます。

  • 環境によっては起動できない場合もあります。
  • すべてのパスワードが解析できるわけではありませんが、試してみる価値はあると思います。
  • 悪用厳禁

DVDにイメージを焼いてDVDドライブに読み込ませると起動しないものがありました。起動できない方はCDドライブでCDディスクで試してみるといいかもしれません。

参考サイト

2008.01.17 Thu

CentOS 4時からmrtgでCPUの負荷が上がる場合

CentOS 4時からmrtgでCPUの負荷が上がる場合

なぜか朝の4時になるとMRTGのグラフが急上昇してしまう・・・
原因を調査した結果、
cronの/etc/cron.daily/slocate.cronが原因のようです。

locateの停止

# vi /etc/updatedb.conf

DAILY_UPDATE=yes

DAILY_UPDATE=no

で実行停止にする。

slocate.cronについては不良セクタなどがあるとサーバーを停止してしまう危険もあるのでfindコマンドをつかわないのであれば停止しても問題ないと思う。

参考サイト

2008.01.17 Thu

メール関数の使えないサーバーでメール送信 php

レンタルサーバーなので、サイトを作成していると、サーバーの設定でメールが使えなくなっていることがあります。それでもメールは必要になることがあると思います。

そんなときに使うと便利な外部サーバー経由SOCKETタイプのメール送信 PHP ※文字コード Shift-jis

<?php
function Send_Mail_Socket($subject, $body, $from, $to) {
//各種設定
$body = mb_convert_encoding($body, 'ISO-2022-JP', 'SJIS');
$body = str_replace("\\n", "\n", $body);
$body = str_replace("&", "&", $body);
$subject = 'Subject: =?ISO-2022-JP?B?' . base64_encode(mb_convert_encoding($subject, 'ISO-2022-JP', 'SJIS')) . '?=';
$server = "example.com"; //外部SMTPサーバー指定

$sock = fsockopen($server,25);
fputs($sock,"HELO $server\r\n");
fputs($sock,"MAIL FROM:<$from>\r\n");
fputs($sock,"RCPT TO:<$to>\r\n");
fputs($sock,"DATA\r\n");
fputs($sock,"$subject\r\n");
fputs($sock,"$body\r\n");
fputs($sock,"\r\n.\r\n");
fclose($sock);
}
?>

上記関数を

<?php
Send_Mail_Socket('タイトル', '内容', 'info@from.com', 'test@to.com');
?>

のような感じで使うと外部サーバーを使用してメール送信することができます。

参考サイト

2008.01.16 Wed

phpMyAdmin インストールエラー

下記エラーが出たときの対処法

Existing configuration file (./config.inc.php) is not readable.

apacheのユーザー・グループを確認し、
phpmyadmin ディレクトリ内のすべてのファイル所有者を変更

# vi /usr/local/apache/conf/httpd.conf
# chmod 660 config.inc.php
# chown -R root.nobody *

phpMyAdminにアクセスしてみる。

2008.01.14 Mon

rsyncとsshで安全にバックアップをする

サーバーのファイルをバックアップする方法

バックアップ元のサーバーの設定

rootアカウントでsshにログインできるように設定を変更

# vi /etc/sshd/sshd_config
PermitRootLogin yes
※ yes でなく forced-commands-only でも可

設定の反映

# service sshd restart

※iptablesを起動している場合はポートも空けておきましょう。
公開鍵をおくディレクトリの設定

# mkdir /root/.ssh/
# chmod 700 /root/.ssh/


バックアップサーバーの設定

バックアップサーバーからバックアップ元サーバーへ、sshにパスフレーズなしで、ログインできるようにする

# ssh-keygen -t rsa
すべてエンターでOK

公開鍵をバックアップ元サーバーへコピーする

# scp /root/.ssh/id_rsa.pub メイン側のホスト名:/root/.ssh/
パスワードの入力が必要

バックアップ元のサーバーの設定

# mv /root/.ssh/id_rsa.pub /root/.ssh/authoried_keys
# chmod 600 authoried_keys

SSHにパスフレーズなしでログインできるかテスト

# ssh バックアップ元サーバーIP

上記コマンドでパスワードを聞かれなければ設定は完了です。

rsyncを使ってバックアップ

バックアップ元サーバーの/homeディレクトリをすべてバックアップサーバーの/backupディレクトリへコピーする

# rsync -avz -e ssh バックアップ元サーバーIP:/home /backup

rsynkを使ってサーバーの情報を同期させる

# rsync -avz -e ssh --delete バックアップ元サーバーIP:/home /backup

通信が途中で途切れる場合は以下のオプションで実行してみる

# rsync -av -e ssh --delete --bwlimit=8192 --timeout=600 バックアップ元サーバーIP:/home /backup

参考サイト

2008.01.11 Fri

シェルスクリプトでuid gid の取得

シェルスクリプトでuid,gidを:区切りで表示させる

vi get_id.sh

#!/bin/sh

USERID=`id -u $1`
GROUPID=`id -g $1`
echo "$USERID:$GROUPID"

# chmod 700 get_id.sh
# ./get_id.sh user
1000:1000

2008.01.11 Fri

SSHがつながらないそんな時は

SSHを使ってアクセスを行ったところ以下のメッセージが表示されます。

# ssh 接続ホスト
タイムアウトになるのでログの確認
# cat /var/log/secure
error: Bind to port 22 on 0.0.0.0 failed: Address already in use.

意味はそのままですが、使用するポートが既に使用されていますということ。

今までに見たことがないエラーでした・・・
ではそのポートがどうなっているのか調べてみました。

# fuser -n tcp 22
22/tcp: 8234
# ps -ef | grep 8234
root 8234 1 0 00:26 ? 00:00:00 /usr/sbin/sshd -o PermitRootLogin=no -o Protocol=2,1

起動時に PermitRootLogin=no が指定されているために ssh 接続ホストでは接続できないということでした。

2008.01.09 Wed

iptablesのログがコンソールに表示されるのを非表示に変更

iptablesでログに記録する設定にすると、コンソール画面(直接サーバーに繋いだディスプレイ画面)にも表示されるようになってしまいます。コンソールに表示させる必要はないので、非表示にします。

syslogの設定変更

# vi /etc/sysconfig/syslog
KLOGD_OPTIONS="-x"

KLOGD_OPTIONS="-x -c 4"

syslog 再起動

# service syslog restart

以上でコンソールにログが表示されなくなります。

2008.01.09 Wed

proftpd + MySQLでのユーザー認証

設定時に発生したエラー ライブラリーがないよといわれたので
以下のエラーが発生下場合の対応

# /usr/local/proftpd/sbin/proftpd -l
# ./proftpd: error while loading shared libraries: libmysqlclient.so.15: cannot open shared object file: No such file or directory

修正作業

# vi /etc/ld.so.conf

追加

/usr/local/mysql/lib/mysql

設定反映

# ldconfig

再度実行

# /usr/local/proftpd/sbin/proftpd -l
Compiled-in modules:
mod_core.c
mod_xfer.c
mod_auth_unix.c
mod_auth_file.c
mod_auth.c
mod_ls.c
mod_log.c
mod_site.c
mod_sql.c
mod_sql_mysql.c
mod_quotatab.c
mod_quotatab_sql.c
mod_cap.c

表示されました

参考サイト

2008.01.09 Wed

特定のサイトにアクセスした場合 強制リダイレクト

システムの変更、サイトの削除など現在公開しているアドレスへのアクセスをほかのサイトにすべて転送する設定

http://test.com/* へのアクセスをすべて http://example.com/ にリダイレクトする設定

apacheの設定で転送

URLをリダイレクトするにはRedirectMatchを使用します。
※正規表現使用可能

#すべてのリクエストをリダイレクトします。
RedirectMatch (.*) http://example.com

2008.01.06 Sun

CentOS 4 日曜日にCronのエラーメールが届く場合の対応

日曜になるとLogWatchと共に以下のエラーメールが届く場合の対応

Cron <root@example.com> run-parts /etc/cron.daily

/etc/cron.daily/logrotate:

error: error running postrotate script
error: error running postrotate script
error: error running postrotate script

原因を調べたところproftpdのログのローテンションエラーだったため、以下のように修正しました。

# vi /etc/logrotate.d/proftpd

/var/log/xferlog {
compress
missingok
postrotate
test -f /var/lock/subsys/proftpd && /usr/bin/killall -HUP proftpd
endscript
}

/var/log/proftpd/*.log {
compress
missingok
postrotate
test -f /var/lock/subsys/proftpd && /usr/bin/killall -HUP proftpd
endscript
}

変更後 不要な部分をコメントアウト

/var/log/xferlog {
compress
#missingok
#postrotate
#test -f /var/lock/subsys/proftpd && /usr/bin/killall -HUP proftpd
#endscript
}

/var/log/proftpd/*.log {
compress
#missingok
#postrotate
#test -f /var/lock/subsys/proftpd && /usr/bin/killall -HUP proftpd
#endscript
}

同じような事例

2008.01.05 Sat

checkbox 複数チェックしたときの処理

PHPでシステムを作成しているときに、複数チェックボックスを使うための方法を紹介

【ソースコード】

<input type="checkbox" name="data[]" value="チェック1"> チェック1
<input type="checkbox" name="data[]" value="チェック2"> チェック2
<input type="checkbox" name="data[]" value="チェック3"> チェック3



【データの取得方法】

if(is_array($_POST["data"] )){
foreach($_POST["data"] as $val){ echo $val; }
}

のようにして情報を取得します

2008.01.05 Sat

Windows OS・Mac OS・Linux系OSに対応 切り替え器

Windows OS・Mac OS・Linux系OSに対応 切り替え器

Linux Windowsともに台数が増えてきたので切り替え器を導入
Linuxにも対応しているらしい、SANWA製の切り替え器 SW-KVM2WVU を買ってきて設置してみました。

Windows XP + CentOS 5 で何の問題も無く使えたので、複数台PCを使っている方にはオススメです。

ただ、デフォルトの状態で使うと、すぐに切り替わってしまうため、画面を切り替える必要が無い場合はロックして使うことにしました。

■切替ロック機能付き
【Ctrl】キー×【F12】キーを押すことで切替機能をロック(ホットキーを無効に)できます。【Ctrl】キーを多用するゲームやアプリケーションでも本製品を利用できます。

メーカーサイト

2008.01.05 Sat

リナックスで使うとかっこよさげな壁紙サイト

リナックスで使うとかっこよさげな壁紙サイト リナックスで使うとかっこよさげな壁紙サイト

Linuxマスコット ペンギンを使った壁紙

FireFox壁紙


Windows & Linuxどちらでも使えるGood壁紙サイト

2008.01.05 Sat

ちょっと変わった折り紙

ちょっと変わった折り紙

今ではどうやって作ったらいいのかわからない人も多い、タバコの箱での傘の作り方
※参考サイトではガムの紙を使って作成しています。

大人の折り紙 お札兜

大人の折り紙 人面犬

bakaラベラー折り紙CDケース

2008.01.04 Fri

特定のユーザーディレクトリを非表示にする Apache2

ユーザーディレクトリを使用する時に特定のユーザーは非表示(ユーザーディレクトリを表示させない)にしたい場合の設定
管理者ユーザーなどは非表示設定にしておいたほうがいいようです。

<IfModule mod_userdir.c>
UserDir public_html
UserDir disabled root admin
</IfModule>


参考サイト

2008.01.03 Thu

直リンクの制限で携帯でのアクセスには制限を行わない方法

リファラーを使って画像などの直リンクを禁止することがありますが、リファラーを取得できない携帯からのアクセスができなくなってしまいます。
そこでPCからはリファラーを使って直リンクを制限し、携帯からのアクセスはすべて許可する設定を紹介。

画像の直リンク制限設定

.htaccess または httpd.confに記述します。

SetEnvIf Referer example.com authoritative_site
<FilesMatch "\.(jpg|png|gif)$">
order deny,allow
Deny from all
Allow from env=authoritative_site

## DoCoMo
Allow from 210.153.84.0/24
Allow from 210.136.161.0/24
Allow from 210.153.86.0/24
Allow from 210.153.87.0/24

## SoftBank
Allow from 123.108.236.0/24
Allow from 123.108.237.0/27
Allow from 202.179.204.0/24
Allow from 202.253.96.224/27

</FilesMatch>

携帯キャリアごとの帯域をAllowしてやることで制限の対象外とすることができます。

関連エントリー

参考サイト

システム構築に関する覚書トップページへ