2007年12月30日日曜日

37signals 要チェックや

* 注) 当方、デザイナーではない

デザイナーがプロダクト事業を起こす方法 by Jason Fried (37signals)
しかし何よりも「物事を自分自身で徹底的に理解しようとする好奇心」がいちばん役立つ。
ですよねー。だと思ったー。どぅふふふふふうふ。

2007年12月28日金曜日

[FreeBSD] ドネーション

FreeBSD Foundation、35万米ドル近い資金を獲得

読み進めていくと。。
ビジネス分野ではIsilon Systemsが安定性や高いパフォーマンス、そのライセンス条項の扱いやすさからFreeBSDを採用したこと、NetAppがHPC市場に対するプロダクトでFreeBSDをベースコンポーネントとして採用していることを紹介。
Isilon が使ってるぽいのはcvsのコミットログでなんとなく知ってたけど(あぁ、これこれ) NetApp も使ってるのか。まぁ似ても似つかぬくらい手が加えてあるんだろう。
ハコものはBSDライセンスなものを採用するのが定番?他 Coyote だったり Juniper だったり。Cisco もどこかで採用してるのかな。こんなんあるし

2007年12月27日木曜日

PHP at Yahoo! JAPAN

前みたけど、今日また見てた

「PHP at Yahoo! JAPAN」

このとーりだと、PHP5 への移行終わってるんだよなー。流石。。。

最近思い知らされたこと

思いこみがあったというかなんというか。そんなお話。

Web系なプログラマ(という書き方が適切かはわからない)は、サーバいじりが必要になったときはちょちょいのちょいっとやってのけるんだよなー。

と思っていたけど、どうやらそうでもないということを知る。。

所変わればなんとやら。

2007年12月26日水曜日

Ruby 1.9.0 is released

[ruby-list:44387] [ANN] Ruby 1.9.0 is released

1.9.1 と思ってたけど違った。

Ruby 1.9.0 リリース!
ただし、本リリースは、当初予定していたRuby 1.9.1 ではなく、 Ruby 1.9.0となっています。これは、Ruby 1.9.1として期待していたほどの安定したものではないためです。しかしながら、予定していた非互換な変更はすべて取り入れられています[ruby-dev:32713])。ご了承ください。
なるほど納得。

2007年12月23日日曜日

[Ruby] 1.9

さっきおもむろに svn で とってきたやつは
make test が全部?パスした。
(snip)
test_marshal.rb .
test_massign.rb .................................
test_method.rb .................................................................................................................................................................................................................
test_objectspace.rb ...
test_proc.rb ..................
test_syntax.rb ..............................................................................................................................
test_thread.rb ....................
PASS 807 tests


test-allはこんなん

3449 tests, 1642625 assertions, 18 failures, 187 errors
make: *** [test-all] Error 1
詳しいことは知らない。

2007年12月15日土曜日

[Ruby] Programming Ruby

Programming Ruby 3: The Pragmatic Programmers' Guide, 3rd Edition

ピッケル本第3版。
2008年5月。1.9対応か。

今のところベータ版、で PDFは入手可能。
$25 で PDF
$60弱で PDF+本

ふーむ。日本語版は早くて秋頃、と勝手に予想。

2007年12月12日水曜日

hatena.ne.jp の DNS

某DNSちぇっかー (公開未定)
をコネコネしてる最中に気づいた

hatena.ne.jp の DNSの1台が返事してくれなかった

% host -t ns hatena.ne.jp
hatena.ne.jp name server ns0.future-s.com.
hatena.ne.jp name server ns1.future-s.com.
% host -t a www.hatena.ne.jp ns0.future-s.com
Using domain server:
Name: ns0.future-s.com
Address: 219.99.160.180#53
Aliases:

www.hatena.ne.jp has address 221.186.146.27
% host -t a www.hatena.ne.jp ns1.future-s.com
;; connection timed out; no servers could be reached

