K.Maebashi's BBS

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

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

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

[2069] Re:【C言語ポインタ完全制覇】ポインタはどれだけ進む?
投稿者:(ぱ)こと管理人
2017/12/20 00:26:09

>ついでに申せば、第1版のFig.3-3の「1加算するとここを指す」という説明も、 >よくわかりません。どういう意味でしょうか?何に1加算すると? この図中にある「Tへのポインタ」に1加算すると、です。
[この投稿を含むスレッドを表示] [この投稿を削除]
[2068] Re:【C言語ポインタ完全制覇】ポインタはどれだけ進む?
投稿者:(ぱ)こと管理人
2017/12/20 00:23:07

>2-3-2ポインタ型派生で(第1版p151、第2版p172)、「くどいようですが繰り返して >おきます。ポインタに対して加算を行うと、そのポインタの指す型のサイズだけ、 >ポインタが進むのでした。」とありますが、ポインタの指す型のサイズだけ進むのは、 >(通常のポインタの実装では)【アドレス】であって、ポインタが進む大きさは、 >ポインタに加算した量だけ、ではないでしょうか? この「ポインタが〇〇だけ進む」という表現は、第2版p.56の >ポインタって、要するにアドレスのことなんだろ? >だったら、1足したら1進むに決まってるじゃないか! のところから一貫して「バイト数」を指しているつもりです。 私だって普通にポインタ演算(まあめったに使いませんが)でintの配列の 次の要素を指す時には、「4バイト先」なんてことを意識したりはしませんが、 この本では、「そのポインタの指す型のサイズだけ、ポインタが進む」ということを 強く意識しないと、たとえばp.195の 「ポインタにi加算することは、そのポインタが指す型のサイズ×iだけ、 ポインタを進めることを意味する。hogeの指す先の型は「intの配列(要 素数5)」であるから、hoge + iでは、sizeof(int[5]) * iだけ進む。」 という説明が意味不明になってしまうのではないでしょうか。 そして、こういう説明が必要だと思ったからこそ、私はこの本を書いたわけです。
[この投稿を含むスレッドを表示] [この投稿を削除]
[2067] Re:【C言語ポインタ完全制覇】バイトオーダー、向き?
投稿者:(ぱ)こと管理人
2017/12/20 00:13:05

>第1版p135, 第2版p156の、byteorder.cの実行直後の文、『私の環境では「0x12345678」と >いう値は、メモリ上に、逆向きに配置されているようですね。』とあるのですが、 >何とは「逆向き」に、なのかがわかりません。何と逆向きなのでしょうか? 「0x12345678」という16進の表記と逆向き、という意味で書いています。 >(ぱ)さんの環境(little endian)で、78->56->34->12と表示されている、 >というのは、下の位から上の位にメモリアドレスが増えていっているので、 >僕には、逆ではなく【順に】に思えるのです。 うーん、主観の問題とは思いますが、どうなんでしょう。 「下の位を先にメモリに格納する」というのは、コンピュータの事情としては わかるケースもありますが、通常、人間は、数字を印刷・表示した状態の順序で 意識しているのではないでしょうか。過去、この話を新人君やお客様にしたことは 何度かありますが、私の経験した範囲では、「へー、逆なんだ」という反応でした。 ポインタ完全制覇の初版が出てから17年、この点で違和感を表明したのは knwifuruさんが最初です(もちろん、表明しなかっただけで、違和感を感じていた人は いたのかもしれません)。 >しかし、もともと、endianというのは、「卵の尖った側(小さい側)から(先に)食べるか、 >丸い側(大きい側)から食べるか」=「bit/byte列のlower bits側が先に(lower addressに) >置かれるか、higher bitsが先に置かれるか」という事のようなので、 >数字を印刷・表示した時・読んだ時に先に・早く出てくるかどうか?で議論をすると、 >混乱すると思うのですが、いかがでしょうか? まあこれはendianを知らない人向けの説明なので、「もともとendianというのは~」で 説明してもあまり意味はなく、「数字を印刷・表示した時・読んだ時」の順と 逆になっていることから、「そんなこともあるんだ、へー」と思ってもらえば よいかと思っています。 「へー、逆なんだ」と思わない人は、knwifuruさんの他にもいるのかもしれませんし、 実のところどっちが多数派なのかもわかりませんが、本の書き手としては、 「想定読者は過去の自分自身」という視点から逃れられないものなのかもしれません。
[この投稿を含むスレッドを表示] [この投稿を削除]
[2066] Re:info.servlet.serviceについて
投稿者:くまきち
2017/12/19 23:31:05

