以前、既存のカテゴリー分けに左右されず、「重要な記事の一覧」のようなカテゴリーが実現できないか考えたことがあった。

あのときは rNote の投稿記事ファイルの取り扱いに、シンボリックリンクのような機構を追加することで、新規に追加した「重要な記事の一覧」カテゴリーから既存カテゴリーの記事を参照するような構造で実現しようと考えた。

その後考え方がより一般化されて、記事本体に、その記事の属性を表す文字列の集合を保持するタグを追加しておき、その属性とカテゴリーの対応表を作ってやり、本体はその対応に応じてカテゴリーごとの記事への閲覧機能を提供するようにすればよいのではないかと考えた。

例えば:
・ある投稿記事の属性キータグの内容:漫画,美少女,パンヤ,ゲーム
・blogのもつカテゴリー:漫画、ゲーム、健康、アウトドア
・カテゴリーごとの、閲覧対象となる属性:漫画=漫画、ゲーム=ゲーム,パンヤ、健康=健康,健康法,体操,薬、アウトドア=アウトドア
だった場合は、その blog の漫画カテゴリーおよびゲームカテゴリにて、その記事が閲覧可能となる…という寸法だ。

そこまで考えて、そこで放置した。というのも、それはまさに DB の導入がうってつけの事例だと気づいたからだ。記事ごとの属性文字列を DB で管理し SQL で検索する形になろう。rNote は DB を使っていないので、これの実現は保留した。(しかし最近、 DB 無しでも静的にキャッシュ生成するときに同等の処理をしてやれば実現できるんだろうなと思いつつ…。実現するといいなぁ。)

前置きが長くなったが今回は、 blog 自体の記事属性ごとのカテゴライズの話ではなく、外部に記事の情報を伝えるためのカテゴライズに、同じ考えが応用できると気づいたという話だ。

ちょうどタイミングよく、亜細亜ノ蛾さんの「ブログの記事にタグを付ける利点と方法」を発見した。どうやら、同じようなことはみな考えるらしい。

同記事を参考に、TechnoratiTechnorati: Tags に対応するように実装内容を考えてみた。

・記事にタグ <Keys></Keys> を追加する。
・同タグの内容は、タグの埋め込まれた記事のもつ属性を表す文字列の集合とする。区切り文字は半角のカンマ ( ',' ) とする。
・rNote 本体は、投稿記事の表示にあたって、同タグに列挙された属性の数だけ、 Technorati: Tags 形式のタグに順番に置き換える。

本体に手を入れないようにスキンでとりあえず実装したみた。(抜粋)

<div class="text">
<%=$Text%>
</div>
<%=$WriteBack%>
<if def_tag="Keys">
<div class="keys">
この記事の属性キー
<?php
$string = '<%=$Keys%>';
$tkn = strtok($string,",");
while($tkn) {
print "[ <a href=\"http://technorati.com/tags/".$tkn."\" rel=\"tag\">".$tkn."</a> ]";
$tkn = strtok(",");
}
?>
</div>
</if>
</div>
しかしこのままでは、属性が複数の場合に対応できない。スキンの中に php を書いて実現できそうだが方法がまだわからないのでいったん保留。やり方は他にもあるかも知れない。rinn@rNote 掲示板で php 内の変数に記事のタグの値を受け渡すやり方を教えていただけたので、上のスキンの記述を修正してあります。これで複数キー列挙に対応できました。(感謝~)

自分がどのようなカテゴリーの情報を発信しているかを相手に適切に伝えるというのは確かに有効な手段だと思う。ただ、その仕組みは標準化されていないようだから Technorati の実装だけでなく色々出てくるものに対応できるように…と考えると、やはり上で考えたように「属性キー」という上位のレベルで情報を保持しておき、下位の個々の実装に対する仕組みは適宜追加・置換して組み込んでやれる体勢にしておくのが良さげな気がした。

[コメントの受付は終了しています ]
1: sabakan (06/25 22:32)
どうも、はじめまして。
鯖Memoの運営をしているsabakanです。
コメント有難う御座いました。
御言葉に甘えて冬星さんのアイディアを流用させて戴きました :-)
2: 冬星 (06/27 05:30)
こちらこそありがたく。逆に参考にさせて頂く事も。
1エントリーが複数属性を主張するのは私的には大いに有りだと思いますが、Technoratiで1エントリーが複数のタグをもつことを考慮しているかイマイチわからずです。複数タグを埋めた記事の更新ping打ったら1個目のタグだけエントリーされるのかも知れませんが…。
この記事のリンク元 | 6 | 3 | 3 | 2 | 1 |

