回回 PPE : Petit Panda Extreme 回回

Tweets

Tweetsはまだありません。

Mobile

携帯電話からアクセス
クリックで拡大します
URLをメールアドレスに送信

RSS RSS
26件中   1 - 20 件表示 ( 全 2ページ )
1  2   

phpをコマンドラインで実行するときに引数をわかりやすくする工夫

自分用メモを兼ねて。

cron処理等のコマンドラインでphpを実行する場合、

user@host: php -c (php.iniファイル) examepl.php 引数1 引数2

のような形式でコマンド実行するが、
この場合php内部で引数を受け取ろうと思うと

if ( $argc > 1 ) {
    $var1 = $argv[1];
    $var2 = $argv[2];
}

といった代入方法になるので、順番を前後させることができない。
こうなると、久しぶりに手動実行しようかなといったときに
いちいち調べながら順番を間違えないように。。等と
無駄な手間をいつも発生させてしまう(自分の場合は)。

ので、そういったphpスクリプトの実行時に
一般的なLinuxコマンドと同じようにオプション形式で渡せるよう
変換処理を汎用化してやりつつ、$_REQUESTにつっこんでやることで
ブラウザ経由の処理をシミュレートすることも可能という寸法。

やり方は簡単、実行したいphpスクリプトのどアタマに

if ( $argc > 0 ) {
    foreach( $argv as $strArg ){
        if ( ( $arrTmp = explode('=', $strArg) ) && count($arrTmp) > 1 ) {
            $_REQUEST[$arrTmp[0]] = $arrTmp[1];
        }
    }
}

と書いておいてあげれば、あとは実行する際

user@host: php -c (php.iniファイル) example.php 引数1=値1 引数2=値2

とヒューマンリーダブルな形式で記述することができる。

2011-04-05 16:18:03投稿者 : 隼人
この記事のURL コメント(0) トラックバック(0) nice!

LCD-USB10XB-TをUbuntuで使う

I-O DATAのLCD-USB10XB-TというUSB接続タッチパネルディスプレイをLinuxから使う方法。
しかもデュアルディスプレイじゃなくプライマリシングルで。
実売価格15K円ほどでありながら、小型タッチパネルを実装できるとあって遊び甲斐ありそうな製品なんだけど、なぜかLinuxでの動作報告が全然みつからない不思議な子。
twitterでご質問いただいたので、家鯖のリプレイス記事としてまとめるまえに個別上げしてみる。

環境としては、OSとしてUbuntu 10.10をインストールした、Intel BOXD510MO。
01 : デバイスの情報を取得
まず最初に、デバイスをPCに接続した上で認識状況を確認。使用するコマンドはlsusb。
user@host: lsusb
(中略)
Bus 001 Device 006: ID 17e9:0156 Newnham Research
Bus 001 Device 006: ID 0eef:0001 D-WAV Scientific Co., Ltd eGalax TouchScreen
(中略)
ここでNewham Researchとなっているのがdisplaylinkチップを搭載したUSB-VGA変換アダプタで、eGalaxy TouchScreenとなっているのがタッチパネル部分。
この中でIDとなっているコロン区切りのデータが最も重要で、この内容は ベンダID:プロダクトID という書式になっている。
この手順を参考に他のdisplaylink製品を認識させたい場合、これらのIDを適宜読み替えて作業してください。

02 : 必要ファイルのインストール
次に、一連の作業で必要になるパッケージをインストール。セキュリティアップデート等の都合を考えて、可能なかぎり公式リポジトリにあるパッケージを利用するようにしたほうがいい。
user@host: sudo apt-get install libusb-dev xserver-xorg-video-displaylink x11proto-input-dev
03 : displaylinkドライバインストール
いよいよdisplaylinkのドライバをインストールする。
このドライバは悲しいことにUbuntuのリポジトリに登録されていないので、手動でダウンロード&展開。
user@host: wget http://people.freedesktop.org/~berniet/libdlo-0.1.2.tar.gz
user@host: tar xvzf libdlo-0.1.2.tar.gz
user@host: cd libdlo-0.1.2
user@host: ./configure
user@host: make
user@host: sudo make install
Ubuntu 10.10のクリーンインストール後であれば、特にエラーも出ずにインストールが完了するはず。この段階でエラーが出るような場合、既存のドライバ等が悪さをしている可能性が高いので、原因究明は環境によって異なる、困難な状況になることが多い。
なお、このドライバにはデバイス試験用のコマンドも同梱されている。
user@host: sudo make check
とすることで、テストパターンをひと通り表示するデモプログラムが実行される。
LCD-USB10XB-T以外の製品でもdisplaylinkのチップを搭載しているものでこの試験コマンドが正常に実行できるなら、基本的に利用可能なデバイスだと思ってOK。
また、いろいろ調べているとdisplaylink-modを使うパターンやudlfbをダウンロード&コンパイルするパターンが見つかるが、とりあえず手元のUbuntu 10.10で動作確認できたのはlibdloなので、それ以外のものは入れないほうがいい。

04 : xrandrおまじない
xrandrは、画面サイズの変更や回転制御等をXの再起動を行わず動的に実行可能な機能拡張。らしい。w
この作業を行わない場合、Xの起動時にいくつかの機能が正常に動作せず、真っ暗な画面にマウスカーソルだけが表示されて何もできない状況になったので大事。
user@host: sudo vi /etc/gdm/Init/Default
赤字部分が追加した箇所。
gdmwhich () {
  COMMAND="$1"
  OUTPUT=
  IFS=:
  for dir in $PATH
  do
    if test -x "$dir/$COMMAND" ; then
      if test "x$OUTPUT" = "x" ; then
        OUTPUT="$dir/$COMMAND"
      fi
    fi
  done
  IFS=$OLD_IFS
  echo "$OUTPUT"
}

XRANDR=`gdmwhich xrandr`
if [ "x$XRANDR" != "x" ] ; then
    $XRANDR -o 0
fi

sysresources=/etc/X11/Xresources

05 : usb-modeswitchでdisplaylinkのVGAを強制認識
このステップがLCD-USB10XB-Tを使用するうえで最大のポイントかもしれない。
dmesgを読むと、この製品はUSBケーブルで接続した際に、ストレージデバイスとして認識されてしまっている。
その理由は、チップ上に複数のUSBデバイスを実装してあって、画面描画用のUSB-VGA変換デバイスとドライバ保存用のストレージデバイスが同居している点にある。
Windowsマシンにこの製品を接続すると、ストレージデバイスのウィンドウが開いて、ドライバインストールがその場で行える仕組み。
付属CDの紛失やドライバのダウンロードがよくわからないという一般ユーザ向けには便利な機能だが、Linuxから使用するには邪魔なことこの上ない。
ではどうやってUSB-VGA変換デバイスとして認識させるかというと、udevの機能を活用する。
一般的にUSBデバイスはPCと接続されたときにデフォルトのモード等を設定するいくつかのパラメータがあるが、この製品では bConfigurationValue という値に2が設定されているため、これをusb_modeswitch コマンドで強制的に1にしてやる必要がある。
ここではudevのルールファイルを以下のように作成。
user@host: sudo vi /etc/udev/rules.d/00-displaylink.rules
中身はこの一行。
ATTR{idVendor}=="17e9", ATTR{bConfigurationValue}=="2", RUN+="/usr/sbin/usb_modeswitch -v 17e9 -p 0156 -u 1"
前述のとおり、ここに記載してあるベンダIDとプロダクトIDはLCD-USB10XB-Tのもの。lsusbとdmesgを見た上で認識できそうだな、と感じたdisplaylink製品なら、ここで該当のIDに読み替えて記述してやれば動作する可能性が非常に高い。

