K.Maebashi's BBS

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

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

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

[209] Re:C言語ポインタ完全制覇についての質問
投稿者:774RR
2007/02/20 02:13:25

おっと自己レス。 cl -W4 -Za -c hoge.c だと hoge.c(7) : warning C4013: 関数 'piyo' は定義されていません。int 型の値を返す外部関数と見なします。 となるのでやはりブロックスコープなのが本来みたいですね。 ブロックスコープを超越して大域に関数宣言が有効になるのは(互換性のための)拡張機能、と。 # 規格書を要確認だなこりゃ。
[この投稿を含むスレッドを表示] [この投稿を削除]
[208] Re:C言語ポインタ完全制覇についての質問
投稿者:774RR
2007/02/20 02:13:25

C 規格書はウチに帰らないと無いのでアレげですが C++ 規格書であれば 「JIS X3014:1998-3.3.2 局所的な有効範囲」で、 ブロック内に宣言された名前はそのブロックに局所的である。 と書かれています。実際以下のコードはコンパイルエラーです。 ---hoge.cpp--- int func1(void) { extern int piyo(void); return piyo(); } int func2(void) { return piyo(); } ---EOF of hoge.cpp--- んで、上記を hoge.c とした場合の挙動ですが bash-3.0$ hppa2.0w-hp-hpux11.00-gcc-3.3.4 -Wall -c hoge.c hoge.c: In function `func2': hoge.c:7: warning: implicit declaration of function `piyo' Microsoft Visual C++ 6.0SP6 だと cl -W4 -c hoge.c hoge.c(2) : warning C4210: 非標準の拡張機能が使用されています : 関数にはファイル スコープが与えられています。 hoge.c(7) : warning C4217: 非標準の拡張機能が使用されています : 以前のブロックでの関数宣言です。 となりました。 やはり言語規格がスコープ詳細等を定めていないようです。 # IE6 でも Acrobat Reader を uninstall してから JIS 閲覧するとゲフガフ # って検索が効かない文書なので、むりくり保存してもあまり役に立たない鴨。
[この投稿を含むスレッドを表示] [この投稿を削除]
[207] Re:C言語ポインタ完全制覇についての質問
投稿者:九龍
2007/02/20 02:13:25

774RRさん、度々申し訳ありません。 >リンク先の12番の解説を文字通りに解釈してください。 >仮定義(初期化子なし定義)だけがあって、初期化子あり定義が無い場合、 >翻訳単位のEOFに達した時点で仮定義は定義となります。 >--hoge.c-- >int x; // 仮定義 >int x; // 仮定義:何回仮定義が現れても(既存の宣言に反しない限り)問題ない >int x; // 仮定義 >--EOF of hoge.c-- >この時点で int x=0; と定義されたことになる。 > >>上記の場合だと、b.cのint a;が仮定義なので、 >この文章はある意味YES、ある意味NO。確かに int a; は仮定義ですが、既に述べたとおり >翻訳単位 (b.c) の EOF に達した時点で、仮定義は「仮ではない『定義』」になります。 >よって提示の例では a.c b.c ともに変数 a が定義されています。 >そこではじめてリンク先13番目の解説が効いてきます。 > >>a.cで定義されているint a = 1;のオブジェクトとまとめられたと言うことで >「仮定義だからまとめられた」のではありません。 >「C では、定義が複数ある場合の挙動が定められていない」(未定義動作) >→「エラーにするのも、定義を1つにまとめるのも処理系の実装次第」 >→→「多くの C 処理系では定義を1つにまとめちゃう」 >となっただけです。 > >>b.cのint a;がextern int a;と解釈されている訳ではないという解釈で宜しいでしょうか? >コンパイラは int a; を勝手に extern int a; と解釈しません。 >そのへん関数宣言と変数宣言で文法が違う場所です。 なるほど。理解できました。 ご丁寧な解説、ありがとうございます。
[この投稿を含むスレッドを表示] [この投稿を削除]
[206] Re:C言語ポインタ完全制覇についての質問
投稿者:774RR
2007/02/20 02:13:25

リンク先の12番の解説を文字通りに解釈してください。 仮定義(初期化子なし定義)だけがあって、初期化子あり定義が無い場合、 翻訳単位のEOFに達した時点で仮定義は定義となります。 --hoge.c-- int x; // 仮定義 int x; // 仮定義:何回仮定義が現れても(既存の宣言に反しない限り)問題ない int x; // 仮定義 --EOF of hoge.c-- この時点で int x=0; と定義されたことになる。 >上記の場合だと、b.cのint a;が仮定義なので、 この文章はある意味YES、ある意味NO。確かに int a; は仮定義ですが、既に述べたとおり 翻訳単位 (b.c) の EOF に達した時点で、仮定義は「仮ではない『定義』」になります。 よって提示の例では a.c b.c ともに変数 a が定義されています。 そこではじめてリンク先13番目の解説が効いてきます。 >a.cで定義されているint a = 1;のオブジェクトとまとめられたと言うことで 「仮定義だからまとめられた」のではありません。 「C では、定義が複数ある場合の挙動が定められていない」(未定義動作) →「エラーにするのも、定義を1つにまとめるのも処理系の実装次第」 →→「多くの C 処理系では定義を1つにまとめちゃう」 となっただけです。 >b.cのint a;がextern int a;と解釈されている訳ではないという解釈で宜しいでしょうか? コンパイラは int a; を勝手に extern int a; と解釈しません。 そのへん関数宣言と変数宣言で文法が違う場所です。
[この投稿を含むスレッドを表示] [この投稿を削除]
[205] Re:C言語ポインタ完全制覇についての質問
投稿者:九龍
2007/02/20 02:13:25

>それをやっちゃうと、swap(float *a, float *b)のような関数で困りますし。 なるほど。仰られる通りです。 >もともと、プロトタイプ宣言なんて書かなくても(警告は出ても)動きますから、 >結合はされるとしても、プロトタイプ宣言の有効範囲は微妙な問題のように >思います。 > >以下のソースをbcc32でコンパイルしたところ、 > >void hoge1(void) >{ > extern void piyo(int a); > > piyo(1); >} > >void hoge2(void) >{ > piyo(2); >} > >こんなエラーが出ました。 >エラー E2356 proto2.c 10: 'piyo' の再宣言で型が一致していない(関数 hoge2 ) >エラー E2344 proto2.c 3: 一つ前の 'piyo' の定義位置(関数 hoge2 ) > >hoge2のブロックの先頭に「extern void piyo(int a);」を入れると >ちゃんと通るので、少なくともbcc32においては、hoge1()内部の宣言がそのまま >hoge2()内部で有効になっているというわけではないようです。 > >この件について規格書になにか書いてないかとぱらぱらめくったのですが >見つけられませんでした。 わざわざ規格書まで調べて頂き有り難うございます。 と、ゆうことは処理系依存って事なんでしょうね…。
[この投稿を含むスレッドを表示] [この投稿を削除]
[204] Re:C言語ポインタ完全制覇についての質問
投稿者:(ぱ)
2007/02/20 02:13:25

> どうせ仮引数でdoubleしか渡せないのなら、void sub_funcの関数宣言での >floatへのポインタの仮引数宣言は、doubleへのポインタに読み替えられて >いるのではないかという勝手な勘違いです。 それをやっちゃうと、swap(float *a, float *b)のような関数で困りますし。 > 例えば、別のモジュールで定義宣言されている関数を、他のモジュールの >関数ブロック内でextern void f (void)とすると(普通はこんなことしませんが)、 >その関数ブロック内だけでその関数への参照が可能だと思っていたのですが、 >それより下の関数定義ブロック内でも参照可能となっていました(VC++ 6.0で確認)。 もともと、プロトタイプ宣言なんて書かなくても(警告は出ても)動きますから、 結合はされるとしても、プロトタイプ宣言の有効範囲は微妙な問題のように 思います。 以下のソースをbcc32でコンパイルしたところ、 void hoge1(void) { extern void piyo(int a); piyo(1); } void hoge2(void) { piyo(2); } こんなエラーが出ました。 エラー E2356 proto2.c 10: 'piyo' の再宣言で型が一致していない(関数 hoge2 ) エラー E2344 proto2.c 3: 一つ前の 'piyo' の定義位置(関数 hoge2 ) hoge2のブロックの先頭に「extern void piyo(int a);」を入れると ちゃんと通るので、少なくともbcc32においては、hoge1()内部の宣言がそのまま hoge2()内部で有効になっているというわけではないようです。 この件について規格書になにか書いてないかとぱらぱらめくったのですが 見つけられませんでした。 ご存知の方がいらっしゃいましたら情報よろしくお願いいたします(_o_)
[この投稿を含むスレッドを表示] [この投稿を削除]
[203] Re:C言語ポインタ完全制覇についての質問
投稿者:九龍
2007/02/20 02:13:25

774RRさん、度々申し訳ありません。 すばやいレスありがとうございます。 つまり、 --a.c-- int a = 1; // 定義 --b.c-- int a; // 仮定義 上記の場合だと、b.cのint a;が仮定義なので、a.cで定義されているint a = 1;のオブジェクトとまとめられたと言うことで、b.cのint a;がextern int a;と解釈されている訳ではないという解釈で宜しいでしょうか? (774RRさんがお書きになったリンク先の13番目の項目に該当するので、結局それは処理系依存になる為、VC++ 6.0ではまとめられて解釈されたというような解釈で宜しいでしょうか?) 後、くだらない事をお聞きしますが、 -- a.c -- #include <stdio.h> extern void f (void); // a.c の関数 f と結び付く(通常externは付けないけど) int main (void) { f (); return 0; } static void f (void) { printf ("a.c の関数 f\n"); } -- b.c -- #include <stdio.h> extern void f (void) { printf ("b.c の関数 f\n"); } の場合、main関数のf関数の呼び出しは、a.cにある関数fとなりますが、この場合のextern void f (void)の関数プロトタイプ宣言のリンケージ属性はどうなるのでしょうか? くだらない質問ですが、宜しくお願い致します。
[この投稿を含むスレッドを表示] [この投稿を削除]
[201] Re:C言語ポインタ完全制覇についての質問
投稿者:774RR
2007/02/20 02:13:25

関数宣言と変数宣言では話が違います。 関数宣言の省略時解釈は extern つまり外部結合ありです。 関数定義においても省略時解釈は extern つまり外部結合ありです。 関数定義と関数宣言とでは書式が違うので誤解を生む余地が無く、問題は発生しません。 大域変数の「定義にならない宣言」の場合は extern が必須です。 extern を書かずに大域変数を宣言し、初期化子が無い場合 ・C の場合:変数の仮定義となります。仮定義は複数個あってかまいません。 ・C++ の場合:変数の定義となります。定義は1つしか許されません。 ・C/C++ とも、その大域変数は外部結合となります。 --a.c-- extern int g; /* 定義にならない宣言 */ int g; /* 仮定義 */ int g=1; /* 定義 */ C の場合、言語規格は 「同一翻訳単位中に同一名称の大域変数の複数個の仮定義がある」ことを認めています。 「複数翻訳単位中に同一名称の大域変数の定義がある」ことは定めておらず、 たいていの処理系では全翻訳単位での定義を1つにまとめてしまいます。 ==b.cpp== extern int g; /* 定義にならない宣言 */ int g; /* 定義 */ int g=1; /* 再定義:エラー */ C++ の場合、仮定義などというものはないので 「同一翻訳単位中に同一名称の大域変数の複数個の定義がある」 「複数翻訳単位中に同一名称の大域変数の複数個の定義がある」 の両方が言語規格上、認められずエラー発生となります。 http://www2s.biglobe.ne.jp/~hig/q_a/Programing_QA02.html
[この投稿を含むスレッドを表示] [この投稿を削除]
[200] Re:C言語ポインタ完全制覇についての質問
投稿者:九龍
2007/02/20 02:13:25

774RRさん、はじめまして。 >>>int hoge(void); という関数宣言は extern int hoge(void); と解釈されます。 >>そのため、過去のコンパイラ用に書かれたコードとの互換性のために、 >>「複数個の翻訳単位で同一名称の変数が定義されたら、それを同一の実体とみなす」 >>処理系がほとんどです。 という事は、他の翻訳単位のファイルスコープ(外部宣言)で同一識別子で変数定義宣言をおこなった場合でも、省略時解釈ではexternになるために省略可能(でも普通は区別する為に付けますが)って解釈で宜しいのでしょうか?
[この投稿を含むスレッドを表示] [この投稿を削除]
[199] Re:C言語ポインタ完全制覇についての質問
投稿者:774RR
2007/02/20 02:13:25

>>・どこかで定義されている関数を使う場合、プロトタイプ宣言を行うが、 >> これにはexternをつけても付けなくても良い(で、たぶん普通はつけない) つけてもつけなくても良い、というか単純に省略時解釈なだけですね。 int hoge(void); という関数宣言は extern int hoge(void); と解釈されます。 void piyo(void) {} という関数定義は extern void piyo(void) {} と解釈されます。 extern がついているので外部結合となるわけです。 あと C と C++ では規則が少し変更されていて --a.cpp-- int g; --b.cpp-- int g; とするとエラーになります (One Definition Rule : ISO/IEC 14882:1998 3.2) C の場合 ODR の規定がありません。 そのため、過去のコンパイラ用に書かれたコードとの互換性のために、 「複数個の翻訳単位で同一名称の変数が定義されたら、それを同一の実体とみなす」 処理系がほとんどです。 # そーいうコードが多く残っているので。
[この投稿を含むスレッドを表示] [この投稿を削除]
[198] Re:C言語ポインタ完全制覇についての質問
投稿者:九龍
2007/02/20 02:13:25

 (ぱ)さん、はじめまして。  丁寧なご解答ありがとうございます。 >そうです…と答えると一言で終わってしまうわけですが、何か疑問があるので >質問されたのだと思います。そこをもう少し明確にしていただけると、何か回答 >できるかもしれません。 >たとえばfloat 4バイト、double 8バイトの処理系を仮定したとして、fは実は >doubleなので 8バイトです。その領域をfloat *で読めるはずはないわけです。    するどいですね。実は私が最初に思ったのが、どうせ仮引数でdoubleしか渡せないのなら、void sub_funcの関数宣言でのfloatへのポインタの仮引数宣言は、doubleへのポインタに読み替えられているのではないかという勝手な勘違いです。  それでちょっと心配になったのでご質問させて頂きました。  後、externとリンケージについての解答もありがとうございます。 >・どこかで定義されている関数を使う場合、プロトタイプ宣言を行うが、 > これにはexternをつけても付けなくても良い(で、たぶん普通はつけない)  昔、プロトタイプ宣言にexternをつけていたプログラムがあったので、一時期付けていた記憶があります。  話はちょっと脱線しますが、http://okuyama.mt.tama.hosei.ac.jp/unix/C/slide82-1.htmlにある解説、表はちょっと分かりずらいと思うのですが…。  例えば、別のモジュールで定義宣言されている関数を、他のモジュールの関数ブロック内でextern void f (void)とすると(普通はこんなことしませんが)、その関数ブロック内だけでその関数への参照が可能だと思っていたのですが、それより下の関数定義ブロック内でも参照可能となっていました(VC++ 6.0で確認)。  変数の場合であれば、その関数ブロック内のみ有効な筈ですが…。  うーん、ややっこしい。  ちょっと長くなりそうなので、この辺でやめておきます。  これからもちょくちょく寄らせて頂きますので、宜しくお願い致します。
[この投稿を含むスレッドを表示] [この投稿を削除]
[194] Re:C言語ポインタ完全制覇についての質問
投稿者:(ぱ)
2007/02/20 02:13:25

