【初心者】Java質問・相談スレッド113【大歓迎】at TECH
【初心者】Java質問・相談スレッド113【大歓迎】 - 暇つぶし2ch262:239
08/03/07 18:55:17
あ、でもそれじゃseedがどういう時にどんな配列が出来るか
は予想がつかないのでテストケースが書けないですね・・・

263:デフォルトの名無しさん
08/03/07 18:58:04
>260
DRYだろオーバーロードは基本的に。
void a(int i) と void a(int i, int j)
があったとすれば、前者の実装は
a(i, 0)
のように記述するだろ?

264:デフォルトの名無しさん
08/03/07 19:01:00
>>261
乱数のシードを渡すくらいなら Random オブジェクトを渡した方がいいと思う
そうすれば SecureRandom を使うこともできるし (セキュアな盤面が必要な状況なんかないだろうけど)、
テスト目的に Random を継承してランダムでない値を返すようにしたオブジェクトを渡すこともできるし

265:デフォルトの名無しさん
08/03/07 19:10:59
>>235
言語仕様的には strictfp が付いてなければ IEEE754 に従っている保証はない
ちなみに、IEEEの倍精度は精度は53桁だけど仮数部は52ビットだった気が

266:デフォルトの名無しさん
08/03/07 19:14:07
優秀でない人が実装すると設計が無駄になる

267:デフォルトの名無しさん
08/03/07 19:19:17
>>264
Random を継承してランダムでない値を返すくらいなら、
単に、数値を返すメソッドを持ったインタフェースを渡した方がいいと思う


268:デフォルトの名無しさん
08/03/07 19:22:29
>>254
コメントはテストケースにしっかり書いた方が良いよ

269:デフォルトの名無しさん
08/03/07 19:27:09
>>262
どういうシードを渡した時にどういう配列が出来るかは、どういう乱数が発生するかと等価だから
乱数生成ルーチンのテストにしかならん。除外可能。でなければ乱数生成を自前でやる必要が
出て本末転倒な事になる。異なるシードを与えたときに異なる配列になることが確認できれば十分
(もちろんその整合性も)。

というかホワイトボックステストがしたいのかブラックボックステストがしたいのかはっきりせれ。

270:デフォルトの名無しさん
08/03/07 19:29:13
つうか、そこまでするんだったら、
interface InitBoard {
int width();
int height();
boolean bomb(int x, int y)
}
などというインタフェースを渡せばいいやん

271:デフォルトの名無しさん
08/03/07 19:41:35
>>265
>>235の例だけでいえば定数式だから strictfp ついてなくても
0 だったり true だったりは言語仕様で保証されてる。

272:239
08/03/07 19:41:41
>>270
インターフェイスを使うメリットが分かりません。
インターフェイスは、そこに書いてあるメソッドに実装を強要するだけであり
なぜこの場面で使わないといけないのかが分かりません。

273:デフォルトの名無しさん
08/03/07 19:42:49
「エンジニアリング設計の基準を実際に満足することのできる唯一のソフトウェアドキュメントはソースコードだけだ」
と Jack Reeves 様が言っております。
ソフトウェアで巷で言われている「設計」などというものは
他の工学では単に設計の骨組みに過ぎないのです、たぷん

274:デフォルトの名無しさん
08/03/07 19:44:13
上にもいろいろ書いてあるだろ?
インターフェイス使えば同じ機能でも別の実装が可能になるんだって。
もう少し自分でいろいろ試行錯誤するべきだと思うよ。

275:デフォルトの名無しさん
08/03/07 19:46:44
マインスイーパーのマス程度にポリモーフィズムはいらんだろw
必要になったとすればもうそれは別のゲームになってるから設計からやり直したほうがいい。

276:デフォルトの名無しさん
08/03/07 19:57:15
javaじゃなくて設計の話になってるな。

277:デフォルトの名無しさん
08/03/07 20:04:12
>>272
インターフェースを使わないメリットが分かりません。
そこに書いてあるメソッドを呼び出せれば Board の実装が可能なのに
なぜこの場面で使うといけないかが分かりません。

278:デフォルトの名無しさん
08/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を利用しています。

279:デフォルトの名無しさん
08/03/07 20:22:54
>>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
08/03/07 20:31:08
>>279
>getDeclaredClasses() はメンバーフィールドで使用されているクラスを得るんじゃなくて
>メンバーとして宣言されたクラスおよびインターフェイスを得る。

さっそくのご回答ありがとうございます。
理解しました。なるほど、そういうことだったのか…

私がやりたかったのは前者だったのですが、
あるクラスのメンバとして宣言されている(has a関係の)クラス名を取得する方法という方法は
あるのでしょうか?


281:デフォルトの名無しさん
08/03/07 21:22:44
突然ですがすみません。
最近VistaのBasicにJava6update5をインストールしてから、
Yahooオークションの詳細な残り時間が表示されなくなるばかりか
ブラウザが固まってしまいます。
私だけでしょうか。
URLリンク(help.yahoo.co.jp)
このヘルプ通り設定してもダメでした。

282:デフォルトの名無しさん
08/03/07 21:29:20
あなただけです

283:デフォルトの名無しさん
08/03/07 21:37:06
内部クラスについて教えてください。
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:デフォルトの名無しさん
08/03/07 21:39:08
存在します

285:デフォルトの名無しさん
08/03/07 21:54:29
>>280
> あるクラスのメンバとして宣言されている(has a関係の)クラス名を取
> 得する方法という方法はあるのでしょうか?

java.lang.ClassのAPIリファレンスを眺めて、それでもわかりませんか?



286:デフォルトの名無しさん
08/03/07 21:58:48
>>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
08/03/07 22:00:51
>>285
すいません。分からないです。

当初はgetDeclaredClasses()じゃなくてgetClasses()使ってたんですが、
それでうまく行かなかったのでgetDeclaredClasses()を使って、やはりダメで…という状況です。


288:デフォルトの名無しさん
08/03/07 22:04:12
>>286
そうですか。
さきほどアンインストールしたら直りました。
失礼しました。

289:デフォルトの名無しさん
08/03/07 22:11:39
Javaプログラムのデプロイとアップデートについて質問させてください。
ローカルの*.classファイルが新しいものかどうかをチェックするには
どのような方法があるでしょうか?

ファイルのタイムスタンプでよいかと思ったのですが、ユーザがタイムスタンプを
書き換えるようなアーカイバを利用していた場合に対処できません。

.classファイルに外から見てわかるような内部バージョン番号をつけることはできるのでしょうか?

290:デフォルトの名無しさん
08/03/07 22:17:40
JAR にしてマニフェストに書く。

291:デフォルトの名無しさん
08/03/07 22:21:39
>>287
getFields?

292:278
08/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

必要な結果が得られました。ありがとうございました。

293:デフォルトの名無しさん
08/03/07 22:53:16
>>290
おお、Jarでまとめるのもひとつの手ですね。タイムスタンプ署名もつけられるようですし。
ただその場合、アップデート時にはJarごと更新する必要がありますよね?
あまり大きなJarだと問題が出そうです。

更新されているclassファイルのみ更新する方法がないものでしょうか・・・

294:デフォルトの名無しさん
08/03/07 23:36:29
問題が出るような大きなJarって何Gくらいなの?

295:デフォルトの名無しさん
08/03/08 00:18:32
3メガぐらいで十分大きいんじゃん

296:デフォルトの名無しさん
08/03/08 01:40:41
>>295
GBクラスではないです。大きくても100MBいかないぐらいまででしょうか。
でもクライアント数が多いとまるごとアップデートは現実的ではないと思いまして。

297:デフォルトの名無しさん
08/03/08 01:44:05
クラスファイル等のリソースを設計、実装、運用などに合わせて分類し、それを元にjarを分ける

298:デフォルトの名無しさん
08/03/08 02:52:26
Javaこそ、このあたりの自動更新機構/ツールが備わっていてもよさそうなものだが

299:デフォルトの名無しさん
08/03/08 03:05:43
つ Java Web Start

300:デフォルトの名無しさん
08/03/08 08:12:22
Propertiesを継承して俺俺Propertiesを作っています
getProperty(key)をオーバライドして取得した値がnullの時
exceptionを投げたいのですがPropertiesにthrowsが無いからダメと怒られます

こんな時どうすればいいですか?


301:デフォルトの名無しさん
08/03/08 08:14:14
RuntimeException を投げる

302:デフォルトの名無しさん
08/03/08 08:18:37
RuntimeException又はそれを継承したExceptionを投げる

303:デフォルトの名無しさん
08/03/08 08:31:43
nullチェックした方で任意の例外投げる

304:デフォルトの名無しさん
08/03/08 08:35:56
>>301-303
ありがとうございます。
なるほど、UserExceptionを継承したのを投げてたのですが
RuntimeExceptionを継承したのを投げたらいけました。




305:デフォルトの名無しさん
08/03/08 11:00:19
>304
それはあまりよくない設計
PropertiesをラップしたMyPropertiesを作る方がいい
継承はほどほどにな

306:デフォルトの名無しさん
08/03/08 11:11:26
>>305
それは考えたのですが
カバーするメソッドが多くなるので
どうかなと思ってやめました

307:デフォルトの名無しさん
08/03/08 11:13:35
>306
そんなに多いか?
利用側に関してはgetProperty くらいでしょう使うのは。

初期化とかは内部で閉じるから、余計なパラメータ等を設定されるのも防止できるぜ。
不要なものまで公開しない方がいい。

308:デフォルトの名無しさん
08/03/08 11:33:46
>>306
ふむ…確かに多いが、eclipse なら、delegate対象を選択して、
メニュー:Source > Generate Delegate Methods...
で、必要なメソッドを選んで一発終了ですがな。

309:デフォルトの名無しさん
08/03/08 12:28:26
重い以前に回線が切れるのは何でですかね?
ダウンロードした瞬間切れるんですが・・・。

310:デフォルトの名無しさん
08/03/08 14:22:39
>>308
それっぽいのがあるなーと思ってはいたのですが
使い方解らず・・・
そっちに変更します

ありがとうございました

311:デフォルトの名無しさん
08/03/08 15:44:39
今までC#をやってきて、似てると噂を聞いたことのある
Javaに手をつけてみようかと思い、とりあえず
Java SE 6とEclipseをインストールしてみました。

あと何か入れておいたほうが良いものとかあります?

312:デフォルトの名無しさん
08/03/08 15:50:42
>311
C#でGUIとかやっていたならば、NetBeans6を使ってSwingをいじった方が感覚的に近いかも知れん
後はWebアプリを作りたいのか、GUIアプリを作りたいのか、ちょっとしたCUIアプリなのかで入れるものは変わる
CUIならEclipseで十分。