ルールファイルが用意できたら、Ubuntu 10.10のデフォルト状態ではudevの自動実行が有効になっていないため、sysv-rc-confを使って有効にしてやる必要がある。
user@host: sudo sysv-rc-conf --level S udev on
ここでレベル指定してあるのは理由があって、最初は指定なしのonでもうまく動作していたんだが、Ubuntuのアップデート後にXが/dev/fb1が見つからないと起動エラーを出すようになったため個別指定。
このため、確実に起動するように順序調整をしなきゃかなぁと思って調べていたら、Ubuntuの起動プロセスを解説している記事があったので、これを読んでS固定にしたら解決した。この記事すげーわかりやすいw

参考記事 : wps-C » Ubuntuのinit以降の起動シーケンス(図入り) – upstart /etc/event.d/ initctl

とはいえ、他のUSBポートにフラッシュメモリなデバイスを接続していると、相変わらず/dev/fb1が見つかりません状態になったりもするので、この起動順序に関する部分は引き続き調査が必要かもしれない。
とりあえずは、接続するポートを変えてみたり不要なデバイスは外す等で、何回再起動しても確実に画面表示までもっていける状況を把握しておくのがお勧め。

06 : xorg.confの設定
ここまでの作業で、USB-VGA変換デバイスの認識が正常に行えるようになるので、今度はXから利用出来るようにxorg.confを用意。
Ubuntu 10.10ではxorg.confがデフォルトでは存在しないため、まずは雛形を作成し編集することにする。
雛形の作成にはXorgを使用するが、稼働中のXサーバがあると実行に失敗するので、すでにGUIで作業している場合にはCtrl+Alt+F2でコンソールを切り替えてから作業or俺はこの時点ですでにSSHでリモート作業してた。
user@host: sudo service gdm stop
user@host: sudo Xorg -configure
これで、ホームディレクトリ上にxorg.conf.newというファイルが作成されているはず。
この中身は、自動判別可能な範囲でXの起動に必要なパラメータが記載されている。
今回はマルチディスプレイ環境ではなく、LCD-USB10XB-Tをプライマリかつシングルディスプレイで利用することが目的なので、ゼロから記述するより雛形を編集したほうが早い。
user@host: sudo cp xorg.conf.new /etc/X11/xorg.conf
user@host: sudo vi /etc/X11/xorg.conf
赤字が編集もしくは追加した箇所。
Section "Device"
        Identifier  "Card0"
        Driver      "displaylink"
        Option      "fbdev" "/dev/fb1"
EndSection
Section "Screen"
        Identifier "Screen0"
        Device     "Card0"
        Monitor    "Monitor0"
        SubSection "Display"
                Viewport   0 0
                Depth     24
                Modes     "1024x600"
        EndSubSection
EndSection
ここで肝になるのが、DeviceセクションのdriverとOption。/dev/fb*というのはフレームバッファデバイスで、基本的には画面の出力先として選択可能な数だけ作成されるっぽい。
ちなみに、マルチディスプレイ時にはxorg.confに上記以外の設定が必要となるため、それ用の設定は各自おググりいただきたい。

07 : タッチパネル認識用にGRUB編集
ここまででVGA部分は設定が完了したので、次はタッチパネル部分の設定に入る。
まず、grubの設定ファイルを編集して、起動時のkernelに渡すパラメータを追加。意味はよーわからん。w
user@host: sudo vi /etc/default/grub
もともとGRUB_CMDLINE_LINUX_DEFAULTの行がいるので、コピペした上でコメントアウトしておくと無難。
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash i8042.noloop=1 usbhid.quirks=0xeef:0x1:0x40"
ここでも、0xeefの部分がベンダID、0x1の部分がプロダクトIDになっている。
編集が完了したら、update-grubで起動パラメータとして有効化してやる。
user@host: sudo update-grub

08 : タッチパネルドライバのおまじない
ここも必要な理由がいまいちよくわかっていないんだが、起動の際のmodprobe時にスキップされるよう、blacklistに追記してやる必要がある様子。
user@host: sudo vi /etc/modprobe.d/backlist.conf
記述場所はどこでもいいみたいだけど、まぁファイル末尾に書いておけば間違いない。
blacklist usbtouchscreen

09 : タッチパネルパラメータの設定
さらに、Xから利用可能となるための設定を入力。
user@host: sudo vi /usr/share/X11/xorg.conf.d/50-egalax.conf
新規ファイルなので手打ち。/etc/X11/xorg.confに書いても動くのかな?試してないw
Section "InputClass"
    Identifier "axix inversion"
    MatchUSBID "0eef:0001"
    Option "InvertY" "On"
    Option "Calibration" "214 3864 269 3853"
EndSection

ここでもベンダID:プロダクトIDの組み合わせが使用されている。
LCD-USB10XB-Tでは、タッチパネルのY軸(上下方向)が反転した値を返すらしく、InvertYを有効にしないとカーソルの追尾が上下反転した状態になってしまった。
また、上記のCalibrationの値は手元の個体でキャリブレーションした結果のものだが、同じ製品なら大幅に食い違うこともないと思われるのでとりあえず入力してみることをお勧めする。
当然、他製品でこの手順を試す場合にはおかしなことになりかねないので、この段階では行自体を削除orコメントアウトしておいた方が無難。

10 : 設定反映
以上がデバイスの認識からX上で利用可能になるまでの作業。いよいよ満を持して再起動!
user@host: sudo reboot
設定がすべて正しければ、起動中のUbuntuロゴ表示時に描画先モニタがオンボードVGAからLCD-USB10XB-Tに切り替わり、1024x600の解像度で見慣れたXの画面が表示されるはず。
何か入力ミスや環境によるパラメータの違いなどが発生し正常に起動できない場合、作成したファイルを一時的に他のディレクトリに退避したり編集箇所をコメントアウトし、順番に障害発生箇所を探っていく地道な作業が待っている。
(この記事の内容を検証するために2週間ほどかけて、5,6回はクリーンインストールしてやり直したのは内緒)

11 : キャリブレーション
めでたく正常に画面表示まで漕ぎ着けたら、最後にキャリブレーション。
使用するのはxinput_calibratorで、これもUbuntuのリポジトリには見当たらないので手動でダウンロードしてやる必要がある。
user@host: wget "https://launchpad.net/~tias/+archive/xinput-calibrator-ppa/+buildjob/1961544/+files/xinput-calibrator_0.7.5-1ubuntu1_amd64.deb"
user@host: sudo dpkg -i xinput-calibrator_0.7.5-1ubuntu1_amd64.deb
なお、上記URLのファイルは64bit版なので、32bit版のUbuntuを使っている場合は別途おググりいただきたい。
xinput_calibratorのインストールが完了したら、メニューバーのシステムメニュー内Calibrate Touchscreenを選択するか、X上の端末ウィンドウから実行。
user@host: xinput_calibrator
画面上にポインタガイドが表示されるので、順にタッチすることでキャリブレーションできる。
LCD-USB10XB-Tは抵抗膜方式のため、付属のスタイラスを使った方が精度的にもお勧め。
キャリブレーションが完了すると、測定値が端末ウィンドウに表示されるので、この値を
 /usr/share/X11/xorg.conf.d/50-egalax.conf のCalibration行にいれてやれば作業完了。
念のため再起動してから、自己満足に浸ってください。w

ただ、一点問題があって、このディスプレイというかdisplaylink搭載製品全般っぽいんだけど、どうも輝度コントロールをソフトウェアから制御できない様子。
Windowsマシンにつないでも変更できなかったし、xrandrでガンマ値の変更をしても反映されなかったし。
USB接続ディスプレイの多くが、本体側に輝度調節用の物理スイッチを搭載しているようなので、そもそもそういう仕様なんじゃないか疑惑。

2011-03-07 12:25:55投稿者 : 隼人
この記事のURL コメント(0) トラックバック(0) nice!

apacheで複数の中間証明書を混在させる

解決してみたらなんてことはない内容なんだが、
すげー苦労したのでメモっておく。