> 初めまして、九龍と申します。 > C言語でのプログラム経験は結構長いのですが、ある事が分からなかったので、 > C言語ポインタ完全制覇に購入させて頂きました。 はじめまして。お買い上げいただきありがとうございます。 > それで、現在読んでいる真っ最中なのですが、p303ページに記載されている >「fは勝手にdoubleに読み替えられているので,当然正しく渡らないことになります.」 > の意味が分かりません。 > 上記は、仮引数float fは、double fと読み替えられているため、fのポインタを >渡しても、void sub_func 関数では、floatへのポインタで間接参照されるため、 >正常に参照されないということでよろしいのでしょうか? そうです…と答えると一言で終わってしまうわけですが、何か疑問があるので 質問されたのだと思います。そこをもう少し明確にしていただけると、何か回答 できるかもしれません。 たとえばfloat 4バイト、double 8バイトの処理系を仮定したとして、fは実は doubleなので 8バイトです。その領域をfloat *で読めるはずはないわけです。 > 後、もし宜しければexternとリンケージに関する事も教えて頂ければと思います。 > p80の脚注にも出てきているので、ちょっとインターネットで調べてみたのですが >(http://okuyama.mt.tama.hosei.ac.jp/unix/C/slide82-1.html)、見た瞬間に >定義宣言と参照宣言、関数プロトタイプ宣言がごっちゃになりました。 そのページにあるように、外部結合とは、 | プログラムが複数のソースファイルから構成される場合,それらすべての | ソースファイルにおいて同一のオブジェクト,或いは関数として参照。 ですよね? それに対し内部結合はそのソースファイルの中だけで有効なリンケージです。 関数や変数を内部結合にするためにはstaticを付けますが、 外部結合の場合、定義では何もつけず、宣言ではexternを付ける…と決まっていれば 説明が楽なのですが、実際には、 ・どこかで定義されている変数を参照する場合、externを付けなくても、たいていの  処理系では何のエラーにもならない(p.317を参照) ・どこかで定義されている関数を使う場合、プロトタイプ宣言を行うが、  これにはexternをつけても付けなくても良い(で、たぶん普通はつけない) ということで、説明がややこしくなっています。 > (なにせ今まで、どこかで定義宣言をしている変数を参照する場合には、 > externを付ければ良いぐらいにしか思ってなかったんで。) この認識で正しいと思います。
[この投稿を含むスレッドを表示] [この投稿を削除]
[193] C言語ポインタ完全制覇についての質問
投稿者:九龍
2007/02/20 02:13:25

 初めまして、九龍と申します。  C言語でのプログラム経験は結構長いのですが、ある事が分からなかったので、C言語ポインタ完全制覇に購入させて頂きました。  それで、現在読んでいる真っ最中なのですが、p303ページに記載されている「fは勝手にdoubleに読み替えられているので,当然正しく渡らないことになります.」の意味が分かりません。  上記は、仮引数float fは、double fと読み替えられているため、fのポインタを渡しても、void sub_func 関数では、floatへのポインタで間接参照されるため、正常に参照されないということでよろしいのでしょうか?  一生懸命意味を理解しているつもりですか、拙い理解能力で申し訳ありません。  後、もし宜しければexternとリンケージに関する事も教えて頂ければと思います。  p80の脚注にも出てきているので、ちょっとインターネットで調べてみたのですが(http://okuyama.mt.tama.hosei.ac.jp/unix/C/slide82-1.html)、見た瞬間に定義宣言と参照宣言、関数プロトタイプ宣言がごっちゃになりました。  (なにせ今まで、どこかで定義宣言をしている変数を参照する場合には、externを付ければ良いぐらいにしか思ってなかったんで。)  宜しくお願い致します。
[この投稿を含むスレッドを表示] [この投稿を削除]
[192] Re:ありがとうございます
投稿者:(ぱ)
2007/02/20 02:13:25

本筋と関係ないですが。 >(ぱ)さん、kit2004さん本当にありがとです。 kitさんはkitさんであってkit2004さんではないわけですが、 神奈川さんが「kit2004」さんだと思ってしまったのは、スレッド表示のとき ハンドル名と日付の間に空白が空いてなかったからだと思います。 これは掲示板の仕様の問題で、要するに私が悪いので、先ほど修正しました。 数日前から気になってはいたのですが、対応が遅くなりましてすみません。
[この投稿を含むスレッドを表示] [この投稿を削除]
[191] ありがとうございます
投稿者:神奈川
2007/02/20 02:13:25

件名を変更しました。 (ぱ)さん、kit2004さん本当にありがとです。 根本的なところから、やり直す必要が多々あるかもしれません。 プログラムを始めてから、はや2週間ぐらいになります。 ここまで成長(といってもまだまだですが)したのも、ひとえに皆さん のお陰だと思っています。 解らない事もたくさんあり、丁寧に教えてくださったり、サイトを教えてくださったり 本当に感謝しています。 プログラム以外の基本的なこと(ぱ)さんが指摘してくださった。質問のしかたなど も勉強になりました。 こんな基本的なことも知らずに皆さんに接していた事は、失礼な事だと承知しました。 皆さんに聞くにしても、ちゃんとしたルールを守る必要があると強く思いました。 私としては、本や参考書などまず自分で調べてみて、解らなかった事は、人に聞くという プロセスを実行しています。そこで安易に「解らなかったから教えてください」という 感じになっていました。もしかしたら皆さんに不快な思いをさせてしまったかもしれません。 もしそうでしたら、申し訳ないです。 もう一つ自分を成長させるためにも、頑張ってみます。そして本当に解らなかった時、 具体的な説明を踏まえ解らない所を説明をします。 また逆に私が皆さんのお役に立てるように皆さんのお話を継承しこの掲示板を利用していきたいと思います。
[この投稿を含むスレッドを表示] [この投稿を削除]
[190] Re:XMLについて
投稿者:kit
2007/02/20 02:13:25

> こういう場合は、似たようなことを > している他人のプログラムを読んで理解し、真似を > することから始めるのがいいんじゃないでしょうか。 書き忘れましたが、読むプログラムは一つではなく、 多いほうが良いです。勉強ってどういう分野でも そうなんですけど、沢山読んでいるうちに、だんだん どうすれば良いのか分かるようになってきます。
[この投稿を含むスレッドを表示] [この投稿を削除]
[189] Re:XMLについて
投稿者:kit
2007/02/20 02:13:25

ちょっと気になるのは、神奈川さんがどういう立場で プログラミングをされているかですね。 自力でプログラミングができるようになることが目的で あれば、分からない問題を安易にBBSで聞いて解決する のは考えものです。むしろ、ひとに全く聞かなくても 自分で解けるようになるにはどうすれば良いのかを 考えた方がいいと思います。 最初のうちは、自分で解こうにもどうすればいいのか 見当もつかないことも多いわけですし、神奈川さんの 質問自体、まさにそういう状態にあると思われる質問 なわけですが、こういう場合は、似たようなことを している他人のプログラムを読んで理解し、真似を することから始めるのがいいんじゃないでしょうか。 似たようなプログラムはあるけどどう変えたらいいのか 分からないような場合、それは結局、そのプログラムが どういう動作をしているかちゃんと理解できてないという ことを意味しますから、理解できるようになるまで、 変数の内容表示を行う文を挿入したり、デバッガによる トレースなどを行いながら、他人のプログラムを繰り返し 読むというのが、遠回りに見えて実は近道になると思います。 神奈川さんの質問を見ていると、そもそも他人の書いた プログラムを細部までちゃんと理解して読んだ経験が 少なそうに見える点、そしてもっと大きな問題として、 自分で書くプログラムについても、どう動作するのか、 ちゃんと理解してないように見える点が気になります。 このあたりの問題をきちんと解決しておかないと、当面の 問題は解決できても、いつまでたっても一人だちできない ということになりかねません。 あと、これは基本中の基本なので、わざわざ指摘するのも 何か変な気もするのですが、インデントも変ですよ。 使い捨てのテストプログラムならともかく、人に見て もらう場合、インデントを正しくつけるのは、最低限必要な ことだと思います。
[この投稿を含むスレッドを表示] [この投稿を削除]
[188] Re:XMLについて
投稿者:(ぱ)
2007/02/20 02:13:25

>ここで問題なのは、属性を作成するとエラーが発生してしまうということです。 このプログラムを自分のところでコンパイルして動かすほど私は親切ではないので、 エラーが出たというのなら、どんなエラーが出たかぐらいは書いてください。 もちろん、エラーメッセージを直接コピペする形で。 掲示板やMLに質問する際の質問のしかたについては、以下のページが参考になります。 JavaHouse Topics。この中の「質問のしかたについて」 http://java-house.jp/ml/topics/ 技術系メーリングリストで質問するときのパターン・ランゲージ http://www.hyuki.com/writing/techask.html 真 技術系メーリングリストFAQ http://www.geocities.co.jp/SiliconValley/5656/
[この投稿を含むスレッドを表示] [この投稿を削除]
[187] XMLについて
投稿者:神奈川
2007/02/20 02:13:25

件名を変更しました。 またXMLで解らない事が出てきてしまいました・・・ 問題例を以下に記述します。 ---あ.xml---- <愛 id=1>   <b>     <c>     </c>   </b>     <愛 ID=2>     </愛> </愛> ------------ 特定のタグの属性の下に -- <k>  <愛 ID=7>あああ</愛>   </k> を記述しそのタグ<愛>に属性を与えるというプログラムです。 ☆例えば、あ.xmlの<愛 ID=2>の下に <k>  <愛 ID=7>あああ</愛>   </k> を加えたりするなどです。 ここで問題なのは、属性を作成するとエラーが発生してしまうということです。 以下に自作したプログラムを記述します。 static void selectionAppend() throws Exception { DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder db = dbf.newDocumentBuilder(); Document doc = db.parse(new FileInputStream("あ.xml")); NodeList list = doc.getElementsByTagName("愛"); for (int i = 0; i < list.getLength(); i++) { Element node = (Element)list.item(i); if (!(node instanceof Element)) continue; String value = ((Element)node).getAttribute("ID"); //ここで対象属性名を指定し if (value != null && value.equals("2")) { //ここで対象属性値を指定する Node child1 = doc.createElement("k"); Node child2 = doc.createElement("愛"); //↑ここのタグに属性を追加したい、setAttribute("ID", "7");このメソッドを代入する //のでしょうがどのように代入すればよろしいでしょうか。 Node child3 = doc.createTextNode("あああ"); child2.appendChild(child3); child1.appendChild(child2); node.appendChild(child1); //↑ここでツリー構成は完了していることになるのでしょうか?できたとしたら、 //NodeList know = node.getElementsByTagName("愛"); //Element knowe = (Element)know.item(0); //knowe.setAttribute("No", "8"); //こうするのでしょうが、 //解らなくなってしまったので、また質問しにきました。宜しくお願いします。 } } FileOutputStream out = new FileOutputStream("あ2.xml"); DOMSource src = new DOMSource(doc.getDocumentElement()); StreamResult dst = new StreamResult(out); Transformer tfm = TransformerFactory.newInstance().newTransformer(); tfm.transform(src, dst); out.close(); }
[この投稿を含むスレッドを表示] [この投稿を削除]
[186] Re:どうしても,整理できません.
投稿者:student
2007/02/20 02:13:25

※この投稿は、現在の裏掲示板に投稿されたものを前橋が転載したものです。 丁寧な,ご返答ありがとうございます.大変,参考になりました.大分,整理がついてきました. 心から,感謝します. 今後も,疑問が沸いてくると思いますが,どうしても,手に負えない場合には,相談させて頂きます.お時間が,ありましたら返答して頂けたら幸いです. > よろしければ、studentさんの最初の投稿から、全て表の掲示板に移行しようと > 思うのですが、よろしいでしょうか? 是非,移行してください.
[この投稿を含むスレッドを表示] [この投稿を削除]
[185] Re:どうしても,整理できません.
投稿者:(ぱ)
2007/02/20 02:13:25

※この投稿は、現在の裏掲示板に投稿されたものを前橋が転載したものです。 > オブジェクト指向再入門を読ませて頂きました.大変,勉強になりました. ありがとうございます。 > こんな,私が,今,一番悩んでいることは,まさに,関数による再利用性との違いです. そのあたりのことについては、 「オブジェクトに仕事をさせる、ということ」 http://kmaebashi.com/programmer/object/shigoto.html に書いたつもりです。 まとめると、関数による再利用では、関数の呼び出しをまたがって何らかのデータを 保持することができない、ということです。無理に保持しようとすると、 例に出したstrtok()のような困った仕様になってしまいます。 これで回答になっていますでしょうか? ところでお願いですが、 現在、当サイトの掲示板は以下のURLに移転しています。 http://kmaebashi.com/bbs/list.php?boardid=kmaebashibbs ここは裏掲示板でして、ザンボットがどうのZガンダムがどうのといった話ばかり しているのはそのためです。 「オブジェクト指向再入門」のページのリンクが古いままになっていました。すみません。 よろしければ、studentさんの最初の投稿から、全て表の掲示板に移行しようと 思うのですが、よろしいでしょうか? よろしいようでしたら、投稿内容をこちらで貼り直します。
[この投稿を含むスレッドを表示] [この投稿を削除]
[184] どうしても,整理できません.
投稿者:student
2007/02/20 02:13:25

※この投稿は、現在の裏掲示板に投稿されたものを前橋が転載したものです。 オブジェクト指向再入門を読ませて頂きました.大変,勉強になりました. 私は,オブジェクト指向プログラミングを初めて,2ヶ月の初心者であります. こんな,私が,今,一番悩んでいることは,まさに,関数による再利用性との違いです. ここが,どうも,頭の中で整理出来ていません. どうか,教えてください.お願いします.
[この投稿を含むスレッドを表示] [この投稿を削除]
[183] Re:ファイルについて
投稿者:神奈川
2007/02/20 02:13:25

>>しかしLinkedHashsetやSetなどのシンボルが解決できないとというエラーが >>起こってしまいました。 > >LinkedHashSetやSetはjava.utilパッケージにありますから、 >importしなければそうなって当たり前です。 すみません(TOT) ioのパッケージに含まれいるものだと思っていました。 変な勘違いをしていました。何してんだ私・・・ とりあえず解決は、しました。よくよく考えれば当たり前なのに・・
[この投稿を含むスレッドを表示] [この投稿を削除]
[182] Re:ファイルについて
投稿者:(ぱ)
2007/02/20 02:13:25

>しかしLinkedHashsetやSetなどのシンボルが解決できないとというエラーが >起こってしまいました。 LinkedHashSetやSetはjava.utilパッケージにありますから、 importしなければそうなって当たり前です。 SAXなどのパッケージはimportしているわけですから、神奈川さんがimportの 何たるかを知らないとは考えにくいのですが、それでなぜ、java.utilの importを忘れるのかが不思議です。書き忘れるのは別に不思議じゃないですが、 このエラーメッセージを見れば一目瞭然です。 もしかして神奈川さんが、importの何たるかがわかっていなくて、 ネットに落ちてるコードとかを拾い集めてここまでプログラムを書いたのだとすれば、 それはそれでたいしたものではありますが、やっぱり勉強の順番がおかしいように 私には思えます。 >また最後の値{"け","ちち","た"}を配列に格納したいのですが 配列に格納したいのなら、すればよいのでは?
[この投稿を含むスレッドを表示] [この投稿を削除]
[181] Re:ファイルについて
投稿者:神奈川
2007/02/20 02:13:25

>>今度は、txtファイルの読み込みと書き込みについて質問なんですが、 > >APIリファレンスを見ると、InputStreamReaderにはmarkとresetという >メソッドがありますが、markSupportedはfalseのようなので使えませんね。 > >よって、対象とするファイルがよっぽど巨大なのでなければ、 >「最初にいったん全部読み込んでメモリに載せ、いったんclose()し、 > 処理が全部すんだらまとめて書き出す」 >という方法で良いんじゃないでしょうか。 返信送れてしみません。。確かにこの方法しかないようですね。。 これでやってみます。 新たな質問です。 文字列が String[] a={"あい","うえ","お","かか","きき","こ"} String[] b={"あい","け","お","こ","ちち","た"} と二つあるとき,bに対してaの文字列を引いた文字列 だけを取得するためのサンプルプログラム作成しようと思っているのですが この場合は、結果的に{"け","ちち","た"}のみになります。 以下にプログラムを書きました。 しかしLinkedHashsetやSetなどのシンボルが解決できないとというエラーが 起こってしまいました。 もしよろしければ正しく直していただけるとうれしいのですが、 また最後の値{"け","ちち","た"}を配列に格納したいのですが それも含めて宜しくお願いします。 import javax.xml.parsers.*; import org.xml.sax.*; import org.xml.sax.helpers.*; import java.io.*; public class www extends DefaultHandler { public static void main(String[] args) { String[] a = {"あい","うえ","お","かか","きき","こ"} ; String[] b = {"あい","け","お","こ","ちち","た"} ; Set setA = new LinkedHashSet(Arrays.asList(a)); Set setB = new LinkedHashSet(Arrays.asList(b)); setB.removeAll(setA); Iterator it = setB.iterator(); while (it.hasNext()) { System.out.println(it.next()); } }
[この投稿を含むスレッドを表示] [この投稿を削除]
[180] Re:センス・オブ・プログラミングの間違い?
投稿者:(ぱ)
2007/02/20 02:13:25

>はじめまして。 はじめまして。ご指摘ありがとうございます。 >// カーソルの位置の直後の文字を削除 >void backSpace(); > >ですけど >「直後」じゃなくて「直前」ではないでしょうか? おっしゃる通りです。なにしろbackSpace()ですから、カーソルの前の文字が 消えるのが当然です。 ご迷惑をおかけして申し訳ありません。 正誤表に加えておきました。ご指摘ありがとうございました。
[この投稿を含むスレッドを表示] [この投稿を削除]
[179] センス・オブ・プログラミングの間違い?
投稿者:いくら
2007/02/20 02:13:25

はじめまして。 センス・オブ・プログラミング読ませていただいて気になったのですが、 P.278の真ん中あたりの // カーソルの位置の直後の文字を削除 void backSpace(); ですけど 「直後」じゃなくて「直前」ではないでしょうか? サンプルコード試すと直前の文字が消えますし。
[この投稿を含むスレッドを表示] [この投稿を削除]
[178] Re:[業務連絡]サーバの障害について
投稿者:iWA
2007/02/20 02:13:25

>私の記憶では、iWAさんの投稿があったと思うのですが、消えてしまっているのは >そのためです。 ○| ̄|_ >他にも投稿していた方がいらっしゃいましたら、よろしければ再度投稿を >お願いいたします。 さすがにもう一度書けるほど、書いたことを憶えてないです……(^^;
[この投稿を含むスレッドを表示] [この投稿を削除]
[177] [業務連絡]サーバの障害について
投稿者:(ぱ)
2007/02/20 02:13:25

裏掲示板の方には一応アナウンスしましたが、昨晩の19:30頃より、kmaebashi.comが 置いてあるサーバが停止していました。原因はハードディスク障害だそうです。 本日14:00過ぎあたりに復旧したのですが、その際、 「7日の午前1時前後のバックアップデータ」からデータを復元したため、 この掲示板の投稿も、一部消えてしまいました。 私の記憶では、iWAさんの投稿があったと思うのですが、消えてしまっているのは そのためです。 他にも投稿していた方がいらっしゃいましたら、よろしければ再度投稿を お願いいたします。 サーバ障害に関する詳細は雑記帳にでも書きます。
[この投稿を含むスレッドを表示] [この投稿を削除]
[176] Re:ファイルについて
投稿者:(ぱ)
2007/02/20 02:13:25

>今度は、txtファイルの読み込みと書き込みについて質問なんですが、 APIリファレンスを見ると、InputStreamReaderにはmarkとresetという メソッドがありますが、markSupportedはfalseのようなので使えませんね。 よって、対象とするファイルがよっぽど巨大なのでなければ、 「最初にいったん全部読み込んでメモリに載せ、いったんclose()し、  処理が全部すんだらまとめて書き出す」 という方法で良いんじゃないでしょうか。
[この投稿を含むスレッドを表示] [この投稿を削除]
[175] ファイルについて
投稿者:神奈川
2007/02/20 02:13:25

>「飲み会以外では飲まない」という軟弱な断酒中ですが、木曜の晩は飲み会で、 >日付が変わる頃帰宅して風呂に入って、朝の5:00頃目がさめました。風呂の中で。 >というわけで昨晩も帰宅後即寝てしまったので返事が遅れましてすみません。 いえいえ,こちらこそお世話になっているので、ありがとうございます。解決できました。 ふぃよかったです。 件名を変更しました。 今度は、txtファイルの読み込みと書き込みについて質問なんですが、 一つ目の質問です。 ******aaa.txt****** ねこ こねこ いぬ 哺乳類 爬虫類 とかげ ******************* この場合4行目のみ読み取るためにはどうすればよいのでしょうか? ちなみに //文字ストリーム作成 br=new BufferedReader ( new InputStreamReader ( new FileInputStream( "aaa.txt" ), "SJIS" ) ); //読み込み、ついでにreadLine()は、1行ずつ見る。1回目とおれば、1行目2回通れば2行目 String AAA=br.readLine() String BBB=br.readLine() この場合、AAAは、1行目の「ねこ」がはいります。 BBBには、2行目の「こねこ」がはいります。 4回ループを起してから抽出する事は可能ですが、 最初2行目 次4行目 次1行目 を読み取るとなると、readLine()は、よくわからないけど1行目ずつ格納してしまうので 4行目の次に1行目を見るというのは、どうも難しいような気がwします。 何か、行数を指定してその行を読み取るメソッドは、あるでしょうか? 無い場合は、行数を初期化(1行目から)すればいいんでしょうが、どうすればいいのかわかりません・・ 二つ目の質問です。 やりたいことは、書き込みと読み込みを同じファイルから行いたいことです。 それを踏まえた上で、 例えばaaa.txtにたいして最初に1:ネコという書き込みがされ 1ステップ(書き込み)    ******aaa.txt******    1:ねこ    ******************* 2ステップ(1行目読み込み) 3ステップ(書き込み)    ******aaa.txt******    1:ねこ    1-1:こねこ    1-2:いぬ    ******************* 4ステップ(2行目読み込み) 5ステップ(書き込み)    ******aaa.txt******    1:ねこ    1-1:こねこ    1-2:いぬ    1-1-2:哺乳類    1-1-3:爬虫類    1-1-4:とかげ    ******************* 6ステップ(3行目読み込み) 7ステップ(書き込み内容なし) と繰り返し 最後(読み込んだ文字列=null)になって終了 というふうにしたいのです。 書き込んでいる最中に読み込めるのでしょうか? この場合、読み込みの後に別の処理があるのですが、これについては できていて、文字列が入力されると0~複数の文字列が出力される。という感じです。
[この投稿を含むスレッドを表示] [この投稿を削除]
[174] Re:本を買いました
投稿者:(ぱ)
2007/02/20 02:13:25

うわ、こりゃまた思わぬ方から。 ごぶさたしております。 お買い上げいただきありがとうございました。 昨晩の飲み会は行きたかったのですが、[169]で書いたようにその日はちゃんと 寝てなかったので、帰宅してしまいました。 サイン、というか名前を書くぐらいいくらでもしますので、次の機会(どうせ 頻繁にあるでしょう)でお会いしましょう。
[この投稿を含むスレッドを表示] [この投稿を削除]
[173] 本を買いました
投稿者:PZH
2007/02/20 02:13:25

 前橋さん、プログラミングの本は私には難しいのですが、最近だされた本は私でも読めそうでしたので買いました。 今度お会いする機会があった時、著書にサインしてください。
[この投稿を含むスレッドを表示] [この投稿を削除]
[172] Re:データ構造の重要性
投稿者:隠れファン
2007/02/20 02:13:25

>こう考えると、このケースでも多重継承は不要ですねえ。 よく考えてみたら前橋さんのおっしゃる通りでした...。 さすがです。 >Perlは詳しくないですが、PerlからCを呼ぶことぐらいはできるはずなので、 >ラクダ本第2版を今見てみました。perlxstutというキーワードが出てきたので >Googleして見つかったのがこちらです。 > >http://www.kt.rim.or.jp/~kbk/perl5.005/perlxstut.html ありがとうございます。参考になります。 買って読んでいない本がだいぶたまってきたので、 また色々勉強して、その内投稿するかもしれません。 ありがとうございました。 「オブジェクト指向開発講座」を超える本を期待しています。
[この投稿を含むスレッドを表示] [この投稿を削除]
[171] Re:センス・オブ・プログラミング読ませていただきました。
投稿者:(ぱ)
2007/02/20 02:13:25

>はじめまして、前橋さん。 はじめまして。 >『センス・オブ・プログラミング』を読ませていただきました。 >初心者の私にとって、とても示唆に富む面白い本でした。 ありがとうございます。大変励みになりますです (_o_) …が、これ以上何を書いてよいかわからないので、大変嬉しいのですが こういう投稿への返答には困るのでした。f(^^;;
[この投稿を含むスレッドを表示] [この投稿を削除]
[170] Re:データ構造の重要性
投稿者:(ぱ)
2007/02/20 02:13:25

>1)インターフェース継承による多重継承によりWINDOWを表す方法 >2)集約によりWINDOWをもつ方法 >の2つでは、若干違いがあると思います。 >クラスのクライアント側から見た場合、2)の場合、あくまでも外面は >TREE_NODEであり、WINDOWではない訳です。 ちょっと今まで出た案を整理しますね。 案1)多重継承。WINDOWがSCREEN_OBJECTとTREE_NODEを多重継承する。 案2)インタフェースと委譲を使う。WINDOWはSCREEN_OBJECTを継承し、  TREE_NODEインタフェースを実装する。  TREE_NODEの実装はTREE_NODE_IMPLクラスにあって、WINDOWは  TREE_NODE_IMPLへの参照を保持し、add_child()などのメソッドを  そっちに委譲する。 案3)コレクションクラスTREEを作り、そのTREE_NODEがWINDOWへの  参照を保持するようにする。 案3)は、私がうっかりこれでいいかと思っちゃった案ですが、WINDOWの場合は ダメです。たとえばWINDOWのrepaint()メソッドが呼び出されたとき、 WINDOWは自分の子を再帰的にrepaint()しなければなりません。 つまり、「外から見て木構造に見える」のではダメで、 WINDOW自身が自分の子を知っていないといけないわけで、 TREE_NODEからWINDOWに参照を持つような構造では困ります。 案2)ですが、この方法で、外から見れば多重継承と実質同じことができますが、 考えてみれば、外から見て、WINDOWがTREE_NODEに見えて嬉しいことは なさそうなので、わざわざinterfaceを使う必要はなさそうです。 つまり委譲だけでよいと。で、何に委譲するかですが、TREE_NODE_IMPLなんぞ 作らなくても、ArrayListで良いような… こう考えると、このケースでも多重継承は不要ですねえ。 >ところで、知っていたら教えてほしいのですが、PerlとCのリンク方法で >詳しいページとか書籍とかあったら教えてほしいです。 >つまりCのメモリ上にPerlで処理したデータを取得したいのです >(外部ファイルとか、ソケットなどを使わずに)。 Perlは詳しくないですが、PerlからCを呼ぶことぐらいはできるはずなので、 ラクダ本第2版を今見てみました。perlxstutというキーワードが出てきたので Googleして見つかったのがこちらです。 http://www.kt.rim.or.jp/~kbk/perl5.005/perlxstut.html
[この投稿を含むスレッドを表示] [この投稿を削除]
[169] Re:配列で問題が・・
投稿者:(ぱ)
2007/02/20 02:13:25

「飲み会以外では飲まない」という軟弱な断酒中ですが、木曜の晩は飲み会で、 日付が変わる頃帰宅して風呂に入って、朝の5:00頃目がさめました。風呂の中で。 というわけで昨晩も帰宅後即寝てしまったので返事が遅れましてすみません。 # ていうか他のどなたかが答えてくれてもいいような… >ここでは、真となるファイル名のみをtopfnameの配列に格納したいのですが >配列の長さも真となるファイルの個数になるようにしたい。 >現在の状態だと、topfnameのサイズを「10」と定義しているので、これをなんとか >真となるファイルの個数をサイズにしたいのですが、どのようにすればよいでしょうか? Javaの配列は拡張できないので、java.util.ArrayListクラスあたりを 使えばよいでしょう。 で、最終的に配列が欲しければ、 String[] s = (String[])arrayList.toArray(new String[0]); で変換します。 このへんのことは「Java謎+落とし穴徹底解明」のp.329あたりに書いてあります。
[この投稿を含むスレッドを表示] [この投稿を削除]
[168] センス・オブ・プログラミング読ませていただきました。
投稿者:shun
2007/02/20 02:13:25

はじめまして、前橋さん。 『センス・オブ・プログラミング』を読ませていただきました。 初心者の私にとって、とても示唆に富む面白い本でした。 これからもがんばってください。 では。
[この投稿を含むスレッドを表示] [この投稿を削除]
[167] 配列で問題が・・
投稿者:神奈川
2007/02/20 02:13:25