313:311
08/03/08 15:56:31
Webアプリを作ってみたいですね。

Webアプリを作るには何がいるんかな

314:デフォルトの名無しさん
08/03/08 16:04:37
「Webアプリ」つっても >>311>>312 で抱いているイメージが違いそうだな

315:デフォルトの名無しさん
08/03/08 17:25:50
java で作ったプログラムを配布したいんですけど、
.jar の状態で配布するのが普通なんですかね?

画像を大量にあつかうプログラムなので
-Xmx500m -Xms500m とか指定させて動かすのが普通なんですけど、
こういう場合ってバッチファイル起動させるようにする形でいいんでしょうか

アドバイスお願いします。


316:デフォルトの名無しさん
08/03/08 17:41:32
バッチとかシェルスクリプトとかネイティブな実行形式でラップするとか
まあ、実行時引数渡すだけならバッチかスクリプト

317:デフォルトの名無しさん
08/03/08 18:02:41
マニフェストに記述できないの?
いや、よくしらんけど

318:315
08/03/08 19:02:55
>>317
マニフェストファイルに実行時引数やメモリオプションなどを記述できるんですか?
よく知らないもので、、

319:デフォルトの名無しさん
08/03/08 19:29:59
URLリンク(www.ibm.com)

320:デフォルトの名無しさん
08/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側では正常に動作します。

321:デフォルトの名無しさん
08/03/08 22:06:09
スレッドを止める方法(破棄する)ってどうしたらいいですか?
「ボタンAを押すと画像を動かし始め(スレッドを開始)、ボタンBを押した時に画像を止め(スレッドを止める)、
またAを押すと画像は動き始める」っていうものなんですが・・・
Interrupt()を使ってもとまらないしsleep()を使うとボタンが押せなくなるんです…

322:デフォルトの名無しさん
08/03/08 22:16:04
>>281
私もUpdate4にした頃からアプレットが固まるようになったけど、
別スレで、
コントロールパネル > Java の
Javaコントロールパネル から
基本 > ネットワーク設定 の ネットワークプロキシ設定を
直接接続 に変更しろ

ってあったのをみて
試したら動作するようになったよ

323:デフォルトの名無しさん
08/03/08 22:16:31
>>320
-jarオプションを付けると、オプション-classpathや環境変数CLASSPATHは無視され、
MANIFESTファイルのClass-Path属性に記述されたもののみが有効になる。
ちゃんとMANIFESTファイル書け。

324:デフォルトの名無しさん
08/03/08 22:40:57
>>321
sleep を使うとボタンを押せなくなるようなスレッドを止めたいのなら、
アプリケーションを終了させると止まるヨ

325:デフォルトの名無しさん
08/03/08 23:01:24
>>323 MANIFESTって外部のJarも書けるのは初めて知りました。
おかげで無事動作しました。サンクスです。これで家に帰れます orz

326:283
08/03/08 23:43:32
お世話になります。
283なのです。

>284
ありがとうございます。
あるということで、、今日一日探してみたのですが、見つけられませんでした。
私の持っている本には見つからず、Webページでは、記述のある場所を見つけられませんでした。

Webページで参考になる場所を教えてもらえませんか。

327:デフォルトの名無しさん
08/03/09 00:03:06
>>326
URLリンク(java.sun.com)

要は、クラス名.this と書く。


328:デフォルトの名無しさん
08/03/09 00:04:55
>>326
仕様にズバリ載ってるだろうが・・・

329:デフォルトの名無しさん
08/03/09 00:06:07
あ、thisの話じゃなかった。


330:283=326
08/03/09 15:36:43
>327
ありがとうございます
確認できました。
教科書とか、入門レベルの本には載ってないのですね…。

>328
仕様書読んだことありませんでした。
参考書に沿って勉強していて気になっていた感じでした。

>329
=327ですよね?
いえ、thisの話が知りたかったのです。
Class2のaを見たいのではなくて、
最終的には、Class2 のインスタンスそのものを見たかったので、Class2.thisですね。
これが最も知りたかったことです。
ありがとうございます。

331:デフォルトの名無しさん
08/03/09 17:52:45
java.lang.*;
はimportしなくても初めからされているのはなぜですか?
importするときはどんなときですか?
String s="うんこ"
みたいなふうなようなことを自作するにはどうやりますか?
おねがいします。

332:デフォルトの名無しさん
08/03/09 17:56:21
>はimportしなくても初めからされているのはなぜですか? 
その方がべんりだから
>importするときはどんなときですか? 
java.lang以外のとき
>みたいなふうなようなことを自作するにはどうやりますか?
できません

333:デフォルトの名無しさん
08/03/09 17:59:50
>>332
ありがとうございました。
最終結論としてjava.langをimportするときはありえないという理解で
よろしいでしょうか?

334:デフォルトの名無しさん
08/03/09 18:43:12
書いてもいいけど無駄ではある。
どのクラスを使っているか明示するために*なしで1個1個のjava.lang以下の
クラスをインポート宣言する流儀はありえる。


335:デフォルトの名無しさん
08/03/09 18:45:31
インスタンス化するときの、
フィールドを定数で初期化する方法として、

クラスの記述のときに、フィールド宣言と同時に初期化の値を記述してしまう方法と、

コンストラクタで実行させる、
方法をとれるみたいですが、
1の方法はとらない方がいい、といった考え方はありますか?
(1の後に2が実行されるようで、1を2で上書きできることは確認してみました。)

どのコンストラクタでも同じことをしたいならば、便利だと思ったのですが、
初期化はコンストラクタでやるべきかなとも、思いました。
こういった考え方をいろいろ教えているサイトってありませんか?

336:デフォルトの名無しさん
08/03/09 18:57:18
テストについて質問です。

例えば
Class A{
A(){
methodA();
}
public methodA(){};
}
のようなクラスをテストするとします。
methodAをテストする前にインスタンスが作られますが、
そこではテストしていないmethodAが発動します。
この問題はどうすれば解決しますか?

337:デフォルトの名無しさん
08/03/09 19:11:58
java sound apiがダウンロードするばしょが見つかりません
日本語マニュアルつきでおねがいします。

338:デフォルトの名無しさん
08/03/09 19:44:26
>>336
Javaでおk

339:デフォルトの名無しさん
08/03/09 19:48:32
>335
ケースバイケース
可読性を考えるとフィールドの宣言と同時に初期化する方がいいかもしれない
また、初期化忘れも気づきやすい

コンストラクタはあくまでインスタンスの初期化の最後のプロセスと考えるといいかもしれない。
他にも(非staticな)イニシャライザで初期化する方法もある
private int num;
{
  num = 10;
}
のような感じ
これはほとんど使わないけど

340:デフォルトの名無しさん
08/03/09 19:49:21
>336
methodAがpublicである事がバグの一種

341:デフォルトの名無しさん
08/03/09 20:05:25
URLリンク(java.sun.com)
を圧縮形式でダウンロードできるホームページをおしえてください

342:デフォルトの名無しさん
08/03/09 20:12:15
>>331
おまえには
import *;
が似合ってる

343:デフォルトの名無しさん
08/03/09 20:29:18
>>340
privateでもいいですけど。
では解決策があるんですか?

344:デフォルトの名無しさん
08/03/09 21:06:23
java soundってコアに入ってから関連ドキュメントもJDKに含まれなかったか?

345:デフォルトの名無しさん
08/03/09 21:20:41
>>342
Javaのパッケージを理解してから出直してこい

346:デフォルトの名無しさん
08/03/09 22:00:07
URLリンク(72.5.124.55)
のホームページと同じ、avasdkがダウンロードできるところに
あるダウンロードできるドキュメントのページが、vistaのIEで開くと空白になって
何もみえないんですけど。
解決方法おしえてください。

347:デフォルトの名無しさん
08/03/09 22:06:58
>>341
URLリンク(java.sun.com)
[J2SE 5.0 ドキュメント] -> [ダウンロード] (一式全部有るけど)

>>343
何のためにテストを行うのか。

インスタンスを生成した後、一度も呼ばれていないメソッドを呼ぶテスト?
何が起きても起こり得ない状況をテストするの?
それらはテストをする価値があるの?

348:342
08/03/09 22:27:13
>345
いいですけどって何様?

コンストラクタで呼ばれるメソッドは原則としてコンストラクタの一部
言い換えれば初期化処理の一部であって、インスタンスの生成が完了する前に実行される特殊なメソッド
これをprivate以外にするとオーバーライド時など予期せぬ問題を生じる可能性がある

で、テストする内容はインスタンスの生成で何か問題あるのか?
そのメソッドが単体でテストしなければならないほどのロジックを含むというならば、別クラスに抽出するべきだろう

349:デフォルトの名無しさん
08/03/09 22:39:06
import *;
import *;
import *;

・・・プ

350:デフォルトの名無しさん
08/03/09 23:49:26
>>348
オーバーライドされて困るからprivateにするってどんだけー
それなら普通finalメソッドにするもんじゃないのか?
import *;といい少しjavaの復習をしたほうがいいかと。

351:デフォルトの名無しさん
08/03/09 23:54:33
swingのJTabbedPaneについて教えてください。

JTabbedPaneのインスタンスに、addTabすると、
タブが追加されます。タブのインデックス(題名がついているところ)に、
MouseListenerを設置して、クリックを検出したいのですが、
できません。
どなたか、私に助言くださいませんか。

352:デフォルトの名無しさん
08/03/10 00:26:04
>>351
タブ選択は ChangeListener で検出します。
マウスの位置はどうなんだろう…

353:デフォルトの名無しさん
08/03/10 01:25:51
>>350
いや、コンストラクタから呼ばれるメソッドはprivateにするのは常識だと思うぞ
finalでもいいがコンストラクタに関してもう少し勉強した方がいいのはお前かと

354:デフォルトの名無しさん
08/03/10 01:52:08
>>351
JTabbedPaneにMouseListenerをaddして、
そのリスナのmouseClickedメソッドでJTabbedPane#indexAtLocation(int,int)に、
MouseEventのx,y座標を渡せば、
タブ部分をクリックした時は選択したタブに合わせて0以上の値が、
タブ部分以外の場合は-1が返ることで区別ができると思う。

355:デフォルトの名無しさん
08/03/10 01:56:37
350の言うことなんざどうでもいいよ
バカはバカを呼ぶっていうしな
それよりimport *;についてkwsk

