2003-09-10
_ TCOの話
一部は的確だけど一部はぼかしてあるなぁ。時間と手間を掛けてトレーニングした技術者なら「訳分かってないけどとりあえずパッチ当てとく」なんてことはないはずなのに、そのパッチ当てすら、自動化・簡略化されたら「自分では何も考えることができない担当」ってのが増えちゃうわけで、TCO は削れるかもしれないけど、状況としては今よりさらに危機的、ということにならんかえ?
教育にはコストが掛かるけど、教育の重要性を隠しちゃうのはどうかなぁ。
_ tDiary のリンク元って
非表示設定じゃなくて記録除外設定なのね。すでに記録されちゃったものは元ファイルを直接修正しないと無理だと。うむ。
_ tree コマンド
こんなものが。DOS 独自のものかと思ったら RedHat に入ってました。Debian も FreeBSD もパッケージがある。cygwin にはないけど、2000 にも tree.com がある。なんか、あれこれフリーソフト探したりしたことあるけど、全然必要なかったんじゃん。
2004-09-10
_ tdiarygrep 追加
msearch の精度の低さで放置していた日記内検索は結局 tdiarygrep にした。これは日記データに直接 grep を掛けるので負荷が高く遅いのであまりやりたくなかったんだけど、検索できない日記なんて不便でしゃあないと実はずっと前から思っていたのでこれにした。設置が楽なのが何より強み。
- まだまだ tdiarygrep (あおきにっき つっこみつき)
- tdiarygrep(4) (Matzにっき)
ちなみに今回入れたのはオリジナルの方。これで Google が拾ってくれなくても検索できる。よしよし。
_ FreeBSD で自分に必要な update だけを知る
方法が分からない。ただ、作る方法はあるなぁと思っている。
- pkg_db と ports skelton の distinfo を比較して skelton の方が新しいやつをリストアップ
- pkg_db と FreshPorts を比較して、FreshPorts に新しい情報が出ているやつをリストアップ
- どこまで戻るかがあれだけど。手元の skelton より新しい日付は全部さらうってのもアリだな。
- pkg_db と CVSWEB と比較するのは面倒そうなのでやりたくない
ほんとは portupgrade でできるような気がしないでもないんだけど、man をざっと見た限りはそんな機能なさそう。
みんなこういうのまったく必要に感じないのかな? 誰か作ってくんないかなぁ。local で閉じる場合は以下のような感じ?
- /var/db/pkg 内の directory 名をさらって
- バージョン番号と package の名前を分割してハッシュにする
- 名前で whereis を掛けると skelton の位置が分かる
- distinfo を読んでバージョンを比較
- 食い違ってるやつを出力
と思ったら
portupgrade -an
でいいっぽいぞ。何やってんだ、おれ。
あー。すごい重い。しゃーないっちゃしゃーないけど。なんか全部 Makefile なめてるし。やっぱもっと pkgdb と distinfo だけをうまく使った方法があってもいいような気がするな。
_ portupgrade -an の結果を整形
重たいのは承知のうえで富豪手抜きアプローチ。こんな感じで。
#! /usr/bin/env ruby
# -*- ruby -*-
print "Have you executed CVSUP recently ?\n"
print "Please wait for a while. Take coffee break ;-)\n"
needupgrade = Hash.new()
cmd = open( '| sudo portupgrade -an 2>&1' )
while line = cmd.gets
if ( line =~ /Upgrading '(.*)' to '(.*)'/ )
needupgrade.store( $1, $2 )
end
end
cmd.close()
if ( needupgrade.size > 0 )
maxlength = 0
needupgrade.keys.each { |string|
if ( string.length > maxlength )
maxlength = string.length
end
}
needupgrade.keys.sort.each { |pkg|
printf( "%-*s --> %s\n", maxlength, pkg, needupgrade[pkg] )
}
else
print "All ports are up-to-date ! Congratulation !\n"
end
STDERR をリダイレクトしてるのは no need な upgrade の情報が STDERR に出ちゃうのでそれをカットするため。
これでインストール済みの ports のうち、アップデートがあるものをリストアップできる。もちろん cvsup はしてないとダメだし、pkgdb が矛盾してて portupgrade の出力が途中で止まった場合のことは考慮してません。
名づけて listupgrade かな?
_ るびま創刊
イマドキ、という感じがしないでもない Web Magazine が創刊されました。
日本 Ruby の会責任編集。Code Reading 読んでみるかなぁとか、なんだかんだ影響受けてたりしますが。
2006-09-10
_ screen の multiuser mode を1台のマシン上で1人で実験する
前にも一度だけやってみたことはあったんだけど、そのときは「おぉすげぇ」と思っただけで使いたいとは思わなかった。今回は真面目に使いたいと思ったのでメモ。
まず、screen の multiuser mode はユーザーが1人だけでも利用できるため、ちょっと混乱する。先に言っておくが、ユーザーが自分1人の場合は
screen -x は multiuser mode でなくても成功する
のでこの結果では判断しちゃいけない。ただ、何かの拍子に機械を変わる必要があり、いちいち detach しなくても作業を続けられるというメリットはあるのでこの使い方自体を否定する気はない。しかしあくまで multiuser じゃないのでそこんとこよろしく。
で、multiuser mode の実験になるわけだが、必要な作業は以下の通り。
- screen バイナリに setuid root ( man chmod )
- 別なユーザーでログインする
- screen の session を作成し、それに対し
| コマンド | 意味 |
| multiuser on | 絶対に必要 |
| acladd USER | これやっとかないと detach できない |
| aclchg USER PERMISSION WINDOW | 特定のユーザーに特定の window 上で特定の操作を許可する |
と言ったコマンドを実行すると自分の利用している screen session に別のユーザーが attach してこれるようになる。attach するには
screen -x -r username/pid
とする。screen -S で name が設定されている場合はそれでもよい。detach は通常通り detach すれば ok.
別なユーザーでログインすることの意味
1人で実験の際に意外とハマるのは上の 2 に挙げた別なユーザーでログインするというところ。これ、su ではダメ。もっと言うとそのユーザーの tty が作成されてないとダメ。ということで login する。
これをクリアすればもう大丈夫。
acladd, aclchg 辺りの挙動がなんか変
しかしまだ自分の中には疑問があって、
- acladd すると aclchg しなくてもいきなりフルコントロールできちゃうので、これは一種のセキュリティホールじゃないのか?
- acladd しなくても aclchg しただけで attach は可能なので余計な作業をしてほしくない(例えば見せたいだけの)場合は先に aclchg した方がよさげ。
- でもその場合も acladd しておかないと detach できない
- で、acladd したときにやっぱり全権限が付与されちゃう予感
なんか、acladd と aclchg の動きがおかしいような。確認したのは screen 3.09.15 @ OSX なので、最近のバージョンでは挙動が変わってるかもしれない。
※ 設定も環境も元の session を作ったユーザーのものに従うっぽい。escape とか違ってると detach できなくて焦るので multiuser での作業はすぐに情報を伝達できる準備(irc とか Skype とか口頭でとか)をしてからやっとかないと混乱するかも。
2007-09-10
_ IEのドメイン当たりクッキー数の上限が20から50に増えるらしい
Internet Explorer で、ドメインあたりの Cookie の数の制限が 20 から 50 に増加する
RFC 的には user agent は最低 20 扱えるようにしろ、と書かれているだけで上限はないっぽい?
RFC 2965 HTTP State Management Mechanism
によると、
Applications should use as few and as small cookies as possible, and they should cope gracefully with the loss of a cookie.
ではあるけれども、
で挙げられている Client Side State - HTTP Cookies に書かれている
Servers should not expect clients to be able to exceed these limits.
という記述を見つけることができないなぁ。なんか見落としてますか?
※ いずれにせよ最小限で済ませましょうよというのは間違いないんだけど。
_ もやもやしたものがありますねぇ
そもそも MacOSX のファイル名は UTF-8 で取れるけど UTF-16 で保存されてるんじゃないのかとか思ったりもしますが、ウノウさんには番長名乗ってるテスタも居るわけで、スルーしちゃってるってことはですよ、これは要するにテスト項目として MacOSX のファイル名問題が全然上がっていなかったということを意味しませんか。ちょっとそれはどうなんだろう。
フォト蔵使ってないんで分からないんですけど、Mac での動作を保証しないアップローダというかファイル転送サービスは多いですよ。1ユーザーとしては諦めがついてるんで気にしてないですが。
まぁ今回も保証外ですで済まそうと思えば済ませる問題をそうしなかったという点は評価できるんですけどね。
2008-09-10
_ github は git 1.4.x では使えないみたい
イントラで yapra を使いたくて git clone しようと思ったんだけど、404 で止まる。使ったのは Debian etch の git 1.4.4. 探すと同じようにハマった人が居て、やはり backports から入れて解決したようだ。
でもこういう情報はちゃんと表に出さないとダメだろうとカッとなってあちこち調べまくった。1.5 以上でしか github は使えませんというならそれはサイト上に書かれているべきだろうと思って探したがそもそも github には help がない。
Twitter / Keiji Yoshimi: @wtnabe guide? http://githu...
で
Guides というページを教えてもらったけどなんでこれトップページとかヘッダのメニューにリンクないの。そしてやはり欲しい情報はないっぽい。
さらにカッとなって git の release note を漁ると、こんな記述を発見。
The above two new features are not enabled by default and you have to explicitly ask for them, because they make repositories unreadable by older versions of git, and in v1.5.0 we still do not enable them by default for the same reason. We will change this default probably 1 year after 1.4.2's release, when it is reasonable to expect everybody to have new enough version of git.
from http://www.kernel.org/pub/software/scm/git/docs/RelNotes-1.5.0.txt
1.5.0 ならではの新しい機能を有効にすると古いバージョンからそのリポジトリは使えなくなります、と。1.4.2 が出て 1年経ったらそのオプションをデフォルトにしますよ。
で、ログを漁ると
Public Git Hosting - git.git/log
1.4.2 のタグが打たれてすでに 2年。つまり 1.5 以降を使っているリポジトリには 1.4.x ではアクセスできなくて当然の状況だと。こういうことですな。
残念ながら github がどういう環境で動いているかまでは調べる気力がなかったので分かってないですけど、せめてそういう大事な情報はトップページかせめて 1 hop の位置に書いといてくれよと思った。
その後スッキリして backports から git 1.5.6 入れたよ :-( できるだけ stable のままで行きたい人だっているんだよ。