ツリーがあまりに長くなってしまったので新しく投稿させていただきました。 現在,配列の格納の仕方で迷っています。 下にプログラムを表記します。 import javax.xml.parsers.*; import org.xml.sax.*; import org.xml.sax.helpers.*; import java.io.*; public class Q extends DefaultHandler { public static void main(String[] argv) { BufferedReader br = null; String fname; int l=0; int k=0; String[] topfname=new String[10]; //キーワードとなる文字列 String[] r={"空"}; try { br = new BufferedReader ( new InputStreamReader ( new FileInputStream( "fname1.txt" ), "SJIS" ) ); //ここでfname1.txtに表記されているファイル名を順番(1行ずつ)に抽出 while( ( fname = br.readLine() )! = null) {              //XML検索で抽出プログラムを呼び出し KnowledgeExtract myKnowledgeExtract=new KnowledgeExtract();              //ファイル名とキーワードを送り,戻り値として真偽を取得 boolean xxx=myKnowledgeExtract.Ext(fname,r) ; System.out.println(xxx+" "+"top:"+fname); //ここが問題点・・       if(xxx){topfname[l]=fname;l++;}else{} } } catch( Exception ex ) { ex.printStackTrace(); } //truuになったファイル名を表示 for (int i=0; i < topfname.length ; i++) System.out.println("topfname:"+topfname[i]); } ここでは、真となるファイル名のみをtopfnameの配列に格納したいのですが 配列の長さも真となるファイルの個数になるようにしたい。 現在の状態だと、topfnameのサイズを「10」と定義しているので、これをなんとか 真となるファイルの個数をサイズにしたいのですが、どのようにすればよいでしょうか?
[この投稿を含むスレッドを表示] [この投稿を削除]
[166] Re:データ構造の重要性
投稿者:隠れファン
2007/02/20 02:13:25

>MAYERさんのはこっちですね。品切れ、中古もなしですねえ… 手に入らないとなると余計にほしくなります。 いろいろと探してみます...。 >>>一瞬納得しそうになりますが、TREE_NODEが、その要素への参照を持てば >>>済む話ですよね。EiffelにはGenericsがあるわけですし。 > >>委譲が面倒でなければ前橋さんのやり方の方が柔軟性ありそうですね。 > >うむむ。私が書いたやり方は、実は普通にコレクションクラスライブラリに >オブジェクトを突っ込む方の意味のつもりでしたが、WINDOWは本質的に >親子関係を持つわけですからadd_child()とかはWINDOW側に付くべきですよね。 ># ていうかWINDOW自身が自分の子を知らないと困るわけで… ># 今回いろいろぼけてました。 > >てなわけでinterfaceにして委譲することになるわけですが、 >面倒だという意見もあるでしょう。 コレクションライブラリにオブジェクトを突っ込むということで Genericsがあるという意味がやっと分かりました。 しかし自分で書いておいて後からよく考えてみると、 1)インターフェース継承による多重継承によりWINDOWを表す方法 2)集約によりWINDOWをもつ方法 の2つでは、若干違いがあると思います。 クラスのクライアント側から見た場合、2)の場合、あくまでも外面は TREE_NODEであり、WINDOWではない訳です。 クライアントクラスに渡す場合、WINDOWとして処理したい場合でも クライアントは、TREE_NODEとして受け取らなくてはならないからです。 TREE_NODEからGetterでWINDOWを取り出し、渡すという方法もありますが、 あまり気楽に渡したのでは参照を保持する意味がありません。 1)と2)は機能的には同じですが、外面という意味では違いそうです。 恐らく一般的に、実装継承と比較すると集約の方が柔軟性あるということですね。 前橋さんのコレクションクラスを利用する方法は一番シンプルだと 思いますが、前橋さん自身がおっしゃってるように、真面目に考えると 本来WINDOWクラス自身に持たせたい機能を他で持つのはあまり 好ましくないかもしれません。 >>テストケースを書く前に決まっているとすると、結局は初めにUMLありき >>なので、テストケース自体単なる動作チェックもしくは、 >>後でリファクタリングをするのだけが目的ということになり、 >>あまりおいしくはなさそうです。 > >うーん、UMLで言えば、クラス図よりは後だけどシーケンス図よりは前というか。 >また、いつでも気楽に自動テストができるなら、それだけでもおいしいと思います。 確かにそうかもしれません。使い方次第ですかね? ところで、知っていたら教えてほしいのですが、PerlとCのリンク方法で 詳しいページとか書籍とかあったら教えてほしいです。 つまりCのメモリ上にPerlで処理したデータを取得したいのです (外部ファイルとか、ソケットなどを使わずに)。 前橋さんに聞くのはどうかとも思いましたが、特にCのプログラミングのことなら 知らないことないというイメージだったので...。 もし知っていたらで結構です。
[この投稿を含むスレッドを表示] [この投稿を削除]
[165] Re:XMLファイルを検索
投稿者:神奈川
2007/02/20 02:13:25

ありがとうございます。。できました。また基本的な質問だったかもしれません 11月27日に投稿してから5日たちました。 最初は、javaなんて聞いた事がある程度だったんですが、 ここまでプログラムを完成できるように指導してくださって有難うございます。 以前(ぱ)さんがお話していた。 引数をキーワード及びファイル名にして 戻り値の型をbooleanにして真偽を返す事に成功しました。
[この投稿を含むスレッドを表示] [この投稿を削除]
[164] Re:XMLファイルを検索
投稿者:(ぱ)
2007/02/20 02:13:25

>この場合return文のsyutokusuとkeyが認識せず、 >どのようにすればsyutokusuとkeyを認識し返せるのでしょうか? 変数のスコープ(見える範囲)は、その宣言を囲む最小のブロック({}で囲まれた範囲)で 終わってしまうので、syutokusuとkeyの宣言をtryのブロックの外に出せばよいです。
[この投稿を含むスレッドを表示] [この投稿を削除]
[163] Re:データ構造の重要性
投稿者:(ぱ)
2007/02/20 02:13:25

>私が間違っているのかもしれませんが、恐らく同一な書名なのですが、 >バートランド・マイヤーさんのではありません。 うわわ、すみません、うっかりしてました。 MAYERさんのはこっちですね。品切れ、中古もなしですねえ… http://www.amazon.co.jp/exec/obidos/ASIN/4756100503/qid=1101915980/sr=1-38/ref=sr_1_2_38/249-6600035-2383509 >>一瞬納得しそうになりますが、TREE_NODEが、その要素への参照を持てば >>済む話ですよね。EiffelにはGenericsがあるわけですし。 >委譲が面倒でなければ前橋さんのやり方の方が柔軟性ありそうですね。 うむむ。私が書いたやり方は、実は普通にコレクションクラスライブラリに オブジェクトを突っ込む方の意味のつもりでしたが、WINDOWは本質的に 親子関係を持つわけですからadd_child()とかはWINDOW側に付くべきですよね。 # ていうかWINDOW自身が自分の子を知らないと困るわけで… # 今回いろいろぼけてました。 てなわけでinterfaceにして委譲することになるわけですが、 面倒だという意見もあるでしょう。 >テストケースを書く前に決まっているとすると、結局は初めにUMLありき >なので、テストケース自体単なる動作チェックもしくは、 >後でリファクタリングをするのだけが目的ということになり、 >あまりおいしくはなさそうです。 うーん、UMLで言えば、クラス図よりは後だけどシーケンス図よりは前というか。 また、いつでも気楽に自動テストができるなら、それだけでもおいしいと思います。
[この投稿を含むスレッドを表示] [この投稿を削除]
[162] Re:XMLファイルを検索
投稿者:神奈川
2007/02/20 02:13:25

>同じ要領でelementlistからelementのElementを取り出して、そこからさらに >getElementsByTagName()を呼び出せば、elementの子のpretestを取り出すことが >できるでしょう。 (ぱ)さん!!!やりました!!何とか動きました~(^o^)v 有難うございます。keyさんも有難うございます。 後は、戻り値として真偽をbooleanに返すだけだす。。 しかしちょっとここで問題が起こりましたです。。 例えば下に自作で創った簡単なサンプルプログラムを記述します。 class T {    public boolean tyu(int h) {      try {         int syutokusu,key;         syutokusu=2;         key=h;         System.out.println(syutokusu);        }      catch (Exception e)         {         e.printStackTrace();         }      return (syutokusu==key);                  }      } この場合return文のsyutokusuとkeyが認識せず、 どのようにすればsyutokusuとkeyを認識し返せるのでしょうか? try文の内部で処理した(定義した方や変数は使えないのかな??) なんかまた間違えてるのかな?
[この投稿を含むスレッドを表示] [この投稿を削除]
[161] Re:データ構造の重要性
投稿者:隠れファン
2007/02/20 02:13:25

>うわ、絶版でしたか。知りませんでした。 > ># amazonで中古品が買えるようではありますが。 >http://www.amazon.co.jp/exec/obidos/tg/detail/offer-listing/-/4274075400/all/ref=sdp_srli_u/249-6600035-2383509 ご紹介ありがとうございます。ページ拝見しました。 私が間違っているのかもしれませんが、恐らく同一な書名なのですが、 バートランド・マイヤーさんのではありません。 上記の本は、日本人が書いた本だと思います。 中古品とかで色々探してみます...。 >インタフェースの多重継承はよく使いますよね。 Javaのイメージで話してたので勘違いしていました。 私が言いたかったのは実装継承による多重継承のことでした。 確かにインターフェースの多重継承は必要ですね。 >継承関係は、スーパークラスの分類とも言えますから、複数の軸について >分類したければ多重継承になる…という考え方もありますが、 >それをやるとクラスの数が掛け算で増えていくので実用的ではないと私は思います。 なるほど...。難しいですね。 >「オブジェクト指向入門」では、階層構造を持てるWINDOWが、 >SCREEN_OBJECTとTREEを多重継承するという例が出ています(このTREEは、 >TREE_NODEと呼ぶべきだと思う)。 >一瞬納得しそうになりますが、TREE_NODEが、その要素への参照を持てば >済む話ですよね。EiffelにはGenericsがあるわけですし。 委譲が面倒でなければ前橋さんのやり方の方が柔軟性ありそうですね。 私は1つのクラスに複数の役割を持たせるのはあまり好きではありません。 ただし本に載っているサンプルは実装を簡単にするため (あるいは、インターフェースの多重継承の説明のため) なのかもしれないですね。 >テストファーストって、設計の前にテストケースを書くということではなく、 >実装の前にテストケースを書くのでは。メソッドの引数など細かいところは >テストケースを書きながら詰めていく面もあるでしょうけど、 >クラス間の関係のような重要な点は、テストケースを書く前に決まっていると思います。 確かに実装の前にテストケースを書くのだと思うのですが、 テストケースを色々書いていく内に必要なクラスと不要なクラスが 浮かび上がってきてクラスの関係が導きだせるという感じだったと思います。 テストケースを書く前に決まっているとすると、結局は初めにUMLありき なので、テストケース自体単なる動作チェックもしくは、 後でリファクタリングをするのだけが目的ということになり、 あまりおいしくはなさそうです。 ># テストファースト、良いと思うんですが、現場ではなかなか。 ># 私の場合、「使用例」として、Wordでせこせこサンプルコードを書いて、 ># レビューを通してから若いのに実装してもらうことが多いような。 私は仕事では数値計算関係のプログラムを作成することが多く、 テストケースを作成しにくいです(つまりテストケース自体のテストをしないと いけないので)。 ただ無理にでも使っていかないと、結局使う機会がなく勉強にならないので なかなか難しいです。 前橋さんは若い人に実装してもらえるのはいいですね。 私の場合、小さいチームなのでそこまではいきません。 以前別の部署の後輩にやってもらったら余計仕事が遅くなりました。 やはり上司はブルックスの法則を理解していないのだと思いました。 最近「人月の神話」を購入して、XPの考え方の基になったという印象が あります。XPの歴史とか知らないので何とも言えないですが。 前橋さんは、他の人に仕事を手伝ってもらったら余計遅くなったこと ありませんか?
[この投稿を含むスレッドを表示] [この投稿を削除]
[160] Re:溝
投稿者:(ぱ)
2007/02/20 02:13:25

>ちなみに、買った帰りにぺらぺらめくって眺めていたんですが、第3章の扉絵を見た瞬間 >吹き出してしまいました。・・・電車の中で。 > ># 本筋と関係ない話ですみません。 本筋とは関係ないんでしょうが、ここに反応していただけるとムチャクチャ嬉しいです。 かなり狙って描いたので w >「なぜオブジェクト指向が生まれたのか」という経緯を、自分の中で追体験するような >形で学ばないと、そのありがたみもわからないのかな、などと、最近思ったりもします。 そう思います。そういう意味じゃ、BASICなどの経験も無駄ではなかったかも。
[この投稿を含むスレッドを表示] [この投稿を削除]
[159] Re:データ構造の重要性
投稿者:(ぱ)
2007/02/20 02:13:25

>私はオブジェクト指向勉強中の身なので色々勉強はしていて、 >バートランド・マイヤーさんの「オブジェクト指向入門」も >絶版のため結局買えてません。英語は面倒ですし...。 うわ、絶版でしたか。知りませんでした。 # amazonで中古品が買えるようではありますが。 http://www.amazon.co.jp/exec/obidos/tg/detail/offer-listing/-/4274075400/all/ref=sdp_srli_u/249-6600035-2383509 >私はartonさんと前橋さんの本が気に入っています。 >「C言語ポインタ完全制覇」でCに開眼したので。 ありがとうございます (_o_) >ところで、多重継承って使ったことないのですが必要な機能なのでしょうか? >使う目的が分かりません。 インタフェースの多重継承はよく使いますよね。 継承関係は、スーパークラスの分類とも言えますから、複数の軸について 分類したければ多重継承になる…という考え方もありますが、 それをやるとクラスの数が掛け算で増えていくので実用的ではないと私は思います。 「オブジェクト指向入門」では、階層構造を持てるWINDOWが、 SCREEN_OBJECTとTREEを多重継承するという例が出ています(このTREEは、 TREE_NODEと呼ぶべきだと思う)。 一瞬納得しそうになりますが、TREE_NODEが、その要素への参照を持てば 済む話ですよね。EiffelにはGenericsがあるわけですし。 >テストケースを書くことで本当にクラスの設計ができるのでしょうか? >クラスの設計って経験がものをいうというイメージだったのですが。 テストファーストって、設計の前にテストケースを書くということではなく、 実装の前にテストケースを書くのでは。メソッドの引数など細かいところは テストケースを書きながら詰めていく面もあるでしょうけど、 クラス間の関係のような重要な点は、テストケースを書く前に決まっていると思います。 # テストファースト、良いと思うんですが、現場ではなかなか。 # 私の場合、「使用例」として、Wordでせこせこサンプルコードを書いて、 # レビューを通してから若いのに実装してもらうことが多いような。
[この投稿を含むスレッドを表示] [この投稿を削除]
[158] Re:XMLファイルを検索
投稿者:(ぱ)
2007/02/20 02:13:25

>>>Elementを取り出すとは、何でしょう? … >Element element = (Element)pretestlist.item(i); >これは、item(i)⇒要素を順番に取得していくという意味ではないかとお思います つまりここでpretestの要素(Elementオブジェクト)が取り出せているわけですよね。 getElementsByTagName()はElementのメソッドです。 前回の神奈川さんのプログラムは、NodeListのgetElementsByTagName()を 呼ぼうとしていて、NodeListにそんなメソッドはないのでエラーになっていたわけです。 同じ要領でelementlistからelementのElementを取り出して、そこからさらに getElementsByTagName()を呼び出せば、elementの子のpretestを取り出すことが できるでしょう。 # ElementはJavaの(DOMの)クラスで、elementは神奈川さんが書いているXMLの # 要素名です。念のため。
[この投稿を含むスレッドを表示] [この投稿を削除]
[157] Re:溝
投稿者:kei
2007/02/20 02:13:25

>仮にAPIリファレンスを見なくても、getElementByTagName()がElementの >メソッドである、ということは、神奈川さん自身が投稿したソースを見れば >わかることですし。 あー。。 スレッド別表示にして見ていたので、下の方にひょろっとあった[145]の投稿に 気づかず、それを読まずに投稿してしまいました。(気付けよ、自分) ・・・と言うか神奈川さん、すでに答えをご自分で(ほぼ)書いていたんですね。。 >神奈川さんが越えるべきハードルはたくさんありそうです。 実は、僕もそれを感じたので >>神奈川さんが抱えている問題は複数あるように感じます。 って書いちゃいました、なんだか偉そうに。 >プログラムを書くには、まず自分が「何をしたいのか」を日本語でちゃんと >説明できなければならない、なんてことは「センス・オブ・プログラミング!」にも >書きましたけど。 実は、「センス・オブ・プログラミング!」は購入済みなんですが、忙しくて ほとんど読めていなかったりします。すみません。せっかく10月29日に買ったのに! ちなみに、買った帰りにぺらぺらめくって眺めていたんですが、第3章の扉絵を見た瞬間 吹き出してしまいました。・・・電車の中で。 # 本筋と関係ない話ですみません。 >今時の入門者は、「梯子が外された」状態にあるのかもしれません。 それは、良く感じます。 僕は運良く、プログラムを始めた時期に前橋さんの本で学ぶことが出来たわけですが、 同時期にプログラムを始めた人間は、研修でいきなり「StrutsでWebアプリケーション」 だとか、そんなことを勉強させられたりしたようです。 そう言えば、「オブジェクト指向で全ては抽象化されているんだから、細かい アルゴリズムなんて覚える必要は無い!」とか、トンでもなことを言い出している 上司もいました。 「なぜオブジェクト指向が生まれたのか」という経緯を、自分の中で追体験するような 形で学ばないと、そのありがたみもわからないのかな、などと、最近思ったりもします。 で、「センス・オブ・プログラミング!」には、きっとそんなことが書かれているのかなぁ などと妄想してみたり(笑) # うーん、「溝」という話題とは微妙にそれてしまったような。。
[この投稿を含むスレッドを表示] [この投稿を削除]
[156] Re:データ構造の重要性
投稿者:隠れファン
2007/02/20 02:13:25

隠れファンです。 返信ありがとうございます。 >これはその通りでしょう。でもまあ、それで細部は隠せても、 >大まかなところはオブジェクト間の関係のような形で見えてしまいますし。 >多重度の設計をしくじって拡張の際にはまる、なんてことは多いですよね。 ># Hogeに対してPiyoはひとつでよいはずだったのに、今度の機能拡張では ># n個にしなきゃいけなくなった。HogeのgetPiyo()には引数ないぞ。どうしてくれよう。 私は設計に失敗した場合、その部分を作り直してしまった方が早いと思っています (もちろん関連が多すぎるなど、そうできない場合も多いと思います)。 例えばクラスをラップしていって機能を追加してうまくごまかして 無理やりつじつま合わせようとしてもどんどん泥沼にはまりそうです。 >オブジェクト指向のバイブルは、私にとってはMAYERさんの「オブジェクト指向入門」 >でした。第2版は(買いはしたものの)まるで読めてませんけど。 ># なにせ英語なので… (^^;; > >継承がらみの議論では(特に多重継承)首をひねるところもありますが、 >今でも名著だと思います。 私はオブジェクト指向勉強中の身なので色々勉強はしていて、 バートランド・マイヤーさんの「オブジェクト指向入門」も 絶版のため結局買えてません。英語は面倒ですし...。 ご存知だと思いますが、オブジェクト指向の本では 「憂鬱なプログラマのためのオブジェクト指向講座」が売れているみたいですが 今ではほとんど役に立たないと思っています。 最近購入した「アジャイルソフトウェア開発の奥義」という本は かなり気に入っていて新たな発見がありそうです。 私はartonさんと前橋さんの本が気に入っています。 「C言語ポインタ完全制覇」でCに開眼したので。 ところで、多重継承って使ったことないのですが必要な機能なのでしょうか? 使う目的が分かりません。 あとテストファーストについてどう思われますか? 本を読んでると何かよさげなのですが...。 テストケースを書くことで本当にクラスの設計ができるのでしょうか? クラスの設計って経験がものをいうというイメージだったのですが。
[この投稿を含むスレッドを表示] [この投稿を削除]
[155] Re:XMLファイルを検索
投稿者:神奈川
2007/02/20 02:13:25

>>Elementを取り出すとは、何でしょう? > >[145]で神奈川さんが投稿されたリストの、 > > Element element = (Element)pretestlist.item(i); > >この部分は、どういう意味だと思って書いていましたか? 皆さん私のために親身に教えてくださって有難うございます。(TOT) (ぱ)さんの仰ったとおり「溝」に陥っているのかもしれません。。 Element element = (Element)pretestlist.item(i); これは、item(i)⇒要素を順番に取得していくという意味ではないかとお思います 例: タグpretestに対して item(0)が1番初めpretest要素取得 item(1)が2番目のpretest要素取得 とこのような感じだと思ったのですが、この状態だと全ての<pretest>タグ要素 を取得してしまう気がするんですけど。 間違っているでしょうか??
[この投稿を含むスレッドを表示] [この投稿を削除]
[154] Re:データ構造の重要性
投稿者:(ぱ)
2007/02/20 02:13:25

>隠れファンです。 >勝手に返信させて頂きます。 どうもです f(^^;; >但し、重要なデータほど >オブジェクト指向ではインターフェースを利用しモジュールを分離するので、 これはその通りでしょう。でもまあ、それで細部は隠せても、 大まかなところはオブジェクト間の関係のような形で見えてしまいますし。 多重度の設計をしくじって拡張の際にはまる、なんてことは多いですよね。 # Hogeに対してPiyoはひとつでよいはずだったのに、今度の機能拡張では # n個にしなきゃいけなくなった。HogeのgetPiyo()には引数ないぞ。どうしてくれよう。 >オブジェクト指向の実装よりではなく設計よりの内容でのバイブルを作れるのは オブジェクト指向のバイブルは、私にとってはMAYERさんの「オブジェクト指向入門」 でした。第2版は(買いはしたものの)まるで読めてませんけど。 # なにせ英語なので… (^^;; 継承がらみの議論では(特に多重継承)首をひねるところもありますが、 今でも名著だと思います。
[この投稿を含むスレッドを表示] [この投稿を削除]
[153]
投稿者:(ぱ)
2007/02/20 02:13:25

また件名かえました。 >・ DOMのAPIドキュメントをちゃんと読んでいない。 > >というのが差し当たっての問題のように思えます。 それもそうだと思うのですが、 >「なぜ、NodeListに対してgetElementsByTagName()が出来ないのか」 という言葉の意味がわかるなら、そしてAPIリファレンスの何たるかを知っていれば、 別に熟読しなくても、その部分だけでも読みそうなもんですし、 仮にAPIリファレンスを見なくても、getElementByTagName()がElementの メソッドである、ということは、神奈川さん自身が投稿したソースを見れば わかることですし。 神奈川さんが越えるべきハードルはたくさんありそうです。 以下、別に神奈川さんを責めているわけではありません。 「闘わないプログラマ」に「溝」という文章がありますが、 http://www.amy.hi-ho.ne.jp/~lepton/program/p1/prog181.html 神奈川さんの最初の投稿の >ファイルを格納するということは、できるのでしょうか? というのを読んで私が連想したのが実はこの文章でした。 質問者の側に知識が不足していると、往々にしてこういうことは起こってしまうわけで、 じゃあどうすればいいのかというと、私もLeptonさんと同じく「名案は無いですねえ」 状態なわけで。 本なんか書いてる身としては、こんなこっちゃいかんわけですが。私のほうにセンスが 足りてないんでしょう。 プログラムを書くには、まず自分が「何をしたいのか」を日本語でちゃんと 説明できなければならない、なんてことは「センス・オブ・プログラミング!」にも 書きましたけど。 正直、APIリファレンスの読み方がわからない人が、XMLを解析してどうこうする プログラムを書くのは難度が高すぎやしないか、と思うわけですが、 現代の初心者にはありがちな話のような気がします。 私がプログラミングを始めた頃は、そんな複雑なAPIもなく、そもそもそんな 凝ったことをするマシンパワーもなくて、簡単なプログラムから順次入門して いったわけですが、今時の入門者は、「梯子が外された」状態にあるのかもしれません。 うーん。まとまらなくてすみません。
[この投稿を含むスレッドを表示] [この投稿を削除]
[152] Re:XMLファイルを検索
投稿者:(ぱ)
2007/02/20 02:13:25

>Elementを取り出すとは、何でしょう? [145]で神奈川さんが投稿されたリストの、 Element element = (Element)pretestlist.item(i); この部分は、どういう意味だと思って書いていましたか?
[この投稿を含むスレッドを表示] [この投稿を削除]
[151] Re:XMLファイルを検索
投稿者:kei
2007/02/20 02:13:25

> 神奈川さん こんにちは。 スレッドを拝見していて思ったんですが、神奈川さんが抱えている問題は 複数あるように感じます。 が、とりあえずは ・ DOMのAPIドキュメントをちゃんと読んでいない。 というのが差し当たっての問題のように思えます。 Javaでプログラミングをする時は、APIドキュメントを読むことが必須だったりします。 「なぜ、NodeListに対してgetElementsByTagName()が出来ないのか」理由が わからないのでしたら、前橋さんがご提示してくださったDOMのAPIドキュメントを 読み返してみてはいかがでしょうか? そうすれば、次に自分が何をすべきか見えてくると思いますよ。 ヒントを書くと、「NodeListの2つのメソッドを組み合わせて使えば。。」って 感じです。 # って、なんか偉そうですね。。すみません。 それから、今回はもう間に合わないと思いますが、世の中にはxmlとJavaオブジェクトの バインディングのためのライブラリなども存在しますので、次回はそういったものも 勉強してみると、同じことが楽に出来るかもしれないですよ。
[この投稿を含むスレッドを表示] [この投稿を削除]
[150] Re:XMLファイルを検索
投稿者:神奈川
2007/02/20 02:13:25

>> NodeList pretestlist = elementlist.getElementsByTagName >... >>しかしこの状態だとエラーが発生してしまいました・・ > >そりゃNodeListに対してgetElementsByTagName()はできないでしょう。 >Elementを取り出してからにしないと。 たびたびすみません。 うーん・・解らないですね。。 Elementを取り出すとは、何でしょう? どうすれば、elementの下のpretestのみを取得できるのでしょう? 僕のイメージは、親を指定して例えば(element) その後に子を指定する(pretest)を行って初めて、 そのpretestにたどり着くようなイメージがあるのですが、 とんでもない勘違いをしているのでしょうか? Element root = doc.getDocumentElement(); ⇒ルート要素取得(ドキュメントの下のノードを取得したことになりますよね?) NodeList list = root.getElementsByTagName("タグの名前"); ⇒タグの名前要素のリストを取得(ルート要素で取得したノードに対してタグの名前要素のリス                トを取得) リストを取得して⇒ノードを取得⇒リストを取得して⇒ノードを取得 を繰り返す事で末端の要素にたどり着くのでしょうか? すみません。。ほんとに解らなくて・・・ここさえ解れば、あとは何とか成りそうなんですが・・(実は、ものすごい単純なのかもしれませんが宜しくお願いします) 下のようなxmlならば、elementの下のpretestを指定する。 (後はitemごとにtextを取得するこれ自体は、可能) <?xml version="1.0" encoding="Shift_JIS" ?> <site> <title>JavaでHello World</title> <element id="28"> <pretest id="28"> <title>EJB編</title> <file>ejb.htm</file> </pretest> <pretest> <title>DOM編</title> <file>xmldom.htm</file> </pretest> </element> <element1 id="28"> <pretest id="28"> <title>neko</title> <file>neko.htm</file> </pretest> <pretest> <title>DOMneko編</title> <file>xmldomneko.htm</file> </pretest> </element1> </site>
[この投稿を含むスレッドを表示] [この投稿を削除]
[149] Re:XMLファイルを検索
投稿者:(ぱ)
2007/02/20 02:13:25

> NodeList pretestlist = elementlist.getElementsByTagName ... >しかしこの状態だとエラーが発生してしまいました・・ そりゃNodeListに対してgetElementsByTagName()はできないでしょう。 Elementを取り出してからにしないと。
[この投稿を含むスレッドを表示] [この投稿を削除]
[148] Re:XMLファイルを検索
投稿者:神奈川
2007/02/20 02:13:25

有難うございます^^ あまり理解できなくすみません。 >まずelementを見つけて、そのelementに対して >getElementsByTagNameをやればよいだけの話では? とのことでしたので、(先ほど記述したプログラムの一部を抜粋) DocumentBuilder builder = dbfactory.newDocumentBuilder(); // パースを実行してDocumentオブジェクトを取得 Document doc = builder.parse(new File("site.xml")); // ルート要素を取得(タグ名:site) Element root = doc.getDocumentElement(); // element要素のリストを取得 NodeList elementlist = root.getElementsByTagName("element"); // pretest要素のリストを取得 (elementの下のpretest) NodeList pretestlist = elementlist.getElementsByTagName このようにすればよいのでしょうか? NodeList pretestlist=elementlist(ここで親を指定するという形でいいのでしょうか?) .getElementsByTagName しかしこの状態だとエラーが発生してしまいました・・ エラー内容は、 java21:シンボルが解決されません シンボル:getElementsByTagName(java.lang.string) 場所:org.w3c.dom.Nodelist NodeList pretestlist = elementlist.getElementsByTagName                   ^ とのようになりました。。難しいです。。記述の仕方がまずいのでしょうか?
[この投稿を含むスレッドを表示] [この投稿を削除]
[147] Re:難易度(ゴミ)
投稿者:(ぱ)
2007/02/20 02:13:25

>難易度って難しい℃なのかやさしい℃なのか、いつもわかりません。 >素直に難度といえばいいのにとか思う今日子の頃。 確かに。 Google検索してみると… 難易度が高い の検索結果 約 34,300 件 難度が高い の検索結果 約 5,350 件 「難易度が高い」の方が多いことは予想していましたが、 「難度が高い」も結構ありますねえ。
[この投稿を含むスレッドを表示] [この投稿を削除]
[146] XMLファイルを検索
投稿者:(ぱ)
2007/02/20 02:13:25

件名を変えました。 >>私ならそもそもそういうメソッドは、 >>ファイル名と検索キーワードを引数で受け取って、マッチしたかどうかを >>booleanで返すようにしますけど。 ... >引数は、ファイル名とキーワードは、複数ある場合があるから、配列で示すのかな >?? キーワードは配列で渡すのでしょうが、ファイル名はひとつだけ渡すことを 想定していました。だから戻り値がboolean 1個でいいわけです。 戻り値は「そのファイルにキーワードが含まれていたかどうか」を表現します。 もちろん、それ以外の情報も返したいなら、booleanではなく、何らかの オブジェクトに値を詰めて返さなければなりません。 で、もちろん検索はたくさんのファイルの中から行いたいのでしょう。 でも、たくさんのファイルでぐるぐるループするのは、このメソッドの 呼び出し側で行えばよい話で、だから >で、フォルダ内のファイル名を片っ端からそのメソッドで判定する、 >という処理は、その一階層上でやらせます。 こう書きました。 >となります。このように「この親(element)のこの子(pretest)」 >という指定はできるのでしょうか?今の状態だと全てのpretestの要素を取得している >ので何とかしたいのですが・・どうぞ宜しくお願いします。 elementとpretestの間に何かが挟まったり、pretestがネストしたりする 可能性がないのであれば、まずelementを見つけて、そのelementに対して getElementsByTagNameをやればよいだけの話では?
[この投稿を含むスレッドを表示] [この投稿を削除]
[145] Re:難しいです。。
投稿者:神奈川
2007/02/20 02:13:25

>http://www.hellohiro.com/xmldom.htm >このページではDOMの環境構築の話から書いてあります (ぱ)さんの指定したリンク先を元にプログラムを作成してみました。 下は、xmlファイルです。 <?xml version="1.0" encoding="Shift_JIS" ?> <site> <title>JavaでHello World</title> <element id="28"> <pretest id="28"> <title>EJB編</title> <file>ejb.htm</file> </pretest> <pretest> <title>DOM編</title> <file>xmldom.htm</file> </pretest> </element> <element1 id="28"> <pretest id="28"> <title>neko</title> <file>neko.htm</file> </pretest> <pretest> <title>DOMneko編</title> <file>xmldomneko.htm</file> </pretest> </element1> </site> 僕のプログラム public class A { public static void main(String[] args) { try { // ドキュメントビルダーファクトリを生成 DocumentBuilderFactory dbfactory = DocumentBuilderFactory.newInstance(); // ドキュメントビルダーを生成 DocumentBuilder builder = dbfactory.newDocumentBuilder(); // パースを実行してDocumentオブジェクトを取得 Document doc = builder.parse(new File("site.xml")); // ルート要素を取得(タグ名:site) Element root = doc.getDocumentElement(); System.out.println("ルート要素のタグ名:" + root.getTagName()); System.out.println("***** ページリスト *****"); // element要素のリストを取得 NodeList elementlist = root.getElementsByTagName("element"); // pretest要素のリストを取得 NodeList pretestlist = root.getElementsByTagName("pretest"); // pretest要素の数だけループ for (int i=0; i < pretestlist.getLength() ; i++) { // page要素を取得 Element element = (Element)pretestlist.item(i); // title要素のリストを取得 NodeList titleList = element.getElementsByTagName("title"); // title要素を取得 Element titleElement = (Element)titleList.item(0); // title要素の最初の子ノード(テキストノード)の値を取得 String title = titleElement.getFirstChild().getNodeValue(); // file要素のリストを取得 NodeList fileList = element.getElementsByTagName("file"); // file要素を取得 Element fileElement = (Element)fileList.item(0); // file要素の最初の子ノード(テキストノード)の値を取得 String file = fileElement.getFirstChild().getNodeValue(); System.out.println("タイトル:" + title + " " + "ファイル:" + file); } } catch (Exception e) { e.printStackTrace(); } } } というように作成してみました。 そうすると実行結果が、 タイトル:EJB編 ファイル:ejb.htm タイトル:DOM編 ファイル:xmldom.htm タイトル:neko ファイル:neko.htm タイトル:DOMneko編 ファイル:nekoxmldom.htm となりました。私としては、elementの下にあるpretestのみを取得したいのですが 詰まり実行結果としては、 タイトル:EJB編 ファイル:ejb.htm タイトル:DOM編 ファイル:xmldom.htm となります。このように「この親(element)のこの子(pretest)」 という指定はできるのでしょうか?今の状態だと全てのpretestの要素を取得している ので何とかしたいのですが・・どうぞ宜しくお願いします。 長々と申し訳ありません・・
[この投稿を含むスレッドを表示] [この投稿を削除]
[144] Re:データ構造の重要性
投稿者:隠れファン
2007/02/20 02:13:25

はじめまして。 隠れファンです。 勝手に返信させて頂きます。 「センス・オブ・プログラミング」読ませて頂きました。 データ構造のあたりの考え方はかなり参考になりました。 >>抽象化・データ構造重視というとまさにオブジェクト指向的な考えですよね。 > >そう思います。「センス・オブ~」はオブジェクト指向の手前で止まっていますが、 >延長線上にある概念だと思います。 >オブジェクト指向を、従来のプログラミング技術と「まるで違う」もので >あるかのように宣伝したがる人も多いようですけど。 私も同感です。プログラミングの本質は言語が何であろうと変わらないと 思っています。「まるで違う」という人の意見は設計ではなく実装よりの ことを言っているのかもしれません。ただし設計と実装の境界が微妙な場合も 多々あると思います。 データ構造に関してですが、私はデータを処理するアルゴリズムがデータ構造に 依存しているために、仕様の変更時にデータ構造の変更は、アルゴリズムの変更も 伴うため、データ構造が重要だと思っています。但し、重要なデータほど オブジェクト指向ではインターフェースを利用しモジュールを分離するので、 結合度をどの程度にするかは結局は他とのバランスだと思っています。 >>オブジェクト指向に関する本もやがて出ると(勝手に)期待してます。 > >えーっと f(^^;; >たぶん私を逆さにして振っても、「Java謎+落とし穴~」に書いてある以上のことは >出てこないと思います。 ># でも、Webページの方も更新しないとなあ。 私も期待しています。特に最近のキーワードでもある「アジャイル開発」や「XP」 あたりのテーマを書いてほしいです。 オブジェクト指向の実装よりではなく設計よりの内容でのバイブルを作れるのは 前橋さんだと思っています。
[この投稿を含むスレッドを表示] [この投稿を削除]
[143] Re:難しいです。。
投稿者:神奈川
2007/02/20 02:13:25

有難うございます。。 返信遅れてすみません。。 >>実は、XMLファイルの検索のプログラムを作成し様としているのです。 > >ということは、 >・たくさんあるXMLファイルを片っ端から開いて、 >・内容を読み込み、解析し、 >・ある特定のキーワードが、(ある特定のタグの下に)あるファイルを抽出する。 >という動作になりますよね? (合ってますか?) 合ってます。 >私ならそもそもそういうメソッドは、 >ファイル名と検索キーワードを引数で受け取って、マッチしたかどうかを >booleanで返すようにしますけど。 なるほど具体的にいうと例えばどのようなプログラムでしょう? 簡単な受け取り部分のサンプルプログラムを教えていただけると嬉しいのですが・・ booleanが戻り値 public boolean a(引数) 引数は、ファイル名とキーワードは、複数ある場合があるから、配列で示すのかな ?? アホみたいな質問ですみません・・ >このページではDOMの環境構築の話から書いてあります いいページです。勉強中~。。 >これが「難しくてわけわからない」ということだとすると、 >今の神奈川さんには、ちょっと問題の難易度が高かった、ということだと思います。 初心者なので探り探りです・・・
[この投稿を含むスレッドを表示] [この投稿を削除]
[142] Re:データ構造の重要性
投稿者:(ぱ)
2007/02/20 02:13:25

はじめまして。 >前々から、前橋さんの本は結構気に入っていて、 >全部読んでいます。 ありがとうございます。大変励みになります。 >抽象化・データ構造重視というとまさにオブジェクト指向的な考えですよね。 そう思います。「センス・オブ~」はオブジェクト指向の手前で止まっていますが、 延長線上にある概念だと思います。 オブジェクト指向を、従来のプログラミング技術と「まるで違う」もので あるかのように宣伝したがる人も多いようですけど。 >オブジェクト指向に関する本もやがて出ると(勝手に)期待してます。 えーっと f(^^;; たぶん私を逆さにして振っても、「Java謎+落とし穴~」に書いてある以上のことは 出てこないと思います。 # でも、Webページの方も更新しないとなあ。
[この投稿を含むスレッドを表示] [この投稿を削除]
[141] データ構造の重要性
投稿者:sec
2007/02/20 02:13:25

はじめまして。 前々から、前橋さんの本は結構気に入っていて、 全部読んでいます。 今回のセンス・オブ・プログラミング!も さっそく読ましていただきました。 今回の本で、抽象化とデータ構造の重要さを改めて認識することができました。 仕事でコーディングする時は、ロジックに焦点がいきがちで、 ついデータ構造がおざなりになってしまいがちなんですよね。 私自身、そこまで意識して、データ構造を明確に意識して設計することは、 あまりなかったなぁと感じて、反省しています。 (でかいグローバルな構造体を用意して、そいつにすべての情報を詰め込み、 あらゆるところから、参照するという「やっちゃいけない」パターンを やってることが多いです。) 抽象化・データ構造重視というとまさにオブジェクト指向的な考えですよね。 オブジェクト指向に関する本もやがて出ると(勝手に)期待してます。 仕事もしながら、執筆は大変だと思いますが、今後もがんばってください。
[この投稿を含むスレッドを表示] [この投稿を削除]
[140] 難易度(ゴミ)
投稿者:774RR
2007/02/20 02:13:25

難易度って難しい℃なのかやさしい℃なのか、いつもわかりません。 素直に難度といえばいいのにとか思う今日子の頃。 燃費がいいってどっち?とか。
[この投稿を含むスレッドを表示] [この投稿を削除]
[139] Re:難しいです。。
投稿者:(ぱ)
2007/02/20 02:13:25

>実は、XMLファイルの検索のプログラムを作成し様としているのです。 ということは、 ・たくさんあるXMLファイルを片っ端から開いて、 ・内容を読み込み、解析し、 ・ある特定のキーワードが、(ある特定のタグの下に)あるファイルを抽出する。 という動作になりますよね? (合ってますか?) 抽出した後のファイルをどうするのかわかりませんが、ファイル名(パス)を 表示するだけなら、ファイルを探すメソッドの戻り値は、ファイル名(文字列)で よいように思います。ただ、私ならそもそもそういうメソッドは、 ファイル名と検索キーワードを引数で受け取って、マッチしたかどうかを booleanで返すようにしますけど。 で、フォルダ内のファイル名を片っ端からそのメソッドで判定する、 という処理は、その一階層上でやらせます。 具体的な実現手段を探してうろうろする前に、自分がなにをしたいのかを 明確にしないと、プログラムは書けませんよ。 また、こういうことをしたいのなら、難しいのはむしろXMLのパース(構文解析) でしょうが、XMLの構文解析はDOMなどを使うと簡単です。 JavaでHello World!: http://www.hellohiro.com/xmldom.htm このページではDOMの環境構築の話から書いてありますが、 1.4以降のJavaなら標準で入っています。 APIリファレンスはこちら: http://java.sun.com/j2se/1.4/ja/docs/ja/api/org/w3c/dom/package-summary.html これが「難しくてわけわからない」ということだとすると、 今の神奈川さんには、ちょっと問題の難易度が高かった、ということだと思います。
[この投稿を含むスレッドを表示] [この投稿を削除]
[138] Re:難しいです。。
投稿者:神奈川
2007/02/20 02:13:25

早速ありがとうございます。^^ >本当にやりたいことは、ファイル名から「ファイル」を得ることじゃなく、 >「そのファイルを読み書きするためのナニモノか」を得ることなんじゃないかなあ、 >という気がします(合ってますか?)。 (ぱ)さんは、すごく鋭いですね^^ 現在知識の詰め込み中でして・・多々解らない事がありまして。勉強中なんです。。 実は、XMLファイルの検索のプログラムを作成し様としているのです。 前のスレで似たような質問があったみたいですが、僕には解らなくて・・ タグで検索するという形なのですが、 例えば、入力のキーワードを「2ちゃん」とすると(下のxmlファイルを参照して) 下の<a>のタグの下に<b>内にある文字列である「2ちゃん」 を検索してこのxmlファイルを戻り値として返すという感じです。 入力キーワードが2つ以上ある場合は、それをandで計算して、その二つのキーワード が含まれる<a>のタグの下に<b>内にある文字列を検索します。 一致したファイルをxmlファイルを戻り値として返すという感じです。 ******②ちゃん.xml********* <c>    <b>ギコ</b>    <b>おにぎり</b> </c> <a>    <b>2ちゃん</b>    <b>掲示板</b> </a> *************************** 実は、二人で作業していまして、僕がファイルを戻すという作業をすることになったのです。 目的としては、見つけたファイルを戻して終了という感じです。 もしよろしければ、このようなサンプルプログラムとかあるでしょうか? なければ、どのような本を見れば乗ってるでしょうか? 宜しくお願いします。
[この投稿を含むスレッドを表示] [この投稿を削除]
[137] Re:難しいです。。
投稿者:(ぱ)
2007/02/20 02:13:25

どうも、はじめまして。 ご質問の件ですが、一般に 「自分が何をしたいのか、きちんと日本語で説明できないうちは、  プログラムは書けない」 と言えます。(ちょうど「センス・オブ・プログラミング!」にそんなことを書きました。) >引数が文字列で,戻り値がファイルというような形です。 ... >「おにぎり」というキーワードを入力 >↓ >ファイル名がおにぎりというファイルを出力 ここだけ読むと import java.io.*; class Test { File hoge(String path) { return new File(path); } } こんなことがしたいようにも読めますが… File f = Test.hoge("hoge.txt"); と呼び出した後で何をしたいのかが不明ですし。 本当にやりたいことは、ファイル名から「ファイル」を得ることじゃなく、 「そのファイルを読み書きするためのナニモノか」を得ることなんじゃないかなあ、 という気がします(合ってますか?)。 だとすれば、Fileではなく、FileInputStreamやFileOutputStreamを使うことになるでしょう。 このへんのクラスの説明については、JavaのAPIリファレンス http://java.sun.com/j2se/1.4/ja/docs/ja/api/index.html を参照してください。 http://java.sun.com/j2se/1.4/ja/docs/ja/api/java/io/File.html http://java.sun.com/j2se/1.4/ja/docs/ja/api/java/io/FileInputStream.html http://java.sun.com/j2se/1.4/ja/docs/ja/api/java/io/FileOutputStream.html
[この投稿を含むスレッドを表示] [この投稿を削除]
[136] 難しいです。。
投稿者:神奈川
2007/02/20 02:13:25

質問ですー JAVAでプログラムを組もうとしています。 JAVAでは文字列や数字などintなどの変数によって格納できますが、 ファイルを格納するということは、できるのでしょうか? 例えば 引数が文字列で,戻り値がファイルというような形です。 「おにぎり」というキーワードを入力 ↓ ファイル名がおにぎりというファイルを出力 というような形です。 宜しくお願いします。 プログラム初心者なので、出来もしない事を書いてあるかもしれません。 初歩的なことかもしれませんが宜しくお願いします。 そこも踏まえて宜しくです。。
[この投稿を含むスレッドを表示] [この投稿を削除]
[134] Re:可変長配列について
投稿者:(ぱ)
2007/02/20 02:13:25

>これは、この構造体の例よりも もっと合法な使い方である、 >単なる可変長配列を realloc() した場合にも起きる問題ですね。 うーん、たとえば折れ線を表現するときに、 typedef struct { int point_count; Point *point; } Polyline; typedef struct { int point_count; Point point[1]; } Polyline; というふたつの実現方法があって、どちらを使うかを考えたとき、 後者の方法だと、pointの数を増減させるたびにPolylineのアドレスが 変わってしまう、ということを言いたかったのですが。 確かにどちらもrealloc()すればpointの指すアドレスは変わりますが、 「pointはPolyline以外誰も指してないけど、Polylineを指してる奴は いっぱいいる」というケースはたぶんたくさんあって、後者の方が 危険度がかなり高いと思います(程度問題にせよ)。 >この手法は、C99 で合法化されたと考えて良いと思います。 >以下参照: >http://seclan.dll.jp/c99d/c99d04.htm#dt19990726 これはそうですね。 そういえばGCCにも、point[0]と書ける拡張機能がありました。
[この投稿を含むスレッドを表示] [この投稿を削除]
[133] Re:可変長配列について
投稿者:kit
2007/02/20 02:13:25

> このテクニックで可変長配列を実現すると、realloc()で配列を > 拡張したとき、 これは、この構造体の例よりも もっと合法な使い方である、 単なる可変長配列を realloc() した場合にも起きる問題ですね。 例としては、むしろ、pArry[1] みたいなアクセスでまずいことに なることを挙げた方がいいような気がします。 > 微妙です。少なくとも合法と言い切ることはできません。 この手法は、C99 で合法化されたと考えて良いと思います。 以下参照: http://seclan.dll.jp/c99d/c99d04.htm#dt19990726
[この投稿を含むスレッドを表示] [この投稿を削除]
[132] Re:可変長配列について
投稿者:(ぱ)
2007/02/20 02:13:25

>「センス・オブ・プログラミング」読ませていただきました。 >読んで良かったと思いました。 はじめまして。読んでいただきありがとうございます。 >ところで、可変長配列について説明(P153)がちょっと足りないのでは? このテクニックは、私も「ポインタ完全制覇」では説明していますが、 今回の本で必要だったかというとどうかと思います。 Cに特化した話ですし(だからこそ「Cに特有の話」の項になら書いてよいのでは、 というご意見なのだと思いますが)、それに、このテクニックは、使用できる 状況が限定されますし。 このテクニックで可変長配列を実現すると、realloc()で配列を拡張したとき、 構造体本体のアドレスまで変わってしまう可能性があります。 よって、この構造体を指しているポインタがどこかにあるときは、 このテクニックは使えません。 また、可変長配列にできる要素が最後のひとつだけ、という問題もあります。 このテクニックを使う機会は、「その構造体を、連続した塊としてファイルに 吐いたり、ネットワークでどこかに送りたい」というケースに限定されるように 思います。 >Cではこれが間違いではありません。---① 微妙です。少なくとも合法と言い切ることはできません。 C-FAQには以下の記述があります。 http://www.kouno.jp/home/c_faq/c2.html#6 | この技巧は人気がある。ただしDennis Ritchieは「Cの実装への | 根拠のない馴れ馴れしさ」と呼んだ。公式な解釈によると上の | 技巧は Cの 規格に厳密には準拠していないと考えられる。 私も同じように思います。が、ほぼ全ての環境で動くと思うので、 移植性を根拠にこれを使うことをためらう必要はないでしょうけど。 >この2点が「Cに特有の話」である事で、この説明が足りないと思いました。 補足の形で(Webに)載せた方がよいかどうかは、現在思案中です。
[この投稿を含むスレッドを表示] [この投稿を削除]
[131] 可変長配列について
投稿者:しゅん
2007/02/20 02:13:25

「センス・オブ・プログラミング」読ませていただきました。 読んで良かったと思いました。 特に3章は共感する所が多くありました。 私もコピペやっちゃうんですよね、そして後で後悔してますね。 新人の頃に読めたらもっと何か違っていたかもと思いもしました。 ところで、可変長配列について説明(P153)がちょっと足りないのでは? 特に「Cに特有の話」の部分にかかります。 typedef struct _VARIABLEARRY { int valMaxIndex; char val[1]; // 1つの配列のインデックス値は本来0だけが有効。 // char val[0]; の記述はコンパイラの実装により異なる。 }VARIABLEARRY; たとえばこの場合 int maxIndex = 10; VARIABLEARRY *pArry; pArry = malloc( sizeof(VARIABLEARRY) + maxIndex ); pArry->valMaxIndex = maxIndex; pArry->val[1] = 'a'; // 配列のインデックス値が宣言した範囲を超えている。 の表記が許される事です。 BASICでは配列のインデックス値が範囲を超えるとエラーです。 Cではこれが間違いではありません。---① また、構造体の最後のメンバを配列にする事でこれが可能である事です。---② typedef struct _VARIABLEARRY { char val[1]; int valMaxIndex; }VARIABLEARRY; とした場合は正しく機能しません。 この2点が「Cに特有の話」である事で、この説明が足りないと思いました。
[この投稿を含むスレッドを表示] [この投稿を削除]
[130] Re:C++におけるラベル付きbreakについて
投稿者:(ぱ)
2007/02/20 02:13:25

>ところで本文中でちょっとした誤りだと思われる箇所を見つけました。 >goto文について解説しているところで、JavaとC++にはラベル付きbreakが >存在すると記述されていますが、C++では聞いたことがなかったので念のために ご指摘ありがとうございます。 とりあえず手元のStroustrup本で確認しましたが、C++にラベル付きbreakは ありませんね。なぜかは知りませんが勘違いしていたようです。 これは罪の重い間違いだと思います。申し訳ありません。 正誤表に載せておきました。
[この投稿を含むスレッドを表示] [この投稿を削除]
[129] C++におけるラベル付きbreakについて
投稿者:lowlander
2007/02/20 02:13:25

センス・オブ・プログラミング読ませて頂きました。 プログラミングにおけるポイントを押さえていていい本だと感じました。 またループに使用する変数i,j,k,...の由来を知ったときは感激でしたね。 ところで本文中でちょっとした誤りだと思われる箇所を見つけました。 goto文について解説しているところで、JavaとC++にはラベル付きbreakが 存在すると記述されていますが、C++では聞いたことがなかったので念のために ISO/IEC FDIS 14882:1998を調べてみました。ところが自分が調べた限り そのような記述は見つかりませんでしたので、ご確認していただけないでしょうか? 一応自分が参照したFDISのbreakに関する部分を掲載させていただきます。 では失礼致します。 6.6.1 The break statement The break statement shall occur only in an iterationstatement or a switch statement and causes termination of the smallest enclosing iterationstatement or switch statement; control passes to the statement following the terminated statement, if any.
[この投稿を含むスレッドを表示] [この投稿を削除]
[128] Re:指を折って数える
投稿者:(ぱ)
2007/02/20 02:13:25

昨晩は飲んだくれてまして反応が遅れました。すみません。 >0~5 の 6通りの数を表現しています。 あっ。 …重ね重ねありがとうございます。(_o_) 修正しておきました。
[この投稿を含むスレッドを表示] [この投稿を削除]
[127] Re:指を折って数える
投稿者:かずま
2007/02/20 02:13:25

>えっ! …と思ってやってみたら本当でした。どうもボケていたようです。 >どう直すべきか悩むところですが、正誤表に入れておきます。 : 正) : しかも、0と10、1と9、2と8などは同じ形ですから、実際は5通りの数しか表現していません。 0~5 の 6通りの数を表現しています。 [1] 0 - 10 [2] 1 - 9 [3] 2 - 8 [4] 3 - 7 [5] 4 - 6 [6] 5
[この投稿を含むスレッドを表示] [この投稿を削除]
[126] Re:第一号かな?
投稿者:(ぱ)
2007/02/20 02:13:25

> へぇ、そういうものなんですか(おどろき) > TeXの機能に索引に載せる単語を指定すると > 自動で索引作成してくれるような機能があったと思っていたので > そんな感じに改版するたびに全自動で作ってるのかと思ってました。 編集さんが使っているDTPソフトには、そういう機能があるのだろうと思います。 ミスが出ている以上、どこかに手作業が介在しているのでしょうけど。 たとえば、自動生成した索引を手でレイアウトしなおしていて、再生成すると 手作業分がふっとぶから、そこだけ手で直した…とか(想像です)。 > えっ、全ページ出力し直すわけじゃないんですか。 そのようです。例外として、「体当たり学習」では、タイトルとかの背景の luckyがスペルミスしてる、という問題があって(初版発行まえに差し替えを 要求したはずが、印刷会社側のミスで反映されていなかった)、このときは 第2刷の際に全ページ再出力しました。「どうせ再出力するから、直したい ところがあれば言って欲しい」というようなことを言われました。 > きっとワープロ→プリンタ出力の様なイメージで考えちゃ > いけない世界なんですね...(^^;) 数千とか万とか刷る本は、「小部数ではバカ高だが、たくさん刷れば安くなる」 方法で印刷しますから、事前準備の部分にコストがかかるということなんでしょうね。 ># と、いうことは間違え探しも見つけるたびに言うのではなく、 ># 一気に出さないと迷惑なのかしら? (^^;) いえ、修正は増刷のタイミングで行うわけですから、その分のバッファリングは こちらでできます。見つかるたびに報告していただけたほうがありがたいです。
[この投稿を含むスレッドを表示] [この投稿を削除]
[125] Re:指を折って数える
投稿者:(ぱ)
2007/02/20 02:13:25

おひさしぶりです。いつもありがとうございます。 >1と9、2と8、3と7、4と6 も同じ指の形になりませんか? 実質は 5。 えっ! …と思ってやってみたら本当でした。どうもボケていたようです。 どう直すべきか悩むところですが、正誤表に入れておきます。 >p.85 図 2-26 コンパイラの出力が「hello.c」になっています。 こちらもご指摘ありがとうございます。 # ここは、念校時に直してもらうようお願いしたのですが、意図とは異なる # 直され方をしてしまったようです。書き方が悪かったかなあ。
[この投稿を含むスレッドを表示] [この投稿を削除]
[124] Re:指を折って数える
投稿者:かずま
2007/02/20 02:13:25

>「センス・オブ・プログラミング」買いました。 書名に「!」をつけるのを忘れました。全角か半角かは? > 1と9、2と8、3と7、4と6 も同じ指の形になりませんか? 実質は 5。 「実質は 0~5」と書いたつもりでした。
[この投稿を含むスレッドを表示] [この投稿を削除]
[123] 指を折って数える
投稿者:かずま
2007/02/20 02:13:25

「センス・オブ・プログラミング」買いました。 p.60 しかも、0 と 10は同じ指の形ですから、実質は 0~9 までになるでしょう。 1と9、2と8、3と7、4と6 も同じ指の形になりませんか? 実質は 5。 p.85 図 2-26 コンパイラの出力が「hello.c」になっています。
[この投稿を含むスレッドを表示] [この投稿を削除]
[122] Re:第一号かな?
投稿者:本多
2007/02/20 02:13:25

> 索引に関しては、私は、ゲラの段階で、索引に載せるべき単語にマーカーで >印を付ける、という以上の作業はしていません。よって、どのようにして索引が >作られているかどうかは知らないんですよ。 へぇ、そういうものなんですか(おどろき) TeXの機能に索引に載せる単語を指定すると 自動で索引作成してくれるような機能があったと思っていたので そんな感じに改版するたびに全自動で作ってるのかと思ってました。 # TeXは修論のとき以来触ってないから、 # もうどんな機能があったか忘却のかなたですねぇ。 # \frac{1}{2} だったかな? > 増刷の際に自動的に直るということはないと思います。増刷時、ポカが >あったりして直す際は、ページ単位で製版し直しているようです。 >ページ単位でコストが発生するため、「全部作り直す」ということはしないはずです。 えっ、全ページ出力し直すわけじゃないんですか。 きっとワープロ→プリンタ出力の様なイメージで考えちゃ いけない世界なんですね...(^^;) # と、いうことは間違え探しも見つけるたびに言うのではなく、 # 一気に出さないと迷惑なのかしら? (^^;)
[この投稿を含むスレッドを表示] [この投稿を削除]
[121] Re:第一号かな?
投稿者:(ぱ)
2007/02/20 02:13:25

> ところで、索引とかは何かのツールで自動生成してると思うので、 > 第2版では直っている、もしくは自動的に直ってしまうかもしれませんが > 一つ間違いを見つけました...  これもご指摘ありがとうございます。  まずは編集さんに伝えておきました。 > どうしてこういうことが発生するのかしら?ツールにバグがあるのかな? > ツールで索引作成後に文章を書き足したのでしょうか?  索引に関しては、私は、ゲラの段階で、索引に載せるべき単語にマーカーで 印を付ける、という以上の作業はしていません。よって、どのようにして索引が 作られているかどうかは知らないんですよ。 # 知っていたとして、ここに書いてよいかどうか、という問題もありますが。 >こういう場合、チェック項目が何個もあるんでしょうけど、 >それを自動化できないのはプログラマとしては歯がゆい感じしません?  元原稿はLaTeXで書いているので、「3章を参照してください」とか 「p.XXXを参照してください」という類の相互参照は、私が提出する段階では 自動チェックできるんですが、いずれにしても組版すれば変わってしまうので、 あとは編集さんにお任せですね。ゲラを見ると、いろいろこう、歯がゆいことも あるんですが(謎)  増刷の際に自動的に直るということはないと思います。増刷時、ポカが あったりして直す際は、ページ単位で製版し直しているようです。 ページ単位でコストが発生するため、「全部作り直す」ということはしないはずです。
[この投稿を含むスレッドを表示] [この投稿を削除]
[120] Re:第一号かな?
投稿者:本多
2007/02/20 02:13:25

>> これだけの分量に対して、この程度の量の間違いって言うのは >> 私のプログラムのソースコードとバグの比率と比べて >> かなりいいと思いますが。 >いやあ、プログラムのテストと同じで、現状で見つかっているポカの数が >本当のポカの数を反映しているとは限らないわけでして。 >現状のチェックがぬるいだけで、これから増えるかもしれません。 こういう場合、チェック項目が何個もあるんでしょうけど、 それを自動化できないのはプログラマとしては歯がゆい感じしません? ところで、索引とかは何かのツールで自動生成してると思うので、 第2版では直っている、もしくは自動的に直ってしまうかもしれませんが 一つ間違いを見つけました... 索引(INDEX)中の「副作用」の項目を調べると97ページと書いてありますが 実際には副作用の記述は97ページにはなくて98ページにあるようです。 どうしてこういうことが発生するのかしら?ツールにバグがあるのかな? ツールで索引作成後に文章を書き足したのでしょうか? あ、「プロシージャ」は98ページとなっていますが、99ページにあるようですね。 ずれている場所を細かく調べると、どの文章を書き足したかわかる仕組み?(^^)/
[この投稿を含むスレッドを表示] [この投稿を削除]
[119] Re:第一号かな?
投稿者:(ぱ)
2007/02/20 02:13:25

> これだけの分量に対して、この程度の量の間違いって言うのは > 私のプログラムのソースコードとバグの比率と比べて > かなりいいと思いますが。 いやあ、プログラムのテストと同じで、現状で見つかっているポカの数が 本当のポカの数を反映しているとは限らないわけでして。 現状のチェックがぬるいだけで、これから増えるかもしれません。 もちろんそうならないことを祈ってますけれど。
[この投稿を含むスレッドを表示] [この投稿を削除]
[118] Re:誤り??
投稿者:(ぱ)
2007/02/20 02:13:25

>> ! = >>となっているように見えます ... >編集さんに確認メールを出しておきました。  回答が来ました。  結論から言うと、「!が全角になっていた」そうです。  本文中で感嘆符として使う「!」は、私はいつも半角で書いていますが、 編集の際に全角に統一するらしく、その際、置換しすぎたそうです。  本多さんご指摘の図を含め、第2刷にギリギリ間に合ったそうです。  取り急ぎ、ご報告まで。
[この投稿を含むスレッドを表示] [この投稿を削除]
[117] Re:第一号かな?
投稿者:本多
2007/02/20 02:13:25

> この週末は風邪引いて寝込んでまして、反応が遅れましてすみません。 ご自愛くださいませ。 > 正誤表の方ですが、ちょうど増刷がかかり、通しチェックをしていたので、 >それで見つけたポカと合わせてページを作成しました。 これだけの分量に対して、この程度の量の間違いって言うのは 私のプログラムのソースコードとバグの比率と比べて かなりいいと思いますが。 #まぁ、それは比較対照が悪すぎとも言いますが...(^^;)。 なにしろ、書物の世界はプログラムと違って コンパイラが構文チェックしてくれませんから ほとんど机上デバッグですもんね。
[この投稿を含むスレッドを表示] [この投稿を削除]
[116] Re:誤り??
投稿者:(ぱ)@ネットカフェ
2007/02/20 02:13:25

>センスオブプログラミングの95ページに掲載されてる否定演算子(名前うろ覚え) > != >ですが、間にスペースが入って > ! = >となっているように見えます ご指摘ありがとうございます。 確かにそう見えます。私自身、「心の隅にひっかかってた」状態でした。 ただ、 ・私から編集さんに原稿を出すときは、当然電子入稿(テキストファイル)である ・私が出した元原稿では、そんなところにスペースはない ・編集さんのところでわざわざそんなところをいじることはないだろう という判断で、フォントの都合か何かかと思っていました。 でも、別ページを見ると、もっと詰まっているところもありますよね。 編集さんに確認メールを出しておきました。
[この投稿を含むスレッドを表示] [この投稿を削除]
[115] 誤り??
投稿者:ja
2007/02/20 02:13:25

センスオブプログラミングの95ページに掲載されてる否定演算子(名前うろ覚え) != ですが、間にスペースが入って ! = となっているように見えます
[この投稿を含むスレッドを表示] [この投稿を削除]
[114] Re:コピペしたでしょ?
投稿者:(ぱ)
2007/02/20 02:13:25

>初めまして。koicと申します。 はじめまして。 >スレ違いでしたらすみません。 とんでもないです。スレッドタイトルそのままです。あああ。 >「センス・オブ・プログラミング!」のページに書かれているISBNが「Java謎+落とし穴徹底解明」のISBNになっております。 修正しました。重ね重ねポカしてましてすみません(_o_)
[この投稿を含むスレッドを表示] [この投稿を削除]
[113] Re:第一号かな?
投稿者:(ぱ)
2007/02/20 02:13:25

>P66の繰り上がり計算回路の「OR回路」の記号がAND回路で書かれています。  ご指摘ありがとうございます。  この週末は風邪引いて寝込んでまして、反応が遅れましてすみません。  正誤表の方ですが、ちょうど増刷がかかり、通しチェックをしていたので、 それで見つけたポカと合わせてページを作成しました。  …が、本多さんのご指摘は、気付いてすぐ編集さんにメールを入れたのですが、 たぶん第2刷に間に合っていないと思います。残念。
[この投稿を含むスレッドを表示] [この投稿を削除]
[112] Re:コピペしたでしょ?
投稿者:koic
2007/02/20 02:13:25

初めまして。koicと申します。 スレ違いでしたらすみません。 「センス・オブ・プログラミング!」のページに書かれているISBNが「Java謎+落とし穴徹底解明」のISBNになっております。
[この投稿を含むスレッドを表示] [この投稿を削除]
[111] 第一号かな?
投稿者:本多
2007/02/20 02:13:25

P66の繰り上がり計算回路の「OR回路」の記号がAND回路で書かれています。
[この投稿を含むスレッドを表示] [この投稿を削除]
[110] Re:スタイルあれこれ
投稿者:れぷ
2007/02/20 02:13:25

こんばんは。 > それはそう思います。でもそれはお互い様であるわけで、 > プロジェクトに入ったら、「郷に従え」とは思います。 同意します。 そういうわけで私は新規作成の場合は自分のスタイルで打って コンパイル通ったら括弧の位置を直したりしてます(^-^;) 追加の場合は直してる時間がもったいないので 最初から規約に従ってコーディングしますね。 > 関数の最初のレベルはインデントしない、という規約もあった これってちょっと誤認識しそう(^-^;) 最近は4タブでエディタ横幅が広いのでネストを展開したり、 内部関数化して切り離すほうが現実的かもしれないですね。 # 実はまだ8タブ規約のプロジェクトも健在してます。 そういえば昔は変数宣言だけはインデントしないところは多かったような。 int main(void) { char hoge; int piyo; /*--- 以下略 ---*/ } 処理がどこから始まるかがパッと見で判らないからなんでしょうけど、 私はあまり好きになれませんでした。 > 組み込みとかでもまた話は違うとは思います。 私も組み込みは経験がないので何とも言えなかったり・・・ メモリを節約するなら共用体も有効かも!? # サーバ系だと怒られそうですが。 グローバル変数は今の時代なら「クラス内static変数にすれば十分」とか 色々な選択ができるので議論が広がりそうですね。 ちなみに未だに残っている80文字制限ですが、 「telnetでシェルスクリプトなどを覗くクライアントがいて折り返すと大激怒される」 という理由のあって渋々やっているプロジェクトがありました。 # もちろん彼らはコードが読めないのですが・・・
[この投稿を含むスレッドを表示] [この投稿を削除]
[109] Re:買いました。
投稿者:(ぱ)
2007/02/20 02:13:25

>あとスタイルは長年の経験で手が憶えたとおりに打ってしまうので、 >それを変えるのが嫌というのも原因かもしれませんね。実際、変えるの難しいですし。 それはそう思います。でもそれはお互い様であるわけで、 プロジェクトに入ったら、「郷に従え」とは思います。 きっと違う誰かが保守するわけですからね。 ただ、聞いた話ですが、 int main(void) { printf("hello\n"); if (a==0) { printf("world.\n"); } } みたいな感じで、関数の最初のレベルはインデントしない、という 規約もあったそうです。確かに関数の切れ目はコメントなどでわかるから 無駄にインデントを深くしないためには合理的なのかもしれませんが… でも、あんまり一般的じゃない規約はちょっと勘弁してほしい、とも思ったり。 >私もここ何年かで読み手主体で名前をつけるようになりました。(WinAPIの影響かも) WinAPIやJavaのおかげで、最近の世代では長い名前が当たり前になっているかも しれませんね。今あれを本に書くのはちょっと時代遅れだったかも。 >グローバル変数はゲーム系だと良く利用しますし、 >「オープン系ではこう」「でもゲーム系はこう」なんて限定したほうが良いのかな、と思ってます。 組み込みとかでもまた話は違うとは思います。経験がないのであまり語れませんが。 実行環境にメモリがなくても、開発環境のコンパイラが賢ければ、(インライン関数とかで) カバーできる部分もあるのではないか、と思いますが… Cだと苦しいですかね。
[この投稿を含むスレッドを表示] [この投稿を削除]
[108] ソースを読む・読ませる
投稿者:れぷ
2007/02/20 02:13:25

丁度いいタイミングで「ソースを読む」ことに関連するサイトを発見(^-^;) ソースコードを読むための技術   http://i.loveruby.net/ja/misc/readingcode.html 引用元:   http://d.hatena.ne.jp/oooooooo/20041109#p2   →言われてみると確かに、と思いました。    私は他人のソースを読むのは好きです。
[この投稿を含むスレッドを表示] [この投稿を削除]
[107] Re:買いました。
投稿者:れぷ
2007/02/20 02:13:25

> 「中括弧の位置論争」なんかはもう純粋に好みの問題でしかない そうですね。 あとスタイルは長年の経験で手が憶えたとおりに打ってしまうので、 それを変えるのが嫌というのも原因かもしれませんね。実際、変えるの難しいですし。 (変数名、関数名のつけ方にも言えますね) だから私は自分のスタイルでコーディングして、 必要最低限(要は目立ちそうなところだけ)だけ規約どおりに直してます。 > 私は、本にも書いたとおり、「読むとき」の方が重要だと考えているので >あのような記述になりましたが、異なる立場はもちろんあって良いわけで、 私もここ何年かで読み手主体で名前をつけるようになりました。(WinAPIの影響かも) 下手に省略しないので命名も意外と楽ですし、統一が取りやすい感じがします。 逆にcreateをcrtなんて略されると私は思い出すのが面倒だなと最近思ったり・・・ >立場が変われば「変数なんて1文字でいいよね」とか「グローバル変数マンセー」が >正解になることもあるかもしれません。 変数一文字は「y = a * x + b」など明らかに意味が読み取れるなら問題ないでしょうね。 ただ、数学得意な方がこぞってこれをやってしまうと 普通のプログラマが演算ライブラリを弄るのにひと苦労かも(^-^;) グローバル変数はゲーム系だと良く利用しますし、 「オープン系ではこう」「でもゲーム系はこう」なんて限定したほうが良いのかな、と思ってます。
[この投稿を含むスレッドを表示] [この投稿を削除]
[106] Re:サンプルコード
投稿者:(ぱ)
2007/02/20 02:13:25

>さっき、X-Wordのサンプルコード(Windows版)をダウンロードしてビビりました。 >xword_ver1.0\maebashi\book\kotsu\xword_ver1.0\src_dos\com\kmaebashi\xword >なんか、一般向けに配布するにしちゃ、やけに階層が深くないですか?(^^;) すみません、単純に、圧縮する際のミスでした。修正しました。 報告ありがとうございました。 ログを見ると、30人ほどの方が既にダウンロードされていたようです。 確認不足でご迷惑をおかけいたしました。
[この投稿を含むスレッドを表示] [この投稿を削除]
[105] サンプルコード
投稿者:本多
2007/02/20 02:13:25

さっき、X-Wordのサンプルコード(Windows版)をダウンロードしてビビりました。 xword_ver1.0\maebashi\book\kotsu\xword_ver1.0\src_dos\com\kmaebashi\xword なんか、一般向けに配布するにしちゃ、やけに階層が深くないですか?(^^;) (kmaebashiという名前のフォルダが2度現れて、階層がループしてるのかと疑いました) 今後、配布するコードを格納するためのフォルダとかを熟慮した結果こうなった...ということかしら? まだ、この本を手に入れてないんですけど、 「普通は、これくらい深い階層で開発するべきなんだ」とか書いてあったりして?
[この投稿を含むスレッドを表示] [この投稿を削除]
[104] Re:買いました。
投稿者:(ぱ)
2007/02/20 02:13:25

 お買い上げいただきありがとうございます。 >スタイルについては「なぜ相手がそうしているのか」を理解する気があれば、 >話は大荒れになったりしないんだろうといつも思いますけどね(^-^;) ># もしかして雑記はこのための布石とか?  そうかもしれません (^^;  雑記帳の方には、 | 最終的に「好み」や「優先度」の問題に落ち着くようなことは結論は出ませんけど  と書きましたが、スタイルに関する宗教戦争にもこういう面はあると思います。  リンク集にも入れている「「いんちき」心理学研究所」の編集後記のページで、 こんな記述があります。 http://2shin.net/neko/ | コップに水が半分あって、「もう半分しかない」と解釈するか | 「まだ半分もある」と解釈するかでどちらが正しいかを議論して | どれだけ意味があるのか。  「中括弧の位置論争」なんかはもう純粋に好みの問題でしかないと思いますが、 たとえば変数名をどれくらいの長さにするのか、ということであれば、 ソースを「書くとき」と「読むとき」のどちらに重点を置くかで 正しい対応が変わってきます。  私は、本にも書いたとおり、「読むとき」の方が重要だと考えているので あのような記述になりましたが、異なる立場はもちろんあって良いわけで、 立場が変われば「変数なんて1文字でいいよね」とか「グローバル変数マンセー」が 正解になることもあるかもしれません。
[この投稿を含むスレッドを表示] [この投稿を削除]
[103] 買いました。
投稿者:れぷ
2007/02/20 02:13:25

昔のエディタのアルゴリズム(ポインタを逆向きに繋ぎかえる)とかが 掲載されていたので興味を持って買いました。 # 恥ずかしながらその辺り知らなかったもので・・・ かなり現場寄りの要点が書かれていますね。 私も「あー、そうなんだよ。」なんて思いながら読み進めてました。 # 私もこれくらい的確な説明で指導できればなぁ(T_T) スタイルについては「なぜ相手がそうしているのか」を理解する気があれば、 話は大荒れになったりしないんだろうといつも思いますけどね(^-^;) # もしかして雑記はこのための布石とか?
[この投稿を含むスレッドを表示] [この投稿を削除]
[102] Re:コピペしたでしょ?
投稿者:(ぱ)
2007/02/20 02:13:25

>「「センス・オブ・プログラミング!」のページに戻る」ためのリンクが >「「Java謎+落とし穴徹底解明」のページに戻る」となってますよー(^.-) うわ、ご指摘ありがとうございます。修正しました。 >コピペしたでしょ? 図星です。 この本の中に、「コピペすると後で必ず後悔するよ」ってことが書いてあるのですが、 まさに身をもってそれを実践してしまいました(_o_)
[この投稿を含むスレッドを表示] [この投稿を削除]
[101] コピペしたでしょ?
投稿者:本多
2007/02/20 02:13:25

どうでもいいことですが、例題プログラム「X-Word」のページの一番下にある 「「センス・オブ・プログラミング!」のページに戻る」ためのリンクが 「「Java謎+落とし穴徹底解明」のページに戻る」となってますよー(^.-)
[この投稿を含むスレッドを表示] [この投稿を削除]
[100] Re:「宗教な話」について
投稿者:(ぱ)
2007/02/20 02:13:25

>いつも楽しく読ませていただいております。 どうもです。 >なぜなら、面倒臭い作業をしなければならない状況ほど、「思考停止」というのは人を楽 >にしてくれるからです(人間の生理というのはそういうものなんだそうです)。 ええと、プログラマのような「面倒なことを回避できる仕事」ならともかく、 回避できない仕事の人は思考停止もある程度しょうがない、ということでしょうか? うーん、仕事上のことであればそうかもしれませんが、それ以外のことについては どうでしょうか。職種が全てに影響を与えるほど、みんな心血絞って仕事してる わけじゃない気がするんですが。 あと、雑記で書いた「進化論と創造論」のような話なら、それこそ日常生活を 送るには関係ない話です。「神様が創ったんだよ」を丸呑みするよりは、 「おら知らね」の方がずっと誠実な態度だと思えるんですよね。
[この投稿を含むスレッドを表示] [この投稿を削除]
[99] 「宗教な話」について
投稿者:roy
2007/02/20 02:13:25

いつも楽しく読ませていただいております。 で、雑記の「宗教な話」を読んだ感想としては、仰ることには全面的に賛成ですけれども、 「面倒臭いことからは可能な限り逃げるのがプログラマの美徳」と仰る(ぱ)さんらしい 見解だとも思いました。 なぜなら、面倒臭い作業をしなければならない状況ほど、「思考停止」というのは人を楽 にしてくれるからです(人間の生理というのはそういうものなんだそうです)。 ちなみに、私はプログラマとは全く畑の違う職業に就いておりますが、やはり面倒臭い作 業から逃げることが許されない職業です。 もちろん、職業だけで人の思考が規定されるわけでもありませんし、私自身も(ぱ)さん の仰るとおり、思考停止に陥らないよう努力したいものですけど、それでも世の中からは 思考停止な人が消えることはないんでしょうね。
[この投稿を含むスレッドを表示] [この投稿を削除]
[98] 断酒の話
投稿者:(ぱ)
2007/02/20 02:13:25

ええと、投稿者により削除された投稿にレスするのもアレかもしれませんが。 昨年は、2月の健康診断に向けて11月末(って30日だから実質12月からですな)から 断酒を始めたわけですが、会社が変わったせいで、健康診断の時期が変わってしまいました。 どうも5月頃らしいです。 「俺はいつ断酒をはじめたらいいんだろ」と同僚に言ったら、 「今から始めればいいのでは」と言われてしまいました。もっともです。
[この投稿を含むスレッドを表示] [この投稿を削除]
[97] Re:センス・オブ・プログラミング!
投稿者:(ぱ)
2007/02/20 02:13:25

>前橋信者未満な前橋ファン、かつ半人前プログラマな僕としては、これは >是非読みたいです! ありがとうございます (_o_) >先日の「宗教な話」を深読みすると、論争を巻き起こしそうな内容ってこと >なのでしょうか?期待しています! そういう面が全くないとは言いませんが、そんなにはないだろう、と 書いた本人は思っていますです。 もちろん既刊の3冊も、そうだと思っています(きっぱり)
[この投稿を含むスレッドを表示] [この投稿を削除]
[95] センス・オブ・プログラミング!
投稿者:kei
2007/02/20 02:13:25

前橋信者未満な前橋ファン、かつ半人前プログラマな僕としては、これは 是非読みたいです! 仕事帰りにさっそく書店に寄ってみます。(って、仕事中に書き込んでますが。。) 先日の「宗教な話」を深読みすると、論争を巻き起こしそうな内容ってこと なのでしょうか?期待しています!
[この投稿を含むスレッドを表示] [この投稿を削除]
[94] Re:「信者」論
投稿者:(ぱ)
2007/02/20 02:13:25

 や、まとまらない話にご意見いただきありがとうございます。 > しょせん日本人が「私は Free Software Foundation 信者である」とか「彼は qmail 信者だから」 >といったところで、葬式のときには仏教に頼る、という程度の意味しか持たないのではないかと思うのです。  これなんですが、伝統宗教以外の世界で「○○信者」と言ったらそれはけなし言葉だろう、 つまり自分から「○○信者」と名乗ることはあるまい、ということを雑記帳には書いた のですが、書きながら、いやFSF信者だけは「自称」するかもしれない、と思ってました。 いやそのなんとなく。 > Gnu/Linux 遣いが PostgreSQL を使ったり、qmail 信者の人が DNS サーバは BIND だったり。  正しい姿勢だと思います。所詮は道具なので。 > ...で、そこが日本人の良いところだと思うのです。  これはつくづくそう思います。  葬式仏教にはそれなりの存在意義があるし、初詣だって仲間とわいわい行けば楽しい でしょうし。
[この投稿を含むスレッドを表示] [この投稿を削除]
[93] 「信者」論
投稿者:やえもん (パイプ)
2007/02/20 02:13:25

しょせん日本人が「私は Free Software Foundation 信者である」とか「彼は qmail 信者だから」 といったところで、葬式のときには仏教に頼る、という程度の意味しか持たないのではないかと思うのです。 Gnu/Linux 遣いが PostgreSQL を使ったり、qmail 信者の人が DNS サーバは BIND だったり。 「信者」という言葉の意味、英語の「洗礼を受けた人」よりもだいぶ軽いんじゃないですかね。 ...で、そこが日本人の良いところだと思うのです。 -- yaemon
[この投稿を含むスレッドを表示] [この投稿を削除]
[92] Re:メタデータの関係付けプログラムについて
投稿者:(ぱ)
2007/02/20 02:13:25

>>b)KeywordとPKeywordの区別はつけられるのか、という気がしますし、 >タグ検索のような事ができると聞いた事が有ります。例えばKeywordで検索すると ><Keyword></Keyword>の属性をメタファイルからチョイスし(複数ある場合もあります) XMLから特定の要素を抜き出したいのであれば、DOMなりSAXなり使えばよいと思います。 ただ、私が「KeywordとPKeywordの区別はつけられるのか」と書いているのは、 「PKeywordはそもそも不要では?」ということです。 既に例示されているA, Bでは、AがBへのリンクを持つだけでなく、BもAへの リンクを持つことになるのでは? つまりPKeywordは不要で、 単純に「共通のKeywordを含むメタデータへリンクする」ということに なるのではないかと思うわけです。 >>c)LOMだと、他のリソースを参照する場合はRelationという要素を使うようですし。 >LOMのRelationは,他のコンテンツ(LOMではない)を関係付ける記述です。また おっと、これは私が誤解していました。失礼しました。 >何か良い正規化の仕方は,あるでしょうか? >>a)メタデータクラスとキーワードクラスができて、 >>b)メタデータクラスはキーワードクラスを0..*で集約していて、 >>c)キーワードクラスは、そのキーワードにより関連するメタデータへの >> 参照を保持するようにする。 ここのところ、修正します。あるキーワードから、そのキーワードにより 関連するメタデータは複数ありますよね。 >>または、LOMの構造を意識するなら、 >> >>a)メタデータクラスとキーワードクラスとリレーションクラスができて、 >>b)メタデータクラスはキーワードクラスを0..*で集約していて、 >>c)メタデータクラスはリレーションクラスも0..*で集約していて、 >>d)リレーションクラスは、そのメタデータと、何らかの要因(必ずしもそれは >> キーワードの一致でなくてもよい)で関係するメタデータへの参照を >> 保持するようにする。 >これも勉強します。「0..*で集約」の意味が解っていないという寂しさ・・ 正直、この件に関する限り、特にOO用語を使う必要はないように思います。
[この投稿を含むスレッドを表示] [この投稿を削除]
[91] Re:メタデータの関係付けプログラムについて
投稿者:ねこさん
2007/02/20 02:13:25

