K.Maebashi's BBS

ご自由に書き込んでください。雑談も可。
テスト書き込みの類はテスト用掲示板にどうぞ

[日付順表示] [日付順インデックス] [スレッド順インデックス]

新規投稿 | 開設者ホームページへ戻る | ヘルプ

[2022] Re:『Java謎+落とし穴徹底解明』の正誤について
投稿者:(ぱ)こと管理人
2017/11/16 01:05:52

>と (あるいは、いっそ adjustBoundary() の中身を resize() に移動) されなかったのは >どうしてかと思いまして。 adjustBoundary() は意味的に引数をとるような処理ではないし、 > resize() では今後の拡張次第で別の処理もありうるがこのバージョンでは >adjustBoundary() だけ、ということなのでしょうか……。 resize()はリサイズですし、adjustBoundary()は範囲合わせなので別の名前で 別のメソッドにするのが自然なように思います。 確かにこのケースでは、resize()の時しかadjustBoundary()は呼びませんが、 たとえば私が大昔に作ったこちらのプログラム http://kmaebashi.com/programmer/serializer/draw.html では、ZoomやPanの機能があります。このプログラムでは、Zoom時は 別ウインドウが開くのでちょっと特殊ですが、 ・マウスで長方形を指定すると、その範囲がウインドウ全体になるように  拡大されるZoom機能。 ・マウスで座標を指定するとその位置が中心になるように移動するPan機能。 といったものを考えると、 「ワールド座標系で範囲を設定し、adjustBoundary()を呼び出せばけりがつく」 というのは、悪くない方針のように思います。 ただ、そういう意味だと、むしろ「ワールド座標系で範囲を設定し…」の部分が 「事前に変数に値を設定しておく」というグローバル変数渡しまがいで 気持ちが悪いので、むしろadjustBoundary()にはxmin, ymin, xmax, ymaxを 引数として渡すべきだったかな、と思わなくはないですが、 それはそれでウインドウサイズを変えた時にはデバイス座標系での領域変更が 起点になるわけで、では入口のメソッドとしてデバイス座標系起点のadjustBoundaryByDc()とワールド座標系起点のadjustBoundaryByWc()を作って 前者にはwidth, heightを、後者にはxmin, ymin, xmax, ymaxを渡そうか、 とか考え始めるときりがないですね。 まあ、このあたりは、何が正解とも言えない話なのではないかと思います。
[この投稿を含むスレッドを表示] [この投稿を削除]
[2021] Re:『Java謎+落とし穴徹底解明』の正誤について
投稿者:藤四郎
2017/11/13 19:04:42