しばらく前から skype 1.2.0.48 がjunk になり下っている。

音が小さすぎるのだ。

自分の声が相手にとって小さすぎ、相手の声も自分にとって小さすぎるという状態だ。

Eriane さんの blog などからたどって、 skype 公式サイトのフォーラムの投稿をみたところ、以下が判った。

1.同障害は、1.2.0.37 以前から発生している。
2.修正方法として、1.2.0.37 以前の版を使っている場合:
2.1. 1.2.0.37 or newer にアップデートして、最低1回起動してログインする。
2.2. 'Documents and settings/(Your profile name)/Application data/Skype/(Skype User name)/' にある config.xml, shared.xml(もしあれば…という意味だろう。) を削除する。
2.3. config.xml をエディタで開き、以下のように(無ければ追加)してやる。
|<Call>
|<AGC>1</AGC>
|<General>
|<AEC>1</AEC>
|<AGC>1</AGC>
2.4.ただし、これで skype を再起動して音声に変化がなかったら AGC ( Automatic Gain Control ) を無効にする。「ノートPCではほとんどの場合 AGC は機能しないし、ヘッドセットを使っている場合不要だ。」と gerhard33628 が言っている。この場合上記の修正内容は aec=1, agc=0 になる。(当たり前。) xml の修正時には「空白を適切にあけるように注意。」という意味のことも gerhard33628 は書いている。xml をエディタで開いたらわかるがインデントの空白のことだろうか。インデントなんてどうでもいいんじゃないの?
2.5. skype を再起動する。
2.6. ただし XP SP2 を使用している場合 tcpip.sys のコネクション数の最大値が 10 に制限されてしまっているので、これに patch をあてろ、と言っている。張られているリンク先はもう消されているので google で検索したら、あちこちで情報や修正済みファイルが見つかったが、情報が乗っているバージョンが 5.1.2600.2505 ばかりで、古くて使えない。うちの tcpip.sys の版は 5.1.2600.2631 (xpsp_sp2_gdr.050313-1526) になっている。1箇所だけ同じ版の修正済みファイルがあがっているところがあったが、そこのは xpsp_sp2.050313-1526 だった。つまりブランチが違う tcpip.sys なのでバイナリを置き換えるのが危険で使用できなかった。

上の投稿の後に、うちで入れている 1.2.0.48 が出てからの公式フォーラムに上がったの質問(音声が数秒間延びする障害)でも、同様に tcpip.sys に制限解除のパッチを自力であてればなおる、と回答がよせられている。

2.3 まで作業しておいた。残念だが tcpip.sys を逆アセンブルしてコードを把握しないことには patch の当てようがないので、当面 skype の fix 待ちか。参照記事の原投稿者が「新しい版にしたら、なんでこんなことをユーザー側に強いるようになったの?理解できないよ」と言っていたのが 2.0.37 より古い版でのことなので長期間そのままの障害のようだ。治す気がないようなら残念ながら MSN Messenger に戻さないといけないな。音質が段違いなので skype でいきたいんだがなぁ…。

[コメントの受付は終了しています ]
1: 冬星 (05/16 20:04) (05/17 05:04)
2.4. まで作業(agc=0)。加えて:
2.7. 255 を config.xml に記述。
2.8 xkype を起動してGUI上からオプション設定状況を確認。 agc=0にも関わらずなぜか「音量の自動調整」にチェックが入っているので、チェックを外す。
以上で、音量の問題に関しては解決した。
2: ice (06/02 06:37) (06/02 15:37)
解決してそうですが↓パッチはtcpip.sys(5.1.2600.2631)に対応しているようです。
http://www.lvllord.de/
3: 冬星 (06/04 18:17) (06/05 03:17)
はじめまして。
確かに音量の問題は解決しておりましたが、ご紹介のツールを試したところ、どうやらパッチ箇所の自動認識に成功したようです。
iceさん情報ありがとうございます。

snort with mysql と ACID 2005-04-24 (日) 16:08:34+09:00

ソフトウェア

対象 OS は CentOS4 。

snort.org から snort-2.3.2 の tar ball をダウンロードしてビルド。

# ./configure --with-mysql=yes
# make; make install

当初 snort.org の download から snort , snort-mysql の rpm バイナリをインストールしてみたのだが、原因不明で snort から mysql へのレコード追加など DB アクセスがまったくされないという症状が発生し、設定上何の問題もないにも関わらず解消しなかった。 ML の記事を見つけたが、同様の構成で同様の結末になり解決していないようだ。 tar ball からソースをビルドして全く同じ設定にしたところ、何の問題もなくサクサク動作した。