同一マシンの同一apache内において、
Virtual Hostにより複数のHTTPSなサイトがある場合、
当然それぞれのCommon NameごとにSSL証明書を取得して
SSLCertificateFileとかで設定していくわけだが、
今回特殊だったのは
Virtual Host A : VeriSign
Virtual Host B : CyberTrust
という変則構成になった点。

普通に考えて、Virtual Hostディレクティブの内側に
それぞれのSSL証明書設定をしてやって、
[ Virtual Host A ]
SSLCertificateFile           /etc/httpd/ssl/HOST_A/public.crt
SSLCertificateKeyFile     /etc/httpd/ssl/HOST_A/private.key
SSLCertificateChainFile  /etc/httpd/ssl/ca.verisign.crt

[ Virtual Host B ]
SSLCertificateFile           /etc/httpd/ssl/HOST_B/public.crt
SSLCertificateKeyFile     /etc/httpd/ssl/HOST_B/private.key
SSLCertificateChainFile  /etc/httpd/ssl/ca.verisign.crt
といった具合に記述すれば動くんだろうと思ったが、
どうやらそれじゃダメな様子。

成否の確認に使用したのは、opensslによる接続チェックで
host# openssl s_client -connect secure.example.com:443 -showcerts -CAfile /etc/ssl/root.crt
みたいなコマンド打ってあげれば詳細な結果がわかるので、
実際にどういう証明結果が取得できたのかを見ながら調整した。
参考にしたのは
DSAS開発者の部屋 : システム管理者の心得? ~ OpenSSLコマンドで証明書をチェック(2)
あたり。

で、最終的には、VeriSignとCyberTrustの中間証明書を
ひとつのファイルに列記してあげて、
[ Virtual Host A ]
SSLCertificateFile           /etc/httpd/ssl/HOST_A/public.crt
SSLCertificateKeyFile     /etc/httpd/ssl/HOST_A/private.key
SSLCertificateChainFile  /etc/httpd/ssl/ca.common.crt

[ Virtual Host B ]
SSLCertificateFile           /etc/httpd/ssl/HOST_B/public.crt
SSLCertificateKeyFile     /etc/httpd/ssl/HOST_B/private.key
SSLCertificateChainFile  /etc/httpd/ssl/ca.common.crt
といった具合に記述してやらないとダメだったよ、というお話。

[ 追記 ]
この方法だと、PCのブラウザやopensslのクライアントは問題ないものの、
携帯端末や厳密な(?)処理を行うクライアントではエラーが発生する様子。
結局完全な解決策はわからずじまい。。。orz

2009-11-10 19:10:53投稿者 : 隼人
この記事のURL コメント(0) nice!

CentOS4にWebIRCを入れる。

ちょっと所用によりIRCを使う必要ができたんだが、
普段Skypeを仕事上のメインで使っているので、
・過去ログを好きなときに見たい
・その過去ログも複数環境で共用したい
という点をIRCクライアントにも求めてしまう。
あと、1対1ではなくグループによる会話が前提なので
自分がいないときの会話が見れないのは不便だなとか。
ずっと会話に参加するような時間は取れないので、
あとから流れをまとめ読みしたいわけである。

で、いろいろ調べてみると、WebIRCというのが超便利で
iPhoneから利用するにも大活躍なようなので入れてみることに。

そもそも、通常のIRCクライアントは、
起動→サーバ接続→チャンネル入室→会話→終了
を繰り返す流れなわけだが、
WebIRCは自分のサーバ内でクライアントとして動作するので、
起動時に一度接続してしまえば、参加しっぱなしになる。
閲覧・発言はすべてブラウザ上で行うことになるが、
ブラウザを閉じてもサーバ内のプロセスは生きてるので
その間に行われた会話も自分のログに入ってくる、
という素晴らしき寸法。

そんな素敵機能を自宅サーバに持たせるにあたって、
ちょっと苦労した点があるのでメモ。
前提条件としては、OSにCentOS4.xを使った環境なんだが
この点が最大の壁だったりした。


[ 手順1 ] yumによるruby関連のインストール
そもそも、この後の手順で使うrubygemsは
CentOS4.xのyumリポジトリに登録されていない。
remi, epel, dagあたりもチェックしたんだがない。
そこで、testingと呼ばれるリポジトリを追加する必要がある。
一方、rubygemsはepelに登録されているので、これも追加。
# vi /etc/yum.repos.d/CentOS-Base.repo
---
[epel]
name=Extra Packages for Enterprise Linux 5 - $basearch
#baseurl=http://download.fedoraproject.org/pub/epel/5/$basearch
mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=epel-5&arch=$basearch
failovermethod=priority
enabled=0
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL

[c4-testing]
name=CentOS-4 Testing
baseurl=http://dev.centos.org/centos/$releasever/testing/$basearch/
enabled=0
gpgcheck=0
gpgkey=http://dev.centos.org/centos/RPM-GPG-KEY-CentOS-testing
---
# yum --enablerepo=c4-testing install ruby ruby-docs ri ruby-libs ruby-mode ruby-tcltk rdoc ruby-devel
# yum --enablerepo=epel install rubygems
# yum install git


[ 手順2 ] rubygemsによる必要ライブラリのインストール
rubyは詳しくないのでよくわからんが、
どうやらsinatraでサーバとして動くような・・・?
まぁ他に悪さするようなモンでもないと思うので
深く考えずにインストール。
# gem install mongrel
# gem install sinatra
# gem install json


[ 手順3 ] gitによるWebIRCのインストール&起動
# cd /opt/ ← WebIRCを動かしたい場所
# git clone git://github.com/yuanying/WebIRC.git
# cd WebIRC
# ruby webserver.rb &
これだと接続時の情報が標準出力に出てくるので、
たぶん正しい起動手順ではない。w
まぁ、とりあえずデフォルトのポート番号4567で起動するので
確認できたら正しい環境にするもよし、面倒ならこのままで。w


[ 手順4 ] リバースプロキシによるポート80接続
すでにapacehを起動してポート80を使っている場合には、
リバースプロキシを使ったVirtualHostを登録してあげれば
自分用のわかりやすいURLでアクセス可能になるのでオヌヌメ。
---
<VirtualHost *:80>
    ServerAdmin webmaster@example.com
    ServerName webirc.example.com
    DocumentRoot /etc/httpd/example.com

    <Directory />
        Options ExecCGI
    </Directory>

    ProxyRequests Off
    <Proxy *>
        Order deny,allow
        Allow from All
    </Proxy>
    ProxyPass / http://127.0.0.1:4567/
    ProxyPassReverse / http://127.0.0.1:4567/
</VirtualHost>
---

なお、ここで起動したWebIRCは1インスタンスとなるため、
一つのサーバで複数人の管理をするには、
その分だけインスタンスを起動してやる必要がある。
具体的には、gitで落としてきたWebIRCのソース群を
/opt/irc/user_a
/opt/irc/user_b
みたいに複数配置してやって、それぞれのディレクトリで
# ruby webserver.rb -p 12345 &
といった感じにポート番号を変えてやればOK。
当然、VirtualHostもその分だけ必要になるんだが、
ホスト名をユーザ名にしてやったりすれば
結果的にわかりやすい共通環境になるはず。
ただし、そういう場合には、WebIRCの画面上で設定した
ログイン用ID/PW(BASIC認証)は共通になるようなので、
このあたりは必要に応じて調整すべきかもしれない。

2009-10-16 15:14:46投稿者 : 隼人
この記事のURL コメント(0) nice!

NFSのバージョン3と4での注意点

取り急ぎメモ。

サーバ側の/etc/exportsで
/share/data 192.168.0.0/255.255.255.0(rw,async....)
みたいに書いてNFS3で共有かけてた場合。
NFS4でも共有できるようにするには、
/share/data 192.168.0.0/255.255.255.0(rw,async...., fsid=0)
がまず必須。

次に、クライアントの方は、NFS3の場合は/etc/fstabが
192.168.0.10:/share/data /nfs-server nfsnfsvers=3,hard,bg,.... 0 0
みたいになってたとすると、NFS4でmountするには
192.168.0.10:/ /nfs-servernfs4hard,bg,.... 0 0
みたいにしてやらんといかん。
接続先のディレクトリ指定が不要で、サーバ側でexportfsしてる場所が
クライアントから見たらルートディレクトリになるよ、という点と
fstypeに明示的にnfs4を書いてあげなきゃダメ。

あと、複数のクライアントでmountしようとすると
mount: file exists
ってエラーが出ることがある。
どうやら、NFS4ではサーバ側での接続状態の管理に
クライアントごとのIDを利用してるんだが、
そのIDが接続してきたクライアントのIPを使用する様子。
で、そのIPが127.0.0.1だったりすると
複数クライアントで接続しようとした際に、
後からmountする方が「かぶってるからダメー」となる。
これを回避するには/etc/hostsに書いてある
自ホスト名の行をコメントアウトすればOKらしい。
なんか気持ち悪いけどそれでいいらしい。
ホントかいな。

ついでに、サーバ側のdmesgに
nfs4_cb: server xx.xx.xx.xx not responding, timed out
て行が出てくるのが気になるけど、
「次のアップデートで出なくなるから気にしなくていいよ」だって。
なんか細かい理由があるらしいんだが無視していいらしい。
これもホントかいな。

まぁ、これでとりあえず動いたからいいやー。

2009-06-30 18:39:49投稿者 : 隼人
この記事のURL コメント(0) トラックバック(0) nice!

家鯖リプレイス計画 その3

OSのインストールメモリ増強が無事済んだので、
次はデータ領域として外付けHDDを接続することに。
2009年5月現在、HDDは価格破壊が続いているわけだが
1TBが8000円前後で買えるという素敵な状況。
利用者とその目的によって、ベストバイな製品は変わってくるが、
今回はサーバ向けなので十分な容量を確保しつつ
可能な限り低発熱な製品を選ぶことに決めた。

とは言っても、実は買う前から決めてあったのがあって
Western DigitalのWD10EADSというシロモノ。
発売当初から注目していたのは、スタパブログでも触れられていた
5400rpmという比較的低速な回転数。
HDDはアクセスしてないときでもディスクが回転しているので、
回転数が高くなればなるほど発熱もあがる傾向にある。
動画キャプチャやノンリニア編集、サービス用のDBマシン等
速度を求められる環境は向かない5400rpmという特性も、
ホームサーバで運用する環境ではメリットに変わる。

というのも、玄箱HGで運用してきた経験上、
HDDの発熱は日中の無人&エアコン停止な環境では
なかなかバカにならないストレスを機器に与えるらしく、
HDDを玄箱HGに内蔵している状態では異常高温を検知して
システム自体が停止してしまう事故が発生していた。
それ以来、玄箱もケースに切り込みを入れて
HDDを物理的に本体の外に出しつつ、
アルミ製の放熱ケースでHDDをくるんで対策した上で
可能な限り熱のこもりにくい場所に本体を設置したりと、
まぁいろいろ気を遣うものなのである。

そんな発熱恐怖症の俺にとって、WD10EADSは
登場を願ってやまなかった良製品。
低速な回転数も、ホームサーバの利用としてはさほど苦にならず
試しに電源を入れた状態で丸一日放置してから触っても
ちょっと熱を持ってるな、程度の発熱で済んでくれるので
非常にトータルバランスのとれたプロダクトなのである。

実は、このHDDは玄箱HGに接続してJFSでフォーマットしつつ
既存データをrsyncで丸々コピーしてあげることで
OSはそのままデータ領域の拡張をしてやれ、と考えて
VAIOよりも先に入手していたのだが、いざ使おうとすると
玄箱Fedoraのkernelからは
JFSのモジュールが外されてしまってるし、
かといってkernelのコンパイルは失敗したら痛いなぁと
二の足を踏んでいた状態のモノだったりする。
幸い今回はRAYからVAIOをもらえたので、
USB2.0なPCカード経由で存分にその性能を発揮してもらおうと
心躍る移行作業を進めに至ったのだが。。。

その後、このご時世にIRQの問題でつまづくことになるとは。。。

まだ続く。w

2009-06-30 15:36:47投稿者 : 隼人
この記事のURL コメント(0) nice!

家鯖リプレイス計画 その2

とりあえずインストールが正常に完了したVAIO
が、失敗したCentOS5.3のインストール時から
ちょこちょこ気になっていたのが搭載メモリの量。
4.7のインストーラは文句言わないで進んだが、
5.3の方は「このまま進めるにはメモリが足りないから
先にHDDフォーマットしてswap使うよ~」的なことを
事前に言ってきていた状況。

スペックを調べつつ本体をチェックしてみると、
標準で128MBのメモリを搭載しつつ、
空きスロットが1個ある状態だったので
あれこれ作業する前に増設することを決意。

しかし、VAIO PCG-FX55A/BPのメモリは
今となってはナニソレ状態のPC-100 SO-DIMM、
しかも1スロット当たりの最大容量が128MB。
そんなメモリ今でも手に入るかな~と思ってググると
新品の場合は4000円前後、中古だと2000円とか。
世代と性能の割には高いかなぁ、と思いつつも
店頭ならもうちょっと安い中古あるだろう、と
予算を2000円に設定して散策がてら日曜のアキバへ。

まずはじゃんぱらをはじめとした、中古ショップの中でも
比較的メジャーなところをうろうろ回ってみるも、
わざわざ店頭で即決するほど安い品には
なかなか出会えないまま時間ばかりが過ぎる。

一応は新品・新古品のチェックも
ところどころのショップで挟んでみたが、
なんでこのメモリが4000円なのか正直謎。w

で、だいたいめぼしいところ回ったな~と思い
そういやOld Macから身を引いて久しく行ってない
地下の店もざっと目を通しておこう、と考え
秋葉原エレクトリックパーツのある場所へ。

そこで、出会った。
PC-133 SO-DIMM 128MB。
驚きの500円。w

ここを逃す手はない、と文字通りの即決。
きっと死んだPCから回収した生き残りパーツとかで、
ケースに置いてある現品をバルクで売ってる
ある意味「一点物」なんだろうなと推測。

んで、ちょうど財布に500円玉があったので
「コレください」と言いながら代金を置いて待つこと10秒。


オリジナル表示

ちょwwww
箱入りの新古品wwwwww
しかもハギワラシスコムwwww

倒産ショップの在庫整理とかかなぁ、なんて
消えていったパーツ屋への思いを重ねながら
サクっと会計を済ませ、いそいそと返って装着。
さすがメジャーメーカ、あっけないくらい問題なく動作。w

というわけで、ちょっと足りない気がしつつも
メモリは最大まで増設できたので、一安心。
HDDは標準通り20GBが搭載されているので、
OS用パーティションとしては十分な容量。
次はいよいよ外付け機器による増強、
大容量HDDとGigabit Ethernet化が待っている。

続く。

2009-06-18 11:19:38投稿者 : 隼人
この記事のURL コメント(0) トラックバック(0) nice!

家鯖リプレイス計画 その1

かれこれ4~5年は活躍してきた、
隼人家のホームサーバである玄箱HG。
何度もOSを入れ直し、容量を増強させながら
その価格以上の価値を提供し続けてくれた
相当に「できる子」なんだが、CPUがPowerPCかつ
組み込み系に近いくらいkernelで動かしてる都合上、
・JFSで外付けHDDマウントするまで面倒そう
・リリースバージョンも古いしなぁ
・リリースアップグレードはリスク高いしなぁ
・kernelリビルド失敗したら面倒だしなぁ
という理由が重なって(むしろ連鎖して)、
いよいよ家鯖の世代交代を決意した。

玄箱HGを導入する以前には、
液晶割れによりPCとしての役目を引退した
IBMのThinkPad 240XにFreeBSDをぶっこんで
PPPoEサーバとして稼働させたりしてたんだが
あの頃のOSとしての利便性がまだ忘れられない。

ので、なんかいいマシン転がってないかな~と思ったら
RAYの家に古いVAIOノートが眠っているという話を思い出し
速攻でクレクレコールをしてゲット。
Mini-ITXとかで組み立てるのも検討したけど、
やっぱり安くあがるにこしたことない、という判断。

が、ここからVAIOが持つ
Sony仕様の罠との格闘が始まるのである。

まず、OSが入らない。w

CentOS 5.3をDVDからインストールしようにも、
パッケージのインストールでkernelに至ったら必ず止まる。
ネットワークインストールを試してみても、
Anacondaのどっかでエラーになって強制再起動。

じゃぁFreeBSDならどうだ?と思っても
インストーラが起動するプロセスの途中で
なんかしらのエラーがあるらしく強制再起動を繰り返す。
こっちは速度が速すぎてエラーの内容すら判別不能。w

で、いろいろ調べてみたら。
CentOS 5.0以降、起動時のインストールオプションから
i586というのがいなくなってるということがわかった。
そのため、AMDのK6-2とかにはインストールできないよ、
といったQ&Aが見あたったのである。
てことは、インストーラの中で、少なからず
ハードウェア構成に影響を受ける部分があって
このVAIOもそれ系かなぁ、なんてったってVAIOだし、w
と思い至ってCentOS 4.7を試してみたところ、
無事にインストール自体は成功。

ちなみに、今回利用しているマシンは
VAIOのPCG-FX55A/BPという型番で、
・Intel 815 Chipest
・Celeron 700Mhz
・PC100 128MB SO-DIMM
・20GB UltraATA HDD
・DVDコンボドライブ
・USB 1.1
・iLink
・CardBus対応TypeII/III PCカードスロット
・100BASE-TX LAN(Intel PRO/100相当?)
・56kbpsモデム
etc...というハードウェア仕様。
きっとCPUとかチップセットあたりがNGだったんだな。。
ちょっと驚いたのは、オンボードのモデムが
WinModemではなくIntelのAC'97モデムな点。
シリアルもパラレルも搭載してるので、
速度が必要ない環境であれば
遊び甲斐ありそうな仕様ですな。

今回の最終目標は、
・CentOSが満足に動く
・MySQL動かしてもなんとかメモリ足りる
・Gigabit Ethernet対応
・USB2.0経由で1TBなJFS領域
なので、これに向けて作業していくのだが。。。

続く。w

2009-06-01 18:51:40投稿者 : 隼人
この記事のURL コメント(0) nice!

最近作業してること

Smartyのキャッシュファイルを一時保管するための
共有領域を素敵なスピードで手に入れるため、
8GBのメモリを搭載したPCサーバを組み立てて
RAMディスク+heartbeatとかで動かしてみたり。

大きめストレージのマシンを導入できたので、
DRBD+GFS2でPrimary/Primary構成を構築して
さらにMySQL ClusterでDBも同期させてしまえば
一台はファイル提供、もう一台は定時処理とバックアップ、と
素敵な棲み分けが可能になるんじゃないかと思って
四苦八苦した結果MySQL Clusterは動いたけど
DRBD+GFS2の段になって「メモリが足りねー」とか
エラー吐き出して動かなかったりしてくれたので
とりあえずググってみたところ同様のトラブルに
見舞われてる英語圏の方のフォーラムカキコがあって
(drbd : failed to vmallocて感じ)
うっしゃーと思ったのも束の間、
「64bit版のOSで動かすよろし」
とこれまた英語圏の方の一刀両断に合ったため
またIDC行かなきゃダメじゃね俺?だったり。

家鯖である玄箱HGにはjfs-utilsが入ったものの
kernelモジュールとしてjfsがinsmodできなくて
なんでーと思ったら玄箱用のkernelなんだから
そりゃそうだっていうかKernelコンパイルしなきゃですか
えーめんどいし玄箱の場合死亡率高い(経験上)し
その間利用できないのはとっても苦しいので
Ray家にて眠っていた古いVAIO Noteをもらって
家鯖リプレイスを試みるもスゴイカードのIRQ問題が
浮上してきてトラブルシュートに追われてみたり。

そんなこんなでCentOS三昧な日々を送っていつつ、
MacBookでがんばって新曲のミックスダウンをしている。
↑これが一番がんばってること。w

各項目の詳細は細切れにネタにしていくかなー。

2009-05-27 22:26:09投稿者 : 隼人
この記事のURL コメント(0) nice!

apacheにおけるKeppAliveの妙

俺が面倒見てる子供達(CentOS上のapache2.0.*)が
最近よく応答不能に陥るようになってしまった。
mod_statusによるステータスチェックをすると、
処理を終えたプロセスが終了せずに大量に残ってて
結果としてMaxClientの値までプロセス数を確保してしまい
これ以上は無理ぽ状態になっている様子。

最初は、httpd.conf側のKeepAlive関連の設定をいじって
これで解決するだろうとか思ってたんだけど、
あれこれやってみてもまだ再発を繰り返す始末。

で、気づいたのが、
残ってる無駄なプロセスの状態がSending Replyで、
KeepAlive Timeoutの値を超えても消えない、ということ。
この内容で調べてみると、ようやく欲しい情報にヒットして
OS側のTCPにおけるKeepAliveを調整しないと
ダメかもよ~ということがわかった。

おそらく、TCPのセッションを適切にCloseしないまま
一方的に処理を終えたつもりになってるアクセスがあって
それがつもりつもって今回のような結果を招いたと思われる。

とりあえず、/etc/sysctl.confの中に
net.ipv4.tcp_keepalive_time = 30
net.ipv4.tcp_keepalive_intvl = 5
net.ipv4.tcp_keepalive_probes = 3
とか記述してあげてから
host# systcl -p
で値を反映させてあげつつ、念のためhttpdも再起動。


ついでに、携帯からのアクセスが気になったので
こいつもあわせて調整してやることにする。

というのも、ステータスを見ていて気づいたんだけど
同じsession_idのアクセスにもかかわらず、
remote addrが異なるIPのアクセスが発生していて
結果的に同じ人が複数のプロセスを立ち上げてることがある。
これは携帯からのアクセスによく見られる現象なので、
携帯からのアクセスだった場合に「だけ」
apacheのKeepAliveを無効にしてみることにした。

これが可能だとわかったのは、KeepAliveの設定が
サーバ設定ファイルだけではなく
VirtualHost単位でも行える、ということを知ったため。
携帯からのアクセスがあるVirtualHostの設定部分で、

BrowserMatchNoCase "docomo"   nokeepalive
BrowserMatchNoCase "kddi"         nokeepalive
BrowserMatchNoCase "j-phone"   nokeepalive
BrowserMatchNoCase "vodafone" nokeepalive
BrowserMatchNoCase "softbank"  nokeepalive

とか書いてあげれば期待通りの動きをしそうな予感。
現在は上記設定をしてしばらく様子を見ている状態。
BrowserMatchNocaseはBrowserMatchよりも
負荷がかかるんじゃなかろうか等気になる点もあるものの、
挙動として設定通りの内容になってるようなので、
あとはピーク時を迎えたときにどうなるか・・・・?!

2009-05-22 11:51:03投稿者 : 隼人
この記事のURL コメント(0) nice!

updatedbが犯人

俺がサーバ環境を管理してるサービスの話だが、
ユーザのファイルを共有ストレージで管理している
通称「NASマシン」がいたりするわけで、
以前エントリに書いてちょくちょく検索されている
GPT関連の作業もそいつで行ったわけだが
100万PV/日をここ数日コンスタントに捌いていて
けっこう高負荷な状態が続いてる状態だった。

