K.Maebashi's BBS

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

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

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

[936] Re:トラックバックURLを変更しました
投稿者:(ぱ)こと管理人
2007/02/20 02:13:25

ええと、ハンドル名が「kit1」になっているのは、 [715] http://kmaebashi.com/bbs/list.php?boardid=kmaebashibbs&from=715&range=1 の時に間違って入力してしまったものがcookieに残っていたとかで、いつものkitさんですよね? >よくある、先方のページから逆リンクがない限りトラックバックを >認めないor要承認にするって奴はどうでしょうか? ひとつには、ここ↓で言われている関連仲間文化圏的なものをすべて弾いて良いか、という点で迷うところもあるのですけど、 http://www.kotono8.com/2006/01/06trackback.html それよりも、トラックバックで飛んでくるPOSTには、先方のページの要約しか含まれないので、これを実現するにはトラックバックのURLを見て相手側のページを取得し、URLが含まれているかどうかをチェックする必要がありますよね。そこまでやらなきゃいかんのかなあ… と思いつつ、もうふたつspamが届いている。うへぇ。
[この投稿を含むスレッドを表示] [この投稿を削除]
[935] Re:トラックバックURLを変更しました
投稿者:(ぱ)こと管理人
2007/02/20 02:13:25

ええと、ハンドル名が「kit1」になっているのは、 [715] http://kmaebashi.com/bbs/list.php?boardid=kmaebashibbs&from=715&range=1 の時に間違って入力してしまったものがcookieに残っていたとかで、いつものkitさんですよね? >よくある、先方のページから逆リンクがない限りトラックバックを >認めないor要承認にするって奴はどうでしょうか? ひとつには、ここ↓で言われている関連仲間文化圏的なものをすべて弾いて良いか、という点で迷うところもあるのですけど、 http://www.kotono8.com/2006/01/06trackback.html それよりも、トラックバックで飛んでくるPOSTには、先方のページの要約しか含まれないので、これを実現するにはトラックバックのURLを見て相手側のページを取得し、URLが含まれているかどうかをチェックする必要がありますよね。そこまでやらなきゃいかんのかなあ… と思いつつ、もうふたつspamが届いている。うへぇ。
[この投稿を含むスレッドを表示] [この投稿を削除]
[934] Re:トラックバックURLを変更しました
投稿者:kit1
2007/02/20 02:13:25

