(2005-09の一覧)
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
Cygwin に screen インストール(リベンジ)
2005-09-25-3 / カテゴリ: [win][cygwin][screen] / [permlink]
[2005-06-09-1]の続き。なんとなく再チャレンジ。
で、調べてみると、conftest プロセスが実行中で削除できないみたい。
rm は効かないが、mv は効くようなので、configure スクリプトで rm のところを mv に変えてみた。
変更点は、4263 行目付近の
すると、configure はとりあえず正常に終了した。
が、make すると、
…続く orz
configure: checking fifos... - your fifos are usable rm: cannot remove `conftest.exe': Permission deniedやっぱ同じところでエラーになり、conftest.exe が削除できない。
で、調べてみると、conftest プロセスが実行中で削除できないみたい。
rm は効かないが、mv は効くようなので、configure スクリプトで rm のところを mv に変えてみた。
変更点は、4263 行目付近の
fi rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi rm -f /tmp/conftest*の直後に
if [ -f conftest.exe ]; then mv conftest.exe /tmp/zzz fiと追加。
すると、configure はとりあえず正常に終了した。
が、make すると、
hmiyazaki@chaource:/usr/local/src/screen-4.0.2$ make CPP="gcc -E " srcdir=. sh ./osdef.sh AWK=gawk CC="gcc -g -O2" srcdir=. sh ./comm.sh AWK=gawk srcdir=. sh ./term.sh gcc -c -I. -I. -g -O2 screen.c gcc -c -I. -I. -g -O2 ansi.c gcc -c -I. -I. -g -O2 fileio.c gcc -c -I. -I. -g -O2 mark.c gcc -c -I. -I. -g -O2 misc.c misc.c: In function `xsetenv': misc.c:619: error: 関数 `setenv' への引数が少なすぎます make: *** [misc.o] エラー 1
…続く orz
Referrer (Inside):
[2007-03-16-1]
ck の起動
2005-09-25-2 / カテゴリ: [win][cygwin][アプリ] / [permlink]
単に ck.exe を起動すると bash は起動するが、PATH の設定が win の先にきてしまい、find や telnet あたりで cygwin のコマンドが実行されない。
ので、ck.exe の起動は
(ck.exe は /usr/local/bin/ck.exe にある)
起動が少し重くなった (/_-;
ので、ck.exe の起動は
C:\cygwin\bin\bash.exe --login -c ck.exeとした。
(ck.exe は /usr/local/bin/ck.exe にある)
起動が少し重くなった (/_-;
man で fgets: No such file or directory
2005-09-25-1 / カテゴリ: [win][cygwin] / [permlink]
いつのまにか man が全く使えなくなった。perldoc も使えん。
検索すると、http://www.okisoft.co.jp/esc/cygwin-7.html こんなページを発見。エラーメッセージもほぼ同等。
というわけで、/etc/defaults/usr/share/misc/man.conf を /usr/share/misc/man.conf にコピー。
すると、
よくわからんので strace してみたがやはりよくわからん。
(man のトレースは pid がわからんので、bash をトレース。てか、cygwin にも strace あるのね)
で、ためしに違うもので man してみると
まぁ、これなら調べられないこともないかと、System command 以下を手で実行してみる。
すると、/usr/bin/nroff がコケる。
で、いろいろ見てたら、/bin/sh がない… なんでだろ。
とりあえず、
perldoc も。
hmiyazaki@chaource:~$ man ls Unrecognized line in config file (ignored) KNROFF /usr/bin/groff -Tkorean -mandoc Unrecognized line in config file (ignored) KNEQN /usr/bin/eqn -Tkorean fgets: No such file or directory Error reading man page /usr/share/man/man1/ls.1.gz No manual entry for lsgroff や man やら reinstall してみてもとくに変化なし。
検索すると、http://www.okisoft.co.jp/esc/cygwin-7.html こんなページを発見。エラーメッセージもほぼ同等。
設定ファイルは,原則として最初にインストールされたものが使われます。パッケージを更新したとき,昔のままの設定ファイルが不具合を起こすことがあります。最近の例では,10 月に man パッケージが man-1.5o-1 に更新されたとき,この現象が起こりました。更新後,man コマンド実行のたびにエラーメッセージが表示されるようになったのです。
というわけで、/etc/defaults/usr/share/misc/man.conf を /usr/share/misc/man.conf にコピー。
すると、
Unrecognized line in config file (ignored) KNROFF /usr/bin/groff -Tkorean -mandoc Unrecognized line in config file (ignored) KNEQN /usr/bin/eqn -Tkoreanは出力されなくなり、
hmiyazaki@chaource:~$ man ls fgets: No such file or directory Error reading man page /usr/share/man/man1/ls.1.gz No manual entry for lsって、fgets のエラーってなんだよ… そんなファイルかディレクトリねーよって、意味わかんねーし。
よくわからんので strace してみたがやはりよくわからん。
(man のトレースは pid がわからんので、bash をトレース。てか、cygwin にも strace あるのね)
で、ためしに違うもので man してみると
hmiyazaki@chaource:/bin$ man less Error executing formatting or display command. System command (cd "/usr/man" && (echo ".pl 1100i"; /usr/bin/cat '/usr/man/man1/less.1'; echo ".\\\""; echo ".pl \n(nlu+10") | /usr/bin/tbl | /usr/bin/nroff -c -mandoc 2>/dev/null | /usr/bin/less -isrR) exited with status 127. No manual entry for lessって感じ。
まぁ、これなら調べられないこともないかと、System command 以下を手で実行してみる。
すると、/usr/bin/nroff がコケる。
bash: /usr/bin/nroff: /bin/sh: bad interpreter: No such file or directoryというわけで /usr/bin/nroff を見るが、1行目は特におかしいところなし。
で、いろいろ見てたら、/bin/sh がない… なんでだろ。
とりあえず、
$ cd /bin $ ln -s bash.exe sh.exeしたら、全て直った。
perldoc も。
2005-09-24 Sat (他の年の同じ日: 2012)
V603SH テレビの録画
2005-09-24-1 / カテゴリ: [diary][携帯] / [permlink]
金田一少年の事件簿の録画予約を忘れた。
幸い現在の仕事場は東京タワーが目視できる位置にあり、ケータイTVの電波の入り具合はすこぶる良い。
とはいえ、仕事中(3連働)で見れないので、手持ちの 256MB SDカードに録画してみる。
40分くらい経過した時点(よく覚えていない。気づいた時にって感じ)でバッテリがなくなった orz
とりあえず、開発の仕事でつかっているデータ通信ケーブル(充電機能付)をコッソリ拝借し、録画続行。
256MBでたぶん1時間くらいは録画できるかも。
まぁ、今月いっぱいで、ケータイでの視聴は到底不可能な電波しか入らない元の職場(現在出向中みたいなモン)に戻ってしまうので、もうこんなことすることはないか。
教訓
というか、
いや、
幸い現在の仕事場は東京タワーが目視できる位置にあり、ケータイTVの電波の入り具合はすこぶる良い。
とはいえ、仕事中(3連働)で見れないので、手持ちの 256MB SDカードに録画してみる。
40分くらい経過した時点(よく覚えていない。気づいた時にって感じ)でバッテリがなくなった orz
とりあえず、開発の仕事でつかっているデータ通信ケーブル(充電機能付)をコッソリ拝借し、録画続行。
256MBでたぶん1時間くらいは録画できるかも。
まぁ、今月いっぱいで、ケータイでの視聴は到底不可能な電波しか入らない元の職場(現在出向中みたいなモン)に戻ってしまうので、もうこんなことすることはないか。
教訓
ケータイ用USB充電ケーブル(daisoで入手)を常備する
空き容量の多いSDカードを常備する
都会で働く
リモートで録画予約できるレコーダを用意する
というか、
見たいテレビはちゃんとチェックする
いや、
定時に帰る
休日に働かない
2005-09-23 Fri (他の年の同じ日: 2006 2011)
memcpy memset
2005-09-23-2 / カテゴリ: [programming][c] / [permlink]
備忘録
いつのまにかゴッチャになってて、
しかも win 上だとエラーになるが、実際に動作させるデバイスではエラーにならんかったので気づかなかった。
void* memcpy(void *dest, const void *src, size_t count);
src が指してるアドレスから count バイト分を dest へコピーする。
void* memset(void *dest, int c, size_t count);
dest が指してるアドレスから count バイト分を c で埋める。
いつのまにかゴッチャになってて、
memset(p_data, 0, n_datasize);とすべきところを
memcpy(p_data, 0, n_datasize);と何箇所も記述していた…
しかも win 上だとエラーになるが、実際に動作させるデバイスではエラーにならんかったので気づかなかった。
メモリのポインタを受け渡しする関数の設計
2005-09-23-1 / カテゴリ: [programming][c] / [permlink]
C言語でポインタを引数に関数を呼び出し、関数での処理結果をそのポインタにセットしてもらうような場合(特に文字列)、
(1) 呼び出し元で初期化して(\0詰等)関数をよびだす
(2) 関数内で初期化して(\0詰め等)処理する
と
(1) 呼び出し時に有効なメモリのサイズも渡す
(2) サイズは固定で関数内で注意する
あたりに気をつける。
というか、共通の設計思想でコーディングする。
汎用的という点では、前者は (1) 後者も (1)
memcpy やら strncpy なんかのように。
と、今日教わった。
今の会社じゃ誰も教えてくれないこと…
(1) 呼び出し元で初期化して(\0詰等)関数をよびだす
(2) 関数内で初期化して(\0詰め等)処理する
と
(1) 呼び出し時に有効なメモリのサイズも渡す
(2) サイズは固定で関数内で注意する
あたりに気をつける。
というか、共通の設計思想でコーディングする。
汎用的という点では、前者は (1) 後者も (1)
memcpy やら strncpy なんかのように。
と、今日教わった。
今の会社じゃ誰も教えてくれないこと…
POST されるデータサイズの制限
2005-09-21-1 / カテゴリ: [programming][CGI][perl] / [permlink]
CGI.pm では、$CGI::POST_MAX に値(byte単位)を設定することで、そのサイズを超えた POST データのハンドリングができる。
指定サイズを超えるデータが POST された場合は、cgi_error() にエラーメッセージがセットされるので、
$CGI::POST_MAX = 1024 * 1024 * 5; # 5MB $obj_cgi = new CGI; :CGI を new するより前にセットしないと無効。
指定サイズを超えるデータが POST された場合は、cgi_error() にエラーメッセージがセットされるので、
if ($msg = $obj_cgi->cgi_error) { print "Error: ", $msg, "\n"; exit; }みたいなかんじで。
署名の挿入キーバインド
2005-09-20-1 / カテゴリ: [linux][wanderlust] / [permlink]
~/.signature に予めテキストファイルを作っておく
で、
EOFでは署名の手前の[ハイフン][ハイフン][スペース][改行]が自動で挿入されるが、文書の途中だと、区切り文字は挿入されない。設定でなんとかなるかな…?
で、
C-c C-w
EOFでは署名の手前の[ハイフン][ハイフン][スペース][改行]が自動で挿入されるが、文書の途中だと、区切り文字は挿入されない。設定でなんとかなるかな…?
購読設定の保存
2005-09-19-1 / カテゴリ: [linux][wanderlust] / [permlink]
wl 実行中、folderモードで m a やら m p やらで設定した購読管理は、wl 終了時に保存するか聞かれたときに保存するか、folder モードで以下のコマンドを実行
で、~/.folders に保存される。
m C-s
で、~/.folders に保存される。
spamassassin Bayesianフィルタ 設定
2005-09-18-1 / カテゴリ: [linux][debian][メール] / [permlink]
[2005-09-14-1]の続き。
USAGE の通りに
どうやら、デフォルトで bayesian フィルタを使うようになっているようだ。設定項目のリストおよびデフォルト値は
で、とりあえず、手元の spam さんたちを spam 扱いとして DB に突っ込む。
更新された DB ファイルは
ディレクトリでなく、ファイル指定も OK みたい。
逆に、非 spam メールは --ham 指定で sa-learn を実行
とりあえず、これだけセットして、.procmailrc で fetch と同時にフィルタリングするよう設定
でもって、ケータイから1通メールを送ってみると、ヘッダにちゃんとチェック結果が追記されていた。
で、セット後数時間経過したら、ちょーど spam がキタ
BAYES_99 がベイジアンフィルタでのチェック結果ぽいな。
これから spam くるのが楽しみだ(本末転倒)
しっかし、結果として spam 認定したときのプロセスの実行がすげー重い… 十数秒はかかる。やっぱチューニング必要なのかなぁ…
設定リストメモ
http://spamassassin.apache.org/tests_3_0_x.html
USAGE の通りに
spamassassin -t < sample-nonspam.txt > nonspam.out spamassassin -t < sample-spam.txt > spam.outを一般ユーザで実行すると、~/.spamassassin 以下に
bayes_seen: Berkeley DB (Hash, version 8, native byte-order)2つのファイルができた。
bayes_toks: Berkeley DB (Hash, version 8, native byte-order)
どうやら、デフォルトで bayesian フィルタを使うようになっているようだ。設定項目のリストおよびデフォルト値は
$ perldoc Mail::SpamAssassin::Confで見れる。
で、とりあえず、手元の spam さんたちを spam 扱いとして DB に突っ込む。
$ sa-learn --spam ~/Maildir/.Junk/cur負荷と時間名はそれなりにかかる…(約2000通のメールで20分ほど)
更新された DB ファイルは
-rw------- 1 zaki zaki 176128 2005-09-18 18:17 bayes_seen -rw------- 1 zaki zaki 5242880 2005-09-18 18:17 bayes_toksこんなサイズ。
ディレクトリでなく、ファイル指定も OK みたい。
逆に、非 spam メールは --ham 指定で sa-learn を実行
$ sa-learn --ham ~/Maildir/.Friend/cur
とりあえず、これだけセットして、.procmailrc で fetch と同時にフィルタリングするよう設定
:0 fw | /usr/bin/spamassassin :0 : * ^X-Spam-Status: Yes $HOME/Maildir/.Spam/f はパイプ(|)をフィルタとみなし、w はフィルタが異常終了した場合はフィルタに渡す前の状態にする、と(man fetchmailrc)
でもって、ケータイから1通メールを送ってみると、ヘッダにちゃんとチェック結果が追記されていた。
X-Spam-Checker-Version: SpamAssassin 3.0.3 (2005-04-27) on cheddar X-Spam-Level: * X-Spam-Status: No, score=1.4 required=7.0 tests=AWL,BAYES_50,NO_REAL_NAME, PRIORITY_NO_NAME autolearn=no version=3.0.3ふーん、、、
で、セット後数時間経過したら、ちょーど spam がキタ
X-Spam-Flag: YES X-Spam-Checker-Version: SpamAssassin 3.0.3 (2005-04-27) on cheddar X-Spam-Level: **************** X-Spam-Status: Yes, score=16.8 required=7.0 tests=BAYES_99,NO_REAL_NAME, RCVD_IN_SBL,SUBJ_ILLEGAL_CHARS,URIBL_AB_SURBL,URIBL_OB_SURBL, URIBL_SBL,URIBL_SC_SURBL,URIBL_WS_SURBL autolearn=spam version=3.0.3 X-Spam-Report: * 0.0 NO_REAL_NAME From: does not include a real name * 2.9 SUBJ_ILLEGAL_CHARS Subject contains too many raw illegal characters * 3.5 BAYES_99 BODY: Bayesian spam probability is 99 to 100% * [score: 1.0000] * 0.1 RCVD_IN_SBL RBL: Received via a relay in Spamhaus SBL * [220.230.107.120 listed in sbl-xbl.spamhaus.org] * 1.0 URIBL_SBL Contains an URL listed in the SBL blocklist * [URIs: lovinyou.net] * 0.4 URIBL_AB_SURBL Contains an URL listed in the AB SURBL blocklist * [URIs: lovinyou.net] * 1.5 URIBL_WS_SURBL Contains an URL listed in the WS SURBL blocklist * [URIs: lovinyou.net] * 3.2 URIBL_OB_SURBL Contains an URL listed in the OB SURBL blocklist * [URIs: lovinyou.net] * 4.3 URIBL_SC_SURBL Contains an URL listed in the SC SURBL blocklist * [URIs: lovinyou.net]おー
BAYES_99 がベイジアンフィルタでのチェック結果ぽいな。
これから spam くるのが楽しみだ(本末転倒)
しっかし、結果として spam 認定したときのプロセスの実行がすげー重い… 十数秒はかかる。やっぱチューニング必要なのかなぁ…
設定リストメモ
http://spamassassin.apache.org/tests_3_0_x.html
2005-09-14 Wed (他の年の同じ日: 2004)
先頭の1文字を消す
2005-09-14-2 / カテゴリ: [programming][c] / [permlink]
memmove を使う
つまり、"oobarbaz[NULL]" を f のところへコピーする。
memcpy と異なり、第一引数と第二引数が重なっていても正しく動く。
末尾を消すなら、消したいところで '\0' をいれればいい。
char string[] = "foobarbaz"; memmove(string, string + 1, strlen(string));これで、[string + 1] から [strlen(string)] バイト分を [string] へコピーする。
つまり、"oobarbaz[NULL]" を f のところへコピーする。
memcpy と異なり、第一引数と第二引数が重なっていても正しく動く。
末尾を消すなら、消したいところで '\0' をいれればいい。
spamassassin インストール
2005-09-14-1 / カテゴリ: [linux][debian][メール] / [permlink]
バージョンは 3.0.3-2 (2005/09/14 現在)
debconf はなし。
メッセージに
動かすためには
うーん、次に何をすればよいのやら…
ユーザ用の実行ファイルは dpkg -L を見た感じでは /usr/bin/spamassassin と /usr/bin/spamc の2つ。man をさらっと見た限りでは spamc は smapd (daemon) とおしゃべりするコマンドかな。spamassassin がフィルタぽい。
よくわからんので、とりあえず
すると
とりあえず動作に影響がでなさそうなオプションで
-L は local test mode でサーバと接続しない(?)
で、結果は stdout に吐かれて、ヘッダの最後に
デフォルトだと、points(3.0になってる値)が5.0を超えると spam 判定されるようだ。でもって、spam 扱いになると、multipart メールになって、警告文が追加される。
Subject の書き換え("[spam]"の追加等)は
ヘッダの追加は許すが、ヘッダの書き換え・本文の書き換えは個人的にキライ。
現在の判定材料は NO_REAL_NAME, SUBJ_ILLEGAL_CHARS のみ(?)ってことかね。
って、よくみたら、/usr/share/doc/spamassassin/USAGE.gz が。
まずは
うーん、結構チューニングが面倒か?
って、ベイジアンフィルタはどうすんだ?
きっと続く。
# aptitude install spamassassin : The following NEW packages will be automatically installed: libdigest-hmac-perl libdigest-sha1-perl libhtml-parser-perl libhtml-tagset-perl libnet-dns-perl spamc The following NEW packages will be installed: libdigest-hmac-perl libdigest-sha1-perl libhtml-parser-perl libhtml-tagset-perl libnet-dns-perl spamassassin spamc 0 packages upgraded, 7 newly installed, 0 to remove and 0 not upgraded. Need to get 1194kB of archives. After unpacking 3912kB will be used. Do you want to continue? [Y/n/?]htmlメールにも対応??
debconf はなし。
メッセージに
SpamAssassin Mail Filter Daemon: disabled, see /etc/default/spamassassinとあるのでチェック。
動かすためには
ENABLED=0を 1 にせよ、とのこと。ユーザごとの設定で、システムワイドの設定をすべて上書きできるみたいなので、とりあえず 1 にして daemon start. すると 783/tcp が LISTEN した。
うーん、次に何をすればよいのやら…
ユーザ用の実行ファイルは dpkg -L を見た感じでは /usr/bin/spamassassin と /usr/bin/spamc の2つ。man をさらっと見た限りでは spamc は smapd (daemon) とおしゃべりするコマンドかな。spamassassin がフィルタぽい。
よくわからんので、とりあえず
$ spamassassin --lintを実行。rule ファイルの syntax error を報告するオプション。
すると
Created user preferences file: /home/zaki/.spamassassin/user_prefsと、なったので、ひとまず、Maildir/.Junk 以下に Thunderbird さんが振り分けてくれた spam たちで遊んでみる。
とりあえず動作に影響がでなさそうなオプションで
$ spamassassin -tL ~/Maildir/.Junk/cur/xxx-t は test mode で、レポートを追加
-L は local test mode でサーバと接続しない(?)
で、結果は stdout に吐かれて、ヘッダの最後に
X-Spam-Checker-Version: SpamAssassin 3.0.3 (2005-04-27) on cheddar X-Spam-Level: *** X-Spam-Status: No, score=3.0 required=5.0 tests=NO_REAL_NAME, SUBJ_ILLEGAL_CHARS autolearn=no version=3.0.3メール本文の後ろにpreviewと
Content analysis details: (3.0 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 0.1 NO_REAL_NAME From: does not include a real name 2.9 SUBJ_ILLEGAL_CHARS Subject contains too many raw illegal charactersというレポートが出力された。
デフォルトだと、points(3.0になってる値)が5.0を超えると spam 判定されるようだ。でもって、spam 扱いになると、multipart メールになって、警告文が追加される。
Subject の書き換え("[spam]"の追加等)は
header_rewrite Subject [spam]multipart への書き換え禁止は
report_safe 0を ~/.spamassassin/user_prefs に追加。
ヘッダの追加は許すが、ヘッダの書き換え・本文の書き換えは個人的にキライ。
現在の判定材料は NO_REAL_NAME, SUBJ_ILLEGAL_CHARS のみ(?)ってことかね。
って、よくみたら、/usr/share/doc/spamassassin/USAGE.gz が。
まずは
spamassassin -t < sample-nonspam.txt > nonspam.out spamassassin -t < sample-spam.txt > spam.outせよ、とのこと ^^; 遅いっつーの。
うーん、結構チューニングが面倒か?
って、ベイジアンフィルタはどうすんだ?
きっと続く。
Referrer (Inside):
[2005-09-18-1]
2005-09-13 Tue (他の年の同じ日: 2004 2006)
ターミナルソフトのタイトルバーにCWD(とか)を表示する
2005-09-13-2 / カテゴリ: [linux][cygwin][shell] / [permlink]
bash の場合
PROMPT_COMMAND は bash の環境変数で、bash がプロンプトを出す前に実行されるもの
Bash Prompt HOWTO
んーと、bash の PS1 とかで有効な \w とかが使えないので、ホーム以下のパスは ~ を使いたければ
追記
pwd|sed にすると、cygwin だと結構重いのでやめました。
export PROMPT_COMMAND='echo -ne "\033]0;${USERNAME}@${HOSTNAME}: ${PWD}\007"'set-language-env の設定だけど :D
PROMPT_COMMAND は bash の環境変数で、bash がプロンプトを出す前に実行されるもの
Bash Prompt HOWTO
んーと、bash の PS1 とかで有効な \w とかが使えないので、ホーム以下のパスは ~ を使いたければ
export PROMPT_COMMAND='echo -ne "\033]0;${USERNAME}@${HOSTNAME}: `pwd|sed -e s#$HOME#~#`\007"'かな。
追記
pwd|sed にすると、cygwin だと結構重いのでやめました。
Postfixインストール(sarge)
2005-09-13-1 / カテゴリ: [linux][debian][MTA][メール][Postfix] / [permlink]
計画としては、spamassassin でもいれようかと。
sarge の Postfix は 2.1.5-9 (2005/09/13現在)
で、まぁ
外向け(外からの受信/外への配送)に動かす気はないので、とりあえず debconf はほぼ全部デフォで。
General type of configuration は Local only にした。ドメインだけは、ちゃんと設定。
まぁ、ほとんどPostfix + qpopper見ながら設定。あとはmain.cf 和訳
あれ? ローカルオンリーにしたいんだったら、何も設定することがない…
しかも
これじゃ面白くないので、予定変更。
すると、debconf の途中で、relayhost parameter の設定が出現。なんだろ、これ。外部リレーの際に、まとめて特定の MTA にリレーさせる設定かなぁ。
ほかに、listen するネットワークアドレス、メールボックスのサイズ、拡張アドレスのデリミタあたりを設定。
debconf 終了後に main.cf 確認したが、relayhost parameter の項目は、
ついでなので(笑)、ほかの type も調べてみる。
Internet with smarthost を選択して、残りはデフォルト(というより Satellite system の時に選択したもの)で進めると、inet_interface が all に変わった。
まぁ、こんなとこです。
とりあえず、設定をちゃんとする。
cheddar は 192.168.1.1/24 で、192.168.1.0/24 は LAN 側。外側はのネットワークからは繋がらないようにした。
って、インストールしたあとで気づいたけど、spamassassin って単にフィルタじゃん。MTA 関係なしに動くのね。しかも Perl か。
まぁいいや、Postfix 好きだし… メインコンテンツの Postfix の文書を sarge 用に書き直す材料だと思えば…orz
sarge の Postfix は 2.1.5-9 (2005/09/13現在)
で、まぁ
# aptitude install postfix
外向け(外からの受信/外への配送)に動かす気はないので、とりあえず debconf はほぼ全部デフォで。
General type of configuration は Local only にした。ドメインだけは、ちゃんと設定。
まぁ、ほとんどPostfix + qpopper見ながら設定。あとはmain.cf 和訳
あれ? ローカルオンリーにしたいんだったら、何も設定することがない…
しかも
inet_interfaces = loopback-onlyのおかげで、LAN 内からも 25/tcp はアクセスできん。
これじゃ面白くないので、予定変更。
# dpkg-reconfig postfixにて、Satellite system に変更
すると、debconf の途中で、relayhost parameter の設定が出現。なんだろ、これ。外部リレーの際に、まとめて特定の MTA にリレーさせる設定かなぁ。
ほかに、listen するネットワークアドレス、メールボックスのサイズ、拡張アドレスのデリミタあたりを設定。
debconf 終了後に main.cf 確認したが、relayhost parameter の項目は、
relayhost = smtp.localdomainになっていた。(↑デフォルトの値)
ついでなので(笑)、ほかの type も調べてみる。
Internet with smarthost を選択して、残りはデフォルト(というより Satellite system の時に選択したもの)で進めると、inet_interface が all に変わった。
まぁ、こんなとこです。
とりあえず、設定をちゃんとする。
# postconf -n alias_database = hash:/etc/aliases alias_maps = hash:/etc/aliases append_dot_mydomain = no biff = no config_directory = /etc/postfix inet_interfaces = $myhostname mailbox_command = procmail -a "$EXTENSION" mailbox_size_limit = 0 mydestination = mail.example.org, cheddar, localhost.localdomain, localhost myhostname = cheddar mynetworks = 127.0.0.0/8 192.168.1.0/24 myorigin = /etc/mailname recipient_delimiter = - relayhost = smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
cheddar は 192.168.1.1/24 で、192.168.1.0/24 は LAN 側。外側はのネットワークからは繋がらないようにした。
って、インストールしたあとで気づいたけど、spamassassin って単にフィルタじゃん。MTA 関係なしに動くのね。しかも Perl か。
まぁいいや、Postfix 好きだし… メインコンテンツの Postfix の文書を sarge 用に書き直す材料だと思えば…orz
2005-09-12 Mon (他の年の同じ日: 2006)
ck - terminal emulator
2005-09-12-2 / カテゴリ: [win][cygwin][アプリ] / [permlink]
ck - terminal emulator
良いね。軽くて。
UTF-8対応TeraTerm Proで、telnet/ssh/cygwin 併用してたけど、cygwin のターミナルなら、こっちがいいかも。出力が EUC な cygwin コマンドと、win の SJIS な出力が、何も考えなくてもちゃんと表示してくれるとこが良い。
TeraTermの半透明は、タイトルバーまで半透明になってちょっと気持ち悪かったんで…。でも、skinを使わないと半透明できないぽいのかな。まぁ別にいいか。
あ、ck 起動して、そこから /usr/bin/ssh とか使えば関係なくなる…?
良いね。軽くて。
UTF-8対応TeraTerm Proで、telnet/ssh/cygwin 併用してたけど、cygwin のターミナルなら、こっちがいいかも。出力が EUC な cygwin コマンドと、win の SJIS な出力が、何も考えなくてもちゃんと表示してくれるとこが良い。
TeraTermの半透明は、タイトルバーまで半透明になってちょっと気持ち悪かったんで…。でも、skinを使わないと半透明できないぽいのかな。まぁ別にいいか。
あ、ck 起動して、そこから /usr/bin/ssh とか使えば関係なくなる…?
IQテスト
2005-09-12-1 / カテゴリ: [diary] / [permlink]
眠れないのでやってみた。(05:30ほど)
http://www.unnmei.com/iq.html
ほぅ・・・
コードの読み書きはある程度できると思うけど設計は経験ないなぁ(違
そんな自分は(適材適所されていないのか)営業(誰が何と言おうと現在の所属課は営業)所属…(しかし仕事は開発…わけわからん)
はやく自己PR文書かなきゃ…
http://www.unnmei.com/iq.html
診断結果:
貴方のIQ値は 160点中 101点で
<上位 25%/世界人口>です。
貴方はなかなか優秀な頭脳をお持ちです。とても器用で、要領よく
物事をこなせる人ではないでしょうか?
貴方にピッタリの職業は
エンジニア・設計士
です
ほぅ・・・
コードの読み書きはある程度できると思うけど設計は経験ないなぁ(違
そんな自分は(適材適所されていないのか)営業(誰が何と言おうと現在の所属課は営業)所属…(しかし仕事は開発…わけわからん)
はやく自己PR文書かなきゃ…
Referrer (Inside):
[2006-03-20-2]
ばんごはん
2005-09-11-2 / カテゴリ: [diary] / [permlink]
ハヤシライス作った。
材料(2〜3皿分)
明日の夕食も決まりだな。
材料(2〜3皿分)
豚肉 | 250g | 肉じゃがの残り |
たまねぎ | 2個 | 138/2 yen |
じゃがいも | 1個 | 肉じゃがの残り |
ルウ | 1/2箱 | 178/2 yen |
明日の夕食も決まりだな。
iptables の設定の保存と有効化(sarge)
2005-09-11-1 / カテゴリ: [linux][debian] / [permlink]
woody のころと違って、sarge(を新規にインストールした場合)だと、/etc/init.d/iptables がないので、save による設定の保存や boot 時の自動有効が効かない。/usr/share/doc/iptables/README.Debian.gz を見ても、なんかいい方法がなさそう。
というわけで(英文訳すのもメンドイので)自分で作っちゃえ。
一応、現在の設定をdumpする /sbin/iptables-save と、その結果をrestoreできるっぽい /sbin/iptables-restore があるので、これを使って init.d スクリプトを作成
/etc/init.d/iptables
でもって、rcconf あたりで /etc/rc*.d/*iptables にリンクはってやれば OK
shutdown 時に自動で保存したければ、stop (do nothing)のところに、$SAVE > $CONF をいれてくれ。
現在の設定を保存するときは、
というわけで(英文訳すのもメンドイので)自分で作っちゃえ。
一応、現在の設定をdumpする /sbin/iptables-save と、その結果をrestoreできるっぽい /sbin/iptables-restore があるので、これを使って init.d スクリプトを作成
/etc/init.d/iptables
#!/bin/sh PATH=/bin:/usr/bin:/sbin:/usr/sbin SAVE=iptables-save LOAD=iptables-restore CONF=/etc/iptables.conf if [ ! -f $CONF ]; then echo "No configure file $CONF" exit 1 fi echo 1 > /proc/sys/net/ipv4/ip_forward case "$1" in start) echo "iptables start (restore configure)" $LOAD < $CONF echo "done" ;; stop) echo "do nothing :)" ;; save) echo "iptables save configure" $SAVE > $CONF echo "done" ;; reload|restart) echo "reload configure" $LOAD < $CONF echo "done" ;; *) echo "Usage $0 {start|stop|save|reload|restart}" exit 1 esac exit 0
でもって、rcconf あたりで /etc/rc*.d/*iptables にリンクはってやれば OK
shutdown 時に自動で保存したければ、stop (do nothing)のところに、$SAVE > $CONF をいれてくれ。
現在の設定を保存するときは、
# /etc/init.d/iptables saveで。
Referrer (Inside):
[2006-07-24-1] [2006-06-04-1]
2005-09-10 Sat (他の年の同じ日: 2006)
2005-09-09 Fri (他の年の同じ日: 2004)
暗号化 復号
2005-09-09-2 / カテゴリ: [用語] / [permlink]
暗号化: encrypt英辞郎 on the Web より
復号: decrypt
符号化: encodeと、何が違うんだろ??
復号: decode
int の 0-9 を char の '0'-'9' に
2005-09-09-1 / カテゴリ: [programming][c] / [permlink]
ch_number = int_number + '0';int_number が 10以上の場合は、もちろんズレる:p
9(57/0x39)以降は、':', ';', '<', '=', '>', '?', ... と特に脈略はない(ように見える)
逆変換は '0' を引く。もしくは atoi で。
WebDAV 設定 (割と中途)
2005-09-05-2 / カテゴリ: [linux][debian][Apache] / [permlink]
ubuntu(apache2.2)での設定はこっち([2008-02-22-1])
Apache 1.3(deb) を WebDAV 対応にしてみる。Apache そのものは設定済みとする
。
参考: nemuiDoc: DebianでWebDAVサーバ
ということで、sarge になってるので、
modules.conf に追記
httpd.conf に追記
/etc/apache/DAVuser には、htpasswd を使って登録したユーザ情報がはいる。
/var/lock/DAV 以下は、www-data:www-data
/var/www/dav 以下も、www-data:www-data
で、winXP なら、My network の[ネットワーク プレースを追加する] から [別のネットワークの場所を選択]し、アドレスの入力で [http://server/dav] を入力し、htpasswd で指定したユーザ名/パスワードを入れれば登録できた。
とりあえず、オフィシャルパッケージの mod_encoding では UTF-8 にしか対応していない(EUC-JPとかを指定しても化ける)ので、日本語ファイル名のファイルをやり取りする場合、システムの言語設定が EUC-JP だとつらい。
Apache 1.3(deb) を WebDAV 対応にしてみる。Apache そのものは設定済みとする
。
参考: nemuiDoc: DebianでWebDAVサーバ
ということで、sarge になってるので、
# aptitude install libapache-mod-encoding The following NEW packages will be installed: libapache-mod-dav libapache-mod-encoding libiconv-hook1 libxmltok1なんか、必要なのが全部入りそうだし^^;
modules.conf に追記
LoadModule encoding_module /usr/lib/apache/1.3/mod_encoding.so LoadModule dav_module /usr/lib/apache/1.3/libdav.so
httpd.conf に追記
DAVLockDB /var/lock/DAV/apache EncodingEngine on NormalizeUsername on SetServerEncoding UTF-8 DefaultClientEncoding JA-AUTO-SJIS-MS MSSJIS AddClientEncoding "cadaver/" EUC-JP AddClientEncoding "Microsoft .* DAV" MSSJIS AddClientEncoding "xdwin9x" SJIS Alias /dav /var/www/dav <Location /dav> DAV On <LimitExcept GET HEAD OPTIONS> AuthType Basic AuthName "WebDAV" AuthUserFile /etc/apache/DAVuser Require valid-user </LimitExcept> </Location>
/etc/apache/DAVuser には、htpasswd を使って登録したユーザ情報がはいる。
/var/lock/DAV 以下は、www-data:www-data
/var/www/dav 以下も、www-data:www-data
で、winXP なら、My network の[ネットワーク プレースを追加する] から [別のネットワークの場所を選択]し、アドレスの入力で [http://server/dav] を入力し、htpasswd で指定したユーザ名/パスワードを入れれば登録できた。
とりあえず、オフィシャルパッケージの mod_encoding では UTF-8 にしか対応していない(EUC-JPとかを指定しても化ける)ので、日本語ファイル名のファイルをやり取りする場合、システムの言語設定が EUC-JP だとつらい。
2005-09-01 Thu (他の年の同じ日: 2006 2012)
config ファイルを使ってホスト毎の設定
2005-09-01-3 / カテゴリ: [linux][ssh] / [permlink]
ssh でリモートログインする際に、サーバ毎にユーザ名が違ったり、ポートが wellknown じゃなかったりすると、そのたびにオプションを指定するのがメンドウ。
で、~/.ssh/config にホスト毎の設定を記述しておけば、引数にホスト名をしていするだけでアクセスできるようになる。
みたいな。
明示的に指定しなかった項目は、デフォルトの値が使用される(ハズ)。debian なら /etc/ssh/ssh_config かな。
c.f. man ssh_config(5)
で、~/.ssh/config にホスト毎の設定を記述しておけば、引数にホスト名をしていするだけでアクセスできるようになる。
Host server1 # 以下 server1 に接続するときの設定 User foo # ユーザ名は foo Port 10022 # 接続するポートは10022 Compression yes # 圧縮を有効にする CompressionLevel 5 # 圧縮レベルは5(1:低/9:高) Host server2 # 以下 server2 に接続するときの設定 User bar # ユーザ名は bar IdentityFile ~/.ssh/id_rsa_serv2 # 使用する秘密鍵はid_rsa_serv2 Host server3 # 以下 server3 に接続するときの設定 User baz LocalForward 10110 server3:110 # localの10110をserver3のpop接続にフォワードする
みたいな。
明示的に指定しなかった項目は、デフォルトの値が使用される(ハズ)。debian なら /etc/ssh/ssh_config かな。
c.f. man ssh_config(5)
ssh obtains configuration data from the following sources in the follow-
ing order:
1. command-line options
2. user's configuration file ($HOME/.ssh/config)
3. system-wide configuration file (/etc/ssh/ssh_config)
LAN 用 zone の設定
2005-09-01-2 / カテゴリ: [linux][debian][bind] / [permlink]
おうちサーバは no-ip の DDNS サービスを利用していて、外からは no-ip のドメインでアクセスできるけど、自宅の LAN からは、ADSL モデムが自身の global IP で自分にアクセスできない(local IP じゃないとアクセスできない)ので、ドメイン名でのアクセスはできない。
ので、ローカル用の BIND に、(local IP を返すように)no-ip で使用しているドメイン名の名前解決をやらせる。
※ 都合上、使用しているドメインは zaki.example.org とします。でもって、LAN のアドレスは 192.168.1.* です。あと、記述に誤りがあるかもしれません ^^;;
/etc/bind/named.conf
でもって、
/etc/bind/db.zaki.rev (逆引き用)
/etc/bind/db.zaki.zone (正引き用)
そーいや parmesan なんてマシンあったな。電源壊れて全く使ってないけど。
ので、ローカル用の BIND に、(local IP を返すように)no-ip で使用しているドメイン名の名前解決をやらせる。
※ 都合上、使用しているドメインは zaki.example.org とします。でもって、LAN のアドレスは 192.168.1.* です。あと、記述に誤りがあるかもしれません ^^;;
/etc/bind/named.conf
zone "1.168.192.in-addr.arpa" { type master; file "/etc/bind/db.zaki.rev"; }; zone "zaki.example.org" { type master; file "/etc/bind/db.zaki.zone"; };を追記。
でもって、
/etc/bind/db.zaki.rev (逆引き用)
$TTL 86400 @ IN SOA ns.zaki.example.org. root.zaki.example.org. ( 2005082801 ; Serial 3600 ; Refresh 900 ; Retry 604800 ; Expire 3600 ) ; Minimum @ IN NS ns.zaki.example.org. 1 IN PTR cheddar.zaki.example.org. 2 IN PTR camembert.zaki.example.org. 20 IN PTR parmesan.zaki.example.org. 100 IN PTR mozzarella.zaki.example.org. 101 IN PTR mimolette.zaki.example.org. 102 IN PTR chaource.zaki.example.org.
/etc/bind/db.zaki.zone (正引き用)
$TTL 86400 @ IN SOA ns.zaki.example.org. root.zaki.example.org. ( 2005082801 ; Serial 3600 ; Refresh 900 ; Retry 604800 ; Expire 3600 ) ; Minimum @ IN NS ns @ IN A 192.168.1.1 cheddar IN A 192.168.1.1 camembert IN A 192.168.1.2 parmesan IN A 192.168.1.20 hdlan0 IN A 192.168.1.30 mimolette IN A 192.168.1.101 chaource IN A 192.168.1.102
そーいや parmesan なんてマシンあったな。電源壊れて全く使ってないけど。
Referrer (Inside):
[2006-07-02-5]
proxy.pac で自動proxy設定
2005-09-01-1 / カテゴリ: [HTTP][JavaScript] / [permlink]
今更ドキュメントシリーズ。
ちょうど1年前くらいに社内用で作成してたけど、メモってなかったので。
Proxy Auto-Config File Format
必ず定義しなければならないのは FindProxyForURL(url, host) 関数。通常のプログラムの main に相当するようなもの。
引数の url にはアクセスしようとする URL が、host にはそのアドレスが入る。
で、戻り値として "DIRECT" で直接接続、"PROXY proxy.example.org:8080" で proxy.example.org:8080 を使うようなる。
個人的に良く(という程使ってないけど)使う関数は isInNet と shExpMatch。まぁ例見るのがわかりやすいかな。shExpMatch は正規表現ではなくファイルグロブによるマッチング(っぽい)
以下、「ホスト名でのアクセス, example.org, example.net, 192.168.*.*, localhost は直接接続、example.com, 10.*.*.* は proxy に 172.24.1.1:8080 使い、それ以外は proxy.example.org:8080 で Web アクセス」
んで、proxy.pac という名前で、proxy 不要でアクセスできる Web サーバにおいておき、ブラウザの「自動構成スクリプトを使用する」やら「自動でプロキシを設定する」やらで設定すれば OK
で、netscape のドキュメントには、application/x-ns-proxy-autoconfig という MIME type を追加せよとあるんだけど、なくても一応動くんだよな… うーむ
ちょうど1年前くらいに社内用で作成してたけど、メモってなかったので。
Proxy Auto-Config File Format
必ず定義しなければならないのは FindProxyForURL(url, host) 関数。通常のプログラムの main に相当するようなもの。
引数の url にはアクセスしようとする URL が、host にはそのアドレスが入る。
で、戻り値として "DIRECT" で直接接続、"PROXY proxy.example.org:8080" で proxy.example.org:8080 を使うようなる。
個人的に良く(という程使ってないけど)使う関数は isInNet と shExpMatch。まぁ例見るのがわかりやすいかな。shExpMatch は正規表現ではなくファイルグロブによるマッチング(っぽい)
以下、「ホスト名でのアクセス, example.org, example.net, 192.168.*.*, localhost は直接接続、example.com, 10.*.*.* は proxy に 172.24.1.1:8080 使い、それ以外は proxy.example.org:8080 で Web アクセス」
function FindProxyForURL(url, host) { if (isPlainHostName(host) || shExpMatch(url, "http://*example.org*") || shExpMatch(url, "http://*example.net*") || isInNet(host, "192.168.0.0", "255.255.0.0") || isInNet(host, "127.0.0.1", "255.0.0.0")) { return "DIRECT"; } else if (shExpMatch(url, "http://*example.com*/") || isInNet(host, "10.0.0.0", "255.0.0.0")) { return "PROXY 172.24.1.1:8080"; } else { return "PROXY proxy.example.org:8080"; } }
んで、proxy.pac という名前で、proxy 不要でアクセスできる Web サーバにおいておき、ブラウザの「自動構成スクリプトを使用する」やら「自動でプロキシを設定する」やらで設定すれば OK
で、netscape のドキュメントには、application/x-ns-proxy-autoconfig という MIME type を追加せよとあるんだけど、なくても一応動くんだよな… うーむ
前の月 / 次の月 / 最新
2013 : 01 02 03 04 05 06 07 08 09 10 11 12
2012 : 01 02 03 04 05 06 07 08 09 10 11 12
2011 : 01 02 03 04 05 06 07 08 09 10 11 12
2010 : 01 02 03 04 05 06 07 08 09 10 11 12
2009 : 01 02 03 04 05 06 07 08 09 10 11 12
2008 : 01 02 03 04 05 06 07 08 09 10 11 12
2007 : 01 02 03 04 05 06 07 08 09 10 11 12
2006 : 01 02 03 04 05 06 07 08 09 10 11 12
2005 : 01 02 03 04 05 06 07 08 09 10 11 12
2004 : 01 02 03 04 05 06 07 08 09 10 11 12
最終更新時間: 2013-05-02 16:12