356:デフォルトの名無しさん
08/03/10 09:23:12
オートボクシングを自分でつくることはできますか?

357:デフォルトの名無しさん
08/03/10 09:26:53
eclipseで自動で色々なメソッドのjunitテストを作って
勝手に作られたテストメソッドを削除したり増やしたりしても
もんだいありませんか?

358:デフォルトの名無しさん
08/03/10 10:02:04
勝手に作って勝手に削除しても何の問題もないだろ

359:デフォルトの名無しさん
08/03/10 10:07:18
>>356
無理。コンパイラの自動補完機能です。

360:デフォルトの名無しさん
08/03/10 10:16:59
>>356
つられて見るが、何をボクシングしたいんだ?

361:デフォルトの名無しさん
08/03/10 11:20:01
javaで2進数を表すにはどうしたらいいですか?

362:デフォルトの名無しさん
08/03/10 11:22:24
表すの意味をはっきり

363:デフォルトの名無しさん
08/03/10 11:23:16
無理っす。
int binNum = Integer.parseInt("10110001",2);
これで我慢だー

364:デフォルトの名無しさん
08/03/10 11:28:05
binNum
ビンナム

ジョンイルみたいなノリでワロス

365:デフォルトの名無しさん
08/03/10 15:00:51
>>361
2進数表記の整数リテラルを所望ってことならJavaには無い
8、10、16進数表記しかない

366:デフォルトの名無しさん
08/03/10 16:52:14
Javaの格言という本を買ってきました。
読んだ事ある人いますか?

367:デフォルトの名無しさん
08/03/10 17:10:03
それを尋ねることの意味が分からん。
せっかく買ってきたのなら読んで自分で評価、判断すればいい。

368:デフォルトの名無しさん
08/03/10 17:42:04
Javaで音声認識やってる人居る?

Java SAPIってのが一応用意されてるみたいんなんだけど、
これって日本語対応してますか?

369:デフォルトの名無しさん
08/03/10 18:50:57
質問です。
他言語(例えばC++)等で作成したプログラムを、Javaのソース内で呼び出して利用する事は可能ですか?

370:デフォルトの名無しさん
08/03/10 18:56:05
>>369
JNIでぐぐるといいよ

371:デフォルトの名無しさん
08/03/10 19:14:36
>>369
可能だけど呼び出しのオーバヘッドがあるから速度的な恩恵は少ないよ
今はネイティブのCと比べても遜色がないくらいJavaVMのパフォーマンスはいい

372:デフォルトの名無しさん
08/03/10 19:26:02
なんで唐突に速度的な理由が前提になってんだ。

373:デフォルトの名無しさん
08/03/10 19:46:01
実はRuntime#execやProcessBuilder#startで済む問題だったというオチ

374:デフォルトの名無しさん
08/03/10 21:18:59
import *;
についての解説マダー(AA略

375:デフォルトの名無しさん
08/03/10 23:17:25
>>374
import *;
public class Sample{
public static void main(String[] args) {
}
}
これコンパイルしてみれば分かるだろ

376:デフォルトの名無しさん
08/03/10 23:20:28
>>374
お前バカだな
阿部さんのケツをインポートするんだよ
そうするとお前もイイ男になるぞ

377:デフォルトの名無しさん
08/03/11 00:41:17
HDDの容量を取得したいのですがどうすればよいのでしょうか?

JAVAのAPIを探してみたのですが,わからなかったです.

378:デフォルトの名無しさん
08/03/11 00:46:44
>>377
URLリンク(java.sun.com)()

379:デフォルトの名無しさん
08/03/11 07:40:54
>375
先生!コンパイルに失敗します><
結局342は何が言いたかったのか分かりません><

380:デフォルトの名無しさん
08/03/11 09:20:41
>>379
>>376

381:デフォルトの名無しさん
08/03/11 09:43:03
ケツにインサートならまだわかるがケツをインポートはわからん

382:デフォルトの名無しさん
08/03/11 11:42:50
import *;
で全部インポートできると思っていたんだろ、多分
可哀想な人なんだよ、多分

383:デフォルトの名無しさん
08/03/11 12:46:51
>>379
C言語とかを勉強するとコンパイル時にエラーが出てくれるありがたみがよく分かるから一度勉強してみるのもいいかも。

384:デフォルトの名無しさん
08/03/11 13:32:27
>>383も可哀想な人でおk?

>>342
>>345
>>348
>>349
>>355
>>374
>>375
>>379
>>382

385:デフォルトの名無しさん
08/03/11 17:33:10
からかわれてるとも知らずかわいい子。ウフッ。

386:デフォルトの名無しさん
08/03/11 17:59:24
jmockのコードでみたんですが
context.checking(new Expectations() {{
 ごにょごにょ
}});
↑の2重波括弧ってどういう意味ですか?

387:デフォルトの名無しさん
08/03/11 18:03:38
>>386
インスタンスイニシャライザ

388:386
08/03/11 18:20:03
>>387
ありがとうございます。ぐぐってみます。

389:デフォルトの名無しさん
08/03/11 19:01:16
コンストラクタ書けないからね
でも書き方は悪いわ
context.checking(new Expectations() {
  {
 // 初期化処理
  }
});
とでも書けば解りやすいのに

390:デフォルトの名無しさん
08/03/11 19:18:25
結構良く見かける書き方だけどなー

391:デフォルトの名無しさん
08/03/11 20:59:23
staticイニシャライザはよく見るけどインスタンスイニシャライザって内部クラスでしか見ないんだけど。

392:デフォルトの名無しさん
08/03/11 21:30:57
Vector.insertElementAt
は、Vectorの要素数が多いほど遅くなるのでしょうか?

実験してみたところ
要素数が増えるほど一回のinsertにかかる時間が増えているようなのですが...

Vectorの初期化のときに、 new Vector(1000000,1000000) などやっても少しぐらいしか改善しません。

insertElementAtで挿入する番号は先頭から終端までほぼ平均的に選ばれるようなプログラムです。

この
insert にかかる時間を増加させない方法はないでしょうか?



393:デフォルトの名無しさん
08/03/11 21:42:52
Vector(とArrayList)は中に配列持ってるだけだから、
途中に挿入すると後ろの要素を全部1つずつずらす必要がある。
これはコンストラクタで大きなキャパを指定しても同じこと。

LinkedListなら要素を数珠繋ぎで持っているため、途中に挿入する場合も
数珠繋ぎの付け替えだけで出来る。しかし、挿入のたびに挿入位置を毎回
先頭からたどる必要がある。一応試してみたらどうだろうか。

Vectorは古いっちゃ古いし。

番号が疎なら整数をキーにしたMapを使うほうがいいかもしれない。


394:デフォルトの名無しさん
08/03/11 21:44:32
>>392
> 要素数が増えるほど一回のinsertにかかる時間が増えているようなのですが...
insert する要素以降を全部一個ずらしてくから
要素数が増えるほど時間がかかるのは当然。

LinkedList#listIterator(int) 使って要素追加してくとか、
ArrayList#addAll(int, Collection) で一気に追加するとか、
いっその事 Map<Integer, E> してみるとか。

395:デフォルトの名無しさん
08/03/11 21:55:52
そもそも1,000,000レコードをオンメモリで扱うのもどうかと思うが・・・

396:デフォルトの名無しさん
08/03/11 23:41:15
>>395
1レコード1KBでも1GBじゃん。32bitのメモリ空間埋めるのに、
1万円でおつりが出る時代なんだから、気にしないと言うのも
それはそれでアリかとw

397:デフォルトの名無しさん
08/03/11 23:57:28
容量の問題じゃなく速度の話だとw

398:デフォルトの名無しさん
08/03/12 00:50:48
それもそうだが、大量データの処理は専用のソフトウェアに任せろという意味だろ
Oracleのオンメモリストレージ使って100万件オンメモリとかならばOKな時代だがJavaのヒープでそれをやるってのはアホ

399:デフォルトの名無しさん
08/03/12 01:02:31
ヒープ領域使い果たしてJVMがクラッシュしたら速度とか言ってる場合じゃないしなw
5万ぐらいなら余裕だが100万レコードともなるとまず逝きますw

400:デフォルトの名無しさん
08/03/12 08:36:07
>>384
C言語は、javaに比べれば投げっぱなし感が強いんじゃない?

401:デフォルトの名無しさん
08/03/12 12:23:09
>>400
Rubyとかを勉強すると~なら分かるんだけどな。
なんでC言語を持ち出すのかが全く分からない。

402:デフォルトの名無しさん
08/03/12 12:28:36
それ以前に投げっぱなしという表現が意味不明

403:デフォルトの名無しさん
08/03/12 12:40:23
Rubyは麻薬だな。
でも遅すぎて死ぬ。

404:デフォルトの名無しさん
08/03/12 15:36:21
ここってJava3Dの話もしていい?

405:デフォルトの名無しさん
08/03/12 17:18:46
スレタイが初質だから初質っぽいことならいいんだろうけどJava3D使ってる人居るの?
俺はJOGL派なんだけど。

406:404
08/03/12 18:16:38
今ちょうど両方つまみぐいしてる所で、Java3Dメインにしようかと検討中。
JOGLの頂点配列並な性能はあるし上位なAPIあるから楽かなと。

質問は質問文まとめてる内に自己解決した、ごめん。

407:デフォルトの名無しさん
08/03/13 01:35:19
  |::   \おい、ゴルァ 出て来い!!        ドッカン  ゴガギーン
 :||::      ̄ ̄ ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ _m ドッカン      ☆
 :||::   ___     ======) ))_____  /        / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 :||  |      |      | ̄.ミ∧_∧ | | ──┐||::    ∧_∧ < おらっ!>>1出てこい!!
 :||  |ぁゎゎ. |      |_..(   ) | | .___ │||::   (´Д` )  \___________
 :||  |Д`);  |      |_「 ⌒ ̄  ,|.. |_...   ..||||::  / 「    \
 :||  |⊂ノ;   |      |_|    ,/  ̄ .  ̄ ̄ ̄ │||::  | |    /\ \
 :||:   ̄ ̄ ̄         ̄|    .| :||│     ;,   │||; へ//|  |  | . |
 :||::   :;  ; ,,         :|    :.| ||│       (\/,.へ \|  |  (r )
 :||::   :;  冫、. .      |   .i  .|:||◎ニニニニ\/  \    |   ̄
 :||.:,,'';      ` ..  . ::  . |  ∧. |:||│::::/    │||::.:.   .Y ./
 :||:;;;:         :      |  | | |.||│ 冫、 ;;;,,│||:;;;.   | .|
 :||:;;;:             / /  / /::||│ `  .,;;;,,.│||:;;;.   | .|
 :||;::: #   ..:        ./ / ./ ./ ||│|三三三|. │||;;:..::   | .|
 :||;:::     #. ..:  :::::: (_) .(_).ミ||│        │||;;;k、,,,|,(_)
   ̄ ̄ ̄ ̄ ̄: ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄     
:::;三三;;;;;三三:::;;;;;;; :::::;;;;;::;;;;;;;;;;::::;; :::::;;;;;:::::;;;;;;;;;;::::;; :::::;;;;;:::;;;;;;;;;;::::;;;;;::三三三


408:デフォルトの名無しさん
08/03/13 10:12:53
Derbyを組み込みモードで使ってるんだけど、
動作中にJavaの外からDBのテーブルの状態を調べる方法ってないの?

409:デフォルトの名無しさん
08/03/13 13:11:37
VC++でDirectXつかって高度なお絵かきができますが、
Javaでも出来ますか?

たとえばコサックスみたいなやたら人がでてくる戦国シミュレーションゲーム作れます?

410:デフォルトの名無しさん
08/03/13 13:30:38
>409
やろうと思えば出来るんじゃね?

DirectXのパフォーマンスと比べれば程遠いモノが出来るが。

411:デフォルトの名無しさん
08/03/13 13:41:38
JMonkeyEngineってのがある

412:デフォルトの名無しさん
08/03/13 14:42:43
クラスの停止について質問です。

今ゲームを作っていて、オープニング画面とゲーム画面の2つをつくりました。
まずオープニングをJFrameに表示、その後キーボード入力でオープニング画面を消してから
ゲーム画面を表示するという構想で進めてます。

そこでオープニング画面のクラスを停止させたいのですが、やり方がわかりませんでした。
そもそも一度実行したクラスを停止させること自体無理なのでしょうか?


413:デフォルトの名無しさん
08/03/13 14:44:28
クラスを停止?何言ってるんだ

414:デフォルトの名無しさん
08/03/13 14:47:12
クラスの停止とか、色々と勘違いしていると思うが・・・

後で再描画するならばsetVisible(false)で非表示にする
二度と表示しないならばdispose() で破棄する


415:デフォルトの名無しさん
08/03/13 14:51:44
JPanelを2つ作って、片方を表示させた後、同じ場所にもう一方のJPanelをすり替えて表示させたいです。
今表示しているJPanelを消す=JPanelを継承しているクラスを停止させるという表現しかできませんでした。


416:デフォルトの名無しさん
08/03/13 14:53:14
JFrame の GUI に今あるアプレットが使えると思ってはめ込んでみたんだけど
どうもドロップダウンしたメニューがアプレットの後ろに描画されてしまう様子。
アプレットは JRootPane を使っているはずだがこれが原因?

417:デフォルトの名無しさん
08/03/13 14:53:42
>>414
ありがとうございます。
さっそくやってみます。

418:デフォルトの名無しさん
08/03/13 14:57:46
それを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();
}