貴重なお時間を割いていただき、改めてありがとうございます。 >JLSから引用するのに勝手に変えるわけにもいかずにこうしたのではないかと >思います(記憶の彼方ですが…)。 >ここはこのままとさせてください。 了解しました。 >>X-Draw のソースで DrawWindow.java の l. 110 - >> public void mouseDown(int x, int y) {} >> public void mouseUp(int x, int y) {} >> public void mouseDrag(int x, int y) {} >>は不要と思われます。 > >本当ですね。この手の空メソッドはインタフェースにあるシグネチャのうち >不要なものについて書くのが普通ですが、それにしてもメソッド名から違うので、 >なぜあるのか不明です。正誤表に載せておきます。 僭越ながら、 java.awt.Component に public boolean mouseDown(Event evt, int x, int y) Deprecated. As of JDK version 1.1, replaced by processMouseEvent(MouseEvent). というのはあるので、古い版の X-Draw のがまぎれこんでいたのかもしれません。 >>あと、 l. 164 - >> public void resize(int width, int height) { >> this.adjustBoundary(); >> } >>ですが、今後の拡張を見込んでこのようにされたのでしょうか。 > >このメソッドは普通に呼ばれていますし、試しに処理を抜いてみたら、 >倍率の計算がされずに何も描かれないので、必要なのではないでしょうか。 すみません、言葉足らずすぎでした。 XDrawCanvas.java の l. 39 - で Dimension d = getSize(); drawWindow.resize(d.width, d.height); また、 DrawWindow.java の l. 96 - で private void adjustBoundary() { Dimension canvasSize = canvas.getSize(); double xScale = canvasSize.width / (this.xMax - this.xMin); double yScale = canvasSize.height / (this.yMax - this.yMin); となっているのは、一見 getSize() の二度手間に思えます。つまり、 private void adjustBoundary(int width, int height) { double xScale = width / (this.xMax - this.xMin); double yScale = height / (this.yMax - this.yMin); // ... } public void resize(int width, int height) { this.adjustBoundary(width, height); } と (あるいは、いっそ adjustBoundary() の中身を resize() に移動) されなかったのはどうしてかと思いまして。 adjustBoundary() は意味的に引数をとるような処理ではないし、 resize() では今後の拡張次第で別の処理もありうるがこのバージョンでは adjustBoundary() だけ、ということなのでしょうか……。 ところで、 p. 228 「別の方法」についてもお伺いしたいことがありますけれども、長くなるので別稿にて。 あと、自分の投稿 http://kmaebashi.com/bbs/list.php?boardid=kmaebashibbs&from=2017&range=1 につっこみですが shape.accept(new DrawVisitor(this.drawWindow)); ここは while ループ内なのでここで new するのは効率的にまずいですね。
[この投稿を含むスレッドを表示] [この投稿を削除]
[2020] Re:『Java謎+落とし穴徹底解明』の正誤について
投稿者:(ぱ)こと管理人
2017/11/13 01:15:51

週末に返信と言っておきながら日付が変わってしまいました。 遅くなりまして申し訳ありません。 >p. 147 の英文で [emphasis is in the original text] とあるのが反映されていません。 英語版の方で強調部分が太字になっていないということですね。 正誤表に載せておきます。 >また、和訳の方で「どのオブジェクトも参照しない特殊なnull参照」に相当する英文がないです。 この「どのオブジェクトも参照しない特殊なnull参照」という文言は、 JLSには含まれていて、日本語部分はそこから持ってきています。 このFAQのオリジナルの文章をWayback Machineから発掘したところ 「are pointers to these objects."」までで止まっていますが、 JLSから引用するのに勝手に変えるわけにもいかずにこうしたのではないかと 思います(記憶の彼方ですが…)。 ここはこのままとさせてください。 >X-Draw のソースで DrawWindow.java の l. 110 - > public void mouseDown(int x, int y) {} > public void mouseUp(int x, int y) {} > public void mouseDrag(int x, int y) {} >は不要と思われます。 本当ですね。この手の空メソッドはインタフェースにあるシグネチャのうち 不要なものについて書くのが普通ですが、それにしてもメソッド名から違うので、 なぜあるのか不明です。正誤表に載せておきます。 >あと、 l. 164 - > public void resize(int width, int height) { > this.adjustBoundary(); > } >ですが、今後の拡張を見込んでこのようにされたのでしょうか。 このメソッドは普通に呼ばれていますし、試しに処理を抜いてみたら、 倍率の計算がされずに何も描かれないので、必要なのではないでしょうか。 > p.227 の interface Visitor の三つのシグネチャーの頭に void がいるかと。 その通りです。正誤表に載せておきます。 また、 p.228 の > v.visitPolyline(polyline); >は実際には > v.visitPolyline(this); >になるかと。 こちらもその通りです。正誤表に載せておきます。 >ただ、またいまごろきづいてしまいましたが、 p. 228 l. 7 > visitPolyline(), visitCircle, visitRectangle こちらもその通りです。正誤表に載せておきます。 いろいろご指摘ありがとうございました。 >ちなみに、つぎのようにかきましたが、これで適当でしょうか。 >(Polyline たちから draw() を排除するかわりに getter を >いれなければならなくなったのがどうも……。) 描画をPolyline等ではなくDrawVisitorで行うようにしたのですから、 DrawVisitorに対し中身を開示しなければ描画できないというのは、 まあ、しょうがないですよね。 実際問題として、PolylineのようなCでいうところの構造体的なクラスが 外部に中身を開示しないというのは無理があるのではないかなあ、と、 この例を見ても思います。
[この投稿を含むスレッドを表示] [この投稿を削除]
[2019] Re:『Java謎+落とし穴徹底解明』の正誤について
投稿者:藤四郎
2017/11/08 20:53:59

大変お忙しい中、おそれいります。こちらはまったく急ぎませんので、ご都合のよろしいときにご対応いただければ幸いです。 ただ、またいまごろきづいてしまいましたが、 p. 228 l. 7 visitPolyline(), visitCircle, visitRectangle 後二者に "()" がないので、こちらもよろしくお願いします。
[この投稿を含むスレッドを表示] [この投稿を削除]
[2018] Re:『Java謎+落とし穴徹底解明』の正誤について
投稿者:(ぱ)こと管理人
2017/11/08 08:27:48

ご指摘ありがとうございます。ちょっとどたばたしておりまして対応が遅れておりまして申し訳ありません。 週末にはご回答いたします。
[この投稿を含むスレッドを表示] [この投稿を削除]
[2017] Re:『Java謎+落とし穴徹底解明』の正誤について
投稿者:藤四郎
2017/11/05 20:16:43

おくればせながら、正誤表の追加とソースの訂正、ありがとうございました。おそれいりますが、またいくつかきづいてしまいましたので、ふたたびご面倒をおかけします。今回も当方の勘違いがありましたらお許しください。 (才能に乏しいようでなかなか理解がすすみませんが、趣味としてこつこつやっております。) まずは、またもや細かいことですみませんが……。 p. 147 の英文で [emphasis is in the original text] とあるのが反映されていません。和訳の方はされています。また、和訳の方で「どのオブジェクトも参照しない特殊なnull参照」に相当する英文がないです。 X-Draw のソースで DrawWindow.java の l. 110 - public void mouseDown(int x, int y) {} public void mouseUp(int x, int y) {} public void mouseDrag(int x, int y) {} は不要と思われます。 あと、 l. 164 - public void resize(int width, int height) { this.adjustBoundary(); } ですが、今後の拡張を見込んでこのようにされたのでしょうか。 3.6.7 「本当にdraw()をShapeに入れてよいのか?」が、コードを実地にかいてみることでようやくわかってきました。それできづいたのですが、 p.227 の interface Visitor の三つのシグネチャーの頭に void がいるかと。また、 p.228 の v.visitPolyline(polyline); は実際には v.visitPolyline(this); になるかと。 ちなみに、つぎのようにかきましたが、これで適当でしょうか。(Polyline たちから draw() を排除するかわりに getter をいれなければならなくなったのがどうも……。) class Polyline extends Shape { private Point2D[] points; Polyline(Point2D[] points) { this.points = points; } public Point2D[] getPoints() { return this.points; } void accept(Visitor v) { v.visitPolyline(this); } } // Circle, Rectangle は略 class DrawVisitor implements Visitor { Drawable drawable; DrawVisitor(Drawable drawable) { this.drawable = drawable; } public void visitPolyline(Polyline polyline) { Point2D[] points = polyline.getPoints(); for (int i = 0; i < points.length - 1; i++) { drawable.drawLine(points[i].getX(), points[i].getY(), points[i + 1].getX(), points[i + 1].getY()); } } // visitCircle(), visitRectangle() は略 } XDrawCanvas の paint() の shape.draw(this.drawWindow); を shape.accept(new DrawVisitor(this.drawWindow)); に変更。 その他、まだ消化しきれていないこともありますので、今後もご面倒をおかけしてしまうかもしれませんが、どうぞよろしくお願いします。
[この投稿を含むスレッドを表示] [この投稿を削除]
[2016] Re:P.124の補足について
投稿者:くまきち
2017/10/14 22:48:49

毎回、ご回答ありがとうございます。 引き続き熟読させて頂きます。
[この投稿を含むスレッドを表示] [この投稿を削除]
[2015] Re:P.124の補足について
投稿者:くまきち
2017/10/14 22:47:04

了解いたしました。 よろしくお願い致します。
[この投稿を含むスレッドを表示] [この投稿を削除]
[2014] Re:testbbs_jsp2について
投稿者:(ぱ)こと管理人
2017/10/11 01:30:35

>ソースファイルを見ると、16行目の”<!--”に対応した”//-->”が見当たりません。 >これは省略可能ということでしょうか? 「//-->」がないのは、単純に付け忘れです。申し訳ありません。 ただ、これがなくても動くのは、「<!--」「//-->」の趣旨が、 ・もともと<script>タグの中に「<!--」「-->」を書くのは、<script>タグに  対応していない古いブラウザで、JavaScriptが表示されてしまうことを  防ぐためのものである(古い対策なので、今こんなのを書く必要はないと思いますが)。 ・このため、<script>タグ内の冒頭の「<!--」から改行までは無視されることになっている。  http://www.asahi-net.or.jp/~sd5a-ucd/rec-html401j/interact/scripts.html#h-18.2.1  | JavaScriptエンジンは、SCRIPT要素の始めに文字列「<!--」が存在することを  | 許容し、この場合当該行の末尾までの文字を無視する。 ・このコメントを閉じる「-->」は、JavaScriptとして解釈されないように  「//-->」としてコメントアウトする。 というものであるためで、<script>タグに対応していない古いブラウザなら 「<!--」に対応する「-->」がないとコメントが閉じなくて困るでしょうが、 <script>タグに対応したブラウザなら、最初から「<!--」自体無視するので、 閉じてなくても問題にはなりません。 とはいえミスはミスなので、先ほどの件と併せ、正誤表に入れさせていただきます。
[この投稿を含むスレッドを表示] [この投稿を削除]
[2013] Re:P.124の補足について
投稿者:(ぱ)こと管理人
2017/10/11 01:21:15

>P.124の補足に「GETのパラメタもPOSTのパラメタも、URLデコードしないまま・・・」とありますが、P112の52行目でGETのパラメタはURLデコードされているわけではないのでしょうか? すみません、もう記憶はあいまいなのですが、p.112の52行目におけるURLデコードは、 UTF-8固定でデコードしているところからして、ディレクトリ名やファイル名を デコードして正しくファイルを開くためのものです(Modoki/0.2で実装したものです)。 ここで、クエリストリング部分までデコードしてしまっていますが、 クエリストリングはUTF-8でエンコードされているとは限らないので、 これをこの時点でデコードしているのは単純に不具合のように思います。 すみませんが確認しますので少しお時間をください。
[この投稿を含むスレッドを表示] [この投稿を削除]
[2012] testbbs_jsp2について
投稿者:くまきち
2017/10/10 00:21:18

お世話になっております。 たびたび質問させて頂いています。 今回は「testbbs_jsp2」について質問させてください。 ソースファイルを見ると、16行目の”<!--”に対応した”//-->”が見当たりません。 これは省略可能ということでしょうか? 本論とは関係ない初歩的な質問かも知れませんが、よろしければ回答頂ければと思います。 よろしくお願い致します。
[この投稿を含むスレッドを表示] [この投稿を削除]
[2011] 全く初歩の初歩
投稿者:kawashima
2017/10/09 11:40:19

サーバーを作るのとクライアントは同じパソコンだと思うのですが、どうも設定が上手くいきません。よろしくお願いします。
[この投稿を含むスレッドを表示] [この投稿を削除]
[2010] P.124の補足について
投稿者:くまきち
2017/10/08 23:49:22

お世話になってます。 質問があり、投稿させて頂きました。 P.124の補足に「GETのパラメタもPOSTのパラメタも、URLデコードしないまま・・・」とありますが、P112の52行目でGETのパラメタはURLデコードされているわけではないのでしょうか? ひょっとして基本的な事が分かっていないのかもしれませんが、よろしければ回答頂けたらと思います。 よろしくお願いいたします。
[この投稿を含むスレッドを表示] [この投稿を削除]
[2009] Re:Javaの実装の隠ぺいに関して
投稿者:beginner
2017/10/05 11:36:34

ご回答ありがとうございます。 非常に参考になりました。 DIについては軽い知識のみで深く考えたことなかったため、改めて勉強し直すきっかけになりそうです。
[この投稿を含むスレッドを表示] [この投稿を削除]
[2008] Re:Javaの実装の隠ぺいに関して
投稿者:(ぱ)こと管理人
2017/10/05 08:33:28

はじめまして。拙著を読んでいただきありがとうございます。 >しかし、Factory.java内で"import com.sample.libimpl.*"を記載せざるを得ません。 >何を気にしているかというと、Cで言えば、パブリックなヘッダに、プライベートなヘッダを書いているようなコードに見える点です。 >利用者から完全に~impl部分を隠ぺいする一般的な手法はあるのでしょうか。 これは確かにその通りなのですが、私はこれについては 「まあ、Factoryだけはしょうがない」 と考えています。 どこかで実装クラスが何であるかを明示しなければいけない以上、 そこでは実装側のパッケージをimportせざるを得ません。 # 「Java謎+落とし穴~」にどう書いたかと思って見返したら、 # 「実はここが頭の痛いところなのですが~」と書いてますね…… 利用者からさらに実装を隠蔽し、状況によって実装クラスを 差し替える手法として、Dependency Injectionという考え方もあります。 ただ、実装をあまり分離しすぎると、それはそれでわかりにくくなったりもします。 https://twitter.com/kudzu/status/862906043591925762 >DI使ってコード書いてるわし「こんな簡潔にモジュラーでテスタブルなコードが書ける!すごい!天才!」 > DI使った他人のコード読んでるわし「おい、これどこから呼ばれてんだよ。わかんねぇぞ。○すぞ。」
[この投稿を含むスレッドを表示] [この投稿を削除]
[2007] Javaの実装の隠ぺいに関して
投稿者:beginner
2017/10/04 09:56:29

はじめまして、前橋さんの各種書籍で一からからプログラミングの基礎体力づけをさせていただいています。 Javaを使った一般的なコードの書き方で疑問を抱いたことがございます。 下に適当な4つのサンプルプログラムを書きました。 mainを呼び出す利用者にimplの実装を隠ぺいすることを目的としています。 Factoryクラスを経由してインターフェースを返すようにしています。 しかし、Factory.java内で"import com.sample.libimpl.*"を記載せざるを得ません。 何を気にしているかというと、Cで言えば、パブリックなヘッダに、プライベートなヘッダを書いているようなコードに見える点です。 利用者から完全に~impl部分を隠ぺいする一般的な手法はあるのでしょうか。 もしよろしければ教えていただけますと大変助かります。 プログラミング初心者のため勘違い含んでいたりした場合大変恐縮です。 ================================== $ vi com/sample/Main.java package com.sample; import com.sample.lib.*; class Main{ public static void main(String[] args){ Another another = Factory.create(); another.hello(); } } ================================== $ vi com/sample/lib/Factory.java package com.sample.lib; import com.sample.libimpl.*; public class Factory{ public static Another create() { return new AnotherImpl(); } } ================================== $ vi com/sample/lib/Another.java package com.sample.lib; public interface Another { void hello(); } ================================== $ vi com/sample/libimpl/AnotherImpl.java package com.sample.libimpl; import com.sample.lib.*; public class AnotherImpl implements Another { public void hello(){ System.out.println("hello another class"); } } ==================================
[この投稿を含むスレッドを表示] [この投稿を削除]
[2006] 【業務連絡】しばらくドメインが停止していました
投稿者:(ぱ)こと管理人
2017/10/02 23:38:12

9/27の夜あたりから、kmaebashi.comにアクセスできない状態になっておりました。 ご迷惑をおかけしまして申し訳ありませんでした。 <原因> kmaebashi.comは、2004年2月頃に、TwodotsNetなる業者でレンタルサーバを 借りて、その際ドメインも取ったのですが、この業者は2005年4月に 倒産してしまいました。 http://kmaebashi.com/zakki/zakki0039.html#rentalserver その際、ドメインの連絡先メールアドレス(Tech Email)の更新を 怠っていたため、無効なメールアドレスだとしてレジストラが停止措置を 取ったとのことです。修正して復旧していただきました。 当方のミスにてご迷惑をおかけいたしました。 今後ともよろしくお願いいたします。
[この投稿を含むスレッドを表示] [この投稿を削除]
[2005] Re:『Java謎+落とし穴徹底解明』の正誤について
投稿者:(ぱ)こと管理人
2017/09/24 23:53:24

ご指摘の点、正誤表に記載しました。 >>7.3.1の直列化を使った「深いコピー」はある種裏技的なものなので、 >>ここでの「深いコピー」は、あくまで6.5のものを意味しています。 > >お言葉を返すようで恐縮ですが、直列化を使った「深いコピー」は7.3.2で説明され、7.3.1ではその前振りとしてclone()での「深いコピー」の具体的コーディング例が載っています。そして、6.5にはclone()での「深いコピー」の具体的方法の記述は見当たらないようです――というのが私の理解なのですが…。それこそこちらの勘違いでしたら、本当にすみません。 > おっしゃるとおりです。確かに、6.5.ではclone()の実装方法について説明はしていますが、 それは「深いコピー」ではありませんでした。 7.3自体が裏技の説明なので、そこを参照というのも妙な気がしますが、 7.3.1にしか深いコピーの具体的実装はないですね…… 正誤表にはそのように記載しました。ご指摘ありがとうございました。
[この投稿を含むスレッドを表示] [この投稿を削除]
[2004] Re:『Java謎+落とし穴徹底解明』の正誤について
投稿者:藤四郎
2017/09/22 21:34:17

ご返信ありがとうございます。 >15年も前の本ですが、色々ご指摘ありがとうございます。 >次の週末に正誤表に掲載いたします。 私は誤解やら勘違いやらをしょっちゅうやらかす人間なので、ほとんどをご確認いただけて安堵しました。お忙しい中お手数おかけして恐縮ですが、いまなお精読するに値する本だと思うので、よろしくお願いします。 >7.3.1の直列化を使った「深いコピー」はある種裏技的なものなので、 >ここでの「深いコピー」は、あくまで6.5のものを意味しています。 お言葉を返すようで恐縮ですが、直列化を使った「深いコピー」は7.3.2で説明され、7.3.1ではその前振りとしてclone()での「深いコピー」の具体的コーディング例が載っています。そして、6.5にはclone()での「深いコピー」の具体的方法の記述は見当たらないようです――というのが私の理解なのですが…。それこそこちらの勘違いでしたら、本当にすみません。 こちらこそ、ありがとうございます。
[この投稿を含むスレッドを表示] [この投稿を削除]
[2003] Re:『Java謎+落とし穴徹底解明』の正誤について
投稿者:(ぱ)こと管理人
2017/09/21 00:56:22

はじめまして。反応が遅くなりまして申し訳ありません。 15年も前の本ですが、色々ご指摘ありがとうございます。 次の週末に正誤表に掲載いたします。 1点だけ。 >p.99 4行目 >その方法については「6.5 clone()とCloneable」で説明します. >→ 「その」が「深いコピー」を指すのなら、それは7.3.1で説明されているような…。 7.3.1の直列化を使った「深いコピー」はある種裏技的なものなので、 ここでの「深いコピー」は、あくまで6.5のものを意味しています。 >p.340 33行目(下から3行目) >FactoryTestImpl >→ あるいは私の理解が足りないだけかもしれません。しかし、これを直前の段落にあるWindowTestImplに置換すれば理解したつもりになれるのですが…。 ここはWindowsTestImplが正しいです。これが理解の妨げになっておりましたら 申し訳ありません。 ありがとうございました。
[この投稿を含むスレッドを表示] [この投稿を削除]
[2002] 『Java謎+落とし穴徹底解明』の正誤について
投稿者:藤四郎
2017/09/16 21:07:59

はじめまして。 『Java謎+落とし穴徹底解明』は改訂も増刷もされていないのがとても残念です。現行のJavaでは本書で指摘されていた問題点の多くは改善されているらしいですが、本質的な理解を得るのに本書はまだまだ「現役」ではないかと素人ながら思います。(ただ、3.6.7や7.1は、相応の開発経験のない私には、まだしっくり理解できません。) さて、まだそちらの正誤表に載っていない事項を見つけたと思いました。重箱の隅的なものばかりで単に煩わしいかもしれませんが、報告させていただきます。(第4刷) p.37 3行目 fillPatternCodeで指定される色 → fillPatternCodeで指定される中塗りパターン p.74 8行目 ことにになり, p.90 12行目 p2 = new Point(); → Point2D() p.99 4行目 その方法については「6.5 clone()とCloneable」で説明します. → 「その」が「深いコピー」を指すのなら、それは7.3.1で説明されているような…。 p.104 Fig.2.14 1 2 3 4 → 0 1 2 3 p.166 下から2行目 elseif p.203 NOTE IntStackがIntArrayの一部であり → 「IntStackはIntArrayを持っている」ので「IntArrayがIntStackの一部であり」かと思います。 p.212 Fig.3.16 Polyine p.213 List 3.24 XDrawApplet.java l.25 "Polyine" p.214 List 3.30 ShapeIterator.java → 誤りではないですが、 4.2.4 (p.246) との整合性からpublicはないほうがよいのでは? Drawableなどの他のinterfaceではpublicされてないですし…。 p.217 List 3.34 DrawWindow.java l.24, 27 scale → 誤りではないですが、他の箇所ではthis.scaleとされています。 p.217 List 3.34 DrawWindow.java l.126, 143, 151, 158 dcToWcX(e.getX()), dcToWcX(e.getY())); → dcToWcX(e.getX()), dcToWcY(e.getY())); // こちらも、 xMin, yMinを 0にしているため発現しませんが。 p.225 1行目 finish() → finishCommand() p.240 Fig4.3 CLASSPAHT p.340 33行目(下から3行目) FactoryTestImpl → あるいは私の理解が足りないだけかもしれません。しかし、これを直前の段落にあるWindowTestImplに置換すれば理解したつもりになれるのですが…。 p.350 } catch (Exception ex) { err.printStackTrace(); p.354 List 7.1 l.1 import java.security.*; → 不要と思われます。 p.355 1行目 SecurityManagerのgetStackTrace()メソッドは → SecurityManagerのgetClassContext()メソッドは p.357 22行目 兼ね合いもなどある p.365 1行目 Colorというフィールド
[この投稿を含むスレッドを表示] [この投稿を削除]
[2001] Re:P.17:終了のマークとして0を送付について
投稿者:(ぱ)こと管理人
2017/08/23 19:06:08

