(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]の続き。なんとなく再チャレンジ。

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 の起動は
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 も使えん。
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 ls
groff や 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時間くらいは録画できるかも。

まぁ、今月いっぱいで、ケータイでの視聴は到底不可能な電波しか入らない元の職場(現在出向中みたいなモン)に戻ってしまうので、もうこんなことすることはないか。



教訓
ケータイ用USB充電ケーブル(daisoで入手)を常備する
空き容量の多いSDカードを常備する
都会で働く
リモートで録画予約できるレコーダを用意する

というか、
見たいテレビはちゃんとチェックする

いや、
定時に帰る
休日に働かない
2005-09-23 Fri (他の年の同じ日: 2006 2011)

memcpy memset
2005-09-23-2 / カテゴリ: [programming][c] / [permlink]

備忘録
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 なんかのように。

と、今日教わった。
今の会社じゃ誰も教えてくれないこと…

POST されるデータサイズの制限
2005-09-21-1 / カテゴリ: [programming][CGI][perl] / [permlink]

CGI.pm では、$CGI::POST_MAX に値(byte単位)を設定することで、そのサイズを超えた POST データのハンドリングができる。
$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 に予めテキストファイルを作っておく
で、
C-c C-w

EOFでは署名の手前の[ハイフン][ハイフン][スペース][改行]が自動で挿入されるが、文書の途中だと、区切り文字は挿入されない。設定でなんとかなるかな…?

購読設定の保存
2005-09-19-1 / カテゴリ: [linux][wanderlust] / [permlink]

wl 実行中、folderモードで m a やら m p やらで設定した購読管理は、wl 終了時に保存するか聞かれたときに保存するか、folder モードで以下のコマンドを実行
m C-s

で、~/.folders に保存される。

spamassassin Bayesianフィルタ 設定
2005-09-18-1 / カテゴリ: [linux][debian][メール] / [permlink]

[2005-09-14-1]の続き。
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)
bayes_toks: Berkeley DB (Hash, version 8, native byte-order)
2つのファイルができた。
どうやら、デフォルトで 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 を使う
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 現在)
# 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 の場合
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現在)

で、まぁ
# 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 とか使えば関係なくなる…?

IQテスト
2005-09-12-1 / カテゴリ: [diary] / [permlink]

眠れないのでやってみた。(05:30ほど)
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皿分)
豚肉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
#!/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-10-1 / カテゴリ: [diary][ぬいぐるみ] / [permlink]

リラックマ

リラックマと写真を撮ろう!という趣旨のイベントできぐるみリラックマがいたけど、さすがに撮れなかった・・・
2005-09-09 Fri (他の年の同じ日: 2004)

暗号化 復号
2005-09-09-2 / カテゴリ: [用語] / [permlink]

暗号化: encrypt
復号: decrypt
英辞郎 on the Web より

符号化: 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 になってるので、
# 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-05-1 / カテゴリ: [diary][ぬいぐるみ] / [permlink]

ファミリーですから
ドコモダケ

下は[2005-08-26-2]のやつ:D
もう1つ欲しいなぁ。
Referrer (Inside): [2005-12-08-3]
2005-09-01 Thu (他の年の同じ日: 2006 2012)

config ファイルを使ってホスト毎の設定
2005-09-01-3 / カテゴリ: [linux][ssh] / [permlink]

ssh でリモートログインする際に、サーバ毎にユーザ名が違ったり、ポートが wellknown じゃなかったりすると、そのたびにオプションを指定するのがメンドウ。
で、~/.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
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 アクセス」

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 を追加せよとあるんだけど、なくても一応動くんだよな… うーむ
2005-09
前の月 / 次の月 / 最新

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