みたいな

419:デフォルトの名無しさん
08/03/13 15:16:03
>>412
CardLayout使えば?

420:デフォルトの名無しさん
08/03/13 15:24:18
>>418
JPanelの継承やってみます。ありがとうございます。

>>419
cardLayoutも調べているうちに見つけたのですが、脳みそが足らないばかりに
うまくいきませんでした。教えて下さったのにすいません。

421:デフォルトの名無しさん
08/03/13 15:29:18
まあ、Swingは最初は覚えること多いから仕方ない.
ゲームのオープニング画面みたいな起動画面であれば、すぐに表示するべきだから、別JPanelでいいと思う。
画面を出している間に、ゲーム用のコンポーネントを裏側で作るってのは正しいしね。
俺は乗せ換えでいいと思うよ。

1.JFrameにメインのコンポーネントを乗せる。
2.メインコンポーネントに、タイトル画面コンポーネントを設定して描画
3. スタートボタンなどが押されたらメインフレームからタイトルコンポーネントを抜いて差し替える


422:デフォルトの名無しさん
08/03/13 15:48:44
SplashScreen とは違うことをやりたいの?

423:デフォルトの名無しさん
08/03/13 15:49:48
ゲームのオープニング画面はスプラッシュスクリーンとは別物だろ

424:デフォルトの名無しさん
08/03/13 15:57:55
JPanel p = (JPanel)getContentPane();
JPanel p1, p2;
p.add(p1);
……
p.setVisible(false);
p.remove(p1);
p.add(p2);
p.setVisible(true);
俺なんか、全部交換。

425:デフォルトの名無しさん
08/03/13 16:11:55
>>412ですが無事完成しました。
みなさんアドバイス本当にありがとうございました。

426:416
08/03/13 16:16:16
JApplet の内容を JPanel に分離してそっちを JFrame と共有するようにしたら
メニューが裏に廻らなくなった。マジかよ。

427:デフォルトの名無しさん
08/03/13 16:37:00
>>426
JApplet自身は重量コンポーネントだからじゃない?

428:デフォルトの名無しさん
08/03/13 17:06:37
>422
Splashにボタンとかつけられたっけ?
自前でWindowを使って作るならばできるだろうけど

429:デフォルトの名無しさん
08/03/13 22:45:03
あるクラスに含まれるクラスを再帰的に抽出する方法ってあるでしょうか?
擬似コードを書くと、

Target hoge=new Target();
Class[] classes;
classes=hoge.getClass().***.getAllClasses();

みたいな感じのことができるといいなあと思っているのですが。

430:デフォルトの名無しさん
08/03/13 23:09:23
含まれるの意味が解らん
依存クラス数なら適当なMetrics測定ツール使えばいい

431:429
08/03/13 23:42:26
>>430
別の言い方をすると、あるクラスがimportしているクラスを
再帰的に取得したいといことです。
(あるクラスがimportしているクラス、そのクラスの
 import対象のクラスがそれぞれimportしているクラス…というように、
 依存関係のクラスオブジェクトをすべて取得する)

いっそclassファイルをバイト列のイメージにして文字列から解析した方が早いでしょうか?

432:デフォルトの名無しさん
08/03/13 23:43:42
importはincludeじゃないぞ……


433:デフォルトの名無しさん
08/03/13 23:54:37
>>431
importと依存は関係ないぞ。
java.lang.Classにはそういう情報を得る手段はないから、バイトコード
を解析するしかないんじゃないかねー。


434:デフォルトの名無しさん
08/03/13 23:54:50
MyClassLoaderで何とかならないかね

435:デフォルトの名無しさん
08/03/14 00:52:46
ダイナミックプロキシを使ってインスタンス化したオブジェクトのクラス名になる $1 とか $2 とか、
この番号に何か名前って付いてますか?

436:デフォルトの名無しさん
08/03/14 01:08:15
>431
で、解析して何がしたいんだ?

437:デフォルトの名無しさん
08/03/14 08:33:31
アノテーションの引数にオブジェクトを指定できないのは何でですか?
@Foo(new Bar()) とかしたいんですけど。

438:デフォルトの名無しさん
08/03/14 09:05:14
そういう仕様だから

439:デフォルトの名無しさん
08/03/14 14:10:18
fileクラスのrenameToで成功してもgetNameで名前が変わってないんですがどうしてでしょうか

440:デフォルトの名無しさん
08/03/14 14:15:02
>>439
細かいけど、Fileな

javadocよく読めば分かると思うけど、Fileはimmutableだから

441:デフォルトの名無しさん
08/03/14 14:15:16
>>439
java.io.File はファイルそのものを表現してるんじゃなくてファイル名を表現してるから、
renameTo でファイルそのものの名前が変わっても影響を受けない。

442:デフォルトの名無しさん
08/03/14 14:26:29
>>440
>>441

ありがとうございます。もっと調べてみます。


443:デフォルトの名無しさん
08/03/14 21:29:04
>>410
>>411

そうか。マルチプラットフォームではああいうゲームは無理か。
ところで、JavaのアプリとCのアプリで共有メモリーってさすがに無理だよね。

データをプロセス間で共有する場合、どういうことするんですか?

444:デフォルトの名無しさん
08/03/14 21:35:10
つDB

445:デフォルトの名無しさん
08/03/14 21:59:31
つパイプ

446:デフォルトの名無しさん
08/03/14 22:01:16
つソケット

447:デフォルトの名無しさん
08/03/14 22:06:56
>>443
ファイルを介してファイルマッピングという形でなら、たぶんできるんじゃない?
使い物になるかどうかは微妙かもしれないけど

448:デフォルトの名無しさん
08/03/14 22:18:48
>>443
URLリンク(lab.moyo.biz)

449:デフォルトの名無しさん
08/03/15 09:11:19
プロトコルハンドラって何に使うものなんですか?
よろしくお願いします。

450:デフォルトの名無しさん
08/03/15 09:39:52
URLリンク(www.google.co.jp)

451:デフォルトの名無しさん
08/03/15 09:51:11
JFileChooserで、
・ディレクトリ選択
・でも、普通のファイルも見れる
ようにしたいんですけどどうすればいいですかね?

ディレクトリ選択するようにすると、普通のファイルは見えなくなるし、
普通のファイル見えるようにするとディレクトリ選択できなくなるんですけど

452:デフォルトの名無しさん
08/03/15 09:59:35
ディレクトリ選択でファイルを見せる意味が分からん

453:デフォルトの名無しさん
08/03/15 10:03:46
ファイルが見えるとなんのディレクトリかよくわかるじゃん

454:デフォルトの名無しさん
08/03/15 10:07:05
試して無いけど、approveSelectionメソッドをオーバーライドすればいけるんじゃね?
setFileSelectionModeでFILES_AND_DIRECTORIESを指定してさ。

455:デフォルトの名無しさん
08/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の実行は無理なのでしょうか?
どうか教えて下さい。

456:デフォルトの名無しさん
08/03/15 10:15:05
うん、できた。

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);
 }
}

457:デフォルトの名無しさん
08/03/15 10:57:35
u5ってu4のセキュリティフィックスだよね。
そろそろ入れようと思ってたけどなんか色々問題あるみたいだね。

458:451
08/03/15 11:39:37
>>456
c.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
を一行追加してみても、だめでした。

さらに
public boolean accept(File f){return true;}
を追加してみてもだめでした。

459:デフォルトの名無しさん
08/03/15 11:44:41
ちゃんと>>456の書き込み読んでる?

460:デフォルトの名無しさん
08/03/15 13:37:06
内部クラスの中に内部クラスを作ったりって普通にしますか?
経験も積んでないのですが少し気持ちが悪い気がして質問しました。