はじめまして(ぱ)さん。有難うございます(^0^) ものすごい早い回答で嬉しいです。またご丁寧な説明有難うございます。 ならびに少々わかりづらい文面があったこと申し訳ありません。 プログラム初心者の私にとって,メタデータの関係付けプログラムを 作成するのは,色々と難解な所が有ります。・・(ToT) 頑張ります。 >a)あるデータについて、Keywordはひとつのような気はしませんし、 確かに複数ある場合があります。 >b)KeywordとPKeywordの区別はつけられるのか、という気がしますし、 タグ検索のような事ができると聞いた事が有ります。例えばKeywordで検索すると <Keyword></Keyword>の属性をメタファイルからチョイスし(複数ある場合もあります) ただし聞いた事があるだけなので,実際にみた事はありません。仮に無かった場合は, JAVAプログラムでタグから属性見つけるプログラムを作成することは,できるできるでしょうか?出来たらいいんですけど・・・ >c)LOMだと、他のリソースを参照する場合はRelationという要素を使うようですし。 LOMのRelationは,他のコンテンツ(LOMではない)を関係付ける記述です。また そのコンテンツを,LOM作成者が知っている必要があります。 私がやろうとしている事は,メタデータ同士を関連付けるプログラムでござります。 メタデータAを登録すると⇒自動的に関連付ける という感じです。つまり他のオブジェクトを意識せずに関連付ける事が出来ます。 「属性を記述することで関係を持たせる」というコンセプトで考えています。 >ひとつのメタデータには複数のキーワードがあり、 >あるメタデータから、共通するKeywordを含む(全ての?)メタデータへの >参照を持ちたいのなら、テーブルを分けて正規化するのがセオリーの >ように思うんですが、どうでしょうか。 流石でございます。確かに今のDB構造では,ダメだと思っていました。 今どのように正規化するのかも検討しています。←実はDBについても初心者なので                       本を抱えて勉強中です。                       本は,SQLでござんす。。 何か良い正規化の仕方は,あるでしょうか? Keyword属性 PKeyword属性 リンク先ID この3つは,複数ある場合があります。 >a)メタデータクラスとキーワードクラスができて、 >b)メタデータクラスはキーワードクラスを0..*で集約していて、 >c)キーワードクラスは、そのキーワードにより関連するメタデータへの > 参照を保持するようにする。 > >または、LOMの構造を意識するなら、 > >a)メタデータクラスとキーワードクラスとリレーションクラスができて、 >b)メタデータクラスはキーワードクラスを0..*で集約していて、 >c)メタデータクラスはリレーションクラスも0..*で集約していて、 >d)リレーションクラスは、そのメタデータと、何らかの要因(必ずしもそれは > キーワードの一致でなくてもよい)で関係するメタデータへの参照を > 保持するようにする。 これも勉強します。「0..*で集約」の意味が解っていないという寂しさ・・ 知識が無く申し訳ないです。。。 以下にアドレス 3aeem029@keyaki.cc.u-tokai.ac.jp
[この投稿を含むスレッドを表示] [この投稿を削除]
[90] Re:メタデータの関係付けプログラムについて
投稿者:(ぱ)
2007/02/20 02:13:25