ありがとうございます、納得しました! >>HenacatでRunnableをimplementsしているのはServerThreadだけだと思いますが、 >>もしかしてマルチスレッドの各スレッドから呼び出されるクラスは、ルールの適用無しでも >>(結果として)マルチスレッドで動くという事なのでしょうか? > >もちろん、マルチスレッドの各スレッドから呼び出されるメソッドは >呼び出し元のスレッドで動きますから、マルチスレッドで動きます。 >(クラスとかインスタンスは、この際関係ないですね) >
[この投稿を含むスレッドを表示] [この投稿を削除]
[2065] Re:info.servlet.serviceについて
投稿者:(ぱ)こと管理人
2017/12/19 23:08:47

>HenacatでRunnableをimplementsしているのはServerThreadだけだと思いますが、 >もしかしてマルチスレッドの各スレッドから呼び出されるクラスは、ルールの適用無しでも >(結果として)マルチスレッドで動くという事なのでしょうか? もちろん、マルチスレッドの各スレッドから呼び出されるメソッドは 呼び出し元のスレッドで動きますから、マルチスレッドで動きます。 (クラスとかインスタンスは、この際関係ないですね)
[この投稿を含むスレッドを表示] [この投稿を削除]
[2064] Re:【C言語ポインタ完全制覇】ポインタはどれだけ進む?
投稿者:knwifuru
2017/12/19 23:07:31

ついでに申せば、第1版のFig.3-3の「1加算するとここを指す」という説明も、よくわかりません。どういう意味でしょうか?何に1加算すると? >2-3-2ポインタ型派生で(第1版p151、第2版p172)、「くどいようですが繰り返しておきます。ポインタに対して加算を行うと、そのポインタの指す型のサイズだけ、ポインタが進むのでした。」とありますが、ポインタの指す型のサイズだけ進むのは、(通常のポインタの実装では)【アドレス】であって、ポインタが進む大きさは、ポインタに加算した量だけ、ではないでしょうか?
[この投稿を含むスレッドを表示] [この投稿を削除]
[2063] Re:info.servlet.serviceについて
投稿者:くまきち
2017/12/19 21:37:28

なるほど、了解です!ありがとうございます。 ですが、もう少し分からないことがあります。 マルチスレッドで動くとなると、クラスがRunnableをimplementsして...のような ルールが必要なのかと思っていたのですが、HttpServletは、そのようになっていません。 HenacatでRunnableをimplementsしているのはServerThreadだけだと思いますが、 もしかしてマルチスレッドの各スレッドから呼び出されるクラスは、ルールの適用無しでも (結果として)マルチスレッドで動くという事なのでしょうか? 入門書を読め!という話なのかも知れませんが、どうぞ宜しくお願いします。 >>分からないのは「info.servlet」がnullでなければ、同じインスタンスが >>使いまわされるのに、並行して複数個所から使いまわされていいんだっけ? >>ということです。 > >p.92の補足にも書きましたが、サーブレットのインスタンスはひとつだけ生成され、 >すべてのリクエストで共有されます。 >よって、インスタンスフィールドを使えば、複数のスレッド間で競合が起きる >可能性がありますし、(補足にも書いたように)リクエスト単位やユーザ単位で >持つべき情報をサーブレットのインスタンスフィールドで保持してはいけません。 > >ただし、ローカル変数はスレッドごとに存在するので、ローカル変数(メソッドの >引数含む)だけを使っている限り、同じインスタンスのメソッドを複数のスレッドで >呼び出すことは問題ありません。 >
[この投稿を含むスレッドを表示] [この投稿を削除]
[2062] 【C言語ポインタ完全制覇】ポインタはどれだけ進む?
投稿者:knwifuru
2017/12/19 08:28:55

