===========駄スレ終了============ Σ(゚Д゚)もう終わりかよ!? (´β`)終了。
>2 やってみたかったんだね よしよし
マサカズ ♥
5 :
全スレの 954 :2001/07/03(火) 20:28
そういえば昔、他の人が AIX で 100Mbsp のネットワークから 64kbsp のネットワークへデータを送信するゲートウェイみたい なものを作ったことがあった (C++)。開発段階ではまだ 100<-->100 のネットワーク構成だったので select 使わないで データタレ流してたら、本番で構成が変わって 64k になってし まった。結果、64k 側の送信バッファがいっぱいになってシグナル が上がり、プロセスごと落ちるような障害を突き止めたことがあった。 Java でどういう動きになるかは分かりませんが、もしこのままだっ たら非ブロッキング I/O がないままではこういう所には向かない かもね。どちらにせよ JDK1.4 でこのような脆弱性を補強して サーバ用途のアプリが組めるようになったと思う。 まだ使ったことないけど (藁
>>5 入力と出力を別スレッドにしてパイプストリームかFIFOキューでつなぐだけじゃん
selectでごにょごにょやるよりよっぽど素直でわかりやすい設計だろ?
やっぱり上記の動きは AIX の Java VM が吸収しているみたいだわ。
>>947 VB 誤字スマソ
>>6 通信速度の差で 64k 側の送信バッファがいっぱいに
なるっていうのは解決できます? select で送信可能に
なってるかどうか随時みる必要があるのでは...
>>8 キューの最大値を超えそうになったら
キューの追加関数でブロックするようにしときゃいじゃん。
入力スレッドはそこでブロックされる。
(言うまでもないけど残量が0になった時はキュー取り出しがブロック)
つーか普通FIFOキューっていったらそういう物を指すと思っていたんだけど、、
#標準ライブラリのパイプストリームはバッファの容量が指定できなかったかもしれない
#からひょっとしたらメモリの限り読み込まれてしまうかも
10 :
5 :2001/07/03(火) 22:04
>>9 お~それで出来ると思う。でもあの時はカットオーバー直前で
時間がなかったから、とりあえず知ってる方法で対処した。
で、そろそろ Java の話に戻しませんか? とりあえず sage。
11 :
デフォルトの名無しさん :2001/07/03(火) 23:23
ソケット接続した同士が、お互いにヘルスチェック電文投げ合ってるような時、 selectが無いと困るが…。
12 :
デフォルトの名無しさん :2001/07/04(水) 00:05
>>11 Javaでは、全てのSocketにバッファリードするThreadを貼り付けて
おいて、んでもって可能な限りある時点でrunnable状態のスレッド
の数を少なく(理想的にはCPUの数前後に)しておくのが良いようだと
思われます。
「いまさら Java なんか憶えるな、これからは C# だ!」 って言ってた人たちは今、どうしてるんですか?
14 :
デフォルトの名無しさん :2001/07/04(水) 08:28
Java厨房にゃやっぱ無理か。
>>11 ヘルスチェックの受信側はwait( long timeout )の引数指定で
使えば問題ないな。
送信側はタイマー用に別にスレッドがいるかもしれない。
selectでできることはスレッド、排他、wait-notifyでほとんどなんでもできる。
ただし何も考えないで作るとどんどんスレッドが増えるから
スレッド管理の重いOSでサーバーアプリ動かすのはつらかった。
17 :
デフォルトの名無しさん :2001/07/04(水) 14:26
入力された文字列が、アスキーコードで何バイトかって返したいんですけど、 どうすればいいでしょうか??
>>15 は
>>10 を指してるのかな? 趣味でやっているのではありませんから、
カットオーバー直前に新規スレッドを起こすような実装変更は出来ませんよ。
>>17 return str.getBytes("iso-8859-1").length
20 :
17 :2001/07/04(水) 14:42
>>19 即レス有難うございます。
ところで、str に "あいうえお" をいれると、
返された値は5だったんですけど、
"あいうえお"はアスキーコードなら10バイトですよね?
どこか、使い方間違っているでしょうか?
日本語が入るんだったら return str.getBytes("Shift_JIS").length;
すまん、Win 環境だったらデフォルトで Shift_JIS (というか MS932?) だから↓で良い。 return str.getBytes().length;
23 :
17 :2001/07/04(水) 15:13
何度もすみません。。。 今度は、str に "アイウエオ"(半角カナ)を入れてみたんですけど、 返ってきた値は、5でした。 アスキーコードで半角カナって1文字当たり1バイトでしたっけ? 2バイトだった気が。 どうでしょうか?
だからそれはアスキーじゃないっツーの
25 :
22 :2001/07/04(水) 15:28
26 :
17 :2001/07/04(水) 15:54
文字コードのことがわかってなかったっス。 おっしゃってる事が理解できました。 ありがとうございました。
27 :
デフォルトの名無しさん :2001/07/04(水) 17:20
>>17 ,26
これ実行してためしてみ
public class encode{
static String[] encodes = {"Shift_JIS","EUC-JP","ISO2022JP","UnicodeBig"};
public static void main( String[] args )
throws java.io.UnsupportedEncodingException{
String str = "アイウエオ";
System.out.println(str+"\n");
byte[] bytes;
for( int i=0; i<encodes.length; i++ ){
bytes = str.getBytes(encodes[i]);
System.out.println("encode="+encodes[i]);
for( int j=0; j<bytes.length; j++ ){
System.out.print( " "+Integer.toHexString( 0xFF&bytes[j] ) );
}
System.out.println("\n");
}
}
}
28 :
17 :2001/07/04(水) 17:25
29 :
922 :2001/07/04(水) 19:36
JInternalFrameでフレーム内のサイズからWindowのサイズを 逆算したいのですけど方法が判らないんです。 Insetsとか見てみたんだけど如何してもシックリくる値が算出出来ない~ どなたか御教授願います。
30 :
デフォルトの名無しさん :2001/07/04(水) 22:55
>>29 親のJDesktopPaneの参照拾ってサイズ取ればいいんじゃないの?
31 :
>>30 :2001/07/04(水) 23:03
知りたいんじゃなくて 中身のサイズで外身のサイズを決定したいんです。
32 :
30 :2001/07/04(水) 23:10
>>31 あら、そういうことならpack()したら?
中身のComponentの推奨サイズの和で、自動的にサイズ
決定してくれるよ。
Componentの推奨サイズをデフォルトから変えたいなら、
setPrefferedSize()だったかな?
33 :
名無しさん :2001/07/05(木) 00:00
W2K+SP2環境にJBuilder4を入れて使用していたのですが、 突然Internal Errorが出るようになって立ち上がらなくなりました・・ メッセージには Failed to start Java VM:3と出ています。 このエラーの対処方法をご存知の方、どうか私を救って下さいませ(;´Д`)
34 :
デフォルトの名無しさん :2001/07/05(木) 01:05
J2SEのバージョンを書きなされ。
35 :
名無しさん :2001/07/05(木) 01:10
>>34 さん
Version 1.3.0_02です。元あった Version 1.3.0はリネームしてあります。
この環境で動いていたのですが・・・むぅ。
36 :
デフォルトの名無しさん :2001/07/05(木) 09:49
VCを主に使ってたけどJAVAを勉強してます。 本とかをみると、関数の頭は小文字で書く規則が一般的に使われている と書かれてますが、VCのようにメンバ変数はプレフィクス「m_」をつかう、 クラス名の頭には「C」をつけるなどの、一般的に使われてるような規約はないんでしょうか? 前から不思議だったんだけど異常にみにくいんですけどjavaのソースって
40 :
Java使い :2001/07/05(木) 10:34
>>39 つまり、よっぽどの問題だってことだ。
こういう弱点とも言えるところに目をつぶることなく
前向きに対処していこうという気持ちはないのかい?
>>40 IBM ソースみると インスタンス変数はケツアンダーバー
instanceVariable_
だよな。
42 :
デフォルトの名無しさん :2001/07/05(木) 10:57
43 :
36 :2001/07/05(木) 11:09
>>37 デザインパターンの記事は非常に面白いですね
コーディング規約はメンバ変数がアンダーバー・・うーむ・・
>>38 変数名の規則がないですね・・(!)
>>39 ということはやっぱよく話題になるんすね。当然ですよ!
>>40 ですね
>>42 これも変数名の規則がない・・
初めてCプラをはじめたころTurboC++を使ってて、これにはたしか変数名の
プレフィクスがなかった。仕事でVCを使い始めてメンバ変数にm_をつける
ことを知って、コードが非常に読みやすくなって感動したのを覚えてますよ
メンバ変数にプレフィクスをつけたことがない人はつけないと読みにくいと
いうこと自体に気づかないものだと思うけど、なんとかしないとなー
とりあえずVC式でやってみますたぶん
変数名に型名やメンバ変数の別がないと読めないソースを書く奴は氏ね。
46 :
36 :2001/07/05(木) 11:56
>>44 >>45 意味不明・・
その変数がどのスコープにあるかわからないんだからわかるように書くのが
利にかなってると思うが
メンバ変数使うのってCでグローバル変数にアクセスするようなもんだから
ねえ・・
それにプレフィクス等をつけないと読めないというのではなく、つけたら読みやすい
という話しだし
47 :
デフォルトの名無しさん :2001/07/05(木) 12:16
>>46 >その変数がどのスコープにあるかわからない
ようなソースを書くのが問題、ってことでしょ。
まともな設計をしてたら
>メンバ変数使うのってCでグローバル変数にアクセスするようなもん
という感想は出てこないと思うけど……。
48 :
44 :2001/07/05(木) 12:25
> その変数がどのスコープにあるかわからないんだからわかるように書くのが > 利にかなってると思うが m_をつけてわかるのは「どのスコープ」でなくて「メンバか自動か」だろ。 コード中のある変数を見て、それがメンバか自動かわからないということは、 その関数内の自動変数をすべては把握できていないということ。 (自動でないのはすべてメンバだから) ということは、その関数は可読性が低いということ。 > メンバ変数使うのってCでグローバル変数にアクセスするようなもんだから > ねえ・・ こっちのほうが意味不明。 > それにプレフィクス等をつけないと読めないというのではなく、つけたら読みやすい > という話しだし つけなくても読みやすいのならば、はじめからつけないし、 つけないと読みにくいのなら、元からその関数は可読性が低い。 すなわち、わざわざつけるということは、そのソースは可読性が低いということ。
49 :
36 :2001/07/05(木) 12:38
まあどうでもいいや・・勝手に誰が読んでも読みやすいプレフィクスのないコードを書いておいてください 中学校でしこしこプログラム汲んでるだけだろうけど・・ いろんな奴が手を加えてる十万行以上ある商用コードを読んだことないんだろう・・
低可読性に寄与する度合 設計>コーディング規則 VCのコーディング規則は冗長に感じる。 Javaくらいがちょうどいい。
51 :
晒しとくか :2001/07/05(木) 12:46
>>36 過去に何度も何度もがいしゅつの
それも負け戦を戦おうとした心意気は買うぞ。
53 :
44 :2001/07/05(木) 12:48
まあどうでもいいや‥勝手に誰が読んでも読みやすい変数が途中でごっちゃになるコードを書いておいてください 中小システム開発会社でクズ仕様書のままにソースかいてるだけだろうけど‥ 開発体制が3階層以上の、ソースが50万行以上あるプロジェクトをやったことないんだろう‥ # マジでコードレビューやってないんだろうな
54 :
36 :2001/07/05(木) 13:01
負け戦・・? 全部ちゃんと出荷してんだろうが
>>53 さぞかしご立派な環境で完璧なコーディングをされる方ばかりなんでしょうから
プレフィクスがないと読みにくいコードをかくような輩はいないんでしょうね
おまけに44さんは50万行以上あるコードのどの部分をみてもぱっとその変数
がメンバかローカルかわかるすばらしい仕様書と洞察力をお持ちなんだから問題ないでしょう
オブジェクト指向って知ってマス?
56 :
44 :2001/07/05(木) 13:08
>>55 43 名前:36 投稿日:2001/07/05(木) 11:09
>>37 デザインパターンの記事は非常に面白いですね
コーディング規約はメンバ変数がアンダーバー・・うーむ・・
とかいてあるくらいだから、知らないんだろ。
ごめんね。何も知らない君を煽ったりして。でも、コードレビューはちゃんとしようね(はあと
>>36
57 :
デフォルトの名無しさん :2001/07/05(木) 13:13
>>54 一クラスは40人くらいだよ、ぼくチャン!
つか今までJavaを全く知らなかったというのが驚き。 仕事で使わないにしてもメジャーな言語は一応知っておくのが プログラマの嗜みだと思っていたのだが。
59 :
36 :2001/07/05(木) 13:18
いえいえ・・44さんの50万行のシステムが問題なく動くことをお祈りする次第ですよ 50万行のレビュー。もちろん全部目を通されたんだから問題ないでしょう しかしJavaで50万行・・ ・・あっCOBOLか・・気づかなかった
60 :
36 :2001/07/05(木) 13:26
デザインパターンの解説としてあのページは非常にわかりやすいと言いたかった だけだが・・ 50万行オブジェクト指向で・・もちろん3階層以上の開発体制なんだからデザインパターン をふんだんに取り込んできれいに設計されてるんだろう・・ あっCOBOLだからなわけないか・・ なんでもいいから拝んでみたいもんだそんな全員がきれいなコード書くメンバー で作られたソースを
61 :
39 :2001/07/05(木) 13:27
結局今回も得られたことといえば、 >過去に何度も何度もがいしゅつの >それも負け戦を戦おうとした心意気は買うぞ。 ↑ これだけだったか(w
変数の範囲を示すprefix/suffixは、サボる人にはありがたいものではあるね。 (クラス・メソッド分割を。言い換えればリファクタリングを)
結局36が言いたいのは、 ・自分はコード行ミリオン級のプロジェクトに関わってるぜ ・そのプロジェクトの要員はみんなだめコードを書くぜ の二つ?
よく見積書番号に意味のある値を紛れ込ませるか(例:年+担当者+連番 980301B01001) 純粋にキーとしてだけのシーケンスな番号にするか、みたいな問題だな。 総じて一つのものにいろいろな意味を紛れ込ませるのは設計が良くないか運用スキルが低い証拠。 変数名は実態の識別子であって属性を紛れ込ませるものじゃあない
65 :
62 :2001/07/05(木) 13:38
ついでに。 C++でクラスにC付けたりメンバにm_付けたりって言うのは 旧態のCにおける構造体型やグローバル変数と区別するためなんじゃないの? Javaにはどっちも無いから付ける意味もほとんど無いよ。 付いてても直接の害は無いから付けるのは自由だけど、某所で某が主張してた ように、prefixがついてるからってんでクラス分割とかに頭が回らなかったり という弊害もあるね。
安全性のため馬鹿が読んだら読みにくいコードを書こう(ワラ
67 :
36 :2001/07/05(木) 13:44
たしかに。 39(自作自演)が過去の自分の負け戦を思い出して感慨にふけっただったようだ // 俺が他人のソースを読む時プレフィクスがないコードが一番よみにくいってこと。 どうせ読みにくいならプレフィクスがあったほうがまだよみやすい。 m_がついるだけで他でもいじられてる可能性がある変数だってわかるし、型をみたか ったら関数の外をみなきゃいけないってすぐわかるわけだから メンバ変数にプレフィクスがないのはCのグローバル変数にg_がなくて苦労すん のと同じ。同じクラスにある分まだましだが プレフィクスがなくてもぜんぜんおっけーとかいうのはjavaから言語覚えて 大規模開発したことがない人だけでは もしくは仕様書だけ書いたり眺めたりしてて自分でコーディングしてないか >>旧態のCにおける構造体型やグローバル変数と区別するためなんじゃないの? メンバか、グローバルか、ローカルを示すためにつける グローバルはg_、メンバはm_をつけるのが一般的。構造体かどうかは関係ない
68 :
36 :2001/07/05(木) 13:44
訂正 誤: 俺が他人のソースを読む時プレフィクスがないコードが一番よみにくいってこと。 正: 俺がいいたかったのは他人のソースを読む時プレフィクスがないコードが一番よみにくいってこと。
有名な法則 「全角アルファベットを使うプログラマにろくなのはいない」 が今回もまた適用できますね。
70 :
デフォルトの名無しさん :2001/07/05(木) 13:46
俺はウザウザと余計なプリフィックスがついてないコードのほうが 遥かに読みやすいです。
で、当然ながら
>>36 さんは Java 標準ライブラリのソースコードを
お読みになられてるんですよね?言語特性の雰囲気くらい掴んでから
プロジェクトを開始したほうがよろしいですよ。
>>67 =36
大規模開発のケツにくっついてるゴールドフィッシュの糞が偉そうに。
高レベルプロダクトには竹ヤリ民兵はいらん。
そんなに読みにくいというのは、 1クラスに50とか100とかインスタンス変数があったり、 1メソッドに30とか50とか変数を使ったりするんだろうか。 設計が悪いとしかおもえない。 それと、prefix よりも見て意味の分かる変数名を付ける事の方が大事だと思われ。
おいおい、m_はローカル変数と区別するためにあるんだぞ。
36は変数の仕様が数値型から文字型に変わったらいちいちメンバ変数を変えるのだろうか? アクセッサメソッドも変更しそうな勢いだ(ゲラ
>>36 が今作っているコードは、来年 Java を知っている新人が
入った時「だせーよなーこいつ、ぜってー Java しらねーよ」
って陰口叩かれるだろう。m_ ではないが俺が以前接頭辞つけた
コードは多分言われている。今は Java になれたので、以前
のコードが恥ずかしいし、
>>36 のような接頭辞とかを付けて
いる他人のコードをみると痛い、痛すぎ... (徹夜明け乱文スマソ)。
>>74 ここはJava相談室だぞ。区別する必要なんぞ無い。
this.変数じゃいゴルァ
っていうか
>>36 は大規模開発に向いていないに 12 ペソ。
79 :
62 :2001/07/05(木) 14:03
>>>旧態のCにおける構造体型やグローバル変数と区別するためなんじゃないの? >メンバか、グローバルか、ローカルを示すためにつける >グローバルはg_、メンバはm_をつけるのが一般的。構造体かどうかは関係ない で、Javaはg_がないわけだ。それでフィールドとローカル変数の区別になるわけだが、 ローカル変数は使用する直前で定義するので見間違えること無いねぇ。 で、よく読んでくれ。 >C++でクラスにC付けたりメンバにm_付けたりって言うのは >旧態のCにおける構造体型やグローバル変数と区別するためなんじゃないの? クラスにCを付けるのは(C流儀の)構造体型と区別するためでしょ? 他に理由は思いつかん。 >俺がいいたかったのは他人のソースを読む時プレフィクスがないコードが一番よみにくいってこと。 違うよ。読みにくいのは変数名と使用方法が整然としていないコードであって、prefixなんてごまかし。 prefixに頼らないコードを書けるようにがんばろう。 まぁあれかねぇ。Javaはフィールドとローカル変数の名前空間が分かれているから、うっかり変数の hidingをやっちゃっても気づかないことに起因するバグを回避するためにprefixを付けるというのも 考えられるけど、それって本末転倒だよなぁ(藁 何のための名前空間なの?
80 :
36 :2001/07/05(木) 14:04
>>71 まあたしかに。まだ読んでないっすよ。
>>72 まさにあなた
>>VBちゅうぼう
数値型・・文字型・・。VB小学生医って善し・・
だいたいメンバかローカルかって話しをしてんのに型がどうのってアンタ・・
>>76 その可能性はたしかにあるかもね。まあいろいろ調べてから結論はだすけど
81 :
45 :2001/07/05(木) 14:05
javaのstaticでfinalじゃないメンバ変数はグローバルじゃないの?
>で、Javaはg_がないわけだ。それでフィールドとローカル変数の区別になるわけだが、 >ローカル変数は使用する直前で定義するので見間違えること無いねぇ。 うむ。ついでにメソッドの中のフローで メンバ変数か自動変数かが決定的に重要とは思えん。
>>77 そやね。m_ 付けさせるのだったら this. 付けさせる規約
にしたほうが良い。
>>82 「グローバル」ではなかろう。
クラスFooにstaticメンバbarがあったとしたら、
外からはFoo.barでアクセスするわけで、見紛いようもない。
86 :
62 :2001/07/05(木) 14:15
>>82 prefix付ける必要あるの?
そういえば36はstatic変数にどういうprefix付けるんだろう(藁
定数は大文字ってのも実際のところフィールドにprefix付けることと
見た目で区別をつけるという意味で大差無いわけだから、まぁ程度問
題ではあるよ。だからあんまり強固にフィールドのprefixを否定して
もしょうがないよね。好ましさと慣習程度のことなわけだ。
87 :
36 :2001/07/05(木) 14:16
>>で、Javaはg_がないわけだ。それでフィールドとローカル変数の区別になるわけだが、 >>ローカル変数は使用する直前で定義するので見間違えること無いねぇ。 関数が長い場合などわかりにくい。というかつけてあったほうが直感的。 その定義をみたい時、m_がついてれば関数の上の部分を探す手間がはぶける。 ここで長い関数はいくつかの関数に分けろっていう意見がでてきそうだけど、 関数はあくまで意味単位でわけるものだから「長くなったからさあ小分けしましょう」 というコードは、あちこちコードを追わなきゃいけいし何の処理をしてるかわかりづ らい関数が増えて逆効果。これもたぶん宗教問題だからもう反論せんけど >>クラスにCを付けるのは(C流儀の)構造体型と区別するためでしょ? >>他に理由は思いつかん。 あ・・Cに関してはたしかに >>prefixに頼らないコードを書けるようにがんばろう。 っていうか自分が書くぶんにはどっちでもかけるよそれは。 ただ「俺のソースはわかりやすい。プレフィクス医って由!」っていうのは傲慢だと 思うからつけてる。 自分しか読まないコードなら好きにすればいいわけだけど
あ、変数名かぶることないッスネ、バカでしたスマソ。
C++と違ってJavaは言語レベルでコーディング規則が結構あるからなあ。 ・1ファイル1クラス ・クラス名は大文字で始める ・フィールド名・メソッド名は小文字で始める 人の作ったライブラリを使うときに混乱しなくてすむ。
90 :
62 :2001/07/05(木) 14:19
>>84 this.は強制力が無いからいまいち。結局ローカル変数のhidingは
不幸な機能だったと思う。
91 :
39 :2001/07/05(木) 14:26
結局36が言いたいのは、 ・自分はコード行ミリオン級のプロジェクトに関わってるぜ ・そのプロジェクトの要員はみんなだめコードを書くぜ ・プレフィックスつけてもっとダメコードにしようぜ の三つ?
ほんとうにm_(もしくは類似する何か)をつけないで大規模開発してる 人っているの? ローカル変数と区別するって言うのは ・うっかり面罵変数と同じ名前をローカル変数につけちゃって、 ・またまたうっかり変数の宣言を忘れちゃった時に 発見困難なバグが発生するのを未然に防ぐためなんだけど。
93 :
訂正(藁 :2001/07/05(木) 14:28
結局36が言いたいのは、 ・自分はコード行ミリオン級のプロジェクトの金魚の糞だぜ ・そのプロジェクトの要員はみんなだめコードを書くぜ ・プレフィックスつけてもっとダメコードにしようぜ の三つ?
94 :
36 :2001/07/05(木) 14:31
>>92 >・うっかり面罵変数と同じ名前をローカル変数につけちゃって、
>・またまたうっかり変数の宣言を忘れちゃった時に
>発見困難なバグが発生するのを未然に防ぐためなんだけど。
そうそう。それが大きいよね。
95 :
デフォルトの名無しさん :2001/07/05(木) 14:44
>>92 大規模ってなんか関係あるの。OOしってる?
クラス単位でテストしていけばそんなバグすぐみつかるよ。
>>36 には無理だけど(藁
96 :
62 :2001/07/05(木) 14:49
はい。ちゃんと使用意図のわかる命名をしてるのでその問題は出会ったことがありません。 あと、クラスのフィールドの数は相当多くても10いくことはほぼ無いので、十分把握できます。 とはいえ今時分が扱ってるのは2~3万行程度ですけど。
>>95 JUnitまんせーですな。C++にもユニットテストツール有ったような。
>・うっかり面罵変数と同じ名前をローカル変数につけちゃって、 >・またまたうっかり変数の宣言を忘れちゃった時に >発見困難なバグが発生するのを未然に防ぐためなんだけど。 こんな一瞬で分かるプチバグでつまづいたことなど Java使いはじめて数年間一度もありません。
>>92 >>94 クラスの要素たるメンバ変数と、あくまで一時的に使われるローカル変数、
ともに適切に命名されている限り、ダブることは通常ありえないっしょ。
ひとつのメソッドの中で、変数hogeと変数m_hogeが
一緒に使われてたりするわけ? そりゃ絶対どっか変なコードだろ。
俺はそういうケースに出くわしたら(そんなこと滅多にないけど)
メンバ変数の命名から見直すね。
バグにもならず放置されてしまうほうが怖いよ。
101 :
62 :2001/07/05(木) 16:35
setterはどうしてます? 私はnewValueとかaValue。もちろんより適切な名前がつけられるときはそうはしないけど。
>クラスの要素たるメンバ変数と、あくまで一時的に使われるローカル変数、 >ともに適切に命名されている限り、ダブることは通常ありえないっしょ。 これの根拠が分からん。class Customerのname変数とかPointのxとか ありうると思うけど。 >ひとつのメソッドの中で、変数hogeと変数m_hogeが >一緒に使われてたりするわけ? そりゃ絶対どっか変なコードだろ。 そうじゃなくて「ほんとはnameというローカル変数が使いたいんだけど、 たとえばタイポでString nama にしてしまったとき」にもし同名の面罵変数 があったら困ったことになるって言う話。 このバグは凶悪だ。ローカル変数は一度は代入されるだろうから確実に 面罵変数を壊す。しかも同じ名前を使ってるくらいだからきっと型も同じだ。 しかもそのことが発覚するのは壊された面罵変数を参照するコードが呼ばれた ときだ。 これを単体テストやJUnitで発見するのも難しい。あるメソッドがアクセスする 面罵変数すべてをを明示的に表明する(もしくはそれ以上の厳密さで表明を書く) しない限り見つけられる保証はない。
103 :
44 :2001/07/05(木) 19:17
人が真面目に仕事している間にヴァカが何か好き勝手言ってるな。
すみません、次バージョンのメンバ変数のアクセスは 明示的にthisを付けないとエラーにします…。 ________ 〈 ホントスミマセン ∨ ̄ ̄ ̄ ̄ ̄ ̄ ̄ Sun (´Д`;)ヾ ∨) ((
105 :
デフォルトの名無しさん :2001/07/05(木) 19:38
106 :
デフォルトの名無しさん :2001/07/05(木) 19:44
import java.awt.*; import java.applet.*; class Date { int month; int day; int year; Date(int month, int day, int year) { this.day = day; this.month = month; this.year = year; } public String toString() { return("" + month + "/" + day + "/" + year); } } public class DateToString extends Applet { public void paint(Graphics g) { Date Today = new Date(4, 15, 99); g.drawString("Today is: " + Today, 5, 15); } } 長くてすいません。DateコンストラクタのうしろにtoStringクラス定義 があるのはなぜでしょうか。クラスって上から順番に実行されるんですか。 そのばあいコンストラクタ定義のところはスキップするんでしょうか。 toString定義の引数は無しでいいんですか。
107 :
デフォルトの名無しさん :2001/07/05(木) 19:53
質問の仕方が悪いですね。コンストラクタ定義を削って public string(day,month,year) ~ ってやったらだめなんでしょうか。だめとしたら理由を教えてください。
>>106 -107
ううむ、ここまで突込みどころ満載だとどうして良いか分からんな...
109 :
デフォルトの名無しさん :2001/07/05(木) 21:56
クラスとかコンストラクタとかのところが理解できてないみたいです。 テキストをよーく読んで勉強し直します。
110 :
デフォルトの名無しさん :2001/07/05(木) 23:39
>>106 うーむ、、、。1冊本を読んでから
質問するかどうか考えるべきかと、、、。
111 :
デフォルトの名無しさん :2001/07/06(金) 00:06
>>102 ハァ?
そんなもんローカル変数未使用でコンパイル通らんよ。一瞬で気付くって(藁
もうちょっと面白い例出してよ
っと思ったけどバージョンによっては警告出さないんだった。鬱 (何しろ出くわしたことないもんで) lint使っとく?
113 :
29=31 :2001/07/06(金) 00:25
>>30 -
>>32 スゲー今更なんだけどありがとう。
まだ出来てないけど今から作成します。
>>102 >class Customerのname変数とかPointのxとかありうると思うけど。
逆に、クラス全体でnameやxが一貫した意味を持っているときに
たまたま同じ名前の変数が出てくる理由は?
setterや比較などは最初から重なると分かってるので問題ないし。
>そうじゃなくて「ほんとはnameというローカル変数が使いたいんだけど、
>たとえばタイポでString nama にしてしまったとき」にもし同名の面罵変数
>があったら困ったことになるって言う話。
class Customer {
String name;
public void setName(String nama) {
this.name = name;
}
}
こういうの? Java使いなら誰もが通る厄介な罠ではあるが、
分かっていれば2度も3度も引っかかるようなもんじゃないと思うぞ。
大規模な開発に本当に参加してる人はおらんらしい
116 :
デフォルトの名無しさん :2001/07/06(金) 01:08
あれ? メンバ変数の前に_を付けるってルールはどこの話だっけ? Javaじゃないの?
>>116 少なくともSunのコーディング規約にそんなルールはない。
118 :
デフォルトの名無しさん :2001/07/06(金) 01:18
>>114 あーそれメッチャ悩んだヨー
「どこも間違ってネーじゃん
何で null になるんだよー」
とかってサ。
5分くらいだけど
Sunのコーディング規約に従わない奴は、糞
>>115 本当にいないと思ってる? 今数えたら Java だけで
95万行、C/C++ が 8万行、その他 COBOL や VB やよく分
からん製品スクリプトがあったけど、Java はプレフィクス
使わなかったよ。一部DBのパフォーマンスが悪い部分も
あるけど正常系/異常系/負荷テスト全部通って現在使われて
いる。ちなみに俺は Java と C/C++ の部分全部レビュー
した (C/C++ は m_ つけてる会社もいた)。
>>115 が m_
付けたがってるのはただ自分が慣れてるだけでしょ。
# いや、行数で規模みる人みたいなので敢えて行数で表した
# だけだよ...。
ようやく一人?
そういやJavaのlintってないのか?
124 :
デフォルトの名無しさん :2001/07/06(金) 01:33
>メンバ変数の前に_を付けるってルールはどこの話だっけ? >Javaじゃないの? 方言かもね。 方言でも共通のルールは必要だよね。
125 :
44 :2001/07/06(金) 01:34
今ごろ帰ってきて疲れたし、すべて(36などを除く)他の方が仰っていることに激しく同意だし、
皆さんもうだうだ聞きたくないだろうけど、細かいことを2、3だけ。
>>54 =36
>負け戦・・? 全部ちゃんと出荷してんだろうが
出荷=勝利じゃない。出荷=BET上積みだ。
賭けが膨らんだところでの負けがいかに惨めかはソニーを見れば一目瞭然。
>>87 >ただ「俺のソースはわかりやすい。プレフィクス医って由!」っていうのは傲慢だと
>思うからつけてる。
何で見てもらうかというと、間違いを指摘してもらうため。
何で可読性をよくするかというと、間違いを見つけてもらいやすくするため。
もしプレフィックスを付けてなんとなく読みやすくなったとしても、
理解しにくい(関数が長い、制御が複雑など)構造的原因は取り除かれていないため、
バグを見つけにくいまま。
であれば、分かりにくいとはっきり言ってもらって、読みやすく整理して
バグを見つけてもらいやすくする方がはるかに良い。
126 :
44 :2001/07/06(金) 01:46
ま、結局
「バグは見つからなければ良い」→「可読性なんかは関係ない」
という思考が
「負け戦・・? 全部ちゃんと出荷してんだろうが」
「どうせ読みにくいならプレフィクスがあったほうがまだよみやすい。」
「長くなったからさあ小分けしましょうというコードは、
あちこちコードを追わなきゃいけいし何の処理をしてるかわかりづ
らい関数が増えて逆効果。」
という発言からにじみ出ており、36の金魚の糞ぶりを如実にあらわしているな。
ちなみに50万行のプロジェクトは言語はC++だったよ。
36の好きなヴィジュアルなんて単語はついてないけどな。
て言うか、ステップでは30万強じゃん。たいしたことないだろ。
俺は
>>119 などの意見に反発する厨房が消えればそれで充分なので、
36が戻ってこなければまた名無しさんにもどって、ゴルァと答えていきます。では
>>125 そやね。プロジェクト開始直後に上位技術者がサボってると
あとでうんこコードの大量生産になってしまう (何度か痛い目を見
た)。単なる命名規則だけでなく、クラス分割を行う規模の目安とか
うんこコンポーネント再開発にならないようなフレームワーク作り
とかサンプルコードとかを (口頭でなく) ドキュメントで残して
やる義務があると痛感している。ドキュメント化を徹底して悪い
ところを指摘してやれば Java に m_ なんて不要だよ。ちなみに
>>120 のレビューでクラス分割 or 統合させたのは 1/5 くらい
だったなか。あの規模で協力会社さんたちもなかなかうまくやっ
てくれたと思う。
>>127 すまん、あのときの赤書き見てみたら 1/5 って事はない。
赤が入ったのが 2/3 くらい、クラス分割が入ったのが 1/10
くらい (もっと少ない?) だった (あの時の赤書きは記念に
とってある ワラ)。
最近「じゃばじゃば」で知った規則。メンバ変数にpostfix _ をつける。 private String fooName_; public void setFooName(String fooName) { fooName_ = fooName; } 最初気持ち悪かったが、慣れるとイイ感じ。
130 :
39 :2001/07/06(金) 09:08
ま、糞がどんな糞コードかこうと漏れには関係ないね。 コンパイル&デコンパイルしてから読むからいいや(藁
131 :
39 :2001/07/06(金) 09:17
メンバー変数名は保存されてるけどね。 %s /_hage/hage/g でおしまいよ。
132 :
39 :2001/07/06(金) 09:21
だからさ、厨房はできればローカル変数のほうにプレフィクスつけてよね。 ローカル変数名のよい例 String 厨房用につけますよname; とかね(藁
>>114 違う、こんな感じだ。
class Customer {
String name;
public void sendLetter(Letter l) {
//いろいろ...
name = l.getName();
if (name.trim().equals("")){
name = "Default";
}
Logger.log("Sending letter is " + name);
}
}
思わずString nameを忘れることだってあるし、タイ歩だって考えられる。
確かにめったにあることじゃないけど、これに出くわしたときの被害は甚大だ。
うちのチームはこんなコーディングミス絶対に出さないっていうなら好きにすれ
ばいいと思うが。
134 :
39 :2001/07/06(金) 09:54
>>133 「うちのチームはこんなコーディングミス絶対に出さない」
こんなミスするやつなら他にもいっぱいミスがありそだね
もっと苦労話きかせてよ(w
他の言語に毒されてるね。だから使う直前に定義するんだっつーの。 そもそも名前ぶつからんよ。
>>133 単体テストで見つかりそうなもんだが。
え、やってないんですかっ!
すまん、俺が悪かった...
>単体テストで見つかりそうなもんだが。
まあ煽りならしょうがないが、本気で言ってるんだとしたら
>>102 をもう一度読んでくれ。
138 :
デフォルトの名無しさん :2001/07/06(金) 10:57
>>137 こんなプチミスすぐみつかるよ。
単体テストって一クラステストじゃないんだよ。
139 :
36 :2001/07/06(金) 11:04
44は自分ではほんのちょこっとコーディングの経験があり、あとは形だけ SEへと突入した机上バカだということが判明しているのでもうウンザリ だが >>「バグは見つからなければ良い」→「可読性なんかは関係ない」 >>という思考が 誰が言った? C++でm_つけねーのはドシロートだけだし、可読性よく するためにつけんだよ。ドアホ >>「負け戦・・? 全部ちゃんと出荷してんだろうが」 おめーのスバラシーシステムはさぞ出荷後も大評判なんでしょーよゴラァ(糞 >>どうせ読みにくいならプレフィクスがあったほうがまだよみやすい。 おめーのプレフィクスねー読みやすいコードをみせてみんかいゴラ コードみるのにいちいち仕様書みんといかんコードのどこが見やすい んじゃゴラ! >>長くなったからさあ小分けしましょうというコードは、 >>あちこちコードを追わなきゃいけいし何の処理をしてるかわかりづ >>らい関数が増えて逆効果。 これは俺だけじゃなくて言ってる人はよくいるよ。 関数化サルはコードが長くなるとすぐに関数化したがる。その結果半端な 処理単位の関数が増え汚いコードになる。そんなことも知らんのだろー おめーはこの構造化プログラミング覚えたてクソ猿が。 つーかジサクジエンもほどほどにしてくれよダンナ・・泣けるキャラだよキサマは
140 :
デフォルトの名無しさん :2001/07/06(金) 11:08
36はバカ決定。 バカは痛いところを突かれると必ず暴れるか 辞書引き小僧になるか 慇懃無礼になるなあ。
>>133 ローカル変数使うときに宣言しない奴を憂い出したらキリがないな。
VBorASP使いかい?(w
>>36 =139
つーか一生C++に引きこもってくれ(ゲラ
Java初心者が勘違いするだろが
143 :
36 :2001/07/06(金) 11:12
>>44 =140
お前は黙って辞書ひきながらプレフィクスのない仕様書かいてればよいジサクジエン猿
イタイとこなんてどこにもねーんだよあほ
痛いのはキサマじゃよ
144 :
36 :2001/07/06(金) 11:14
文字型がどうのとこ数値型どうのとかいいながら消防用システム収めててくれ・・VB君は ここはjava版だろ? VB厨房とは厨房に失礼だろ。消防未満
>>144 =36
お前は大脳の替わりにCeleron466MHzをさした方がよいと思われ。(プ
つーかJavaの本デザパタまで含めて10冊くらい読んでから同じこと言ってみろや
お前こそC++プログラマに失礼。J++でもやってろ(ワラ
147 :
デフォルトの名無しさん :2001/07/06(金) 11:49
>>133 そのミスでCustomer.nameがおかしな値に変更されうる場所といえば、
Customerクラスの中しかないでしょうが。
滅多にないだけでなく、クラス全部精査すれば
カップラーメン作ってる間に見つかるバグですな。
148 :
44 :2001/07/06(金) 12:32
はあ、メシくらいゆっくり食わせてくれよ。
>>139 >44は自分ではほんのちょこっとコーディングの経験があり、あとは形だけ
>SEへと突入した机上バカだということが判明しているのでもうウンザリ
>だが
どーも。どーせCとC++あわせて、マジメに使ってるのは10年くらいしかないですよ。
>誰が言った? C++でm_つけねーのはドシロートだけだし、可読性よく
>するためにつけんだよ。ドアホ
へー。じゃ、俺の会社にある「独習C++」って本を書いたシルト氏って、
ドシロートだったんだ。
変数名が変わったら、汚いコードも何やってるかはっきり見えるんだ。
>これは俺だけじゃなくて言ってる人はよくいるよ。
どこに? 文脈って意味わかる?
>つーかジサクジエンもほどほどにしてくれよダンナ・・泣けるキャラだよキサマは
自作自演って、どこをどう見たらそう思うんだろうね。
>こんなプチミスすぐみつかるよ。 >単体テストって一クラステストじゃないんだよ どして?sendLetter()したあとにCustomer.getName()が変更されていないことを 保証するテストをするためには膨大な指数間数的な数のテストケースを書かなく てはいけないと思うけど? >ローカル変数使うときに宣言しない奴を憂い出したらキリがないな 忘れることや間違えることはあるでしょ?という話です。 それとも「未定義のローカル変数にアクセスしました」というえらーを見 たことはないの?その時にたまたまその変数が面罵変数と同じ名前だったら そのバグを見つけられないジャン >滅多にないだけでなく、クラス全部精査すれば >カップラーメン作ってる間に見つかるバグですな そういう問題じゃないでしょ。いかにバグを予防するかを話してるんですが。
150 :
デフォルトの名無しさん :2001/07/06(金) 12:52
>>149 >忘れることや間違えることはあるでしょ?という話です。
それがメンバー変数のアタマになにか付けたらなくなるんですか?という話です。
間違えるやつはやっぱり間違えるでしょう。
151 :
44 :2001/07/06(金) 13:02
>>138 でも
>>141 でも
>>147 でもないが
>どして?sendLetter()したあとにCustomer.getName()が変更されていないことを
>保証するテストをするためには膨大な指数間数的な数のテストケースを書かなく
>てはいけないと思うけど?
そのテストケース量を少なくするために、
「関数は小さく分けましょう。」
「(バグ発見効率の高い)コードレビューしましょう。」
「そのためにはソースを見やすく、理解しやすく書きましょう。」
ということなのです。
>>ローカル変数使うときに宣言しない奴を憂い出したらキリがないな
>忘れることや間違えることはあるでしょ?という話です。
変数定義があるかないかをチェックしやすくするための
「関数は小さく分けましょう。」
「変数定義は使うところの近くで」
>>滅多にないだけでなく、クラス全部精査すれば
>>カップラーメン作ってる間に見つかるバグですな
>そういう問題じゃないでしょ。いかにバグを予防するかを話してるんですが。
クラスを小さく保っていれば、精査にかかる時間はたいしたことないでしょ。
それに精査はこれだけのためにやってるんではないのです。
>>133 のようなバグを恐れてワケワカランことする前に、
やることあるでしょ、ということです。
152 :
39=150 :2001/07/06(金) 13:16
>>151 全面的にサンセー!
メンバー変数のアタマになにかつけないといけないって、
一回嘘つくと嘘を重ねないといけないのと似ている。
153 :
デフォルトの名無しさん :2001/07/06(金) 13:35
サーブレットを使うのに、IISにTomcatをアドオンさせて使おうと思ったら アクセス時に inetinfo.exe 例外:アクセス違反(0xc0000005)、アドレス:0x011f3d50 とかいうエラーが出ます。 これにはどう対処したらよいでしょうか? リダイレクタのログ [jk_uri_worker_map.c (334)]: jk_uri_worker_map_t::uri_worker_map_close, NULL parameter [jk_uri_worker_map.c (184)]: In jk_uri_worker_map_t::uri_worker_map_free, NULL parameters
> 保証するテストをするためには膨大な指数間数的な数のテストケースを書かなく > てはいけないと思うけど? 構造化プログラミングって知ってます? (プ
>それがメンバー変数のアタマになにか付けたらなくなるんですか?という話です。 >間違えるやつはやっぱり間違えるでしょう。 アタマになにか付けとけばコンパイルでエラーになります。 >「関数は小さく分けましょう。」 >「(バグ発見効率の高い)コードレビューしましょう。」 >「そのためにはソースを見やすく、理解しやすく書きましょう。」 これらには全面的に賛成だが、なぜそれが 「面罵変数の頭に何か付けるのは止めましょう」 につながるのかがわかりません。 >そのテストケース量を少なくするために、 これは違う。あるメソッド(あるいは機能)が「望みどおりのことをする」というテ ストは容易だけど「望んでないことはしない」テストを行うのは難しい、という話です。 >変数定義があるかないかをチェックしやすくするための >「関数は小さく分けましょう。」 >「変数定義は使うところの近くで」 これも全面的に賛成。しかしそれがなぜ…以下略 >クラスを小さく保っていれば、精査にかかる時間はたいしたことないでしょ。 >それに精査はこれだけのためにやってるんではないのです。 もう一度繰り返すけど、バグが出た後どうやって原因を探すかではなくていかにバグを 出さないかの話です。 >133のようなバグを恐れてワケワカランことする前に、 >やることあるでしょ、ということです。 もちろんです。そのやることをやった後にm_しましょうってことです
>>36 は C/C++ から Java に移った人の典型的なツボにはまっていると思うよ。
結構、
C で言うモジュール == クラス
C で言う関数 == メソッド
みたいに認識している人を見かけるんだけど、クラス設計する場合は C の
モジュールよりももっと粒度を高くするのが普通だよ (モジュールって呼び
方でよかったんだっけ? static 変数/関数のスコープ範囲ね)。C の
モジュール規模のクラスを書くような人だったら m_ を付けたくなるのも
もっともだと思う。
>>36 は次のプロジェクトでもっとクラスの粒度高めて
みたら? そして俺は自作自演と言われるのが嫌いだから初めて fusianasan
を使ってみる。うまくいくかな。
>もう一度繰り返すけど、バグが出た後どうやって原因を探すかではなくていかにバグを >出さないかの話です。 めったに起こらない、出てもすぐに判明する ただ一種類のポカミスのために ソースコード全体にprefixを導入する そのバランス感覚に疑問を抱かざるをえないのですが。
158 :
39 :2001/07/06(金) 14:09
>>155 >アタマになにか付けとけばコンパイルでエラーになります。
この例に限ればそうですよ。ただしこんな間違いするやつなら
m_nameと書くべきとこをnameとかいたりその逆やったりしそう
ってこといいたかったんだけど。
いずれにせよ、原因はもとから断たないとだめですよ。ってことを
みんないいたいんだと思うなー。m_をつけるなんてセンス悪すぎ。
>滅多にないだけでなく、クラス全部精査すれば >カップラーメン作ってる間に見つかるバグですな。 ついでにクラスのリファクタリングもやればエレガントね。
>めったに起こらない、出てもすぐに判明する ちがう。バグが発生してからでは遅いんだ。バグがそれほど高く付か ないシステムならいいかもしれんが、人命に関わったり莫大な損害を 出したりすることもあるんだよ。 >この例に限ればそうですよ。ただしこんな間違いするやつなら >m_nameと書くべきとこをnameとかいたりその逆やったりしそう >ってこといいたかったんだけど。 繰り返しになるけどあなたは「未定義のローカル変数にアクセスした」 コンパイルエラーを出したことないの? どんなベテランだってこのエラーは出すと思うけど。 そして運良くエラーになったのはたまたま同名の面罵変数が存在しなかった からでそ。 >いずれにせよ、原因はもとから断たないとだめですよ。ってことを >みんないいたいんだと思うなー。m_をつけるなんてセンス悪すぎ。 そうだ。原因は明示的に書かなくても面罵変数にアクセスできてしま うことだ。これをもとから絶つのに最もコストが低い手段はm_だと思う。
161 :
39 :2001/07/06(金) 15:40
>>160 >繰り返しになるけどあなたは「未定義のローカル変数にアクセスした」
>コンパイルエラーを出したことないの?
憶えている範囲ではないなー。
>そして運良くエラーになったのはたまたま同名の面罵変数が存在しなかったからでそ。
運じゃないよ、必然なんだよ。
メンバー変数と同名のローカル変数なんて使わないよ。
>原因は明示的に書かなくても面罵変数にアクセスできてしまうことだ。
そんなクラスローカルで済むプチバグなんて出してもすぐわかるんですよ。
だいたいローカル変数なんてほんとに局在しかしないものだよ。
あなたさー、イミュータブルって知ってる?
他にもっと考えないといけないことがあるんだけど。
> ちがう。バグが発生してからでは遅いんだ。バグがそれほど高く付か > ないシステムならいいかもしれんが、人命に関わったり莫大な損害を > 出したりすることもあるんだよ。 何のためにテスト期間があるのですか? テスト期間中にバグを発見する ことはそんなにまずいことですか? > 繰り返しになるけどあなたは「未定義のローカル変数にアクセスした」 > … ここは論議がかみ合っていない。 > そうだ。原因は明示的に書かなくても面罵変数にアクセスできてしま > うことだ。これをもとから絶つのに最もコストが低い手段はm_だと思う。 少々暴走気味ですね。m_ 反対派は、タイポミスによって特定困難なバグが 入り込むのはクラスの設計が悪いのでは? と言っています。m_ のは決して プロジェクト全体のコスト (というかリスク) を低くするものではありま せん。 とりあえず、もう少し冷静になられたほうが良いかと思われます。
そっかーメンバ変数にm_をつけるのはいいアイデアかもね。 ローカル変数にはl_をつけるのもいいかも。 引数の変数には何をつけようかな・・・h_とかでいいかなぁ。
164 :
39 :2001/07/06(金) 15:48
>>160 もしかして、あなたの仕事ってCからJavaへの移植がおおいんじゃない?
165 :
デフォルトの名無しさん :2001/07/06(金) 15:56
m_ なんて書いてるとソースが汚くなって可読性が悪くなり、 別の意味においてバグが入りやすくなる。それを考慮しないで m_ 付けとけばコンパイル時にエラーが検出できるなんていっても 無意味だね。 というか私が見た限りでは m_ 付けてる奴が作るクラスはバカでかい。 これじゃどんなメンバ変数作ったか覚えられないのも無理はない。 つまり設計が悪いってことだ。
やっぱハンドルはこうでなくっちゃ
すまん、ちょっと表現を訂正させて。
>>162 タイポミスによって特定困難なバグが入り込むのは…
タイポミスによって入り込んだバグが特定困難な状況というのは…
168 :
39 :2001/07/06(金) 16:03
>>160 まあメンバー変数名にm_を付ける規約を絶対だめとはいいませんよ。
ローカル変数にl_を付けるほうがまだましとは思いますが。
もちろん私はどちらも付けません。読みにくくなりますから。
大切なのはそのクラスがクラス外に見せるインターフェイスですからね。
きちんとしたクラス名、インターフェイス名さえ守っていただけたら、
そのクラス内でどんな変数名をつけようが大した問題ではないですね。
もちろんメンバー変数をクラスの外から直接さわらせたりしてませんよね?
1. Customer.name の例のように面罵変数とローカル変数が同名になることはある 2. ベテランでも「未定義のローカル変数にアクセス」エラーは出すことがある。 この2つは前提だ。もし違うというのなら俺の論理は成り立たないし それが俺の厨房度のせいだというなら甘んじて受けよう。 そしてこれが俺の主張だ。 3. 1,2の組み合わせによって生じたバグは 「望んでいないことをする(しかし望んでいることはちゃんとする)」 タイプのバグで通常の 「望んでいることをするかどうかのテスト」 ではみつけられる保証が無い 4. 従って特にバグが高く付くシステムではこの種のバグを完全に防ぐためにm_ もしくはそれに類する命名規約を採用するべきだ。
170 :
h_デフォルトの名無しさん :2001/07/06(金) 16:25
そうだ、ローカル変数に m_ を使いたくなるかもしれないから メンバ変数には m_m_ を付けとこう。我ながらいいアイデアだな。
でもさ、たとえば、Cのプログラムを書いているときに わかりやすくなるように構造体のtypedefは _t をつけたり ポインタには _p をつけたりするじゃん。 もちろん自分のためというのもあるけど、どちらかというと 一見さんであるレビュアーに見せたときに ソースレビュー時にケアレスミスを発見しやすくするため、 という意味合いの方が強いな。
172 :
39 :2001/07/06(金) 16:28
>>169 >1. Customer.name の例のように面罵変数とローカル変数が同名になることはある
ないな。
>4.従って特にバグが高く付くシステムではこの種のバグを完全に防ぐためにm_
>もしくはそれに類する命名規約を採用するべきだ。
なぜローカル変数にl_をつけるほうを採用しようとしないの?
>>172 それは、たとえば引数
hoge( String name )
なんていうのを
hoge( String l_name )
とすることを奨励しているととらえていいのね?
m_をつけることでソースが汚くなるといってる人はそれこそなんの根拠があって言ってるんだろう? ローカル変数とメンバ変数の名前が重なる代表例は設定メソッドだろう 例えばimageというメンバ変数があって、SetImageというメソッドがあれば、引数はSetImage(Image image) としたくなるのが普通ではないか? this.image = image と書くよりは m_image = image と書いたほうが楽だろう。 100歩ゆずって設計が悪いからクラスが大きくなってm_を使う必要がでてしまうのだとしても、 そーいうクラスをつくってしまう場合がある以上m_をつかっておいて損はないだろう ちなみにCやCプラでは引数のプレフィクスにはa_(argument)やin_(input)をよく使う ある程度CやCプラの開発をしたことがある人ならこれくらい見たことがあると思うが? 社内でセコセコ小さなプログラマムだけ組んでいるなら別だが・・
175 :
39 :2001/07/06(金) 16:38
>なぜローカル変数にl_をつけるほうを採用しようとしないの? ローカル変数のほうが宣言する回数が多いからに決まってる それにm_をつける文化ができたのはシープラで、シープラにはグローバル変数 もあるから、ローカル以外にg_かm_かを区別する必要があったというのもある だろうけど
メンバ変数にm_をつけるというのは便利だね。 ちょっとこれを機会にC++も勉強して いいところだけいただいておこう
178 :
デフォルトの名無しさん :2001/07/06(金) 16:48
あのー TOMCATが生成してくれるServlet.logなんですがー 出力フォーマットを変更するにはー どうしたらー 時刻を24時間制で出力したいのですー
179 :
39 :2001/07/06(金) 16:53
>>176 >ローカル変数のほうが宣言する回数が多いからに決まってる
ふーん、じゃあなたのソースは短い名前が多いんだろうね。
iアプリの担当なのかな、あなたは(藁
>>179 意味不明。なにが言いたいの?
メンバ変数は場合によってはゼロ個のこともあるけど、ローカル変数は
がんがん使うでしょ。ここまで書かないとわからないかな
ちなみに私がつける名前は比較的長い。可読性を重視してるから。
CTime StartTime;
のように。
m_をつけるのがいやだという人はブラインドタッチが苦手でm_を一瞬で打てないから
いやがってるんじゃないかという気もする
181 :
デフォルトの名無しさん :2001/07/06(金) 17:02
>>174 プリフィックスが mennba_hensuu_ だったら汚くなると思うだろ?
その 1/7 くらい汚いと思えばいい。
>100歩ゆずって設計が悪いからクラスが大きくなってm_を使う必要>がでてしまうのだとしても、
設計しなおせ。
>>174 まったくの主観。m_を普段使っている人の目からみるとローカルもメンバ
もいっしょくたにしているほうが汚い。そもそもm_をつけるアイデアはたぶんVC
からで、何もしらない頃はみんなm_なぞ使ってなくて「なんか不便だな」
と思っていたわけだ
>>設計しなおせ
あなたはすべての部分を自分で設計できる小さな世界でソフトをつくってきた人なんだね・・
お好きにどうぞ
183 :
39 :2001/07/06(金) 17:08
>>180 タイプ数が多くなることがローカル変数に l_をつけない理由っていうからさ
面倒くさがりやさんかなって思ってね。
わるいけど、もう帰るよ。彼女と焼き肉の予定なんでね、今夜は。
またこんど遊ぼうね。
>>174 > m_をつけることでソースが汚くなるといってる人はそれこそなんの
> 根拠があって言ってるんだろう?
何かがきれい汚いと感じるのは個人的な感覚の問題だけでしょう。少
なくとも私は根拠がありません。言ってみれば趣味ですね。
> this.image = image
> と書くよりは
> m_image = image
> と書いたほうが楽だろう。
そしてこれはあなたの趣味ですね。私は this.image の方がきれいに
感じますので (よく Thread クラスで if(this.isInterrupted())
とかきれいに感じます)。
> 100歩ゆずって設計が悪いからクラスが大きくなってm_を使う
> 必要がでてしまうのだとしても、そーいうクラスをつくってしま
> う場合がある以上
そこを反対派はつついているわけですよ。
> m_をつかっておいて損はないだろう
いくつかのクラスのために数十人に徹底させるのはどうかと思われます。
たまにはアゲときます。
class { class { public: // すべてのメンバ変数 } m; } ほらこーすれば m_ を付けなくてもローカル変数とかぶらないよ。 代わりに m. だよ。メンバ変数の一括コピーも簡単さ。
188 :
デフォルトの名無しさん :2001/07/06(金) 17:44
>>174 >this.image = image
>と書くよりは
>m_image = image
>と書いたほうが楽だろう。
こんな事言い出すやつは一生多態を理解できねんだろな。
識別子にへんなもん足すな、ヴォケ
そういえば C++ に namespace がなかった頃は
>>186 みたいな
方法で名前空間切ってたのを思い出した。いや、ただそれだけだけど。
191 :
デフォルトの名無しさん :2001/07/06(金) 19:13
昔の話だが THINK-C のクラスライブラリは確かメンバ変数が its で 始まっていた。例えば itsFile みたいに。これは結構好きだったな。 m_File なんて命名は知性のかけらも感じない。
いっそのことthisはどうだ? thisValue = value; this.thisValue = value; とか
>>192 なんか myParameter みたいでやだな...
俺も一時 myFile とか書いてみたことがある。 でも恥ずかしくなってやめた。
フィールド名に m_ などというプレフィックスをつけるというのは、粋じゃないんだよな。 純粋にクラスの属性としてフィールド名を見た場合、 class Person { String m_name; } name (名前) が本来なのに m_name (メンバの名前) などと書かなくてはいけないのは冗長であり不純だ。
196 :
デフォルトの名無しさん :2001/07/06(金) 20:15
>>195 そうなってくると、ローカル変数に l_ をつけるのは
わりといいアイデアだね。
m_ をつけるのはやめて、そっちを採用します
というか、論外だよ。 参考書最初から読み直せ>>m_派の奴 MSの仕様をJavaに持ち込むなよ。
だから・・メソッドの使い回しやリサイクル、果てはオブジェクト指向 の観点から言って、個人の主張をごり押しするなよ・・ ローカル変数には何も付けないのがいいんだよ localValue で頭が小文字で次の単語が大文字であれば変数で、thisが 付けばグローバル変数を見ることになってるんだからよ~ いい加減C++の枠を越えろよ・・
199 :
デフォルトの名無しさん :2001/07/06(金) 20:31
メンバ変数に name_ のように _ をつけることを推奨している本もあります。 その本ではクラス変数には __ (_を2つ)つけることを推奨してます。 privateなメソッドには先頭に _ をつけたりもしています。
ふーん。 そのJavaの参考書の表紙には勿論Sunのロゴは入ってるんだよね?
201 :
199 :2001/07/06(金) 20:54
>>200 入ってるわけ無いじゃーん
てゆーか、そんなの読みとばすっしょ、ふつー。
他には結構いいこと書いてあるんだけどね・・・
すげー使えるテクと全然使えない情報がこんぜん一体となって
実に中途半端な本になってますよ。
え、本の名前は秘密だよ。でもヒントはね~
「ハローワールドがいっぱい書いてある本」
202 :
名無しさん :2001/07/06(金) 20:55
>>196 ていうか、
そういう小手先の手段を使わないと解読できんほど
長いメソッドを書くのは止めれ。
m_とかl_とか言ってる奴とは絶対一緒に仕事したくないな どうせ他の局面でも標準に沿わずに自分の好みをゴリ押しするんだろ
synchronized ブロック直前で停止しているスレッドに割り込みを かけても InterruptedException を発生しない仕様にした理由が 未だに分からん。なんか懸念することあるのかな?
それは誰がcatchするの?
206 :
デフォルトの名無しさん :2001/07/06(金) 22:16
36は120を見習ってfusianasanを使え。 もちろん会社のアドレスからナー。36の会社の受注が増えるかもよ。ププ。
grep m_ * | wc してみてほしいなあ。その50万行の中にいくつみつかるか。
>>205 うん、InterruptedException を発生させると synchronized
ブロックやメソッド使っているあらゆるところ (多分相当な量)
で try-catch もしくは throws を入れなければならないので、
RuntimeException を派生させた SyncInterruptedException
(変な名前) の方が良い。で、synchronized ブロックでデッド
ロックがかかっている (らしい) スレッドを外部のタイマース
レッドから割り込みかけるような使い方が出来ないよね、という
話 (stop()-ThreadDeath 使って解決しろということかな…)。
>>172 >1. Customer.name の例のように面罵変数とローカル変数が同名になることはある
>ないな。
はぁ。君にかかるとJDKも厨房なんだね。(確かにたいしたことないが)
java.io.File:471とか
java.lang.FloatingDecimal:289,668,1007
とかちょっと調べただけでもぞろぞろ出てきたぞ。(jdk1.2)
でもさそんなことよりString.java読んでて思ったんだけど、どう考えたってm_
(d_でもなんでも)使ったほうが読みやすいよ。m_使わないなら
・メンバにアクセスするときは必ずthisを使う
・もしくは必ずアクセッサ使う
とかしてくれないととてもレビューできません。
210 :
デフォルトの名無しさん :2001/07/06(金) 23:50
class Customer { String name = ""; public void setName(String nama) { this.name = name; } } これってだめですか?
211 :
デフォルトの名無しさん :2001/07/06(金) 23:55
>>210 読みにくいからダメです!
バグの元です!
今すぐ修正しなさい!
今すぐm_をつけなさい!
コーディング規約? 私が規約です!
nama・・・生
>>209 キミがprefixに慣れてるだけだと断言しましょう。
>でもさそんなことよりString.java読んでて思ったんだけど、どう考えたってm_ >(d_でもなんでも)使ったほうが読みやすいよ。 Stringクラスのstaticでないメンバ変数は以下のたった4つ。 >private char value[]; >private int offset; >private int count; >private int hash = 0; こいつらにプリフィックスがついたりつかなかったりで 何がどう変わるとゆーのだ?? レビューできないって一体?? とてつもなくぬるま湯な世界で生きとるとしか思えませんな。
s/staticでない// あー、ねみー。
つけてはならない理由:「よみにくい」「センス悪い」「とにかく不要」 「つける必要があると感じた時点で設計を見直すべき」 つけない理由:「Sunマンセー」「困ったことが無い」「自分の趣味」 「どう考えたって読みやすい」 つける理由:「見誤りを防ぎやすい」「名前がかぶることがない」 「ケアレスミスを防ぐ最もコストが低い手段」 つけなければならない理由:「よみにくい」 美しい/センス悪い/お前が慣れてるだけだ 等の鳥頭厨房的発言は、"つけない"派に多いようです。 プログラム言語に 使われ ちゃってる人って哀れだね 藁 なーんて言われないような、まともな意見をお願いしたいところです。
217 :
デフォルトの名無しさん :2001/07/07(土) 00:26
countやoffsetなんてありふれた名前が・・・
218 :
>216 :2001/07/07(土) 00:42
メンバ変数はクラスの命のようなもの。だからメソッドを読むときには それらは頭に叩き込まれてるはずである。だからありふれた名前でも 問題ない。いうなればクラス内の予約語のようなものだ。 「あれ、この変数はなんだっけ? m_ が付いてるからメンバ変数には 違いないが...」なんていう読み方はありえない。
>>216 ソースレビューする時ってjavadocを印刷したの片手にするから
そんな心配ないよ
一言で言えば、Javaのコーディング慣習を破ってまでするほど効果がない。
>>216 つけてはならん理由はコーディング規約に違反してるから、だろ
外部とか別のプロジェクトの作ったクラス再利用する時どうすんだ?全部m_振りなおすのか?
そう、クラスと設計方法に問題がある場合が多い。(m_ 高々3kBの ファイルにm_ なんて付けてそれがローカルとメンバの区別も付かない奴は おかしい..継承やパッケージングが行えるのに、何千行もあるクラスを書い ていれば区別つかなくなって当たり前さ。もちろん継承がいやなら、 断ち切るためにパターンもも色々ある。 > 217 > 説明しよう。通常はメンバには長い名前が必要だ. public methodでは、さらに顕著だが、これは継承による弊害。 つまり本来継承すべきではないインタフェスが多重継承の再来として 混乱を招く恐れがある。...えっなに???... (名前を考えるのが面倒だって!?) 私の師は、こういって(h)ageタモのだ。 「変数に名前を付ける、メソッドに、クラスに、パッケージに、さらに名無し のものにも..そしてあらゆる次元に展開させ、そしてその名を呼ぶ。 そう、君の仕事はまさしくそれだ、真の長い名前を唱えなさい...」
>>216 自分の都合の良いところだけ拾って、ご愁傷様...。
> なーんて言われないような、まともな意見をお願い
> したいところです。
>>120 は結構まともに話しようとしているけど、それには
一度も反論できてないね (プ
225 :
デフォルトの名無しさん :2001/07/07(土) 03:06
くだらない事ほど盛りあがるね。
226 :
44 :2001/07/07(土) 05:56
227 :
44 :2001/07/07(土) 06:02
>>160 >>158 に対する反論
>>この例に限ればそうですよ。ただしこんな間違いするやつなら
>>m_nameと書くべきとこをnameとかいたりその逆やったりしそう
>>>ってこといいたかったんだけど。
>>繰り返しになるけどあなたは「未定義のローカル変数にアクセスした」
>コンパイルエラーを出したことないの?
>どんなベテランだってこのエラーは出すと思うけど。
>そして運良くエラーになったのはたまたま同名の面罵変数が存在しなかった
>からでそ。
というのは違うんじゃないかと思うのだが。
countに代入すべきところをポカミスでm_countに代入してしまったというミスの確率は、
int count;をint coutn;と書いてしまってエラーが出ないというのと比べて
そんなに低いだろうか?
後者の防ぎ方は
>>209 が例としてあげたjava.util.Stringに良い例があった。
例えばtoLowerCase()では、
int len = count;
int off = offset;
char[] val = value;
とある。メンバ変数には正しい単語を、ローカル変数には略称を使うという方法。
これにより、m_の有無で区別するのと同様の効果がある。
228 :
44 :2001/07/07(土) 06:04
で、こちらのほうが良い理由が1つある。
プログラミングに疎い人がコードレビューに参加したとき、
m_count / count の別よりも count / len の別のほうが理解しやすいということ。
>>160 は
>ちがう。バグが発生してからでは遅いんだ。バグがそれほど高く付か
>ないシステムならいいかもしれんが、人命に関わったり莫大な損害を
>出したりすることもあるんだよ。
と書いているが、このようなプログラムを扱う会社であれば、
品質保証専門の部署があるだろう。その部署の人間はプログラムには疎いだろうが、
品質保証部門の人にコードレビューに参加してもらうと、鋭い指摘をして
もらえるそうだ。まあ、品質保証の人間は、ミスを見つけるプロだから、
指摘が鋭いのは当然だろう。(もちろんある程度の知識は必要だし、コードには
充分な量のコメントがあるべきだが、コンピュータに不慣れなわけではないし、
typoや代入ミスやロジックの矛盾を指摘するために必要な知識はそう多くないし、
人命にかかわるようなコードにはコメントがたくさんあるだろう。)
そのような人間にすんなりと理解させるためにはどちらが有利だろうか。
自然言語に近いほうではないか。m_が不自然という主張は、
こういう問題にリンクしていると俺は思うが。
229 :
44 :2001/07/07(土) 06:07
そのような人間にすんなりと理解させるためにはどちらが有利だろうか。
自然言語に近いほうではないか。m_が不自然という主張は、
こういう問題にリンクしていると俺は思っている。
「コードレビューにプログラミングを分からん奴を入れるかゴルァ」
というヤツも多いだろうが、
>>160 の
>人命に関わったり莫大な損害を出したりすることもあるんだよ。
という言葉を受けてのことだ。この場合、人間は多く、多様なほど良い。
それに、これは会社の勉強会の事例報告の受け売りだが、コード規約にも
The choice of a variable name should be mnemonic- that is, designed to
indicate to the casual observer the intent of its use.
と書いているYO!
>>104 プラス、this.valueを.valueに省略できれば解決ですネ!
クラスの再利用性に乏しいから m_ の仕様は厳禁! そう言う奴はVJ++買って 好きなだけMSの仕様使ってExe作って友達に配布してろ
233 :
デフォルトの名無しさん :2001/07/07(土) 10:45
おれのメソッドは長くて10行くらいだから、 ローカルと面罵をまちがえることないよ クラスもせいぜい200行くらい。 面罵も多くても20くらい。 m_ なひとってメソッドが長すぎるんじゃないの?
234 :
デフォルトの名無しさん :2001/07/07(土) 11:00
なんでメンバフィールド名が気になるの? メンバフィールドが全部privateで、メンバメソッドはちゃんと 分割して10行程度ずつにしておけば、どんな名前ついていても 問題ないとおもわれるが? 外部にメンバフィールド晒すなんて真似を、まずやめれ。
>どんな名前ついていても問題ないとおもわれるが? どんな名前でも同じことなら、 prefixなどつけず必要最小限の命名をするのがベストだわな。
236 :
216 :2001/07/07(土) 12:59
Sunのコード規約だから
なんていう思考停止な意見が減ってきて喜ばしい限りです。
>>218 その他
「間違うことは無い」がやたら多いですね。
人の認識能力ほどあやふやなものはないのでは。
あやふやであれば、間違いにくくすればいいんですが、
(各種方法はあるとして)
>>44 ,228,229
prefixやpostfixや名前の付け方によって理解しやすさに差があるとのことですが、
その差についての根拠が見当たりません。
アンケート調査でも、心理学の実験でもなんでもいいから、ありませんか?
>>224 120は命名方法については「つける必要はない」としか言ってないようです。
つけてはならない、と主張してました?
237 :
デフォルトの名無しさん :2001/07/07(土) 13:13
つーか "this." つけろやゴルア!  ̄ ̄ ̄ ̄ ̄
>>218 は「間違うことは無い」じゃないでしょうが。
Sun のコード規約をわざわざ破らなければいけないのか分からない。 既に世にある Java のコードはそれに沿ったものが大部分だ。 Java プログラマにとって見慣れたコードであることだ。 今更 m_ prefix を付ける習慣など普及してほしくない。 何故なら見慣れない読みにくいコードだからだ。 C++ において m_ prefix が主流であるならそれはそれでいい。 だが、Java にそのまま持ち込もうとするな。
そんなに typo が気になるなら、何度も言われているように、 「フィールドへの代入には this. を必ずつけること」 で済む話だよな。
>「間違うことは無い」がやたら多いですね。 >人の認識能力ほどあやふやなものはないのでは。 そんなこと言われても、実際にあなた方m_派もおっしゃっている通り 滅多にないバグなんだからしょうがないです。出てもすぐ解決するし。 変数名に余計な文字をつける不自然さと天秤にかけて、 必要なしと判断しているだけ。 #不自然さは感覚的厨房的? #いえいえ、良質なコードを書くには感覚は重要ではありませんか。 というか、ずっと思ってるんですが、m_なんか使ってるから メンバ変数を壊している可能性がスッポリ頭の中から抜け落ちたり、 ローカル変数との区別を一目でつけられなくなったりして 本来なら些細なバグにてこずるハメになってるんじゃないですか? で、ますますm_依存症、m_がないとコーディングできないし レビューもできないなんて有様になると。 鶏と卵、プリフィックス・スパイラルとでも申しましょうか。 世の中にあるのはm_がついてくるコードだけじゃないし、 特にJavaではついてこないコードが大多数を占めるわけで、 とても不幸な悪循環に落ち込んでいるように思えます。率直に言って。
243 :
デフォルトの名無しさん :2001/07/07(土) 14:29
メンバ変数というのはメソッド中に頻繁に登場する変数である。 もちろんローカル変数よりも多い。そうでない場合は設計がまずい。 だからなるべく読みやすい名前を使うべきだ。間違ってもおかしな プリフィックスなど付けてはならない。 メンバ変数が頻繁に参照されない場合というのは、大抵メンバ変数に 対する put/get メソッドが用意されている。それ以外の部分では 全く参照されていない。そのようなコードを書く者はそれが正しい オブジェクト指向なのだと勘違いしているのだ。
このスレのせいで昨日見た悪夢 class C0 { int m_1, m_2, m_3, m_4; char *m_5_p; }
mはmasochistのm.
247 :
デフォルトの名無しさん :2001/07/07(土) 18:58
テキストフィールドに入力された文字を parseInt()で整数に直すときに、整数以外を入力するとエラーがでてしまうので 入力された文字を整数に直すまえに整数かどうかを確かめる 方法はあるのでしょうか?
250 :
デフォルトの名無しさん :2001/07/07(土) 19:21
>>247 parseIntで確かめましょう...?
boolean success = true;
try {
Interger.parseInt(text);
} catch (NumberFormatException ex) {
success = false;
}
if (success) {
d = Integer.parseInt(text);
}
251 :
デフォルトの名無しさん :2001/07/07(土) 19:38
>>250 意図はそれしかないだろうけど、
そういうのは厨房コードといわれちゃうよ。
try-catchの意味分かっていないといわれちゃう。
try{
func(Integer.parseInt(textfield.getText()));
//func(int)が対象の処理
}
catch(NumberFormatException e){
JOptionPane.showMessageDialog(null,"入力まちがってますよ");
//ユーザに通知
}
>>227 >countに代入すべきところをポカミスでm_countに代入してしまったというミスの確率は、
このミスは一定レベルの人間ならまずないと思う。(俺はしない自信がある)
int count;
m_count = SomeThing.getCount(); //ここでミス
if (count < XXX){
...
この場合ローカルのcountは代入されなかったのだからそのあとにcountを参照している
コードが「望むことを行わない」タイプのバグになりそれこそ容易に発見されるだろう
しかしこれは考えさせられる問題だ。反論求む
>とある。メンバ変数には正しい単語を、ローカル変数には略称を使うという方法。
>これにより、m_の有無で区別するのと同様の効果がある。
まさしくその通り、
>>169 の3で述べたように
「ローカル変数とメンバ変数のアクセスには区別された方法を使うべきだ」
には賛成してくれるのか?
>>228 >で、こちらのほうが良い理由が1つある。
>プログラミングに疎い人がコードレビューに参加したとき、
>m_count / count の別よりも count / len の別のほうが理解しやすいということ。
なんつうかこれもアンフェア。「すべてのローカル変数には省略形が用いられている」
という規約でもない限り count / count で文脈によって判断しろ!になってしまう。
あなたが言ってるようにm_につながる問題であることは認める
return start - offset + 1
なんていう文を見たときにoffsetはメンバでstartはローカル。なんてつらすぎるよ
「ねぇ小柳君、このoffsetっていうのはメンバにアクセスしているみたいだけど、
それはいいんだよね?」
(誰かが行っていたように俺はぬるま湯につかりすぎているのだろう)
>「コードレビューにプログラミングを分からん奴を入れるかゴルァ」
>というヤツも多いだろうが、
>>160 の
>>人命に関わったり莫大な損害を出したりすることもあるんだよ。
>という言葉を受けてのことだ。この場合、人間は多く、多様なほど良い。
ここまでくると屁理屈だぞ。あなたはちゃんと議論してくれているんだから
ここはとりあえず忘れることにする
>>241 >そんなに typo が気になるなら、何度も言われているように、
>「フィールドへの代入には this. を必ずつけること」で済む話だよな。
これが強制力を持っているのなら俺も問題にしない。
ローカル変数にアクセスするつもりで間違ってメンバにアクセスしてしまうのだから
this.をつけろと言う規約は
>>169 のバグを防ぐ目的では役に立たない。
これは他の人へ
Sunのコード規約ではm_を禁止していないように見えるが。
違反していると言う人はぜひその根拠を示して欲しい。
(ついでにその根拠だとなぜSwingのJXxxxが許されるのかも)
ちなみにうちはm_を使っているがどうどうとSunのコーディング規約に準拠して
いるといっている。
255 :
デフォルトの名無しさん :2001/07/07(土) 22:24
ねえねえ、Servletってのが流行ってるみたいだけど、 どうしてAppletってすたれちゃったの? 遅いから?
256 :
デフォルトの名無しさん :2001/07/07(土) 22:27
>>255 ブラウザ作ってるところがまともなJVM実装してくれなかったからだよ。
257 :
デフォルトの名無しさん :2001/07/07(土) 22:32
>>255 1.M$(IE)が、確信犯で嫌がらせしている。
2.Netscapeが、アホナJVMをNCに組み込んで、
Applet=使えないの図式をすっかり定着させちゃった。
この二つがおもな原因。
Part 4 立てる人は m_ ネタは禁止、と入れといてくれ。
>>257 3.サンドボックス分かってない厨房が何も出来ないと騒いだ。
260 :
デフォルトの名無しさん :2001/07/07(土) 23:00
代替の技術ができたからじゃないの
261 :
デフォルトの名無しさん :2001/07/07(土) 23:02
アセンブラはおろかCすらしらない低レベル厨房です JavaVMのお勉強によいWebリソースありますか? 英語はよめます
>>261 まず、アセンブラとCを勉強してください。
これらはJavaVMを勉強するにあたり最低限の知識として必要です。
なぜなら、JavaVMはそれらで作られているのですから・・・
>>226 >JDK1.3には1つもねーよ
・・・頼む卑劣なうそは止めてくれ・・・
java.lang.FloatingDecimal:285,664,1002
java.io.File:470
に行番号変わってるけどそのまま残ってる
にせものの44であることを祈る
264 :
247 :2001/07/07(土) 23:45
>>250 ,251
ご指南ありがとうございました。
無事できました。
265 :
44 :2001/07/07(土) 23:48
>>263 簡単なことなので、ここにだけ返答する。
俺の今見ているのは、Win32プラットフォーム用のSDK ビルド1.3.0-C
java.lang.FloatingDecimal:
285: char digits[];
664: char digits[] = this.digits = new char[18];
1002: char[] digits = new char[ l ];
java.io.File:
470: String path = getAbsolutePath();
となっている。
他のプラットフォームでは、今は残念ながら確認できない。(Linux機が不調で…)
したがって、Win32用ではないといえるが、別のプラットフォームにないとは言えない。
プラットフォームを書かなかった点は申し訳ない。
残りは風呂上りにゆっくり読んで検討したい。
>>265 他のプラットフォームでは って、プラットフォームごとにAPIのソースって
変わるのか?
267 :
デフォルトの名無しさん :2001/07/08(日) 00:01
>>266 nativeメソッドの内部実装はプラットホームごとに変わるだろうけど、
その上を変える必要なんか無いと思われるが…
>>266 配布元で変わるな。Sun と IBM じゃ IBM のほうが
バグフィクスを進めてるのでコードが変わってる。
269 :
44 :2001/07/08(日) 00:05
あ、メンバ変数とローカル変数の名前が一致しているという話か。 m_が付いているかと言う話かと思っていた。 俺はSetterでは同じにすることが多いので、一致しているのは絶対にダメとは思っていない。 流れを読んでなくてすまん。 それから、java.lang.FloatingDecimal:664はたしかにダメだな。
270 :
255 :2001/07/08(日) 00:37
Appletに関してレスくれた人サンキュ。 チャットとか画像掲示板とかサーバの状況表示なんかは、代替の技術ってないですよね。 そだ、質問。 IE4.0上でAppletからJavaScriptのfunctionを呼ぶにはどうしたらできますか?
271 :
250 :2001/07/08(日) 03:53
>>251 250はジョークのつもりだったけど、
そういうツッコミ期待してたからナイスです。
>>247 も例外を使うスマートさを理解してくれたと思う。
けど、
>>247 みたいに例外を探し忘れちゃう気持ちも結構わかる。
自分の想定していることが、必ずしも例外的な状況でなかったら
methodが投げる例外に注意が逝かないこともある。
Javaだとsignatureにthrowsがあるから普通気付くけどね。
instanceofしてからダウンキャストしたくなる状況に似てるかも。
272 :
44 :2001/07/08(日) 04:46
まず、
>>228 では例が少し不適当だった。m_value/valueとvalue/valを
比較すべきだった。この点については謝らせてもらう。(ダメダメだな)
が、
>>253 を見る限り大意は伝わっているようなので、
今後はこちらの例を使用して、議論を続けたい。
>>252 「メンバ変数とローカル変数と同じ(ような)名前をつけることがある」
「その場合でもメンバ変数とローカル変数の名前は明確に区別したほうが良い」
というのは同意できる。
ただ、実際にはメンバ変数と同名のローカル変数を使う状況はどのような
状況だろうかと検討してみると、かなり限定されている、具体的には
「メンバ変数とローカル変数は同じ属性をあらわしており
(恐らく実際の値と計算中の値)、両者を混在して扱うことはない
(恐らく初期化と最後の格納の高々2回)」という状況であると考えられる。
そうでないと、変数名が変数の意味を正しく表現していないと思われ。
したがって、
> int count;
> m_count = SomeThing.getCount(); //ここでミス
> if (count < XXX){
> ...
のcountはsomeThingCountであるべき。
「名前が悪い」議論に戻ってしまったな。
273 :
44 :2001/07/08(日) 04:49
>>253 >なんつうかこれもアンフェア。「すべてのローカル変数には省略形が用いられている」
>という規約でもない限り count / count で文脈によって判断しろ!になってしまう。
はっきり言うと、その通りだ。文脈で判断すべき。変数名は自然言語でついて
いるのだから。ただ、上で述べたとおり、同じ名前のメンバ変数とローカル変数が
混在する状況は変数名のつけ方がおかしいか、勘違いかtypoなど単純ミスのどちらか。
で、 value の中で m_value を見つける労力と val の中で value を見つける
労力は同じだろう。
>return start - offset + 1
>なんていう文を見たときにoffsetはメンバでstartはローカル。なんてつらすぎるよ
区別する必要ないと思うが。片やあらかじめ保存されている属性、
片やそこから導出や測定が必要だった属性の違いであり、
ともにそのオブジェクトの属性であることには変わりはない。
>>>人命に関わったり莫大な損害を出したりすることもあるんだよ。
>>という言葉を受けてのことだ。この場合、人間は多く、多様なほど良い。
>ここまでくると屁理屈だぞ。
そうかな? 今後、ソフトウェア品質保証の規格化と取得要求が進むにつれて、
ハードウェア品質保証規格への対応のノウハウが必要になってくると思うが。
まあ、m_とは関係ないな。(ワラ
274 :
44 :2001/07/08(日) 04:58
>>254 >これは他の人へ
>Sunのコード規約ではm_を禁止していないように見えるが。
>違反していると言う人はぜひその根拠を示して欲しい。
俺は多分他の人じゃないと思うが(ワラ
Variable names should be short yet meaningful.
メンバ変数かローカル変数かは「意味」ではない。
The choice of a variable name should be mnemonic
自然でないものを記憶させるのは、理解の障害となる。
275 :
教えて! :2001/07/08(日) 06:22
本日java world を購入しsdkをインストール 簡単なpgmをメモ帳で作り、ファイル名にclass名.javaと付けて保存 再度開けようとすると、program.exeが見つからないので、開けられません とでてしまう。 どなたか理由わかりますか?
276さん では、何故でしょうか?
何故だと思う?
何故だかわかんないからここで聞いてるんだけど・・・ 不毛な対話は時間が勿体無いのでどなたか教えてください。 宜しくお願いします。
280 :
276 :2001/07/08(日) 11:52
program.exeが見つからないのが理由です。キッパリ!
成るほど、そういうことでしたか。 ではどうすればprogram.exeって手に入るのでしょうか? 私のjava本には触れてないので全く分かりません。 宜しくお願いします
>>281 >私のjava本には触れてないので全く分かりません。
でしょうねー、漏れもみたことないです。
そういうときは、検索しましょう。
検索してもprogram.exeは見つかりませんでした
なぜだろうか・・
じゃ、エディタかえてみたら? わーくぱっどとかにさ。
>>279 それはあなたが、class名.javaというファイルをダブルクリックしているからです。
メモ帳を開いて、そこにそのファイルをドラッグ&ドロップすればよろしい。
本当だ。情報有難うございました。 でもコンパイルしても何故か?noclassdeffound error って出てきます 何故だろうか・・・? だってfile名.javaで正しいdirctryに保存してるのに。 分かる方いましたら、宜しくお願い致します。
その答えは、あなたが持っている本に載っています。 巻末の索引でCLASSPATHというものを調べてみましょう。
pathの設定は既にしてあるのですが・・・・ その設定が間違ってるのでしょうかねー、。。
291 :
デフォルトの名無しさん :2001/07/08(日) 13:26
pathの設定とCLASSPATHの設定は違いますね。 pathはOSがプログラムを探しに行く場所ようなものです。 CLASSPATHはjavaがコンパイルされたクラスを探しにいく場所のようなもの。 pathにコンパイルされてできた.classファイルを通しただけでは Javaがクラスを認識できません。 CLASSPATHに出来た.classファイルを通して見てはどうですか? これっくらいでいいですよね? 大文字のCLASSPATHと小文字のclasspathについては またどこかで調べましょう。
難しいな…現在サンサイト熟読中 情報有難うございました。
駄目だ、私には難しすぎる。mmxcpuがオーバーワークに成っております。 もう少し具体的にCLASSPATH設定の方法を教えて頂けないでしょうか? 宜しくお願いします。
>CLASSPATHに出来た.classファイルを通して見てはどうですか? ↑これの意味が分かりません。 もう少し分かりやすく教えていただけませんか?
俺も詳しくないけど set CLASSPATH=. ってやってから java ・・・ ってやっても駄目か?
296 :
デフォルトの名無しさん :2001/07/08(日) 14:28
287 ソースと あなたが入力したDOSのコマンド履歴をコピーしてあっぷしなされ。
297 :
デフォルトの名無しさん :2001/07/08(日) 14:30
まず最初のプログラムはひとつのクラスしか つかってないんだろうから、classpathの指定は 不要です
クラスのファイル名を打ち込んでるに一票。 とりあえず画面に出たエラー表示をそのまま載せれ。
no class deffound error :com/sun/tools/javac/Main がエラー理由のようです
public class Hello { public static void main (string args[]) { System.out.println("Hello \n") ; } }
少なくとも string -> String でしょ。 それから java -version の結果もコピペすれ。
上記のエラー文言はソースと同dirctoryにjavacを置いておいたときにでました そのjavacを削除して初期インストール時の場所でコンパイルを行ったら、 Hello.javaを読みこめませんと出てきました。 これって一体・・・ java-versionって何ですか?
君ね、本屋に行って図がたくさんある初心者向けのJavaの本を買ってきたほうが いいよ。 DOSもWindowsもShellも良く知らないんでしょ? 「漫画で覚えるJava」みたいなのがあればベスト。 (煽りじゃないよ) 全てのことが良く分からないまま、人に答えを教えてもらって出来るようになっても 何も身につかないと思うよ。
305 :
デフォルトの名無しさん :2001/07/08(日) 16:14
そろそろ、すがやみつるに「こんにちは!Java」を執筆してもらいたい。
ここで解凍を頂くのは無理と言うことなのでしょうか? 一応本は「図解でわかるjavaのすべて」と「java言語プログラミングレッスン」を 漏っていますが、環境設定についてはそれ程詳しく斯かれてないのが 実情だと思います。 初期環境さえ設定できれば後は勉強して行けるのかな?と思ったのですが・・
>>306 君の場合、まず質問のやりかたを勉強したほうがいいと思うぞ。
>>290 で紹介されたJavaHouseの「スペシャルトピック(必読)」
をとりあえず全て読め。
君の目の前で何が起こってるのかを説明できるレベルにならないと、
どこに行っても回答を得るのは難しいと思う。
というか私は「図解で分かる」で斯かれている通り 1java world 付録のCDでsdkをインストール 2syseditでpathの設定 3クラス名と同名のソース名.javaをメモ帳で作成 4新規ファイルに保存 5dosでcdで上記ディレクトリにてjavac 同名.java を実行 結果 同名.javaを読みこませんでした とのコンパイル結果 故原因がわからないでおります どなたか知者の助言願います。
いや、あの、騙されたと思ってJavaHouseの「スペシャルトピック(必読)」を 読みなさいって。 君の持っている「図解でわかるjavaのすべて」は、おそらく、このスレで回答 しようとしている人は持っていないだろう。 そんな状況で、 >「図解で分かる」で斯かれている通り >2syseditでpathの設定 と言われても誰も分からないよ。その「設定した内容」を書かないと。 >1java world 付録のCDでsdkをインストール も、どのバージョンのJDKなのか、調べないと分からないでしょ。 3,4,5も同じようなこと。 はやる気持ちはわかるけど、まずは、JavaHouse。
親切だな(藁
>>308 だんだん基地外字見てきたな。君、プログラマには
向いてないよ。少なくとも一緒に仕事したくないタイプで
はあるな。
312 :
デフォルトの名無しさん :2001/07/08(日) 17:54
>>308 そのディレクトリで
dir
と
java -version
をうった結果をウプしてくれ!
313 :
デフォルトの名無しさん :2001/07/08(日) 18:16
>>308 echo %CLASSPATH%
っていうコマンドを実行して、
結果を書き込んで。
>>308 名前欄にfusianasanっていれると、親切な人が答えてくれると思うよ。
どうせ原因は、 クラスパスなんだろうなあ。。
>>315 こういうタイプもJavaHouseによくいる。そして混乱させるわけだ(藁
318 :
デフォルトの名無しさん :2001/07/08(日) 21:12
コンソメパンチですが何か
きさまにはCすらなまNULLい!!!
321 :
デフォルトの名無しさん :2001/07/08(日) 22:18
ファイル名.java.txtになってたりしないよな・・・
原因がわかっても俺は答えてやらないに 100 票。
これはただのネタであると思いたいに1万ミズノ。
このスレ、レベル低いね
275以降(これも)透明あぼーんしなさい。
329 :
216 :2001/07/09(月) 00:10
レベルが下がりきってますが、続けます。
>>238 .240.243
慣れ/読みにくい/主流 ですか? 鳥頭厨房確定。
猿以下の思考停止生物は有害だから去れ。
prefixをつけてはならない根拠は?
>>243 その説明がないから・・・
>>239 218は、コードの読み方によって、(prefix等がなくとも)間違いを回避できるという主張。
これは"つけなくてもよい"根拠であって、"つけてはならない"ではないね。
>>242 バグが出る環境を想像してみてください。
# 自然不自然だとか、ですが、
# そんな不安定な感覚なんてものに頼るなんて前時代的ですよ?
ところで後半の文章によって厨房確定で残念です。
アナタの感覚なんか誰もアテにしていない。
感覚でないというなら根拠を示せば?
(まっとうな)仕事: 設計/コーディング/レビュー/テストなどにきちんと時間を与えられる →どのようなstyleであろうとバグは取れ、動作する。 アマチュア: 動こうがうごくまいがどうでもよい →どのようなstyleであろうと誰も文句を言わない 結論: この中間に位置するJava仕事は存在しない。
329によってレベルがまたひとつ下がった
313さんへ ECHO は ON との返答がありました。
エナジードレイン
329 は難癖つけることしかしてないな。 しかも、流れが変わったのにいつまでも続けているし。
>>329 俺なりにm_反対派の意見をまとめてみた。個々のレスへの反論はあるだろうがもう大体
意見は出尽くしたようなのでこれで終わりにしよう。
・まずm_をつけないことによってテストでは発見困難なバグが発生する可能性は彼らも
認めている。(と思う)
・しかしそれがたいした危険と考えていないので防ぐ必要なしと判断している
これはまったくそのとおりでプロジェクトの性質によっては十分に無視できる問題だ。
・次に可読性についてだが String.javaを「可読性が低くない」と判断できる人間に
とっては確かにm_をつければかえって可読性が低下するものと思われる。
その点君も俺も旧式の脳みそを持っているようなので素直に引き下がったほうが賢明
と思う。
彼らが超人かわれわれが厨房か、2chでいくらやっても結論は出ない
>>336 すまん、そのバグは単体テストフェーズで十分見つかるだろう
というのが抜けてる (まるでバグをほったらかしみたいだ)。それから、
まだ m_ について話し足りないなら悪いけど別スレ立ててくれる?
JavaHouseに持ち込んでみればぁ?
>>338 過去記事のポインタ示されて終わりな気もするが、最近活気
がなくなってきてるので、この手の宗教戦争投げるのも良いかも。
きっと、ここぞとばかりに厨房がわんさか出てくるよ。(藁
全然関係ないがひろみちゅって名工大にいたんだ。
>>341 名工大時代の高木浩光さんといまのひろみちゅでは、肉体は一緒だが、
魂が実は何物かによってこっそり入れ替えられてるぞ。
注意しろ。
343 :
JAVA3ヶ月生 :2001/07/09(月) 05:06
ttp://family.millto.net/~molita/ ここを参考にして、TomCatをインストールしていたのですが、
いろいろ試してもTomCatが起動しません。
「指定されたバッチラベルが見つかりません -startServer」とか、言われちゃって・・・。
OSは、WIN2000プロフェッショナル。
Apacheは、apache_1_3_12_win32。
インストールしたバージョンは jakarta-TomCat-3.1.1 です。
なにかしらわかる方がいらっしゃれば、ご教授願います。
344 :
JAVA3ヶ月生 :2001/07/09(月) 05:09
345 :
JAVA3ヶ月生 :2001/07/09(月) 06:07
できました。 逝ってきます。
>>333 いや、echoじゃなくて
echo %CLASSPATH%
なんだけど。
もし、これでONってでてきたんなら、
CLASSPATHの設定を変えないとだめ。
347 :
36 :2001/07/09(月) 08:12
>>336 きみってアタマ悪そうだね。まとめになってないよ。
だからいつまでもm_なんていってんだろうけど。
漏れのまとめはこうさ。
メンバー変数名にm_などのprefixをつけるやつは100%厨房。
悪いことはいわないからJavaはいますぐやめてC#に遺稿せよ(藁
348 :
デフォルトの名無しさん :2001/07/09(月) 08:27
趣味のプログラミングならm_つけてもいいんじゃない? 仕事なら、m_をつけてはいけない。 つける必要が無いようなコーディングを心がけろ、ということで。
m_がついていることが発覚した時点で今後そのソースは読みません。
>>227 >後者の防ぎ方は
>>209 が例としてあげたjava.util.Stringに良い例があった。
>例えばtoLowerCase()では、
> int len = count;
> int off = offset;
> char[] val = value;
>とある。メンバ変数には正しい単語を、ローカル変数には略称を使うという方法。
>これにより、m_の有無で区別するのと同様の効果がある。
javaのクラスライブラリってそんな真似やってるんだ
わけわからん略称で埋め尽くされた昔のCソースのようだ..
そんな略称考えてる暇があったら自然な名前にm_でもitsでもなんでもいいから
つけたほうがいい
シープラでも別に最初からm_をつける文化があったわけじゃなくてmfcの設計者
が途中からつけた工夫だろ
純粋にjavaはシープラより歴史が浅いからそこらへんの文化が発達してないん
でしょ。だって、メンバ変数と名前が重なるから略称を考える、という問題は実際
に発生しているわけだから。その目的で略称を考えてる人たちにm_をつけるのが
汚いとか絶対に言われたくないが..
あとメンバ変数は重要なもんだから頭の中に絶対に入ってるって、それは自分が
書いたソースの場合でしょ。
他人の書いたソースみる時にまず仕様書なんて必ずみるわけじゃないっていうか、
よっぽど正式な状況以外ではいちいちみない。よほどみにくいソースじゃない
限り。参考にするために拾ってきたりもらったりしたソースに仕様書なんかないしさ。
っていうか・・・プレフィクスがなし派はかなり限られた状況でしか開発したことが
ない奴と思われ..
351 :
デフォルトの名無しさん :2001/07/09(月) 08:52
>>350 >プレフィクスがなし派はかなり限られた状況でしか開発
そんなの、現場で規定された名称付与基準次第じゃねーか。
なにすっとぼけたこと言ってんだ?
353 :
39 :2001/07/09(月) 08:58
>>350 きみ何番?はじめてでてきたの?
他人の書いたソースをどんな目的で見るときのはなし?
そのクラスを使うだけならインターフェイスだけ知っていればいいでしょ。
そのクラスを継承しないといけない場合はソースの全部を読んで
アタマにいれないといけないけどね。継承なんてめったにしないでしょ?
さー、ここでまた厨房が釣れるかな?(藁
354 :
350 :2001/07/09(月) 09:02
本質じゃねーところでグダグダいっててもしょーがねーよ。 つけろといわれたらつけるし、つけるなといわれればつけない。 それに、Sunはつけるなともつけろとも言ってねーよ。 ちゃんと規約読めバーカ。
355 :
39 :2001/07/09(月) 09:02
>>348 >趣味のプログラミングならm_つけてもいいんじゃない?
いいよ、できればローカル変数名にprefixのほうがましだと思うけど。
>つける必要が無いようなコーディングを心がけろ、ということで。
そう、こっちは本質だよね。
つける必要がないようなクラス構造、クラスの大きさにしろ、ってことかな。
>>348 趣味だからって醜悪なコードを許容するのは「趣味が悪い」かなとも思う。
趣味人にはドキュコードを書く自由がある!と主張することには
結局なんの意味も無いと思う。ていうか趣味でやるやつほど
せめて美意識とかを意識して欲しいもんだというか。
それはそれとして。
>>347 なるほど。delでも、fHogehoge(フィールドの略らしい)
とか書かずにself.Hogehogeと書くべきだってことか。
そう言われて見ればそうだな。
ただ、delの場合は、propertyという便利な仕掛け(わら)のおかげで
Hogehogeと別にfHogehoge相当の変数をも作らないとならない
という事情はあるんで、ちと悩ましいけど。
359 :
デフォルトの名無しさん :2001/07/09(月) 09:16
>>353 前にちょっとみて、さっきまたざーっと流し読みしたわけだけれど..
>>他人の書いたソースをどんな目的で見るときのはなし?
>>そのクラスを使うだけならインターフェイスだけ知っていればいいでしょ。
>>そのクラスを継承しないといけない場合はソースの全部を読んで
>>アタマにいれないといけないけどね。継承なんてめったにしないでしょ?
>>さー、ここでまた厨房が釣れるかな?(藁
継承なんてしないでそのソース自体を参考にする、なんてことを
あなたはけーけんしたことがないんでしょうおそらく・・
ふつーに開発やってたらいくらでもあることだが
だいたいプレフィクスをつけるうんぬんは、プレフィクスなきゃできない
とは上の人もたぶん誰もいってないわけで、ありゃわかりやすいと
言ってるだけでしょう
どうでもいいけどあなた(39)の過去の発言をみかえしてみたけれど、
どう考えても開発経験豊富な人には思えない、というか、たぶん
学校かおうちか、ごく小さな会社で小さな開発せこせこやってる人
という人にしか思えないので、反論するきもあまりおきないので、
これで書き込みやめときます
360 :
39 :2001/07/09(月) 09:28
>>359 >継承なんてしないでそのソース自体を参考にする、なんてことを
>あなたはけーけんしたことがないんでしょうおそらく・・
あるよ。その時m_がついてたほうがいいの、ふーん。
その時ローカル変数にl_がついてたんじゃなぜだめなの?
つーか、そんなのエディタで一発変換してよめばいいんじゃないの?
>どう考えても開発経験豊富な人には思えない
人間て悲しいものだね。
自分より上のレベルの人間だと読みとれるのはごく一部の優れた人だけなんだよね。
>>360 >つーか、そんなのエディタで一発変換してよめばいいんじゃないの?
むちゃくちゃゆーな。
362 :
デフォルトの名無しさん :2001/07/09(月) 10:00
カードレイアウトを使いたいんですけど、 うまくいきません・・・。 これでは、次のカードしか見れないのはわかっているのですが、 それ以前にアプレットが初期化されてないと言われてしまいます。 何が間違っているのでしょうか? よろしくお願いします。 import java.applet.*; import java.awt.*; import java.awt.event.*; /* <applet code = "card" width=250 height=200> </applet> */ public class card extends Applet implements ActionListener{ CardLayout CL; Panel p1,p2,p3; Label label1,label2; Button button = new Button("next"); public void init(){ p3.setLayout( CL = new CardLayout() ); p1 = new Panel(); label1 = new Label("Label 1"); p1.add(label1); p2 = new Panel(); label2 = new Label("Label2"); p2.add(label2); p3.add(p1); p3.add(p2); add(p3); add(button); } public void actionPerformed(ActionEvent ae){ CL.next(p3); } }
363 :
デフォルトの名無しさん :2001/07/09(月) 10:37
>362 p3がnull
364 :
362 :2001/07/09(月) 10:45
あ、うっかりしてました。 が、p3 = new Panel(); を追加しても、うまくいかないんですけど。 なんででしょうか?
365 :
デフォルトの名無しさん :2001/07/09(月) 10:56
>364 p3.add(p1); p3.add(p2); ↓ p3.add("card1", p1); p3.add("card2", p2); "card1", "card2"は何でもいいッス。
366 :
デフォルトの名無しさん :2001/07/09(月) 11:09
>364 あと、"next"ボタン押して表示パネル変更したいんだったら、 button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ae) { CL.next(p3); } }); ボタンにリスナ付けないと。
367 :
362 :2001/07/09(月) 11:19
>>363 ,365,366
文字列入れなきゃいけなかったのか~
知りませんでした。
あ、リスナも付け忘れてた・・・。
皆様のおかげで、無事に機能させることができました。
ありがとうございました。
・String.javaに代表されるJDKのコードが美しいと考えるヤツはいないと思われ。 ・m_がついてようとついていまいとJDKのコードはクソ(w ・m_派がさんざん見つけにくいと主張するメンバ変数破壊バグだが、 「あるクラスのメンバ変数が意図した結果にならなければ、 そのクラス内の引数を含めたローカル変数の宣言ミスを疑え」という ごくシンプルなデバッグ要項ひとつで対処できると思われ。
>>368 JDKのコードはクソかもしれないけど
そんなのはLinuxもWindowsもQNXもクソだから
許してやってくれ
別スレいけ。 兎剤。
371 :
デフォルトの名無しさん :2001/07/09(月) 21:24
JAVAでRTSPを実装したアプリケーションを作りたいのですが、 どのAPIを使えば良いのかよくわかりません。 JMStudioやREALPRODUSCERのようなものです。
コンパイルできた・・・ 皆さんサンクス!
>>372 お、出来たか。煽って悪かったな。
次回はもうちょっと表現力つけて質問せれ。
374 :
デフォルトの名無しさん :2001/07/09(月) 23:22
375 :
デフォルトの名無しさん :2001/07/09(月) 23:26
JDBCを使ってPostgresのデータベースに接続したいのですが ドライバの設定の仕方はどうすればいいのでしょうか?
376 :
デフォルトの名無しさん :2001/07/09(月) 23:48
>>375 JDBCドライバってなんか設定いるの???
どこかに置いとくだけなんじゃないのけ?
377 :
デフォルトの名無しさん :2001/07/10(火) 21:08
ドライバが置いてあるjarファイルに対しておn CLASSPATHの設定が必要
378 :
デフォルトの名無しさん :2001/07/10(火) 22:25
>>377 どちらかというとURLClassLoaderで動的ローディングする
ほうが、エンタープライズシステムっぽくて素敵。
>>378 なにそれ?
動的にclassを自分の意志でダウンロードできるの?
380 :
デフォルトの名無しさん :2001/07/10(火) 22:39
>>379 ClassLoader loader = java.net.URLClassLoader.newInstance(java.net.URL[] クラスパスの代わり);
loader.loadClass(String クラス名);
これで Class.forName(String クラス名);
の代わりになる…はずだ…
URL指定でできるので、例えばリモートのストレージに
一個ドライバ置いておいてみんなでそこを呼び出すように
すれば、ローカルストレージを汚さないで済む。
AppletからネイティブJDBCドライバ呼び出しもできるんじゃ
ないかな。
381 :
デフォルトの名無しさん :2001/07/11(水) 00:12
データベースに検索をかけて得た データをテーブルに再描画するとき 元のテーブルをremoveして新しくテーブルをつくり直して validate、repaintをかけているんですが もっと良い方法はありませんか?
382 :
デフォルトの名無しさん :2001/07/11(水) 00:39
>>381 直前に一度検索しているなら、前回検索との差分だけを
バックグラウンドでロジック組んで検索して、そのセルだけ
書き換えるとかしたら?ついでにそこだけ色を変えたりすると
表現力たっぷり。
383 :
382 :2001/07/11(水) 00:46
前提としてデータモデルとビューの分離は必須。 まあ、JTableつかえば簡単簡単。
384 :
381 :2001/07/11(水) 01:01
382>> なるほど、セルの色を変えて追加するのは思いつきませんでした。 よい案をありがとうございます。 しかしJTableはほんとにデータ表示には便利ですね。
385 :
デフォルトの名無しさん :2001/07/11(水) 01:19
Swingは相対的に非常に遅いし、バグもあるんだけど、プログラマ から見るととっても楽なGUIツールキットだとおもう。 基本的にはボタンだのテキストフィールドだのといったコンポーネント をNEWして貼ってけばいいだけ。あとはイベントハンドラを登録 (ListenerをNEWしてADD)してやれば終了。後ろのロジックは普通に Javaで書けるわけで、あとはだだっ広いAPIのジャングルから適当な パッケージ引っ張ってきて組み合わせれば、何でもできる。 J2SDKなら表現力は無限大。コンポーネントの上に何でも好きに書ける。 個人的にはテキストグリフのアンチエイリアシング処理が好き。 フラグ一個立てるだけであとはライブラリが中で勝手にやってくれる んだもん。 おいらVB知らないんだけど、変な環境汚染とかはしないし、裏の ロジックはオブジェクト指向でいろいろ書けるわけで、VBつかう よりJDKの方が安全なアプリの開発が楽にできるんじゃないかな?
386 :
デフォルトの名無しさん :2001/07/11(水) 01:50
387 :
デフォルトの名無しさん :2001/07/11(水) 16:14
JDK1.3 です。 LinkedList.Java のソースをみたところ、 private transient Entry header = new Entry(null, null, null); となってるんですが、この「Entry」ってなんですか???
クラス
389 :
デフォルトの名無しさん :2001/07/11(水) 16:40
>388 どのパッケージ???
390 :
デフォルトの名無しさん :2001/07/11(水) 16:54
ごめんなさい、標準のクラスかと思ったらば LinkedList内で private static class Entry で定義されてました。(TT) 逝ってきます。
391 :
デフォルトの名無しさん :2001/07/11(水) 20:37
>>385 非常に遅くてバグがあるんじゃ、ダメダメじゃん…。
393 :
デフォルトの名無しさん :2001/07/11(水) 22:56
>>391 バグっていっても、動作上の致命的な奴は最近あんまりない。
描画更新でたまに残骸のこったりとかがあるくらい。
GUIの動作が多少遅くたって、入出力に支障が無い程度なら
別にいいじゃん。GUI相手に一秒間16連射するユーザなんて
めったにいないと思うし。
高橋名人。
395 :
デフォルトの名無しさん :2001/07/11(水) 23:18
マジデ?
396 :
デフォルトの名無しさん :2001/07/12(木) 00:42
外部ファイルを読み込みたいのですが 拡張子を"js"に変えるにはどうすればいいのでしょうか? ちなみに変える前の拡張子は"txt"です。
397 :
デフォルトの名無しさん :2001/07/12(木) 02:07
>>396 1.外部ファイルを読み込みたい
2.ファイルをリネームしたい
のどっちが質問なの?両方?
自分なりに補って解釈すると
Javaアプリケーションから
他マシンにあるファイルの"txt"ファイルを読み込み
また、そのファイルを*.jsにリネームしておきたい
または
Javaアプレットから
アプレットのあったサーバーの(or他サーバーの)"txt"ファイルを読み込み
また、そのファイルを*.jsにリネームしておきたい
に思えるんだけど、そのあたりはどうなのだろう?>396
399 :
397 :2001/07/12(木) 02:18
とりあえず、Fileのリネームなら File f = new File("hoge.txt"); f.renameTo("hoge.js"); だけど(例外処理とかは抜きね)
400 :
java駆け出し者 :2001/07/12(木) 14:37
こんにちは。 アプレットで画像のサイズを取得して、変数(クラスフィールド)に 入れておきたいのですが、うまくいきません。 以下のソース(アプレット)を実行すると-1が表示されて、 幅が取得できないようです。 コメントアウトしてある方法だとうまくいくのですが・・・ どなたかご教授ください。 画像は2枚必要です。すいません。 import java.applet.*; import java.awt.*; public class Test extends Applet{ int size; Image[] Myimg = new Image[2]; public void init(){ Myimg[0] = getImage(getDocumentBase(),"1.gif"); Myimg[1] = getImage(getDocumentBase(),"2.gif"); size = Myimg[1].getWidth(this); } public void paint(Graphics g){ String c = new String(); // g.drawString(c.valueOf(Myimg[1].getWidth(this)),10,20); g.drawString(c.valueOf(size),10,20); } }
>>400 必要なときに必要な分だけ使えば良いと思われ。
よってコメントをはずすべし。
つーかイメージがゲット出来ないことも考慮してnullチェックしとけ
402 :
java駆け出し者 :2001/07/12(木) 16:21
こんにちは。 実際のプログラムは何度もsizeを使いたいので、 できれば定数にしたいと思っています。 nullチェックはテスト用のためにつけてませんでした。
>>400 AppletのgetImageは"画像の読み込みを開始"させるメソッド。
呼び出し直後はまだ読み込みが完了していないためサイズがわからないのも当然。
読み込みを完了させるためにはMediaTrackerを使って、
MediaTracker tracker = new MediaTracker(this);
tracker.addImage(Myimg[0], 0);
tracker.addImage(Myimg[1], 0);
try {
tracker.waitForID(0);
}catch(InterrputedException e) {
e.printStackTrace();
}
こんな感じの処理をサイズ取得の前(getImageの後)に入れとけばいい。
ちなみにImageのgetWidthメソッドとかの引数にthisを渡すのは
読み込みが終了したとき等に改めて通知してもらうため。
ていうか俺の日本語読みにくいぞくそったれ!!
この辺の仕組みが理解できれば画像読み込みをバックグラウンドでやって、
読み込みが終了したものから画面に表示していくというようなこともできる。
404 :
デフォルトの名無しさん :2001/07/12(木) 22:21
オブジェクトとインスタンスとエンティティの違いが良く分かりません。 おしえて
405 :
ななし :2001/07/12(木) 22:51
【質問】オープンソースであるLinuxで動く Javaコードをネイティブコードにコンパイルしてくれる コンパイラはどんなものがありますか?
406 :
デフォルトの名無しさん :2001/07/13(金) 00:07
>>404 本1冊読んでからのほうがイイと思うよ。
>>404 エンティティは設計段階で扱い
オブジェクトは実装段階で扱い
インスタンスは実行段階で扱うオブジェクト
408 :
404 :2001/07/13(金) 01:51
じゃあEntityObjectってなんすか?
409 :
デフォルトの名無しさん :2001/07/13(金) 07:35
>>404 どんな文脈で使われてるのか書かないと正確なレスは帰ってこないと思われ
410 :
404 :2001/07/13(金) 14:32
>409 ごもっとも。 もう少し勉強してからくる。
411 :
デフォルトの名無しさん :2001/07/13(金) 19:12
こんにちは。 image もしくは imageIcon の 任意のドットの色を取得したいのですが 取得の方法がわからないんです。 (VCとかでいうGetPixelみたいなの) どなたか取得方法を御教授願えないでしょうか?
412 :
デフォルトの名無しさん :2001/07/13(金) 20:10
ガーベージコレクションが動くとき、 空きメモリは連結されてる?
>>411 java.awt.image.PixelGrabber
ってのを使え。
BufferedImageなら
int color = bufferedImage.getRGB(x, y);
でいける。
414 :
デフォルトの名無しさん :2001/07/13(金) 20:26
>>413 JavaDocでPixelGrabber見たらサンプル付きで解説ありました。
ありがとうございます。
BufferedImageも調べときます。
415 :
デフォルトの名無しさん :2001/07/13(金) 20:48
厨房的質問なんですが2点質問です。 Javaでクラスを作るとき、コンストラクタって 必ず作らなくてはいけないのですか? コンストラクタ内でなにもすることがない場合は 何もコンストラクタ内で何も記述しなくてもいいのでしょうか?
418 :
デフォルトの名無しさん :2001/07/13(金) 21:44
>>411 に便乗して質問。
PixelGrabberもいいんだけどなんか遅そうな感じが
するのは気のせいでしょうか。
最近のJavaはなんかFilterとかRenderedImageとか
WritableRasterとかわけがわからないクラスがたくさん
追加されていますが、これらみたいな新しいクラスを
使った新しいピクセルの扱い方ってあるんでしょうか?
>>418 WritableRasterからBufferedImageつくれる。
BufferedImageからRasterとりだせる。
Rasterでピクセルの値見れる。
WritableRasterでピクセルの値いぢれる。
WritableRasterはRasterのサブクラス。
Filter系使うとImageにエフェクトかけれる。ぶら~とか。
RenderedImageはインタフェースか・・・。
とりあえずこれを実装してるクラスはBufferedImageだけみたいだね。
まぁいいや。
あとJ2SE1.4から新しく
VolatileImageとかいうのでイメージをVRAMにおけるようになったみたい。
PixelGrabberは始めにぐぁっとデータ取り込んで
int配列とかに入れてしまうので速度は別にかんけーないかと。
MemoryImageSourceとかはどうだろうね速度。
420 :
デフォルトの名無しさん :2001/07/13(金) 23:47
コンパイルエラーで 「"("がありません」と出たんですが どうして直したらいいんですか? すいません、全くの初心者なので…。
421 :
デフォルトの名無しさん :2001/07/13(金) 23:51
422 :
デフォルトの名無しさん :2001/07/13(金) 23:53
>>420 どうするも何も、括弧同士の対応が足りなくて、
「(」の数が「)」に比べ1個少ないんだよ。
それくらいなら、その行のソース貼り付けてみ。
423 :
デフォルトの名無しさん :2001/07/13(金) 23:55
>>421 すいません、ほんと。
何が足りないとこのエラーが出るんでしょうか…。
(が無いからです。 そんなことよりlispをやんなさい、キミィ!
425 :
デフォルトの名無しさん :2001/07/14(土) 00:02
>>422 function En(){
pass = prompt(" ","");
if{
(pass == " " ) alert(" ")
location.href = " .html";
}else {
alert(" ")
}
すいません、厨房で…。
本片手にやり始めたばっかりなので。
426 :
デフォルトの名無しさん :2001/07/14(土) 00:11
・・・それはJava??? その本タイトル違うんじゃないの?
427 :
デフォルトの名無しさん :2001/07/14(土) 00:18
…すいません、スクリプトの方です。 ここでJavaスクリプトもお聞きしていいのかと 思ってました。
JavaScriptはこの板では扱っていません。>427
429 :
422 :2001/07/14(土) 00:44
>>425 それJavaScriptじゃん。
ちなみにそれはif文の書式が間違っているのでは
if (条件) {
真
} else {
偽
}
だよ(要は if (条件) {真} else {偽})
だから、推測だけど
function En(){
pass = prompt(" ","");
if (pass == " " ) {
alert(" ");
location.href = " .html";
} else {
alert(" ");
}
じゃないの?セミコロンも抜けてたから注意するべし。
ネタにマジレス カコワルイ
431 :
422 :2001/07/14(土) 00:52
スマンカコワルイネ
429訂正 ファンクションEnを完結させるなら function En(){ pass = prompt(" ",""); if (pass == " " ) { alert(" "); location.href = " .html"; } else { alert(" "); } } ←※これ追加
433 :
デフォルトの名無しさん :2001/07/14(土) 01:30
フラッシュ5もってます。
436 :
デフォルトの名無しさん :2001/07/14(土) 03:37
じゃぁソレで何が出来るか調べれ
437 :
デフォルトの名無しさん :2001/07/14(土) 09:54
javaあんま分かってないのでご教授願います。 例外処理を元のクラスにthrowするのですがその時にいっしょに文字列を 渡すのはどうやればできますか?Exception eとString messageを元で 受け取って一緒に表示したいのですが。よろしくどうぞ
438 :
デフォルトの名無しさん :2001/07/14(土) 10:00
[GVDFSGでRBGVDFJKBGヵぜGVQAHS
catch(Exception e) { throw new Exception("Hello, Exception\n", e); }
440 :
デフォルトの名無しさん :2001/07/14(土) 10:52
>>439 即レスどうも。ちょっとよくわかんなかったんでwebで調べたら名前を
MyExceptionとかにしてExceptionのサブクラスにする方法があって
うまくいったんですが439のようにそのままthrow new Exception
みたいにやるのはできるんですか。
441 :
デフォルトの名無しさん :2001/07/14(土) 11:03
>>440 メッセージは入れられるけど、元Exceptionの格納はできないはずだ。
つうことで、格納昨日つきExceptionクラスつくっぺ。
足らないオーバーライドは自分で考えれ。
public class NestException extends Exception{
private Exception e;
public NestException(String message,Exception e){
super(message);
this.e = e;
}
public void printStackTrace(){
super.printStackTrace();
if(e==null)return;
System.err.println("nested exception");
e.printStackTrace();
}
}
Exception(String s, Throwable t) since 1.4 だった。鬱
おー1.4なのか RMIなんかも良くなってるってどっか書いてあったからなあ 使ってみようかのお
445 :
デフォルトの名無しさん :2001/07/14(土) 11:57
>>444 仕様を読んだ限りだと、Serlvet何ていうちゃちな遊びレベルじゃなくて、
サーバサイドを本気で作るつもりなら、J2SE1.4+J2EE1.3が最低ライン。
これからは+JAXB,JAXMのラインで進んでいくんだろうと思う。
1.J2EE1.3
メッセージングサービス、パブリッシュ=サブスクライブモデル、
複相コミットメント、ネーミング=ディレクトリサービス、ETC…
2.J2SE1.4
ノンブロッキングI/O、ロギング機構、正規表現検索機構、RMI=CORBA互換
SSLソケット機構、暗号化ライブラリ、XML(DOM/SAX)パーサ、ETC…
3.JAXB,JAXM
オブジェクト←→XMLテキストマーシャリング・アンマーシャリング機構
ヴァリデーションチェック機構、SOAPメッセージ送受信、ETC…
こんだけできれば、今したいことは何でもできそうでしょ?
446 :
445 :2001/07/14(土) 12:04
個人的には、J2SE1.4のノンブロッキングI/O、メモリマップド ファイル機構のサポートがお気に入り。これが使えるというだけで、 マルチスレッドのサーバモジュール書く労力が段違い。
447 :
デフォルトの名無しさん :2001/07/14(土) 15:12
>435 何ができるのかは十分承知しております。でもフラッシュでつくってもなーんも面白くありません。目標は3Dのゲームですので。
449 :
デフォルトの名無しさん :2001/07/14(土) 17:20
>>447 じゃあJAVA3Dの本を探せ。
多分英語だけど。
JAVA3Dはデフォルトじゃ入ってないぞ。 SUNからDLするんだ。 ちなみにweb上でやるならアクティブX アプレットだとちょっと厳しい。 つーか無理?
451 :
デフォルトの名無しさん :2001/07/14(土) 22:48
>>448 1.4のNEWI/Oって、JVMヒープ内での非同期マルチスレッド処理用で
しかないと思うよ。プロセス間通信には使えないと思うが。
>>451 ゴメソ。よくわかってないんだけど、
"JNIで呼び出されるネーティブ部のもってるヒープに、Java側から触れるのかぁ"
っていうつもりで・・・。
C->Java だけだったのが Java->C も、というか。
#って別にCだけじゃなくて、なんかネーティブのコードね。
なんか変なこと言ってたらごめん。よくわからん。
454 :
デフォルトの名無しさん :2001/07/15(日) 00:09
>>453 そりゃ無理でしょ。なんであんさんがカスタムで作ったJNIコールで
アロケートしたメモリエリアとコアAPIがインターフェイス取れるのよ?
455 :
デフォルトの名無しさん :2001/07/15(日) 01:13
>456 問題は地面です。
458 :
デフォルトの名無しさん :2001/07/15(日) 02:41
>>457 擬似だよ。
でも、すごいゲームにはかわりないよな
459 :
ビギナ :2001/07/15(日) 04:01
質問! Forte For Java って98,95では動かんの?
もちろん動く。
461 :
デフォルトの名無しさん :2001/07/15(日) 04:40
jGLっちゅーソフトウェア描画のOpenGLもどきもあるナリよ。
JDK1.1ベースのブラウザのVMでも動く。
リアルタイムアニメーションに使えるような速度ではなかったと思うけども。
>>458 F-ZERO面(なにそれ)が擬似ならDoomとかも擬似じゃ~ん。
べつにいいか。
462 :
デフォルトの名無しさん :2001/07/15(日) 04:47
>>433 >↓のようなプログラムを書きたいのですが、ここはソースを提供していません。
はっはっは。そういうときはですな、
おもむろにページのソースを表示、APPLETタグを見つけて
jarファイルを直接URL入力してダウンロード、
逆コンパイラにかければいいのです。
言っちゃいけなかったかな(w
>>462 それをまずやったんですけど(jadで)なんかおかしいんですよ。出てきたファイルをコンパイルしてみてもエラーがでるし、どのクラスかも指定しないでインスタンスを生成していたような気がするし・・・
464 :
448 :2001/07/15(日) 16:10
>>454 ちょいと調べてみたですよ。なんか1.4から
jobject NewDirectByteBuffer(JNIEnv* env, void* address, jlong capacity);
って関数が用意されてて
- Allocates and returns a direct java.nio.ByteBuffer referring to the block of
- memory starting at the memory address address and extending capacity bytes.
って書いてあるんで、つまりこれを使ってaddressからcapacity分のメモリ空間に
マップされたByteBufferをつくって、Javaのコードの側に渡せるんぢゃないかな、と。
思うです。どう?だめ?
465 :
デフォルトの名無しさん :2001/07/15(日) 16:31
ちょっとかなりあほな質問なんですけど、でかいプログラムを書きたいときCのように分割してかけますか?
そりゃまあ、普通にクラス設計すれば。
全部1個のクラスで出来るんならソレはソレで凄いぞ(笑
アプレットだとfinal以外のstatic変数使えないも同然なので ついついやっちまうッス。
以前に、自分の書いたソース読んでたら、 置換ミスで変数名が全角の単語になってた。 でも、何事も無く動いてた。ちょっとびっくり。
Unicodeマンセー(ウソ)
471 :
デフォルトの名無しさん :2001/07/16(月) 16:29
今コアJava2という本で勉強していますが質問が3つほどあります。
1.CORBAのところでつまづきました。omniORBというもので説明されているのですがこれには
VC++が必要であるらしいですが持ってません(windowsです)。他にCORBA、C++コンパイラ
共に無料で試せるもの、それに関するwebページなどありましたら教えて下さい。
2.そもそもCORBAというものはどうなんでしょうか?netではsoapという魅惑的な名前の
サービスがそれに当たるものでありJavaでも使えるようになった、と認識していますが
比べるとどうなんでしょうか?
3.RMIについて
>>445 のような専門的な事はどのような本に載っているのでしょうか?
所有しているJava本にはRMIについてはメッセージを送信受信するぐらいな事しか
書いておらずここまでしか分かりません。よく皆さんがノンブロッキングI/Oなどという
言葉を出してjdk1.4を語っていますがそういうのが詳しく載っている本を教えて下さい。
以上3点教えてクンになっちゃいますがよろしくどうぞ
472 :
デフォルトの名無しさん :2001/07/17(火) 00:53
>>471 CORBAの最も基本的なサービスは、ネーミングサービスですが、これつかうと
オブジェクト自身をサーバとして起動することが出来ます。
TCP/IPのDNSに相当するネーミングサーバに、オブジェクトを
適当な名前と一緒に登録すると、クライアントはそのネーミングサーバ
に名前で検索するとそのオブジェクトのリモート参照が取れます。
簡単に流れを追うとこんな感じ。
サーバ側:
オブジェクト生成;
ネーミングサービス・登録("ほげほげ"、オブジェクト);
クライアント側:
オブジェクト=ネーミングサービス.検索("ほげほげ");
オブジェクト->メンバ関数();※
ここで、※で呼ばれているメンバ関数は、実際にはリモート
にあるサーバオブジェクトがその関数を起動してます。
(デザパタ知ってる人ならよくご存知の、RemoteProxyパターン
の代表例ですな)
あっというまにサーバクライアントシステムの出来上がり。
ソケットで同期取りながらシコシコやるより楽ちんです。
まあ、いろいろ約束事有るんだけどね。
473 :
デフォルトの名無しさん :2001/07/17(火) 10:46
>>471 たぶんその皆さんはC++などでサーバーを組んでいてそれと比べているのでしょう。
1.4になって始めてついた機能について過去の本に載っているわけ有りません。
僕も知らないので知りたいです。1.4に対応した本っていつ出るのかなあage
>>469 全角のひらがなとかでも動くよ。
Unicodeで表せる文字なら使えるよ。
475 :
デフォルトの名無しさん :2001/07/17(火) 23:48
>>474 コード内の識別子や文字定数は、コンパイル時にJavacが全て
Unicode変換してんだよね?違ったっけ?
だから、日本語だって識別子にできる。
public void ほげ(ほげほげ ぱげ){
ぱげ.あっち向いてほい();
}
なんてのもあり。読みにくいのと、日本語では
シンボル定義がサマにならないからやらないけど。
>>475 以前に興味がてらちょっとやってみた。
ローカル/インスタンス/クラス変数名やメソッド名に日本語を
使用することが出来た。Beans の Introspection でもちゃんと
日本語の getter/setter (プロパティ名) を参照することが
出来た。
クラス名はファイル名と関係するのでどうもうまく行かなかった。
それから JSP 内で <jsp:getProperty> も文字化けしてしまった
(Tomcat 使用)。金融アプリみたいにプロパティ名が日本固有の
言葉になるもので日本語を使えたら便利なんだけどなぁ。
477 :
デフォルトの名無しさん :2001/07/18(水) 01:08
HTTPクラスってどっかにないですかね? PerlでいうところのLWPモジュールみたいな奴。
478 :
デフォルトの名無しさん :2001/07/18(水) 01:26
ところで、最近java.sun.comにアクセスしようとしても できません。なんでか知ってる人いませんか?
479 :
477 :2001/07/18(水) 02:12
JAVAによるネットワークプログラミングを勉強したいのですが、 (HTTP、FTP、SMTP、POPなど) どこかいいサイトないでしょうか?
480 :
デフォルトの名無しさん :2001/07/18(水) 02:19
RFC読め
>>477 PerlのLWPがオレには?だけど
java.net.HttpURLConnection
はどう?
483 :
あ :2001/07/18(水) 17:41
IEがデフォルトでアプレットを実行できないってこと?
485 :
483 :2001/07/18(水) 17:50
プラグインとってくるなんて素人には無理だろうなぁ
今までアプレットでシステム組んでた奴はどうなるの? ActiveXControlで作り直し?それとも.NET?
なんか現実味帯びてくると.NETってスゲーメンドクセー気がしてきた。
489 :
デフォルトの名無しさん :2001/07/18(水) 18:06
.NET で、Javaアプレットの代わりみたいなことは出来るの?
490 :
デフォルトの名無しさん :2001/07/18(水) 19:17
ゲイツちゃん、うざいね なんで、そう余計なことばかりするかな・・・?
491 :
デフォルトの名無しさん :2001/07/18(水) 22:03
VMのオブジェクト一つ一つが生まれ、行き、死んでく様子を モニターできるツールってありますか? コレクションクラスを使いまくっていると、 どれくらいメモリを使ってるのが気になってきます。
492 :
デフォルトの名無しさん :2001/07/18(水) 22:14
SunがVMの再配布可にするってのはどう? んで、製造元がMS以外且つ広く使われているアプリの インストーラに組み込むとか。 みんな結構MP3とか聴いていると思うから、MP3プレイヤーなんか いいんじゃない?
493 :
デフォルトの名無しさん :2001/07/18(水) 23:05
>>483 最初からインストールされてないだけで、
APPLETタグあるページ行けば自動的に
MSVMインストールされるこたされるとは聞いたけど、どうなんやろね。
つまり今までよりちょっと手間かかるようにしたっつー。
>>489 できるっちゃあできるが、
どうもセキュリティ上サーバとの通信すらできないくさい。
……という認識でいいのかな。
実のとこよく分からんのでみんなも調べてクレー。
494 :
デフォルトの名無しさん :2001/07/19(木) 00:15
MSのVMなんかもう実質役立たず。 Java2がJavaのスタンダードである昨今、SunかIBMのVMを インストールせざるを得ない。 多分、SunあたりがJRE&PlugInのワンクリックインストール の仕組みを作るだろうよ。8MBくらいあるから、ブロードバンド の普及状況とにらめっこかな。それさえ大丈夫なら,FLASHや SHOCKWAVEのランタイムのインストールと同じ感覚程度にに なるだろうから、そんなに気にしなくていいことだと思っとるよ。
つまり、 「やっとJava2をターゲットにしたブラウザ用アプレットをおおっぴらに作れるようになる」 と言う認識で間違いないですか?
>>494 そう思う。
要はプラグインという認識にすればいいんだよね。
それをSunがやるかどうかだが、、、
497 :
デフォルトの名無しさん :2001/07/19(木) 00:38
>>495 そうですな。ADSL&FTTHマンセー。
ナローバンドユーザにJRE落させるのは無理。
雑誌につくようにならないかなJRE、 アナログPPPに8Mダウンロードはねぇ。
499 :
デフォルトの名無しさん :2001/07/19(木) 00:48
>>496 Microsoft が Sun Microsystems を買収すればいいんだと思うよ。
>>498 JavaPressやJavaWorldみたいなJavaマンセー本には
JREどころか、JDK1.3が丸ごと付いてるんだけどね。
>>500 そのあたりでなく、
日経netnaviとかPCJとかにつけば
「市民権あり」なんだけど、なんで今付いてないの?
↑プラグインの自動ダウンロードのことね
507 :
デフォルトの名無しさん :2001/07/19(木) 16:25
try catch で囲まれた文の中でreturnするとき、最後のretrun って何にしてます? 参照型なら retrun null ってやっちゃうんだけど public int getCount() { try { int i=0; return i; } catch (Exception ex) { ex.printStackTrace(); } return -1; }
>>507 >で囲まれた文の中でreturnするとき
この感性がスゲーよ。マジびっくり。むしろ感動。
>>507 Exception はなかったことに…ということでしょうか?
510 :
デフォルトの名無しさん :2001/07/19(木) 18:07
public FileWriter newMethod2() { try { FileWriter file = new FileWriter("fileName"); return file; }catch(IOException ex){ ex.printStackTrace(); } return null; } こうやらずに、こうやれってことですね public FileWriter newMethod() { FileWriter file = null; try { file = new java.io.FileWriter("filename"); } catch (IOException ex) { ex.printStackTrace(); } return file; }
すいません。横から割り込み質問なんですが、 こういうのって止めた方がいい書き方ですか? String hogeFile(File f){ if( f == null || !f.canRead() ){ return null; } //ファイルがなかったらサッサとnullで返す String s; //諸々の処理 return s; } returnって{}を越えて抜け出すので、 ↑のような書き方は避けるべきなのか疑問でした。 私は、結構多用してしまう癖が、、、、
tryの中から返すなってことだYO!
>>512 さすがにtryからすような荒技?はしません。
515 :
デフォルトの名無しさん :2001/07/19(木) 21:19
文字列をURLEncodeにするメソッドencode(java.lang.String) なのですが com.nttdocomo.net.*; とimportして writer.write(encode("name="+input_name.getText()+"&pass="+input_pass.getText())); としてるんですが それでビルドしても メソッドencode()はclass java.lang.Stringで見つかりません というエラーがでます。 文法上の間違いなのでしょうか?
516 :
神 :2001/07/19(木) 22:50
>>515 ちゃんとメッセージを読もう。
エラーの内容は意訳せずコピペしよう。
きみには英語を読む力が無いのだから。
>>515 超基礎知識だけどJavaのメソッド呼びだしって
ClassName.anyMethod() //staticメソッド
か
instanceName.anyMethod() //非staticメソッド
しかないのに
writer.write(encode("name="+input_name.getText()+"&pass="+input_pass.getText()));
~~~~~~~~~
はないだろう。
518 :
デフォルトの名無しさん :2001/07/20(金) 00:53
>>510 catchしないで上に投げるという選択肢もあるかと。
>>511 おいらは、そういう場合俺様Exceptionをthrowしとくぞ。
519 :
デフォルトの名無しさん :2001/07/20(金) 00:55
なんでtry内部でreturnしちゃダメなの?
>>519 少なくとも、tryの後にfinallyがあったら、マズイだろう
>>522 よく使うんだけど意識して作ってあったらマズくないよね。
ただし finally ブロックはリソースのクリーンアップに限定使用っ
て感じだけど。
>>519 returnする時にfinallyが呼ばれないってのは、
言語仕様的にクソだと思うがどうよ?
525 :
デフォルトの名無しさん :2001/07/20(金) 03:59
>>524 逆に、明示的に呼びたくないときはそうすればいいのかな
>>525 finallyをわざわざ書いてるのに、
「明示的に呼びたくないとき」なんてあるのか?
returnとfinallyが協調しないなんて、おかしいよ。
>>523 >524-526 あたりの解釈の幅ゆえに
try~catchでは、returnするのは
できれば止めた方がいいかと思われ
>>518 これが正解。
エラーが発生したことを、fileがnullかどうかで伝えるのではなく、
例外で伝えないとだめ。
そうしないと呼び出し元でcatchできなくなり、エラー処理が煩雑になる。
529 :
デフォルトの名無しさん :2001/07/20(金) 16:04
戻り値があるばあいは、 呼び出しで例外を処理するってことですか?
>>529 JavaはわからないのでC++でサンプルを書かせてもらいます。
×
if (method_open(filename))
{
if (method_read()) ...
if (method_write()) ...
method_close();
}
○
try
{
method_open(filename);
method_read();
method_write();
method_close();
} catch(exception &e)
{
error_proc();
}
method_openやmethod_readが例外を投げずにエラーコードで返すと、
呼び出し元のエラー処理って複雑にならない?
Javaは知らないから、下のように書けるかどうかわからないけど、
呼び出し元も呼び出される側もこのほうが単純でしょう。
public FileWriter newMethod() {
try {
FileWriter file = new java.io.FileWriter("filename");
return file;
} catch (IOException ex) {
ex.printStackTrace();
throw ex;
}
}
531 :
デフォルトの名無しさん :2001/07/20(金) 16:33
下の例だとコンパイルがとおりません。 try{}catch{}の下にreturnを入れる必要があります。 となると public FileWriter newMethod() { FileWriter file = null; try{ file = new java.io.FileWriter("filename"); return file; } catch (IOException ex) { ex.printStackTrace(); throw ex; } return file; } となります 最後に戻す必要があるので、 変数の宣言と同時にインスタンスを行うことができないのが まどろっこしいです
532 :
デフォルトの名無しさん :2001/07/20(金) 16:34
まちがえた。 try の中のreturnは不要です
533 :
デフォルトの名無しさん :2001/07/20(金) 18:32
ArrayList list=new ArrayList(); Double[] p=(Double[])list.toArray(new Double[0]); long num=p.length; for(long i=num;i>0;i--) System.out.println(p[i-1]); 上のようにすると最後の行で精度が落ちている可能性で止まってしまいます 配列pの長さをlongにするにはどうすればいいのでしょうか?
int型の上限って2,147,483,647だよね。 それで足りないってことは・・・ doubleは64ビットだから 8byte * 2,147,483,647 = 17,179,869,176 ・・・データのサイズが17GB超えてる? なんか凄いね、それ。 あと、toArrrayの使い方間違ってる気が。
>>534 doubleが2の64乗だと思ってない?
>8byte * 2,147,483,647 = 17,179,869,176
いろんな意味でツッコミ入りまくる計算やな……。
とりあえず、基本情報技術者試験でも受けてきなはれ。
んで基礎からシコシコお勉強。
まだ秋の申し込み間に合うで。
http://www.jitec.jipdec.or.jp/
つーかintの上限を越える長さの配列なんか作れるの?
スマソ。534 != 533だ。なんか紛らわしかったかも。 なんかおれ変なこと言ってる? 配列のサイズがintで扱いきれないってことは 配列の要素数が2,147,483,647以上ってことで、 それでdoubleひとつが8byte、ってことでああ書いたんだけど・・・。 単位(byte)落ちたのはミスだ。ごめん。 おれ、なんか頭茹だってる? あと、toArrayの使い方はあれでいいみたいだった。 あやまります。ごめんなさいごめんなさい。 ・・・なんか本気で不安になってきた。頭冷やしてきます。
お、いつのまにかいっぱい・・
>>537 intを越える事はできないんですね、にゃるほど
みんなには悪いけど・・あーすっきりした
超えることができないってのも正しいけど、要するに配列の要素は intが要求されるってだけのことだよ。言語仕様見れ。
げ、要素->添え字。超える->越える。鬱氏。
543 :
:) :2001/07/20(金) 23:32
>>189 早速のレスありがとうございます。
ごめんなさい。chgはすでに使ってるんですが、
できればIEのツールバー等に張り付くプラグイン型を
探しています。
544 :
:) :2001/07/20(金) 23:33
↑ごめんなさい。間違えました。
switchにもlong値が使えない罠
546 :
デフォルトの名無しさん :2001/07/21(土) 12:41
つうか、なんでJavaのint(signed 32bit)で不足するような配列添字や switchがあるんだYO!どんなコードかいてんだYO! doubleとlongは64ビットで、バイトコードレベルで2ワード消費するから、 単純に遅くなるぞ。必要もないのにわざわざ使うな、というのが普通じゃ ないの?
switch(arg) { case 0: ~ case 0x1ffffffff: ~ }
意外なところで直交性ないんだね。 sage。
直交性って何?
550 :
デフォルトの名無しさん :2001/07/21(土) 15:09
A使ってB出来るならB使ったってA出来るだろ ってやつだ
>>546 floatよりdoubleのほうが遅いの?
552 :
とおりすがり :2001/07/21(土) 21:49
>>551 floatよりdoubleの方がでかいし・・・
C言語使ってる頃に、 「floatはCPU内部で一旦doubleに変換して演算をして その後もう一度floatに格納する」って聞いたことがあるんだけど。 Javaではそういうことはないのかな?
555 :
デフォルトの名無しさん :2001/07/22(日) 00:08
Javaのdouble,longは、バイトコードレベルで、値自体にint,floatの 倍の2word使用するし、それに伴ってスタック出し入れにもint,float の倍か又はそれ以上の操作(スタック操作は1ワード毎にやるので)を 必要とするので、単純に遅くなると思うですよ。
556 :
名など無用 :2001/07/22(日) 00:28
RMIでのリモートオブジェクトと、EJBのSessionBeanの違いがよくわかりません。 おしえろ~~。
557 :
デフォルトの名無しさん :2001/07/22(日) 00:37
なんかjavacのsourcepathオプションが効きまへん。 カレントディレクトリにディレクトリhoge用意して その中にHoge.javaつっこんで javac -sourcepath hoge Hoge.java エラー: Hoge.java を読み込めません。 エラー 1 個 と非常につれないです。-sourcepath ./hogeでもダメです。 でもAntのjavacエレメントのsourcepath属性はちゃんと効きます。 なんでなんでなんで?
558 :
デフォルトの名無しさん :2001/07/22(日) 01:15
JTextAreaにappend()で文字を追加していく際に、 画面からはみ出す部分に対して、自動でスクロールさせたいのですが、 どうすればよいのでしょうか? スクロールの方向は縦方向のみだけでいいのですが。 JTextAreaにはJScrollPaneのコンポーネントとすることで スクロールバーをつけてみました。
自己解決しやした。 javac -sourcepath hoge hoge\Hoge.java ってせにゃあかんのね。 Cコンパイラとかのソースディレクトリ指定とは別物なのか。
560 :
デフォルトの名無しさん :2001/07/22(日) 01:32
>>552 >>555 はっはっは。それはどうかな明智君!
n += 1234.5; n -= 6789.0;
n *= 1234.5; n /= 6789.0;
を1億回ループさせたら(もちろんバイトコード考慮して別のメソッドで)
floatだと18.577秒、doubleだと14.1秒になりました。
ま、大量の浮動小数点を扱う場合は
メモリアクセスがボトルネックになってfloatのほうが都合よさげだけど。
561 :
560 :2001/07/22(日) 01:49
逆アセンブルしてギャース! n += 1234.5f; n -= 6789.0f; n *= 1234.5f; n /= 6789.0f; ってしなかったせいでdouble<->float変換が起きていたらしい。 んで正しい結果。 それでもfloatで14.1秒、doubleで14.1秒で同じです。
いちいちF付けるのもイヤだなあ 大体、有効桁数が6~7桁しかないでしょ
563 :
デフォルトの名無しさん :2001/07/22(日) 16:08
初歩的な質問なんですが String型のyをint型のxに代入するには yをIntegerクラスにしてから、int型にしてxに代入するんですよね yをxに直で代入できる静的メソッドってないんですか?
Stringをintには代入できません。なにワケワカランコト いってんの? 多分あんたが欲しいのは、 static int java.lang.Integer#parseInt(java.lang.String) でしょうけど。
>>563 x=Integer.parseInt(y); じゃあダメなの?(大爆笑)
夏休みだねえ…
夏休み厨房へ注意:まずドキュメントを読みましょう。
568 :
デフォルトの名無しさん :2001/07/22(日) 16:43
>>567 おにいちゃん、どきゅめんとってなぁに?
569 :
デフォルトの名無しさん :2001/07/22(日) 16:53
571 :
563 :2001/07/22(日) 17:10
>>564 おっさん、ちがうちがう。
まだ、独習JAVAのはじめのほうしか読んでないから
代入できるとか言っちまった。
>>565 アナタ正解
アナタスキ
>>564 と
>>565 が同じ事書いてると分からないみたいだな。
その本終えて、少しはドキュメント読んでから来い。
>>563 =571
意味不明 564と565のアドバイスは同じ意味だよ
574 :
デフォルトの名無しさん :2001/07/23(月) 12:57
JAVAで作ったGUI上からCで作ったプログラムを実行したいのですが どうしたらいいのですか? また、Cプログラムの実行結果をGUI上に表示することはできますか?
575 :
デフォルトの名無しさん :2001/07/23(月) 13:16
576 :
デフォルトの名無しさん :2001/07/23(月) 21:47
今までVC++をやってきて、これからもWin32アプリケーションでは VC++を使いつづけようと思っているんですが、どんな環境でも動く というJavaに魅力を感じます。C++ユーザーが分かり易いように書かれた Javaの入門書を教えてください。
SUN JAVA2て書いてある分厚い本
578 :
デフォルトの名無しさん :2001/07/23(月) 22:52
package hoge; import ClassName; //デフォルトパッケージのクラス public class xxx{ ******* } のようにデフォルトパッケージ内のクラスをimportしたソースをjavadocにかけようとしても importに.が無い といわれてしまいます どうすればうまくいくでしょうか?あるいはjacadocのバグですか?
すぐコンパイラのバグとか言い出す輩が最近多い。気をつけよう。
580 :
デフォルトの名無しさん :2001/07/24(火) 05:52
>>573 そう切り替えしたら、571が「普通の人にとってはお前らの言ってることなんて、
全然わからねぇんだよ」っていいそう
581 :
デフォルトの名無しさん :2001/07/24(火) 05:57
>>576 「プログラミング言語Java 第3版」がお勧め。
全般的な話題をカバーしつつ、冗長でもなくよくまとまっている。
ピアソンから出てる。
ISBN4-89471-343-8
582 :
でふ :2001/07/24(火) 09:12
独習Javaもなかなか
583 :
デフォルトの名無しさん :2001/07/24(火) 09:19
>>582 独習Javaは、あまりに初心者向けすぎる。
いままで、C++使ってきたなら、やはり
>>581 の
「プログラミング言語Java 第3版」がいいだろ。
584 :
デフォルトの名無しさん :2001/07/24(火) 09:49
例外のtyr catchはできるだけ、呼び出しに実装したほうがいいのですか? なんとなく、例外がおきる場所のすぐそばでスタックとレースを吐かせたい きがするので、結局例外がおきそうなメソッド全部にtry catchを実装してしまいます There's one general rule about it: try to catch the exception at as closest to the surface. This means that when A calls B, B calls C, C calls D and D throws an exception, very often it makes sence to implement the try..catch in A.
その例外に対して障害対応動作が出来るところ。
586 :
デフォルトの名無しさん :2001/07/24(火) 09:53
初心者向けすぎるんですか、ちょっとショック。その独習Javaで解答通り入力しても コンパイルエラーが出るので困ってます。 class ObjArray { public static void main(String args[]) { Object array[] = new object[5]; array[0] = new integer array[0]; array[1] = new float array[1]; //以下略 これの3行目以降でエラーが出ます。
object[5] → Object[5]
というか本当にこう書いてあったのか?ネタ?
589 :
デフォルトの名無しさん :2001/07/24(火) 10:14
すいません、コピペじゃないので間違いだらけでした。コピペ class ObjectArray { public static void main(String args[]) { Object array[] = new Object[5]; array[0] = new Integer(4); array[1] = new String("Hello"); //以下略 暑いのでぼけてます。もうちょと自分で考えてからあぷするよにします。
エラーメッセージも貼り付けてくれ。
591 :
デフォルトの名無しさん :2001/07/26(木) 12:46
GPLじゃないフリーPNGエンコーダのクラスないですか? いまのところ見つかったのはGPLだけだった。
593 :
デフォルトの名無しさん :2001/07/26(木) 19:56
関数の戻り値を成功したか否かといったステータスにつかうことは結構あることだと 思いますが、javaでこれをしたときに、関数の中での計算結果などを返すには 引数で配列やオブジェクトを渡す以外にないんですか? 例えば、ただint型の値がほしいだけなのにそれを何かのクラスで包むのは面倒な気がするんですが。
594 :
デフォルトの名無しさん :2001/07/26(木) 20:42
595 :
デフォルトの名無しさん :2001/07/26(木) 20:45
>>593 プライベートなフィールドをつくっておく。
これでだいたい解決するよ。
596 :
デフォルトの名無しさん :2001/07/26(木) 20:54
>>593 引数に計算結果を返すようなメソッドは恰好悪いので使うべきじゃない。
こういう場合は、適当なクラス作って
それに対するメソッド呼び出しの形をとるのが普通。
# 実行が成功したかどうかは返り値か例外で伝える。
597 :
593 :2001/07/26(木) 21:33
これ連結リストを作っつているときに思ったんですが。 まず 「データと次のNodeオブジェクトへの参照を持つ変数」を持っているNodeクラスと 連結リストを管理するListクラスを作りました。 そして、Listクラスで要素を取り出したり、加えたりするようにしたんですが、 例えば要素を取り出すメソッドは空リストの時は取り出せなかったということを 示すために戻り値をステータスすると、値を返すには引数でNodeオブジェクトをとって それに取り出した値をセットして返すという方法にするということでしょうか? ところで、Javaで連結リストをつくるときはこの方法でいいんでしょうか? Cで作るときのをまねて作ってみたんですが、Javaでnewして作ったオブジェクトって Cでいう(自分でfreeできない)mallocで確保した領域にあるって考えていいんですか? 実はCもあんまりだったりします。 質問多くてすいません。
598 :
デフォルトの名無しさん :2001/07/26(木) 21:44
なんの為に?つうのが今一わからんけど。Collectionクラス(とその派生クラス) 使えばいいことだし。 単に練習的に作るのならかまわないけど。Cと同じような実装をJavaで書くと いびつなのが出来るかも。Collection系ってC++で言うSTLみたいな機能提供してる けど実装の仕方が全く違うので参考になるんでは?
>けど実装の仕方が全く違うので参考になるんでは? まったく違う??
C++は天プレ使ってるつう意味だったんだけど(´д`;) Javaの方が素直な実装に感じる。
602 :
593 :2001/07/26(木) 22:27
>>598 すいません。ソースはどうやってみるんですか?
>>599 >なんの為に?
練習です。アルゴリズムを勉強しようと思って。
Cもまだまだ勉強中なんですが、Javaも面白そうだなと。
ちなみに、C++はぜんぜんやったことありません。
603 :
デフォルトの名無しさん :2001/07/27(金) 01:01
>>602 JDKダウンロードしてインストールしたらsrc.jarとかいうファイルがあるから
>jar xvf src.jar だ
zipとおなじだから
zipとしてむりやりその辺のアーカイバでも展開できるかもね。
604 :
デフォルトの名無しさん :2001/07/27(金) 01:05
gcc 3.0がでて、ついでにgcjなるものも出たらしいのですが 詳しいことがわかりません。 これがJavaのネイティブコンパイラだということはわかったのですが だれか、もっと詳しい話知りませんか?
604じゃないけど知らんかったので見てみた まだまだかな(´д`;) しかしこれSunから文句でないんかな
うえーん、JakartaプロジェクトのRegExp使ってみたけどエラーが頻発 使わないほうがいいのかこれ?
608 :
デフォルトの名無しさん :2001/07/27(金) 15:57
ボタンが押されたら、 そのボタンのある画面を表示しているブラウザ自体を閉じることってできます?
609 :
デフォルトの名無しさん :2001/07/27(金) 16:04
>>608 JavaScriptと連動できるのなら…。
610 :
デフォルトの名無しさん :2001/07/27(金) 16:22
>> 609 即レス、有難うございます。 う~ん 難しそうだな~
611 :
デフォルトの名無しさん :2001/07/27(金) 17:26
>>610 import netscape.javascript.JSObject;
JSObject js = JSObject..getWindow(this);
js..call("close", new Object[0]);
みたいな感じだったかな?thisはAppletね。
あと、Netscape4.xにはいってる"java40.jar"(だっけ?)にclasspath通しておいてね。
全部うろ覚え。どこにドキュメントあるかも忘れちゃったし。
# Java Plug-InからLiveConnect使えるようなブラウザって無いのかな?
612 :
デフォルトの名無しさん :2001/07/28(土) 01:33
WindowsにJ2SEをインストールすると、 SDKのフォルダとProgram Files\JavaSoft\JRE\1.3.1のフォルダに ランタイムとクラスライブラリが入りますけど、 この2つの関係とか役割とかってどーなってるんでしょうか? というか、そもそもなんで2ヶ所に入るんでしょう? 中身も微妙に違うみたいだし。
613 :
デフォルトの名無しさん :2001/07/28(土) 01:47
Windowsにjavaが搭載されなくなるって聞いたんですけど、 これはWindowsでjavaが出来なくなるっていう意味ではないですよね? JDKのようなソフトをインストールすれば、Javaでプログラミングしたり Javaを実行したりすることが出来るんですよね? これからも。
614 :
デフォルトの名無しさん :2001/07/28(土) 01:56
そりゃランタイム(VMっていうの?)インストールすればうごくでしょ。 まあ、標準になりえなかったわけで、期待するのはよしたほうがいいと思う。
615 :
デフォルトの名無しさん :2001/07/28(土) 02:08
JavaSoftにあるのがRuntime、ここにはコンパイラは入ってない コンパイラはSDKフォルダにある >613 MSのVMってすごーく古いから今でもSUNからRuntime取ってきといた方がいい
617 :
parao :2001/07/28(土) 13:49
i-アプリ作成中なんですが、例えばサーバーには認証用のcgiとして 1か0の文字を返してくるものとします。 アプリ側ではそれをInputStreamReaderで読み込んで 変数に代入します InputStream reader=new InputStreamReader(connect.openInputStream()); char[] buf=new char[50]; int ch; int i=0; while(-1!=(ch=reader.read()) buf[i++]=(char)ch; Stream flag=new Stream(buf,0,i); String success=new String("1"); Stream failed=new Stream("0"); if(flag==success){ 処理A } if(flag==failed){ 処理B } }chatch{IOException・・・・・・ といような感じなのですが 1ないし0の文字はたしかに返ってくるのですが この場合どうしてif文でどちらにもマッチしません これだけの情報でご教授できましたらよろしくおねがいします
618 :
parao :2001/07/28(土) 13:53
訂正 ×Stream failed=new Stream("0"); ○String failed=new String("0");
619 :
デフォルトの名無しさん :2001/07/28(土) 14:06
>>617 ==はインスタンス参照(CやC++でいうところのアドレス)自身の比較。
直前にNEWしたインスタンスと==比較しても絶対に真にはならないです。
インスタンスの中身の値の比較には Object#equals(Object)のオーバー
ライドメソッドを使いましょう。(ユーザ作成クラスで、クラスの内容
比較をしたいなら、必ずこのメソッドのオーバーライドをしておきま
しょうね)
String#equals(String)は、Stringインスタンスが持っている文字列
同士を比較して、同じならtrue、異なるならfalseを返します。
620 :
デフォルトの名無しさん :2001/07/28(土) 14:17
byte b = in.readByte(); char c = (char)b ってやると、ASCIIはちゃんと読めるですが、SJISの漢字がうまく読めません。 (signed→unsigned?) Socketのサンプルで、localhostの80ポートでGETした内容を、g.drawString したいだけなのですが、どうすればうまくいくでしょうか。
621 :
デフォルトの名無しさん :2001/07/28(土) 14:24
>>620 漢字とかの2バイト文字は1バイトではそもそも読めないですよ。
あと、InputStream直読みは文字コード変換などで問題があるので、
Readerを使いましょう。
たとえば、
socket socket = new Socket(/*接続先*/);
Reader in = new InputStreamReader(socket.getInputStream());
などとして、Readerを使いましょう。行単位で欲しいならBuffered
Reader等で更にラップするのもありです。
(Readerは、バイト列→文字コード変換を内部で勝手にやって
くれるストリーム読みクラスです)
622 :
parao :2001/07/28(土) 15:15
早速ためしてみました 3日も悩んでたのでまじ感動っす ありがとうございます
623 :
デフォルトの名無しさん :2001/07/28(土) 15:22
Java/CollectionFramework ↓ RougeWave/Tools.h++ ↓ C++/STL という順序でSTLを理解したおいらはアホでしょうか?
624 :
デフォルトの名無しさん :2001/07/28(土) 15:43
>>623 JAVAから始めたなら別にいいんじゃないの。
>622 CからJavaに移ってきたって感じだね(´ー`)y-~~
>>624 最初はC→C++→Javaでした。
C++の時の仕事で、みんなはTools.h++&Threads.h++を使っていた
のだけど、おいらは何がなんだか(そもそもこいつらがなんなのか)
分からんかった。
今はすぐわかる。Javaマンセー。
627 :
デフォルトの名無しさん :2001/07/28(土) 17:42
なぜか外のクラスを読む事ができなくなった。 aaa.javaからbbb b=new bbb();という文が読めなくなった。 心当たりと言えば・・昨日tomcat,apache,mysql,j2ee,などを入れた事。 うわーどこまで大丈夫だったかも知らん。また苦労してダウンロードして インストールするのもいやだー。誰か助けてクレー
助けてほしいならどういう状況に陥ったか詳しく教えてクレー # 多分クラスパスの関係だと思うが上の情報だけじゃちょっと...
629 :
デフォルトの名無しさん :2001/07/28(土) 18:01
>>628 オーサンキュー
上の文だとbbb b=new bbb();の文がシンボル解釈できませんです
確かにクラスパス訳分からず書いたり消したりしてたからなあ
とりあえずautoexec.batは以下。
SET PATH=C:\jdk1.3\bin;%PATH%;
SET PATH=C:\j2ee\bin;%PATH%;
SET JAVA_HOME=C:\jdk1.3
SET J2EE_HOME=C:\j2ee
SET TOMCAT_HOME=C:\tomcat
SET CLASSPATH=C:\jdk1.3\bin;%CLASSPATH%
SET CLASSPATH=C:\jdk1.3\lib\tools.jar;%CLASSPATH%
SET CLASSPATH=C:\jdk1.3\lib\mm.mysql-2.0.4-bin.jar;%CLASSPATH%
SET CLASSPATH=C:\jdk1.3\lib\j2ee.jar;%CLASSPATH%
SET CLASSPATH=C:\jdk1.3\jre\bin;%CLASSPATH%
SET CLASSPATH=C:\tomcat\lib\servlet.jar;%CLASSPATH%
なんか足りないのありますか?
630 :
デフォルトの名無しさん :2001/07/28(土) 18:45
class A { ~ String flag=new String("abc"); ~ } class B { ~ TextBox testbox=new TextBox(A.flag,16,1,TextBox.DISPLAY_ANY); ~ } この場合class Bで使用されてるテキストボックスはなぜ空になるのか 皆目検討がつきません。 代入と参照をメインクラスのメソッドなどにしてもうまくいきません というより、もっと簡単に普通参照できますよね? まじ頭いたいっす!
classpathに.が入ってないに1票
632 :
デフォルトの名無しさん :2001/07/28(土) 18:58
630の者なんですが class A{ public static String flag=new String(); flag=new String("abc"); } でした 訂正です
>>631 穴があったら入りたいです・・
大騒ぎしてた・・
バグじゃないですかとか書いてたら死ぬしかないとこだった・・
>>632 A.flagはnew String()だったってことなんでしょ?
flag = new String("abc")はいつやってるの?
どこかのメソッドの中だとしたら、そのメソッドコールしないと
"abc"に変わらないよ。
>632 省略しすぎでよくわからん class A{ public static String flag = String("abc"); } でいいんじゃないの。あと怖いからfinalもつけとけ。
636 :
デフォルトの名無しさん :2001/07/28(土) 21:13
失礼しました その場合 AというクラスのとあるメソッドからInputStreamReaderから変数に確保した文字列を、別のBというクラスのメソッドで参照したいというこです。
>>636 じゃあ決まりだ。Bのクラスメソッドで参照した時点では
まだ初期値のままなだけだよ。ちゃんと同期取れてるか?
638 :
デフォルトの名無しさん :2001/07/29(日) 01:52
age
639 :
デフォルトの名無しさん :2001/07/29(日) 13:04
なるほど同期っすね。わかりました。ちょっくら がんばってみます またお世話になりにこないようにがんばる次第であります
640 :
名無しさん@LV2001 :2001/07/29(日) 13:06
プログラムの1部分なんですけど、 setMes(a.name+'はb?',3000); を表示させて、2秒後に setMes(a.name+'はcかな?',3000); を表示させて、さらに3秒後に setMes(a.name+'はそれともD',3000); を表示させるには どうすればいいでしょうか??
641 :
名無しさん :2001/07/29(日) 13:43
どうすればいいのかな?
>>640 java.lang.Thread#sleep(int millisec);
教エテ君の大量生産にならないよう気をつけてね・・・
>>643 夏休みの宿命ですな。参考書買う金も意欲もない、他人の血と汗の
結晶を剽窃する事に何の罪悪感も感じないアホ学生に限って、ネット
サーフィンする余裕はあるんだよね。逝ってよし。
ネット環境恵まれてるんだからJavaSDKでも検索すればすむことなのにね。
646 :
デフォルトの名無しさん :2001/07/29(日) 23:20
すみません。初心者なんですが、Java(やC)でプログラムを書く場合、 COBOLでは COMPUTE A = B / 156.3 * 1.25 * 4.2 のようにおこなっていた計算を double a; double b; : a = b / 156.3 * 1.25 * 4.2; のようにそのままおこなって宜しいのでしょうか? ある本によると、「COBOLは十進数での計算をしてくれるが、Java 、C言語などは2進数での計算をしているので、計算誤差がでる」 等と書いてあったのですが。
647 :
WILL :2001/07/29(日) 23:25
>>646 2進数で小数点をどう取り扱ってるか勉強しなされ。
そーすれば自ずと解答が見えてくるだろう。
つーか、Javaに限った問題じゃないだろ・・・。
>>646 浮動小数点計算の誤差が嫌なら、
例えば100倍しといてintで計算して、10^-2を別途保存しときなされ。
649 :
ナナシ :2001/07/29(日) 23:40
SDKのドキュメント見たのですが、わからないので教えてください。 (探し方が悪いと思うのですが) スレッドを待機させるのは スレッドオブジェクト.sleep(秒数) だっと思うのですが、スレッド使っていないときの待機って どうすればよいのでしょうか? waitだとちょっと違うようですし・・・ 教えてください。
Thread.sleep(int millisec) staticメソッドってしってますか?
>650 ありがとうございました。 もっと勉強します。 では!
>646 10進で計算ってBCDなのか?勝手に四捨五入してくれるのか? 有効桁数がどれくらい必要なのか調べて普通のdoubleでいいのか もっと桁数が必要なのか判断すれ。
>>649 >スレッド使っていないときの待機って
スレッドを使ってないって何?
インスタンス生成
↓ run()呼び出し
スレッド開始
↓ waitやsleep
スレッド待機
↓ notifyや時間切れ
スレッド再開
↓ run()抜け
スレッド終了
このどこなのかサパーリワカラン。
>653 たとえば、単純に一秒おきに数値を増やしていく処理を for分で100回まわすとか・・・です。
655 :
デフォルトの名無しさん :2001/07/30(月) 11:05
>637 やはりだめでした。いろいろ調べたんですが ちなみに同期がとれてるかというところの意味をちょっと 詳しく教えてほしいのですが
656 :
デフォルトの名無しさん :2001/07/30(月) 11:21
>654 for(100回){ Thread.sleep(1000); count++; } じゃだめなのか?バックグラウンドでやりたいならこの処理を 別Threadで回すこと。ただしcountの同期が必要。 >655 もうちょっと詳しく書かないと何がしたいのかわからんって。 637じゃないので637の言ってる意味は不明。
657 :
デフォルトの名無しさん :2001/07/30(月) 11:26
すいませんでした えっとですね、 class A { //HttpConectionで接続 while(-1!=(ch=reader.read()))buf[i++]=(char)ch; String data=new String(buf,0,i); //新しいパネルクラスを呼び出す } class NewPanel extends Panel{ Label label=new Label(data); add(label); //この場合の(data)が参照できないんです } という感じなのですが
658 :
デフォルトの名無しさん :2001/07/30(月) 11:29
追加 //新しいパネルクラスというのが下のNewPanelクラスの呼び出しっす そこには書いてませんが メインクラスからDisplay.setCurrentでそのパネルを呼び出しています そこまでは大丈夫です
なんか説明下手な奴だなー String data=new String(buf,0,i); の後に NewPanel np = new NewPanel(); が続くのか? class NewPanelのdataはどこから取ってきた? コンパイルさえ通らないと思うけど。 素直にNewPanelのコンストラクタにその文字列渡せばいいんじゃないの?
660 :
デフォルトの名無しさん :2001/07/30(月) 11:50
すんません、初心者を盾にするつもりはないのですが (それ以前の問題っすね。) NewPanelのコンストラクタに文字列を渡すということは class Aからclass NewPanelで宣言した変数に文字列を渡すってことですか?
661 :
デフォルトの名無しさん :2001/07/30(月) 11:57
あのー、 パネルやラベルの中身を枠で囲んで表示させるってできますか? あと、例えばGridLayout(5,5)を 表にして表示させることってできます? よろしくお願いします。
662 :
デフォルトの名無しさん :2001/07/30(月) 12:59
>>660 変数のスコープ(有効範囲)を意識して自分のソースのその<data>って変数を
よく追いかけてみ
あらかたNewPanelにあるdataっていう変数は
classAのdataって言う変数と名前は同じだけどスコープが異なる
別の変数なんだろ
663 :
デフォルトの名無しさん :2001/07/30(月) 13:02
了解、もうちょい気合いれて精進します!
>660 NewPanel np = new NewPanel(data); ってコンストラクタを作る。 >661 border使う、つうか根本的にTable(or JTable)使え。
665 :
661 :2001/07/30(月) 14:33
すみません。 Table とはどんなものなんでしょうか? 手元にある参考書には何も載ってなくて・・・。 どこかいいサイトご存知なら、教えてください。
666 :
デフォルトの名無しさん :2001/07/30(月) 15:16
>>665 夏厨が、Tableとは、タブレットという意味だ
おもにお絵かきする道具じゃ
668 :
ナナシ :2001/07/30(月) 21:07
sleepの件はどうもありがとうございました。 repaint()についてなのですが、ドキュメントだと 「このコンポーネントを再描画します。 このメソッドは、このコンポーネントの update メソッドを可能な限り速やかに呼び出します。」 としか書いてないので悩んでいます。 以下のクラス(数字が増えていくアプレット)を実行すると、スレッドでup()を呼び出しているときは、 再描画してくれるのですが、止めたあと(止めてから5数字があがる)は、 カウントアップされずにいきなり5あがった数字が出てきます。 repaint()が効いていないということですよね?? 原因がわかる方教えてください。 よろしくお願いします。
669 :
ナナシ :2001/07/30(月) 21:08
import java.applet.*; import java.awt.*; import java.awt.event.*; import java.util.*; public class test extends Applet implements Runnable,ActionListener{ Thread MyThread; int count; Graphics offGraphics; Label lb; public void init(){ String c = new String(); count = 0; Panel p = new Panel(); Button b = new Button("OK"); b.addActionListener(this); p.add(b); setLayout(new BorderLayout()); add("South",p); lb = new Label("0"); lb.setAlignment(Label.RIGHT); add("North",lb); } public void paint(Graphics g){ String c = new String(); lb.setText(c.valueOf(count)); } public void run(){ Thread thisThread = Thread.currentThread(); while(MyThread == thisThread){ up(); try{ MyThread.sleep(1000); }catch(InterruptedException e){ break; } } }
670 :
ナナシ :2001/07/30(月) 21:08
public void up(){ count++; if(count > 1000){ count = 0; } repaint(); } public void actionPerformed(ActionEvent e){ String arg = e.getActionCommand(); String c = new String(); if(arg.equals("OK")){ if(MyThread == null){ MyThread = new Thread(this); MyThread.start(); count = 0; }else{ MyThread = null; for(int i = 0;i < 5;i++){ up(); try{ Thread.sleep(1000); }catch(InterruptedException e1){ break; } } lb.setText(c.valueOf(count)); } } } public void update(Graphics g){ paint(g); } }
>>668 -669
ぜんぜんソースが足りねえぞゴラ
つーかスレッド止めたらup()ひいてはrepaint()を呼ぶのはどこなんだゴラ
つーか質問の仕方へたすぎだゴラ
つーかおまえもう少し頭整理してから質問しろゴラ
ごめんよ669までしかあぷされてない状態で 書き込んじまったよ
JDKドキュメントのThread#sleepの説明には 「現在実行中のスレッドを、指定されたミリ秒数の間、スリープ (一時的に実行を停止) させます。」 ~~~~~~~~~~~~~~~~~~~~~~~ ってあるだろ。 65行目のsleepは58行目で起動したスレッドをスリープするんじゃなくて もとから動いていたデフォルトのスレッド(正確にはAWTのイベント用スレッド)を 一時停止してるだけだよ。
ついでに言うと actionPerformedみたいに画面のイベントで呼び出される処理は sleepしたり時間のかかる処理はしてはいけない。 そうしないとその処理が終了するまでは画面が固まってしまって ウントモスントモ言わなくなる(処理系が多い)。 そのあいだrepaintの処理も後回しにされる。 だから5秒間画面が固まった後突然5カウントあがったように見える。
>>669 -970
なんと言うか何をやりたいのかソースからさっぱり見えてこない
何やりたいのか先書いた方がいいんじゃないかい?
根本的に変なつくりに見える。
labelを別スレッドから更新してるがスレッドセーブだっけ?
スレッド使うならもうちょっとマルチスレッドの勉強すれ。
バカ厨増えたなあ。
バカ厨しか居ませんが?
679 :
デフォルトの名無しさん :2001/07/31(火) 01:16
韓国のヤフーチャットでハングルが表示されなくて困っています。 他のページは表示されます。javaページの場合は、どうしたら表示されるのでしょうか。 よろしくお願いします。
680 :
679 :2001/07/31(火) 01:16
681 :
七菜詩讃 :2001/07/31(火) 01:43
実行するとあらかじめ登録しておいたサイト群へ ウィンドウを開きアクセスしてくれるプログラム作りたいのですが Javaアプリケーションだとほぼ無理みたいです。 アプレットなら可能ですが、アプレットの場合って やっぱり、他のファイル(テキストファイル)に対して 読み書きってできないのでしょうか?
682 :
デフォルトの名無しさん :2001/07/31(火) 01:46
<強迫性人格障害の診断基準> アメリカ精神医学界 DMS-IV 秩序、完全主義、精神面および対人関係の統制にとらわれ、柔軟性、開放性、効率性が犠牲にされる。 成人早期に始まり、種々の状況で明らかになる。 以下のうち4つ(またはそれ以上)で示される。 1.活動の主要点が見失われるまでに、細目、規制、一覧表、順序、構成、予定表にしばられる。 2.課題の達成を妨げるような完全主義を示す。 (例:自分自身の過度に厳密な基準が満たされない という理由で1つの計画を完成させることができない。) 3.娯楽や友人関係を犠牲にしてまで仕事と生産性に過剰にのめりこむ。 (明白な経済的必要性はない。) 4.道徳、倫理、価値観についての事柄に、過度に誠実で良心的かつ融通がきかない。 5.感傷的な意味のない物の場合でも、使い古した、または価値のないものを捨てることができない。 6.他人が自分のやるやり方に従わない限り、仕事をまかせることができない。また一緒に仕事をすることができない。 7.自分のためにも他人のためにも、ケチなお金の使い方をする。お金は将来の破局に備えて貯めるべきだという歪んだ信念を持っている。 8.堅さと頑固さを示す。
>>682 漏れも結構あてはまるなぁ、トホホ
これに全部当てはまる人は、車輪の開発が好きそうだね、なんとなく
685 :
679 :2001/07/31(火) 09:04
どなたか教えてください。
ふふふ。車輪の再発明とは言えども、 吾輩はF1カー向けのニュータイヤの開発のつもりだ。
687 :
デフォルトの名無しさん :2001/07/31(火) 09:21
セ酩マシシソゥ
>>679 ロケール変えてみれば?
Windowsだったらコントロールパネルの地域のオプションってとこ。
ていうか板違いのような。。
>>681 Javaアプリじゃほぼ無理ですって結論はなぜ出てきた?
HttpURLRequestとか便利なクラスもあるし
HTML表示もサポートされてるのに
690 :
デフォルトの名無しさん :2001/07/31(火) 13:33
RIFF MP3のタグ情報(SIフィールド?)をJavaで読みたいんですが、だれか 教えてくれませんか。 ていうか、作ってみたんだけどうまくLISTチャンクの場所が見つからない んですよね。ソースつけてみましたんで添削をお願いします。引数にRIFF mp3 ファイルを指定して"LIST"と出力されればいいんですけど。 #Javaでこんなことしてる方が変なのか・・・ import java.io.*; class Riff { public Riff(String fileName) { loadFile(fileName); } public void loadFile(String fileName) { byte[] riffChunk = new byte[12]; byte[] dataChunk = new byte[8]; byte[] buf = new byte[4]; try { FileInputStream fis = new FileInputStream(fileName); fis.read(riffChunk); fis.read(dataChunk); System.arraycopy(dataChunk, 4, buf, 0, 4); dataSize = l2b(buf); fis.skip(dataSize); fis.read(buf); System.out.println(new String(buf)); fis.close(); } catch (Exception e) { e.printStackTrace(); } } public int l2b(byte[] b) { return ((b[3] & 0xff) << 24) | ((b[2] & 0xff) << 16) | ((b[1] & 0xff) << 8) | (b[0] & 0xff); } public static void main(String args[]) { Riff riff = new Riff(args[0]); } }
>>690 これJavaの質問じゃねーだろ
RIFFの仕様書と
バイナリエディタで自分でなんとかシロ!
692 :
690 :2001/07/31(火) 14:17
↑言われると思ったよ。Javaの問題じゃねーなと思ったんで、 JHBに投稿しなかったわけで(w 言われずとも仕様も勉強したし、mp3infpのソースなんかも 読んだよ。それでできないから聞いたんだけどダメかねぇ。 682よりはJavaの話題ってことで勘弁してくれ。 #ところでRIFF MP3の正式な仕様書ってどこだ? それはそれとして、こういうソフトを作るときには構造体が ないのは痛いね。あとエンディアンの違いとか。 ま、力業でどうにでもなることなんだが、スマートな解決方法 があったら知りたいわけだ。次はもうちょっとためになるレスが ほしいね。>691
693 :
高校生 :2001/07/31(火) 15:15
フレーム分割したページで1つ目のページ内をクリックした時に 2つ目のページにしくんだJAVAがクリックを監視するJAVAプログラム は作ることが出来ますか?もし出来るならソースを教えてください
694 :
デフォルトの名無しさん :2001/07/31(火) 15:22
695 :
デフォルトの名無しさん :2001/07/31(火) 15:33
次のスレ立てる時はJavaScriptは板違いと1に書いてください。
JavaとJavaScriptの違いもわかってないだろうから無駄でしょう
何故JavaScriptはJavaScriptという名前になったのでしょうか?
699 :
高校生 :2001/07/31(火) 17:32
すいません、今までいろいろネットや図書館で調べたのですが わかりませんです。JAVASCRIPTではできないような気がするのですが、 HTMLを2つに分けて1つにアプレットをおいてもう1つのページの クリック状況をを監視したい(ここにはアプレットもスクリプトも無しで)という内容なのですが できる、できないかどうかわかりますか?くれくれ君で申し訳ないですが せめて役に立つ書籍などありましたらお願いします。
WM_RBUTTONDOWNおよびWM_LBUTTONDOWNを拾ってください。 否応なしに監視できます。ただし、動的接続機構にしないとだめです。
条件はあるけど無理ではないかも 実装したことは無いので嘘があるかもしれんけど 1)Frame1にFormボタンを付ける、ハイパーリンクでもいけるかも 2)サーバー側にGET,POST,PUTに応答できるプログラムを用意する 3)Frame2のAppletにその情報を送る 1)のハイパーリンクにサーバースクリプトの位置+実際のリンク先URLに すりゃいいような。
>>699 もうちょっと具体的にどんな感じの物を作りたいのか書いたら?
>>701 さんありがとうございます、やってみます。本当の目的は
パワーポイントをオンラインブロードキャストじゃなくて
JAVAを使いクリック情報をサーバーに送ってクライアント側の
IEでフレーム分割内で開かれたPPTのスライドショウに同期したい
のです。だから2つに分ける必要があると思いました。
とにかく何か手がかりが見つかると思うのでやってみます。
ありがとうございました
704 :
デフォルトの名無しさん :2001/07/31(火) 20:42
しつもんなんですが、 テキストフィールドとボタンがあったとして、 テキストフィールドにFocusListener、ボタンには ActionListenerをaddしてあるとします。 この時、フォーカスがテキストフィールドにある状態で ボタンを押下した場合、FocusListenerのfocusLost()と ActionListenerのactionPerformed()が動作しますが、 この2つの順番は保証されますか? 実際に動かしてみると常にfocusLost()が先に呼ばれている ようには見えるのだけど・・。
705 :
705 :2001/07/31(火) 23:24
はじめまして。
JDKのことをおききします。
http://www.ecs.cst.nihon-u.ac.jp/~mizocchi/b_java/jdkmeth.html に書いてあるとおりに設定したつもりですが、
コマンドプロンプトで、
javac ***.java
とすると、
コマンドまたはファイル名が正しくありません.
と出ます。
やはり環境設定が間違っているのでしょうか。ちなみに、
AUTOEXEC.BAT
は
SET windir=C:\WINDOWS
SET winbootdir=C:\WINDOWS
SET COMSPEC=C:\WINDOWS\COMMAND.COM
SET PROMPT=$p$g
SET TEMP=C:\WINDOWS\TEMP
SET TMP=C:\WINDOWS\TEMP
SET PATH=C:\perl\bin;C:\WINDOWS;C:\WINDOWS\COMMAND;C:\Perl\bin;;C:\latex\bin;C:\JOK\bin
SET TEXMFMAIN=c:/latex/share/texmf
SET TEXMFCNF=c:/latex/share/texmf/web2c
SET CLASSPATH =.
になっています・・・。
706 :
デフォルトの名無しさん :2001/07/31(火) 23:38
>C:\JOK\bin ↑ C:\JDK\bin じゃねーの?
707 :
705 :2001/07/31(火) 23:47
いえ、JOKというフォルダを作ったのでC:\JOK\binで合ってると思うんですが。
Javaの質問じゃないとおもんだけど・・・・
709 :
705 :2001/08/01(水) 00:21
すっ、すいません。 逝ってきます。
>>703 ・・・PPT?って、もしかしてOffice?
ブロードキャストなんたらって、もしかしてofficeが自分で
投げてるの?それって、転送データのフォーマットって公開
されてるの?あるいは、自分で調べるか?
Javaでやるのは遠い道のりのような気がするが、最近変なものを
Sunが作ったので、使って見ると良いかもしれない。
なんとその名もCOM-Javaブリッジ。(・・・あのSunがそんなもの
を作るようになったのね。と思わないか?)
Sunのディベロッパーズコミュニティかどこだかにおちてるはずだ
から使ってみそ。
711 :
679 :2001/08/01(水) 01:56
>>679 です。
>>688 さん、そこでは、韓国を選択することは出来ません。
どうしたら表示されますでしょうか。
困っています。よろしくお願いします。
>>707 dir C:\JOK\bin\javac.exe
で確かめれ
つーかパスを通し方くらい理解しろ
714 :
デフォルトの名無しさん :2001/08/01(水) 16:15
Javaでクッキーを扱うことは出来るのですか? もしあるならば参考サイトを教えてくれるとうれしいです。
716 :
デフォルトの名無しさん :2001/08/01(水) 19:04
ありがとうございました。 早速試してみます。
717 :
デフォルトの名無しさん :2001/08/01(水) 22:30
変数の型を知るほうほうってないんですか?
718 :
デフォルトの名無しさん :2001/08/01(水) 22:57
>>717 "変数"の型なら宣言文を見るべし。
"変数に代入されているインスタンス"の型なら、"変数名.getClass()"だ。
719 :
717 :2001/08/02(木) 00:06
>>718 class Kata{
public static void main(String args[]){
のargs[0]ってstring型ですよね
720 :
デフォルトの名無しさん :2001/08/02(木) 00:08
>>719 違う。(java.lang.)String
>>717 リフレクションで可能な事は可能です。
Class.forName("クラス名").getField("フィールド名").getType().getName()
とか。
723 :
デフォルトの名無しさん :2001/08/02(木) 10:30
import java.util.*; class ThreadX extends Thread { Calendar d; int h,m,s; public void run(){ while(true){ try{ Thread.sleep(1000); } catch(InterruptedException ex){ ex.printStackTrace(); } h = d.get(Calendar.HOUR_OF_DAY); m = d.get(Calendar.MINUTE); s = d.get(Calendar.SECOND); System.out.println(h + ":" + m + ":" + s); } } } class clock { public static void main(String args[]){ ThreadX tx = new ThreadX(); tx.start(); } } 一秒ごとに時刻を表示させたいんですけど、何がいけないんでしょうか?
>>723 とりあえずどういう状況なのか書け、
例外ならスタックトレースをコピペしろ。
>>723 publicなクラスが必要。
Calendar dがnull。
726 :
723 :2001/08/02(木) 13:49
Calendar d がnull なるほど。 d = Calendar.getInstance(); を加えたら、うまくいきました。 お騒がせいたしました。
ごめんpublicなクラスはいらなかった。 ちっと勘違い。鬱。
728 :
704 :2001/08/02(木) 14:25
ちなみにJDKは1.18の話です。
729 :
デフォルトの名無しさん :2001/08/02(木) 23:22
バックグラウンドでプログラム走らせておいて、 windowsの終了時にプログラムも終了するようにしたいんですけど JavaからWindowsの終了を検出する方法ってあります? なにもしなくてもwindowsが終了させてくれるかと思ったんですが、 win98では「プログラムからの応答がありません」っていうダイアログがでて、終了してくれません。
730 :
ジャバーバリアン :2001/08/03(金) 13:40
透過Gifを読み込みそれを各々のイメージにコピーすると 透過が失われてしまいますが、どのようにしたら透過を保てますか? よろしくおねがいします。 ダブルバッファも待ちもしてませんが・・・ import java.applet.*; import java.awt.*; public class test extends Applet{ int MONA_IMAGE_COUNT = 9; Image loadImage; Image kaniImage[] = new Image[MONA_IMAGE_COUNT]; Image wki; Graphics wkg; public void init() { loadImage = getImage(getDocumentBase(), "mona.gif"); for (int cc = 0; cc < MONA_IMAGE_COUNT; cc++) { wki = createImage(20, 20); wkg = wki.getGraphics(); wkg.drawImage(loadImage, 0, 0, 20, 20, cc*20, 0, (cc+1)*20, 20, this); kaniImage[cc] = wki; } } public void paint(Graphics g){ g.fillRect(0, 0, 480, 360); for (int cc = 0; cc < 9; cc++) { g.drawImage(kaniImage[cc], cc*25 + 5, 35*cc, this); } } }
731 :
デフォルトの名無しさん :2001/08/03(金) 15:19
Javaではそんな事はできないage
>>729 JNI使ってWin32APIでも呼び出せば?
>>730 とりあえずjava.awt.CropImageFilterつかって
Image image = createImage(new FilteredImageSource(loadImage.getSource(), new CropImageFilter(x, y, w, h));
かな。
Component.createImage(int, int)で返るImageってアルファチャンネル持ってないんだよね。
透過色も使えないみたいだし。
結局みんなBufferedImageのTYPE_INT_ARGB使ってるのかな?
誰かもっといい方法教えてくだされ。
735 :
730 :2001/08/03(金) 21:48
>>733 さま
ありがとうございます。
ImageFilterは難しくなるので、分割しないでそのまま、
範囲絞って描画することにしました。
というか、アフォな質問すみませんでした。
透過画像と不透過画像で場合分けしてやがるし>Imageクラス なんて前時代的な。
737 :
729 :2001/08/04(土) 00:22
>>734 jviewでやってたんで、wjviewにしたら終了するようになりました。
ただ、wjviewってwin98に標準でついてないみたいですね。
wjview.exeも一緒に渡せばいいんだけど。
738 :
MRJ 野郎 :2001/08/04(土) 01:21
誰か MRJ 使ってる人いますか? その人に質問したいのですが、スクロールバーを作って表示させ て、ずっと矢印を押してると落ちません? 前からずっと思ってたんですけど。 みなさんどうですか?
739 :
717 :2001/08/04(土) 03:30
717 名前:デフォルトの名無しさん 投稿日:2001/08/01(水) 22:30
変数の型を知るほうほうってないんですか?
718 名前:デフォルトの名無しさん 投稿日:2001/08/01(水) 22:57
>>717 "変数"の型なら宣言文を見るべし。
"変数に代入されているインスタンス"の型なら、"変数名.getClass()"だ。
719 名前:717 投稿日:2001/08/02(木) 00:06
>>718 class Kata{
public static void main(String args[]){
のargs[0]ってstring型ですよね
720 名前:デフォルトの名無しさん 投稿日:2001/08/02(木) 00:08
>>719 違う。(java.lang.)String
721 名前:デフォルトの名無しさん 投稿日:2001/08/02(木) 01:01
>>717 リフレクションで可能な事は可能です。
Class.forName("クラス名").getField("フィールド名").getType().getName()
とか。
>>718 ,720,721
どうも有り難うございました。
740 :
デフォルトの名無しさん :2001/08/04(土) 06:30
すいません。どなたかCocoon2って使っておりますか? Cocoonで勉強しようと思ったら2なんてものがあったんで。 1と2って結構違うんですかね 新鮮情報お願いします
741 :
デフォルトの名無しさん :2001/08/04(土) 15:56
質問です。分かる人がいたら教えてください・・・。 コンソールに出力する文字を必ず決められた位置から表示させるメソッドみたいなの ありますか? 例えば abc 12345 5 dd 11 6 みたいな感じで、それぞれ変数の値がどんな桁でも左そろえ、右そろえを したいんです。 お願いします。
742 :
デフォルトの名無しさん :2001/08/04(土) 15:57
↑ すみません、ずれちゃいました・・・。 間を空白で埋めてたんですが。
って失敗。&nbsp; を半角で。
745 :
デフォルトの名無しさん :2001/08/04(土) 16:28
746 :
デフォルトの名無しさん :2001/08/04(土) 17:14
エスケープシーケンスを駆使すればうまく動くだろう。って 本当に出来るかは分からんが。
java.text.MessageFormat sprintfに似たようなことがある程度できるよ。 コレじゃだめっすか?
748 :
デフォルトの名無しさん :2001/08/05(日) 05:29
だれかdnsjavaの使い方知らない?
750 :
デフォルトの名無しさん :2001/08/05(日) 09:12
テキストファイルから一行読み込んで文字列変数に取得したいんだけど。 FileInputStreamじゃできないよねえ?
Reader系使い賜え
752 :
デフォルトの名無しさん :2001/08/05(日) 17:54
フォルダを作成する方法教えて!
753 :
デフォルトの名無しさん :2001/08/05(日) 17:57
>>752 無理なんです。Javaでは。VCに乗り換えましょう。
754 :
デフォルトの名無しさん :2001/08/05(日) 17:59
File#mkdir() File#mkdirs()
Directory = Folder Are you Okey?
>>757 マイコンピュータやコントロールパネルやゴミ箱がディレクトリだと?
759 :
デフォルトの名無しさん :2001/08/05(日) 18:18
え゛、あれフォルダって呼ぶの?
761 :
デフォルトの名無しさん :2001/08/05(日) 19:15
JAVA Appletを使って画像処理を行いたいのですが 特定のピクセルの色を取得する方法がわかりません。 というよりそもそもどうやって画像を扱えばいいのかわかりません。 GraphicsクラスとImageクラスを使って円なんかを表示させる方法はわかったのですが…
java.awt.image.BufferedImage
764 :
デフォルトの名無しさん :2001/08/06(月) 00:06
ファイルを行単位でコピーしたいんだけど? BufferedReaderで読んでBufferedWriterで書くの? なんか途中でデータが失われる(謎
>>764 多分君のバグ。
ファイルクローズしないで main() 抜けてんじゃない?
767 :
デフォルトの名無しさん :2001/08/07(火) 10:54
768 :
デフォルトの名無しさん :2001/08/07(火) 13:17
ウィンドウのサイズをマウスでちょっといじってやらないと、 表示されるはずのパネルが表示されないって どういうことなんでしょうか?
770 :
デフォルトの名無しさん :2001/08/07(火) 14:11
771 :
デフォルトの名無しさん :2001/08/08(水) 12:05
Labelで表示させる文字の色だけを設定したいんですけど、 そんなことできますか?
コンポーネントに描画される文字の色は Component.setForeground(Color c) で設定できる。 LabelはComponentのサブクラス。
773 :
デフォルトの名無しさん :2001/08/08(水) 15:49
>>772 遅くなってすみません。
色、変わりました。
ありがとうございました。
774 :
デフォルトの名無しさん :2001/08/08(水) 15:52
VM(Virtual Machine)のバイトコードを勉強したいんですけど. やっぱ「JAVAバーチャルマシン」よ「JAVA仮想マシン仕様」っすか?
775 :
774 :2001/08/08(水) 15:53
>「JAVAバーチャルマシン」よ「JAVA仮想マシン仕様」っすか? 「JAVAバーチャルマシン」と「JAVA仮想マシン仕様」っすか? です.
777 :
デフォルトの名無しさん :2001/08/08(水) 22:29
JDK1.4(β)のnioを使って、Selectorでselectしてみたのですが、 socketを相手側から閉じてもOP_READでひっかかりません(selectから戻ってこない)。 例外も起こりません。どうやって検出するのが正しいんでしょう?
778 :
デフォルトの名無しさん :2001/08/08(水) 23:36
779 :
デフォルトの名無しさん :2001/08/09(木) 08:55
>>778 試してみます。
ただ、OP_READには以下のように説明があるので、正しいはずなんですが・・・
If the selector detects that the corresponding channel is ready for
reading, has reached end-of-stream, has been remotely shut down for
further reading, or has an error pending, then ...
Windows98ではprintln()の出力がJava consoleに出たけど Windows2000だと出てこないんだよね。なんでなんだろう? Windows2000でJava consoleに出す方法ってありませんか?
? 出るよ?
>>781 えー?なんでウチは出ないんだろう・・・
ie5.01,JavaSDK1.2.2なんだけど...
他の機械にJava2SDK1.3.1を入れてie5.5の上で実行したら出ました... ieより新しいバージョンのJavaSDKを入れればいいということなのだろうか?
784 :
デフォルトの名無しさん :2001/08/09(木) 23:21
abstract class A class B extends A class C extedns C というクラスがあります クラスAのメソッド m1 をクラスBでオーバライドしています。 クラスCでも必ずm1を実装させたいです。 実装を強制させるインターフェースを作って、それを クラスAとクラスBとクラスCにimplementsするのってアイデアはどうでしょうか? あまり美しいやり方じゃない気がするんですが・・
785 :
デフォルトの名無しさん :2001/08/09(木) 23:34
>>784 んなことで悩むようなら、面倒だからm1のロジックを実装している
小さなクラス作ってコンポジションにしろよ。
786 :
779 :2001/08/09(木) 23:57
OP_READ/OP_WRITE/OP_CONNECTが有効なのですが(validOps()で取得)、 どのビットを立てても select から戻りませんでした。 β版とはいえ、こんな単純なので動作しないとは思えないんだけど・・・
787 :
デフォルトの名無しさん :2001/08/10(金) 00:24
DATEクラスのgetTimeメソッドがなんだかちょうど20msくらいおきの値しか 返してくれないのですが、もっと細かく刻ませることはできないでしょうか?
>>787 System.currentTimeMillis()
は、どうでしょう?
789 :
787 :2001/08/10(金) 00:38
ダメでした・・・。内部は同じ実装みたいです。 ちなみにこんな感じ。 997371459566 997371459586 997371459616 997371459626 997371459646 997371459666 997371459686 997371459707 997371459727 997371459747 997371459767
>>787 Windows だろ? AT 互換機の仕様で内部クロックの最大精度は
たしか 10~20[m sec] くらいまでだよ。嫌なら Sun か HP, RS/6000
でも買いなはれ。
>>790 そうなの?
AT互換機で10nsec単位で計測してるんだけど、(RTLinux使用)
これってどうやってうのかな?
Win2k+J2SE1.4Betaなんだけど、 Thread.sleep(int)はやたらと精度が高い気がする。 誤差がほとんど1ms以下におさまってるっぽい。 ちなみにcurrentTimeMillisの誤差はこちらでも最大約10ms。
793 :
787 :2001/08/10(金) 01:15
>>790 あれ? AT互換機ってRTC積んでて1ms単位で時間取得できると
思うんですが・・・。
Javaの実装の問題じゃないんですかね?
やりたいのはフレームレートの固定化です。10ms単位でしかとれない
なら50フレーム/secにすればいいんですが・・・。
>>790 確かじゃないな。保証される精度は 50msec くらいだ。
大学時代の計測でぶち当たった。
# だったはずだが、ネットも MSDN も見つからない...
795 :
デフォルトの名無しさん :2001/08/10(金) 01:22
JNIで...
797 :
787 :2001/08/10(金) 01:41
あーと、すまん、確かに 1msec 単位で値が取れるが、その値の 保証される精度が 50msec くらいで限界という意味です。
そして、ただいまハード板の初心者スレにお伺いを立ててます (藁
>>787 sleepしてnotifyするだけの別スレッド作って
メインのスレッドを定期的に起こさせるってのはどう?
sleepの精度が高ければの話だけど。
>>800 OSのスケジューラーに依存する
98/Meだと10ms単位だったと思う
802 :
OS素人 :2001/08/10(金) 02:51
クロックチックが100Hzで無いマシンってあるの? 高精度クロックとやらはどうやって時間を測ってるの?
ペンティアムタイマー
804 :
デフォルトの名無しさん :2001/08/10(金) 03:29
WM_TIMERよりはマシ、って程度>800
根本的にJavaでそんな精度必要なプログラム作るな ほとんど実行環境依存になるし
win2000sp2環境で、デフラグをしたらその後から、 ダイアログやテキストボックスのアルファベットが、 斜体に成ってしまうという現象に困っています(SDK1.3,SDK1.3.1環境共に) とりあえず、SDKの両方を再インストールしたのですが、 やっぱり斜体のままでした。 どなたかこんな現象を聞いたことのある方いませんか? これ、一体何だろう???
聞いてるのにage忘れてました、スマンです。
808 :
806 :2001/08/10(金) 06:52
今度こそ、age
っていうか言ってることがわからない。 何の何がどうなった?
810 :
806 :2001/08/10(金) 08:12
>>809 すみません。詳しく書くとこんな感じです。
win2000(sp2)上でJBuilder4を使っています。
今日JBuilderを立ち上げた時に、画面のエディター部分・メニューバー部分を除いた画面各所で、
アルファベットなどのASCII文字が全て斜体(イタリック)で表示されるようになってしまいました。
(設定の各ダイアログにまでこうなっています。)
※漢字・ひらがななど全角文字は斜体にはなっていません。
最初は、JBuilderの設定だと思っていたのですが、
JBuilderからJavaプログラム(swingを使ったJavaアプリケーション)を動かすと、
そこでも同様に、swingコンポーネント上のテキストのうち、
アルファベットなどのASCII文字が全て斜体(イタリック)で表示されるようになっていました。
JBuilder4に付属のJava1.3.0のSwing周りがおかしくなってるのか?と思って、
JDK1.3.1を使う設定にしているForteなどを立ち上げ、Swingを用いるJavaアプリケーションを見ると、
そこでも何故か同様の現象が起きていました。
そこで、JBuilder4・JDK1.3.1共に、再インストールしましたが、
状況は変わりませんでした。
「このパソコンに何か自分はしただろうか?」と思い浮かべると、
この現象が起きるようになった直前に、JDKのあるドライブにデフラグをかけています。
タイミング的に、原因になりそうな操作がこれくらいしか思いつきません。
(デフラグが原因でJavaがおかしくなるとは考えにくいのですが)
しかし、他のWindowsアプリケーション(IEやEXCELなどなど)に、
ASCII文字が斜体になるようなことは起きていません。
ネットで調べてみたのですが、このようなSwing上のASCII文字が斜体になってしまう
という現象についての記述が見つかりませんでした。
で、困ってしまって、こちらに書き込んだ次第です。
(長文スミマセン、、、、、、)
811 :
ポンコツ :2001/08/10(金) 10:53
iアプリでMSNのメッセンジャーみたいな常時接続の チャットのサンプルどこかにありませんか?
Safeモードで起動してから再起動するっつーのは?
formのプロパティはどうなってんのよ
ant1.3+JDK1.3.1って相性悪い? JDK1.3は問題ないが1.3.1はclassic(1.2以前)って判断されるけど。
815 :
デフォルトの名無しさん :2001/08/11(土) 07:46
しまったage
816 :
デフォルトの名無しさん :2001/08/11(土) 09:43
javacってどうやってバージョン調べるんだ?
817 :
名無しさん :2001/08/11(土) 12:53
2進数→10進数の変換で聞きたいのですが System.out.println(Integer.parseInt("1010101111000101", 2)); System.out.println(Integer.parseInt("101010111100010111000100000101", 2)); System.out.println(Integer.parseInt("1010100111100010111000100000101", 2)); System.out.println(Integer.parseInt("10101011101100010111000100000101", 2)); 上記3つはうまくいったが最後のがうまく行きません・・・。 32桁を越える2進数の変換はどうしたら良いのやら。
818 :
名無しさん :2001/08/11(土) 12:56
>>817 自己レス
・・・Long型つかって解決。アホか俺。
819 :
774 :2001/08/11(土) 16:34
820 :
デフォルトの名無しさん :2001/08/12(日) 04:17
javacのエラーメッセージって英語にできないんでしょうか?
821 :
デフォルトの名無しさん :2001/08/12(日) 04:19
823 :
初心者1号 :2001/08/12(日) 14:01
例えば、 /A/B/C.class というファイルがあって、 /A/B/D.jar を実行して、 その C を Class.forName (String) で読み込める様にしたい、 例えば、Class cls = Class.forName ("C"); の様にしたい のですが、どうすれば良いでしょうか? 単純にやってもダメみたいなので・・・・。 パスを追加する手続きが必要かなと思うのですがどうも分かりません。 よろしくお願いします。
824 :
823 :2001/08/12(日) 14:15
あ、ちなみに、開発時には C.class の存在は分からないとして、考えて 下さい。つまり、"C.class" の部分は変わると考えて下さい。 ですから、コンパイル時に決定はできないんです・・・・。
825 :
デフォルトの名無しさん :2001/08/12(日) 14:47
>>824 マニフェストファイルにC.classファイルへのクラスパス
を記述して、JAR作る時に取り込む。
826 :
823 :2001/08/12(日) 15:06
>>825 レスありがとうございます。
ええとですね、アプリケーションが動作している時にいわば「動的」に
生成したいので、そういった方法が欲しいのですが・・・・。
可能なんでしょうか?Jar ファイルに含めちゃうと簡単なんですが、
外にあるとやり方が分からなくって・・・・。
補足です。分かりにくくてすみません。 C.class のファイルの場所は分からないものとして下さい。 ですから、C.class のファイルの場所を渡して、その Class を作成 するという事がしたいのです。
828 :
夏厨 :2001/08/12(日) 16:15
デバックとコンパイルの意味を教えてください。 デバック=機械語になおす コンパイル=実行する でいいんですか?
de・bug[di:b] 害虫を駆除する com・pile[kmpil] 資料を集める
831 :
なる厨 :2001/08/12(日) 16:21
逆アセンブルの意味も教えてくらはい。
ケケケケケケケケケケケケケッケケケ
833 :
デフォルトの名無しさん :2001/08/12(日) 16:55
>>827 んでわ、java.net.URLClassLoaderを作って、
loadClass("クラス名")でロードですな。
834 :
デフォルトの名無しさん :2001/08/13(月) 00:30
ええと、今、Java 1.1.8 なんで、それに応じたクラスでお願いいたいのですが・・・・。 面倒ですみません。
835 :
デフォルトの名無しさん :2001/08/13(月) 00:37
>>834 じゃあ、自分でjava.lang.ClassLoaderのサブクラス作る
しかないぞ。というか、いい加減自分で調べろ。
836 :
夏厨 :2001/08/13(月) 03:37
デバックとコンパイルの意味を教えてください。 教えてくださいm(__)m
838 :
デフォルトの名無しさん :2001/08/13(月) 03:45
デバッグ バグをとること コンパイル 実行可能にすること 大雑把にこんな感じ。大雑把過ぎるけど。
839 :
デフォルトの名無しさん :2001/08/13(月) 08:22
>>837 =838
System.out.print("教えてくれて有り難う。");
840 :
デフォルトの名無しさん :2001/08/13(月) 08:42
842 :
デフォルトの名無しさん :2001/08/13(月) 08:52
>>841 アセンブラもあるから心配するな。目も疑わなくていいぞ。
オレも最初は幻覚かと思ったけどな。
843 :
ほれ :2001/08/13(月) 08:53
846 :
ほれ :2001/08/13(月) 09:13
>>845 他にも逝けそうなネタいくつかあるよ。
もし戻ってきたら検索してみな。
847 :
839 :2001/08/13(月) 10:06
>>840 System.out.print("\n教えてくれて有り難う\n");
848 :
デフォルトの名無しさん :2001/08/13(月) 10:18
独習javaでいま、ビット演算子(117ページ)のところにきたのだが 2進が16進いまいち理解できないっす。 いちおうヤフーで検索してみたけど、意味不明な説明のHPばっかでたんですが なんとか16進は理解できたんですが 2進はさっぱりです。 どうかぼくにおせーてください。
850 :
848 :2001/08/13(月) 15:55
>>849 URLセンキュウです
なんとなく、理解できました。
理解できたかどうか試すために
2進と16進の問題を出してくださいm(__)m
851 :
ほれ :2001/08/13(月) 18:10
852 :
Java厨房 :2001/08/13(月) 18:40
ガイシュツだったらスマソ。 Javaウィザードの皆様、どうかご教示くださいませ。 <<sizeof演算子がないJavaでレコードの読み書きはどうされてますか?>> CとかC++だったら class(もしくは typedef struct ) BankRecord{ public: int No; //個人番号 char [14] KanjiName; //氏名 double Kingaku; //口座金額 }; ・ void hogeccho::hogehoge() { ・ ・ BankRecord *p; p = new BankRecord(); fread(p,sizeof(BankRecord),1,fp); ↑ で、↑のところでpにデータが読み込まれるでしょ。でわJavaだったらどうするのでしょうか? Vectorクラスのsize()メソッドもレコードサイズを指定せにゃならんし。 ファイルをseekさせるには、クラスメンバのサイズ合計を全て「肉眼で確認して」増分をseekせよ! という事なんでしょっか?(メンバが100ぐらいあるclassだったらどうするんでしょうか?)
>>852 C++でもそういう書き方は怖くてできない。
すこしコンパイルオプションを変更したり、コードを書き換えたり
しただけで動かなくなる可能性がある。
>>852 シリアライズについて勉強してはどうか。
855 :
デフォルトの名無しさん :2001/08/13(月) 21:53
>>852 ObjectOutputStreamとObjectInputStreamではどう?
856 :
Java厨房 :2001/08/13(月) 22:19
>>853 >>854 >>855 ありがとうございます。
自分は厨房(しかもプログラムは本業ではない)なのでファイルのread()とwrite()で
それぞれデータメンバの処理を書くと、「readでは入っているけれどwriteでは入って
いない」という事になりかねず、またデータメンバが増えたときにも対応が面倒なの
でC/C++ではクラスへのポインタを直接読むことをし続けています。
シリアライズ、ObjectOutputStream・・・・ですか・・・。
しばらく修行してみます。( ;´Д`)
857 :
デフォルトの名無しさん :2001/08/13(月) 22:58
>>856 修行なんかいらん。オブジェクト指向万歳。
import java.io.*;
public class Hoge implements Serializable{
public int val = 10000;
public String name = "hoge";
public static void main(String args[]){
ObjectOutputStream out = new ObjectOutputStream(
new FileOutputStream(new File("hoge.dat"));
out.writeObject(new Hoge());
out.close();
ObjectInputStream in = new ObjectInputStream(
new FileInputStream(new File("hoge.dat"));
Hoge obj = (Hoge)in.readObject();
in.close();
System.out.println(obj.name +" "+obj.val);
}
}
858 :
Java厨房 :2001/08/13(月) 23:37
ありがとうございます。ありがとうございます。 ありがとうございます。ありがとうございます。 ありがとうございます。ありがとうございます。 ありがとうございます。ありがとうございます。 ありがとうございます。ありがとうございます。 ありがとうございます。ありがとうございます。 ありがとうございます。ありがとうございます。 ありがとうございます。ありがとうございます。 ありがとうございます。ありがとうございます。 ありがとうございます。ありがとうございます。 ありがとうございます。ありがとうございます。 ありがとうございます。ありがとうございます。 new FileOutputStream(new File("hoge.dat")); out.writeObject(new Hoge()); out.close(); ここらへんに感動!やったぁー!! ついに我々は神の技術を手に入れたよー!BorlandC++5.0で戦いつづける 俺に、救世主が現れた。 明日から俺の新しい戦いが始まります。有り難うございました!!
横槍ですけど、BufferedOutputStream かませないと出力が極端に遅く なりますよ。
860 :
デフォルトの名無しさん :2001/08/13(月) 23:53
>>858 Serializeは便利だけど、その代わり読み書き時には、
全てのインスタンス変数の内容とともに、内部で動的な型情報を
残らず読み書きするので、非常に冗長なデータになるぞ。
また、インスタンス変数にSerializableなオブジェクト参照が
あった場合、その中まで全部Serialzeしていく(ディープコピー
のようなもの)ので、気をつけないと大量のメモリコストと、
マーシャリングコストを払う事になる。
まあ、最近はXMLなどという冗長この上ないデータフォーマットが
流行るくらいだから、ストレージやメモリの節約なんか考えなくて
いいってことなんだろうけど。
861 :
デフォルトの名無しさん :2001/08/14(火) 00:12
javaを使う上で、重宝なテキストエディタを教えてください。 なるべくフリーだとうれしい!
862 :
Java厨房 :2001/08/14(火) 00:20
>>860 うおぉー。とりあえず有り難うございます。
今、俺の頭の中には熱いものが煮えたぎっているのでしばらく立ってから
考えようと思ってます。
で、try{}catch(){}を付け加えてコンソールに
hoge 10000
と出すことができました!!
万歳!!万歳!!万歳!!万歳!!万歳!!万歳!!万歳!!万歳!!万歳!!
notepad.exe
xyzzy
865 :
ほれ :2001/08/14(火) 00:33
>>861 JBuilder5
補完もしてくれるしプロジェクトも管理してくれる。
コンパイルまでしてくれるしなんとデバッグ機能つき。
866 :
デフォルトの名無しさん :2001/08/14(火) 00:48
ObjectStream→ByteArrayStream変換と、RandomAccessFile (又はJDK1.4のMemoryMappedFile)を併用すれば、高速な 永続化オブジェクトI/Oの仕組みが単純なものなら簡単に書ける。 ファイルI/Oを自前では使いこなせない、なんでもかんでもDB使って、 DB毎の導入コストと特殊な仕様に振り回されつづけるうちの会社の 基地外アホ親父ドモも、流石にここまでファイル操作が簡単になれば、 自分でファイル入出力するようになって…くれないかなあ…
edit.exe
前にやった仕事は、秀丸とSDKでやってた。
870 :
デフォルトの名無しさん :2001/08/14(火) 02:44
超初心者質問です。 ファイル操作をするプログラムで、*.closeの文を挿入しないとファイルに文字を書くことができませんが、これは具体的にどういう操作を行っているからそうなるのでしょうか?
871 :
デフォルトの名無しさん :2001/08/14(火) 03:00
>>870 closeする直前までは、I/Oバッファのメモリ上に書きこんだだけ。
沢山書き込んでバッファがあふれるか、closeが呼び出されること
で実行されるバッファフラッシュという動作によって初めて、I/O
バッファに書き込んであったデータがストレージデバイスに書き
込まれる。
ディスクに書くという操作は、メモリ操作より遥かに遅いうえに、
書き込み準備のディスクのシークとかも物凄く遅いので、書き込み
はなるべくまとめてやって、見かけの処理性能をあげましょうという
発想。
872 :
デフォルトの名無しさん :2001/08/14(火) 03:46
>>871 さん
なるほど~~すごくよくわかりました!!これからも御ひいきに。
>862くらい素直に喜ぶ人がいると、何かほほえましいくてイイなぁ
876 :
デフォルトの名無しさん :2001/08/14(火) 07:41
> はなるべくまとめてやって、見かけの処理性能をあげましょうという 「見かけの」は外すべきだと思うなぁ。
877 :
デフォルトの名無しさん :2001/08/14(火) 09:21
JNDIってまだよく分かってないんだけどODBCにシステムDSN登録するような もの?プログラム内ではハードコーティングじゃなく登録してある名前を使えば いいってそういうことだよね? EJBってさらによく分かってないんだけどMTSにCOM登録するようなもの? 進んでる人アンサーよろしく
878 :
デフォルトの名無しさん :2001/08/14(火) 10:26
SwingのUndoに関して、どっかいいチュートリアルページってない?
880 :
ぐは :2001/08/14(火) 12:55
beansわけワカメじゃ
881 :
878 :2001/08/14(火) 13:20
>879 ありがとう さっそくみてみます。
882 :
ざこ :2001/08/14(火) 17:11
すみません。下のプログラムでaとbを足してなぜ答が195になるのか (何故21にならないのか)さっぱり分かりません。どなたか教えてちょ。 public class Sample2 { public static void main(String args[]) { char a = 'a'; char b = 'b'; int c; c = a + b; System.out.println(c); System.out.println(Character.getNumericValue(a)); System.out.println(Character.getNumericValue(b)); } } 実行結果 195 10 11
System.out.println( a ); System.out.println( b ); でどうなる?
System.out.println((int)a); System.out.println((int)b); で97、98のはず。
886 :
ざこ :2001/08/14(火) 17:49
>883 え?実行結果ですか? 実行結果 195 a b と、相変わらずcは195ですが・・・
887 :
ざこ :2001/08/14(火) 17:54
もたもたタイプしてる間にレスが2つも(あせ >882、883 ASCII文字コード(97と98)での計算結果が195と 言う事だったのですね みなさん、ご親切にありがとうございました
888 :
ざこ :2001/08/14(火) 17:55
げ、間違えた 上は884と885です
889 :
1 :2001/08/14(火) 21:13
890 :
蛇足 :
2001/08/14(火) 21:36 >887 >ASCII文字コード(97と98)での計算結果が195 これがUNICODEの計算結果で、 Character.getNumericValue()が返すUNICODE数値は、 UNICODEとは別もの 半角数字やローマ字は、ASCIIとUNICODEでは同じにな っているんだって 882がやりたかったのは、多分 int c = Character.getNumericValue('a')+ Character.getNumericValue('b'); System.out.println(c); ではない?