K.Maebashi's BBS

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

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


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


[2125] 【質問】lexのトークン判断優先方法(プログラミング言語を作る3章質問その1)
返信


投稿者:mano
2018/04/24 07:02:35

Link:
たびたびお邪魔します。
3章途中まで読み進めたのですが、わからないところがあったので教えてください。
P.102のcrowbar.lのソースで、59行目で整数型「([1-9][0-9]*)|"0"」、65行目で実数型「0-9]+\.[0-9]+」、78行目で例外「.」のトークンを切り分けているように見えます。
入力が、「123.456」だった場合、なぜ実数型のトークンと判断されるのでしょうか?
疑問に思ったのは「123.456」を「123」を整数型トークン、「.」を例外トークン、「456」の整数型トークンと判断する方法や、「1」,「2」「3」「.」「4」「5」「6」を全て例外トークンとして扱うこともできそうな気がするのですが、そうならない理由がわからないためです。
(済みません。書籍に記述があるのに私が読み飛ばしてしまっているだけかもしれません。)
また、整数トークンと実数トークン、"if"トークンと[ \t]トークンの関係から推測すると、例えば"for while other if"みたいな命令語もトークンとして定義できそうですが、その場合に.lファイルでの定義行(ルール順番)によっては動きが変わるものなのでしょうか?