>一方、TcpServerがserver_send.txtを送る際は、終了のマークとして0を送っていませんし、さらに‐1も送っていませんが、TcpClient側は‐1の受信で受信の終了を認識しています。 TcpClient.javaは、InputStremのread()メソッドで入力を1バイトずつ 読み込んでいますが、read()メソッドは、正常に1バイト読み込んだ時、 0~255の値を返します。つまり、TcpClientが-1を受信するということは あり得ません。-1が返るのは、「ストリームの終わりに達した場合」です。 https://docs.oracle.com/javase/jp/6/api/java/io/InputStream.html#read() なぜクライアントから見てストリームが終わるのかといえば、それは サーバ側でソケットをclose()したからです。 TcpClient.javaにて、終了のマーク0を送信しているのは、このソケットは まだサーバからデータを返すのに使うので、このタイミングでclose()するわけには いかないからです。 これで回答になっておりますでしょうか?
[この投稿を含むスレッドを表示] [この投稿を削除]
[2000] P.17:終了のマークとして0を送付について
投稿者:くまきち
2017/08/21 00:29:24

お世話になっております。 疑問に思った点があり、また質問させて頂きます。 P.16のTcpClient(リスト1-2)では、client_send.txtを送る際、終了のマークとして0を送付することで、P.15のTcpServer(リスト1-1)側は、受信の終了を認識しています。 一方、TcpServerがserver_send.txtを送る際は、終了のマークとして0を送っていませんし、さらに‐1も送っていませんが、TcpClient側は‐1の受信で受信の終了を認識しています。 この違いは、どこから来るものでしょうか? server側とClient側の仕組みの違いからくるものでしょうか?それとも、受信と送信の順番の違いからくるものでしょうか? またまた初歩的な質問なのかも知れませんが、よろしくお願いいたします。
[この投稿を含むスレッドを表示] [この投稿を削除]
[1999] Re:TestBBS.javaについて
投稿者:(ぱ)こと管理人
2017/08/17 23:11:10