461:デフォルトの名無しさん
08/03/15 13:59:26
全くしない訳ではないが普通しない


462:デフォルトの名無しさん
08/03/15 14:00:19
forの中にforを書いたりって普通にしますか?
のようなものかと
2段くらいはすることもあるけど、頻繁には使わない
3段以上は滅多にやらない
人にもよるかも

463:デフォルトの名無しさん
08/03/15 14:05:29
必要があれば使うみたいな
x,y,z,tなんて4次元だしw

464:デフォルトの名無しさん
08/03/15 14:17:38
そうでしたか。やはり熟練者の方の意見は勉強になります。
ありがとうございました。

465:デフォルトの名無しさん
08/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()を削除すれば実行できるのですが・・・。

466:デフォルトの名無しさん
08/03/15 15:38:49
>>465
br.close(); の前の閉じ括弧 '}' が一個多い。
それで br がスコープから外れて「シンボルを解決できない」といわれてる。

467:デフォルトの名無しさん
08/03/15 15:39:21
スコープを勉強しろ

468:デフォルトの名無しさん
08/03/15 15:51:21
{}の組み合わせは力ずくでは良くないがな

469:デフォルトの名無しさん
08/03/15 15:54:06
メモ帳でもつかって無い限りこんな間違いしないと思うんだけどな

470:465
08/03/15 16:20:48
>465の質問者ですが
br.close()の 前の閉じ括弧を’ } ' を取り除いても エラーが出ます。
その閉じ括弧はfor文の閉じ括弧になっています。

閉じ括弧を除いた場合のエラーは
hoge.java:13: 'try' への 'catch' または 'finally' がありません。
hoge.java:27: 'catch' への 'try' がありません。
hoge.java:32: '}' がありません。
です。

471:デフォルトの名無しさん
08/03/15 16:22:21
日本語も読めねーのかよw

472:デフォルトの名無しさん
08/03/15 16:47:25
>>470
br.close(); の前の閉じ括弧を一つ取り除いた後、
br.close(); の後に一つ閉じ括弧つけろ。

473:デフォルトの名無しさん
08/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ファイルは短いので全て載せました。


474:デフォルトの名無しさん
08/03/15 17:48:22
>>473
HTMLに画像を読み込むコードが無いから。

475:デフォルトの名無しさん
08/03/15 17:54:21
>>473
Javaコンソールからエラーの内容確認

476:デフォルトの名無しさん
08/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を作っても同じエラーが出ます。

どなたか解決策を教えてもらえないでしょうか?

477:デフォルトの名無しさん
08/03/15 18:12:29
>>473
たぶんこうだ
new ImageIcon(getClass().getResource("07.gif"))

478:デフォルトの名無しさん
08/03/15 18:34:02
>>476
その上位ディレクトリに x パーミッション付いてるのかよ。

# su tomcatuser -c "cd /usr/share/tomcat5.5-webapps/test/WEB-INF/classes"

479:デフォルトの名無しさん
08/03/15 18:44:13
>>473
そもそも画像はどこ?

480:デフォルトの名無しさん
08/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
08/03/15 19:21:25
465です。
解決しました。
ありがとう。

482:デフォルトの名無しさん
08/03/15 20:22:16
>>476
policyファイルで弾かれてるんじゃない?Debian etchなら、
/etc/tomcat5.5/policy.d/の下に*.policyってファイルがあるから、
それ読んでほげほげしてみるといいかも。

483:デフォルトの名無しさん
08/03/15 20:43:54
476です。
>>477 さんのやり方で解決できました。
みなさん
親切にありがとうございました。


484:デフォルトの名無しさん
08/03/15 21:14:50
>>482
ありがとうございます。
04webappsの
grant codeBase "file:${catalina.home}/bin/tomcat-juli.jar"
の中に
permission java.io.FilePermission "<webアプリのpath>", "read";
を追加したところ、上記のエラーは消えました。

485:デフォルトの名無しさん
08/03/15 21:16:29
04webappsじゃなくて04webapps.policyでした

486:デフォルトの名無しさん
08/03/16 00:58:16
swingに関して質問させてください
JFrameのサイズを指定する際にまわりの枠を気にしないで済む様にInsetsを利用しています。
しかし、JMenuBarを追加すると、その分の幅はInsetsで考慮されていないようです。
JMenuBarの上下方向の幅を取得するにはどうすればよいのでしょうか?

あと、BufferStrategyを使いたいのですが、JPanelでは使えないんでしょうか?
よく、JavaのGUIの勉強をすると、JFrameの上にJPanelを張って、その上にさらに何かを張ってと階層状にするべきと見かけますが、BufferStrategyを使う場合はJFrame上にべた書きすべきでしょうか?

487:デフォルトの名無しさん
08/03/16 02:12:38
>>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コンポーネントを乗せるのは抵抗があるかもしれないけれど。

488:デフォルトの名無しさん
08/03/16 02:32:41
幅の情報は要らないからgetSize().heightでなくgetHeight()で十分だった

489:デフォルトの名無しさん
08/03/16 03:26:29
リアルタイムのゲームを作っているのですが、
数秒ごとにカクカク止まってしまいます。
ガベージコレクションのせいかと思ったのですが、
空きメモリのこぎりグラフとは無関係にカクカクします。
速いマシンだと全く気にならないレベルなのですが、
セレロン600だと耐えられないカクカクです。

どうしたらいいか分かる人いますか?

490:デフォルトの名無しさん
08/03/16 04:21:26
プロファイルを取ってみればいいと思うよ

491:デフォルトの名無しさん
08/03/16 05:10:10
Java のログ機能と Log4j とどっちがいいの?

492:デフォルトの名無しさん
08/03/16 05:22:46
>>491
状況に応じて変わる。
URLリンク(lab.moyo.biz)

493:デフォルトの名無しさん
08/03/16 06:30:51
JRE 単体って入れたことないんだけど 6 で Java DB もバンドルされてる?

494:デフォルトの名無しさん
08/03/16 08:10:33
練習サイトを見て勉強しているのですが
何故メインメソッドをできるだけ小さくして
簡単な作業でも個別にメソッドを作るのかがわかりません

ex)URLリンク(www.u-farm.jp)

495:デフォルトの名無しさん
08/03/16 08:36:08
俺はこの前他人が作ったプログラムをいじる必要があったんだけど
そのプログラムのmainメソッドは1000行以上あって、読むのが大変だった。
そういう悲劇をなくすため。

496:デフォルトの名無しさん
08/03/16 08:40:22
意味のある単位でプログラムを小さな部品に分解していくと、分かりやすいものになる。
こういう意識を普段からもっておいたほうがいいし、
入門用の短いプログラムでも意識するべき。


497:デフォルトの名無しさん
08/03/16 08:52:41
どのくらいのレベルでメソッド化していけばよいのでしょうか
メインメソッドにはメソッド処理以外書かないぜくらいの勢いでしょうか・・・

498:デフォルトの名無しさん
08/03/16 08:55:27
その時代の画面のスクロールで 2 ページが目安。

499:デフォルトの名無しさん
08/03/16 09:31:35
メソッド名が無理なく考えられるような処理(上のリンクの場合だとdrawTriangle)
とかは、常に分けてもいいんじゃないかな。
上手い名前付けができない場合は、コードの長さと相談して分けたり分けなかったり


500:デフォルトの名無しさん
08/03/16 18:18:26
複数のjarファイルからクラスを探してきて欲しい時に
・lib/extにjarファイルを置く
・-classpath引数で一つ一つ指定する
以外の方法はありますか?
javacならば-extdirsでjarの入ったフォルダを指定すれば
そのフォルダの中のすべてのjarを探してくれるのですが
javaにはextdirsのようなオプションがありません

501:500
08/03/16 18:22:42
すいません、自己解決しました
java -Djava.ext.dirsでいけました

502:デフォルトの名無しさん
08/03/16 20:31:24
Javaダウンロードできないんだけど(笑)

503:デフォルトの名無しさん
08/03/16 21:46:48
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){}
あいまいエラー

となる基準がいまいちピンときません。

504:デフォルトの名無しさん
08/03/16 21:54:52
続きです。

