C言語でprefork型のデーモンを書く(2): 非デーモン prefork シグナルハンドラ付き

1つの親プロセスとたくさんの子プロセスという構成。親プロセスに SIGTERM を送ると、すべての子プロセスをきれいに終了させた後で終了するようにシグナルハンドラを追加したサンプル。 my_prefork_signal.c シグナルハンドラ付きのソース #include <stdio.h> #includ</stdio.h>…

C言語でprefork型のデーモンを書く(1): 非デーモン prefork サンプル

Cで書かれた prefork デーモン(daemon)のちょうど良いサンプルが見つからなかったので自分で書く。 ちょうど良いお手本がないので PerlのソースをCに移植した。 プラットフォームはCentOS5.2。 my_prefork.c ただの prefork のサンプル(デーモン化はしてい…

Cでハッシュテーブルを使うときのメモ

C

Cでハッシュテーブルを使いたくなったので、調べてみたら APR(Apache Portability Runtime) のハッシュテーブルのパフォーマンスが良いらしい。名前的に移植性も良さそうな気がする。 簡単な使い方を兼ねたサンプルをメモがわりに残す。プラットフォームはCe…

Windows Server {2000,2003,2008} でDSRを行う方法

「Keepalived + LVS + CentOS4 でロードバランサー(DSR) - Sleepless geek in Seattle」あたりで、Keepalived を使ったCentOS のロードバランスは簡単にできるようになったが、Windows Server の設定はどうやるんだろうと調べてみたら、こんな素敵なエント…

Postfixのコンテンツフィルターを複数設定する方法

Postfixには、ウィルススキャン や アンチSPAM などをフィルターコンテンツフィルターという方法でプラグインできる。 その際に、amavisd-newや自分で作ったカスタムフィルターなどを組み合わせたいときには、複数のコンテンツフィルターを併せて設定すれば…

メール1通あたりの最大サイズの設定

main.cf の最後に以下の行を追加。単位はバイト message_size_limit = 10240000

Ubuntu 8.04 LTS 日本語環境インストール メモ

しばらくUbuntuを使ってみて、動画も音楽も問題ないことが分かったので、今日うちで長年愛用してきた、Dell Inspiron 5100 のWindowsXPを消してUbuntu8.04LTSをインストールした。本当はUbuntu8.10が最新だけど、マウスやキーボードのAlt+Tabが効かなくなっ…

5分で始める GoogleAppEngine メモ

Google App Engine を Ubuntu8.04 上にセットアップしたときのメモ。本当に5分でできちゃうのですごく拍子抜けだった。(CentOS 5はPythonのバージョンが2.4.3なので、駄目かもしれない。) Download と インストール http://code.google.com/appengine/downlo…

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

Perl のワンライナーで、-a オプション(AWK風に使える)を使って以前書いた、「 いらないデーモンの一括削除 - Sleepless geek in Seattle」 を改良した。いらないデーモンを指定して削除するのではなく、必要なデーモンを指定してそれ以外を削除するように…

Web::Scraper を使ってテレビ番組表を毎日メールする

コマネチ大学数学科のような深夜番組を予約録画していると時々時間がずれていて非常に悲しいことになる。 かといって毎日番組表をチェックするのもめんどくさい。 そこで、Web::Scraper のお試しも兼ねて、番組表を見やすく加工して自分宛にメールするように…

CPAN の設定変更方法

CPANの起動 # perl -MCPAN -e shell モジュール ダウンロード用のFTP/HTTP サイトの追加 http://www.cpan.org/SITES.html から調子の良さそうなサイトを選んで、 cpan> o conf urllist push ftp://example.com/pub/CPAN cpan> o conf commitとやります。 モ…

画像を埋め込んだHTMLメールの出し方

MIME::Lite を使えば簡単に画像埋め込みのHTMLメールが出せる。 use strict; use warnings; use MIME::Lite; my $img = "foo.gif"; my $msg = MIME::Lite->new( From =>'yoshifumi1975@example.com', To =>'yoshifumi1975@example.com', Subject =>"HTML mai…

Redhat系とDebian系の Apacheの設定方法のメモ

Ubuntu というかDebian系では、Apacheモジュールの設定方法がRedhat系と若干ことなるのでメモ。 Debian系 /etc/apache2/mods-available 利用可能な(有効になっていない)モジュールの設定ファイルが入っている /etc/apache2/mods-enabled 有効化されたモジ…

Thunderbird でカレンダーが使えない

Ubuntu8.04 LTSにて、Thunderbird を使おうと思ったがカレンダーが使えない。 調べてみると libstdc++5 が必要とのこと。 参照: Lightning not working with Thunderbird in Ubuntu 8.04 • mozillaZine Forumslibstdc++5 のインストール $ sudo apt-get inst…

qpsmtpd のプラグイン connection_shaper を作った

mod_perlのメールサーバー版とも言える qpsmtpd 用のAnti Spamのプラグインを作りました。 SMTP接続の頻度をカウントして、指定した以上の接続を試みる相手はスパマーとみなして一定時間接続を拒否します。メールサーバーを複数台運用している場合でも大丈夫…

memcached のまとめ

memcached のまとめ。バージョン 1.2.4 設定 コマンド <key> <flags> <exptime> <bytes> [noreply]\r\n cas <key> <flags> <exptime> <bytes> <cas unqiue> [noreply]\r\nexptime は秒。0にすると無期限になる。 コマンド 説明 set データを保存 add まだデータが無い場合のみ保存 replace 既にデータがある場合のみ保存 append 既</cas></bytes></exptime></flags></key></bytes></exptime></flags></key>…

php のセッションにmemcached を使う

CentOSの場合 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.rpm# yum install li…

PDO で1MB以上のカラムを取得できない場合

PHP

PDOでMySQLのLONGBLOBカラムの値を取得しようとしたら、綺麗に1MBのところで切れる。いろいろ検索すると、http://bugs.php.net/bug.php?id=36345&edit=1 や、http://bugs.php.net/bug.php?id=38015 が見つかった。 PDO::MYSQL_ATTR_MAX_BUFFER_SIZE がデフ…

example.com とか予約済みドメイン

DNS

メーリングリスト等でメールアドレスのサンプルで使うドメインは、 example.com と相場は決まっているけど、 http://www.example.com/ を見ると以下のように書いてある。 You have reached this web page by typing "example.com", "example.net", or "examp…

蒟蒻ゼリー事件で思ったこと

マンナンライフ社は(かわいそうだけど)叩かれてOK。でも製造停止するっていうのは企業が取るべき対応方法として違うんじゃないかと思う。 理想は、 (法律的には過失が無くても)事故が起きた製造元の企業が叩かれる ↓ (企業が保身や社会的な責任も含め)…

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