>お世話になっております。 >P.108の最終行に「このメソッドはTestBBS.javaでは使用していません。」と記載がありますが、この”TestBBS.java”が、どのソースコードを意味するものなのか分からず、質問させて頂きました。 申し訳ありません。誤植(というか修正ミス)のようです。 元になったWeb記事 http://kmaebashi.com/programmer/webserver/henacat.html では、ShowBBS.javaとPosBBS.javaをまとめてTestBBS.javaというソースに 含めていました。 ただし、Javaでは1クラス1ファイルが普通なので、書籍化する際に分離したのですが、 この部分について修正が漏れておりました。 よってこの部分は、「このメソッドはサンプル掲示板では使用していません」に 読み替えてください。 正誤表に載せておきます。
[この投稿を含むスレッドを表示] [この投稿を削除]
[1998] TestBBS.javaについて
投稿者:くまきち
2017/08/15 22:52:03

お世話になっております。 P.108の最終行に「このメソッドはTestBBS.javaでは使用していません。」と記載がありますが、この”TestBBS.java”が、どのソースコードを意味するものなのか分からず、質問させて頂きました。 よろしくお願いいたします。
[この投稿を含むスレッドを表示] [この投稿を削除]
[1997] Re:URLエンコードについて
投稿者:くまきち
2017/08/05 23:06:10