なんとなく (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ステップ。下が選ばれるはず。
と思いきやあいまいエラーでした。


505:デフォルトの名無しさん
08/03/16 21:58:36
>>503
> void test(Hoge2 a, Hoge3 b){}
> void test(Hoge a, Hoge3 b){}
Hoge2 a は Hoge a に代入可能。 Hoge3 a は Hoge3 b に代入可能。
以上により、前者の引数は全て後者の引数に代入可能。
なので、前者は後者より特殊なメソッド(specific method)と言われる。
この特殊なメソッドが一つに決まる場合は、
それが最も特殊なメソッド(most specific method)と言われて、それが呼び出される。

> void test(Hoge a, Hoge3 b){}
> void test(Hoge2 a, Hoge2 b){}
みたいに一つに決まらない場合は曖昧となってコンパイルエラーになる。

詳しくはこの辺呼んでくれ。
15.12.2.5 Choosing the Most Specific Method
URLリンク(java.sun.com)
15.12.2.2 最も特殊なメソッドの選択
URLリンク(www.y-adagio.com)

506:デフォルトの名無しさん
08/03/16 21:59:16
>503
条件も何も曖昧だから曖昧なんだよ
A’がAを継承しているならば、A’はAともA’とも解釈できるって理解していればそんなオーバーライドは普通書かない

507:デフォルトの名無しさん
08/03/16 22:12:16
ジェネリックスと否ジェネリックスでObject型かぶらせちゃうのはたまにやるな。
実行時型情報ないからなぁjavaのジェネリックスは。

508:デフォルトの名無しさん
08/03/16 22:26:34
>>505
とても分かりやすい説明と、良い文献をありがとうございます。
熟読させてもらいます

インターフェースも絡めて色んなパターンを試していたのですが、
「あるメソッドの全ての引数が、他の同名メソッドの引数に代入可能な場合、あるメソッドはより特殊と判断する」
という1文ですっきり解決して魔法のようでした。

509:デフォルトの名無しさん
08/03/16 23:16:37
508です。
一応情報です。

>>505の日本語版のほう、和訳が間違ってますね。
英語の方読んだほうがいいです

510:デフォルトの名無しさん
08/03/16 23:28:59
>>509
和訳のは第2版で英語のは第3版だからその違いじゃなくて?

511:デフォルトの名無しさん
08/03/16 23:43:59
いや、完全に文章がおかしかったです

「もしすべての最大限に特殊なメソッドが同じシグネチャをもたないならば」
と和訳されていますが、英文では
「If all the maximally specific methods have override-equivalent signatures, then」
とあるので「~~をもつならば」が正しいかと思われます


512:デフォルトの名無しさん
08/03/16 23:59:03
>>511
うわ、ほんとだ。

513:デフォルトの名無しさん
08/03/17 08:28:19
specific を特殊と訳した奴のセンスを疑う。

514:デフォルトの名無しさん
08/03/17 08:39:14
>15.12.2.5 Choosing the Most Specific Method
「もっとも明確なメソッドの選択」だな。

515:デフォルトの名無しさん
08/03/17 08:51:28
> 「もっとも明確なメソッドの選択」だな。
そのセンスもどーかと思うが

516:デフォルトの名無しさん
08/03/17 10:53:19
批判だけではなく対案を

517:デフォルトの名無しさん
08/03/17 11:02:19
メソッドの選択でいいんじゃ?

518:デフォルトの名無しさん
08/03/17 11:03:40
>>516
俺は「特殊なメソッド」でいいと思うが。
長ったらしくてもいいなら語を補って「実引数型に特化したメソッド」とか。

519:デフォルトの名無しさん
08/03/17 11:11:06
実引数型だけだと実行時の型と勘違いされる可能性もあるから
より正確には「実引数のコンパイル時の型に特化したメソッド」とか?

520:デフォルトの名無しさん
08/03/17 11:33:16
議論の最中にすみません。
Preferencesについての質問です。
Preferences#userNodeForPackage(Class<?> c) で取得したノードは、その名の通りパッケージのノードですが実際プロパティを保存したい場合どのようにすべきなのでしょうか?

私のイメージとしては、そのノードにあるクラスのプロパティを直接putInt(String,int)とするのは後々パッケージ内での重複の危険や、そもそも意味的な意味の違いで使いたくはありません。
よって、上で取得したノードにさらに
prefs(←パッケージのノード).node("クラス名").node("インスタンス名").putInt(String,int);
のようにするのがプロパティ的で良い気がしますがこちらは何かと面倒です。

特に何も気にせずパッケージノードにputするものなのでしょうか?

521:デフォルトの名無しさん
08/03/17 11:53:06
そもそも、どのように使いたいかじゃねーの?

522:デフォルトの名無しさん
08/03/17 13:46:52
インスタンスごとに設定項目作りまくりという糞設計なのか
データベース使え

523:デフォルトの名無しさん
08/03/17 14:46:18
すみません。
ここに来てる時点で分かってくださるとは思いましたが、私は初心者で設計なんてまだまだこれからの段階なんです。

しかしインスタンスごとに設定項目変えている訳ではありません。
例えばjavax.swingパッケージを見てみると、その中に存在するクラスだけでもx,yというプロパティはかなりの数あるでしょう。
ですから必然的にその下のノードが必要になるのではないか、と疑問に思ったのです。

単純に一般的にどうされているのかと気になったので聞いてみたのですがここに来るのすら早かったようですね。
すみませんでした。

524:デフォルトの名無しさん
08/03/17 15:04:02
>523
そんなAPIを使う前にクラスとインスタンスの関係を勉強したほうがいい

525:デフォルトの名無しさん
08/03/17 16:37:46
preferenceに、インスタンスごとの値を記録したい場合というと、
例えばマルチタブエディタで個別のタブごとの設定値
(ファイル名とかカーソル位置とか)を記録したいとか?
まあ、そういう用途ならそれでいいんじゃね?

526:デフォルトの名無しさん
08/03/17 17:27:48
MDIのセクションの復元とか

527:デフォルトの名無しさん
08/03/17 17:40:59
どちらにせよ初心者には縁の無い話かと

528:デフォルトの名無しさん
08/03/17 17:57:47
javaだとMDIはSwingにあるしセクション保存なんて情報を外に追い出せばとりあえず出来るから初心者でもやるんじゃない?
SwingAppFrameworkは始めからセクションのストア・リストアに対応してるし。

529:デフォルトの名無しさん
08/03/17 18:29:31
それは既に初心者ではない件

530:デフォルトの名無しさん
08/03/17 18:32:45
その程度は初心者の域

531:デフォルトの名無しさん
08/03/17 18:51:03
フレームの位置と大きさが画面から外れてないかどうかってどう確認すれば良い?
GraphicEnvironment とか言うのを使うの?

532:デフォルトの名無しさん
08/03/17 19:40:23
JavaってCのインラインアセンブラみたいなのはないですよね?

533:デフォルトの名無しさん
08/03/17 19:46:16
naiyo

534:デフォルトの名無しさん
08/03/17 19:48:49
aruyo

535:デフォルトの名無しさん
08/03/17 20:59:00
アセンブラを扱うライブラリがあったはず

536:デフォルトの名無しさん
08/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側の設定でどうにかなる方法などあるでしょうか?
上記以外の手段についてもあればお願いします。

以上、ご教授いただきたく思います。






537:デフォルトの名無しさん
08/03/17 22:18:52
apache httpd 2.3って、trunkからビルドしてんのかよ。人柱乙。

監視対象のjavaプログラムに手を入れられるなら、
そっち側で必要な情報をファイルかDBに記録すればいいんじゃね?

538:デフォルトの名無しさん
08/03/17 22:50:15
>>536
> RMIの紹介サイトはどこもクライアント側からのトリガーでサーバーへ返すものしかなく、
> 逆の場合も使えるのか確証が持てません。

昔似たような処理をやったことがあるけどサーバーのトリガーをクライアントからスレッドで監視してやれば
できたような…ただトリガーの発生が不定期だったりするので同期取らせたりいろいろうざいことしなけりゃ
ならんかった


539:デフォルトの名無しさん
08/03/18 03:30:57
1 側で RMI がサービスしてりゃいいじゃん。
レジスロリは Tomcat で。

540:デフォルトの名無しさん
08/03/18 09:18:39
core なんてウンコみたいなもんだろ。
詳細に分析すりゃ症状は分かるかも知れないが、大半はクソの役にもたたねぇ。

541:デフォルトの名無しさん
08/03/18 09:46:21
ウンコさえ分析できないきみはクソの役にも立たねえ

542:デフォルトの名無しさん
08/03/18 09:58:21
core だけで分析できると豪語する神が現れた。

543:デフォルトの名無しさん
08/03/18 15:24:21
手動で serialVersionUID 管理する場合って 1, 2, 3, ... で良いよな。

544:デフォルトの名無しさん
08/03/18 15:27:09
うん

545:デフォルトの名無しさん
08/03/18 17:29:25
Javaのお勉強をしているものです
プログラム用エディタ使ってコマンドプロンプトでシコシコやってました

ところが同一ソフト上でエディットとコンパイルと実行ファイル化までできる
『統合開発環境』なるソフトが無料で出回っているそうじゃないですか
さっそくEclipseとNetBeans?をダウンロードしました
はい、何やってんだか分りません 重くて動きません etc…
ということで 軽くて初心者向けの統合開発環境ありますか?


546:デフォルトの名無しさん
08/03/18 17:31:38
つ プログラム用エディタとコマンドプロンプト

547:デフォルトの名無しさん
08/03/18 17:33:36
Visual J++ 1.0

548:デフォルトの名無しさん
08/03/18 17:34:10
eclipseとかnetbeansとかが動かないほど重いPCは捨てて買い換えなさいな
よほどリソースが足りないPCだ、それは

549:デフォルトの名無しさん
08/03/18 17:42:48
visualC#みたいな感じでJAVAで使えるものを探しておりまする

550:デフォルトの名無しさん
08/03/18 17:49:30
Visual J 調べてみるでござる


551:デフォルトの名無しさん
08/03/18 17:53:06
Visual J#2002なるものが見つかったのでダウソしてつかってみまする


552:デフォルトの名無しさん
08/03/18 19:40:57
Eclipseでも2系なら軽いと思うが。

553:デフォルトの名無しさん
08/03/18 20:58:41
C#のBinaryWriterで書き出したデータを
Javaで読み込みデータを取得したいのですが
DataInputStream等を使っても正常に取得できません
何か良い方法ありませんでしょうか?
取得したいのはintの値やutf-8の文字列等です


554:デフォルトの名無しさん
08/03/18 21:22:57
ByteBuffer でゴリゴリやれ。バイトオーダー設定せれ。

555:デフォルトの名無しさん
08/03/18 21:35:47
Swing で矩形以外の Window 出す方法は、裏の画面キャプチャして擬似透明にするしかないかね。

556:553
08/03/18 21:39:40
>>554
あーやっぱゴリゴリですか・・・
頑張ってみます・・・

557:デフォルトの名無しさん
08/03/18 22:42:28
VisualJはすべて有料ですか…



558:デフォルトの名無しさん
08/03/18 23:32:40
Visual J# 2005 Express版は日本語版なくて英語版だけだけど無料だったような。
もっとも J# は厳密には別の言語だからスレ違いっぽ。

559:デフォルトの名無しさん
08/03/19 01:13:01
半月前ほどからJavaの勉強をはじめました。
会社で次にデータベースの勉強をしろと言われたのでJavaを勉強しつつ
データベースの勉強をするのにオススメの書籍を教えていただけませんか?
Javaは何冊か入門書をもっているのですが、データベースはさっぱりです。別々に分けたほうがよければ、データベース専用の書籍でもかまいませんのでお願いします。

560:デフォルトの名無しさん
08/03/19 01:52:02
Servletの本ならだいたいどの本でもDBとの接続の話は出てる。
Servletじゃなくても大体同じノリで使える。

561:デフォルトの名無しさん
08/03/19 01:53:20
とりあえず、適当な本でいいからSQL自体に慣れろ。
慣れたら、
URLリンク(www.geocities.jp)
ここ読んでぶちのめされろ。

あとは、上のサイトで紹介されてる本を片っ端から読んで理解しろ。
そうすれば立派なDBエンジニアになれるよ。

562:デフォルトの名無しさん
08/03/19 09:15:56
JPlaneをeclipseでextendsしたら
シリアルが何とかとか出て意味が解りません。
おしえてください。

563:デフォルトの名無しさん
08/03/19 09:22:15
1. 黄色い波下線が出ているところにキャレットを置いて [CTRL]+[1] を押す
2. add generated serial version ID
3. (゚Д゚)ウマー

564:デフォルトの名無しさん
08/03/19 15:39:13
■環境
JDK5.0

質問です。
大学の課題で,3月中にJavaでチャット(とにかく動けば良いからCUIで作成しても良い)を作ってこいと言われました。
Javaは全く学んでいないので、現在は「10日でおぼえるJava入門教室」という本をやっています。(8割方終わってます)

そろそろチャットプログラムを作ってみようと思っているのですが、
この本はネットワークプログラムについて全く載っていないので、何から手をつければ良いかわかりません。

そこで質問なのですが、チャットプログラム作成を前提に次の本を買うとしたらどの本がオススメでしょうか?
また、本以外にチャット作成を一から学べるHPがありましたら教えてください。よろしくお願いします。

565:デフォルトの名無しさん
08/03/19 15:51:41
一生本読んでろ

566:デフォルトの名無しさん
08/03/19 15:59:44
チャット作ってもチャットする相手いないし・・・・・

567:デフォルトの名無しさん
08/03/19 16:02:36
自分の作ったプログラムなら自分とチャットするだけでも十分楽しいと思うから大丈夫

568:デフォルトの名無しさん
08/03/19 16:13:17
今まさにチャットを作ってる。チャットというより非同期イベント配信プロトコルを
考えてるといった方が正しいかもしれないが。

>>565
Socket, ServerSocket クラスの API リファレンスを読め。

569:デフォルトの名無しさん
08/03/19 16:14:19
>>564
チャットが前提ではないけど、ネットワークの基礎なら
URLリンク(www5c.biglobe.ne.jp)

570:デフォルトの名無しさん
08/03/19 16:21:02
undecoreted な JFrame や JDialog じゃなくて JWindow が必要なときってどういうケース?

571:デフォルトの名無しさん
08/03/19 16:29:58
>>564
あと10日しかないと無理だけど、もっと余裕のある場合を想定すると、とりあえずセッションを勉強したらどうか?
HTTPで404とか503とか表示されるアレだ。Proxomitronを導入してLog Windowを表示してみればいい。
チャット自体はinとout直結でhttp使わなくても通信出来るけど(Javaならsocket,serverSocket?)。

HTTPはRFC2068、RFC2616あたりが詳しい(JavaならhttpURLConnection、URLConnection?)。

572:デフォルトの名無しさん
08/03/19 16:37:49
チャットと言っているのに通信方向性もステート管理もまるで違う HTTP を薦めるヤツはバカなのか。

573:デフォルトの名無しさん
08/03/19 16:45:17
>>572
電気通信の方向とは何?

574:デフォルトの名無しさん
08/03/19 17:07:24
>>573
お前はまず、理解していない点をまとめてから書け。

575:デフォルトの名無しさん
08/03/19 17:07:56
バカと書かれて憤慨した>>571 です。大学はチャットをHTTPで作ると減点する恐ろしい場所なのですか。serverも知らないと書いてるからなるべく親切に説明しようとした俺はかなり情けないです。

576:デフォルトの名無しさん
08/03/19 17:10:02
>>574
通信方向性って、通信の設計の指針じゃないですか。一見でわかりませんでした。

577:デフォルトの名無しさん
08/03/19 17:12:19
>564
Java TCP/IP で調べれば結構な数の参考書あるぜ
大抵はサンプルとしてチャットプログラムがあるから、サンプルありで薄い本を探せば1週間でもなんとかOK

578:デフォルトの名無しさん
08/03/19 17:20:52
通信頻度が高いからHTTPは向かないのですね。すみませんでした。

579:デフォルトの名無しさん
08/03/19 17:25:17
IPメッセンジャーを改造して提出する生徒続出の予感。

580:デフォルトの名無しさん
08/03/19 17:28:09
IPメッセンジャーナツカシス 雑談が多すぎるって理由で出向先で使用禁止になったよ。

581:デフォルトの名無しさん
08/03/19 17:32:18
協力会社の愚痴を間違えてその協力会社の人に送ってしまった某外資 SIer が居て
使用禁止になったプロジェクトなら知ってる。

582:デフォルトの名無しさん
08/03/19 17:44:27
通信頻度じゃなくチャットは双方向メッセージが基本だからトランザクション指向の HTTP とは全く違う。
自動リロード (ポーリング) でごまかすタダの掲示板がまともなチャットとでも思ってるのか。

583:デフォルトの名無しさん
08/03/19 17:54:57
つComet

584:デフォルトの名無しさん
08/03/19 17:57:53
とにかく動けば良いってことらしいからまともなチャットでなくてもとにかく動けばいいんでない

585:デフォルトの名無しさん
08/03/19 18:01:48
>>582
Comet はそのポーリングをフレームワーク化しただけだっつーの。
キーワードだけ覚えて披露するなよ。

586:デフォルトの名無しさん
08/03/19 18:11:38
>>585
じゃ、IRCは?

587:デフォルトの名無しさん
08/03/19 18:14:01
プロトコルがそもそも HTTP と違うだろ。
その区別からできてないのかよ。

588:デフォルトの名無しさん
08/03/19 18:14:08
Cometはポーリングじゃない。
ポーリング無しでサーバ→クライアント方向の通信を実現する方法。
クライアントから見ると、一度送ったHTTPリクエストに対するレスポンスが
いつまでたっても終わらず、
たまに思い出したように部分的なレスポンスが返ってくるので、
それをその都度処理する、って形になる。

が、このレベルの課題でCometなんぞ持ち出したら、余計面倒になる罠。

589:デフォルトの名無しさん
08/03/19 18:22:36
だからポーリングにタイムアウト的なキュー待ちの毛生やしただけじゃん。

590:デフォルトの名無しさん
08/03/19 18:27:21
Comet ではないが Ajax 使った Comet 型 Web チャット
URLリンク(anjya.koiroha.org)

591:デフォルトの名無しさん
08/03/19 19:19:43
宿題スレと間違えてコード書いちゃったから良かったらどうぞ。
ただし、自分も初心者なためツッコミどころがあったら教えてく欲しいです。
URLリンク(rg550.hp.infoseek.co.jp)

592:デフォルトの名無しさん
08/03/19 20:53:03
>>591
とりあえず、UIスレッドとそれ以外のワーカスレッドについてと
その連携・スレッドセーフ性に関して再考した方がよいかと

593:デフォルトの名無しさん
08/03/19 23:12:09
evalみたいなことできませんか?

int i=3;
String s = "現在i時です。";
String msg = System.eval(s);
System.out.println(msg);

594:デフォルトの名無しさん
08/03/19 23:15:46
javax.tools.Compilerというのがあるが、ここで質問するレベルでは難しいだろう。

Javaじゃなくていいなら
javax.script.*
経由で対応言語つかっとけ。



595:デフォルトの名無しさん
08/03/19 23:16:35
String msg = String.format("現在%d時です。", 3);

596:デフォルトの名無しさん
08/03/19 23:27:58
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;
}


