CentOS5.1 上のPHPでCGIを書く

PHP

phpコマンドには、CLIバージョンとCGIバージョンが存在していることを発見した。 何てわかりにくい言語なんだろう、phpは。 ということで、CentOS5.1にデフォルトでついてくるphpでCGIを書く場合にはまった点をメモ。/etc/php.ini を以下のように変更する。 …

何もしないOutputfilterのサンプル

http://asp.mi.hama-med.ac.jp/web/ のソースをほとんどそのままコピー。これを元に改造していく。いつものように、 # apxs -g -n myoutputfilter mod_myoutputfilter.conf LoadModule myoutputfilter_module modules/mod_myoutputfilter.so SetOutputFilter…

GDBのまとめ

かなり自分用 起動・終了など コマンド 備考 起動 gdb プログラムファイル coreファイル付きで 起動 gdb プログラムファイル core 実行中のプロセスをデバッグする gdb プログラムファイル プロセスID 実行中のプロセスをデバッグする attach プロセスID 実…

POSTされたデータをパースするApacheモジュール

CentOS5.1 上の Apache2.2のサンプル。libapreq2 を使用。 libapreq2 のインストールには、あらかじめEPELレポジトリの追加が必要。 # rpm -ivh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-1.noarch.rpm # yum install libapreq2-de…

キーボードから文字列([a..zA..Z0..9])を入力し、これらの文字列を昇順・降順にソートする

有名な 「15 Exercises for Learning a new Programming Language」でPythonの練習。3問目。 #!/usr/bin/env python2.5 import sys import re #1行読み込む line = sys.stdin.readline() #正規表現での文字列置き換え line = re.sub("[^0-9A-z]", '', line)…

フィボナッチ数列、二種類の変数の値を入れ替える、数字の中から最大値・最小値を探す

有名な 「15 Exercises for Learning a new Programming Language」でPythonの練習。2問目。 フィボナッチ数列 #!/usr/bin/env python2.5 import sys import string def fib(n): if n==0: return 0 if n==1: return 1 return fib(n-2) + fib(n-1) for i in …

無限ループ内に1,2,3,...を出力させ、このループを特定のキー入力で止める。

有名な 「15 Exercises for Learning a new Programming Language」でPythonの練習。1問目。 fork を使ったバージョン #!/usr/bin/env python2.5 import os import sys import signal import time pid = os.fork() if pid == 0: i = 1 while True: print i …

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

CentOS5.1 上の Apache2.2のサンプル。 #include "httpd.h" #include "http_config.h" #include "http_protocol.h" #include "ap_config.h" static int myinternalredirect_handler(request_rec *r) { ap_internal_redirect("/hello", r); return OK; } stat…

外部リダイレクトする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>