daily memorandum 2.3.0
CBUG | FreeBSD | Hiki | Knoppix | Mac | Ruby | W-ZERO3 | Windows | ad | amd64 | ks | linux | momonga | net | print | security | tdiary | unix | www | 会社 | 鯖缶 | 全学ゼミ | 本
2005-06-01 (Wed)
_ [www][Windows][security] Deer Park Alpha 1 Available
Release Notes とか読んでみると、いろいろおもしろそう・・・なのだが、 New Extension Developer Features in Deer Park Alpha の
New Scriptable Windows Registry Interface
A powerful and scriptable interface for accessing the Windows registry has been added to provide easy support for all applications.
ってのは、要するに extension から Windows のレジストリに read/write アクセスできるってことでつか? (がくぶる)
外部の script が chrome権限で動いちゃうような脆弱性があったら、 いろいろ楽しい事ができそうだなぁ。:(
2005-06-02 (Thu)
_ 【単独インタビュー】「当社が不正アクセスの手口を公開しない理由」,カカクコムの穐田CEO
えーっと。「最高レベルのセキュリティ対策」に いつの間にやら「自社内で考え得る限りで」なんて枕詞がついてる気がするのですが、 これは気のせいでしょうか? :D
・・・って、最初から 「考えられる最高レベルのセキュリティ対策」 とか 「社内で考えられる最高レベルのセキュリティ対策」 とか言ってたんか・・・。 いつの間にやら「最高レベルの」だけが一人歩きしてたのね。 そらま、「考えられる」レベルが低けりゃ…(ry
2005-06-03 (Fri)
_ [www][ad] Google AdSense
せっかく .ac.jp を離れたので (w、 この日記に広告貼っつけてみますた。 ついでに、レイアウトも微調整。 多分見にくくなったりはしてないと思うのですが、 もし不満等あればコメントに書いて下さい。m(__)m
レイアウト調整の関係で何度かリロードしてるけど、 「1CD ファイアーウォール」な広告がよく出て来る。 やっぱそういう商売してるとこってあるのね。 どういう広告が出てくるか、ヲチしてみると面白そう。
広告ヲチ
日付によって表示される広告の種類が変わるんだなぁ。 ちゃんとページの内容の傾向見て出してるのね。 しかし、トップページの広告はちょっとさびしい感じ。 トップページはいろいろごった煮状態だから、 逆にどういう広告出したらわからないのかな。(苦笑)
広告のセンタリング
<div class="adsense"> <span class="adsense"> <script type="text/javascript"> ...(AdSense の script)... </script> </span> </div>
とかして、CSS の方は
span.adsense {
text-align: center;
}
div.adsense {
text-align: center;
margin-left: auto;
margin-right: auto;
width: 728px;
}
としてます。script タグを span でくくり、さらにそれを div でくくらないと ちゃんとセンタリングしてくれないらしい。 多分 script エレメントがインラインエレメントだからなんでしょう。
なかなかうまくいかないから、最後の手段 <div align="center"> を使おうかと思ったけど、 さすがにそれやったら負けだよね。:D
サーチフォームも
つけてみますた。AdSense のページが吐いてくれる HTML が 結構アレなので(<center> とか <font> とか、やめてくれ)、 その辺は微修正してます。
2005-06-05 (Sun)
_ [www][Windows] IEでサイドバーのタイトルが切れる
うへー。確かに切れてるなぁ。 ってことで、今まで
div.sidebar h2 {
margin-left: -3em;
}
とかしていたのを
div.sidebar h2 {
margin-left: 0em;
}
とかして一応の対処をしておきました。 IEだと box の外に出た文字は消えてしまうってことなのかなぁ。
_ [FreeBSD][print] acroread7 日本語版
acroread5 の CJK フォントを 7 でも使えるようにした ports を作成した はいいが、またまた絶賛放置ちう。 で、そうこうするうちに Linux用 Adobe Reader 7 日本語版なんてのが 出てしまいますた。(・∀・) ftp サイト見ると、中韓用も出てるみたいね。
そんなわけで、落として中身を確認してみる。 「日本語版」ってのは
- Adobe Reader 7 本体(英語版)
- 日本語関係の CMap ファイル
- 日本語フォント(ゴシック付!)
という構成になっている。 「本体」は英語版と同じで、それに日本語の CMap と フォントがくっついてくるという形。 あと、インストーラなどのメッセージやヘルプが日本語になっている。
ここで問題なのが、追加の CMap とフォントが 日本語のものしかないってこと。 もちろん、日本語と英語しか使わない(中韓は必要ない) って人には関係ないし、 中韓用の Adobe Reader を落として 自分で CMap とフォントを入れる分にも何ら問題はない、はず。 しかし、ports を作成しようとすると、 ライセンス の以下の部分が問題になってくる。
2.5 変更の禁止。 www.adobe.comまたはhttp://partners.adobe.comの記載内容が具体的に許可する範囲で(追加的なプラグインおよびヘルプファイルのインストール等)、本ソフトウェアのインストーラの機能をカスタマイズまたは拡張できます。それ以外は、本ソフトウェアを変更または改変したり、本ソフトウェアの新しいインストーラを作成したりすることは許可されません。
つまり、実質的に Adobe Reader 付属のインストーラの wrapper として機能する ports を作る分には(多分)問題ないのだろうけど、 ports 自身で何かをインストールしたりすると、 それは「新しいインストーラの作成」に当たる可能性があるだろう、ということ。 だから、Adobe Reader CJK各国語版からフォントと CMap だけ抜き出す ports を作るのは多分 NG だろう、と。
まぁ、インストーラを勝手に作っちゃいかんっていうのは、 多分「ライセンスに同意しますか? [Y/n]」に 明示的に Y と答えさせたい、といったあたりなのだろうから、 ネゴれば(ゴネれば)何とかなりそうな気もしなくはないのだが。。。
2005-06-07 (Tue)
_ [ad] A8.net で広告探し
最近ちょっとアフィリエイトにハマリ気味で、 今日も A8.net の広告を全部見てしまった。(^^; *1 見てるといろいろ面白いものがあるので、 何かグッときたものがあったらここで広告掲載して紹介してみることにしますね。 まぁ、小遣い稼ぎするにはアクセス数少な杉で、 もう2〜3倍(log scale で)増やさないと、なのだが・・・。 とりあえずは「面白いものを見付けたらここで紹介する」ってスタンスで しばらくやってみようと思ってまつ。 世の中には「アフィリエイトで小遣い稼ぎ!」な blog 等が多いわけだが、 こういう楽しみ方もあっていいでしょうってことで。
A8 自体の広告も面白かったので、貼ってしまいますた。 これ読んでる人、是非ダンナの悪口を blog に書いて儲けて下さい! (w
それはそうと、やぱ animation gif って目がチカチカしてうるさいね。 限られたスペースで多くの情報を掲載するには いい手段だとは思うのだけど。
*1 ヒマなヤツ〜、と思う人もいると思うけど、ホントにヒマなものは仕方がない。(・∀・)
_ [FreeBSD] rtprio(1), idprio(1)
irc ねた。 rtprio(1), idprio(1) なんてのがあるそうな。
The rtprio utility is used for controlling realtime process scheduling.
The idprio utility is used for controlling idletime process scheduling, and can be called with the same options as rtprio.
A process with a realtime priority is not subject to priority degradation, and will only be preempted by another process of equal or higher realtime priority.
A process with an idle priority will run only when no other process is runnable and then only if its idle priority is equal or greater than all other runnable idle priority processes.
ってことで、
- rtprio(1) で realtime priority を与えられたプロセスは、realtime priority が自分と同じか、または自分より高い realtime priority を持つプロセス以外には CPUを奪われない。
- idprio(1) で idle priority を与えられたプロセスが実行されるのは、ほかに実行できるプロセスが存在しなくて、かつ、自分以外の idle priority を与えられたプロセスと同じか、より高い idle priority を持っている時だけ。
ってことらしい。まぁ、要するに、 nice(1) より強力な制御ができるってわけね。
どっちも root でないと使えないみたいだけど、 idprio は一般ユーザーが使えてもいいんじゃないかなぁ。 これが一般ユーザーで使えると、CPUが空いてる時だけ 数値計算ジョブを流すとかできそうなんだけど。
あと、realtime priority を持つプロセスが動いて(CPU使って)いたら、 realtime priority を与えられてないプロセスはまったく動けなくなっちゃうのかなぁ。 そうなると、リモートのマシンで下手に rtprio とか使うと、 自分の login shell が使えなくなるなどの楽しい事態に遭遇できそうな気がするので、 試すならリセットボタンに手の届くところでやるのがよさそう。;P
preemptive, preemption,...
英和辞典を見ると、「先制の」とかそういう意味があるらしいのだけど、 OS 方面で使われる時はどういう意味なのだろう? よく見る割に、いつも意味がわからなくて困ってるんだよな・・・。
他の OSは?
man を検索 した限りだと、NetBSD や OpenBSD には同名のコマンドはないのね。 別名であるのかもしれないけど。
2005-06-09 (Thu)
2005-06-10 (Fri)
_ [FreeBSD][CBUG] security advisory の読み方
FreeBSD Security Advisory が3発出たところで、ふと思い出したのだが、 昔の CBUG meeting で、 「security adovisory は、どこから読むか」 という話があった気がする。 その時はたしか「ふつー "Impact" から読むよね」 ってことだった気がするけど、 最近の私の読み方はちょっと違うので、書いてみる。
- まず、"Correction details" を確認し、どのファイルが影響を受けているかを見る。特に、kernel なのか、library なのか、その他のコマンドなのかを確認。
- 特に library の場合、"Solution" の rebuild 手順、つまり "Execute the following commands as root:" を見て、依存しているものがどれだけあるか確認する。
- 脆弱性の詳細("Impact" とか "Problem Description" とか)を確認し、対処すべきか放置すべきか決める。
- 対処すべきときは、どう対処すべきか決める。kernel の時は make {build,install}kernel 、コマンド1コの時はそいつだけを rebuild, library の時は影響範囲によって個別対応か make {build,install}world で一括対応か決める。
ま、要するに「SA は下から読め」と。;)
2005-06-11 (Sat)
_ [FreeBSD] topless キターーーー(・∀・)ーーーー!!!
先日の Bof でも好評だったようなので、ついに topless ports 化!
topless lovers の方はぜひどうぞ。(ぉ
man page
roff の書き方とか調べるのめんどくさかったし、 そもそも何読めばいいのかもよくわかんないので *1 、POD で書いて pod2man で man を生成するようにしてしまった。 軟弱。。。
そのせいで perl に依存してしまっているのがアレかもしれない。 tarball 作る時に pod2man した方がいいかも。
Makefile
で、pod2man を実行するためだけに Makefile も作ってしまった。 ついでだから install target も作ってあるけど。 一応 (Free)BSD の make と GNU make で通ることは確認してあります。 ほかのは知らん。(ぉ
*1 こう書いたら、IRC方面で "man mdoc" とか言われてしまった。(^_^;
_ [ad] blogranKing.net
最近見掛けるようになったランキングサイト。登録してみた。
で、このサイトの運営元の第四企画 のページを見ると・・・シモキタの会社かい! しかも、北沢2-12 って、おもいっきり街中やんか! レンタルボックス・ハコウリ なんてのもやってるらしい。 たしか、あの辺にそんな感じの店があったような、なかったような・・・。 って、地図を見ると、 サンクスの目の前、小道狭んで酒屋の反対側って感じだな。
そんなわけで、ページの下の方にリンク貼ってありまつ。
2005-06-13 (Mon)
_ [FreeBSD] topless 1.37?
ドキュメントの修正しないといけないし、 topless 本体の usage をドキュメントと sync したいし、 ってことで、今夜あたり 1.37 出せないかしら? と daichiさんに打診ちう。
というわけで、ドキュメントの誤りなど見付けた方は、 早いうちに私までメール送って下さい。 よろしくお願いします。m(_ _)m
ちなみに、現状のドキュメントは こんな感じ (pod2html で生成)。 CAVEATS 見て「ネタ man」とか言われちゃったけど、 元の名前がネタなんだからしょーがないですよね? :D
欲しいもの
- 英語の web page. Wiki で作るかな。そうすると、いろんな example を集積できそうだし。
- スクリーンショットというか、動いてるやつ。ttyrec とか使う?
現在の手元のバージョンの修正点
- ANSI escape sequence を直接吐いてるところがあって、portability がないので、tput 使うように修正(thanks, tamoさん)
- Makefile の修正。make install 時に install コマンドで -o と -g を使って owner/group 指定してるのだけど、これだと一般ユーザーがインストールできなくて困るので(rpm で build する時とかに困る)、root の時だけ chown root:wheel するようにしてみた。*1
- ドキュメント修正。と言っても、上に書いたバージョンからはその後変更なし。
- usage とドキュメントを sync.
- README 消去(pod と内容同じで、しかも古いため)。
あと、iwaim さん作の rpm spec を修正したものがあるので、
この topless.spec を tarball に含めてしまってもいいかもしれない。
(これはちょっと pending)
*1 「"id -u" って portable なのか? 問題」が新たに発生してる気がするので、マズかったらツッコミ入れて下さい。
2005-06-14 (Tue)
_ [unix] shell から escape sequcence を出力する portable な方法
FreeBSD の online man page から各種 OS の man を見たところ、 printf(1) はだいたいの OS にあるみたいね。 *1。 Solaris の echo(1) の man には
Portable applications should not use -n (as the first argument) or escape sequences.
とか
New applications are encouraged to use printf instead of echo.
なんて書いてあるし、イマドキなら printf(1) 使うのがベストってことかな。
bash 入れて、builtin の echo 使うのがベストって話もあるけど。;P
SUS v2 ではどうなってるか
hiroo さんに 「SUS v2 ぐらい読め」 と怒られてしまったので ;)、調べてみました。
- http://www.opengroup.org/onlinepubs/007908799/xcu/printf.html
- http://www.opengroup.org/onlinepubs/007908799/xcu/echo.html
で、 echo の APPLICATION USAGE を見ると、やっぱり
It is not possible to use echo portably across all systems that are not XSI-conformant unless both -n (as the first argument) and escape sequences are omitted.
The printf utility can be used portably to emulate any of the traditional behaviours of the echo utility as follows:
と書いてあるので、portability が気になる状況で escape sequences を送るのであれば、 echo(1) でなく printf(1) 使うのが正解ってことか。
ちなみに、 printfのページ 見ても File Format Notation 見ても、\e が ESC (ASCII code 27) を表わすとは書いてないので注意。 \033 と書かないといけないようです。
*1 ない OS が昔あった気もするけど、なにぶん昔のことなんで、多分 SunOS 4 とかだったのだろう・・・。
2005-06-16 (Thu)
_ [FreeBSD] topless 近況
tamoさんからツッコミを受けた、 topless -n の挙動について確認してみる。 「ドキュメントには -n N を与えると N回青文字になるって書いてあるけど、 実際は N-2回やんか」ってことで、たしかに実行してみると 青文字になるのは N-2回だ。
で、朝からその辺の source を追ってみる。 色付けしているのは、
get_colordiff "$rows" > /dev/null buffer=$(get_colordiff "$rows")
の部分なのだが、get_colordiff が2回呼ばれているので、 青文字が N/2 回になりそうなものなのに・・・と、朝から大混乱。
まぁ、結局
2回目の get_colordiff は subshell から実行されてるから、 その中で変数変更しても元の shell には影響与えないよね
ってことで、半分納得。subshell が悪さするってのはよくある話なわけで。 1回目の get_colordiff で必要な変数設定をして、 2回目の get_colordiff で色付けした text を変数に格納している、 ということですた。
で、「変数設定と実際に色付けを同じ関数でやるのは紛らわしいよね」 ってな話になって、今はその辺は分離されたみたい。 で、そしたら青文字になる回数が N-1回になった気がするのだけど・・・ この辺はまだちゃんと確認してないので、確認したらドキュメントを更新しませう。
「青文字になる回数が N-1回」という書き方だとわかりにくい気がするので、 「色が変わる回数は N回。そのうち最初の1回だけは赤で、次からは青に変わる」 とでも書くかな。
手元の修正点
これ、まだ daichi さんに送ってないかも・・・ メールでやりとり、だとマージするのがめんどいので、 cvs に commit できるようにして欲しいかも、 とか言ってみるテスト。:D
2005-06-17 (Fri)
_ [www][unix] JS/UIX
JavaScript だけで作った、ブラウザ上で動く UNIX. なんかちゃんと動いてるし・・・
ソース全部落としてみたけど、全部で 7000行以下、200KB 以下ですた。 これでひととおり UNIX の機能が実装できてるのが スゴイといえばスゴイけど、 でもハードウェアの抽象化とかやってないのだから そんなものかという気もする。
・・・残念ながら、これ書いてる時点では、 上記 URL は 404 が返って来ますな。。。
_ [FreeBSD] 依存する ports のバージョン指定
* Add an ability to depend on versioned installed package. [12]
Example:
BUILD_DEPENDS=p5-Tree-Simple>=1.12:${PORTSDIR}/devel/p5-Tree-Simple
なんて書いてあるなぁ。
該当するコードを見て気付いたのだけど、 例えば xterm-200 がインストールされてる状態で、
% pkg_info -qE 'xterm>=200'
とすれば 0 が返り、
% pkg_info -qE 'xterm>=202'
とすれば 1 が返る。こんな感じで バージョンの問い合わせができるようになってたのね。
2005-06-18 (Sat)
_ [FreeBSD] topless-1.41 was released!
今までの feedback をまとめた topless-1.41 がリリースされました!
1.36 から 1.41 までの変更点:
- Improve portability by using printf(1) instead of echo(1).
- Use "diff -C" instead of "diff -u" to make line parsing easier.
- Fix man page.
- "make install" can now be run by non-root user. (for rpm)
- Sync help message to man page.
- Remove README since it is the same as man page.
なんで番号が飛んでるのかというと、 topless の CVS の revision 番号が そのままバージョン番号になってるからです。 なので、2.x は多分出ません。:D
引き続き「パッチはいつでも大歓迎 ((c)daichi-san)」なはずですので、 よろしくお願いします。m(_ _)m
2005-06-19 (Sun)
_ [unix] topless-1.41 は bash, pdksh で動きません!
tamo さん からの報告。topless-1.41 を bash や pdksh で使おうとすると、
% bash `which topless` ps axuww /usr/local/bin/topless: line 190: syntax error near unexpected token `;;' /usr/local/bin/topless: line 190: ` ;;' stty: illegal option -- usage: stty [-a|-e|-g] [-f file] [options]
% ksh `which topless` ps axuww /usr/local/bin/topless[190]: syntax error: `;;' unexpected
って感じでエラーが出て動きません。
$() の中に case の ) があると、それが $( の閉じ括弧と認識されてしまうみたい。 簡単なテストをしてみたところ、FreeBSD の /bin/sh (ash) は OK, bash と pdksh は NG でした。
% sh -c 'b=$(case a in a) echo a;; esac); echo b' b % bash -c 'b=$(case a in a) echo a;; esac); echo b' bash: -c: line 0: syntax error near unexpected token `;;' bash: -c: line 0: `b=$(case a in a) echo a;; esac); echo b' % ksh -c 'b=$(case a in a) echo a;; esac); echo b' ksh: syntax error: `;;' unexpected
SUS v2 ではどうなのか?
SUS v2 の Shell Command Language を読んでみると、 Command Substitution のところに
With the $(command) form, all characters following the open parenthesis to the matching closing parenthesis constitute the command. Any valid shell script can be used for command, except: * a script consisting solely of redirections produces unspecified results * see the restriction on single subshells described below.
とあるし、もう少し下の方で
the new $() form can process any kind of valid embedded script
と言ってるので、$() の中で case 文を書くというのは間違いではなさそう。
実装はどうなってるのか?
あまりマジメに見てないけど、bash や pdksh の parser を見てみると、 $( の閉じ括弧を探すのに、単純に ( と ) の数を数えてるだけっぽい。 「今 case 文の中にいるから、この ) はカウントしちゃいけないんだ」 とか、そういう判定はしてないみたい。
当然 ) がコメント行にあるかどうかとかも見てないので、 bash, pdksh では次の例もエラーになります (ash は問題なし)。
% cat > test.sh b=$( # ) echo a) echo $b ^D % bash test.sh test.sh: line 3: syntax error near unexpected token `)' test.sh: line 3: `echo a)' % ksh test.sh test.sh[3]: syntax error: `)' unexpected % sh test.sh a
コレ、SUS v2 に載ってる次の例の変形版です。 「正しく動作すべき」となってるので、動いて欲しいところなのだが…
echo $( echo abc # a comment with ) )
対処法
bash, pdksh の parser を書き直すのもめんどいし、 ほかにも問題のある実装があるかもしれないので、 topless 側で対処した方がよさげ。
Case Conditional Construct を見ると、
case ... in (hoge) ....;; esac
って感じで、case 文の pattern 部を ( で始めてもいいらしい。 少なくとも bash, pdksh, ash では問題なし。 portability の問題がなさそうなら、これでいってもいいかな。
2005-06-21 (Tue)
_ [FreeBSD] topless が bash, pdksh で動かない件
すでに最新では直ってます。
最新版ではほかにも変更タフ゜ーリ入ってますし、 そろそろ NEWS とか CHANGES とか CONTRIBUTORS とか、 そういったファイルが必要だよねってことで、 その辺を用意したら release となると思います。
# で、今日はその作業ができそうもないので、少々お待ちを。。。> daichi-san
2005-06-25 (Sat)
_ [FreeBSD] take maintainership of portupgrade
すでにお気付きの方も多いと思いますが、 portupgrade のメンテナになりました。
Author であり、前メンテナであった knu さんが最近忙しいらしく、 maintainer timeout で commit されることが増えてきていたのですが、 全体を理解している人がいない状態でいろいろな人が 局所的修正を加え続けるという形が続くと、 プログラム全体の統一感がなくなり、 グチャグチャになって手に負えなくなると思うのです。 また、誰かが加えた修正に問題があった場合、 その文句は誰に言うべきなのか(修正した人か、メンテナか) という問題もあります。 例えば、ports/81454 は本当は "Simon broke it" ;) としたかったのに、knu さんに向けられてしまったり…。
まぁ、私自身まだ全体を理解してるわけではないというのがアレなのですけど、 少なくとも責任の所在がハッキリする (メンテナが broken patch を approve したら、最終的にはメンテナが悪い ;) だけマシかなぁ、と。
で、そんなわけで、まずは積み残されてる以下の PR の処理から 始めようと思うわけだが・・・残ってるだけあって、厄介なのが多いな。orz いまさら F 4.x なんてないっちゅーねん。
- http://www.FreeBSD.org/cgi/query-pr-summary.cgi?category=ports&severity=&priority=&class=&state=&sort=none&text=portupgrade&responsible=&multitext=&originator=&release=
- ports/68908
- ports/77356
あと、portupgrade って man page が非常によく整備されてると思うのですけど、 もう少し HOWTO 的なドキュメントが欲しいかなー、と思ってみたり。
とまぁ、そんな感じで、少しずつですがやっていこうと思っております。
_ [CBUG] CBUG 15th meating
今(7:40)から寝るので、チコク気味で逝くことになりそう。 でないと体持たん・・・。
Before...
_ Pharme939 [Very nice site!]
_ WeUHMdJ [Hi! AueCpr]
_ viagra [Hi! RnQGDudi <a href="http://apdpgq.com/ ">hMNaGKgh</a>]