回答、ありがとうございます。 下記の回答内容を見ながらP.76まで読み進めてみて理解することができました! また、質問させていただくかも知れませんが、よろしくお願いいたします。 >>P.63からの「URLエンコードに対応する」の説明で理解できない部分があり、投稿させて頂きました。 >>P.64の上から2行目に、元の文字列の文字コードによって(例えば、Shift-Jisか、UTF-8か、EUCかによって)、エンコード結果が異なると書いてあります。 >>一方で、同じページのもう少し下の部分には「IEやFireFoxともにUTF-8でエンコードしたものを…」と記載があります。 >>これは「元の文字列の文字コードによって」という部分と矛盾するように感じ、よく分からなくなりました。 >>また、P.65の補足(下)でも、Shift-Jisとしてエンコードする例があり、ますます混乱しています。 > >返信が遅くなりまして申し訳ありません。 > >p.64冒頭にあるように、URLエンコードは、『元の文字列をバイト単位で解釈し、 >「%」の後ろにその16進表記をつなげたもの』です。よって、元の文字列を >どのエンコーディング(文字コード)で解釈するかにより結果は変わります。 >JavaのURLEncoderやURLDecoderのようなクラスライブラリで、エンコードするときも >デコードするときもエンコーディングを指定しなければいけないのは、そのためです。 >WebサイトでURLエンコード/デコードの機能を提供しているページもよくありますが、 >そういうページでも、たいては文字コードが選べるようになっていると思います。 > >その上で、各ブラウザがどのエンコーディング(文字コード)でURLエンコードするかに >ついては、W3Cで定められており、それがUTF-8である、ということです。 > >これで回答になっていますでしょうか? >
[この投稿を含むスレッドを表示] [この投稿を削除]
[1996] Re:URLエンコードについて
投稿者:(ぱ)こと管理人
2017/08/04 20:54:02