整数型の場合「....|"0"」と0をダブルクォーテーションで括っていますが、電卓のケースでP.36では、「(....|0|([0-9]....)」と0をダブルクォーテーションで括っていません。この違いが上の判断条件に影響しているのでしょうか?
[ この投稿を含むスレッドを表示] [ この投稿を削除]



[2124] ほげは方言
返信


投稿者:ほげ
2018/04/17 23:29:09

Link:https://dictionary.goo.ne.jp/leaf/dialect/3482/m0u/
「ほげ」を探すとここにたどりつきました。
「ほげ」は大分の方言で、くだらないこと、でたらめなことの意味です。
(特に臼杵地区、若い人は言わなくなった)

【応用】
ほげほっぽ  本当にデタラメな
ほげんじょう くだらないことばっかり

なお、「熊本弁」と書いていた「ほげる」は、穴があいてしまうこと、「ほぐ」は
穴をあけること であり、別に熊本に限らず、九州全体の共通語です。
[ この投稿を含むスレッドを表示] [ この投稿を削除]



[2123] Re:プログラミング言語を作る2章質問
返信


投稿者:mano
2018/04/16 23:48:04

Link:
回答いただきありがとうございました。
[ この投稿を含むスレッドを表示] [ この投稿を削除]



[2122] Re:プログラミング言語を作る2章質問
返信


投稿者:(ぱ)こと管理人
2018/04/15 23:14:00

Link:
>はじめまして。

はじめまして。読んでいただきありがとうございます。

>1点目:P.56で、エラーリカバリの実現として、mycalc.yファイルの書き換えとして
>lineのルールにerror CRの並びを追加しています。この通りにしてみたもののmycalcの
>動きに変わりはありませんでした。で質問ですが、この修正で意図したエラーリカバリ
>とは、本文直前の文の記述がある、「一度のコンパイルでできるだけ多くのエラーを
>見つけることではないこと」を指しているのでしょうか?つまり何らかの作用により
>yaccが出すメッセージを見やすくする対応のものでしょうか?

この修正は、その直前の記述である「ただ、電卓の場合、対話的に使うものですから、
入力ミスで即座に死んでしまうのはユーザにとって不親切でしょう」という
問題に対する対応です。

>それとも、mycalc.lにもともと実装されている、エラー出力lexical error後の
>exitを消しても、yyclearin;,yyerrok;の作用でError!Error!Error!の
>エラー表示に陥らなくなることを指して、エラーリカバリと呼んでいるのでしょうか?

よって、エラー時にexit()しなくなる、というのが目的です。

>2点目:P.74で、括弧対応の話で、私の環境ではmycalc.yの11行目、
>トークンの並びにLP,RPを追加しなくては動きませんでした。
>こちら11行目に追加することが、筆者の意図とした変更なのかよくわかっていません。

すみません、こちらはこれが私の意図した変更ですが、
p.74で「たったこれだけのことで〜」と書いておきながら他の修正が要るというのは
問題ですね。正誤表に加えておきました。
ご指摘いただき、ありがとうございました。
[ この投稿を含むスレッドを表示] [ この投稿を削除]



[2121] プログラミング言語を作る2章質問
返信


投稿者:mano
2018/04/14 22:40:48

Link:
はじめまして。
「プログラミング言語を作る」の2章まで読んだのですがわからない点が2点ありましたので教えてください。
1点目:P.56で、エラーリカバリの実現として、mycalc.yファイルの書き換えとしてlineのルールにerror CRの並びを追加しています。この通りにしてみたもののmycalcの動きに変わりはありませんでした。で質問ですが、この修正で意図したエラーリカバリとは、本文直前の文の記述がある、「一度のコンパイルでできるだけ多くのエラーを見つけることではないこと」を指しているのでしょうか?つまり何らかの作用によりyaccが出すメッセージを見やすくする対応のものでしょうか?
それとも、mycalc.lにもともと実装されている、エラー出力lexical error後のexitを消しても、yyclearin;,yyerrok;の作用でError!Error!Error!のエラー表示に陥らなくなることを指して、エラーリカバリと呼んでいるのでしょうか?

つづいて、パーサ自作のプログラムは読み飛ばして(=理解を断念して)

2点目:P.74で、括弧対応の話で、私の環境ではmycalc.yの11行目、トークンの並びにLP,RPを追加しなくては動きませんでした。こちら11行目に追加することが、筆者の意図とした変更なのかよくわかっていません。
[ この投稿を含むスレッドを表示] [ この投稿を削除]



[2120] Re:無題
返信


投稿者:(ぱ)こと管理人
2018/04/14 15:36:56

Link:
>あっ、細かいツッコミに対応いただいてすみません...。
>...ついでにもう1つ。
>更新状況の2行目が「2013/3/13」になってます...。

「プログラミング言語を作る」へのリンクをコピペで流用しようとして
日付を直し忘れたようですね。修正しました。

こちらもご指摘ありがとうございました。
[ この投稿を含むスレッドを表示] [ この投稿を削除]



[2119] Re:無題
返信


投稿者:ほげぴよ
2018/04/13 02:24:49

Link:
>修正しました。ご指摘ありがとうございました。

あっ、細かいツッコミに対応いただいてすみません...。
...ついでにもう1つ。
更新状況の2行目が「2013/3/13」になってます...。
[ この投稿を含むスレッドを表示] [ この投稿を削除]



[2118] Re:無題
返信


投稿者:(ぱ)こと管理人
2018/04/10 23:11:50

Link:
>「はてなダイアリーをK.Maebashi's はてなブログに移行しました(20017/09/11)」
>
>西暦2万年まではてなブログは存続できるのかな...

私は昔はてなダイアリーにこんなの書いたこともあるのですが。

http://d.hatena.ne.jp/kmaebashi/20100110/p1

今回は自分でやらかしてしまったようです。

修正しました。ご指摘ありがとうございました。
[ この投稿を含むスレッドを表示] [ この投稿を削除]



[2117] 無題
返信


投稿者:ほげぴよ
2018/04/06 23:21:19

Link:
「はてなダイアリーをK.Maebashi's はてなブログに移行しました(20017/09/11)」

西暦2万年まではてなブログは存続できるのかな...
[ この投稿を含むスレッドを表示] [ この投稿を削除]



[2116] Re:無題
返信


投稿者:(ぱ)こと管理人
2018/03/29 02:32:05

Link:
>if(line == NULL) は、if(*line == NULL) の間違えではないでしょうか?

ご指摘ありがとうございます。確認しましたがその通りだと思います。申し訳ありません。

週末あたりに正誤表に入れておきます。
[ この投稿を含むスレッドを表示] [ この投稿を削除]



[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)を使う意図がシックリ来ませんでした。


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



[ より古い投稿]