2009/11/07

numerical.rb

www.midore.net/daybook/2006/5-9/1159081162.html
を書き直し。

% cat numerical.rb

  1 # coding: utf-8
  2 # 2009-11-06
  3 
  4 str =<<EOF
  5 <?xml version="1.0" encoding="UTF-8"?>
  6 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
  7 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja">
  8 <head>
  9 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
 10 <title>数値文字参照</title>
 11 </head>
 12 <body>
 13 EOF
 14 
 15 n = ARGV[0]
 16 abort unless n
 17 abort if /\D/.match(n)
 18 (n.to_i..n.to_i+5).step{|x|
 19     str << "<p>#{x} => &##{x};</p>"
 20 }
 21 str << "</body>\n</html>"
 22 filename = 'numerical.html'
 23 # save file
 24 File.open(filename, 'w:utf-8'){|f| f.print str}
 25 # only OS X
 26 system "open #{filename}"


表示する数値文字は引数として与える数字から5を足した数までに制限している。line.18
数字の範囲は得に定めていないので、与える数字によってはすべて空欄にもなりうる。

% ruby19 numerical.rb '1100'


を実行すると実行ファイルと同じ階層に'numerical.html' ファイルが保存される。
OS X の場合、最終行でブラウザが 'numerical.html' を開く。
与えた数に対応する数値文字がブラウザに表示される。

1100 => ь

1101 => э

1102 => ю

1103 => я

1104 => ѐ

1105 => ё

2009/10/31

FXRecentFolders

Finder->移動->最近使ったフォルダ
に追加されたフォルダの削除

% cat delete-recentrolders.sh

#!/bin/bash

cd
defaults delete com.apple.Finder FXRecentFolders
killall Finder


# 実行権付与
% chmod +x delete-recentrolders.sh

# 実行
% ./delete-recentrolders.sh

参考
http://www.macosxhints.com/

2009/10/30

Book.new('1Q84')

村上春樹の『1Q84』が世間に投げかけた何かを仮に x として読者が感じ取ったものを仮に k とする。
k は抽象的概念を並べたものでもありキーワードの束のようなものとする。

これを Ruby で表現してみると

  1 # coding: utf-8
  2 
  3 class Book
  4 
  5   attr_reader :name
  6   attr_accessor :x
  7   
  8   def initialize(name)
  9     @name = name
 10     @x = nil
 11   end
 12   
 13 end
 14 
 15 class Reader
 16 
 17   attr_reader :booklist
 18   
 19   def initialize
 20     @booklist = Hash.new
 21   end
 22   
 23   def read(book)
 24     @book = book
 25     return self
 26   end
 27   
 28   def image(*k)
 29     @booklist[@book.name] = k
 30   end
 31   
 32 end
 33
 34 book1 = Book.new('1Q84-1')
 35 book2 = Book.new('1Q84-2')
 36 
 37 i = Reader.new
 38 i.read(book1).image('science','nation','man')
 39 i.read(book2).image('religious','language','female')
 40 p i.booklist


実行結果

# =>
# {"1Q84-1"=>["science", "nation", "man"], "1Q84-2"=>["religious", "language", "female"]}


@x には値を付与できるし値を読み取ることもできる。けれども値を付与できるのは作者以外にいない。そして Reader class は直接 @x の値を読み取る手段をもたない。@booklist の values は読者の抱いた感想に基づくキーワード群。それぞれ何かと対をなしていて二項対立とも同一概念の表裏とも光と陰とも言えるような値にしておいた。あえて加えなかったけれども Author class を作るとしたらそこには作者が値が付与できる @booklist があるはずだ。それは作家の頭の中にしか存在しないものなんだろうけど。

作ってみて一番面白かったのは、25行目 return self。 これは i.read(book).image('xxx') と記したかった為に必要だったからなにげなく書いたんだけど def read が self を返す(or 返す必要がある)なんて! ちょっとリアルな感じがした。

'science' のかわりに 'mathematic' の方がふさわしいような気もするし
'nation' のかわりに 'force' とすべきなのかなと迷った。
'female' のかわりに 'child', 'man' のかわりに 'soldier' にしてもよいような気もした。

『1Q84』を読み終えた読者が実際今何人なのか?なんて知る由もないが、仮にすべての読者が抱いたキーワードを全て寄せ集めることができたのなら、この本が抱えるキーワードの束は膨大な数になるんだろうなー。そして時間経過とともに読者数累計は増加してキーワードのエントロピーは増大していく。翻訳される言語が増えればなおさら...。それにキーワードはただ増えるだけじゃなく他の本とどんどんと繋がっていく。

たとえば
『知識人とは何か』( Edward W. Said / 平凡社 / 978-4582762365 )
に 『 若き日の芸術家の肖像 』( Joyce James )
からの引用がある。

p.46

「きみには、ぼくがすることと、しないことをおしえてあげよう。ぼくは自分で、もう信じていないもの、それを家庭と呼ぼうが、祖国と呼ぼうが、教会と呼ぼうが勝手だけれども、そういうものに仕えるつもりはない。ぼくがやってみたいのは、人生とか芸術をとおして、自分自身を、できるかぎり自由に、できるかぎりそこなうことなく表現することなんだ。そのため、自分をまもるのに使う武器は、三つにかぎることにするー沈黙、亡命、そして狡知」。


ここにある3つの単語は、『1Q84』が発する何かと強烈に結びついているように思えてならない。
狡知に対応するものが 'science' or 'mathematic'
亡命に対応するものが 'nation'
沈黙に対応するものが 'language'

それにしても、と思う。たくさんの小説家が巨大な渦に流され溺れてしまわないための自衛策についてあらゆるかたちで書き残してる。それこそ「そこなうことなく」しるされてる。

修正: 'femail' => 'female'