2-3-2ポインタ型派生で(第1版p151、第2版p172)、「くどいようですが繰り返しておきます。ポインタに対して加算を行うと、そのポインタの指す型のサイズだけ、ポインタが進むのでした。」とありますが、ポインタの指す型のサイズだけ進むのは、(通常のポインタの実装では)【アドレス】であって、ポインタが進む大きさは、ポインタに加算した量だけ、ではないでしょうか?
[この投稿を含むスレッドを表示] [この投稿を削除]
[2061] 【C言語ポインタ完全制覇】バイトオーダー、向き?
投稿者:knwifuru
2017/12/19 08:23:16

第1版p135, 第2版p156の、byteorder.cの実行直後の文、『私の環境では「0x12345678」という値は、メモリ上に、逆向きに配置されているようですね。』とあるのですが、何とは「逆向き」に、なのかがわかりません。何と逆向きなのでしょうか? (ぱ)さんの環境(little endian)で、78->56->34->12と表示されている、というのは、下の位から上の位にメモリアドレスが増えていっているので、僕には、逆ではなく【順に】に思えるのです。 数字の左から右(読む向き)とは【逆】という事でしょうか? 確かに、それとは逆ではありますが… しかし、もともと、endianというのは、「卵の尖った側(小さい側)から(先に)食べるか、丸い側(大きい側)から食べるか」=「bit/byte列のlower bits側が先に(lower addressに)置かれるか、higher bitsが先に置かれるか」という事のようなので、数字を印刷・表示した時・読んだ時に先に・早く出てくるかどうか?で議論をすると、混乱すると思うのですが、いかがでしょうか?
[この投稿を含むスレッドを表示] [この投稿を削除]
[2060] Re:info.servlet.serviceについて
投稿者:(ぱ)こと管理人
2017/12/18 23:55:58

>分からないのは「info.servlet」がnullでなければ、同じインスタンスが >使いまわされるのに、並行して複数個所から使いまわされていいんだっけ? >ということです。 p.92の補足にも書きましたが、サーブレットのインスタンスはひとつだけ生成され、 すべてのリクエストで共有されます。 よって、インスタンスフィールドを使えば、複数のスレッド間で競合が起きる 可能性がありますし、(補足にも書いたように)リクエスト単位やユーザ単位で 持つべき情報をサーブレットのインスタンスフィールドで保持してはいけません。 ただし、ローカル変数はスレッドごとに存在するので、ローカル変数(メソッドの 引数含む)だけを使っている限り、同じインスタンスのメソッドを複数のスレッドで 呼び出すことは問題ありません。
[この投稿を含むスレッドを表示] [この投稿を削除]
[2059] info.servlet.serviceについて
投稿者:くまきち
2017/12/18 22:54:13

いつもお世話になっております。おかげさまで安心して読み進めることが出来ます。 『基礎からのWebアプリケーション開発入門』のP.116のリスト3-17の76行目に info.servlet.service(req,resp); という行があります。 この「info.servlet」はnullであれば53行目でインスタンスを作っています。 また「info.servlet」はWebapplicationのメンバーなので、当然、複数箇所から並行して呼ばれることがあるのではないかと思います。 分からないのは「info.servlet」がnullでなければ、同じインスタンスが使いまわされるのに、並行して複数個所から使いまわされていいんだっけ?ということです。 これは、マルチスレッド的な何か仕掛けがあって、このような作りになっているのでしょうか? 初心者で分からないことが多く、ご迷惑をおかけします。もしかして、ものすごく曖昧な質問なのかも知れませんが、よろしければお教えください。
[この投稿を含むスレッドを表示] [この投稿を削除]
[2058] Re:C言語ポインタ完全制覇 第1版 4-2-1 可変長配列の配列についての質問
投稿者:884
2017/12/18 14:23:31

ご回答ありがとうございました。理解できました。 こんなにレスポンスが早く、直接、著者より回答がいただけるのは、非常にありがたいです。
[この投稿を含むスレッドを表示] [この投稿を削除]
[2057] Re:ポインタ制覇誤植2-3-2冒頭(still in the 2nd ed.)
投稿者:knwifuru
2017/12/17 22:22:15

>>「C言語ポインタ制覇」2-3-2冒頭、『式の中では「関数へのポインタ」に読み替えられる』は >>『読み替えられる』ではないでしょうか? > >間違っている方の記述は「読み替えらえる」ですね。正誤表に入れさせていただきました。 指摘も間違えていて恥かきました(^^; すみません。 また気づいた点がありましたらお知らせいたします。
[この投稿を含むスレッドを表示] [この投稿を削除]
[2056] Re:セッションCookie
投稿者:くまきち
2017/12/17 22:05:21

自己解決しました。 P.166の最終段落「さて、」以降に記載されている部分のことですね。 お騒がせしました。 >『基礎からのWebアプリケーション開発入門』のP.171のリスト5-4の後に、 >「セッションCookieにPath属性が...」との記載があります。 >これは、「CookieにPath属性が...」と見ればいいでしょうか? >それとも、どこかで「セッションCookie」が定義されていたでしょうか? > >誤植のような気もするし、私が失念しただけのような気もするし、曖昧で申し訳ないですが、 >質問させて頂きました。
[この投稿を含むスレッドを表示] [この投稿を削除]
[2055] Re:セッションCookie
投稿者:(ぱ)こと管理人
2017/12/17 21:59:06

>『基礎からのWebアプリケーション開発入門』のP.171のリスト5-4の後に、 >「セッションCookieにPath属性が...」との記載があります。 ちょっと遠くてわかりにくかったかもしれませんが、 ここの「セッションCookieにPath 属性が付いていたことからもわかるように、」 という文章は、p.167冒頭のTomcatのセッションCookieにPath属性が付いていたことを 意味しています。
[この投稿を含むスレッドを表示] [この投稿を削除]
[2054] Re:ポインタ制覇誤植2-3-2冒頭(still in the 2nd ed.)
投稿者:(ぱ)こと管理人
2017/12/17 15:34:04

>「C言語ポインタ制覇」2-3-2冒頭、『式の中では「関数へのポインタ」に読み替えられる』は >『読み替えられる』ではないでしょうか? 間違っている方の記述は「読み替えらえる」ですね。正誤表に入れさせていただきました。 >第一版で前々から気付いていたのですが、お知らせせずに置いたところ、先日出版された >ことに気づいて慌てて?購入した第二版でもそのままになっているようです。 第1版の方の正誤表にも後ほど記載いたします(第1版では、第2版を書いているうちに 気付いたり査読者にご指摘いただいた箇所がミスがやはり何か所かありまして、 そのうち正誤表に載せようと思ったまま延び延びになってしまっておりました)。 >こういう連絡は、こちらにするので良いのでしょうか? 「密かに別のところに >知らせてくれ」ということであれば、そちらに連絡差し上げますが… こちらでお願いします。また何かありましたらよろしくお願いいたします。
[この投稿を含むスレッドを表示] [この投稿を削除]
[2053] ポインタ制覇誤植2-3-2冒頭(still in the 2nd ed.)
投稿者:knwifuru
2017/12/17 11:58:12

「C言語ポインタ制覇」2-3-2冒頭、『式の中では「関数へのポインタ」に読み替えられる』は『読み替えられる』ではないでしょうか? 第一版で前々から気付いていたのですが、お知らせせずに置いたところ、先日出版されたことに気づいて慌てて?購入した第二版でもそのままになっているようです。 こういう連絡は、こちらにするので良いのでしょうか? 「密かに別のところに知らせてくれ」ということであれば、そちらに連絡差し上げますが…
[この投稿を含むスレッドを表示] [この投稿を削除]
[2052] セッションCookie
投稿者:くまきち
2017/12/16 16:32:15

『基礎からのWebアプリケーション開発入門』のP.171のリスト5-4の後に、 「セッションCookieにPath属性が...」との記載があります。 これは、「CookieにPath属性が...」と見ればいいでしょうか? それとも、どこかで「セッションCookie」が定義されていたでしょうか? 誤植のような気もするし、私が失念しただけのような気もするし、曖昧で申し訳ないですが、 質問させて頂きました。
[この投稿を含むスレッドを表示] [この投稿を削除]
[2051] Re:synchronizedについて
投稿者:(ぱ)こと管理人
2017/12/16 00:12:38

>これはラストアクセス時刻を設定するだけのメソッドだと思いますが、 >なぜsynchronizedにする必要があるのでしょうか? ここで設定するthis.lastAccessedTimeはlong型ですが、 Javaではlong型については、代入自体、atomicであることが保証されていません。 https://www.jpcert.or.jp/java-rules/vna05-j.html (intとかは良さそうなのですが、あまりそれに依存したコードは私は 書きたくないところです) >正直、多少ズレても誰にも迷惑をかけないように思ったので質問してみました。 atomicでないということは、時刻が多少ずれるということだけでなく、 「結果がどうなるかわからない」ということだと思います。 (上記ページで引用されているJLSの記述を読むと、32ビット単位で 異なる値が混じる、ということしか起こらないようにも読めますが……)
[この投稿を含むスレッドを表示] [この投稿を削除]
[2050] synchronizedについて
投稿者:くまきち
2017/12/14 23:47:43

『基礎からのWebアプリケーション開発入門』のP.168のリスト5-3の40行目に synchronized void access() という行があります。 これはラストアクセス時刻を設定するだけのメソッドだと思いますが、なぜsynchronizedにする必要があるのでしょうか? 正直、多少ズレても誰にも迷惑をかけないように思ったので質問してみました。 よろしかったら回答頂けると、ありがたいです。
[この投稿を含むスレッドを表示] [この投稿を削除]
[2049] Re:『センス・オブ・プログラミング!』の正誤について
投稿者:藤四郎
2017/12/13 19:42:15

お手数おかけしました。ご対応ありがとうございました。 これでこの本も一読者として安心して意味内容に集中して読み返すことができます。
[この投稿を含むスレッドを表示] [この投稿を削除]
[2048] Re:C言語ポインタ完全制覇 第1版 4-2-1 可変長配列の配列についての質問
投稿者:(ぱ)こと管理人
2017/12/13 01:51:10

>標準入出力は、テキストファイルと同じように、ファイルポインタで指定して、 >ファイルのように扱ことができる。という理解でよいでしょうか。 そういうことですね。 キーボードのような入力デバイスも、画面のような出力デバイスも、 なんでもファイルとして扱えるようにしてしまえ、というのは もともとUNIXのアイディアで、たとえばWikipediaでUNIXを引くと 「概説」の項に以下のように書いてあります。 >各種の周辺装置やある種のプロセス間通信 (IPC) をファイルとして扱う事 ここで、「各種の周辺装置」はキーボードを含みます。 このUNIXのアイディアをMS-DOSが模倣し、Windowsでもそのまま使えるように なっているわけです。
[この投稿を含むスレッドを表示] [この投稿を削除]
[2047] Re:addCookieについて
投稿者:(ぱ)こと管理人
2017/12/13 01:47:40

>name=COUNTERのCookieが増えないように、どこで制御しているのでしょうか? >単純に見落としているだけかも知れないのですが、宜しかったら教えて頂きたいです! 結論から言えば、制御していません。Tomcatも同じです。 https://twitter.com/kmaebashi/status/549803263734718464 このTweetにも書いたように、何の役に立つのかはさっぱりわかりませんが、 Tomcatもそうなっているならまあいいかとそうしています。 もちろん、HttpServletResponseはリクエストの度に作り直されますし、 CookieTest.javaは1回のリクエストで1回しかaddCookie()を呼んでいないので、 同じ名前のCookieが増えることはありません。
[この投稿を含むスレッドを表示] [この投稿を削除]
[2046] Re:flush()について
投稿者:(ぱ)こと管理人
2017/12/13 01:39:52

>すごく基本的な質問かもしれないですが、たとえば「メモリ上にだけ持っていて >ディスクに書き出していないデータがあるかもしれないのでflush」という >イメージは分かるのですが、このサンプルの場合はメモリ上のデータの >やり取りだけなので、flushを何のために行っているのか分かりませんでした。 このサンプルの場合はメモリ上のデータのやり取りだけですが、 それは、Henacatが手抜きのためにレスポンスボディをいったんすべて メモリに乗せているからであり、これでは、巨大なレスポンスを返す際には メモリが無駄になります。場合によっては、レスポンスデータを作りながら どんどんクライアントに返してしまいたいケースもあるでしょう。 その場合、クライアントへのデータの返却を始めてしまったら、 もうレスポンスヘッダの変更はできませんから、途中でエラーが起きても ステータスとして500とかを返すことはできず、200 OKを返すことになって しまいますが、それでもいいからクライアントへのデータ返却を始めてしまいたい、 というニーズはあり得ます。それに対応するために、サーブレットAPIでは 「コミット」という概念を導入しています(p.119)。 http://mergedoc.osdn.jp/tomcat-servletapi-5-ja/javax/servlet/ServletResponse.html#getWriter() その場合、HttpServletResponseのgetWriter()で得られるPrintWriterは、 バッファリングする方がよいでしょう。相手はネットワークだからです。 このように、このPrintWriterはバッファリングする(ようになる)可能性もあるため、 ここではflush()しています。 いずれにしても、バッファリングするしないはPrintWriterの実装詳細に 属することでしょうから、flush()する方が堅実なコーディングではないかと 思います。
[この投稿を含むスレッドを表示] [この投稿を削除]
[2045] Re:『センス・オブ・プログラミング!』の正誤について
投稿者:(ぱ)こと管理人
2017/12/13 00:19:10

>さて、またご面倒をおかけしますが、以下についてそちらの正誤表への追加を >ご検討お願いいたします。年末のお忙しい時期におそれいりますが、またご都 >合のよろしいときにでもご対応いただければ幸いです。 またまたたくさんご指摘ありがとうございます。 ポカが多く申し訳ありません。 遅くなりましたが、対応させていただきました。 >後入れ先出し Last In First Out >先入れ後出し First In Last Out これはまあ、日本語と英語で順序を合わせなければならないというわけでも ないでしょうから、このままとさせてください。 >> 27人集れば、誕生日が衝突する確率は50%を超えます。 私は、どういうわけか27人だと思い込んでいたようですが、 どこからその数字をおぼえたのか、まったく思い出せません… >p.192 l.2 >> O(1/2N^2) > >これは誤りとまではいえないとは思いますが、一応、より細かいことをいえば >(N-1) + (N-2) + ... + 1 = N(N-1)/2 >かと。 (つまり、無視するのは定数の係数だけでなく第二項以降も。) 正しくは1/2 N^2(つまり(N^2)/2)ではなくN(N-1)/2ですが、 さすがにN^2とN(N-1)は丸めてしまって問題ない差だと思います。
[この投稿を含むスレッドを表示] [この投稿を削除]
[2044] addCookieについて
投稿者:くまきち
2017/12/11 22:04:17

『基礎からのWebアプリケーション開発入門』のP.144のリスト4-4の33行目に response.addCookie(newCookie); という行があります。 この分は配列の最後に要素を追加するということなので、nameがCOUNTERの要素(Cookie)が既にある場合も最後に追加するように見えてしまいます。 Tomcatがうまい具合にやっているのかも知れませんが、Henacat版を見ても、やはりCOUNTER要素が増えていくように見えます。 name=COUNTERのCookieが増えないように、どこで制御しているのでしょうか?単純に見落としているだけかも知れないのですが、宜しかったら教えて頂きたいです!
[この投稿を含むスレッドを表示] [この投稿を削除]
[2043] Re:C言語ポインタ完全制覇 第1版 4-2-1 可変長配列の配列についての質問
投稿者:884
2017/12/11 17:14:06

>これで回答になっておりますでしょうか?  おかしな質問をしてすみません。 標準入出力とファイルの関係が理解できていませんでした。 そもそも、stdinは、FILEへのポインタ型なんですね。 標準入出力は、テキストファイルと同じように、ファイルポインタで指定して、 ファイルのように扱ことができる。という理解でよいでしょうか。
[この投稿を含むスレッドを表示] [この投稿を削除]
[2042] flush()について
投稿者:くまきち
2017/12/10 11:29:01

『基礎からのWebアプリケーション開発入門』のP.116のリスト3-17の80行目に resp.printWriter.flush() という行があります。 すごく基本的な質問かもしれないですが、たとえば「メモリ上にだけ持っていてディスクに書き出していないデータがあるかもしれないのでflush」というイメージは分かるのですが、このサンプルの場合はメモリ上のデータのやり取りだけなので、flushを何のために行っているのか分かりませんでした。 宜しければ、ここでflush()を使用している意図を教えて頂きたいです。
[この投稿を含むスレッドを表示] [この投稿を削除]
[2041] Re:C言語ポインタ完全制覇 第1版 4-2-1 可変長配列の配列についての質問
投稿者:(ぱ)こと管理人
2017/12/09 22:06:21

>ここで、このプログラムにおいて、キーボードからの入力(stdin)は、 >void read_slogan(FILE *fp, char **slogan)側で、ファイル(FILE *fp)として、 >認識されるのでしょうか。 すみません、何が質問なのかよくわかりませんが、 リダイレクトでファイルが読み込める、という挙動についてであれば、 read_slogan < slogan.txt というのは、read_sloganの標準入力をslogan.txtというファイルからの入力に 切り替えるという意味です。 標準入力(stdin: standard input)は、デフォルトでキーボードなのですが、 それをファイルからの入力に切り替えているので、 void read_slogan(FILE *fp, char **slogan)側では、fpからslogan.txtの 内容を読むことができます。 これで回答になっておりますでしょうか?
[この投稿を含むスレッドを表示] [この投稿を削除]
[2040] Re:setCookieについて
投稿者:(ぱ)こと管理人
2017/12/09 21:37:53

>『基礎からのWebアプリケーション開発入門』のP.142の1行目に >「もし、Cookieを複数送りたかったら...」とあります。 >しかし、リスト4-3の29行目からのsetCookieは値を上書きしているように見えます。 >掲示板の動作には影響無いと思いますが、誤植ではないでしょうか? この掲示板の投稿画面のHTMLソースを開いてJavaScriptを見ていただくと、 以下のようになっています。 function set_cookie(key, val) { document.cookie = key + "=" + escape(val) + "; expires=Wed, 01-Jan-2031 00:00:00 GMT;"; } function set_cookies() { set_cookie("name", document.mainForm.name.value); set_cookie("url", document.mainForm.url.value); set_cookie("password", document.mainForm.password.value); } 同様のset_cookieの実装で、複数のCookieを設定することができています。 確かに、代入文を見るとどう見ても上書きに見えるので、妙な仕様だと思いますが、 たとえば以下のMozillaのサンプルでも https://developer.mozilla.org/ja/docs/Web/API/Document/cookie 以下のようにあります。 document.cookie = "name=oeschger"; document.cookie = "favorite_food=tripe"; alert(document.cookie); // displays: name=oeschger;favorite_food=tripe
[この投稿を含むスレッドを表示] [この投稿を削除]