【初心者】Java質問・相談スレッド81【大歓迎】
3
>>1 >内部クラスから外部クラスのローカル変数は使えない。
ふ〜ん、最近のJavaってそうなったんだ。
インナークラス実装当時は、インナークラスから外部クラスの
privateメンバや、無名クラスから外側のメソッドのローカル変数に
アクセスできてた(もちろんread only)んだけど。
逆コンパイルしてみると、外部クラス側にprivateメンバへの
アクセサが作られたり、無名クラスのメンバ変数にローカル変数を
コピーしたりしてた。
>3 >1はもはやコピペでっせ。
5 :
デフォルトの名無しさん :2006/02/11(土) 19:58:42
>>3 たぶん匿名クラスや局所クラスから外側のローカル変数は(final つかないと)使えない
って書きたかったんだと思われ。
>>5 有名無実(ちょっとちがうか)
指し示す言葉に説明が必要な文を
>>1 に書くのは無理があるのかなぁ
# 解釈が何通りもあるんじゃ、混乱を生むだけ
てゆうか、上二つは分かるが 「内部クラスから〜」 は 1 に載せるほどでもないんと違うか。
よく、mainの中でこんな書き方する奴がいるけど public static void main( String[] args ) { try{ // ファイル操作 }catch( IOException ex ){ System.out.println( ex.toString() ) } } こう書くべきだよな。 public static void main( String[] args ) throws Exception { // ファイル操作 }
なにそのべき
あほにはかまうな
12 :
デフォルトの名無しさん :2006/02/11(土) 21:02:25
ArrayListまたはLinkedListの中に入れたあるInteger型の値をインクリメントするには それを一旦消してから、インクリメントした後の値を元のindexに挿入するしかないのでしょうか?
set すれば上書きされる。 list.set(i, new Integer(((Integer)list.get(i)).intValue() + 1));
>>13 あー、それがありましたね。ありがとうございました。
>>12 5.0 以降なら、java.util.concurrent.atomic.AtomicInteger がある。
Integer の代わりにはならないけれど。
>>8 エラーなら System.out ではなく System.err に書き出すべき。
17 :
デフォルトの名無しさん :2006/02/11(土) 22:01:00
>>15 は釣りではないのかね
コンカレントAPIはわからんやつがつかうものじゃない
前スレの「絶対パス→相対パス」は URI クラスの使用を避けているのは何でかクマ?
URI#relative(URI) か。
21 :
15 :2006/02/12(日) 01:00:02
>>18 そう言われると、確かに怪しいか。
コンカレントAPI自体は余り触れたくないけれど、
AtomicIntegerはNumberを継承している数値に近いクラスと認識して紹介しました。
int をインクリメントするだけの機能が必要で、Integerの機能が不要なら、
新しくクラスを作ることも、案外軽くてソースも見やすく、良いかもシレン。
setすればいいだけなのにアトミックを使わせるってかなり初心者には敷居が高いと思うけど あれはハードウェアの力を借りて低コストでロック不要な単純なルーチンでのみつかえるわけで
Javaにおけるメモリ確保についてなのですが プログラム内で宣言されている変数や配列、オブジェクトは、 プログラム実行時に必要十分なだけメモリに確保されるのでしょうか? ちょっと苦しいのですが次のようなプログラムがあるとします public static void main(String args[]){ int lpArr[]; lpArr = new int[128]; //1 lpArr = new int[128]; //2 return; } この時//2の行を実行された場合、//1で実行された時に得られたメモリが参照できなくなると同時に 新たな領域へ参照できる事を意味します。 この場合//1で割り当てられたメモリは//2を実行時にシステムから解放されるのでしょうか? それともプログラム終了時に解放されるのでしょうか? すみません
>>21 Number 継承しているのに、immutable じゃないのか。
まあ、どのみちここでコンカレントAPIを挙げるのは酷すぎクマー
>>23 gc相手だから、適当に放置すればいつかそのうち消えるはず
…たぶん
>>23 VM(実行環境)が最も適切だと判断したタイミングで、
回収作業を行うことを勝手にやってくれる。
>>25-26 そうですか・・やはりVMや最適化状況によりけりなのですね
特に配列は慎重に扱う事にします
>>27 逆。
自前で解放しなければならない場合は、うっかりメモリリークしないよう
目を皿のようにして慎重に確認する必要があるが、
GCが勝手にやってくれるので、基本的にどんどん使い捨てればいい。
もちろん、あまりにも大きな配列はメモリを圧迫するだろう。
また、GCが効くのは(当然ながら)どこからの参照も無くなったオブジェクトに対してだけだから、
自前でオブジェクト群を管理している場合は気をつける必要がある。
外部リソースを使用している場合なども、
基本的に自前で生存期間を管理する必要がある。
29 :
デフォルトの名無しさん :2006/02/12(日) 02:05:33
それで?
Javaで同一のワークグループ内のコンピューターのIPアドレスを検索したいのですが 方法がわからりません。どなたか教えてください。よろしくおねがいします。
「ワークグループ」が曖昧なので返答できません。
じゃあ、「LAN上の」で
曖昧なまま
36 :
32 :2006/02/12(日) 08:33:46
すいません・・・・・orz
>>32 Javaプログラムを実行したコンピュータと
同一のWindowsネットワークにおけるワークグループ内に存在する
他のコンピュータのIPアドレスを検索したいのですが、
その方法が全く分かりません。
一行目はこんな感じだろうか。
# あの仕組みの固有名詞が出てこなくて困るのだが…
# これだと、だらだら長すぎだなぁ…
Pure Java でやりたいなら jCIFS とか。 Windowsネットワークが NetBIOS over TCP/IP 使ってないとダメだったような気がするけど。
javaでプログラムの勉強をしています。 手持ちのmp3ファイルのプロパティ(タイトルとかアーティストとか)を 変更するプログラムを作りたいんですが、ファイルの取得方法、 mp3のプロパティの取得方法はどうやるんでしょうか? 検索したときのキーワードも教えていただけるとありがたいです。
41 :
39 :2006/02/12(日) 13:30:26
>>42 おースゲー
Java class MP3
使えば全部解決じゃん。
タグいじるコマンドラインのソフト作りたくなってきた。
だが時間がない!!!
↓ここで神が登場↓
Javaって正式には、どう発音するのでしょうか? ジャバ、ジャワ、アバ、グァバ。 考え出すと夜も眠れません。
47 :
デフォルトの名無しさん :2006/02/12(日) 14:51:04
48 :
デフォルトの名無しさん :2006/02/12(日) 14:53:13
池沼乙 javac Hello.java これがコンパイルで、 java Hello これが実行だ
51 :
デフォルトの名無しさん :2006/02/12(日) 16:51:07
アプレットに関する質問です。 Frameを使わずにHTML上にじかにアプレットを貼った状態で ボタン押下等のイベントで同一HTML上で別のアプレットに遷移させるようなことはできますか? こんな感じ。 sample.html --- <html><body> <applet code="Applet1.class" ></applet> </body></html> --- Applet1のボタンを押すとsample.html上でApplet2.classを表示したい。 サンプルなんかあると最高です。
52 :
デフォルトの名無しさん :2006/02/12(日) 18:53:01
どないしたらいいか分からへん。教えてください。 $java Main Exception in thread "main" java.lang.NoClassDefFoundError: BookShelfIterator at BookShelf.iterator(BookShelf.java:33) at Main.main(Main.java:22)
本が無いと思われ
>>52 BookShelf.java の33行目あたりを調べろ。
失礼、間違えた。 Applet#showDocument() で Applet2 の埋め込んである HTML へ飛ばす。 同一ページ内の Applet 本体の入れ替えは多分無理 (JScript 経由で Applet の CODE 値とか変更出来たっけ?)。やるならアプレット内で CardLayout 等使って 自前で切り替えること。
58 :
52 :2006/02/12(日) 19:27:02
MacOSX&bashでprintenvすると CLASSPATH=. の行があるのでクラスパスは大丈夫だと思うのですが。 ソース貼付けてもいいんですかね。長いんですが。全部で130行くらいっす。
ソースはいらん。関係ない。 カレントディレクトリに BookShelfIterator.class はあるんか?
60 :
52 :2006/02/12(日) 19:43:21
>>59 あるわけないわな。コンパイルしてないもんな。
Main.javaだけコンパイルすればいいと思ってた。
ほんと恥ずかしい。でもなぜか他の〜.javaはMain.javaを
コンパイルしたら自動的にコンパイルされたんだよね。
なんでだろうね。不思議です。
62 :
51 :2006/02/12(日) 20:54:19
>57 ありがとうございます。大変そうですね。 Frameでパタパタ切り替える方が現実的でしょうか。
63 :
デフォルトの名無しさん :2006/02/12(日) 20:57:29
おねげーします。 $java main Exception in thread "main" java.lang.NoClassDefFoundError: main (wrong name: Main) at java.lang.ClassLoader.defineClass0(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:539) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:123) at java.net.URLClassLoader.defineClass(URLClassLoader.java:251) at java.net.URLClassLoader.access$100(URLClassLoader.java:55) at java.net.URLClassLoader$1.run(URLClassLoader.java:194) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:187) at java.lang.ClassLoader.loadClass(ClassLoader.java:289) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:274) at java.lang.ClassLoader.loadClass(ClassLoader.java:235) at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:302)
65 :
デフォルトの名無しさん :2006/02/12(日) 22:02:32
>>63 > java.lang.NoClassDefFoundError: main (wrong name: Main)
>>63 私だったら、wrong name に注目します。
NoClassDefFoundError wrong-name でぐぐる
オプションで site:java.sun.com や -tomcat を付けたり…
# このエラーって、こんなにスタック深かったかなぁ…
67 :
デフォルトの名無しさん :2006/02/12(日) 23:55:18
エラーばっかり。どうしたら良いでしょうか? $javac Main.java Main.java:8: パッケージ framework は存在しません。 import framework.*; ^ Main.java:9: パッケージ idcard は存在しません。 import idcard.*; ^ ./Factory.java:11: シンボルを解決できません。 シンボル: クラス Product 場所 : framework.Factory の クラス public final Product creat(String owner){ ^ ./Factory.java:16: シンボルを解決できません。 シンボル: クラス Product 場所 : framework.Factory の クラス protected abstract Product creatProduct(String owner); ^ ./Factory.java:17: シンボルを解決できません。 シンボル: クラス Product 場所 : framework.Factory の クラス protected abstract void registerProduct(Product product); ^ Main.java:13: Factory にアクセスできません。 クラスファイル ./Factory.java は不正です。 ファイルにクラス Factory が含まれていません。 削除するか、クラスパスの正しいサブディレクトリにあるかを確認してください。 Factory factory = new IDCardFactory(); ^ エラー 6 個
>>67 > ファイルにクラス Factory が含まれていません。
> 削除するか、クラスパスの正しいサブディレクトリにあるかを確認してください。
ちょw親切すぎだろ。
framework とか idcard とか湧け分からんパッケージ使ってるようだが、それらの クラスが入った JAR ファイルをクラスパスに指定してないだけ。 $ javac -cp $CLASSPATH:hoge.jar Main.java ~~~~~~~~
70 :
デフォルトの名無しさん :2006/02/13(月) 00:00:17
>>67 ちょっとはエラー内容みた?
どう見ても、Main.javaのあるフォルダに「framework」とか「idcard」とかいうフォルダ
(=パッケージ)がないし、Factoryクラスなんか存在もしないぞこら、おれにどうしろ
っちゅうんじゃ、と言ってるように見えるが。
71 :
67 :2006/02/13(月) 00:23:33
よく分からないんですけど、自分でパッケージを作ったら 同じパッケージのは同じディレクトリに入れなきゃいけないんですか?
そんなことはない
yes
>>71 思ったとおりやってみると良い。
想像と違っていたら、その方法はどこかが間違っているのだろう
# いくつかの単語が省略されているので、思考を読み取れないのだが…
75 :
67 :2006/02/13(月) 00:50:35
>>71 ,73
どっちだよと
>>74 同じディレクトリにいれたらコンパイルできたけど。
これが正しいのかどうかが分からないんです。
>>71 場所はどこでもいいが、少なくともソースパスが通っている必要がある。
で、パスが通っているフォルダから、パッケージ名に併せたフォルダ階層に
なっている必要がある。
myproject.factory.MyFactory
というクラスなら、コンパイル用ソースがあるフォルダから、
myproject/factory/MyFactory.java
というふうになってないといけない。
77 :
デフォルトの名無しさん :2006/02/13(月) 01:36:02
ちょっとお聞きしたいのですが、 文字列型で表現された数式と、変数の値を入力すれば値が返ってくるようなライブラリはありませんでしょうか? 次の様な形で呼び出したいです。 double func(string exp, int x);
Groovy (Jython とか Rhino とかでも可) でも使っとけ
>>77 アプレットなら JavaScript の数式を評価可能。アプレットから JavaScript を呼ぶ方法参照。
昔 Mozilla に Java 上で JavaScript を動かすライブラリが落ちてたが今どうなってるか知らん。
ちゅか「数式」とかいう曖昧な表現じゃなく、 ちゃんと設計したこと書けよ・・
82 :
77 :2006/02/13(月) 01:52:22
>>81 さん
数式は
整数、実数、()、+、-、*、/、三角関数、累乗、log
が使えるようにと考えてます。
84 :
77 :2006/02/13(月) 02:04:41
>>83 さんどうもです。
でも、どうやって使うかよくわかりません
>>82 数式中の変数部分はどう表すの?
+と-は2項演算子のみなの?
.,lllllllll,,,,,,,,,,,,,,,,,,,,,,, ,iillllllllllii,, ,,,iillllllllii,,, iiiiiiiillllllllllllllllllllllllllllllllllllllll| ゙゙!lllllllllllllir .,,,iilllllllllllllll!゙゙′ .llllllllllllllllllllllllll!!!!!!!!!!!!!!!!!″ ゙゙!!ll!゙",,,iilllllllllllll!!゙゙゜ .゙゙゙゙゙゙”゛ llllllllllliiiiiiii,,,,,,,、 ,,,iillllllllllll!!゙゙゜ ___,,,,, ,,,iiillllllllllllllllllllllllllllllliii,, ,,,,,,,,,iiiiiiilllllllllllllllllllllllllllllllllllllllll .,,illlllllllllllllllllll゙゙゙゙゙゙!!llllllllllllli, .,,,,,iiiiiiiiiiiiiiiiiii,,,、 .llllllllllllllllllllllllllllllllllllllllllllllll!!!!!!l ,illllllllll!゙゙llllllllll| ,illlllllllllllllll, liilllllllllllllllllllllllllllllllli,, lllllllllll!!lllllllllllllll!!゙゙゙”` ,llllllllll゙ .lllllllllll .,,illlllllllllllllllllll、 ゙llllll!!゙゙゙’ ゚゙llllllllll ゙゙”`.,illllllllll!l゙’ : llllllllll° .llllllllllll,illllllllll!゙`lllllllllll .゙゙゜ ,llllllllll! ,llllllllllll° : llllllllll, lllllllllllllllllll!゙゜ ,lllllllllll ,,,illllllllll!゜ .llllllllllllli,_ ,,,,,,,,iiiiiii、 : 'lllllllllllliiilllllllllllllll!!゙’ ,lllllllllll° .,,,,iiillllllllllll!゙゜ ゙!llllllllllllllllliillllllllllllllllllllllll,、 .゙!!lllllllllllllllll!!!゙゙` .l!!llllllll° .゙!lllllll!!!゙° ゙゙!!llllllllllllllllllllllllllllll
87 :
デフォルトの名無しさん :2006/02/13(月) 02:11:03
>>85 さん
変数はxとy、+と-は2項演算子のみです。
>>87 >
>>85 さん
> 変数はxとy
そのわりに
>>77 > double func(string exp, int x);
と、評価時には数式expの他には値は1つだけしか与えていないわけだが
評価結果は部分的に評価を実行した式でいいのか?
それとも変数xとyの両方にint xで渡した値を適用するのか?
はたまたdouble func(string exp, Integer... args);のつもりだっのか?
>>88 追加
なのでもう少し仕様を整理してみたほうがいいと思われ。
expの構文を決めさえすれば自力でparserを書くのも大変じゃないと思う。
>>88 そこを掘り下げても意味ねぇ。興味で聞いてんの?
91 :
77 :2006/02/13(月) 02:30:08
>>88 さん
>>77 の方は正確には
double func(string exp, double x, double y);
です。
変数の数は2つです。
実際に数式を解析して何がしたいかというと、下のサイトの
ttp://codezine.jp/a/article.aspx?aid=116 //関数のメソッド
private double function(double x,double y){
return 50*Math.cos(Math.sqrt(x*x+y*y)/10.0);
}
の部分をテキストボックスなどを用いて、関数を指定したいのです。
質問です。 Stringで表現されたIPアドレスをsplitを使って こんな感じに String "192.168.0.1" → String[] {192,168,0,1} 8ビットづつ抜き出したいのですが、使う正規表現がわかりません。 split(".")でいけると思ったのですが、うまくいきません。 わかる方がいらっしゃったらお願いします。
"\\." ジャマイカ
できました!助かりました!ありがとうございます!
96 :
デフォルトの名無しさん :2006/02/13(月) 04:36:45
最近、GUIの勉強を始めたんですが WindowListenerって何ですか? わけわかめです。
98 :
デフォルトの名無しさん :2006/02/13(月) 06:37:46
前スレでstaticの話になったとき クラスメソッドはインスタンスからは呼べないって 言ってる人がいたけどインスタンスからでも 呼べますよね?例えば インスタンス.クラスメソッド って感じで。 もちろん クラス名.クラスメソッド も可。
呼べます
>>98 > クラスメソッドはインスタンスからは呼べない
そんな妄言、スルーしてたとは…
妄言ってわけでもないか… インスタンスからクラスメソッドを実行することは、混乱と間違った認識を招くので 「出来るけど絶対やら無いこと」であることは確かだから。
スルーしてたっけ? やってはいけないとみんないってたような
1byte 符号無しのテーブルを使いたいのですが、 byte a[] = { 0,231,234,1 }; では符号有のせいかエラーが出ます。 byte a[] = { 0,(byte)231,(byte)234,1 }; キャストすればエラーは出ないのですが、他に良い方法はないでしょうか?
無いよ
timerの一時停止と再開を実現したいんだけど
どうやんのよ
>>107 普通にコーディングしてコンパイル&実行すればいいと思うが・・・?
何聞きたいの?
javaってexeファイル作れないの?
>>109 gcc-javaなんてのがあるけど、重いよ。
なんだ?timerの実装のソースさらせっていってるのか? ぐぐればいくらでもあるだろ。
java timerで検索してくれ
初心者は大歓迎だが それ以前の阿呆は失せろ
117 :
デフォルトの名無しさん :2006/02/13(月) 15:06:32
java.lang.Runtimeで呼び出した外部プロセスが呼び出してコマンド を実行した瞬間に終了してしまうのですが、これを終了させないためには どうすればよいですか?
>>117 質問がわからん。exec が外部プロセスが終了する前に返る事をいってるのか、
外部プロセスの呼び出し方を間違ってて即座に終了してるのか、
そもそも外部プロセスは即座に終了するものを呼び出しているのに、
無理やり終了させないようにしたいのか、とかわからん。
3番目は普通は無いだろうけど、
>>117 の書き方だと、その辺まで考えられるって事。
>118 インタプリタを呼び出すんですが、起動パラメタを渡して呼び出しても 肝心のスクリプトを渡す前にインタプリタが終了してしまうので、 これを終了させないようにしたいのです。 わかりにくくてすいません。
本来入力待ち状態になるものがすぐ終了してしまうなら何かしらのエラーが 発生してるんだろ。起動した Process から InputStream/ErrorStream 取って 取り出したメッセージを確認するのが先では。
121 :
デフォルトの名無しさん :2006/02/13(月) 15:45:30
1.4で、16進数で書式化ってどうやるんですか? Cの printf( "%x", value ) ↑コレ
Streamあけてないのでは
Integer.toHexString(value)
↑ありがd!
>122 InputStream is = process.getInputStream(); BufferedReader br = new BufferedReader(new InputStreamReader(is)); これでしょうか?でもこれだと外部プロセスの出力しかとれません。 入力はどうすればよいのでしょう。
「〜をやりたいんですが」 「やれば」 は基本だな。 質問する方がバカ
即レスに甘えてもいっこ。 printf( "%04x", value ) ↑コレは?
getOutputStream() 出力されてるものは想定の範囲内か?
StringBuffer buffer = new StringBuffer(Integer.toHexString(value)); while(buffer.length() < 0) buffer.insert(0, '0'); String hex = buffer.toString();
ありがd!ありがd!
ループの条件間違えた while(buffer.length() < 4)
>>131 方法教えてくれればOK!参考になったよ!
これ、「Microsoft Windows 環境での」がどこまで修飾してるのか分かり難いな。 原文みるとWin16/DOSプロセスまでみたいなんだけど。
昔の話だが、終了待ちのループ作った覚えがあるなあ。
OutputStream out = process.getOutputStream(); ですか? どのようにしてコマンド文字列を渡せばよいのでしょう。
>>135 Win32 で標準入出力 (Cで言う stdin, stdout、ファイルディスクリプタで言うなら 0 とか 1 とか) 使ってりゃ
たいてい大丈夫。MS-DOS みたいに直接コンソールデバイス叩いてる類のはだめかもしれない。
>>137 OutputStream os = process.getOutputStream();
PrintWriter out = new PrintWriter(os);
out.println("print \"hello, world\");
out.flush();
>>138 なんと親切な・・・
ありがとうございます、本当に助かりました。
ダブルクォートが一個抜けた。 今日は集中力欠いてるな。
JTbaleと自前のTableModelで実行時に行を追加するってどうやるんですか? DefaultTableModelのaddRowみたいなのです。 TableModelのgetRowCount()の中で一つインクリメントしても行が増えないのですが。
行の追加や削除を行ったら TableModelListener に通知してやらないと JTable 側で 変更が分かりません。addTableModelListener() で追加された TableModelListener の tableChanged() を呼んでやれ。AbstractTableModel のサブクラスなら fireTableXXX() でも良い。
>>142 即レスありがとうございます。
やってみます。
144 :
141 :2006/02/13(月) 19:24:56
>>142 さんのやりかたで、TableModelListener の abstruct であるtableChanged(TableModelEvent)をオーバーライドしてやらなきゃいけないようなのですが
これはなにを記述すれば良いのでしょうか?
空だと更新されないみたいなのです。
145 :
141 :2006/02/13(月) 19:31:59
こんな感じでだめでした。 myTableModelListener implements TablemodelListener{ public void tableChanged(TableModelEvent e){/*空*/} } myTableModelListener tl = new myTableModelListener() (myTableモデル).addTableModelListener(tl) tttt.tableChanged(new TableModelEvent(mmm,6,7,TableModelEvent.ALL_COLUMNS,TableModelEvent.DELETE));
146 :
141 :2006/02/13(月) 19:34:23
申し訳ありません。最後の行がすこし間違えてました。 tl.tableChanged(new TableModelEvent(mmm,6,7,TableModelEvent.ALL_COLUMNS,TableModelEvent.INSERT));
>>144 いや違う。TableModel の変更時に TableModel の中から TableModelListener の
tableChanged() を呼んでやれ。AbstractTableModel を extend してるならこんな感じ
// 2行挿入...
fireTableRowInserted(1, 1);
TableModel を直接 implement してるならこんな感じだ。
private List listener = new ArrayList();
public void addTableModelListener(TableModelListener l){
listener.add(l);
}
public void removeTableModelListener(TableModelListener l){
listener.remove(l);
}
public void someMethod(){
// 2行目に挿入...
TableModelEvent e = new TableModelEvent(source, 1, 1, ALL_COLUMNS, INSERT);
for(int i=0; i<listener.size(); i++){
((TableModelListener)listener.get(i)).tableChanged(e);
}
}
148 :
デフォルトの名無しさん :2006/02/13(月) 19:48:09
現在以下の様なプログラムを作成しているのですが、 1回目"モード"が表示された後、'1'を入力すると普通に処理が 実行されるのですがその後なぜか"モード"が3回表示されます。 どなたか原因・解決法が分かる方いらっしゃいますか? public class test { static int mode; public static void main(String args[]) { do { System.out.println("モード"); switch (mode = System.in.read()) { case '1': 処理1 break; case '2': 処理2 break; default: break; } } while (mode != '2');
>>148 '1' の後に改行文字がくっついてくるから。Windows だと CRLF、つまり "1\r\n" の 3 文字が
連続して入力されたのと同じ動きをする。
>>147 サンプルコードありがとうございます。
いま頂いて試してみたところ、まだうまくいかないようですが、これ参考にしてなんとか頑張ってみます。
( ・ω・ ;)
>>150 がんばれ。
TableModel の中から TableModel に add されてる TableModelListener を呼んでやるんだぞ。
自分で作った TableModelListener を add して呼ぶんじゃない。
配列をcsv形式にしてファイルに出力したいんだけど、string配列を要素ごとに分解しないで出力する方法ってありますか? そもそもその方法と、配列を分解して間にコンマを挟むやり方で、どっちが速く出力できるんでしょうか
> string配列を要素ごとに分解しないで出力する方法ってありますか? ない。for で回せ。
>>154 あ、無いんですか・・・
速さ云々の問題じゃないですね
ありがとうございました
156 :
デフォルトの名無しさん :2006/02/13(月) 23:39:10
直列化復元をしようと思ったのですが、JメニューアイテムにAbstractActionを継承したクラスをセットすると復元時にIOExceptionを返してうまくいきません。 ちなみに↓のように問題の箇所をコメントアウトしてやると直列化復元ができました。 import java.awt.event.ActionEvent; import javax.swing.*; public class ThmMarkup extends JMenu { private static final long serialVersionUID = -7741431003723696257L; /* [Markup] * Markup */ public ThmMarkup() { super("Markup"); setMnemonic('M'); JMenuItem tmp1 = new JMenuItem(/*new Ts()*/); tmp1.setText("Markup"); add(tmp1); } } class Ts extends AbstractAction { private static final long serialVersionUID = -7802062679011228602L; public void actionPerformed(ActionEvent e) { } }
157 :
156 :2006/02/13(月) 23:44:14
>>156 すみません..文章が疑問形になってないですね。
156の直列化復元が失敗する理由が分かるかた教えて下さい。おねがいします。
assertって、バイトコードでは特別な命令があるのでしょうか。それとも単に、 if (xxx) { throw new AssertionError(); }相当の普通のバイトコードが挿入されるのでしょうか。
>>159 if (xxx) { throw new AssertionError(); }相当のコードが挿入されます。
163 :
sage :2006/02/14(火) 14:36:07
プログラムAからプログラムBに値を受け渡したいのですが プログラムBで受け取ることができません。 プログラムAから値を送信するところまでは確認できたのですが プログラムBで値を取得する良い方法はないでしょうか?
あげてしまった・・・。
>>163 その文章で問題解決できる人がいると思うのか?
どうやって値をわたしてるの? シリアライズでソケット通信かな? RMIかな? SOAPかな? XMLRPCかな? エスパー募集!
167 :
デフォルトの名無しさん :2006/02/14(火) 14:59:32
ヒント:アクセス修飾子
168 :
163 :2006/02/14(火) 15:08:05
言葉足らず過ぎで申し訳ない・・・ リストボックスのSERECTタグから拾った値を別のプログラムのJavaのプログラムに渡したいのです
・・・どこが笑いどころだ? 俺にはわからん・・・歳食ったなぁ
日本の将来が心配になってきますた。
>>170 大丈夫、ここでたたいておけば
>>163 みたいなやつがプログラマにならずに済む。
彼の日本語からすると、できる人間じゃないので
きっと土方とか交通整理とかそういうことをやって下から我々を支えてくれるよ。
SERECTに禿ワロタ
うちの会社にも似たようなのがいるんですが、どうしたら良いですか?
KUBI
だから、クラス名はカタカナに変換しないで、ちゃんと記述してください。 それから、種別や所属を表す修飾語をもっと使ってください。 # フレームでも Swing のフレームなら、JFrame クラスのことだな、って分かるわけですよ。
KUVIっていいな
>>168 よりむしろその後の一人芝居の笑いどころがわからんのだが
フーン
こりゃまじめにエスパー募集してもらわんと
>>172 の笑いどころてこれだろ
>プログラマにならずにすむ
↓
>土方や交通整理で我々を下から(ry
プログラマも土方も
>>172 も目くそ鼻くそだろうと
現在AWTを勉強しています Componentで利用できる setBackground , setFonメソッドなどと Graphicsで利用できる setColor , setFontメソッドなどの関係が判りません Graphicsクラスは所謂デバイスコンテキストに当るクラスという事なのですが Componentで設定されている背景色やフォントを参考に、このコンテキストにカプセル化されてる 各種プロパティが設定される・・・という感じでしょうか
>>168 もう JavaScript 認定でいいよ。エスパーいらね
# プログラムのプログラムなんて、UTMかっ
>>182 ドキュメントに関係があると記述されて無いなら無関係。
まともな質問できない奴は徹底スルーすれば良い話
InputMap ってなんですか? 例えば、JComponent の getImputMap(); メソッドを実行すると InputMap の戻り値が返って来るんですが、InputMap には何が入っているのでしょうか? API ドキュメントを見るとインスタンスフィールドもスタティックフィールドも無いんですけど、この型は何をしているのでしょう? ついでにマップの概念も分らないんです。
>>184 paint(Graphics g)メソッド中で
setForeground(new Color(0xFF0000));
と前景色を赤255に設定し、g.fillRect(0,0,100,100);などと矩形を描画しますと赤色の矩形が描画されます。
(init()メソッドでsetForeground(0)と一応初期化しました);
ですからGraphicsクラスがComponentクラス乃至そのサブクラスのプロパティを参照してると思うのですが
>>188 君がいってるのは、例えば C言語で(たしか)不定とされている動作
int i = 0; i = i++; printf("%d", i); に関して、特定のコンパイラで 0 と表示されたってレベルの話。
だからといって C言語の仕様で上記は 0 と表示されるべきであるか、ってのとは別の話だって言う事。
>>187 デフォルトの動作を覚えておくもの
たとえばタブ押せばフォーカスがどんどん次のコンポーネントへ移動するでしょ?
ああいうのを実装しているわけだ
だから汎用的に使いたい場合、たとえばリターンキー押したら
次のコンポーネントへ移動するとかが簡単に実装可能
基本的にはすでに作成したコンポーネントからInputMapを取得して
それに対して変更箇所だけ設定するのが普通
>>189 よく理解できません
int i=0;i = i++;printf("%d",i)
についてはちゃんと評価されると思いますが
iがインクリメントされ、その値をiに代入ですから問題ないと思いますが
期待された処理を行わないコンパイラもあるのですか?
それはともかくとして
きっとアレなんで1から勉強しなおしてきます
>>191 違うんだよなあ。数パターン考えられるんよ。
cの話題は荒れるから止めれ
>>188 Graphics の初期値を Component に設定するという程度の認識で良い。
御託並べてるバカは無視。
>>192 同じ C/C++ 使いとしておまえの文調から プンプン 臭う自慢臭が ハズイ から芯でくれ
コンポーネントのプロパティと描画に使うメソッドとまったく違うものだろ どう勘違いするんだ
192 デフォルトの名無しさん sage 2006/02/14(火) 18:46:30
>>191 違うんだよなあ。数パターン考えられるんよ。
「DQN って知らないでしょ? 語源は目撃ドキュンっていう番組で…」 とか嬉々としながら 女の子に説明してる系の痛い人が思い浮かびました。
>>190 さん
ありがとうございます。
getInputMap(); を実行すると、既にあるコンポーネントのデフォルトの動作が入った InputMap が取得できると言う事でしょうか?
馬鹿な事を言うと思うかも知れませんが、InputMapにはフィールドが無いのでどうやって覚えているんだろうって不思議です。
いろいろあるメソッドも、どこにどんな操作をしているのか、、さっぱり分りません。
すみません。
>>199 は、調べ物をする際の典型的なトラップに、はまりかけてるように思える。
# そのうちソースを見ないと安心できなくなりそうだな。
>>191 ++が後ろにあるだろ。式の評価後にインクリメントされるわけだ。
じゃ、代入後のiがインクリメントされるのか、
代入前のiがインクリメントされるのかどっち?
なんだ数パターンって2つじゃん
>201 わざわざ蒸し返さなくていい。
>>200 まさにソーッス。。(寒
どう理解したらいいのでしょう?
と言うか心構えの問題でしょうか?・・・ ツカレマシタ
後置インクリメント演算子 > 代入演算子 お前馬鹿か?
>>206 さん
あまり深く考えないようにします。
本当にありがとうございました。
211 :
141 :2006/02/14(火) 19:48:29
>>152 ありがとうございます。ほぼ
>>147 のコードのママで出来ました。別の部分にうっかりミスが
あり、昨日はうまくいかなかったのでした。
要はaddTableModelListener()の中で(何処からか送られてくる)TableModelListenerを保持しておいて
その登録されたListenerのtableChanged()を呼ぶということですね。
addTableModelListener()をオーバーライドして、この処理を書いてないため、
>>145 のようなやり方では駄目だったということだと思います。
(addTableModelListener()をオーバーライドしない場合は、AbstructTableModelのlistenerListフィールドをどうにかして使うのかな?)
213 :
142 :2006/02/14(火) 19:54:19
あと勘違いで、自分ではTableModelインターフェースを直接実装してるつもりだったのですが、実はAbstructTableModelを継承してました。 つまり、おとなしくfireTableRowInserted()を使えという結論になりました。
おとなしくDefaultTableModelをベースで作ったほうがはやかったりしてな
>>214 そうでした。DefaultTableModelのようなaddRow()が出来ないから質問したのですが、そもそもなんでDefaultTableModel使わなかったんだろうか自分でも思い出せないorz
>>209 だからさー、そんな基本的な薀蓄をいちいち Java のスレ来て高説ぶるの
見てて痛々しいからやめてくんない? Java では定義されてる動作だって
のも知らないの?
質問者置いてけぼりで自慢したい空気が行間からプンプン臭うよw
スルー出来ないのはデフォルト動作です
自分で多言語持ち出しといてバツが悪くなったらスレ違い、はねえわな。
みんな同一人物だとでも思ってるのかな。
それをわざわざ書き込むのは同一人物じゃなかったことにしたい人だけだな。
221 :
156 :2006/02/14(火) 20:21:40
>>220 「同一人物じゃなかったことにしたい人」っていっても、不特定多数なわけだけど具体的に誰のこと?
あと、実際に「じゃなかったことにした」くない人の書き込みがないってどうしてわかるの?
初心者以前の質問はスルーすることにしてますんで
多数の書き込みがあるのにそれらが同一人物であると思っていそうな奴がいれば、面白いから突っ込みたくなる香具師は大勢いるんじゃないの?
所詮年収600万以下のPGしか居ないようなスレだから仕方ない
お前と俺しかいないよ
何か顔真っ赤にしてる方がいらっしゃいますね。
バレンタインに貰ったウィスキーボンボンで酔ってしまった
お子様は今すぐ寝なさい これが最終勧告です
私をあまり怒らせないほうがいい
>>221 ローカルで試そうとしたまま忘れてたがバグ?
次からちゃんとスタックトレースの内容も貼ってくれ。IOException だけじゃわからん。
232 :
156 :2006/02/14(火) 21:00:26
>>231 すみません。本当に初心者なんでデバッグのときにIOExceptionを受け取ったらprintln("IOException")とかやっていたのでIOExceptionなんだとか思ってました。
今日スタックトレースをやってみてMenuItemPropertyChangeListenerに気づきました。
233 :
デフォルトの名無しさん :2006/02/14(火) 21:03:43
種50で去年2000儲けたから働く気なんて失せる罠
会社で齷齪してる奴らは管理職を肥やすためにご苦労様です
>>376 取りあえず木あたりに今年一番の勝負賭けてみる
狙い目はM関連で
ピンポイント誤爆キター
>>233 2chでんなこと書いてて恥ずかしくないの?
236 :
デフォルトの名無しさん :2006/02/14(火) 21:39:05
ハイハイ誤爆しましたよっと
>>235 ハズカチー(笑)
【ピンポイント誤爆】 意味:誤爆に見せかけた別スレッドへの意図的な誤書き込み。主に見栄を張りたい厨房が行う。
よかったな、3匹釣れてるぞ。
【ピンポイント誤爆】 意味:誤爆に見せかけた別スレッドへの意図的な誤書き込み。主に見栄を張りたい厨房が行う。 虚偽をバレナイと思い慣行する痛いアホが往々にしている。
241 :
156 :2006/02/14(火) 21:54:45
ほーら、七匹目がさっそく
8ぴっきめが吠えてますがww
九匹目もきたようです
10って言ったら負けだかんね!
11ぴきめっけ
12匹目GET
14匹めはマダかな〜
じゃあ俺が 15 匹目ってことで良いよ
Ch2スレッド s = ch2.getプログラム板().getJava初心者質問スレ(); int count = 0; while(s.getLength() < 1000) { int tmp = s.getLength(); while(tmp == s.getLength()); if(s.getレス(s.getLength()).is釣られた()) count++; }
whileにバグが隠されてる気がするが
>>252 これはまた随分汎用性に欠けるインタフェイスですね
Ch2スレッド s = ch2.get(プログラム板).get(Java初心者質問スレ); int count = 0; int tmp; while((tmp = s.getLength()) < 1000) { if(s.getレス(tmp).is釣られた()) count++; } これではどうだ
糞レスOverflowError
main() throws 糞レスOverflowError
mainでthrowしても無駄だった。俺は
>>8 に騙されただけだ。
catch(糞レスOverflowError e){
System.out.println("IloveYou");
}
IllegalLoveException
>>255 それだと、is釣れた()でtrueが返ってきたときに、次のレスが付くまで延々とカウントし続ける気がする。
261 :
デフォルトの名無しさん :2006/02/14(火) 23:21:26
質問です。 初めてゲームプログラムを作っています。 ゲームクラスとタイマークラスに分けて作りました。 タイマークラスにスレッドを使い、 ゲームクラスのスタートボタンを押すとタイマーがスタートし、 時間切れになるとゲームが終わるようにしました。 ゲームを再スタートしたいのですが、 タイマークラスが動きません。 スレッドは一度しか動かないのですか?? ご教授お願い致します。
NoSuch彼女Exception
>>261 終了した (run メソッドを抜けた) スレッドのインスタンスは再利用できません。
新しく new してください。
264 :
261 :2006/02/14(火) 23:25:29
266 :
デフォルトの名無しさん :2006/02/14(火) 23:44:41
どうしてもマウスでカチカチするのがイヤで、 eclipse使わずにvim+screen+antでやってるんですが、 これってどうなんでしょうか?
>>261 つーか設計見直すべきじゃね?
ゲーム内の時間管理にスレッドつかうっておかしくないか?
初めてのゲームならそんなにリアルタイムなタイマーじゃなくても良いだろ。
271 :
261 :2006/02/14(火) 23:59:05
>>267 タイマーをスクロールバーと言うか、
バーが少しずつ減っていくようにしたかったので、
スレッドを使って、t.sleep(100)で、バーを描いて
いたのですが。。
それ別スレッドにしなくてもメインループ内で処理してもいいんじゃないの?
どうでも良いことネチネチ引っ張るなカス
Ch2スレッド s = ch2.get("プログラム板").get("Java初心者質問スレ"); int count = 0; while((tmp = s.getLength()) <= 1000) { while(tmp == s.getLength()); if(s.getレス(s.getLength()).is釣られた()) count++; }
>>266 最近始めた自分はcygwin(コマンドプロンプト)+bash+vim
jdk日本語版落としてしまって、文字化けするんでscreenは使えない。
>>266 Eclipseでもショートカットを使って結構マウスなしでがんばれますが、vi派にはつらいかも。
でも、型参照とかリファクタリングとか、特にクィックフィックスが便利です。
私もemacs + JDEE 派でしたがずいぶん前にEclipseに乗り換えました。
ってemacs派の意見は無視ですかそうですか。
詳しい話はEclipseスレに行くといいんじゃないでしょうか。
>>266 「材質は銅じゃないよ」と楽器板風なレスが欲しいのか?
マウスがチカチカするのが嫌ならレーザーやめてボールに戻せ
>>261 色々と考え込む前にCodeZineの「★★★★本格的なシューティングゲームを実現するタスクシステム」を読んで来い
280 :
デフォルトの名無しさん :2006/02/15(水) 01:52:22
>276 eclipse使わないでやってるのって、もう時代錯誤なのかなぁとか 思ったりしてしまい、、、同業他社の人を見ると確実にeclipseなので。 >私もemacs + JDEE 派でしたがずいぶん前にEclipseに乗り換えました。 やっぱ慣れるとすごくイイですか?
>>280 >>276 も言ってるが、コードアシストとクイックフィックスが便利。
これ使わないなら乗り換える意義がないと言ってしまいたいくらい。
>>281 リファクタリングとお手軽ソースフォーマッタも有るよ
入力しながらさりげなくエラー表示してくれるのとか、保存と同時にコンパイルしてくれるのとか。 MS-DOS, C の時からずっとコマンドラインコンパイラ+テキストエディタだったが Eclipse スレ Part1 で試しに使ってみたらハマった。
オブジェクトの配列をプリミティブの配列に変換する方法ってあります? arraylistのtoArrayだとオブジェクトの配列しか手にはいんねっす。 list中に入ってるのはbyteをオートボクシングで入れたByteです。
>>284 っ [設計の見直し]
じゃなきゃ、for文でこつこつやらせてください。
出し入れ箇所が多いならユーティリティクラスでも作ってください。
byte 配列なら ArrayList の代わりに ByteArrayOutputStream に入れるとよい。 toByteArray() で byte 配列になる。
数字を文字列として扱いたいときの質問です 1を000001 11を000011 のように桁数指定(フォーマット指定)で簡単に変換する方法は
288 :
287 :2006/02/15(水) 10:21:14
すいません、書きかけで投稿してしましました。 数字を文字列として扱いたいときの質問です 1を000001 11を000011 のように桁数指定(フォーマット指定)で簡単に変換する方法は ありますか?
291 :
287 :2006/02/15(水) 11:01:25
>>290 情報提供ありがとうございます。使ってみます。
292 :
デフォルトの名無しさん :2006/02/15(水) 14:11:11
293 :
156 :2006/02/15(水) 20:13:56
MenuItemにAbstractActionを継承したクラスをセットすると直列化復元がうまくいかないのはバグだと分かりました.(バグであるという確信はないですが、自分には他に思いつかないです..) しかし、直列化復元をなんとしてでも成功させたいです。 そこで質問があります例えば次のコードのnew Ivent()をコメントアウトせずに直列化復元をさせる方法はないでしょうか?
294 :
156 :2006/02/15(水) 20:15:32
>>293 の続き
package main;
import java.awt.event.ActionEvent;
import java.io.*;
import javax.swing.*;
public class Main {
public static void main(String[] args) {
JFrame f;
try {
File file = new File("save.dat");
if(file.canRead()) {
FileInputStream fin = new FileInputStream(file);
ObjectInput s = new ObjectInputStream(fin);
f = (JFrame)s.readObject();
s.close();
fin.close();
} else {
295 :
156 :2006/02/15(水) 20:16:27
f = new JFrame(); JMenuBar mb = new JMenuBar(); JMenu tmp1 = new JMenu("tpm1"); JMenuItem tmp2 = new JMenuItem(new Ivent());←ここが問題の箇所 tmp2.setText("tmp2"); tmp1.add(tmp2); mb.add(tmp1); f.setTitle("Srialize"); f.setJMenuBar(mb); f.setSize(200, 200); f.setVisible(true); FileOutputStream fout = new FileOutputStream(file); ObjectOutput s = new ObjectOutputStream(fout); s.writeObject(f); s.flush(); s.close(); fout.close(); } } catch(ArrayIndexOutOfBoundsException err) { err.printStackTrace(); } catch(IOException err) { err.printStackTrace(); } catch(ClassNotFoundException err) { err.printStackTrace(); } } }
296 :
156 :2006/02/15(水) 20:17:35
class Ivent extends AbstractAction { private static final long serialVersionUID = 368883942614563503L; public void actionPerformed(ActionEvent arg0) { // TODO Auto-generated method stub JOptionPane.showMessageDialog( null, "Playing tmp2.", "tmp2", JOptionPane.PLAIN_MESSAGE ); } }
Javaを一ヶ月でマスターするのは可能でしょうか
お前にはムリ
299 :
156 :2006/02/15(水) 22:05:57
絶対無理
分かった じゃあやってみせる
新手の荒らし?
>>300 普通に考えてできるわけねーだろボケが
Javaを舐めてんじゅあねーよ
お前ら程度の知識なら一ヶ月で十分だろ?
文法くらいなら1週間あれば十分 javaの言語システムなら3週間くらい 応用はプライスレス
ネットだけでjavaのapiを習得する最短の方法ってなんですか? sunのリファレンス読んでもでも良く解らない仕様って多くないですか? クラスのソース読んだりするのがいいのかな?といってもHDDの容量がそれを許さないし、時間がかかりそうだし。 すべてのクラスを網羅したサンプルを置いてあるようなサイトとかあれば良いんですが。
必要になったら覚えればいいんじゃね? ネットワーク回りくみたいとおもったらjava.netやjava.ioみればいいし グラフィック回りならJava2D まずはsunのドキュメントに目を通してからいってくだされ
なんでソースとHDDの容量が関係あるんだ?
ていうか文法以外覚えないよね。 必要なときに見るだけ。
>>307 質問のこたえになってないじゃん。馬鹿?
>>310 おまえの発言って情報量少ないよな
人生の絞りカスはだまって腐っててください^^;;;;;
まぁまぁ、糞どうし仲良くしとけよ
ワロタ 情報量だってよ
>情報量ないよね ハズかちい
夜なのに皆元気だなぁ・・・
2chで情報量w でもこういう香具師ってほんとそこらへんにいるよね。 何なんだろ
(´・ω・) く へ, V、_,/ (⌒ヽ\ノ,〉 >'、\/⌒j { ヽ、 テ彡⌒ ⌒} ノ | | } 丶 . .,,___ノ、ノ/{ i |. { ミ } | ⊆ニゝ ● ヽニ⊇ ||. .\\ \ ∧_∧. . \\ \ ( ) ゴルァ . \∧_∧ \|__./ ./ ( )ちょっ! .∧_∧ . _/ ヽ \| ( )なにやってんだ!
反応早すぎwwww
>>311 は抽象的な表現でお茶を濁す厨房の典型だなw
まるで釣堀みたいだなw
306への回答どしどし募集中ですう\(^o^)/
最近荒れるな。
俺のお陰です 情報量が少ないのです まったく2chのカスは絞りたてで困る
質問者に求められるのは質問の要旨が明確であること。 情報量が求められるのは回答の方なんじゃないのかな。 それが出来ない回答者はカス。
別にネットだけでJava覚えたければ、「JavaでHello World」とかそういう サイトを読みまくって、おおまかな動かし方(初歩的なAPI)分かってきたら、 言語仕様だってネットで公開されてるし、いざとなったらAPIドキュメントみれば いいわけで、正直、どこに問題があるかさっぱりわからん。 おれ仕事中は全部ネットで検索するので、本は見ないけどな。
じゃあ、質問の用紙が明確でない質問者は?
>>325 >sunのリファレンス読んでもでも良く解らない仕様って多くないですか?
>>326 それは回答者がカスだから明確じゃないと思うんだろうよw
>>327 そこまでいったら使ってみてどう動くか試すのがプログラマだろ?
いいえ
>>329 だからさ、それよりいい効率良い方法がないか検討してるんだよ。
>>325 >どこに問題があるかさっぱりわからん
そもそも「なにが問題だ」という性質の質問ではない。
>>331 でもAPIマニュアル見ながらどう動くかやっていけないとプログラマ失格だろ?
また出た!大胆発言w
>333 一応初心者スレなんだし、失格とか言うのはよそうよ。
>>334 職業プログラマじゃないし、APIマニュアルから習得しなきゃならない必然性はないよ。少なくとも自分は、より効率性の高い方法があればそちらを選ぶね。
自然語が殆どで占められるAPIリファレンスよりサンプルがあったほうが解りやすいし、ソースを見ながらのほうが良いかもしれない。
初心者叩きに来てる派遣用のスレですが何か?
まぁ高卒以下は下手に調べるより手を動かせってこった。
>>338 おまえあれだ、昨夜、土方よりプログラマの方が云々言ってた痛い香具師
>>172 だよなw
172 名前:デフォルトの名無しさん[sage] 投稿日:2006/02/14(火) 15:17:36
>>170 大丈夫、ここでたたいておけば
>>163 みたいなやつがプログラマにならずに済む。
彼の日本語からすると、できる人間じゃないので
きっと土方とか交通整理とかそういうことをやって下から我々を支えてくれるよ。
181 名前:デフォルトの名無しさん[sage] 投稿日:2006/02/14(火) 17:46:31
>>172 の笑いどころてこれだろ
>プログラマにならずにすむ
↓
>土方や交通整理で我々を下から(ry
プログラマも土方も
>>172 も目くそ鼻くそだろうと
ちげぇよ ヴァーカw
高卒必死だな
大量のAPIを一通り網羅するより、必要なときに取り出すようにしないと とてもじゃないがやっていけないだろう。たった一つのしょぼい不具合に 8時間もかかった俺が着ましたよ('A`)。PG向いてないな。
お、また自分で傷口広げようとしてる。見苦しい奴だw
さあ早くペットボトルのキャップを分別する作業に戻るんだ
プログラム板住人如きが学歴ネタに走るのは凄く痛いぞ。すこしは自分の姿を鏡に写して見てみたらどうだ。
な、
>>342 w
>>342 が興奮してきたからもう一回出してみよう。
こんどはどんな反応くるかな?
172 名前:デフォルトの名無しさん[sage] 投稿日:2006/02/14(火) 15:17:36
>>170 大丈夫、ここでたたいておけば
>>163 みたいなやつがプログラマにならずに済む。
彼の日本語からすると、できる人間じゃないので
きっと土方とか交通整理とかそういうことをやって下から我々を支えてくれるよ。
181 名前:デフォルトの名無しさん[sage] 投稿日:2006/02/14(火) 17:46:31
>>172 の笑いどころてこれだろ
>プログラマにならずにすむ
↓
>土方や交通整理で我々を下から(ry
プログラマも土方も
>>172 も目くそ鼻くそだろうと
根に持つって怖いねw
しかしたしかにまじめなヤツほど、APIドキュメントを頭から全部読もうとか する。あれは辞書なんだから、分からなくなったときみりゃいいのに。 概略つかむのに、パッケージ単位のドキュメントを読むとなんとなく分かったり することもあったり。
さっきから連書きしてる粘着は何?
そういや、本で「国際化とか騒いで小学校から英語教えてる暇があったら、 もっと日本語教えんかい。英語だけしゃべれて国際人とかなれるわけねえだろ」 とかいう話を読んだなあ。
353 :
306 :2006/02/16(木) 02:33:52
>>343 >大量のAPIを一通り網羅するより、
>>306 はそういうことを言ってるんじゃないんだわ。
むしろあなたの言う、
>必要なときに取り出すようにしないととてもじゃないがやっていけないだろう。
という方法について問題にしてるんだ。
だからつまり「JNDIでHello World」とか「RegexでHello World」とか 全パッケージについてあればいいんじゃない? いやジョークじゃなくて、「JavaでHello World」ってサイト、なにげに すごいと思うよ。
>353 オライリーから一通り網羅した本が出てると思ったけど それを辞書にするんじゃだめ?
>>348 おまえよほどそれが気に触ったらしいなw 言っておくがマジで俺は
>>172 じゃないぞ。
まぁ高卒の判断力なんてそんなもんだろうけどw
357 :
306 :2006/02/16(木) 02:46:38
>>355 >それを辞書にするんじゃだめ?
駄目じゃないです。質問の離れて、個人的には本気でやるなら良いかもしれないです(オライリーって高いですよね)。
とりあえず質問の趣旨から言えば、ネットで情報が得られるのが良いのですが。
>>354 さんの言う通り、実際のコードが説明してあるサイト(リンク集でも)とかあれば良いのに。
>>356 そうなんか。
そりゃすまん買った。
こんな板で学歴ネタやる奴も珍しいと思ったから同一人物だと思ったんだわ。
>実際のコードが説明してあるサイト(リンク集でも)とかあれば良いのに ソース内のコメント読めよ。
>>356 なにまだ高卒とか言ってんの?痛い奴だ。馬鹿は死んでも(ry
>>356 そんな必死になって、別人だって言わなくていいよw
その日の俺の登場はもっと後。糞スレOverflowError だ高卒どもめが。
高卒高卒叫んでる馬鹿は自分が大卒終了だって証言してるようなもんだろ。 所詮低学歴の部類だって気が付かないのか……
根拠のない認定能力は半島民並だなw
/\⌒ヽペタン / /⌒)ノ ペタン ∧_∧ \ (( ∧_∧ (; ´Д`))' ))(・∀・ ;) <まぁおまいら、もちつけよw / ⌒ノ ( ⌒ヽ⊂⌒ヽ .(O ノ ) ̄ ̄ ̄()__ ) )_)_) (;;;;;;;;;;;;;;;;;;;)(_(
>>362 きみはなにをそんなにひっしにまもろうとしているのかwwwwwwwwwwwwww
学歴ネタは食いつき良いなおまえら。
>>366 おまえは何を必死にそんなにwを連ねてるのか?
学歴ネタを出す奴が同一人物でないと何か都合が悪いのかな? そういうのはマイノリティだと思いたいとか。
釣り宣言 キタ━━━( ´∀`)・ω・) ゚Д゚)・∀・) ̄ー ̄)´_ゝ`)━━━!!!
>>370 もはや誰も追及してないじゃん。
そんなに別人だって主張しなくていいと思うよ。
何だ、いつもの釣り宣言かよw ┐( ´ー`)┌
>>373 >個人的には、クラスの使い方がたくさん載ってるページを
>いくつか捕まえて、それで解決していくしかないと思ってる。
>自分もSunのAPIやリファレンスがよく分からないクチだから。
Java以外もやるようにするといいよ。
別言語の考え方に触れることでJavaに関する視野も広がる。
>>372 これも釣りか。すぐ上の
>>366 辺りが見えないわけないもんなw
なにが 「もはや」 だ、意味分かって使ってんのか ヴァカ 高卒
>376 確かにJavaしかふれたことがないよ(そしてJava初心者)。 分かる人には分かるのかな? どうもありがとう。Cでもさわってみようかな。
都合が悪くなると釣り宣言、軽くたしなめて勝ち逃げ終了狙いなんて ベタな手法だな。
揚げ足とって本題そらしもヴァカの定石
>>373 そこ便利ですね。kodersてとこ使ってみたらjavaのソースも見れるし。参考になりました。ありがとう。
次回テンプレに入れると良くない?
どちらにしてもこの流れの速さで5分も前は「もはや」と言われてもおかしくないね。
遅すぎ。
>>377 おまえはそうやっていつも時代に取り残されてきたんだな。同情するよw
何がこの流れの速さだよ… 4 レス前もキャッシュできない無能は頼むから死んでくれ。
つまり話題に乗り遅れてるってことさ
>>383 がこの流れで 5 分以上経ってる件はスルーですか
意味不明なレッテル貼り。 馬鹿ほど無駄に接続詞を使いたがる典型。
>>387 のレスは予測ずみです。
>「遅い」
捕捉しておこう。ここで問題にされているのはレスの速さではなく、5分が「もはや」かどうか。
>>377 は、
>>372 から
>>366 を見たとき、「もはや」と表現できないと述べている点が「遅い」と言われている。
馬鹿ほど蛇足的説明を付けたがる典型。
つまり時間感覚の問題だよ。
>>377 は感覚が劣化しきっているように見受けられる。
>>390 誰だこんなことを言ったのは
364 名前:デフォルトの名無しさん[sage] 投稿日:2006/02/16(木) 02:54:24
根拠のない認定能力は半島民並だなw
それはただの感想。揚げ足取られて蛇足説明始める ヴァカ なんて所詮その程度か。
>>393 381 名前:デフォルトの名無しさん[sage] 投稿日:2006/02/16(木) 03:20:39
揚げ足とって本題そらしもヴァカの定石
おや?
>>393 がここまでダメダメだとは想定外だったorz
>>392 始めに結論ありきみたいな小学生の感想文で意味不明な認定してるお前のことだ。
>>395 まさに自分の都合の良い情報しかキャッシュに残らないという典型だな。
>>396 勝利宣言キターーーーーーーーーーーー プゥッ
>>397 おっっっとこんどは揚げ足取られて蛇足説明始めたね。
そういうのは一体なんだっけ?x
>>399 それは苦しくなって必死に過去レスあさり始めたお前だ。
すべて自分に跳ね返ってくるのがわからず地雷を投下し続けた
>>397 哀れ
揚げ足取れてうれしそうだな。初めてだったか?
>>400 必死て言うけど数レス前にお前が言ったことを返してあげてるだけなんだが。
数レス前だから必死になる必要がないよな?もはやじゃないんだろ?w
論になってないと指摘されるや揚げ足取り。 もはや子供の喧嘩モードだな ┐( ´ー`)┌
>>394 テンプレ用意して頂いたのですか。ご苦労さまです。
>>404 まさに子供の喧嘩モードであしらわれとるのに気づかんのかw
言ってることがころころかわっとるね。
下手な言葉遊びをやろうとするからボロが出てるんだよ。 揚げ足取りが口癖のようだが、自分で「揚げ足取り宣言」しておいて、 あとになって相手を揚げ足取りだって批難したりね。 なにを言っても説得力がなくなる。
ハイハイ 釣られました釣られました
そろそろ就寝宣言来るかなw
揚げ足取りにも疲れたからそろそろ寝ようかなあ(藁
あれ? また蛇足説明始めてるの?w
いつものせりふ忘れてるぞw
おまえがしたみたいな釣り宣言とか勝利宣言のことか?w
ほらほら、また自分の過去の発言が跳ね返って来てるよw
はいはい、論のできないお前の大好きな揚げ足取りを十分にご披露下さいw ↓
大好きな言葉 (゚∀゚)キターワー
なにそれ釣れた宣言?w
>>415 が過去レスを検索しています。しばらくお待ちください…
「釣り宣言」も口癖なんですねw
またあした遊んであげるから今日は退出します。 ↓以後418が勝利宣言して、水を得た魚のように大ぼら始めます(藁
>>420 ハァ? 認定するのが好きな人ですね。
脳内キャッシュがフラッシュされてしまったみたいなのでもう一度貼っておきますね。
415 デフォルトの名無しさん sage 2006/02/16(木) 04:23:10
ほらほら、また自分の過去の発言が跳ね返って来てるよw
>>421 > ↓以後418が勝利宣言して、水を得た魚のように大ぼら始めます(藁
専ブラ使ってるから丸見えw そんなに自信の無さをアピールしなくてもさっさと寝りゃ良いのにw
なんでこんなに荒れてるんだw
>>394 http://www.java2s.com/ 他にもここなんかどうよ?いやむしろ入れるならこっちかw
http://www.google.co.jp/ ちょっと検索かければサンプルコードなんかいくらでも見つかるからテンプレに入れる必要ないと思う。
わからないことがあったらまずAPIドキュメントを読むとか、ネット検索かけてサンプルコードをあさるとか、
そういう手順を踏むように誘導する内容があってもいいかなと思うけど、しょーもない質問するやつは大抵
テンプレも読まないから、気休めにしかならないだろうな。
Javaは資料や情報が多い言語なんだから、よっぽどかわった事したいんでもなきゃネット検索で自己解決
出来ると思うんだけど。本なんか買わなくても本に載ってるくらいの内容なら大抵ヒットするし。
424 :
デフォルトの名無しさん :2006/02/16(木) 05:29:58
こんにちは。 現在自作MVCモデルを作っているのですが、Jspでhtml生成などのView、 Servletでsql発行などの主動作、Beansは複数のServletで重複する処理 を共通クラスとしてまとめて主に書いています。 Servletでほとんどの処理を行っていますがこれはMVCモデルといえるのでしょうか?
FAQっぽいんですが、Javaでファイルコピーのシステムコールを呼ぶにはどうすれば良いのでしょう・・・。
言えません。
428 :
424 :2006/02/16(木) 05:33:26
>>427 ああ、FileってなんでrenameTo()あるのにcopyTo()無いんだろうね、という話です。
既出っぽいですが・・・。
430 :
424 :2006/02/16(木) 05:37:52
WEB-INF下でServlet以外のJavaプログラムも使ってプログラムが動いていたら MVCモデルといえるのではないでしょうか?
Beans を共通処理 (ユーティリティクラスライブラリ) と見てる時点で M (モデル) の 概念が入ってないのが分かるから。あと、SQL 発行を伴う大抵の処理はモデルの 世界でやること。画面遷移制御以外の目的でサーブレットが SQL を多発してるなら それはもう C (コントローラー) の役割ではない。V はまぁ HTML 出してるだけだろう からその通り。
432 :
424 :2006/02/16(木) 05:40:56
すいませんだれか意識合わせしたいのですがおねがいしまーす!
>>429 それならバグパレードに理由が載ってる。検索しる。
434 :
424 :2006/02/16(木) 05:44:45
なるほど Servletを使った開発で私のような作り方もありなのでしょうか?
435 :
424 :2006/02/16(木) 05:51:55
どなたかご返答お願いしまーす!
>>434 Servlet+JSP 開発のさきがけ時代はそんな感じ。サーブレットが主な処理をして JSP が表示する、
共通機能や JSP に渡すデータなんかは Beans にまとめる、みたいな。そのうちどっかの雑誌が
Bean=M、JSP=V、サーブレット=C に無理やりこじつけて MVC とかでっち上げるようになった
(だが実質は以前と同じ)。でもまぁ Sun も MVC だとか言い始めて EJB などが出たり、設計・
開発側が慣れてきたおかげで 3 年もたつとそれが MVC として定着した。
ここらへんは単なる歴史的な話。
>>435 オリンピック期間とはいえこんな時間誰もいねぇよヴォケ
437 :
424 :2006/02/16(木) 06:02:26
>>436 なるほどとてもよく分かりました
初期時代は私が今やっているような書き方をしていたのですね
現在ソースを見て少し長いなと思っていますので慣れてきたら
部品化してMVCにしていきたいと思います
現在の書き方はMVモデルといった感じなのですねw
>>433 検索してみましたが、環境に依存するからだめぽ、という事だと理解しました。
ありがとうございます。
> 現在の書き方はMVモデルといった感じなのですねw そういうこと。誰でも最初は画面関係の制御処理と業務そのものの処理 (業務処理) の 区別が出来なくてそうなるし、テーブルの内容表示して入力値を格納する程度のものなら それで十分。ぶっちゃけ Struts で十分まかなえる設計なんて全部 MV (というか CV) モデルだよ。 システムがでかくなれば C に全処理をぶち込むことも出来なくなって C と M を分離する 必要が出てくる。まぁ業務分析で出てくるルールがすさまじいので必然的に M は M で 独立設計するようになるだろう。さらに大きくなると M を階層化して分析・設計しないと 収集が付かなくなる。まぁそこらへんまできっちり設計出来るようになったら職業アーキ テクトでやってゆけるよ。
>>438 まぁちょっと言い訳臭いがな。汎用的で作っても簡単なものならコアに入れろよ、という
機能はいくつかあるが、ごねてもしょうがないのでそういうものとして受け止めろ。
そういうのが低い優先度で扱われるのは仕方がないし、将来はどうか分からん。
現に初期の段階で否定的だった機能が 1.4、1.5 でいきなり肯定的に追加されることも
あったし。
ファイルコピーに関して。 java.nio.channels.FileChannel#transferToというメソッドを見つけたのですが、 ググってもあまり言及がないようです。何か理由があるのでしょうか?
ファイルコピーくらい自分で作れ 以上!
いや、以前別件で作って時間を計測したことがあるんですが、 2倍くらい遅くて使い物にならなかったんですよ。 標準で提供されているものを利用できるなら、それにこしたことはないなと思いまして。
>>441 New I/O は未だに使ったことないけど計測比較できるならしてみる価値あると思うよ。
abstract 宣言されてるんで環境によっては native になってるかも分からんし。
結果よろしく。
何と比べて遅かったんだ??
最初にシステムコールと言ってるから OS のそれだろう。 そりゃどうやっても Java で自作よりそっちのほうが早いわな。
>>443 標準ではないがjakarta Commons IOでも使ってみれば?
非標準なら早くなきゃ意味ないんだろうが、 そこんとこどうなんだろうね
あんましファイルが大きいなら自作でセコセコ作るより System.exec() で cp コマンド起動したほうが速いし効率的。Win だと内部コマンドだから cmd 経由かな。
>>448 Commons は native メソッドはないから所詮はループでくるくる回してるんだろ。
せいぜいファイルサイズ見てバッファの大きさ決めてる程度と思われ。
と思ってソース見たらこんな程度。
public static int copy(InputStream input,
OutputStream output) throws IOException {
byte[] buffer = new byte[DEFAULT_BUFFER_SIZE];
int count = 0;
int n = 0;
while (-1 != (n = input.read(buffer))) {
output.write(buffer, 0, n);
count += n;
}
return count;
}
>>444 今計測してみますので少しお待ちを。
環境はWindows XP SP2です。
>>449 時間計測のためにcmd /c copyはやってみたんですけど、挙動が怪しいんですよね。
HttpSessionについての質問です。 HttpServletRequest.getSession(boolean)と HttpServletRequest.getSession()で取得できるSessionオブジェクトの 違いは何でしょうか?
>>453 すいません。解決できました。getSession()を使った場合は、基本動作はgetSession(false)と
同じだけどもセッションが存在しない場合はgetSession(true)と同じ動作をするってことですね。
transferTo()がLinuxで挙動不審とか嫌な情報も目にしたりしましたが(transferFrom()なら大丈夫?)、
とりあえず計測結果を。普通のぶん回しは
>>450 を拝借しました。
・11.8MB
Copy(BUFFER_SIZE=1KB): 160 msec
Copy(BUFFER_SIZE=1MB): 741 msec
NIO Copy: 631 msec
・121MB
Copy(BUFFER_SIZE=1KB): 31956 msec
Copy(BUFFER_SIZE=1MB): 10595 msec
NIO Copy: 9344 msec
結論としては、早いといえば早いのですが、微妙なところですね・・・。
ただ、バッファサイズの微調整をしなくても安定動作するのは有利な気がします。
バッファ=ファイルサイズ/100とかで良かったりして
>>455 お疲れさん。前スレか前々スレあたりの copy 機能ないですかってのは自分で作れ、
Commons 使え、がスレの総評だったのだが、良い情報もらいました。俺もいい加減
New I/O 使うようにせにゃ…
C コンパイラ持ってるならシステムコール (つうか Windows API) 使ったのとは比較
できんかえ? CopyFile(LPCTSTR, LPCTSTR, BOOL) 使うだけだけど。まぁ暇があったら
やってみるか。
んじゃあこれから寝ようと思ってたけど漏れが書いてみるか
と思ったけど、そちらと全く同じ環境で実行しないとタイムを比較出来ないから意味ないなw
ん、じゃちょっと俺やってみるわ。
ちなみに、New I/O(の略だったのか・・・)版は以下の通りです。 public class NIOCopyFile { public static void main(String args[]){ File fi = new File(args[0]); File fo = new File(args[1]); FileChannel srcCh = null; FileChannel dstCh = null; long startTime = System.currentTimeMillis(); try{ srcCh = new FileInputStream(fi).getChannel(); dstCh = new FileOutputStream(fo).getChannel(); dstCh.transferFrom(srcCh,0,srcCh.size()); } catch(IOException e) { e.printStackTrace(); } finally { try { srcCh.close(); dstCh.close(); } catch(IOException e) { e.printStackTrace(); } } long endTime = System.currentTimeMillis(); System.err.println((endTime-startTime)+" msec"); } }
サーブレットの特定のメソッドをスレッドセーフにするにはどうしたらいいでしょうか? 以下の様にシンクロナイズドを付けとけばOKでしょうか? public class ServletMona extends HttpServlet { toPost(....){gikoneko()} syncronized gikoneko(){...} }
まぁ OK だけどちゃんと意味を理解して使わないとパフォーマンスネックになるかもよ。 そこのブロック待機スレッド数 (同時受付リクエスト数に相当?) がほぼ 0 なら良いけど。
>>333 は間違ってないな
漠然と勉強が分かりません、どうしたらいいですか?
というのはお話にならん
やってみて、ここが分からなかった
ではどうしたらいいでしょうか?ならみんな親切に回答するとおもわれ
言語以外の勉強もまず形から入る人なのかな
「数学を勉強するにはどうしたらいいでしょうか?」
なんて質問されてるのとまったく同じだし
>>464 bccでコンパイルしてやってみました。最適化オプションは特に無し。
・11.8MB
Copy(BUFFER_SIZE=1KB): 120ms
Copy(BUFFER_SIZE=1MB): 830ms
CopyFile API: 49ms
・121MB
Copy(BUFFER_SIZE=1KB): 53065ms
Copy(BUFFER_SIZE=1MB): 12236ms
CopyFile API: 10155ms
あと、121MBの方はcopyコマンドをストップウオッチで計ってみましたが
(「cmd /c copy」を他のプロセスから呼ぶとエラーが出る)、10〜11秒程度のようです。
OS提供とほぼ同等の性能と考えて良さそうですね。
力作ですね・・・お疲れ様です。
試行回数はどれぐらいでしょうか。。。
ちなみに WinXP SP2、Visual C++.NET 2003、Java HotSpot(TM) Client VM
(build 1.5.0_05-b05, mixed mode, sharing)、ThinkPad X31 内臓ドライブ、
暗号化ディレクトリ使ってるので相対的な評価でおながい。
テストした範囲では 1kB のバッファでぶん回すくらいなら New I/O 使ったほうが
速い。1MB でぶん回したのと同等程度。Commons の copy はバッファサイズ
4kB なので、大抵の場合 New I/O のほうが速いんだろうな。Win32 の CopyFile() には
及ばない場合もあるけど、これならおおむね「使っときゃ間違いねんじゃね?」 だろう。
関係ないがループでやる場合はバッファサイズがファイルサイズを超えると
指数関数的に時間食うといった動きも見てとれる。
>>469 試行回数は各1回。標準誤差出すのマンドクサ。その分細かめにファイルサイズ切ったんで
前後との目視平均(wで勘弁して (対数でプロットするために 0ms は 1ms に変更してる)。
SQL 発行するのは、コントロールの仕事じゃないのか? これをモデルに含めたら、 例えば保存先の形態を変更したらモデルを弄らないとあかん。 これはあたかもモデルがビューに依存しているかのようになる。
>>471 もともとのMVCモデル(Smalltalk発祥の)はそういうものだったような。
保存先(モデルのロジック)が変わってもコントローラもビューも変更しなくていいですよっていう。
ただWebアプリだと保存先が変わるってのはざら(DBを変更したとか)なので、
その度にモデルに手を入れるのは面倒だよね、って話になって、
→じゃあモデルとは別にData Access Object(DAO)って作ればいいじゃん、
→DAOの切り替えどうするよ?その度にモデル直さなきゃいけないよ?
→DAOのファクトリ作ろうぜ。
ってことになって、J2EEだのHibernateだのが生まれてるのがJava EE界隈の歴史。
永続化のロジックは、旧来のMVCモデルのCにもMにも入れるのは不都合なので
MでもCでもないものに分かれたっていうのが私の認識です。
>>471 データストアはビューじゃない。モデルをそれらに依存させたくなければ、モデルの
後ろ側にデータアクセス層を作れ。まぁレガシーシステムからオープン系へ移行する
前提とかならともかく、普通は DB の変更なんてあらゆる方面に飛び火するような
馬鹿なことはしないけどな。コスト抑えるために最初にわざわざ製品選定するんだし。
>>472 すげー。そういうことだったのかよくわかった。
でも、だからJavaは重いっていわれるんだね。
MVCとかやめたほうがいいのに。
ここで原始回帰ですよ 全てを無にして同じものを1から作り直す これこそスクラッチ&ビルドの醍醐味!!
ファットクライアントがいつの間にかリッチクライアントに名称変わってたのはワロタ 恥も糞もねぇな肉桂
ファットとリッチは違うものだよ、お客さん。 リッチで十分ですよ、リッチで。わかってくださいよ。
478 :
デフォルトの名無しさん :2006/02/16(木) 13:42:51
java.awt.Imageのオブジェクトを、BufferedImageに変換したいと考えています。 ぐぐってみると、Image#getGraphics()をして新しく描画しなおすという解決法 しか見つからなかったのですが、サーバサイドで実行したいのでGraphicsを使い たくありません。 他の方法で何か良い案はないでしょうか。 どうぞよろしくお願いします。 環境:J2SE 1.4
クリスティーナ・リッチは太った。 以上
>>478 途方もない苦労をしたくなければ普通に AWT の機能を使っておけ。コンソールのみの
サーバでも Xvfb 起動しとけばグラフィック機能は使える。
Graphics 使う程度ならイベントディスパッチループが始まったりすることもないから。
481 :
478 :2006/02/16(木) 13:54:00
>>480 お客さんの環境が不定なので、Xvfbを必須ともいえず……苦労してもいいのでなんとかGraphicsなしでどうにかなりませんかねぇ
>>478 つPJA
つ-Djava.headless=true
「Javaプラットフォームパフォーマンス」には、バッファをstaticにすることでコピーを高速化している例があった。 nio版に比べると多少劣るようだが、まあ悪くはない気がする。 static final int BUFF_SIZE = 1024 * 1024; static final byte[] buffer = new byte[BUFF_SIZE]; public static void main(String[] args) { File fi = new File(args[0]); File fo = new File(args[1]); InputStream in = null; OutputStream out = null; long startTime = System.currentTimeMillis(); try { in = new FileInputStream(fi); out = new FileOutputStream(fo); while (true) { synchronized (buffer) { int i = in.read(buffer); if (i == -1) break; out.write(buffer, 0, i); } } } catch (IOException e) { e.printStackTrace(); } finally { try { in.close();out.close(); } catch(IOException e) { e.printStackTrace(); } } long endTime = System.currentTimeMillis(); System.err.println((endTime-startTime)+" msec"); }
static で 1MB 常駐はちょっとでかすぎじゃないか?
485 :
483 :2006/02/16(木) 15:05:55
103MB
CopyFile: 10835ms
>>483 : 11977 msec
nio: 11076 msec
262MB
CopyFile: 36632ms
>>483 : 41771 msec
nio: 36373 msec
262MB だとさすがに差が出るか。
>>484 100KBでも意外と変わらなかった気もする。
なお、本に載っているオリジナルでは100KB。
488 :
478 :2006/02/16(木) 15:26:33
489 :
483 :2006/02/16(木) 15:36:22
FFCも試してみた。バッファ40MBで262MBのコピーに約32秒。
490 :
デフォルトの名無しさん :2006/02/16(木) 18:25:37
Linux環境で、バックグラウンドで Javaアプリケーションを実行させようと思っています。 AntのJavaタスクで実行させようとしたのですが、 ant ターゲット名 & で、キー入力がもどってきたタイミングでプロセスが ストップしてしまいます。 この方法ではバックグラウンドで実行することができないんでしょうか?
質問です。 文字列中の特定の文字を取り除きたいのですが string.replace('-',''); などと書くと空の文字だぞとエラーになります。 文字列より特定の文字の削除したい場合の文法を教えて下さい。
string.replaceAll("-","");
> ('-','') 一瞬AAに見えた件について
>>465 >
>>333 は間違ってないな
もういちど読み返してみるといいよ。
>>306 質問(相談)は結局参考になるサイト求むという内容だと言える。
君の肯定している
>>333 はそれに対しての答えになってない。
つまり、
「経験者が薦めるAPIマニュより便利なサイトを教えてくれ」
という「APIマニュアルより」と限定してある今回の質問に対して
「apiマニュアル見ながらどう動くかやっていけないとプログラマ失格」は答えになってない(apiマニュアルが最高という答えならありえるわけだが)
こういう質問には、特定の答えがあるわけではないが、経験者それぞれにお勧めの方法は有るものだ。
現に
>>373 のような有効な回答があるのが見えてないのだろうか。
#この点、(検索時にsunのAPIサイトがトップに占められることの多い)「googleでOK」という答えはあまり有効とは思えない。
その意味で
>漠然と勉強が分かりません、どうしたらいいですか?
>「数学を勉強するにはどうしたらいいでしょうか?」
こういう漠然とした内容の例えが出ること自体そもそも読み違えている。
これは君の日本語の読解能力の問題だろう。
>423 上のサイトすごくいい。お気に入りに入れた。 Google使わないのは、結果にゴミが入るのが鬱陶しいからかと。
なんか朝日新聞の社説みたいのが居るようだが。
>>489 アプリ一つのために40MB占有というのは、少々シチュエーションが限られますね。
まぁ、一つの方法としてはありでしょうか。
>>472 >保存先(モデルのロジック)が変わってもコントローラもビューも変更しなくていいですよっていう。
MVCって、M が V や C に依存しないことが肝じゃなかったっけ。
V や C は M を表現するための単なる一断面であり、他にも切り口がある
という考えじゃなかったっけ。
データの保存先は、読み込んだりできることを考えると確かにビューじゃないな。
でも、SQL発行の操作はモデルから分離した方がいいような希ガス
ロジックが DB とかにも及ぶと、
概念的にカプセル化可能なモジュールの単位が大きくなりそう。
当方、頭悪いので3つ以上同時にモノを考えられません
>>498 別に永続化ロジックがコントローラにあったと考えてもいいよ。
で、そうすると、ビューとモデルの仲立ちをするロジックは同じなのに、
永続化ロジックが違うだけで別のコントローラを実装し直す必要がでてくる。そこで
→永続化ロジックだけ別クラスにしようぜ→Data Access Object
→DAOの取得はどうするよ?永続化ロジックごとに違うぜ?→Factory
となって、J2EEや、アンチJ2EEフレームワークになるわけだ。
永続化って何だよ。もっと普通の言葉つかえよ このJava房どもが
>>500 ∩___∩ アピョピョ
(ヽ | ノ ヽ /)
(((i ) / (゜) (゜) | ( i)))
/∠彡 ( _●_) |_ゝ \
( ___、 |∪| ,__ )
| ヽノ /´
| /
基本的なことかもしれませんが、お教え願います。 mainのあるクラスはJFrameをextendsして更にActionListenerをimplementsしています。 その中にJPanel jp = new JPanel()、更にJScrollPane sp = new JScrollPane(jp)としています。 そのjpに更にJPanel j1をaddして、そのj1にpaint(Graphics g)を使って描画をしました。 しかしながら、手動でスクロールさせるとViewportから外れた部分の描画が消え、おかしなことになってしまいます。 スクロールさせてもj1の描画に影響が出ない方法は何か無いでしょうか?
JDKがインストールできない・・・・orz
具体的にどんなメッセージどんな状態に なってインストールできないか書かなきゃだれも助けてくれないだろうに
>492 ありがとう。 だけど、1.3だったので利用できずorz SQL作成で使うところなので SQL側でreplaceする方向で検討中。
>>504 Sorry!In order to download this product, you must select"Accept License Agreement"
on this page or on the Review License Agreement page.
ってなる
その通りだろ。和訳しろって言ってるのか?
Decline License Agreement 衰退許諾契約って何?
>>506 インストールじゃなくダウンロードできないんでしょ?
>Accept License Agreement
をクリックすればいい
>>507-506 なにが面白いんだろう。。。よくあることじゃん。
たしかに簡単な英語だけど、それが解らない人はこの板ではいくらでもいるよ。
なんでそんな馬鹿にしたような言い方すんだろ。
なんか程度の低い板に来て見下せる奴探してるんだろうか?
また、あの高卒がどうの言ってた痛い奴か?w
511 :
デフォルトの名無しさん :2006/02/16(木) 23:20:28
>>510 Javaの初心者のスレだから、webダウンロード、英語わからんどうにかしてな
というスレじゃない。変に取る方が痛いぞ。
確かにアンカーは違うな でも、508みたいな馬鹿にわざわざ言ってやる必要はないから訂正はしない。
514 :
デフォルトの名無しさん :2006/02/16(木) 23:23:19
515 :
デフォルトの名無しさん :2006/02/16(木) 23:23:49
馬鹿の壁
>>510 親切にトンクス
こいうところは、叩かれるのわかってるし駄目元で聞いてるからおk
>>512 どうでもいいが、見下す相手が高卒な方が痛いのは確かだね
>>510 安価するのはたしかに簡単なことだけど、それが解らない人はこの板ではいくらでもいるよ。
ってことか?
またまた解りにくり誤字して
そそ 正面から反対できないからと言って安価の付け方を貶しても反論にはならない。
なんでマ、ム板はIDついてないの?
困るのか
Cpadでは実行できるのに DOS窓で実行すると Usage: java [-options] class [args...] (to execute a class) or java -jar [-options] jarfile [args...] (to execute a jar file) where options include: -client to select the "client" VM -server to select the "server" VM -hotspot is a synonym for the "client" VM [deprecated] The default VM is client. -cp -classpath <directories and zip/jar files separated by ;> set search path for application classes and resources -D<name>=<value> set a system property -verbose[:class|gc|jni] enable verbose output -version print product version and exit -showversion print product version and continue -? -help print this help message -X print help on non-standard options -ea[:<packagename>...|:<classname>] -enableassertions[:<packagename>...|:<classname>] enable assertions -da[:<packagename>...|:<classname>] -disableassertions[:<packagename>...|:<classname>] disable assertions -esa | -enablesystemassertions enable system assertions -dsa | -disablesystemassertions disable system assertions となって困ってます。
dos窓でどういうコマンド打ったんだ? つか、Cpadって知らんスマン。
public class HelloWorld { public static void main (String[] args) { System.out.println("うんこ"); } } を作って java HelloWorld で実行した ファイル名もあってるし、cd でちゃんと移動してるし
つか、javacでコンパイルしたのか?
527 :
525 :2006/02/17(金) 03:49:22
すまん。事故解決した Cpadって テキストエディタ お勧め CPad for Java2 SDK
>>526 うんしてある。
jdkインストールしなおしたらできた
>>529 正直よくわからんが
Java言語で開発されたソフトを実行するのに必要なランタイムセットってのを入れ忘れたと思う。
でも、CPadでは動くからよくわからん。
CPadが特殊なんかな?
>>527 CPad for java2 って便利なんですか。。DLしてみます。。
今 Eclipse 使っているけど、小さいプログラムだけを作っているので、そんなに高機能はいらないので。。
532 :
デフォルトの名無しさん :2006/02/17(金) 10:36:09
あるイベントリスナーを作ろうとおもうのですが、 イベントリスナーのメソッドの引数は、必ずEventObjectを継承したクラスでなければ いけないのでしょうか。 マウスのリスナーなどを見ると、メソッドの引数はすべてEventObjectになっているようなのですが、 そのような規則があるんでしょうか。
そんなことはない ソースが必要としないイベントならなくてもいい EventListenerにしてもただのタグインターフェースだが こっちは影響ないしつけといたほうがいいかもね
534 :
デフォルトの名無しさん :2006/02/17(金) 11:53:20
ちょっと聞きたいんですが、J Tabbed paneでタブを作成したいのですが 通常は自動的に水平方向にタブが作成されてしまうのですが、垂直方向にタブを 作成する場合はどうしたらいいのでしょうか?
APIマニュアルよんだ?
536 :
デフォルトの名無しさん :2006/02/17(金) 12:44:00
APIマニュアルとはなんでしょうか?
537 :
デフォルトの名無しさん :2006/02/17(金) 12:48:19
>>536 JDKのダウンロードしたならドキュメントも
ダウンロードしろよ。
539 :
デフォルトの名無しさん :2006/02/17(金) 13:18:49
541 :
デフォルトの名無しさん :2006/02/17(金) 14:57:06
>>527 で、CpadってEclipseとどっちが使いいい?
542 :
デフォルトの名無しさん :2006/02/17(金) 14:59:46
Cpadって随分古いな。 2003年で開発がとまってるんかい。 やっぱ開発が迅速でJava5対応も迅速なEclipseのほうがよさげな予感がするな。
でもEclipseの動作が迅速とは言いがたく…
>541 DevBoosterというのもあるが。 これも開発止まってるけどね。便利だよ。 ペンギンかわいいし。
545 :
デフォルトの名無しさん :2006/02/17(金) 18:41:01
これから Java をやろうとしている者です. Eclipse と NetBeans の違いについて伺おうと思ったんですが.. それぞれの特徴,対象ユーザー,設計思想などの概略を説明して頂けませんか? 将来,個人での大規模な(?)開発も視野に入れているのですがどっちが使いやすいのでしょうか? Cpad は..ぅーん,どうなんでしょうか?
546 :
デフォルトの名無しさん :2006/02/17(金) 19:08:34
それぞれのスレが有るからそれ見て判断すれば?
547 :
デフォルトの名無しさん :2006/02/17(金) 19:19:16
>>546 一応,覗いてみることはしたんですが両者の機能比較しているところは皆無で悩んでいるのです.
ググっても見たんですがかゆい所に手が届かなくてもどかしいんです..
両者の解説サイトにも他者との踏み込んだ比較はなされていないみたいなので..
おおまかな印象だけでもいいのでお教えくださいませんか?
NetBeans
・最低限欲しいの機能はすべて込み。JBuilderエンタープライズみたいなもん。
・5.0対応が早かったりするのはバックがSunでJDKのコンパイラを使うため。いわゆる純正。
・Swingによる動作のためにクロスプラットフォーム対応が早い。LAFかえれるのが面白いかも。
Eclipse
・素の状態だと機能が最も少ないIDE。プラグインによる拡張がメイン。
・JNI多用により昔は高速性を売りにしていたが、Javaの高速化でJNIの速度がネックになってきた。
・プラグインに頼るため安定性や操作性はピンキリ。商用プラグインが豊富。IBM関係はさすがに多い。
初心者にEclipseは勧めにくいと思われ。分かる人は分かる、分からない人は分からないといった感じ。
適当にソース作ってコンパイル、実行がAntの知識とかjarの知識とかなくても出来る点で
NetBeansを俺は推す。
すべてが完璧なIDEはなくてそれぞれ得意な部分と不得手な部分があるので慣れてきたら
いろいろと試すといいと思われ。
昔はJava自体の動作が遅かったのでEclipseの快適動作が売りだった。2.0時代が全盛と思ってるけど。
3.0でプラグインは互換性の問題が割と大きく。
NetBeansはLAFを気分で変えるといいかもしれない。
http://www.netbeans.org/competition/look-and-feel.html
>>549 詳しい解説ありがとうございます.
Java の世界は C,C++ とはまた違った雰囲気がありますよね..
しばらく慣れるまでは NetBeans でいきます.
丁寧に説明してくださり,どうもありがとうございました. :- )
質問です。 AクラスからJFrameを作ってJFrameに配置した ボタンを押したらAクラスのメソッドを使いたいのですが JFrameを作るときにAクラスを教えてやらないと駄目なんでしょうか?
public class A{ … JButton button = new JButton("押せ"); button.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ execute(); } }); JFrame f = new JFrame("うんこ"); f.add(button); … private void execute(){ // ボタンが押されたときの処理 } }
553 :
551 :2006/02/17(金) 23:02:39
情報を小出しにしてすいません。JFrameの方は派生クラスにして その中でボタンを配置しています。 ClassA{ ClassB B = new ClassB(); ClassB.setVisible(true); private 呼びたいメソッド() { Bクラスからここのメソッドを呼びたい。 } } ClassB extends JFrame implements ActionLis...{ button.addActionListener(); this.add(button) public void actionPerformed() { ボタン押したよ。 } } 今こんな状態なんですが根本的に作りが悪いんでしょうか。
じゃあ教えてやらないとだめ。
>>545 Eclipseは他の人が言うだろうから、Netbeansのことを。
・最新Netbeans 5のGUIエディタが神。
・素の状態でいきなりウェブアプリ開発可能。JSPエディタやXMLエディタも標準装備。プラグインをフル装備
したEclipseに近い。
・リファクタリング機能はまだEclipseのほうが上。
・CVS機能がかなり良い感じ。
>>553 そりゃ、ClassBのなかにClassAのインスタンス( A a = new A()とかで作られるもん)が
ないと、ClassBのなかで「a.呼びたいメソッド()」って出来ないでしょ。
オブジェクト指向なんだから、メソッド呼び出し先がないのに摩訶不思議にもメソッドを
呼べたりはしないよ。AのインスタンスがないとAのメソッドは呼べない。
>>554 ,556
ありがとう。教えることにします。
1.4.2のSwingのアクセラレーションの恩恵が受けられるノートってどのあたりからになりますか? VRAM8M時代のものでも恩恵受けられる? 最低スペックの参考にさせて。
>>558 ノートで古い専用のビデオチップより新しいUMAのほうが恩恵ちゃんと得られるよ
915からはオンボードが大幅に早くなってるけど
基本的に855GM以降が大丈夫だと思っていい
まずはCPUとメモリの恩恵が大きいのは他のWindowsアプリと同じ
ちなみにNetBurstアーキテクチャはJavaがすごく遅いのが特徴です
NetBurstは基本的にすべて遅いだろw
563 :
デフォルトの名無しさん :2006/02/18(土) 01:02:09
文字列の比較って equals()とcompareTo()どっちでやるのが正解なんでしょうか
等価ならequals、大小ならcompareTo C出身ならcompareToのが好みかも知れんが耐えろ
565 :
デフォルトの名無しさん :2006/02/18(土) 01:46:16
あるクラス名を元に、そのクラスのフルパッケージ名を 取得したいんですができますかね。 クラスローダさんに探させるメソッドがありそうだなと思っとるんですが
いくらでも「実行時に」クラスを追加できるから クラス名から完全修飾クラス名を取得することなんて 「原理的に」不可能。 起動時のクラスパス上にあるクラスだけでいいなら 自前でクラスパス上の class ファイルを探してやれ。
>>560 ActionListenerのことですか?
あと今、
メインクラス
↓
↓ クラスAの作成、ファイル読み取りクラス(読み取ったデータも保持するクラス)作成
↓
ClassA extends JFrame
↓
↓ ClassAに貼り付けたボタンを押す→ファイル読み取りクラスでファイル読み取りし、ClassBを作成
↓
ClassB extends JFrame //ファイル内容表示、編集クラス
という処理でメインクラスからClassBまで、ファイル読み取りクラスの参照を
ずっと渡して行っているんですが、どういう方法が好まれるんでしょうか。
568 :
デフォルトの名無しさん :2006/02/18(土) 10:11:54
今作っているJavaアプリでデータをファイルに保存して、次の起動時にそれを読み込み作業を復元しようと考えています。 そこで質問があります。 今の状態だとファイル名だけ指定して保存しています。例:new FileWriter("data/demo.html"); このアプリをjar圧縮してから、.jarのアイコンをダブルクリックしてWindowsXPで実行してみたところ、望みどおり.jarと同じディレクトリにデータファイルを保存できました。 しかし、VineLinuxで実行してみたところデータファイルは/home/ユーザー名に保存されてしまいます。 VineLinuxでも.jarが置いてあるディレクトリにデータファイルを保存する方法はないでしょうか?
>>565 getClass().getPackage().getName()
>>566 パッケージ内の全クラスの取得と勘違いしてない?
>>568 Windowsで.jarのあるディレクトリに保存されたのはたまたまそうなっただけ
と考えておいた方が良い気がする。Windowsでもショートカットを作って
起動したら、起動ディレクトリはいくらでも変えられるわけだし。
また、.jarのあるディレクトリに必ず書き込みが出来るとも限らない。
>>567 イベントってのがどういう風に実装されてるかというお話
オブザーバーパターンとかさっと見てみるのがいいよ
>569 多分、おまいさんは勘違いしている。 "クラス名から"といってることから入力はString。 "フルパッケージ名を取得したい"ということから入力はFQCNではない。 さて、入力として"Date"が与えられた時に返すべきパッケージ名は何かな?
573 :
デフォルトの名無しさん :2006/02/18(土) 12:48:31
ウィンドウやボタンなどの形を四角から、丸とか自由な形に変更するには どうやるんですか?
>>573 自分でUIを作るか、
paintComponent(Graphics g)をオーバーライド(AWTならpaintをオーバーライド)
よく知らんが、SynthLookAndFeelというのもあるらしい。
c:/java/A/に置いてある、パッケージAのTest01.classを サーブレット/WEB-INF/classes/B/Test02.classから利用したいのですが どのような方法がスマートでしょうか? どなたかよろしくお願いします。 現在はTest02.javaの中にTest01.classをコピペして利用していますが 無駄に長い気がします。
NetBeansは、モノとしては優れているのだが、 いかんせんシェアが低い・・・ 情報量やノウハウが少ないのがEclipseと比較する上での欠点といえば欠点。 個人プログラマ・趣味プログラマならいいが、 職業プログラマならEclipseを使えた方が使う機会は多いだろう。
でもここ2年ほど仕事でNetBeans使うこと増えてる リッチクライアント案件がふえてるからだな WEBアプリはどんどん減ってる
ノウハウひつようねーし インストール自体は楽、使い方もすぐに分かる あんまきくことはねーな Eclipse本いまだにプラグインのインストールで終わってる本大量にでてるけど その先の説明しなくていいなかなぁという気はする どっちにしろ今じゃ本よりネットで探したほうが早いけどね
>>577 いい傾向だと思うよ
俺ずっとWebアプリに懐疑的だったしね
1ページ全部をJavaAppletが埋め尽くす拡張子を用意して欲しいよw
580 :
デフォルトの名無しさん :2006/02/18(土) 15:16:14
アプレットに関する基本的な質問です。 アプレットとアプレット同士が通信してチャットを行うようなアプレットを 作成しています。java.net.Socketを用いて、IPアドレスを指定して通信を 実現しようと考えています。 しかし、調査してみると、アプレットはcodebase属性が示すホスト以外とは 通信できない、という制限があるということが分りました。 この制限は未だに存在しているのでしょうか? なお、JDKに付属のアプレットビューア上で実行してみると、 アプレット間の通信は正常に行われました。 しかし、ブラウザ (firefox, IE) 上でアプレットを起動すると、アプレット間の 通信が上手くいきませんでした。 よろしくお願いします。
>>580 アプレットをダウンロードしたサーバーしか信用しない
大いに結構では?
勝手に他のサーバーに情報ばらまいたりされるよりはいいっしょ
署名すればサンドボックスははずせる
>>580 出来ないよ
サンドボックスというセキュリティ対策のひとつだね
あのFlashも同様の対策のため
同一ドメイン及びサブドメインでしか通信は出来ない
P2Pで鯖のコストを下げたいならアプリにしよう
583 :
デフォルトの名無しさん :2006/02/18(土) 15:33:47
>>581 ご返答ありがとうございます。
確かに、セキュリティ上必要な仕様ですね。
アプレットビューア上では、通信は実現できたため、これはつまり
「ブラウザ上で実行されるアプレットは、アプレット間通信できない」
という仕様ということでしょうか?
アプレット間通信っていうと通常ソケット通信をささないと思うぞ 通常鯖経由が必須とおぼえときなされ ブラウザ開いて勝手にポート開いて穴あけてたらしゃれにならん
>>583 署名付きアプレットにすれば、ユーザへの確認があった上でで制限は外せる。
アプレットビューアは、アプレットの動作確認ツールみたいなものだから、
あまり気にしなくてもいいかと。
V2Cって2chブラウザがあるらしく デモがわりにJavaWebStartを使ってみた 滑らかなもんだなSwingもWebStartも 重くても俺はLive2chを使うけど
587 :
デフォルトの名無しさん :2006/02/18(土) 20:36:26
現在Linux上で稼動するJavaアプリケーション(常駐タイプ) を作成しています。 JavaアプリからDBへ接続する必要があるのですが、 「プログラム起動時に1つコネクションを作成し、 それをずっとクローズせずに使いまわせば?」といわれました。 *DBに対する負荷はできるだけ少なくしたいそうです いまのところ、DataSourceを自分でバインドして使用しています。 いままでWeb系のアプリばかり作ってたんで、コネクションを閉めないで 使いまわす発想が信じられないのですが、実際にDBへの負荷を 気にする場合はいい方法なのでしょうか? 条件 ・DBは他のシステムからも使用される ・DBへ対する負荷(接続時にかかる負荷)は少なくしたい この条件で、 ・DataSourceを使用した場合、負荷的にはコネクション1つを 使いまわすのと同じ程度か? ・このアプリケーションで1つのコネクションを使いまわした場合と DataSourceを使った場合、それぞれメリット・デメリットは? よろしくお願いします。
普通のWeb系アプリでもTomcatとかがプーリングしてて コネクション自体は裏で張りっぱなしだと思うんだが。
>>587 というか本来クライアントというのは一度つないだらアプリを終了するまでつなぎっぱなしが基本
WEBアプリが特殊なのだよ
だからコネクションプーリングが存在する
もし毎回切断したいのならプール数1でコネクションプールすればいい
文字列の置換について質問させてください 例えば、 String str = "あい(id:1)うえおか(id:7)きくけこさ(id:26)しすせそ"; のような文字列があり、(id:?)をそれぞれ対応する文字列で置換したいのですが、 replaceを繰り返す以外の方法というのはありませんでしょうか 文字列strに含まれる(id:?)の?には、1から100までの数値が入り また、文字列strの中身は完全に未知です。 replaceを繰り返す方法の場合、 上記例の場合のみであれば、3回のreplaceをすればいいだけなのですが strの中身が未知であるために、100回replaceしなければなりません。 これではあまりにも無駄すぎるので、どうにかしたいのです 何か上手い方法がありませんでしょうか
正規表現はしらべてみたの?
正規表現もいいが(id:?)を一度{?}に変換してMessageFormat使えば簡単そう。
593 :
590 :2006/02/18(土) 21:47:22
>591 正規表現を使えば、(id:?)という形式の文字列が含まれているかどうかは わかっても、?の数値によった置換が出来ないと考えました。 splitしたら(id:?)は消えてしまいますし・・・
MessageFormatは出てくる順番にしか処理しないのでは?
>>591 の言ってる内容だとそれでこと足りそうだけどね
595 :
590 :2006/02/18(土) 22:12:21
ありがとうございます 今あわててリファレンスのMessageFormatを見てきました。 複雑そうなので、もう少し調べてみます。 ただ、(id:?)を{?}に変換するとき (id: を { に置換し、) を } に置換するという方法になるんだと思いますが これだと、関係無い ) まで置換されてしいます。 (id:? に続 ) だけを置換するようにするのは可能なのでしょうか
({?})でいいじゃん
一定の書式を取り出すのに正規表現を使わない理由が分からない・・・
598 :
デフォルトの名無しさん :2006/02/18(土) 23:06:46
Javaで作ったアプリケーションを、Windows上の .exe ファイルのように、 クリックするだけで起動できる実行ファイルにすることはできますか?
そういうアプリケーションランチャーを作る。 ShellExecuteExだったかな・・・WinAPIの話ね
>>598 jarファイルならダブルクリックでWindows上で実行できるはずだが
アイコンつけたいとかやるなら
>>599 のように
実際のところアプリケーションは各種オプションでチューニングするので
jarだけで配布というのはまずありえん
JavaSE6ではLinuxとかもダブルクリックで起動するようにするんだっけ
601 :
デフォルトの名無しさん :2006/02/18(土) 23:22:14
アイコン差し替えられるランチャがあったらいいのにな 機能は-Xmxをデフォルトかメモリ最大の75%かを設定できるくらいでいい てかないのか?こんなランチャ、ある気がしてきた
603 :
デフォルトの名無しさん :2006/02/18(土) 23:22:58
ServerSocket#accept()をボタン押下のイベントで中断させることはできますか?
>>603 タイムアウトを10msくらいに設定して回すという手もある
クリックイベントでループ抜けるフラグをセット
>>604 やさしいな
>>600 なんでマニフェストファイルにそういうオプションつけられるようにしなかったのか理解に苦しむ
607 :
603 :2006/02/18(土) 23:32:15
>605 なるほど。それならできそうな気がします。
608 :
デフォルトの名無しさん :2006/02/18(土) 23:35:15
Windowsでダブルクリックで起動できてアイコンを自由に設定したいなら ショートカット使えばいいのでは?
そろそろJWS信者が出てくる予感
いやアイコンの差し替えは必須だから出てこれないでしょw
質問失礼します java未経験者なのですが 初心者がjavaをある程度理解するにはおよそどれくらいの時間がかかりますか? 目標としては、GA(遺伝的アルゴリズム)を用いたNクイーン問題のプログラムの作成および応用です プログラム暦としてはCをほんの少しかじった程度なんですが、どうでしょうか?
613 :
デフォルトの名無しさん :2006/02/19(日) 00:00:00
WSHでショートカットアイコンを作るスクリプト書けばいんじゃない?
>>612 > 初心者がjavaをある程度理解するにはおよそどれくらいの時間がかかりますか?
個人による
1ヶ月もあれば十分じゃないかな
exewrapでいいんじゃない?
616 :
デフォルトの名無しさん :2006/02/19(日) 00:01:56
>>612 君の頭が良ければ一瞬。馬鹿なら一生無理。
適当なインストーラキットつかってsetup.exeにまとめて配布。
>>603 別スレッドでServerSocket#close()呼ぶと、
accept()しているスレッドはaccept()を中断してSocketExceptionをスローする。
前にSocket使ったC/Sアプリ作ったときはそうやって中断させた。
>>605 みたいなビジーループはどうかと思うが、普通そうするの?
619 :
デフォルトの名無しさん :2006/02/19(日) 00:09:33
>>612 Javaが未経験なのか。
それとも、プログラミングが未経験なのか。
620 :
デフォルトの名無しさん :2006/02/19(日) 00:09:51
現在の時刻を、20060219001010のように、年4、月2、日2、時2、分2、秒2の 14桁であらわしたいのですが、どのようにしたらいいのでしょうか。 DateFormatというクラスがあるのですが、どのメソッドにどのような引数を あたえたらよいのかが分かりません。
SimpleDateFormat
>>620 SimpleDateFormatのコンストラクタにフォーマットを記述して
formatter.format(new Date());かな
>>618 環境によってそれ動作がおかしかったはず
ユーザーが多いWindowsですらもね
>>605 が普通のコード
624 :
620 :2006/02/19(日) 00:17:47
ありがとうございました。 SimpleDateFormatに"yyyyMMddHHmmss"という形式を与えてできそうです。
>>620 String now = String.format("%tY%td%tm" , Calendar.getInstance());
みたいなかんじでかけばおけ
>>612 C言語でそのプログラムが組めるなら、javaでもすぐできそうな
気がする。
exewarpってすごいな でもマニュアル読まなきゃlibにjarを入れる所だった こういう仕様はやばいからマジ止めて欲しいw
Javaにおいての自動変数についてなんですが 例えば void hogehoge();メソッドがあるとしまして このメソッド内でint n[] = new int[128];と宣言しているとします。 普通C/C++ではメソッド内の変数(自動変数)宣言はメソッドが実行されますと物理メモリが確保され、 そのスコープを抜けると(つまりメソッドから零れると)確保した物理メモリは開放されます。 Java(主にJVM)では自動変数についてどの様な処理を施しているのでしょうか? お願いします
629 :
デフォルトの名無しさん :2006/02/19(日) 00:48:46
>>628 JAVAでは配列はオブジェクトと同じ扱い。
つまりガベージコレクションがはたらく。
>>629 すみません書いてから気がつきました
JAVAのnew演算子は技術的に動的メモリ確保してるんでした
ではこうします
void hogehoge();が定義されているとして
このメソッド内で int n; と宣言されているとします。
この場合変数nはどうなのでしょうか
すみませんorz
>>628 ローカル内で完結するリソースは開放されるんじゃなかったかな
プリミティブ型だけだと思うから、配列は微妙
てかGCって印象より速いですよ
>>627 こういう仕様って?
あと、ワープじゃなくてラップな。
外部ライブラリの読み込み Java には自動的に外部ライブラリ(JAR)を読み込むための仕組み(Extension Framework)があります。 既定では、JRE をインストールしたディレクトリの lib\ext が拡張ディレクトリとなります。 拡張ディレクトリに配置された外部ライブラリ(JAR)は、クラスパスに明示的に指定することなく使用できます。 exewrap で作成されたアプリケーションは、アプリケーションファイル(EXE)のあるディレクトリに、 lib ディレクトリが存在する場合、lib ディレクトリを自動的に拡張ディレクトリに追加します。 JDBC ドライバなどの外部ライブラリは、アプリケーションファイル(EXE)と同じところに lib ディレクトリを作成し、 そのディレクトリ内に配置することができます。
>>634 オブジェクト参照型でもそれにnullを代入すれば出来るという話もあるが検証したことないからわからない
636 :
612 :2006/02/19(日) 00:59:25
質問に答えてくださった方々、ありがとうございます Java初心者の分際でGAに魅力を感じ、ついこの道を選んでしまいました プログラミングは私にとってとても難しいものなのですが、完成したときのあの達成感はやっぱりいいですね 早速明日からJavaの勉強を開始します それでは失礼致しました
>>637 普通libにjarを置くし俺は大問題だな
main.exe + lib\*.jar という形でアプリを配布できるようにしてあるだけだと思うが 何がそんなに問題なのか分からない。
なにが大問題なんだろう? exewrap経由で起動するアプリが使うJARを入れるだけでしょ?
lib\extに勝手にコピーされるなら大問題では? アンインストーラも無いのにレジストリ汚すようなもんだ
libにあるjarにクラスパス通すだけじゃないの?
なら問題ないが、何であんな書き方なんだろうか
644 :
642 :2006/02/19(日) 01:46:24
> lib ディレクトリが存在する場合、lib ディレクトリを自動的に拡張ディレクトリに追加します。 ごめん、追加するのか…?
>>644 クラスパス通すことをそう表現してるだけのようだが。
クラスパスつーか、java.lib.extで指定されるだけじゃないかな。
647 :
646 :2006/02/19(日) 02:10:37
まちがえた、java.ext.dirsだった。で、これ指定しちゃうと元々の jre/lib/extが指定からハズレるからJCEとか使ってるとはまるだろうな。
区切ることで複数指定できるようだ。安心した。 疑って悪かったなexewrap
折れ線グラフくらい自作すれば?
>>649 漏れもそれに興味あって少し調べてみたけど、まず日本語の情報は皆無。あってもかなり
昔のバージョンについて述べてるので、役に立たなかった。
そもそもJFreeChart 1.0がリリースされたのがつい最近だから、書籍なりが出てくるのは
もっと待たないとダメかと。
で、本体にもまともなドキュメントはついていないので、独学もムズそう。
JFreeChartプロジェクトが有償で開発者向けのドキュメント(英文だけど)とサンプルのソー
スコードを売ってるので、これを素直に買うべきだと思う。
http://www.object-refinery.com/jfreechart/guide.html まぁ$40だから、許せる範囲かと。(漏れは買ってないけどww)
652 :
デフォルトの名無しさん :2006/02/19(日) 14:40:24
重複しない乱数を作ることって可能ですか?
>>652 重複しない値の集合を、ランダムにシャッフルする(トランプ的に)
private jreを配布するときのルールを教えてください どのような制限が付くのでしょうか?
readmeくらい読みやがれ 再配布規定よまないでjre配布はだめだぞ
>>634 >プリミティブ型は開放されるのですね。ありがとうございます。
というか、普通に、ヒープにとるかスタックにとるかの違いじゃないのか?
C++と比較してるようだが肝心の比較のC++の基本も知らないようだから そこはかまうな とみんなおもってるはずだ
そこはかまうな、って C/C++ に限らず Java でも基本だろ。
659 :
デフォルトの名無しさん :2006/02/19(日) 20:13:14
実行ファイルが置かれているディレクトリの絶対パスが知りたいと思いました。 getClass().getResource("").toString()で何かが見えた気がしたのですが.. 良い方法ないですか?
>>658 ヒント:比較対象が分かってないから何を行っても無駄
>>659 ネットワーク上においてあるかも知れないのに置かれてるディレクトリも糞も
ないだろう。強いて言えばカレントディレクトリか?
System.getProperty("user.dir")
662 :
660 :2006/02/19(日) 20:23:19
663 :
659 :2006/02/19(日) 20:24:29
>>662 の名前:660は659の間違いです。すみませんorz
シンボルがありませんってどういうこと?
女だってこと
「シンボル 梅宮」 でググれ
「シンボル ポピュラス」でググれ
BufferedImageをリサイズ出来るような方法はありませんか?
つ getScaledInstance
671 :
618 :2006/02/20(月) 00:44:22
getClass().isPrimitive()でプリミティブ型かどうか判定出来ますが、 ある変数が特定のプリミティブ型、例えばbooleanか判定する方法はありますか。 instanceof演算子を使い xxx instanceof Booleanでは上手くいかないです。 今は応急で getClass().getName().equals("java.lang.Boolean") などとしていますが、これで良いのですか?
673 :
デフォルトの名無しさん :2006/02/20(月) 07:13:00
>>673 回答ありがとう。
boolean xxx = true;
として、
if(Boolean.TYPE == xxx) ;
では、Booleanとbooleanは比較できませんと言われたので、
if(Boolean.TYPE == (Object)xxx) ;
のようにしたのですが、falseと返ってしまいます。つまり判定
こうやって使うんじゃないのですか?
何度もすいません。
良く考えたらプリミティブ型で実行時に型が解らない変数って無いんですかね?
ラッパーいいよね。ノリが。
>>675 コーディング時に型が決定しないプリミティブ型を書く方法がないからな
次のようなプログラムの実行結果が "mona" にならない理由をおしえてもらえませんか? public static void main(String args[]){ String a="gikoneko"; StringTest(a); System.out.println("a="+a); } public static void StringTest(String test){ test="mona"; return; }
CとJavaの違いを勉強しましょう。 main()内は String Test(a)を a = Test() ; Test()内は return ; を return test ; 注)引数はこの場合いらない。
>>679 そうする事によって、期待する結果が得られるのは理解できるですが。
わからないのは、String型はクラス型なのになぜ呼び出したメソッド中での変更が反映されないのか
っていうことなんです。
>>678 メソッドの引数に与えるのは、オブジェクトを特定する背番号だけ。
与えられた側のメソッドでは、背番号を格納する場所を、新たに確保する。
この新たに確保した場所は、メソッドの終了とともに破棄される。
よって、メソッド内で幾らこの背番号を変えたとしても、メソッド外には反映されない。
Javaはポインタがないっていうけれど、やっぱこういう香具師みるたびに ポインタは理解しとかないとだめだなーと思うな。 StringはImmutableだし、第一メソッド内でポインタ値を書き換えても何にもならない。 (testはStringTest内のローカル変数だからそれを変更したって意味がない。つまりこの関数は何もしていない。)
>>678 Java ではダブルクォーテーションで括った文字列は
それそのものが String クラスのインスタンスです。
C/C++ のように char 配列の先頭を指すポインタだったり
それを入れるクラスや構造体が別にあるわけではありません。
(だから "abc".charAt(1) のような書き方もできます)。
ついでに言うと、String クラスは内容を書き換えられる
ように作られていません。定数用に作られたクラスです。
渡した先のメソッドでどうしても内容を書き換えたいなら
StringBuffer を使うか char 配列にして渡すか、あるいは
あるいは内容の変更された新たな String のインスタンスを
リターン値として受け取るしかありません。
把握しました。StringBufferで同じようなことをやってみたら理解できました。ありがとうございます。 //1 public static void StringTest(StringBuffer test){ test.delete(0,test.length()); test.append("mona"); return; } //2 public static void StingTest2(StringBuffer tset){ tset = new StringBuffer("mona"); return; }
仮にポインタだとしても同じことだろ。アホかw それにC/C++では文字列リテラルはポインタ型じゃない。 ま、仮にポインタ型だとしてもC"abc"[1]のような書き方は可能だがな
初心者っぽい質問ですいません。 public static String conv2UB(String pText) { String text = pText; if (text == null) { text = ""; } text = text.replaceAll("_", "\\_"); return text; } 上記のメソッドで"_"→"\_"にしたいのですが、なぜか置換できません。 例:"te_st"→"te_st" 何か使い方間違ってるんでしょうか。
>>686 Javaの正規表現は、正規表現のエスケープと、
Javaの文字列におけるエスケープが混在するからややこしい。
正規表現で、\を表現するためには、\\と書く。
さらにそれをJavaの文字列リテラルで書くと、\1つをあらわすのに\\と書くから、\\\\になる。
>>687 いや、replaceAll()の第二パラメータは正規表現じゃないし。
>>686 正規表現じゃないんだけど、
>>687 の言うとおり "\\\\_" にする必要が
あります。
690 :
686 :2006/02/20(月) 14:42:13
>>687 ,688,689
ありがとうございます。
"\\\\_"でいけました。まさか2回エスケープされてるとは思わなかったよ。
ちなみに"_"→"\_"にしたかったのは、PostgreSQLのLikeにかける時、"_"が
任意の一文字として扱われるのをエスケープするためです。
public void keyReleased(MouseEvent e) { } のvにclassまたはinterface がありませんってでるんだけど。
メソッドはクラスの中に書け
695 :
デフォルトの名無しさん :2006/02/20(月) 23:17:29
1、SELECT分の結果をResultSetで受け取る。 2、ResultSetを一行読む。 3、2で読み込んだ値をprepareStatement(UPDATE文)にセット。 4、UPDATE実行 5、COMMIT 6、2へ戻る(ResultSetが終わりまで来たら終了) こういう感じのロジックなんですが、何か問題はあるでしょうか。 2、3週ループした後で、デッドロックが起こったみたいにCOMMITの後で処理が停止してしまいます。 ちなみに使用しているコネクションは一つです。
結果セット保持中にコミットって正気か?
5、6は明らかに逆にするべき。アホかと
698 :
デフォルトの名無しさん :2006/02/21(火) 00:09:43
例えば int lpArr[] = new int[12]; と宣言されているint配列があるとします。 例えば文中でこのlpArrの要素の数を12個から13個以上へと拡張(Cに当たるrealloc関数の動作)するには int __lpArr = new int[13]; for(int i=0;i<12;i++) _lpArr[i] = lpArr[i]; lpArr = _lpArr; とするしか無いのでしょうか
>>698 その通りだが、配列のコピーはSystem.arraycopy()を使うと楽。
int __lpArr = new int[13];
System.arraycopy(plArr, 0, __lpArr, 0, lpArr.length);
>>695 それJava以前のお話
まずDBを勉強してくだされ
ものにもよるがそもそもループ内でcommitって何のためのトランザクションだとかおもっちまう
>>548 たしかに1年待たされたw
Eclipse3.2からはさらに5.0対応機能が強化されるので
非常に期待している。アノテーションやGenericsのリファクタリングや
コードアシスト、警告が強化されるからな。
>>699 ありがとうございます
無事解決できました
以前アットマークITで質問して、満足する回答が得られなかったため
再度ここでお尋ねしたいと思います。どなたかよろしければ教えてください。
BeanShellのようなインタプリタをサーブレット上で動作させて、
ユーザがポストした任意のアプリを実行させたいのですが、
たとえば、こんなプログラムがポストされたときに発生してしまう
OutOfMemoryErrorをうまくハンドリングしたいのです。
buf = new StringBuffer("ULY");
while(true) buf.append("Y");
なにもしないままでは、同時に複数のユーザがプログラムをポストしたときに
「悪いプログラムを投稿したユーザ」のリクエストを処理するスレッドで
OutOfMemoryErrorが発生するとは限らないので、他のユーザに迷惑がかかってしまいます。
なお、サーバ側のセキュリティはこの際考えないものとします。
実行環境はあまり関係ないと思いますが、一応Linuxです。
@ITに投稿したときのスレッドはこれです。
ttp://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=28331&forum=12&6 よろしくお願いします。
704 :
703 :2006/02/21(火) 04:25:55
質問の仕方が悪かったので、少し追加させて下さい。 やりたいことは、 (1) 悪いプログラムを投稿したユーザを特定したい (ということは、OutOfMemoryErrorが発生したスレッドを 特定できなくてはならないと思います) (2) (1)が無理なら、せめて、悪いプログラムが投稿されても 他のユーザの実行結果に影響が出ないようにしたい この際、OutOfMemoryErrorが発生するくらいヒープが消費されることによる サーバのスローダウンは許容するとします。 やっぱり無理なんでしょうか…
705 :
703 :2006/02/21(火) 04:33:11
3連投ですいません。 704の(1)はマチガイでした。OutOfMemoryErrorが発生したスレッドは特定できますね。 それに、スレッドを特定できても、ユーザは特定できないですね。
>>704 荒療治だけど
1)投稿を全部独自形式でどこかにダンプして
OutOfMemoryErrorを見つけたらSystem.exit
2)それと同時にサーバ(Tomcat?)が
起動していることを監視するデーモンプログラムを書いて
停止していたら起動させるようにする
3)1)のログの一番最後の行付近の投稿を実際に行ってみて(HTTPUrlConnectionなど使って)、
同様のエラーを返す投稿を書き込み不可として登録する
かなり汎用性はないけど、
もともと案件が汎用性がないからこんな感じ?
BeanShellで動作させるところを別プロセスにすればいいんでないのかね。
708 :
703 :2006/02/21(火) 06:12:29
早速のご回答を頂き、ありがとうございます。
>>706 お金がないので今のところtomcatを使っています。
OutOfMemoryErrorをcatchして何か処理を行なうことは可能なので、
どこかにダンプする必要はなく、catchして直接System.exitするということになりますね。
ですが、無停止で運用しなくてはならないので、基本的にはSystem.exitは使えないのです…残念ですが。
>>707 別プロセスにする、というのは一番ストレートな回避策だと思いますが、
リクエスト毎にプロセスを起動するのでは処理が遅すぎるので、
プロセスプーリングやリクエストキューの管理などが必要になってきますね。
tomcatをシングルスレッドモデルで動かば、確実にユーザ特定できるのですが、
マルチユーザに対応しなくてはならないので、その選択もできません。
やはり、現実的な線としては
(1)現在処理中のリクエストをポストしたユーザの情報を、どこかに書いておく
(2)別プロセスとしてリクエストを処理し、OutOfMemoryErrorが起きたらそのユーザをbanする
というところでしょうか。
どうにかtomcatのプロセスだけで全部まかなえないか、あれこれ考えたのですが、
やっぱり無理ですよね…残念です。
>>674 参照型の値refを調べたいなら
if (boolean.class.equals(ref.getClass())) {
//なんか処理
}
まちがった。 Class type; //調べたい変数の型 if (Boolean.TYPE.equals(type)) { //プリミティブ型 } else if(Boolean.class.equals(type)) { //参照型 }
javaのSDKのソースをダウンロードしようと思ったんですが ライセンス形態のSCSLとJRLってどう違うんですか?
>>703-705 スレッドが特定できるなら、名前をつけて実行すればよい?
new Thread(new Runnable() { public void run() { throw new Error(); }}, "hoge").start();
以下は、スタックトレースの一行目。
Exception in thread "hoge" java.lang.Error
>>703 インタプリタなんでしょ?
ならJavaのヒープでとめるんじゃなくて
自前でメモリ管理すればいいだけじゃないの?
>>713 703ではないが、質問を。
インタプリタ=自前でメモリ管理ができる、になりますか?
自前というのは、誰でしょうか?
>>703 一つのbeanshellのインスタンスで処理するんじゃなくて、
インタプリタ分けて、インタプリタごとにスレッドグループ設定して
例外ハンドラを追加、でできそうなきがする。
>>714 普通インタプリタ作るといったらメモリ領域を先に制限してから実行するものじゃない?
最近はメモリが多いから何も考えずにくむ人多いのかなぁ
>>716 VM上で仮想メモリ空間を作成する、ということ?
718 :
デフォルトの名無しさん :2006/02/21(火) 10:47:30
Eclipseからは実行可能なJarファイルを作りたいのですが どのようにすればよいでしょうか?
>>717 VMだろうがVMじゃなかろうが制限をつけるのは当たり前
それをしてないというのはアップロードサイズ制限してないコードとかとおなじ
720 :
デフォルトの名無しさん :2006/02/21(火) 11:09:27
Swingでボタンを配置した後にそのボタンを押すと画面が終了する書きかたってどうすればいいのでしょうか?
721 :
デフォルトの名無しさん :2006/02/21(火) 11:12:36
722 :
デフォルトの名無しさん :2006/02/21(火) 11:14:02
ねぇねぇ、始めたばかりの初心者はどんなものを作りながら勉強をした方が良いの? 経験者は経験してきたことを言っちゃいなよー
>>719 やるかやらないか、じゃなくて、
できるかできないか、を知りたいんだが…
724 :
デフォルトの名無しさん :2006/02/21(火) 11:17:47
>>722 お前は参考書を10冊10日ずつ読破しろ
>>720 setDefaultCloseOperation(int)
じゃないよね?
>>726 それはクローズアイコンの動作指定ね。(メソッド名そのままだな)
>>727 やっぱり・・・
breakじゃないし・・・。
すいませんマジで混乱しています教えてください。
729 :
デフォルトの名無しさん :2006/02/21(火) 11:24:43
>>728 初歩の初歩だググれば?
ググっても分らないならPGに向いてない諦めろ
>>728 日本語の不自由な方には(ry
で、大体何を見て勉強しているんだ?
731 :
703 :2006/02/21(火) 12:07:08
いろいろと御意見を頂きありがとうございます。
>>712 >>715 基本的には、「OutOfMemoryErrorがthrowされるタイミングおよび
どのスレッドにおいてthrowされるか」は予測不可能なため、
一人でも悪いユーザがいれば全部台無しになってしまうのです。
例外ハンドラでキャッチするだけでは、せいぜいmainスレッドが停止するのを
防ぐことがやっとだと思われます。残念ですが…
>>713 >>719 確かにおっしゃるとおりで、本来ならばスクリプトエンジン側で
メモリをきちんと管理するべきだと思います。
しかし、オブジェクトごとのメモリサイズが取得できないjavaでは、
(スクリプトの)実行コンテキスト毎のメモリ消費量を特定するのは、
相当困難であるかと思われます。
正直なところ、javaで動いて、キチンとメモリ管理もするスクリプトエンジンを
0から作る、という方針はイバラの道のような気がして、あまり選びたくないです。
やりたいことはほぼ全てBeanShellモドキが提供してくれているので、
あとは「無茶なスクリプトが実行されても、その悪影響を抑え込める」
さえどうにかなれば、というところなのですが…
そもそも、そんな用途でjavaを使うな、と言われたら返す言葉もないですが。
>>728 マルチうざ
>>731 使用量をコントロールするのならメモリ管理を一から作るしかないけど
難しく考えすぎじゃない?
1Mのコードエリアと1Mのヒープ&スタック用意しておわりでは?
まさかオブジェクトってことはスクリプトからJavaのオブジェクト管理したいのか?
コントロールできないコードをユーザーに自由なコードをアップロードして
実行させる危険性はわかってるの?
メモリコントロールが完璧でもwhile(true)だけでCPU100%使うとかあるでしょ
733 :
703 :2006/02/21(火) 12:27:32
>>732 無限ループやスタックオーバーフローに関しては、
内部プログラムカウンタを使って、
一度に実行できるステップ数を制限しているので大丈夫です。
スクリプトからJavaオブジェクトを操作する、
それがまさにやりたいことなんです。
しかし、危険なAPIは一切実行できないないように制限しているため、
セキュリティはあまり問題にはならないと考えています。
(インポートできるクラスを制限したり、
java.lang.Classなどの危険なクラスも操作できないようにしています)
cpu100%つかうアプリって、、、たまごっちか。
>>733 使うオブジェクトが汎用的じゃないのであればかなりコントロール可能でしょ
どのクラスがどの程度使うかはわかるわけだし
736 :
703 :2006/02/21(火) 12:55:03
>>735 汎用的なライブラリも使うんです、すいません…(commons.langの一部とか)
メソッドコール一つ一つを精査して、危険っぽいメソッドコールならば
エラーにして返す、というのも少し前に考えましたが
現実的でないので無理という結論になりました。
(「危険っぽいメソッドコール」の基準を決めるのが困難なので)
737 :
デフォルトの名無しさん :2006/02/21(火) 13:37:29
サイズが大きいパネルの上で小さいパネルをドラッグで動かしたいのですが、 JPanelを重ねたときに、常に片方を最前面にこさせる方法はないでしょうか?
小さいほうのフォーカスロスト時に大きいほうのパネルをアクティブにする。
739 :
デフォルトの名無しさん :2006/02/21(火) 14:08:55
クラス同士を結ぶ方法は存在するのでしょうか?
クラス同士を結ぶってことはconcatPanel(次のパネル)
みたいなメソッドはないかということですか?
標準APIには無いので、
>>737 の方法で作るのがベターだと思いますよ。
ちょっとサンプル作ってみます。
743 :
737 :2006/02/21(火) 14:31:59
>>738 ありがとうございます
フォーカスイベントの存在をしらんかったorz
744 :
739 :2006/02/21(火) 14:37:18
>>740 いえ、そんな大それた事ではないです…。
try-catch〜のJavaの宿題をやっているのですが、
3つのクラスを又にかけてなにやらやったりするので分けが分からなくなっています。
日本語が不自由な方は(ry
746 :
デフォルトの名無しさん :2006/02/21(火) 15:07:07
>>703 思ったけどこれってすごく危険じゃね?
どこの誰ともわからないユーザにプログラム実行させるの?
そこがそもそも間違ってると思うんだけど・・・
他の掲示板でもそっぽ向かれてるには理由があるってことさ
749 :
デフォルトの名無しさん :2006/02/21(火) 15:51:14
よっぽど自分のセキュリティ対策に自信があるんでしょ
>メソッドコール一つ一つを精査して、危険っぽいメソッドコールならば >エラーにして返す、というのも少し前に考えましたが >現実的でないので無理という結論になりました。 鯖のファイルすべて消すとかできそうだな
752 :
デフォルトの名無しさん :2006/02/21(火) 16:12:18
マンガ嫌韓流2 2月22日(竹島の日)発売 ◆第1話「終わりなき反日」 歪んだ社会が生み出す「反日無罪」 ◆第2話「世界で嫌われる韓国人」 ←注目 共存できない民族による深刻な被害 ◆第3話「在日特権の真相」 ←注目 「差別」を武器に君臨する新特権階級 ◆第4話「日本海を汚す韓国」 領海侵犯と日本海呼称問題 ◆第5話「教科書採択問題と日教組」 反日勢力による教育汚染の実態 ◆第6話「人権擁護法案と反日マスコミ」 ←注目 反日日本人と朝鮮半島をつなぐ線 ◆第7話「差別大国 韓国」 ←注目 あらゆる差別が詰まった人権無視国家 ◆第8話「歴史を捏造する韓国」 ←注目 偽りの歴史と改竄された民族の記憶 あなたが少しでも日本に愛着を持つのであれば、 この本を読んで正しい歴史を理解しましょう。 そして、無礼極まりない隣国に抗議しましょう。
antか何かで複数のjarファイルを一つのjarにまとめるって事はできますか? 単にいっぱいあるjarライブラリを全部classpathに設定するのがめんどくさいって理由なんですが。
一度解凍してもう一度Jarにすればできるけど・・・・ > 単にいっぱいあるjarライブラリを全部classpathに設定するのがめんどくさいって理由なんですが。 この考え方、何か間違ってないか???
ライセンスが問題なければ解凍してぶっこむだけ JBuilderあたりこのへんうまくやってくれてたなぁ GPLに注意しなされ
Linuxのコマンドライン上から使いたいのでライブラリがいっぱいあるとめちゃ長くなってしまうんですよね。 シェルスクリプトでやれば良いんですけどそれでも長くて美しくなかったもので。 コマンドラインでもwarみたいに固めることができれば良いんですけどね。まぁwarとは目的がちょと違うような気もするけど。 一つのjarにまとめるのがメジャーではないって事は邪道って事でシェルスクリプトに逃げることにします。 ありがとうございました。
>>756 それでjavaを選らんだのは凄いと思う
>>757 そうですか?研究所なんですけど割とJava使ってる人多いですよ。
あとGUIアプリだと人によってデスクトップマシンがWin,Mac,Linux混在しててもちゃんと動くのでJavaは重宝してます。
759 :
デフォルトの名無しさん :2006/02/21(火) 17:06:23
どなたかお力をお貸しください。 私、現在、javaでjacobを使って自作のActiveXのメソッドを呼び出そうとしております。 ここで、以下のエラーの原因がわからず途方にくれています。 com.jacob.com.ComFailException: A COM exception has been encountered: At Invoke of: Start Description: ?v???I??G???[??・?B at com.jacob.com.Dispatch.invokev(Native Method) at com.jacob.com.Dispatch.invokev(Dispatch.java:888) at com.jacob.com.Dispatch.callN(Dispatch.java:524) at com.jacob.com.Dispatch.call(Dispatch.java:604) at com.jacob.activeX.ActiveXComponent.invoke(ActiveXComponent.java:425) at jacobtest.AmiTest.runTest(AmiTest.java:60) at jacobtest.AmiTest.main(AmiTest.java:12) 呼び出し側のソースは単純に以下のようになっています。 ActiveXComponent amiEx = new ActiveXComponent("MyActiveX.MyActiveXCtrl"); amiEx.invoke("Start",""); ActiveXはVC6で作成しています。 材料が少なくて判断が難しいかと思いますが、このエラーがどんな場合に 発生するのか、というだけでも教えていただけると幸いです。 ちなみに、バージョンに関しては、javaは1.3、1.4、1.5、jacobは 1.6,1.7,1.8,1.9,1.10を試しましたがいずれも同じでした。 ActiveX側に何か足りないものがあるのでしょうか。 ご存知の方いらっしゃいましたら、お願いします。
>>756 Linux、Unix限定なら
java -classpath .:`ls *.jar|xargs|sed 'y/ /:/'` foo.bar.Main
でいいじゃん。
>>760 おおっ、Linux使いらしいすばらしい解答ですね。
参考にしてみます。
Mustangからclasspathの指定に、ワイルドカード使えるんだったかね。 やったことないけど、JARファイルのマニフェストファイルに、Class-Path:を記述して列挙するとかは? で、実行時には、それの1つのJARを指定するとかどうだろうか。
実行時の引数が面倒だったらコードでクラスロードすればいいだけ
764 :
デフォルトの名無しさん :2006/02/21(火) 19:30:36
サーバー側でDBより取得したデータを元にCSVファイルを作成し、 クライアントに、ファイル保存のダイアログボックスを出して保存 してもらう処理を作りたいのです。 今、サーバの方にCSVファイルを保存し、それをJavaScriptでwindow.openで 指定しているのですが、ブラウザで開いてしまいます。 ファイル保存のダイアログを出すにはどんな方法があるのでしょうか?
>>764 Content-Type, Content-Disposition
>>765 そんな設定があるんですね。明日、試してみます。
ありがとうございます。
そもそも「JavaScript」という点でなんとかサーバーというのが WEB(AP)鯖を指すのが分かるからまだいいが 何のサーバーなのかとかちゃんと状況を説明しよう
>>764 ,
>>765 クライアント環境によってはどうあっても意図しない動作になる場合があるから、
エンドユーザときちんと打ち合わせしたほうがいいですよ。
inlineとかattachmentあたり。
>>766 >765の方法はJavaScript使わないから、調べ方間違わないようにね。
769 :
デフォルトの名無しさん :2006/02/22(水) 00:05:32
J Tabbed paneでタブの所を縦にして文字も縦書きにしたい場合どうすればいいんですか?
>>769 Mustang(Java SE 6)まで待て。
771 :
デフォルトの名無しさん :2006/02/22(水) 00:27:19
よくわかんないとこあるから教えてください。 マルチスレッドの場合(WEBアプリは特に) static なメソッドって、シンクロナイズドしないと危ないの? 基本はさ、フィールドまったくないクラスだったら全部staticメソッドにしていいんだよね? メソッドの引数に何かをインスタンス参照して、メソッドの中で、その引数でもらったインスタンスの内容を書き換える処理があると、 書き換わる(書き換えよう)ときに、別スレッドがそれ使おうとして危ない。 って感じなのかな? なんか噛み砕いて説明してほしい。。。
772 :
デフォルトの名無しさん :2006/02/22(水) 00:35:02
参照を受け取ったインスタンスの属性なりを書き換えるとき 普通はそのインスタンスのメソッドを使うんじゃない? で、そっちで排他制御するものだと思う
>>771 >基本はさ、フィールドまったくないクラスだったら全部staticメソッドにしていいんだよね?
できるかできないかじゃ、そうできるけど、オブジェクト指向から外れてますよ。
ユーティリティでそういうメソッドの集合としてだけクラス定義することもあるけど、例外的な状況だと思う。
で、質問の件に関してですが。synchronizedはインスタンスの中身について排他制御するって考えてみては。
だから複数スレッドから利用するインスタンスの内容を書き換えるところで排他かけるわけで、staticとかは
関係ないかと。
でもstaticメソッドだけのクラスで、インスタンスはスレッドで共有…って、すごく限定された状況ですよね。
774 :
デフォルトの名無しさん :2006/02/22(水) 00:39:26
クラス変数って変数に格納できますか? System sys = System; ↑右辺のSystemが解決できないと起こられる 出来ない?書き方が違う? 名前省略して使いたくて。。。
>>名前省略して…… J2SE 5 の static import 使えよ J2SE 1.4 以下は出来ないで FA
>>774 Systemはクラス名で、さらにインスタンス生成できないクラス。
778 :
771 :2006/02/22(水) 00:48:13
>>772 >参照を受け取ったインスタンスの属性なりを書き換えるとき
>普通はそのインスタンスのメソッドを使うんじゃない?
>で、そっちで排他制御するものだと思う
確かにそうです。普通そうですね。なんか変な考えしてました。すいませんでした。
>>773 >だから複数スレッドから利用するインスタンスの内容を書き換えるところで排他かけるわけで、staticとかは
staticかはカンケイない・・・なるほど。
わたしの言葉も変でしたが、”インスタンスの内容を書き換える”ってのは、フィールドの内容を書き換える
ってことですよね。
誰か忘れちゃったんですけど、staticなメソッド作らないほうがいいよスレッド理解してないなら。
staticメソッドは排他されなくなるからマジやめろーインスタンス化して使えよ
って言われて、こんな疑問が出来ちゃいました。
解答くれた人のおかげで少しは認識が変わりましたが、もう一個質問・・・・
class A { void test(){} } ってクラスがあったら、こいつのtest()てメソッドは、
インスタンス化されるごとに、メソッドの処理が書かれたメモリ位置は違ってて、
マルチスレッドカンケイなく排他制御かかるんですか?
(排他制御がかかるというか、、、スレッドで共有していないからそもそもが安全)
ってことでいいんです?
お願いします
(正確ではないが)今のレベルで理解できるようにわかりやすくいうと 共有してなければインスタンスごとに別とかんがえていい 逆に複数のスレッドからのアクセスがある場合は排他制御が必須 たぶん、Javaの基礎から勉強するのが一番の近道だと思うぞ
>>779 解答ありがとうございます。
>たぶん、Javaの基礎から勉強するのが一番の近道だと思うぞ
ですね。VMから学びなおします。
ただ、ひとつ。。。Cでlinuxのgnu使って開発してたときはあまり疑問でなかったのですが
>共有してなければインスタンスごとに別とかんがえていい
>逆に複数のスレッドからのアクセスがある場合は排他制御が必須
正確でなくてやさしく解説されましたけど、これが一番イメージしにくいです。。。。
forkやexit使った排他は、Cのコード上イメージできて、実験しつつ理解を深めていけたのですが、
(あー壊れちゃった。お、ロックかかってる時間も計測できた。などなど。。。)
javaはなんかコードのイメージが出来ない。。。
共通していれば排他が必要。ってのは言葉上OKですが、共有したインスタンスを操作するためのコードが
なんか書きづらい。というかかけないのです。
スレッドって、、、、Threadクラスの継承とrunメソッドオーバーライドの二つしかないんですよね?
これが裏でどう動けばスレッドに共有のメモリを扱えるのかわからないです。。。
今思うと、ソースコード見ちゃえばいいのかな。
わたしはいろんなところを掻い摘んで並行して学習しているので、微妙な知識のままスレッド勉強してるから
変な理解しか出来ないのかもしれません。
まだCのコードも途中ですし。。。
今日は寝ます、ネット環境なくなるのでもしかしたら1ヶ月ぐらい見れないかもしれませんが、ありがとうございました。
781 :
774 :2006/02/22(水) 01:20:25
レスどうもです。 勝手に出来ると思い込んでました。 ちゃんと勉強しなきゃですね。。。
static は排他されないって俺もよく聞いたな。 もち迷信だけど、どこで広まったんだろう。 排他されなかったらInteger.parseIntも使えないんだがな。
Immutableな物だからじゃね?
synchronized つけなきゃ static でも同期化されないわけだが、何か毒情報出してないか? つーかなんでそこで Immutable?
>>780 > forkやexit使った排他は
それは並行処理なだけであって排他処理ではないな。
Cでも排他についてわかってなかったんじゃないか?
聞かれたことだけ答えとけ。
>>782 > 排他されなかったらInteger.parseIntも使えないんだがな。
Integer.parseInt が排他されているとでも思ってるのか、ボケ。
>>共有してなければインスタンスごとに別とかんがえていい >>逆に複数のスレッドからのアクセスがある場合は排他制御が必須 >正確でなくてやさしく解説されましたけど、これが一番イメージしにくいです。。。。 正確な解説だと思うが.... そもそも何に対して排他制御してるのか考えてくれ。プログラムならなんかの変数値だろう。 読み込みと書き込みが両方可能な場合、その変数値にアクセスするメソッドは、すべて排他 制御されてないと、スレッドセーフではない。 だからある変数aにアクセスするgetA()やらsetA()やらperformA()やらなんやらは全部排他を かける。 変数が分かりにくかったら、物理ファイルだと思え。 たとえばfork()した複数のプロセスがすべて、同一のファイルを読み書きする場合、そのファイ ルにアクセスする部分はすべて排他制御がかかるだろ(ロックファイルの作成とかチェックとか)。 同じように、複数のスレッドが同一の変数にアクセスするなら、そのためのメソッド類ではすべて なんらかの排他制御を考えないといけないということ。 あとはチューニングとして排他のかけ方を工夫していく。書き込みと読み込みのロックをわける とかいろいろ。でもそれは、まずは基本の排他をやってからの話だろう。
>>784 >synchronized つけなきゃ static でも同期化されないわけだが、何か毒情報出してないか?
静的な synchronized なメソッドにアクセスしているのに、
なんで、別スレッドがインスタンスの synchronized なメソッドにアクセスできちゃんだよ!
とか、思ってるおバカさんを想像してみた。
>>789 勝手に捏造すんな。誰もインスタンスメソッドとの絡みなんか言及してない。
791 :
789 :2006/02/22(水) 02:24:59
>>782 >static は排他されないって俺もよく聞いたな。
>もち迷信だけど、どこで広まったんだろう。
ああ、こっちの話の流れなアンカー不適切でスマソ
kokoroeta
793 :
デフォルトの名無しさん :2006/02/22(水) 05:14:48
java初歩的な質問で申し訳ないのですが for(i=0;i<5;i++){ int x=0; ←ここでxにiをどんどん入れる様な式が知りたいんです System.out.println(x); } 表示結果は 1 3 6 10 みたいな感じです
int x = 0; for(int i=0; i<5; i++){ x += i; System.out.println(x); }
795 :
793 :2006/02/22(水) 05:27:17
とてつもなく基本かもしれないが腑に落ちない…javaアプレットでのお話さ。 自作のクラスでマウスアダプタを覆ってみようとして起こったエラー。 public class MiniApp extends Applet{ mouse m = new mouse(); public void init(){ addMouseListener(m.mouse()); ...} public class Mouse extends MouseControl{ public MouseControl Mouse(){ return super(this);} public void PushedObject(){repaint();}//オーバーライド } } class MouseControl extends MouseAdapter{ public void mouseClicked(MouseEvent me){...PushedObject();} public void PushedObject(){} } なんでsuperが先頭文じゃないというエラーが出るんだ… returnやthis抜いても出るし、そもそも先頭文の判別基準は何なのだろう?
return this; だけで良い。
798 :
796 :2006/02/22(水) 05:53:03
デバッグ中ですがクリックに反応したので大丈夫でしょう。 thisだけで良い理由は自分で考えます。ありがとうございました。
799 :
デフォルトの名無しさん :2006/02/22(水) 07:01:38
参照型変数には具体的に何が格納されているのでしょうか? もしメモリアドレス的なものが格納されてるのでしたら それをlong型変数(64bitならば)乃至int型変数(32bitならば)にその数値を代入して標準エラーに出力したいのですが どうすれば実現できるでしょうか
>>799 無理。言語規定でも、VM規定でも参照は参照としか扱えない。
VM規定では参照をintとして扱うようなバイトコードを見つけたら
バイトコードベリファイアがエラー吐けって書いてあるし。
そうですか・・ if-elseによるinstanceof演算子が美しくないので、 アドレス数値として扱えればより簡略化できると考えたのですが 素直に従来の方法で場合分けしていきます
instanceof演算子はそのクラスのインスタンスかどうか判定するもの。 アドレス数値がわかってもそのクラスのインスタンスかどうかわからない。
>>803 どうせ使うなら、System.identityHashCode()
まあ、結局 int で表現できる数以上のオブジェクトを作ったら、
絶対重複が出てくるだろうけど
JAVA初心者です。 ソケットのaccept()で待っているスレッドがあるんですが それ以外の外のメソッドで、プログラムを終了させたいんですが accept()で例外が出るようです。 ソケットをclose()してからexit()すればいいと思っているんですが うまくいきません。 なにかいい方法ありませんか?
Graphics2D g= (Graphics2D)newimage.getGraphics(); g.drawImage(image,AffineTransform.newimage.getWidth()/image.getWidth(),newimage.getHeight()/image.getHeight()),null); で、描画した画像が拡大されてないのですが どこを修正すればいいのかわかりません。 ちなみに、imageとnewimageは大きさは縦横共に違います。
808 :
807 :2006/02/22(水) 12:55:50
newimageの大きさを 縦imageの縦幅*整数、横imageの横幅*整数 としたら拡大されました。 整数の部分を小数にしてintに丸めるとダメな模様。 もっと細かく拡大したいのですが、どうすればよいのでしょうか?
g.drawImage(image, AffineTransform.getScaleInstance( newimage.getWidth()/image.getWidth(), newimage.getHeight()/image.getHeight() ), null);
g.drawImage(image, AffineTransform.getScaleInstance( ((double)newimage.getWidth())/image.getWidth(), ((double)newimage.getHeight())/image.getHeight() ), null); だった
>>810 うまくいきました。ありがとうございます。
>>799 どうしてもやりたいなら native メソッドを作ってそこで自作すればいい。
public class Soc{ public static void main(String[] args) { System.out.println("test"); } } このソースをコマンドラインからコンパイルさせたんですが コンパイルは通るものの、以下のようなメッセージが出て、実行できません。 d:\java\java Soc Exception in thread "main" java.lang.NoClassDefFoundError: Soc お助け下さい。
814 :
デフォルトの名無しさん :2006/02/22(水) 14:55:10
816 :
デフォルトの名無しさん :2006/02/22(水) 17:01:07
J tabbed pane のタブの文字をStringTokenizerを使って縦の文字したいのですが どうしたらいいのでしょうか?
StringTokenizer を使っても縦にはなりません。
818 :
デフォルトの名無しさん :2006/02/22(水) 17:13:33
>>817 そうですか・・。
J tabbed pane のタブの文字を縦文字にする方法はないんですかね?
<HTML>縦<BR>読<BR>み</HTML> 出来るか知らんがこれでどうだ。
>>718 エクスポート、JARで
いけるが
おすすめはFatJAR
ただしこれを使うとテストするたびにJARの生成にものすごく
時間がかかるという諸刃の剣
>>820 諸刃どころか一方的に切られる剣のような。
テストのたびに時間かかるって致命的っしょ。
822 :
デフォルトの名無しさん :2006/02/22(水) 19:32:04
とりあえず、javaの入門編が終わってクラスオブジェクトの概要、スレッドの使い方を 覚えたところですが、本屋でGUIプログラミングの本を見つけて買ってきたんですが、 Swingでした。 Awtはすっとばして勉強しても問題ありませんかね?
AWTの上でなりたっているものだし、AWTの一部のクラス使うけどな
824 :
822 :2006/02/22(水) 19:34:50
質問の仕方がおかしかったかも。 いきなりSwingから入ってる入門書で 勉強してよろしいんですかね?
入門書ならそのAWT含めて解説してるだろ
入門するならAWTを大切に
良いんじゃねーの?変に AWT で逃げる癖付かなくて。
>>824 その本が〜2とか言う名前で、実は1でAWT説明しました、というのでなければいいよ。
他の人も言ってる通り、必要なところではAWT使うだけだろうし。
829 :
822 :2006/02/22(水) 20:06:43
変数の宣言とかで int[] tmp; と書くのと int tmp[];と書くものを見かけるけど これって意味としては両方同じなんですか?
同じ。ただし後者はCの記法が抜けないロートル用
チャットのプログラムを作ろうとしていたんですが サーバー側を server = new ServerSocket(10000); server.accept(); としているところに、自分でクライアントも起動して socket = new Socket("localhost",10000); でやると繋がるのですが 友人にグローバルアドレスで試してもらうと繋がらないのですが これはどうにかなるのでしょうか?
>>831 なるほど、C言語ね。自分はC言語から入ったから、意味は分かったのだが
なんかいくつかの参考書を見ると、両方のタイプを見かけたんで
何か大きな違いがあるか気にはなったもので
そのある本には
main(String args[]) と書かれているけど int[] tmp;って書かれていたりするのだが
型によって違うんかなぁとか思っちゃったり
元はchar* argをchar arg[]とか書いちゃマイナーCウザで、 ついうっかりC風に書いちゃった、に一票
strutsでCSVよりデータを読み込み、DBに登録しようとしています。 CSVファイル5個から1つのDBに登録するので、どこかにCSVのデータを 保存しておきたいのです。 件数は数十万件になるので、メモリはおいておくのは厳しいかなと 思ってるのですが、何かいい方法はありますか?
>>832 ネットワーク環境が分からないからエスパー回答するけど、
NAT or ファイアウォールのどっちかが影響してるんじゃない?
DMZ とか 静的NAT とかでぐぐってみたら。
>835 件数がそれだけ多いんだったらオンラインじゃなくてバッチでやったほうが いいんじゃないかと思ってしまうんだけど。。
>>833 SJC-Pではその辺の問題が出るよ。
int[][] a, b[][];
でそれぞれの次元数を聞かれたりとか。
sはソケットのとき、 s.getInetAddress().getHostAddress() は、 ソケットsのメソッドgetInetAddress()のメソッドgetHostAddress() ってことですか? こんな書き方ありなんですか?
InetAddress addr = s.getInetAddress(); String host = addr.getHostAddress(); ↓ String host = s.getInetAddress().getHostAddress();
booleanのラッパクラスって他のラッパと比べて使い道がいまいちわからないのですが、 一体どのようなときに使うのですか。
>>799 よくメモリアドレスをどうのこうのって話が出てくるけど、
JavaではGCがメモリ上でオブジェクトを動かしまくるから
普通に考えればそんなものはとれるはずがないし
とれたとしてもまったく意味がない。
>>842 Collectionに突っ込むときや、Object[]な配列に突っ込むとき。
「突っ込むとき」と覚えればよい
>>842 答えになっていないけど、使い道を気にするようになったら負けだと思う。
846 :
840 :2006/02/23(木) 01:57:52
>>844 そういえばIntegerとかCollectionに突っ込みますね。
Booleanでやらない理由がなかった。
Object[]に至ってはオートボクシングの恩恵を忘れていました。
>>845 確かに。
精進します。
>>842 Boolean.TRUE.toString()で文字列"true"を取るとき。
Boolean.getBooleanValue(String str)で文字列をbooleanに変換するとき。
RMIとJNIで質問させてください。 以下のような簡単なRMIクライアントを作成しました。 javaコマンドでmain()を実行するとgetValue()の値が取得できるのですが VC++アプリからJNIを使用してgetServerValue()を呼ぶと lookupでUnmarshalExceptionが発生してしまいます。 なぜ同じ関数なのにJNIでVC++アプリから呼ぶとエラーになるのか 原因わかる方いたら教えていただきたいです。 public class HelloRMI { public static int getServerValue() { HelloRMI obj = (HelloRMI)Naming.lookup("rmi://localhost:1234/hoge"); return obj.getValue(); } public static void main(String args[]) { HelloRMI hrmi = new HelloRMI(); int rtn = hrmi.getServerValue(); } }
多分クラスパス
851 :
デフォルトの名無しさん :2006/02/23(木) 07:20:13
すみません。 編集中のコードが読みやすいから、という理由だけで、 長い文字列を + 演算子で結合して宣言するのは、よくないことですか? たとえば、 String str = "ある朝、グレゴール・ザムザがなにか胸騒ぎのする夢からさめると、\nベッドのなかの自分が一匹のばかでかい毒虫に変わってしまってい\nるのに気がついた。" のような宣言を String str = "ある朝、グレゴール・ザムザがなにか胸騒ぎのする夢からさめると、\n + ベッドのなかの自分が一匹のばかでかい毒虫に変わってしまってい\n + るのに気がついた。\n"; みたいにしたらあとで読みやすいかな、と。 あと、Stringの宣言には最大どれくらいの長さの文字列を入れられるんでしょうか。 相当長い文字列を読み込むときは、String を使わずにこうやれみたいな、定石があるんでしょうか。
>>851 String str = "ある朝、グレゴール・ザムザがなにか胸騒ぎのする夢からさめると、\n" +
"ベッドのなかの自分が一匹のばかでかい毒虫に変わってしまってい\n" +
"るのに気がついた。\n";
(リテラル閉じようね。)
この場合
String str = "ある朝、グレゴール・ザムザがなにか胸騒ぎのする夢からさめると、\nベッドのなかの自分が一匹のばかでかい毒虫に変わってしまってい\nるのに気がついた。"
と同じようにコンパイルされる。
\nそのまま使うの気持悪いな。
1.5からは+演算子で十分なんだな でも、まだ1.4使ってるんだよなあ・・・ 次のプロジェクトから1.5にしてみるか
セッションとタイムアウトに関する質問です。 今、ログイン、ログアウト機構を持ったシステムを作っています。 ログアウトやタイムアウトの際に一定の処理(一時ファイルの削除)を 行いたいと思っています。 HttpSessionBindingListener の valueUnbound を使ってセッションが無効になる タイミングを得ることができそうなのですがわからない点があります。 session.invalidate();を行った場合はvalUnboundに処理が飛んできてくれて予期した通りでした。 次の自分の予想では、ログインしてそのままほっといてタイムアウト時間経過した時点 でvalUnboundに処理が飛んでくると思ってました。ところがそのような動作はしません。 セッションタイムアウトとvalUnboundの関係を教えてもらえないでしょうか。
>>856 セッションタイムアウトはどうやって判別してるの?
>>857 画面遷移処理の際に
-------
HttpSession session = request.getSession(false);
if(session==null){
「セッションがタイムアウトしましたログインしなおしてください」画面に飛ばす
return;
}
通常の遷移先の画面に飛ばす。
--------
っていう風にやってます。そもそもこの手法が間違い?
文字化けついての質問なのですが JIS補助文字をIE等のブラウザから受け取り それをcsv形式のファイルに書き出すプログラムを 作成しているのですが、エンコードを かけても文字化けしてしまします。。 コレについては対処はないのでしょうか 例 杝と言う字をブラウザから 受け取ると&#26461; と言う文字列がcsvファイルに出力される。 どなたか分かる方がいらっしゃいましたら 教えてくださいお願いします。。
ちゃんとWindows-31Jで受け取って、出力も同じエンコードにしてるか?
862 :
デフォルトの名無しさん :2006/02/23(木) 13:09:26
Java でMIDIファイルを演奏させたいのですが、Java内臓の デフォルトのデバイスで鳴らすと音が非常におかしくて使い物にならず 外部デバイスで鳴らしたいのですが、 MidiSystem#getMidiDevice で取得したGS音源デバイスから getReceiver() メソッドで、そのレシーバを取得して MidiSystem#getSequecerで取得したデフォルトのシーケンサに getTransmitter().setReceiver()で、その外部デバイスのレシーバを 設定したのですが、 相変わらず元のデフォルトデバイスで演奏されてしまいます。 シーケンスからMidiメッセージを取り出して、自分で外部デバイスに 送る手法はかなり面倒で避けたいので、何とかデフォルトシーケンサで 外部デバイス音源を使いたいのですが、誰かやり方をしってる人がいたら 教えてください。
>>861 レスありがとうございます。
JSP側では、Windows-31Jでエンコードをして
値を渡しています。
値を受け取ったJava側でも
下記のコードのようにWindows-31Jでエンコードを
行っています。
new FileOutputStream(FilePass + "Rpf06.csv"),"Windows-31J");
ですが、文字化けをしてしまうようです。
ただHTMLソースでみると
杝と言う字が、&#26461;
と言う風に表示されているのが
ちょっと気になっています。。
>>860 その文字、Unicodeにしかないぞ
文字コードを変えるしかないな
>>864 UTF-8,UTF16等で
エンコードすれば良いと
言う事でしょうか?
>>866 ありがとうございます。
それでは試してみます。。。
868 :
デフォルトの名無しさん :2006/02/23(木) 20:11:08
よく「currentTimeMillisメソッドで経過時間を取得できる」みたいなことが一般的に 言われていますが、この値ってOSの時間を変更しちゃうと連動して変わってしまいますよね? Windows APIのGetTickCountのような「システム起動時からの経過時間」に相当 するJavaのメソッドってないのでしょうか? Javaアプレットで使用したいのでGetTickCountを呼び出すことができなくて困っています。
869 :
デフォルトの名無しさん :2006/02/23(木) 20:41:07
URLエンコードされた任意の文字列から文字コードを取得することは可能でしょうか? たとえば「ニュース速報」をEUC-JP、UTF-8でエンコードしてみます、 [EUC-JPの場合] %A5%CB%A5%E5%A1%BC%A5%B9%C2%AE%CA%F3 [UTF-8の場合] %E3%83%8B%E3%83%A5%E3%83%BC%E3%82%B9%E9%80%9F%E5%A0%B1 この%A5%C…などといった文字コード不明の任意の与えられた文字列から文字コードを判別したいのです。 良い方法、もしくはヒントをいただけたら幸いです。
>>869 文字コード 判別
などでぐぐってから再質問? すでにJavaの領域じゃない気もするが
>>870 はい、Googleでいろいろ検索してみましたが解決には至りませんでした。
>すでにJavaの領域じゃない気もするが
やはりそうですよね・・・。お返事ありがとうございました。
>>869 最初 utf8 でやってみて駄目なら JISAutoDetect をやってみるとか。
(完璧ではないが、だいたいはできそうな気がする)
String[] encs = {"utf8", "JISAutoDetect"}; // 試してみるエンコード
String u = "(URLエンコードされた文字列)";
String s = null;
for (int i = 0; i < encs.length; i++) {
try {
s = URLDecoder.decode(u, "utf8");
break;
} catch (UnsupportedEncodingException e) {
}
}
あ、間違えた。
間違えた個所分かるよな?
>>872 の間違い部分は適当に読みかえてくれ。
>>855 どういうことだ?
5.0でも+連結はもちろん重いぞ
かなりの回数ループする中で連結するなら+は使わないほうが
逆にネックになりそうにない場所でStringBuilder使って可読性下げるのもタコ
875 :
デフォルトの名無しさん :2006/02/23(木) 22:04:04
すみません、教えてください! 下記のプログラムを組んだのですが、strとstr2に入っている文字は同じなのに elseへ抜けてしまいます・・・どうすれば、charAtを使い、同じ文字にすることができますか? class test1{ public static void main(String args[]){ String str = new String("あいうえおX"); String str2 = new String(); int a=0; while(true){ str2 = str2+str.charAt(a); if(str.charAt(a)=='X')break; a++; } if(str==str2){System.out.println("おなじか"); System.out.println(str); System.out.println(str2);} else {System.out.println("同じじゃない・・・"); System.out.println(str); System.out.println(str2);} } }
それ1.4時代でもコンパイルで連結してくれるだろ 5.0でそれが解決されたわけではなくStringBufferよりスピードが出る可能性のある StringBuilderが導入されたというだけ
>>871 居なさそうだけど、ぐぐれば文字コードの話がいくつか載ってるし
コードの重なり具合を図にしたものもあるというのに
# 根本的解決になってないですね、はい
いままで synchronized の付いてる/付いてない程度でプロファイラ上に 表れるようなパフォーマンスの向上は見たことないけどなー
2つの画像を同時に違う動きをさせるにはどうしたらいい?bounceを使いた いんだけど。
別々に動かせばいいと思うが。
>>871 バイト列に直してからenc&decで元に戻ればおk
884 :
881 :2006/02/24(金) 00:10:51
どうやって別々に動かすの?x,yをどうすればいいのかわからない。
z,wも使えば?
二つのことを同時にする→非決定性 現在のノイマン型PCには無理
>>884 2枚の画像には2つの画像用パラメータが必要。
動作用のパラメーターを一つ用意する。
動作用から、それぞれの画像用パラメータへの変動値を調整しておく。
この状態で、動作用のパラメータをいじくると、それぞれの画像用パラメータが変わって、
擬似的に別々に動いているように見える。
>>872 『UTF-8 としてデコードしようとして失敗』は
UnsupportedEncodingException じゃない。
『UTF-8 というエンコーディングをデコード用に使用出来なかった』が
UnsupportedEncodungException だ。
100% 例外が起きないだけで文字は表示しようとする時に化ける可能性が充分あるぞ。
889 :
デフォルトの名無しさん :2006/02/24(金) 03:22:05
Hello World! って表示できるところまでやった 次は何やれば良い?
たまにでいいので、実家のお母さんに連絡してあげてください。
>>889 package宣言してHello World!か、簡単な計算(値固定)して結果を表示する。
というかお前、入門を全部スレで済まそうというのではあるまいな。
>>891 >package宣言してHello World!か、簡単な計算(値固定)して結果を表示する。
ふむ、やってみる。ってかな、一応C言語でshort double とか
char string とか経験あり。関数の定義とかもね。
だからCでは出来ないが Java で出来るものを追求していきたいってところ
Cもろくにできてないと思われ
Cアレルギーきたこれ
>>893 Cったって、コマンドラインで文字を表示するくらいのCUIじゃ
やれることが限られてくるわけよ、そこから脱しようとしているだけで
基本的なアルゴリズムは一通りやったよ
最終的に問われるのは、各々の言語の特質をしっかり理解して
それに応じた効率の良い処理を行うソースの記述だと思うがね
いくら見た目が派手でも、中身がぐちゃぐちゃじゃどうしようもないしね
そんだけでいいなら良いけど。 一つでいいから、どんな言語でも良いから 他人に見せられるプログラム作ってみそ。 そこが始まりだから。
このスレは多言語コンプレックスな方が多数おられます。 特に C/C++ を引き合いに出すのは馬鹿が荒らしに来るので御法度です。
CUIをバカにしてはいかんな。 GUIのほうが不便になることもある。 やるかどうかは別にして、Cでできないものはないと考えるべき。 UNIX系だとCUI画面だけでなんでもできるしな。 とある処理でWindowsのGUIに悩まされたこともあるな。
なんか見た目でこだわっている人がいるが CUI たって、入力された数値から出力された結果を文字で表しているだけであって GUIにしたってそれがグラフィカルに表現できるもので表されているものがあって ソースの中身、アルゴリズムは共通する部分が多いよ ただ、文字列だけでの表現は、複雑な表現をする場合は不向きだけど なんなら、4行4列の15パズルをCUIでやれないことはないが 数字を動かすたびに動かした後の結果を新しく画面がスクロールされて 表示されるってのは、ユーザにとっては煩わしさを感じるかなw
CUIで関数電卓作った俺が着ましたよ
>>874 なるほど。
基本今まで通りで、StringBufferをStringBuilderにすればいいんだな。
っ[ オペレータをオーバーライド ]
903 :
881 :2006/02/24(金) 09:58:09
参考書に2次元配列とか書いてあったんだけど?
>>902 っ [C++とかC#とか間違ってる]
>>903 > 参考書に2次元配列とか書いてあったんだけど?
なにか問題でも?
SunJavaの最新ランタイムとGeForceの最新ドライバの組み合わせで、 JavaVM起動時に画面がぐちゃぐちゃになる現象が起きてるんだけど 他に同じことになった人いる? JavaランタイムをアンインスコしてMS VMにすると問題ない。 でもこれだとSunJavaの動作テストにならいんだよね。
>>905 OSとそれぞれのバージョンを書いてくれないと。
うちはWinXP HomeでNVIDIAのドライバ81.98のやつ、Sun J2SE 1.4.2_09/10, 1.5.0_06でいずれもまったく無問題。
Linux環境はNVIDIAのドライバ入れてないので未確認。
他OSはなし。
質問です。 int[x][y] int[y][x] 普通はどっちを使うんですか?
int[i][j]
二次元キライ!
三次元イイ!
>>907 どっちでも良いのだけど、CPUのキャッシュのヒット率を考えて、連続
アクセスされる方の軸を右に持っていきます。
for (int y=0;y<Y;y++)
for (int x=0;x<X;x++)
array[y][x] = ...;
or
for (int x=0;x<X;X++)
for (int y=0;y<Y;y++)
array[x][y] = ...;
>>906 XP Pro SP1、nVidia81.98、JRE1.5.0_06
JRE1.4.2_**のときでも、VM起動時に画面が数秒間ブラックアウトするっていう現象があって、
それでJRE1.5.0_06を入れてみたら画面が崩れて戻らなくなっちゃったんだよね。
OSそのものはフリーズしてるわけじゃなくて、VNCで繋いで画面のプロパティ更新すると
正常な画面に戻るっていう謎現象・・・。
自作のアプレットはまだそれで回復するけど、studio-radishの速度調査のサイトの
アプレットだと回復もしないでそのままあぼーんするから、コーディングの問題ではなさそうなんだけど。
ttp://netspeed.studio-radish.com/
913 :
デフォルトの名無しさん :2006/02/24(金) 15:47:10
ファイルの削除に関する質問です。 File.delete()を使ってファイルを削除しようとしても 他のアプリケーションが使用してるなどの場合でファイルが削除できない場合があると思うんですが。 こういう場合でも強制的にファイルを削除する方法をはありますか?
OS依存
OS側の処理じゃんそれって。 方法はあると思うが、Javaからつーのはめちゃくちゃ大変そう。
ありゃ、かぶったスマソ
コンパイルはできるんですが実行できません C:\java>java hello Exception in thread "main" java.lang.NoSuchMethodError: main CLASSPATHがいけないのかと思い調べてみると 実際には存在しない.zipが設定されてました。 OSはWindowsで1.5.0_06です
>>918 すいません。
ソースを見直してみたらどうみても(ry
920 :
917 :2006/02/24(金) 16:33:45
解決しました
>>920 どうおかしいのかは想像つくが、どう解決したかは書け。
オマエのレベルの初心者が見るかも知れないからだ。
結果を書かなければそういうやつがまた同じ質問をしてきて
無駄な書き込みが増える。
そんな奴は過去スレなんか読まねェよ。
つまり、うんこは寝て食えってことだな
基本的なスカトロのスタイルですね
926 :
875 :2006/02/24(金) 19:16:22
swingでTextAreaをいじっているものですが、教えてください! テキストに入力する、フォントの大きさを変えたいのですが どうすればできますか?
textarea.setFont(new Font("Dialog", Font.PLAIN, 72));
>927 ちょwwwやたらデカスwwwwww >926 しかしSwingはJTextAreaだぞ。細かい話だけど。
929 :
デフォルトの名無しさん :2006/02/24(金) 21:33:24
JPanelを継承したクラスのインスタンスを writeObjectでファイルに書き込んで、 readObjectで読み込んでJFrameだとかにペタッと貼り付けたりしたら 普通に表示はされるんだが クリックしたときの処理だとかが利かない。 クリックしたときの処理はJPanelを継承したクラスに書かれてる。 なんかこの症状の心当たりありませんか。
Beans だとリスナー関係はシリアライズの対象でなかったはず。
>>930 オオ! サンクス!
でもスクロールバーは動くのよね。
ワケワカメw
>>929 クリックした時の動作をどのように記述したかによる
無名クラスはシリアライズされませんよ?
934 :
933 :2006/02/24(金) 23:27:37
補足。イベント用のクラスを作成すれば、きちんとシリアライズに組み込まれます。
935 :
デフォルトの名無しさん :2006/02/24(金) 23:28:08
同じクラスのインスタンス同士だと、お互いのprivateのフィールドを 触りあえるよな? これって、よく本に書いてあるカプセル化とか情報隠蔽ってヤツを 実現してないだろ? privateのフィールドは、インスタンス自分自身のみが触れるのが、 正解でないかい?
>>935 一行目は正解。
二行目以降は設計の問題。
自分で作るクラスに責任を持てば、問題ない話。
>>935 クラス自身のインスタンスならどういう動きになってるか分かるから
さほど問題ない、ということなんだろうね
場合によっては手間も減るし
触れないと困る事ってのはたまにあるよね。 clone のオーバーライドでフィールドいじる必要がある時とか、 compareTo を実装するときに相手のprivateフィールドが必要なときとか。 いずれにしても > 自分で作るクラスに責任を持てば、問題ない話。 だし。
939 :
デフォルトの名無しさん :2006/02/25(土) 01:15:12
シューティングゲームで 自機に あたりを加えるには どうしたらいいのでしょうか、 あたったら ボカーンみたいな ( ;´・ω・`)人(´・ω・`; )
まず中学高校レベルの代数幾何をマスターしよう。
941 :
デフォルトの名無しさん :2006/02/25(土) 01:19:01
というか JAVA初めて パズルをつりおわった程度なので できたら Canvasとかを取り扱ってる 勉強サイトとかあったら 是非おしえてください お願いしますw
>>939 自機の位置とは別に、自機アタリ座標(上下左右)を用意。
アタリになる対象の物体がこの座標内に入れば、どかーん。
毎回の描画直前にアタリ判定すればヨロシ
943 :
デフォルトの名無しさん :2006/02/25(土) 01:23:58
NegocioClassで中身をコントロールして画面上に反映させれば いいんですね。
>>943 何言ってるか分からないけど、いいと思う
エスパー光臨
>>945 いや、出来なくても、自分困らないし
出来たら、もうけものじゃん
Shapeであたり判定取ればいいじゃん
BufferedReader#readLine() で読み込んだ最後の行が、 ファイル上では改行で終わっているかどうかを判断する方法を教えてください。 A(ファイルの終わり) と A(改行)(ファイルの終わり) を区別する方法です。
次の readLine() が null を返すかどうかで判定するしかない。 「ファイル内の空行は無視する」 という仕様でロジック組むのが無難。
>>948 ファイルの一番最後のバイトを取ってきて、
readLine で取得した文字列の一番最後と比較。
seek(ファイルの長さ - 1);
read()
>>949 > 次の readLine() が null を返すかどうかで判定するしかない。
それでは判定できません。
ああ、そういえばそうだな。 StreamTokenizer でも使えば? (まだあったっけ?)
テトリスを作りたい、何をしたら良い?
最初の給料で両親にプレゼント
>>948 そんな怪しげな仕様にするぐらいなら、readLine() 使わずに
新しいクラス作ったら?
ちょっとだけ簡単な質問させて C++の方が一段落したんで次にJavaの勉強始めようと思うんだけど JavaとC++ってコードの記述とかあんまり変わらないよね?
君の「あんまり」は私の「あんまり」と同じではありません。 最近 C/C++ 絡めた質問が多いけど Borland からの難民か?
そうは言われても俺の言う「あんまり」の定義を具体的に言葉で表そうとすると難しいんだよ ある程度C系に慣れたBorland製コンパイラ使いならまずVisualExpress無料版の方に走ると思う
だんまり決め込むぞ。
それじゃ似てるところが多いが違いもある、としか言えんがな。 構文よりも C/C++ で神経尖らせてたところが適当で良いのに最初は激しく 違和感・不安感を覚えるかもしれない。特にヒープ・スタック・参照(ポインタ)の 扱いあたり。
>>958 大事にCを勉強してきた人は、基本からJavaの勉強をすれば、
全く心配ないと思います。
概念を表す用語も使い方が違うかも知れませんし、
基になってる思想も違うところがあると思いますので、
手を抜いてもいいところは無いと思います。
理解しやすいとは思いますので、安心して勉強してください。
>>961 ありがと、十分分かった
メモリ関係の扱い方が一番大きな違いか
開放し忘れの多い自分にとってはうれしい限り
>>962 そう言ってもらえると安心
今度書店に行って入門書でも買って来る
965 :
964 :2006/02/25(土) 05:59:51
>>965 正直なんてレス付けるか迷ったwww
結構量があるなぁ。今の段階では見ただけで吐き気が・・
困ったときに見れるようにブックマークしとく、ありがとう
967 :
964 :2006/02/25(土) 06:08:52
おう、Java でエロゲ作ってくれYO!
>>964 PCソフト館なのにエロゲばっかり(・∀・)
>980は次スレよろしく。 >964(・∀・)ニヤニヤ
ムッハー
972 :
964 :2006/02/25(土) 21:39:54
ぽまいら、ニヤニヤすんなー、デジタルの世界の発展には 何かとエロは付きもんだぞ!
973 :
デフォルトの名無しさん :2006/02/25(土) 22:08:57
質問なんですけど、なんでIF文だけセミコロンをつけなくていいんですか? さっき、エラーの原因がわからなくて時間を無駄にしました。
if for はそれで終わりじゃないしね 中には中括弧で条件や繰り返しするコードを記述するわけだし
if文は条件分岐の予約語だからコンパイルするとき 計算する文だと認識されないんではないでしょうか 良く分かりませんが
中括弧は1段スタック積む
977 :
973 :2006/02/25(土) 22:49:20
forもせみころんいらないんですね。汗 道理でreturn null; が通らないわけだ。 public MenuItem[] getItem(int menu){ if(menu==0){ MenuItem[] item=new MenuItem[FILEMENU]; for(int i=0;i<FILEMENU;i++){ item[i]=mi[menu][i]; } return item; }else if(menu==1){ MenuItem[] item=new MenuItem[EDITMENU]; for(int i=0;i<EDITMENU;i++){ item[i]=mi[menu][i]; } return item; }else{ return null; } } さっきまでELSEのところに空の配列を作って、無理やり?コンパイルしてました。
>>973 それは、間違い探しです。
言語規定で決められていることは、白なモノは黒だと思っても白なのです。
if文という言葉は、ある範囲を示す言葉なので、見当違いなのかもしれませんが、
条件文は、一般的な文とは違いますので、今後とも注意してください。
>>977 配列の戻り値にnullを入れるのは感心しませんね。
while とかは・・・付くよね?
J2SE も J2EE も配列戻りで null 返す仕様のはよくあるけどな。
984 :
983 :2006/02/25(土) 23:13:47
すまん取り消す
986 :
980 :2006/02/25(土) 23:18:40
いや、俺のホストからじゃ無理ぽ、誰か頼むね 俺はここの住人じゃないし、立たなくてもどーでも良い感覚だし 無責任ですんません
Nullではなく、長さ0 の配列を返すってのが定石なんでないの?
おれもそういう局面では長さ 0 配列を返す派だが勝手に一般論化するな。 仕様が明確ならどっちでも良い。
その前にnew以外の重複したコードをまとめてくれ
しゃぁない。つくてきま
勝手に一般論化、というが、 Effective Java に載ってるくらい自明な原則を一般論化するなと言われても…。 ありうるかありえないか、という話じゃなく、 むしろnullを返したほうがいい状況が、一般的でないって話だろ。 仕様が明確ならどっちでも良い、などと自分仕様を押し付けてくるなっつーの。
そんな小手先ネタどっちでもいいよ
うちのプロジェクトではListや配列が戻り値でもnullを返してるよ。 最初は俺も空配列を返してたんだけど、 俺一人が悪いことしてるみたいなので悲しくてやめた。
いろんな人の設計と調整してりゃ、そんな Ineffective なトリビア「フーンアッソ」で終わるんだけどな。 机上のお勉強だけじゃなく実世界へ飛び込んでみような。
と火事場で必死な下流PGが言っております
(・∀・)ニヤニヤ
nullを返すとかは普通にあるな 空の要素とは区別したいときはある
999
教典主義者には通じなかったか orz
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。