>初めまして,ねこさんといいます。 ねこさんさん(でいいんでしょうか?) はじめまして。 >例 >Aというメタデータ内 ><Keyword>仲間</Keyword> ><PKeyword>学校</PKeyword> > >Bというメタデータ内(Aと同じく) ><Keyword>相性</Keyword> ><PKeyword>仲間</PKeyword> ええと、私はLOMについては今調べた知識しかありませんので、見当外れの ことを言ってましたらすみません。 このモデルには正直ちょっと違和感を感じます。 a)あるデータについて、Keywordはひとつのような気はしませんし、 b)KeywordとPKeywordの区別はつけられるのか、という気がしますし、 c)LOMだと、他のリソースを参照する場合はRelationという要素を使うようですし。 >AのKeyword属性とBのPKeyword属性が同じなので >AとBは関係しているようにしたいのです。 > >これをDBに記述すると >メタID メタデータ名 Keyword属性 PKeyword属性 リンク先ID > 1     A     仲間      学校      2 > 2     B     相性      仲間      Keywordがひとつでよく、KeywordとPKeywordの区別があってよく、 ひとつのメタデータが参照するメタデータもひとつでよいのなら、 このテーブルでよいのでしょうが、それでよいのでしょうか? ひとつのメタデータには複数のキーワードがあり、 あるメタデータから、共通するKeywordを含む(全ての?)メタデータへの 参照を持ちたいのなら、テーブルを分けて正規化するのがセオリーの ように思うんですが、どうでしょうか。 >またこれを実現するための >オブジェクト指向が聞けるとすごく嬉しいです。 >(これを先に教えていただけると嬉しいです) 「オブジェクト指向が聞けると」というのはちょっとよくわかりませんが (^^; a)メタデータクラスとキーワードクラスができて、 b)メタデータクラスはキーワードクラスを0..*で集約していて、 c)キーワードクラスは、そのキーワードにより関連するメタデータへの  参照を保持するようにする。 または、LOMの構造を意識するなら、 a)メタデータクラスとキーワードクラスとリレーションクラスができて、 b)メタデータクラスはキーワードクラスを0..*で集約していて、 c)メタデータクラスはリレーションクラスも0..*で集約していて、 d)リレーションクラスは、そのメタデータと、何らかの要因(必ずしもそれは  キーワードの一致でなくてもよい)で関係するメタデータへの参照を  保持するようにする。 ということになるのではないでしょうか。 ズレたこと言ってましたらすみません。
[この投稿を含むスレッドを表示] [この投稿を削除]
[89] メタデータの関係付けプログラムについて
投稿者:ねこさん
2007/02/20 02:13:25

初めまして,ねこさんといいます。 質問です。 メタデータのタグの間にある語彙と別のメタデータのタグの間にある語彙 を関係付けDBに反映するプログラムをJAVAで作成しようとしているのですが, なんせ初めてなもので何処からはじめていいのかが解りません。 またメタデータは,XML形式(LOM)です 例 Aというメタデータ内 <Keyword>仲間</Keyword> <PKeyword>学校</PKeyword> Bというメタデータ内(Aと同じく) <Keyword>相性</Keyword> <PKeyword>仲間</PKeyword> である場合,(特に脈絡は、ありませんがメタデータには,タグが        KeywrodとPKeywrodがありその間に語彙が記述されています) AのKeyword属性とBのPKeyword属性が同じなので AとBは関係しているようにしたいのです。 これをDBに記述すると メタID メタデータ名 Keyword属性 PKeyword属性 リンク先ID  1     A     仲間      学校      2  2     B     相性      仲間      このようにKeyword属性とPKeyword属性が同じメタデータがあった場合 Keyword属性の方にリンク先IDを追加する。 (リンク先IDは,Keyword属性とPKeyword属性が同じだった場合の PKeyword属性のメタIDが反映される。上記で記すと2となる) また新しくメタデータが追加された場合,同じくDBに反映させたいのです。 どのようにプログラムをすればよろしいでしょうか? またこれを実現するための オブジェクト指向が聞けるとすごく嬉しいです。 (これを先に教えていただけると嬉しいです) 長々と申し訳ありません。どうぞ宜しくお願い致します。 以下にメールを書きます 3aeem029@keyaki.cc.u-tokai.ac.jp
[この投稿を含むスレッドを表示] [この投稿を削除]
[88] Re:GLOBAL
投稿者:(ぱ)
2007/02/20 02:13:25

>>hoge.h, piyo.hが共にプライベートヘッダファイルならどこかでまとめて >>#define GLOBAL_VARIABLE_DEFINEして#includeしますし、 >そのまとめて include っつーことは globals.c とか作るということですか? >モジュール切り分け原則に反しているような気がしてなんとなくいやです。 globals.cを作るか、ということですが、 そのglobals.cが、プログラム全域のグローバル変数の定義を行う、 ということなら、Noです。 あるモジュールについて、「そのモジュールの内部だけで使う、ソースを超えた スコープを持つ変数」の定義を行うglobal.cなら、作るかもしれません。 たとえば先のcalcの例だと、電卓モジュール「CLC」内にglobals.cを 置くかもしれません(モジュールごとにディレクトリが分けられていて、 ソースファイル名の重複が許されるとして)。 モジュールをまたがったglobals.cがあるなら「モジュール切り分け 原則に反している」と私も思いますが、モジュール内でしか見ない グローバル変数のためのglobals.cなら、問題ないと思います。 # ここでモジュールは「複数の.cの集合体」と定義しています。 ## Mayerさんの「オブジェクト指向入門」に「ヘッダファイルはモジュールを ## 破壊する」ってあったけど、使い方次第だと思うんだけどなあ。 ただ、実際には、ひとつのモジュールに、そんなにたくさんプライベート ヘッダファイルがあるわけはないので、どこかのソースで代表させて終わりです。 CLCの場合はinterface.cですね。 # どこのソースで代表させるかが不明確なので(たとえ3行しかなくても)globals.c # を書くべきだ、という主張には正当性があると思います。 >組み込み系では「状態保持」のための変数は、プログラムが生きている >=電源が入っている限り、ずっと必要なので必然的に静的変数(大域変数)になっちゃいます。 >んで getter/setter も最適化の都合でインライン関数化したかったりするんです。 なるほど。アクセサを書くことまではできても、ヘッダファイルを切り分けると、 コンパイル単位が分かれてしまうからインライン展開が効かず効率が悪くなる わけですね。 Javaなんかだと、javacによるコンパイルはソース単位ですが、 JITコンパイラが実行時にソースを超えたインライン展開までやってくれたり するようです。でも組み込みじゃ難しいですよね。
[この投稿を含むスレッドを表示] [この投稿を削除]
[87] Re:GLOBAL
投稿者:774RR
2007/02/20 02:13:25

>hoge.h, piyo.hが共にプライベートヘッダファイルならどこかでまとめて >#define GLOBAL_VARIABLE_DEFINEして#includeしますし、 そのまとめて include っつーことは globals.c とか作るということですか? モジュール切り分け原則に反しているような気がしてなんとなくいやです。 >piyo.hが別モジュールのパブリックヘッダなら、グローバル変数は公開しないので >この問題は起きないんですね。 御意。ではあるのですが... 組み込み系では「状態保持」のための変数は、プログラムが生きている =電源が入っている限り、ずっと必要なので必然的に静的変数(大域変数)になっちゃいます。 んで getter/setter も最適化の都合でインライン関数化したかったりするんです。 っとなるとプライベートヘッダとパブリックヘッダの分離とか、 理想を追いかけていられない実装上の都合があったりするのです(泣)
[この投稿を含むスレッドを表示] [この投稿を削除]
[86] Re:GLOBAL
投稿者:(ぱ)
2007/02/20 02:13:25

