K.Maebashi's BBS

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

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


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


[1949] Re:書籍「Webサーバを…」の1.5.4について
返信


投稿者:(ぱ)こと管理人
2016/07/17 17:06:07

Link:
はじめまして。ご意見ありがとうございます。

>この2点を実装するためにやるべきことして「マルチスレッド」を挙げていますが、マルチスレッドは必須ではないはずです。実際にマルチスレッド化しなくても(単純な永久ループ化)それなりに動きました。 
>この点についてWeb版の記述を見たのですが、そこでは「たくさんの接続先からの接続を並行して受け付けられなければなりません。 」とありマルチスレッドの必要性を説明していました。 
>書籍版よりもWeb版の方が親切な説明だと思うのですが、なぜ書籍版のような説明にしたのでしょうか。  

書籍版はWeb版を元にしていますから、この記述については「意図して抜いた」のだと思います。
記憶はだいぶあいまいですが、おっしゃるように、単純な永久ループでもそれなりに動く以上、「たくさんの接続先からの接続を『並行して受け付けられなければなりません』」と書いてしまうと、それはそれで不正確というか、ツッコミを受けてしまうかなあ、と腰が引けて抜いたように思います。
もちろん複数スレッドで応答した方がパフォーマンスがよいのは確かですから、陽にそう書くべきだったかも、とは思います。
[ この投稿を含むスレッドを表示] [ この投稿を削除]



[1948] 書籍「Webサーバを…」の1.5.4について
返信


投稿者:E2E4E9E4
2016/07/17 15:46:09

Link:
はじめまして。 
Webサーバの勉強をしようと思い、書籍「Webサーバを作りながら学ぶ 基礎からのWebアプリケーション開発入門」を読んでおります。 
少し疑問に思うことがあり、質問させていただきます。 

"1.5.4 普通にWebページを表示できるようにする"では、以下の機能を実装しようとしています。 
・tcp接続を繰り返し受け付けるようにする 
・ファイル種別に応じたContent-typeの設定 
この2点を実装するためにやるべきことして「マルチスレッド」を挙げていますが、マルチスレッドは必須ではないはずです。実際にマルチスレッド化しなくても(単純な永久ループ化)それなりに動きました。 
この点についてWeb版の記述を見たのですが、そこでは「たくさんの接続先からの接続を並行して受け付けられなければなりません。 」とありマルチスレッドの必要性を説明していました。 
書籍版よりもWeb版の方が親切な説明だと思うのですが、なぜ書籍版のような説明にしたのでしょうか。  

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



[1944] Re:magic_quotes_gpc
返信


投稿者:(ぱ)こと管理人
2016/07/06 08:01:57

Link:
……。

これは、何を言いたいのでしょうか……。

「PHPとMySQLで掲示板を作る」
http://kmaebashi.com/programmer/bbs_dev/index.html

の内容が古いので、注意書き付けるなり削除するなりしろよってこと?
[ この投稿を含むスレッドを表示] [ この投稿を削除]



[1943] magic_quotes_gpc
返信


投稿者:Naohiro19
2016/07/05 08:57:46

Link:
PHPにおいて
「magic_quotes_gpc」は5.4.0以降は、デフォルトでOFFに設定されています。
また、mysql_connectなどの巻数がPHP5.5.0以降は非推奨となり、PHP7.0.0で拡張ライブラリが削除されています。

PHPからMySQLに接続するには PDO(PHP Data Object)を使わなければなりません。
PDOの prepare(プリペア)メソッドを使うと名前付きパラメータ(:nameなど)や疑問符パラメータ(?)を利用できます。

例えば ホスト:localhost ユーザー名:root パスワード:なし データベース名:bbs_phpとしてutf-8で接続する場合はこのように書けばOKです。

PDOクラスはPDOExceptionという例外を投げてくるので try-catchで囲む必要があります。

try {
   $dbh = new PDO('mysql:host=localhost;dbname=bbs_php;charset=utf8','root','');
   $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}catch(PDOException $e){
   echo $e->getMessage();
   exit;
}
で接続が完了します。
PDOでのデータベースを操作する場合は「ドットインストール」というサイトの「PHPデータベース入門」という動画を視聴してください。

フォームにおいてユーザー入力を$_POST/$_GETで入力を受け取ってはいけないらしいので代わりとなるのが filter_input関数です。
たとえば
<input type="text" name="message">
とフォームを入力する欄があるとします。

受け取る場合は
$message = isset($_POST['message'] ? $_POST['message'] : null;
とするのではなく

$message = (string)filter_input(INPUT_POST, 'message');
とするべきでしょう。
[ この投稿を含むスレッドを表示] [ この投稿を削除]



[1942] Re:変数とは何か
返信


投稿者:var
2016/06/16 23:47:13

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

なるほど。

>コンパイル後の オブジェクトファイルに残ってすらいません。 
このあたりでピンときました。

スタックマシンタイプであれば、スタックポインタからの位置で参照できるため、
処理系が紐付けてくれているんですね。

変数という文字列なのかシンボルみたいなものがどこかで管理され、
それが参照する先が、例えば数字の5の格納位置を見ている、のようなイメージを持ってしまい混乱していまいました。


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



[1941] Re:変数とは何か
返信


投稿者:(ぱ)こと管理人
2016/06/16 04:05:24

Link:
はじめまして。

>変数hogeのアドレス(&hoge)は"0xbfbfd9e4"。 
>そこに数値5をint型で配置する。 
>これは分かるのですが、変数hoge自体は、誰がどこで管理しているのでしょうか。 
>
>図表では、0xbfbfd9e4アドレスからの始まりに5が格納されており、これは分かります。 
>しかし、同時に、"hoge"もあります。この辺りで混乱しております。 

誤解を招いたなら申し訳ないですが、p.034のFig.1-1において、
図の中に「hoge」が書いてあるのは、読者にとってわかりやすくするためで、
プログラムの実行時に「hoge」という名前がどこかに保持されているわけではありません。
Cの場合、コンパイル時にデバッグオプションを付けたりしない限り、
たいていは、ローカル変数の変数名(この場合hoge)は、コンパイル後の
オブジェクトファイルに残ってすらいません。

ではどのように変数hogeを参照しているのかといえば、素朴な実装では、スタック内の、
現在実行中の関数の使用領域(p.095のFig.2-5において、「func()から見える領域」と
書いてある範囲。スタックフレームと言います)内の位置が、コンパイル後の
機械語コードに埋め込まれていて、それを使用して参照します。
こちらの図↓で言えば、BPからの相対位置でアクセスします。

http://www.c-tipsref.com/words/stackframe.html

グローバル変数やstatic変数は、リンクの時点でアドレスが決まります。
「2-4-2 分割コンパイルとリンク」を参照してください。
[ この投稿を含むスレッドを表示] [ この投稿を削除]



[1940] 変数とは何か
返信


投稿者:var
2016/06/14 23:48:25

Link:
変数とは何か?という議論がWEBでされているのを見かけ自分の一抹の理解の不足を感じ、"C言語ポインタ完全制覇"を開きました。 

非常に分かりやすい説明で、変数の理解が得られた、と思ったと同時に、新しい疑問が湧きました。 

先の本の序盤で以下の例があります。 

int hoge = 5; 

変数hogeのアドレス(&hoge)は"0xbfbfd9e4"。 
そこに数値5をint型で配置する。 
これは分かるのですが、変数hoge自体は、誰がどこで管理しているのでしょうか。 

図表では、0xbfbfd9e4アドレスからの始まりに5が格納されており、これは分かります。 
しかし、同時に、"hoge"もあります。この辺りで混乱しております。 

0xbfbfd9efアドレスからintの大きさまで == hogeという変数

というその紐付けはまたどこかでやっている?ということでしょうか。 

恐らく基礎中の基礎のような気もしますが、調べる限り解答にたどり着けず、 
理路整然とした解説で好感持っている前橋様に質問させていただいた次第です。 

※ご迷惑おかけします。誤字あったため同内容で再投稿。
[ この投稿を含むスレッドを表示] [ この投稿を削除]



[1937] Re:単語の出現頻度を数えるプログラムについて
返信


投稿者:(ぱ)こと管理人
2016/05/21 01:18:36

Link:
>単語の出現頻度を数えるプログラムがリンカできません。_mainが未解決とエラーが
>表示されます。解決方法を教えてください。

はじめまして。

「ポインタ完全制覇」の5章を読んでのことかと思います。読んでいただきありがとうございます。

「_mainが未解決」ということは、つまりmain関数がリンクされていないということです。
単語の出現頻度のプログラムは、List5.3 main.cが、配列版、連結リスト版両方の
共通のメインルーチンとなりますので、これもリンクしてください。
[ この投稿を含むスレッドを表示] [ この投稿を削除]



[1936] 単語の出現頻度を数えるプログラムについて
返信


投稿者:くま
2016/05/20 15:33:22

Link:
単語の出現頻度を数えるプログラムがリンカできません。_mainが未解決とエラーが表示されます。解決方法を教えてください。
[ この投稿を含むスレッドを表示] [ この投稿を削除]



[1935] Re:プログラムを頂きます。
返信


投稿者:みうら
2016/05/14 17:10:37

Link:
>>とても綺麗な掲示板ですね!
>
>ありがとうございます。
>
>>これはフリーで使わせて頂いて宜しいのですか?
>
>Webで公開しているものはご自由に使っていただいて構いませんが、
>だんだん拡張したもののソースを順次貼っているのでそっくりそのままでは
>動かないかもしれませんし、PHPのver.4の頃に作ったものなので今となっては
>古いコードでもあります。
>
>そのあたりを了解の上自己責任で使われるのであれば、ご自由にしてください。
>
いいですね。
[ この投稿を含むスレッドを表示] [ この投稿を削除]



[1934] Re:プログラムを頂きます。
返信


投稿者:(ぱ)こと管理人
2016/05/12 00:44:36

Link:
>とても綺麗な掲示板ですね!

ありがとうございます。

>これはフリーで使わせて頂いて宜しいのですか?

Webで公開しているものはご自由に使っていただいて構いませんが、
だんだん拡張したもののソースを順次貼っているのでそっくりそのままでは
動かないかもしれませんし、PHPのver.4の頃に作ったものなので今となっては
古いコードでもあります。

そのあたりを了解の上自己責任で使われるのであれば、ご自由にしてください。
[ この投稿を含むスレッドを表示] [ この投稿を削除]



[1933] プログラムを頂きます。
返信


投稿者:ブラブラボール
2016/05/10 03:20:04

Link:
とても綺麗な掲示板ですね!
これはフリーで使わせて頂いて宜しいのですか?
[ この投稿を含むスレッドを表示] [ この投稿を削除]



[1930] kmaebashi.comが停止していました
返信


投稿者:(ぱ)こと管理人
2016/03/03 02:35:36

Link:
すみません、私がkmaebashi.comのサーバ料金の振り込みを忘れていたため、
kmaebashi.comが2/29〜3/1にかけて停止していたようです。

現在は振り込みましたので復旧しています。
[ この投稿を含むスレッドを表示] [ この投稿を削除]



[1929] Re:訂正
返信


投稿者:(ぱ)こと管理人
2016/02/21 20:53:08

Link:
>【文】の elseif、elsifになっていました

ちょっとどう対応すればよいのかわからなくて1ヵ月以上放置してしまいました。
今さら書いても投稿者の「けろ」さんは読んでおられないとは思うのですが。

これが、crowbarやらDiksamやらにおいて、else ifがelseifではなくて
elsifになっている、というご指摘であれば、それは意図したものです。
こちらを参照してください。

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



[1928] 訂正
返信


投稿者:けろ
2016/01/12 17:53:25

Link:
【文】の elseif、elsifになっていました
[ この投稿を含むスレッドを表示] [ この投稿を削除]



[1921] おすすめの本はありますか?
返信


投稿者:hello
2015/10/29 01:33:14

Link:
はじめまして!前橋さんのCでプログラミング言語を描く方法ガイドを今見つけたのですが、学校でパスカルのコンパイラをJavaで書く勉強をしていますがあまりよくわかりません。なにかおすすめの勉強法かウェブサイトか本はありますか?前橋さんのCのガイドに従ったらある程度わかるようになりますか?
[ この投稿を含むスレッドを表示] [ この投稿を削除]



[1920] Re:C言語ポインタ完全制覇について質問
返信


投稿者:(ぱ)こと管理人
2015/10/22 01:18:10

Link:
>222pのlist4-8 read_file.cをコンパイルすると
>$ gcc -o read_file read_file.c
>C:/DOCUME~1/中村多~1/LOCALS~1/Temp/cc8001MB.o:read_file.c:(.text+0xa9): undefined reference to `read_line'
>collect2: ld returned 1 exit status というエラーがでます。
>read_file.cの中に extern   char *read_line(FILE* fp);と定義して実行していますが、
>コンパイルできません。どこが間違っているか教えてください。
>`read_line'はread_line.cに定義されている関数です。

単純に、そのread_line.cをリンクしていないからではないでしょうか。

$ gcc -o read_file read_file.c read_line.c
[ この投稿を含むスレッドを表示] [ この投稿を削除]



[1919] C言語ポインタ完全制覇について質問
返信


投稿者:sanchu
2015/10/21 17:43:49

Link:sanchu52@fancy.ocn.ne.jp
222pのlist4-8 read_file.cをコンパイルすると
$ gcc -o read_file read_file.c
C:/DOCUME~1/中村多~1/LOCALS~1/Temp/cc8001MB.o:read_file.c:(.text+0xa9): undefined reference to `read_line'
collect2: ld returned 1 exit status というエラーがでます。
read_file.cの中に extern   char *read_line(FILE* fp);と定義して実行していますが、
コンパイルできません。どこが間違っているか教えてください。
`read_line'はread_line.cに定義されている関数です。
[ この投稿を含むスレッドを表示] [ この投稿を削除]



[1918] Re:C言語ポインタ完全制覇について質問
返信


投稿者:774RR
2015/10/20 06:50:02

Link:
だいたいいい感じだと思います。細かいところで間違っているようですけど...
int a[7]; に対して、使える要素は a[0]..a[6] の7個です。 a[7] を使ってはいけません。
read_line を使ってないようですけど・・・

お勉強ならこういうコメントを入れてみるのはとてもお勧めです。
実用に供するソースコードにこんなコメントが入っていたらそいつの実力を疑います。
(ってか以後、コード系の仕事回しませんけど)
[ この投稿を含むスレッドを表示] [ この投稿を削除]



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