- 1 名前:デフォルトの名無しさん mailto:sage [2008/08/10(日) 18:21:51 ]
- プログラミング言語Javaに関する質問スレです。
JavaScript, Ajaxの質問は、ここでは受け付けていません。 Web製作管理 pc11.2ch.net/hp/ Webプログラミング pc11.2ch.net/php/ をご利用下さい。 よくある質問 ・「コマンドまたはファイル名が違います」 「'javac' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。」 「Exception in thread "main" java.lang.NoClassDefFoundError: 」 www.wikiroom.com/java/?path,classpath ・String に == は使うな。equals() を使え。 ・「\12288 は不正な文字です。」 文字リテラル以外で全角スペースは使えません。半角スペースに。 ・その他の質問→「APIのjavadoc見ろ」 前スレッド 【初心者】Java質問・相談スレッド116【歓迎】 pc11.2ch.net/test/read.cgi/tech/1213347130/ 次スレは>>990あたりで。 過去ログ、関連スレッド、よくある質問とその回答など、 質問をする前に、貴方が見なければならないサイトについての情報は、 下のwikiのページにまとめてあります。 www.wikiroom.com/java/
- 82 名前:デフォルトの名無しさん [2008/08/13(水) 00:35:19 ]
- >>75
どうせ独学でしょ。sin[x]をcos[x]にするとかいってて、全然分かってないようだしw
- 83 名前:デフォルトの名無しさん mailto:sage [2008/08/13(水) 00:38:50 ]
- >>78
いや? 約分という正規化もしたいけどそれとは別に。 正確には文字列処理というべきだったか。 正規表現というから唐突過ぎたみたいだ。 だが合成関数など複雑な数式になると微分するときに正規表現も必要になるんじゃないのかって言いたかった。
- 84 名前:デフォルトの名無しさん mailto:sage [2008/08/13(水) 00:40:33 ]
- >>82
何が? あと、それだと配列になるぞ。 数値微分だったら簡単にできるだろ。 それとは別の、連続関数の微分のことを言ってるんだが。
- 85 名前:デフォルトの名無しさん mailto:sage [2008/08/13(水) 00:41:53 ]
- 正規表現という用語は文字列のマッチング用パターンを指すのでややこしいから別の用語を使ってくださいお願いします
- 86 名前:デフォルトの名無しさん mailto:sage [2008/08/13(水) 00:47:29 ]
- MatheticaだったかMATLABだったか忘れたけど
y = diff(sin(x)) と入力すると y = cos(x) と表示してくれる言語があった気がする
- 87 名前:デフォルトの名無しさん mailto:sage [2008/08/13(水) 01:04:46 ]
- 結局、ただの夏いやつだったんだよ・・・
- 88 名前:デフォルトの名無しさん mailto:sage [2008/08/13(水) 01:08:25 ]
- >>83
SICPの Symbolic Differentiation みたいなのをやりたいということかな? Schemeみたいに簡単にはいかないよ。自分で構文解析する必要がある。 構文解析してS式なり、構文木作ってしまえば、Schemeと大差は無いよ。
- 89 名前:デフォルトの名無しさん [2008/08/13(水) 01:16:50 ]
- >>84
配列とか言ってるようだけど、独学だとしても最低限mathmaticaぐらいは使えるようになってくれ。 それとその数値微分だと、入力が10^-12なら出力は10^-6の半分程度の精度しかないんじゃないか?
- 90 名前:デフォルトの名無しさん mailto:sage [2008/08/13(水) 01:19:57 ]
- >>89
javaスレだぞ・・・
- 91 名前:デフォルトの名無しさん [2008/08/13(水) 01:23:00 ]
- 数値計算はjavaでやるのが一番面倒がないね。ライブラリもそろってるし。
javaは、予約語だらけとかの他の複雑な言語に比べて簡単だからアルゴに集中できるけどね。
- 92 名前:デフォルトの名無しさん mailto:sage [2008/08/13(水) 01:44:06 ]
- >>88-89
そういえばMATLABを思い出したよ >>86は symbolic(x); y = diff(sin(x),x) と入力すると y = cos(x) になるやつだったかな。 SchemeとMathematicaは良く知らないがMATLABはよく触っていたから覚えている。 Javaで同じことができるライブラリをどこかで見つけたが有料だったので 諦めた記憶がある。どこのサイトだったかまでは覚えていない。
- 93 名前:デフォルトの名無しさん mailto:sage [2008/08/13(水) 02:55:25 ]
- >>91
アルゴリズムをアルゴと略す奴は、MZユーザではないだろうな。 気持ち悪い略し方だ。アルクワリズミが草葉の陰で泣いてるぞ。
- 94 名前:デフォルトの名無しさん [2008/08/13(水) 03:07:34 ]
- 流れをきって質問です・・・
Java自体が始めてまだ数ヶ月なのですが、ウィンドウアプリケーションを初めて作ってみました。 そこで、たとえば3秒ごとにウィンドウに今の時間を更新して表示するプログラムを作りたいのですが、いままでならスレッドで for(;;){ min=calender.get(Calendar.MINUTE); System.out.println(min); Thread.sleep(3000); } と書いたスレッドを実行させておけばよかったのですが、ウィンドウ型になるとどうしていいかわからなくなってしまいました・・・ 説明が下手で申し訳ないですが、 「3秒ごとに今の時間を取得してそれをウィンドウに表示させる」 というプログラムを作りたいです
- 95 名前:デフォルトの名無しさん [2008/08/13(水) 03:15:15 ]
- 正規表現とか使ってシンボリックに微分をやったり数値計算するよりも、その結果を数学の自然表記にする方が難しいんだけどね。
積分や分数を教科書どおりにウインドに表示するとか。
- 96 名前:デフォルトの名無しさん [2008/08/13(水) 03:25:44 ]
- >>93
アルコイズミとか出してきて、おまえのほうがキモイ
- 97 名前:デフォルトの名無しさん mailto:sage [2008/08/13(水) 09:33:54 ]
- >>94
1.時刻表示ができる窓を作る。 2.時刻を更新するメソッドを書く。 3.2を定期的に呼ぶスレッドを書く。 4.3のスレッドの生成と実行を書く。 だいたいこんな感じ。
- 98 名前:デフォルトの名無しさん mailto:sage [2008/08/13(水) 10:03:16 ]
- >>96
アルゴリズムの語源になった人だぞ < アルクワリズミ
- 99 名前:デフォルトの名無しさん mailto:sage [2008/08/13(水) 10:15:49 ]
- すみません、>>52なのですが
アプローチがそもそも間違っているとかこういう質問はこのスレへ行くのがいいとか そういった感じのことでもよいのでよろしくお願いします…… >>94 >>97さんの内容でいけると思いますが、表示をJTextBoxなどのswingコンポーネントでやる場合は SwingUtilities.invokeLater()を使わないと表示処理が正しく行われないので注意してください。。 (swingコンポーネントの大半のメソッドは、イベントディスパッチスレッド以外から呼んではいけないという決まりがある) homepage3.nifty.com/satoshis/java/swingtips/swing.html
- 100 名前:デフォルトの名無しさん mailto:sage [2008/08/13(水) 10:44:55 ]
- >>95
texとか知らないのか
- 101 名前:デフォルトの名無しさん mailto:sage [2008/08/13(水) 10:50:35 ]
- そのTeXという言語を作る仕事がものすごく難しい
- 102 名前:デフォルトの名無しさん mailto:sage [2008/08/13(水) 10:58:59 ]
- >>101
その難しいは、個人の能力が低い場合だろ・・・
- 103 名前:デフォルトの名無しさん mailto:sage [2008/08/13(水) 10:59:28 ]
- >>101
技術的に難しいという意味じゃねーじゃん
- 104 名前:デフォルトの名無しさん mailto:sage [2008/08/13(水) 11:40:43 ]
- >>101
そりゃ言語を作るのは、並大抵の難易度じゃないだろう。 けど、そういう話?
- 105 名前:デフォルトの名無しさん mailto:sage [2008/08/13(水) 11:46:01 ]
- 5.0から追加されたイグゼキュタって、時間を戻すと止まりませんか?
指定した遅延後に実行されるだけだと思うのですが、 どうもIO周りでブロックされているような気がします。 これだとNTPで時間を戻された時とかに使えないような? public class TestA implements Callable { private ScheduledFuture<?> future; private ScheduledThreadPoolExecutor pool = (ScheduledThreadPoolExecutor)Executors.newScheduledThreadPool(1); public static void main(String[] argv) { new TestA().start(); } public void start() { future = pool.schedule(this, 1, TimeUnit.MILLISECONDS); } private void run_() { System.out.println(sdf.format(new Date()) + ": running"); // !!!これがないと止まらないで動く ScheduledFuture<?> future2 = pool.schedule(new Runnable() { // 再スケジュール用のタスクセット public void run() { if (future.isDone()) { try { future.get(); future = pool.schedule(TestA.this, 1, TimeUnit.MILLISECONDS); // ユーザタスクの再スケジューリング } catch (InterruptedException e) { e.printStackTrace(); } catch (ExecutionException e) { e.printStackTrace(); } } } }, 0, TimeUnit.MILLISECONDS); } public Object call() throws Exception { run_(); return future; } }
- 106 名前:デフォルトの名無しさん [2008/08/13(水) 12:59:59 ]
- >>97
レスありがとうございます。 その、表示する窓についてですが、時間を更新する3秒ごとに描画し直さなくてはならず、 g.drawString(時間) も3秒ごとに実行させる必要があると思っています。このdrawStringもスレッドに組み込むのでしょうか? 質問が悪く、初歩的で申し訳ないです
- 107 名前:デフォルトの名無しさん mailto:sage [2008/08/13(水) 13:02:33 ]
- >>104
そういう話だった Yacc/flexで言語作っている奴のコードを見ていたら くそやばかった記憶がある。あれは並大抵の努力じゃ実現できないものだと思った。
- 108 名前:デフォルトの名無しさん mailto:sage [2008/08/13(水) 13:20:33 ]
- >>106
描画はpaintもしくはpaintComponentでする スレッドは3秒ごとにrepaintを呼ぶ
- 109 名前:デフォルトの名無しさん [2008/08/13(水) 13:42:27 ]
- >>102-104
ひまなんでしょww
- 110 名前:デフォルトの名無しさん [2008/08/13(水) 13:51:43 ]
- >>107
努力してるのかどうかよりも、何がくそやばかったのか分からないんだけど
- 111 名前:デフォルトの名無しさん mailto:sage [2008/08/13(水) 15:35:45 ]
- くそやばかったかどうかよりbison/flexでもyacc/lexでもない件
ていうかjavaスレなんだからどうせなら標準でjavaを吐くパーザジェネレータの話をしようぜ
- 112 名前:デフォルトの名無しさん [2008/08/13(水) 17:06:24 ]
- 質問です。
最近Javaをはじめたのですが 配列を今勉強していて、 ArrayListに突っ込み、それを拡張する方法はわかったのですが 例えば int[] num_array = new int[5]; とかやった場合に num_arrayの大きさ自体を変える事は出来ないのでしょうか?
- 113 名前:デフォルトの名無しさん mailto:sage [2008/08/13(水) 17:07:49 ]
- できない
新しく大きな配列を作って中身を移すしかない
- 114 名前:デフォルトの名無しさん mailto:sage [2008/08/13(水) 19:14:22 ]
- >>112
新規に大きな配列を作って中身をコピーする時に、 使っているのがJDK6以降ならjava.util.ArraysクラスにcopyOfというメソッドがあって、 num_array = java.util.Arrays.copyOf(num_array, 10); // サイズ10の配列を新たに作って中身をコピーしたものを返す みたいにできるのでちょっと便利。 元のnum_array自体を拡張するのではなく、サイズが変更されたコピーを返すところに注意。 配列は固定長であることに変わりはないので。 JDK5以前なら配列の作成とコピーのコードを自分で書かないといけない。
- 115 名前:デフォルトの名無しさん mailto:sage [2008/08/13(水) 19:41:06 ]
- >150
使い方が色々間違っているような気がする あとstdはどこに変数宣言あるんだ? future.get(); も激しくデットロックの香り
- 116 名前:デフォルトの名無しさん mailto:sage [2008/08/13(水) 21:14:07 ]
- >>115
縮めてみた。 import java.util.*; import java.util.concurrent.*; import java.text.SimpleDateFormat; public class TestA implements Callable<Object> { private ScheduledFuture<?> future; private ScheduledThreadPoolExecutor pool = (ScheduledThreadPoolExecutor)Executors.newScheduledThreadPool(1); public static void main(String[] argv) {new TestA().start();} public void start() {future = pool.schedule(this, 1, TimeUnit.MILLISECONDS);} public Object call() throws Exception { System.out.println(sdf.format(new Date()) + ": running"); ScheduledFuture<?> future2 = pool.schedule(this, 1, TimeUnit.MILLISECONDS); return future; } SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss" , Locale.JAPAN); } 遅延を0にすればとまらないのだから、デッドロックと言うことは無いだろう。 時刻に達したら制止が外れるようなので、 1,2秒さかのぼった程度なら、問題にならないだろうけど、 夏時間とかはどうなるだろ。 また、時計を巻き戻して、処理が止まってから、時計を戻してみた。 すると、1分間ほど経ってから処理が再開した。
- 117 名前:デフォルトの名無しさん mailto:sage [2008/08/13(水) 23:45:02 ]
- ThreadGroupのactiveCount()でグループに属するスレッドの数が取得できないのですが
これは仕様ですか? // スレッドグループツリーの作成 ThreadGroup g1 = new ThreadGroup("g1"); Thread t1 = new Thread(g1, "t1"); Thread t2 = new Thread(g1, "t2"); ThreadGroup g2 = new ThreadGroup(g1, "g2"); ThreadGroup g3 = new ThreadGroup(g1, "g3"); Thread t3 = new Thread(g2, "t3"); ThreadGroup g4 = new ThreadGroup(g2, "g4"); Thread t4 = new Thread(g4, "t4"); // g1スレッドグループに含まれるスレッドの数 System.out.println("g1.activeCount() = " + g1.activeCount()); 上記のプログラムを実行すると g1.activeCount() = 0 と表示されます。 参考書を見ると g1.activeCount() = 4 と表示されるとなっています ご教授お願いします
- 118 名前:デフォルトの名無しさん mailto:sage [2008/08/13(水) 23:47:41 ]
- startしていないthreadはカウントされない
- 119 名前:デフォルトの名無しさん mailto:sage [2008/08/13(水) 23:48:33 ]
- >>118
ありがとうございます もう一度試してみます
- 120 名前:デフォルトの名無しさん mailto:sage [2008/08/14(木) 00:07:48 ]
- 宣伝しにきたよ。
■■みんなでサイトつくろうぜwwwwwwww■■ 「お前ら一緒にサイト作ろうぜwwwww」 「2ちゃん越えるサイト作ろうぜww」 「仕事無いんだ・・・・・・」 「やろうぜ!」 「みんなでサイトつくろうぜwwwww」 gacco.o0o0.jp/ ex14.vip2ch.com/test/read.cgi/part4vip/1218612197/ 今日トップ絵作ったんだぜ! 興味沸いたらきてください!
- 121 名前:デフォルトの名無しさん mailto:sage [2008/08/14(木) 00:09:23 ]
- みんなでサイトつくろうぜwwwwwwwwww
みんなで本気でつくる気です。 がんばりましょう。 サイトのイメージはSNS×学校みたいな感じ。 サイトデザイン(案) ttp://www36.atwiki.jp/vipvipschool?cmd=upload&act=open&pageid=12&file=title.jpg ttp://www36.atwiki.jp/vipvipschool?cmd=upload&act=open&pageid=12&file=viploader744102.jpg ttp://www.vipper.org/vip900611.png 技術を持ってる人はパー速へ! ttp://ex14.vip2ch.com/test/read.cgi/part4vip/1218612197/ wiki: vipでサイトつくろーぜ ttp://www26.atwiki.jp/netschool/ 詳細はwiki参照
- 122 名前:デフォルトの名無しさん mailto:sage [2008/08/14(木) 00:15:41 ]
- 宣伝しにきたよ。
■■みんなでサイトつくろうぜwwwwwwww■■ 「お前ら一緒にサイト作ろうぜwwwww」 「2ちゃん越えるサイト作ろうぜww」 「仕事無いんだ・・・・・・」 「やろうぜ!」 「みんなでサイトつくろうぜwwwww」 gacco.o0o0.jp/ ex14.vip2ch.com/test/read.cgi/part4vip/1218612197/ 今日トップ絵作ったんだぜ! 興味沸いたらきてください!
- 123 名前:デフォルトの名無しさん mailto:sage [2008/08/14(木) 00:16:29 ]
- >>120
あれ。。俺がいる。 ホントすまなかった。
- 124 名前:デフォルトの名無しさん [2008/08/14(木) 01:54:38 ]
- 相変わらずキモイな
C#と同じくどんどん糞スレになってくれ
- 125 名前:デフォルトの名無しさん mailto:sage [2008/08/14(木) 03:01:18 ]
- 掲示板を作ってるのですが、書き込んだ日時としてデータベースに
Calendar#getTimeInMillis()で取れる値を入れて、 そのlong値を取得して何月何日何時何分何秒に書き込んだか表示したいのですが、 Calendar cal=Calendar.getInstance(); System.out.println(cal.get(Calendar.YEAR)); cal.setTimeInMillis(//データベースから取得したlong値); System.out.println(cal.get(Calendar.YEAR)); で比較すると後者のprintlnで表示される値が何を入れても常に1970になります。 setTimeInMillisをAPIドキュメントで見ると >Calendar の現在時刻を、指定された long 値から設定します。 と書いてあるのでこれで良いかと思ったのですが、これはどこを間違っているのでしょうか??
- 126 名前:デフォルトの名無しさん mailto:sage [2008/08/14(木) 03:24:21 ]
- >>125
データベースから取得したlong値は正しい値で取得されている? 秒単位でなくてミリ秒単位だからだいたい 31500000000 より小さい値なら1970年になる。
- 127 名前:デフォルトの名無しさん [2008/08/14(木) 03:39:42 ]
- アクセス修飾子について質問です。
protected: 同一クラスのインスタンス、またはそのクラスを継承したクラスのインスタンスからアクセス可能。 なし(デフォルト): そのインスタンス、または同一パッケージに所属するクラスのインスタンスからアクセス可能。 となっていますが、メンバが「なし(デフォルト)」の場合には、異なるパッケージに存在するサブクラスの インスタンスからは、アクセスすることができないのですか?
- 128 名前:デフォルトの名無しさん mailto:sage [2008/08/14(木) 03:42:45 ]
- うん
- 129 名前:デフォルトの名無しさん [2008/08/14(木) 03:48:49 ]
- では、アクセス就職子の序列が
public > なし(デフォルト) > protected > private となっている参考書は間違いなのですか? 「protected」の場合にアクセスできるものに 「なし(デフォルト)」の場合にアクセスできないので。
- 130 名前:デフォルトの名無しさん mailto:sage [2008/08/14(木) 03:49:10 ]
- >>127
protectedは同一パッケージ内のクラスからもアクセス可能。
- 131 名前:デフォルトの名無しさん [2008/08/14(木) 03:50:59 ]
- protectedの説明が
> 同一クラスのインスタンス、またはそのクラスを継承したクラスのインスタンスからアクセス可能。 になっているのなら、その参考書の説明は間違い。
- 132 名前:デフォルトの名無しさん mailto:sage [2008/08/14(木) 03:53:18 ]
- あー逆だ
public > protected >> なし(デフォルト) private が正しい。 protectedの方が公開の範囲が広い。
- 133 名前:デフォルトの名無しさん mailto:sage [2008/08/14(木) 03:58:09 ]
- public > protected >> なし(デフォルト) private
は、 public > protected > なし(デフォルト)> private ね。だから、 > となっている参考書は間違いなのですか? は間違いで正しい。 まとめると、 > となっていますが、メンバが「なし(デフォルト)」の場合には、異なるパッケージに存在するサブクラスの > インスタンスからは、アクセスすることができないのですか? は正しい。 > public > なし(デフォルト) > protected > private > となっている参考書は間違いなのですか? も正しい。つまり間違ってる。
- 134 名前:デフォルトの名無しさん [2008/08/14(木) 04:13:16 ]
- >>130-133
了解です! ありがとうございます!
- 135 名前:デフォルトの名無しさん mailto:sage [2008/08/14(木) 04:22:01 ]
- そんな糞参考書は窓から投げておk
- 136 名前:デフォルトの名無しさん [2008/08/14(木) 05:11:35 ]
- 糞はおまえw
- 137 名前:デフォルトの名無しさん mailto:sage [2008/08/14(木) 06:24:30 ]
- 会話が成り立っていない
- 138 名前:105 mailto:sage [2008/08/14(木) 10:10:40 ]
- >>115
書き込みが入りきるよう縮めていたら消していました。 使い方おかしいですか? やりたいのはその都度実行する遅延を計算しなおしたいのです。 ここでは止まるのを確認するのに1msで常にやってます。 >>116 printlnでIOがブロック?と書きましたが違ったようです。 ↓のように、止まるのは遅延を待機しているのではないかと。 ただその遅延が指定したものでなく、 おっしゃるように戻した時間が経過して戻す以前の時間+遅延になると動くようです。 もしかしたら遅延を指定しているにも関わらず、 内部で時刻を取得し直して計算しているのかとも思うのですが。 スレッド [pool-1-thread-1] (中断中) Unsafe.park(boolean, long) 行: 使用不可 [ネイティブ・メソッド] LockSupport.parkNanos(long) 行: 使用不可 AbstractQueuedSynchronizer$ConditionObject.awaitNanos(long) 行: 使用不可 DelayQueue<E>.take() 行: 使用不可 ScheduledThreadPoolExecutor$DelayedWorkQueue.take() 行: 使用不可 ScheduledThreadPoolExecutor$DelayedWorkQueue.take() 行: 使用不可 ScheduledThreadPoolExecutor(ThreadPoolExecutor).getTask() 行: 使用不可 ThreadPoolExecutor$Worker.run() 行: 使用不可 Thread.run() 行: 使用不可
- 139 名前:デフォルトの名無しさん mailto:sage [2008/08/14(木) 10:52:28 ]
- どなたか>>52(>>99)をお願いします…
何か質問の仕方マズかったでしょうか
- 140 名前:デフォルトの名無しさん [2008/08/14(木) 12:35:08 ]
- やっぱ"Ruby"ですよ!
- 141 名前:デフォルトの名無しさん mailto:sage [2008/08/14(木) 13:04:24 ]
- >>139
1.2以前でっていう限定がきつい。 古すぎてだれも答えられないと思う。
- 142 名前:デフォルトの名無しさん mailto:sage [2008/08/14(木) 13:10:54 ]
- >>141
初心者の宿題出なければ、appletを作っているやつ自体いないのでは
- 143 名前:デフォルトの名無しさん [2008/08/14(木) 13:43:41 ]
- ■■みんなでサイトつくろうぜwwwwwwwwwwwwwwww■■
「お前ら一緒にサイト作ろうぜwwwwwwwwww」 「2ちゃん越えるサイト作ろうぜwwww」 「仕事無いんだ・・・・・・」 「やろうぜ!」 「みんなでサイトつくろうぜwwwwwwwwww」 gacco.o0o0.jp/ yutori.2ch.net/test/read.cgi/news4vip/1218673130/ ex14.vip2ch.com/test/read.cgi/part4vip/1218612197/ 興味沸いたらきてください! ======================!! 人材募集中 !!====================== ■プログラムを組んでくれる人 *サーバー側 言語はRubyかPerlの予定ですが、Perlが有力候補。 ・チャット 定期的にクライアントから着信があり、それに対して更新されたチャットのメッセージを返信する程度の能力。じゃなくて機能。 通信するときのフォーマットは未定。 ・ログイン・アカウント管理 ログイン認証、各アカウントの点数などの管理。データベースは未定。 ・お絵描き 未定。とりあえず鯖に負担がかからない程度にたまに画像を送信してあげるって感じで *クライアント側 はっきり言って俺もわからね。Ajaxだとかflashだとかjavaだとか。 ■機能提案(正しくは人材ではなく、意見?) 「こんな機能があったら良い!」「こうするともっと楽しくなる!」などの意見募集中。 挨拶とか気にせずスレにどんどん書き込んでくれればおk ■デザイン サイトのデザインを考えてくれる人、作ってくれる人募集中。 できればphotoshop illustrator使える人(プロジェクト共有しやすいので)
- 144 名前:デフォルトの名無しさん mailto:sage [2008/08/14(木) 14:09:09 ]
- >>139
1) java.util.zip 使って外部アーカイブを読める自前の URLStreamHandler 作って、 URL.setURLStreamHandlerFactory してみるとか…… セキュリティマネージャに怒られてダメかもしれんが。 2) 1.1レベルでは互換性の高そうな標準API使う方法だと 1)のアプローチぐらいしかないので、それがダメなら 外部jar使うの諦めるか、互換性諦めるか、音出す事を諦めるか選ぶしかないと思うぞ。
- 145 名前:デフォルトの名無しさん [2008/08/14(木) 14:20:42 ]
- たぶんwebで公開のappletじゃないと思うけど、Class.getResouceAsInputStream()とかかな。
javaのデスクトップは、アプレットに適したライブラリが全くなかった他の技術に先を越されたけど、それを補うように進化してきたから、1.2以前だといろいろ出来るわけじゃないよ。
- 146 名前:デフォルトの名無しさん mailto:sage [2008/08/14(木) 15:47:14 ]
- 回答ありがとうございます!
>>141,142,145 うーんやっぱ今時Appletでしかも1.1縛りなあたりがネックですよねぇ。 自分としては1.2以降のAPI使いたいんですが、MRJに対応しなくてはならない事情があるものでして。 無理そうなら環境によって動作切り替える方向で進めてみようと思います。 >>144 なるほど、URLStreamHandlerは今まで全く見てませんでした。 URL指定をメモリ内のByteArrayInputStreamにリダイレクトできればあるいは、のような感じですね。 光明が見えたような気がしてきました。この方向で色々トライしてみます。
- 147 名前:デフォルトの名無しさん [2008/08/14(木) 16:47:01 ]
- ライブラリは進化してきたといってるのに、自作しちゃう人がまた一人・・
- 148 名前:デフォルトの名無しさん mailto:sage [2008/08/14(木) 16:54:55 ]
- 実行中にアプリから、あるインスタンスがどこから参照されているかを確認する術はあるでしょうか?
- 149 名前:デフォルトの名無しさん mailto:sage [2008/08/14(木) 17:08:10 ]
- プロファイラで辿れない?
- 150 名前:デフォルトの名無しさん [2008/08/14(木) 17:28:42 ]
- このままライブラリ、というか、部品化が進んでいったら、
やがてプログラマが必要なくなるのではなかろうか? 部品をちょちょいと選択すればプログラムができてしまわないだろうか? そのとき、元プログラマの人は、どうやって食っていくのだろうか?
- 151 名前:デフォルトの名無しさん mailto:sage [2008/08/14(木) 17:35:50 ]
- >>149
稼動サーバーでのみリークが発生するようで、アプリ内で何とかしろといわれているので、 JDTとか見たんですけどまったく理解できずに断念です。 やはりツールを使用しないと無理ですかね・・・
- 152 名前:デフォルトの名無しさん [2008/08/14(木) 17:50:19 ]
- 日頃の勉強と技術力しだいだなw
- 153 名前:デフォルトの名無しさん [2008/08/14(木) 18:06:26 ]
- Swingにベクタ画像(psとかeps)なんかを表示するものはありますか?
探しても見つからなかったので… ない場合、何らかの形でJPanel辺りに貼り付けて表示する方法はあるのでしょうか?
- 154 名前:デフォルトの名無しさん [2008/08/14(木) 18:07:30 ]
- 2chで質問するほどだなんて、ひでー職場だな。
- 155 名前:デフォルトの名無しさん [2008/08/14(木) 18:12:13 ]
- >>154
俺の職場、それしかなかったけど。。 色々掲示板みてると俺のいた職場がよほどくそだったことがよくわかる。 ここで揶揄されてることが俺の職場ではまさにデフォルトだった。 ろくに経験もないうちから研修(実務にまったく役に立たない)と称して独力(上司は単なる営業社員)でつくらされて 現場にいっても俺みたいなど素人がもう一人。。できるわけねえだろ。。
- 156 名前:デフォルトの名無しさん mailto:sage [2008/08/14(木) 18:47:47 ]
- >>110
そりゃあソースコードが複雑で読みにくいという
- 157 名前:デフォルトの名無しさん [2008/08/14(木) 19:56:43 ]
- みんなそれでやってきたんだし、おまえの技術力が低いだけじゃね?
- 158 名前:デフォルトの名無しさん [2008/08/14(木) 19:58:43 ]
- >>155
おまえが糞だってことが良く分かった
- 159 名前:デフォルトの名無しさん mailto:sage [2008/08/14(木) 20:09:30 ]
- 匿名メソッドのメリットがいまいち分からないのですが、
コーディング量が少し減ることと、 そのメソッドへ他からアクセスできないこと以外で 何かメリットってあるのでしょうか? よろしくお願いします。
- 160 名前:デフォルトの名無しさん mailto:sage [2008/08/14(木) 20:10:15 ]
- 匿名メソッドなんてあったっけ?
- 161 名前:デフォルトの名無しさん mailto:sage [2008/08/14(木) 20:15:04 ]
- 匿名クラスでした、すみません
- 162 名前:デフォルトの名無しさん [2008/08/14(木) 20:42:09 ]
- >>155
それは職場が糞なんじゃなくて、お前が糞なんじゃないの? なんかお前にはVBの方が向いてるような・・・
- 163 名前:デフォルトの名無しさん mailto:sage [2008/08/14(木) 20:46:24 ]
- そういう話はマ板でどうぞ
- 164 名前:デフォルトの名無しさん [2008/08/14(木) 21:44:18 ]
- 相変わらず、糞だらけのスレですね(^^
- 165 名前:デフォルトの名無しさん mailto:sage [2008/08/14(木) 22:40:07 ]
- >>159
・いちいち名前を考えずに済む ・普通の内部クラスは書く場所と使う場所が離れていてわかりにくい
- 166 名前:デフォルトの名無しさん mailto:sage [2008/08/14(木) 23:53:02 ]
- fileChooserを利用して、選択したクラスファイルを取得したいのですが
File file = fileChooser.getSelectedFile(); Class cls = file.getClass(); これではうまくできません。 どのようにすれば良いか、どなたか教えてくれませんか?
- 167 名前:デフォルトの名無しさん mailto:sage [2008/08/15(金) 00:32:35 ]
- クラスファイルをロードしたいってことか?
class MyClassLoader extends ClassLoader { public Class<?> loadClassfile(File file) throws いろいろ { byte[] data = new byte[(int)file.length()]; FileInputStream in = new FileInputStream(file); new DataInputStream(in).readFully(data); in.close(); Class<?> cls = defineClass(null, data, 0, data.length); resolveClass(cls); return cls; } } という独自クラスローダを作って、 Class<?> cls = new MyClassLoader().loadClassfile(file); でどうよ
- 168 名前:デフォルトの名無しさん mailto:sage [2008/08/15(金) 00:50:39 ]
- >>167
クラスを取得してコンストラクタの分析などをリフレクションを用いて実現させたいんです。 File file = fileChooser.getSelectedFile(); Class cls = Class.forName(file.toString()); とかも試したんですけどうまくいきませんでした… なにぶん初心者なもので、根本的なことが間違ってる気がしてならないですorz
- 169 名前:デフォルトの名無しさん mailto:sage [2008/08/15(金) 01:44:09 ]
- >>168
Class.forNameで渡すのはFileとかのクラスファイルの場所ではなくてクラス名そのもの。 クラスファイルをクラスパスの通っているところから参照できる場所に置いておけばクラス名から探してくれる。 クラス名がfoo.bar.Hogeならクラスパスの通っているところのサブディレクトリとしてfoo、その下にbarという ディレクトリがあって、その中にHoge.classがあればClass.forName("foo.bar.Hoge")でClassインスタンスが得られる。 クラスパスとは無関係にクラスをロードしたいのならURLClassLoaderを使うのが楽かも。 URLClassLoaderでぐぐればサンプルはいくらでもある。
- 170 名前:デフォルトの名無しさん mailto:sage [2008/08/15(金) 04:09:03 ]
- >>167
readFully(data); を使うのは単に趣味ですか? read(data);とどう違うのかAPI Docs上から分からないんですがご存知でしょうか。
- 171 名前:デフォルトの名無しさん mailto:sage [2008/08/15(金) 04:57:34 ]
- readは指定したバイト数全部を読み込むことは保証されていない
1バイトでも読めれば、読み込めたバイト数を返す readFullyは指定したバイト数全部読み込む 読み込めなければEOFException
- 172 名前:デフォルトの名無しさん [2008/08/15(金) 05:35:43 ]
- 秒妙な違いですけど、引数がFileなのでreadFullyはやらないほうがいいのでは?
間違ってはないけど、そこで使うのはDataInputの設計目的と微妙に違うような…
- 173 名前:デフォルトの名無しさん [2008/08/15(金) 09:19:21 ]
- いつも来ていた糞野郎は死んだか?
- 174 名前:デフォルトの名無しさん mailto:sage [2008/08/15(金) 10:29:51 ]
- Thread.currentThread().getStackTrace()でスタック情報が取得できますが、引数インスタンスは取得できません。
引数インスタンスを取得する方法はあるでしょうか?
- 175 名前:デフォルトの名無しさん mailto:sage [2008/08/15(金) 10:39:16 ]
- >>174
caller の引数に触りたいって話ならデバッガ使えば?
- 176 名前:デフォルトの名無しさん [2008/08/15(金) 14:05:49 ]
- 糞はドブに流れていってしまったが?
- 177 名前:デフォルトの名無しさん [2008/08/15(金) 19:18:11 ]
- テストについて質問です。
値を返すメソッドなら期待される値と実際の値を比較しますが、 値を返さないメソッドはどのようにテストをすればいいのでしょう。 DBに書き込むメソッドとかなら書き込まれた値をチェックできますが、 例えば以下のようなものです。 ・メールを送信するメソッド ・コンソールに文字を出力するメソッド
- 178 名前:デフォルトの名無しさん mailto:sage [2008/08/15(金) 19:46:12 ]
- mainって普通プログラムの中でどういう部分を書くものなのでしょうか?
staticだから長いプログラムを書くと面倒になる部分が多いので mainでは自分のクラスのコンストラクタをnewするくらいにしか使わなくて、 そのコンストラクタの方で色々書くようにしているのですが、どうなんでしょう?
- 179 名前:デフォルトの名無しさん mailto:sage [2008/08/15(金) 19:49:06 ]
- テストの基本は事前条件と事後条件が正しいことを確認すること
・メールを送信するメソッド メールを送信するクラスが正しく呼び出されたかをチェックする ・コンソールに文字を出力するメソッド これは難しいのでやらない やる場合は、特定の文字を出力するメソッドのテストとしておいて、 Writerはsetterで設定できるようにしておく どちらにせよコード中にSystem.outがあるのはウンコ
- 180 名前:デフォルトの名無しさん mailto:sage [2008/08/15(金) 19:51:46 ]
- >178
いわゆるエントリポイントってやつだから、外部から起動する時に必要な範囲の処理を行うのが正しい なので、コンストラクタの方で色々やっているのは正しいよ。 mainに書くべき処理といえば、後はプログラムの実行引数のチェックやデフォルト値の設定。 バグで落ちたときにどうするかの処理とか、そんな感じだろうな
- 181 名前:177 mailto:sage [2008/08/15(金) 20:12:33 ]
- >>179
> メールを送信するクラスが正しく呼び出されたかをチェックする これ、もうちょい詳しく解説してくれるとうれしいです。 > Writerはsetterで設定できるようにしておく なるほど。それなら結構簡単にテストできそうですね。
- 182 名前:デフォルトの名無しさん mailto:sage [2008/08/15(金) 20:22:42 ]
- >>177
テストアドレスに送信して、受信して、その内容をチェックすれば良いだけでは
|

|