>手間と言えば手間なんですが、グローバル変数にするような >ものは、必ず初期化する趣味なので、GLOBAL みたいな簡単な >マクロでは対処できなかったりします (たとえ 0 や NULL で >初期化する場合でも、明示的に初期化するスタイルを採って >ます)。 GLOBAL char *hoge[] #ifdef GLOBAL_VARIABLE_DEFINE = { "foo", "bar", } #endif /* GLOBAL_VARIABLE_DEFINE */ ; とか書いたこともありますけどね (^^; >また、そもそもグローバル変数なんてほとんど使わないので、 >手間的にはたいしたことないです。 別レスで書きましたけど、実は私もそうです。 別レスで挙げたCLC_Interpreterのように、構造体にまとめて malloc()で領域を確保することが多いです。 # わかりにくいですがCLC_Interpreterはポインタでして、 # こういうふうにポインタがポインタでないかのようにtypedefするのは # よろしくないなあ、と今は思っています。当時はXtとかのスタイルを見て # かっこいいと思ってしまったわけですが。 ## clc_current_interpreterのようなものを静的に持ってしまうと ## リエントラントでなくなります。当時はマルチスレッドなんて ## そうそう使わないよね、と思ってたわけですが… ## まあ、リエントラントにしたい場合も、外部のインタフェースにだけは影響を ## 与えないようにしてあるからまあ許容範囲かと。 >昔風のプログラムなら >グローバル変数にする場合も、たいていは accessor/mutator >関数でラップして見かけは関数にしてしまうことがほとんど >です。 たとえばclc_current_interpreterは関数でラップされていませんが、 CLCモジュールの外から見えることもありません。 これはモジュールの粒度をどのくらいにするかという問題だと思いますが、 「関連の強いソースの集合体としてのモジュール」内(せいぜい数千行レベル)で あれば、この程度のカプセル化の侵食は許容範囲じゃないかなあ、 と私は思っています。 もちろん最初からgetter/setterを書いたからといってさしたる手間でも ないですけれど。
[この投稿を含むスレッドを表示] [この投稿を削除]
[85] Re:GLOBAL
投稿者:(ぱ)
2007/02/20 02:13:25

>http://kmaebashi.com/programmer/pointer.html >では GLOBAL int global_variable; を推奨されているようですが、私は反対です。 うーん。 GLOBALに反対する根拠として一番大きいのは、私としては 「Cの構文をねじ曲げるようなマクロはよろしくない」という原則に 反しているからじゃないかな、と思っています。 #define BEGIN { みたいなシンタックスのレベルで改変を入れるようなマクロは確かに いろんな意味でまずいでしょう。 >hoge.c の中で >#include "hoge.h" >int global_variable; >と書いても ISO 文法上何の問題も無いので。 これはそうですね。 >もし仮に hoge.c の中で >#define GLOBAL_VARIABLE_DEFINE >#include "hoge.h" >#include "piyo.h" >とかやっちゃうと hoge piyo 両方の大域変数が定義されてしまいます。 私のヘッダファイルの切り分け方からすると、 http://kmaebashi.com/programmer/c_yota/module.html hoge.h, piyo.hが共にプライベートヘッダファイルならどこかでまとめて #define GLOBAL_VARIABLE_DEFINEして#includeしますし、 piyo.hが別モジュールのパブリックヘッダなら、グローバル変数は公開しないので この問題は起きないんですね。 >わざわざ同一の記述を複数の個所で行なうのは間違いのもとである このメリットは一応それなりの説得力はあるかと思っています。 が、私が実際これをどう使っているかというと、たとえばここで 公開しているソースでは、 http://kmaebashi.com/programmer/c_yota/calc_html/calc.html #ifdef GLOBAL_VARIABLE_DEFINE #define GLOBAL #else #define GLOBAL extern #endif GLOBAL CLC_Interpreter clc_current_interpreter; これ一個だけ… だったら必要ないじゃん、というのはもっともですね (^^;
[この投稿を含むスレッドを表示] [この投稿を削除]
[84] Re:GLOBAL
投稿者:kit
2007/02/20 02:13:25

> hoge.h の中では必ず > extern int global_variable; > と書くべきだと考えます。 僕も自分で一から書くソフトウェアでは、 GLOBAL のようなマクロは使わず、extern 宣言と、変数の 実体の定義と 2回書いてます。 手間と言えば手間なんですが、グローバル変数にするような ものは、必ず初期化する趣味なので、GLOBAL みたいな簡単な マクロでは対処できなかったりします (たとえ 0 や NULL で 初期化する場合でも、明示的に初期化するスタイルを採って ます)。 また、そもそもグローバル変数なんてほとんど使わないので、 手間的にはたいしたことないです。昔風のプログラムなら グローバル変数にする場合も、たいていは accessor/mutator 関数でラップして見かけは関数にしてしまうことがほとんど です。プロファイルとって効率が問題になるようだったら、 あとで実装をマクロに直すだけですから、最初からグローバル 変数として見せる必要があるとは思えません。逆に、最初は 変数で済んでいたものが、後になって変更時に手続きをフック したくなることは結構あります。(単に最初の仕様検討がいい 加減なだけだって話もありますが… ^^;) > globals.c とか作るのは個人的には嫌っています。 同じく globals.c みたいなものは作りません。 こういうのって、モジュール分けの原則に反してますよね。
[この投稿を含むスレッドを表示] [この投稿を削除]
[83] Re:GLOBAL
投稿者:トル
2007/02/20 02:13:25

 はじめまして、トルと申します。  追加・削除する時は、分けると2箇所を修正する必要がありますから、分けない方が一箇所で済み、何かと楽ではないですか? >globals.c とか作るのは個人的には嫌っています。  私は嫌いではありませんよ。
[この投稿を含むスレッドを表示] [この投稿を削除]
[82] GLOBAL
投稿者:774RR
2007/02/20 02:13:25

発言数が少ないようなのでネタ振りなど。 http://kmaebashi.com/programmer/pointer.html では GLOBAL int global_variable; を推奨されているようですが、私は反対です。 hoge.h の中では必ず extern int global_variable; と書くべきだと考えます。 hoge.c の中で #include "hoge.h" int global_variable; と書いても ISO 文法上何の問題も無いので。 もし仮に hoge.c の中で #define GLOBAL_VARIABLE_DEFINE #include "hoge.h" #include "piyo.h" とかやっちゃうと hoge piyo 両方の大域変数が定義されてしまいます。 #undef GLOBAL_VARIABLE_DEFINE しますか?めんどくさいです。 ヘッダ中から別ヘッダを #include しているとそもそも分離不可能だし。 globals.c とか作るのは個人的には嫌っています。 >わざわざ同一の記述を複数の個所で行なうのは間違いのもとである こと自体は御意なのです。でも、 関数(原型)宣言と関数定義を両方書く必要があるなら、 大域変数の宣言と定義を両方書いても大差ないぢゃん、とか思う今日この頃。 皆様はどうお考えですか?
[この投稿を含むスレッドを表示] [この投稿を削除]
[81] Re:ハッカーと画家
投稿者:(ぱ)
2007/02/20 02:13:25

>「ハッカーと画家」、出版されるみたいですよ。 > >http://www.shiro.dreamhost.com/scheme/wiliki/wiliki.cgi?Shiro  遅くなりましたが、情報提供ありがとうございます。  Webで公開されている文書11本に、書き下ろしを4本加えた本ですか。 その11本がどれだかわからないのですが、この中からチョイスしたものなんですかね。  http://www.paulgraham.com/articles.html  翻訳されたものがWebで読めるのかわかりませんが、読めるのだとしたら、 やっぱりどうしても購入を躊躇してしまう…
[この投稿を含むスレッドを表示] [この投稿を削除]
[80] ハッカーと画家
投稿者:kei
2007/02/20 02:13:25

こんにちは。 「ハッカーと画家」、出版されるみたいですよ。 http://www.shiro.dreamhost.com/scheme/wiliki/wiliki.cgi?Shiro ↑の、2004/9/30の箇所で査読者募集していました。
[この投稿を含むスレッドを表示] [この投稿を削除]
[78] Re:Javaコミュニティ
投稿者:(ぱ)
2007/02/20 02:13:25

>ですよねぇ。あれだけ居た人々はいったいどこに行ってしまったのでしょうか。 ># Java人口自体は増えてると思うんですが……。 2chかなあ… それとも小さなコミュニティに分散したのか… これは私も不思議に思っていますので、ご存知の方、情報をお願いいたします(_o_)
[この投稿を含むスレッドを表示] [この投稿を削除]
[77] Re:Javaコミュニティ
投稿者:iwa
2007/02/20 02:13:25

>JavaHouse自体、最近はほとんど流量がないじゃないですか。 ですよねぇ。あれだけ居た人々はいったいどこに行ってしまったのでしょうか。 # Java人口自体は増えてると思うんですが……。 # 最近はどの案件もみ~んなJava。(おいらは異端のPerl屋さん^^;) >私が知っているところだと、Java読書会BOFくらいですかねえ。 情報ありがとうございます。一度入って様子を見てみます。 >JavaMailネタでしたら、木下さんもいますし。 そーいえばJavaMailの本の存在をどっかで見かけたよーな気がするなー、と思って 「JavaMail 木下」でぐぐってみたのですが……まだちゃんと中身確認してませんが、 この本とWebページみれば質問事項一通り解決しそーな予感が(^^; ぁぅぁぅ。 # 如何にJavaについて情報収集してなかったかとゆー……。
[この投稿を含むスレッドを表示] [この投稿を削除]
[76] Re:Javaコミュニティ
投稿者:(ぱ)
2007/02/20 02:13:25

>JavaHouseに質問投げたら応答無し子さん(;_;)だったので JavaHouse自体、最近はほとんど流量がないじゃないですか。 アーカイブも復活しませんし。高木さんもすっかり投げてますよね。 というわけで >## それとも質問の仕方がマズかったのかなぁ……。 これはないと思います。 >他のところに聞こーかと思うんですが、どこか良さげな >ところありますでしょーか? 私が知っているところだと、Java読書会BOFくらいですかねえ。 http://www.iaj.or.jp/bukai/java/wg_bof/jfriends.html JavaMailネタでしたら、木下さんもいますし。
[この投稿を含むスレッドを表示] [この投稿を削除]
[75] Javaコミュニティ
投稿者:iwa
2007/02/20 02:13:25

JavaHouseに質問投げたら応答無し子さん(;_;)だったので 他のところに聞こーかと思うんですが、どこか良さげな ところありますでしょーか? # 2ch?(^^; ## それとも質問の仕方がマズかったのかなぁ……。
[この投稿を含むスレッドを表示] [この投稿を削除]
[74] Re:式の中のchar型
投稿者:tos
2007/02/20 02:13:25

>規格の6.2.1.5を見る限り、両辺の型が浮動小数点数でもlongでも >unsignedでもなければ、両オペランドがintに拡張されることになっています。 すいません。 テストする時、下記のようにpiyoに200を代入してました。 hoge = 100; piyo = 200; で、投稿する時に(手が勝手に?)piyoに100を代入して送ってしまいました。 お騒がせしてすいませんでした。 前橋さん、774RRさんありがとうございました。
[この投稿を含むスレッドを表示] [この投稿を削除]
[73] Re:式の中のchar型
投稿者:774RR
2007/02/20 02:13:25

LSI-C 86 試食版とか。 これは最近では数少ない non-ISO compliant な悪名高き処理系です。 もともと i8080 系のためのコンパイラとして開発されたため char と char の演算は char のまま行ってくれます。 っていうか README にその旨書いてあるので、理解し評価し納得した上で 使わないといけないのですが...
[この投稿を含むスレッドを表示] [この投稿を削除]
[72] Re:式の中のchar型
投稿者:(ぱ)
2007/02/20 02:13:25

>表題の件ですが、どこかで「式の中ではchar型の変数は、int型に格上げされる」 規格の6.2.1.5を見る限り、両辺の型が浮動小数点数でもlongでも unsignedでもなければ、両オペランドがintに拡張されることになっています。 >オーバーフローせず、fooに10000が代入される。というような説明を >読んだ記憶があるのですが、いまやってみるとしっかりオーバーフローしてくれます。 というわけで私のところでも試してみましたが、 bcc32とgccの両方で、しっかり10000が代入されました(gccはLinux上、 gccに-Wallを付けた以外はどちらもオプションなし)。 すみませんが、tosさんが実験された処理系とコンパイルオプション、 および再現できる完全なソースコードを教えていただけませんか? ちなみに私はこんなソースで試しました。 #include <stdio.h> int main(void) { char hoge; char piyo; int foo; hoge = 100; piyo = 100; foo = hoge * piyo; printf("foo..%d\n", foo); return 0; }
[この投稿を含むスレッドを表示] [この投稿を削除]
[71] 式の中のchar型
投稿者:tos
2007/02/20 02:13:25

皆さん、こんにちは。 表題の件ですが、どこかで「式の中ではchar型の変数は、int型に格上げされる」 というような説明を読んだような気がして、またそこで下記のような例で、 char hoge; char piyo; int foo; hoge = 100; piyo = 100; foo = hoge * piyo; オーバーフローせず、fooに10000が代入される。というような説明を 読んだ記憶があるのですが、いまやってみるとしっかりオーバーフローしてくれます。 「kmaebashi.com内」を検索して、「intより小さい整数型は、可変長引数で渡される ときには無条件でintに格上げされています。」との前橋さんの発言は見つかったのですが、上記のような説明はやはりありませんでした。 やっぱり記憶違いでしょうか? #でも、どっかで読んだような気がするのですが・・・。 #C FAQでもないみたいなんですよね。
[この投稿を含むスレッドを表示] [この投稿を削除]
[70] Re:感動
投稿者:(ぱ)
2007/02/20 02:13:25

はじめまして。 >はじめて納得がいきました。 どうもです。ほめていただき恐縮です。というかそこまでほめていただくと はずかしいです (^^; 更新が止まっておりましてすみません。 ログを見ると、「オブジェクト指向」で検索エンジンで探してうちのページに たどり着く人は結構いるようなので(検索キーワードとしては、hoge、 ポインタ、オブジェクト指向, PHP 掲示板、樹海あたりが多いです)、 ぼちぼちでも更新したいと思っているのですが。 ただ、この後、継承やインタフェースの話となると、結局普通の入門書と 同じような話になっちゃうのかなあ、という気もしています。 # あ、その前に、「PHPとMySQLで掲示板を作る」もさっさと書かないと…
[この投稿を含むスレッドを表示] [この投稿を削除]
[69] 感動
投稿者:フラグ
2007/02/20 02:13:25

オブジェクト指向がさっぱりわからず、本を読んだり掲示板をみたり いろいろなサイトをみたりしておりました。 すばらしいです!!!! はじめて納得がいきました。 本当にありがとうございます(深々
[この投稿を含むスレッドを表示] [この投稿を削除]
[68] Re:技術レベル
投稿者:(ぱ)
2007/02/20 02:13:25

> お客さんのとこに出張して 1時間くらいので、 > 大雑把にデータを整理して何かの資料を作りたいとか言う場合に > 手作業をほんのちょっと減らしたいなんて程度に使う分には > ザクザクッと作れちゃうperlみたいな形無し言語ってとても便利だと思いますが。 お客さんのとこに出張して、さくっとデータ変換しなきゃいけなかった時、 Perlはなく、AWKを使ったら、何しろ日頃使っていないものだからえらく 苦労した、という経験があります。客先じゃNUTS SHELLは落ちてないし、 当時はさくっとGoogleできる環境でもなかったですし。 やっぱり普段から使ってないといかんですねえ。
[この投稿を含むスレッドを表示] [この投稿を削除]
[67] Re:技術レベル
投稿者:kei
2007/02/20 02:13:25

> 手作業をほんのちょっと減らしたいなんて程度に使う分には > ザクザクッと作れちゃうperlみたいな形無し言語ってとても便利だと思いますが。 実は、恥ずかしい話なんですが。。 僕は、多少なりとも自信を持って使える言語がCとJavaしかなかったりします。 前橋さんの「C言語体当り学習」で、タブをスペースに変換する サンプルコードがありましたが、いつもあんな感じで、CやJavaで 作業用のツールを書いてました。 で、最近になって、他の人達が、perlやrubyを使ってサクッと作っている様子 などを見て、「ひょっとして、壮大な時間の浪費をしているのでは??」 と感じるようになったのでした。 # もちろん、決して無駄になったとは思ってませんけど。 > 色んな言語に触れて適材適所を身に付けたらベストでしょう。 > 何でもかんでもオブジェクト指向言語万歳じゃないと思うし ありがとうございます。励みになります。 よーし、がんばるぞ。
[この投稿を含むスレッドを表示] [この投稿を削除]
[66] Re:技術レベル
投稿者:kei
2007/02/20 02:13:25

>でも、PerlならPerlの作者は、長年の経験を積んだ名うてのハッカーであるわけで。 >頭のいい人なら型無し言語でもいいのかもしれません。 なるほど。。 じゃあ、僕はダメかもしれないです(笑) しかも、 >私はと言えば、「この世の中に自分より信用できないものが他にあるかーっ」 >という横島クンの叫び(うろ覚え)に共感する側の人間です。 僕の場合、「自分より信用できないものが他にあるかー」と叫びつつ、 常に自分を甘やかしてしまう人間なので、なおのこと、強い型付けの 言語の方が向いてるかもしれませんね。 でも、やはり視野を広げるために、色々な言語も知っておかなきゃ、 とも思うのです。 # そもそも、CとJavaすら使いこなしてるとは言えなかったりしますけど。。
[この投稿を含むスレッドを表示] [この投稿を削除]
[65] Re:技術レベル
投稿者:本多
2007/02/20 02:13:25

>>というのは、前橋さんの長年の経験が導き出した答えなんだなぁ、と。 >でも、PerlならPerlの作者は、長年の経験を積んだ名うてのハッカーであるわけで。 >頭のいい人なら型無し言語でもいいのかもしれません。 名うてでも頭よくもないですけど型なしでいいと思うときと言うと、 お客さんのとこに出張して 1時間くらいので、 大雑把にデータを整理して何かの資料を作りたいとか言う場合に 手作業をほんのちょっと減らしたいなんて程度に使う分には ザクザクッと作れちゃうperlみたいな形無し言語ってとても便利だと思いますが。 そういう場合って例外処理だのは、おかしかったら やりなおせばいいのでどうでもよくて、 ちょっと出力に怪しい部分があってもおかしなところだけ手で直せばいいや、 ざっくり結果出してくれやってな感じで使うにはperlって重宝しますよねぇ。 その場合でも型があっても邪魔にならないんじゃないかって言われると んー、どうなんでしょうねぇ。文字列→数値ってなことを 型を意識せずにチャキチャキして欲しいとき型は邪魔かなって思うんですけど。 必要に応じて必要な関数にだけ構造体のメンバを増やしたりとか 手軽にできるし。 #一番困るのはそんなプログラムの一人歩きだったりしますが。 しっかりと設計に時間がかけなくちゃいけない規模のプログラムや、 後でメンテナンスが必要になるようなプログラムには 当然型があるべきだというのは もちろん同意します。 っていうか、設計って型を決めることでは(暴論) っていうか、型さえキレイに決まっていたら後はなんとでもなると思うし(極論) >>今はまだ、色々な言語に触れてみたいなぁ、なんて思ってしまいます 色んな言語に触れて適材適所を身に付けたらベストでしょう。 何でもかんでもオブジェクト指向言語万歳じゃないと思うし。 10分ででっち上げなくちゃいけない場合なんかは。 ま、適材適所ってことで。
[この投稿を含むスレッドを表示] [この投稿を削除]
[64] Re:技術レベル
投稿者:(ぱ)
2007/02/20 02:13:25

>というのは、前橋さんの長年の経験が導き出した答えなんだなぁ、と。 でも、PerlならPerlの作者は、長年の経験を積んだ名うてのハッカーであるわけで。 頭のいい人なら型無し言語でもいいのかもしれません。 結局、自分自身をどこまで信用できるか、という問題のように思います。 私はと言えば、「この世の中に自分より信用できないものが他にあるかーっ」 という横島クンの叫び(うろ覚え)に共感する側の人間です。
[この投稿を含むスレッドを表示] [この投稿を削除]
[63] Re:技術レベル
投稿者:kei
2007/02/20 02:13:25

>あー懐かしいスレ。 >このスレが現役だった頃はム板も読んでたんですが、最近はさっぱりです。 このスレが現役だった頃、僕はまだ、プログラマじゃなかったです(笑) それで、思ったんですが、 >もちろん用途次第で、静的な型付けがない方がよい場合もあるかもしれません。 >でも私は嫌です。自由よりも犬の首輪が欲しい方なんで。 というのは、前橋さんの長年の経験が導き出した答えなんだなぁ、と。 それに比べると、僕はまだよちよち歩きを始めたばかりで、「あれに触れると 熱くてやけどする」だとか、「あれに近付くと噛みつかれる」だとか、 そういったことを経験してないから、いまいちわかっていないのかもしれません。 今はまだ、色々な言語に触れてみたいなぁ、なんて思ってしまいます。
[この投稿を含むスレッドを表示] [この投稿を削除]
[62] Re:続・怪しいメール
投稿者:(ぱ)
2007/02/20 02:13:25

>怪しいメールは朝4 ~ 6時に来るとムカつきますね。 >まだ眠た・・・いや、バッチでコケたかと思ってドキッとします。 うーんと。 徹夜作業中(監視中?)ですか? お疲れ様です。
[この投稿を含むスレッドを表示] [この投稿を削除]
[61] Re:技術レベル
投稿者:(ぱ)
2007/02/20 02:13:25

>>あー、正直、定年間近なプログラマ(35才定年説が正しいとして)である >>私としては、ツールの使い方などは「隣の席の若い奴に聞く」というのが >>最近常態化しています。こんなこっちゃいかんとは思うんですが。 >うーん。そうですか。 >業務以外のグループで使っているような門外漢なツールならそれは >ありだと思うんですけど、 いやもちろんツールの使い方は知らなきゃいけないと思いますが、 最近の私のボケっぷりからすると、ちと人のことを言えた義理ではないなあ、と。 >VBできます、VC++できますとプロジェクトに入ってきたものの、 >プロジェクトにファイルを追加することができなかったり、 >ライブラリやインクルードパスの設定方法が解らない+そうする意味が解らないとか、 >モジュールのプロパティ設定ウィンドウが消えて2時間悩んだ、 といっても、さすがにこれはどうかと思いますが。
[この投稿を含むスレッドを表示] [この投稿を削除]
[60] Re:技術レベル
投稿者:(ぱ)
2007/02/20 02:13:25

いろいろあって週末は死んでました。 >と思ったら、↓こんなのを見付けました。 >http://pc.2ch.net/tech/kako/986/986355498.html あー懐かしいスレ。 このスレが現役だった頃はム板も読んでたんですが、最近はさっぱりです。 >ただ、個人的に使ってみるぶんには、型安全でない言語の方が色々できて >面白そうかな、なんて思ってしまいました。 もちろん用途次第で、静的な型付けがない方がよい場合もあるかもしれません。 でも私は嫌です。自由よりも犬の首輪が欲しい方なんで。
[この投稿を含むスレッドを表示] [この投稿を削除]
[59] Re:続・怪しいメール
投稿者:れぷ
2007/02/20 02:13:25

怪しいメールは朝4 ~ 6時に来るとムカつきますね。 まだ眠た・・・いや、バッチでコケたかと思ってドキッとします。
[この投稿を含むスレッドを表示] [この投稿を削除]
[58] Re:技術レベル
投稿者:れぷ
2007/02/20 02:13:25

はじめまして。 >「不精する努力を惜しまない」人ですかねぇ。 そうですね。コンピュータが得意なことはコンピュータにやらせるのは重要ですね。 > 勤勉すぎる輩 その割に仕事を能率よくこなせるスクリプト言語は 「時間がないから」と言って勉強しなかったり・・・ # 雑談なら毎日30分以上こなせるようですが。:-p
[この投稿を含むスレッドを表示] [この投稿を削除]
[57] Re:技術レベル
投稿者:れぷ
2007/02/20 02:13:25

連日徹夜は辛いですね。特に会社が自宅になっている人とか・・・ その上でスーツなんですからこの業界ちょっとどこかおかしいです。 私は徹夜を避けるために技術を磨くとします(^-^;) >- どこでもいつでも寝れる >- 何でも食える 連日徹夜だと嫌でもこの体質になれるかもしれません。 # そんな状態のことは考えたくもない! ;-<
[この投稿を含むスレッドを表示] [この投稿を削除]
[56] Re:技術レベル
投稿者:れぷ
2007/02/20 02:13:25

>あー、正直、定年間近なプログラマ(35才定年説が正しいとして)である >私としては、ツールの使い方などは「隣の席の若い奴に聞く」というのが >最近常態化しています。こんなこっちゃいかんとは思うんですが。 うーん。そうですか。 業務以外のグループで使っているような門外漢なツールならそれはありだと思うんですけど、 VBできます、VC++できますとプロジェクトに入ってきたものの、 プロジェクトにファイルを追加することができなかったり、 ライブラリやインクルードパスの設定方法が解らない+そうする意味が解らないとか、 モジュールのプロパティ設定ウィンドウが消えて2時間悩んだ、 と言われてしまうと激しく萎えてしまいます・・・ >満足じゃないですが、最低限のレベルとしては、「そんなやり方は美しくない」 >といった意識を持っているかどうかですね。 ああ、なんとなく解るような気がします。 私も「もっと処理を端折れないかな」 「こうしたらメンテが楽かも」などと考えるようにしています。 # あとでメンテするのも自分ですしね。 >時間の都合などで美学を曲げるのはアリかもしれませんが(きっと後で後悔しますが)、 >最初からそれが通じない人がたまにいます。 お客が文句を言わないからうちの飯は「きっと」うまいんだろうと考えて 味付けを工夫しないでいるような下町の定食屋さんとでも言えば良いでしょうかね。 # 定食屋さんに恨みがあるわけではないです(^-^;) >また、ツールやミドルウェアに関して言えば、使い方を覚えるのも重要ですが、 >外部仕様から動作原理を推測する姿勢があるとよいんじゃないでしょうか。 >あるいは「俺だったらこう作る!」とか。 他人の作ったプログラムから内部動作を推測して勉強するってことですね。 ブラックボックスから明確にコードを想像するには ある程度以上は「プログラム」というものを理解していないとできない技ですし。 # ハード屋さんが解体したハードから回路を抜き取って勉強するのと一緒ですね。
[この投稿を含むスレッドを表示] [この投稿を削除]
[55] Re:技術レベル
投稿者:れぷ
2007/02/20 02:13:25

おはようございます。 >・現状に満足していない よりコンパクトに解決できるはずだ、と思うことは必要ですね。 納期があるのでそれだけに没頭できないという制約もありますので、 ある程度の妥協点は必要でしょうか。 >・仕事のレベルだけで満足していない 解決方法っていう視点では1番と同じですかね・・・? 手段を手広くするには仕事で使う以外のプログラムを見ておいて、 ある程度の見聞を広げておくことも必要なような気がしてます。 >・コードを書くことが好き 私も好きです(^-^) >・書いたコードを読んで、「きれいだ」「洗練されている」と感じさせる 大昔のAS/400などで開発をした人はカラムの記述位置に制約があったので、 「綺麗に並んでること」=「綺麗なコード」と思っている方がいますね。 # あのマシンで「確定」ボタンを押し忘れて何度泣いたことか。 それよりもパッと見で何をやっているかが判る & 解るコードのほうが 数倍も有益で綺麗で洗練されてると感じます。 >↓それから、ちょっと次元が違う話かもしれませんが、こんな記事を見付けました。 ありがとうございます。読んでみました。 感想は下のスレでまとめて。
[この投稿を含むスレッドを表示] [この投稿を削除]
[54] Re:技術レベル
投稿者:れぷ
2007/02/20 02:13:25

>>↓それから、ちょっと次元が違う話かもしれませんが、こんな記事を見付けました。 >うちのリンク集にも「ハッカーと画家」が入っていたのでした。 両方読んでみました。(前者は続きもありました。) ハッカーは好奇心がより強い人って感じですね。 でも興味のないことには思った以上に無頓着というか(^-^;) >一般にプログラミングは、なんというかこう「センス」みたいなものが必要だ、 >というのはよくわかります。画家に通じるものもあるでしょう。 問題(対象)をどう捉えて表現するか、ってところもそうですね。 そう言えばプログラムのセンスってどんなものでしょうかね!? 例えば、  ・問題切り分けのうまさ  ・コード表現の簡潔さ  ・解決方法をいくつも思いつく柔軟さ などが思いつきます。 >間違ったことならいくら綿密にやってもしょうがないですわな。 その上、間違っていることに気づかなかったりしてたら目も当てられない、と(^-^;) >でも、凄腕ハッカーだけを集めてプログラム開発が出来るなら結構ですが、 >実際にはそうはいかないので、大規模プロジェクトは(私のような)ボンクラを >前提としたものでなければならないと思います。 前橋さんがボンクラだったら私は一体・・・(T_T) ただ、働いてお金をもらってるって意識があれば、 他人におんぶに抱っこな人はそうそう見つからなくなると思います。 # コンパイルエラーの取り方すらしらないベテランPGさんもいますし・・・隣に。 ># だから型なし言語は大規模プロジェクトには不向きだと思う。 0パディングした文字列に+1されてハマったりしますね。 >ところで、凄腕ハッカーに個室を与えたら、ちゃんと仕事しますかね。 与えた仕事が終わっていればそれも良し、かもしれません。 それより会社の自販機とかエアコンをハッキングされて困ったりして。:-)
[この投稿を含むスレッドを表示] [この投稿を削除]
[53] Re:技術レベル
投稿者:kei
2007/02/20 02:13:25

>a)HTMLにプログラムを埋め込むことを最初から前提にしている。 >b)Webアプリケーション用のライブラリが大量に揃っている。 > >ということなんじゃないかと思っています。特にb)が重要。 なるほど。。確かに、そうですね。 >PHPやPerlが型あり言語だったら、もっと便利だったんじゃないかと >よく思います。 これは逆に、型安全でない言語を好んで使っている人の意見を聞いてみたい 気もします。 と思ったら、↓こんなのを見付けました。 http://pc.2ch.net/tech/kako/986/986355498.html これを読んだ限りでは、型安全でない言語擁護派の意見の方が弱いかな。。 ただ、個人的に使ってみるぶんには、型安全でない言語の方が色々できて 面白そうかな、なんて思ってしまいました。
[この投稿を含むスレッドを表示] [この投稿を削除]
[52] Re:技術レベル
投稿者:iwa
2007/02/20 02:13:25

