最近のn日記


最新はzt日記になりました。

過去のn日記


Generated by nDiary version 0.9.3.beta6

2001年9月23日(日)

4 sync

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

3 インストールメモ強化

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

2 Ruby 1.6.5

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

1 HNSの日記システム警告

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


2001年9月22日(土)

2 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
1 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

2001年9月21日(金)

3 Ruby 1.6.5

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

2 <->の話

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

1 RWiki orphan

  orphanは簡単にできたけどorphanのページからリンクを開くと、リンクされてなかったから読み込まれてなかったファイルが読み込まれてしまう。
許可が出たので幹にcommit。ということは次にRWikiがリリースされるときには入るはず。


2001年9月20日(木)

1 qmail links

2001年9月19日(水)

2 footnote

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

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

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


2001年9月18日(火)

3 <>の置換 [nDiary]

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

2 tDiary

  Refererチェックメールって本日のリンク元が0から1になるときだけということにすれば専用のステートは持たなくていいと思ったんですが、書き忘れてたかも。
閲覧者に警告が見えるのって適切なclassがついててユーザスタイルシートで隠蔽できればなんとか。HNSのも自分で隠す設定にしておけばいいのか。調べておこう。

1 RWiki+CVS

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


2001年9月17日(月)

3 <のエスケープの話

  普段はブラウザがエラー処理としてやってくれることをCGIの方で代わりにやっておいて少しでもvalidなHTMLにしようというつもりなので、最後の出力の直前でいいと思います。
HNSのように閲覧者に警告が見えるシステムはなんか間違ってる気がするので、警告するなら更新の時に。

2 Refererチェック

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

1 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

上へ indexへ
copyright © 2000-2001 ZnZ