2001年2月のn日記


過去のn日記


Generated by nDiary version 0.9.3.beta6

2001年2月1日(木)

ruby 正規表現

  いまさら正規表現ではまるより。viとかemacsとかの話がでてくるのでEUC-JPでの話だろうと思ってLinux上で確認。

% irb
irb(main):001:0> [RUBY_VERSION, RUBY_RELEASE_DATE, RUBY_PLATFORM]
["1.6.2", "2001-01-10", "i486-linux"]
irb(main):002:0> /a\b/ === 'あaあ'
2
irb(main):003:0> /\ba/ === 'あaあ'
nil
irb(main):004:0> /\ba/e === 'あaあ'
nil
irb(main):005:0> /\ba/e === 'あaあ'
nil

  ruby-listとかでもそうだけど、バグ報告とかよくわからない動作とかは常にruby -vの結果をつけた方がいいと思っているので、自分のメールでは忘れてない限りついてるはず。
ついてれば後からbladeとかでみたときにもいつのバージョンの頃の話だったのかわかりやすいし。

minibbs.rb

  今頃になってやっとminibbs.rbをみてみた。


2001年2月2日(金)

EWB

  EWBって何?と思ったらEditor's Work Benchの略でしたか。Editors'じゃないというところが…。


2001年2月3日(土)

Perl Quiz

  No.0063のtrの問題はメール来てたことに気づかず見逃していた。メール処理の仕方を考えた方がいいのかも。
で、No.0064の解答。


