読者です 読者をやめる 読者になる 読者になる

MySQL のGDBによるデバッグ環境構築メモ

MySQL5.1からは、自作のストレージエンジンや自作の関数用のAPIが公開されている。 自作のストレージエンジンは気軽には作れないと思うが、自作の関数については検討の価値ありだと思う。 その際に役立つかもしれないデバッグ環境の構築メモ。その前に、ここ…

MySQL のソースビルド

最近 が評判が良いので読んでいる。そこにMySQLのソースレポジトリへのアクセス方法が書かれている。 とりあえず、レポジトリをローカルに作ってテストしてみたのでそのときのメモ。 環境設定 Understanding MySQL Internals によると、以下の手順でローカル…

Linuxのiscsiadm コマンドとMicrosoftのiscsicli.exe コマンドの対応表

iSCSI イニシエータのコマンドをまとめてみた。Windows版もなかなか充実している。 操作 Linux Windows ディスカバリ iscsiadm -m discovery -t sendtargets -p IPアドレス iscsicli.exe AddTargetPortal - IPアドレス ポート番号 ターゲット一覧 iscsiadm -…

Microsoft のiSCSI Initiatorのコマンドライン・インタフェース iscsicli.exe の使い方

ディスカバリ対象を追加 > iscsicli AddTargetPortal IPアドレス ポート > iscsicli AddTargetPortal 10.0.7.201 3260 ターゲット一覧 > iscsicli ListTargets T ログイン > iscsicli LoginTarget iqn.2008-09.com.example:dev.vg00.lv00 T * * * * * * * * …

Vimの基本設定のまとめ

Vim

Global設定ファイル Linux /usr/share/vim/vimrc Windows c:\Program Files\vim\vimrc :echo $VIMで確認できる。 Personal設定ファイル Linux /home/yoshifumi1975/.vimrc Windows c:\documents and settings\yoshifumi1975\_vimrc :echo $HOMEで確認できる…

iSCSI SAN サーバーの構築メモ

EMC、NetAppなど、iSCSIのSANがいい感じ、でも高い。それならオープンソースで、ということでiSCSI Enterprise Target を入れてみた。OSはCentOS5.2 インストール http://iscsitarget.sourceforge.net/ から、最新版のソースをダウンロード。RPMの作成はその…

シェルは使わせずに scp/sftp のみ公開したい場合

うちのサーバー(CentOS5)はわけあってWEBサーバーが立てられないが、ファイルをダウンロードさせてあげる必要があり、scpだけを許可する方法を探したらrssh (restricted secure shell) というのがあったので使ってみた。 install rpmforgeのレポジトリが入っ…

EeePC 2G Surf (Asus eee PC の北米仕様バージョン)の日本語化

http://www.potech.jp/pote/archives/2007/10/30-024620.php と http://hamada.typepad.jp/blog/2008/03/eee-pc-69f7.html を参考にしたら簡単に日本語化できたのでその時のメモ。 1. Ctrl + Alt + T でターミナル起動 2. sudo su - 3. vi /etc/apt/sources.…

Perl でsetuid されたCGIの実行

CentOS5.1で、setuidされたPerlのCGIを実行したところ、見慣れないエラーが出て失敗する。 Can’t do setuid (cannot exec sperl)ググったところ、どうやら、CentOSに付属されているperlでは、setuidされたCGIは実行できず、別途、setuid用のperlをインストー…

mod_phpが使用する php.ini のパスを設定する方法

PHP

httpd.conf の中で以下のように設定できる。グローバルに設定されるので、VirtualHost等では使えない。 PHPIniDir /usr/local/etc/php.ini

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>

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で日本語のファイル名も…

CentOS5 でffmpeg のインストールと動画の変換

install rpmforgeのレポジトリの追加 # wget http://dag.wieers.com/packages/rpmforge-release/rpmforge-release-0.3.6-1.el5.rf.i386.rpm # rpm -Uhv rpmforge-release-0.3.6-1.el5.rf.i386.rpmffmpeg のインストール # yum -y install ffmpeg # yum -y in…

mixiの「C/C++の課題丸投げ」コミュニティから「最大公約数の関数」の問題

C

最大公約数に関する次の関係を使って、2つの整数aとbを入力して、それらの最大公約数を求める整数型再帰関数GCD(a,b)を再帰関数を用いて作ってください。 GCD(a,b)=a (a=b) =GCD(a-b,b) (a>b) =GCD(a,b-a) (a<b) LinuxでC言語です。できれば今週中にお願いします。回答例 #include <stdio.h> int gcd(int a, int b){ if(a</b)>…