zt日記

書いているのは Kazuhiro NISHIYAMA a.k.a. ZnZです。
2001|09|10|11|12|
2002|01|02|03|04|05|06|07|08|09|10|11|12|
2003|01|02|03|04|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|
2012|04|05|06|09|

この日記にはツッコミを入れられます。 ツッコミを入れたい日付をクリックすると、フォームが現れます。

xreaでtDiaryを使う方法はxrea.com で tDiary を使う方法インストールメモXREA + tDiary + Namazuをどうぞ。


2001年09月09日(Sun) 日記移転

ツッコミをしやすいようにとか、リンクされたときにわかりやすいようにtDiaryに移転することにした。

nDiaryと同じで空行が入れられないという問題がありますが…。

インストールメモ

.htaccessや.htpasswdはother権限で読み込めないと効かない。

ディレクトリ(t,t/erb,t/theme)のパーミッションは705。

index.cgiとupdate.cgiは*.cgiは700。.htaccessが効かない問題で悩んでいたときに*.rbから*.cgiに変えてしまったのでそのまま。

erb/*とtdiary.rb、つまり*.rbは600。cgiが実行時に読み出すだけだから。+xは必要ない。

その他のtdiary.confや*.rhtmlなども600。cgiが実行時に読み出すだけなので。

t/theme/*のパーミッションは604。ブラウザで普通に読み出せるようにするため。

README.htmlHOWTO-write-tDiary.htmlも置くのなら604。

インストールメモ(2001-09-23追記)

public_html/t/.htaccessの内容は以下の通りでパーミッションは604。データ用ディレクトリtdiaryはパーミッション701で、その中のtdiary/.htpasswdのパーミッションは604。
<Files "*.rhtml">
deny from all
</Files>
<Files "tdiary.*">
deny from all
</Files>
<Files update.cgi>
AuthName      tDiary
AuthType      Basic
AuthUserFile  /virtual/znz/tdiary/.htpasswd
Require user  znz
</Files>
ツリーで書くとこんな感じ。もう少し厳しくするのならpublic_htmlのotherのr(ディレクトリ一覧を見る権限)とかtディレクトリ以下のすべてのファイルのw(自分の書き込み権限)をはずしてもいいのですが、自分の書き込み権限をはずすのは不便になるだけという気がするのでお勧めしません。

705(drwx---r-x) ~/
701(drwx-----x)  +--tdiary/
604(-rw----r--)  |  +--.htpasswd
644(-rw-r--r--)  |  +--200109などの後から生成されるファイル
705(drwx---r-x)  +--public_html/
701(drwx-----x)           +--t/
604(-rw----r--)              +--.htaccess
700(-rwx------)              +--*.cgi (index.cgi,update.cgiなど)
                             |   (オリジナルのままならindex.rbとupdate.rb)
600(-rw-------)              +--tdiary.rb (requireで読み込まれるだけなので
                             |             実行権限はいらない)
600(-rw-------)              +--*.rhtml
600(-rw-------)              +--*.rtxt
600(-rw-------)              +--*.conf (ちゃんと設定しておくこと)
604(-rw----r--)              +--*.html (なくてもいい)
700(drwx------)              +--erb/  (公開しないのでotherの権限はいらない)
600(-rw-------)              |  +--*.rb (tdiary.rbと同じでrequireで読み
                             |           込まれるので実行権限はいらない)
701(drwx-----x)              +--theme/  (公開用なのでotherのxが必要)
604(-rw----r--)                 +--*.css, *.png
                                   (すべて公開用なのでotherのrが必要)
本日のツッコミ(全19件) [ツッコミを入れる]

Before...

cukimbo [aldara http://aldara]

aaaaa [aaaaaaaaaaaaa]

aaaaa [aaaaaaaaaaaaaaaaaaaa]


2001年09月10日(Mon) いろいろ設定

早速捕獲されまくり?

nonsense talkが更新されてなくてもnAntennaの情報がこっちになってるのはたんぽぽ ひとりごと。から情報をもらってるから?

入れるときに信頼性の高い「実験的日記」(2001-08-31)を参考にしたんですが、参考に仕返されたようで。

CGIで更新

やはりCGIで更新できるというのは楽でいいです。

問題点はサーバが落ちてると更新できないとか、途中でブラウザが落ちたら消えるとか。

リンク元置換リスト

リンク元置換リストを追加してみた。

Time.at(1000000000) #=> Sun Sep 09 10:46:40 JST 2001

2001年9月9日問題はWindowsMEやCVSupにあったらしい。

本日のツッコミ(全2件) [ツッコミを入れる]

NT [はい、参考にさせていただきました。 ありがとうございました。]

Kok.Wish [どういうプログラムにすりゃ2001/9/9問題なんてのが起るんだ?]


2001年09月11日(Tue)

Apollo

リファレンスはRuby GUI センターからリンクされているPhiが一番詳しいみたい。ComboBoxがないみたいだけど。

apollo.exeだと自動でinclude Phiされているらしくruby_ap.exeで実行したときにPhi::の付け忘れが発覚した。

www.dm4lab.toにつながらない

今、うさにっきとかhttp://www.dm4lab.to/~kjana/ruby/ruby.htmlにつながりません。

META ROBOTS

最新のページには<meta name="ROBOTS" content="NOINDEX">をつけた方がいいような気がするんですが、tDiary(のデフォルト)ではつけないんでしょうか?

tDiaryがRubyのキラーアプリ

RWikiはrwiki.rbというバックエンドが必要という条件が厳しいからキラーアプリになれなかったのかな。

本日のツッコミ(全1件) [ツッコミを入れる]

(う) [dm4labは停止中です。運がよければ明日あたり復活すると思います。]


2001年09月12日(Wed)

リンク元

たんぽぽ ひとりごと。が置換リストに入れたはずなのにURLのままになっていたのでなぜ?と思ったら、ドメインに大文字が混ざっているのが別URLとみなされていたらしい。 今は^http://(?i:hachi.haun.org)/tp/.* たんぽぽ ひとりごと。 にして置換はされるようになったけど。 別々にカウントされるのはindex.htmlの有無と同じで気にしないというのが一番よさそう。

2001年9月9日問題

実は2通りあったらしい。

9桁で処理していたら破綻する(した)というパターンは結構少ない気がする。

もう1つは数値で比較すべきところを文字列で比較してしまっていたというもの。perlのCGIでありがちらしい。

courier-imap

フォルダの名前をfooからbarに変えたような時にfoo/hogebar/hogeにならずにfoo/hogeのままだったので、for d in .foo.*; do mv $d `echo $d|sed -e 's/foo/bar/'`;doneで無理矢理変更。

LaTeXとtgif

画像を取り込む方法はepsboxとかepsfとかいろいろあるみたいですが、どう違うのかよくわかりません。

linux-users

2001年9月6日(木) 9:00 〜2001年9月11日(月) 9:00の間停止というメールが停止が終わってから1日以上経ってから(JSTで今日の20時に)届いた。終わってから届いても遅いって。こういう連絡メールだけは停止前に配送してしまうということはできなかったのかなぁ。


2001年09月13日(Thu)

xsession-errors

Vine Linux 2.1.5やVineSeedのwdmで修復モードでさえログインできなかった原因は、.Xdefaultsか.Xresources(シンボリックリンクにしているのでどっちなのかは不明)がsyntax errorだったかららしい。

と思ったらそうでもなかったらしい。syntax errorを直したら.xsession-errorsができなくなって、setime noneをしたら、.xwm.msgsもできなくなったので、てがかりがさっぱりなくなってしまった。

dRuby

dRubyで呼び出し中にThread#raiseで呼び出し側に例外があがったらどうなるんだろう?

Kondara Mary

Kondara Maryに直接ログインすると、.profileでexec zsh -lした後でプロンプトが出てこない。rootで入ってsuでも駄目だった。execの行をコメントアウトして、sh(実体はbash 2.04?)のプロンプトからexec zsh -lすると問題無くzshのプロンプトが出てきた。謎。ssh-addのパスフレーズ入力までいかないということはどこで止まってるんだろう…。
#! /bin/sh
SHELL=`${HOME}/etc/shell.sh`
if [ -n "$SHELL" ]; then
  export SHELL
  exec $SHELL -l
fi
ちなみに~/etc/shell.shはこんな感じ。zshもtcshもない環境ではbash -lはだめでbash --loginとしないといけなくて残念な思いをする予定。
#! /bin/sh
for SH in zsh tcsh bash csh; do
  for BIN in /bin /usr/bin /usr/local/bin; do
    [ -x ${BIN}/${SH} ] && echo "${BIN}/${SH}" && exit 0
  done
done
exit 1

apt-line(deb)

Debianのapt-lineはdeb http://deb.ruby-lang.org/debian potato main contrib non-freeを例にするとこんな感じなのでしょうか?
  1. debはdebのバイナリパッケージで
  2. http://deb.ruby-lang.org/debianの下の
  3. /dist/potato/(distは固定?)のさらに下の
  4. main/binary-all/Packages{,.gz}にパッケージ一覧がある。

2001年09月14日(Fri)

qmail tips

メールを捨てるには/dev/nullに送るのではなく"#"だけ書いておくのがいいらしい。

本日のツッコミ(全1件) [ツッコミを入れる]

yamk [はじめまして。ウチのアンテナでも捕捉させていただきます。よろしく〜。]


2001年09月15日(Sat)

Cygwin

全部いれるとでかいけど、だからといってどれが不必要なのかが初めていれる場合にはわからないという話が。

<->

gsub(/<(?!\w)/, '&lt;')とかすればいいのかも、と思いましたがどうでしょうか?>tDiary,nDiary

/<!-- PiloWeb_Begin -->/ .. /<!-- PiloWeb_End -->/

というのがついてるところが最近多い?

tDiaryってツッコミを考えると単純な1ページのみをダウンロードする巡回ソフトと相性が悪そう。

押しても反応しないボタン

yamk 日記のアンテナボタンで思い出しましたが、悲しいのでscript必須ならdocument.writeで動的に出してほしいです。noscriptに代わりのa要素があればもっとうれしいです。

例としてはAutoSaveとか。そういえばこれって</がそのまま書いてあるというのが別ファイル専用という感じ。

/var/tmp tmpreaper tmpwatch

Debian(potato)のtmpreaperだと/tmpだけ処理されて/var/tmpはそのままなのに、Vineではtmpwatchによってしばらく使われていないファイルは消されてしまう。

rpm-python-3.0.6-0vl2

rpm.labelCompare((None,None,None),(None,None,None))でsegmentation fault。

本日のツッコミ(全16件) [ツッコミを入れる]

Before...

dolores [oxycontin http://lin]

aldara [aldara http://pomm.a]

miss [internet advertising]


2001年09月16日(Sun)

OutlookExpress5

IMAPのアカウントで使ってみようかと思ったら、CRAM-MD5の認証に対応してなくて使えず。

CGIで更新

サーバが落ちてなくても重ければ更新できないという罠が。

非 JavaScript 対応

問題の本質としては

鳩丸ご意見番 - 残念な思いを致しました(2) - 謎のアンカーには残念な思いを致しました。と同じです。

ちなみにこういう「大分類 - 中分類 - 小分類」という並びでtitleが書いてあると複数のページを一気に開いたときにタスクバーなどで頭の何文字かしかわからないので、区別しにくくて残念な思いをします。

日記ページで順番を変えて数字だけ見えてたらそれはそれでもっと残念な思いをしそうですが。

Cygwin 1.3.3

やっぱまずいらしい。

courierimap

mkdirでフォルダを追加しようとしたら、MUAから見ても追加されてなかったのでなぜ?と思ったら、maildirmakeで作らないとだめだったみたい。

トレンドマイクロ、セキュリティ初心者向けWebサイト・メールサービスを無償提供開始

サンプルが読めません。

SSLで送った情報を確認のためメールで送ってくるのはセキュリティ的に問題あり。


2001年09月17日(Mon)

Python script

Vine専用ではないけど置く場所に悩んだのでvineディレクトリにrpmVersionCompare.pyrpmLabelCompare.pyをおいてみた。

rpm-pythonが必要。

rpmVersionCompare.pyは*.rpmかrpmdb(インストールされているrpmの情報のデータベース)から情報を取り出してバージョンの比較をするスクリプト。引数の末尾が.rpmならファイルとみなしてそこから情報をとりだし、そうでなければrpmdbから。rpmdbに複数あった場合は見つかったものを全部出力して一番最初のと最後のを比較します。
% rpmVersionCompare.py kernelcfg kernelcfg_0.6-9vl1_i386.rpm
kernelcfg 0.6 9vl1 == kernelcfg 0.6 9vl1 # 0 0
% rpmVersionCompare.py libruby_1.6.4-0vl2_i386.rpm libruby_1.6.4-0vl8_i386.rpm
libruby 1.6.4 0vl2 << libruby 1.6.4 0vl8 # -6 6
rpmLabelCompare.pyはあらかじめname version releaseに分割しておいてから引数に渡すとrpm.labelCompareを呼び出して比較した結果を標準出力にprintするだけというかなり不便な手抜きスクリプト。rpmVersionCompare.pyでrpmdbから複数見つかったときの比較には使えるかも。
% rpmLabelCompare.py man 1.5i 10vl1.2 man 1.5i 10vl1
1

Refererチェック

機能があっても気づかなければ意味がない対策としてリンク元置換リストにないURLからのリンクがあったときはツッコミと同じようにメールで通知するというのを思い付きました。

<のエスケープの話

普段はブラウザがエラー処理としてやってくれることをCGIの方で代わりにやっておいて少しでもvalidなHTMLにしようというつもりなので、最後の出力の直前でいいと思います。

HNSのように閲覧者に警告が見えるシステムはなんか間違ってる気がするので、警告するなら更新の時に。


2001年09月18日(Tue)

RWiki+CVS

RWikiのRDをそのままCVSで管理しようとすると、CVSというページがあるとまずいというのは.rdをつけてからCVSにいれることで回避していたが、CVSのキーワード($Date$など)があるとまずいかもしれないというのを気にせず放置していたら、CGIで見事に罠にはまってしまったので、cvs admin -ko *.rd; cvs upした後、$Date$を消しておいた。

tDiary

Refererチェックメールって本日のリンク元が0から1になるときだけということにすれば専用のステートは持たなくていいと思ったんですが、書き忘れてたかも。

閲覧者に警告が見えるのって適切なclassがついててユーザスタイルシートで隠蔽できればなんとか。HNSのも自分で隠す設定にしておけばいいのか。調べておこう。

<>の置換 [nDiary]

コメントや閉じタグは思いっきり忘れてました…。コメントタグってIE独自拡張の<comment>のことですか?っていうわかりにくいぼけはおいといて、<!-- これ -->注釈宣言っていうのが正式名称のようです。とりあえずタグじゃないというのは覚えておいた方がいいいと思います。

本日のツッコミ(全1件) [ツッコミを入れる]

ただただし [ああ、そっか。バカかも >おれ]


2001年09月19日(Wed)

perl -e'puts join("\n", @INC)'

perlにputsはないはずなのに。

footnote

をゐなり日誌のように脚注をtitleでつけてみるのはどうだろうと思って、某所のRWikiにapply_to_Footnote%Q[<a name="footnote:#{num}" href="#foottext:#{num}" title="#{CGI.escapeHTML content.to_s.gsub(/<[^>]+>/, '')}"><sup><small>] +という感じでtitle属性をつけてみた。タグは問答無用で消すのでいいのかどうかが悩ましい。


2001年09月20日(Thu)


2001年09月21日(Fri)

RWiki orphan

orphanは簡単にできたけどorphanのページからリンクを開くと、リンクされてなかったから読み込まれてなかったファイルが読み込まれてしまう。

許可が出たので幹にcommit。ということは次にRWikiがリリースされるときには入るはず。

<->の話

&gt;に関してはXML 1.0 日本語版の2.4 キャラクタデータ・マークアップによると「大なり不等号 (>) は,"&gt;" という文字列を使って表わされてもよく」と書かれていて(原文では「The right angle bracket (>) may be represented using the string "&gt;"」)となっているので「>」のままでも構わないと思います。互換性のため (for compatibility)というのはSGMLとの互換性なので、HTMLやXHTMLではこだわる必要はないと思います。

Ruby 1.6.5

ここはいつ1.6.5になるんだろう?


2001年09月22日(Sat)

OmitableMatch

コマンドを省略可能にするのにこんな感じで逆にマッチするようにすれば(?:...)?の入れ子でややこしくならなくて済みそうだけど、引数までまとめてチェックするのは無理という弱点が。これを使うのならあらかじめsplitしてからになりそう。
module OmitableMatch
  def ===(o)
    /^#{Regexp.quote o.to_s[0, self.size]}/.match self
  end
  module IgnoreCase
    def ===(o)
      /^#{Regexp.quote o.to_s[0, self.size]}/i.match self
    end
  end
end
# 使用例
hoge = 'hoge'
hoge.extend OmitableMatch
hoge === 'hoe' #=> nil
hoge === 'hog' #=> MatchData
hoge.extend OmitableMatch::IgnoreCase
hoge === 'Hoge' #=> MatchData

State

状態をあらわすのにこんなのを思いついた。st.foo!とかst.bar!で状態変更でst.foo?:foo === stで状態のチェックができる。===を定義しているので、case ... whenで使うのが便利。

class State
  def initialize(*arg)
    @states = arg.collect{|s|
      case s
      when Symbol
        s
      when String
        s.intern
      else
        raise ArgumentError, "#{s} is not a symbol or a string"
      end
    }
    @states.each do |i|
      eval %Q{
        def #{i}!
          @state = :#{i}
          self
        end
        def #{i}?
          @state == :#{i}
        end
      }
    end
    __send__ "#{@states[0]}!"
  end
  attr_reader :states, :state
  def ===(state)
    @state == state or @state == state.intern
  end
  def ==(o)
    @states == o.states and @state == o.state
  end
  def to_s
    @state.to_s
  end
  def _dump(lv)
    "#{@state} " << @states.join(' ')
  end
  def State._load(s)
    state, *states = s.split
    State.new(*states).__send__ "#{state}!"
  end
end
if __FILE__ == $0
  st = State.new(:a,:b,:c)
  st.b!
  st.c? #=> false
  case st
  when :a
    # a
  when :b
    # b
  when :c
    # c
  end
end
(追記)case...whenで使えるかと思っていたら、Symbol#===String#===が呼ばれるのでだめだった。

2001年09月23日(Sun)

HNSの日記システム警告

<font color="red">だった…。ユーザスタイルシートで何とかするのは無理そう。

Ruby 1.6.5

いつの間にかここ(xrea)も1.6.5になっていたようです。

インストールメモ強化

結構参照されているようなので、2001-09-23追記として全ファイルのパーミッションをまとめ直してみました。

sync

n日記の方にバックアップしていなかった日記もバックアップした。

Perl正規表現雑技

ある文字列とある文字列を含むものにマッチする正規表現は環境によってはfoo.*bar|bar.*fooで代用していました。


2001年09月24日(Mon)

アンテナ

アンテナによっては更新日時(Last-modified)が取れないみたいなんですけど、取れるアンテナと取れないアンテナのリクエストってどう違うんでしょうか?

rfc-tree.rb

RFCのobsoluteとかupdateとかのツリー表記が欲しいという話がでて、rfc-index.txtから構築できるはずということだったので、やってみた。
% rfc-tree.rb
Obsoletes> 2821
2821 Simple Mail Transfer Protocol. J. Klensin, Editor. April 2001.
     (Format: TXT=192504 bytes) (Obsoletes RFC0821, RFC0974, RFC1869)
     (Status: PROPOSED STANDARD)
 
2821
  821
    788
      780
        772
  974
  1869
    1651
      1425
Obsoletes>
input: "Obsoletes" "Obsoleted by" "Updates" "Updated by" or number
Updates> Updated by
Updated by> 822
0822 Standard for the format of ARPA Internet text messages. D.
     Crocker. Aug-13-1982. (Format: TXT=109200 bytes) (Obsoletes RFC0733)
     (Obsoleted by RFC2822) (Updated by RFC1123, RFC1138, RFC1148,
     RFC1327, RFC2156) (Also STD0011) (Status: STANDARD)
 
822
  1123
    2181
      2535
        2931
        3007
        3008
        3090
  1138
    1148
  1148...
  1327
    1495
  2156
Updated by> ^D
% rfc-tree.rb -h
Usage: /home/kazu/bin/rfc-tree.rb [options]
    -h, --help                       show this message
    -d, --[no-]debug                 debugging
    -i, --rfc-index=<rfc-index>      use <rfc-index> instead of ./rfc-index.txt
        --Obsoletes                  show "Obsoletes" tree
        --Obsoleted-by               show "Obsoleted by" tree
        --Updates                    show "Updates" tree
        --Updated-by                 show "Updated by" tree
% rfc-tree.rb --Obsoleted-by | head
1
2
3
  10
    16
      24
4
5
6
7
%
ループにならないように...で省略するようにしていますが、ループではなく直接や間接でobsoleteやupdateの関係にあるものが...で省略されているようです。
本日のツッコミ(全3件) [ツッコミを入れる]

ただただし [Last-Modifiedが取れないって、tDiaryの? そんな報告は聞いたことがないなぁ]

kjana [たまに 302 Found になってることがあるから,それ? どうも常にそうだっていうわけではないようだけど.]

りゅう [mod_layoutが、元の応答からSet-Cookie、Location、Content-Typeヘッダだけを引き..]


2001年09月25日(Tue)

アンテナ

If-Modified-Since付きのリクエストだとLast-modifiedなどのヘッダが消えてしまうらしいのです。mod_layoutかなにかの問題でtDiaryの問題ではないと思うのですが。

mod_layout

If-Modified-Sinceは関係なくてGETリクエストだとCGIが出力したヘッダを全部捨ててしまうようです。HEADだと素通し。HTTPってHEADとGETで同じヘッダを返せとなってるはずなのに。

本日のツッコミ(全1件) [ツッコミを入れる]

ただただし [ふうむ。よけいな真似を >mod_layout いちおうIf-Modified-Sinceには次のバージョンで対応し..]


2001年09月26日(Wed)

cvs update

cvs で checkout できるけど update とかできないのって、今まではまったことがあるのは、そのディレクトリに入ってないとだめとか間違ってsticky tagとかがついてるとかかなぁ。

screen prompt

zshのプロンプトの一部をscreenの内部ではXTITLE=$ESC'P'$ESC']0;['$WINDOW']<%n@%m:%~>'$BELL$ESC\\にした。Manpage of SCREENの仮想端末のところの説明によるとESC PからESC \まではscreenが解釈しないでそのままターミナル(今回はttssh)に送ってくれる。ESC ]0;から\a(今回はあらかじめ設定してある$BELL)まではttsshがwindow titleに設定してくれる。$WINDOWはscreenのWindowの番号で%n@%m:%~は普通のzshのプロンプトとして解釈されるユーザ名、ホスト名、短いパス。


2001年09月27日(Thu)

Webフォルダ

IEのファイルを開くでWebフォルダとして開くにチェックを入れて開こうとしたら、Windows UpdateでWebフォルダがインストールされた。Windows 95でも使えるらしい。

メーリングリストの振り分け

foo-bar@hogeのメールが来てないのかと思ったら、bar@hogeの方に振り分けられていた。以前にも同じようなことがあったからX-ML-NameではなくReply-Toで振り分けていたのに同じ罠にかかってしまった。


2001年09月28日(Fri)

dRubyとruby -d

ruby -dで実行していたらdRubyの中でrescueされていない例外が原因で終了してしまって困ってしまった。


2001年09月29日(Sat)

URN

Another HTML-lintのMLとw3m-devと謎ラウンジで話題に。ISBNはnDiaryのフィルタを参考にするのがいいかもしれないと思ったけど、1つのURNから複数のURLに変換してしまうとリンクをたどりにくそう。


2001年09月30日(Sun)

謎の JavaScript

真似してみた。動作確認はIE5.5SP2とNetscape 6.1。IE5.5SP2の方はローカルで確認したときはうまくいってるのにHTTP経由だとうまくいってないみたい。セキュリティゾーンの設定の問題?


copyright © 2001-2013 ZnZ
Key fingerprint = 6E14 2C9C DBD7 874D 8B3C CAA8 9B58 5538 ED7E 1B73