2003-07-01 7778歩
λ 東京めたりっく SDSL回線サービス終了
今日の昼間は使えてたんだけどね。お疲れサマー
内側からのデフォルトルートはあらかじめ変更したり、メールの配送のバックアップルートを作ったりしていたが、 DNSのキャッシュサーバ設定がいまいちだった模様。 手でいろいろ設定変更して対処。
λ [CLIE] パスワード管理ツール Stripのソース読んだ
基本は手で入力したパスワードをSHA256でハッシュ化したものをキーとした、AES 256bit暗号化。 暗号化に関するソースはGNU TLS由来のものっぽい。
乱数の生成についてはエントロピープールから値を読み出してSHA256でモニョモニョしていて、 エントロピープールへの乱数供給をイベントループで行っている。
static void
EventLoop (void)
{
EventType event;
UInt16 error;
do
{
// wait a bit for an event
EvtGetEvent (&event, 50);
/* Dont seed with empty events!*/
if(event.eType != nilEvent)
random_seed((byte *) &event, sizeof(event));
// first the system gets the event, then the Menu event handler, then the application
// event handler, then finally the form event handler
if (!SysHandleEvent (&event))
if (!MenuHandleEvent (0, &event, &error))
if (!ApplicationHandleEvent (&event))
FrmDispatchEvent (&event);
}
while (event.eType != appStopEvent);
}
5ticks(標準では0.5秒?)毎にイベントを読み出して、 nilEventでない有効なイベントだったらEventType構造体の中身をそのまま乱数の供給源としている。
というわけで Strip を利用している間は無駄に画面をタップするのが望ましい。 とりあえず最初のパスワード入力画面でパスワードを入れる前に画面ぐりぐりするとか、 Graffitiの練習をしてみるのが吉か。
「強制的に画面ぐりぐりしてからでないとパスワード入力もさせない」 という初期画面のインターフェースの方がより安全だとは思うけど、 Palmアプリケーションは書いたことないっす。
暗号強度・乱数強度的には問題ないプロダクトという確信は得られたので、本格的にパスワード管理に使うことにしよう。
perl-strip
Stripが使っているPDBファイルをPerlで読んじゃうよん、なモジュールらしい。
PDBの中身のおおざっぱなところは、実は先にこっちを読んで把握した。
2003-07-02 10717歩
λ 回線移転に伴うネームサーバのIPアドレス変更申請
Network Solutions(Verisign)のAccountManagerの新バージョンをはじめて使ったら、 パスワード分からんアカウントのパスワード再発行がずいぶんと楽になって、 メールとWebを何度か往復して再設定完了。 ネームサーバのIPアドレス変更はすぐに終わってあとは世間のキャッシュが更新されるのを待つのみ。
一方.jpなネームサーバの変更申請、昔は JPNIC にWHOISデータベース変更メール出すだけだったのに、 今は指定事業者に依頼するしかないらしい。超めんどくさー。 指定事業者からJPRSに提出する更新申請書は全角数字で記入されたExcel提出するとからしいし。 JPRSが最終的な権利を独占してるのはめちゃめちゃ悪ぢゃ。
やはり特に理由のない限りは .jp アドレスを使おうという気にならん。
日本語JPドメイン名のRFC準拠に伴う移行について
やっと日本語ドメイン名が使える政治的決着がついたんかな。日本語ドメイン取得ブームって一体何年前だ〜みたいな。
エンコード方式は ぷにコード ですか。
λ Namazu 2.0 入門
RDフォーマットのまま何とかしようかと遊んでみたけどうまくいかなかった。 tDiaryで使うにはsqueezeでHTML作るしかないか。
2003-07-03
λ [FreeBSD] portsで勝手に新バージョンを利用する
Makefileを編集して PORTVERSION の行を目的のバージョン番号にした後、
make makesumを実行すると distinfo を書き換えてくれる。
できればdistinfoの中を見てMD5が正しいかどうかを目視する。
λ Pound
新しい奴はSubversion にも対応するようになってるけど、FreeBSD portsで作るのは失敗。 OpenSSLがpthread対応じゃないとダメーと途中で止まってしまう。 FreeBSDのOpenSSLはpthread対応のような気はするのだが…
とりあえずportsの標準状態に戻して Pound 1.2 を利用してみた。 Failoverでサーバが生きているかどうかは、connect(2) でTCPソケットが開けるかどうかだけチェックしている。 使ってみたら意外とCPUを食う。キャッシュ付きapacheプロキシよりCPU時間を消費する。
λ [Windows] mdbにSQL投入する RubyScript
Cygwin環境から cscript jetsql.rb --mdb-file tako.mdb hoge.sql のようにして使うスクリプト。
いちいちAccess2000を起動せずにmdbファイルにSQL構文でデータをつっこんだり、テーブルの作成をしたりできる。
ファイルからSQLの投入は、クエリアナライザ同様 GO で区切って行われる。
<package>
<job id="jetsql">
<?job debug="false" error="false"?>
<script language="RubyScript">
require "win32ole"
require 'getoptlong.rb'
def usage
STDERR.puts "$Id: 03.rd2d 603 2003-09-09 08:38:42Z svn $"
STDERR.puts "help strings"
raise "exit_for_usage"
end
WScript.Arguments.each { |arg|
if arg =~ /^\-/ then
ARGV.push arg.sub(/[\r\n]+$/, "")
else
filename = `cygpath -m #{arg.sub(/[\r\n]+$/, "")}`
ARGV.push filename.sub(/[\r\n]+\z/, "")
end
}
parser = GetoptLong.new
parser.set_options(
['--mdb-file', '-m', GetoptLong::REQUIRED_ARGUMENT],
['--quiet', '--silence', '-q', GetoptLong::NO_ARGUMENT],
['--help', GetoptLong::NO_ARGUMENT],
['--version', GetoptLong::NO_ARGUMENT]
)
$OPT_MDB_FILE = ''
begin
parser.each_option do |name, arg|
eval "$OPT_#{name.sub(/^--/, '').gsub(/-/, '_').upcase} = '#{arg}'"
end
rescue
raise "getoptlong"
end
usage() if $OPT_HELP != nil
usage() if $OPT_VERSION != nil
connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=#{$OPT_MDB_FILE}"
puts connectionString
raise "no_mdb_file" if $OPT_MDB_FILE.length == 0
conn = WIN32OLE.new "ADODB.Connection"
conn.ConnectionTimeout = 15
conn.CommandTimeout = 30
conn.CursorLocation = 3
conn.Open connectionString, "Admin", ""
module ADO_CONST
end
WIN32OLE.const_load conn, ADO_CONST
sql = ''
recordsAffected = 0
ARGF.each { |line|
next if line =~ /\A\#/
if line =~ /\AGO\s*\z/i then
puts sql
conn.execute sql, recordsAffected, ADO_CONST::AdExecuteNoRecords
sql = ''
next
end
sql += line
}
conn.Close
</script>
</job>
</package>
コードの前半はWindowsScriptingHostにおける引数の解釈をgetoptlong経由にするためのもの。
SQL投入するための後半部分はまあまあリーズナルブルなコードではないかと。
WIN32OLE.const_load conn, ADO_CONSTによる定数読み込みはとても便利。
異常終了するにはexit関数を呼ぶより、raiseで例外を起こしてしまう方がいいらしい。
2003-07-06 2歩
λ ディスクの最適化は時間の無駄
WindowsでServicePackやらWindowsUpdateとかあてると頻繁に利用されるシステムファイルがあっちゃこっちゃに散らばることになる。 ついでに新規に買ってきたハードディスクを、とりあえずクイックフォーマットしてインストール作業をするので、 悪いセクターがないかどうかディスク全体のチェックもしたい。
という訳で、 システムのインストール後に1度だけすっきりデフラグを使って ChkDsk+デフラグすることは多い。 運用中のマシンへのデフラグはそうそうやらんなあ。
2003-07-07 7934歩
λ [Windows] ターミナルサービス設定テクニック
Administrator系の管理者権限のないユーザにもターミナルサービスでログオンさせるには、ターミナルサービス構成のアクセス許可設定が必要。
「ターミナルサービス構成」で接続のプロパティを開くと、「アクセス許可」タブが出てくるので、マシン毎のアクセス許可をそこに設定する。 デフォルトではAdministratorsとSYSTEMになっているようだ。
グループポリシーで自動的に複数のマシンへ設定するには、管理用テンプレートがあればよさげなのだが、発見できず。自分で管理用テンプレートを書くしかないのか?
λ Windows2000(SP3)ブータブルCD作成用バッチファイル(WindowsNT/2000/XP/ユーティリティ)
SP4ブータブルCD作らないと。
Server版に関しては U320 SCSIドライバとか最近のIntelチップセットのドライバも入れたいなあ。
λ ドライバ ダウンロード WLM2-G54
IEEE802.1x/EAPサポート キター。
WHR-G54、BLR3-TX4、WLM2-Series で使用している主なソフトウェアのソース
GPLのソースなのに転載禁止とはこれいかに。
λ FreeBSD Tips & Tricks
高負荷環境のファイアウォールやWebサーバに行うカーネルパラメータ設定など。
option NMBCLUSTERS
今回はipfステートテーブルがあふれて不安定だったので調査したわけだが、このマシンでnetstat -mやった結果
mbuf clusters peak は 1166。option NMBCLUSTERSに指定する値としては 8192 でも大きすぎるんじゃねえかという状態。
実際には一応tuning(7)に従って、/boot/loader.conf に
kern.ipc.nmbclusters=16384
を書いてある。
ip_state.h ip_nat.h
ipfilterが保持している状態がどれぐらい持てるのか今まで謎だったのが、ヘッダファイルに書いてあった。 理由は不明だが最大値は素数にするべきらしい。
カーネル構築時のoptionsに書けないと今後の管理が面倒だなあ…
2003-07-08 5142歩
λ UGAYA Journal.
朝日新聞社を「定年退職」した話が、実体験基づく絶望によって書かれているせいで、 積極的な悪意のある文章よりさらにインパクトがある。
λ [Windows] Microsoft SQL Server 2000 のインデックス チューニング ウィザード
やっとまともに使った。
基本は「SQLプロファイラ」でテンプレートに SQLProfilerTuning を指定したトレースを新規作成して、 SQLServerへのリクエストのトレースファイルを作る。 次にインデックスチューニングウィザードを起動して、トレースファイルを食わしてやる。
コレだけのことなのに、SQLProfilerTuning を指定するという話がドキュメントに出てこないために、最初の一歩の壁がやたらと高い。 Microsoftにしてはめずらしいパターン。何の為のウィザードなんだか…
λ [Mac] Power Mac G5 & Panther製品担当者インタビュー
各アプリケーションが利用できるアドレス空間は32bitのままだ。個々のプロセスは4GBのメモリ空間に制限される。 しかし、システム全体では64bitのアドレス空間を活用可能だ。 従って、多くのプロセスが同時に動作する環境においては64bitの意味が出てくる。
mmap(2)だけでも64bit化するとかなり嬉しいと思うのじゃが、それもないのかしら。
λ [FreeBSD] SourceForge mpd
FreeBSD+mpdでマルチセッションPPPoEを参考に マルチセッションに挑戦しようかと思ったら、www.dellroad.org につながらない。
SourceForgeのCVSリポジトリはportsより新しいmpd1.4になっていて、マルチセッションのパッチが当たっているように見える。 AnonymousCVSで取得してFreeBSD5.1R上に作ってみた。 とりあえずシングルセッションでは接続できた模様。
FreeBSD+mpdでマルチセッションPPPoEの設定をコピペした時、
PPPoE0:
set link type pppoe
set pppoe iface sis0
の2行目以降のインデントがなくて認識されなかったところでちょっとはまった。Makefileみたいなものだと思っておけばよい。
マルチセッション化については後日。
2003-07-09 3628歩
λ ファンレスのParhelia-LX搭載カード「Millennium P650」発売
最近Matrox Parheliaを触る機会があって、キャリブレーションソフトを使ってみてMatroxは発色にこだわってるなーという印象を受けた。 企業努力の印象として色の再現性は Matrox>>ATI>NVIDIA かなあ。 近年チップ供給から離れた独自設計のグラフィックボードが皆無になってきたせいで、ますますこの傾向は強まってる気がする。
とはいえ絶対的にどうかと言われても目の悪い俺には判別付かないのであんまり参考にはしないで欲しい。
Millennium P650 は2万円切ってファンレスRADEON9600と同じ価格帯になれば購入対象になるのだが、ちょっと高すぎ。
2003-07-10 7496歩
λ Bフレッツの仕組み
NTT東日本ニューファミリーは上り下りとも最大1Gbpsの帯域を32分割しているらしい。 無印ファミリーが10Mbpsの帯域を共有していただけに、 ニューファミリーが100Mbpsを共有しているんではという印象を持っていのでかなり意外。
実際に利用している人の計測も30Mbpsぐらいで、全員がいっぺんにスピードテストをしても20Mbpsぐらいは期待できそう?
λ dnscacheのglobalを日本向けに書き換え
void GraphicWizardsLair( void ); //より。
rootservers を逆順にしてみた
202.12.27.33 198.32.64.12 193.0.14.129 192.58.128.30 192.36.148.17 128.63.2.53 192.112.36.4 192.5.5.241 192.203.230.10 128.8.10.90 192.33.4.12 128.9.0.107 198.41.0.4
ファイルの中を行単位でを逆順にする rubyスクリプト
arr = []
ARGF.each { |line| arr.unshift(line) }
arr.each { |line| puts line}
text-utilsのどっかにありそうな気もするが… tac だった。でも入ってないからスクリプトで正解。
個人的な興味
TAKAHASHI Kaoru's PGP public key →TNT って西日暮里かー →TNT会社案内
kaisei.orgのサービスが止まって久しいのに、 トリアエズ.kaisei.org なんつードメイン名がどうして存在してるのか不思議だったのが、これで謎が解けた。
λ [CLIE] 英語版PalmDesktop4.0.1
会社でCLIEのHotSync先にしているマシンのHDDで不正なセクターエラー発生。適当に余っているHDDで新規インストールしたのはいいが、 CLIEのCDROMが手元にないのでPalmからPalmDesktop4.0.1をダウンロードした。
HotSyncのログが文字化け状態だったのがなんとかならんかとDancin' on the Palmの日本語表示パッチをあててみたが、ログは日本語化してくれなかった。残念。 直接HotSync.Logをエディターで開けば読めるのでわざわざ日本語化するほどでもないか。
λ ダーウィン人ページ
大学時代の自動翻訳にかけたときは、確か「file→やすりで磨く」の意味になってて、猫の爪磨ぎですか?みたいでもっと面白かったんだけどなあ。
あとネタになりそうなのは 「報告された漏れは常に真実の漏れになるでしょう。」 ぐらいか。
λ [Windows] マイクロソフト、Windowsの全バージョンが関係する深刻な脆弱性など3種類
今朝5時のSoftwareUpdateServiceの同期で来てた。更新の許可出してあとは待つのみ。
λ Apache 2.0.47 Released
SSLで 弱い方の暗号が使われるバグについて。
自分とこの ssl.conf では前から以下のようにSSLCipherSuiteを書いてあったのだが、それでもダメだったんかなー
SSLCipherSuite SSLv3:TLSv1:!EXP
この設定のサイトでSSL経由でつないでいるのは俺だけなんだが。
または
SSLCipherSuite SSLv3:TLSv1:!LOW:!eNULL
こっちで設定しているサイトの方は直接顔見知りでない人もいるかもぐらいの人数が利用している。
2003-07-11 5911歩
λ 「SpamRank」
Spam業者とアンチスパムフィルターの闘いは結果的に双方ノウハウの蓄積があってそれなりに面白いかなと思うけど、 Spam業者側に与する商売にされるのはどうよ。
「人工知能のテクニックを使用して事前に文面を解析し」のあたりからはSpamAssassinを想起させる。 ベイジアンフィルターだったら確率統計的処理だろう。 …でも人間の脳の働きを真似するという意味では、ベイジアンフィルターのが近いかも。
λ [Windows2000実験室:Service Packをあてよう]
ActiveDirectory環境で Service Pack を自動適用する話。今回10台ぐらい一気に当ててみよう予定。
λ The Microsoft Solutions Framework on TechNet
そろそろこういうプロジェクトマネージメント系の勉強もせんとなあ〜
2003-07-12 0歩
λ Terminal Emulator Guevara
1.4β2絶好調。
- IPv6サポート、リンクローカルアドレスも直接指定可能
- Socks5サポート
SSH2 プロトコル、UTF-8 文字コード も含めると他に選択肢がない状態。
λ Subversion 0.25
ここにも iconv の波がやってきた。cygwin環境でコンパイルする際、iconvのヘッダーファイルが必要。
2003-07-13 10385歩
λ [tDiary] インストールrubyスクリプト
一般ユーザならruby tdiaryinst.rb、スーパユーザならruby tdiaryinst.rb --user=hogeでインストールするはず〜を目指した。
手元でのテストの時はruby tdiaryinst.rb --tdiarymaster=/usr/local/share/examples/tdiary --verbose --lang=ja --diarydir=xdiary --httpdir=www --suexec --symlinkとかで。
F.Kimura Diary(2003-07-10) のshスクリプトをruby化しただけ、のつもりが結構オプション増加してしまった。 ファイルのインストールはFileUtilsを使うことによって --noop,--verbose の実装で楽をした。
--tdiarymaster の指定さえすればFreeBSD以外でも使えるインストーラな気がするけど未確認。
TestFirst開発してみようかと一瞬思ったが、 テスト用のパスワードエントリをどうすればいいか悩んでしまい、 結局RubyUnitはスルーしてしまった。 RubyUnitのために大体はメンバ変数に押し込んだけど、微妙にグローバル変数が処理の途中に混じってて落ち着かない。
mtree(8)
ディレクトリの所有者・パーミッション設定を一気にやっつけるのは mtree(8) が便利そうだが、Linuxには存在しないかも。
λ squeezeプラグイン
複数ユーザのtDiary利用環境では、index.rb が
#!/usr/bin/env ruby require '/usr/local/share/tdiary/index'
となっているのと同様の処理を squeeze.rb にしないとCGIとしての動作はしなさそう(未確認)
-pオプションにてtDiaryのインストールパスを指定してやる。
mkdir ~/tdiary/cache/html})); (({cd ~/public_html/tdiary/})); (({ruby plugin/squeeze.rb -p /usr/local/share/tdiary/ ~/tdiary/cache/html
で生成完了。
Namazu検索対応作業
で、Namazuに食わせたが、日本語の単語の切れ具合がいまいち。重要ワードはいちいち強調するとかしないとダメ? [→14日に追加情報]
登録単語一覧を見たところ超ロングワードで登録される傾向なので、 /日本語/ と正規表現検索にしてしまうのが吉。 …日本語だったら何でも正規表現にしちゃえというのをrbnamazuで実装しつつ、 tDiaryテーマにも対応つーのがベストプレイすか??
日記更新の時に mknmz するようにしてしまったので、Namazu辞書は常に最新。
rbnamazu
さっぱり動かん。撤退。pkg_delete じゃ
2003-07-14 7695歩
λ @IT: IE 6のプライバシ管理機能
クッキーでセッション管理しようとするといつも悩まされるクッキー問題。 コンパクト・ポリシー (コンパクトなプライバシーポリシー) をHTTPヘッダに埋め込むと多少制御ができるらしい。
3.Cookieフィルタリングの基礎
ファーストパーティと共通のドメイン名を持ち、ディレクトリが異なるだけなら、同じくファーストパーティとして認識される。 また、ホスト名が異なるだけのドメイン名(例えば、「www.atmarkit.co.jp」と「ad.atmarkit.co.jp」など)も同一とみなされる。 ただし、セキュリティで保護されたHTTPSプロトコルを用いるページ内に、HTTPSを使用しないコンテンツが含まれた場合には、 上記ドメイン名の規則を満たしていても、サードパーティとして識別される。
このへん微妙。HTTPSで認証た結果をクッキーに保存しつつ、暗号化でないサイトに戻すには、同一ドメイン名でないとダメ。
9.Cookieフィルタリングの実験
P3P ヘッダにCP="UNI CUR OUR"を指定すれば受け入れ可能になる。
「IDの認証結果をクッキーで引き回してます」みたいなところはこれで正しいポリシーのはず。
しかし所詮自己申告でX509証明書みたいに保証する仕掛けがなさげなので、 とりあえず受け入れ可能なコンパクトポリシー設定しときゃいいや、みたいになりそうだ。
λ [FreeBSD] FreeBSD Tips & Tricks
うちのIPFilterのステート保持時間の調整は現在以下の通り。
net.inet.ipf.fr_tcpidletimeout=14400 net.inet.ipf.fr_tcpclosewait=120 net.inet.ipf.fr_tcplastack=120 net.inet.ipf.fr_tcptimeout=240 net.inet.ipf.fr_tcpclosed=10 net.inet.ipf.fr_tcphalfclosed=120 net.inet.ipf.fr_udptimeout=90 net.inet.ipf.fr_icmptimeout=35
net.inet.ipf.fr_tcphalfclosedが一番効く気がする。
片方閉じたソケットで1分以上通信し続けることを期待するアプリケーションなんて存在するのか?
と思ったのでデフォルトの14400から120に縮小。
λ Namazuの漢字コード認識方法
mknmzの問題であろうことが見当ついただけに、左の索引のnamazu以下のセクションがノーマークだった…
mknmz時に--indexing-lang=ja_jp.EUCを指定すればOK。Charsetが指定されているHTML文書に対しては自動認識して欲しかったナリ。
λ [FreeBSD][Windows] Linux の認証を Active Directory で行なう方法
コンピュータアカウントの作成をして /etc/krb5.keytab を作らなくてもActiveDirectory認証してる?
FreeBSD-5.1R(Heimdal)で実験してみた。man krb5.conf すると dns_lookup_kdc っていかにもActiveDirectoryで利用している
DNSのSRV RR(RFC2782)
の参照っぽいので、realmsのところにKDCの指定をしないで dns_lookup_kdc = true 勝負。
[libdefaults]
default_realm = HOGE.G.MIMORI.ORG
; for Heimdal
default_etypes = des-cbc-crc
default_etypes_des = des-cbc-crc
; for MIT kerberos
; default_tgs_enctypes = des-cbc-crc
; default_tkt_enctypes = des-cbc-crc
dns_lookup_kdc = true
dns_lookup_realm = false
kdc_timesync = false
ticket_lifetime = 43200
renew_lifetime = 86400
forwardable = true
proxiable = true
[domain_realm]
hoge.mimori.org = HOGE.G.MIMORI.ORG
[realms]
[kdc]
[kadmin]
default_keys = v5 v4
[logging]
default = SYSLOG:INFO:AUTH
[domain_realm] のところは、hostnameでひけるドメイン(*.mimori.org)を無理やりActiveDirectoryのrealm(HOGE.G.MIMORI.ORG)にねじ曲げる設定。
この時点でkinit,klist,kdestroyしてみるとうまくいっているようだ。
更に /etc/pam.d/telnetd を書き換えてtelnetログインの認証をKerberos経由にしてみる。
# auth auth required pam_nologin.so no_warn auth sufficient pam_opie.so no_warn no_fake_prompts auth requisite pam_opieaccess.so no_warn allow_local auth sufficient pam_krb5.so no_warn try_first_pass #auth sufficient pam_ssh.so no_warn try_first_pass auth required pam_unix.so no_warn try_first_pass # account account required pam_krb5.so account required pam_login_access.so account required pam_unix.so # session #session optional pam_ssh.so session required pam_lastlog.so no_fail # password password sufficient pam_krb5.so no_warn try_first_pass password required pam_unix.so no_warn try_first_pass
…さくっとログインできた。vipwで /etc/master.passwd のパスワードのところを*でつぶしてから試しても大丈夫。 昔の苦労は何だったんだ〜。
しかもWindowsのActiveDirectoryのドメイン下でhostnameをつけることにすれば、 /etc/krb5.conf は汎用で使えるぞ。すんごい楽ちん。 今回 krb5.keytab なしでKerberos認証できるようになったということは Apache とかでの使い勝手もかなり上昇。 。 mod_auth_kerbの設定を久々にしてみるかしら。
ちなみにLDAP経由でActiveDirectoryに認証させるのは楽にならなそうな雰囲気。
λ HDD崩壊
この前交換したばかりの開発用マシンのHDDでセクターエラー発生。 やはりそこらに転がってるHDDを使うのは良くなかったか…
2003-07-15 11950歩
λ MaxBLAST3
i815なチップセットのマシンにMaxtor160GBのハードディスクをくっつけてみる。
そのままではBIOSが認識しないはずなので、 MaxtorからパーティションツールMaxBLAST3をダウンロードしてこいつでパーティション切り&フォーマット。 フォーマットはクイックフォーマットでやってくれるのでWindows2000のブートCDからのインストールよりは速く終わってくれる。
1394カードの先にセクターエラーの出たドライブをぶらさげていたせいか、 新HDDの最初のパーティションはDドライブに設定された。
…と思ったらインストール終了してみるとCドライブ。MaxBLAST3はドライブ名の設定まではやってくれなかったらしい。
2003-07-16 5943歩
λ BEFSR41C-JP
このスループットで実売6000円(yodobashi.com) は安いなあ。 しかしフレッツのVoIP対応ADSLルータが値下げしてしまって、 ブロードバンドルータ買うよりはモアII契約すればいいような情勢。
暗号化支援がないと今後店売りプロダクトとしては厳しいんではないかと。
λ RWikiJP - Rとは
統計処理パッケージSとほぼ互換だけど、Schemeに似た言語でclosureもあるらしい、という認識でいいのかしら。
万一必要になったらRの言語仕様覚えるよりはRRb (R from Ruby) 経由で使うかも。
λ badWebMasters - web underground
MD5やSHA256のJavaScriptまたはVBScriptによる実装。
λ 技術情報 3キャリア対応コンテンツ共通化
1つの画像ファイルで何とかしようとするとJPEGを256色に減色するのがいいらしい? PNGとGIFを振り分けるのがスジではあるが。
λ tDiaryテーマ
NamazuのテンプレートにtDiaryテーマへのURLとdivをちょりっと書いただけでそれっぽくなった。 ありがたい事だ。
tdiary.confを参照してtDiaryテーマへのURLの埋め込みも出来るといいな。メールアドレスの埋め込みもやりたいし TODO
λ [xyzzy]辞書引きモードを使ってみる
昔使おうとした時は本屋で英辞郎買わなきゃと思ってあきらめていた。いつの間にダウンロードできるように? と一瞬思ったがそんなことは全然ないじゃん。なんだー。
電子辞書は、大昔SONYの電子BOOKプレイヤーにおまけでついてきた辞書をずーっと愛用している。 閲覧はDDWinで。たったの100MBで必要十分。確か4〜5万したけどこの付属辞書のおかげで明らかに元をとった買い物だった。
2003-07-17 6325歩
λ [FreeBSD] ata(4), atacontrol によるディスクミラーリングの実験
man atacontrolのcreateのところを読むと、atacontrolによる RAID1 の実現は、 RAID対応でない任意のコントローラーに対して利用可能なような雰囲気。 同じ事を考えている日記: Motd 2002.11.5
i845チップセットのICH2に直接HDDを2台ぶら下げたシステムにて、
atacontrol create mirror ad0 ad1 とやると ar0 出現。
この状態でatacontrol status ar0とやると status: READY とのたまう。更にatacontrol rebuild ar0しても何も起きず。
しょうがないから再起動したら、起動メッセージで ar0 を認識したものの root filesystem がマウントできず起動できなくなってしまった。
さすがに稼動中のシステムを簡単に移行するのは無理か…
このままFreeBSD-5.1RのCDでインストール開始すると、ここでもデバイスとして ar0 が登場。 なんとなくRAID管理用セクターがHDDの先頭部分に出来ているような気がする 。 ar0に向かってそのままインストールすると何の障害もなくインストール完了。 ブートも問題なしで root filesystem は /dev/ar0s1a をマウントしている。 make buildworld; make installworld 後の再起動も成功。
最初のRAID構成をどうするかのところを、「RAID対応と言われているコントローラのBIOS経由」でないと面倒だが、 それさえクリアすればどんなコントローラでもよさげ。 あとは片肺運転とかHDD交換作業とかの実験をせねば。
ATA RAID(ish.org)にHDDの交換手順がある。
atacontrol detach, atacontrol attachはチャンネルに対して行われるため、
Master/Slave 2台つながっていると2台まとめての処理となる。
作業対象のマシンは1Uベアボーンでケーブルの引き回し上どうしようもないが、 RAID構成でホットスワップしたいなら1チャンネル1HDD接続でないとまずい。
λ [Windows] RPC インターフェイスのバッファ オーバーランによりコードが実行される
RPCはそうそう止められないんで最近の中では一番やばいなこりゃ。手であてるか。
λ rdiff-backup
リモートにバックアップしつつ昔のファイルも取れるらしい。 俺的にはpdumpfs-rsyncの方がいいかなあー。
"rdiff-backup also preserves subdirectories, hard links, dev files, permissions, uid/gid ownership (if it is running as root), and modification times. " のあたりの機能はrdiff-backup側にしかないかも。
λ [FreeBSD] FreeBSD Port Tools
俺portを作ってsend-prで申請するのに便利なツール、らしい。
λ [FreeBSD] bsdftpd-ssl
RFC2228 Security Extensions のサーバ側実装、らしい。
λ [Windows] SafeTP
RFC2228 Security Extensions のサーバ・クライアント両側実装。
なんか1GBのファイルアップロードがWebDAV経由でうまくいってないらしいので、 優秀なFTPクライアントならなんとかなるかなー。 しかしdata connection用のポートを外に解放しないといけないのはちょっとヤダナ。
2003-07-18 7899歩
λ [FreeBSD] ata(4) RAIDの先頭セクタ構成
/usr/src/sys/dev/ata/ata-raid.h, /usr/src/sys/dev/ata/ata-raid.cを参照すると、
HighPointのRAIDカード以外はすべてPromiseのRAIDカードFastTrakの
セクター情報を元に設定することになっている。ata-raid.cより抜粋:
switch(adp->device->channel->chiptype) {
case 0x4d33105a: case 0x4d38105a: case 0x4d30105a:
case 0x0d30105a: case 0x4d68105a: case 0x6268105a:
case 0x4d69105a: case 0x5275105a: case 0x6269105a:
case 0x7275105a:
/* test RAID bit in PCI reg XXX */
return (ar_promise_read_conf(adp, ar_table, 0));
case 0x00041103: case 0x00051103: case 0x00081103:
return (ar_highpoint_read_conf(adp, ar_table));
default:
return (ar_promise_read_conf(adp, ar_table, 1));
}
return 0;
SiSとかIntelの奴もPromiseと同じなんかなー。
片肺運転の実験失敗
実験してたらマスター側のHDDがBIOSからも認識しなくなってしまった。なぜやー。
最近Maxtor DiamondMax16シリーズ(4RxxxL0か4AxxxJ0)のを大量に購入してるけど今のとこハズレなし。 なによりビット単価がべらぼうに安い。 サーバ機用のHDDは Maxtor 4R120L0 に統一してスペアディスクを稼ぐ計画が進んでるので、 この実験機用に2台追加するか。
λ 「阪神タイガースCF」
こういうのこそ経済効果炸裂だよなー。
λ [Windows]バイナリ文字列変換
VBScriptだけで画像データを受け取ろうというかなり力技なサイト。 AppendChunkのバグの話を読むと画像データをデータベースに保存する方針がかなり萎える。
MSAccessでロングバイナリデータを使う
もちっとASPで画像のやりとりをするサンプルコード。.Netじゃない環境だとBASP21使わないと辛いか。
バックエンドをSQLServer2000にしてやってみたが、大きな問題なし。getJpeg.aspの最後のところにちょこっと単語の入れ替えがあったぐらい。
objConn.Close Set objConn = Nothing
global.asaにタイプライブラリを指定する方法は知らなかった。 指定したバージョンのMDACがインストールされているかどうかは微妙なので、 あんまりバージョンに依存しないGUIDが知りたい。2.0のGUID指定すればいいんかな? Windows2000だったら2.5スタートらしい。
ActiveScriptRubyでやってみる
バイナリを AppendChunk に渡すところを、Rubyの流儀で普通にStringクラスの変数を渡してしまうと、勝手にUnicodeにして渡そうとする。 バイナリを正確に渡す方法は、どうも VT_ARRAY|VT_UI1 (参考:Win32::OLE::Variant) すなわち符号なしオクテットの配列として渡すのが正しいらしい。
が、こういうVariantをRuby上で作る方法が分からん。 Win32OLEリファレンス がGoogleですぐに出てこないのは困りもの。
…このリファレンスの「特殊なタイプ」のところに一応書いてある
x._invoke dispid, [[1,2,3]], [VT_ARRAY | VT_UI1] と記述すると、Win32OLEはバイト配列を作成し、OLEAUTがバイト配列のバリアントとして呼び出しを行うため、正しく処理される。
けど、これは難しすぎまする! 掲示板で質問してみた。
λ SWIGとRuby
かなり網羅的なドキュメント。
SubversionのswigによるPython bindingの実装読んだらめちゃめちゃPython依存だらけでドヨーンみたいな。 結局のところSWIGとRubyを理解して最初から書いてもそんなにコード量は増えない雰囲気。
SubversionのC APIについてはUsing the Subversion Client API が参考になる。
2003-07-19
λ HikiFarm の設置
まずはruby-amritaのインストール作業
sudo /usr/local/sbin/portinstall textproc/ruby-amrita
Hikiの複数運用ソースは /local/share に展開
cd /local/share cvs -d:pserver:anonymous@cvs.sourceforge.jp:/cvsroot/hiki login cvs -z3 -d:pserver:anonymous@cvs.sourceforge.jp:/cvsroot/hiki co -r v0_5_branch hiki
CGIを設置するディレクトリは ~/public_html/hiki。dataディレクトリ以外はリンクにしてみる。
mkdir -p ~/public_html/hiki cd ~/public_html/hiki for c in data hiki messages style template ; do ln -s /local/share/hiki/$c done (cd /local/share/hiki; pax -r -w -v data /home/h/mimori.org/hiki) # テーマをhikiとtDiary両方参照する mkdir theme (cd theme; for c in /usr/local/share/tdiary/theme/* ; do ln -s $c done for c in /local/share/hiki/theme/* ; do ln -s $c done ) # プラグインディレクトリは自分でファイルを足したいのでリンクでなく実際に作成 mkdir plugin ln -s /local/share/hiki/plugin/00default.rb # データを保存するディレクトリ mkdir -p ~/hiki/data mkdir -p ~/hiki/cvsroot # hiki.rb ファイルの生成 ln -s /local/share/hiki/hiki.cgi hiki.rb # index.cgi ファイルの生成 cp /local/share/hiki/misc/hikifarm/index.cgi . chmod u+x index.cgi # hikifarm.conf cp /local/share/hiki/misc/hikifarm/hikifarm.conf . vi hikifarm.conf # hiki.conf cp /local/share/hiki/misc/hikifarm/hiki.conf . vi hiki.conf
hikifarm.confで、Hikiのインストールパスには、上記自分で用意したディレクトリを指定
# Hikiのインストールパス hiki = '/home/h/mimori.org/hiki'
hiki.confは大体見た通り。
[Hiki-dev] hiki (farm) のデータを cvs で保存
リモートからcvs経由で更新もおそらく出来るはず。…でけた!
いいタイミングで欲しい機能が追加されてた。Hiki最高〜
λ Punycode
ASCII文字をエンコード後も保存っていいな。
新しいWikiサイトの作成に「英数字のみ」という制限があるのは、 それでディレクトリ名を作ってしまうという理由からだと思うが、Punycode化するといいカモ。 日本語が大半なのにURLエンコードでずらずら長くなってしまうのは無駄っつーか視認性悪いのでそんなことを思ってみた。
RFC3492のコードを Uconv モジュールに組み込むのがよさげ。
λ もっと ata(4)によるRAID
atacontrol create mirror ad0 ad1 の後、ad1 を抜いてatacontrol reinit 0で再初期化。
そうするとatacontrol status ar0でstatus: DEGRADEDとなる。
もう一度ad1を接続してatacontrol reinit 0で再初期化してもやっぱり status: DEGRADED のまま。
ここでatacontrol spare ar0 ad1とやるもコマンドを受け付けてくれなかった。
ATA RAID(ish.org)を改めて読んだら、-currentにしか存在しないのね。 ということで片肺のまま-currentのインストール作業続行。
今日のFreeBSD-currentにした
2台目のHDDをつないだら起動中パニック。 中途半端にミラー設定の名残があったのがまずかろうとMaxBlast3のフロッピーから 先頭63セクターを消してみた…がそれもパニック。 Zero Fill processで先頭1%だけ消してみた…がそれもパニック。うーむ。
電源入っている途中でad1を接続してatacontrol reinit 0を実行すると status: DEGRADED なのに ad1 が勝手にミラーの一部として登録されている。
でもそのままatacontrol addspare ar0 ad1、atacontrol rebuild ar0を実行すると、Rebuildプロセスに突入した
。
やっと念願のRebuildやー。
atacontrol status ar0でRebuildの実行状況を見ることができる。さて結果はいかに。
HDDの交換手順をマシンに貼り付けておかないと本当に壊れた時には絶対復旧に失敗するなこりゃ。今のFreeBSDのままだとすれば、
- シャットダウン
- 壊れたHDDを抜く
- シングルユーザモードで起動して電源を入れたままHDDを追加
- atacontrol reinit 0
- atacontrol addspare ar0 ad1; atacontrol rebuild ar0
- 時間がなかったらRebuild中でもマルチユーザモードにしてしまう
つー所か。
λ あなたは250万$当選しました (ARTIFACT)
うちにもドイツ・オランダ系の奴が来た。 中に入っている返送用封筒は料金受取人払いっぽかったので、空の封筒を投函してみた。
全員が空封筒返信作戦をすればそれなりに打撃… ってもそもそものエアメール送信にかかるコストの倍ぐらいにしかならんのか。 その程度では悪徳業者の投資効果をマイナスにするほどの効果はなさそうだなあ。
λ ジラーチ ゲット準備
7月31日までにジラーチをゲットしなきゃ引換券があるので、プレイしなきゃなー。 と秋葉原を歩いていて中古屋でソフト入手。 ポケモン図鑑入手後のセーブデータも入ってたし、これでジラーチ ゲットだ<激しく間違っている
ついでにファイアーエムブレムも買ってみた。ハードモードからプレイできて嬉しい。が、そんな暇あるのか?
λ Wiki文化でのツッコミ?
Hikiを立てようと思ったのは、7月13日の日記で tdiaryinst.rb へのさまざまなツッコミが、 「過去の日記に埋もれるのはもったいない」と思ったわけだからだが、 Hikiにはツッコミを表示するところが今のところ見当たらない。 掲示板のスレッドのようなものが無いとそれはそれで不便な訳で、なかなか難しい。
外部の情報を参照して一つのページとしてまとめつつ、 それが外部の情報だとはっきり分かるという形態をリンク以外の形で実現できると、 見やすくなるのか?
tDiary FAQ
ではChangeLogを使っている…ってこれHikiじゃなくてYukiWikiベースやん。
2003-07-20 1070歩
λ 国内公開 ntp サイト一覧
フツーntp?.jst.mfeed.ad.jpだとは思うが一応メモ。
プロバイダにOCNを利用している回線ではOCNのNTPサーバを指定している。
パワードコムもNTPサーバ公開してねえのかなあ。
外向けに3回線ある某社では、回線にntp?を一つ割り当てて内側でpeerを組むという推奨構成で自己満足状態:-)
λ [FreeBSD] ports mail/qmail
ports化してなかったほぼ最後の砦 qmail をports利用に切り替えてみる。 /usr/local/etc/pkgtools.conf ではオプション大盛りで。
MAKE_ARGS = {
'mail/qmail' => '-DWITH_QMAILQUEUE_PATCH -DWITH_QMAILQUEUE_PATCH -DWITH_BIG_TODO_PATCH -DWITH_OUTGOINGIP_PATCH -DFORCE_PACKAGE' ,
}
outgoingip.patch が普通に取れなかったのでgoogleで調べて入手。checksumも違っていたため、ついでに qmail-pop3dをAPOP対応するためのパッチも追加して、 このファイルを /usr/ports/distfiles/outgoingip.patch として置いておく。
/etc/group には qnofiles を nofiles グループと同じgidであらかじめ作成する。 portupgradeすると設定ファイル上書きされてしまうので、/var/qmail/controlの下をバックアップする。重要。
ここまでやってsudo /usr/local/sbin/portinstall -fwWp mail/qmailでインストール。
/var/qmail/control の下をバックアップから書き戻して終了。
(7月31日追記)ローカルの所有者設定は以下のコマンドを利用して整備した。
sudo find /var/qmail -group 111 -exec chgrp qmail {} \;
sudo find /var/qmail -group 110 -exec chgrp qnofiles {} \;
sudo find /var/qmail -user 110 -exec chown alias {} \;
sudo find /var/qmail -user 114 -exec chown qmailq {} \;
sudo find /var/qmail -user 116 -exec chown qmails {} \;
sudo find /var/local -group 111 -exec chgrp qmail {} \;
sudo find /var/local -group 110 -exec chgrp qnofiles {} \;
sudo svc -d /var/service/*/log
sudo find /var/local -user 110 -exec chown alias {} \;
sudo find /var/local -user 111 -exec chown qmaild {} \;
sudo find /var/local -user 112 -exec chown qmaill {} \;
sudo find /var/local -user 113 -exec chown qmailp {} \;
sudo find /var/local -user 114 -exec chown qmailq {} \;
sudo find /var/local -user 116 -exec chown qmails {} \;
sudo svc -u /var/service/*/log
sudo chown qmaild pop5smtp.db
sudo chown qmaild /local/sbin/pop5smtp
sudo chgrp qnofiles /local/sbin/pop5smtp
== outgoingip.patch について
/var/qmail/control/outgoing にIPアドレスを書いておくと、qmail-remoteで外に配信する際そのIPアドレスをsrcアドレスとしてアクセスする。
IPアドレス制限をしている受信設定をしているサイトを運用している場合に有効。特に iモードメールの「特定接続サービス」 とか。
qmail-pop3dをAPOP対応
イマドキだと courier-imapd とか cyrus-imapd を使うのがいいんだろうけどねー。 cyrus-sasl2が入っているマシンが増加傾向なので今度作業するなら cyrus-imapd かしら。
λ [Subversion] リポジトリ復旧
svnlookか何かをしてたらリポジトリを壊してしまった。リポジトリの所有者が svn の場合の復旧手順は以下の通り。
svc -d /var/service/svnserve chown svn /home/svn/repos/ chgrp svn /home/svn/repos/ chmod -R g+w /home/svn/repos/ sudo -u svn svnadmin recover /home/svn/repos/ svc -u /var/service/svnserve
λ IDNA Prefix
国際化ドメインのプレフィックスは xn-- になっていた。
λ apache2 でhttpsとhttpで別々の認証
https経由だったら証明書認証、httpだったらBasic認証 というのは VirtualHost で振り分け。
<VirtualHost _default_:80>
<Location "/hoge">
AuthUserFile /somewhere/passwd
AuthGroupFile /dev/null
AuthName hoge_auth
AuthType Basic
<Limit GET POST OPTIONS PROPFIND>
require valid-user
Order deny,allow
Allow from all
</Limit>
<LimitExcept GET POST OPTIONS PROPFIND>
Order deny,allow
Deny from all
</LimitExcept>
</Location>
</VirtualHost>
<VirtualHost _default_:443>
<Location "/hoge">
SSLRequire %{SSL_CLIENT_I_DN_CN} eq "Hoge CA"
</Location>
</VirtualHost>
FakeBasicAuthを使ってうまいこと統合できないかどうか挑戦してたけど、うまくいかず断念してしまった。 これは今まではhttp側がapache1.3.xだったのが、apache1.3.x廃止のための作業。 とりあえずちょっと止まっても大丈夫なサイトから。
作業していてSSIの設定を .htaccess に書いてるところとかあると面倒だなーと思った。 .htaccessで .html ファイルをSSIにする設定にしているファイルをとっつかまえて、以下のような感じで書き換え。
<IfModule !prefork.c> AddHandler server-parsed .html AddHandler server-parsed .htm </IfModule> <IfModule prefork.c> AddOutputFilter INCLUDES .html AddOutputFilter INCLUDES .htm </IfModule>
やっぱ業務で提供しているサイトをapache2系列にするのは難しいすな。 mod_perlとか使いまくってたらとても移行できん。
IPv6&SSLサイトを apache2 にしておいて並列運用、 コンテンツ作成者がIPv6経由のアクセスにするようなプロキシ立ててまったりと検証してもらうという流れがいいかしらん。 「外からだと見えるのに社内からだとエラーになるんだけど」という状況にして文句言ってもらう訳だ。
λ SWIG 型とタイプマップ
練習がてら ぷにコード のRubyモジュールの作成をしていたら、 結局のところSWIGを利用した実装をしようと思うと、タイプマップとの戦いに大半を割かれることになってしまった。
解説文は 「タイプマップが内部の低レベルコードジェネレータへのアクセスを可能にする上級のカスタマイズ機能であることを強調しておく」 などと、いかにも一般人はタイプマップを使わなくてもいいかのようなイントロダクションで始まっているが、 文字列を使った瞬間にアウトっつーか。 C言語自体に文字列への安全なアクセス手段の定義がないんだから当たり前だし、 プログラムを生成するプログラムなんてものは不思議な呪文に満ちているものだ。
手元にウサギ本がなかったので、 拡張モジュールの作り方 (BlackCity.LABORATORY.Ruby.EXT) を結構参考にした。
2003-07-21 0歩
λ Ruby PunyCode
作った。EUC-JPな日本語をURLエンコードするとオクテット数3倍のところ、 PunyCodeだと1.5倍ぐらいで済むので大体半分になるようだ。
2003-07-22 6781歩
λ HikiのエンコードをPunyCodeにしてみる
Hikiのサイト内リンクと、内部的なファイル名をRuby PunyCodeで エンコードしてみるパッチ。xn-- で始まる識別子がどっかに紛れ込んだりするとダメだけど、そーゆーことは 実際に国際化ドメインが軌道に乗らない限り多分ないであろう。
既存コードへの変更は hiki/command.rb に対して3行だけ。
cvs server: Diffing hiki
Index: hiki/command.rb
===================================================================
RCS file: /cvsroot/hiki/hiki/hiki/command.rb,v
retrieving revision 1.4.2.33
diff -u -r1.4.2.33 command.rb
--- hiki/command.rb 17 Jul 2003 11:49:03 -0000 1.4.2.33
+++ hiki/command.rb 21 Jul 2003 22:59:29 -0000
@@ -5,6 +5,7 @@
require 'hiki/page'
require 'hiki/util'
+require 'hiki/utilpuny'
require 'hiki/plugin'
require 'hiki/aliaswiki'
require "style/#{$style}/parser"
@@ -19,14 +20,14 @@
class Command
def initialize(cgi, db)
@db = db
- @params = cgi.params
+ @params = cgi.params.unescapePuny
@cgi = cgi
@cmd = @params['c'][0]
@p = case @params.keys.size
when 0
'FrontPage'
when 1
- @params['c'][0] ? nil : @params.keys[0]
+ @params['c'][0] ? nil : @params.keys[0].unescapePuny
else
if @cmd == "create"
@params['key'][0] ? @params['key'][0] : nil
実際に変換を行う hiki/utilpuny.rb は以下の通り。String,Hash,Arrayにメソッドを追加した。 組み込みクラスへのメソッド追加による実装はRubyパワー全開でとても気持ちいい。
require 'uconv'
require 'punycode.so'
class String
def escape
CGI::escape(Punycode.euctopuny(self))
end
def unescapePuny
if self =~ /^xn\-\-/ then
Punycode::punytoeuc(self)
else
self
end
end
end
class Hash
def unescapePuny # unescape all values (do NOT unescape keys)
self.keys.each { |k|
self[k] = self[k].unescapePuny
}
self
end
end
class Array
def unescapePuny
self.map { |v| v.unescapePuny }
end
end
SideMenu内は無事PunyCode化されたけど、ページ内のリンクは普通のURLエンコードになっていたのはRD+のフォーマッタが 内部でCGI::escapeを直接呼んでいたのが原因。これについてはHiki-devに報告して取り込んでもらおう。
2003-07-23 7205歩
λ JavaScript で複数の文字コードをform から送信する方法
Namazu検索ページにGoogleへの検索窓もつけてみたら、 NamazuページはEUC、Google側はSJISのために送った文字列が文字化けしてしまう、という問題の回避方法。
上記URL中ではSubmitボタンの動作を変更することにより実現しているが、 最終的にはformタグのonSubmitを利用して以下のように指定した。これだったらJavaScriptオフでも(文字化けする以外は)一応動作する。
<form method=GET action="http://www.google.co.jp/search" Accept-charset="Shift_JIS" onSubmit="document.charset='Shift_JIS'">
GoogleからブラウザのBackボタンで戻ると派手に文字化けするけど、リロードすると直るのでそこは愛嬌ということで… そうか、だからボタン内のonClickでsubmit();した後に戻してるのか。
…ボタン内のonClickでやってみたけど、やっぱりBackボタンで戻るとだめっぽい。submit();した瞬間にページ遷移されたらダメだよな。
λ なんでも継続
なんでも再帰の方なら理解できるんだけど、「なんでも継続」は直感的なところまで行かない〜 昔yaccの勉強してて再帰下降パーザまでは理解したけど、LALRがさっぱり分からず断念したのと似たような感覚。
λ FreeRADIUS 0.9.0 Release
リリースはかなり久々。
2003-07-24
λ MS03-031 : SQL Server の重要な更新 絵でみるセキュリティ情報
どういう悪さされるかはイラストになってる方が分かりやすくていい。
今日の朝5時にダウンロードするSUSマシンには来てなかった。朝7時ダウンロードのSUSマシンには来てた。
λ OpenVPN ported to Windows
マイ一押しVPNソフト OpenVPN がついにWindows対応。 今のところ開発者の都合によりWinXPのみの動作確認だが、Windows2000/NT4でも動くかも、という雰囲気。
OpenVPNはログを見れば大体何が悪いか分かるところがIPsecより楽。OpenVPNならUDPのポート1つだけなのでNAT越えも簡単。
λ [FreeBSD] Pound
ports/www/pound が Pound1.4にアップデートされた。/usr/local/etc/pkgtools.confに以下の行を追加して portupgrade。
MAKE_ARGS = {
'www/pound' => 'CONFIGURE_ARGS="--disable-daemon --without-log"' ,
}
これでdaemontoolsの流儀で起動できる。--without-logの影響かCPUを食わなくなった。
λ Hiki PunyCode化 その2
encodeとunencodeが非対称なのが気持ち悪かったのでutilpuny.rbをこんな風にしてみた。
String#escape した結果は Hiki::String クラスになるので、unescape で元に戻る。
ただし文字列演算をしたらアウトという微妙な状況。
require 'uconv'
require 'punycode.so'
module Hiki
class String < String
def escape
Hiki::String.new(CGI::escape(Punycode.euctopuny(self)))
end
def unescape
Hiki::String.new(Punycode.punytoeuc(CGI::unescape(self)))
end
end
end
class String
def escape
Hiki::String.new(CGI::escape(Punycode.euctopuny(self)))
end
def unescapePuny
if self =~ /^xn\-\-/ then
Hiki::String.new(Punycode::punytoeuc(self))
else
Hiki::String.new(self)
end
end
end
class Hash
def unescapePuny
# unescape all values (do NOT unescape keys)
self.keys.each { |k|
self[k] = self[k].unescapePuny
}
self
end
end
class Array
def unescapePuny
self.map { |v| v.unescapePuny }
end
end
プログラム中に存在する文字列リテラルのクラスを変更するとかいう大技はないよなあ…
そもそも [Server上で文字列をescapeした結果] はHTTPプロトコルを通じてブラウザ上に展開される時点でunescapeされる という非対称性をかかえている、 というか「Server上でunescapeしたい」とはどういう状況なのか検討しないと。
少なくとも db/flatfile.rb中で使われているescape,unescapeはファイル名の生成に利用しているので、
ブラウザに投げる文字列としてescapeするのとは状況がかなり違う。
2003-07-27
λ [FreeBSD] ports/japanese/tdiary
portupgrade すると /usr/local/share/examples/tdiary/tdiary/rd_style.rb が失われてしまう。
pkg_delete した時点では消えないので、インストールする時に消しているっぽい。うむう。
λ [Subversion] 暮らしの業(2003-05-07)
SVNIndexXSLT を使うとリスト表示がかっこよくなるらしい。 リポジトリを直接かっこよく見せたい要望は今のとこないけどメモ。
λ [Subversion] Status of Ruby bindings
Einar Karttunen さんがSWIGベースのRuby bindings を作ろうとしているような、していないような。
このメールのスレッド中で subversion/bindings/ruby の中身が削除されてた。
λ こんにちWA
NHK教育の番組「夢りんりん丸」で流れてきた曲。NHKでも「こんにちわ」オケーになりつつあるのか?
λ [Subversion] ruby bindings への一歩
とりあえず extconf.rb の途中でエラーが出る問題と闘ってみた。
要するにlibaprutil-0をリンクしようとするとXML関係の libexpat を要求してきて失敗していたのが原因。
svn-config --libsした結果を$libsに追加してやれば解決した。
svn-config --libsは-L(どっかのディレクトリ) も追加してくれるし、
APR関係のものも含んでいるので結局apr-configやらapu-configやらは削除してしまってこんな感じ。
require 'mkmf'
$CFLAGS << " -I../../include"
$CFLAGS << `svn-config --cflags`.chop
$CFLAGS << `svn-config --includes`.chop
$libs << `svn-config --libs`.chop
$libs = append_library($libs, Config::CONFIG['RUBY_INSTALL_NAME'])
# Extra libraries needed to compile
libraries = [
['apr-0', 'apr_initialize'],
['aprutil-0', 'apr_md5'],
['svn_subr-1', 'svn_pool_create'],
['svn_delta-1', 'svn_txdelta_next_window'],
['svn_client-1', 'svn_client_commit'],
['svn_wc-1', 'svn_wc_entry'],
['svn_ra-1', 'svn_ra_get_ra_library'],
]
libraries.each do |lib,func|
unless have_library(lib, func)
puts "You seem to be missing the #{lib} library."
puts "I can't compile the svn library without this."
# exit(1)
end
end
# These aren't required, but we'll link them if we have them
have_library('svn_fs-1', 'svn_fs_new')
have_library('svn_repos-1', 'svn_repos_open')
# SWIGランタイムサポートライブラリを追加
have_library('swigrb', 'SWIG_InitRuntime')
# Makefineの作成
create_makefile('svn/client')
create_makefileのところでディレクトリを指定しておくと、make installの先がサブディレクトリになる。
結果として利用者側のRubyスクリプトでrequireのところに指定したい文字列 require 'svn/client' と同一になる。
SWIGによるpythonバイディングの実装は、ほとんどの構造体についてSWIGおまかせで何とかなっているらしく、 なかなか秘密に迫れない。
2003-07-28 9675歩
λ JNBアグリゲーション
「銀行、証券などの金融サービスや各種請求情報、ポイントといった個人のID/パスワードを必要とするWebサービスの情報を1つの画面上で見ることが可能です」 そんな怖い機能便利だとか言って薦めるなよ!!。マジで。
スマートカードとかのID/パスワード以外の認証方式が必須ならともかく…何かの陰謀ですか?
λ デタラメなHTML入門@朝日新聞土曜版 /.J
自分も大昔は ケツP で1行空けてたりしたし、 視覚障害者用ブラウザのことを初心者が考えることはないと思うし。
fontタグさえもっと内側に置いといてくれれば許容範囲内だったんだけどなあー。
λ 大学入学金返還裁判
入学金払った瞬間に入学完了の専門学校方式でええんじゃないの?入学辞退は不可。退学届けを出してください。 きっちりIT化してやれば即時学生番号発行、クラス分けも完了できるだろう。 授業料は返すべきだと思うが。
直接関係ないけど、 最近やふおくで「巨人阪神戦のチケット ん万円」というのの注意書きに、 「雨天中止の場合は自分で(ホゲ千円)払い戻して下さい」 というのがあって、そーゆーリスクは最終的な支払いをした人が受け持つのか?と思ってみたり。
λ SQLrelay
昔一瞬触って何もわからず断念した時に比べるとずいぶんドキュメントが増えた感じ。 もっかいチャレンジしてみるか。
Matzにっき で DBI/Ruby が標準になるかもという話で、 SQL接続まわりの調査で。
λ [FreeBSD] 日本語MySQL
MyODBC を導入するを参照すると、 Windowsとやりとりする気があるならデータベースはSJISにしてしまうのが吉らしい。
例によって /usr/local/etc/pkgtools.conf を編集して、portinstall databases/mysql40-server
MAKE_ARGS = {
'databases/mysql40-*' => 'WITH_CHARSET=sjis WITH_OPENSSL=yes WITH_XCHARSET=all DB_DIR=/home/mysql' ,
}
最新の MySQL4.1 系だとSJISで作れなかった。まだなんかな。
λ Flets モアII(今日の宇宙人カウントダウン)
速度が上がらないそうだ。電話局からの距離が分からないのでこれだけでは何とも言えないが…
2003-07-29 5384歩
λ 日本語MySQL つづき
データベース管理 のページを見ながら接続アカウントの設定。
TCPで接続しようとするとすぐに接続が切れてしまう。Unixドメイン接続なら問題なし。 TCP接続時のエラーメッセージは
ERROR 2013: Lost connection to MySQL server during query
なのだがそもそもクエリを投げる前なので的を射てない感じ。このエラーメッセージでググっても有用な情報が出てこない。 こんな初っ端のつまづきだったらGoogleで普通はもっと情報が出てくるものだ。
…だめだ、わからねえ。ldd /usr/local/libexec/mysqldを実行したら libwrap.so にリンクしてたから
/etc/hosts.allow かとも思ったけど、プライベートIPは全部通してるはずだし。
日本語ドキュメントの整備状況だとPostgreSQLのが若干上という気がする。しばらくMySQLは忘れよう。
λ オブジェクト指向は難しい (Matzにっき)
これでは、つまづいています、という人に向けての説明としてはだめな気がする。 Ruby User's Guide - 入門・オブジェクト指向 の方が多分わかりやすいんではないかな。どっちもMatzさん作だけど日記だと短時間で書き捨てなので、幅広い層に訴える文章を書くのは難しいようだ。
Google 検索: オブジェクト指向 メリット で最上位にでてくるサイトの先にある Object感覚の学びにくさの原因の以下の部分
実際に"動く"言語となるためには、 1つの大きな転換が生じている(と、俺の視点から見れば見える)んです。 それは何かというと、「言語(ソース)で書かれる部分は、(殆ど)全てが「動作」である」という点です。 他の言語にある宣言だのなんだのの類のかなり多くが、Rubyではそれ自体がメソッド呼び出しであったりします。 属性を作るメソッド(笑)とか、そういう奴らです。
はなかなか興味深い。オブジェクトの中身を決定しているのは[手続きのかたまり]でしかない、ということか。
個人的にオブジェクト指向どっぷりになったキッカケはなんだったかなー。 雑誌とかでC++がもてはやされて、MVCがどうとかよく言われていた時代の雰囲気があったような。 NeXTのInterfaceBuilderを触る環境があって「おーすげー」と思ってた割には、 自分で初期に書いた大きめのコードはC++による画面制御システム。
λ TOSHIBA MK6022GAX
昨日先輩からこの型番のHDDがお亡くなりになったけど丁度バックアップとった直後で良かった、という話を聞いていたのだが。
自分のメインマシンのMK6022GAXからさっき「カツンカツン」というよくないシーク音発生。 やはり夏になって暑くなると壊れるんかのう… このHDDの温度を HDDTemp.exe で計ると通常46℃、がんばっている時に48℃。
2003-07-30 8375歩
λ アッカ、ADSL 26Mサービスの速度と距離データを公開
線路長3100mで100kbpsアップ の文中では アッカの予想速度チェック に41dbをつっこんで確認しているようだ。
あんな日記を書いている技術者でさえ誤解するんだから、 24M/26Mに挑戦する価値があるのは線路長2000m以下だけというのが徹底してないと利用者は混乱するばかり。
λ オブジェクト指向は難しい つづき(Matzにっき)
またMimoriさんをくらってしまった。これはあとでツッコミしとこう。
ドキュメントの検索という話は、初心者のとっつきやすさと深く関連してそうだ。 ウサギ本は名著なので、 これさえ読めば難しいと思うことはないと思う。
Rubyプログラミング中は「Ruby リファレンスマニュアル(HTML版)」をローカルに置いていつも参照しているけど、 これで僕が困らないのは、ウサギ本を一読した上で、ポケットリファレンスをたまに電車の中で読んで、 Ruby付属のクラスについての概要を把握しているから。
初心者はファイルの読み書きをしようとして、File#read の説明はどこにあるねん! と悩むのだろうか。 …というか、「ファイルから読み込みたい」という要望がまずあるのであって、 それをかなえるメソッドはどうやって探すんだろう。
ちなみにMicrosoftのMSDNライブラリは「〜がやりたい」と思った時に調べるツールとしてすごく良く出来ていると思う。 ツリービューによる構造化、キーワードのインクリメンタルサーチ、全文検索 といったあたり。
λ FOMA FirstPass
携帯端末にクライアント証明書を入れてくれるサービス。 最新のFOMA端末から利用可能で、ほとんど利用料金がかからない模様。
これを使って社内グループウェアへのログイン認証とかすれば完璧だ。
DoCoMoが対応している認証局はSSLスペックによると、 ベリサインとBaltimore Technologies Japanだけ。 Baltimoreはサーバ毎ではなくて証明書毎ライセンスだ。 75000円/年は高いと思うけどベリサインよりはまし。
FirstPass - ご利用規則にあるFirstPass運用規程は、 証明書のプロファイルに含まれている値がどういう階層構造なのか分かりやすく表になってて参考になる。 しかしサーバ側は何で登録が必要なんだろう?
λ ジラーチ
閉店間際ポケモンセンターに行ってきたけど、どうも配布してないようだった。明日は行けなさそうだし…
ポケモーションかなり山積み。実際に振動させているデモ展示があったけど、「任天堂」って漢字出してちゃダメだろ。 ピカチューとかアチャモにしとけよー
2003-07-31 7293歩
λ CGIからFastCGIへの乗り換えは簡単
FastCGI使うとNPHスクリプトになるてことなのかな
λ EZwebへのメール送信
EZwebのメールサーバをDNSで調べるとIPが1つしかないけど、 そいつに向かって同時に複数のセッションをはると、HELOのところで 421 Serviceunavailable をくらって配送に失敗する。 特定の宛先だけセッション数管理できるメールサーバを組むのはめんどいなあ。
sendmailは元々同時に1セッションしか作らない仕様だったっけか?
@jp-t.ne.jp も同じ仕組みのような雰囲気。
λ ポケモーション 特許
で検索してる人がいる。任天堂特許出願したのかな。
単色LEDアレイを動かして文字を表示するというのは高校時代の電子工作として普通にあったけど、 「加速度センサーで振動の状態を検出する」とか 「隣り合った緑と赤のLEDをきっちり制御してオレンジを出す」とかいったあたりは特許かもしれんなあ。
λ [Windows] PhotoShopでフォントの読み込みがやたら遅い
フォント関係のトラブルで、Windows一般的には フォントキャッシュの削除 が定番。 画面のdpiを変えると作り直してくれるという技も存在するらしい。
しかし日本語の扱いに関してはPhotoShopは自前でアヤシイ仕掛けを持っている節があるので、現地に行ってみないと確実なことが分からない。
FontReg
C:/Windows/fonts にインストールしなくても一時的に新しいフォントが使えるらしい。
133732 - Missing TrueType Fonts in Fonts Folder or Programs
レジストリの HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts にフォントが登録されている。
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Font Drivers に "Adobe Type Manager" というキーがあるのもあやしい。 811769 - Type 1 フォントを使用すると Atmfd.dll で STOP 0x00000050 エラーが発生する というのもあるらしいし、ServicePack4あてれば直るかなあ…
最近 WindowsUpdate経由でServicePack4をあてたとすれば、逆にそれが原因かも。
λ フレッツADSL モアII 機器レンタル料
いまいち値段体系が釈然としないが、 「ADSLモデム内蔵ルータタイプ」だと月440円 、フレッツ・ADSL|料金によると、月490円+別途380円のような説明。
あ、後者は「ADSLモデム内臓」だそうなのでバイオテクノロジーでデコードしてくれるのか。
λ [Windows] MS03-026 はヤッパリやばすぎ
セキュリティホール memo 7月30日より、 「ISS からもフリーなスキャナが公開されました」って、 すでに一気に広がる能力一歩手前のところまで来てるよ。対策側のプログラムとはいえ。
Windows RPCプロセスの脆弱性悪用コードが公に の追記のところを見るとNTベースWindowsならバージョンは問わないワームは出来たも同然。
やっぱセキュリティ関係の大波は夏休みに来るなあ。そして正月休みに小波。
using plugin: amazon calendar2 category html_anchor makelirs makerss recent_comment3 recent_trackback3 squeeze tb-send tb-show recent_list
Copyright(C) 2003-2007 by KAMIYA Satosi (上美谷 智史) All rights reserved.
λ うねうね [ports 書き換えて最新版にするのはいいけど files の下にある patch-* よく見てからやらないと泣き見..]