>たまに、手でやれば30分で済むことに、スクリプトを書いたらデバッグではまって >1時間ぐらいかかっちゃうこともありますけどね (^^; わははははは(^^;;; >それでも、 > >・技術が身に付く >・もう一度似たような問題がきたときに助かる 「気軽に何度も繰り返せる」というのも強みかと。 >という点から、プログラマたるもの「不精する手間を惜しまない」人間で >ありたいものです。 御意。 # 最近、ad hocなスクリプトでも「それは蓄積すべきknow howである」 # という観点から、Subversionで管理するよーにしてみました。 # まだ目に見える効果は出てませんが……(^^;
[この投稿を含むスレッドを表示] [この投稿を削除]
[51] Re:技術レベル
投稿者:(ぱ)
2007/02/20 02:13:25

>なーんて案件を身近で見た時、「そんなのPHPで作っちゃえばいいじゃん。。」 >って思ってしまいました。やはり、言語も適材適所なんだろうなぁ、と。 PHPだと確かにWebアプリケーションを簡単に構築できますが、それは 言語のおかげなんでしょうか。 私は、PHPが楽なのは、 a)HTMLにプログラムを埋め込むことを最初から前提にしている。 b)Webアプリケーション用のライブラリが大量に揃っている。 ということなんじゃないかと思っています。特にb)が重要。 PHPやPerlが型あり言語だったら、もっと便利だったんじゃないかと よく思います。 >世間的には、「XPだ、ペアプロだ」なんて言うのが流行りになりつつあるように >思えますが、ハッカーと呼ばれる人たちには、ペアプロなんて眼中にないのかも >しれませんね。 でも実際にはプログラミングは共同作業ですからね。 個室どころか、パーティションも邪魔なことが多いと思います。
[この投稿を含むスレッドを表示] [この投稿を削除]
[50] Re:技術レベル
投稿者:(ぱ)
2007/02/20 02:13:25