>P.63からの「URLエンコードに対応する」の説明で理解できない部分があり、投稿させて頂きました。 >P.64の上から2行目に、元の文字列の文字コードによって(例えば、Shift-Jisか、UTF-8か、EUCかによって)、エンコード結果が異なると書いてあります。 >一方で、同じページのもう少し下の部分には「IEやFireFoxともにUTF-8でエンコードしたものを…」と記載があります。 >これは「元の文字列の文字コードによって」という部分と矛盾するように感じ、よく分からなくなりました。 >また、P.65の補足(下)でも、Shift-Jisとしてエンコードする例があり、ますます混乱しています。 返信が遅くなりまして申し訳ありません。 p.64冒頭にあるように、URLエンコードは、『元の文字列をバイト単位で解釈し、 「%」の後ろにその16進表記をつなげたもの』です。よって、元の文字列を どのエンコーディング(文字コード)で解釈するかにより結果は変わります。 JavaのURLEncoderやURLDecoderのようなクラスライブラリで、エンコードするときも デコードするときもエンコーディングを指定しなければいけないのは、そのためです。 WebサイトでURLエンコード/デコードの機能を提供しているページもよくありますが、 そういうページでも、たいては文字コードが選べるようになっていると思います。 その上で、各ブラウザがどのエンコーディング(文字コード)でURLエンコードするかに ついては、W3Cで定められており、それがUTF-8である、ということです。 これで回答になっていますでしょうか?
[この投稿を含むスレッドを表示] [この投稿を削除]
[1995] URLエンコードについて
投稿者:くまきち
2017/07/30 16:59:05

P.63からの「URLエンコードに対応する」の説明で理解できない部分があり、投稿させて頂きました。 P.64の上から2行目に、元の文字列の文字コードによって(例えば、Shift-Jisか、UTF-8か、EUCかによって)、エンコード結果が異なると書いてあります。 一方で、同じページのもう少し下の部分には「IEやFireFoxともにUTF-8でエンコードしたものを…」と記載があります。 これは「元の文字列の文字コードによって」という部分と矛盾するように感じ、よく分からなくなりました。 また、P.65の補足(下)でも、Shift-Jisとしてエンコードする例があり、ますます混乱しています。 もしかしたら初歩的な質問なのかもしれませんが、詳しい方いましたら、教えてください。
[この投稿を含むスレッドを表示] [この投稿を削除]
[1994] Re:HenacatのC#版を作りました
投稿者:nendo_code
2017/07/12 22:57:45

下記に公開しました。 https://github.com/nendo-code/Henacat_sharp ありがとうございました。
[この投稿を含むスレッドを表示] [この投稿を削除]
[1993] Re:HenacatのC#版を作りました
投稿者:nendo_code
2017/07/12 19:34:43

>まったく問題ありません。どのようなものになっているか私も楽しみです。 > >よろしくお願いいたします。 ありがとうございます! 公開しましたらこちらの掲示板で報告させていただきますね。
[この投稿を含むスレッドを表示] [この投稿を削除]