TOPIC = topics.html
をコメントアウト。Windows版のCVSでcvs ci -m 'foo bar'ってやってbar'って何?となったのならさっきありました(^^;
CRLFへの対応とtypoのパッチ。
CRLFのパッチを入れたらCRLFの改行では少し速くなった。と言ってもパッチ前はちゃんと変換できてなかったので比較する意味はないけど。
--- ndiary-lib.rb 2001/01/01 13:24:27 1.1
+++ ndiary-lib.rb 2001/01/01 15:21:42 1.3
@@ -300,7 +300,7 @@
# Read Diary File
text = ''
- open(filename){ |file| text = file.read }
+ open(filename){ |file| text = file.read.gsub(/\r\n/,"\n") }
text = text.tosjis
# フィルタ :ONEDAY
@@ -520,7 +520,7 @@
print "\n-- #{NDIARY_VERSION} --\n\n"
if RUBY_VERSION < REQUIRED_RUBY_VER then
- $stderr.puts "\n** error: this script require ruby #{REQUIRED_RUBY_VER} or lator.\n"
+ $stderr.puts "\n** error: this script require ruby #{REQUIRED_RUBY_VER} or later.\n"
exit
end
,
で区切ったものがうまくいかないような気がしたので、勝手に gotoken さんページに報告していたものにサンプルを追加。
% ruby -rcrontab -e 'p Crontab.new "1,2 0 0 0 0 test"'
#<Crontab:0x40202608 @table=[[[1], [0], [0], [0], [0], "test"]]>
perlで書かれたCGIをいじってほしいと頼まれたので、見てみたが謎が多すぎて、結局ちょっとタグをいじるぐらいしかできなかった。
最初の設定画面で設定したものを後からいじっても変わらなかったり、設定し直しができなかったり。
diary コマンドをシンボリックリンクに対応ってこれならwrapperスクリプトでも良さそうですが、シンボリックリンクってどっちのつもりで使われることが多いんだろう…?
ちなみにMHCのCVSからとってきたmhc-syncをwrapperスクリプトで起動してます。これの場合はRUBYLIBを設定する関係もあるからですが。
#!/bin/sh
RUBYLIB=~/fromcvs/mhc/ruby-ext/lib ~/fromcvs/mhc/mhc-sync "$@"
nDiaryだと同じdiaryコマンドを複数の日記で共有しようとするとシンボリックリンクはreadlinkしない方が良さそうな気がするのですが、Windows上で使ってるのでどっちがいいのかよくわかりません。
SSTPでうにゅうだけにしゃべらせるとfrom SSTP マーカーが表示されなかったので報告。
テストしたのはこんな感じ。メッセージを送るだけなら簡単だからライブラリにするまでもなかった感じ。
#!/usr/bin/ruby
require 'socket'
def sendsstp(mes)
s = TCPSocket.new '192.168.1.3',11000
s.print "SEND SSTP/1.0\r\n"
s.print "Sender: てすと\r\n"
s.print "Script: #{mes}\\e\r\n"
s.print "\r\n"
end
sendsstp('\uうー。')
__END__
phase 34.97がharuna.exeではなくsakura.exeになっているのに気がつかずにphase 31.51での報告になってしまったけど、phase 34.97でも同じだった。
% TZ=EST5EDT ruby -e 'p Time.at(986108399), Time.at(986108400), Time.at(1004248799), Time.at(1004248800)'
のようなサマータイムの問題ってサマータイムのない地域に住んでるとさっぱりわからないけど、たぶん多バイト文字の問題も関係ない言語圏だと同じように思ってる気がする。
報告が消されてたようなので、何が言いたかったのかよくわからなかったからだろうと思って、「phase 34.97 | リモートからSSTPでうにゅうだけにメッセージを送るとnodescriptと実質的に同じ効果が得られるのは問題ではありませんか?」と文章を変更して再POST。伝わってる?(KDDI風)
オブジェクトを作りまくるプログラムとして木山さんにわかぬのデータファイルをuniq.sortするプログラムをメールしてみる。
「ところで、タイムゾーンの省略名は3、4文字くらいのものだと思いこんでいないだろうか。実は50文字くらいは大丈夫だったりするようだ。また、タイムゾーンの省略名はアルファベットに限らないし、空白だって含めることができるのだ (そんなつかわれかたはされないと思うが)。」とあるので、「Mon Jan 1 00:00:00 JST 2001」のようなタイムゾーンにしたら混乱しそう…と思ってしまった。
VisualuRuby計画(仮称)を使ってみた。動くようにするまでが大変なRuby/TkやRuby/GTKよりよさそう。
最初に試してみた正規表現練習帳がこけたのが悲しかったですが。
ちなみにVisualuRubyはruby-1.6.2-20001218-i386-cygwin.tar.gzに入ってたのを使ってます。
もしかして新しいのにしないとダメ?
training.rb:30:in `construct': undefined method `exstyle' for #<VREdit:0x46676f8> (NameError)
from /USR/LOCAL/lib/ruby/site_ruby/1.6/vr/vruby.rb:240:in `create'
from /USR/LOCAL/lib/ruby/site_ruby/1.6/vr/vruby.rb:282:in `addControl'
from ./vrmoonwolf.rb:166:in `addControl'
from training.rb:62:in `construct'
from /USR/LOCAL/lib/ruby/site_ruby/1.6/vr/vruby.rb:240:in `create'
from training.rb:93:in `start'
from training.rb:147
文字列の先頭と末尾に一致する正規表現は、\A と \Zの他にも \z がありますね。
IPマスカレードしてるマシンで動かすためのsstp-proxy.rbを作ってみた。11000でlistenしてスクリプト中で指定したマシンに転送するだけ。とは言っても2KBチェックとかタイムアウトチェックはしてますが。
ついでにBlacklist機能も追加。こういうのを経由すると偽春菜にはproxyを動かしてるIPアドレスしか見えないので。応答は偽春菜が返すものと同じになっているはず。
RWikiがsourceforgeに登録されたということでそれを利用するためにユーザ登録してみた。
Errataが正誤表(1刷)と正誤表(2刷)に分かれていた。
0777 && ~mask
」になります。&&
じゃなくて&
?それから、ファイルは「0777 & ~mask
」では?da.collect!{|x| dir == "." ? x : File.join(dir, x)}
da.collect!{|x| File.join(dir, x)} unless dir == '.'
の方が良いと思う。require 'find.rb'
.rb
をつけない方が良いと思う。理由は将来.so
に変わったとしても対応できるから。普通はそこまで気にしなくてもいいと思うので、ただ短いという理由だけでもいいかも。puts Process.pid
puts "my-pid is #{Process.pid}"
の方がわかりやすそう。(a,b,c,d,e,f)
よりもTimeのように(year, month, day, hour, min, sec, usec)
と具体的に書いてあった方がわかりやすそう。require "marshal"
RDtoolバグフィクスが始まりましたか。RWikiのバグリストって書いてあるとRWiki自体のバグのリストかと思ってしまいました。ちなみに私はfixはどちらかというとフィックスと書きます。こういう悩む単語は英語単語のまま書くことも多いですが。
わたなべさんのJARPってどこで存在を知ったのでしょうか?私はJARPではじめて知ったのですが。JARP生成に使われているスクリプトはなんだろう?アンカーの命名規則から考えるとnDiaryじゃなさそうだし。と思ってソースを見てみたら、「nsmm v0.6.2(2000/11/23)」と書いてあったのでnsmmというスクリプトみたい。
ついにというか、やっとというか、CSSをつけてみた。方針としてはこったことはしない。理由は、こったことをすると中途半端に対応しているブラウザで変になる、複雑なものは最初に書くのも後で修正するのも面倒、など。簡単に言うとsimpleな方が利点が多そうと言うことです。
object.cの図(を描き直したもの)を見てはじめて図の見方がわかった。「縦の矢印は継承、横の矢印はis_aの関係」だったのか。
[PQ][Perl Quiz 2001-01-15 No.0062]が来ていたのでやってみた。
#!/usr/bin/perl -nlw
sub mkdirp {
my $dir = shift;
unless (-d $dir) {
if ($dir =~ /\/[^\/]+$/) {
&mkdirp($`);
}
mkdir $dir, 0755 or die "Can't mkdir $dir : $!";
}
}
if (/^>/) {
my $file = $';
if ($file =~ /\/[^\/]+$/) {
&mkdirp($`);
}
open OUT, ">$file" or die "Can't write $file : $!";
} else {
print OUT;
}
__END__
「結城浩の日記」の「2001年1月16日 (火) 夜」の「Perlスクリプトの公開に関して」より引用。idは変化しそうなのでリンクしづらい。
青空文庫メーリングリストに結城が流した文章から引用。
Perlスクリプトを公開するときには、 以下のようなコメントを入れておくと他の人(そのPerlスクリプトを入手した人たち) にも有益かと思いますので、ご検討ください。
# This library is free software; you can redistribute it and/or # modify it under the same terms as Perl itself.(試訳: このライブラリはフリーソフトウェアです。 あなたは、これをPerlそのものと同じ条件のもとで、 再配布・修正することができます)
Perlのライブラリやスクリプトの多くには上記のような文章が書かれており、 Perlそのものと同じ条件で再配布・修正が可能になっています。 ちなみにPerlそのものは「GPLもしくはArtistic License」という 2種類のライセンスから選択できるようになっています。 詳細は以下(gnu.orgの主張)参照。
RubyスクリプトにはPerlのところをRubyに変えたものを入れておくといいのかも。
HTML symbolic referenceの「©」とかって後ろの「;」が抜けてます。
[ruby-list:27218] C 言語ポインタ完全制覇ってこの書籍のことかな。
VineSeed MLってX-Mailerとかが削られるみたい。全く問題ないけどちょっと寂しい。
「Rubyプログラミング入門」正誤表に取り込まれた。
*だけじゃなくて&も混ぜて(&*&*&*&*&*&*&puts)("ok");
もokだったが、(&&&&&&&puts)("ok");
はparse errorになった。
gmakeという名前ではインストールされていないようです。
$ make --version
GNU Make version 3.79.1, by Richard Stallman and Roland McGrath.
Built for i686-pc-cygwin
Copyright (C) 1988, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 2000
Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.
Report bugs to <bug-make@gnu.org>.
$ type gmake
BASH: type: gmake: not found
$
スレッドローカルな外部変数ってThread.current[:hoge]='hoge'
かと思ったのですが、他のスレッドからも参照できるから違う?
fake_TARGET.rbがNot Foundなのはアクセスログで気がつくかと思ってたけど無理みたい。と思っていたら、fake-TARGET.rbだったみたい。
Index of /~eban/rubyにはDescriptionがあるけど、どうやるのか調べてみたら.htaccessで以下のようにすればできそうだとわかった。
Options Indexes
AddDescription "description" filename
Ruby for Cygwinのバイナリを実行するとruby-1.6.2-20010110-i386-cygwin.tar.gzもruby-1.6.2-20010115-i386-cygwin.tar.gzもruby-1.6.2-i386-cygwin.tar.gzも「CYGWIN-RUBY16.DLL ファイルは 欠落エクスポート CYGWIN1.DLL:getrlimit にリンクされています。」とでて実行できなかったので、ruby-1.6.2-20001218-i386-cygwin.tar.gzに戻した。
スクリプトを組んで ~/.sylpheed/folderlist.xml を自動生成するというのをやってみました。
とは言っても直接変更する勇気はないので、読み込んで</folderlist>の直前に追加するための情報を出力するだけです。
実際のnewsfolderとfolderlist.xmlをみて適当に書いただけなので間違ってるところがあるかも。
#!/usr/bin/ruby
# from newsfolder to folderlist.xml
#
# This program is free software; you can redistribute it and/or
# modify it under the same terms as Ruby itself.
folderlist = File.expand_path('~/.sylpheed/folderlist.xml')
newsfolder = File.expand_path('~/.sylpheed/newsfolder')
last_account_id = 0
if File.exist? folderlist
File.foreach(folderlist) do |line|
case line
when /<folder .+ account_id="(\d+)">/
last_account_id = $1.to_i
end
end
end
puts %Q{ <folder type="news" name="news" account_id="#{last_account_id+1}">}
newsgroup = nil
File.foreach(newsfolder) do |line|
case line
when /\//
newsgroup = $'.chomp
when /(\d+) (\d+) (\d+) (\d+)/
if newsgroup
puts %Q{ <folderitem type="normal" name="#{newsgroup}" path="#{newsgroup}" mtime="#$1" new="#$2" unread="#$3" total="#$4" />}
end
end
end
puts %Q{ </folder>}
__END__
accountrcにも追加する必要があるのでそれ用のスクリプト。こっちは一度実行してみて大丈夫そうだったら>> ~/.sylpheed/accountrcで追加すればいいと思います。
#!/usr/bin/ruby
# from newsfolder to accountrc
#
# This program is free software; you can redistribute it and/or
# modify it under the same terms as Ruby itself.
accountrc = File.expand_path('~/.sylpheed/accountrc')
newsfolder = File.expand_path('~/.sylpheed/newsfolder')
default_account_id = 0
last_account_id = 0
accounts = []
File.foreach(accountrc) do |line|
case line.chomp
when /\[Account: (\d+)\]/
last_account_id = $1.to_i
accounts[last_account_id] = Hash.new
when 'is_default=1'
default_account_id = last_account_id
when /=/
accounts[last_account_id][$`] = $'
end
end
nntp_server = nil
File.foreach(newsfolder) do |line|
nntp_server = line.chomp
break
end
puts "[Account: #{last_account_id+1}]
account_name=#{nntp_server}
name=#{accounts[default_account_id]['name']}
address=#{accounts[default_account_id]['address']}
protocol=4
nntp_server=#{nntp_server}
"
__END__
RubyのThreadやSocketを使うものを作成したかったのにうまくいかなくて残念な思いをした。
Ruby/Becky!を使ってxheader.rbsというのを作ってみた。
Sylpheedとかのように本文領域の上のところに指定したヘッダーを表示する。
今はなき(?)「X-Mailer 表示プラグイン」(B2 Plug-in Forumからリンクあり)はBecky!の外に出せない、再描画されないことがある、対応しているヘッダーが少ないという理由で使うのをやめて、「ヘッダ表示プラグイン」は別windowでしかも自動で開閉するのでタスクバーの操作がしにくくなる、windowが邪魔なのでたくさん表示するのは無理があるなどの理由で使うのをやめたかったけど、Ruby/Becky!でなんとか出来るようになったので解決。
以下インストールメモ。
xheader.rbsの表示するヘッダを増やした。
BkNewsで大量のメッセージを取り込むときにmswin32-ruby16.dllの中で落ちることがある。だいたい300ぐらいあると落ちるみたい。Ruby/Becky!は受信時の処理は何もしてないはずなのに。他のプラグインとの相性もあるのかも。とりあえず購読するニュースグループを増やしたときなどはBScript.dllをどけておいて再起動して回避している。
ヘッダを表示するのはもっと増やしたら上にあると邪魔だから、SetTextで追加するのは先頭(-2)ではなく末尾(2)の方がいいかも。
プロバイダのサーバにあるグループ数がめちゃくちゃ多いので設定の「以下のトップカテゴリのみを表示する」で「netlife;fj;japan」と指定しているがjapan2ndで始まるグループも表示されていると言うことは単に前方一致で比較しているっぽいのでトップカテゴリ以外も指定できそうに思った。試してないけど。
news.netlife.gr.jp119.groupというようなファイルが出来ていたので見てみたらnews.netlife.gr.jpは6グループ、プロバイダの方は30413グループあるということがわかった。全部表示させようとしたらツリービューがリソース不足で落ちそうな気がしたけど、Netscape Messengerで(全部展開は試してないけど)落ちなかったので大丈夫かも。
webmaster@debian.orgにリンク切れのメール(日本語)を送ってみたら英語で返事が来たので驚いた。
主な問い合わせ先のあたりは思いっきり日本語で説明が書いてあったのでdebian.orgの方は基本は英語と言うのをすっかり忘れていた(^^;
受信中にGCがおきると落ちると言うだけでBkNewsとは関係なかったらしい。
マルチスレッドのアプリケーションにRubyを組み込むのは難しいみたい。
雑記帳の「2001-01-21(Sun) 00:36:42」。
filterの中でしたか。探すのが面倒で見てませんでした(^^;
最新分の日記に複数の月の日記が混在するのが問題なら月ごとのファイルだけ月ごとの.confを使って最新分はndiary.confでいいのではないかと思いました。
Ganerated by nDiary version 0.9.2って0.9.2になってますか。GaneratedってGeneratedのtypo?
今日のRubyの今日のRuby 2001年01月下旬とかででてくる内容の範囲が変?
まだ存在しない2月へのリンクがあるのも変?
.htaccessの内容を公開しても構わないのならIndexIgnoreしなくても…じゃなくてForbiddenにしなくてもいいような気が。
RegisterWindowMessage(TEXT("TaskbarCreated"));
でのExplorerが落ちてもシステムトレイの時計表示が復活する機能が付いたのと書式CUのバグを直したっていうのが結構重要かも。
perldocで「/usr/bin/pod2man: not found」とでて内容が読めないので、perldocの中身を見てみたら「-t」をつければ良さそうだったのでつけてみたら表示できた。
「(-t is the default on win32)」と書いてあったけどcygwinはwin32には含まれないみたい。
で、「perldoc -t perldelta」を見てみたが、「perldelta - what's new for perl v5.6.0」だったので5.6.0と5.6.1の違いはわからなかった。
4ヶ月分ぐらいのX-Mailerをカウントしてみた。Achi-Kochi MailやDirect Emailで送られたメールは無条件で捨てるようにしても良さそう。
23:Achi-Kochi Mail Lite ver1.00
12:Direct Email v0.22
6:Achi-Kochi Mail ver1.04
4:IM2000 Version 1.01
4:Microsoft Outlook Express 4.72.3110.5
4:Microsoft Outlook Express 5.00.2615.200
4:melma.com 3.1
3:Microsoft Outlook Express 5.00.2314.1300
3:Microsoft Outlook Express 5.00.2919.6600
3:SendMailEX 1.00
2:Becky! ver. 2.00.01
2:Microsoft Outlook Express 5.00.2919.6700
2:Microsoft Outlook Express 5.50.4133.2400
2:Personal_ML11F
2:QUALCOMM Windows Eudora Pro Version 3.0.2-J (32)
1:5CDEj3gC61UbeASnMrr4d7MR
1:7SXlSv7yU6e31RJdJfqkl
1:<COM Blat ver 1.7+J1.1>
1:CommuniGate Pro CLI mailer
1:Direct Email v0.21
1:Mail Explorer For Internet & Nifty V3.64
1:Mail&News Explorer For Internet V3.52 No Reginstration
1:Mozilla 4.7 [ja] (Macintosh; I; PPC)
1:Mozilla 4.75 [ja] (Win98; U)
1:NSSfFwzSBIJ67oHsTkdh2Va0yV
1:QUALCOMM Windows Eudora Pro Version 4.0.2-J
1:RapidShot
1:sDyB3mSqr3Hxn00mSSVZ8
1:wjhgkYhfbzT10l6I3h5iBX
require 'becky'
class MailerCount
def count
h = Hash.new(0)
Becky.folder.each{|i|
h[i.x_mailer] += 1
}
h.sort{|a,b|(b[1]<=>a[1]).nonzero? || a[0]<=>b[0]}.each{|k,v|
printf "%3d:%s",v,k
}
end
end
MailerCount.new.count
?や*や[]の展開はファイルの存在が関係するけど{}の展開は無関係。
% touch a b
% echo [abcd]
a b
% echo {a,b,c,d}
a b c d
IRCの%Perlで正規表現の話になっていたのでperldoc perlreを見ていたら、s/\w??/<$&>/g;
というのがあったのでperl 5.6.0とruby 1.6.2 (2001-01-23) [i386-cygwin]で試してみたらrubyの方は\wにマッチしないことがわかった。でも??
って普通使わないと思う。
C:\tmp>ruby -le "p 'bar'.gsub(/\w??/){'<'+$&+'>'}"
"<>b<>a<>r<>"
C:\tmp>perl -le "$_='bar';s/\w??/<$&>/g;print"
<><b><><a><><r><>
ソースを見てもよくわからなかったけどAnother HTML-lintでチェックをしたら(追記)の後もアンダーラインが続いている原因は<ins>が閉じていないからだとわかった。
というのをIRCに書いたけど反応がなかったようなので日記にも書いておくことにした。
distributed-netのclientが/etc/init.d/distributed-net startしても起動しないので、なぜかと思って色々調べたところ、普通ログインして使うことのないアカウント(今回関係があったのはdaemon)のshellを/bin/falseにしていたのが原因だった。
Debian Policy Manualにはそういうことに関する記述は見つけられなかった。
ruby-1.6.2-20010123-sparc-sparc2.5.tar.gz が。どこなのかは書かなくてもわかる人にはわかるはず。
0.6.7をリリース完了らしい。
Just Another RD SiteのWhat's Newのところ、0.6.5はRDtoolなのに0.6.6と0.6.7はrdtoolって小文字になってる。
diffの出力の"---"がMethodListにっていうのは[2000/11/19]のところで同じようにはまってたからどうしてたかと思ったら、1行上に追加してしのいでいた。
JIT (Journal InTime)も日付のところからリンクされてると便利かも。