で、一時ファイル系が悪さしてるんだろう、と思い
RAMディスク共有マシンを用意して(詳細は後日)、
負荷軽減を図ったんだが、NASマシンのIO Waitが
意外に減らないな~、と思っていたところ。

悪さをしていたのはupdatedbだったよ、という話。

このupdatedb、コマンドの場所を調べる時に使う
localeコマンドとかで活用されるファイル情報のDBらしいんだが
NASマシンで共有しているストレージまで見てたんですな。
それが毎日更新されるもんだから、そりゃ負荷もかかる。
現時点で画像やマルチメディアファイルをひっくるめて
総計2TB近くのデータを扱っている領域に対して、
毎日findかけてるようなもんなので、
サービスを運用しながらだとIO Waitが増える。

で、問題のデータ領域をupdatedbのチェック対象から
外してあげることで一気にIO Waitが下がった。

編集したのは、/etc/updatedb.confのみ。
/tmp等のチェック除外対象の領域がデフォルトでも
いくつか登録されているので、それに追記するだけ。
updatedbのプロセス自体はデーモン化してるわけではなく
cron.dailyで呼び出されてるようなので、confをいじるだけで
毎日安心して眠れるようになるよ、という寸法。w

普段意識しないバックグラウンドのサービスが
商用レベルになると悪さをしかねない、というのは
WindowsもLinuxもMacOSも同じですな。

2009-05-21 12:12:30投稿者 : 隼人
この記事のURL コメント(0) nice!

タスクバーを徹底活用して効率アップ

職場とかでも意外と見かける光景のひとつに、
「デスクトップを表示」してからマイ コンピュータや
マイ ドキュメントを開き、作業が終わったら
またウィンドウを戻す、という手間。

まぁ、Windowsキー + Dを押せば
一発で切り替えられるので便利ではあるが、
その都度画面全体の描画をさせるのは
意外と負荷がかかるように感じる。

しかも、ここ数年はもはや
ブラウザもウィンドウ最大化して使うのが当たり前。
ほかにもいくつもソフトを起動してるわけだし、
すべて最小化してまた戻して・・・なんてすると
それだけで待ち時間が発生してしまい
「アレ?今なにしようとしたんだっけ」となりがち。w

ので、普段使うものをみんなタスクバーに
片っ端から登録してしまうことで
いちいちアクティブウィンドウを最小化せずとも
必要な作業が行えるようにするTips。


その① 特殊アイコン系
まず、タスクバーのクイック起動バーには
たいていのものがドラッグ&ドロップで置ける。
マイ コンピュータやネットワーク、ごみ箱ですら。
特筆すべき便利な点は、
置いたショートカットを右クリックした際には
本物と同様の挙動をする、ということ。

ということは、
・マイ コンピュータから管理ツールを開く
・ネットワークドライブの管理
・ごみ箱を空にする
といった作業が、タスクバー上のアイコンを
右クリックするだけで行えてしまうのである。
さらに、普通にショートカットとしても動作するので
タスクバーから一発でC:ドライブにアクセスも可能。
これで、ごみ箱を空にするために
いちいちデスクトップを表示しなくても済みますな。


その② フォルダ系
まぁ、単純にフォルダのショートカットを
タスクバーにドラッグ&ドロップして
普通に開くというだけなんだが、
マイ ドキュメントやデスクトップフォルダ自体を
置いておくだけで、はるかに効率が上がる。
ていうか、デスクトップを登録しておけば
デスクトップを表示する必要自体がなくなる。w
マイ ドキュメントやデスクトップの本体は、
C:Documents and Settingsユーザ名
にあるので(XPの場合)、それをタスクバーに。


その③ 不要アイコンの削除
必要なショートカット類はすべてタスクバーに置いたら、
今度はデスクトップに表示されている中で
不要なアイコンを整理していく。
アプリケーションのショートカットなんかは、
タスクバーのクイック起動やスタートメニューで
十分代用できるので即削除。
マイ コンピュータやマイ ネットワークは、
画面のプロパティから非表示にできる。
最後にごみ箱だけが残るのだが、
これは窓の手を使って非表示に。
これで、デスクトップに置かれているものは
「そこにしかないもの」になる。


その④ タスクバーでグループ化する数を変更
最後に、ここまでのTipsを実践してくると
今度はタスクバー内でのウィンドウ切り替えが
煩雑になってくることが多い。
同じアプリでウィンドウが増えれば
自動的にグループ化してくれるものの、
常にそうだったらいいのに。。。と思う。
そこで、タスクバーでグループ化が始まる
ウィンドウの数を一気に減らして、
常にグループ化されるようにしてしまえば
タスクバーに並ぶアイコンの数が
起動中のアプリと一致して
タスク切り替えもわかりやすい。
この変更も、窓の手で行えるが、
前述のごみ箱アイコンとあわせて
レジストリを直接編集することで
実現できる内容なので、
ソフトをインストールしたくない人は
RegEditという方法も、ある。

まぁ、窓の手はほかにも
直接編集していったら面倒な内容を
GUIで設定できたりするので
入れておくに越したことない良ソフトですな。

2009-04-07 11:12:40投稿者 : 隼人
この記事のURL コメント(0) トラックバック(0) nice!

Windows Searchがうざいので止める。

WindowsXPのSP3を入れると
強制的に有効になるWindows Desktop Search。
たくさんのファイルがあるフォルダを開いていて、
「この中でこの条件に合うファイルを!」と思って
Ctrl + Fすると、より使いにくくなっている罠。w
しかも、バックグラウンドでインデックスの作成をするので
検索しないときにも若干の負荷がかかる。

普段からきちんとフォルダわけを整理しておけば、
HDD全体からファイルを探す、なんてことは
あまり発生しないので、インデックス化の恩恵に
あまり預かれなかったりするのも事実。

というわけで、
邪魔なWindows Desktop Search(以下WDS)を止める。


手順としては、
・WDSのサービスを無効化する
・従来の検索コンパニオンを優先させる
・その上で検索コンパニオン自体を使わないようにする
といった具合。
まぁ、WDSをアンインストールしてしまえばいい
と言えばいいんだが。。。
その後のアップデートでまた勝手に入るかもだし
「入ったままでも大丈夫」な方法を今回はとることにする。


まず、WDSサービスの無効化だが、
これは管理ツール → サービスで無効化させて構わない。
また、タスクバーにWDSの検索窓がいたりするので
これもタスクバー右クリックで非表示にする。
サービス自体を止めてしまえば、とりあえずバックグラウンドで
勝手にインデックス作成されなくなるので、負荷問題は解決。
参考にしたのはこちら。

[ Imagination : WindowsSearch.exeを削除しないで停止する ]

上記サイトではmsconfigも使用しているが、
サービス管理で無効にすれば同じ・・・なはず。


次に、従来の検索コンパニオンより優先される
WDSの検索画面を停止する方法だが、
その情報はこちら。

[ 十日日記 : WDSのシェル統合をオフにする ]

RegEditを使うわけだが、
HKEY_CURRENT_USER

Software

Microsoft

Windows Desktop Search

DS
とキーを移動していき、ShowStartSearchBandという値を
DWORD値で新規作成してやる。
値はゼロなので、10進数でも16進数でも構わない。


最後に、検索コンパニオン自体を停止して
目的のファイルを探すためにより効率化を図る。
その手順はこちらを参考。

[ 日経トレンディネット : 「検索コンパニオン」を表示しないようにする ]

ここでもRegEditの出番なわけだが、さっきとは場所が違って
HKEY_CURRENT_USER

Software

Microsoft

Windows

CurrentVersion

Explorer

CabinetState
にUse Search Asstという文字列値を新規作成する。
値は、no と入力するだけ。
これで、XP以前の最も使いやすい検索環境が整うわけだが、
当然サービスやレジストリをいじったので
反映させるにはログオフもしくは再起動が必須。