foreach (@strings) {
    print '"';
    print join ' ',/\b(\w+) (?=\1er\b)/g;
    print qq{"\n};
}

2001年2月4日(日)

excite_world_text.rb

  exciteのサイトのradioのあたりが変更されていたので更新した。

Perl Quiz

  Wakaba.0038の解答。
最初はperl -e 'print qq{<html>\n<table border="1">\n<tr><td>},join("</td></tr>\n<tr><td>",map{chomp;join"</td><td>",split/,/}<>),qq{</td></tr>\n</table>\n</html>\n}'。chompが必要だったのが予想外だったので気に入らない。それにsplitしてjoinするのが長くなってる原因のような気がした。
で次にperl -e 'print qq{<html>\n<table border="1">\n},join("",map{s|\d+|<td>$&</td>|g;s|,||g;s|^|<tr>|;s|$|</tr>|;$_}<>),qq{</table>\n</html>\n}'。mapの最後に$_が必要だったのが予想外だったがかなり短くなった。
でもjoinもいらなくてperl -e 'print qq{<html>\n<table border="1">\n},(map{s|\d+|<td>$&</td>|g;s|,||g;s|^|<tr>|;s|$|</tr>|;$_}<>),qq{</table>\n</html>\n}'で良かった。
後はコマンドラインオプションの-lを使って最後の\nをなくせるぐらい?
というわけでperl -le 'print qq{<html>\n<table border="1">\n},(map{s|\d+|<td>$&</td>|g;s|,||g;s|^|<tr>|;s|$|</tr>|;$_}<>),qq{</table>\n</html>}'で送ってみる。


2001年2月6日(火)

Rubyプログラミング入門

  1刷正誤表

■p.xi (目次) 誤 2.10.2 プロセスとのパイプ:open、popen
popenは書いてなかった。
p.158 正 $, splitの引数省略時のフィールド区切り(デフォルトはnil)
$,ではなく$;のはず。
■p.346
チャネルが誤でチャンネルが正?

2001年2月7日(水)

翻訳サービス

  Excite エキサイト : 翻訳powered by AMiKAiになってしまって、Amikai翻訳は以前から公開されていたので、今までのexcite翻訳が無くなってしまっただけ、という気もして残念な感じ。
参考までに今までと違うということをhttp://yasu.asuka.net/diary/old/200009C.html#20000927Bと同じものを試して確認した。「奈良先端科学技術大学院大学」の和英は今まで通り出来たけど、英和は出来なくなったような気がした。(今まで出来ていたことが確認できない。)


2001年2月8日(木)

ruby-lang.org

  色々とダメっぽいらしいです。


2001年2月9日(金)

ruby-lang.org

  とりあえず入れてもらったのでman-1.6へのリンクと極道編の情報を入れてみた。RDPはRWiki版にリンクしていいのかどうかわからなくて悩み中。

  crypt したパスワードはruby -e 'pw = gets.chomp; a = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; srand; puts pw.crypt(a[rand(a.size),1] + a[rand(a.size),1])'で作ればいいらしい。

ruby

  mkdir -pのRubyバージョンってftoolsを使ってruby -rftools -e 'File::makedirs("hoge/foo//1//2///3/4////////5/6/7/8/9////10//11//")'とか。


2001年2月10日(土)

Perl Quiz

  [Perl Quiz 2001-02-09 No.0065]への解答。\dの3の倍数を表現するのに非常に苦労しました。


・赤ラクダ本にも載っていたようなwhileを使うシンプルなやり方。
    1 while s/\d+(?=\d{3})/$&,/;
 
・reverseを使うやり方。
    $_ = reverse $_;
    s/\d{3}(?=\d)/$&,/g;
    $_ = reverse $_;
 
・正規表現1発でやるやり方。
    s/\d+?(?=(?:\d{3})+(?!\d))/$&,/g;
 
試行錯誤の記録。以下のような失敗の後、上のができました。
    s/\d+(?=(?:\d{3})+)/$&,/g;
    s/\d+?(?=(?:\d{3})+)/$&,/g;
    s/\d+?(?=(?:\d{3})+)(?!\d)/$&,/g;

  [Perl Quiz 2001-02-07 Puzzle.0010]の解答。


$a =     " 1999, 2000, 2001, 2002 ";
$b =     ( 1999, 2000, 2001, 2002 );
$c =     [ 1999, 2000, 2001, 2002 ];
$d =     { 1999, 2000, 2001, 2002 };
$e = sub { 1999, 2000, 2001, 2002 };
$f =   2_0_0_1 ;
$g =  "2 0 0 1";
$h = "\2\0\0\1";
$i =   \2001;
$j =   "1002";
$k = \*_2001;
 
print '', (split(', ',$a))[2], "(a)\n";
print $b-1, "(b)\n";
print $c->[2], "(c)\n";
 
# 配列にする。
print '', (%$d)[2], "(d)\n";
 
# 意地でもハッシュとして扱う。
print {''=>'',reverse(%$d)}->{2002}, "(d)\n";
 
# keysを使う。
print '', (sort keys %$d)[1], "(d)\n";
 
print &$e-1, "(e)\n";
print $f, "(f)\n";
print split(' ',$g), "(g)\n";
print map({ord}split('',$h)), "(h)\n";
print $$i, "(i)\n";
print reverse(split //,$j), "(j)\n";
print map({/\d+/;$&}$$k), "(k)\n";

2001年2月11日(日)

Cygwin

  setupを実行してみたらcygwin-1.1.8-2になった。他にも色々。squid-2.4.PRE-STABLEまで入るのか。wget-1.6-1が入ったようなので1.6を使いたいときはCygwinのを使えば良さそう。1.5.3で間に合ってる気もするけど。

  cygwin-1.1.8-2といえばRuby 1.6.3が出る頃にはクロスの環境も1.1.8-2にするらしいですが、Ruby 1.6.3はまだ?

Ruby Binaries

  いつの間にかext/というのが出来て、てんこ盛りパックじゃなくなってたRuby Binariesですが、気になったことがいくつか。

  mingw版RubyWinでフォントを変更しても文字化けするという話があったので試してみたが再現出来なかった。ふとp $KCODEをしてみたら"UTF8"だったのでちょっと驚いた。

Perl Quiz

  [PQ/P][Perl Quiz 2001-02-10 Puzzle.0011]は解答編だった。勉強になったと思ったものを列挙。

OpenSource Matsuri 2001 in Akihabara

  RealPlayerで中継をみた。


2001年2月13日(火)

rubyist ML

  freemlでMLを作ってみた。jewel boxの方にフォームをおいてみました。
JavaScriptをカテゴリーの選択のところで使っているので作成するのに苦労して、参加キットのところにもJavaScriptがあるので苦労した。さらに参加キットをつけてからAnother HTML-lintでチェックしたらエラーがたくさんだったので苦労した。


2001年2月16日(金)

ruby-talk ML

  subscribeしてみた。

MS-DOSプロンプト(command.com)

  環境変数に=を設定できなくて困った。set QUERY_STRING=name=valueってしたかっただけなのに。

rubyist ML

  停止中っていうのは参加者情報のページをみてみたときにちょっと気になってたんですが、あんまり気にしてませんでした。
ちなみに現在の参加者は25人らしい。


2001年2月17日(土)

rubyist ML

  Becky!2でまず一度作業用のフォルダにメールを全部コピーしてコンパクト化最小をしてから、eml形式(1メール1ファイル)でエクスポート。
ruby -Ks -e "Dir['*.eml'].each{|f|p [f,/\d+/.match(f)[0]]}"でrename前のチェックをしてruby -Ks -e "Dir['*.eml'].each{|f|File.rename *[f,/\d+/.match(f)[0]]}"で実際にrename。2バイト目に「\」が入る「ソ」を含むファイル名のファイルがrenameどころかDir['*']ででてこなくて困った。


2001年2月18日(日)

うさにっき

  他のページと比べて表示されるまでにちょっと時間がかかる。<H1 CLASS="Title">のfilterが原因?

  UNC対応って余計なことをすると逆に非対応になりそうな気が。特に何もしていないLHA.EXEが対応できているという話をみたことあるような気がするので。

helium.ruby-lang.org

  dosishじゃない環境ってhelium…と思ったらruby-lang.orgなアカウントは使ってませんでしたか。
sshの公開鍵があれば使えるようになりそうですが、それだとchshとか使えなくてちょっと悩んでしまった。.profileか.bash_profileあたりでexecすれば良さそうなのですが、設定ファイルを持っていくのが面倒なので保留。

  helium.ruby-lang.orgというかwww.ruby-lang.orgにログインしてから設定したことは、user-ja-confの実行、.bashrcにaliasの追加、.forwardの作成ぐらいだった気がする。

Perlで満足している人にRubyをすすめるということ

  ActiveScriptRubyと同じ様なことが出来るPerlScriptはActivePerlについてるはず。

<meta name="ROBOTS" content="NOINDEX,NOARCHIVE">

  最近何日分の内容がどんどん入れ替わるindex.htmlがヒットするのはうれしくないので、lastest.htmlに<meta name="ROBOTS" content="NOINDEX,NOARCHIVE">を入れてみた。これでindex.htmlに入るはず。


2001年2月21日(水)

うさにっき

 filter外してみました。」と書いてるのに変わらないと思っていたら、CSSファイルがキャッシュの方になっていたらしく、今みたらfilterじゃなくなってて、他のページと同じようにすぐに表示されるようになっていた。

  UNC対応の話は「ruby -e "p Dir['//machine/user/*']"」でちゃんと「ls -d //machine/user/*」と同じものがマッチしていて何が問題なのかわかりませんでした。
もしかして相手がsambaだから問題がないだけなのかも。

  heliumのアカウントってそういえば詳しい説明は全然なかったような。
Debian(potato)は最近使ってるので日本語を使えるようにするにはuser-ja-confを実行すれば良さそうとか、他の人のホームディレクトリや/etcをみてpostfixだから.forwardを作っておこうとか、public_htmlを作っておこうとか、そういう感じで自分で調べて色々設定していきましたが。

rubyist ML

  過去ログ更新。
renameは結局sambaでLinuxマシンに持っていってそこでやってみたら何の問題もなく出来た。
作業場所として~/Maildir/tmpを使ってしまったのはかなり間違ってる気がするけど。


2001年2月22日(木)

termcap on Vine Linux

  3ヶ月前にVineSeedに出した話の続き。patchが間違ってて違うファイル(termcap.kterm)にあたってて/etc/termcapにちゃんとあたってなかった。
patchってunified diffだと---の行と+++の行のうち短い方のファイル名を取り出しているっぽい。

yen dot

  バカが征くより。yen dotもmod_ruby使ってるのかな?

むっきー。¥.が落ちてる。しかも:

/usr/lib/ruby/site_ruby/1.4/drb/drb.rb:166:in `method_missing': nested transaction (PStore::Error)
from /tmp/index.rhtml.IX1zni:207

なんてケッコーなものを拝ませてくれるし。w3mがruby使ってるのかと思っちゃ
いましたよ? でも、も一回やったら、フツーに見れました。何が起こったの?

2001年2月24日(土)

Ruby

  Cマガジン2001年3月号のプログラミング期末試験をやってみた。結果をcsvっぽいファイルで1桁目に点数を入れたファイルに記録してみたので、ruby -e "ARGV.each{|f|n=0;File.foreach(f){|s|n+=s.to_i};p f,n}" *.csvで集計してみた。

Just another Ruby hacker,

  JARHを考えてみた。一部かなり無理があるかも。

trap("EXIT") { print 'Just another Ruby hacker,' }
$\ = 'Just another Ruby hacker,';print ''
print Struct.new(:Just,:another,:Ruby,:hacker).members.join(' ')+','
print /Just another Ruby hacker,/.source
Marshal.load Marshal.dump('').chop+"\036Just another Ruby hacker,"
Marshal.load Marshal.dump('x'*25)[0..-26]+"Just another Ruby hacker,"
print Thread.start{"Just another Ruby hacker,"}.value
Ruby/Becky!

  xheader.rbsをX-Maidへの対応させたついでにヘッダの追加も出来るようにしてみたが、ヘッダの追加はテンプレートでやった方が良さそうに思った。


2001年2月26日(月)

Cマガプログラミング期末試験

  C,Perl,Rubyが83点,98点,94点ですか。こちらの結果は、答えに間違いがあるので公開しようかどうか悩んだけど、結局公開しちゃうと以下のような感じ。JavaはJDK解体新書を時々読んでただけなので低いのはいいとして、Ruby編が思ったより低かったのがちょっとあれかも。

C言語編 ひ
C++編 ・
Java編 み
Perl編 ・
Ruby編 つ

  Perl編の問25は最初に「Perlのバージョンは5を想定しています。」と書いてあるので悩むところですが、perl-lesson ML ダイジェスト 2001-02-07にあるようにバージョンによって違います、というのが一番正解だと思います。
バージョンによって違いがでるポイントは、たぶん以下の2点ですが、どのバージョンで変わったかまでは未確認です。
解答の文でどちらも(2)になってて変というのは御意。
ちなみにバージョンによって違うというのはRTCでフィンローダさんに伝えておきましたがどうなるかな。

  Ruby編の問17と問22のうち問17はC MAGAZINE お詫びと訂正に訂正がでています。他にも問24の解答の出力例が間違っているようです。

JARH

print Time.now.strftime('Just another Ruby hacker,')
jis-compact.rb

  メール用にiso-2022-jpでのバイト数を小さくしようとするスクリプトを書いてみた。
いわゆる全角でも半角でもいい文字が6文字のところがバイト数の変わり目らしくて、今のままだと元がどっちだったかは気にせずminでたまたま選ばれた方になるけど、これは仕方がないかも。

  最初は$KCODEを自動で判断するようにしてたけど、スクリプト中に漢字などを使っていると実行開始後に$KCODEを設定しても手遅れなので、結局1行目に-Ksをつけた。
実行中に$KCODEを変更するのはコマンドラインオプションの-Kを(実行中は)無視すると言うことなので、普通は実行中に$KCODEを変更してはいけない。するのなら//nとか//sのようにそれぞれの正規表現に文字コードの指定をつけるべき。


  # $KCODEの自動判断。
  if /^[nN]/ === $KCODE
    if /win/i === RUBY_PLATFORM
      $KCODE = 'SJIS'
    else
      $KCODE = 'EUC'
    end
  end

2001年2月27日(火)

Ruby

  moduleの中でloadしてもトップレベルになることを確認した。


% cat a.rb
module A
  module B;end
  load "b.rb"
end
p B.new
p A::B.new
% cat b.rb
class B;end
% ruby -v a.rb
ruby 1.6.2 (2001-02-09) [i386-cygwin]
#<B:0x459ac28>
a.rb:7: undefined method `new' for A::B:Module (NameError)

2001年2月28日(水)

Ruby

  特異メソッドは::で呼び出せるのかを試してみた。
小文字で始まるメソッド名なら::でも呼び出せて、大文字だと定数とみなされるみたい。


% cat a.rb
class C
  def C.m
    'C.m'
  end
 
  def C.M
    'C.M'
  end
end
 
puts C.m
puts C.M
 
begin
  puts C::M
rescue NameError
  puts $! #=> uninitialized constant C::M
end
 
class C
  M = 'C::M'
end
 
puts C.M
puts C::M
% ruby -v a.rb
ruby 1.6.2 (2001-01-10) [i486-linux]
C.m
C.M
uninitialized constant C::M
C.M
C::M

上へ indexへ
copyright © 2000 ZnZ