K.Maebashi's BBS

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

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


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


[2115] 無題
返信


投稿者:ポインタ完全制覇(第2版)の258ページ106行目if(line == NULL)
2018/03/27 22:15:49

Link:
ポインタ完全制覇(第2版)の258ページのread_line()の106行目
if(line == NULL) は、if(*line == NULL) の間違えではないでしょうか?
*line = mallocでメモリ割り当てているので、*lineのチェックをするべきではないでしょうか?
[ この投稿を含むスレッドを表示] [ この投稿を削除]



[2114] Re:鬼車をダウンロードのURLはアクセスできない〜
返信


投稿者:(ぱ)こと管理人
2018/03/09 00:45:08

Link:
>掲題の件ですが、中国からアクセスすると、下記のエラーになりました。

ご指摘ありがとうございます。私のところからも同じエラーになるので、
中国関係なく、鬼車のWebページが消えていますね……

今はGitHubに移転しているのでしょうか。後ほど(週末ぐらいに)注記を
入れておきます。
[ この投稿を含むスレッドを表示] [ この投稿を削除]



[2113] 鬼車をダウンロードのURLはアクセスできない〜
返信


投稿者:土豆
2018/03/06 15:32:38

Link:http://kmaebashi.com/programmer/devlang/book/oniguruma.html
掲題の件ですが、中国からアクセスすると、下記のエラーになりました。
「ページを表示できません:申し訳ありませんが、アクセスされたページは現在ご利用いただけなくなっています。」
[ この投稿を含むスレッドを表示] [ この投稿を削除]



[2112] Re:P.124の補足について
返信


投稿者:(ぱ)こと管理人
2018/03/06 01:02:25

Link:
>申し訳ありませんが、念のため確認させてください。
>下記の件の結論は、どうなったのでしたっけ?

あれ、ここに書き忘れていたようです。
以下の通り正誤表に挙げてありました。

http://kmaebashi.com/webserver/seigo.html#p112
[ この投稿を含むスレッドを表示] [ この投稿を削除]



[2111] Re:P.124の補足について
返信


投稿者:くまきち
2018/03/04 09:34:41

Link:
申し訳ありませんが、念のため確認させてください。
下記の件の結論は、どうなったのでしたっけ?
スレッドに残っていないようだったので。
申し訳ありませんが、確認して頂けたらありがたいです。


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



[2110] Re:serialVersionUID について
返信


投稿者:(ぱ)こと管理人
2018/02/26 01:28:16

Link:
>「//拡張子とContent-Typeの対応表」の部分について、P.70にあるリスト2-11では49行目に
>
> private static final long serialVersionUID = 1L;
>
>という行がありますが、A-22にはありません。
>これは、どのような違いがあってのことでしょうか?可能であれば、そもそも
>「serialVersionUID 」とは何かも教えて頂けるとありがたいです!

serialVersionUIDは、シリアライズするクラスのバージョンを示すためのものです。

Javaだとシリアライズ機能でオブジェクトの内容をファイルに保存したりできますが、
プログラム側のバージョンが上がってクラスにメンバが増えたりした(かつ、そのメンバの
値がデフォルト値ではいけなくて、readObject()によるカスタマイズでも対応しないとか
細かい条件はありますが)場合は、バージョンアップ前のプログラムで保存したデータは
バージョン違いで読み込めないということになります。

serialVersionUIDは、シリアライズするときに、そのクラスのバージョンを
示すためのものです(バージョンが違うと、デシリアライズ時にエラーになります)。
指定しなくても構いませんが、これを指定しないと、Eclipseでは警告が出たりします。

「private static final long serialVersionUID = 1L;」と書いておけば
警告は抑止できますが、シリアライズを扱っているわけでもない入門書で
余計なコードを入れるのもよろしくないかと思い、本書のサンプルコードでは
基本これは書いていない――はずなのですが、リスト2-11では、Eclipseに
うっかり自動生成されたのが残ってしまったのかと思います。
[ この投稿を含むスレッドを表示] [ この投稿を削除]



[2109] Re:リストA-19の ”if (ct == null)” について
返信


投稿者:(ぱ)こと管理人
2018/02/26 01:09:23

Link:
>これは、”ct == null”の場合は、その値をparameterMapに含めないということでしょうか?
>また、これはアップロードファイルなどが指定された場合に起こるものでしょうか?

multipart/form-dataのPOSTメソッドでどのようなものが送られてくるのかについては、
p.87のリスト3-4に記載しています。