ACID をインストール。GD , ADOdb, JpGraph など必要なモジュールがインストールされていなければしておく。

ACID 設定の注意点:acid_conf.php の $db_connect_method を 2 (normal connection) に変更する。初期設定の persistent connection だと、ブラウザで更新するたびに mysql への接続スレッドが1つ増えブラウザを閉じても永続的に残り続ける。何のためにこんなモードが初期設定されているのか全くわからないのだが、この設定のままだとリソースを圧迫して最悪システムダウンを招く原因となるので必ず変更しよう。

snort と ACID のインストールについては @IT の「Snortでつくる不正侵入検知システム」と、「とりあえず動く MySQL + Snort+ ACID(BASE)メモ」が参考になった。

snort の侵入検知ルールは *.rules という名前のファイルで管理されているが、これの最新版を入手したければ snort.org で Regist ( 無料 ) または Subscribe ( 有料 ) が必要となる。 Regist すると、最新ルールを入手できる URL が手に入る。

ルールの更新、 snort.conf への反映などの処理は oinkmaster が便利だ。grin 氏の blog記事、情報が古いが、日本 snort ユーザー会の「oinkmaster を使う ~ 楽々簡単ルールファイルメンテナンス ~」が参考になった。


OS構成としては、サーバー側がCentOS4、クライアント側がWindows98/Me/2000/Xp、サーバー側の文字セットとして標準的なUTF-8を想定し、フリーのソフトウェアで環境を構築するという条件で考える。

まず、必要なソフトウェアについて。

Windows 側クライアントとして、他にもあるかも知れないが見つけた範囲では、 TeraTermPro を平田豊氏が改良されたUTF-8対応版か、 Poderosa の二択である。

いろいろ試したので、他のツールについても書いておく。

SSH SecureShell…非商用使用に限り使える無料版が存在するが、日本語非対応。現在はSSH Tectiaという後継製品となっている。

・Putty…本家は日本語非対応。日本語対応版ごった煮版Putty JP Xtransと、日本語化を含めた改良がされているようだ。しかし残念ながら Me ではダイアログの文字が化けてしまう。情報を頼りに、puttyjp.exe, puttyjp.lng を putty.exe, putty.lng にリネームし、putty.lng をエディタで開き [Japanese] セクションの '_FONTNAME_=MS UI Gothic' を Win98系で存在するフォント名に変えてみたがだめだった。XP の msgothic.ttc をコピーしてみたが、同名のファイルがOSに常に掴まれているため置き換えできができなかった。

・Cygwin…Windowsでクライアントを使いたいので Cygwin を導入するのは本末転倒だが、 bash で LANG=Ja_JP,UTF-8 としても無駄なようだ。

結論としては、 Poderosa がわりと良いんではなかろうか。複数の端末を同時に開けられるし、公開鍵の生成もできる。Cygwin の端末としても使える。ただし注意点が2つ。まず、 ssh2 の鍵は 2048 bit までのようだ。ssh-keygen でつくった 4096 bit の DSA 鍵は使用できなかった。Poderosa 自身の生成機能でも最大値は 2048 だ。次に、cygwin 端末として使う場合 cygwin1.dll が poderosa.exe のあるフォルダの下の Cygterm/ フォルダ内に必要だ。 c:/cygwin/bin/ にパスを切ってもよかろうが、 cygwin の他のバイナリが意図せず動作するなど副作用が嫌なので、 dll をそこに放りこんだ。

次に、sshd サーバーの設定。/etc/ssh/sshd_conf に対する初期設定からの変更点。

試行錯誤するので、最初に:
LogLevel DEBUG
としておいたおかげで、 /var/log/secure をみて、パーミッションの問題で認証失敗しているなど情報が得られた。用が済めばコメントアウトすればよい。

SSH2 のみを許可:
Protocol 2

SSH1 での RSA1 接続を禁止し、 SSH2 での RSA/DSA 接続を許可する:
RSAAuthentication no
PubkeyAuthentication yes

(コメントアウトしても動いたが、トラブルになった場合は):
AuthorizedKeysFile &h;/.ssh/authorized_keys
としておけば、接続許可したい各ユーザーの公開鍵情報一覧がどのファイルに入っているか、明示できるだろう。

rhost 関係、サーバー側の known hosts 、ホストベースでの接続を禁止:
RhostsRDSAuthentication no
HostbasedAughentication no
IgnoreUserKnownHosts yes
IgnoreRhosts yes