>「不精する努力を惜しまない」人ですかねぇ。Excelで連番を一所懸命手で >打つとか、スクリプト言語で20行ほど書けば1分かからずに終わるよーな作業 >を1日がかりで手でやるとか、とにかく勤勉すぎる輩が多すぎて、頭かかえる >ことも少なからず……。 たまに、手でやれば30分で済むことに、スクリプトを書いたらデバッグではまって 1時間ぐらいかかっちゃうこともありますけどね (^^; それでも、 ・技術が身に付く ・もう一度似たような問題がきたときに助かる という点から、プログラマたるもの「不精する手間を惜しまない」人間で ありたいものです。 山形さんの「コンピュータのきもち」を読んでたら、 「Excelの機能で出来ないのならそこだけ手でやるとか紙に出して  貼りこむとか方法はあるじゃないかゴルァ」 的なことが書いてありましたが、本当に急いでいるときは当然そういうことも やらなければならないけれど、これはやっぱり可能な限り避けるべきだと思います。
[この投稿を含むスレッドを表示] [この投稿を削除]
[49] Re:技術レベル
投稿者:kei
2007/02/20 02:13:25

>実際にはそうはいかないので、大規模プロジェクトは(私のような)ボンクラを >前提としたものでなければならないと思います。 前橋さんがボンクラだったら。。 僕みたいなヘボはどうなってしまうんでしょう(笑) ># だから型なし言語は大規模プロジェクトには不向きだと思う。 そうですね。 でも逆に、  素人同然のプログラマをかき集めて、使い捨て同然の携帯電話向けサイトをJ2EEで構築    ↓  案の定、火を噴く なーんて案件を身近で見た時、「そんなのPHPで作っちゃえばいいじゃん。。」 って思ってしまいました。やはり、言語も適材適所なんだろうなぁ、と。 >ところで、凄腕ハッカーに個室を与えたら、ちゃんと仕事しますかね。 世間的には、「XPだ、ペアプロだ」なんて言うのが流行りになりつつあるように 思えますが、ハッカーと呼ばれる人たちには、ペアプロなんて眼中にないのかも しれませんね。
[この投稿を含むスレッドを表示] [この投稿を削除]
[48] Re:技術レベル
投稿者:iwa
2007/02/20 02:13:25

はじめまして、iwaと申します。 >じゃぁ「何ができれば満足なのさ?」というくらいの軽い意図で質問しています。 「不精する努力を惜しまない」人ですかねぇ。Excelで連番を一所懸命手で 打つとか、スクリプト言語で20行ほど書けば1分かからずに終わるよーな作業 を1日がかりで手でやるとか、とにかく勤勉すぎる輩が多すぎて、頭かかえる ことも少なからず……。
[この投稿を含むスレッドを表示] [この投稿を削除]
[47] Re:続・怪しいメール
投稿者:kit
2007/02/20 02:13:25

>さっき同じメールが来ました。 >雑記帖を読み終わった直後だったので何か少し得した気分(^^) www at なんとか.org みたいな個人宛じゃない宛先にも 届いてました。ほとんどの購読者は日本語読めないし、 そもそも日本にいないんですが... 毎度のことですが、名簿の精度が悪過ぎ。
[この投稿を含むスレッドを表示] [この投稿を削除]
[46] 続・怪しいメール
投稿者:本多
2007/02/20 02:13:25

さっき同じメールが来ました。 雑記帖を読み終わった直後だったので何か少し得した気分(^^) これを読んでドキッとするようなことしたいですねぇ(^^;) だいたい、こっちは海外だっつうの。入金に日本語使えねえって(^O^)/
[この投稿を含むスレッドを表示] [この投稿を削除]
[45] Re:技術レベル
投稿者:本多
2007/02/20 02:13:25

>>そりゃー、もちろんこんな人はいろんな意味でレベルが高い。 >「出来る奴は残業なんかしない!」って説もありますけどね。 >実際にはそんなことはないわけですが。そこに仕事が集中するから。 正直な話、できない奴に任せるくらいなら、 今の山積みの仕事を片付けた後に回されても構わないから できる奴に任せるしかないとかと言うことは非常に多いですよね。 残業が多いだけじゃ すごいのかすごくないのか判断できませんが 休日の深夜残業なんてのは できる奴しかしてない気がします。 # そういえば私 最近 残業してないなぁ # この文脈で言うところの できない奴ってことなんだなぁ...f(^^;)
[この投稿を含むスレッドを表示] [この投稿を削除]
[44] Re:技術レベル
投稿者:(ぱ)
2007/02/20 02:13:25

>そりゃー、もちろんこんな人はいろんな意味でレベルが高い。 「出来る奴は残業なんかしない!」って説もありますけどね。 実際にはそんなことはないわけですが。そこに仕事が集中するから。 残業だらけの職場は職場そのものが病んでいる、という意見もありますが、 たとえば携帯電話の開発現場なんか、どう考えてもえらいことになっていると 思います。あんなものをこんな開発期間でリリースしてたんじゃ。 残業するから偉いとは言えませんが、残業しなきゃいけない局面もある。 とかくこの世はchaoticなものです。
[この投稿を含むスレッドを表示] [この投稿を削除]
[43] Re:技術レベル
投稿者:本多
2007/02/20 02:13:25

>レベルが高い/低いと思う判断基準って皆さんは何か持っていますか? そりゃー、もちろんこんな人はいろんな意味でレベルが高い。 main() { for(;;) over_night_work(); } あとは - どこでもいつでも寝れる - 何でも食える
[この投稿を含むスレッドを表示] [この投稿を削除]
[42] Re:技術レベル
投稿者:(ぱ)
2007/02/20 02:13:25

>↓それから、ちょっと次元が違う話かもしれませんが、こんな記事を見付けました。 > >http://www.shiro.dreamhost.com/scheme/trans/gh-j.html うちのリンク集にも「ハッカーと画家」が入っていたのでした。 http://www.shiro.dreamhost.com/scheme/trans/hp-j.html 一般にプログラミングは、なんというかこう「センス」みたいなものが必要だ、 というのはよくわかります。画家に通じるものもあるでしょう。 山形浩生さんのページからの引用ですが、 http://www.post1.com/home/hiyori13/freeware/hack.html |「ハッカーは、正しいことを雑にやる。スーツどもは、まちがったことを綿密にやる」 間違ったことならいくら綿密にやってもしょうがないですわな。 でも、凄腕ハッカーだけを集めてプログラム開発が出来るなら結構ですが、 実際にはそうはいかないので、大規模プロジェクトは(私のような)ボンクラを 前提としたものでなければならないと思います。 # だから型なし言語は大規模プロジェクトには不向きだと思う。 ところで、凄腕ハッカーに個室を与えたら、ちゃんと仕事しますかね。 日がな一日趣味のプログラムを書いてたり、fjか2chあたりでバトルしてたり することになりかねない気もします。
[この投稿を含むスレッドを表示] [この投稿を削除]
[41] Re:技術レベル
投稿者:(ぱ)
2007/02/20 02:13:25

>私個人は自分の使っている言語、それからツールやミドルウェアについて >勉強をしてくれない人がちょっと困るなとは良く思ったりします。 >マニュアル斜め読みくらいだけでも開発で役立つことが多く書かれていますしね。 あー、正直、定年間近なプログラマ(35才定年説が正しいとして)である 私としては、ツールの使い方などは「隣の席の若い奴に聞く」というのが 最近常態化しています。こんなこっちゃいかんとは思うんですが。 >じゃぁ「何ができれば満足なのさ?」というくらいの軽い意図で質問しています。 満足じゃないですが、最低限のレベルとしては、「そんなやり方は美しくない」 といった意識を持っているかどうかですね。 時間の都合などで美学を曲げるのはアリかもしれませんが(きっと後で後悔しますが)、 最初からそれが通じない人がたまにいます。 また、ツールやミドルウェアに関して言えば、使い方を覚えるのも重要ですが、 外部仕様から動作原理を推測する姿勢があるとよいんじゃないでしょうか。 あるいは「俺だったらこう作る!」とか。
[この投稿を含むスレッドを表示] [この投稿を削除]
[40] Re:技術レベル
投稿者:kei
2007/02/20 02:13:25

こんばんは。 >レベルが高い/低いと思う判断基準って皆さんは何か持っていますか? 僕は技術者として、とても未熟なレベルなんで、こんなことを書くべき人間 ではないのですが。。 プログラマであれば、 ・現状に満足していない ・仕事のレベルだけで満足していない ・コードを書くことが好き ・書いたコードを読んで、「きれいだ」「洗練されている」と感じさせる が満たされていれば、その人のレベルが高い場合が多い、という気がします。 # 1番目と2番目は一緒かも。 ↓それから、ちょっと次元が違う話かもしれませんが、こんな記事を見付けました。 http://www.shiro.dreamhost.com/scheme/trans/gh-j.html
[この投稿を含むスレッドを表示] [この投稿を削除]
[39] 技術レベル
投稿者:れぷ
2007/02/20 02:13:25

こんばんは。 この業界で仕事をしていると「技術レベルの高低」で より良い仕事を優遇してもらえたり、 人間関係が良く、あるいは悪くなったりしますが、 レベルが高い/低いと思う判断基準って皆さんは何か持っていますか? 私個人は自分の使っている言語、それからツールやミドルウェアについて 勉強をしてくれない人がちょっと困るなとは良く思ったりします。 マニュアル斜め読みくらいだけでも開発で役立つことが多く書かれていますしね。 そういう私自身も結構レベル低いって 明に暗に陰口など叩かれたりもしますけどね(^-^;) # もちろん自身でレベルが高いと思っているわけではないです。 # 少なくとも主仕事が遅れて足を引っ張ることはない、程度のレベルです。 じゃぁ「何ができれば満足なのさ?」というくらいの軽い意図で質問しています。
[この投稿を含むスレッドを表示] [この投稿を削除]
[38] メンバーズホームページを完全閉鎖しました
投稿者:(ぱ)
2007/02/20 02:13:25

ごぶさたしております。 Niftyで公開していたページ http://member.nifty.ne.jp/maebashi/ 以下のコンテンツを完全に閉鎖しました。現在は、Niftyによる移転通知が表示され、 @homepageのページ http://homepage3.nifty.com/maebashi/ に飛ばされます。 @homepageのページからは結局kmaebashi.comへ飛ばされるので、2回ジャンプ させられる、というのも気に入りませんし、 今まではGoogleなどで旧ページにアクセスした場合、階層の深いところからでも kmaebashi.comの該当ページに飛べたのですが、現在はトップページに飛ばされて しまう、というのも嫌なのですが、しょうがないです。 また、閉鎖に伴い、Nifty側の裏掲示板も閉鎖しました。 過去ログは吸い上げたので、一応読むことだけは出来ます。 http://kmaebashi.com/bbs/index.html また、アクセスカウンタも使えなくなるので、TwodotsNetが提供しているものに 差し替えました。 282410あたりで移行したのですが、新しいほうのアクセスカウンタは リロードするだけで増えていくようなので、見かけのアクセス数が大幅アップしそうです。
[この投稿を含むスレッドを表示] [この投稿を削除]
[37] Re:全文引用はビジネスマナー
投稿者:れぷ
2007/02/20 02:13:25

> 今までのメールをただ転送されても...読む気が萎えますよねぇ。 > ついつい後回しにしたくなります。 ですね。 本当に自分に関係あるのか!? って見てみると全然関係なかったり・・・ > でも相手によってシグネチャかえるのメンドクサイですよね。 うーん。それはありますね。 メールテンプレート使うと若干楽かも(^-^;) > じゃないとメールの返事書くだけで一日の仕事が終わるくらいの > メールが来る人って確かにいますもの。 いつもメールボックスがパンクしている人もいますよね。 > 幸い、私はそこまで有能でないのでジックリ返事できるのですが(^O^)/ 私もジックリ読める人だったりします。 > それでも箇条書きを無視して一言返事をくれるツワモノもいますが...f(^^;) ある意味、猛者ですね(;_;)
[この投稿を含むスレッドを表示] [この投稿を削除]
[36] Re:長い関数
投稿者:れぷ
2007/02/20 02:13:25

ループしてる変数に意味があることって多いと思うので > person_noとかcar_noとかにして欲しいなぁって。 あ、これは最近思います。 あとからiとかjとか見ると単純なループ以外は訳判らなくなりますね。
[この投稿を含むスレッドを表示] [この投稿を削除]
[35] Re:長い関数
投稿者:(ぱ)
2007/02/20 02:13:25

>これってメンテした人がローカル変数を追いきれなかったので >自分が判る変数を宣言してプログラムを修正していたのかもしれない、と今思いました。  あー。  やったことあります(遠い目)。
[この投稿を含むスレッドを表示] [この投稿を削除]
[34] Re:長い関数
投稿者:(ぱ)
2007/02/20 02:13:25

> ループ変数のiとかjとかも、できる限り使いまわして欲しくないなぁ > 止めて欲しいなぁって思ってます。 > > ループしてる変数に意味があることって多いと思うので > person_noとかcar_noとかにして欲しいなぁって。  ですね。二重以上のループになると強くそう思います。  ループカウンタにiを使う、という習慣も、そろそろ捨てる時期が 来ているのかも知れません。
[この投稿を含むスレッドを表示] [この投稿を削除]
[33] Re:全文引用はビジネスマナー
投稿者:本多
2007/02/20 02:13:25

># なので私は転送するときに筋が見えない場合は概要を加筆してます。 これをやってくれるか どうかで、 メールを読もうと思う気持ちが変わりますね。 今までのメールをただ転送されても...読む気が萎えますよねぇ。 ついつい後回しにしたくなります。 >シグネチャは大き目のAAがある人はちょっと疑問ですね。 >長さで言えば会社名や電話番号とか書かれている人は長いですね。 >でもこれって外部に送るeメールなら必須だと思うんですが、 >フロア内で自社の情報って必要ですかね? でも相手によってシグネチャかえるのメンドクサイですよね。 >>途中にある疑問文とか、すっ飛ばされてたりすると >>あんた、ちゃんと読んだの?って問い詰めたくなります(^^;) >それは確かにありますね。 >ただ、リーダークラスの方が会議に忙殺されていると返事もなまくらが多いかも。 忙しい人は「了解」だけで仕方ないって言うのはわかります。 じゃないとメールの返事書くだけで一日の仕事が終わるくらいの メールが来る人って確かにいますもの。 幸い、私はそこまで有能でないのでジックリ返事できるのですが(^O^)/ >私はそれが嫌なので質問事項を箇条書きにして渡してしまいます。 それでも箇条書きを無視して一言返事をくれるツワモノもいますが...f(^^;)
[この投稿を含むスレッドを表示] [この投稿を削除]
[32] Re:長い関数
投稿者:本多
2007/02/20 02:13:25

>>それ以上に大きいのは、「ローカル変数が増える」ことだと思っています。 >そう言えば違う変数なのに関数の最初から最後まで >同じ値を保持しているものがよくありますよね。 ローカル変数が増えるのも困りますが、 一つのローカル変数を別の意味で使いまわされたりするのも よく見かけます。 勘違いしやすくて困りますよね。 関数の上のほうではcntは○○○の個数が入っていたのに、 途中から、×××の個数の意味で使って、 最後はテンポラリ変数として使ってる...とか ループ変数のiとかjとかも、できる限り使いまわして欲しくないなぁ 止めて欲しいなぁって思ってます。 ループしてる変数に意味があることって多いと思うので person_noとかcar_noとかにして欲しいなぁって。
[この投稿を含むスレッドを表示] [この投稿を削除]
[31] Re:長い関数
投稿者:れぷ
2007/02/20 02:13:25

>VBはほとんどやったことないですが、やっぱりそうですか。 そうですね。コントロールのプロパティの設定などは仕方ないとしても 普通の実行コードがForm_Loadイベントプロシージャに延々と書かれたりしてます。 組み込み関数を使わずに自分で作ったりしてる人も多いです。 # しかもプロシージャ化せずにロジックごとコピペとか。 >記録マクロが長くなるのはしょうがない気がしますが。 これはそうですね。 たまにカーソル移動の誤操作がそのままだったりします。 あとは納品されたプログラムが記録マクロそのままだったりすると かなりメンテが面倒です。(;_;) >巨大なswitch caseで、caseひとつあたりは数行しかなく、関数全体で使う >ローカル変数も数個しかない、というものでした。こういうケースなら、 >長くなってもいいんじゃないかと思っています。 そうですね。WindowsプログラムならWinProc()とかですね。 あとディスパッチャみたいなものとかもある程度は仕方がないかもしれないですね。 >それ以上に大きいのは、「ローカル変数が増える」ことだと思っています。 確かに! ローカル変数がやたら多いと関数が500行ぐらいでも コードを追うのがかなり大変ですよね。 そう言えば違う変数なのに関数の最初から最後まで 同じ値を保持しているものがよくありますよね。 これってメンテした人がローカル変数を追いきれなかったので 自分が判る変数を宣言してプログラムを修正していたのかもしれない、と今思いました。
[この投稿を含むスレッドを表示] [この投稿を削除]
[30] Re:全文引用はビジネスマナー
投稿者:れぷ
2007/02/20 02:13:25

こんばんは。寝苦しくて起きてしまいました。(;_;) 全文引用は私も必須だと思っています。 だっていきなり転送されてきても話の筋が見えないですし。 # なので私は転送するときに筋が見えない場合は概要を加筆してます。 シグネチャは大き目のAAがある人はちょっと疑問ですね。 長さで言えば会社名や電話番号とか書かれている人は長いですね。 でもこれって外部に送るeメールなら必須だと思うんですが、 フロア内で自社の情報って必要ですかね? >「わかりました」とだけ書いてあるメールを見ると、 「わかりました。」と書いといてあとで同じことを聞いてくる人もいますね。:-p >途中にある疑問文とか、すっ飛ばされてたりすると >あんた、ちゃんと読んだの?って問い詰めたくなります(^^;) それは確かにありますね。 ただ、リーダークラスの方が会議に忙殺されていると返事もなまくらが多いかも。 # そのためにサブリーダーがいるはずなんですけど、 # リーダーがいないと自分で判断できないって人が多いと思うのは私だけ? 私はそれが嫌なので質問事項を箇条書きにして渡してしまいます。 全文引用で困るのはインデントされるていると 段々下のほうが凄いことになってしまうことですね。
[この投稿を含むスレッドを表示] [この投稿を削除]
[29] Re:全文引用はビジネスマナー
投稿者:(ぱ)
2007/02/20 02:13:25

>でも...そういえば、私何も考えずシグネチャーは取ってしまっていました。 >何の情報も含まないのにむやみにメールが長くなってるなぁって思って。 >発言の主が不明になるから取っちゃまずいのか。そりゃ、そうだなぁ。反省です。 どうでしょうか。メーラが引用時に誰のメールかわかるようにしてくれるのなら 削ったほうがよいとも思いますが。 例によって私の書くものは煽りモードが入ってますので (^^; シグネチャに関する記述は、 「最低でもシグネチャは削れ。他人のシグネチャが入っていると  誰のメールだかわからんじゃないか」 という主張に対する反論なんですよね。 こういう主張をする人が本当にいるわけですが、たいていのメーラで、 どこが引用部分かはわかるようになっているはずで(それがわからないなら シグネチャ以前の問題です)、引用されたシグネチャを見て、 「これは○○さんの発言なのか」などと誤解する人がいるとは考えにくいです。 >ただ、全文引用しておいて、メールの先頭に >「わかりました」とだけ書いてあるメールを見ると、 >「この人は一体、どの部分が『わかった』のだろう?」 >「本当に通じたのか?」と、不安になることって多いですよね? これはそう思います。 JavaHouseで全文引用の是非が問題になるとき、管理者の高木さんが 問題にされるのはたいていその問題でした。 http://java-house.jp/ml/archive/j-h-b/025243.html#body ただ、それこそビジネスのメールなら、読んでいようがいまいが 「わかりました」と書いてあったらわかったとみなしちゃって問題ない気も します。読まずに「わかりました」と書いた人の責任。 >途中にある疑問文とか、すっ飛ばされてたりすると >あんた、ちゃんと読んだの?って問い詰めたくなります(^^;) とはいえさすがに疑問文をすっ飛ばされちゃ困りますね。 私の場合、メールの特定の部分に意見を書きたい場合には、 メール前半でその部分を抜粋して個別に返事をつけた上で、 後ろに全文を引用しています。 今回のネタは、以前JavaHouseに送った話の使い回しなんですが、 ちょうどそこからアーカイブに上がっていないので、こっちに置いときます。 http://kmaebashi.com/zakki/javahouse.txt
[この投稿を含むスレッドを表示] [この投稿を削除]
[28] Re:長い関数
投稿者:(ぱ)
2007/02/20 02:13:25

>長い関数はVBだと良く出会いますね。 >VBAの記録マクロはもっと酷いかも(^-^;) VBはほとんどやったことないですが、やっぱりそうですか。 記録マクロが長くなるのはしょうがない気がしますが。 >C言語だと私は1500行くらいですかね。 >strncat()連続が多かったような。 ># Pro*CとかSQL埋め込みものは除外。 状況によっては、1000行以上の関数を書くこともあり得ると思います。 ていうか私も書いたことがあります。 巨大なswitch caseで、caseひとつあたりは数行しかなく、関数全体で使う ローカル変数も数個しかない、というものでした。こういうケースなら、 長くなってもいいんじゃないかと思っています。 関数が長くてなぜいけないのか、といえば、ものすごーく巨大なif文とかを 書くことになって流れがわからなくなる、というのもありますが、 それ以上に大きいのは、「ローカル変数が増える」ことだと思っています。 ローカル変数とはいえ、2000行の関数ともなればもうグローバル変数と 一緒ですから。
[この投稿を含むスレッドを表示] [この投稿を削除]
[27] 全文引用はビジネスマナー
投稿者:本多
2007/02/20 02:13:25

確かにおっしゃる通り。 「全文引用はけしからん」的なことを書いているサイト(人)を見るたび、 様々な立場の人がいる大きな組織で仕事したことないのではないか?と 感じていました。 でも...そういえば、私何も考えずシグネチャーは取ってしまっていました。 何の情報も含まないのにむやみにメールが長くなってるなぁって思って。 発言の主が不明になるから取っちゃまずいのか。そりゃ、そうだなぁ。反省です。 ...たまに長い人いるじゃないですか10行以上の人...あ、私も10行あるや...反省 ただ、全文引用しておいて、メールの先頭に 「わかりました」とだけ書いてあるメールを見ると、 「この人は一体、どの部分が『わかった』のだろう?」 「本当に通じたのか?」と、不安になることって多いですよね? 途中にある疑問文とか、すっ飛ばされてたりすると あんた、ちゃんと読んだの?って問い詰めたくなります(^^;) ま、何事もほどほどってものがあるわけで。 メーリングリストだけでなく、この様な掲示板の類でも ほぼ全員が過去の発言に遡れるので 全文引用はいいことないですけど。
[この投稿を含むスレッドを表示] [この投稿を削除]
[26] Re:長い関数
投稿者:れぷ
2007/02/20 02:13:25

>「2000行の関数」とか見たことあるのかと… いや、見たことあっても自慢には >なりませんが。 長い関数はVBだと良く出会いますね。 VBAの記録マクロはもっと酷いかも(^-^;) C言語だと私は1500行くらいですかね。 strncat()連続が多かったような。 # Pro*CとかSQL埋め込みものは除外。 藤原氏のサイトでは最長不倒関数が更新されてますけど、 幸いあういうのはお目に掛かったことがありません。 # 今日行ったら見れませんでした。 でも長い関数は酒の肴にもならないですよね。
[この投稿を含むスレッドを表示] [この投稿を削除]
[25] 機能追加しました
投稿者:(ぱ)
2007/02/20 02:13:25

掲示板のスクリプトをいくつか改善しました。 ・削除機能をつけました。削除パスワードを入力しておけば、削除が可能です。  ただし、ここまでの発言に関しては(たとえパスワードを入れていても)  削除できません。 ・今まで<PRE>で囲んでいたのを、<TT>で囲むようにしました。  これならソースも崩れず改行もされます。最初からこうしときゃよかった。 不具合等ありましたらご連絡ください。
[この投稿を含むスレッドを表示] [この投稿を削除]
[24] Re:Javaについて
投稿者:(ぱ)
2007/02/20 02:13:25

>そういう人のために(私も含めて)、次回の本を作成するならぜひC++はどうでしょうか?  C++は、仕事でやったこともありますから通り一遍のことは知っているつもりですが、 正直、本にまとめる自信はないです。言語仕様が複雑すぎです。 >現場主義の書籍があまりに少ないので、ぜひまたリリースしてください。  現場主義の書籍が少ないというのは私もよく感じます。 「2000行の関数」とか見たことあるのかと… いや、見たことあっても自慢には なりませんが。  次の本は、まあそのうち、という状況です (^^;
[この投稿を含むスレッドを表示] [この投稿を削除]
[23] Re:Javaについて
投稿者:kon
2007/02/20 02:13:25

> >たとえば画面だけVC++で作って、裏のロジックはガチガチのC(っぽいコーディング) >ということなら、それはひとつの選択肢としてありだと思うんですがね。 >その場合、「オブジェクト指向で作成」とうたってはいけませんが。 > ># ていうかそういう経験だけで履歴書に「C++できます」と書くのは勘弁して欲しい… まさしく同じ経験があります! 上司から、外注さんの面接に付き合わされて履歴書を見たら「C++できます」の内容でし たので信用していました。ところがいざ一緒に仕事を始めたら・・・(@_@) 当然のごとく >STLとかCStringとかは使えない状況だったんでしょうか。 使えましたが、知らなかったみたいで・・・ (他に簡単な例では、インライン関数をしらないでcppに実装してたりとか・・・) コードレビューしなかった私のミスとして、おかしい個所を全部修正させられた苦い経験が あります。(外注さんはその時点で、プロジェクトから抜けてました) そういう人のために(私も含めて)、次回の本を作成するならぜひC++はどうでしょうか? でも技術評論社さんの標準プログラマーズシリーズには、C++の書籍はもうリリースされて ますから無理ですかね。(個人的にはPerlとかも希望しますが) 現場主義の書籍があまりに少ないので、ぜひまたリリースしてください。 それではまた
[この投稿を含むスレッドを表示] [この投稿を削除]
[22] Re:Javaについて
投稿者:(ぱ)
2007/02/20 02:13:25

>話がそれますが、C++の仕事をやっていて思ったのですがオブジェクト指向 >で作成とうたいつつ、実装はがちがちのCでコーディングしている人が多い >ように思います。 たとえば画面だけVC++で作って、裏のロジックはガチガチのC(っぽいコーディング) ということなら、それはひとつの選択肢としてありだと思うんですがね。 その場合、「オブジェクト指向で作成」とうたってはいけませんが。 # ていうかそういう経験だけで履歴書に「C++できます」と書くのは勘弁して欲しい… >例えば文字列の操作なんてプロパが用意した文字列のクラ >スを使用せずに自前で作成するとか多々見られました。 >(私が関わったプロジェクトだけ?) STLとかCStringとかは使えない状況だったんでしょうか。 >一番驚いたのが、newを使わずmallocを普通に使用している人がいたのには > _| ̄|○ C++だとキャストが必要で面倒なんじゃないかなあ、と思ったり。
[この投稿を含むスレッドを表示] [この投稿を削除]
[21] Re:Javaについて
投稿者:kon
2007/02/20 02:13:25

>アドバイスできるような立場にいるとは思えませんが… (^^; >C++バリバリの方がJavaの文法面などでひっかかるとは思えませんので、 >でっかいプログラムをガリガリ書いていけばよろしいのではないでしょうか。 親切なアドバイスありがとうございます。 私はGUIの仕事をしていないのでそのあたりのプログラムを作成するといい かもしれませんね。(汎用系や組み込み系(携帯電話)ばかりでしたので) 話がそれますが、C++の仕事をやっていて思ったのですがオブジェクト指向 で作成とうたいつつ、実装はがちがちのCでコーディングしている人が多い ように思います。例えば文字列の操作なんてプロパが用意した文字列のクラ スを使用せずに自前で作成するとか多々見られました。 (私が関わったプロジェクトだけ?) 一番驚いたのが、newを使わずmallocを普通に使用している人がいたのには _| ̄|○ ちなみに、プロパ(某有名メーカ)が用意したクラスは一応オブジェクト指向 にのっとり?まともなライブラリでしたが・・・
[この投稿を含むスレッドを表示] [この投稿を削除]
[20] Re:Javaについて
投稿者:(ぱ)
2007/02/20 02:13:25

>以前、C言語FAQの日本語訳の復刊を報告したkonです。 どうもです。その節はありがとうございました。 >・Javaの文法はひととおり、おさえました。以下は勉強した本等です。 > (1)Java言語プログラミングレッスン(上)(下) 結城浩さんの本ですね。私は未読ですが、プログラミング自体初めての 人向けの本ですよね。 今「読者の声」を見てみたら、 http://www.hyuki.com/jb/jbvoice.html#i4 | また、if文で「または」を表現する場合も他のテキストが | if (n < 0 || n > 100) と書いているところをこの本は | if (n < 0 || 100 < n) と書いています。「どう書くのが読んだ時 | わかりやすいか?」ということと「100 < n という書き方もOK」 | ということがこの1行だけで身につきます。 「if (n < 0 || 100 < n) 」がわかりやすいかという点に異論はありますが それはさておき、「100 < n という書き方もOK」というところから 説明しなきゃいけないものかと… いやその確かに私も大昔BASICをおぼえた頃には この辺で悩んだような気もしますが(入門書を書いたり新人に教えるときには 気をつけなければいけませんね)。 C++バリバリの方からすれば、そりゃ「簡単すぎ」だろうと思います。 >(3)は私のバイブルである"C言語ポインタ完全制覇"と並びおもしろかったです。 ありがとうございます(_o_) >いまさら、簡単なプログラムをせこせこ作るのもなあと思ったりして、かといって仕事しな >がらおぼえていくと後で、デスマにならないかと心配したりしています。つたない文章で申 >し訳ありませんが、よきアドバイスをお願い致します。 アドバイスできるような立場にいるとは思えませんが… (^^; C++バリバリの方がJavaの文法面などでひっかかるとは思えませんので、 でっかいプログラムをガリガリ書いていけばよろしいのではないでしょうか。 win.drawLine(new Point(x1, y1), new Point(x2, y2)); のような書き方は、GCに慣れないうちはかなり抵抗があるかもしれませんけど。 ひとつ思うのは、言語というより時代的なものだと思うのですが、 オブジェクト指向の設計方針自身が変わってきているということです。 昔々、私がUNIX上でMotifを使ってGUIを構築していたとき、 いろいろなGUI部品を配置するための親となるコンポーネント(用語は Javaで統一)は、「Manager」というコンポーネントで、これに子として 他のGUIコンポーネントを含めました(Compositeパターン)。 んで、その中で部品を縦横に並べるRowColumnや、座標で並べる BulletinBoardは、Managerのサブクラスでした。 また、PushButtonはLabelのサブクラスでした。 Javaでは、いろいろなGUI部品を配置するための親となるコンポーネントは Panelといいますが、その中の部品の並べ方は、Panelを継承したクラスで 制御するのではなく、LayoutMangerというオブジェクトをPanelに対して 横から突っ込む形で制御しています。 また、ButtonはLabelのサブクラスではありません。 コードの再利用のために、既存クラスを継承してオーバーロードでちょっと いじって、というやり口が流行らなくなってきているのは確かだと思います。 まあSwingでもJButtonの下にBasicArrowButtonがぶらさがったりしては いるようですが。
[この投稿を含むスレッドを表示] [この投稿を削除]
[19] Javaについて
投稿者:kon
2007/02/20 02:13:25

こんにちは! 以前、C言語FAQの日本語訳の復刊を報告したkonです。 (忘れているでしょうね・・・) 前橋さんの本はすべて読ませていただいています。 私事ですが、次の仕事でJavaをやる事になりそうなので(私はしがない7年目のプログラマ です)Javaを勉強しています。具体的な仕事の内容が不明瞭なのでなんともいえないのです が、次のSTEPに進むために何をすべきか悩んでいます。現状のスキルは以下になります。 ・オブジェクト指向は知っています。(言語はC++で、業務は2年くらいやっいていました) ・Javaの文法はひととおり、おさえました。以下は勉強した本等です。 (1)Java言語プログラミングレッスン(上)(下) (2)増補改訂版Java言語で学ぶデザインパターン入門 (3)Java 謎+落とし穴 (4)Java House ML Topicsを見る(前橋さんの投稿もありますね) (5)APIリファレンスを見る (6)クラスライブラリのソースを読む (1)は簡単すぎたので、2回くらいしか読んでいません。(上は1回) (2)まわりで有名だったので購入しました。1回読んで、飽きてしまいました。 (3)は私のバイブルである"C言語ポインタ完全制覇"と並びおもしろかったです。 はじめは、斜め読みから繰り返し5回ほど読みました。 (4)~(6)は、気になるところ(file操作など)を読みました。 いまさら、簡単なプログラムをせこせこ作るのもなあと思ったりして、かといって仕事しな がらおぼえていくと後で、デスマにならないかと心配したりしています。つたない文章で申 し訳ありませんが、よきアドバイスをお願い致します。 それではまた。
[この投稿を含むスレッドを表示] [この投稿を削除]
[18] Re:こちらの住み心地はいかがですか?
投稿者:ひろ
2007/02/20 02:13:25

こんにちは。  結局キャンセルしてしまいました。  複数のブログを置いて、毎日どこか更新、という状況になる予定(は未定) だもので、さすがにちょっと怖いな、と。  Twodotsさんの名誉のために言っておきますが、サポートの反応はよかったです。  夜中に入れておいたキャンセルにも、朝一で対応してくださいました。  いつかまた機会がありましたらまたご指導ください。  お騒がせいたしました。
[この投稿を含むスレッドを表示] [この投稿を削除]
[17] Re:こちらの住み心地はいかがですか?
投稿者:(ぱ)
2007/02/20 02:13:25

 ん? 13番さんってひょっとして… それはさておき。 >Message-Id から、スーパープラン用のサーバは Joe's Webhosting の国内高速 >大容量サーバ(server04)の再販であることがわかりました。  ああ、なるほど。  cPanelの障害報告で「国内高速3」とか出るんで、何か関係あるのかなあ、 それともサーバ名としてはこういうのってありがちなのかなあ、ぐらいに 考えていました f(^^;;  今ログインしてhostnameしたところ、 server06.joeswebhosting.net  と出ましたね。情報ありがとうございました。  まあ実のところ使ってて困んないなら問題ないわけでして、 悪名高いfc2webなんかでも結構問題なく使えていたりするのですが(誰が?)。 >   http://www.joeswebhosting.net/down.html > >出ているだけでこれだけの障害報告があります。  どうせハードウェア障害なんて起きるときは起きるのでしょうから、 これが正直な報告であれば、さして問題ないと私は思うんですがねえ。 > しかも、某掲示板レン鯖板の皆さんに言わせると(以下自粛) > ちょっと考え込んでしまっています。  とりあえず、ドメイン持ってれば移転はさほどインパクトが大きくない、 ということで、私の方は気長に構えてみます。
[この投稿を含むスレッドを表示] [この投稿を削除]
[16] Re:こちらの住み心地はいかがですか?
投稿者:ひろ
2007/02/20 02:13:25

(ぱ)さん、ご丁寧なコメントをありがとうございます。  ドメイン・スーパープラン(ドメインは持ち込み)で試用を申し込んでみました。 > これが高頻度なのかどうなのか、私は他を知らないので判断できませんが… >でもパッチは頻繁に当てて欲しいですし、私に関する限り困っていないです。  Nucleus はあっさりとインストールされ、よその業者では苦労させられた文字コード が原因と思われる文字化けも出なかったのですが、ブログのアイテムにコメントが 付いたときに送られてくる通知メールをテストし、届いたメールのヘッダを見ると、 Message-Id から、スーパープラン用のサーバは Joe's Webhosting の国内高速 大容量サーバ(server04)の再販であることがわかりました。    http://www.joeswebhosting.net/down.html 出ているだけでこれだけの障害報告があります。  しかも、某掲示板レン鯖板の皆さんに言わせると(以下自粛)  ちょっと考え込んでしまっています。
[この投稿を含むスレッドを表示] [この投稿を削除]
[15] Re:こちらの住み心地はいかがですか?
投稿者:(ぱ)
2007/02/20 02:13:25

ひろさん、はじめまして。 > ちなみに私も2ちゃんねるのレンタルサーバ板にはいきましたが、おっしゃるとおり >読めば読むほど訳がわかりませんでした(笑)  「嘘を嘘と見抜ける人でないと~」とは言いますけど、ありゃ嘘を嘘と見抜く コストがメリットを上回っているというか、玉石混交とも言うけどいくらなんでも 石が多すぎでまるで役に立たないというか (^^; > おふざけもあるのですが、教育関係の堅いコンテンツを実名で公開しているサイト >なので、滅多に落ちないこと、サポートが真面目なこと(まぁ落ちなければそれほど >サポートの厄介になることもないのですが)が重要なのですが、こちらはいかがで >しょうか。  現状で特に不満はないです。  以前、「ああ、落ちてるなあ」と思ったときは、cPanelXの方に停止の お知らせが出ていましたし。  ひろさんは既に試用されているようですから、似たような情報を見ることが できるのかもしれませんが、最近お知らせにある限りの停止情報は以下の通りです。  7/14 サーバソフトウェア更新作業  6/18 一部ユーザのCGIスクリプト暴走により50分間サービス停止  6/13 サーバソフトウェア更新作業  6/6 サーバソフトウェア更新作業  6/4 サーバ再起動  これが高頻度なのかどうなのか、私は他を知らないので判断できませんが… でもパッチは頻繁に当てて欲しいですし、私に関する限り困っていないです。 ただし、私自身が自分のサイトをそれほど頻繁に見るわけでもないので (更新されてないことは自分が一番よく知っているわけで(^^;)、知らないうちに 落ちていた、ということはあるかもしれません。  うちのページを見ている方で、「えーっ! よく死んでるじゃん」と思われる方は 教えてくださいませ(_o_)  また、最近、MySQLのconnectionが占有されて、この掲示板が見られないことが 数度ありましたが、これはユーザのスクリプトや使用状況次第ですから、 ちょっとサーバ業者を責めるのは酷という気がします。 # ちなみに一時期MySQLが使えなかったことについては、事後報告もありませんでした。 # このへんちょっとサービス悪い? これまた他を知らないのでなんとも言えませんが。
[この投稿を含むスレッドを表示] [この投稿を削除]
[14] Re:こちらの住み心地はいかがですか?
投稿者:ひろ
2007/02/20 02:13:25

自己レスで恐縮です。 > その他(どうせ新規に借りるなら Movable Type でなく複数人のブログを動かし >やすい Nucleus を UTF-8 で使いたい等)、TwodotsNet の方にも直接問い合わせは >送っているのですが、  返信が来まして、UTF-8可、Nucleus の検索最適化のための機能(FancyURL)に必要な .htaccess による設定変更や mod_rewrite も設定上可の筈、だそうです。  とりあえず試用してみますが、引き続きご助言いただけましたら幸いです。
[この投稿を含むスレッドを表示] [この投稿を削除]
[13] こちらの住み心地はいかがですか?
投稿者:ひろ
2007/02/20 02:13:25

 はじめて書き込ませていただきます。プログラミングに関係のない話ですみません。  現在サイトを置いているプロバイダが、手狭なのとperlが古く Movable Type が 置けないため、移転しようとレンタルサーバを探しているうちに TwodotsNet に 行き当たり、ドメイン-プラスかスーパーのレンタルを検討しています。  ネットを検索しても、悪口こそ見当たらなかったものの、ユーザーが少ないせいか 誉めている方も発見できず、いろいろ検索しているうちにこちらの2月14日の雑記に たどりつきました。  ちなみに私も2ちゃんねるのレンタルサーバ板にはいきましたが、おっしゃるとおり 読めば読むほど訳がわかりませんでした(笑)  おふざけもあるのですが、教育関係の堅いコンテンツを実名で公開しているサイト なので、滅多に落ちないこと、サポートが真面目なこと(まぁ落ちなければそれほど サポートの厄介になることもないのですが)が重要なのですが、こちらはいかがで しょうか。  その他(どうせ新規に借りるなら Movable Type でなく複数人のブログを動かし やすい Nucleus を UTF-8 で使いたい等)、TwodotsNet の方にも直接問い合わせは 送っているのですが、ユーザーとしてのこちらの印象をお聞かせ願えれば幸いです。  よろしくご助言のほどお願いいたします。
[この投稿を含むスレッドを表示] [この投稿を削除]
[12] Re:shortとかfloatとか
投稿者:(ぱ)
2007/02/20 02:13:25

いったん返信を書いたのですが、preview画面で投稿された気になってたらしい… 掲示板作った本人が何やってるんだか。 >ただ金融システムの情報系だとlong doubleなどは >積極的に利用したいので必要に応じて、ですね。 ># と、一応言っておきますです。観念を固定しちゃう方もいるので・・・ 確かにそうですね。迂闊でした。失礼しました。 私は金融系のシステムには直接関わったことはないのですが、 たとえばCADなんかだとすごく精度が必要な気がしますが、全長5mの車を 1/100mm単位で刻んだとしてたかだか50万、金融系のシステムの方がずっと 高い精度が必要だ、ということを某所で聞いて納得した記憶があります。 32bit shortじゃちょっとした会社の年間売り上げも入りませんもんね。 >>Javaだと、doubleをfloatに代入できず、かつ実数のリテラルがdoubleなので、 >>floatを使うのはさらに大変です。 >あ、double → floatはダメなんですか。 >ってことは↓ができないんですね。 > >float hoge = 1.0; です。これは float hoge = 1.0f; のように書く必要があります。 ライブラリなんかがfloatを要求してると大変です。 >やっぱり桁落ちしてしまうからなんでしょうか? だと思います。 黙って代入するよりは、妥当な仕様だろうとは思うんですが。
[この投稿を含むスレッドを表示] [この投稿を削除]
[11] Re:shortとかfloatとか
投稿者:れぷ
2007/02/20 02:13:25

>Subjectかえました。 あ・・・気がつきませんですいません。 >ていうかよくおぼえてますね (^^; 私はロクでもないことのほうが良く憶えてたりします(^-^;) >しかし、私も「getchar()の戻り値はなぜintなんだろう?」とか >思ったことはあります。 あ、これは私も思いました。 EOFの理解に結構悩んだ記憶があります。 >結局のところ、Cでは、 > --- 中略 --- >と言ってしまってよいと思っています。 そうですね。それで困るプログラムは意外に少ないですし。 # 今はsizeof int = sizeof longも多いのでなおさら!? ただ金融システムの情報系だとlong doubleなどは 積極的に利用したいので必要に応じて、ですね。 # と、一応言っておきますです。観念を固定しちゃう方もいるので・・・ >Javaだと、doubleをfloatに代入できず、かつ実数のリテラルがdoubleなので、 >floatを使うのはさらに大変です。 あ、double → floatはダメなんですか。 ってことは↓ができないんですね。 float hoge = 1.0; やっぱり桁落ちしてしまうからなんでしょうか?
[この投稿を含むスレッドを表示] [この投稿を削除]
[10] Re:掲示板を移行しました
投稿者:(ぱ)
2007/02/20 02:13:25

どうもです。 この掲示板の仕様を決めるにあたって、apjさんとこの掲示板をかなり参考に させていただきました (_o_) >を,ウチより洗練されてますね。素晴らしい。 恐縮です (^^; >スレッドごとの表示とか,ウチの師匠にも言われてるんだけど >忙しいから放置していた。 スレッドごとの表示というのが「このレスを含むスレッドを表示」の ことでしたら、apjさんとこの掲示板でも「このメッセージにコメントする」で 実現されていると思うのですが… もっとも投稿する気もないのにアレを押すのは勇気が要るかもしれません。 わけわかんない人がいるといけないので貼っておきますが、 apjさんとこの掲示板はこちらです。 http://atom11.phys.ocha.ac.jp/bbs01/list.php
[この投稿を含むスレッドを表示] [この投稿を削除]
[9] shortとかfloatとか
投稿者:(ぱ)
2007/02/20 02:13:25

Subjectかえました。 >C言語を憶えたての頃を思い直してみると >ファイルダンプのときにchar型のデータを%02Xで表示すると >確かに符号拡張されてました。(処理系依存ですけど。) ># ・・・答え聞いてから思い出すなって感じですね(;_;) ていうかよくおぼえてますね (^^; しかし、私も「getchar()の戻り値はなぜintなんだろう?」とか 思ったことはあります。 >shortとfloatは表示コストが余分にかかるんですね。 >最近ではほとんど利用しない型なのですけど・・・ 結局のところ、Cでは、 ・整数型にはintを使え。 ・実数型にはdoubleを使え。 ・charは配列としてだけ使え。 と言ってしまってよいと思っています。 Javaだと、doubleをfloatに代入できず、かつ実数のリテラルがdoubleなので、 floatを使うのはさらに大変です。
[この投稿を含むスレッドを表示] [この投稿を削除]
[8] Re:祝! 新掲示板移行
投稿者:れぷ
2007/02/20 02:13:25

>あります。intより小さい整数型は、可変長引数で渡されるときには無条件で >intに格上げされています。 なるほどー。そういう仕様になっていたのですね。 ご教授ありがとうございます。 C言語を憶えたての頃を思い直してみると ファイルダンプのときにchar型のデータを%02Xで表示すると 確かに符号拡張されてました。(処理系依存ですけど。) # ・・・答え聞いてから思い出すなって感じですね(;_;) >だそうです。%hにでっかい値を渡しても、表示の前に小さくされる shortとfloatは表示コストが余分にかかるんですね。 最近ではほとんど利用しない型なのですけど・・・
[この投稿を含むスレッドを表示] [この投稿を削除]
[7] さっそく・・・
投稿者:apj
2007/02/20 02:13:25

改行入れるの忘れた。 仕様よく嫁>自分。
[この投稿を含むスレッドを表示] [この投稿を削除]
[6] Re:掲示板を移行しました
投稿者:apj
2007/02/20 02:13:25

>仕様について簡単に説明します。 を,ウチより洗練されてますね。素晴らしい。スレッドごとの表示とか,ウチの師匠にも言われてるんだけど忙しいから放置していた。今度は私がここの仕様を参考にさせてもらいまつ。
[この投稿を含むスレッドを表示] [この投稿を削除]
[5] Re:祝! 新掲示板移行
投稿者:(ぱ)
2007/02/20 02:13:25

>そういえば、先日の本多さんの絡みの話になりますが、 >floatをprintf()に渡すと実引数double型へ変換されますけど、 >整数型のほうはこのような格上げってないのでしょうか? あります。intより小さい整数型は、可変長引数で渡されるときには無条件で intに格上げされています。 ># 変換指定子がhd, ld, lldなどフルにサポートされているからかも・・・ じゃあ変換指定子のhはなんなのか、ということですけど、規格によれば | 実引数は汎整数拡張に伴って拡張されている。その値を表示する前に | short int型又はunsigned short int型に戻す変換を行う。 だそうです。%hにでっかい値を渡しても、表示の前に小さくされる、ということですね。
[この投稿を含むスレッドを表示] [この投稿を削除]
[4] Re:祝! 新掲示板移行
投稿者:れぷ
2007/02/20 02:13:25

>この「_no」は文字化けか何かかと思って一瞬焦ってしまいました。 >_| ̄|○ とか orz とかと同系列の1行AAですね。 ギャー。すいません。 変数_noのようなコードの断片みたいに見えますね。 最近、マイブーム(死語)なのですよコレ。 >printfは自作インタプリタ向けに(微妙にサブセットの)実装を書いたことも >ありますし、仕様は何度も読んでいるはずですが、フルに機能を使うことは >まずないし、仕様だけ読んでも忘れるしで、私もやっぱり忘れてました(^^; 自作インタプリタって凄いですね。 私だったら構文解析ルーチン作るだけで挫折しそうです。 忘れている、といえばshort型の変換指定子%hdとかもそうでした。 そういえば、先日の本多さんの絡みの話になりますが、 floatをprintf()に渡すと実引数double型へ変換されますけど、 整数型のほうはこのような格上げってないのでしょうか? # 変換指定子がhd, ld, lldなどフルにサポートされているからかも・・・ >x(またはX)に対する指定は、(ゼロでないときに限り)0x(または0X)を >付け加えるってだけで、あんまり役に立つとも思えませんし... そうですね。必要なら自分で書いても面倒ではないですね。
[この投稿を含むスレッドを表示] [この投稿を削除]
[3] Re:祝! 新掲示板移行
投稿者:(ぱ)
2007/02/20 02:13:25

>というわけで早速テストです。 どうもです。 >変換指定子に「#」があるのを知りませんでした。_no この「_no」は文字化けか何かかと思って一瞬焦ってしまいました。 _| ̄|○ とか orz とかと同系列の1行AAですね。 > printf("%#010x\n", hoge); printfは自作インタプリタ向けに(微妙にサブセットの)実装を書いたことも ありますし、仕様は何度も読んでいるはずですが、フルに機能を使うことは まずないし、仕様だけ読んでも忘れるしで、私もやっぱり忘れてました(^^; x(またはX)に対する指定は、(ゼロでないときに限り)0x(または0X)を 付け加えるってだけで、あんまり役に立つとも思えませんし...
[この投稿を含むスレッドを表示] [この投稿を削除]
[2] 祝! 新掲示板移行
投稿者:れぷ
2007/02/20 02:13:25

というわけで早速テストです。 変換指定子に「#」があるのを知りませんでした。_no #include <stdio.h> int main(void) { int hoge = 4095; printf("%#010x\n", hoge); return 0; } ただ、「0x」の大文字小文字変換もそのうしろの 変換指定子「x」依存なのがちょっと嫌かも。 もっとも普段からリテラルで0X00000FFFなどと書かないから 見慣れないというだけでしょうが・・・
[この投稿を含むスレッドを表示] [この投稿を削除]
[1] Re:掲示板を移行しました
投稿者:(ぱ)
2007/02/20 02:13:25

仕様について簡単に説明します。 ・発言内容は全て<pre>で囲まれます。ソースリストを載せるのに便利にするためです。  適当な位置で改行を入れてください。 ・でもやっぱり改行を入れ忘れる人もいるので、プレビュー表示をつけました。  確認してから「送信」をクリックしてください。 ・タグは全無効です。<font color="red">ほらね</font> ・クリッカブルURLの機能があります。  http://kmaebashi.com  タグは無効なので<a>タグは書けません。 ・現状では削除機能がないので削除用パスワードは単なるお飾りです。 ・スレッド表示時、スレッドトップの「▼」をクリックすると、そのスレッドの  発言を一覧表示します。 ・一画面あたりの表示数は以下の通りです。  - 日付順表示…30  - 日付順インデックス…50  - スレッド表示…20スレッド
[この投稿を含むスレッドを表示] [この投稿を削除]
[0] 掲示板を移行しました
投稿者:(ぱ)
2007/02/20 02:13:25

てなわけで、書き初めです。
[この投稿を含むスレッドを表示] [この投稿を削除]