597:デフォルトの名無しさん
08/03/19 23:35:32
>>596
1/20 => 0
以上。

598:デフォルトの名無しさん
08/03/19 23:38:56
描画部分のループはどうなってんの?
というか素直にdrawArcでいいんじゃない?

599:デフォルトの名無しさん
08/03/19 23:40:03
リロードしてなかったぜ

600:596
08/03/19 23:41:24
ども 助かりました

601:デフォルトの名無しさん
08/03/20 20:51:10
ネットワークから受信する XML を SAX で解析する場合って、例えば属性値として
数 GB の文字列を投げられたら OutOfMemory が出るまで分からないよね。
10MB 送って無応答、10MB 送って無応答、、、という接続をいっぱい作られたら
どっかでサーバのメモリが逼迫状態のままになるという攻撃になるんだよね。

602:デフォルトの名無しさん
08/03/20 21:38:07
Appletでウィンドウのサイズをかえるごとにウィンドウのサイズを受け取りたいんですけど
どうしたらいいんですか?
ダブルバッファでcreateImageの引数を変えたいんですが・・・

603:デフォルトの名無しさん
08/03/20 21:44:07
ComponentListener
または描画のたびにアプレットのサイズ確認して変わってたらバッファ作り直し。

604:デフォルトの名無しさん
08/03/20 21:52:07
>>603
ありがとうございます
参考にさせていただきます

605:デフォルトの名無しさん
08/03/20 22:24:55
何度もすいませんw
↓これじゃだめなんでしょうか?なんか最初のサイズの範囲にしか描画されないんですけどorz
public void componentResized(ComponentEvent e){
d = getSize();
buffer = createImage(d.width,d.height);
repaint();
}

606:デフォルトの名無しさん
08/03/20 23:41:23
JTableを印刷するにはどうすればいいでしょうか?

607:デフォルトの名無しさん
08/03/20 23:44:00
スマートな方法は知らんけど Robot 使って該当領域スクリーンキャプチャすればできることはできるんじゃねか。

608:デフォルトの名無しさん
08/03/21 00:12:50
>>605
正直、私では分かりません。が、
リスナーの追加、paint 内での buffer の使用状況確認などなど

はじめてやる時は、面倒でも一つ一つ丁寧に、
想定したことが起きているか確認しながら進むこと

609:デフォルトの名無しさん
08/03/21 00:51:53
>>606
JTable#getPrintable()
PrinterJob#setPrintable()
PrintRequestAttributeSet#add()
PrinterJob#printDialog()
PrinterJob#print()

このへんのメソッド組み合わせて肉付けしていけばできる(はず)

610:デフォルトの名無しさん
08/03/21 01:30:16
POI(HSSF)で大量のデータ(10万件のレコード)をExcelファイル出力しようとした場合に
OutOfMemoryErrorの発生を回避するには
複数のファイルに分割して出力する以外に方法はないんでしょうか?

611:デフォルトの名無しさん
08/03/21 01:30:18
済みません、できませんでした。
メソッドの使い方がさっぱりわからなくて・・・。
class pbtActionListener implements ActionListener
{
public void actionPerformed(ActionEvent i)
{
}
}
この中にテーブルを印刷する機能を入れるにはどうすればいいでしょうか
本来なら時間を掛けて勉強するべきでしょうが
時間がないのもう少し詳しく教えてください。お願いします。



612:デフォルトの名無しさん
08/03/21 01:33:02
>>610
今時の Excel は XML で読めるんだから XML で出せば?

613:デフォルトの名無しさん
08/03/21 04:46:13
>>611
時間がないならcsvでファイルに吐いてExcelで印刷しろ

614:デフォルトの名無しさん
08/03/21 07:01:24
ほれ
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();
}

宿題スレかここは…

615:デフォルトの名無しさん
08/03/21 08:32:53
>>610
Excelで扱える行数の最大は、65536まで。
POI使おうがCOM使おうがどのみち無理。

616:デフォルトの名無しさん
08/03/21 09:12:20
Excel2007