よくある、先方のページから逆リンクがない限りトラックバックを 認めないor要承認にするって奴はどうでしょうか?
[この投稿を含むスレッドを表示] [この投稿を削除]
[933] トラックバックURLを変更しました
投稿者:(ぱ)こと管理人
2007/02/20 02:13:25

 うちの雑記帳にはトラックバック機能があるのですが、トラックバックspamが毎日数十来ます。  削除の際は、そのトラックバックのURLのドメインを禁止ドメインに登録し、以後そのドメインのURLのトラックバックはすべてはじく、というフィルタを仕込んでなおこの有様です。  こんな僻地の自作トラックバックをspammerはどうやって見つけるんだろう、と考えたのですが、 ・うちの雑記帳には自動トラックバック用のRDFは入ってない。 ・「この記事のトラックバックURL」という文言を見つけて、その近辺のURLを…  とも思ったけれどこんな日本語文言を見つけて英文spamを打ってくるのも変では。 ・トラックバック受信スクリプトが「trackback.php」という名前なのが  まずいのかなあ。 と考えて、phpの名前を変更しました。  この推測が合っているかどうかは知りませんし、知っている人は知っていることのような気もしますが、ひとまずこの方法で対策します。  これでしばらくたってまたspamが来るようになったら、「この記事のトラックバックURL」という文言を画像にしてみるとか、それでも来るようならトラックバックURLの一部(http://kmaebashi.comまで、とか)を画像にしてみるとか、いろいろ試してみようと思います。
[この投稿を含むスレッドを表示] [この投稿を削除]
[932] Re:774RRさん、お返事ありがとうございます。
投稿者:774RR
2007/02/20 02:13:25

御意。およそ何がしたいのか意図がつかめないので、あの程度のコメントとなった次第。 あえてもっと詳しくコメントしてみるテスト char buf[10]; は char が 10 個の配列、の意味。10個の内訳は buf[0] .. buf[9] の10個 // 0から開始するので ということは buf[10] は存在しないので、その中身を使ってはならない。 もちろん buf[-1] や buf[-2] や buf[11] や buf[498914] 等も全部ダメ。 char *cp=buf; は char *cp=&buf[0]; の短縮形であるため cp は buf[0] を指す。 んでそもそも buf[1] ってのは *(&buf[0]+1) のこと。 cp[1] も *(cp+1) のこと。 だからこの場合 cp[1] と buf[1] は同じところを意味する。 cp=&buf[1]; とか cp=buf+1; とかすれば cp は1つずれるわけだ。 なのでこうすると、 cp がずれてる分 cp[2] と buf[3] が同じところを意味する。 当然 cp[9] は buf[10] に相当するので前述のごとくこれも使っちゃダメ。 あと配列外をアクセスするとダメってことの解説。 多くの場合配列外に相当するメモリ/アドレス表現は存在していたりする。 存在するけど、そこは他の変数だったり、他の重要な情報だったりする。 ということで配列外をアクセスすると他の変数を壊す=遠くでクラッシュしたりする。 エラーを OS/CPU が検出してくれる場合もあるが、多くは検出なしにメモリを壊すだけ。 OS/CPU が検出をサボってよい代わりにプログラマが細心の注意を払え、ってのが C/C++ その分、正常に動いている限りにおいては他言語より高速なプログラムが書けたりする。 これとは別に 配列外のオブジェクトの中身を見てはならない (buf[10] はダメ) んだけど 配列直後に限りアドレスを計算しても良い (&buf[10] はOK) という決まりがある。 for (i=0; i<10; ++i) buf[i]=0; と書いてよいごとくに for (cp=&buf[0]; cp<&buf[10]; ++cp) *cp=0; と書いてよいということ。 直後以外はダメ。なので &buf[11] や &buf[-1] は計算しちゃダメ。 計算したらエラーになるかもしれないし、 エラーにならずにおかしな値が得られるかもしれない。 C/C++ は「やっちゃだめ」なことをしたときに「何が起こるかわからない」のだ。 これを「鼻から悪魔が飛び出してもかまわない」と表現したりする。 何が起こるかわからない=エラー発生、ならまだ良かったりする。 何が起こるかわからない=一見、プログラマの期待通りに動いたりする、こともある。 後者は怖いよー。
[この投稿を含むスレッドを表示] [この投稿を削除]
[931] 管理者により削除されました
2007/02/20 02:14:51

広告なので削除。
[この投稿を含むスレッドを表示]
[930] 管理者により削除されました
2007/02/20 02:15:28

広告なので削除。
[この投稿を含むスレッドを表示]
[929] Re:774RRさん、お返事ありがとうございます。
投稿者:(ぱ)こと管理人
2007/02/20 02:13:25

昨晩は「寒いから暖房が効くまで布団の中で本でも読んでよう」と思いつつ気が付いたら朝でした。こんなのばっか。 >>buf[10] で、無いオブジェクトの中を見に行っている時点で許されない。 >>*(cp+10) も同様。 >>ただし &buf[10] や cp+10 は許されるというあたりが微妙なところであったりする。 > >明日試してみます。 ええと、試してみたところで「動いてしまう」可能性がそれなりにあります。 Cでは、配列の範囲を超えたところをアクセスしても、普通はエラー等にはならず、ずっと離れたところでプログラムがクラッシュしたりします。 それはさておき、「たけ」さんのサンプルプログラムでは、代入もしていない「buf[10]」の中身をいきなり参照していますが、それで「'1'」が入っていることを期待しているわけではないですよね? そもそも本当は何を聞きたかったのかが疑問です。 774RRさんのご指摘どおり、char buf[10];で宣言した配列のbuf[10]は参照できませんが、 char buf[10]; char *cp; cp = buf; として、*(cp + 3)とかを参照するのは合法です。buf[3]と同じものが見えます。 ただし、「*(cp + 3)」のようなわかりにくい書き方をするよりは、cp[3]と書いたほうがよいでしょう。これもbuf[3]と同じものが見えます。
[この投稿を含むスレッドを表示] [この投稿を削除]
[928] 774RRさん、お返事ありがとうございます。
投稿者:たけ
2007/02/20 02:13:25

>buf[10] で、無いオブジェクトの中を見に行っている時点で許されない。 >*(cp+10) も同様。 >ただし &buf[10] や cp+10 は許されるというあたりが微妙なところであったりする。 明日試してみます。 私は去年の4月から、プログラマーとして、仕事をしています。 配列やポインタの勉強は大変ですが、C言語が面白くなってきたところです。 たまには、酒でも飲みたいのですが、みんな忙しくて、機嫌が悪いです。
[この投稿を含むスレッドを表示] [この投稿を削除]
[927] Re:質問してもよろしいでしょうか?
投稿者:774RR
2007/02/20 02:13:25

buf[10] で、無いオブジェクトの中を見に行っている時点で許されない。 *(cp+10) も同様。 ただし &buf[10] や cp+10 は許されるというあたりが微妙なところであったりする。
[この投稿を含むスレッドを表示] [この投稿を削除]
[926] 質問してもよろしいでしょうか?
投稿者:たけ
2007/02/20 02:13:25

初心者で変な質問をしているかもしれませんが、 教えていただけると助かります。 以下のコードはC言語で許されますか? char buf[10]; char *cp; if (buf[10] != '1'){ printf("array[10]=%c",buf[10]); } cp = buf; if (*(cp + 10) != '1'){ printf("pointer[10]=%c",*(cp + 10)); }
[この投稿を含むスレッドを表示] [この投稿を削除]
[924] Re:さっそくのお返事ありがとうございました
投稿者:(ぱ)こと管理人
2007/02/20 02:13:25

 掲示板で人生相談されても困るんですが。 >お金のため(生きるため)に働くのはいやです。 >60のしらが親父になってから世界旅行して何が楽しいのかわからないです。 >生きてるか分かりませんが、60になって自分の残りの人生を考えるたときに >愕然としそうなのがこわい。死ぬまでに悟りたいことがあるんです。 >そんなひまがなく日々の仕事におわれて、いつのまにか年をとっているのが >こわいんです。  ということは「ゆう」さん的には、35過ぎてもまだあくせく働いている私なんぞは、悟りとやらも一生得られない人生の敗北者なのでしょうから、成功者のところで教えを乞うほうがよいのでは?  うちの両親は60過ぎてからあちこち旅行行ってますが、そこそこ楽しそうですけども。  「OB」さんは私の大学の先輩なのですが、一緒に酒を飲んだりすると時々、 「学生の頃は、『世間はそんなに甘くない』ということをよく聞くけれど、  いざ社会人になってみると結構甘いもんだな」  という話をしてます。  世間はもちろん甘くないところもありますが、まっとうにやっていればそうそう理不尽な目に遭うことは少ないし、何となれば転職の自由だってある。努力が常に報われるとは限らないけれども常に報われないわけでもない。特にサラリーマンなんてのは今でも何だかんだで手厚く守られているのであって、サラリーマンが勤まらないような人に起業ができるはずもない。  就職が決まっているのなら、まずはそこでがんばってみることでしょうに。何もしないうちからいったい何を言っているのかと。
[この投稿を含むスレッドを表示] [この投稿を削除]
[922] Re:システム屋さんは儲かるか?
投稿者:たまに口出しするOB
2007/02/20 02:13:25

>>技術者として前橋さんのように会社でコツコツがんばっても35歳くらいまでに、 >>金持ちになるのは不可能ですか?前橋さんの経験でよいので話してくれませんか? >>金持ちの定義は難しいですが、一生働かなくてもよいくらいお金を持っている人の >>こととします。 一生働かなくてもよいくらいのお金がいったい幾らなのかも問題ですが、 一般的にはどんな大きな会社でも、サラリーマンをしていて、そうなれることは まず無いと思います。 35歳と言わず、40歳でも50歳でもそこまでの稼ぎでリタイアできるだけの 金持ちになるためには自分で会社をやる側(経営陣、でなく会社オーナー)に ならないと無理でしょう。 また一般に会社を自分で興すとそれが楽しくて、金が問題では無くなる様に見えます。 人間の欲望は簡単にインフレーションします。今のあなたの金銭感覚でリタイヤ できるだけのお金を稼ぐ頃には、あなたの金銭感覚もインフレーションしていて その金額では満足出来なるなってることでしょう。 世間でたまに居る若くしてリタイヤするIT長者は金銭感覚のインフレーション よりも、所得の伸びが上回った大変珍しい例だと思います。
[この投稿を含むスレッドを表示] [この投稿を削除]
[921] システム屋さんは儲かるか?
投稿者:(ぱ)こと管理人
2007/02/20 02:13:25

>技術者として前橋さんのように会社でコツコツがんばっても35歳くらいまでに、 >金持ちになるのは不可能ですか?前橋さんの経験でよいので話してくれませんか? >金持ちの定義は難しいですが、一生働かなくてもよいくらいお金を持っている人の >こととします。  私は35は超えているわけですが、結論から言えば、「一生働かなくてもよいくらいお金を持って」はいませんねえ。持ってたら私だって仕事してません。サラリーマンやってる限りどの会社に行ってもそうじゃないでしょうか。  ただし、この業界は、仕事がどんどん下請け孫受けに回されて、(仕事内容に関わらず)この階層が下がるほど収入が下がっていくので、腐っても大企業に入っておけ、というのはあります。「一生働かなくてよい」というのは土台無理としても、生活のゆとりに大きく差が出ます。  本を出したら何もしなくても印税で儲かるのでは、実のところ周りからもよく言われるのですが、それなりに売れる本を出したとしても、出した年だけのことです。私の著書の中では、「ポインタ完全制覇」などはこの業界では結構なロングセラーだと思いますが、今年に関して言えば、飲み代が賄えているかどうか、というところです。 # おまえの飲み代は月にいくらなのか? というツッコミは却下。
[この投稿を含むスレッドを表示] [この投稿を削除]
[920] C言語体当たりを読んで
投稿者:ゆう
2007/02/20 02:13:25

はじめまして、私は22歳学生です。前橋さんの本は、わかりやすくて、新たな発見がたくさんありました。私は、情報学部の生徒で、来年の春からシステム系の企業に就職します。プログラムは苦手で、不安で、最近本を読みまくっています…。独習C 柴田望洋さん ポインタが理解できない理由などなど…。前橋さんの本は、他にはない説明の仕方でとてもわかりやすいです。センスオブプログラミングも途中ですけど、読んでます。わかりやすくて、ためになる知識がつきます。例えば、変数の名前の付け方などです。あげたらキリないのでやめます。ところで、前橋さんは、本を書くくらいですから、かなりの技術力をもち収入もかなりありそうですが…HPなどを拝見してると、そんなことはないみたいな感じがします。私は、金持ちになりたいです。働きたくないからです。技術者として前橋さんのように会社でコツコツがんばっても35歳くらいまでに、金持ちになるのは不可能ですか?前橋さんの経験でよいので話してくれませんか?金持ちの定義は難しいですが、一生働かなくてもよいくらいお金を持っている人のこととします。変な質問をしてすみません。答えるのがめんどければ、答えてくれなくて結構です。忙しそうなので…。
[この投稿を含むスレッドを表示] [この投稿を削除]
[919] Re:新しいプログラミング言語
投稿者:阿部
2007/02/20 02:13:25

> 掲示板での宣伝行為については、私はよその掲示板管理人より多少は寛大なつもりです。うちの趣旨に合っていて、話題投下としての書き込みであれば、たとえ宣伝が含まれていてもとやかく言うつもりはありません。ただ、アクセスログを見てみると、阿部さんの場合、 > >(1)Googleで「プログラミング言語」を検索 >(2)「プログラミング言語を作る」のトップページを参照 >(3)そこから直接掲示板に来る >(4)リスト表示から一度だけスレッド表示に切り替えた後、 >(5)いきなり投稿フォームへ > >という遷移で来ているようなので、これはかなり「無差別宣伝書き込み」に近いものだと思いますが。 > すばらしい解析能力ですね。うちに財力があれば、来ていただきたいぐらいです。 しかし、考えてみてください。僕がどうしてこのサイトを始めて訪れたとわかるのでしょうか(実際、僕は以前にもここを訪れています)。 そして、この掲示板がプログラミング言語と無縁の掲示板だったら、書き込みをしなかったでしょう。実際、僕がこのような形で書き込んだのは、ここ以外、ありませんから。それは、僕が書いたことの内容を見れば、判断できることだと思います。 さらに言えば、みなをサイトにひっぱてきて、直接の経済活動に結びつけようというものではありません。ただただ、プログラミング言語を作っている人であれば、また、そのサイトを訪れる人であれば、KI言語にも興味を持たれるかもしれない、そう思っただけなのです。何しろ、今の僕には、何の財力もなく、こうした方法で、少しでも、人に関心を持ってもらうことぐらいしか、やれることがないのです。 結局、無差別宣伝かどうかというのは、内容で判断するしかないのではありませんか? 前橋さんが無差別的書き込みに対して怒る気持ちは、よく分かります。無差別宣伝や嫌がらせに近い書き込みのために、議論やコミュニケーションの場であるはずの掲示板が機能しない。だからこそ、最近は、MIXIがはやるのでしょう(僕も、MIXIなら、まともな議論ができるのかなと思い、少し試してみましたが、残念ながら、あそこは社交の場でしかないようですね)。 ---------------------- カテナスのホームページもリニューアルして、まだ、2ヶ月足らずで、ご指摘の通り、まだまだ不十分です。ただ、少しずつ、更新していますから、「興味があれば」、見にきてください。 最後に、KI言語が何なのかよく分からないというご指摘に関して、こう答えればいいでしょうか。ページを分割して得られる領域(領域に置かれる文字列や図を含む)、自由に配置できる領域、線や曲線などの図形、スタイル情報、プログラム文、データ、メタ情報をすべてキーという名のインスタンスとしてキー構造に配置し、かつ、動的に扱える(生成、挿入、削除ができる)言語。う~む、よけいにわかりにくなったかしら。
[この投稿を含むスレッドを表示] [この投稿を削除]
[918] Re:新しいプログラミング言語
投稿者:(ぱ)こと管理人
2007/02/20 02:13:25

>> SaLAというのがKI言語の実行系のようですが、SaLAはHTMLの代わりにKI言語を解釈するWebブラウザのいとこようなものなのでしょうか。そして、それを使うと「KSCS Labo」に接続できて、お絵かきコンテストに参加できる? > >その通りです。 それを読みとるのに、少なくとも私はえらく苦労したんですけど。 >SaLAは、Vectorにも登録していますが、あなたの言うことに従えば、 >Vectorにある無名の人たちのソフトウェアは、インストールできないと >いうことでしょうか。  Vectorに登録しているということ自体初耳なわけですが、Vectorの場合、 ・Vector側で最低限の動作確認はしているだろう。 ・もし悪さをするようなソフトなら、ダウンロードしたユーザからVectorに  通報が行き、しかるべき処置がなされるだろう。  という期待があるから、そのへんの無名のページからダウンロードするよりは安心感が多少増すでしょうね。もちろんそれはVectorという会社の実績と知名度によるものです。  まあ実際には、Vectorも「分類目的で内容をチェックすること」しか行ってないようですし、考えてみればMan-in-the-middle攻撃くらってファイルを途中で差し替えられる可能性もゼロとは言えなさそうですが(でも一度でもそれが表面化すれば、Vectorは何らかの対策をしてくれるだろうという期待はあります)。  このへんの線引きは人によっていろいろあるでしょうが、少なくとも私は、「掲示板への宣伝書き込みからリンクされてるページ」にあるものをうかうかとダウンロードして実行することはできません。これは普通の感覚ではないでしょうか。  掲示板での宣伝行為については、私はよその掲示板管理人より多少は寛大なつもりです。うちの趣旨に合っていて、話題投下としての書き込みであれば、たとえ宣伝が含まれていてもとやかく言うつもりはありません。ただ、アクセスログを見てみると、阿部さんの場合、 (1)Googleで「プログラミング言語」を検索 (2)「プログラミング言語を作る」のトップページを参照 (3)そこから直接掲示板に来る (4)リスト表示から一度だけスレッド表示に切り替えた後、 (5)いきなり投稿フォームへ という遷移で来ているようなので、これはかなり「無差別宣伝書き込み」に近いものだと思いますが。
[この投稿を含むスレッドを表示] [この投稿を削除]
[917] Re:新しいプログラミング言語
投稿者:阿部
2007/02/20 02:13:25

>ソフトウェアが使われるのは、ユーザが望む機能がそこにあるからだと思います。知名度が高くても、使ってみようと思わない限りは使われません。 僕が書いたのは、「知名度ないと、ユーザの望む機能があったとしても、使われない」ということです。
[この投稿を含むスレッドを表示] [この投稿を削除]
[916] Re:新しいプログラミング言語
投稿者:トル
2007/02/20 02:13:25

>会社名でソフトウェアの信用性が決まるとしたら、悲しいことですね。 >正直のところ、私は、今、肩書きや知名度で判断されるこの社会の中で、それっとどうなの?と叫んではみるものの、いやと言うほどその厳しさを感じています。 ソフトウェアが使われるのは、ユーザが望む機能がそこにあるからだと思います。知名度が高くても、使ってみようと思わない限りは使われません。
[この投稿を含むスレッドを表示] [この投稿を削除]
[915] Re:新しいプログラミング言語
投稿者:阿部
2007/02/20 02:13:25

> SaLAというのがKI言語の実行系のようですが、SaLAはHTMLの代わりにKI言語を解釈するWebブラウザのいとこようなものなのでしょうか。そして、それを使うと「KSCS Labo」に接続できて、お絵かきコンテストに参加できる? その通りです。お絵かきコンテストは、少しでも実際に試してもらえればと、考えた企画です。KI言語では、ドロー系の描画を描画命令を順次実行するのではなく、一種のオブジェクトとして、定義しているため、描画ツールの作成が簡単に行えます。 > それはそれで面白そうではありますが、失礼ながら私は「有限会社カテナス」という会社を存じ上げているわけではないですから、「出処不明のソフトウェア」をそうそう軽々しくインストールするわけにも行きませんし。 SaLAの開発にようやく終わりが見えてきた今、多くの人に使ってもらって、反応を知りたいと考えています。それで、こちらにも投稿したのですが、もし、会社名でソフトウェアの信用性が決まるとしたら、悲しいことですね。SaLAは、Vectorにも登録していますが、あなたの言うことに従えば、Vectorにある無名の人たちのソフトウェアは、インストールできないということでしょうか。 正直のところ、私は、今、肩書きや知名度で判断されるこの社会の中で、それっとどうなの?と叫んではみるものの、いやと言うほどその厳しさを感じています。
[この投稿を含むスレッドを表示] [この投稿を削除]
[914] Re:C言語体当たり学習
投稿者:めがね
2007/02/20 02:13:25

丁寧な解説ありがとうございます。 確かに、前橋さんのおっしゃるとおり、 >・sorted_countは「ソートされた要素の数」である。 >・すべての要素がソートされた要素になればよいのだから、sorted_countが  score_countになるまで回せばよい。 と考えるのは直感的で分かりやすいと思います。 > 単純選択ソートにおいて、未ソート範囲から最小値を選ぶとき、たまたま未ソート範囲内の左端が最小値であれば、事実上交換は発生しません(同じ変数同士の交換になる)。、「sorted_count < score_count」としたとき最後に起きる無駄な交換も、現象としてはこれと同じです。 確かに、言われてみればそのとおりですね。 なんだか重箱の隅をつつくような質問ですいませんでした。
[この投稿を含むスレッドを表示] [この投稿を削除]
[913] Re:C言語体当たり学習
投稿者:(ぱ)こと管理人
2007/02/20 02:13:25

>もう一つ質問なのですが、36行目から始まる外側のforループの判定条件を >「i < score_count - 1」としなかったのは何か訳があってのことでしょうか? >もし何か訳があれば補足をお願い致します。 特に理由があるわけではないですし、こっちがよいとか主張したいわけでもないですが。 ・sorted_countは「ソートされた要素の数」である。 ・すべての要素がソートされた要素になればよいのだから、sorted_countが  score_countになるまで回せばよい。 ということで、直感的であるかとは思います。  107ページの図(Fig.2-7)に、「ソートずみの範囲」と「未ソートの範囲」を色分けし、間に線を引いた図がありますが、ソートが進むにつれ、この境界線がだんだん右に移動し、ついに右端に至ったときがソートの終了と考えれば、「sorted_count < score_count」になるように思います。境界線の右から左に、ぽいぽい要素を放り込んでいくイメージです。  単純選択ソートにおいて、未ソート範囲から最小値を選ぶとき、たまたま未ソート範囲内の左端が最小値であれば、事実上交換は発生しません(同じ変数同士の交換になる)。、「sorted_count < score_count」としたとき最後に起きる無駄な交換も、現象としてはこれと同じです。単純選択ソートであれば、確かに言われてみれば最後に残った要素は最大値に決まってますから「境界線の右から左に放り込む」必要はないわけなのですが、コメントでも書いておかないと、私の場合「あれっ」とか思ってしまいそうです。  挿入ソート(List 4-6)でも、「境界線の右から左に、ぽいぽい要素を放り込んでいく」操作を行いますが、こちらでは、最後に残るのが最大値とは限りません。単純選択ソートにおいて最後に最大値が残るのは、あくまでこのソート方法の特性なので、そこを理解して効率のよいコードを書くのもよいですが、必ずしもそこまでやらなくてもバチはあたらないのではないでしょうか。 # とか言いつつ挿入ソートのサンプルソースでは、sorted_countを1から始めてるな…(^^;
[この投稿を含むスレッドを表示] [この投稿を削除]
[912] Re:C言語体当たり学習
投稿者:kit
2007/02/20 02:13:25

> 36行目から始まる外側のforループの判定条件を > 「i < score_count - 1」としなかったのは何か訳があってのことでしょうか? > もし何か訳があれば補足をお願い致します。 C言語のfor文の判定条件は毎回評価されるので、年寄りとしては ループ内で不変な値を条件式に書くのは躊躇しちゃいますね。 たいてい lim = score_count - 1; for (sorted_count = 0; sorted_count < lim; sorted_count++) { としちゃいます。 まあ score_count が auto 変数でかつアドレス参照されてなければ、 あるいはループ内に関数呼びだしがなければ、いまどきのコンパイラは 自動的に同等な機械語に変換してくれるんでしょうけど。
[この投稿を含むスレッドを表示] [この投稿を削除]
[911] Re:C言語体当たり学習
投稿者:yuya
2007/02/20 02:13:25

面白い話題ですね。 私だったら、実行時の無駄を承知の上で判定条件を sorted_count < score_count; /* (-1)は付けない */ とします。 最小値を表す記号を min{x, y, z, ...} と書いたとき、 min{5, 3, 8} = 3 min{2, 2} = 2 min{6} = 6 などとなりますが、このminを定義(あるいは実装)するときに、 ・要素数が2個以上のとき……最小の要素を選ぶ ・要素数が1個  のとき……その要素そのもの と場合分けするのが良いと考える人は少ないと思います。 そんな話はこの判定条件の問題とは違うのかもしれませんが、 大局的には同じようなセンスの問題をはらんでいると私には感じられます。 経験上は(って、アマチュアですけど)、このようなスタンスで臨むほうが 仕様変更や拡張に強いコーディングになるような気がします。
[この投稿を含むスレッドを表示] [この投稿を削除]
[910] Re:C言語体当たり学習
投稿者:めがね
2007/02/20 02:13:25

>my_sort5.cは挿入ソートではなく、単純選択ソートですね。 間違えました。 >(1)条件は「<」なのですから、sorted_countのループ内での最大値は > score_count-1です。よって、score[sorted_count]で参照する限り、 > 範囲外を参照することはありません。 >(2)38行目からのループは、 > for (i = sorted_count + 1; i < score_count; i++) { > で始まっています。iがsorted_count + 1から始まりますが、 > sorted_countが最大のとき、このループは1回も回らないので、score[i]で > 範囲外が参照されることもありません。 こちらから指摘しておいてすいません。その通りのようです。私が勘違いしていました。 もう一つ質問なのですが、36行目から始まる外側のforループの判定条件を 「i < score_count - 1」としなかったのは何か訳があってのことでしょうか?もし何か訳があれば補足をお願い致します。
[この投稿を含むスレッドを表示] [この投稿を削除]
[909] Re:C言語体当たり学習
投稿者:(ぱ)こと管理人
2007/02/20 02:13:25

>p106のmy_sort5.cのソースコード36行目から始まる単純挿入ソートなのですが、 >誤:for(sorted_count = 0; sorted_count < score_count; sorted_count++) { >正:for(sorted_count = 0; sorted_count < score_count - 1; sorted_count++) { >ではないでしょうか(判定条件の-1が抜けてる)。 >誤りと思われるコードでは、配列の範囲外を(配列の要素数より1つ分多く) >参照してしまうと思います。 my_sort5.cは挿入ソートではなく、単純選択ソートですね。 ソースを確認しましたが、 (1)条件は「<」なのですから、sorted_countのループ内での最大値は  score_count-1です。よって、score[sorted_count]で参照する限り、  範囲外を参照することはありません。 (2)38行目からのループは、  for (i = sorted_count + 1; i < score_count; i++) {  で始まっています。iがsorted_count + 1から始まりますが、  sorted_countが最大のとき、このループは1回も回らないので、score[i]で  範囲外が参照されることもありません。 ただ、単純選択ソートの原理は「未ソート部分から最小値を探してきて左端に持ってくる」というものですから、最後にひとつ残された未ソートの要素は最大値に決まっているので、無駄といえば無駄ではあります。現状のソースだと43~45行目のスワップで、必ず同じ変数をひっくり返します。 これはバグとは思いませんが、補足かなにかで書いておいた方がよいかもしれませんね(今日は時間が時間なのでアレですが)。 ご意見ありがとうございました。
[この投稿を含むスレッドを表示] [この投稿を削除]
[908] C言語体当たり学習
投稿者:めがね
2007/02/20 02:13:25

前橋さんの「C言語体当たり学習」の読者です。 正誤表に反映されてない誤りと思われる記述を見つけたので報告させていただきます。 p106のmy_sort5.cのソースコード36行目から始まる単純挿入ソートなのですが、 誤:for(sorted_count = 0; sorted_count < score_count; sorted_count++) { 正:for(sorted_count = 0; sorted_count < score_count - 1; sorted_count++) { ではないでしょうか(判定条件の-1が抜けてる)。 誤りと思われるコードでは、配列の範囲外を(配列の要素数より1つ分多く)参照してしまうと思います。
[この投稿を含むスレッドを表示] [この投稿を削除]
[907] Re:新しいプログラミング言語
投稿者:(ぱ)
2007/02/20 02:13:25

>僕も新しいプログラミング言語を開発しました。言語名はKIです。 … >ぜひ、試してみてください。できる限り、オープンな形で今後も >開発を進めたいと思っていますので。  すみません、ページを拝見したのですが、どういうソフトでどういう言語なのか、よくわかりませんでした。  SaLAというのがKI言語の実行系のようですが、SaLAはHTMLの代わりにKI言語を解釈するWebブラウザのいとこようなものなのでしょうか。そして、それを使うと「KSCS Labo」に接続できて、お絵かきコンテストに参加できる?  それはそれで面白そうではありますが、失礼ながら私は「有限会社カテナス」という会社を存じ上げているわけではないですから、「出処不明のソフトウェア」をそうそう軽々しくインストールするわけにも行きませんし。
[この投稿を含むスレッドを表示] [この投稿を削除]
[906] Re:教えてください
投稿者:(ぱ)
2007/02/20 02:13:25

>オブジェクト指向初心者です。 こんにちは。 >最終行の"こちら"の部分がリンク切れのようですが、どこへのリンクでしょうか?  すみません、以前にも指摘があって、掲示板には書いたのですが、HTMLの方は直していませんでした。  書いたのはずいぶん前なので記憶が曖昧なところはありますが、ここのリンク先は↓です。  http://kmaebashi.com/programmer/object/shigoto.html  strtok()のように同時に2箇所で使えない「関数」では再利用性が高いとはいえないが、StringTokenizerのようにオブジェクトにすることで、より広く、どこでも自由に使えるようになった、という意図で書いています。
[この投稿を含むスレッドを表示] [この投稿を削除]
[905] 教えてください
投稿者:オブジェクト指向初心者
2007/02/20 02:13:25

オブジェクト指向初心者です。 「疑り深いあなたのためのオブジェクト指向再入門」を拝見しましたが、 一部リンク切れがあり、内容が非常に気になりますので教えていただければ幸いです。 2. なぜわからなくなってしまうのか? オブジェクト指向で再利用性は高まるか? ~この点についてはこちらで後述します。 最終行の"こちら"の部分がリンク切れのようですが、どこへのリンクでしょうか?
[この投稿を含むスレッドを表示] [この投稿を削除]