2001年8月のn日記


過去のn日記


Generated by nDiary version 0.9.3.beta6

2001年8月1日(水)

CVS版RWiki

  CVSと同期するRWikiの設定をした時のメモ。
rw-config.rbとrw.cgiは独自の設定が必要なのでシンボリックリンクではなくコピー。
logのパーミッションが777なのはセキュリティ上まずい。
後はapp/rwikiでcvs upをすれば更新できる。
rw-cgi.rbが更新されたときにrw.cgiを更新し忘れるとはまる。


rwiki@www:~$ cvs -d :pserver:anonymous@cvs.ruby-lang.org:/src login
(Logging in to anonymous@cvs.ruby-lang.org)
CVS password:
rwiki@www:~$ cvs -d :pserver:anonymous@cvs.ruby-lang.org:/src co app/rwiki
cvs server: Updating app/rwiki
U app/rwiki/README
U app/rwiki/concat.rhtml
U app/rwiki/edit.rhtml
U app/rwiki/err.rhtml
U app/rwiki/footer.rhtml
U app/rwiki/header.rhtml
U app/rwiki/info.rhtml
U app/rwiki/list.rhtml
U app/rwiki/map.rhtml
U app/rwiki/navi.rhtml
U app/rwiki/rd2rwiki-ext.rb
U app/rwiki/rd2rwiki-lib.rb
U app/rwiki/recent.rhtml
U app/rwiki/rw-arb-test.rb
U app/rwiki/rw-arb.rb
U app/rwiki/rw-cgi.rb
U app/rwiki/rw-concat.rb
U app/rwiki/rw-config.rb
U app/rwiki/rw-desc.rb
U app/rwiki/rw-drb.rb
U app/rwiki/rw-info.rb
U app/rwiki/rw-lib.rb
U app/rwiki/rw-mail.rb
U app/rwiki/rw-map.rb
U app/rwiki/rwiki.rb
U app/rwiki/search.rhtml
U app/rwiki/submit.rhtml
U app/rwiki/view.rhtml
cvs server: Updating app/rwiki/installer
U app/rwiki/installer/.cvsignore
U app/rwiki/installer/ChangeLog.ja
U app/rwiki/installer/Makefile
U app/rwiki/installer/README.en
U app/rwiki/installer/README.ja
U app/rwiki/installer/rwiki-installer.ja.sh
U app/rwiki/installer/rwiki-installer.sh
cvs server: Updating app/rwiki/lib
U app/rwiki/lib/application.rb
cvs server: Updating app/rwiki/rd
U app/rwiki/rd/RD%20format
U app/rwiki/rd/README
U app/rwiki/rd/RWiki
U app/rwiki/rd/Ruby
U app/rwiki/rd/TEST
U app/rwiki/rd/concat
U app/rwiki/rd/help
U app/rwiki/rd/info
U app/rwiki/rd/install
U app/rwiki/rd/list
U app/rwiki/rd/map
U app/rwiki/rd/rd-draft.rd
U app/rwiki/rd/recent
U app/rwiki/rd/search
U app/rwiki/rd/top
cvs server: Updating app/rwiki/rd.ja
U app/rwiki/rd.ja/BUG
U app/rwiki/rd.ja/ChangeLog
U app/rwiki/rd.ja/ERb
U app/rwiki/rd.ja/README
U app/rwiki/rd.ja/RWiki
U app/rwiki/rd.ja/Ruby
U app/rwiki/rd.ja/TEST
U app/rwiki/rd.ja/dRuby
U app/rwiki/rd.ja/eRuby
U app/rwiki/rd.ja/help
U app/rwiki/rd.ja/info
U app/rwiki/rd.ja/install
U app/rwiki/rd.ja/list
U app/rwiki/rd.ja/map
U app/rwiki/rd.ja/me
U app/rwiki/rd.ja/recent
U app/rwiki/rd.ja/search
U app/rwiki/rd.ja/top
rwiki@www:~$ mkdir cvs-rwiki
rwiki@www:~$ cd cvs-rwiki/
rwiki@www:~/cvs-rwiki$ mkdir lib log rd.local
rwiki@www:~/cvs-rwiki$ for i in `find ../app/rwiki/ -type f -maxdepth 1`; do ln -s $i .; done
rwiki@www:~/cvs-rwiki$ ln -s ../../app/rwiki/lib/application.rb lib/
rwiki@www:~/cvs-rwiki$ cp ../app/rwiki/rd.ja/* rd.local/
cp: ../app/rwiki/rd.ja/CVS: ディレクトリは対象外です
rwiki@www:~/cvs-rwiki$ rm rw-config.rb
rwiki@www:~/cvs-rwiki$ cp ../app/rwiki/rw-config.rb .
rwiki@www:~/cvs-rwiki$ vi rw-config.rb
rwiki@www:~/cvs-rwiki$ cp rw-cgi.rb rw.cgi
rwiki@www:~/cvs-rwiki$ vi rw.cgi
rwiki@www:~/cvs-rwiki$ ln -s ../cvs-rwiki/rw.cgi ~/public_html/
rwiki@www:~/cvs-rwiki$ chmod 777 log

2001年8月2日(木)

debug.rb

  cygwin版rubyなら/cygdrive/d/docu/ddd.rbで実行すればいいという話ではない?


2001年8月3日(金)

Debian potatoでCVS版Sylpheedのmake

  現在のcvs upをしてmakeをするスクリプトはこんな感じ。
ALL_LINGUASの書き換えはいいとして、置き換えられなかった/@[A-Z_]+@/を全部noにするのはちょっとまずい気もする。


#!/bin/sh
set -e
cd /var/tmp
(cd sylpheed-current && cvs -q up)
rsync -aC sylpheed-current/ sylpheed
cd sylpheed
rm -f po/[a-ik-z]*.po
rsync -a ../gdk-pixbuf-0.11.0/gdk-pixbuf.m4 ac/
mv configure.in configure.in~
awk '{if(/^ALL_LINGUAS/){print "ALL_LINGUAS=ja"}else{print}}' configure.in~ > configure.in
./autogen.sh
perl -pli~ -e 's/@[A-Z_]+@/no/g' intl/Makefile
make

2001年8月5日(日)

sky.pl

  sky.plを入れてみた。19990911だったのでかなり長い間安定しているみたい。
転送したメールがどんな感じなのかがパソコン側には残らないようだったので、sub SEND_MAILpush(@adrs,'root@localhost')という感じで1行加えてローカルのアドレスにも送るようにしてみた。

debug.rb

  recent.htmlに無い古い日の日記は見えないのかなぁ。

  とりあえずドライブ指定が出来ればいいだけならこんな感じ。a:Class::methodsみたいなので誤動作しそうだけどレアケースということで。./a:Class::methodsにすれば回避できるし。


Index: debug.rb
===================================================================
RCS file: /src/ruby/lib/debug.rb,v
retrieving revision 1.20.2.3
diff -u -r1.20.2.3 debug.rb
--- debug.rb    2001/06/29 08:34:21 1.20.2.3
+++ debug.rb    2001/08/05 03:10:59
@@ -297,11 +297,9 @@
          stdout.print "Trace off.\n"
        end
 
-     when /^\s*b(?:reak)?\s+((?:.*?+:)?.+)$/
-       pos = $1
-       if pos.index(":")
-         file, pos = pos.split(":")
-       end
+     when /^\s*b(?:reak)?\s+(?:((?:[A-Za-z]:)?.*?):)?(.+)$/
+       pos = $2
+       file = $1 if $1
        file = File.basename(file)
        if pos =~ /^\d+$/
          pname = pos

2001年8月6日(月)

sky.pl

  PHS(H")で1回の送受信が10円というメールとしては超高い契約なので、PHSからの送信はさっぱり試してないけど、一度は試しておかないといざというときに失敗したら危険そう。


2001年8月8日(水)

sky.pl

  試してみた。
sky.datのemail_replytoをsky.plへパイプしているアドレスと同じにしてemail_send_fromを空欄にするよりも、ちゃんとreplytoはエラーメールを受けるための別のアドレスにして、email_send_fromを設定した方がよかったみたい。

  ついでにメールで某所に書き込めるように設定したけど、PHSからだと高いのであんまり使いそうに無いかも。


2001年8月13日(月)

irbで補完

  ~/.irbrcrequire "irb/completion"といれるとメソッド名の補完ができるらしい。
デフォルトだとファイル名の補完なのはReadlineの仕様らしい。

CodeRedカウンタ

  default.idaにリンクしておけばCodeRed以外のカウントも増えそう:-)

RandomCounter

  重複なくランダムに数字を出していくカウンタ。範囲は0からmax-1まで。PStoreのファイルがどんどん大きくなるのがダメそう。だんだん遅くなるし。


#!/usr/bin/ruby
 
require 'pstore'
 
class RandomCounter
  def initialize(filename, max=10)
    @db = PStore.new(filename)
    @max = max
  end
 
  def count
    @db.transaction {
      return -1 if @db.roots.size == @max
      begin
        r = rand(@max)
      end while @db.root? r
      @db[r] = true
      r
    }
  end
end
 
if __FILE__ == $0
  rc = RandomCounter.new(ARGV.shift || 'count.db')
  puts rc.count
end

  (0...@max).to_aで初期化した配列からary[rand(ary.size)]で減らしていく方法。


class RandomCounter
  def initialize(filename, max=10)
    @db = PStore.new(filename)
    unless FileTest.exist? filename
      @db.transaction {
        @db['count'] = (1..max).to_a
      }
    end
  end
 
  def count
    @db.transaction {
      ary = @db['count']
      return -1 if 0 == ary.size
      ary.delete_at(rand(ary.size))
    }
  end
end

  全部カウントしおわったらまた最初からの方がいいのかも。


class RandomCounter
  def initialize(filename, max=10)
    @db = PStore.new(filename)
    @max = max
  end
 
  def count
    @db.transaction {
      unless @db.root? 'count' and 0 < @db['count'].size
        @db['count'] = (1..@max).to_a
      end
      ary = @db['count']
      ary.delete_at(rand(ary.size))
    }
  end
end

2001年8月14日(火)

zsh setopt cshjunkiequotes

  cshjunkiequotesを設定しているとうまく動かない関数が。どうしようかなぁ。


% zsh --version
zsh 3.1.9-dev-8 (i686-pc-linux-gnu)
% setopt cshjunkiequotes
% run-help :
run-help:36: unmatched '
% unsetopt cshjunkiequotes
% run-help :
%

2001年8月15日(水)

apt for rpm genaptdata.sh

  apt-lineを書いてなかったので書いておいた。
それからここのaptdataをどうやって生成したのかを忘れそうだったので書いておいた。

ruby

  ../ruby/configure; makeって感じで別ディレクトリでmakeしているとext/digest/sha2/extconf.rbの#include "../defs.h"が失敗していた。
原因探すときに1つずつ条件を変えていかないといけないのに一気に2つ条件を変えてしまって無駄に時間がかかってしまった。
別ディレクトリでmakeするとき全体に関わる問題らしいので、原因がわかったところで後はcommiterの方にお任せ。
と思ったら結局sha2だけの修正みたい。

Perl

  IRCでの話によるとperl -e 'print $ 0'って感じで$の後に空白があってもいいらしい。

Vim + Migemo DLL

  とりあえずvim本体とmigemoだけとってきて入れてみた。


2001年8月18日(土)

pdumpfs

  とりあえず使ってみることにした。

  同じ日に2度以上実行したらパーミッションが400のファイルでエラーが。

  引数のyournameの部分が同じディレクトリを同じバックアップ先にバックアップしようとすると変になりそう。

  引数の最後に/をつけていると中身が/backup/2001/08/18/hogeって感じでバックアップされるみたい。
/の有無で動作が違うのはrsyncと同じか。

  ファイルの移動には対応できないかなぁ。


2001年8月20日(月)

zsh setopt cshjunkiequotes

  コマンドラインの""や''に改行を入れたいことって今までなかったし、対応が取れてないときは100%入力ミスだったので、次の行の入力を待たれるよりもエラーになって履歴でさっきのを編集し直した方が早いので。
「quote>」のプロンプトからBackSpaceで前の行に戻れれば解決という気も。

Perlメモ my_flock pmflock.rb

  Perlメモのmy_flockをRubyに移植してみた。synchronizeでブロック中だけロック出来るのが便利かも。ちなみにsynchronizeの中でsynchronizeをしても大丈夫。


2001年8月21日(火)

zsh setopt cshjunkiequotes

  VineSeedのzsh-4.0.2-0vl2でもダメらしい。
一度実行するとキャッシュされてるみたいで、途中でsetoptしても結果は変わらず。
unsetoptすると何も出なくなるだけというのは謎。


vineseed% rpm -q zsh
zsh-4.0.2-0vl2
vineseed% zsh --version
zsh 4.0.2 (i386-vine-linux-gnu)
vineseed% run-help :
run-help:36: unmatched '
vineseed% unsetopt cshjunkiequotes
vineseed% run-help :
vineseed%
potato% zsh --version
zsh 3.1.9-dev-8 (i686-pc-linux-gnu)
potato% run-help :
run-help:36: unmatched '
potato%
vineseed% unsetopt cshjunkiequotes
vineseed% run-help :
colon not found
colon のマニュアルはありません。
vineseed% setopt cshjunkiequotes
vineseed% run-help :
colon not found
colon のマニュアルはありません。
vineseed%

2001年8月22日(水)

zsh ""

  [[ -d $HOME/bin && -z ${(M)path:#$HOME/bin} ]] && path=(${HOME}/bin $path)としたかったのに[[ -d $HOME/bin && -z "${(M)path:#$HOME/bin}" ]] && path=(${HOME}/bin $path)としていたら常に-zが真になっていて悩んだ。


2001年8月23日(木)

C++

  inlineってclass Foo {};の中に関数の本体を書く場合にはいらないような。

  static SingletonImpl *_instance(NULL);って複数のファイルからincludeするとまずいような気が(未確認)。

autosave JavaScript Cookie

  一定時間毎にCookieにフォームの内容を保存するようにすれば長文の編集の時にも安心というのを思い付いた。


2001年8月24日(金)

CVS merge

  こんな感じで作業した。


% cvs di -uN -rroot_of-dev-man1_6 -rrel-1_2_2 > root_of-dev-man1_6.rel-1_2_2.diff
% vi root_of-dev-man1_6.rel-1_2_2.diff
% patch < root_of-dev-man1_6.rel-1_2_2.diff
patching file `edit.rhtml'
patching file `footer.rhtml'
patching file `info.rhtml'
patching file `list.rhtml'
patching file `map.rhtml'
patching file `cvstnXbrN'
patching file `rd2rwiki-lib.rb'
Hunk #2 succeeded at 57 with fuzz 1 (offset 6 lines).
Hunk #4 succeeded at 200 (offset 6 lines).
Hunk #5 succeeded at 314 (offset 1 line).
Hunk #6 succeeded at 368 (offset 25 lines).
patching file `recent.rhtml'
patching file `cvsCino2I'
patching file `cvsJqzRbx'
patching file `rw-cgi.rb'
patching file `rw-lib.rb'
patching file `rw-mail.rb'
patching file `rwiki.rb'
Hunk #1 FAILED at 1.
Hunk #3 FAILED at 23.
Hunk #4 succeeded at 225 (offset 12 lines).
Hunk #6 succeeded at 274 (offset 12 lines).
Hunk #7 succeeded at 392 (offset 27 lines).
Hunk #8 succeeded at 484 (offset 25 lines).
Hunk #9 FAILED at 544.
Hunk #10 succeeded at 557 (offset 27 lines).
3 out of 10 hunks FAILED -- saving rejects to rwiki.rb.rej
patching file `search.rhtml'
patching file `cvsmmwZ5r'
patching file `view.rhtml'

  cvs*なファイルができてるのは変ということで+++の行を再編集して他のファイルをpatch前に戻してあてなおし。


% vi root_of-dev-man1_6.rel-1_2_2.diff
% patch < root_of-dev-man1_6.rel-1_2_2.diff
patching file `edit.rhtml'
patching file `footer.rhtml'
patching file `info.rhtml'
patching file `list.rhtml'
patching file `map.rhtml'
patching file `rd2rwiki-ext.rb'
patching file `rd2rwiki-lib.rb'
Hunk #2 succeeded at 57 with fuzz 1 (offset 6 lines).
Hunk #4 succeeded at 200 (offset 6 lines).
Hunk #5 succeeded at 314 (offset 1 line).
Hunk #6 succeeded at 368 (offset 25 lines).
patching file `recent.rhtml'
patching file `rw-arb-test.rb'
patching file `rw-arb.rb'
patching file `rw-cgi.rb'
patching file `rw-lib.rb'
patching file `rw-mail.rb'
patching file `rwiki.rb'
Hunk #1 FAILED at 1.
Hunk #3 FAILED at 23.
Hunk #4 succeeded at 225 (offset 12 lines).
Hunk #6 succeeded at 274 (offset 12 lines).
Hunk #7 succeeded at 392 (offset 27 lines).
Hunk #8 succeeded at 484 (offset 25 lines).
Hunk #9 FAILED at 544.
Hunk #10 succeeded at 557 (offset 27 lines).
3 out of 10 hunks FAILED -- saving rejects to rwiki.rb.rej
patching file `search.rhtml'
patching file `submit.rhtml'
patching file `view.rhtml'
%

  rwiki.rb.rejをみるとRCSのIdやコメントだけだったので気にしないことにする。
そして実際に動かしていって少しずつ問題をつぶしていった。

RWiki dev-man1_6

  010326のIRCのログからdev-man1_6の特徴を発掘。

  dev-man1_6は1.2ベース。
rw-config.rbにREF_POLICYという定数があって内部参照の文法が選べる。
:rwikiだと((<page>))でページへの参照。((<page/label>))でラベルへの参照。
そうじゃない場合は((<page/>))でページへの参照。後者はよりRD風。
1.2は((<page/label>))がない。
:rwikiの方が変更が少なくてすみそうだがRDtoolで処理できない。
参照されるラベルはMethodList, DescList, Headingなどで作られる。
MethodListにクラス名を書かないとクラス名のないラベルになる。
で、((<Array/join>))のように参照する。
Arrayの中だと((</join>))のようになる。
RWiki全体でグローバルなラベルというのは支援されなくなっていて、マニュアル特化版は一ページが一文書と考える。

  IO::readIO#readみたいなのはラベルがぶつかる。
Arrayなんかだとself[nth]=valみたいな記述になっていてselfがついている。

  ラベルがぶつかる、ことへの解決のプロポーザルとして RWikiは全部で一つの文書、ラベルの単位でページが分かれる というものとして作られた。

AutoSave JavaScript Cookie

  JavaScript Library (.js file)にあるCookieファイル操作 (cookie.js)とくっつけてautosave.jsとして<script language="JavaScript" type="text/javascript" src="autosave.js"></script>とRWikiのedit.rhtmlに書いて使ってみてますが、とりあえず動いているようです。


var src_area;
var timerId;
var cookie_name = "src";
var timeout_time
function AutoSave() {
  setCookie(cookie_name, src_area.value);
  timerId = setTimeout("AutoSave()", timeout_time);
}
function AutoSave_start(src, timeout) {
  timeout_time = timeout;
  if (src_area) {
    alert('already started. timeout changed.');
  } else {
    src_area = src;
    AutoSave();
  }
}
function AutoSave_stop() {
  if (src_area) {
    clearTimeout(timerId);
    src_area = false;
  } else {
    alert('already stopped.');
  }
}
function AutoSave_load(src) {
  src.value = getCookie(cookie_name);
}
function AutoSave_delete() {
  deleteCookie(cookie_name);
}
document.write('<div id="JavaScript_testing">AutoSave JavaScript testing<br>')
document.write('<input type="button" value="AutoSave Start" onclick="AutoSave_start(this.form.src, this.form.timeout.value)">')
document.write('<input type="button" value="AutoSave Stop" onclick="AutoSave_stop()">')
document.write('<input type="button" value="Load From Cookie" onclick="AutoSave_load(this.form.src)">')
document.write('<input type="button" value="Delete Cookie" onclick="AutoSave_load(this.form.src)">')
document.write('<br>timeout:<input type="text" id="timeout" width="5" value="60000">')
document.write('<br></div>')

2001年8月27日(月)

Kondara MNU/Linux Errata

  2.0がないという声あり。

  Vine Linuxの方はVine Linux Security Watch Teamというのができてますが、メンバーが(今のところ)VineSeedと同じやんという声あり。

リンクしにくい

  JitterBugってリンクしにくいです。
idがあってもフォルダが変わるとURLが変わるというのが悩ましい。


2001年8月28日(火)

RWiki アイデアメモ

  ((<日記:今日>))みたいな特異ページを用意して実際の内容は((<日記:2001-08-28>))に保存とか。これだと内容にリンクされたときに困るからリダイレクトの方がいいかもってそれならRWikiでやる必要はないかな。
Last-modifiedは日記:*のファイルのうち一番新しいものにすれば便利かも。

  ((<ZnZ:*>))みたいに特定のprefixのつくページに一括して特異ページを設定して、特定のユーザのみに書き込めるようにするとか。


上へ indexへ
copyright © 2000 ZnZ