617:デフォルトの名無しさん
08/03/21 09:22:55
>>612
なるほど、XMLは考慮していませんでした
調べてみます

>>613
CSVも、やはり複数ファイルに分割しないとデータを扱いきれないので・・・

>>615
HSSFであれば1ファイルに複数シートを含めたExcel形式で出力できるので、
HSSFで何とかできないかと思いまして

ありがとうございました

618:デフォルトの名無しさん
08/03/21 09:31:26
10万件のレコードが出力されたExcelファイルを誰がどんな目的で使うのかが不思議。

619:デフォルトの名無しさん
08/03/21 10:05:18
業務から伝票データ集計を流してもらって、まとめて経営戦略用の資料とかにするとかかな。
あとアンケートデータの集計なんてのもあるしね。
それらの資料を元に今後の会社の行く末を。。。なわけだw

620:デフォルトの名無しさん
08/03/21 11:47:40
開けないのにどうやって使うのって話では?
開けたとしても人間には解析できないけどなw

621:デフォルトの名無しさん
08/03/21 12:03:36
取り込み形式が Excel のシステムにつなげるとか。
あと Excel にさえしてくればあとは中の人間が VBA で何とでもするからという所も多い。

622:デフォルトの名無しさん
08/03/21 13:25:58
>>614
ありがとうございます。おかげでなんとかなりました。

623:デフォルトの名無しさん
08/03/22 02:54:05
複数シートに分ければ出来るよ
HSSFSheetのドキュメント参照

624:デフォルトの名無しさん
08/03/22 12:18:28
【提携/JAVA】マイクロソフト、Javaを使ったWindowsアプリ開発でEclipse財団と協力へ[03/21]
スレリンク(bizplus板)

625:デフォルトの名無しさん
08/03/22 12:36:40
特定のインタフェースを実装しているものを、動的に一覧する手段はあるでしょうか?
もちろん、クラスローダにローディングされているもので構いません。
Eclipse の検索で実装が探せますが、あれはソースを解析しているのでしょうか。

626:デフォルトの名無しさん
08/03/22 13:30:25
インターフェイスについて参照して、
実装について参照してはいけないと本に書いてありました。
なぜですか?

627:デフォルトの名無しさん
08/03/22 13:38:41
>>626
後から実装を取り替えたくなったときに、参照している側まで修正しなければならなくなるから。

628:デフォルトの名無しさん
08/03/22 14:57:37
>>455 のおかげで行きつけのイラストロジックが起動できた。
ありがとう >>455

629:デフォルトの名無しさん
08/03/22 15:21:30
>>626-627
>>625 の答えとしてであれば、その点は了解しています(いるつもりです...)

行いたいことは、例えばあるコンバートを掛ける時に、公開インタフェースに
従って実装したユーザ任意の処理を、なるべく簡易な方法で追加させたいのです。
例になってしまいますが

標準語 ------> 関西弁 ------> 翻訳結果

と言った変換をするアプリケーションにおいて、公開インタフェースとして
  String translate(String sentence)
を公開し、これをユーザが実装すれば(例えば博多弁を追加)

標準語 ------> 関西弁 -------> 関西弁 + 博多弁 ------> 翻訳結果

といったことを可能にしたい、と言った感じです。

この追加した処理のデプロイ方法として、「公開インタフェースを実装したクラ
スを含む jar を ** に置くだけで OK」といった様に行わせたいために、>>625
のような要望となった次第です。FQCN さえ貰えれば済む話ではありますが、で
きれば簡易化させたいといった状況です。

630:デフォルトの名無しさん
08/03/22 15:31:29
私も、1.6.0_05 アップデータをアンインストールして、
WinXP + Firefox3b4 + JRE1.6.0_03 で動いたよ。ありがとう 455。

>>629
// 其の二つはそれらで完結するレスかと。
プラグインなら、ファイル検索+カスタムクラスローダーで
できるかも…やったことないから適当ですが。

631:デフォルトの名無しさん
08/03/22 15:32:28
日本語-->英語+フランス語-->翻訳結果っっっw

632:デフォルトの名無しさん
08/03/22 15:43:47
PrivateKey や PublicKey ってシリアライズして保存しておけばいいの?
getEncoded() で何やらバイナリが取れるみたいだけど、これが何なのか分からん orz

633:デフォルトの名無しさん
08/03/22 18:01:22
>>585>>589
> キーワードだけ覚えて披露する
それは>>582自身だ。
ポーリングを実装する必要を無くす仕組みではなく、
ポーリングをしなくて良い仕組みでしょ。

あるいは、ポーリングの意味ちゃんとわかってないんじゃない?
Comet使った場合定期的に問い合わせなんかしないでしょ?

634:デフォルトの名無しさん
08/03/22 18:05:37
キューにイベント入ってこなければ定期的な問い合わせになるが。
Comet の仕組み分かってないのか。

635:デフォルトの名無しさん
08/03/22 18:08:53
>>536
> RMIの紹介サイトはどこもクライアント側からのトリガーでサーバーへ返すものしかなく、
> 逆の場合も使えるのか確証が持てません。

WebサービスとRMIサービスは別なので、それぞれサーバの役割を持つプロセスは異なります。
その例だと
Webサーバプロセス = RMIクライアント
Webクライアントプロセス = RMIサーバ
なので、「(RMI)クライアント側からのトリガーで(RMI)サーバーへ返す」
と読み替えれば別にその紹介サイトの説明で問題はないでしょう。



636:デフォルトの名無しさん
08/03/22 18:10:17
定期的な問い合わせではないな、定期的な再接続。
ポーリングはキューの確認終わったらすぐにリターンするが、それを一定の待機時間を維持するようにしただけ。
それをポーリングの揚げ足取りましたよ、と言いたいだけ?

637:デフォルトの名無しさん
08/03/22 18:10:20
>>634
で、その定期的な問い合わせは
Cometフレームワークとやらが実現してるって言ってるの?

638:デフォルトの名無しさん
08/03/22 18:11:06
>>632
保存したいのならお好きなように。getEncoded()のものを保存しておけ
ば、Java以外のプラットフォームでも読めるかもしれない。


639:デフォルトの名無しさん
08/03/22 18:22:35
>>637
おまえ、ブラウザの裏で Comet が独自の通信プロトコルでも使ってイベントやり取りしてると思ってるなら
HTTP のお勉強からやり直したほうがいいぞ。

640:デフォルトの名無しさん
08/03/22 20:10:16
>>629
使ったことないけど、これなんかどう?
URLリンク(java.sun.com)

641:デフォルトの名無しさん
08/03/22 20:14:39
>>629
jarをZipInputStreamに食わせて.classファイルの一覧を出させて、
URLClassLoaderで見つかったクラスを全部ロードさせてみて、
希望のインタフェイスを実装してるかひとつずつ調べる
という力技もないこともない

642:デフォルトの名無しさん
08/03/22 20:22:40
URL.getContent();
を使ってコンテンツをダウンロードすると

コンテンツが
「あなたがお使いのブラウザは、Cookieをブロックする設定になっています。」
となっちゃう サイトに対して、

プログラム側がCookieを「受け入れ」て、
アクセスできるようにするには具体的にどうするんでしょうか?


HttpURLConnection が自動的にCookie受け入れ処理をやってくれるとかいうのですが....

HttpURLConnection.openConnection();
HttpURLConnection.getInputStream() ;
とかやっても URL.getContent(); の時と変わりません。




643:デフォルトの名無しさん
08/03/22 20:32:08
>>642
java.net.CookieHandlerとかjava.net.CookieManagerあたりを使うんじゃないかなたぶん

644:デフォルトの名無しさん
08/03/22 20:33:25
エスパーするとそのリクエストを出す前にどこかから Cookie の発行を受けていなければならない。
ブラウザで正常に動かしたのと同じ URL の順序で getContent() してみれ。

645:デフォルトの名無しさん
08/03/22 20:44:36
IPアドレスの正規表現ってどうしたらいい
"[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}$"
これだと、300.192.144.109のようなIPアドレスもマッチしてしまう

646:デフォルトの名無しさん
08/03/22 21:08:08
Cookieの処理を実装する。Cookieを保持するクラスはあるからさ。

647:デフォルトの名無しさん
08/03/22 21:24:00
うぉ。Cookieはリクエストプロパティにベタに書き込んでたわ。
HttpURLConnection.setRequestProperty("Cookie", "なんたら");

648:デフォルトの名無しさん
08/03/22 21:33:18
>>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()
に食わせて例外を捕まえるという方法も。


649:デフォルトの名無しさん
08/03/22 21:40:34
"((([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
08/03/22 21:42:54
失敗2番目と4番目の{1,2}は要らない。

651:649
08/03/22 21:47:00
一桁が無かった。

652:デフォルトの名無しさん
08/03/22 21:56:12
コードを少しずつ改変して行くに当たって、
それぞれにバージョンを付けて残しておこうと思ったら、
プロジェクトごとコピーして残しておけばいいんですか?
もっといい方法があるんですか?

Eclipseを使っています。コードを書くのは自分一人です。

653:649
08/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]))"

654:デフォルトの名無しさん
08/03/22 22:03:06
それ 299 が通る。
25[0-5]|2[0-4]\d|1\d\d|[1-9]\d?

655:デフォルトの名無しさん
08/03/22 22:05:24
>>645
正規表現に拘る部分なのか(まぁ何も言うまい

>>652
豪華にいくなら、バージョン管理システム。subversion とか cvs とか
LocalHistory でもそこそこ残ってる(条件は知らない

656:デフォルトの名無しさん
08/03/23 00:38:14
subversionは別に豪華じゃないんじゃない?file://でいけるし。


657:デフォルトの名無しさん
08/03/23 01:10:38
>>655
バージョン管理システムは別に豪華じゃない。
Mercurialとかならサーバのセットアップすら不要。


658:デフォルトの名無しさん
08/03/23 02:01:57
信者くせー

659:デフォルトの名無しさん
08/03/23 05:36:43
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)

660:デフォルトの名無しさん
08/03/23 12:27:26
>>659
違いそうだけど、輸出制限版とかいう話?


661:デフォルトの名無しさん
08/03/23 12:54:20
普通に Sun からダウンロードした奴だけど規制版じゃないよね。
Blowfish も 128bit より上は同じ例外なんだけど。

662:デフォルトの名無しさん
08/03/23 13:01:43
URLリンク(java.sun.com)

やっぱ輸出制限であってるかも。
制限解除したポリシーファイルだけダウンロードできるけど、
そもそも日本はダウンロードOKな国なのか??



次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch