2008-01-01から1年間の記事一覧

外部リダイレクトするApacheモジュール

CentOS5.1 上の Apache2.2のサンプル。 #include "httpd.h" #include "http_config.h" #include "http_protocol.h" #include "apr_tables.h" #include "ap_config.h" /* The sample content handler */ static int myredirect_handler(request_rec *r) { apr…

QUERY_STRING をパースするApacheモジュール

CentOS5.1 上の Apache2.2のサンプル。 mod_mygetparse の作成 # apxs -g -n mygetparse # cd mygetparse # make # make install/etc/httpd/conf.d/mod_mygetparse.conf を以下のように作成 LoadModule mygetparse_module modules/mod_mygetparse.so <Location /mygetparse> SetHan</location>…

Linux でCD/DVDを使うときのまとめ

以下はCentOS5.1の場合。DVDドライブは、/dev/hdc。前準備として ffmpeg をあらかじめインストールしておく。手順は CentOS5 でffmpeg のインストールと動画の変換 - Sleepless geek in Seattle を参照。 isoイメージの作成 # mkisofs -R -J -v -o ファイル…

CentOS5.1 でXen

実サーバーの数だけホットスタンバイ機を用意するのはコスト的に許されない場合に、Xenで共通ホットスタンバイ機を用意するのはいいアイデアかも知れない。ということでXenのインストール方法をメモ。 Xenのインストール # yum groupinstall Virtualization …

yum (rpm) と apt-get の対応表

yum と rpm しか使ったことが無いので、apt-get の対応表を作ってみた。これからもどんどん加筆修正予定。 Redhat系 Debian系 Fedora22+ キャッシュの更新 apt-get update モジュールの更新 yum update apt-get upgrade パッケージの検索 yum search apt-cac…

[] Windowsの改行コード「^M」を削除する方法

CR+LF(0x0d, 0x0a)をLF (0x0a)にする。 sedの場合 # sed -e s/^v^m// foo.txt > bar.txt(Ctrl+v Ctrl+m と入力) viの場合 :%s /^v^m// trコマンド # tr -d < foo.txt > bar.txt dos2unixコマンド # dos2unix foo.txt perlで # Linux -> Windows # perl -…

phpのユニットテスト(PHPUnit)とデバッグ環境(xdebug)

PHP

最近PHPをまた使っている。PHPUnitのバージョンがかなりアップされていたので再度メモ。あと、エラー発生時にスタックトレースと変数の表示などをしてくれる xdebug も格段に簡単に入るようになっていたのでメモ。 インストール # yum install php-pear # pe…

PEAR::HTTP_Download がなかなか良い

PHP

WEBアプリでファイルのダウンロード機能を持たせたいときに、MIMEヘッダをブラウザ毎に調べて微調整するのが非常に面倒くさい。 ブラウザ毎の違いで実装を微調整するのは技術的にあまり面白く無い。でもこの退屈な作業はライブラリが吸収してくれないかなと…

Apacheモジュール 1.3から2.2への移植: mod_reqinfo

Apacheモジュール プログラミングガイド の中のサンプルプログラムをApache1.3からApache2.2に書き換えたのでそのときのメモ。 #include "httpd.h" #include "http_config.h" #include "http_protocol.h" #include "http_core.h" #include "ap_config.h" /* …

Apache 本体の関数プロトタイプ一覧

# grep AP_DECLARE *.h ap_config.h: * AP_DECLARE_STATIC is defined when including Apache's Core headers, ap_config.h: * @see AP_DECLARE_EXPORT ap_config.h: * AP_DECLARE_STATIC and AP_DECLARE_EXPORT are left undefined when ap_config.h:# defi…

apacheモジュール作成のまとめ

かなり自分用。 hello world の作成 # apxs -g -n hello <- これで雛形ができる。 # cd hello # make # make install/etc/httpd/conf.d/mod_hello.conf を以下のように作成 LoadModule hello_module modules/mod_hello.so <Location /hello> SetHandler hello </Location>apache 再起動&…

APR 関数プロトタイプ一覧

# grep APR_DECLARE *.h apr_allocator.h:APR_DECLARE(apr_status_t) apr_allocator_create(apr_allocator_t **allocator); apr_allocator.h:APR_DECLARE(void) apr_allocator_destroy(apr_allocator_t *allocator); apr_allocator.h:APR_DECLARE(apr_memnod…

apache2.2のソースに付属されてくるmod_example.c

自分用に転載 /* Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licen…

ディスクレス 1CD Linux ロードバランサー

Linux LVS + Keepalived を使ったロードバランサーをKnoppix上に作って、故障しづらいディスクレスのロードバランサーを作ってみた。 Knoppixのカスタマイズは、「KNOPPIXを用いたLaTeX環境の構築とその活用」(http://www.ntt.co.jp/qos/tools/) をほとんど…

CentOS5.1 64ビット版の整数のビット長

テストコード #include <stdio.h> int main(){ printf("int is %d bit.\n", sizeof(int)*8 ); printf("long is %d bit.\n", sizeof(long)*8 ); printf("long long is %d bit.\n", sizeof(long long)*8 ); }結果 int is 32 bit. long is 64 bit. long long is 64 bit.l</stdio.h>…

CentOS5.1 用のApache1.3のRPM作成

checkinstall というプログラムを使えば、ソースファイルから任意のプラットフォーム向けのRPMやdebファイルを作成するできるらしい。実に胡散臭い。でも試してみたのでそのときのメモ。 準備 checkinstall のRPMを rpmfind.net などから探してインストール…

qpsmtpd のインストール メモ

PerlでできたSMTPサーバー qpsmtpd をCentOS5.1にインストールした時のメモ。これを使えば、SpamAssassinや、ClamAVなどをプラグインしたり、自分で書いたプログラムを簡単にプラグインできる。 インストール # yum -y install postfix system-switch-mail #…

ドメイン名、ホスト名、IPアドレスから国名を調べる方法

GeoIPを使えばできる。 インストール方法 CentOS # yum -y install GeoIP-devel GeoIP-data Ubuntu $ sudo apt-get install geoip-binperlからも使いたい場合は以下も。 # perl -MCPAN -e "install Geo::IP" 使い方 # geoiplookup www.yahoo.com GeoIP Count…

いらないデーモンの一括削除

仕事がら、しょっちゅうVMware上にCentOSをセットアップするのだけど、毎回、いらないデーモンを削除するのがめんどくさいのでよく使うコマンドをメモして再利用する。 D=(gpm messagebus irqbalance haldaemon yum mdmpd nscd anacron spamassassin openibd…

Keepalived + LVS + CentOS4 でロードバランサー(DSR)

keepalived は、1.1.15からinclude が使えるようになったので、設定が簡単になったのでお勧め。ありがとうid:stanaka さん。VIP は、 10.0.7.100設定は以下のとおり。(NATの時とほとんど同じだけどVIPを持っているマシンは無い。) WebDB Press vol37 では…

Keepalived + LVS + CentOS4 でロードバランサー(NAT)

keepalived は、1.1.15からinclude が使えるようになったので、設定が簡単になったのでお勧め。ありがとうid:stanaka さん。設定は以下のとおり。 種別 ホスト名 IPアドレス デフォルトゲートウェイ 備考 クライアント cl0 10.0.0.173 通常通り ロードバラン…

Semaphore (セマフォ) のサンプル

#include <unistd.h> #include <stdlib.h> #include <stdio.h> #include <sys/types.h> #include <sys/ipc.h> #include <sys/sem.h> #if defined(__GNU_LIBRARY__) && !defined(_SEM_SEMUN_UNDEFINED) /* union semun is defined by including <sys/sem.h> */ #else /* according to X/OPEN we have to define it ourselves…</sys/sem.h></sys/sem.h></sys/ipc.h></sys/types.h></stdio.h></stdlib.h></unistd.h>

fcntl を使ったファイルロック

fcntl を使ったファイルロックであれば、NFS上のファイルでもロックできる(らしい。) 以下はテストコード。 #include <unistd.h> #include <stdlib.h> #include <stdio.h> #include <fcntl.h> #include <sys/stat.h> int main(int args, char** argv ){ int file_desc; struct flock region; file_desc = open</sys/stat.h></fcntl.h></stdio.h></stdlib.h></unistd.h>…

bonnie++を使ったベンチマーク結果の見方

ベンチマーク実行方法 目的のディレクトリに移動して、コマンドを実行。 # cd /mnt/fs01 # bonnie++ -u 0:0 bonie++ の結果の見方 http://www.textuality.com/bonnie/intro.html の一部を勝手に翻訳。1. Sequential Output 1.1 Per-Character ファイルは put…

CentOS でJumbo Frameの設定方法

iSCSI などを使うときはJumbo Frame化することでパフォーマンスアップが期待できる。 ただし、サーバー、クライアント、経由するSwitchやルータすべてが Jumbo Frame に対応していなければパケットは破棄されて到達できない。一時的な設定変更であれば、以下…

CentOS5.1 上に iSCSI SAN をセットアップした時のメモ

iSCSI SAN の使い方としては、まず、iSCSIハードの初期化を行い、iSCSI Initiator というソフトを使って、リモートハードディスクを検出してからマウントする。 Windowsの場合は、iSCSI Initiator がMicrosoftのサイトからダウンロードできる。WindowsXP Pro…

Web-to-Ticketの続き

Web-to-Ticket を実現する簡単なCGIを作成した。 #!/usr/bin/perl use strict; use CGI; use TracTicket; my $q = new CGI; print $q->header; # for Basic Authentication my $ticket = TracTicket->new('https://trac.rukatan.com/newticket', 'trac', 'tr…

Web-to-Ticketの続き

Web-to-Ticket の続き Web-to-Ticket を実現する簡単なCGIを作成した。 #!/usr/bin/perl use strict; use CGI; use TracTicket; my $q = new CGI; print $q->header; # for Basic Authentication my $ticket = TracTicket->new('https://trac.rukatan.com/ne…

シャットダウンのショートカット、リモートホストのシャットダウンなど

Windowsにも、shutdown.exe という便利なコマンドがあるようだ。 これを使えば、シャットダウン用のショートカットアイコンの作成もできるし、リモートマシンのリブート用のショートカットもできる。 C:\>shutdown Usage: shutdown [-i | -l | -s | -r | -a]…

CentOSからWindowsのドライブをマウントする方法

Linux側から、windowsやsambaのドライブをマウントできるらしいのでやってみた。 # mount -t cifs -o codepage=cp932,iocharset=utf8,username=yoshifumi1975,password=****** //192.168.211.2/temp /mnt/windows# ls -l /mnt/windowsで日本語のファイル名も…