% date
2007年 12月 11日 火曜日 16:48:20 UTC


% host -t ns future-s.com
future-s.com name server ns0.future-s.com.
future-s.com name server ns1.future-s.com.

future-s.com の DNSサーバでもある。
レンサバやさんのようだ。

2007年12月8日土曜日

解約

某レンタルサーバをポチッと解約した。

契約時(1年とちょっとまえ)、
「正式な登録完了の書類は、まもなく郵送にてお届けいたします。」

てメールできてたんだけど、結局こなかったなー。
正式に完了しないまま使ってたことになるのかな (w

・郵送事故

・レンタルサーバの中のひとの怠慢
か。

解約したからもういいや。

Rails 2.0

Riding Rails: Rails 2.0: It's done!

12月中とあったけど、もう。
というわけで Rails本第3版マダー?(ぇ

2007年12月7日金曜日

darkstat

GIGAZINE で darkstat とゆーのが紹介されてたのでいれてみた。

% sudo apt-get install darkstat

バージョン古い。。
% darkstat --version
darkstat v2.6 using libpcap v2.4 (i486-pc-linux-gnu)
Copyright (C) 2001-2003, Emil Mikulic.
http://purl.org/net/darkstat

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program. If not, write to the Free Software
Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.


起動。
バージョン違うからか、GIGAZINEの記事とは違って、
・デフォルト port が 666 (!)
・バックグラウンドには移行しない (--detach つければする)

ポートさらすのはいやなので 127.0.0.1 で bind してみた
(ssh でポートフォワードして見るの)
% darkstat -i eth0 -b 127.0.0.1
darkstat v2.6 using libpcap v2.4 (i486-pc-linux-gnu)
Binding webserver to 127.0.0.1
Firing up threads...
Sniffing on device eth0, local IP is xxx.xxx.xxx.xxx
GRAPH: Starting at 15 secs, 38 mins, 13 hrs, 7 days.
Loaded darkstat.db.
DNS: Thread is awake.
WWW: Thread is awake and awaiting connections.
WWW: You are using the English language version.
ACCT: Capturing traffic...
Point your browser at http://localhost:666/ to see the stats.

ポートフォワード (Mac OS X上)
端末はいらんので -T をつけるのが大人。
% ssh -T 対象サーバ -Lにんいのぽーと:localhost:666

はい、みれました。


darkstat を ctrl-c でとめ。
Caught SIGTERM, syncing threads...

Syncing... 3 threads (acct) (dns) (www)
ACCT: Out of capture loop.
DNS: Thread down.
^PSyncing... 1 thread (www)
WWW: Thread down.
Caught a redundant SIGTERM. Still waiting for:
Synced! Dumping DB...done!
Can't unlink pidfile: Bad address

記事中、kill -9 が書いてあったのが不思議だったけど
SIGTERM で止まるよね。
Can't unlink pidfile: Bad addressはちょっと気になるけど放置。

daemontools の supervise下で起動させるのもよさそう。

-- その後
バージョン 3.0.707 の debパケージを作ってそっちに入れ替えた。
作り方の勝手がよくわからず、ぐぐりつつ適当にコマンドたたいてたらできたけどよくわかってない。
・起動スクリプトない (前述の supervise 配下にした)
・やっぱりデフォルトポートは 667
・フォアグラウンドで動かすには --debug
・rootの権限は捨ててくれる (nobody になった)

[Postfix] smtp-auth

んー。あれこれいじくってるうちに前と同じように送信できるようになった。。。

うーん。タチが悪い。

2007年12月6日木曜日

スレッドの話。

(Linuxサーバで) psでみたとき MySQLのプロセスがぶあああああって増えないのはなんで?
といった感じの質問が挙がる。

それは・・・NPTL だからでそ。
ただのサーバ管理者でも知ってるはず。(自分がそう)

ざっと、Linuxでの
ちょっと前までのpthread の実装 -> Linuxthreads
今 -> NPTL

だよね。。NPTLはRedHat 9くらいから出てきたはずなので何年か経ってる。

これを書いている時点の自分は実装がどうだとかはさっぱり知らないけどね。

本物のPOSIXスレッドライブラリ
2002年か。。

glibc-2.4 から NPTL 一本化してる

C10K問題 4. 各スレッドが一つのクライアントを受け付ける
内容がちょびっと古いみたいだけど、まとまっててステキ。

Solaris やら (Linuxthreads をつかっていない)FreeBSD なら ぶああああ (w って見えないんだけどね。。(psで適切なオプションつければ見える。)

で 当時のスラドやら雑誌の記事やらをみてたもんで、
Ulrich Drepper という開発者の名前はすり込まれてた。glibcのエライ人。

どうも、自称オープンソースプログラマな人でもその名前を知らなかったりする模様。
What Every Programmer Should Know About Memory - enbug diary (2007-11-26)
引用
P.S. それよりもっと驚いたのは自称オープンソースプログラマな人がUlrich Drepperの名前も知らないことであった!相当な有名人だと思うんだがな、少なくとも開発者の間では。

サーバ管理者で知ってる、となると数少ないんだろうな・・・。
ほか Rusty Russellとかとか。

まぁ ひとつだけいえることは・・・

「それダレ?知っててなにかおいしいの?」と言われるのがオチか。。

[Postfix] smtp-auth はまり中

これまでつかってた(まだつかってるけど)
某レンタルサーバで手でいれたPostfixだとすんなりSMTP-AUTHできた。
今度はどうもできない・・・・orz....

・設定問題なさげ
・デフォルト chroot してるのが関係?
・じつは smtpd.conf の場所がへん?

うーむ ( -_-)
寝て起きても解決せず。

2007年12月5日水曜日

[FreeBSD] $ make love

skype で make(1) の話題に。

GNU Make
% make love
make: *** No rule to make target `love'. Stop.

FreeBSD の make (6.2-RELEASE)
% make love
make: don't know how to make love. Stop

そう。 don't know how to make 〜〜〜 だよな
と思ってたら、FreeBSD 7.0-BETA3だと。。

% make love
Not war.

おや?
ソースをみてみると・・ (/usr/src/usr.bin/make/job.c)
#if OLD_JOKE
if (strcmp(gn->name,"love") == 0)
(*abortProc)("Not war.");
else
#endif

どうも結構まえからあるみたいで、-CURRENT は
CFLAGSで -DOLD_JOKE が設定されてた模様。知らなかった。

なんで 「Not war.」 なの?と思ったら
Make Love Not War
殺し合うのでなく愛し合おう◆特に1960~70年代に多く使われた反戦運動のスローガン
というのを見つけた。

Not war!

2007年12月2日日曜日

[Postfix][SQLite][dovecot] バーチャルな受信まわり

・Postfix で virtual_mailbox〜〜などを設定した
・配送された
・dovecot, SQLite をいれて
・dovecot に sqlite 使わせて受信してみた


ざっとこんな風。

o main.cf に下記設定 (ここでは example.jp とした)
virtual_mailbox_domains = example.jp
virtual_mailbox_base = /home/vmailbox
virtual_mailbox_maps = hash:/etc/postfix/vmailbox
virtual_uid_maps = static:5000
virtual_gid_maps = static:5000
virtual_alias_maps = hash:/etc/postfix/virtual

uid_maps,gid_mapsはめんどいのでstaticに。値は適当。
ユーザ、グループは存在しない。
/home/vmailbox は umask 027, chown 5000:5000で作っておいた。

・/etc/postfix/{vmailbox,virtual} は以下
- vmailbox
hoge@example.jp example.jp/hoge/Maildir/

- virtual (ほかに転送しないならいらない)
hoge@example.jp hoge@example.jp,fuga@example.com

Maildir 形式をつかうのでケツに/
作ったあとは postmap を忘れずに。

o dovecot いれ
sudo apt-get install dovecot-common dovecot-imapd dovecot-pop3d

o sqlite いれ
sudo apt-get install sqlite3 sqlite3-doc

o dovecot 設定
みたところ
PasswordDatabase
Authentication/PasswordSchemes
・デフォルト設定のdovecot.conf,dovecot-sql.conf

まずdovecot.conf
protocols = pop3 pop3s imaps
(pop3 は手で確認するため用.できたら削除)

passdb sql {
#Path for SQL configuration file
args = /etc/dovecot/dovecot-sql.conf
}
userdb sql {
#Path for SQL configuration file
args = /etc/dovecot/dovecot-sql.conf
}

passdb sql, userdb sql の箇所はコメントアウト -> コメントインしただけ。

次dovecot-sql.conf
driver = sqlite
connect = /etc/dovecot/authdb.sqlite
default_pass_scheme = SSHA
password_query = SELECT userid as user, password FROM users WHERE userid = '%u' AND active = 'Y'
user_query = SELECT home, uid, gid FROM users WHERE userid = '%u' AND active = 'Y'

を記述

sqliteをつかうぜ、な設定
connect でデータベースファイル設定.例のまま.
default_pass_scheme は なんとなく SSHAで (Salted SHA1)。SHA256 は 1.1系かららしいので使えず。。
password_query と user_query は書かれていたものほとんどそのまま。

で、dovecot 再起動。

o sqliteで受信用ユーザ設定
パスワードは sqliteにぶちこむので
echo -n 'パスワードの文字列' |sha1sum
をして sha1 した文字列を作成しておく。

dovecotpw で ssha なやつを作成しておく。

/etc/dovecot 以下でごそごそ
# touch authdb.sqlite
# chmod 640 authdb.sqlite
# chgrp mail authdb.sqlite
(sqliteつかう場合、まずtouchするのがフツーなんだろうか?ワカラン。)

# sqlite3 authdb.sqlite

以下sqlite3 のプロンプト

CREATE TABLE users (
userid VARCHAR(128) NOT NULL,
password VARCHAR(64) NOT NULL,
home VARCHAR(255) NOT NULL,
uid INTEGER NOT NULL,
gid INTEGER NOT NULL,
active CHAR(1) DEFAULT 'Y' NOT NULL
);

insert into users values (
'hoge@example.jp',
'ぱすわーどをsalted sha1した文字列',
'/home/vmailbox/example.jp/hoge',
5000,
5000,
'Y'
);

select * from users;
.quit

あとはtelnet で 110 たたいて確認。

telnet localhost 110

user hoge@example.jp
pass ぱすわーど

list なり
retr [数字]なり
dele [数字]なり


SQLite を使ったワケ: 個人用なので MySQL,Postgres をつかうのは大袈裟。SQLite がピッタリ。

2007年12月1日土曜日

tail と tail と tail

FreeBSDの、
tail のバグが直されてた

わざとディレクトリを tail。
segmentation fault してたのがしなくなった。
(7-BETA3上だけで確認. 6だとしないっぽい)
けどへんな出力はする。

% tail /
....snap@@dev��tmp��usrA@var3
home�����etccdrom�B@dist7�bin��boot7�C@liblibexecD@mnt��proc7���rescue�root7�E@sbin7�
sys.cshrc.profile�� COPYRIGHT��2
compat�media��service

Mac OS Xだと、なにもでない
% tail /usr/local
%

GNU のだと (tail (GNU coreutils) 5.97 )、それディレクトリって言ってくれる。
% tail /usr/local
tail: error reading `/usr/local': Is a directory

GNU coreutils の動作がいいんじゃ・・。

[Mac OS X] CotEditor 0.9.3

前回、展開してダメだったんだけども、dmg2iso でdmg -> isoに変換して、マウントできた。。

変換の時点でエラーになるんじゃないかなーと思ったけど、さくっとできた。

なんなんだ一体。