【初心者】Java質問・相談スレッド113【大歓迎】
1 :
デフォルトの名無しさん :
2008/03/01(土) 18:16:51 プログラミング言語Javaに関する質問スレです。
JavaScript, Ajaxの質問は、ここでは受け付けていません。
Web製作板をご利用ください。
http://pc10.2ch.net/hp/ 過去ログ、関連スレッド、よくある質問とその回答など、
質問をする前に、貴方が見なければならないサイトについての情報は、
下のwikiのページにまとめてあります。
http://www.wikiroom.com/java/ これからJavaでプログラミングを始めたいが、何をすればいいかわからない人も、
wikiからのリンクをおたどりください。
よくある質問
・「コマンドまたはファイル名が違います」
「'javac' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。」
「Exception in thread "main" java.lang.NoClassDefFoundError: 」
http://www.wikiroom.com/java/?path,classpath ・String に == は使うな。equals() を使え。
・「\12288 は不正な文字です。」
文字リテラル以外で全角スペースは使えません。半角スペースに。
・その他の質問→「APIのjavadoc見ろ」
前スレッド
【初心者】Java質問・相談スレッド112【大歓迎】
http://pc11.2ch.net/test/read.cgi/tech/1202467704/ /* 既出の質問や、他に適切なスレが存在する質問は、容赦なく無視されます。
質問をする前にwikiで過去ログ、関連スレ、FAQをチェックしてください。 */
また、当スレで質問をするかたは、回答をもらえたときに、
wikiの更新をして頂ければ、忝のう存じます。
次スレは
>>980 あたりで。
おっおっおっ
5 :
デフォルトの名無しさん :2008/03/01(土) 20:10:49
並行処理
7 :
5 :2008/03/01(土) 21:02:39
>>6 コネクションを張りまくる方法でしょうか?
そこまで頑張る必要は無くて、ブラウザのダウンロード速度と同程度であれば良いのですが、
現状だと、20MBのファイルをダウンロードするのに、
ブラウザ(キャッシュクリアした状態で):数秒〜十数秒程度
Javaプログラム:数十分
と大きな差が出てしまっています。
>>5 read()で1バイトずつ読み込んでたら遅くなるのは当然
read(byte[])で一度にたくさん読み書きするといいよ
1byteづつ読んで、1byteづつ書き込んでるからとかじゃねーの バッファサイズ指定して読み込んで、書き込みも最後に一気にやるように修正汁 (read() じゃなくて read(byte[] b) のほうを使う)
10 :
9 :2008/03/01(土) 21:34:15
スーパー被った
11 :
5 :2008/03/01(土) 22:10:53
初歩的な質問すみません System.Math.Powを使用したらコンパイルできません シンボルを見つけられません。 シンボル: 変数 Math 場所 : java.lang.System の クラス MouseListenerを使用したらコンパイルできません abstract でなく、java.awt.event.MouseListener 内の abstract メソッド mouseExited(java.awt.event.MouseEvent) をオーバーライドしません。 ネットで調べたらどちらも同じ階層内に存在するということだったので 普段使用しているフォルダ以外のフォルダに保存してみたけど無意味でした。 どうすればいいのでしょうか
13 :
9 :2008/03/01(土) 22:44:58
>>11 俺の環境で試したら、ブラウザもプログラムも差無かったけど。
コード晒してみたら?
>>12 どういう状況なのかよくわからん。わかりやすく書いてくれ。
Math.pow() を使いたいなら、System. は不要
(System.Math は、 java.lang.System クラスの Math というフィールド
という意味になってしまう)
すいません そのまま載せてみます。 import java.lang.*; class Sample { public static void main (String args[]) { double x; x = Math.pow(2,16); System.out.println(x/2); } } をコンパイル Sample.java:7: シンボルを見つけられません。 シンボル: 変数 Math 場所 : java.lang.System の クラス x = System.Math.Pow(2,16); ^ エラー 1 個
すいません Math 解決されました。
>>14 さんの言うとおりです。System不要でした。
さらに別の箇所に上書きをしていましたorz
もう一箇所不明な点 質問させてください Planet1.java:6: Planet1 は abstract でなく、java.awt.event.MouseListener 内の ab stract メソッド mouseExited(java.awt.event.MouseEvent) をオーバーライドしません 。 public class Planet1 extends Applet implements Runnable,MouseListener ^ 注:Planet1.java は推奨されない API を使用またはオーバーライドしています。 注:詳細については、-Xlint:deprecation オプションを指定して再コンパイルしてくださ い。 エラー 1 個 サンプルプログラムをそのまま打ち込んだだけなのになぜかコンパイルできません。
mouseExitedを実装してやれ。空実装でいいから。
あと、java.lang.*はimportいらない
>>17 どこのサンプルか知らんが、エラーメッセージどおり mouseExited をオーバーライドする必要がある
クラスの中に
public void mouseExited(MouseEvent e) { }
って書いとけばおk
ところで、何書いてるのか理解せずにサンプルを見たまま打ち込むだけってのは、あまり勉強にならないよ
どうもすみません。 サンプルを打ちながら書式を学習していたところなのです。 public void mouseExisted(MouseEvent e){} でも問題ないですか?すでに書き込んでありますが不可でした。
解決しました 入力ミスでしたorz Existed -> Exited で解決
23 :
デフォルトの名無しさん :2008/03/02(日) 00:57:42
一番効率の悪いソートってなんですか?
ソートする気がないソート
ランダムに並び替えて上手い順番に並ぶのを待つソート
26 :
デフォルトの名無しさん :2008/03/02(日) 01:01:30
ボゴソートだっけ?
望む順番に並ばないように並び替えるソート
29 :
デフォルトの名無しさん :2008/03/02(日) 01:13:57
>>28 それはえーじゃんw
一瞬で終わるぞwww
途中で何故かyield()が入り他のスレッドにソートを任せようとするソート
31 :
デフォルトの名無しさん :2008/03/02(日) 01:21:08
>>29 ソートは望む順番にするのが目的なんだから目的を達成できない限り永遠に終らないぞ
ソートアルゴリズムを名乗るなら、 最低でもソートされる可能性がないとインチキだと思う。
「アルゴリズム」だからな。 その手順で確実に問題が解決される保障がないと。
効率の悪いアルゴリズム、って普段はあまり考えないなw ランダムに探索する手法が一般的に一番効率悪くなるんだろーか
真面目にやると実時間内に終わらない場合、 ある程度の不確実性を許容する事で ランダムなアルゴリズムが効力を発揮することはある。 遺伝的アルゴリズムとか。
それはアルゴリズムじゃなくてヒューリスティックなロジック。
ソートであってソートアルゴリズムを名乗っていなければok
遺伝的アルゴリズムは別にランダムじゃないしな ルーレット選択とか突然変異とかは局所最適解に陥るのを防いでるだけだろー
全スレ
>>998 様 すみませんもう少しお付き合いを。
>インスタンスメソッドの synchronized 修飾子は synchronized(this){ } でメソッド内全てを囲ったのと等しい。
>クラスメソッドの synchronized 修飾子は synchronized(Queue.class){ } と等しい。
そうなるとサンプル
http://www.techscore.com/tech/J2SE/Thread/5-2.html Consumerのqueue.get()呼び出しが先に実行されたらget()内部でwait()してしまい、
Producerのqueue.put()呼び出しはsynchronized(this)のブロックにより、メソッド内に進入できなくてnotifyAll()を実行できずにデッドロックしてしまうように思えるのですが?
まだ理解が足りないですか?
サイトのソースコードしか目に入ってませんでした。その下にしっかり解説がありました。orz >wait()メソッドは獲得しているロックを解放するため、他のスレッドがsynchronizedメソッドであるput()やget()を実行できるようになります。
>>35 アルゴリズムに問題が解けるなんて定義は無いと思うけど?
もともと、計算不可能論から出発しているのだし。
>42 そんなことはねーぞw 「問題を解決するための手順」なんだから、効率はともかく、解決しないのはアルゴリズムと呼ばない。
>40 根本的な部分で理解がおかしい >Consumerのqueue.get()呼び出しが先に実行されたらget()内部でwait()してしまい wait() によって、その実行しているスレッドの実行が止まるだけ。 つまり、別のスレッドはget() にも put() も実行できる状態になる。 get() が実行されたら、状況は変わらないから、そのスレッドもwait() で停止 put() が実行されたら、notifyAll() で他の停止しているスレッドに実行を通知。 すると、先に止まっていたスレッドのどれか1つが動き始める 思うにマルチスレッドの話なのに、頭の中シングルスレッドだろ?
>>43 関心のある者全員が飽きるまで解決してないことにするアルゴリズムが一番効率の悪いアルゴリズム
スレ違いもいい加減にしてアルゴリズムスレでやれ
J2EEについて質問させてください。 Front Controllerとなるサーブレットを自分で作っていたのですが、Filterという技術があることを知りました。 FilterはFront Controllerに完全にとって代われるものなんでしょうか? それともあくまでFront Controllerは自分で作りFilterはそれを修飾するだけのものですか? 普通はどのように使われているのでしょうか
Javaラインタイムパラメータ(例えば、-Xmsや-Xmx)の設定は、 レジストリとかファイルとかに保存されてるのでしょうか?(WindowsXP、JRE1.05) OS側で、コンパネが制限されてしまっていて、Javaアイコンが触れないのです。(;´Д`)
>>47 あんたの作ったFrontControllerってのが何をしているのかは知らんけど、認証の前処理だとかエンコードとかその類だったら全部Filterでやるのが普通
>>48 Jarをダブルクリックした時に立ち上がるようなパラメータはレジストリとかだと思う
どうしてもパラメータを渡したければ、コマンドプロンプトからjavaコマンドで起動したら?
51 :
47 :2008/03/02(日) 11:13:19
>>49 返答ありがとうございます。
自分がやっているのは、各サーブレットで重複するようなロジックをFront Cotrollerに書いてます。
認証やエンコードなどだけではなくシステム固有のロジックをFilterにずらずらと書いてもいいのか疑問に思いました。
>>49 まりがとう。(JRE1.05ではなく、JRE1.5.0_06ですた)
JVM Optionとかっていうレジストリかと思ったら、JRE1.5.0_06では、無くなってて。
コマンドプロンプトかぁ...
3から100までの素数を表示するプログラムを作成したのですが コマンドプロンプトで実行すると縦にガーっと表示されます。 これを横列スペース区切りで表示するにはどうすれば良いでしょうか? ex) 3 5 7 11 … また、表示したものをクリアしてその上に表示することはできますか? アプレットを使用しないと無理でしょうか?
System.out.println じゃなくて System.out.print を使え >また、表示したものをクリアしてその上に表示することはできますか? 無理
¥r で行頭に戻ることは出来たんだが、 ¥f をprintしたら1画面送りしてくれるかと思ったらしてくれなかった。
56 :
前スレの975です :2008/03/02(日) 12:44:47
>>前スレ987 返事遅れてすいません。 送り手側は全てのデータを書き込んだ後 (Whileを抜けた後)にChannelを閉じる処理をしています。
>>55 javaの標準APIはコンソール画面制御には不向きというか機能があまりない。
java向けのcursesライブラリを使ってみるとかしてみては?
58 :
デフォルトの名無しさん :2008/03/02(日) 15:33:49
こんばんわ。 今、考えてるソフトは、 まず、JFrameにJPanelをpackします。 そのJPanel上には点が書いてあります。 その点をdrag and dropのように マウスをpressした状態で移動させると、 マウスにそって点が移動する。 (そしてその点の持つJPanelへの相対座標x,yは変化する) という仕様のものを考えています。 Javaについていろいろ仕様を見ましたが、 swingやawtはライブラリが巨大すぎてどうすればいいか検討もつきません。 この仕様を満足するようにするには、 どのようなクラスやメソッドを使って設計すればいいのでしょうか?
61 :
デフォルトの名無しさん :2008/03/02(日) 20:35:23
iアプリでgif画像を保存したいのですがどうすればできるでしょうか? 今までやったこと: com.nttdocomo.ui.ImageEncoderではJPEGでしか保存できない。 javax.imageio.ImageIO.write()を使えばできるらしいがiアプリでは呼べない。 どなたか詳しい方よろしくおねがいします。
>>60 点を何で描くつもりかしらんけど、
そのコンポーネントにaddMouseListenerとaddMouseMotionListenerでリスナをセットする
マウスを押したりドラッグするとそのリスナのメソッドが呼ばれるから、
マウスの位置を見ながら点の位置を動かす
>>61 gifの仕様書を見ながら自分でエンコーダを書く・・・とか?
>>62 例えば
MyPointというクラスを作って
public static final int SIZE = 10;
private int x, y;
drawPoint(Graphics g)
g.fillOval(x, y, SIZE, SIZE)
という感じで描きたいと思っています。
JPanelにはこのMyPointをコンポジッションしたいと思っています。
どこにリスナを登録すればいいですか?
>>64 public class MyPanel extends JPanel implements MouseListener, MouseMotionListener{...}
リスナでマウスポインタの位置を知る事が出来ますが、 そのマウスポインタが円の中にない場合は 何もアクションを起こしたくありません。 また、円を拾ったあと、「マウスポインタに沿って」同時に動かしたい つまり連続的に描写したいです。 これはどうすればいいですか?
if文で円の中にあるときだけ処理すれば? 押したままマウスポインタを動かすとmouseDraggedが連続的に呼ばれるから、 新しいマウスポインタの位置にあわせて点だか円だかを描きなおせばいい
出来そうな気がしてきました。 明日コーディングしてみて、分からなかったらまた質問します。 ありがとうございました。
70 :
デフォルトの名無しさん :2008/03/02(日) 21:58:02
>>63 お答えありがとうございます。
でもエンコーダ自作以外の方法ないですかね・・・?
(ありがちですがそれをすると軽く予定時間オーバーしちゃいますので・・・
どこかにプリミティブなエンコードライブラリとか落ちてないですかね・・・
(javaじゃ無くても良いので)
入門書って何冊くらい読めばいいの?
74 :
正志 :2008/03/03(月) 00:01:33
ヒントがほしいんですが、 data 1 data 2 data3 data 4 ... data 112 という行があって、 lastIndexOf("data")で 最後のdata位置を入手した後、 最後のIntをとりたいんだけど、(112) どうしたらいいですか?
>>74 ヒントか
substring と Integer.parseInt
76 :
正志 :2008/03/03(月) 00:03:49
わーい
77 :
正志 :2008/03/03(月) 00:08:53
ふざけんな
"data"でsplitしたらどうだろう。
79 :
正志 :2008/03/03(月) 00:13:07
80 :
60 :2008/03/03(月) 00:18:51
MouseEvent の .getPoint() で、MyPoint 上のマウスの位置を取得 mouseDragged() の中で、呼び出されるごとに前回との差分を計算して移動させるようにしては?
82 :
60 :2008/03/03(月) 00:35:41
何が言いたいのかよくわからんが、 private Point prePoint; public void mouseDragged(MouseEvent me){ Point nowPoint = me.getPoint(); this.setX(this.getX() + (nowPoint.x - pre.x)); this.setY(this.getY() + (nowPoint.y - pre.y)); pre = me.getPoint(); } こんな雰囲気でいけると思うんだが
84 :
60 :2008/03/03(月) 01:09:47
>>83 MyPoint extends JPanel implemens MouseMotionListener, MouseListener
という設定でですか?
private Point prePoint
というのはなんですか?
どこにも使われてないのですが。
おそらく、
MyPointのサイズ内で
マウスポインタの相対位置の変化を
点の移動距離としようという発想でしょうが、
問題提起として、
もし、マウスを思いっきり早く動かした場合、
つまりコンピュータがMouseEventを発行するより先に
MyPointの領域からはみ出た場合はどうするのでしょう?
85 :
正志 :2008/03/03(月) 01:10:47
さきほど取ったdataのpositionですが、 文字列を整数に出来ない、 int sss3=Integer.valueOf(posx); なんで
>>82 イベントがどのコンポーネントで発生したか e.getComponent() で知ることができる
それでなんとかなるだろ
>>84 >MyPointの領域からはみ出た場合はどうするのでしょう?
ドラッグ中は、ボタンを押した場所のコンポーネントにマウスイベントが送られ続ける
ボタン離すまでずっと
はみ出ても問題なし
ただし座標はマイナスとかになるから、そのへんさえ考慮してあればおk
>>60 prePoint は pre のミスだ。空気嫁。
>MyPointの領域からはみ出た場合はどうするのでしょう?
mouseExited() つかえ
>>85 Integer.parseInt するまえに、posXを表示させて確認しろ
"data" とか空白とか混じってるんだろ、どうせ
90 :
デフォルトの名無しさん :2008/03/03(月) 01:31:53
92 :
60 :2008/03/03(月) 09:25:11
>>90 これは簡単な実装ですね。
おれがやりたいのは、PointもJPanelから継承させて
リスナをつける。
Pointの方でイベントを制御したいというものです。
外からやればそれは簡単でしょうが、
mousePointのところでものすごい手間がかかります。
例えば点が1万コあったら、いちいちこんな計算をするのは無駄すぎます。
それとこれは直接には関係ありませんが、
おれの主義で、コレクションは使わない事にしてます。
プリミティブ型と参照型の変換があんまりうまく行かないので非常に手間です。
もしArrayList<int>とかけるようになった暁には使おうかと思います。
>>92 >例えば点が1万コあったら、いちいちこんな計算をするのは無駄すぎます
自分で計算するのは無駄で、Swingに同じ計算をやらせるのは無駄でないと?
94 :
60 :2008/03/03(月) 09:39:06
いや、自分で計算しないでしょ。 いちいちそのポインタがどのPointに含まれてるのか特定 するのが工学的に考えてすごく無駄。 自分で計算する部分なんかあるわけがないと思いますが。 プログラミングなんだから。
95 :
デフォルトの名無しさん :2008/03/03(月) 10:44:55
JAVAでヒャードキュメントを書く方法を教えてください。 String s = <<END_OF_DATA; あいうえお かきくけこ END_OF_DATA
96 :
60 :2008/03/03(月) 10:45:59
自分でっていうのは、自前で計算して点を特定してっていう意味か。 swingも内部でオブジェクトの特定に計算してるわけね。 でも、MyPointの挙動をMyPanelが請け負うのはどうなの? もし他のコンポーネントに対してもdraggedイベントを発動させたい時に 場合わけが必要になる。 それって例えばdraggedイベントが10種類あるとした場合に、 めちゃくちゃな事になるから MyPointにイベントを処理してもらう方がいいと思った。 それに、点の位置をpublicで外から変更出来るっていうのも不自然。
>>93 無知と非常識に基づく信念の持ち主の相手なんかしなくていいよ。無駄だから。
100 :
60 :2008/03/03(月) 13:34:16
>>98 例えば、
paintComponent(Graphics g)
を使う時に、委譲を使ったりしますよね。
それと同様に、
MyPointクラスでも
MyPoint#public void moveByMouseMove(MouseEvent e)
とかいうのを作って、
MyPanel#public void mouseDragged(MouseEvent e)
(MyPoint)p.moveByMouseMove(e);
とするのはどうでしょうか?
最悪、MyPanel上でコンポーネントを計算で拾うにしても
実装の部分はMyPointクラスで書いた方がいいと思うのですが。
102 :
デフォルトの名無しさん :2008/03/03(月) 13:42:03
103 :
60 :2008/03/03(月) 13:46:16
>>101 実行してみました。
素晴らしいです。まさにおれが考えていた仕様そのものです。
setOpaqueというのは知りませんでした。
おれはsetVisibleで出来るかと思ってましたが、
どう違うのですか?
>>100 ドローツールを作るときとかは、そんな感じで作るよ。
各図形にイベントを送って、それによってマウス制御のStateを変えていく。
そうすると、図形の選択・移動や変形なんかが簡単にできる。
ただ、クラスは分けたほうがいいと思う。モデルが太りすぎるから。
105 :
60 :2008/03/03(月) 13:50:51
>>103 JPanelはデフォルトで不透明 (opaque=true) だから、点は四角くないので透明な部分もあるので、設定を変えてるだけでしょ
setVisibleとは全然別
107 :
60 :2008/03/03(月) 13:59:26
>>106 setVisibleっていうのは
addするかしないかくらいの差があるという事ですか?
つまり
setVisible(false)というのは完全に無効なコンポーネントになると?
Visiblityというのは見える、見えない=不透明か透明か
という事だと思っていました。
なるほど、デフォルトでは灰色のようですね
今setOpaqueをコメントアウトしたら四角いバックグラウンドが出てきました。
だからMyPointでsetBackgraound(Color.BLACK)
しても大丈夫ですが、これはきっと遅いでしょうね。
>>107 そう
setVisible(false) は、まったく何も表示されなくなるし、マウス入力もキーボード入力も受けなくなる
存在してないのとほとんど同じ
109 :
60 :2008/03/03(月) 14:13:14
110 :
a :2008/03/03(月) 15:18:59
>>110 >でもクラスの定義はされてるし…
定義されてるか?
OffScreenというクラスはどこにあるんだ?
AccelとかBattleManageは?
112 :
a :2008/03/03(月) 16:21:45
MapCanvas.javaに OffScreen m_pix_off_screen; Chara.javaに Accel m_accel; とあるんですが、これは違いますかね…?^^;
>>112 Javaの基礎から勉強し直した方がいいよ
114 :
a :2008/03/03(月) 16:28:16
JAVAの基礎すら知らないので、 とりあえず起動させる手順教えて下さい。
115 :
60 :2008/03/03(月) 17:29:22
java3Dを使いたいですなぁー
>>114 ここはプログラムを作る人のための板なんで、
自分で作らず拾って動かすだけの人はお呼びでない
>>115 じゃあ使ってみれば
ひとりごとはブログにでもどうぞ
こんな質問恥ずかしいんだが初心者歓迎って書いてるから大丈夫だよね JComboBoxに対してsetSelectedItemメソッドを実行するとJComboBoxに登録した アクションリスナーが反応しちゃってどうも意図した動作が得られない JComboBoxの項目が選ばれたときのみリスナーが反応するには どこでどう判断させればいいのかな? 恐らくイベントを受け取るactionPerformedメソッドで それがユーザーアクションによって起こったものかどうか判断できるのだろうか… いくらヤフっても出てこない。どなたかご教授お願いします
>>117 一番安直なのは、setSelectedItemする間だけリスナを外す
もしくはフラグを立ててイベントを無視する
ユーザ操作によるものかどうかは判定できないんじゃないかなぁ
>>118 リスナを外す方法は、ちょっと不粋かなぁ?と思ったんだけど
それしか方法がないなら仕方ないね。即レスありがとう
shift_jis、jis等の文字コードを指定して 全角文字列を一文字ずつ漢字コード取得していくのは どのようにすればいいでしょうか?
>>120 byte[] b = "あ".getBytes("Shift_JIS");
サーブレットの数が沢山あり、 a.b.servlet1.java a.b.servlet2.java ... a.b.servlet100.java web.xmlに1個ずつ<servlet>a.b.servlet1</servlet>と定義するのは大変なので、InvokerServletを利用したいのですが、 アクセスするURLにパッケージ名を含めないという要求もあります。invokerでパッケージを指定する方法ないですか? /context/xxx/servlet1 -> a.b.servlet1.java /context/xxx/servlet2 -> a.b.servlet2.java ... /context/xxx/servlet100 -> a.b.servlet100.java <servlet-mapping> <servlet-name>invoker</servlet-name> <url-pattern>/xxx/*</url-pattern> <class-pattern>a.b.*</class-pattern> </servlet-mapping> みたいなことが出来たら嬉しいのですが。 InvokerServletのサンプルにも上記のような物がなく、代わりになるような物も見つからず。。。
123 :
デフォルトの名無しさん :2008/03/03(月) 22:37:01
質問です。 import java.awt.*; import javax.swing.*; public class GUI extends JFrame { public static void main(String[] args){new GUI();} public GUI(){ Container c = getContentPane(); c.setLayout(new BoxLayout(c, BoxLayout.Y_AXIS)); c.add(new MyForm("オラオラオラ", "オラ")); c.add(new MyForm("無駄無駄無駄", "無駄")); JButton b = new JButton("そして時は動き出す"); b.setAlignmentX(JButton.RIGHT_ALIGNMENT); c.add(b); pack(); setVisible(true); } class MyForm extends JPanel{ public MyForm(String label, String value){ setLayout(new FlowLayout(FlowLayout.RIGHT)); add(new JLabel(label)); JTextField tf = new JTextField(10); tf.setText(value); add(tf); } } } 最後のボタンを右詰にしたいんですけど、右詰にならないのは何故でしょう。
>>122 invokerもどきを自分で作るのがそんなに大変とは思えないけど・・・
リクエストURLからクラス名を切り出して
Class.forName(〜).newInstance()でサーブレットをインスタンス化して
service呼ぶだけじゃないのかなぁ基本的には
>>123 MyForm も setAlignmentX(1) にしないといけないのでは
126 :
123 :2008/03/03(月) 22:49:40
>>125 なるほど。
いけました。そういうもんなんですね。
127 :
a :2008/03/03(月) 22:53:07
>>116 お呼びでないじゃなくて質問者が来るんだよ。バカか。
かってに決めてんなよお前の意味わからんルールを。質問相談スレッドだろが。
>とりあえず起動させる手順教えて下さい。 いやこれ質問じゃないし
まあ3月だもんな しゃーない
131 :
正志 :2008/03/04(火) 03:02:19
>>91 Thanks,
>>88 Shut-up man, fuck off you bitch, ウゼエ どうせ〜だろ はやめなさい
132 :
デフォルトの名無しさん :2008/03/04(火) 03:32:21
ところでsplitで x または aで区切るのはどうしたら?
"123a456x789a0".split("x|a")
Nim of game の書き方教えてくれるとこありますか?
Game of Nimでした。
MouseEventはabstractでーバーライドできないって出てくるのですが、 何か間違っているのでしょうか?いちおう解説本の通りに打ったつもりなんですが・・ import java.applet.*; import java.awt.*; import java.awt.event.*; /* <applet code="MouseEvents" width=300 height=300></applet> */ public class MouseEvents extends Applet implements MouseListener{ public void init(){ addMouseListener(this); } public void mouseClicked(MouseEvent me){ setBackground(Color.blue); repaint(); } }
すみません、質問させてください。 Look&Feelのフォント設定で、 System.setProperty("swing.plaf.metal.controlFont", "Dialog-Plain-12"); を指定しておくとフォントがDialog-Plainの12ポイントになりますよね。 WindowsのLook&Feelを適用したときにもこのように一括で指定するキーはありますか? これらのキー名がAPIドキュメントにさっぱり見つからず困っております・・・
>>136 MouseListenerのメソッドはmouseClickedだけじゃなくて全部実装する必要がある
中身からっぽでもいいので
public void mouseEntered(MouseEvent e) { }
public void mouseExited(MouseEvent e) { }
public void mousePressed(MouseEvent e) { }
public void mouseReleased(MouseEvent e) { }
カオスってるな
WindowsXP+tomcat5.0.28にて hello.jsp -------------------------------------------------------------- <%@ page language="java" contentType="text/html;charset=Windows-31J"%> <%@ page errorPage="DefaultException.jsp" %> error.jsp ------------------------------------------------------------- <%@ page language="java" contentType="text/html;charset=Windows-31J"%> <%@ page isErrorPage="true" %> ---------------------------------------------------------------------- hello.jspの中で例外が発生するとerror.jspが呼ばれますが、error.jspの内容が文字化けしてブラウザに表示されます。 でも、error.jspを直接ブラウザから呼ぶと文字化けが起きません。 JSPの例外処理機構で呼ばれた時だけ文字化けしているように見えます。解決方法ありますか?
>>141 転載ミス。errorPage=error.jspと読み替えてください。
>>141 文字化けの原因は別のところにありました。
web.xmlで下記の設定を入れていると、こちらが優先されるらしく文字化けが発生します。
<error-page>
<error-code>500</error-code>
<location>/error.jsp</location>
</error-page>
error-pageの設定をコメントアウトすると文字化けしなくなります。tomcatのバグ?
public static void main(args[]) について、教えてください。 このメソッドについて、 一連のコンパイル単位の中でただひとつのみの存在が許されるメソッドである、 といったルールは存在しますか? public class Test1 というクラスと class Test2 というクラスとの両方に、 public static void main(args[])を記述してみて、 Test1のmain()から、Test2のmain()を読んでみたのですが、特に問題なく動きました。
> 一連のコンパイル単位の中でただひとつのみの存在が許されるメソッドである、 > といったルールは存在しますか? ない。
4桁の16進数を 数値型に変換ってどうすればいいですか? 0xの16進数で出力したいのですが
>>146 よくわからんので、どういう入力に対してどういう出力が欲しいのか、例をあげてくれ
>>146 エスパーレスすると
int i = 0xABCD;
System.out.println("0x" + Integer.toString(i, 16));
>>147 失礼しました
>>148 の方の例で言うと
StringでABCDとわかっていて
intで0xABCDと変換したいのですが
>>149 String s = "ABCD";
int i = Integer.parseInt(s, 16);
>>150 ありがとうございます
引数に指定するだけなんですね
お世話になります。 swingいじりしているのですが、根本がわかっていません。 JFrameのインスタンスを作ると、そいつは、自動的に別のスレッドで動いているのでしょうか? 関数main()は、最終行まで処理されて、その後ろはないのですが、 JFrameでつくったウィンドウやその上のコンポーネントは動作を続けています。 スレッドでなければ何なのか理解できません。 エスパーしていただけませんか。
分かりません。教えてください。初心者です。エスパーしてください。
>>152 クラスは作成したとき一回だけ初期化用のメソッドを通る。
OSのシステムフォントを得る方法はありますか?
156 :
デフォルトの名無しさん :2008/03/05(水) 01:28:07
Javaの質問とちょっとずれる気もしますが・・・ DBとのコネクションを確立する為に Connection con = null; con = DriverManager.getConnection(URL,USER,PASS) などと書きますよね。 この時、conはインスタンスと呼んで良いのですか? Connectionはインターフェースなのでインスタンスを生成することはできないはず。 インスタンスでないとしたら何なのでしょうか? ご教授下さい。
>>152 ThreadGroup#listでどんなスレッドが動作しているか見てみるといい。
思った以上にいろいろなスレッドが動いているのが分かる。
>>156 conはConnectionインタフェースを実装するクラスのインスタンスへの参照
一応、正確を期すなら「conで参照しているインスタンス」みたいな言い方になる。 変数それ自体はインスタンスではない。
>>152 そう、SwingはEDTという別スレッドで動いている
そして、ここ以外では動かしてはダメ、というのがルール
>>152 名前をわざわざ変えなければ、mainメソッドはmainという名前のスレッドで動作している。
Swing関係の機能を使うとさらに別のいくつかのスレッドが生成される。
その中には
>>160 の言うEDTというGUI関係のイベント処理を一手に担うスレッドもある。
この新たに生成されたスレッド群によってウインドウやその上のコンポーネントが動作する。
mainメソッドが最後まで処理されるとmainという名前のスレッドは終了して無くなるが、
他のスレッドが終了するまでプログラム全体としては終了しない。
EDT自体はAWTにもあってSystem Queueっていう名前でマルチスレッドになってる。 Swingのイベント周りはシングルスレッドで動いててSwingコンポーネント生成を含めてSwingコードはEDTで動かさないといけない。 昔、Swing関連のスレッドにはバグがあるからSwingコンポーネントの生成もEDTで行うようにと作法が密かに変わってSwingのチュートリアルだけが変更されてまともなアナウンスはされてない。
>>152 の書き方だと
>JFrameのインスタンスを作ると、そいつは自動的に別のスレッドで動いているのでしょうか?
と訊いているのだから、コンストラクタの呼び出しのことで、それ自身はmainのスレッドで動いているでいいんじゃない?
全てのコンストラクタの呼び出しが終わらなければmain()には戻らないと…
コンポーネントのイベント処理はまた別の話で。
もちろんSUNの推奨は
>>162 の云うようにコンポーネントの作成もEDTで行うなのだろうが…
ボタンを作って、そのボタンを押すとthreadがnullになるように作っています。 run()メソッドの中に書かれている処理にかかる時間が短い場合(1ms以下)だと正常に止まってくれます。 しかし、処理にかかる時間が長い場合(100msくらい)だと何回もボタンを押さないと止まってくれません。 どうしたらいいですか? run()メソッドの中 while(thread != null) { 処理 thread.sleep(100); }
>>164 時間のかかる処理の途中で if(thread==null) break; とかしてみる。
コンストラクタってコンストラクタ自身がスレッド作ってその上で動いてなかったっけ?
えっ
>>166 試しちまったじゃねぇかよ。
public class ConstractaThreadName{
ConstractaThreadName(){
DisplayThreadsName();
}
public static void main(String[] argv){
ConstractaThreadName ctn = new ConstractaThreadName();
System.out.println();
DisplayThreadsName();
}
private static void DisplayThreadsName(){
int i, n;
System.out.println("Display Threads Name");
Thread[] tarry = new Thread[Thread.activeCount()];
n = Thread.enumerate(tarry);
for(i = 0; i < n; i++)
System.out.println(tarry[i].getName());
}
}
>>168 カレントスレッドがどれかも表示しないと意味なくない?
>166 スレッドの生成コストってフルGC並の糞思い処理だぜw
eclipse Europe 3 と日本語化をつかってるのですが バージョンアップするには何をダウンロードしてどうしたらいいですか?
いやjavaのスレッドじゃなくてVM内部で別のスレッド走らせてるんじゃなかったけ? 言語違ったかなぁ・・・。
>>173 そんなわけのわからんことはしないよ
そんな奇妙なことをする言語があるなら興味深い
コンストラクタじゃなくてファイナライザか?
175 :
デフォルトの名無しさん :2008/03/05(水) 19:50:02
質問です。 GI プログラム中から 他のGUI プログラムを呼び出したときに 必ず呼び出したプログラムのウィンドウ(Frame)にフォーカスをあわせる方法 ってありますか? 呼び出すプログラム側でエンターキーで他のプログラムを呼び出すのですが、 エンターキーを連打したときなどに、どっちのプログラムもキーの受付をしてくれなくなります。 マウスでクリックしてやれば、アクティブになってキー操作を受け付けてくれるのですが。
176 :
デフォルトの名無しさん :2008/03/05(水) 19:51:14
>GI プログラム中から GUI プログラム中から のミスです あと、 > 必ず呼び出したプログラム 呼び出された新しいプログラム という意味です。
177 :
デフォルトの名無しさん :2008/03/05(水) 21:18:28
詳しい方へ質問です。 『作成したプログラムを保存するフォルダを作る。コマンドプロンプトを起動したらそのフォルダがディレクトリになるように設定する(Cドライブのルートに「My Java」フォルダを作成し、ここをディレクトリにする)』 という作業をしたいのですが、「コマンドプロンプトのプロパティ」→「ショートカット」で「作業フォルダ」に“C:¥My Java”と入力すると、 「“C:¥My Java”フォルダは無効です。フォルダがあるか、またはパスが正しいか確認して下さい。」と出てしまいます。 他にフォルダを作った覚えもないのに、何度やっても同じ結果になってしまうのですが、どうしてなんでしょう? あ〜もう!自分で書いてて意味分からない‥
C:\は全角じゃない半角だった
>>177 質問の内容がJavaではない気がする・・・。
Javaのプログラム上からファイル出力をする為のディレクトリを生成して
Javaからコマンドプロンプトを起動してカレントディレクトリを設定するって事ですか?
int a, b; System.ou.t.println(a + b); このaとbを外部からの入力で処理したいのですが、 PHPなんかのWebプログラミングでは、フォームから値を渡しますが、 Javaの場合どうやったらいいんでしょう? GUI画面を作ればいいのかな?とは思うのですが、やったことがなくてイメージわかないし、 Servlet+JSPなんかの場合、PHPと同じようなことができるんでしょうが、 まだ環境構築どころかJavaでのWebプログラミングのやり方もわからないので、 とりあえずコマンドプロンプトから入力してくださいみたいな感じで、 aとbを順に打ち込んで計算するようなものを作ってみたいと思っています。 どのへんのクラスを使えばいいのでしょうか?
>>181 いきなり2ちゃんかよ。
まずは本なり入門サイトに行けよ
183 :
175 :2008/03/05(水) 22:21:26
>>178 最前面には来るんですけど、キー入力が受付ないんですよね。
クリックしてアクティブにしてやると受け付けるんですが
>>181 System.in から1行読めばいいんじゃないかね。
//
>>181 public static void main(String[] args) throws IOException {
// 標準入力ストリームから行単位で読み込めるようにBufferedReaderクラスのインスタンスを生成
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.print(a: );
// 標準入力から1行読み込みint型に変換
int a = Integer.parseInt(br.readLine());
System.out.print(b: );
int b = Integer.parseInt(br.readLine());
System.out.println(a + b);
}
186 :
185 :2008/03/05(水) 22:34:02
訂正 System.out.print(a: ); // × System.out.print("a: "); // ○ System.out.print(b: ); // × System.out.print("b: "); // ○ あと import java.io.*; も忘れないように。
>>155 たぶん見た目ネイティブにしたいんだろうが、
JavaでOSのシステム標準フォント設定を得る方法など聞いたことがない。
システムカラーなら取れるんだけどね
>>181 「Java Scanner」でググって見なよ
c言語に比べてjabaを初心者が先に学ぶメリットって何かありますか? 良かったら説明して下さい!
まずは英語を勉強する方が良いと思うぞw
192 :
デフォルトの名無しさん :2008/03/06(木) 08:33:55
JAVAのテキストが一通り終わったのですが、 次は何をすればいいでしょうか?
ソフト会社にバイトに行って、いかに自分がダメダメかを思い知るw
Javaを「メモリ管理不要、C++」として見てしまいますが、 すべてのパッケージを勉強する必要がありますか?
> すべてのパッケージを勉強する必要がありますか? 必要なら。
com.sun.*とSwingの非公開クラスはいらんだろう。
>194 不要。 java.lang.* java.util.* は大雑把にでもいいから確認して、後は必要に応じて調べれば十分
>>198 java.ioはI/O系、java.sqlならJDBCまわりってレベルで十分。
あとは、必要に応じて調べるだけ。
Scannerでの質問なのですが import java.util.Scanner; public class TestPorb { public static void main(String[] args) { Scanner input = new Scanner (System.in); String gen = input.next(); int pt2 = input.nextInt(); int pt1 = input.nextInt(); //input.nextLine(); String name = input.nextLine(); int numOfGame = input.nextInt(); String pos = input.next(); } } name をとるときに inputMissmatchというエラーが出ます コメントを解除するとちゃんと動くのですが、 理由が分かる人がいれば教えてください。
>>201 nextLine は InputMismatchException を投げません。
入力次第なので、後は何とも。
203 :
201 :2008/03/06(木) 13:11:36
>>202 入力は、
aaa
12
23
asd asd
で試したところ、
InputMismatchException:
at java.util.Scanner.throwFor(Unknown Source)
at java.util.Scanner.next(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at TestPorb.main(TestPorb.java:15)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
を投げてきて、次の入力に進めません
長くてすみません。
>>203 で、それは何処で止まってるのでしょうか、と。
// 一行ごとに直前の変数を出力して、
// 入力と解析後の対応部分を確かめつつ。
nextIntが23の後の改行も食ってるとか?
206 :
201 :2008/03/06(木) 13:55:08
>>204 入力は一行づつで、
最後の asd asd を入力した時点でのエラーです。
その前に入力したデータは全て正常に入っています。
どうも入力した "asd asd" を nextLine() で Stringに入れることができていないようなんです。
String name = input.nextLine(); の実行前に一度 input.nextLine(); を実行することでエラーを回避できるので、
Bufferに何か残っているのかな、と予想しているのですが実際のところよく分かりません。
207 :
201 :2008/03/06(木) 13:57:50
>>205 だとすれば、
無駄にinput.nextLine()を走らせて回避するしか方法はないのでしょうか・・
>>205 まあ、nextLine が、"23" の直後から改行までを、改行抜きで食ってるだけ。
よって、"23<改行>" なら、戻り値の列長はゼロ。
>>207 そうそう。無駄に nextLine を走らせてください。そういう仕様です。
細かく調整したいなら sikip というものもあります。
209 :
201 :2008/03/06(木) 22:17:42
>>208 そうですか、分かりました
skipの方も試してみます
ありがとうございました
今、自分のPCに Java SE 6 Update 3 がインストールされており、 ブラウザでアプレットなどが起動できるのですが、 Update 4 や Update 5 をインストールすると Update 3 で起動できていたアプレットが起動しなくなり、 ブラウザを閉じようとすると、固まってしまう状態になります。 ランタイムをアンインストールして Update 3 に戻すと正常に動作するようになるのですが、 Update 4 以上のバージョンで何か問題があるのでしょうか? コントロールパネルのJavaの設定で、 インターネット一時ファイルなどを削除してみても、 アプレットは動作しませんでした
リグレッションバグ踏んだとか
アプレットが元々バグってて、古いバージョンではたまたま動作してただけとか
お世話になります。 SwingでGUIのプログラム作ってみているのですが、 イベント動作(?)を設定できずに悩んでいます。 お力添えください。 (awtの?)ActionListener,ActionEvent,ActionPerformed()で、 イベント動作を記述したいです。 JPanel A ├JPane B |├JButton 1 (implements ActionListener) |└JButton 2 (implements ActionListener) └JTabbedPane ├JTextArea 1 └JTextArea 2 例えば、JFrame以下に、上記の構造のコンテナの階層があって、 各コンテナは、直上のコンテナでインスタンス化される。 以上としたときに、 ボタンのActionPerformed()にて、 テキストエリアの内容を保存したり、とにかくテキストエリアにアクセスしたいのですが、 その手段がわかりません。 ( 続く)
214 :
213 :2008/03/07(金) 08:29:32
(続き) すべての変数をJPanel A 直上でインスタンス化して、 上記の構造をつくり、 JButtonは、内部クラスにすれば、動作の設定はできるのですが、 コンテナの数が多くなってきたときに、内容を読むのが辛い気がします。 また広域な変数を作ることでも可能なのでしょうが、あまり使いたくないです。 どのようにすればよいでしょうか。 最終的には、JMenuBar以下のメニューからのアクセスをしたい、 且つ、JMenuBar以下の構造は、クラスとして、 外部クラスか内部クラスとして宣言したいです。 また、JTabbedPaneは、メニューなどから、増加させたり、削除させたりしたいのですが、 「各コンテナは、直上のコンテナでインスタンス化される。」 のルールにのっとった記述ができなく、簡単化のため、上記の例を出しました。 よろしく御願いします。
>>213 ボタンとテキストエリアで行うことを仕様とし、その実装をクラスにする。
そのインスタンスをパネルAで生成し、パネルBとタブの生成時に渡す。
数値a, b(long、doubleも含む)のどちらが大きいか比較し、 a<bなら負、a>bなら正、a==bなら0を返すような標準APIってありますか? 自分で作れというのが最もなのですが、割と頻繁に使う状況に遭遇するので、 標準でそのようなAPIは無いのか疑問になって質問しました。 Mathにはなかったようなのですが。
>>216 new BigDecimal(a).compareTo(new BigDecimal(b)) とか?
無限大やらNaNやらの場合は知らん。
>216 数値といっても型が違えば単純には比較でないだろ、常考 比較する為の一般に通用する仕様がないわけだから安直に標準APIじゃ提供しようがない
それくらい自分で作れ。
>>217 ありがとうございます。
取りあえずこれでいけそうですね。
>>218 説明不足でした。型はプリミティブ型でよいです。
System.out.print()のように引数タイプに全てのプリミティブ型を
用意しているクラスメソッドがあったので、数値比較についてもあるのかなと思ってました。
同じ型どうしなら a-b でいいのだけど、それじゃダメってことだよね。
>>216 ×最も
○尤も
(a==b)? 0: (a<b)? -1: 1;
>220 だからdouble と int をどうやって比較するのかと(ry
224 :
デフォルトの名無しさん :2008/03/07(金) 13:40:42
パネルにコンポーネントをadd()してからそのコンポーネントをadd()の反対にすることはできますか?
ん?remove(Component)のこと?
>>223 値範囲で 217 に負けるけど、Double.compare(double, double) でも良いと思うのですが
変換で何か重要な問題があったっけ……
227 :
216 :2008/03/07(金) 14:03:57
本当に説明不足でした。
ぐだぐだですみません。
返す型は int。
型はプリミティブ型。
>>221 (int)(long型 - long型)すると、差がInteger.MAX_VALUEより大きい場合に
問題が起きそうなのでその方法はとりませんでした。
>>222 さんのように三項演算子で書く方法が一番スマートそうですね。
どうもでした。
228 :
216 :2008/03/07(金) 14:08:05
>>226 読む前に投稿していました。
まさにこんな感じのを求めてました。
ありがとうございます。
>>226 int i = 0;
double d = 0.0;
230 :
226 :2008/03/07(金) 14:13:42
(゜д゜) はぁ?
javadocよく嫁
言い忘れた byte型の昇格じゃなきゃ特に演算時に気を付けることはない。
嘘八百を並べた悪徳スレ
>>216 >>226 でもいいけど、long が 64ビットなのに対して double の仮数部は 53ビットしかない。
だから例えば
System.out.println(Double.compare(0x20000000000000L, 0x20000000000001L)); //=> 0
System.out.println(0x20000000000000L == (double)0x20000000000001L); //=> true
逆に言うと、あらかじめ精度が必要ない事が判っていれば
Double#compare(double, double) で構わない。
236 :
226 :2008/03/07(金) 14:55:25
>>235 なるほど。これはお勧め出来なかったですね、申し訳ない。
Long.MAX_VALUE と (double) Long.MAX_VALUE
==> 9223372036854775807
==> 9.223372036854776E18
// int と double についての方も、こういうことなのでしょうか?
>>236 int と float だと、float の方が精度低いので問題起きる可能性がある。
(・д・)
239 :
デフォルトの名無しさん :2008/03/07(金) 16:54:44
MVCモデルについて質問です。 現在、MVCを使ってマインスイーパを作ろうというプロジェクトを行っています。 Mでは、m*nのテーブルを裏返したり、フラグを変更させる動作を持たせる事にします。 ここで問題なのですが、 この配列をVに描写してもらう時に、渡すのは数字の入った2次元配列です。 これを例えば1なら1と表示させるというようにすればいいように思えますが、 Vを作る人は、Mがどういう仕様かを知ってはいけないと思います。 つまり、Mで、1という数字を100という風に書こうが31という謎の値で書こうが関係ない設計にしなければならないと思います。 この場合、私の考える中で唯一これを満たす方法は、 Mに描画のメソッドを実装して、Vで委譲させる方法ですが、 MVCの原則として、Mは描画や出入力を行ってはいけない事になっています。 そもそも、View側でもm*nで待っていてくれている保証はないわけですが、 MとVの独立性を保つためにはどのように設計すればよいのでしょか?
>>239 >Vを作る人は、Mがどういう仕様かを知ってはいけないと思います。
いやいやいや。
ビューはモデルの仕様を知っている。
でなければ、何を描くのかすらわからんではないか。
ツリーモデルをマインスイーパービューに渡してどうしろというんだ。
ツリービューはツリーモデルを描く。
マインスイーパービューはマインスイーパーモデルを描く。
interface MinesweeperModel {
int getWidth();
int getHeight();
boolean isFlagSet(int x, int y);
boolean isOpen(int x, int y);
boolean hasMine(int x, int y);
void addChangeListener(ChangeListener l);
void removeChangeListener(ChangeListener l);
}
こんなのでいいかと。
これをどう実装するか(二次元配列?)は、モデルの実装の詳細であって、ビューはそれを知る必要はない。
これをどう表示するか(JTable?)は、ビューの実装の詳細であって、モデルはそれを知る必要はない。
ただし両者とも、そのインタフェイス (MinesweeperModel) の仕様は知っている。
クリックされたら配列に入力され、その後配列と対応する場所に四角を書きたいんですが うまくいきませんorz どこがだめなんでしょうか? import java.applet.*; import java.awt.*; import java.awt.event.*; /* <applet code="proto" width=200 height=200></applet> */ public class proto extends Applet implements MouseListener{ Point p; boolean bl[][] = new boolean[20][20]; public void mouseClicked(MouseEvent me) { p = me.getPoint(); bl[p.x/10][p.y/10] = true; repaint(); } public void mouseEntered(MouseEvent e) { } public void mouseExited(MouseEvent e) { } public void mousePressed(MouseEvent e) { } public void mouseReleased(MouseEvent e) { } public void paint(Graphics g){ for(int x=0;x<20;x++){ for(int y=0;y<20;y++){ if(bl[x][y] == true){ g.fillRect(x*10,y*10,10,10); }}}}}
244 :
239 :2008/03/07(金) 17:22:15
>>240 プログラムが出来たら、うpするので
その時に評価してもらおうと思います。
いろいろ考えると難しくて。実装じゃなくて、設計が。
設計やさんは優秀じゃなきゃ出来ませんね。
設計が腐ってるとすべてが終わる。
設計がしっかりしてれば
実装なんか中卒だろうが高卒だろうが
理系だろうが文系だろうが
関係なしに出来るのではないかと思えてきましたが、
実際のプログラミング現場ではやはり設計というのは一番優秀な人がするものなのでしょうか?
245 :
242 :2008/03/07(金) 17:26:33
うわ・・恥
>>423 どうもありがとうございました
実装をなめんなよ
>実際のプログラミング現場ではやはり設計というのは一番優秀な人がするものなのでしょうか? そういう話題はマ板向き
設計する人が優秀とは限らないが、優秀でない人が設計すると火事になる
249 :
239 :2008/03/07(金) 18:02:27
今、ぼくは 「クラスが独立であるとは、クラスが単独でテスト可能である事と同値である」 という持論に基づいてプログラムしています。 これが正しいかどうかは置いといて、 テストが不可能、例えば乱数に寄ってしまっている設計はいけない設計ですか? 例えばマインスイーパなら、爆弾を仕掛けると思いますが、 爆弾を仕掛けるのを乱数に頼って、イニシャライザに組み込んでしまうと、 動作ごとにどこに爆弾が仕掛けられたか分からず、 「ここを押せばこういう状態に遷移する」 といったテストが行えません。 今作ってるプログラムはまさにこうなのですが、 これは失敗した設計ですか?
>>240 の書いているようなモデルインターフェースを作っていれば、そんなものいくらでも実装で変更できると思うんだけど。
>>249 乱数を元にしないNonRandomMinesweeperModelを使ってテストすればいいだけだ
乱数に限定した話なら乱数シードを外から渡すようにすれば良いだけの話。 再現性が保てない設計は失敗と言っていい。
253 :
239 :2008/03/07(金) 18:20:36
>>252 再現性が保てない設計は失敗なんですか。
確かにぼくもこれではテストが出来ないではないかと
すごく不安になってました。
乱数シードを外から渡してみます。
もしぼくが設計者だったら大火事でしたね。
254 :
239 :2008/03/07(金) 18:22:40
コーディングの段階からjavadocに基準した コメントを書いておくべきですか? みなさんはどうなされていますか?
>>249 イニシャライザが何か初期化してても、とりあえずそれを無視して、
テスト用の盤面に書き換えてからテストすればいいんじゃないか
>>254 場合による。
ライブラリとかみたいにドキュメントはきっちりしてた方がいい場合もあるし
アプリケーションで要求変更がばしばしくる案件なんかではドキュメント書いても
次の日には書き換えなきゃいけなくなったりで割に合わない場合もある。
257 :
239 :2008/03/07(金) 18:36:36
>>255 それが可能な設計ではないという事です。
でも、これは具体的な話ですが、
initBoard(int i, int j, int[][] bombBoard)
とかいう風にします。
今は
initBoard(int i, int j, int bombNum)
としています。これは爆弾の数から内部で爆弾が配置されたボードを弾いて、それを使って
Boardをinitializeしようという設計だからです。
でもこれは爆弾ボードの生成で乱数を使ってしまうので、再現性がありません。
しかし、上記のメソッド定義だと、ユーザが好き勝手なテーブルを引数にしてしまいます。
これはユーザに使い勝手がいいとは言えない気がします。
例えばもし縦横の配列数が違った場合は、Exceptionを出して処理を終了させればいいのでしょうか?
>>257 >initBoard(int i, int j, int[][] bombBoard)
>とかいう風にします。
>今は
>initBoard(int i, int j, int bombNum)
>としています。
それ両方あればいいじゃん
ユーザは使い勝手の良い方を選んで使えばいい
initBoard(int width, int height, int bombNum, long seed) で良いじゃん。
260 :
239 :2008/03/07(金) 18:45:50
>>258 なるほど、オーバーロードがありましたか。
その発想は気づきませんでした。
確かにJavaAPIにある多くのライブラリには複数イニシャライザが設定されてるものがありますね。
でも書き直しですね。このままだとDRYに反する。
261 :
239 :2008/03/07(金) 18:54:11
>>259 seedを引数にするという発想は正常ですか?
自由な配列を入れさせてもし大きさが違っていたら
Exceptionを発行して弾くというのは
少し感覚的におかしい気がします。
「型が違う」「クラスが違う」という弾き方は正常かと思いますが、
配列の大きさが違う、という事で弾かれるのは、
外から見てる人が、引数に対してすでに設定したBoardの大きさを意識して
入れなくてはいけない事になります。
これは使い勝手がいいとは言えないし、
おそらく正しい設計に基づいているであろう
GUIのライブラリがそういうものがあったかどうか考えても
なかったように思えます。
(もしあったら教えてください)
262 :
239 :2008/03/07(金) 18:55:17
あ、でもそれじゃseedがどういう時にどんな配列が出来るか は予想がつかないのでテストケースが書けないですね・・・
>260 DRYだろオーバーロードは基本的に。 void a(int i) と void a(int i, int j) があったとすれば、前者の実装は a(i, 0) のように記述するだろ?
>>261 乱数のシードを渡すくらいなら Random オブジェクトを渡した方がいいと思う
そうすれば SecureRandom を使うこともできるし (セキュアな盤面が必要な状況なんかないだろうけど)、
テスト目的に Random を継承してランダムでない値を返すようにしたオブジェクトを渡すこともできるし
>>235 言語仕様的には strictfp が付いてなければ IEEE754 に従っている保証はない
ちなみに、IEEEの倍精度は精度は53桁だけど仮数部は52ビットだった気が
優秀でない人が実装すると設計が無駄になる
>>264 Random を継承してランダムでない値を返すくらいなら、
単に、数値を返すメソッドを持ったインタフェースを渡した方がいいと思う
>>254 コメントはテストケースにしっかり書いた方が良いよ
>>262 どういうシードを渡した時にどういう配列が出来るかは、どういう乱数が発生するかと等価だから
乱数生成ルーチンのテストにしかならん。除外可能。でなければ乱数生成を自前でやる必要が
出て本末転倒な事になる。異なるシードを与えたときに異なる配列になることが確認できれば十分
(もちろんその整合性も)。
というかホワイトボックステストがしたいのかブラックボックステストがしたいのかはっきりせれ。
つうか、そこまでするんだったら、 interface InitBoard { int width(); int height(); boolean bomb(int x, int y) } などというインタフェースを渡せばいいやん
>>265 >>235 の例だけでいえば定数式だから strictfp ついてなくても
0 だったり true だったりは言語仕様で保証されてる。
272 :
239 :2008/03/07(金) 19:41:41
>>270 インターフェイスを使うメリットが分かりません。
インターフェイスは、そこに書いてあるメソッドに実装を強要するだけであり
なぜこの場面で使わないといけないのかが分かりません。
「エンジニアリング設計の基準を実際に満足することのできる唯一のソフトウェアドキュメントはソースコードだけだ」 と Jack Reeves 様が言っております。 ソフトウェアで巷で言われている「設計」などというものは 他の工学では単に設計の骨組みに過ぎないのです、たぷん
上にもいろいろ書いてあるだろ? インターフェイス使えば同じ機能でも別の実装が可能になるんだって。 もう少し自分でいろいろ試行錯誤するべきだと思うよ。
マインスイーパーのマス程度にポリモーフィズムはいらんだろw 必要になったとすればもうそれは別のゲームになってるから設計からやり直したほうがいい。
javaじゃなくて設計の話になってるな。
>>272 インターフェースを使わないメリットが分かりません。
そこに書いてあるメソッドを呼び出せれば Board の実装が可能なのに
なぜこの場面で使うといけないかが分かりません。
278 :
デフォルトの名無しさん :2008/03/07(金) 20:14:08
JavaのClass.getDeclaredClasses()の使い方について質問させてください。 あるクラスで宣言されているクラス名を獲得しようとしているのですが、思うように動いてくれない状況です。 以下のようなテストコードを作ったのですが、 public class Hello { public String message=new String("Hello"); public static void main(String[] args){ Hello hello=new Hello(); Class helloClass=hello.getClass(); Class[] classes=helloClass.getDeclaredClasses(); System.out.println("Num of Classes "+classes.length); for(Class cls:classes){ System.out.println(cls.getName()); } } } 自分の想定では Num of Classes 1 java.lang.String という表示が出ることを期待していたのですが、実際の出力は Num of Classes 0 となってしまい、クラス名の配列を獲得できません。 ドキュメントを読んだりネットを検索しても理由が分からず、お知恵を拝借したい次第です。 ちなみに、JDKは1.6.0_04を利用しています。
>>278 getDeclaredClasses() はメンバーフィールドで使用されているクラスを得るんじゃなくて
メンバーとして宣言されたクラスおよびインターフェイスを得る。
よーするに、
public class Hello {
public static class Foo{}
public static void main(String[] args){
System.out.println(Hello.class.getDeclaredClasses().length); //->1
System.out.println(Hello.class.getDeclaredClasses()[0]); //->class Hello$Foo
}
}
280 :
278 :2008/03/07(金) 20:31:08
>>279 >getDeclaredClasses() はメンバーフィールドで使用されているクラスを得るんじゃなくて
>メンバーとして宣言されたクラスおよびインターフェイスを得る。
さっそくのご回答ありがとうございます。
理解しました。なるほど、そういうことだったのか…
私がやりたかったのは前者だったのですが、
あるクラスのメンバとして宣言されている(has a関係の)クラス名を取得する方法という方法は
あるのでしょうか?
281 :
デフォルトの名無しさん :2008/03/07(金) 21:22:44
282 :
デフォルトの名無しさん :2008/03/07(金) 21:29:20
あなただけです
内部クラスについて教えてください。 public class Class2 { public static void main(String args[]){ new Class2().sub2(); } int a = 100; public void sub2() { new Class3().printPrintln(); new Class4().printPrintln(this); } class Class3 { void printPrintln() { int a = 1000; System.out.println(a); //System.out.println(this.a); } } } class Class4 { public void printPrintln(Class2 variableClass2) { System.out.println(variableClass2.a); } } のコメントアウトされている行で、Class2のaを取り扱いたいのですが、 不可能でしょうか?thisのような何かは存在しませんか?
284 :
デフォルトの名無しさん :2008/03/07(金) 21:39:08
存在します
>>280 > あるクラスのメンバとして宣言されている(has a関係の)クラス名を取
> 得する方法という方法はあるのでしょうか?
java.lang.ClassのAPIリファレンスを眺めて、それでもわかりませんか?
>>281 うちでも出た。IE7 + Java6u5。Javaコンソールに
java.lang.ClassFormatError: Incompatible magic value 1011373133 in class file default
って出て、リロードすると固まる。
Operaだとちゃんと表示されるんだよね。IE用Java Plug-inの問題かも。
つうか、ヤフオクのアプレットのclassファイル、古くない?version 45.3 ってjava1.1かよ…
287 :
278 :2008/03/07(金) 22:00:51
>>285 すいません。分からないです。
当初はgetDeclaredClasses()じゃなくてgetClasses()使ってたんですが、
それでうまく行かなかったのでgetDeclaredClasses()を使って、やはりダメで…という状況です。
288 :
デフォルトの名無しさん :2008/03/07(金) 22:04:12
>>286 そうですか。
さきほどアンインストールしたら直りました。
失礼しました。
Javaプログラムのデプロイとアップデートについて質問させてください。 ローカルの*.classファイルが新しいものかどうかをチェックするには どのような方法があるでしょうか? ファイルのタイムスタンプでよいかと思ったのですが、ユーザがタイムスタンプを 書き換えるようなアーカイバを利用していた場合に対処できません。 .classファイルに外から見てわかるような内部バージョン番号をつけることはできるのでしょうか?
JAR にしてマニフェストに書く。
292 :
278 :2008/03/07(金) 22:37:12
>>291 そうか、その手があったか!
import java.lang.reflect.Field;
public class Hello {
public String message=new String("Hello");
public static void main(String[] args){
Hello hello=new Hello();
Class helloClass=hello.getClass();
Field[] fields=helloClass.getFields();
System.out.println("Num of Classes "+fields.length);
for(Field fld:fields){
System.out.println(fld.getType().getName());
}
}
}
で、実行
Num of Classes 1
java.lang.String
必要な結果が得られました。ありがとうございました。
>>290 おお、Jarでまとめるのもひとつの手ですね。タイムスタンプ署名もつけられるようですし。
ただその場合、アップデート時にはJarごと更新する必要がありますよね?
あまり大きなJarだと問題が出そうです。
更新されているclassファイルのみ更新する方法がないものでしょうか・・・
問題が出るような大きなJarって何Gくらいなの?
295 :
デフォルトの名無しさん :2008/03/08(土) 00:18:32
3メガぐらいで十分大きいんじゃん
>>295 GBクラスではないです。大きくても100MBいかないぐらいまででしょうか。
でもクライアント数が多いとまるごとアップデートは現実的ではないと思いまして。
クラスファイル等のリソースを設計、実装、運用などに合わせて分類し、それを元にjarを分ける
Javaこそ、このあたりの自動更新機構/ツールが備わっていてもよさそうなものだが
つ Java Web Start
Propertiesを継承して俺俺Propertiesを作っています getProperty(key)をオーバライドして取得した値がnullの時 exceptionを投げたいのですがPropertiesにthrowsが無いからダメと怒られます こんな時どうすればいいですか?
RuntimeException を投げる
RuntimeException又はそれを継承したExceptionを投げる
nullチェックした方で任意の例外投げる
>>301-303 ありがとうございます。
なるほど、UserExceptionを継承したのを投げてたのですが
RuntimeExceptionを継承したのを投げたらいけました。
>304 それはあまりよくない設計 PropertiesをラップしたMyPropertiesを作る方がいい 継承はほどほどにな
>>305 それは考えたのですが
カバーするメソッドが多くなるので
どうかなと思ってやめました
>306 そんなに多いか? 利用側に関してはgetProperty くらいでしょう使うのは。 初期化とかは内部で閉じるから、余計なパラメータ等を設定されるのも防止できるぜ。 不要なものまで公開しない方がいい。
>>306 ふむ…確かに多いが、eclipse なら、delegate対象を選択して、
メニュー:Source > Generate Delegate Methods...
で、必要なメソッドを選んで一発終了ですがな。
重い以前に回線が切れるのは何でですかね? ダウンロードした瞬間切れるんですが・・・。
>>308 それっぽいのがあるなーと思ってはいたのですが
使い方解らず・・・
そっちに変更します
ありがとうございました
今までC#をやってきて、似てると噂を聞いたことのある Javaに手をつけてみようかと思い、とりあえず Java SE 6とEclipseをインストールしてみました。 あと何か入れておいたほうが良いものとかあります?
>311 C#でGUIとかやっていたならば、NetBeans6を使ってSwingをいじった方が感覚的に近いかも知れん 後はWebアプリを作りたいのか、GUIアプリを作りたいのか、ちょっとしたCUIアプリなのかで入れるものは変わる CUIならEclipseで十分。
313 :
311 :2008/03/08(土) 15:56:31
Webアプリを作ってみたいですね。 Webアプリを作るには何がいるんかな
315 :
デフォルトの名無しさん :2008/03/08(土) 17:25:50
java で作ったプログラムを配布したいんですけど、 .jar の状態で配布するのが普通なんですかね? 画像を大量にあつかうプログラムなので -Xmx500m -Xms500m とか指定させて動かすのが普通なんですけど、 こういう場合ってバッチファイル起動させるようにする形でいいんでしょうか アドバイスお願いします。
バッチとかシェルスクリプトとかネイティブな実行形式でラップするとか まあ、実行時引数渡すだけならバッチかスクリプト
マニフェストに記述できないの? いや、よくしらんけど
318 :
315 :2008/03/08(土) 19:02:55
>>317 マニフェストファイルに実行時引数やメモリオプションなどを記述できるんですか?
よく知らないもので、、
319 :
デフォルトの名無しさん :2008/03/08(土) 19:29:59
320 :
デフォルトの名無しさん :2008/03/08(土) 22:04:37
すみません質問です。 log4jを使ったjarを作っているのですが、 どうにもクラスパスを認識してくれないようです。 java -classpath /usr/share/java/log4j.jar -jar hoge.jar でorg/apache/log4j/Loggerがないと怒られます。 開発PCはWindows(Eclipse)、実行(プレ本番)PCはFedora8です。 Windows側では正常に動作します。
スレッドを止める方法(破棄する)ってどうしたらいいですか? 「ボタンAを押すと画像を動かし始め(スレッドを開始)、ボタンBを押した時に画像を止め(スレッドを止める)、 またAを押すと画像は動き始める」っていうものなんですが・・・ Interrupt()を使ってもとまらないしsleep()を使うとボタンが押せなくなるんです…
>>281 私もUpdate4にした頃からアプレットが固まるようになったけど、
別スレで、
コントロールパネル > Java の
Javaコントロールパネル から
基本 > ネットワーク設定 の ネットワークプロキシ設定を
直接接続 に変更しろ
ってあったのをみて
試したら動作するようになったよ
>>320 -jarオプションを付けると、オプション-classpathや環境変数CLASSPATHは無視され、
MANIFESTファイルのClass-Path属性に記述されたもののみが有効になる。
ちゃんとMANIFESTファイル書け。
>>321 sleep を使うとボタンを押せなくなるようなスレッドを止めたいのなら、
アプリケーションを終了させると止まるヨ
>>323 MANIFESTって外部のJarも書けるのは初めて知りました。
おかげで無事動作しました。サンクスです。これで家に帰れます orz
326 :
283 :2008/03/08(土) 23:43:32
お世話になります。 283なのです。 >284 ありがとうございます。 あるということで、、今日一日探してみたのですが、見つけられませんでした。 私の持っている本には見つからず、Webページでは、記述のある場所を見つけられませんでした。 Webページで参考になる場所を教えてもらえませんか。
328 :
デフォルトの名無しさん :2008/03/09(日) 00:04:55
あ、thisの話じゃなかった。
>327 ありがとうございます 確認できました。 教科書とか、入門レベルの本には載ってないのですね…。 >328 仕様書読んだことありませんでした。 参考書に沿って勉強していて気になっていた感じでした。 >329 =327ですよね? いえ、thisの話が知りたかったのです。 Class2のaを見たいのではなくて、 最終的には、Class2 のインスタンスそのものを見たかったので、Class2.thisですね。 これが最も知りたかったことです。 ありがとうございます。
331 :
デフォルトの名無しさん :2008/03/09(日) 17:52:45
java.lang.*; はimportしなくても初めからされているのはなぜですか? importするときはどんなときですか? String s="うんこ" みたいなふうなようなことを自作するにはどうやりますか? おねがいします。
>はimportしなくても初めからされているのはなぜですか? その方がべんりだから >importするときはどんなときですか? java.lang以外のとき >みたいなふうなようなことを自作するにはどうやりますか? できません
>>332 ありがとうございました。
最終結論としてjava.langをimportするときはありえないという理解で
よろしいでしょうか?
書いてもいいけど無駄ではある。 どのクラスを使っているか明示するために*なしで1個1個のjava.lang以下の クラスをインポート宣言する流儀はありえる。
インスタンス化するときの、 フィールドを定数で初期化する方法として、 1 クラスの記述のときに、フィールド宣言と同時に初期化の値を記述してしまう方法と、 2 コンストラクタで実行させる、 方法をとれるみたいですが、 1の方法はとらない方がいい、といった考え方はありますか? (1の後に2が実行されるようで、1を2で上書きできることは確認してみました。) どのコンストラクタでも同じことをしたいならば、便利だと思ったのですが、 初期化はコンストラクタでやるべきかなとも、思いました。 こういった考え方をいろいろ教えているサイトってありませんか?
336 :
デフォルトの名無しさん :2008/03/09(日) 18:57:18
テストについて質問です。 例えば Class A{ A(){ methodA(); } public methodA(){}; } のようなクラスをテストするとします。 methodAをテストする前にインスタンスが作られますが、 そこではテストしていないmethodAが発動します。 この問題はどうすれば解決しますか?
337 :
デフォルトの名無しさん :2008/03/09(日) 19:11:58
java sound apiがダウンロードするばしょが見つかりません 日本語マニュアルつきでおねがいします。
>335 ケースバイケース 可読性を考えるとフィールドの宣言と同時に初期化する方がいいかもしれない また、初期化忘れも気づきやすい コンストラクタはあくまでインスタンスの初期化の最後のプロセスと考えるといいかもしれない。 他にも(非staticな)イニシャライザで初期化する方法もある private int num; { num = 10; } のような感じ これはほとんど使わないけど
>336 methodAがpublicである事がバグの一種
341 :
デフォルトの名無しさん :2008/03/09(日) 20:05:25
>>331 おまえには
import *;
が似合ってる
>>340 privateでもいいですけど。
では解決策があるんですか?
java soundってコアに入ってから関連ドキュメントもJDKに含まれなかったか?
>>342 Javaのパッケージを理解してから出直してこい
346 :
デフォルトの名無しさん :2008/03/09(日) 22:00:07
348 :
342 :2008/03/09(日) 22:27:13
>345 いいですけどって何様? コンストラクタで呼ばれるメソッドは原則としてコンストラクタの一部 言い換えれば初期化処理の一部であって、インスタンスの生成が完了する前に実行される特殊なメソッド これをprivate以外にするとオーバーライド時など予期せぬ問題を生じる可能性がある で、テストする内容はインスタンスの生成で何か問題あるのか? そのメソッドが単体でテストしなければならないほどのロジックを含むというならば、別クラスに抽出するべきだろう
import *; import *; import *; ・・・プ
>>348 オーバーライドされて困るからprivateにするってどんだけー
それなら普通finalメソッドにするもんじゃないのか?
import *;といい少しjavaの復習をしたほうがいいかと。
swingのJTabbedPaneについて教えてください。 JTabbedPaneのインスタンスに、addTabすると、 タブが追加されます。タブのインデックス(題名がついているところ)に、 MouseListenerを設置して、クリックを検出したいのですが、 できません。 どなたか、私に助言くださいませんか。
>>351 タブ選択は ChangeListener で検出します。
マウスの位置はどうなんだろう…
>>350 いや、コンストラクタから呼ばれるメソッドはprivateにするのは常識だと思うぞ
finalでもいいがコンストラクタに関してもう少し勉強した方がいいのはお前かと
>>351 JTabbedPaneにMouseListenerをaddして、
そのリスナのmouseClickedメソッドでJTabbedPane#indexAtLocation(int,int)に、
MouseEventのx,y座標を渡せば、
タブ部分をクリックした時は選択したタブに合わせて0以上の値が、
タブ部分以外の場合は-1が返ることで区別ができると思う。
350の言うことなんざどうでもいいよ バカはバカを呼ぶっていうしな それよりimport *;についてkwsk
356 :
デフォルトの名無しさん :2008/03/10(月) 09:23:12
オートボクシングを自分でつくることはできますか?
eclipseで自動で色々なメソッドのjunitテストを作って 勝手に作られたテストメソッドを削除したり増やしたりしても もんだいありませんか?
勝手に作って勝手に削除しても何の問題もないだろ
>>356 つられて見るが、何をボクシングしたいんだ?
361 :
デフォルトの名無しさん :2008/03/10(月) 11:20:01
javaで2進数を表すにはどうしたらいいですか?
表すの意味をはっきり
無理っす。 int binNum = Integer.parseInt("10110001",2); これで我慢だー
binNum ビンナム ジョンイルみたいなノリでワロス
>>361 2進数表記の整数リテラルを所望ってことならJavaには無い
8、10、16進数表記しかない
366 :
デフォルトの名無しさん :2008/03/10(月) 16:52:14
Javaの格言という本を買ってきました。 読んだ事ある人いますか?
それを尋ねることの意味が分からん。 せっかく買ってきたのなら読んで自分で評価、判断すればいい。
368 :
デフォルトの名無しさん :2008/03/10(月) 17:42:04
Javaで音声認識やってる人居る? Java SAPIってのが一応用意されてるみたいんなんだけど、 これって日本語対応してますか?
369 :
デフォルトの名無しさん :2008/03/10(月) 18:50:57
質問です。 他言語(例えばC++)等で作成したプログラムを、Javaのソース内で呼び出して利用する事は可能ですか?
>>369 可能だけど呼び出しのオーバヘッドがあるから速度的な恩恵は少ないよ
今はネイティブのCと比べても遜色がないくらいJavaVMのパフォーマンスはいい
なんで唐突に速度的な理由が前提になってんだ。
実はRuntime#execやProcessBuilder#startで済む問題だったというオチ
import *; についての解説マダー(AA略
>>374 import *;
public class Sample{
public static void main(String[] args) {
}
}
これコンパイルしてみれば分かるだろ
>>374 お前バカだな
阿部さんのケツをインポートするんだよ
そうするとお前もイイ男になるぞ
HDDの容量を取得したいのですがどうすればよいのでしょうか? JAVAのAPIを探してみたのですが,わからなかったです.
>375 先生!コンパイルに失敗します>< 結局342は何が言いたかったのか分かりません><
ケツにインサートならまだわかるがケツをインポートはわからん
import *; で全部インポートできると思っていたんだろ、多分 可哀想な人なんだよ、多分
>>379 C言語とかを勉強するとコンパイル時にエラーが出てくれるありがたみがよく分かるから一度勉強してみるのもいいかも。
からかわれてるとも知らずかわいい子。ウフッ。
386 :
デフォルトの名無しさん :2008/03/11(火) 17:59:24
jmockのコードでみたんですが context.checking(new Expectations() {{ ごにょごにょ }}); ↑の2重波括弧ってどういう意味ですか?
388 :
386 :2008/03/11(火) 18:20:03
>>387 ありがとうございます。ぐぐってみます。
コンストラクタ書けないからね でも書き方は悪いわ context.checking(new Expectations() { { // 初期化処理 } }); とでも書けば解りやすいのに
結構良く見かける書き方だけどなー
staticイニシャライザはよく見るけどインスタンスイニシャライザって内部クラスでしか見ないんだけど。
Vector.insertElementAt は、Vectorの要素数が多いほど遅くなるのでしょうか? 実験してみたところ 要素数が増えるほど一回のinsertにかかる時間が増えているようなのですが... Vectorの初期化のときに、 new Vector(1000000,1000000) などやっても少しぐらいしか改善しません。 insertElementAtで挿入する番号は先頭から終端までほぼ平均的に選ばれるようなプログラムです。 この insert にかかる時間を増加させない方法はないでしょうか?
Vector(とArrayList)は中に配列持ってるだけだから、 途中に挿入すると後ろの要素を全部1つずつずらす必要がある。 これはコンストラクタで大きなキャパを指定しても同じこと。 LinkedListなら要素を数珠繋ぎで持っているため、途中に挿入する場合も 数珠繋ぎの付け替えだけで出来る。しかし、挿入のたびに挿入位置を毎回 先頭からたどる必要がある。一応試してみたらどうだろうか。 Vectorは古いっちゃ古いし。 番号が疎なら整数をキーにしたMapを使うほうがいいかもしれない。
>>392 > 要素数が増えるほど一回のinsertにかかる時間が増えているようなのですが...
insert する要素以降を全部一個ずらしてくから
要素数が増えるほど時間がかかるのは当然。
LinkedList#listIterator(int) 使って要素追加してくとか、
ArrayList#addAll(int, Collection) で一気に追加するとか、
いっその事 Map<Integer, E> してみるとか。
そもそも1,000,000レコードをオンメモリで扱うのもどうかと思うが・・・
>>395 1レコード1KBでも1GBじゃん。32bitのメモリ空間埋めるのに、
1万円でおつりが出る時代なんだから、気にしないと言うのも
それはそれでアリかとw
容量の問題じゃなく速度の話だとw
それもそうだが、大量データの処理は専用のソフトウェアに任せろという意味だろ Oracleのオンメモリストレージ使って100万件オンメモリとかならばOKな時代だがJavaのヒープでそれをやるってのはアホ
ヒープ領域使い果たしてJVMがクラッシュしたら速度とか言ってる場合じゃないしなw 5万ぐらいなら余裕だが100万レコードともなるとまず逝きますw
>>384 C言語は、javaに比べれば投げっぱなし感が強いんじゃない?
>>400 Rubyとかを勉強すると〜なら分かるんだけどな。
なんでC言語を持ち出すのかが全く分からない。
それ以前に投げっぱなしという表現が意味不明
Rubyは麻薬だな。 でも遅すぎて死ぬ。
ここってJava3Dの話もしていい?
スレタイが初質だから初質っぽいことならいいんだろうけどJava3D使ってる人居るの? 俺はJOGL派なんだけど。
406 :
404 :2008/03/12(水) 18:16:38
今ちょうど両方つまみぐいしてる所で、Java3Dメインにしようかと検討中。 JOGLの頂点配列並な性能はあるし上位なAPIあるから楽かなと。 質問は質問文まとめてる内に自己解決した、ごめん。
407 :
デフォルトの名無しさん :2008/03/13(木) 01:35:19
|:: \おい、ゴルァ 出て来い!! ドッカン ゴガギーン
:||::  ̄ ̄ ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ _m ドッカン ☆
:||:: ___ ======) ))_____ / / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
:|| | | | ̄.ミ∧_∧ | | ────┐||:: ∧_∧ < おらっ!
>>1 出てこい!!
:|| |ぁゎゎ. | |_..( ) | | .___ │||:: (´Д` ) \___________
:|| |Д`); | |_「 ⌒ ̄ ,|.. |_... ..||||:: / 「 \
:|| |⊂ノ; | |_| ,/  ̄ .  ̄ ̄ ̄ │||:: | | /\ \
:||:  ̄ ̄ ̄  ̄| .| :||│ ;, │||; へ//| | | . |
:||:: :; ; ,, :| :.| ||│ (\/,.へ \| | (r )
:||:: :; 冫、. . | .i .|:||◎ニニニニ\/ \ |  ̄
:||.:,,''; ` .. . :: . | ∧. |:||│::::/ │||::.:. .Y ./
:||:;;;: : | | | |.||│ 冫、 ;;;,,│||:;;;. | .|
:||:;;;: / / / /::||│ ` .,;;;,,.│||:;;;. | .|
:||;::: # ..: ./ / ./ ./ ||│|三三三|. │||;;:..:: | .|
:||;::: #. ..: :::::: (_) .(_).ミ||│ │||;;;k、,,,|,(_)
 ̄ ̄ ̄ ̄ ̄: ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
:::;三三;;;;;三三:::;;;;;;; :::::;;;;;::;;;;;;;;;;::::;; :::::;;;;;:::::;;;;;;;;;;::::;; :::::;;;;;:::;;;;;;;;;;::::;;;;;::三三三
Derbyを組み込みモードで使ってるんだけど、 動作中にJavaの外からDBのテーブルの状態を調べる方法ってないの?
VC++でDirectXつかって高度なお絵かきができますが、 Javaでも出来ますか? たとえばコサックスみたいなやたら人がでてくる戦国シミュレーションゲーム作れます?
>409 やろうと思えば出来るんじゃね? DirectXのパフォーマンスと比べれば程遠いモノが出来るが。
JMonkeyEngineってのがある
クラスの停止について質問です。 今ゲームを作っていて、オープニング画面とゲーム画面の2つをつくりました。 まずオープニングをJFrameに表示、その後キーボード入力でオープニング画面を消してから ゲーム画面を表示するという構想で進めてます。 そこでオープニング画面のクラスを停止させたいのですが、やり方がわかりませんでした。 そもそも一度実行したクラスを停止させること自体無理なのでしょうか?
クラスを停止?何言ってるんだ
クラスの停止とか、色々と勘違いしていると思うが・・・ 後で再描画するならばsetVisible(false)で非表示にする 二度と表示しないならばdispose() で破棄する
JPanelを2つ作って、片方を表示させた後、同じ場所にもう一方のJPanelをすり替えて表示させたいです。 今表示しているJPanelを消す=JPanelを継承しているクラスを停止させるという表現しかできませんでした。
JFrame の GUI に今あるアプレットが使えると思ってはめ込んでみたんだけど どうもドロップダウンしたメニューがアプレットの後ろに描画されてしまう様子。 アプレットは JRootPane を使っているはずだがこれが原因?
>>414 ありがとうございます。
さっそくやってみます。
それをJPanelの交換により行うってのはどうなんだろう。 JPanelを継承した、例えばExJPanelに画面の状態を表すオブジェクトを保持させてればいいんじゃね? public final class ExJPanel extends JPanel { private Mode mode = new StartMode(); public void paint(Graphics g) { mode.paint(g); mode = mode.nextMode(); } } public interface Mode { void paint(Graphics g); Mode nextMode(); } みたいな
>>418 JPanelの継承やってみます。ありがとうございます。
>>419 cardLayoutも調べているうちに見つけたのですが、脳みそが足らないばかりに
うまくいきませんでした。教えて下さったのにすいません。
まあ、Swingは最初は覚えること多いから仕方ない. ゲームのオープニング画面みたいな起動画面であれば、すぐに表示するべきだから、別JPanelでいいと思う。 画面を出している間に、ゲーム用のコンポーネントを裏側で作るってのは正しいしね。 俺は乗せ換えでいいと思うよ。 1.JFrameにメインのコンポーネントを乗せる。 2.メインコンポーネントに、タイトル画面コンポーネントを設定して描画 3. スタートボタンなどが押されたらメインフレームからタイトルコンポーネントを抜いて差し替える
SplashScreen とは違うことをやりたいの?
ゲームのオープニング画面はスプラッシュスクリーンとは別物だろ
JPanel p = (JPanel)getContentPane(); JPanel p1, p2; p.add(p1); …… p.setVisible(false); p.remove(p1); p.add(p2); p.setVisible(true); 俺なんか、全部交換。
>>412 ですが無事完成しました。
みなさんアドバイス本当にありがとうございました。
426 :
416 :2008/03/13(木) 16:16:16
JApplet の内容を JPanel に分離してそっちを JFrame と共有するようにしたら メニューが裏に廻らなくなった。マジかよ。
>>426 JApplet自身は重量コンポーネントだからじゃない?
>422 Splashにボタンとかつけられたっけ? 自前でWindowを使って作るならばできるだろうけど
あるクラスに含まれるクラスを再帰的に抽出する方法ってあるでしょうか? 擬似コードを書くと、 Target hoge=new Target(); Class[] classes; classes=hoge.getClass().***.getAllClasses(); みたいな感じのことができるといいなあと思っているのですが。
含まれるの意味が解らん 依存クラス数なら適当なMetrics測定ツール使えばいい
431 :
429 :2008/03/13(木) 23:42:26
>>430 別の言い方をすると、あるクラスがimportしているクラスを
再帰的に取得したいといことです。
(あるクラスがimportしているクラス、そのクラスの
import対象のクラスがそれぞれimportしているクラス…というように、
依存関係のクラスオブジェクトをすべて取得する)
いっそclassファイルをバイト列のイメージにして文字列から解析した方が早いでしょうか?
importはincludeじゃないぞ……
>>431 importと依存は関係ないぞ。
java.lang.Classにはそういう情報を得る手段はないから、バイトコード
を解析するしかないんじゃないかねー。
MyClassLoaderで何とかならないかね
ダイナミックプロキシを使ってインスタンス化したオブジェクトのクラス名になる $1 とか $2 とか、 この番号に何か名前って付いてますか?
>431 で、解析して何がしたいんだ?
アノテーションの引数にオブジェクトを指定できないのは何でですか? @Foo(new Bar()) とかしたいんですけど。
そういう仕様だから
439 :
デフォルトの名無しさん :2008/03/14(金) 14:10:18
fileクラスのrenameToで成功してもgetNameで名前が変わってないんですがどうしてでしょうか
>>439 細かいけど、Fileな
javadocよく読めば分かると思うけど、Fileはimmutableだから
>>439 java.io.File はファイルそのものを表現してるんじゃなくてファイル名を表現してるから、
renameTo でファイルそのものの名前が変わっても影響を受けない。
442 :
デフォルトの名無しさん :2008/03/14(金) 14:26:29
>>410 >>411 そうか。マルチプラットフォームではああいうゲームは無理か。
ところで、JavaのアプリとCのアプリで共有メモリーってさすがに無理だよね。
データをプロセス間で共有する場合、どういうことするんですか?
つDB
つパイプ
つソケット
>>443 ファイルを介してファイルマッピングという形でなら、たぶんできるんじゃない?
使い物になるかどうかは微妙かもしれないけど
449 :
デフォルトの名無しさん :2008/03/15(土) 09:11:19
プロトコルハンドラって何に使うものなんですか? よろしくお願いします。
451 :
デフォルトの名無しさん :2008/03/15(土) 09:51:11
JFileChooserで、 ・ディレクトリ選択 ・でも、普通のファイルも見れる ようにしたいんですけどどうすればいいですかね? ディレクトリ選択するようにすると、普通のファイルは見えなくなるし、 普通のファイル見えるようにするとディレクトリ選択できなくなるんですけど
ディレクトリ選択でファイルを見せる意味が分からん
ファイルが見えるとなんのディレクトリかよくわかるじゃん
試して無いけど、approveSelectionメソッドをオーバーライドすればいけるんじゃね? setFileSelectionModeでFILES_AND_DIRECTORIESを指定してさ。
455 :
デフォルトの名無しさん :2008/03/15(土) 10:13:37
此処で良いのか疑問ですが質問です。 OS:WindowsXP IE6/Firefox/2.0.0.12 Sun Java Standerd Edition 6 バージョン6 アップデート5 (ビルド1.6.0_06-b13) 先日アップデートした処、Javaの起動で「Javaコンソール」を表示しないと実行されません。 コンソールを非表示でJavaの実行は無理なのでしょうか? どうか教えて下さい。
うん、できた。 public class JDirectoryChooser extends JFileChooser { @Override public void approveSelection() { if (getSelectedFile().isFile()) return; super.approveSelection(); } public static void main(String[] args) { JFileChooser c = new JDirectoryChooser(); c.showOpenDialog(null); } }
u5ってu4のセキュリティフィックスだよね。 そろそろ入れようと思ってたけどなんか色々問題あるみたいだね。
458 :
451 :2008/03/15(土) 11:39:37
>>456 c.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
を一行追加してみても、だめでした。
さらに
public boolean accept(File f){return true;}
を追加してみてもだめでした。
内部クラスの中に内部クラスを作ったりって普通にしますか? 経験も積んでないのですが少し気持ちが悪い気がして質問しました。
全くしない訳ではないが普通しない
forの中にforを書いたりって普通にしますか? のようなものかと 2段くらいはすることもあるけど、頻繁には使わない 3段以上は滅多にやらない 人にもよるかも
必要があれば使うみたいな x,y,z,tなんて4次元だしw
そうでしたか。やはり熟練者の方の意見は勉強になります。 ありがとうございました。
465 :
デフォルトの名無しさん :2008/03/15(土) 15:32:42
import java.io.*; class hoge{ public static void main(String args[]){ if(args.length <= 0){ System.out.println("specify the file name correctly"); System.exit(1); } try{ int i; for(i = 0; i < args.length; i++){ BufferedReader br = new BufferedReader(new FileReader(args[i])); String str; while((str = br.readLine()) != null){ System.out.println(str); } } br.close(); } catch(IOException e){ System.out.println("input/output error"); } } } コマンドライン引数からファイルを受け取って表示するプログラムですが、 br.close()の行で "シンボルを解決できない" というエラーが出ます。なぜエラーが出るのかわかりません。 br.close()を削除すれば実行できるのですが・・・。
>>465 br.close(); の前の閉じ括弧 '}' が一個多い。
それで br がスコープから外れて「シンボルを解決できない」といわれてる。
スコープを勉強しろ
{}の組み合わせは力ずくでは良くないがな
メモ帳でもつかって無い限りこんな間違いしないと思うんだけどな
470 :
465 :2008/03/15(土) 16:20:48
>465の質問者ですが br.close()の 前の閉じ括弧を’ } ' を取り除いても エラーが出ます。 その閉じ括弧はfor文の閉じ括弧になっています。 閉じ括弧を除いた場合のエラーは hoge.java:13: 'try' への 'catch' または 'finally' がありません。 hoge.java:27: 'catch' への 'try' がありません。 hoge.java:32: '}' がありません。 です。
日本語も読めねーのかよw
>>470 br.close(); の前の閉じ括弧を一つ取り除いた後、
br.close(); の後に一つ閉じ括弧つけろ。
473 :
デフォルトの名無しさん :2008/03/15(土) 17:43:23
環境 Windows xp, jdk 1.5 ポリシファイルで全部のファイルの読み込みを可能にしました。 swingアプレットを作ったのですが、 プロンプトからだと画像やボタンが表示できました。 しかしブラウザから起動するとボタン等は表示できますが 画像が表示できません。(読み込めていない様子) どうしたらできるのでしょうか? 一応、ソースの怪しい所を貼り付けておきます。 import...... /* <applet code="TimerTest2.class" width=500 height=250> </applet> */ ___javaソースの一部___ public class Test2 extends JApplet implements ActionListener{ フィールドなので省略 public void init(){ icon0 = new ImageIcon("07.gif"); ___起動させるhtmlファイル___ <html> <head></head> <body> <p> <APPLET code="Test2.class"width=500 height=250></APPLET> </body> </html> _______________ htmlファイルは短いので全て載せました。
>>473 HTMLに画像を読み込むコードが無いから。
>>473 Javaコンソールからエラーの内容確認
476 :
デフォルトの名無しさん :2008/03/15(土) 17:59:06
自宅サーバ板のTomcatでwww鯖ってスレに質問したんですが、 なんか過疎ってるのでこちらに再掲します。 Debian etchでTomcat5.5使おうとしてるんですけど、 SEVERE: 設定記述子 test.xml を配備中のエラーです org.apache.commons.logging.LogConfigurationException: java.security.AccessControlException: access denied (java.io.FilePermission /usr/share/tomcat5.5-webapps/test/WEB-INF/classes/logging.properties read) (Caused by java.security.AccessControlException: access denied (java.io.FilePermission /usr/share/tomcat5.5-webapps/test/WEB-INF/classes/logging.properties read)) こんなエラーが出ます。 サンプルアプリは動いていて、自分で作ったやつがエラーになります。 パーミッションはサンプルと同じでrootのみに与えています。 そもそも、logging.propertiesというファイルはサンプルアプリになかったのですが、 classesに777でlogging.propertiesを作っても同じエラーが出ます。 どなたか解決策を教えてもらえないでしょうか?
>>473 たぶんこうだ
new ImageIcon(getClass().getResource("07.gif"))
>>476 その上位ディレクトリに x パーミッション付いてるのかよ。
# su tomcatuser -c "cd /usr/share/tomcat5.5-webapps/test/WEB-INF/classes"
480 :
デフォルトの名無しさん :2008/03/15(土) 18:53:59
>>476 /var/cache/tomcat5.5/Catalina/localhost# lla /usr/share/tomcat5.5-webapps/test/WEB-INF/
合計 24
drwxr-xr-x 5 root root 4096 2008-03-15 17:43 .
drwxr-xr-x 3 root root 4096 2008-03-15 17:19 ..
drwxr-xr-x 2 root root 4096 2008-03-15 17:38 classes
drwxr-xr-x 2 root root 4096 2008-03-15 17:20 lib
drwxr-xr-x 3 root root 4096 2008-03-15 17:28 src
-rw-r--r-- 1 root root 637 2008-03-15 17:43 web.xml
となっています。
481 :
465 :2008/03/15(土) 19:21:25
465です。 解決しました。 ありがとう。
>>476 policyファイルで弾かれてるんじゃない?Debian etchなら、
/etc/tomcat5.5/policy.d/の下に*.policyってファイルがあるから、
それ読んでほげほげしてみるといいかも。
483 :
デフォルトの名無しさん :2008/03/15(土) 20:43:54
476です。
>>477 さんのやり方で解決できました。
みなさん
親切にありがとうございました。
484 :
デフォルトの名無しさん :2008/03/15(土) 21:14:50
>>482 ありがとうございます。
04webappsの
grant codeBase "file:${catalina.home}/bin/tomcat-juli.jar"
の中に
permission java.io.FilePermission "<webアプリのpath>", "read";
を追加したところ、上記のエラーは消えました。
04webappsじゃなくて04webapps.policyでした
swingに関して質問させてください JFrameのサイズを指定する際にまわりの枠を気にしないで済む様にInsetsを利用しています。 しかし、JMenuBarを追加すると、その分の幅はInsetsで考慮されていないようです。 JMenuBarの上下方向の幅を取得するにはどうすればよいのでしょうか? あと、BufferStrategyを使いたいのですが、JPanelでは使えないんでしょうか? よく、JavaのGUIの勉強をすると、JFrameの上にJPanelを張って、その上にさらに何かを張ってと階層状にするべきと見かけますが、BufferStrategyを使う場合はJFrame上にべた書きすべきでしょうか?
>>486 中身のサイズに合わせてJFrameのサイズを決めたいならpackすればJFrameの方がそれに合わせてくれる。
packではだめなレイアウトマネージャを使っていたり、どうしても自分でフレームサイズを決めたいというのなら、
JFrame#getJMenuBar()でJMenuBarコンポーネントを得てgetSize().heightでメニューバーの高さを取得できる。
ただし、フレームが表示されてないと大きさは取れないので、ダミー的に表示してサイズ計算後setSizeで変更してやる。
JFrame f = ...
f.setVisible(true);
Dimension d = f.getJMenuBar().getSize();
Insets i = f.getInsets();
f.setSize(contentWidth + i.left + i.right, contentHeight + d.height + i.top + i.bottom);
みたいな感じで。
BufferStrategyを使いたいならjava.awt.Canvasをコンテントペインに乗っけてやれば大抵うまくいく。
swingコンポーネントにAWTコンポーネントを乗せるのは抵抗があるかもしれないけれど。
幅の情報は要らないからgetSize().heightでなくgetHeight()で十分だった
リアルタイムのゲームを作っているのですが、 数秒ごとにカクカク止まってしまいます。 ガベージコレクションのせいかと思ったのですが、 空きメモリのこぎりグラフとは無関係にカクカクします。 速いマシンだと全く気にならないレベルなのですが、 セレロン600だと耐えられないカクカクです。 どうしたらいいか分かる人いますか?
プロファイルを取ってみればいいと思うよ
Java のログ機能と Log4j とどっちがいいの?
JRE 単体って入れたことないんだけど 6 で Java DB もバンドルされてる?
俺はこの前他人が作ったプログラムをいじる必要があったんだけど そのプログラムのmainメソッドは1000行以上あって、読むのが大変だった。 そういう悲劇をなくすため。
意味のある単位でプログラムを小さな部品に分解していくと、分かりやすいものになる。 こういう意識を普段からもっておいたほうがいいし、 入門用の短いプログラムでも意識するべき。
どのくらいのレベルでメソッド化していけばよいのでしょうか メインメソッドにはメソッド処理以外書かないぜくらいの勢いでしょうか・・・
その時代の画面のスクロールで 2 ページが目安。
メソッド名が無理なく考えられるような処理(上のリンクの場合だとdrawTriangle) とかは、常に分けてもいいんじゃないかな。 上手い名前付けができない場合は、コードの長さと相談して分けたり分けなかったり
複数のjarファイルからクラスを探してきて欲しい時に ・lib/extにjarファイルを置く ・-classpath引数で一つ一つ指定する 以外の方法はありますか? javacならば-extdirsでjarの入ったフォルダを指定すれば そのフォルダの中のすべてのjarを探してくれるのですが javaにはextdirsのようなオプションがありません
501 :
500 :2008/03/16(日) 18:22:42
すいません、自己解決しました java -Djava.ext.dirsでいけました
502 :
デフォルトの名無しさん :2008/03/16(日) 20:31:24
Javaダウンロードできないんだけど(笑)
Javaでオーバーロードを行なった場合の「あいまい」と言われる、言われない条件というのを詳しく知りたいのですが 何か良い資料はないでしょうか? 例えば class Hoge{} class Hoge2 extends Hoge{} class Hoge3 extends Hoge2{} と定義して test(new Hoge3(), new Hoge3()); と呼び出したとき、 void test(Hoge2 a, Hoge3 b){} void test(Hoge a, Hoge3 b){} 問題なし void test(Hoge2 a, Hoge3 b){} void test(Hoge2 a, Hoge2 b){} 問題無し void test(Hoge a, Hoge3 b){} void test(Hoge2 a, Hoge2 b){} あいまいエラー となる基準がいまいちピンときません。
続きです。 なんとなく (Hoge3, Hoge3)により近いものを探している雰囲気はあります。 ではと思い、 class Hoge4 extends Hoge3{} test(new Hoge4(), new Hoge4()); void test(Hoge a, Hoge4 b){} void test(Hoge3 a, Hoge3 b){} これなら、Hoge4,Hoge4まで上は3ステップ。下は2ステップ。下が選ばれるはず。 と思いきやあいまいエラーでした。
>503 条件も何も曖昧だから曖昧なんだよ A’がAを継承しているならば、A’はAともA’とも解釈できるって理解していればそんなオーバーライドは普通書かない
ジェネリックスと否ジェネリックスでObject型かぶらせちゃうのはたまにやるな。 実行時型情報ないからなぁjavaのジェネリックスは。
>>505 とても分かりやすい説明と、良い文献をありがとうございます。
熟読させてもらいます
インターフェースも絡めて色んなパターンを試していたのですが、
「あるメソッドの全ての引数が、他の同名メソッドの引数に代入可能な場合、あるメソッドはより特殊と判断する」
という1文ですっきり解決して魔法のようでした。
508です。
一応情報です。
>>505 の日本語版のほう、和訳が間違ってますね。
英語の方読んだほうがいいです
>>509 和訳のは第2版で英語のは第3版だからその違いじゃなくて?
いや、完全に文章がおかしかったです 「もしすべての最大限に特殊なメソッドが同じシグネチャをもたないならば」 と和訳されていますが、英文では 「If all the maximally specific methods have override-equivalent signatures, then」 とあるので「〜〜をもつならば」が正しいかと思われます
specific を特殊と訳した奴のセンスを疑う。
>15.12.2.5 Choosing the Most Specific Method 「もっとも明確なメソッドの選択」だな。
> 「もっとも明確なメソッドの選択」だな。 そのセンスもどーかと思うが
批判だけではなく対案を
メソッドの選択でいいんじゃ?
>>516 俺は「特殊なメソッド」でいいと思うが。
長ったらしくてもいいなら語を補って「実引数型に特化したメソッド」とか。
実引数型だけだと実行時の型と勘違いされる可能性もあるから より正確には「実引数のコンパイル時の型に特化したメソッド」とか?
議論の最中にすみません。 Preferencesについての質問です。 Preferences#userNodeForPackage(Class<?> c) で取得したノードは、その名の通りパッケージのノードですが実際プロパティを保存したい場合どのようにすべきなのでしょうか? 私のイメージとしては、そのノードにあるクラスのプロパティを直接putInt(String,int)とするのは後々パッケージ内での重複の危険や、そもそも意味的な意味の違いで使いたくはありません。 よって、上で取得したノードにさらに prefs(←パッケージのノード).node("クラス名").node("インスタンス名").putInt(String,int); のようにするのがプロパティ的で良い気がしますがこちらは何かと面倒です。 特に何も気にせずパッケージノードにputするものなのでしょうか?
そもそも、どのように使いたいかじゃねーの?
インスタンスごとに設定項目作りまくりという糞設計なのか データベース使え
すみません。 ここに来てる時点で分かってくださるとは思いましたが、私は初心者で設計なんてまだまだこれからの段階なんです。 しかしインスタンスごとに設定項目変えている訳ではありません。 例えばjavax.swingパッケージを見てみると、その中に存在するクラスだけでもx,yというプロパティはかなりの数あるでしょう。 ですから必然的にその下のノードが必要になるのではないか、と疑問に思ったのです。 単純に一般的にどうされているのかと気になったので聞いてみたのですがここに来るのすら早かったようですね。 すみませんでした。
>523 そんなAPIを使う前にクラスとインスタンスの関係を勉強したほうがいい
preferenceに、インスタンスごとの値を記録したい場合というと、 例えばマルチタブエディタで個別のタブごとの設定値 (ファイル名とかカーソル位置とか)を記録したいとか? まあ、そういう用途ならそれでいいんじゃね?
MDIのセクションの復元とか
どちらにせよ初心者には縁の無い話かと
javaだとMDIはSwingにあるしセクション保存なんて情報を外に追い出せばとりあえず出来るから初心者でもやるんじゃない? SwingAppFrameworkは始めからセクションのストア・リストアに対応してるし。
それは既に初心者ではない件
その程度は初心者の域
フレームの位置と大きさが画面から外れてないかどうかってどう確認すれば良い? GraphicEnvironment とか言うのを使うの?
JavaってCのインラインアセンブラみたいなのはないですよね?
naiyo
aruyo
アセンブラを扱うライブラリがあったはず
536 :
デフォルトの名無しさん :2008/03/17(月) 21:52:45
質問です。 以下の要件を満たすためにはどのような手段がありますでしょうか。 ■環境 Java1.5 Tomcat5.5 + Apache2.3 FedoraCore7 1.ローカルでは、あるjavaプロセスがほほ常時立ち上がっています。 「ほぼ」と書いているのは、たまにプロセスが停止することがあるため。 最大停止時間は10秒。そのjavaプロセスの死活監視及び起動をshellで行っています。 2.1とは別に、tomcat+ApacheでServletを使ったWebアプリケーションがあります。 上記の環境のもとで、Webアプリケーションへのリクエスト送信をトリガーに Webアプリケーション側から1のjavaプロセスのクラスを呼び出して1のクラス内の情報を取得したいです。 上記の実現方法について、教えていただけませんでしょうか。 私なりに調べてみたのですが、RMIというのはこの場合使えるのでしょうか? RMIの紹介サイトはどこもクライアント側からのトリガーでサーバーへ返すものしかなく、 逆の場合も使えるのか確証が持てません。 また、RMIの他にも、Tomcat,Apache側の設定でどうにかなる方法などあるでしょうか? 上記以外の手段についてもあればお願いします。 以上、ご教授いただきたく思います。
apache httpd 2.3って、trunkからビルドしてんのかよ。人柱乙。 監視対象のjavaプログラムに手を入れられるなら、 そっち側で必要な情報をファイルかDBに記録すればいいんじゃね?
>>536 > RMIの紹介サイトはどこもクライアント側からのトリガーでサーバーへ返すものしかなく、
> 逆の場合も使えるのか確証が持てません。
昔似たような処理をやったことがあるけどサーバーのトリガーをクライアントからスレッドで監視してやれば
できたような…ただトリガーの発生が不定期だったりするので同期取らせたりいろいろうざいことしなけりゃ
ならんかった
1 側で RMI がサービスしてりゃいいじゃん。 レジスロリは Tomcat で。
core なんてウンコみたいなもんだろ。 詳細に分析すりゃ症状は分かるかも知れないが、大半はクソの役にもたたねぇ。
ウンコさえ分析できないきみはクソの役にも立たねえ
core だけで分析できると豪語する神が現れた。
手動で serialVersionUID 管理する場合って 1, 2, 3, ... で良いよな。
うん
Javaのお勉強をしているものです プログラム用エディタ使ってコマンドプロンプトでシコシコやってました ところが同一ソフト上でエディットとコンパイルと実行ファイル化までできる 『統合開発環境』なるソフトが無料で出回っているそうじゃないですか さっそくEclipseとNetBeans?をダウンロードしました はい、何やってんだか分りません 重くて動きません etc… ということで 軽くて初心者向けの統合開発環境ありますか?
つ プログラム用エディタとコマンドプロンプト
Visual J++ 1.0
eclipseとかnetbeansとかが動かないほど重いPCは捨てて買い換えなさいな よほどリソースが足りないPCだ、それは
visualC#みたいな感じでJAVAで使えるものを探しておりまする
Visual J 調べてみるでござる
Visual J#2002なるものが見つかったのでダウソしてつかってみまする
Eclipseでも2系なら軽いと思うが。
C#のBinaryWriterで書き出したデータを Javaで読み込みデータを取得したいのですが DataInputStream等を使っても正常に取得できません 何か良い方法ありませんでしょうか? 取得したいのはintの値やutf-8の文字列等です
ByteBuffer でゴリゴリやれ。バイトオーダー設定せれ。
Swing で矩形以外の Window 出す方法は、裏の画面キャプチャして擬似透明にするしかないかね。
556 :
553 :2008/03/18(火) 21:39:40
>>554 あーやっぱゴリゴリですか・・・
頑張ってみます・・・
VisualJはすべて有料ですか…
Visual J# 2005 Express版は日本語版なくて英語版だけだけど無料だったような。 もっとも J# は厳密には別の言語だからスレ違いっぽ。
半月前ほどからJavaの勉強をはじめました。 会社で次にデータベースの勉強をしろと言われたのでJavaを勉強しつつ データベースの勉強をするのにオススメの書籍を教えていただけませんか? Javaは何冊か入門書をもっているのですが、データベースはさっぱりです。別々に分けたほうがよければ、データベース専用の書籍でもかまいませんのでお願いします。
Servletの本ならだいたいどの本でもDBとの接続の話は出てる。 Servletじゃなくても大体同じノリで使える。
JPlaneをeclipseでextendsしたら シリアルが何とかとか出て意味が解りません。 おしえてください。
1. 黄色い波下線が出ているところにキャレットを置いて [CTRL]+[1] を押す 2. add generated serial version ID 3. (゚Д゚)ウマー
■環境 JDK5.0 質問です。 大学の課題で,3月中にJavaでチャット(とにかく動けば良いからCUIで作成しても良い)を作ってこいと言われました。 Javaは全く学んでいないので、現在は「10日でおぼえるJava入門教室」という本をやっています。(8割方終わってます) そろそろチャットプログラムを作ってみようと思っているのですが、 この本はネットワークプログラムについて全く載っていないので、何から手をつければ良いかわかりません。 そこで質問なのですが、チャットプログラム作成を前提に次の本を買うとしたらどの本がオススメでしょうか? また、本以外にチャット作成を一から学べるHPがありましたら教えてください。よろしくお願いします。
一生本読んでろ
チャット作ってもチャットする相手いないし・・・・・
自分の作ったプログラムなら自分とチャットするだけでも十分楽しいと思うから大丈夫
今まさにチャットを作ってる。チャットというより非同期イベント配信プロトコルを
考えてるといった方が正しいかもしれないが。
>>565 Socket, ServerSocket クラスの API リファレンスを読め。
undecoreted な JFrame や JDialog じゃなくて JWindow が必要なときってどういうケース?
>>564 あと10日しかないと無理だけど、もっと余裕のある場合を想定すると、とりあえずセッションを勉強したらどうか?
HTTPで404とか503とか表示されるアレだ。Proxomitronを導入してLog Windowを表示してみればいい。
チャット自体はinとout直結でhttp使わなくても通信出来るけど(Javaならsocket,serverSocket?)。
HTTPはRFC2068、RFC2616あたりが詳しい(JavaならhttpURLConnection、URLConnection?)。
チャットと言っているのに通信方向性もステート管理もまるで違う HTTP を薦めるヤツはバカなのか。
>>573 お前はまず、理解していない点をまとめてから書け。
バカと書かれて憤慨した
>>571 です。大学はチャットをHTTPで作ると減点する恐ろしい場所なのですか。serverも知らないと書いてるからなるべく親切に説明しようとした俺はかなり情けないです。
>>574 通信方向性って、通信の設計の指針じゃないですか。一見でわかりませんでした。
>564 Java TCP/IP で調べれば結構な数の参考書あるぜ 大抵はサンプルとしてチャットプログラムがあるから、サンプルありで薄い本を探せば1週間でもなんとかOK
通信頻度が高いからHTTPは向かないのですね。すみませんでした。
IPメッセンジャーを改造して提出する生徒続出の予感。
IPメッセンジャーナツカシス 雑談が多すぎるって理由で出向先で使用禁止になったよ。
協力会社の愚痴を間違えてその協力会社の人に送ってしまった某外資 SIer が居て 使用禁止になったプロジェクトなら知ってる。
通信頻度じゃなくチャットは双方向メッセージが基本だからトランザクション指向の HTTP とは全く違う。 自動リロード (ポーリング) でごまかすタダの掲示板がまともなチャットとでも思ってるのか。
つComet
とにかく動けば良いってことらしいからまともなチャットでなくてもとにかく動けばいいんでない
>>582 Comet はそのポーリングをフレームワーク化しただけだっつーの。
キーワードだけ覚えて披露するなよ。
プロトコルがそもそも HTTP と違うだろ。 その区別からできてないのかよ。
Cometはポーリングじゃない。 ポーリング無しでサーバ→クライアント方向の通信を実現する方法。 クライアントから見ると、一度送ったHTTPリクエストに対するレスポンスが いつまでたっても終わらず、 たまに思い出したように部分的なレスポンスが返ってくるので、 それをその都度処理する、って形になる。 が、このレベルの課題でCometなんぞ持ち出したら、余計面倒になる罠。
だからポーリングにタイムアウト的なキュー待ちの毛生やしただけじゃん。
>>591 とりあえず、UIスレッドとそれ以外のワーカスレッドについてと
その連携・スレッドセーフ性に関して再考した方がよいかと
evalみたいなことできませんか? int i=3; String s = "現在i時です。"; String msg = System.eval(s); System.out.println(msg);
javax.tools.Compilerというのがあるが、ここで質問するレベルでは難しいだろう。 Javaじゃなくていいなら javax.script.* 経由で対応言語つかっとけ。
String msg = String.format("現在%d時です。", 3);
180°の弧を描くアナログメータを作りたいんですけどうまくいきません 下のようなpaintメソッドではいけないのでしょうか? 真ん中に直線が描かれるだけで何もなりません double i = 0; int x = 200; int y = 200; public void paint(Graphics g){ g.drawLine(x,y,200,300); Double xx = new Double(200 + Math.sin(1/20 * i) * 200); x = xx.intValue(); Double yy = new Double(200 - Math.rint(Math.cos(1/20 * i) * 200)); y = yy.intValue(); i += 1; }
描画部分のループはどうなってんの? というか素直にdrawArcでいいんじゃない?
リロードしてなかったぜ
600 :
596 :2008/03/19(水) 23:41:24
ども 助かりました
ネットワークから受信する XML を SAX で解析する場合って、例えば属性値として 数 GB の文字列を投げられたら OutOfMemory が出るまで分からないよね。 10MB 送って無応答、10MB 送って無応答、、、という接続をいっぱい作られたら どっかでサーバのメモリが逼迫状態のままになるという攻撃になるんだよね。
Appletでウィンドウのサイズをかえるごとにウィンドウのサイズを受け取りたいんですけど どうしたらいいんですか? ダブルバッファでcreateImageの引数を変えたいんですが・・・
ComponentListener または描画のたびにアプレットのサイズ確認して変わってたらバッファ作り直し。
>>603 ありがとうございます
参考にさせていただきます
何度もすいませんw ↓これじゃだめなんでしょうか?なんか最初のサイズの範囲にしか描画されないんですけどorz public void componentResized(ComponentEvent e){ d = getSize(); buffer = createImage(d.width,d.height); repaint(); }
JTableを印刷するにはどうすればいいでしょうか?
スマートな方法は知らんけど Robot 使って該当領域スクリーンキャプチャすればできることはできるんじゃねか。
>>605 正直、私では分かりません。が、
リスナーの追加、paint 内での buffer の使用状況確認などなど
はじめてやる時は、面倒でも一つ一つ丁寧に、
想定したことが起きているか確認しながら進むこと
>>606 JTable#getPrintable()
PrinterJob#setPrintable()
PrintRequestAttributeSet#add()
PrinterJob#printDialog()
PrinterJob#print()
このへんのメソッド組み合わせて肉付けしていけばできる(はず)
POI(HSSF)で大量のデータ(10万件のレコード)をExcelファイル出力しようとした場合に OutOfMemoryErrorの発生を回避するには 複数のファイルに分割して出力する以外に方法はないんでしょうか?
済みません、できませんでした。 メソッドの使い方がさっぱりわからなくて・・・。 class pbtActionListener implements ActionListener { public void actionPerformed(ActionEvent i) { } } この中にテーブルを印刷する機能を入れるにはどうすればいいでしょうか 本来なら時間を掛けて勉強するべきでしょうが 時間がないのもう少し詳しく教えてください。お願いします。
>>610 今時の Excel は XML で読めるんだから XML で出せば?
>>611 時間がないならcsvでファイルに吐いてExcelで印刷しろ
ほれ tableどっかから拾ってきてパラメータ適当にいじれ try { Printable printable = table.getPrintable(JTable.PrintMode.FIT_WIDTH, new MessageFormat("タイトル"), new MessageFormat("Page - {0}")); PrinterJob job = PrinterJob.getPrinterJob(); job.setPrintable(printable); PrintRequestAttributeSet attr = new HashPrintRequestAttributeSet(); attr.add(OrientationRequested.LANDSCAPE); attr.add(new MediaPrintableArea(5.1f, 5.1f, 199.8f, 286.8f, MediaPrintableArea.MM)); boolean printAccepted = job.printDialog(attr); if (printAccepted) { job.print(attr); } } catch (HeadlessException e1) { e1.printStackTrace(); catch (PrinterException e1) { e1.printStackTrace(); } 宿題スレかここは…
>>610 Excelで扱える行数の最大は、65536まで。
POI使おうがCOM使おうがどのみち無理。
Excel2007
>>612 なるほど、XMLは考慮していませんでした
調べてみます
>>613 CSVも、やはり複数ファイルに分割しないとデータを扱いきれないので・・・
>>615 HSSFであれば1ファイルに複数シートを含めたExcel形式で出力できるので、
HSSFで何とかできないかと思いまして
ありがとうございました
10万件のレコードが出力されたExcelファイルを誰がどんな目的で使うのかが不思議。
業務から伝票データ集計を流してもらって、まとめて経営戦略用の資料とかにするとかかな。 あとアンケートデータの集計なんてのもあるしね。 それらの資料を元に今後の会社の行く末を。。。なわけだw
開けないのにどうやって使うのって話では? 開けたとしても人間には解析できないけどなw
取り込み形式が Excel のシステムにつなげるとか。 あと Excel にさえしてくればあとは中の人間が VBA で何とでもするからという所も多い。
>>614 ありがとうございます。おかげでなんとかなりました。
623 :
デフォルトの名無しさん :2008/03/22(土) 02:54:05
複数シートに分ければ出来るよ HSSFSheetのドキュメント参照
624 :
デフォルトの名無しさん :2008/03/22(土) 12:18:28
特定のインタフェースを実装しているものを、動的に一覧する手段はあるでしょうか? もちろん、クラスローダにローディングされているもので構いません。 Eclipse の検索で実装が探せますが、あれはソースを解析しているのでしょうか。
626 :
デフォルトの名無しさん :2008/03/22(土) 13:30:25
インターフェイスについて参照して、 実装について参照してはいけないと本に書いてありました。 なぜですか?
>>626 後から実装を取り替えたくなったときに、参照している側まで修正しなければならなくなるから。
>>626-627 >>625 の答えとしてであれば、その点は了解しています(いるつもりです...)
行いたいことは、例えばあるコンバートを掛ける時に、公開インタフェースに
従って実装したユーザ任意の処理を、なるべく簡易な方法で追加させたいのです。
例になってしまいますが
標準語 ------> 関西弁 ------> 翻訳結果
と言った変換をするアプリケーションにおいて、公開インタフェースとして
String translate(String sentence)
を公開し、これをユーザが実装すれば(例えば博多弁を追加)
標準語 ------> 関西弁 -------> 関西弁 + 博多弁 ------> 翻訳結果
といったことを可能にしたい、と言った感じです。
この追加した処理のデプロイ方法として、「公開インタフェースを実装したクラ
スを含む jar を ** に置くだけで OK」といった様に行わせたいために、
>>625 のような要望となった次第です。FQCN さえ貰えれば済む話ではありますが、で
きれば簡易化させたいといった状況です。
私も、1.6.0_05 アップデータをアンインストールして、
WinXP + Firefox3b4 + JRE1.6.0_03 で動いたよ。ありがとう 455。
>>629 // 其の二つはそれらで完結するレスかと。
プラグインなら、ファイル検索+カスタムクラスローダーで
できるかも…やったことないから適当ですが。
日本語-->英語+フランス語-->翻訳結果っっっw
PrivateKey や PublicKey ってシリアライズして保存しておけばいいの? getEncoded() で何やらバイナリが取れるみたいだけど、これが何なのか分からん orz
>>585 >>589 > キーワードだけ覚えて披露する
それは
>>582 自身だ。
ポーリングを実装する必要を無くす仕組みではなく、
ポーリングをしなくて良い仕組みでしょ。
あるいは、ポーリングの意味ちゃんとわかってないんじゃない?
Comet使った場合定期的に問い合わせなんかしないでしょ?
キューにイベント入ってこなければ定期的な問い合わせになるが。 Comet の仕組み分かってないのか。
>>536 > RMIの紹介サイトはどこもクライアント側からのトリガーでサーバーへ返すものしかなく、
> 逆の場合も使えるのか確証が持てません。
WebサービスとRMIサービスは別なので、それぞれサーバの役割を持つプロセスは異なります。
その例だと
Webサーバプロセス = RMIクライアント
Webクライアントプロセス = RMIサーバ
なので、「(RMI)クライアント側からのトリガーで(RMI)サーバーへ返す」
と読み替えれば別にその紹介サイトの説明で問題はないでしょう。
定期的な問い合わせではないな、定期的な再接続。 ポーリングはキューの確認終わったらすぐにリターンするが、それを一定の待機時間を維持するようにしただけ。 それをポーリングの揚げ足取りましたよ、と言いたいだけ?
>>634 で、その定期的な問い合わせは
Cometフレームワークとやらが実現してるって言ってるの?
>>632 保存したいのならお好きなように。getEncoded()のものを保存しておけ
ば、Java以外のプラットフォームでも読めるかもしれない。
>>637 おまえ、ブラウザの裏で Comet が独自の通信プロトコルでも使ってイベントやり取りしてると思ってるなら
HTTP のお勉強からやり直したほうがいいぞ。
>>629 jarをZipInputStreamに食わせて.classファイルの一覧を出させて、
URLClassLoaderで見つかったクラスを全部ロードさせてみて、
希望のインタフェイスを実装してるかひとつずつ調べる
という力技もないこともない
URL.getContent(); を使ってコンテンツをダウンロードすると コンテンツが 「あなたがお使いのブラウザは、Cookieをブロックする設定になっています。」 となっちゃう サイトに対して、 プログラム側がCookieを「受け入れ」て、 アクセスできるようにするには具体的にどうするんでしょうか? HttpURLConnection が自動的にCookie受け入れ処理をやってくれるとかいうのですが.... HttpURLConnection.openConnection(); HttpURLConnection.getInputStream() ; とかやっても URL.getContent(); の時と変わりません。
>>642 java.net.CookieHandlerとかjava.net.CookieManagerあたりを使うんじゃないかなたぶん
エスパーするとそのリクエストを出す前にどこかから Cookie の発行を受けていなければならない。 ブラウザで正常に動かしたのと同じ URL の順序で getContent() してみれ。
IPアドレスの正規表現ってどうしたらいい "[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}$" これだと、300.192.144.109のようなIPアドレスもマッチしてしまう
Cookieの処理を実装する。Cookieを保持するクラスはあるからさ。
うぉ。Cookieはリクエストプロパティにベタに書き込んでたわ。 HttpURLConnection.setRequestProperty("Cookie", "なんたら");
>>645 1オクテットだけなら
[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]
かな。
全部出来てから、あとでより正確にするってことで、
目的のプログラムが出来るまではとりあえずは数字でマッチさせて、
マッチ後int変換して範囲比較したほうが楽かも。
用途によっては
java.net.InetAddress.getByName()
に食わせて例外を捕まえるという方法も。
"((([12][0-9]{1,2})|([1-9][0-9]{1,2}))\\.){3,3}(([12][0-9]{1,2})|([1-9][0-9]{1,2}))" 通ったよ
650 :
649 :2008/03/22(土) 21:42:54
失敗2番目と4番目の{1,2}は要らない。
651 :
649 :2008/03/22(土) 21:47:00
一桁が無かった。
コードを少しずつ改変して行くに当たって、 それぞれにバージョンを付けて残しておこうと思ったら、 プロジェクトごとコピーして残しておけばいいんですか? もっといい方法があるんですか? Eclipseを使っています。コードを書くのは自分一人です。
653 :
649 :2008/03/22(土) 21:57:47
"((([12][0-9]{1,2})|([1-9]{0,1}[0-9]))\\.){3,3}(([12][0-9]{1,2})|([1-9]{0,1}[0-9]))"
それ 299 が通る。 25[0-5]|2[0-4]\d|1\d\d|[1-9]\d?
>>645 正規表現に拘る部分なのか(まぁ何も言うまい
>>652 豪華にいくなら、バージョン管理システム。subversion とか cvs とか
LocalHistory でもそこそこ残ってる(条件は知らない
subversionは別に豪華じゃないんじゃない?file://でいけるし。
>>655 バージョン管理システムは別に豪華じゃない。
Mercurialとかならサーバのセットアップすら不要。
信者くせー
AES でサポートされているはずの 192bit, 256bit のキー指定すると例外になるのは何で? サポートされてないの? Exception in thread "main" java.security.InvalidKeyException: Illegal key size or default parameters at javax.crypto.Cipher.a(DashoA13*..) at javax.crypto.Cipher.a(DashoA13*..) at javax.crypto.Cipher.a(DashoA13*..) at javax.crypto.Cipher.init(DashoA13*..) at javax.crypto.Cipher.init(DashoA13*..) at Main.main(Main.java:101)
>>659 違いそうだけど、輸出制限版とかいう話?
普通に Sun からダウンロードした奴だけど規制版じゃないよね。 Blowfish も 128bit より上は同じ例外なんだけど。
SUNから解除用ファイルダウンロードしてファイル1個置き換えるだけだよ。
どうもご丁寧にありがとうございます m(_ _)m ちなみに対照鍵暗号のアルゴリズム的な強さの現状ってこんな感じで良いんですかね。 AES ≒ Blowfish >> トリプルDES > [解読可能の壁] > DES
SwingでWindowsのLook&Feelを用いたとき Windowsのネイティブな部品のように 「コピー」「貼り付け」などのメニューが自動で表示されるようにはできないでしょうか? AWTを用いればWindowsの部品として自動で表示されるようですが、 Swingの場合、自分でそれらの処理を実装しなければならないのでしょうか?
はい
Swingならハンドラ実装するだけ
今までGUIの終了時処理はWindowListenerを登録して行っていたのですが終了時処理であれば RuntimeのaddShutdownHook() の方が適切なのでしょうか? 一般的なGUIアプリケーションでの終了時処理でこの方法を用いているものを見かけたことがなかったので、何か理由があるのかと思い質問させていただきました。
>>667 AES > Blowfish > トリプルDES
ぐらいかなあ
・トリプルDESはDESの強化版なので実績という観点からは評価が高いが、
さすがにいいかげん古い。あと低速
・一般にブロック長が大きいほうが強度もより高くなるので
AES(ブロック長128ビット)はBlowfish(ブロック長64ビット)より強いはず
実際、最近考案された暗号はどれも128ビット以上のブロック長を採用している
(Blowfishの設計者が新しく考案したTwofishもブロック長128ビット)
繰り返しの構文について質問なのですが、 rubyのredoの役割を果たすものってjavaには無いのでしょうか?
>>673 ない。Java は break と continue だけ。
break => break next => continue retry = なし redo = なし かな。
676 :
634 :2008/03/23(日) 23:08:36
>>674 ありがとうございます。
スクリプトに出来てjavaに出来ないことがあるってのは意外ですね。
677 :
634 :2008/03/23(日) 23:09:18
>676 そうか? redo とか retry とかRubyでも偶にしか使わんし、他の言語を見てもある言語は少ないかと。
>>676 >スクリプトに出来てjavaに出来ないことがあるってのは意外ですね。
なんか解釈が間違っている気がする
Ruby厨ってやつだろ
FileInputStreamからFileChannelを取得し、そのFileChannelでmap()を実行すると、ストリームやチャネルをクローズしても元ファイル(FileInputStreamのソース)を削除できません。 原因はMappedByteBufferによって使用中になってしまうからという単純なものなのですが、解決策が FileInputStream fis = new FileInputStream(input); FileChannel fc = fis.getChannel(); ByteBuffer buf = fc.map(); .... buf = null; System.gc(); input.delete(); これくらいしか思いつきませんでした。 何かいい方法はないでしょうか?
>>676 retry や redo と同等の処理を記述することはそれほど難しくないから、
「出来ない」というのは語弊がある。
やさしいJavaを読み終わり基礎中の基礎?の構文を覚え 今結城浩氏のデザパタの本を読んでいるのですが、実務経験が無いため それらのパターンをどの様な時に使えばいいか想像がつきません。 Struts等を使ったシステム開発業務に興味があるのですが、 Web系ではどのようなパターンが使われているのでしょうか? 重ねて質問ですが、最初はどのようなパターンから覚えていけば良いでしょうか? よろしくお願いいたします。
畳の上の水練という言葉があってだな
686 :
684 :2008/03/24(月) 02:43:57
>>685 分かってはいるつもりでしたが・・・
デザパタの存在自体が面白くて、どうしても勉強したかったのです。
何かツールでも作りながら地道に覚えていきます。
Vector vec = new Vector(); System.out.println("----追加----"); String obj1 = new String("Hello World!"); StringBuffer obj2 = new StringBuffer("こんにちは、世界!"); vec.addElement(obj1); 上記をコンパイルすると最後の行でコンパイルエラーが発生します。 jdk5.0を使っているのですが、何を行えば正常にコンパイルできますか?
うちでは
注:Hoge.java の操作は、未チェックまたは安全ではありません。
注:詳細については、-Xlint:unchecked オプションを指定して再コンパイルしてください。
と警告が出るだけでコンパイルされるんだが。
単にコンパイル警告をなくしたいなら javac -source 1.4 オプションを付ける。
もし
>>687 のコードが教科書どおりならその教科書は古い。
VectorのようなコレクションはJDK1.5以降Generics対応なので、
Vector<String> vec = new Vector<String>();
のように型を明示して使うのが基本。というかVector自体(ry
古い。
>>682 FileChannel の JavaDoc にも GC されるまでマッピングは有効って書かれているから
おそらくそれくらいしか方法は無い。
なんでこういう仕様なのか、俺も問いただしたい気持ちでいっぱいだ。
>>690 やはりそうでしたか。
破棄してくれる手段を一つくらい提供してくれてもよさそうですけどね。
諦めてgcすることにします。
解っているとは思うが、System.gc()を実行してもGCされるわけじゃないぞ
サーバプログラム書いてるんですけど、 inetdとかスーパーサーバからの起動だとプロセス毎にフォークしちゃうから 嫌で、そのへんをスレッドでやりたいんですけど、 その時ってどうやって起動すればいいんでしょうか? 普通にシェルからjavaをバックグラウンドで起動しちゃうとなんか思わぬ影響がでちゃうとか書籍にかいてありました。
「嫌で」「なんかでちゃう」 そんなとこなら諦めれ
695 :
693 :2008/03/24(月) 10:23:28
>>694 inetdからサーバを呼び出すと、
1クライアントに対してforkとexecを実行するのでCPU時間が増大してしまいます。
それを防ぐために1クライアントに1スレッドを割り当てたいと考えています。
しかし書籍を調べましても起動時にどうすれば良いのか分かりません。
もしよろしければご教授願えませんでしょうか?
サーバでJavaのプロセスを起動し、Socket通信汁
697 :
693 :2008/03/24(月) 10:32:54
>>696 そのプログラムは書いたのですが、
単に端末からバックグラウンドでプログラムを起動しただけでは、
開始した端末セッションからプロセスを切り離せません。
ではどうすればプロセスを切り離して起動できるのでしょうか?
nohup じゃだめなの?
699 :
693 :2008/03/24(月) 11:04:20
>>698 勉強不足でnohupを知りませんでした。
それでやります!ありがとうございました!
そもそもクライアント毎にサーバープロセスを起動するのがナンセンスかと
でもタスクをキューにためてそれを逐次処理するのは遅いのでは?
いやきっとクライアント毎に起動するのはスレッドでしょ。 inetdみたいなデーモンをコンソールから起動すると、端末から切り離せない、 って悩んでただけで。 最終的には、inetd自身のように、/etc/init.d/に起動スクリプト置いてほげほげ、 ってするのが正しい姿なんだろうけど。
そうですよね。 でもサーバが落ちた時に自動起動しないのが難点なくらいで、 他に困るようなことが思いつかなかったので、nohupでもいいかなって思いました。
ArrayList<Integer>って型に入ってるデータをソートしたいんだけど どういうやり方が良いんでしょう? 今はArrays.sort()にtoArrayでObject[]にしたものと Comparatorを実装したクラスのオブジェクトを渡しています ほかに良い方法があれば教えてください
Collections.sort()
つCollections.sort
708 :
705 :2008/03/24(月) 17:17:03
>>697 $ ./hogehoge > stdout.log 2>stderr.log < /dev/null &
とかやればシェルから切り離せるけど、そういうことを言ってるわけ?
バックグランドプロセスがあるとシェルが閉じれないのは
シェルが用意した stdin, stdout, stderr を持っているからで、
それを別に用意すればOKなんだけど。
710 :
デフォルトの名無しさん :2008/03/24(月) 22:37:59
とても初歩的な質問でお恥ずかしいのですが、 自分の出した答えに自信がないため、質問させていただきます。 int型の変数を2byteの配列に格納(その後取り出し)したいのですが、 ビット演算の理解がつたないため、下記のようなやり方しか思いつきませんでした。 正しいやり方をご存知の方がおりましたら、 教えていただきたく、よろしくお願いいたします。 byte[] data = new data[2]; int num = 128; //格納 data[0] = (byte)(num >> 7); data[1] = (byte)((num << 25) >> 25); //取り出し num = data[0] << 7; num += data[1];
data[0] = (byte)((num >> 8) & 0xFF); data[1] = (byte)((num >> 0) & 0xFF); num = ((data[0] & 0xFF) << 8) | ((data[1] & 0xFF) << 0);
>>710 JDKについてくるjava.awt.Colorあたりのソースで、intと
alpha, red, green, blueの各1バイトの換算をしているのが参考になると思う。
intは4バイトだから、厳密に言えばサイズ2のバイト配列には入りきらない。
シフト量は24, 16, 8, 0な。
>>711 >>712 返信いただき、ありがとうございます。
教えていただいたコードと参考資料を元に、
ビット演算の知識を深めたいと思います。
自分ではどうしてもわからなかったため、
とても助かりました。
本当にありがとうございました。
Javaでbyteがsignedってのはつくづく罠と思う。
だよなー おかげでバイナリの扱いがとてもしにくい・・・
intが17bit以上の場合が考慮されていないけどいいのか?
javaはバイナリの操作向いてないよ
またおまえか
覚えておいたほうがよい 静的メソッドや変数などのリストの一覧的なものってどこにありますでしょうか
MathクラスとかSystemクラスとか他によく使用されるものの一覧を探しています
そんなものはない。静的メソッドは必要に応じて都度クラスに付いてるから 静的メソッドだけ一覧的に覚えること自体に意味がない。
APIじゃだめなの?
>>719 >>3 java.lang, java.util. java.io パッケージ群のそれぞれのクラス、仕組みは
押さえてしかるべき、と主張する人も居るね(逃
公開鍵証明書を作るクラスって標準でないの? keytool 使うしかない?
725 :
719 :2008/03/25(火) 11:14:34
静的って書いたのがまずかったのでしょうか Math.なんちゃら〜 とか system.なんちゃら〜 みたいなもので 頻繁に使われるような物のリストを探しているのですが まとめてあるサイトは見つかったのですがあまり使わないようなものが大量にあったり どれがよくつかわれるものなのかわからないので これは覚えておいたほうが良いというものを集めてリストになっているサイトなどありましたら教えてください
何が必要かなんて、分野によって違ってくるのが当たり前。 とりあえず、ArraysとかCollectionsをあげておくけど、 自分で見つけるのが一番いいと思うよ。
Mathのメソッドもそんなに頻繁に使うとは思えない
>>723 みたいに、java.lang, java.util. java.io以下のクラスは押さえて、
あとはJavadocでその都度確認、ってのでいいんじゃね。
>>724 証明書を発行するAPIというのは標準にはなかったと思う。
730 :
719 :2008/03/25(火) 12:57:38
java.lang, java.util. java.io以下のクラスですな さっそく調べて覚えるよう様にするす dクス!
719が聞いてたのはstaticメソッドのことじゃないの?
Sound APIについて質問です。 DataLine.Info info = new DataLine.Info(TargetDataLine.class, format); TargetDataLine target = (TargetDataLine)AudioSystem.getLine(info); これで取得したターゲットラインを録音すると、コンピュータ上の音(スピーカーから通常出る音)が録音されました。 これをマイクからの入力に変えるにはどうすればよいのでしょうか? Port.Info.MICROPHONEを情報としてPortを取得して・・・とするのでしょうけれでもその先が分かりません。
>>732 AudioSystem#getMixerInfo、AudioSystem#getMixer、Mixer#getTargetLineInfoあたりで
全部のターゲットラインをリストアップして、一覧から選ばせるってのはどうだろう・・・
javaのコンパイラのパスを要求されたらどこを指定すればいいのでしょうか j2sdkを普通にインストールしました
OSは?
C:\Program Files\Java\jdk1.6.0_05\bin
窓xp sp3です
>>736 そこらへんで見つかりました
ありがとうございます
ずっとjreの方を見てました
JDKを入れるのが初めてなら落とすときにインストール手順を読まないのだろうか
世の中にはマニュアル類を読まない人間が結構いるらしいよ
>>732 それしかないみたいですね。
そうします。ありがとうございました!!
PATHって、違う言語をコンパイルするときには毎回変えないといけないの? 今Cの設定なんだが。
どんどん追加していけばいいだけ
基本的に同じ PC 上で同じ言語 (コンパイラ) の違うバージョンを使い分ける場合だけ気をつければ良い。
追加できるのか。ども。
javac の -g:<キーワード> で sources,lines,vars のデバッグオプションが 指定できますが、デバッグ情報が載らない(載せない)と言う点以外の影響 (性能劣化等)はあるのでしょうか。class ファイルが大きくなるだけでしょうか。
サブクラスのインスタンスから「スーパクラスのメソッド」呼び出した時、 スーパクラスのメソッド内で、「サブクラスでオーバライドしたメソッド」を使ってた場合に 動的バインドでオーバライドした方のメソッドが呼び出されるのって 単純に気をつけるしかないんでしょか?
>>747 当然の話。むしろ呼んでくれないと困る。
それを「気をつける」と認識する方が問題。
ありがとう。認識あらためます。
>>747 オーバーライド(上書き)とはそういうもの。
公開したいけど、上書きされるのが困るのならば、final を付けてしまいましょう。
公開する必要が無いならば、private にしましょう。
そもそも継承されることを望んでいないなら、class を final にしてしまいましょう。
言い方を変えれば、上書きしたメソッドを呼んで欲しいからサブクラスで上書きするわけで、読んで欲しくないならばオーバーライドする必要がない ただ、「意図せずにスーパークラスのメソッドをオーバーライドしてしまった」とか「意図せずにサブクラスで定義されているメソッドと同名のメソッドをスーパークラスに定義してしまった」というケースはある。 解決策はfinalもあるが、@Override無のオーバーライドはコンパイルエラーとする、という方が柔軟ではある。
C# と比較するとわかりやすいかも。
C#しらねって奴多いんじゃない?
C#いらねって奴多いんじゃない?
最近になってJavaが無謀な拡張されまくってるのはC#のせいだからな
756 :
デフォルトの名無しさん :2008/03/26(水) 21:12:25
String str1 = "文字列"; と String str = new String("文字列"); って何が違うのでしょうか?
後者は無駄の極み
上はどこかにある "文字列" という文字列の参照を str1 に代入されるだけ。 下は "文字列" という内容の新しい文字列オブジェクトが毎回作られてから、その参照が str1 に代入される。
759 :
デフォルトの名無しさん :2008/03/26(水) 21:39:02
すみません、str1じゃなくてstrでした。 では、前者と後者で目に見える違いが出ることはあるのですか? まら、両者を使い分けたりする必要はあるのでしょうか?
public class Test { public static final void main(String[] args) { String s = "Hello, world"; System.out.println(s == "Hello, world"); System.out.println(s == new String("Hello, world")); } } -------- true false --------
上は str1 == str が true、下は str2 == str が false 従ってインスタンスが同じかどうかの違いがそのまま適用される。 たとえば synchronized(str1) と synchronized(str)
誰か文字列の実体はプールで共有されてるって言ってやれよ。
理由言わないとね・・・
プールと言いたいだけの奴とは違うのだよ。
>>762 intern()しないと共有されないぞ。文字列リテラルは暗黙で共有されるが。
>>756 に対する答えは、
String str = new String("文字列");
は絶対に使うな、でいいじゃないか。
理由はこの際どうでもいい。
理由がどうでもいいとか思うやつって技術者としてどうなんだ。
理由を押し付けて初心者を混乱させるのって人間としてどうなんだ。
動けば良い系の人じゃね。 安易に絶対とか使うのも技術屋じゃねーし。
俺も*とりあえずは*使うな、って方針には賛成 必要になってから知ればいいんじゃないかな
小学生に教える時に中学高校で扱う内容にまでふれて 説明した方が良い/悪い論争
772 :
sage :2008/03/27(木) 00:10:51
1 if (XXX == XXX) ってのはそのオブジェクトの参照が同じかチェックしている? 2 String str = new String("XXX") は新しくメモリに確保(インスタンスを作成)すること? 3 String str = "XXX" の扱いはVMが管理している?
ブッ 理解までにそんな大きなステップが必要なほどのネタなのかよw すぐには不要でも、キーワードだけでも与えておけば必要になった時の理解度が違う。 将来の期待もなく「理由不問、絶対やるな集」だけで育てられたお前に合わせる必要はねぇべ。
775 :
デフォルトの名無しさん :2008/03/27(木) 00:24:58
SJC-P310-035の試験を今度受けるんですが、黒本の仕上げ問題で61問中51問正解 だったんですが、こんなレベルでももう合格できますか?
とりあえず忘れろに賛同かな
バイト配列から文字列を生成したいような場合にnewは使うが、new String(String str) を使うケースはほとんどない、と教えてる。
どっちかといえば、equalsで比較しろのが重要な話しだし。
>>775 スレ違い
>equalsで比較しろ これの方が遙かに重要だな
778 :
デフォルトの名無しさん :2008/03/27(木) 03:52:21
Javaのライブラリに変数の詳しい情報をダンプしてくれるような奴ってありませんか? PHPでいうvar_dump的なものを使いたいんですが
>>778 用途がわからんのだが、開発中ならたいていのIDEのデバッガについてる
変数watch系機能で間に合いそうな。
それとも運用中に必要な機能?
commons langのToStringBuilderとか大がかり杉?
ねぇよ下駄言語と一緒にするなと言えば済む話では。
JITコンパイルされた後のアセンブリコードを見るには、どうすれば良いですか?
心眼
784 :
デフォルトの名無しさん :2008/03/27(木) 12:17:19
>>779 普通のテキストエディタでやってる人間なもんで…
>>780 ToStringBuilderちょっと見てみます
Soundbankに新たなInstrumentをロードしたい場合どのようにすればよいでしょうか? デフォルトのシンセサイザーをMidiSystemで取得してloadInstrumentでロードしたいのですが、同じInstrumentでもHeadspaceInstrumentじゃないと読み込めないらしいのです。 他にもいろいろ実装しなおさなければいけないのでしょうか?
うわーSynthesizer実装しないといけないんですね。 分かりました。諦めます。
オーバーロードに関して質問なのですが class unko { public void hoge(List<List<A>>) { } public void hoge(List<A>) { } } これって何で出来ないんですか? 微妙に型というか違うと思うのですが
Javaのジェネリクスは、コンパイル後に消えるから、どちらも同じ型とみなされる。 だからNG
791 :
デフォルトの名無しさん :2008/03/27(木) 16:53:01
List< List<A> >ならOK
793 :
デフォルトの名無しさん :2008/03/27(木) 17:00:59
なんだ釣りか。
795 :
772 :2008/03/27(木) 22:42:03
>>774 文字列連結でもOKなのは、まったく分かっていませんでした。
さらに、実行時に解決?計算される文字列は、異なるもなのですね。
そもそもinternなんてメソッドがあるなんて知りませんでした。
全く分かっていなかったけど、そのサイトかなり勉強になりました。
理解できればの話ですが。
フィールド名の先頭を_(アンダーバー)にしているコードを見かけるのですが、 どのような意味でそのようにしているのですか?
フィールドとそうでないものとを区別するため
アンダースコアが正しい読み方
>>798 通じるし、そこは許容範囲だろ。
「Unicode的にはローラインだ」とか、不毛だろ?
_1つで始まる識別子って、グローバルな空間では全部予約済みなんだよな。 構造体フィールドならいいけど。
む、そりはC/C++だ。
Cでコンパイルするとリンカ上の名前が_付になる。のような気がした。
800は791か。
変数a b c があるとしてこの中で中央値を求めるにはどういう方法がありますか? 変数は何が入るかわからないという場合です。 if文の練習問題なのですが、答えがのってなくて
int[] array = new int[]{a, b, c}; Arrays.sort(array); System.out.println(array[1]);
説明が悪かったです、すみません 例えば a=1 b=2 c=3 なら bが出力 a=2 b=1 c=3 なら aが出力 みたいに何の数値を入れても真ん中の数値が出力するということです。
いや
>>805 で合ってるよw
if(a<b){ if(b<c)答=b; else 答=max(a,c); }
else{ if(c<b)答= b; else 答=min(a,c); }
全然わからないんですが、maxとminはどうすればいいですか?
maxは渡された引数の大きいほうを、 minは小さいほうを返すだけ。 これくらいは自力で書けないと、将来つらいよ?
>806 数が増えた時に汎用的に使えるのはソートじゃね? >809 日常生活にも支障ありそうだなw
ありがとうございます、しかし多分maxとminはまだ参考書に出てきてないので使わない方法なんだと思います。 あとは自力で考えます、ありがとうございました。
すみません、勘違いしてたようです。 maxとminは別に何でもいいんですね、引数ってのを使えば楽ってことはわかりました。
っ Math.min、Math.max
あ、Math.min Math.max調べたらやっぱりminとmaxじゃないとだめみたいでした。
min(l,r)は if(l<r)答=l; else 答=r; max(l,r)は if(l>r)答=l;else 答=r;
818 :
デフォルトの名無しさん :2008/03/28(金) 15:51:54
>>803 ちげーよ馬鹿。
俺は決してsageたりしない。
一つ助けてくれ。 JOGLのデモにあるcgGL_vertex_exampleとruntime_ogl_vertex_fragmentがjogl_cg.dllが見つからないって UnsatisfiedLinkErrorが出るんだけど利用してるjreにjogl_cg.dllは置いてあるんだけど -Djava.library.path指定しても解決できない、どうすれば良いか分かる人居る? JOGLのパッケージ以外に何か必要だったりする?
system32に放り込め。
>>819 cgのランタイムが必要とかかな・・・?
そのjogl_cg.dllのインポートテーブルを見てみると何かわかるかも
822 :
デフォルトの名無しさん :2008/03/28(金) 21:03:25
最近Javaを勉強し始めた者です。 当方JavaScriptを今までやっており、ちょっとサブルーチンを使う程度で あとはとにかくつらつらと書き連ねていくようなプログラムの書き方に慣れてしまいました。 まだJava関係の書籍は買っておらず、様々な入門サイトを見て勉強しているのですが、 いちいちメソッドを呼び出し合ったりメソッド毎に細かく処理を分けたりする、 オブジェクト指向の具体的な使い方やメリット等がいまいち理解できません。 自分で適当にメソッドやクラスを分けたりしてオブジェクト指向をしてる気にはなってみても、 「こんなんで良いのだろうか?」と言う感じがしてしまい、 色んな処理を同じメソッドに詰め込んでしまいがちです。 なので、文法の解説ではなくオブジェクト指向の解説をメインにした 参考書があれば買おうと思うのですが、どの書籍が良いのでしょうか? 回答よろしくお願いします。
>>822 結城浩という名前を覚えておくと、困った時に助かるかも
まあ、片っ端から10冊ぐらい読め。将来を考えたらたいした投資じゃない。
>>825 必要ない人には必要ないだろ 勝手に将来を妄想するな
>>824 にあるけど、結城さんの本は取り組みやすいから、
デザインパターンの入門にしろ、Javaの入門にしろ、1冊目としておすすめ
827 :
デフォルトの名無しさん :2008/03/28(金) 23:04:19
総称クラスのインスタンスを作成することは出来るでしょうか?
public class TempT <T>{
public T makeT(){
return new T();
}
}
ということをやりたかったのですがコンパイルが通らないようです。
総称クラスの名前だけでもわかれば、
ttp://blog.xole.net/article.php?id=197 で何とかなると思うのですが……。
>>826 勧められた本だけ読んで結城先生信者ですかwさすがゆとりですな
>>827 できないんだったかな
public T makeT(Factory<T> factory) { return factory.create(); }
みたいにするのが正攻法なんじゃないの
使うときはTに指定する型ごとにFactory<T>をいちいち実装しないといけないけど
>>827 ジェネリクスはコンパイル処理。
コンパイル後は、普通のキャストと変数の型に展開されて、情報は残りません。
何がやりたいのか…何かが出来そうで試してるだけなのかな
汎用的に便利なクラスなんてものは、まず作れないと思ったほうが良い。
それをするなら、今の仕組みが便利に判りやすくなるクラスを作りましょう。
C#だと「引数無しのコンストラクタを持つ」制約が付けられるからあっさり実現できるんだけどね
>>822 >いちいちメソッドを呼び出し合ったりメソッド毎に細かく処理を分けたりする、
>オブジェクト指向の具体的な使い方やメリット等がいまいち理解できません。
オブジェクト指向とか、デザパタとかいう話じゃないだろ。
マーチンファウラーのリファクタリングが指針になるかも。
833 :
827 :2008/03/29(土) 00:36:28
>>828-830 早速のお返事、有難うございます。
>何かが出来そうで試してるだけなのかな
正直、半分はそんなところです。
getDeclaredFieldsあたりのリフレクションとcommons.beanutils、commons.dbutilsを組み合わせて、ごく簡単なO/Rマッパが作れないかなと思ったんですがね。
……やっぱ素直にHibernateとかS2Daoを使っておいたほうがいいのか。 ・・・でも大げさすぎるんだよなぁw
newInstance使ってキャストって手もあるが
いまは T Class<T>#newInstance() だからキャスト不要。 例外は捕捉する必要あるけど。
どっちみちTからは直接取れないけどな
837 :
827 :2008/03/29(土) 15:26:04
>>835 みたいですね。T.newInstance()って書き方もNGみたいです。
残念ですが諦めましょう。
こんなのどう? public class TempT<T>{ private Class<T> clazz; public TempT(T t) { clazz = (Class<T>) t.getClass(); } public T create() throws Exception{ return clazz.newInstance(); } } コンストラクタ引数が無駄でヤな感じ。アイディア求む。
Class<T>を引数にした方が誤解を招かないんじゃね それでも格好悪いけど
インスタンスの生成に関してジェネリクスでやろうって方針が無理 可能なのはキャストがいらねってくらいだよ
初心者ですみません、質問させてください 変数の型にfloatを使いたいのですが、コンパイル時にエラーが出ます。 精度が落ちている可能性 検出値 double 期待値 float a=3.6 ^ と表示されてます。 本を買って勉強始めたばっかりで、本の通りに書いたと思うのですが、 自力解決出来ません。doubleで書くと上手く行ったのですが、原因が知りたくて。
3.6f
3.6 は倍精度浮動小数点の double。a は単精度浮動小数点の float。 代入するには精度を落とさなければならないが、それをコンパイラが勝手にやるとバグの元になる。 3.6 の方も float であると明示的に記述すれば良い。 a=3.6f;
doubleっていう、「基本があってその倍」な名前のほうが デフォなのがややこしいな。
なるほど、ありがとうございます!
846 :
デフォルトの名無しさん :2008/03/29(土) 19:29:15
質問です。 現在、mainクラスのガベージコレクションを、 多重継承されたインスタンスからコントロールしています。 ただ、Heap領域にアクセスする場合について、 そのコレクションフレームワークからマルチスレッド化させると、 ローカルにremoveしようとしても同期的な排他制御が取れません。 やはりラッパークラスのプリミティブ型は、エレメントのイテレータもhasNext()メソッドもどきで volatile修飾子のシリアライゼーションをさせるのが絶対条件なのでしょうか。 ちなみに、もしコマンドライン引数によってJava.langのStringBufferまでimportしたとしても、 SetインターフェースのisEmptyメソッドにするとなぜかStackOverflowErrorの例外が発生します。 staticなyield()メソッドを汎用させるため、 throwsで例外ハンドラをコンストラクタなアサーションをしているのですが・・・。 C言語が腐るほど考えたのですが、 バイナリでのファイル操作がなかなかまとまらないため質問した次第ですので、 どうかお答えお願いします。
「日本語でおk」ってこういうときに使うの? Javaで多重継承かー。
C言語腐っちゃったよ〜 どうしよ〜
Javaっぽい言語のVM実装しているのかねぇw
バカが何人釣られるか静観してようかと思ったが コピペに w とか、もう見てらんない。
851 :
デフォルトの名無しさん :2008/03/29(土) 21:01:24
見てらんない = 結局釣られた
前スレあたりのコピペも知らんて、おまいら春休み参入者か?
何でこうネタやコピペすら嗅ぎ分けられない恥ずかしい奴多いんだろここ。
>>846 とかマジ池沼じゃんw
何この春厨wwwww
856 :
827 :2008/03/29(土) 22:00:37
>>838 アドバイス有難うございます。確かにヤな感じはするのですが、こうするより仕方ないようですね。
>>839 Class<T>を引数にする、というのは気がつきませんでした。御助言感謝です。
>>840 どーもすいません(苦笑)
スレに常時へばりついているってのも、どうかと
悔しそうですね。
Servlet+JSP+Strutsでアプリケーションを作成しています。 これで出力されたHTMLには余計な空行が出力されます。 (Strutsタグなどの位置により) なるべくHTMLを小さくしたいので余計な空行やスペースは 削除したいのですが、なにかテクニックはないものでしょうか? 思いつくのはフィルターとか??? よろしくお願いいたします。
860 :
デフォルトの名無しさん :2008/03/30(日) 11:26:37
スーパークラスHogeの拡張クラスHogeA,HogeBが定義してあり HogeAのカプセル化されたフィールドにα、HogeBのカプセル化されたフィールドにβが定義されてる状態で Hogeにはアブストラクトのゲッターメソッド、セッターメソッドが定義されています 別のクラスDから Hoge h = (Hoge)HogeA or Hoge h = (Hoge)HogeB のような形で選択的にHogeを定義しゲッターメソッドから任意のα、βが抽出できるようにしたいのですが 現状うまく行きません よい方法を教えてください
861 :
デフォルトの名無しさん :2008/03/30(日) 11:31:09
>>859 私の場合ははフィルターを作ってそこを通してデーターが得られるようにしてます
>>860 スーパークラスでαとβが宣言されてないからHogeのインスタンスとしている場合にアクセスできないのは当然です。
そのフィールドを使いたい場合はHogeA,HogeBでキャストしてやらなきゃ無理っす。
>>861 ありがとうございます。
私もfilterでやってみようと思います。
でもその前に、、、、そのフィルターください!orz
864 :
デフォルトの名無しさん :2008/03/30(日) 11:55:06
>>862 選択的キャストの方法としてどういう方法があるでしょうか
>>860 Hoge で定義した get/set メソッド宣言と、α、βの型を教えて欲しい。
>863 数100バイトの差は気にしないほうがいい。 携帯コンテンツとかならば、JSPを工夫するか、Servlet内で全部HTMLを書いて小さくするほうがいいかと。
>860 HogeにgetParam があったとしたら、 HogeA で getParam からαを取得、HogeBではβを取得 ってのが普通かと。
えらい勘違いしてました。 抽象クラスでgetter/setter宣言してたんですね。 その型が抽象クラスのgetter/setterの戻り値の型の子なら大丈夫です。
869 :
デフォルトの名無しさん :2008/03/30(日) 12:59:04
失礼 うまく行きました 他のことが原因してました
870 :
デフォルトの名無しさん :2008/03/30(日) 17:51:19
JSON-LIBを使おうと思い、 C:\Tomcat 6.0\lib にjson-lib-2.2.1-jdk15.jarを入れたのですが、 java.lang.NoClassDefFoundErrorが出てしまいます。 C:\Tomcat 6.0\lib下ではクラスパス通らないのでしょうか? それともjdk16環境下なのにこのJARを入れたのが失敗でしょうか。
JDK6ならjavascript使えば良いと思うんだが・・・
png画像の画像処理をしたいのですが質問です. java.awt.image.PixelGraberのgrabPixels()で各ピクセルの情報を配列に取得し, java.awt.ColorのgetRed()/getGreen()/getBlue()で各ピクセルのRGB値まではとれました. ここから取得した配列のRGB値を取得したRGB値を元にして計算し 変更したいのですがどのようにすれば良いのでしょうか?
どう計算したいのかはお前以外には解らんw
どう計算するかは分からないけれど、ImageIO.readでpngをBufferedImageとして読み込んだ方がいろいろ変更の自由がきくよ。
あ,計算の話ではなくて 計算後にでた新しいRGB値をつかってpngを作り直したいんです. 日本語が変ですいません.
普通にやりたいことを言えよw 例えば元画像をグレースケールにしたいとかさ
単純に SSLSocketFactory から SSLSocket 作った場合ってどこの CA 証明書が使われてんの? コントロールパネルの Java 設定にリストされているやつ?
878 :
デフォルトの名無しさん :2008/03/31(月) 11:41:55
JNDIを使用『しないで』DataSourceを生成する方法を教えてください。
組み込みでH2 Databseを使おうと思ったのですが、アプリケーションサーバのJNDIを使って生成する方法しか検索できませんでした。
一応、↓でなんとか生成できたのですが、本当にこの為だけにCommons DBCPやCommons Poolを使わないとならないのでしょうか?
ttp://wiki.livedoor.jp/syo1976/d/Derby
JNDI 使わないってスタンドアロンで使うのか? なら接続しっぱなしにしときゃ良いじゃん。
超初心者です。入力した整数値を読み込んで、小さいほうの数以上で大きいほうの数以下の全整数を小さいほうから順に 表示するプログラムを作りたいんですが、最後の整数が表示出来ません。アドバイスもらえませんか?作ったコードは下です。 System.out.print("整数1:"); int n = stdIn.nextInt(); System.out.print("整数2:"); int x = stdIn.nextInt(); do { if(n >= x) System.out.print(x++); else if(n <= x) System.out.print(n++); } while (n != x); } }
素直にforでいいんじゃね? for(int i = n; i <= x; i++){ System.out.println(i); } それとも何かの課題?
System.out.print("整数1:"); int n = stdIn.nextInt(); System.out.print("整数2:"); int x = stdIn.nextInt(); do { if(n >= x) System.out.print(x++); else if(n <= x) System.out.print(n++); } while (n != x); System.out.print(n); //これを追加 } } にするとか 明解javaの演習問題だね
>>883 for使うと簡単そうなんですが、練習問題を最初からやっていってる最中で
今はifとdoとwhile文のところなんで、一つずつ確実に使い方を覚えるためにもこれらの構文を使ってやりたいのです。
>>884 おぉ、出来ました!そうです、明解Javaをやってるんです。
この参考書答えがないので、超初心者な自分にはきついです。
>>887 (n > x)と(n < x)でいいですかね?
おk
>>889 ありがとうございます、ずっと考えていたのがやっと解決して先に進めます。
ループの前にどちらが大きいかを判断して, 大きい方と小さい方それぞれ別の変数に入れといた方が綺麗に書けるよ
ゆとりは不等号を習わないんだって おそるべしゆとり
>>891 ちょっと考えてみます。すみません、ほんとに初心者なもんで。
初心者初心者って連呼しすぎうぜえ
初心者は何をしても許されるべき
本人乙
ワロタ
じゃあ俺も初心者を名乗るから、何をしても許せ
おれもれも
「初心者だから仕方ないじゃないですか! 日本国では初心者が手厚く保護されているのです。 私は一生初心者であることに決めました。 初心者なんで気を遣って下さい!大目に見て下さい!」 そしてJavaに合格すると「なぁに、初心な言語は山ほどあるさ!」と。
901 :
デフォルトの名無しさん :2008/03/31(月) 15:55:37
次スレから初心者なしにしようぜ 【初心者】Java質問・相談スレッドxxx【立入禁止】
ここはひどいインターネッツですね
それは人来なくなるだろw でも自分で初心者を名乗るほどの初心者はくだすれに行った方が良いよな。
初心者無視スレ時代も知らん連中が集まってんのか。
うん。
907 :
879 :2008/03/31(月) 17:23:10
>>880 いや、まったくそのとおりなんですが、Commons DbUtilsがDataSourceないと使えんとですよ……。
>>881 ありがとうございます。が、これはこれでMockObjectに依存しているのですね。
同じ依存するならcommonsで統一しましょう。
……
>>880 の言うとおり、一つコネクション取って繋がりっぱなしでいいんですけどねぇ。
何でこんなコトしてるんだろ? Webで使うことしか考えてないのかな>Commons DbUtils
>>907 単一スレッドだけなら接続済みの Connection を 1 コ だけ持つ DataSource クラス作れば良いんでねーの。
必要なメソッド数なんて 10 もないでしょ。あ、close() をゴマかさにゃいかんか。
DbUtils って使ったことないけど、DataSource で受け渡したらトランザクションスコープもクソも
なくなるんだがそんなウンコチンチンな作りなのかな。どっかのプロジェクトで見たクソフレームワークみたいだな。
ここで908謹製の最強素敵フレームワークへのリンク
>>909 前世紀の終わりに作った奴は発想も方向性も今の Spring Framework とかなり似ている。
まぁまだフレームワークという言葉自体なかったし、周囲も OO 設計への理解度が皆無だったし。
他で作ってた、場当たり的な拡張で肥大化したクラスライブラリのようなものの方が 「多機能」
として受けが良かったのは悲しかった。
同じ頃にアプレット使って今の Ajax と同じことを提案してたよ。使われなかったけど。あれは特許も
提案したんだけどなぁ。あらためて思い出すと相当先行ってたな俺。
911 :
879 :2008/03/31(月) 18:32:37
>>908 ……申し訳ない。大勘違い。
<font size="+3">Commons DbUtilsでDataSourceは必須ではありません</font>
……googleセンセイで引いてくる例がことごとくDataSourceを使ってたもんだから完全に勘違いしてました。
以後メモ。
Commons DbUtilsでDataSourceを使わずにSQLを発行するのは、単にQueryRunnerのコンストラクタを引数なしで呼べばいいだけ。
その後、queryメソッドの第一引数にConnectionを指定すればOK。
Webで引ける例はQueryRunnerのコンストラクタにDataSourceをほとんど必ず指定しているが、DataSourceがないとQueryRunner=Commons DbUtilsが使えないわけではない。
以上、同じ間違いを繰り返す人が出ないことを祈りつつ恥を晒します(涙)
受けが良かったのは開発者じゃなくて上や営業向けにね。
ajaxなんてだれでも考えつく昔からある方法だろ。 単に最近になってウケただけ。
IE でまさに innerHTML やデータバインディングが実装された 4.0 の頃の話してんだが。 どこの昔からある方法だよ。
915 :
デフォルトの名無しさん :2008/04/01(火) 01:42:12
TestClass var = new TestClass(); TestInterface test = (TestInterface)var; と言うふうにキャストすると、 TestClassがTestInterfaceをimplementsしていなくてもコンパイルが通りました。 キャストすればどんなインターフェイスにも代入できるのかと思ったんですが、 Stringはキャストすることができませんでした。 特定のInterfaceにキャスト可能な条件というのは何なんでしょうか?
コンパイルは通らないと思うが。本当に extends や implements してないのか?
917 :
915 :2008/04/01(火) 01:59:09
コンパイルは通ったけど、実行したらClassCastExceptionが出ました。 ダメですね。。。
すまん勘違いしていた。 public class TestClass2 extends TestClass implements TestInterface{ ... } というクラスがあるかもしれないから、キャスト時に元の型にそのインターフェースが implements されていなくてもコンパイルは通る (型チェックは実行時にしかできない)。 TestClass var = new TestClass2(); TestInterface test = (TestInterface)var; TestClass が final 宣言されていれば TestClass2 のようなサブクラスの存在は ありえないのでコンパイル段階でエラーになる。 String のキャストに失敗するのは、Java では多重継承ができないから TestClass の サブクラスであり String のサブクラスでもあるクラスというのはありえないから。
Java で作った PublicKey, PrivateKey を KeyStore で保存したいんだけど、 Certificate が必要なようだけどこれってどうやって作るの?
ユーザ認証を求められるwebサイトで、認証後の内容 つまりログイン状態後にアクセス可能になるコンテンツに、 javaプログラムでアクセスするためには、どういう方法をとればよいのでしょうか? 端的に言って、mixi のことなんですが.... javaプログラム側でどのような方法をとれば、mixiのログイン状態を実現できるのか、 知りたいのです。
>>920 javaプログラムでログインすればいいです。
>>920 HTTP通信のライブラリを使うと楽。
Apache HttpComponentsとかHttpUnitとかお薦め。
923 :
デフォルトの名無しさん :2008/04/02(水) 11:09:49
>>921 そのやり方僕にも教えて
ログイン時のパラメーターをどうやってJAVAからWEBサイト側に渡すのか
方法が分からん
URL と URLConnection で GET/POST リクエスト送る方法調べろ。
925 :
デフォルトの名無しさん :2008/04/02(水) 11:26:05
それだけなんだ
Struts+JSPで親画面からwindows.openで子画面をポップアップで開き、子画面で選択した内容を親画面に戻しています。 親画面が縦長なので画面が一番上に戻ってしまいます。 一番上に戻らないようにしたいのですが、どうすれば良いでしょうか?
JavaScript で入力内容を親画面に設定しれ。リクエスト出すな。
929 :
デフォルトの名無しさん :2008/04/02(水) 15:37:59
入力した数字が素数か調べるにはどうすればいいですか?
>>929 その数字の約数を調べればいい
約数が1とその数字自身しかなければ素数
>>920 まずは Firefox と LiveHTTPHeaders を入れて、どんなことが起きてい
るのか調べるんだ。その上で、どんなAPIを使えば楽ができるのかを考える。
Eclipse の TCP/IP モニタで十分じゃん。
933 :
デフォルトの名無しさん :2008/04/02(水) 19:13:01
プログラミング初心者ですが、質問があります。 eclipseで以下のようなプログラムを書いて、それをjar形式でエクスポート しました。 しかし、そのjarファイルをクリックして開こうとすると「could not find main class」 と出てききます。どうすればいいのでしょうか? 誰かわかる方助けてくださいお願いします。 import java.awt.Color; import java.awt.Font; import java.awt.FontMetrics; import java.awt.Graphics; import java.awt.Insets; import java.awt.image.BufferStrategy; import java.awt.image.BufferedImage; import java.io.IOException; import java.util.Timer; import java.util.TimerTask; import javax.imageio.ImageIO; import javax.swing.JFrame;
934 :
デフォルトの名無しさん :2008/04/02(水) 19:13:57
public class GameTestMain { /** * @param args */ JFrame frame1; BufferStrategy bstrategy; int count = 0; BufferedImage backimage1, backimage2; GameTestMain() { frame1 = new JFrame("ノベルゲーム"); frame1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame1.setBackground(Color.WHITE); frame1.setResizable(false);
935 :
デフォルトの名無しさん :2008/04/02(水) 19:15:13
public static void main(String[] args) { // TODO 自動生成されたメソッド・スタブ GameTestMain gtm = new GameTestMain(); } class MyTimerTask extends TimerTask { public void run() { Graphics g = bstrategy.getDrawGraphics(); if (bstrategy.contentsLost() == false) { Insets insets = frame1.getInsets(); g.translate(insets.left, insets.top); g.drawImage(backimage1, 0, 0, frame1); g.setFont(new Font("Selif", Font.PLAIN, 40)); drawStringCenter("秒速1キロメートル", 100, g); bstrategy.show(); g.dispose(); } } }
936 :
デフォルトの名無しさん :2008/04/02(水) 19:16:07
void drawStringCenter(String str, int y,Graphics g) { int fw = frame1.getWidth() / 2; FontMetrics fm = g.getFontMetrics(); int strw = fm.stringWidth(str) / 2; g.drawString(str, fw-strw, y); } }
マニフェスト Main-Class でググレ
エクスポートするときにメインクラス指定した?
939 :
デフォルトの名無しさん :2008/04/02(水) 19:22:08
>>938 GameTestMainってのを選択しました。
>>933 jarを展開してMETA-INF/MANIFEST.MFファイルがあるか確認
その中にMain-Class: GameTestMainと書かれているか確認
必要なclassファイル (GameTestMain.classとかMyTimerTask.classとか) が全部入ってるか確認
941 :
デフォルトの名無しさん :2008/04/02(水) 19:53:56
それ以前にクラスパス通ってる?
そもそもデフォルトパッケージで JAR 起動できたんだっけか?
できるよー
[Window]-[Show View]-[Other...]-[Debug]-[TCP/IP Monitor] 右上の ▽ の Properties... で実際の接続先を指定。 ブラウザのプロキシ設定で localhst:<local monitor port>
一つお伺いしたいのですが,java複数枚のjpegをmjpeg or wmv を作りたいのですが どの様にすればよいのでしょうか?
java複数枚のjpegってなんだ?をが2つあるし
>>946 標準APIではメソッド一発で、みたいな便利なものはなさそうだから、
フレームになるjpegデータを読み込んで欲しい動画形式に従ってファイルに書き出していくしかなさそう。
標準でなければ動画を扱うライブラリとかでありそうだけど。
JMFってMotionJPEG対応してなかったっけ?
チャット作るのに JMS 使うのって鯵捌くのに斧振り回すみたいなもんかね?
文字列にそれまでと違う文字が出てくるindexってとれますか? 1111223111だったら4が取得できるといった感じの
>951 配列に展開してfor文でまわせばいいじゃん・・・
953 :
デフォルトの名無しさん :2008/04/03(木) 22:36:47
次すれから初心者出入禁止な
超初心者スレもあるのかな? とりあえず、質問内容を理解できる日本語文が読みたいよ。
【初心者以前】Java質問隔離スレ【エスパー募集】とか?
956 :
デフォルトの名無しさん :2008/04/03(木) 23:27:59
くだすれでいんじゃね?
957 :
デフォルトの名無しさん :2008/04/04(金) 00:13:20
Javaから、Windows上のフォルダの書込権限を調べることは可能でしょうか? Javaは1.4、Windowsは2000もしくはXPが対象です。
959 :
デフォルトの名無しさん :2008/04/04(金) 01:06:14
>>958 ありがとうございます。
1週間以上探しても見つからず、もはや不可能なのかと諦めかけていました。
>>951 String s = "1111223111";
String regex="(.)\\1*([^\\\\1])";
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(s);
if(m.find()) {
int i = m.group(0).length() - 1;
System.out.println(m.group(0));
System.out.println("index is " + i);
}
できたどー
961 :
デフォルトの名無しさん :2008/04/04(金) 04:03:24
どうやったらこれ探すのに1週間以上かかるんだw
962 :
960 :2008/04/04(金) 06:25:46
String s = "1111223111"; String regex="(.)\\1+(.)"; Pattern p = Pattern.compile(regex); Matcher m = p.matcher(s); if(m.find()) if(!m.group(1).equals(m.group(2))) { int i = m.group(0).length() - 1; System.out.println(m.group(0)); System.out.println("index is " + i); } 間違えてたどー
>>962 s="12"だとindex=1が出てくれなくないかい?
素直に、
String s = "1111223111";
int i = s.replaceFirst("(.)\\1*", "").length();
if (i > 0) System.out.println(s.length() - i);
とか。
正規表現や String インスタンス作るだけ無駄。 ループでやれ (無駄コードネタじゃないよな?)
965 :
963 :2008/04/04(金) 19:18:18
自分のはもちろん全然素直じゃないネタコード。
>>962 を見て思いついただけw
966 :
デフォルトの名無しさん :2008/04/04(金) 21:27:41
>>958 それだと「読み取り専用」のチェックしか調べられないだろ
要件は書込権限を調べることだぞ?
967 :
デフォルトの名無しさん :2008/04/04(金) 21:41:46
969 :
デフォルトの名無しさん :2008/04/04(金) 21:53:51
970 :
sage :2008/04/05(土) 16:43:36
今、適当に計算するプログラムを組んでるのですが、たまに結果がおかしくなることがあります。 例えば、10-9.9をすると0.09999999999999964になりますし、 1.1*1.1をすると1.2100000000000002となってしまいます。 これはなぜでしょうか?
972 :
デフォルトの名無しさん :2008/04/05(土) 17:09:11
質問です。 基本情報技術者のjava問題が大体解けるくらいのレベルまで達するには、 毎日4時間、本気で勉強したとして何日程かかるでしょうか。 javaは全くわかりませんが、COBOLは全商情報処理検定プログラミング部門の一級に合格する程度です。 アルゴリズムは理解しているつもりです。 スレの趣旨とは違うと思いますが、答えてもらえないでしょうか。 プログラミング言語は学ぶ上で個人差が激しい事もわかっています。 皆さんの思うところを教えてください。 お願いします。
973 :
デフォルトの名無しさん :2008/04/05(土) 17:10:51
早い人なら2日もあれば大丈夫だけど
wwwwwwww
975 :
デフォルトの名無しさん :2008/04/05(土) 17:40:38
GUIに関する質問です。 画像エディタなどにあるような、左と上に表示する「ルーラー」って AWTかSWINGでありますか? 自作するしかないんでしょうか
976 :
デフォルトの名無しさん :2008/04/05(土) 17:42:45
自作だね そんなに難しいものじゃないから30分もあれば作れる
977 :
971 :2008/04/05(土) 17:43:50
質問に答えてください。
>>971 0.1とかは、浮動小数点数に対応する値が無いので近似値になる
(0.1を二進数に変換してみると分かりやすい。無限小数になっちゃう)
ちょっと遅くなるけど、BigDecimal使うとか
979 :
971 :2008/04/05(土) 17:44:37
>>978 うはwwwwwwwwwwwwww
バカだwwwwwwwwwwwwwwwwwwwwwwwwwwww
971は何がしたいの?
981 :
971 :2008/04/05(土) 17:46:32
お前らキチガイwwwwwwww
982 :
デフォルトの名無しさん :2008/04/05(土) 17:49:13
BigDecimal使え スペルあってたっけか
983 :
デフォルトの名無しさん :2008/04/05(土) 17:49:55
その計算の原因つかんで修正するまでは30秒で出来るな
次スレ立ててきま
985 :
971 :2008/04/05(土) 17:53:08
立てるなカスwwwwwwww
986 :
デフォルトの名無しさん :2008/04/05(土) 17:53:53
よろしく
987 :
971 :2008/04/05(土) 17:54:04
よろしく
989 :
971 :2008/04/05(土) 18:01:27
キチガイ乙
990 :
デフォルトの名無しさん :2008/04/05(土) 18:04:59
971いらない
991 :
971 :2008/04/05(土) 18:20:50
俺は〜♪天才〜♪ 天才すぎ〜て〜♪こーまっちゃう〜〜♪
992 :
デフォルトの名無しさん :2008/04/05(土) 18:31:37
じゃあなんで質問するんだよw
993 :
971 :2008/04/05(土) 18:32:27
何の話?
994 :
デフォルトの名無しさん :2008/04/05(土) 18:34:07
995 :
971 :2008/04/05(土) 18:34:41
それが何?
残念なことに、このスレは真性キチガイに気に入られてしまいました
997 :
971 :2008/04/05(土) 18:43:51
キチガイ乙wwwwwww 俺天才杉ワロタwwwwwwwwwww
うめ
999 :
デフォルトの名無しさん :2008/04/05(土) 18:55:37
ume
1000げと さすが俺天才wwwwwwwwwwww キチガイにはどう考えても無理な芸当だなwwwwwwwwww
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。