-
巻頭の「■付録CD-ROMについて」
[2001/03/27 02:08:34]
ディレクトリツリーの上のrubycgi_progeは必要ないので取る。
-
巻頭の「■付録CD-ROMについて」ディレクトリツリーの下の
[2001/03/27 02:10:01]
-
巻頭の「■本文中の表記について」の一番下の枠
[2001/03/28 17:30:06]
-
目次
[2001/05/17 02:57:47]
7.8.の位置が左にずれている。
-
p007の一番下の行
[2001/03/27 02:10:49]
-
p024の「■インストール」の中の一つ目の枠
[2001/03/28 17:31:42]
mv 〜〜の行の次の行に追加
cd /usr/local/src
-
p028の「■Apacheの設定」の7行目
[2001/03/28 17:36:45]
「よくわからない場合はlocalhostにしておきましょう。」を取る。
-
p028の一つ目の枠の中
[2001/03/27 02:12:36]
誤: |
Server Name local host
|
-
p029の1つ目の枠
[2001/04/12 19:58:39]
誤: |
/usr/local/apache/bin/httpsdctl start
|
正: |
/usr/local/apache/bin/httpdctl start
|
-
p029の1つ目の枠
[2001/04/12 19:57:37]
SSLを入れたApacheを書いてしまった…
誤: |
/usr/local/apache/bin/httpsdctl start
|
正: |
/usr/local/apache/bin/httpdctl start
|
-
p045の1行目
[2001/03/28 17:39:33]
脚注の追加
誤: |
さまざまなデータを入れる「箱」だと思って下さい。
|
正: |
さまざまなデータを入れる「箱」だと思って下さい。(※1)
※1 実際は箱ではなく、オブジェクトを指し示すものなのですがここではわか
りやすく「箱」と表現しています。
|
-
p047のコラム
[2001/05/08 02:37:14]
誤: |
なんでも用語集 記号アルファベット
http://lilo.linux.or.jp/glossary/ml.html#hoge
LILO用語辞典 〜LILO ML編〜
http://ticra.dyn.to/~hp/cgi-bin/yogo/dic.html#hoge
|
正: |
なんでも用語集 記号アルファベット
http://www.vt.sakura.ne.jp/~ticra/cgi-bin/yogo/dic0.html#hoge
LILO用語辞典 〜LILO ML編〜
http://lilo.linux.or.jp/glossary/ml.html#hoge
|
-
p048 3_3_1.cgiの10行目
[2001/05/26 17:43:55]
誤: |
print "<html><body>#{c_add}<br>#{c_subtruct}<br>#{
c_multi}<br>#{c_division}<br></body></html>"
|
正: |
print "<html><body>#{c_addition}<br>#{c_subtruction}<
br>#{c_multiplication}<br>#{c_division}<br></body></htm
l>"
|
-
p049の図3-6
[2001/03/28 17:41:52]
スクリーンショットが3_3_2.cgiの結果ではなく、3_2_2.cgiの結果になってい
る。
-
p056のPROGRAM3_5_4.cgiの枠の下の方
[2001/03/28 17:43:11]
誤: |
open("3_5_1.txt", "r") { |fh|
str = fh.read
}
|
正: |
open("3_5_1.txt", "r") do |fh|
str = fh.read
end
|
-
p068の補足の中の一番下の行
[2001/03/28 17:45:01]
-
p073 中辺り
[2001/05/26 17:45:55]
誤: |
このプログラムではadd_kiddieというメソッドを定義し、文字列に" kiddie"
という文字列の連結を行います。
|
正: |
このプログラムではadd_rubyというメソッドを定義し、文字列に" ruby"
という文字列の連結を行います。
|
-
p074 1つ目の枠の中
[2001/05/26 17:48:51]
-
p074 2つ目の枠の中
[2001/05/26 17:49:39]
-
p079の「補足」の中の下から4行目
[2001/03/29 18:35:34]
-
p079の5行目
[2001/03/28 17:46:50]
-
p083の「・改行コード」の次の行
[2001/03/29 01:49:43]
-
p084の「文字コードについて」の下から6行目
[2001/03/26 00:33:49]
誤: |
print "Content-type: text/html;charset=SHIFT_JISエnエn"
|
正: |
print "Content-type: text/html;charset=SHIFT_JIS\n\n"
|
-
p084の「文字コードについて」の下から8行目
[2001/03/26 00:31:43]
誤: |
print "Content-type: text/htmlエnエn"
|
正: |
print "Content-type: text/html\n\n"
|
-
p084の一つ目の枠
[2001/12/05 18:45:12]
-
p085の「Perlでは」の5行目
[2001/03/28 17:48:03]
-
p089の3行目
[2001/05/17 02:59:55]
-
p090の2つ目の枠の前
[2001/03/28 18:12:29]
(追加文章)
このencoded-word(=?から?=までのこと)は75文字以内でなければなりません。
詳しくはrfcの2047を参照して下さい。
-
p091の(2)の最後に
[2001/05/17 03:13:11]
文章の追加
chompは、文字列の最後に改行が付いていた場合に、その改行を取り除くメソ
ッドです。
8行目で使われているscanについての説明はp.119にあります。
-
p093の下から3行目
[2001/05/19 00:37:38]
-
p094の補足「SMTPサーバ」の中の最後の行
[2001/03/30 22:44:52]
-
p098のform.htmの15行目
[2001/05/25 01:48:26]
誤: |
action="mail_form.cgi" action="POST"
|
正: |
action="mail_form.cgi" method="POST"
|
-
p100の一番下の行
[2001/03/28 18:17:36]
行が途中で終わってしまっています。
<form><input type=button value="戻る" onclick="javascri
pt:history.back()">
(以上の行に以下を追加)
y.back()">
-
p110のfh.each_byte{|char|…}の説明内
[2001/03/28 18:19:10]
-
p113の5_2_1.htmの2行目
[2001/05/19 01:08:35]
-
p119の3つ目の枠の中
[2001/05/19 01:12:06]
誤: |
[[1, 2, 3], [2, 4, 6], [3, 6, 9]
|
正: |
[[1, 4, 7], [2, 5, 8], [3, 6, 9]]
|
-
p121の「Perlでは」の3行目
[2001/03/29 17:27:26]
誤: |
Perlで配列を渡すにはリファレンスを使わねばならず大変面倒だったのですが、
|
正: |
Perlにおいてサブルーチンの引数に配列を使うには、引数全体の中で1つの配
列を用いるか、参照渡しをするかしかないので、記号が多くなり、プログラム
が見づらくなってしまうことが多いです。しかし、
|
-
p137のファイル名
[2001/05/19 01:15:54]
-
p138の6行目7行目
[2001/03/28 18:20:01]
誤: |
require "cgi" # findライブラリの呼び出し
require "kconv" # findライブラリの呼び出し
|
正: |
require "cgi" # cgiライブラリの呼び出し
require "kconv" # kconvライブラリの呼び出し
|
-
p138のファイル名
[2001/05/19 01:27:10]
-
p146の5行目
[2001/05/17 03:20:16]
-
p147のプログラム
[2001/04/21 23:18:53]
誤: |
#!/usr/local/bin/ruby -Ks
|
正: |
#!/usr/local/bin/eruby -Ks
|
-
p149の一番下の行
[2001/03/28 18:21:37]
-
p151の「■cgi.rbのバージョンアップ」の1行目
[2001/03/29 15:40:01]
誤: |
CD-ROMに収録されているパッケージのcgi.rb
|
正: |
CD-ROMに収録されているEntryPackageのcgi.rb
|
-
p160のプログラム
[2001/04/21 23:19:52]
39行目から71行目のプログラムが掲載されていない。
CDに入っているプログラムは正しくなっている。
-
p171のCSVのページ
[2001/04/15 22:40:28]
誤植「.」になるべきところが「..」になっている。
誤: |
http://www..jin.gr.jp/~nahi/Ruby/
|
正: |
http://www.jin.gr.jp/~nahi/Ruby/
|
-
p182のコラムの下の方
[2001/03/29 17:26:48]
誤: |
この中では排他処理を簡単に行えるのですが、残念ながらCGIの場合は別プロ
セスで処理を行わなければならないため、Rubyのスレッド機能を使うことはで
きません。Rubyのスレッド機能は、1つのプロセスの中で複数の処理を同時に
行う機能なのです。
|
正: |
Rubyのスレッドは排他処理を簡単に記述することができるます。しかし、Ruby
のスレッド機能は1つのプロセスの中で複数のスレッドを実行する機能です。
その為、CGIの場合はプロセス間の排他処理を行うので、Rubyのスレッドの排
他制御ライブラリ(Mutexなど)を利用することはできません。
|
-
p183のファイル名
[2001/05/19 02:10:59]
コメントだから別にいいのだけれど…
問題が多いのでHPの方に置いておきます。
http://www.rubycgi.org/archive/
誤: |
http://localhost/cgi/7_5_1.rhtml
|
正: |
http://localhost/cgi/7_5_1.cgi
|
-
p184のプログラムの8行目
[2001/03/28 18:23:11]
誤: |
$NOHEADER = true # ヘッダ無しモード
|
正: |
ERuby.noheader = true # ヘッダ無しモード
|
-
p187の1つ目の枠の中
[2001/03/26 00:37:37]
誤: |
print CGI::Cookie::new({…})
|
正: |
print "Set-Cookie: #{CGI::Cookie::new({…})}\n"
|
-
p187の2つ目の枠の中
[2001/03/26 00:37:37]
誤: |
print CGI::Cookie::new({…})
|
正: |
print "Set-Cookie: #{CGI::Cookie::new({…})}\n"
|
-
p187の2行目
[2001/03/26 00:34:45]
(文末に文章が足りない。)
配列中のデータ(value1, value2, … )は文字列でなければなりません。
-
p190の補足の1行目
[2001/03/29 18:00:30]
誤: |
PStoreでは、自動で排他処理を行ってくれるわけではないので、CGIで使う場
合は必ずロックをかけなければなりません。
|
正: |
PStoreではflockによるファイルの排他処理を行っています。しかしflockの
使えない環境もあるので、このCGIではロックの処理を行っています。
|
-
p191の図7-9の中のプログラム名
[2001/04/20 01:23:45]
-
p197のファイル名
[2001/05/19 02:13:30]
-
p212の一つ目の枠
[2001/03/28 18:24:07]
誤: |
postgresql-7.0.2.base.tar.gz /usr/local/src
|
正: |
mv postgresql-7.0.2.base.tar.gz /usr/local/src
cd /usr/local/src
|
-
p213の3つ目の枠
[2001/03/28 18:28:08]
「=」が付いていない。
誤: |
export POSTGRES_HOME /usr/local/pgsql
export PGLIB $POSTGREG_HOME/lib
export PGDATA $POSTGREG_HOME/data
export MANPATH "$MANPATH":$POSTGREG_HOME/man
export LD_LIBRALY_PATH "$LD_LIBRALY_PATH":"$PGLIB"
|
正: |
export POSTGRES_HOME=/usr/local/pgsql
export PGLIB=$POSTGREG_HOME/lib
export PGDATA=$POSTGREG_HOME/data
export MANPATH="$MANPATH":$POSTGREG_HOME/man
export LD_LIBRALY_PATH="$LD_LIBRALY_PATH":"$PGLIB"
|
-
p213の5つ目の枠
[2001/03/28 18:28:50]
誤: |
./cd/usr/lical/pgsql/bin
|
正: |
cd /usr/local/pgsql/bin
|
-
p213の5つ目の枠の下
[2001/03/28 18:29:57]
-
p215の1つ目の枠
[2001/03/28 18:30:28]
誤: |
cp ruby-postgres-0.6.2.tar.gz/usr/local/src
|
正: |
cp ruby-postgres-0.6.2.tar.gz /usr/local/src
|
-
p223 2つ目の枠の上
[2001/07/26 23:11:28]
-
p225form.htmの15行目
[2001/05/25 01:49:45]
誤: |
action="mail_form.cgi" action="POST"
|
正: |
action="mail_form.cgi" method="POST"
|
-
p225の1行目
[2001/05/19 02:16:52]
-
p237 8章のconstant.rb
[2001/04/20 01:04:18]
constant.rbに以下を追加
ItemImageLock = LogDir + "/item_img.lck" # 画像書き込みのロ
ック
logディレクトリにitem_img.lckというディレクトリを作成しておく。(ファ
イルでもかまわないのだがディレクトリにしておくとロックであることがわか
りやすいので、ここではディレクトリを使う)
-
p248 8章のitem_add.class.rb
[2001/04/20 01:02:59]
item_add.class.rb
ロックの際にロックファイル名をしていなければならないのにそれが抜けてい
ました。
正: |
lock = Lock.new(ItemImageLock)
|
-
p249のプログラムのファイル名
[2001/04/19 11:56:32]
-
p249のプログラムのファイル名
[2001/04/19 11:58:12]
-
p255 8章のitem_delete.class.rb
[2001/04/20 01:05:40]
すでに商品が無くなっていた場合にはデータの戻り値の item_data[0] がnil
になってしまう。その為に file_extension の定義の行で例外が発生してしま
う。それではまずいのでチェックを行い、すでに商品が削除されているかをチ
ェックして、削除されている場合は例外を発生させてエラー表示を行う
誤: |
sql = "select item_graphic_extension from ITEM where item_no = #{item_no}
"
item_titles, item_data = db.exec_select(sql)
file_extension = item_data[0][0]
|
正: |
sql = "select item_graphic_extension from ITEM where item_no = #{item_no}
"
item_titles, item_data = db.exec_select(sql)
if item_data[0]
file_extension = item_data[0][0]
else
raise ItemSell4Error, "すでに商品は削除されています" # すで
に商品がなかった場合、エラー表示
end
|
-
p255 8章のitem_delete.class.rb
[2001/04/20 01:04:46]
何らかの原因で画像ファイルが無くなると、エラーが発生してしまいDB内の
データも消せなくなる。以下の修正で画像ファイルの削除に失敗した場合はフ
ァイルの削除をあきらめてDB内のデータだけを消すようになる。
誤: |
File.delete("#{GraphicDir}/#{item_no}.#{file_extension}")
@message += "<li>画像ファイルを削除しました。\n"
|
正: |
begin
File.delete("#{GraphicDir}/#{item_no}.#{file_extension}")
@message += "<li>画像ファイルを削除しました。\n"
rescue
@message += "<li>画像ファイルを削除は失敗しました。\n"
end
|
-
p255 8章のitem_detail.class.rb
[2001/04/20 01:06:17]
クッキーで読み込んだuser_idが無かった時の処理を追加
誤: |
sql = "select * from USER where user_no = #{ruby_shop_user_no}"
user_one_titles, user_one_data = db.exec_select(sql)
|
正: |
if ruby_shop_user_no != ""
sql = "select * from USER where user_no = #{ruby_shop_user_no}"
user_one_titles, user_one_data = db.exec_select(sql)
else
user_one_titles, user_one_data = [[], [[]]] # ユーザーがなければ空デ
ータを作成しておく
end
|
-
p255 8章のitem_detail.class.rb
[2001/04/20 01:06:52]
ユーザがいなかった場合nilが入ってしまうので、文字列に変換しておく。
誤: |
<td><input type="text" name="address" value="
;<%= user['user_address'] %>" size="80"></td>
<td><input type="text" name="name" value="&l
t;%= user['user_name'] %>" size="20"></td>
<td><input type="text" name="tel" value="<
;%= user['user_tel'] %>" size="20"></td>
<td><input type="text" name="email" value="&
lt;%= user['user_email'] %>" size="80"></td>
|
正: |
<td><input type="text" name="address" value="
;<%= user['user_address'].to_s %>" size="80"></td>
;
<td><input type="text" name="name" value="&l
t;%= user['user_name'].to_s %>" size="20"></td>
<td><input type="text" name="tel" value="<
;%= user['user_tel'].to_s %>" size="20"></td>
<td><input type="text" name="email" value="&
lt;%= user['user_email'].to_s %>" size="80"></td>
|
-
p284の9行目
[2001/05/17 02:56:17]
あらかじめRubyCGI用のディレクトリを作成しておきます。これはC:\rubycgi
とすることにします。」
の1文を削除する。
-
p286の図5
[2001/05/17 02:53:56]
図中の実行ファイルの設定がおかしい。
-
p286の枠の中
[2001/05/17 02:53:56]
誤: |
C:\usr\local\bin\ruby.exe -I file://C/usr/local/lib/ruby/1.6 -I file://C/usr/lo
cal/lib/ruby/1.6/i386-cygwin -I file://C/usr/local/lib/ruby/site_ruby/1.6
-I file://C/usr/local/lib/ruby/site_ruby/1.6/i386-cygwin %s %s
|
正: |
C:\usr\local\bin\ruby.exe -I //C/usr/local/lib/ruby/1.6 -I //C/usr/local/lib/ru
by/1.6/i386-cygwin -I //C/usr/local/lib/ruby/site_ruby/1.6 -I //C/usr/local/lib
/ruby/site_ruby/1.6/i386-cygwin %s %s
|
-
p288のディレクトリ構成の一部分
[2001/03/26 00:44:16]
誤: |
+--- iissamples
| +--- homepage
| | +--- themes
| | | +--- gunmetal
| | | +--- journal
| | | +--- looseleaf
| +--- sdk
|
正: |
+--- iissamples
| +--- homepage
| | +--- themes
| | +--- gunmetal
| | +--- journal
| | +--- looseleaf
| +--- sdk
|
-
p289の枠の中
[2001/05/17 02:52:36]
間違いではないのですが、ファイルのあるドライブによってはトラブルが起こ
る可能性があったのを修正しています。
誤: |
Dir.chdir(File.dirname(File.expand_path($0)).sub(/^\w:/, ""))
|
正: |
Dir.chdir(File.dirname(File.expand_path($0)).sub(/^(\w):/){"//#{$1}"}
)
|
-
p291の4行目
[2001/03/25 00:45:12]
誤: |
Ruby公式サイト
http://www.ruby.org/
|
正: |
Ruby公式サイト
http://www.ruby-lang.org/
|
-
p292の「・DirectDraw for Ruby」
[2001/03/29 18:01:35]
前のページにも同じものがあるので取り除く。
-
p292のRubyMIDIのURL
[2001/03/29 18:02:32]
誤: |
http://www.yoshidam.net/Ruby_ja.html#rddraw
|
正: |
http://member.nifty.ne.jp/guion/SOFT/INDEX.HTM#rubymidi
|
-
p299のCUIの説明
[2001/03/29 15:43:06]
-
p301
[2001/04/15 15:22:39]
-
p302
[2001/04/15 15:24:37]
-
p302
[2001/04/15 15:25:59]
-
p302
[2001/04/15 15:25:50]
-
p304のUNIXのtarの説明
[2001/03/29 15:41:19]