公開鍵認証のみ許可したいので、パスワード認証を禁止して空のパスワードでの接続も禁止:
PasswordAuthentication no
PermitEmptyPasswords no

次に、サーバーに接続したいユーザーの鍵に関する設定の例。

1. そのユーザーでサーバーにログインして、ホームディレクトリの直下に .ssh/ ディレクトリを作成して、パーミッションを 0700 にする。

2-a. クライアント側で鍵の生成が出来ない場合。(TeraTermPro の場合。)
接続したいユーザーでサーバーにログインして、
ssh-keygen -b 4096 -t dsa
などどして、公開鍵と暗号鍵をつくる。保存先は .ssh/ 内が初期位置なのでそのままでよい。パスフレーズを聞かれるので、最低6文字以上の一意の文字列を考えて入力する。空白文字などの記号も使用可能だ。クライアントからログインするときは、このパスフレーズをパスワードとしてログインすることになる。

上の例では公開鍵として id_dsa.pub が、秘密鍵として id_dsa ができる。このうち、秘密鍵はクライアント側に何らかのセキュアな手段で移動させ、公開鍵は .ssh/ ディレクトリ内に authorized_keys というファイルを作ってそこに追記する。公開鍵は1行で1ユーザー分の認証情報になっており、当該ユーザーとしてログインを許可したいユーザーの公開鍵をこのファイルに追記していく形式となる。ちなみに authorized_keys のパーミッションは 0600 となる。

2-b. クライアント側で鍵の生成が出来る場合。(Poderosa の場合。)
クライアント側で鍵を生成する。生成した公開鍵をサーバーのログイン許可したいユーザーの .ssh/ ディレクトリ内の authorized_keys というファイルに追記する。

3. ssh クライアントで接続を開始する。
・相手のホスト名は、サーバー側のホスト名または IP アドレス。
・プロトコルは SSH2 。
・ポートは SSH の 22番ポート。
・ユーザー名には、サーバー側に存在するログインしたいユーザー名(当たり前だが .ssh ディレクトリなどを作って準備したユーザーの名前だ)を入れる。
・認証方法は、「公開鍵」方式。
・パスフレーズは、鍵を生成したときに決めたものを入れる。
・鍵ファイルは、サーバーで生成しクライアント側に持ってきた(または、クライアントで生成した)鍵のうち、秘密鍵の方のファイル名を指定する。

以上で、 ssh2 で公開鍵を用いたログインができるようになる。


CentOS4導入記 2005-04-19 (火) 02:29:09+09:00

ソフトウェア

知人のサイトでLinuxの記事をみるうちに触発され、ひさしぶりにOSを導入してみた。

あまっている検証機は、PentiumPro200MHzが2個載っている古いタワー型PCだ。電源を入れてみたら、まだなんとか動くらしい。SCSIの4GBのHDDが1個、2GBが1個、ATAPIのCDROMドライブが1台、ビデオに初代1MBのMilleniumがささっている。

インストールに2時間半、ネットごしのアップデートに2時間かかった。XGAサイズのGNOMEのデスクトップの上を、マウスカーソルが飛び飛びにワープしている。重い…はげしく重い。あげくに最初繋いでみたマウスが寿命でいかれてしまったらしい。カーソルがはげしくランダムワープする上にでたらめにあちこちクリックしまくってしまう。カールさんの壊れたPCを修理したものを弟が使っているのだが、それのマウスを借りてようやく導入が完了した。自分のマウスは壊れたものをのぞいて全てUSBなので使えなかったからだ。

日本語入力モードにはいる方法がわからない。しばらくgoogleで調べてみつけた。RHL系はshift+spaceでしたか。そういえばそうだった気もするが、すっかり忘れていた。

OpenOfficeのWordが縦書きに対応しているかが気になった。以前(RHL7.3の頃)は、横書きしかなかったが、調べてみるとページ設定で設定できるようになっていたので感動した。これで脚本が書けるようになったじゃないか…と、ためしに用紙横置き縦書きに設定して、日本語で「これはテストです。」と打ってみたら、文字が化けて表示された。横書きに設定変更すると正常に表示される。縦書き時のフォント処理にまだ問題があるらしい。残念だ。縦書きで遜色なく文章が打てるようになるまでに何年かかるのだろうか。

…それはさておき、OS自体に関しては安定して動作しているようだ。知人サイトの記事を参考にWebDAVとSVNを試してみようと思っている。それと、blogのローカルテスト環境もつくろうと思う。そのために入れてみた。

ちなみに、この記事はPentiumPro機で入力されたものだ。