これを見ると、アップロードファイルが指定された場合に、Content-Typeが
付いていることがわかります。
そして、ファイルアップロードの場合、つまりContent-Typeがnullでない場合には、
その内容をgetParameter()で取得することはできないので、その値をparameterMapに
含めないようにしています。
[ この投稿を含むスレッドを表示] [ この投稿を削除]



[2108] serialVersionUID について
返信


投稿者:くまきち
2018/02/25 22:24:30

Link:
『基礎からのWebアプリケーション開発入門』のP.280にあるリストA-22について質問させてください。 
「//拡張子とContent-Typeの対応表」の部分について、P.70にあるリスト2-11では49行目に

 private static final long serialVersionUID = 1L;

という行がありますが、A-22にはありません。
これは、どのような違いがあってのことでしょうか?可能であれば、そもそも「serialVersionUID 」とは何かも教えて頂けるとありがたいです!
よろしくお願いいたします。
[ この投稿を含むスレッドを表示] [ この投稿を削除]



[2107] リストA-19の ”if (ct == null)” について
返信


投稿者:くまきち
2018/02/24 22:54:22

Link:
『基礎からのWebアプリケーション開発入門』のP.277にあるリストA-19について質問させてください。

38行目に”if (ct == null) {”という行があります。
これは、”ct == null”の場合は、その値をparameterMapに含めないということでしょうか?
また、これはアップロードファイルなどが指定された場合に起こるものでしょうか?

どこかに書いてあるかもしれないですが、探しきれず質問させて頂きました。。
申し訳ありませんが、よろしくお願いいたします。
[ この投稿を含むスレッドを表示] [ この投稿を削除]



[2106] Re:リストA-13の ”〜Impl” について
返信


投稿者:(ぱ)こと管理人
2018/02/18 13:16:18

Link:
>せっかく抽象型を用意しているのであれば、ここは抽象型の変数定義にするのではと
>思ったのですが、サブクラスの変数定義を使用している理由があれば、
>教えて頂きたいです。

これは私の流儀であって、Javaでの一般的な書き方かというとそうでもないかも
しれませんが、私は、Javaでパッケージを分ける規模のプログラムを書くときは、
パッケージ単位でインタフェースと実装を分けるようにしています。
たとえばHttpServletRequestクラスであれば、インタフェースを
com.kmaebashi.henacat.servletに、実装を
com.kmaebashi.henacat.servletimplに置いています。

そして、HttpServletRequestの利用者(この場合はサーブレットのプログラムを書く人)
にはインタフェース側だけをimportしてもらうようにします。Cookieのような
簡単なクラスを除き、インタフェース側のパッケージには実装は置きません。

こうすることで、利用者にとっては、インタフェース側のパッケージは
ほぼAPIドキュメントのようなものになりますし、実装が「作りかけ」の
状態でも、利用者側のプログラムのコンパイルまではできるようになったりします。
公式のサーブレットAPI(javax.servlet)も、利用者には(Cookieのような
簡単なクラスを除き)ほぼインタフェースしか公開していないのは、
同じような考え方に基づくものだと私は思っています。

こういう観点でインタフェースと実装のパッケージを分けているわけですが、
そう考えたとき、実装側のパッケージ内でインタフェースの方の型で変数定義
することに、どれほどの意味があるでしょうか。
実装側のパッケージ内では、インタフェースとしては公開していないメソッドや、
publicではないフィールドを参照することもあり得ます。そのたびにダウンキャスト
するぐらいなら、最初から実装側のクラスにしておくほうがマシではないかと思います。

servletimplという実装側のパッケージの内部で、むやみに実装隠蔽しようとしても
あまり意味はないかと思います。Javaのアクセス制御が、publicもprivateも
つけないデフォルト状態で、(C++やC#と違って)パッケージ内公開になっている、
というポリシーも、「パッケージ内での実装隠蔽はあまり意味がない」という
考えに基づくものではないでしょうか。
[ この投稿を含むスレッドを表示] [ この投稿を削除]



[2105] リストA-13の ”〜Impl” について
返信


投稿者:くまきち
2018/02/18 09:44:47

Link:
『基礎からのWebアプリケーション開発入門』のP.267にあるリストA-13について質問させてください。  

17行目や19行目の変数定義で”HttpSessionImpl”や”HttpServletResponseImpl”などスーパークラスではなくサブクラスの変数定義をしています。
せっかく抽象型を用意しているのであれば、ここは抽象型の変数定義にするのではと思ったのですが、サブクラスの変数定義を使用している理由があれば、教えて頂きたいです。

よろしくお願いいたします。
[ この投稿を含むスレッドを表示] [ この投稿を削除]



[2104] Re:リストA-13について
返信


投稿者:(ぱ)こと管理人
2018/02/03 22:12:52

Link:
>61行目について
>誤:data[0]
>正:data[i]

ご指摘ありがとうございます。
確認しましたが、ご指摘の通りのバグですね。複数件のケースのテストを
怠っていたようです。
正誤表に載せておきます。ありがとうございました。
[ この投稿を含むスレッドを表示] [ この投稿を削除]



[2103] リストA-13について
返信


投稿者:くまきち
2018/02/02 07:30:59

Link:
『基礎からのWebアプリケーション開発入門』のP.267にあるリストA-13について質問させてください。 
ちゃんと理解できていないかもしれないですが、もしかすると下記の誤りではないでしょうか?

61行目について
誤:data[0]
正:data[i]

ご確認、よろしくお願いいたします。
[ この投稿を含むスレッドを表示] [ この投稿を削除]



[2102] Re:第7章のTIPSについて
返信


投稿者:くまきち
2018/01/23 23:36:21

Link:
確かに。。
>http://localhost:8080/generatecsv/test.html
のように指定すればダウンロードできました。
お騒がせしました!


>>ただ、CSVダウンロードだけは、まさに
>>>C:\Tomcat8\webapps\generatecsv\test.html
>>に置いていたのですがダウンロードできませんでした。。
>>HTTPから指定するのが正式だと思うので、とりあえず気にしないことにしました!
>
>念のため確認ですが、test.htmlをそこに置いたというのはよいとして、
>参照はどのようにしましたか?
>
>http://localhost:8080/generatecsv/test.html
>
>として参照すればダウンロードできると思うのですが、
>もし、HTMLファイルをダブルクリックして開いていたらできませんので、
>一応確認です……
>
[ この投稿を含むスレッドを表示] [ この投稿を削除]



[2101] Re:第7章のTIPSについて
返信


投稿者:(ぱ)こと管理人
2018/01/18 00:41:05

Link:
>ただ、CSVダウンロードだけは、まさに
>>C:\Tomcat8\webapps\generatecsv\test.html
>に置いていたのですがダウンロードできませんでした。。
>HTTPから指定するのが正式だと思うので、とりあえず気にしないことにしました!

念のため確認ですが、test.htmlをそこに置いたというのはよいとして、
参照はどのようにしましたか?

http://localhost:8080/generatecsv/test.html

として参照すればダウンロードできると思うのですが、
もし、HTMLファイルをダブルクリックして開いていたらできませんので、
一応確認です……
[ この投稿を含むスレッドを表示] [ この投稿を削除]



[2100] Re:第7章のTIPSについて
返信


投稿者:くまきち
2018/01/14 06:38:59

Link:
ご回答頂き、ありがとうございました。

ただ、CSVダウンロードだけは、まさに
>C:\Tomcat8\webapps\generatecsv\test.html
に置いていたのですがダウンロードできませんでした。。
HTTPから指定するのが正式だと思うので、とりあえず気にしないことにしました!


>>>out.print((char)(ch & 0xffff));
>>
>>"& 0xffff"は何をしているのでしょうか?不要な制御情報を削除するなどの
>>用途があるのでしょうか?
>
>ここではint型のchをcharにキャストしているので、結果がcharの
>範囲に収まるよう、0xffffとの&を取っています。
>まあ、この場合、直前のif文で負でない保証がされていますし、
>InputStreamReader#read()の戻り値なので、あまり気にする必要は
>ないのかもしれませんが。
>
>>P.241 リスト7-3 36行目
>>dataOutを多次元配列として定義している理由がよく分かりませんでした。
>>一次元配列でも参照型変数となるので、呼び出され側で値を詰めることができるように
>>思います。
>
>1次元配列を上位でnewして渡し、呼び出され側で値を詰めてもらう、
>ということはできますが、その場合、newするには呼び出し側でサイズが
>わかっている必要があります。ここでは、呼び出し側ではサイズがわからないので、
>呼び出され側でnewした配列を参照型変数に格納して返すには、
>配列の配列(2次元配列)が必要になります。
>
>>とありますが、例えばP.226の補足に記載されているような最新投稿を表示する
>>ようなパーツが、
>>仮にテキストなどでは無く画像で最新記事を返す形式だったら、
>>XMLHttpRequestとか同一オリジンポリシーなど
>>考えなくても良いということでしょうか?
>
>そうなりますね。(JSONPだってその意味では抜け穴ですが)
>現状、例えば怪しいサイトのHTMLが社内イントラの画像をimgタグで抜き取ったとして、
>それを怪しいサーバに送ろうとするとHTML5のCanvasを使わなければならず(たぶん)、
>そちらでは別のオリジンから持ってきた画像はデータ化したりできないようにする等
>対策はされていると思いますけれども。
>
>>P.248 注3
>>csvダウンロードできませんでした。リンクを、
>>
>>><a href="/generatecsv/GenerateCSV">CSVダウンロード</a>
>
>HTMLファイルはどこに置きましたか?
>ここでは、
>C:\Tomcat8\webapps\generatecsv\test.html
>のような場所に置いてあることを想定しています。
>
>実際にアプリケーションを開発する際も、HTMLなりJSPなりを
>GenerateCSVと同じTomcatでホストしていれば、/generatecsv/GenerateCSVで
>見えると思います。
>
>>P.249 リスト7-8 5行目
>>下記が誤りのように思います。
>> 誤:"http://localhost/downloadtest/file.mp4;
>> 正:"http://localhost/downloadtest/file.mp4";;
>
>申し訳ありません。これは間違いですね。
>正誤表に載せておきます。
>
[ この投稿を含むスレッドを表示] [ この投稿を削除]



[2099] Re:第7章のTIPSについて
返信


投稿者:(ぱ)こと管理人
2018/01/11 00:14:06

Link:
>>out.print((char)(ch & 0xffff));
>
>"& 0xffff"は何をしているのでしょうか?不要な制御情報を削除するなどの
>用途があるのでしょうか?

ここではint型のchをcharにキャストしているので、結果がcharの
範囲に収まるよう、0xffffとの&を取っています。
まあ、この場合、直前のif文で負でない保証がされていますし、
InputStreamReader#read()の戻り値なので、あまり気にする必要は
ないのかもしれませんが。

>P.241 リスト7-3 36行目
>dataOutを多次元配列として定義している理由がよく分かりませんでした。
>一次元配列でも参照型変数となるので、呼び出され側で値を詰めることができるように
>思います。

1次元配列を上位でnewして渡し、呼び出され側で値を詰めてもらう、
ということはできますが、その場合、newするには呼び出し側でサイズが
わかっている必要があります。ここでは、呼び出し側ではサイズがわからないので、
呼び出され側でnewした配列を参照型変数に格納して返すには、
配列の配列(2次元配列)が必要になります。

>とありますが、例えばP.226の補足に記載されているような最新投稿を表示する
>ようなパーツが、
>仮にテキストなどでは無く画像で最新記事を返す形式だったら、
>XMLHttpRequestとか同一オリジンポリシーなど
>考えなくても良いということでしょうか?

そうなりますね。(JSONPだってその意味では抜け穴ですが)
現状、例えば怪しいサイトのHTMLが社内イントラの画像をimgタグで抜き取ったとして、
それを怪しいサーバに送ろうとするとHTML5のCanvasを使わなければならず(たぶん)、
そちらでは別のオリジンから持ってきた画像はデータ化したりできないようにする等
対策はされていると思いますけれども。

>P.248 注3
>csvダウンロードできませんでした。リンクを、
>
>><a href="/generatecsv/GenerateCSV">CSVダウンロード</a>

HTMLファイルはどこに置きましたか?
ここでは、
C:\Tomcat8\webapps\generatecsv\test.html
のような場所に置いてあることを想定しています。

実際にアプリケーションを開発する際も、HTMLなりJSPなりを
GenerateCSVと同じTomcatでホストしていれば、/generatecsv/GenerateCSVで
見えると思います。

>P.249 リスト7-8 5行目
>下記が誤りのように思います。
> 誤:"http://localhost/downloadtest/file.mp4;
> 正:"http://localhost/downloadtest/file.mp4";;

申し訳ありません。これは間違いですね。
正誤表に載せておきます。
[ この投稿を含むスレッドを表示] [ この投稿を削除]



[2098] 第7章のTIPSについて
返信


投稿者:くまきち
2018/01/10 22:11:30

Link:
『基礎からのWebアプリケーション開発入門』のP.235からのTipsについて質問させてください。


P.238 リスト7-1 25行目
>out.print((char)(ch & 0xffff));

"& 0xffff"は何をしているのでしょうか?不要な制御情報を削除するなどの用途があるのでしょうか?


P.241 リスト7-3 36行目
dataOutを多次元配列として定義している理由がよく分かりませんでした。
一次元配列でも参照型変数となるので、呼び出され側で値を詰めることができるように思います。


P.245 7.3 画像を動的に生成する
><img src="http://localhost:8080/generateimage/GenerateImage"/>;
><image>タグは、それが記載されているHTMLとはまったく無関係のドメインからでも・・・」

とありますが、例えばP.226の補足に記載されているような最新投稿を表示するようなパーツが、
仮にテキストなどでは無く画像で最新記事を返す形式だったら、XMLHttpRequestとか同一オリジンポリシーなど
考えなくても良いということでしょうか?
なんとなく、いろいろセキュリティ対策しているけど、抜け道はいろいろありそうな気がしてしまいます。


P.248 注3
csvダウンロードできませんでした。リンクを、

><a href="/generatecsv/GenerateCSV">CSVダウンロード</a>

とすると失敗しましたが、下記のようにすると成功しました(IE、Crome、Firefoxで実施)。

><a href="http://localhost:8080/generatecsv/GenerateCSV">CSVダウンロード</a>;


P.249 リスト7-8 5行目
下記が誤りのように思います。
 誤:"http://localhost/downloadtest/file.mp4;
 正:"http://localhost/downloadtest/file.mp4";;
[ この投稿を含むスレッドを表示] [ この投稿を削除]



[2097] Re:JSONPについて
返信


投稿者:(ぱ)こと管理人
2018/01/06 21:26:56

Link:
>・P.226 補足 JSONP
>「JSONPの基本的な原理は 〜 <script>タグによるJavaScriptの取得は
>同一オリジンポリシーに縛られない」という記載があります。
>ここの意図は、「”外部ファイルからのJavaScript取得”は同一オリジンポリシーに
>縛られない」で合っていますか?

合っています。外部ファイルからのJavaScript取得には<script>タグを
使うので、そのように書いています。(確かに、HTML中にJavaScriptを
書く時も<script>タグは使いますけれども)

>・P.227 補足 JSONP
>「このようにして関数呼び出しを含むJavaScriptを取り込めば、その関数
>(上記で言えばcallbackFunc)が呼び出されます。」という部分で、
>具体的にcallbackFuncが実行されるタイミングがよく分かりませんでした。

JavaScriptの実行タイミングについてはp.218に書きましたが、
<script>タグで外部のJavaScriptを読み込んだ場合、その<script>タグのある
位置で実行されます。
JSONPの場合、その外部JavaScriptからcallbackFuncを呼び出すわけですから、
callbackFuncもそのタイミングで実行されます。
そのため、HTML上では、外部JavaScriptを読み込む<script>タグは、
callbackFuncの定義より後ろにある必要があります。


>網掛け部分にある「callbackFunc」には、なぜコールバック関数という
>名前が付いているのでしょうか。webで調べたコールバック関数は
>「他の関数に引数として渡す関数」というイメージなので、ここでこの名前
>(callbackFunc)を使う意図がシックリ来ませんでした。

コールバック関数というのは、その名の通り「呼び返される」関数です。
電話をかけて相手がいないときに「コールバックお願いします」と留守電に
残しておくのと同じように、後で別の人から「呼び返してもらう」関数のことを
コールバック関数と呼びます。その手段のひとつして、関数を、
他の関数に引数として渡しておいて後で呼び返してもらう、という方法もあるわけです。

JSONPの場合、<script>タグで取り込んだ外部スクリプトから「呼び返してもらう」
関数なので、コールバック関数と呼んでいます。

[ この投稿を含むスレッドを表示] [ この投稿を削除]



[2096] JSONPについて
返信


投稿者:くまきち
2018/01/05 21:33:49

Link:
立て続けに申し訳ございません。
『基礎からのWebアプリケーション開発入門』のP.226「補足 JSONP」について、3点質問させて頂きたいです。 

・P.226 補足 JSONP
「JSONPの基本的な原理は 〜 <script>タグによるJavaScriptの取得は同一オリジンポリシーに縛られない」という記載があります。
ここの意図は、「”外部ファイルからのJavaScript取得”は同一オリジンポリシーに縛られない」で合っていますか?
「<script>タグによるJavaScriptの取得」という言い方の理解が不安だった為、質問しました。


・P.227 補足 JSONP
「このようにして関数呼び出しを含むJavaScriptを取り込めば、その関数(上記で言えばcallbackFunc)が呼び出されます。」という部分で、
具体的にcallbackFuncが実行されるタイミングがよく分かりませんでした。
下記のように考えておけば良いのでしょうか?

HTML────────────────────────┐
│               :                                 │
│  <script src="外部サーバのURL">                  │
│               :                                 │
└─────────────────────────┘
          +
外部サーバのURL(読み込まれる) ──────────┐
│JSONPの編集と下記のJavaScript生成                 │ 
│・callbackFuncの定義(具体的な表示の編集)        │
│・callbackFuncの実行(P.226の網掛け部分)         │
└─────────────────────────┘
          ↓
HTML────────────────────────┐
│               :                                 │
│┌─────────────────────┐    │
││・callbackFuncの定義(具体的な表示の編集)│    │
││★callbackFuncの実行(P.226の網掛け部分) │    │
│└─────────────────────┘    │
│               :                                 │
└─────────────────────────┘

★が読み込まれたときにcallBackFuncが実行される。


・P.226 補足 JSONP
網掛け部分にある「callbackFunc」には、なぜコールバック関数という名前が付いているのでしょうか。webで調べたコールバック関数は「他の関数に引数として渡す関数」というイメージなので、ここでこの名前(callbackFunc)を使う意図がシックリ来ませんでした。


以上、よろしくお願いいたします。
[ この投稿を含むスレッドを表示] [ この投稿を削除]



[2095] Re:同一オリジンポリシーについて
返信


投稿者:くまきち
2018/01/05 21:19:47

Link:
なるほど、そういうことですね。
私は勝手に「社内イントラネットのPC=社内イントラネットのサーバ」と考えてしまっていました!
理解することが出来ました。いつも、ありがとうございます。


>>ご指摘のあった続き部分にある「JavaScriptでXMLHttpRequestを使って
>>イントラネットの情報にアクセスし・・・」ですが、このときJavaScriptは
>>社内イントラネットのPCにダウンロードされてきているものと思います。
>
>そうです。
>
>>XMLHttpRequestはサーバとの通信を行うものだと思うので、この場合には
>>当てはまらないのではないかと思いました(通信の必要は無いのではないか)。
>>確かにJavaScriptのダウンロード元(怪しいページ)と通信先(イントラ)は
>>同一オリジンポリシーに反するので、アクセスできないということは分かりましたが、
>>わざわざそのようなことをする事があるのかな?という所に疑問が残ります。
>
>その、怪しいサイトからダウンロードしたJavaScriptが、
>XMLHttpRequestを使って社内イントラネットにアクセスして
>情報を盗み出す、という危険があるわけです。
>
>|覽戮澆房勸がPCから怪しいサイトにアクセス
>怪しいサイトから、社員のPCに、悪意を持ったJavaScriptがダウンロードされる
>0意を持ったJavaScriptが、XMLHttpRequest等を使って社内イントラの
> 情報にアクセスする。
>ぐ意を持ったJavaScriptは、盗んだ情報を、XMLHttpRequestなりPOSTなりで
> 怪しいサイトに送信する。
>
>もちろんそのためには社内イントラネットの情報源のURLが
>わからないといけませんが、それは普通機密情報とみなされないでしょうから
>わかっているかもしれませんし、ありがちなグループウェアのURLを
>しらみつぶしにするとかも考えられるのではないでしょうか。
>
>
[ この投稿を含むスレッドを表示] [ この投稿を削除]



[2094] ファイル名のみで実行できました!
返信


投稿者:huieders
2018/01/05 20:29:05

Link:
早速のご返答ありがとうございます。

Eclipseで作っていたのですが、WebAppというプロジェクトの中にjp.sampleパッケージを作り、そのパッケージの中に各javaとテキストを入れていました。
/WebApp/src/jp/sample/TcpClient.java という格好です。


>たとえばTcpServer.javaのプログラムをTcpServerという名前のプロジェクトで
>作ったのだとすると、server_send.txtは
>
>C:\…\<ワークスペース>\TcpServer\server_send.txt
>
>という位置に配置する必要があります。


ご指摘のようにプロジェクト直下にテキストファイルを移動したところ、
ファイル名のみで実行でき、recvテキスト二つも作成できました。

パス省略時はどこを探すのかも知らず、お手数おかけし申し訳ございません。
丁寧に説明くださり、大変助かりました。

続きに取り組んでまいります。どうもありがとうございました。
[ この投稿を含むスレッドを表示] [ この投稿を削除]



[2093] Re:リスト1-1,1-2の各txtのパスについて
返信


投稿者:(ぱ)こと管理人
2018/01/05 15:59:13

Link:
はじめまして。

>書籍のとおりソースを書いて実行したところ FileNotFoundException となりました。

クラスファイルはどこにあって、どのように実行していますか?

JavaのFileInputStreamでは、フルパスでなくファイル名だけ指定した時、
実行時のカレントディレクトリからファイルを探します。なので、

>TcpServer.java、TcpClient.java、server_send.text、client_send.txt
>ファイルはすべて同じフォルダ内に作っています。

という状態で、コマンドプロンプトから

C:\Users\誰それ\…\該当フォルダ> javac *.java

のようにコンパイルして(するとその場に.classファイルができるはず)

C:\Users\誰それ\…\該当フォルダ> java TcpServer

と実行すれば、「C:\Users\誰それ\…\該当フォルダ」内のserver_send.txtを
開くことができるはずです。

コマンドプロンプトでコンパイル/実行しているのではなく、
たとえばEclipseで開発しているのだとすると、Eclipseで実行した際の
カレントディレクトリはプロジェクトのディレクトリになるので、
たとえばTcpServer.javaのプログラムをTcpServerという名前のプロジェクトで
作ったのだとすると、server_send.txtは

C:\…\<ワークスペース>\TcpServer\server_send.txt

という位置に配置する必要があります。
[ この投稿を含むスレッドを表示] [ この投稿を削除]



[2092] リスト1-1,1-2の各txtのパスについて
返信


投稿者:huieders
2018/01/04 22:23:56

Link:
はじめまして。初版 第1刷のp.15、p.16にあるTcpServer.javaとTcpClient.javaについて質問です。
FileOutputStream、FileInputStreamの引数を書籍のとおりファイル名のみにすると FileNotFoundException になってしまうのですが、なにか手順を飛ばしてしまっているのでしょうか?

【状況】
TcpServer.javaの7・8行目およびTcpClient.javaの7・8行目において、
引数が("server_send.txt")などになっている箇所がございますが、
書籍のとおりソースを書いて実行したところ FileNotFoundException となりました。

TcpServer.java、TcpClient.java、server_send.text、client_send.txtファイルはすべて同じフォルダ内に作っています。


【対処】
ソースの("○○.txt")の部分を、ファイル名だけではなく("C:\\Users\\(省略)\\client_send.txt")という風にパスまで含めたものに記述しなおしたところ、書籍の記載どおり
  クライアントからの接続を待ちます。[ここで一旦停止]
  クライアント接続
  通信を終了しました
の手順まで進めることができ、resvファイルもそれぞれ生成できました。


【質問】
書籍p.17の「サーバ側とクライアント側にそれぞれserver_send.txtとclient_send.txtを用意したうえで」とは具体的にどうすればよいのでしょうか?

「対処」で自分がやったようにソースコード上で毎回パスまですべて記述するというのは違和感があるのですが、書籍のようにファイル名のみの指定でうまく動作させる方法が分かりません。

どうかご教示いただけますと幸いですが、
本書で想定している対象読者のレベル以前の質問でしたら申し訳ございません。勉強しなおしてまいります。
[ この投稿を含むスレッドを表示] [ この投稿を削除]



[2091] Re:同一オリジンポリシーについて
返信


投稿者:(ぱ)こと管理人
2018/01/04 15:47:13

Link:
>ご指摘のあった続き部分にある「JavaScriptでXMLHttpRequestを使って
>イントラネットの情報にアクセスし・・・」ですが、このときJavaScriptは
>社内イントラネットのPCにダウンロードされてきているものと思います。

そうです。

>XMLHttpRequestはサーバとの通信を行うものだと思うので、この場合には
>当てはまらないのではないかと思いました(通信の必要は無いのではないか)。
>確かにJavaScriptのダウンロード元(怪しいページ)と通信先(イントラ)は
>同一オリジンポリシーに反するので、アクセスできないということは分かりましたが、
>わざわざそのようなことをする事があるのかな?という所に疑問が残ります。

その、怪しいサイトからダウンロードしたJavaScriptが、
XMLHttpRequestを使って社内イントラネットにアクセスして
情報を盗み出す、という危険があるわけです。

|覽戮澆房勸がPCから怪しいサイトにアクセス
怪しいサイトから、社員のPCに、悪意を持ったJavaScriptがダウンロードされる
0意を持ったJavaScriptが、XMLHttpRequest等を使って社内イントラの
 情報にアクセスする。
ぐ意を持ったJavaScriptは、盗んだ情報を、XMLHttpRequestなりPOSTなりで
 怪しいサイトに送信する。

もちろんそのためには社内イントラネットの情報源のURLが
わからないといけませんが、それは普通機密情報とみなされないでしょうから
わかっているかもしれませんし、ありがちなグループウェアのURLを
しらみつぶしにするとかも考えられるのではないでしょうか。

[ この投稿を含むスレッドを表示] [ この投稿を削除]



[2090] Re:同一オリジンポリシーについて
返信


投稿者:くまきち
2018/01/03 21:17:15

Link:
回答ありがとうございます。ですが、もう少しだけ分からないため、再質問させて下さい。

ご指摘のあった続き部分にある「JavaScriptでXMLHttpRequestを使ってイントラネットの情報にアクセスし・・・」ですが、このときJavaScriptは社内イントラネットのPCにダウンロードされてきているものと思います。XMLHttpRequestはサーバとの通信を行うものだと思うので、この場合には当てはまらないのではないかと思いました(通信の必要は無いのではないか)。

確かにJavaScriptのダウンロード元(怪しいページ)と通信先(イントラ)は同一オリジンポリシーに反するので、アクセスできないということは分かりましたが、わざわざそのようなことをする事があるのかな?という所に疑問が残ります。

正月早々、申し訳ありませんが、お時間があるときに回答頂けると助かりますww

>>「会社で昼休みに・・・」という例が挙がっていますが、この場合、自分から
>>怪しいwebページにアクセスしているので、javascriptのダウンロード元と
>>通信先が同一になってしまうように思います。つまり、同一オリジンポリシーは
>>満たしていると思われるため、この例の意図が分からず質問させて頂いたものです。
>
>怪しいページについてはその通りですが、続きに以下のように書いています。
>
>>怪しいページにて、JavaScriptでXMLHttpRequestを使ってイントラネットの
>>情報にアクセスし、それをXMLHttpRequestなりフォームのPOSTなりで
>>外部サーバに送信すれば情報が盗めてしまう、というのでは困ります。
>
>つまり、この文脈で、同一オリジンポリシーにひっかかってアクセスできないのは、
>社内イントラネットの情報の方です。
>
[ この投稿を含むスレッドを表示] [ この投稿を削除]



[2089] Re:同一オリジンポリシーについて
返信


投稿者:(ぱ)こと管理人
2018/01/03 10:13:49

Link:
>「会社で昼休みに・・・」という例が挙がっていますが、この場合、自分から
>怪しいwebページにアクセスしているので、javascriptのダウンロード元と
>通信先が同一になってしまうように思います。つまり、同一オリジンポリシーは
>満たしていると思われるため、この例の意図が分からず質問させて頂いたものです。

怪しいページについてはその通りですが、続きに以下のように書いています。

>怪しいページにて、JavaScriptでXMLHttpRequestを使ってイントラネットの
>情報にアクセスし、それをXMLHttpRequestなりフォームのPOSTなりで
>外部サーバに送信すれば情報が盗めてしまう、というのでは困ります。

つまり、この文脈で、同一オリジンポリシーにひっかかってアクセスできないのは、
社内イントラネットの情報の方です。
[ この投稿を含むスレッドを表示] [ この投稿を削除]



[2088] 同一オリジンポリシーについて
返信


投稿者:くまきち
2018/01/03 01:34:01

Link:
『基礎からのWebアプリケーション開発入門』のP.225にある同一オリジンポリシーについて、解説にある例が分からず質問させてください。

「会社で昼休みに・・・」という例が挙がっていますが、この場合、自分から怪しいwebページにアクセスしているので、javascriptのダウンロード元と通信先が同一になってしまうように思います。つまり、同一オリジンポリシーは満たしていると思われるため、この例の意図が分からず質問させて頂いたものです。

初歩的な質問かも知れませんが、よろしくお願いいたします。
[ この投稿を含むスレッドを表示] [ この投稿を削除]



[2087] Re:リスト6-11について
返信


投稿者:(ぱ)こと管理人
2017/12/31 16:25:14

Link:
>51行目
>誤:<thead>
>正:</thead>

ご指摘ありがとうございます。ポカが多く申し訳ありません。
正誤表に追加しました。
[ この投稿を含むスレッドを表示] [ この投稿を削除]



[2086] リスト6-11について
返信


投稿者:くまきち
2017/12/31 00:45:55

Link:
『基礎からのWebアプリケーション開発入門』のP.219にあるリスト6-11について、非常にささいではありますが誤植かなと思ったところがあったので、念の為、連絡しておきます。

51行目
誤:<thead>
正:</thead>
[ この投稿を含むスレッドを表示] [ この投稿を削除]



[ より新しい投稿] [ より古い投稿]