ここまでやると、フォルダを開いているときに
Ctrl + Fを押してもさほど待つことなく検索窓が表示され、
検索条件も最初から好みの内容を入力できる。
「ファイルがどこにあるのかわからん」という声から
「ファイルの検索の仕方がわからん」という声まで
対応しようとした結果なんだろうが、まぁ
長くPCに携わっている人間からすれば鬱陶しいだけだし
検索の仕方がわからんという人は、日常的に
ファイル管理をきちんとしてないことが多いので
「目的別にデータを管理する」ことの重要性を
きちんと啓蒙していくほうが大事なんだよな、ホントは。w

2009-04-06 01:00:00投稿者 : 隼人
この記事のURL コメント(0) トラックバック(0) nice!

玄箱まだいける!

yum updateとかyum installが止まっちゃうため
しばらく放置して新マシンの検討をしていた
家サーバの玄箱HD(Fedora済)だが、
rpm --rebuilddb
を実行すればyumが停止(フリーズ?)してしまうのが
解決することが判明したので、早速トライ。

したら完璧!直った!!

たぶん。w

yum update phpが正常に完了したので
installも問題なくいけるであろう。。。

これでJFS用のライブラリ類を入れれば
追加のHDDをJFSで運用してやることで
まだまだ現役稼動できそう。

まぁ、CPUとメモリの貧弱さは
相変わらず課題として残るんだが。。。
静音性と省電力性にはかえられない、かな?

2009-04-01 13:15:30投稿者 : 隼人
この記事のURL コメント(0) nice!

apacheモジュール - auth基本系 + 小ネタ

デフォルトでインストールされるauth系モジュールはとても多く、
どれがなんだかわからずにロードしてしまってる俺。
調べてみるとほとんどいらないものだった。ww
とりあえずコアになるのは今回の2モジュールで、
それ以外は認証プロバイダごとのモジュールなので
その基本部分からおさえておこうと思う。

[ mod_auth_basic ]
HTTP基本認証、通称「Basic認証」を行う上で肝となる
認証動作の中心を担うモジュール。
とはいっても、このモジュールの仕事としては
設定ファイル内の記述に応じて認証プロバイダ(後述)を
適切に呼び出し、認証処理を丸投げして結果を待ったり
特に細かい設定がされてない場合には.htpasswdとかの
ファイルベースでの認証設定を探した上で認証し、
OK/NG判別してアクセス制御をかけてくれる。

[ mod_auth_digest ]
Basic認証と対をなしてよく語られるDigest認証を
取り持ってくれる認証モジュール。
基本的な挙動はBasic認証と変わらないのだが、
Basic認証がID・パスワード等をそのまま送受信するのに対し
Digest認証はMD5による暗号化とかなんとか。
個人的には使ったことがないので。。。w
認証プロバイダの選択や制御方法などは
Basic認証と共通なようなので、やんごとなき理由により
大事なデータをHTTP認証で守りたい場合には、
極力Digest認証を使ったほうがよさそう。

 で、ここから小ネタ。


Basic認証もDigest認証も、その仕組みとしては
ページのデータを扱う前にHTTPヘッダで認証を宣言し
そこから先の内容を保護しようとする目的なので、
必然的にID・パスワード入力をページ内で行えず、
ブラウザが専用のダイアログを出して対応している。
裏を返せば、仕様に則ったヘッダをやりとりすれば
apacheの認証系の複雑な設定に悩まなくても
HTTP認証が実現可能だったりする。

例として、俺が一番触れているPHPの場合は
header()関数で認証宣言してあげるだけで、
ブラウザが入力ダイアログを表示してくれる。
入力されたデータはPHP_AUTH_USER等の名前で
SERVER環境変数に保存されるので、それを元に
DBに接続→許可ユーザと照会といった手順を踏めば
立派に認証機能として動作してくれるのだ。

PHPによるHTTP認証

この方法のメリットとしては、
・許可ユーザ等の情報をDBに保存しておけるので
変更のたびにapacheのリロードしなくて済む
・ディレクトリやファイル単位ではなく、
機能単位での認証が可能
・.htaccessによる設定細分化を省けるので
allowoverrideによる負荷を減らせる
といったことがあげられる。
逆にデメリットとしては
・プログラムをミスったら当然ダメ
・DBが死んでる場合等のエラー制御が必須
・アクセスが多いとapache版より重いはず
あたりが考えられるが、
ユーザ向けサービスの認証機能として
HTTP認証を採用するようなシステムもないと思うので
時と場合によって使い分ける思い切りが重要。


2009-02-06 17:30:19投稿者 : 隼人
この記事のURL コメント(0) トラックバック(0) nice!

個人的厳選フリーウェア(下書き版)

どうも、ここのところ
仕事で使っているノートPCが調子悪いので
この週末にOSの再インストールを実施。
で、普段の作業で使用するツール類を
備忘録を兼ねて軽くまとめておく。
各ソフトの詳細は別途エントリを立てる予定。
まぁ、どれも有名なソフトなんだけど
俺の身の回りでも意外と
詳しくは知られてなかったりなので。w

・Tera Term Pro(UTF-8対応版)
・Lhaplus
・WinSCP
・TortoiseSVN
・FFFTP
・K-Lite Codec Pack
・DVD Decrypter
・DVD2AVI
・午後のこ~だ
・Aviutl
・すっきり!デフラグ
・窓の手
・Flexible Renamer
・ImgBrun
・Avast!

あとついでに紹介予定のTips。
・タスクバーになんでも置いちゃう
・タスクバーを省スペース利用
・スタートメニューは整理しよう
・My Documentで日常的にデータ回避
・Windows Searchイラネ


2009-01-25 15:57:48投稿者 : 隼人
この記事のURL コメント(0) nice!

apacheモジュール - cache系

apache 2.2系になるまでは、実験的とされていた
webサーバ側でキャッシュ持ってみようという
素敵なモジュールたち。
もちろん使いどころによって困ったことになりかねないのは
動的なページを扱っているサービスを開発してる人なら
誰でも思い当たる不安要素なので、利用にあたっては
きちんとドキュメントを読んで理解する必要がある。
今回はとりあえず「モジュールの意味」そのものを
まとめるのが目的なので、具体的な設定方法は
実装してみた際にでも書いてみることにしようかな。

[ mod_cache ]
とりあえずこのモジュールが有効にならないと
当然キャッシング自体が使えないのだが
このモジュールだけでは足りず、後述の
ストレージ管理モジュールを組み合わせて
どれをどう使うかもあわせて設定しないと
正しく役立ってくれないという、扱いが難しい子。

[ mod_disk_cache ]
ストレージ管理にHDDを使う場合にロード。
まぁ普通は/var/cache/httpdみたいな感じで
キャッシュ用ディレクトリを指定したりするんだが
もちろん指定先のディレクトリがRAMディスクなら
メモリの速度で動くはず。
じゃぁmod_mem_cacheいらねーじゃんと
思っていたらなんと、mod_disk_cacheには
CacheDirLength * CacheDirLevels <= 20
でないと動かないという仕様があるらしい。
つまり、キャッシュファイルが保存されるパスは
20文字以内で表現できる必要があるという
サーバのわりになんだかな~な話なんだが
その分mod_mem_cacheの出番がある、と。

[ mod_mem_cache ]
ストレージ管理にメモリを使う場合にロード。
上述のmod_disk_cacheにあるような
文字数制限的なものはなく、キャッシュ全体で
どのくらいの容量確保するのか、とか
キャッシュ破棄のアルゴリズムを選んだりとか
最低限だが十分な設定ができたりする。
HDD上のキャッシュと比べてどちらが
速度・効率がいいのかはシステムによるだろうが
まぁキャッシュ化を必要とするようなサイトなら
容量が許す限りメモリで管理したほうが
アクセス数にもページ数にも対応できる、
といったところかなぁ。。。

[ mod_file_cache ]
流れ的に、こいつはファイルにキャッシュするのか、
じゃぁmod_disk_cacheと変わんないじゃんと
思ってしまうのが人間の危ないところ。
実はこいつはmod_cache自体とは関係なく、
apacheが処理する実ファイル自体を
メモリ上にキャッシングするのが目的な子。
俺も今回調べるまで知らんかった。w
んで、実ファイルをキャッシュしてくれるなら
それは効果絶大なんじゃないの?と思いきや
実ファイルの更新確認まではしてくれないらしく、
ファイルを更新したらapacheの再起動が
どうしても必要になるらしい。
まぁ、このモジュールはまだ実験中らしいので
今後のバージョンアップで更新確認まで
実装されることを願う期待できる機能かな。


2009-01-20 20:07:57投稿者 : 隼人
この記事のURL コメント(0) nice!

セントリーノの実力:チップセット編

第一話 : 第二話 : 第三話 : 第四話

いろいろ書いてきたCentrinoの中身だが、
ようやく最後のチップセットの話題。


普通にPC使ってるだけだと、その存在を
意識することはまずないであろう部品だが、
CPUをはじめとする各パーツの統合管理として
必ず必要になるのがチップセットだ。

人間でいえば、脊髄みたいなもんかと。
神経の束も通ってれば、いろんな筋肉がつながった
姿勢制御の要だったりするし。


そんなチップセットは、PCが稼動する上で
マウスを動かしたら「動いたよ信号」を受け取ったり
CPUから「このデータほしい信号」を受け取って
HDDにアクセスし、その結果を返したりと
いろんなことの橋渡しを仕事にしている。

なんでそんなパーツがCentrinoの一部として
「重要な位置づけ」となっているか、だが。


CPUとネットワークコントローラをつなぐから、
というのも当然重要な内容であるが、
実は電源管理にあるのでは、と思われる。

ノートPCを使う上で、バッテリ駆動時の
電源効率は避けて通れない課題。
チップセットには、電源回りのパーツを
適切にコントロールする役割もある。


例えば、ブラウザでどこかのサイトを見るときに
アクセス~表示完了までの「仕事中」は
いろんなパーツをフル稼働させていても、
表示完了後にサイトを「見てるだけ」の時には
ちょっと休んでもらってても構わない。

特にWindowsみたいな、いろいろできるOSは、
見えないところでいろんな処理が動いてるので
こういった細かい最適化処理が最終的に
バッテリ駆動時間をより長くしてくれる。


というわけで、ここまで書いてきた
CPU・ネットワークコントローラ・チップセットの
適切な組み合わせであるCentrinoは
ノートPCに求められるいろんな条件を
まとめて満たす安心設計なんですよ、と
自信をもって言えるようになるわけですな。

まぁ、ノートPCの購入検討に
ヨドバシとかビックに代表されるような
家電量販店を考えてる場合であれば、
おそらくほとんどCentrinoロゴがついてるので
あまり意識することはないかもしれないが、
ドスパラやマウスあたりのショップ・自作系だと
チップセットにnVidiaのが使われてたり、
CPUがAMDのだったりすることも珍しくなく、
その場合はCentrinoロゴが貼ってない。


もちろん、CentrinoロゴのないノートPCでも
十分な性能を発揮してくれるだろうし、
使用目的によって(3Dゲームをがっつり、とか)は
そっちのほうが製品としていいかもしれない。

が、そこまで気にせずに便利さを求めるなら
とりあえずCentrinoロゴつきを買っておけば
「変なモン買っちまった!!」という事態は
比較的避けられるんじゃないかと。


テレビの通販番組はそれでも要注意だが。www


2008-12-22 15:13:50投稿者 : 隼人(Bass)
この記事のURL コメント(0) nice!

セントリーノの実力:無線LAN編

第一話 : 第二話 : 第三話
前回はCPUについてだったけど、
今回はネットワークコントローラの話。


PCをインターネットつないでいろいろしようと思ったら
LANケーブルとか無線LANとかeモバとか使って
「通信」ができるようにしなきゃならんわけだが、
その通信を管理してるのがネットワークコントローラ。
その名の通りである。w
例によって人間にたとえると、耳と口に相当する部分。


で、実はIntelという会社は
昔からネットワーク製品を作っていて
しかも品質・性能に定評があったりする。
今でも、サーバを買うときには、わざわざ
Intel製のカードに変更できたりとか。

それもそのはず、通信の世界には
こういう風にやりとりしましょうね、という
「取り決め」が共通の仕様としてあるわけだが
その原案を提出する業界団体に
Intel自身が入ってることも多い。


さらに、ことノートPCともなると、
通信自体の品質もさることながら
電源効率も重要な要素だったりする。
そのあたりは、次回に触れる内容である
チップセットと連携して、なるべく省電力に、とか
うまいことやってくれる(と、聞いたことがあるw)。


無線LAN登場~普及までの時期は
いくつかの無線規格が混在していて
「買ったのにつながらない」なんて事態も
平気で起こりえたもんだが、今となっては
現行の規格に一通り対応した製品ばかりなので
どれを選んだらいいか悩むということはまずないだろう。

そんな感じで、CentrinoなノートPCなら
普通に無線LANでつないで使えるぞ、と
Intelはアピールしたいというわけ。


最後はチップセットだが、これまたわかりにくいので
次回にまわすことにする。w


2008-12-18 13:47:51投稿者 : 隼人(Bass)
この記事のURL コメント(0) nice!

セントリーノの実力:CPU編

第一話 : 第二話
だんだん突っ込んだ話になってまいりました。w

よく「パソコンの性能はCPUが大事」と
呪文のように言われるが、その実態は
意外と知られていないのも事実。

まぁ、人間で言えば脳みそに相当するという
よくあるたとえの通り、重要な部分であることは
誰が説明してもその通りなんだが。


厳密にたとえるなら(ってのも変な表現だけど)、
CPUは脳みその中でも「考える」部分にあたる。
人間の頭は、考えると同時に記憶するという
非常に大事な仕事も担ってるわけだが、
PCにおいては記憶するのはHDDの役割。
CPUは「中央演算処理装置」と和訳されるとおり、
「考える」という仕事に専念するパーツだ。


現在、Intelから販売されているCPUは
・Atom
・Core 2 Duo
・Core 2 Quad
・Core i7
あたりのメイン製品をはじめ、他にも何種類かある。
こんなのをPC買うときに「選べ」といわれても
そりゃどうしたもんか困るってもんですな。

なので、前回触れたようなライトユーザが
ノートPCを買うときに困らないように
CentrinoロゴがついてるノートPCには
CPUとしてCore 2 Duoが入ってますよ、と
対象製品を限定している。


限定といっても、性能面で問題はなく
一般的な利用環境であれば十分なパワーと
ノートPCならではの省電力性において
バランスの取れた機能を提供してくれる。

俺が曲作りに使ってるMacBookだって、
CPUにはCore 2 Duoが入ってるし。


ちなみに、同じCore 2 Duoでも
処理速度によってバリエーションがある。
家電屋のPC売り場とかにあるPOPに
「CPU : 2.4Ghz」とか書いてあるアレ。

もちろん速いにこしたことはないが、
最下位のモデルでも十分なパワーだし
動画エンコードや3Dのレンダリングを
少しでも速くこなしたい、とかでなければ
処理速度の違いを体感することはまずない。


というわけで、CPUの結論としては
・Centrino2 = Core 2 Duo搭載
・一番遅い(=安い)CPUでも十分
といったところ。


お次はネットワークコントローラの話題。


2008-12-15 11:22:40投稿者 : 隼人(Bass)
この記事のURL コメント(0) トラックバック(0) nice!
26件中   1 - 20 件表示 ( 全 2ページ )
1  2