2ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

【初心者】Java質問・相談スレッド62【大歓迎】

1 :デフォルトの名無しさん:05/02/14 23:02:22
過去ログ、関連スレッド、よくある質問とその回答、
質問をする前に、貴方が見なければならないサイトについての情報は、
下のwikiのページにまとめてあります。
http://www.wikiroom.com/java/

これからJavaでプログラミングを始めたいが、何をすればいいかわからない人も、
wikiからのリンクをおたどりください。

以下のエラーが表示されて、途方にくれているあなたは、下のページへ。
「コマンドまたはファイル名が違います」
「'javac' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。」
「Exception in thread "main" java.lang.NoClassDefFoundError: 」
http://www.wikiroom.com/java/?path,classpath

前スレッド
【初心者】Java質問・相談スレッド61【大歓迎】
http://pc5.2ch.net/test/read.cgi/tech/1107056382/

/* 既出の質問や、他に適切なスレが存在する質問は、容赦なく無視されます。
質問をする前にwikiで過去ログ、関連スレ、FAQをチェックしてください。 */

また、当スレで質問をするかたは、回答をもらえたときに、
wikiの更新をして頂ければ、忝なく存じます。

JavaScriptの質問は、ここでは受け付けていません。
Web製作板をご利用ください。http://pc5.2ch.net/hp/

次スレは>>980がお願いします

2 :古代帝國富士皇朝総帥・伯壬旭:05/02/14 23:15:27
よくぞ次スレを立てた。褒めてつかわす。
さあ、皆の者質問するがいい!!!


3 :これも追加しといて〜:05/02/14 23:18:20
>>1
「単独で実行できるファイル」を作るには
a)ttp://jaist.dl.sourceforge.net/sourceforge/jsmooth/jsmooth-setup-0.9.7.exe
 これをDL&インストールして起動後、対象とするJarを選択する。
b)バッチファイルを作って、バッチファイルにコマンドラインと同じことを記述する
c)jarファイルにMain-Classを指定したmanifestファイルを追加する(Windowsならダブルクリックで起動可)
d)c)で作成したjarに対するショートカットファイルを作って、アイコン設定する。
jarに関する文献↓
ttp://java.sun.com/j2se/1.4/ja/docs/ja/guide/jar/jar.html#JAR%20Manifest

4 :デフォルトの名無しさん:05/02/15 00:47:28
そこへ「WSH使うと(・∀・)イイ!!」とか混ぜっ返して混乱させてみるw
いや、バッチファイルだとjavaw使ってもプログラム実行中
DOS窓出っぱなしなのが漏れ的にはイヤソなので。

ちなみに
> type hoge.vbs
Dim shell
Set shell = WScript.CreateObject("WScript.Shell")
shell.Run "javaw -jar hoge.jar", 0, False

でhoge.jar起動。

5 :デフォルトの名無しさん:05/02/15 01:13:25
>>3
d)をちょっと変えて、
%windir%\system32\javaw.exe -cp hoge.jar MainClass
というショートカットを作り、作業フォルダを空にして、hoge.jarと同じ場所に置けば、
manifestファイル不要。アイコン設定可能。
98系はどうなるか知らん。

6 :デフォルトの名無しさん:05/02/15 01:36:38
問題文に"フレームクラスを使って作成せよ"という表現があったので、
Frameクラスを継承しないで解答欄には以下のように書きました(略してあります)

Frame f = new Frame("aaaa") ;
f.show() ;


この問題の場合、フレームクラスを継承して
public class xxxx extends Frame{
public FrameTest(){} }
public static void main(String args[]) {
new FrameTest().show() ;
}
としなければ間違いになるのでしょうか?
"使って"という言い回しが良く分かりません。
教えてください。

7 :デフォルトの名無しさん:05/02/15 01:53:25
>>6
継承した場合でも、継承せずにFrameクラスをそのまま使ったとしても、使ったと言えると思う。
俺が出題者なら別にどっちでもよいと思う。

ただ、
>問題文に"フレームクラスを使って作成せよ"
ここだけ見ただけの話だからな。
「Frameクラスの〜メソッドをオーバーライドして・・・」
とか問題文にあったら継承してないとダメ。

8 :6:05/02/15 01:59:23
>>7
正解になるのですか・・明日教授に直訴してきます!
丁寧にありがとうございました。


9 :デフォルトの名無しさん:05/02/15 02:24:12
>>8
正解になるとまで入っていないだろうが。
問題文さらさないとなんとも言えん。

10 :デフォルトの名無しさん:05/02/15 09:33:21
>>5
JDKを複数入れてる人は %windir%\system32 の java.exe と javaw.exe を消してる可能性が高い。

11 :デフォルトの名無しさん:05/02/15 09:38:54
>>10
確かに。俺も消してる。pathから勝手に探すように記述できればいいのだが。

12 :デフォルトの名無しさん :05/02/15 10:49:30
SWTのTextに入力制限(文字列なら文字列のみ、数字なら数字のみと言う様な感じ)を
掛けたいのですがどういう風にすれば良いのでしょうか?
入力桁数の制限は掛けれたんですが・・・
よろしくおねがいします。

13 :デフォルトの名無しさん:05/02/15 10:53:20
SWTなら↓の方がいいんじゃない?
http://pc5.2ch.net/test/read.cgi/tech/1068349883/

14 :デフォルトの名無しさん:05/02/15 11:01:30
どのバージョンで起動していいか判らなくなるから出来ないんだと思ふ

15 :デフォルトの名無しさん:05/02/15 11:07:59
>>13さん
即レスどうもっす。
まだまだ右も左もよく判ってないような奴なんで、
こちらで質問した方が良いかな…って。
敷居が高そうなんで(;^_^A アセアセ・・・

16 :13:05/02/15 11:18:52
>>15
確かに質問できそうな感じではなさそうだな
内容確かめずに誘導は良くないね。すまん

17 :デフォルトの名無しさん:05/02/15 11:20:35
いえいえ、とんでも無いです。

18 :デフォルトの名無しさん:05/02/15 11:56:07
>>12
addVerifyListener.

19 :デフォルトの名無しさん:05/02/15 14:35:56
教えて下さい。

携帯で使うjavaとパソコンで使うjavaで書き方はかわりますか?
パソコンでjava使えたら携帯で使う時も同じプログラム使えますか?

20 :デフォルトの名無しさん:05/02/15 14:39:46
>>19
書き方は変わらない。
同じプログラムは使えない場合が多い。

21 :デフォルトの名無しさん:05/02/15 14:42:47
>>19
文法や、基本的なクラスは、同じと言えるけど、
できあがったプログラムの全く同じものが動くとは思わないほうが良い。
ソースの記述は同じでも、配布の仕方とかは全然違う。
環境に依存しないような単なるロジック程度なら使える。


22 :デフォルトの名無しさん:05/02/15 14:43:12
>>20
なるほど、どうもありがとうございました!!

23 :21:05/02/15 14:44:34
>>22
ケッ!

24 :デフォルトの名無しさん:05/02/15 14:47:04
>>21
とても丁寧にありがとうございます。
携帯とパソコンでは携帯はマウスがないし、とか
そういう問題で同じようにはできないっていうことなのでしょうか?

パソコンで使うjavaが使える人が
携帯で使うjavaを記述し動作させることは
さほど困難なことではないのでしょうか?
無知でごめんなさい・・・。

25 :デフォルトの名無しさん:05/02/15 14:48:54
>>23
ごめんなさい・・・w
送信してからレス読んだもので。

26 :名前は開発中のものです。:05/02/15 15:10:22
くだらねえことでケンカになるんだな・・・・・・

27 :デフォルトの名無しさん:05/02/15 15:39:28
>>24
> パソコンで使うjavaが使える人が
> 携帯で使うjavaを記述し動作させることは
> さほど困難なことではないのでしょうか?

容量制限がでかいしオブジェクト指向しずらいしJakarta使えない
から携帯電話Java開発は嫌い。

漏れはDB駆使したサーバサイト開発大好き

28 :デフォルトの名無しさん:05/02/15 15:39:34
ホスト名とか、IPで個人情報調べることってできるんですか?

29 :デフォルトの名無しさん:05/02/15 15:40:04
くだらねえ質問は(ry

30 :デフォルトの名無しさん:05/02/15 15:46:03
>>27
いろんな縛りでやりづらくなるっていう感じですか・・・?
携帯電話javaは面倒が多いということなのですかね・・・。

31 :デフォルトの名無しさん:05/02/15 15:49:05
>>24
「J2ME SDK DoJa」あたりでぐぐって、実際にAPIリファレンスと開発環境を落として
いじってみれば、なんとなくどんなものかは感じられると思う。
公式ページに容量の制限とかも記述されてるし。

DoJaでぐぐったらドコモが一番上じゃなくて少しびっくりした。

32 :デフォルトの名無しさん:05/02/15 15:55:07
>>31
早速ググって見ます。
本当に親切で嬉しい・・・。
とにかく調べてみます!!本当に本当にありがとうございました!

33 :デフォルトの名無しさん:05/02/15 15:56:23
>>30
携帯電話開発を頼まれるとJavaらしい仕事をしている気分に慣れないぞ。
変数の再利用ばかりする羽目になる。C時代のメモリ節約開発を思い出させる。
疲れるのでそんな仕事は逃げたほうがまし。
Vodafoneのメガアプリには期待しているんだけどね。
けど1MBでもまだまだ足りない気分だな。100MB程度あれば
携帯電話でクラス作り放題継承し放題例外処理使いたい放題外部API使いたい放題
デザインパターン使いたい放題
となることを期待しているのだが何年後のことだろうか。


34 :デフォルトの名無しさん:05/02/15 16:14:14
やれやれ最近の若い者ときたら、大メモリ、高機能API,デザパタ無しじゃ
コーディングが嫌なんて贅沢すぎる。
昔は過酷な環境で1クロック1メモリを惜しんで組んだもんだよ。
制限された環境だからこそ、逆に燃える位の気概がなくてどうするのか。
最近のプログラマには職人気質が足りないね。


35 :デフォルトの名無しさん:05/02/15 16:15:07
>>33
そう遠くない未来だと思う。
ttp://www.wince.ne.jp/snap/cnBoard.asp?PID=856
の話題には驚かされた。でも、携帯にHDって壊れやすそうな希ガス。
どちらにしろ、あと数年はこのままなんだよね…。

36 :デフォルトの名無しさん:05/02/15 16:16:02
じいさんはアセンブラ+メモリ8kbでプログラミングやっててくれ

37 :デフォルトの名無しさん:05/02/15 20:45:35
以下のサイトでフリーのJavaappletをDLしようと思ったのですが、
http://home.att.ne.jp/gold/naoki/AL2/frAL2jp.html
sort table をクリックしても画面に×印がでてappletの読み込みに
失敗してしまいます。ステータスバーには、sort table notinited と表示されます。
自分なりに調べて、IEのツール、オプション、詳細設定でJava2のチェックマーク
をはずしたりしたのですが、うまくいきません。
何かご存知の方いらっしゃいますか?

ちなみに当方の環境は、IBMのX40、winXP、IE6.0、
Java(TM) Plug-in: バージョン 1.4.1、JRE のバージョン 1.4.1 Classic VMです。


38 :37:05/02/15 20:47:29
すいません。直URLしてしまいました。

39 :デフォルトの名無しさん:05/02/15 20:50:08
クライアントVMではなくクラシックVM・・・?
hostpot前のやつか

40 :デフォルトの名無しさん:05/02/15 21:11:43
>39 さん
コントロールパネルでは、アイコンにはIBMJavaPlugin
とあり、Wクリックすると、バージョン情報は
Java(TM)2 Runtine Environment,Standard Edition1.4.1
デフォルトの仮想マシンのバージョン1.4.1
Java(TM)Plug-in 1.4.1
となっています。

Sunの方でも調べたのですが、
http://forum.java.sun.com/thread.jspa?threadID=499482&messageID=2368828
似たような症状の方がいるようなのですが、まだ解決していないみたいです。

何か情報がありましたらアドバイスお願いいたします。


41 :デフォルトの名無しさん:05/02/15 21:13:45
>>39 違う。IBMのClassicVMとはSunからライセンスを受けた
JREに自社で手を加えたJITコンパイラを組み込んだVMのことをいう。
#俗にIBM JDKっていったら昔からこのVMが入っているやつのことをいった。

で、ClassicVMに対してJ9VMってのがあって、こっちは比較的最近
IBMのJDKに組み込まれた100%IBMオリジナルのVM。整数演算だったら
SunのHotspotよりも速いね。1.3.1の後期buildからJDKに含まれる
ようになったかな。-Xj9オプションをつけて起動するとこちらに
切り替わる。ただしJRE単体のパッケージには含まれていない。

42 :デフォルトの名無しさん:05/02/15 22:01:33
hotspotで演算速度あげたかったらserverVMにするしなぁ

>>37のはSun純正でもエラーでとるで

43 :デフォルトの名無しさん:05/02/15 22:14:16
自分でもなんかアホな勘違いしてるような気がするんですがわからないので
教えてください

Stringクラスのフィールドって
char value[]
int offset
int count
int hash
などありますよね(ソースで確認)

でもjavadoc見ても載って無いんです(Objectクラスにも載ってない)けど
これってどういうことですか?
http://java.sun.com/j2se/1.4/ja/docs/ja/api/java/lang/String.html#field_summary

44 :デフォルトの名無しさん:05/02/15 22:30:53
ただの手抜きです。
外にも、sunパッケージなんて全部載ってないんですよ。

45 :デフォルトの名無しさん:05/02/15 22:42:26
>>33
2年で4倍だから6〜7年後には100MBは達成される

46 :43:05/02/15 23:08:26
>>44
手抜き?? マジっすか、そんな事もあるとは知らなかった
Stringは結構重要だと思うんですけど・・・

うす、答えてくれてどうもっす

47 :デフォルトの名無しさん:05/02/15 23:11:52
>>40
MSのVMなら動く。
MSのVMでしか動作しないクソアプレットだということだ。

48 :デフォルトの名無しさん:05/02/15 23:12:52
>>44
え!?そうなの!?
private宣言のフィールドは載ってない、って勝手に思いこんでた
ソースコード確認してないからprivateなのかもわかんねーけど

49 :デフォルトの名無しさん:05/02/15 23:13:05
>>43
privateなフィールドで外部からアクセスできないからじゃないの?
アクセッサもないし。

50 :デフォルトの名無しさん:05/02/15 23:13:39
>>46
変数なんて知らなくてもメソッドがあるだろ?
とSunは言いたいんだろう

51 :デフォルトの名無しさん:05/02/15 23:14:58
>>46
違うだろ。
privateフィールドなんか載ってるわけない。
結構重要なStringであっても、誰も使えないし、載せる意味なし。

52 :デフォルトの名無しさん:05/02/15 23:15:47
かぶりまくった

53 :デフォルトの名無しさん:05/02/15 23:18:44
>46
ついでに言うと、「あんまし見て欲しくないな〜」なとこってこともある。
何も秘密主義とかいうことではなく、
「デバッグや機能追加で内容を変えても晒してなければ周知の必要がない」
→「晒してない部分は手を入れやすい」
という話。これが「カプセル化」(かなり乱暴なくくりで言ってるが)。

54 :デフォルトの名無しさん:05/02/15 23:27:37
>>48
44は大ウソですよ。
もともとpackage以下のメンバは、基本的にJavaDocには載せないのです。
ユーザーはそれを扱うべきではないからです。


55 :デフォルトの名無しさん:05/02/15 23:32:06
手抜き→カプセル化

強引に論点を変えてないか?

56 :デフォルトの名無しさん:05/02/15 23:40:17
privateなフィールドなりメソッドは公開されてないものなのだから、仮に目ざとく見つけて
>>43のように喜んだとしても、次のバージョンにはそんなもの影も形もないかもしれんわな。
公開インターフェースが変わらない限り中身は変え放題だからな。

実際、Stringは1.4で大改変されてるしな。

lang.mathとかは1.3あたりで内部実装が結構変わってるんじゃなかったっけ。

57 :43:05/02/15 23:41:40
うす、たくさん返事どうもっす
privateは公開する必要ない・・・そっか(`・ω・´)言われて気づいたっす
javadocと照らしあいながら初めてデバックしてみての疑問でした
うす、うす

58 :すみません:05/02/16 00:09:47
MySQL上で定義したテーブル hoge_table

Field Type Null Key Default Extra
*****************************************************
no varchar(20) PRI
a_name varchar(20) YES NULL

と定義している場合JAVAのソース上に

insert into hoge_table(no) values(12345);
は処理されるのに対して

insert into hoge_table(a_name) values('12345');
だと弾かれるのでしょうか?

JDBCに関連しての質問です。


59 :デフォルトの名無しさん:05/02/16 00:20:34
privateだから公開する必要がないというよりは、
公開しないようにprivateにしているんだがな。

内部実装の詳細を外部に公開しないのはCの頃からかわらない。
ただシリアライズ可能なクラスの場合は
シリアル化するときに内部実装の詳細を外部に公開する必要があるので
privateなフィールドでもjavadocに載ってる。

60 :デフォルトの名無しさん:05/02/16 00:21:54
>>58
逆です

61 :デフォルトの名無しさん:05/02/16 00:23:41
>>58
主キーが Null になるのはダメだ。

62 :すみません:05/02/16 07:13:19
>>60 & 61

具体的いにはどの様に修正すれば、宜しいのでしょうか?
御伝授頂きたく。

63 :デフォルトの名無しさん:05/02/16 08:56:28
>>62
フィールドnoはNULL値が許されないように定義されているので、
INSERT文でなんらかの値が入るように指定する必要がある。
そのためには、適切な値をINSERT文で指定する。
または、フィールドnoの定義にAUTO_INCREMENTを追加して、
INSERT時に適当な値で埋めてくれるようにする。

これはJDBCじゃなくてMySQLの問題なので、板違い。これ以上はDB板いけ。

64 :デフォルトの名無しさん:05/02/16 09:42:50
JavaMailで、送信先にx.400形式を使用したいのですが、エラーになって送信できません。
普通のインターネットアドレスには送信できるのですが、何かわかるかたいらっしゃいましたらご教授願います。

65 :デフォルトの名無しさん:05/02/16 09:49:34
JAVASEとMEとじゃ使える命令が全部違うんですか?

66 :デフォルトの名無しさん:05/02/16 09:49:42
>>64
エラーメッセージを書かないのは釣り。

67 :デフォルトの名無しさん:05/02/16 09:50:31
>>65
全部は違わない

68 :64:05/02/16 10:12:46
>>66さん すみませんでした。以下がエラーメッセージです。

javax.mail.SendFailedException: Invalid Addresses;
nested exception is:
class com.sun.mail.smtp.SMTPAddressFailedException: 550 <"x.400形式のアドレス">... Cannot mail directly to files
at com.sun.mail.smtp.SMTPTransport.rcptTo(SMTPTransport.java:1130)
at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:525)
at javax.mail.Transport.send0(Transport.java:151)
at javax.mail.Transport.send(Transport.java:80)

以下のようなコードで実験しています。
Properties p = new Properties();
p.put("mail.smtp.host", "SMTP_HOST_NAME");
Session session = Session.getDefaultInstance(p, null);
MimeMessage mimeMessage = new MimeMessage(session);
mimeMessage.addFrom(InternetAddress.parse("送信元"));
mimeMessage.setRecipients(Message.RecipientType.TO,InternetAddress.parse("宛先"));
mimeMessage.setText("本文", "iso-2022-jp");
Transport.send(mimeMessage);

69 :デフォルトの名無しさん:05/02/16 10:15:16
どんな宛先か書けよ

Invalid Addresses とか
Cannot mail directly to files って書いてあるから分かりそうなもんだが


70 :デフォルトの名無しさん:05/02/16 10:17:34
許可されてるサーバーとそうでないサーバーがあるから
他に使えるのあったらSMTP_HOST_NAMEを変えてみ


71 :64:05/02/16 10:35:06
情報が小出しになってしまい何度も本当に申し訳ありません。
メールのシステムはExchangeサーバを使用していて、指定しているアドレスは、以下のような形式になっています。
 /o=ドメイン名/ou=JAPAN/cn=Recipients/cn=ドメインアカウント名

SMTP_HOST_NAMEにプロキシサーバのアドレスを指定すると前述したエラーになります。
SMTP_HOST_NAMEにExchangeサーバを使用するとエラーは出ませんが、メールも届かないと言った状況です。

72 :デフォルトの名無しさん:05/02/16 10:45:14
Exchangeサーバ側のログを見るか
Exchangeサーバ内のメールのルーティング追跡というのをしる

73 :64:05/02/16 10:59:44
みなさんどうもありがとうございました。
Exchangeサーバのログを見せてもらうことにします。

74 :デフォルトの名無しさん:05/02/16 14:07:59
すいません、こちらでいいのか分からないのですが、質問させてください。

現在、RedHat linuxのエンタープライズバージョンを使用しての開発を
やっているのですが、JDKをインストールする際のbinファイルとrpmファイル
では、JAVAのプログラムの挙動が変わってしまうのです。

内容としては、String#getBytes()メソッドを呼び出した場合の
デフォルトキャラクタセット文字列が異なるということなんですが、
rpmで入れた場合だとUSになってしまい、binだとEUC-JPなんです。

実は開発をbinでやり、ユーザはrpmでインストールしてしまって
判明したことなのですが、原因がどうしてなのかを報告する必要が
出てしまいました。

binとrpmの違いって他にもありそうな気がするのですが、どなたか
そういった情報をお持ちの方はいないですか?

75 :デフォルトの名無しさん:05/02/16 14:19:47
>>74
俺はわからんが、もっと環境を書くべきではないのか?
バージョンとか

76 :74:05/02/16 14:56:21
>>75
そうですね。
もう少し、説明します。

JDKのバージョンは1.4.2_b28を使っています。
linuxに関しては日本の環境になるようにインストールしてあるのですが、
他のスクリプト等でlocaltimeを実行すると日本の時間が取得できています。

JDKのインストールは、オプションなしで実行していますので、こちらでの
指定が必要なのかもしれません。

binの場合、インストールのオプションに-localinstallというのを付けられるよう
ですが、binの挙動が想定通りなので、rpmにロケールを認識させられれば
いいのですが・・・

今は、JVMのそういった情報がどこに格納されているかを調べています。
java.util.prefsパッケージ配下にあるクラスからアクセスできる情報が怪しい
と睨んではいるのですが、まだ分からない状態です。

77 :デフォルトの名無しさん:05/02/16 15:07:52
>>76
クラスは既にJVMの上で動くことが前提だから関係ないかと。。。。
JDKインストールディレクトリ/jre/libにある、
ナンチャラ.properties あたりをのぞいてみたら?

78 :デフォルトの名無しさん:05/02/16 15:08:59
もしユーザーがbinから入れていてもUSになっていた可能性もある

rpmならeraseしてbinからいれ直してみれば?

79 :74:05/02/16 15:20:02
>>77

ありがとうございます。
そちらをチェックしてみます。

>>78

いえ、rpmとbinは違うっていう事象はこちらでも確認しました。
プログラムの修正でどちらでも動くようにはしたのですが、
取引先から、経緯報告(始末書とも言います)を求められていまして・・・

80 :デフォルトの名無しさん:05/02/16 15:32:14
>>74

LANGの設定は大丈夫なんだよね?

81 :74:05/02/16 15:44:12
>>80

LANG=ja_JP.eucJP
となっています。
サーバ自体はいいのですが、なぜにデフォルトキャラクタセット文字列が
変わるのかを解明したいのです。

やっぱりJava VMの仕様書を紐解くしかないのかなあ。

今、さっきrpmをrpm2cpioで分解してみたのですが、ファイル構成は
binのものと変わらないですね・・・

82 :デフォルトの名無しさん:05/02/16 16:14:49
>>81
javaは実行ユーザのLANGを見てデフォルト決めるけど、本番環境はrootかwwwで実行しててLANG=cか未設定、開発環境は適当なユーザで実行しててLANGが設定してあるとかじゃねーの?

83 :74:05/02/16 16:20:20
>>82

実行はどちらの環境でもtomcatユーザとなっています。
開発環境でもrpmで入れたものに関してはデフォルトが異なって
しまうため、インストール時の設定、あるいはJVMの起動時の設定
がパッケージによって異なっているのではないかと睨んでいるのですが・・・

84 :デフォルトの名無しさん:05/02/16 16:24:54
>>83
>デフォルトキャラクタセット文字列が異なるということなんですが、
rpmとbin、それぞれ、どうやって確認しているの?
当然、同じ確認方法なんだろうな?

85 :74:05/02/16 16:55:58
>>84

こちらに関しては、String#getBytes()の挙動が変化することに
よって、確認しています。
また、System.getProperties()から取得できるパラメータの違いも
確認できました。

rpm:
key:[user.country] value:[US]
key:[file.encoding] value:[ANSI_X3.4-1968]
key:[user.language] value:[en]

bin:
key:[user.country] value:[JP]
key:[file.encoding] value:[EUC-JP-LINUX]
key:[user.language] value:[ja]

やはり、設定がずれていますね・・・

86 :デフォルトの名無しさん:05/02/16 17:26:56
>>85
違うという事実は分かった結果よりも、どうやって確認しているのかもっと情報をだせ。
なぜ違いが出るのか、分かる人がいるかもしれないじゃないか。

テストプログラム作って確認しているということだな。
そのプログラムは、rpmとbinで、それぞれ、どうやって動かしているの?
当然同じ動かしかただろうけど、tomcat上で動くものなのか?単なるjavaアプリケーションなのか?

87 :デフォルトの名無しさん:05/02/16 17:28:05
×違うという事実は分かった結果よりも、〜
○違うという事実は分かった。 実行結果よりも、〜

88 :74:05/02/16 17:55:24
>86
情報が小出しになってしまっていてすいません。

確認はtomcat上のJSPを利用して確認しています。
rpmとbinでの切り替えはCLASSPATHの設定を変更する
ことによって行っています。
その際、tomcatの再起動も行っていますので、残るといったことは
ないはずです。


89 :74:05/02/16 17:58:08
すいません、急遽、外出しなければならなくなりました。

みなさん、いろいろとアドバイスありがとうございました。
また、顔を出しますので、今日は失礼します。

90 :デフォルトの名無しさん:05/02/16 18:24:08
クラスパスで変わるの??

91 :デフォルトの名無しさん:05/02/16 21:16:20
rpm入れてしまったのは取引先なのに
なんでお前が始末書書いてんの?

92 :デフォルトの名無しさん:05/02/16 21:31:43
>>34
おまえみたいな奴が調子にのって
読みにくいソースコードをまき散らして
引き継ぎ人が多大な迷惑を受けるんだ。
はっきりいってウザイんだよ。
重複したコードが無駄に多すぎるわ
ゴミが多すぎるわ
余計な仕事を増やすな。くだらねえ読みにくいソースコードの
ために残業代も出ずに夜遅くまで残ってソースコードを解析する
苦労を考えろ。適切なアジャイル開発もできずにくだらんことでメモリが勿体なすぎると
抜かす奴は燃えるどころかハードコーディングだらけのスパゲティコードに
無駄な労働力を増やすだけの厚かましい存在だ。
最適化を後回しにすることもできない
設計能力もないデザインパターンも自動化ツールも使いこなせないCOBOLerの
ような考え方が古い人間は
迷惑だからこの業界から出て行け!!



93 :デフォルトの名無しさん:05/02/16 21:35:42
>>76
rpmを yum update
でアップグレード汁

94 :デフォルトの名無しさん:05/02/16 21:36:56
>>76
/etc/javaか
/usr/javaあたりに何か設定ファイルは無いか?

とりあえず文字コードはソースコードもコンパイルオプション指定も
UTF-8にしておけ


95 :デフォルトの名無しさん:05/02/16 21:38:15
>>76
1.4.2_b28
このbは何を意味する?
ベータ版かと思ってしまう。

1.4.2_07または5.0_update1は入れないのか?


96 :デフォルトの名無しさん:05/02/16 21:39:20
>>81
export LANG=ja_JP.UTF-8
で上書きしたらどうなる?

97 :デフォルトの名無しさん:05/02/16 21:41:18
>>88
<meta>タグでの文字コードの指定は?
<%@ page %>タグだったかな? そこでの文字コード(charset)の指定は?

System.setProperty()で無理矢理プロパティ帰られない?


98 :デフォルトの名無しさん:05/02/16 21:43:33
>>88
そのTomcatはJakarta純正のか? Tomcatはrpmで入れたのか?
バイナリで入れたのか? makeして入れたのか?
JAVA_HOMEは設定しているか?

それともGNU絡みでGCJでコンパイルされたネイティブで動く
Fedora Coreに付属している不安定なTomcatか?

99 :デフォルトの名無しさん:05/02/16 21:44:29
Fedora Coreに標準でついてくるJavaを使用することはお勧めできない。
まだまだ不安定だから。

100 :デフォルトの名無しさん:05/02/16 22:02:36
Linuxの中身がFedoraっつう報告は無いんだが。

ところで、これってjre/lib/charsets.jarがクラスパスにない場合に似てるんだが、
自前で設定しているっていうクラスパスに間違いはない?

101 :デフォルトの名無しさん:05/02/16 22:56:00
>>99
確かに不安定だね
システム全体がハングアップ同然になることもある・・・

102 :デフォルトの名無しさん:05/02/17 00:26:39
Fedora に標準の java コマンドって中身 gcj だろ? そんなん使ってる奴居るの?
2.6.10-1.737_FC3 + Sun JDK 1.4.2_06-b03 で Tomcat 動かしているがすこぶる好調だ。

で、Tomcat の起動は init.d の起動スクリプトでやっているのだろ? tomcat ユーザの
.bashrc だか何だかで LANG 設定しても利かないから。

> rpmとbinでの切り替えはCLASSPATHの設定を変更することによって行っています。
PATH のことか?

なんかここで聞こうと思ったんだが忘れてしまったよ。

103 :デフォルトの名無しさん:05/02/17 00:34:59
そうそう、GIF エンコードのサポートってまだ? ひょっとして 1.5 で出来てる?

104 :デフォルトの名無しさん:05/02/17 02:20:44
『シュート』のボタンを押すと棒人間の手からボールが弧を描きながらゴールに飛んでいき入る。

というプログラムをJavaを使って作っているんですが、ボールが弧を描きながらゴールに入るとこがよくわかりません。
ifとかflagを使うと聞いたんですがどうすればいいですか?

105 :デフォルトの名無しさん:05/02/17 03:32:28
>ifとかflagを使うと聞いたんですがどうすればいいですか?

釣りとしか思えない内容だがマジレスすると
キミの今のレベルではここで答えてもわけがわからないだけだと思うよ。
一冊本でも読んで出直してきた方がいい。

106 :デフォルトの名無しさん:05/02/17 07:00:44
>>104
数学の教科書を開いて 2 次方程式について調べて見よう。

107 :デフォルトの名無しさん:05/02/17 09:04:14
>>106
物理の教科書も開かせて力学も調べさせないと

108 :74:05/02/17 09:46:02
みなさん、おはようございます。
昨日は、早々に落ちてしまいすいませんでした。

>>90

現在、/usr/java/java2sdkをJAVA_HOMEに設定しています。
こちらはシンボリックリンクになっており、実体をbinとrpmとで
切り替えて、動作確認をしています。

>>91

いえ、rpmで入れるっていうのをマニュアルに書いてしまったので・・・
ですので、なぜ開発環境とずれるようなことを書いたのか、また、
この事象の原因は何かをまとめないといけないのです。

>>93 >>95

えっと、今回は正常動作させることはできているのですが、
rpmとbinの挙動の違いの根拠がどこにあるのかっていうことを
検証しないといけないんです。


109 :74:05/02/17 09:47:36
>>94

*.propertiesでfindをかけたんですが、プロパティファイルではシステムに
存在していないようです。
ファイルは/usr/java/java2sdk以下にしか置いていないので、このディレクトリ
以下に何か存在するのだと思っているのですが・・・

>>96

動作は変わらないですね。
>>85で出したプロパティの値も、環境変数によって左右されないようです・・・

>>97

metaタグおよび、JSPの先頭で<%@ page contentType="text/html; charset=EUC-JP" %>
を指定してあります。
表示もStringのデータも問題ないのですが、getBytesでバイト変換した場合の挙動で
rpm版の場合のみ、マルチバイト文字が"?"に変換されてしまいます。

setPropertyでプロパティを変更した場合は、rpmとbinの挙動は同じになりました。
file.encodingの値を見ているようです。

>>98

Jakartaプロジェクト純正です。
こちらに関してはJakartaのHPにあったバイナリをそのまま配置して動作させています。
linuxはFedoraではなく、Enterprise版を使用しています。


110 :74:05/02/17 09:55:32
>>100

CLASSPATH=$JAVA_HOME/li/tools.jar:$J2EE_HOME/lib/j2ee.jar
という指定になっています。
一度、charsets.jarを直接指定して、実験してみます。

>>102

シンボリックリンクの切り替えのことでした。
tomcatの起動スクリプトも自前で作っているのですが、環境変数として
LANGはexportしてないですね。


111 :デフォルトの名無しさん:05/02/17 10:32:13
>>108
>昨日は、早々に落ちてしまいすいませんでした。

この言い回し懐かしい。。。テレホ時代思い出した。


112 :デフォルトの名無しさん:05/02/17 10:40:45
>>111
そうだのう
ISDNで64Kbpsの時代だったなあ

それにしても、質問者は2chに似合わず、礼儀正しい人だのう

113 :デフォルトの名無しさん:05/02/17 10:42:05
>>110
この環境変数CLASSPATHはどこで記述しているの?

だいたい、Tomcat使うのに、環境変数CLASSPATHって、普通設定するもんなの?
俺は、Tomcatの起動スクリプトに任せてるけど。
大体は、Webアプリケーション単位でWEB-INF/libに置くか、
Tomcat全体に通したい場合は、common/libに放り込む。
#だからといって、rpmとbinでの違いになるかは知らんけど。

>こちらはシンボリックリンクになっており、実体をbinとrpmとで
>切り替えて、動作確認をしています。

その実体の中も比較してみたら?まずはファイルの有無単位で。

114 :デフォルトの名無しさん:05/02/17 10:46:05
あと、どんなスクリプトからTomcat起動しているのかもさらすべし。
・tomcatについているスクリプト使っている
・自作スクリプトで、classpath自分で通してorg.apache.catalina.startup.Bootstrapを起動している


115 :デフォルトの名無しさん:05/02/17 10:54:12
>>100 charsets.jarはブートストラップクラスだから、ユーザが
環境変数や-cpで指定するユーザクラスとは関係ないよ。
-X〜で上書きはできるけど。そういやちょっと昔のJREってcharsets.jar
が同梱されている国際版とされていないやつに分かれてたけど、
そういう話だったりして。

116 :デフォルトの名無しさん:05/02/17 10:54:27
rpmとbin両方root(LANG=C)でインストールして、rootで実行して試してみたが、
両方とも
file.encoding:ANSI_X3.4-1968
user.country:US
user.language:en
になったぞ。

テストプログラムはこんなの
Properties p = System.getProperties();
for ( Iterator i = new TreeSet( p.keySet() ).iterator(); i.hasNext(); ) {
String key = (String)i.next();
System.out.print( key );
System.out.print( ":" );
System.out.println( p.getProperty( key ) );
}

117 :74:05/02/17 11:05:20
>>113

環境変数はtomcatの起動スクリプト内に記述してあります。
実際の起動、終了は$TOMCAT_HOME/binにある、
startup.shとshutdown.shを環境変数設定後に呼び出しているだけです。

ファイルの有無のチェックは、これからやってみます。

>>115

そうだったんですね。
指定したことがなかったので、試してみましたが変化はなかったです。

>>116

わざわざありがとうございます。
テストプログラムは似たような感じですね。

116さんの結果では、もしかしてbinの方はインストール時の環境を
どこかで持ってしまうっていうことなんでしょうか?
私の場合、rootでLANG=ja_JP.eucJPでのインストールとなっています。

LANGを違う国に変更した場合の、挙動を見てみます。

118 :74:05/02/17 11:07:12
>>114

起動スクリプトは以下のような感じです。

. /etc/rc.d/init.d/functions

export JAVA_HOME=/usr/java/j2sdk
export J2EE_HOME=/usr/java/j2sdkee
export CATALINA_HOME=/usr/local/jakarta/tomcat
export CLASSPATH=$JAVA_HOME/lib/tools.jar:$J2EE_HOME/lib/j2ee.jar
export PATH=$PATH:$JAVA_HOME/bin:$J2EE_HOME/bin

case "$1" in
start)
echo "Starting tomcat"
$CATALINA_HOME/bin/startup.sh

sleep 10
;;

stop)
echo "Stopping tomcat"
$CATALINA_HOME/bin/shutdown.sh

echo
;;

restart)
$0 stop
$0 start
;;
esac

119 :デフォルトの名無しさん:05/02/17 11:08:16
>>117
binでインストールした際には、JARファイル何個かをcreatingしてたのでそうかも。

120 :デフォルトの名無しさん:05/02/17 11:39:00
earファイルの作り方を載せているサイトってどこが無いですかね?
application.xmlの書き方が良く分からない・・・。

121 :デフォルトの名無しさん:05/02/17 11:45:56
12です。

>>18さん
亀レスですいませんが、ありがとうございました。

122 :U ◆CZtFsGiu0c :05/02/17 14:19:52
>>120
application.xmlなんて今どき自力で書くようなもんじゃないと思うけど、
http://www.beasys.co.jp/e-docs/wls/docs81/programming/app_xml.html#1007302
こんなとこでどう?

123 :74:05/02/17 14:33:06
>>113

ファイルの有無をdiff -rsでやってみました。
binの場合のみ、$JAVA_HOMEの直下に.systemPrefsという
ディレクトリが作成され、その下に.system.lockと.systemRootModFile
という二つの空ファイルが作成されていました。
他のファイルに関してはバイナリレベルでidenticalと表示されています。

>>116

実際にインストール時のログをファイルに取って、作成ファイルを
確認してみました。
jarファイルが作成されているようです。rpmでは、.packという拡張子で
ファイルが格納されており、それが展開されているだけではと思います。
これらのファイルもrpmとbinでは違いがありませんでした。

また、LANGをCとja_JP.eucJPにして、binを展開した場合のディレクトリ
およびファイルの比較をしてみましたが、こちらも違いがありませんでした・・・

そこで、rpm版で確認したのですが、rootになって環境変数を変更して、
挙動を確認してみました。

次にまとめます。

124 :74:05/02/17 15:07:56
LANG=Cで/etc/rc.d/init.d/tomcat startで起動
 RPM:file.encoding=EUC-JP-LINUX
 BIN:file.encoding=EUC-JP-LINUX

LANG=Cで$CATALINA_HOME/bin/startup.shで起動
 RPM:file.encoding=ANSI_X3.4-1968
 BIN:file.encoding=ANSI_X3.4-1968

LANG=ja_JP.eucJPで/etc/rc.d/init.d/tomcat startで起動
 RPM:file.encoding=EUC-JP-LINUX
 BIN:file.encoding=EUC-JP-LINUX

LANG=ja_JP.eucJPで$CATALINA_HOME/bin/startup.shで起動
 RPM:file.encoding=EUC-JP-LINUX
 BIN:file.encoding=EUC-JP-LINUX

となりました。
前回、実施した結果と異なった状態になっています・・・
(前回はRPMでEUC-JP-LINUXは出なかった)

一度、サーバ全体のインストールから、確認をしたいと思います。

125 :120:05/02/17 16:04:31
>>122
情報ありがとう。
一応そのサイトは見つけたんだけど、タグの意味が載ってるだけでは
俺の頭では作れなかった・・・。でも、ホント情報サンクス。
ちなみに、application.xmlって自力で作らなくて良いの?
俺はてっきり自分で書くのかと思ってたんだけど、もし自動で
作成する方法があるなら、良ければ教えて下さい。
使ってる環境はWeblogic7.0です。

126 :U ◆CZtFsGiu0c :05/02/17 16:59:10
>>125
7.0だとWorkshopは使えないね。Eclipse + LombozならEarの生成機能があるはず
だけど、開発環境は何を使っていますか?

でも、application.xmlって大して書くことないから、手で書いてもそんなに大変
じゃないと思うけど。

127 :デフォルトの名無しさん:05/02/17 21:01:14
教えて下さいませ。

(問題)Swingで表示した文字のフォント表示が擦れてしまいます。
感覚的には指定したポイントの文字を縮小して表示を潰した後、
元のポイントに引き伸ばした感じ。

dialog.plain を指定-> WinOS的には、MSゴシックが指定される。
dialog.boldのフォントが汚い問題とは、フォント種も表示結果も違うので
別の問題と判断してる。

Java1.3.1/Windows2000/数十台中1台のみ発生するので、
端末固有の問題なんだろうけど、原因不明じゃ癪なので…

128 :デフォルトの名無しさん:05/02/17 21:22:12
トランプゲームを作るとして,
PlayerクラスとDeckクラス(場の山)があるとして,
Playerオブジェクトにカードを一枚ドローさせたいとする.

このときPlayerオブジェクトが,その内部に他のPlayerオブジェクトと共有する形でDeckオブジェクトを持っていると,
player1.draw()とやるだけでカードが一枚取得できるので嬉しいのですが,
OOP的にこれはアリですか?

現実に照らしあわせて考えると,,人(Player)は場の山(Deck)を直接所有しているわけではないので,
一枚カードを引くという動作は,あえていうなら player1.draw( deck.getCard() ); な感じがするんですが,
別に現実通りに構築しなくても……と思いつつも,PlayerがDeckを所有するという違和感が気になりまして.

129 :デフォルトの名無しさん:05/02/17 21:32:45
>>128
drawの中でdec.getCard()を呼び出すようにして
player1.draw(dec);
でいいんじゃない?

130 :129:05/02/17 21:33:57
間違えた、decじゃなくてdeckだね

131 :デフォルトの名無しさん:05/02/17 21:50:23
>>102
真っ赤で分厚いFedora Core2の本に
ちょっとしたコラムとして、GCJで動くTomcatの紹介をしている記事があった。
あの本の著者関係者は、ネイティブ版Javaをマンセーしているかのようだった。
TomcatまでGCJで動かすなんてキモイ。


132 :デフォルトの名無しさん:05/02/17 22:00:48
ネイティブというだけで、拒絶反応しめすのもキモイけどな。
只で使えるeclipseがないときは、IDEに拒絶反応しめしてたJava厨に似てる。

133 :デフォルトの名無しさん:05/02/17 22:01:22
実際のところGCJは使い物にならないし


134 :デフォルトの名無しさん:05/02/17 22:22:12
new ってなんで要るの?

ClassName instance = ClassName();

こんな文法でも別に問題ない気がするんだが。

135 :デフォルトの名無しさん:05/02/17 22:36:53
Java サーブレット特訓中です。
次のコンパイルエラー教えてください。

Controller02.java:37: シンボルを解決できません。
シンボル: メソッド RequestDispacher (java.lang.String)
場所 : javax.servlet.ServletContext の インタフェース
RequestDispatcher rd = context.RequestDispacher( target );
^
エラー 1 個

問題になってる部分です。

  String target = "/View02.jsp";
ServletContext context = getServletContext();
RequestDispatcher rd = context.RequestDispacher( target );
rd.forward( req, res );

136 :デフォルトの名無しさん:05/02/17 22:38:59
>>134
面白いやつだな


137 :デフォルトの名無しさん:05/02/17 22:52:03
>>135
サーブレットなんて難しいものを勉強する前に
Javaの基本を勉強した方がいいよ。

138 :デフォルトの名無しさん:05/02/17 22:52:31
>>132は最近Javaスレで暴れている低脳コボラか

139 :デフォルトの名無しさん:05/02/17 22:54:08
>>134
Perl厨は馬鹿だから
そういう考え方しかできない

140 :デフォルトの名無しさん:05/02/17 22:56:31
>>134-135
命名規約を守っているAPIのメソッド名が大文字で始まると思っているのか愚か者め。


141 :デフォルトの名無しさん:05/02/17 23:10:26
>>140
135です。わかりました。うまくいきました。サンクス。

142 :デフォルトの名無しさん:05/02/17 23:27:38
int 10のような整数を 0010と表現したいのですが、NumberFormatで定義をするのでしょうか?


143 :デフォルトの名無しさん:05/02/17 23:43:12
>>134
そのルールで行く場合、次のプログラムでは何が表示されるの?
(見やすくするために、タブの変わりに全角スペースで字下げしてます)

public class ClassName {
  public static void main() {
    ClassName instance = ClassName();
  }
  public ClassName() {
    System.out.println("Constructor");
  }
  public static ClassName ClassName() {
    System.out.println("Static Method");
    return new ClassName();
  }
}

144 :134:05/02/17 23:50:24
>>143
>  public static ClassName ClassName() {
ここと、
>    return new ClassName();
ここでコンパイルエラー。

145 :デフォルトの名無しさん:05/02/17 23:52:07
>>142
NumberFormat nf = NumberFormat.getInstance();
nf.setMinimumIntegerDigits(4);
nf.setGroupingUsed(false);
nf.format(10);

146 :デフォルトの名無しさん:05/02/17 23:58:26
>>144
つまり>>143が言いたいのは
ClassName instance = ClassName();
これでは、インスタンスを作成するのか、メソッドを呼んでいるのか
判断できないということ。
ちなみにどんなエラー?

147 :デフォルトの名無しさん:05/02/18 00:01:14
>>145
ありがとうございます。お手数かけました。

148 :134:05/02/18 00:07:34
>>146
「コンストラクタと同名メソッドは定義不可」
「new が未定義」
かな。

149 :143:05/02/18 00:10:21
>>144
なるほどね。
クラス名にカッコつけて書いたら、それだけでインスタンス生成式扱いってことね。
よってクラス名と同じ識別子をメソッド名として使うことは許さん、と。
それならそれで筋が通ってるような気がする。

>>146
「判断できない」とまで言わないけど、判断するのに、その識別子が
メソッド名として使われているのか、クラス名として使われているのかを
確認しないといけなくなる、ってことだよね。

>>143
public static void main() {
じゃなくて
public static void main(String[] args) {
だろがよ?え? ww



150 :デフォルトの名無しさん:05/02/18 00:44:39
new 演算子でなく smalltalk とか ruby みたいな new メソッドでもよかったような気がする。
今でもバイトコード上ではコンストラクタは <init> という名前のメソッドでしかないしな。

151 :デフォルトの名無しさん:05/02/18 00:54:31
昔いたプログラミング言語関係の研究室で、
まさに同じ主張をしてた人がいたなあ。
彼は、コンストラクタ呼出しに無意味にnewを付けなきゃいけない点について
Javaの唯一汚ないところだと言ってたよw

152 :デフォルトの名無しさん:05/02/18 00:57:38
>139
僭越ながら全てのPerl厨に替わって申し上げる

まともなモジュール書く香具師ならちゃんとnewサブルーチン作るYo!!(つ´д`;)

153 :デフォルトの名無しさん:05/02/18 01:08:59
JavaでXMLファイルを読み込んで
タグの部分だけを抜き出したいときってどうすればいいのでしょうか?
ファイルを読み込んで一行ずつ出力しようとすると
どうしても全行出力されたりしてうまくいきません

154 :デフォルトの名無しさん:05/02/18 01:11:37
日常使う英数字(10進数?)の
1 2 3 4 5 6 7 8 9 a b c d e j k A B C D E J Kが
それぞれ
31 32 33 34 35 36 37 38 39 61 62 63 64 65 66 6A 6B 1 42 43 44 45 4A 4B
に対応してるんですけど、javaでの変換方法が分かりません。
16進数とかHex表示などの機械語みたいなんです。

例えば下の61をaに変換するプログラムを作りたいのですが。
ご教授願えますでしょうかm(_ _"m)

155 :デフォルトの名無しさん:05/02/18 01:49:54
public class Sample {
public static void main(String[] args) {
char c1 = 0x61;
int i1 = (int)c1;
System.out.println("文字コード " + c1 + " は");
System.out.println("10進数の " + i1 + " と等しく、");
System.out.println("8進数の " + Integer.toHexString(i1) + " と等しく、");
System.out.println("16進数の " + Integer.toOctalString(i1) + " と等しく、");
System.out.println("2進数の " + Integer.toBinaryString(i1) + " と等しい。");
}
}

酔っ払ってるので超適当。コピペを繰り返すのは悪いコードの見本です。

156 :デフォルトの名無しさん:05/02/18 01:50:46
>>153
SAXってやつを使えばいいんじゃないかと思う。(自信ないけど。)

157 :デフォルトの名無しさん:05/02/18 02:16:03
Javaしってても仕事も就職先もないね(TдT)

158 :デフォルトの名無しさん:05/02/18 02:53:58
面接の勉強をした方がいいんじゃないか?

159 :デフォルトの名無しさん:05/02/18 02:58:38
人間性の問題ということか・・・

160 :デフォルトの名無しさん:05/02/18 03:02:32
やさしいJavaを読破した後、結城のJavaプログラミングレッスンも読んだほうがいいですか?

161 :デフォルトの名無しさん:05/02/18 03:13:10
俺の場合、やさひい→結城本上下→BP本&シルバー本→P取得 で8ヶ月もかかっちまったよ。

162 :デフォルトの名無しさん:05/02/18 03:26:22
break;

163 :デフォルトの名無しさん:05/02/18 03:27:46
>>157
あと5年早く生まれてれば知ってるだけで引く手数多だったのに、残念!

164 :デフォルトの名無しさん:05/02/18 03:40:14
>>161
Pって何?

165 :デフォルトの名無しさん:05/02/18 04:43:03
>164
http://pc5.2ch.net/test/read.cgi/prog/1089814727/

初学者でも3ヶ月位で取ってるみたい。


166 :デフォルトの名無しさん:05/02/18 12:06:13
>>164
問題の難易度はそこそこだけど。
合格ラインが、52%以上の正解だから、半分しか理解していなくても簡単に受かる。
#難しいというか引っ掛けだらけ。、
#「そんなもんコンパイルすれば分かるじゃん」という問題ばかり



167 :デフォルトの名無しさん:05/02/18 12:26:16
>>157
そりゃ当然、Javaを知ってるだけじゃ意味無いだろう。
ある程度使えないと。って違う?

168 :デフォルトの名無しさん:05/02/18 12:36:19
>>157
どの程度知ってるかは知らんが
学校で習った程度とかだとだめじゃないかな
今は具体的に自分で何か作ったないと厳しいと思う

169 :デフォルトの名無しさん:05/02/18 12:39:52
>>157
どこまで知ってるかだね。
標準仕様だけでなく、今現場で必要とされているフレームワークやライブラリ、ツールを
熟知して、デザパタやJ2EEパターンなども知っていて、それらを必要に応じて組み合わせて
アーキテクチャ設計が出来るぐらいまで知っていれば仕事も就職先もあるよ。
・・・ってかウチが欲しい。
末端プログラマとしてコーディングができます。っていうだけだったら、いらない。
「Javaできても仕事がない」って言う奴はその程度の奴だろ。

170 :デフォルトの名無しさん:05/02/18 12:57:19
>>169
>末端プログラマとしてコーディングができます。っていうだけだったら、いらない。
>「Javaできても仕事がない」って言う奴はその程度の奴だろ。

Javaに限った話ではないな、C言語なんかでも、学校で習った程度で
就職しようとしてる人がいるからな。
みんなができるなら、それ以上のものがないといけないというのに

171 :デフォルトの名無しさん:05/02/18 15:00:35
>>169
>標準仕様だけでなく、今現場で必要とされているフレームワークやライブラリ、ツールを
>熟知して、デザパタやJ2EEパターンなども知っていて、それらを必要に応じて組み合わせて

その求人も現在では実は少ないw 単純に考えれば分かるが、
プロジェクトに船頭は二人いらないから。なまじ知ってるのが多いと
返って揉めたり、独自仕様を強調する香具師が出てくるしw
末端コーダーの方が量だけは求められるが、今はどこも飽和状態だからね。
つまりコーダーもマネージャースキルの持ち主も就職は厳しいよ。
これからはますますそうなる。少ないパイを取り合ってるのだし。


172 :デフォルトの名無しさん:05/02/18 15:05:09
>>169
つーか、そんなに欲しいか? そのマネージャースキルの持ち主って?
むしろ、自信の無い末端コーダーの方が必要だったりする。
ちゃんと言われた通りにコーディングしてくれるし。なまじスキルが
あると、勝手に機能を追加したり自称改善してくるのがいるからなー
ピラミッドの底辺は大量に獲得しなきゃならないしね。

173 :デフォルトの名無しさん:05/02/18 15:17:21
>>172
これから入る底辺は言われた通りにもコーディングできないかも知れないがな
しかし話がJavaと関係なくなってしまったな

174 :デフォルトの名無しさん:05/02/18 15:41:26
ナポレオンは「一人の凡将が率いる軍は、二人の名将が率いる軍に勝る」
と言ったけど、プロジェウトにもモロに当てはまるな。
スキルと自信(自己主張)は完全に比例するし、スキル高いのが多いと
ミーティング時に揉めて進捗率が悪くなる事がある。最終的に完成度が
高くなってもスピードの方が重要だから、多少理不尽でも黙って従って
黙々と開発してくれる方が全体の為になる。スキル高くてもそれを表面に
出さずに従順にこなしてくれる人が一番ベストだが、現実にはそんな人は
いないからなー。プログラマはただでさえクセの強い人が多いしw

175 :デフォルトの名無しさん:05/02/18 16:02:31
自己主張ばかりで納期も守れない、勘違い野郎が一番やっかい。
このスレにもたくさんいるよな、そんな野郎。

176 :デフォルトの名無しさん:05/02/18 16:04:27
末端コーダーは人件費の安いインド人にやってもらうから
コーディングしか出来ない日本人は失職する傾向にある


177 :デフォルトの名無しさん:05/02/18 16:08:57
スキル高い椰子が自己主張するのは単に自信やプライドの問題じゃなくて、
烏合が集まってプロジェクトが変な方向に行こうとするのを察知して
それを事前になんとか必死で止めようとする意味もある。
無駄な努力だと悟ればそういう椰子はさっさと退職してそのチームには
ゴミだけが残る。


178 :デフォルトの名無しさん:05/02/18 16:12:28
それより、ここはJava質問・相談スレッドである

179 :デフォルトの名無しさん:05/02/18 16:20:02
昔、Webでうごくシステムの開発のときに、顧客情報管理部分のテストをしていた。
顧客名を <font color="red">田中</font> と、HTMLのタグをつけて入れてみたら、
顧客名一覧画面で、田中という文字だけが赤い文字で表示された。

「ユーザが入力した値を表示する際には、タグのようなものが入っているかもしれ
ないことを考慮して、ブラウザエスケープする必要があるのではないか」

とミーティングで発言したら、「言われたことだけさっさとやれ、納期が迫ってるんだ」
という意味のことをプロジェクトマネージャーに言われた。

そんなことを思い出したYo!

180 :デフォルトの名無しさん:05/02/18 16:30:21
いや、あまり従順でも返って能力を疑われるしな。
明らかに変な仕様の時に、何も言わないと軽蔑される事も多い。
言うべき時は言わなきゃダメだよ。
自己主張は今の時世では特に重要だ。生意気と思われる位がちょうどいい。
フレッシュマンでもそうだ。あまりおとなしいと返ってバカにされる。
全体の為にもならず自分の為にもならない。

181 :デフォルトの名無しさん:05/02/18 16:34:36
×「返って」
○「却って」

182 :初心者:05/02/18 16:39:55
たとえばアニメーションなどで2つスレッドを作って、
アニメーションなどで1つのスレッドがsleepしている間にもう一つのスレッドに計算をやらせ、
計算が終わったらもう一つのスレッドでrepaintするとしたほうが時間的に
効率化されますでしょうか?つまり1つがsleepしている間はスレッドが動いて
いないから別のスレッドが動いたほうが効率的だと思ったのですが・・・

183 :デフォルトの名無しさん:05/02/18 16:41:31
>>181
お前生意気

184 :デフォルトの名無しさん:05/02/18 16:46:04
>>182
その通り

185 :デフォルトの名無しさん:05/02/18 20:27:08
Double型をString型に変えるにはどうそればいいのでしょうか?

186 :デフォルトの名無しさん:05/02/18 20:47:46
>>185
toString()

187 :デフォルトの名無しさん:05/02/18 20:54:40
>>186
即レス、サンクス

188 :デフォルトの名無しさん:05/02/18 23:50:08
頭の弱い犬ほどよく吠える
能力はまるっきりなのに、書籍の知識を鵜呑みにして
有能気取りのバカが、このスレにも常駐してる


189 :デフォルトの名無しさん:05/02/18 23:59:43
主張云々はマ板でやってくれ。
質問スレでやる内容じゃない。

190 :デフォルトの名無しさん:05/02/19 01:32:44
ファイルの読み込みで

bufferedReader =
 new BufferedReader(
  new InputStreamReader(
   new FileInputStream(file),
    "EUC-JP"));

こう書いているのですが、"EUC-JP"の部分がネックで
例えば対象ファイルがShif_JISだった場合、文字化けしますよね。

エンコードを自動判別するロジックってどう書けばよいでしょうか。

191 :a:05/02/19 01:34:33
クライアントにダウンロードされたAppletをそこから別のDBサーバに
接続させるにはどうすればいいでしょうか?

(接続図)
クライアント→WEBサーバー(Applet)→DBサーバー
※WebサーバーとDBサーバーは別のハードウェア
※DBサーバーへの接続はJDBCを使う

処理を分散させたいため、WebサーバーとDBサーバーを別々にしましたが、
これだとAppletからDBサーバーへ接続しにいくところでエラーが出ます。

調べたところ、Javaのセキュリティ仕様によりクライアントと接続先の間
でしか接続できず、それ以外とは通信できないらしいです。

何かいい回避策はないでしょうか?

192 :デフォルトの名無しさん:05/02/19 01:46:00
>190
JISAutoDetectで満足できないなら自分で判別ロジックをこさえるしかないかと。
nkfとかのソースを参考にしてもよいかもしれず。

193 :デフォルトの名無しさん:05/02/19 01:48:17
>191
Webサーバーにサーブレットコンテナを載せて
アプレット - サーブレット - DB
てのはどうだろう。

194 :デフォルトの名無しさん:05/02/19 02:08:57
>>191

1、あきらめて、WebもDBも同じマシンに置く。

2、Webサーバが置かれているサーバ内に、JDBCプロキシを動かす。
このプロキシは、指定されたポートでAppletからの接続を待ち、Appletに対してDBサーバのふりをする。
本当のDBサーバに対しては、このプロキシがJDBCクライアントとしてアクセスする。

3、DBサーバが置かれいているサーバ内に、HTTPプロキシを動かす。
このプロキシは、多分きっと80番ポートでクライアントからの接続を待ち、クライアントに対してWebサーバのふりをする。
本当のWebサーバに対しては、このプロキシがHTTPクライアントとしてアクセスする。

4、アプレットをやめて、Javaで書かれたプログラムを各クライアントマシンに配布する。

5、Appletが、どこにでもホイホイ繋ぎに行くように各クライアントマシンの設定を甘くする。
(そんなことが可能かどうかはシラネ。mozillaならOpensourceなので、不可能ではないかもw)

195 :デフォルトの名無しさん:05/02/19 03:06:04
>>167-171
なんか変態がいるね

196 :デフォルトの名無しさん:05/02/19 03:09:39
>>194 そこまで選択肢あげといて、なぜアプレットに署名とか、
JWSでアプリ配布とかまっとうな方法が出てこないのか...

197 :デフォルトの名無しさん:05/02/19 03:42:29
ただの下請けのドカタが、建物の設計にまで口出してきたら、嫌だよなぁ
てか(*∂ー∂*)イラナイワ

198 :初心者:05/02/19 03:45:16
>>184 レスありがとうございました。

199 :デフォルトの名無しさん:05/02/19 04:38:59
>>198
バカレスまにうけるなよ

200 :デフォルトの名無しさん:05/02/19 05:17:16
この業界は建築業界と違って設計を素人がするケースが多いから
設計に重大なミス(例えれば建築物が崩壊するような)があることが多い
ドカタであろうが設計ミスは指摘してよい

情報処理技術者試験があくまで認定試験であって
一級建築士並みの資格試験になっていないのも問題


201 :デフォルトの名無しさん:05/02/19 05:45:40
スレ違いで頑張ってないでキエロ

202 :デフォルトの名無しさん:05/02/19 05:50:20
いたなそんな椰子

ここはデザパタのコンポジットパターン使うのが正しいとか
納期を無視して設計変更を力説する椰子
勝手に正しいとか言ってるアホは速攻無視したが

203 :デフォルトの名無しさん:05/02/19 05:53:43
納期通り納品したあと問題が起こって突き返されるのが目に見えてるだろ

204 :デフォルトの名無しさん:05/02/19 09:31:24
他人に自分の趣味趣向を押しつけて、正義づらされたんではたまらない。
こちとら趣味ではなく、エンドユーザーからお金をもらってやってるんだから。


205 :デフォルトの名無しさん:05/02/19 10:56:55
2・3年前に比べてかなり質が落ちたなこのスレ
Java プログラマ全体の質が落ちたのか

206 :デフォルトの名無しさん:05/02/19 11:10:15
>>205
どこで落ちたと判断したんだ?

207 :デフォルトの名無しさん:05/02/19 12:28:22
そういうところ

208 :デフォルトの名無しさん:05/02/19 12:38:18
>>205
単にJavaプログラマの裾野が広がっただけでは?

209 :デフォルトの名無しさん:05/02/19 12:38:29
回答側5人くらいで大量の質問捌いてた頃を思い出してみたり

210 :デフォルトの名無しさん:05/02/19 12:52:23
自作自演乙

211 :デフォルトの名無しさん:05/02/19 14:21:30
>>202 >>204
趣味設計を擁護するわけではないが、少なくともおまえは使えない人材っぽいな。
契約終わればサヨウナラ作業がメインの三流下請けだろ? 指摘に対して思考停止
してる時点でエンジニアとしては終わっている。

212 :デフォルトの名無しさん:05/02/19 14:46:17
品質はごまかせても納期はごまかせないからね。実際、納期守って糞アプリの納品逃げする
会社も多いし。品質と納期のために最善の努力をしてくれる協力会社見つけてるから俺は
良いけど、納期守っても一回作り逃げした会社は次から安く買い叩くことにしている。

雑談失礼、次の質問


213 :デフォルトの名無しさん:05/02/19 16:31:55
Javaでアクションゲーム作りたいんですけど
何から勉強したらいいですか?


214 :デフォルトの名無しさん:05/02/19 16:34:48
まずはJava以外でゲームが作ったことがあるのかどうかだな
言語自体がわからないのであればどこがわからないかとかわかると思うのだが


215 :デフォルトの名無しさん:05/02/19 16:35:19
>>157
Javaの仕事ばかりやってるんだが

216 :デフォルトの名無しさん:05/02/19 16:36:19
>>213
質問の仕方

217 :デフォルトの名無しさん:05/02/19 16:37:40
>>213
どこまでJavaを使えるのか分からないので答えられないな

218 :デフォルトの名無しさん:05/02/19 16:47:26
>>171
> >標準仕様だけでなく、今現場で必要とされているフレームワークやライブラリ、ツールを
> >熟知して、デザパタやJ2EEパターンなども知っていて、それらを必要に応じて組み合わせて
>
> その求人も現在では実は少ないw 単純に考えれば分かるが、
> プロジェクトに船頭は二人いらないから。なまじ知ってるのが多いと
> 返って揉めたり、独自仕様を強調する香具師が出てくるしw

慣れてくると揉めねえよ。仲悪くなる奴はいるが。
職場を変えれば見知らぬ奴と人間関係を簡単にやり直せる。
経験を積むことで沢山知っていようが揉める可能性は低い。
おだやかに対応するだけでどうにかなるもんだよ。
相手が独自仕様をおしつけてきたらとりあえずそれでやってみる。
そいつが馬鹿な手法をとってきたらとりあえずそいつの言うとおりに
してそいつがいかにして馬鹿であるかを証明してみればいい。
そしてあとからこちらが知っているもっと良い方法を実際にやってみて
そいつに見せびらかす。そうすれば喧嘩になる可能性も減り
そいつ自信、自分の手法が悪かったと反省して新しいやり方を受け入れるようになる。
馬鹿で古くさい開発手法を押しつけてくる輩には成功事例を実際に
そいつの目の前で見せつければイチコロよ。


219 :デフォルトの名無しさん:05/02/19 16:47:42

あとはマネージャやチームリーダの部下を管理する、采配する能力次第だな。
顧客から仕事をとってくる営業SEのコミニュケーション能力に依存してしまうところもあるが。
営業SEが馬鹿だと無駄な仕事が増えて悪循環になり後始末が大変なことになる。
結局こちらが営業にかわって直接顧客とコミュケーションを密にとることになるが
営業SEが馬鹿なのでもう手遅れな事態になっていることも多々。

現場で感じることは仕事をとってくる馬鹿な営業SEをどうやって説得するか
技術もろくにしらずにこちらがなんでもできると勘違いしている
素人な顧客といかにしてうまくつきあっていくか
テストの自動化をいかにして効率化するかが重要だってことがわかってくるよ。

どうだろうな。今プログラマは停滞しているところだと思うよ。
給料がITバブル時代とくらべかなり下がったことは否めないけどね。
マネージャクラスのスキルが低すぎる、あるいはそのクラスの人手が
不足している現状があると思うよ。

DBの設計能力のある人間も不足しているしね。


220 :デフォルトの名無しさん:05/02/19 16:51:53
>>173
> >>172
> これから入る底辺は言われた通りにもコーディングできないかも知れないがな

学生アルバイトとして働いているがうちの職場はそうでもなさそうだぞ。
給料安い代わりにほとんど好きなようにやらせてくれる。
一般的ばJavaコーディング規約を守っていればオブジェクト指向を使うも
学生アルバイトだろうが
勝手にクラスやパッケージや定数を追加するも自由。
プロジェクトによっては言語を勝手に選んでも言い場合もある。


他の職場では勝手にクラスを追加することも許されないところもあった。






221 :デフォルトの名無しさん:05/02/19 17:01:47
>>174
> ナポレオンは「一人の凡将が率いる軍は、二人の名将が率いる軍に勝る」
> と言ったけど、プロジェウトにもモロに当てはまるな。
> スキルと自信(自己主張)は完全に比例するし、スキル高いのが多いと
> ミーティング時に揉めて進捗率が悪くなる事がある。最終的に完成度が

揉める原因た大抵上司や会社部署、チームの風潮にあるな。
上司/マネージャが部下を評価する方法がいい加減で現実的でないと醜い昇給争いに巻き込まれる。
とにかく急げ、短期間でやれと主張する上司に囲まれたプロジェクトでは
そういう喧嘩が起きやすい。
だがマネージャやチームリーダが過去に苦いプログラミング経験を持っており
急ぐことの危険性を知っていれば揉める可能性は低い。

それから、上司の中にできないことをできると言っている奴がいて、
それを部下に押しつけるような様子だと揉め事の原因になる。
できるかわからないことを、まだ試してもいないのに「できる」と
主張すると揉める。

要は、プログラマのスキルを正当に評価できる人間がマネージャになれば
解決するってこと。ある奴がある言語で作ったプログラムを短期間で完成させたが
言語を変えただけで開発速度が大幅に衰えることがある。
そこで、ある上司は前者のそいつの行動をみると凄い奴と思ってしまうが
他の上司で後者の行動した見たことが無いのはたいしたことが無い奴だと思ってしまう。

たいしたことがないと思われるとそいつはムキになる。おれの功績を見てくれないと、
そこで自分の得意分野を押しつける。
そもそも、上司がもっと客観的に部下を評価すればこんな事態には陥らないはずなのである。

言語やツール、開発環境の違いがその人の開発速度に影響を与えることを
わかっていない上司はプログラマのスキルを正当に評価できる能力が弱いため
喧嘩に原因を作りやすい。


222 :デフォルトの名無しさん:05/02/19 17:02:50
>>220

>> これから入る底辺は言われた通りにもコーディングできないかも知れないがな
>
>学生アルバイトとして働いているがうちの職場はそうでもなさそうだぞ。
>給料安い代わりにほとんど好きなようにやらせてくれる。

なんかすご〜く的外れな回答なんですけど

223 :デフォルトの名無しさん:05/02/19 17:05:00
>>218-222
既にスレ違いっぽい気がしますがいかがなもんでしょう?
続きはマ板の適切なスレに移動されてはいかが?

224 :デフォルトの名無しさん:05/02/19 17:06:08
>>221
>そこで、ある上司は前者のそいつの行動をみると凄い奴と思ってしまうが
>他の上司で後者の行動した見たことが無いのはたいしたことが無い奴だと思ってしまう。
>
>たいしたことがないと思われるとそいつはムキになる。おれの功績を見てくれないと、
>そこで自分の得意分野を押しつける。

それお前の体験談?

225 :デフォルトの名無しさん:05/02/19 17:13:06
>>175
> 自己主張ばかりで納期も守れない、勘違い野郎が一番やっかい。
若い世代にはかなり多いぞ。
上司の部下を評価するスキルにも依存するが。
30代の世代でもいなくはない。たとえばUnixとCに精通した
システムプログラミングに熟練した者は非常にプライドが高い。
サーバ管理スキルも凄腕でSolarisやPerl/CGIにもかなり精通している。
そういう人が以前いたがJavaをやりたがっていなかったのに
チームリーダを兼ねてJavaをやらされる羽目になった。
その人はJavaServletをよくわかっていなかった、
オブジェクト指向もわかっていなかったため
かなりイライラしていた。言語がJavaに変わっただけで
自分の能力が上手に発揮できないためだ。
それだけでそのプロジェクト内では
若手のJavaプログラマに負けてしまうのだ。
彼はいつも自分のC, UNIX,シェルスクリプトのスキルを自慢していた。
若手のプログラマにUNIXに関する問題を出して
どれだけスキルがあるか試していた。
と同時にそうすることで自分の威厳を保とうともしていた。
負けず嫌いな彼はそれによっって自己主張を繰り返していた。
若手の者が知らないことがあると即座に馬鹿にして満足していた。

Javaソースコードにsuper()やthisというものがあっても
彼は即座には理解できないでいた。
CやCGIでできたことをJava,やServletで真似しようとしたら
何かが違う。そのことで彼はかなり頭を悩ませていた。




226 :デフォルトの名無しさん:05/02/19 17:15:01
>>224
ちょっとだけそういう空気に飲まれたことがある。
そこにいた人間はほとんどが体験している様子だったな
どこにだって正当に評価してくれない上司はいる。
かれを説得するのはたいへんだ 


227 :デフォルトの名無しさん:05/02/19 17:15:49
次スレタイ
【初心者】Java質問・体験談スレッド63【大歓迎】

228 :デフォルトの名無しさん:05/02/19 17:16:58
>>180
> いや、あまり従順でも返って能力を疑われるしな。
> 明らかに変な仕様の時に、何も言わないと軽蔑される事も多い。
> 言うべき時は言わなきゃダメだよ。

いまどき何も言わない奴なんかいない。
おかしいとおもったら
なぜこういうことをするのかくらい聞くべきだ。
「こういう事例もあるけどなぜそんなことをするのか」とも聞くべきだ。



229 :デフォルトの名無しさん:05/02/19 17:18:20
>>188
されど実際に動いているものを
見せる奴は吠えても頭は強く能力がある。


230 :デフォルトの名無しさん:05/02/19 17:19:55
>>197
> ただの下請けのドカタが、建物の設計にまで口出してきたら、嫌だよなぁ
> てか(*∂ー∂*)イラナイワ
マネージャや顧客が無能だと下請けのドカタに口出しされる羽目になる

マジな話。

231 :デフォルトの名無しさん:05/02/19 17:21:08
>>225
そりゃそいつのスキルが無いんだよ
勉強を欠かさず新しい技術にも付いて行けるのが
ほんとにスキルのある香具師


232 :デフォルトの名無しさん:05/02/19 17:22:28
>>213
物理学から勉強しましょう

233 :デフォルトの名無しさん:05/02/19 17:23:58
>>231
もう3,4年前の話だよ。
そのUnixヲタも今頃かなりJavaに熟練していると思う。


・・・・そうでなかったりして。
システムプログラミングマンセーなひどだったからね
Perlのスキルだけは伸ばしているかもな


234 :デフォルトの名無しさん:05/02/19 17:26:04
>>223
どんなスレが適切なんだかわからぬよ。
よかったらおすすめなスレをあげてくれ。

マ板はアニヲタや寒いオヤジギャグ放つオッサン絡みの糞スレ
が多すぎて萎える。

いつもくだらんレスばかりが目立つ。
奴らは言っていることがいつも寒すぎる。


235 :デフォルトの名無しさん:05/02/19 17:26:15
>>233
UNIXのソースコードって汚いのが多いからね


236 :デフォルトの名無しさん:05/02/19 17:26:53
>>234
>>223はお前を同じ目で見ているのだろう

237 :デフォルトの名無しさん:05/02/19 17:28:36
>>234
ム板に新スレたてれば?


238 :デフォルトの名無しさん:05/02/19 20:17:25
標準出力について教えて欲しいのですが、
System.setOutで標準出力先をファイルに指定したとして、
その標準出力先を画面(デフォルト)に戻したい場合は
どのようにすればよいてしょうか?


239 :デフォルトの名無しさん:05/02/19 20:20:54
>>238
最初に PrintStream stdout = System.out; とかして退避しといて
必要な時に System.setOut(stdout); で戻すとか。

240 :デフォルトの名無しさん:05/02/19 20:22:05
>>238
PrintStream out = System.out;
System.setOut(out);

241 :デフォルトの名無しさん:05/02/19 20:39:39
System.outは変えない方向で組んだほうがよくないか?


242 :238:05/02/19 21:08:07
>>239>>240氏のように、System.outをあらかじめ退避することでできました。
ありがとうございます。
しかし、>>241氏のように変えない設計にする必要がありそうです。

243 :デフォルトの名無しさん:05/02/19 21:24:07
すいません。教えてください。

C言語の場合、関数を使って変数の値を変える場合、アドレスを渡すというのが
一般的ですよね?

int a;
func (&a);


void func (int *a)
{
*a = 1;
}

javaの場合、メソッドを使って変数の値を変えるのはどうすればいいのでしょうか?
メソッドの戻り値を使うというのにも限界があると思いますし・・

同一クラス内のメソッドであればメンバ変数を使うのもアリかと思いますが、
他のクラスの場合はどうするのが一般的なのでしょうか?

244 :デフォルトの名無しさん:05/02/19 21:30:52
オブジェクトを渡して中でオブジェクトを操作する。

245 :デフォルトの名無しさん:05/02/19 21:35:16
フィールドを変えたいならそのフィールドを持つインスタンスを渡せばいい。
しかしメソッドを使って変数の値を変えるという考え方をやめて
変えるべき値を返すようにしてください。そのCの例でいうと

× int a; func(&a); ・・・ void func(int *a) { *a = 1; }
○ int a; a = func(); ・・・ int func() { return 1; }

複数の値を返したいときは複数の値を持ったしかるべきクラスのインスタンスを返すようにする。

246 :243:05/02/19 21:45:49
>>244,>>245
ありがとうございます。

戻り値を使うというのは楽だと思うのですが、2つ以上の変数の値を変更したい
場合には使えないですよね?
そういう場合は面倒でもオブジェクトを使うしかないってことですね?

247 :デフォルトの名無しさん:05/02/19 21:51:04
戻り値でオブジェクトを使うのでなく入力パラメタでオブジェクトを使ってもいい。
どっちにしろ同時に2つ以上の変数を変更したいってことは一般的に言って
その変数らに何らかの関連があるわけだから、オブジェクトとしてまとめる設計にすべきだ。

248 :デフォルトの名無しさん:05/02/19 21:52:11
>>225 無職が想像だけで語ってるのまるわかり


249 :デフォルトの名無しさん:05/02/19 21:54:53
> どっちにしろ同時に2つ以上の変数を変更したいってことは一般的に言って
> その変数らに何らかの関連があるわけだから、オブジェクトとしてまとめる設計にすべきだ。
なるほど。
もっともですね。

オブジェクト指向が分かっていないので、単にCの関数がメソッドになっただけという
コードになりがちなんです。

250 :デフォルトの名無しさん:05/02/19 22:42:13
>>249
JavaBeansというのを勉強すべし

251 :デフォルトの名無しさん:05/02/19 23:22:00
現在、javaのメソッドを暗記中なんですが皆さんはどこら辺のパッケージまで
記憶しましたか? 自分はまずlang、io、util、text、nioを覚えようと
してるのですが、一応英単語を覚えるのよりは楽なんですが、似たような
名前とパラメータが多いので結構こんがらがります。
皆さんのAPI学習法を教えてください。

252 :デフォルトの名無しさん:05/02/19 23:24:06
>>248
何を無職だと?
俺は学生アルバイトだが



253 :デフォルトの名無しさん:05/02/19 23:25:09
>>251
暗記するんだったら
作りたいプログラムをさっさと作れ。


254 :デフォルトの名無しさん:05/02/19 23:27:08
>>251がこのスレで一番馬鹿

255 :251:05/02/19 23:28:02
いや、プログラミングもしてます。

256 :デフォルトの名無しさん:05/02/19 23:40:38
>251
どのパッケージにどんなクラスがあるかと、それらクラスの概要だけ頭に入れたら
後は必要なときにAPIリファレンスを参照する。
本当にしょっちゅう使うような事柄ならそれで勝手に覚える。

……という呑気なやり方でやってますが(汗)

257 :デフォルトの名無しさん:05/02/19 23:44:33
>>251
暗記なんかする必要はない。
どこを調べればどんな物があるのかをわかってさえいればよい。
で、必要なことはすぐに調べられるように環境を整えておくこと。
無駄なことに頭を使うな。効率が悪い。ダメプログラマの見本だぞ。

258 :デフォルトの名無しさん:05/02/20 00:00:24
メソッドを暗記するなんて時間の無駄だろ。
JavaのAPIリファレンスはダウンロードできるんだし、EclipseなりNetbeansなり
使ってれば、コード補完機能がメソッド名を補ってくれる上に引数まで表示して
くれるんだし。

そんなことより、各クラスでどんなことが出来るのかを俯瞰的に覚えていった
ほうが、あとでAPIリファレンスを見るのが楽になっていい。

259 :デフォルトの名無しさん:05/02/20 00:01:42
あれか、試験向け勉強の弊害が出ていると言うやつか。
実戦では別の技術が必要なんだよ。

260 :デフォルトの名無しさん:05/02/20 00:08:51
>>257
けど、暗記しとかないと、暗記バカに、バカにされるとです。
ひろしです。

261 :デフォルトの名無しさん:05/02/20 00:27:15
このスレって、学生気分が抜けない、30前後の無職のオヤジが、常駐してる気がする。

262 :デフォルトの名無しさん:05/02/20 00:28:59
何もせずにとにかく暗記しようとはせず、
必要なときにマメにドキュメント参照するようにしているいます。

暗記しようとする人なんて始めて見たナー。


263 :デフォルトの名無しさん:05/02/20 00:35:59
>>261
なんか言ってる様で、実は何も言っていないコードの見本。

264 :デフォルトの名無しさん:05/02/20 00:40:34
なんか内容的にマ板化してるな、最近

265 :デフォルトの名無しさん:05/02/20 00:41:35
>>261
劣等感のあまり、自分から素性をバラしちゃダメだよw

266 :251:05/02/20 00:44:34
ご意見ありがとうございます。
自分も別に全部を丸暗記しようと思ってる訳じゃないです。
ただ基本APIだけは押さえとこうと思ったのです。
基本覚えてないと組みようがないですし。
しかし、APIの暗記なんかしないって意見にも
ちょっと驚きです。皆さんは趣味プログラマですか?(学生)


267 :デフォルトの名無しさん:05/02/20 00:49:34
>>266
わざわざ覚えようと思って暗記はしない。
はじめのうちは、使うたびに参照しても、使っているうちに覚えてくるもんだろ。
基本のAPIなんかは、そんな感じで覚える。わざと覚えないようにしているわけではない。

268 :デフォルトの名無しさん:05/02/20 00:55:54
>>266
趣味でやってるようなやつほど暗記しようとしがちだね。
仕事でやってたら否が応でもよく使うものは覚えるから。

269 :257:05/02/20 00:56:28
266
>皆さんは趣味プログラマですか?
30代。J2EEが主要範囲のプログラマ→アーキテクトだが、
今は開発の現場ではなく、コンサルタント・執筆・翻訳・講演などが仕事。

丸暗記は意味がない。
この辺のクラス(とかライブラリとかツール)を使うとこんなことができたはず、
ぐらいに覚えておけば、あとは実際に使う場面になってリファレンスとかサンプルを見ればいい。


270 :デフォルトの名無しさん:05/02/20 00:56:53
「10日でおぼえるJSP/サーブレット」
という本を参考にしてJSPプログラムを実行したのですがうまくいきません

SDK 1.4.2
Tomcat 4.1(http://localhost:8080/で起動確認済み)

本には、Tomcat 4.1\webappsの下に
jsp10/day01-1フォルダを作ってintro.jsp(簡単なソース)を置く
ブラウザでhttp://localhost:8080/jsp10/day01-1/intro.jspを入力
と書いてあるのですが
「HTTP Status 404 - /jsp10/day01-1/intro.jsp」と出ます

intro.jspをTomcat4.1\ROOTの下において
http://localhost:8080/intro.jsp
だとしっかり表示されるのでタイプミスとかは無いと思います

どうしたら最初にフォルダで実行できるでしょうか?



271 :270:05/02/20 00:58:53
×どうしたら最初にフォルダで実行できるでしょうか?
○どうしたら最初のフォルダで実行できるでしょうか?

272 :デフォルトの名無しさん:05/02/20 01:04:48
昔Cの関数全部暗記してるって言いながら
まともなプログラム一つ書けない馬鹿がいたな

273 :デフォルトの名無しさん:05/02/20 01:07:23
>>270
Tomcatのリリースツール使えばいいやん?

274 :デフォルトの名無しさん:05/02/20 01:14:27
名前知ってんのと使いどころをわきまえてるのはぜんぜん別問題。昔、優等生気質の
奴に Java 教えてたことがあったけど、本人的には機能を暗記することで満足してしまって
それ以上先に進もうとしなかったので別の仕事に回したよ。

> どうしたら最初のフォルダで実行できるでしょうか?
最初のフォルダって何? Tomcat4.1\webapp ってディレクトリをドキュメントルートにしたいなら
Tomcat4.1\conf\server.xml を修正すれば良いが、そういうことか?

275 :デフォルトの名無しさん:05/02/20 01:17:56
>>270
あの著者の本や記事は信用しない方がいい。
重要な説明がごっそり抜けていたり、限定される条件にも
かかわらず当たり前のように書いてあることがあるから。

/jsp10の下に WEB-INF という名前のフォルダを作れ。
フォルダの中はとりあえずは空でもいいから。

276 :270:05/02/20 01:19:54
>>274
すいません、とりあえず参考書どおりに
〜\tomcat4.1\webapps\jsp10\day01-1\intro.jsp
で動かしたいです

>Tomcat4.1\conf\server.xml を修正すれば良いが、そういうことか?
参考書には設定ファイルなどの編集については一切書いてないのですが・・・
恐らくそういうことだと思います

277 :デフォルトの名無しさん:05/02/20 01:23:41
>>269
妄想ばかりだと、そのうち本当に頭が逝かれちゃうぞ。
社会的には、もう逝かれてるだろうけど。

278 :デフォルトの名無しさん:05/02/20 01:25:10

レス番間違えてる?

279 :デフォルトの名無しさん:05/02/20 01:27:58
>>275
そういや昔はWEB-INFのフォルダなくても動いていたね
ふるいのよんでるんじゃないの?>>270
でもその場合404エラーだったかな


280 :270:05/02/20 01:29:22
>>275
できました。
有難うございます

>あの著者の本や記事は信用しない方がいい。
そうなんですか・・・
実は最初のMySQLのインストールの説明も間違ってた
入門書で環境設定間違えられるとつらい・・・
ムカつくけど一通りは読もうと思います
有難うございました

281 :270:05/02/20 01:33:06
更新し忘れた

>>279
いや、最新版っすよ。去年の11月刊行
フォルダ作成くらい書いて欲しいです、マジで
正誤表もみたけどMySQLのインストール、JSPの実行
両方とも載ってなかった

これからもこんなミスが続くんだろうか・・・

282 :デフォルトの名無しさん:05/02/20 01:34:10
>ムカつくけど一通りは読もうと思います
悪書なら読まずに速攻で捨てた方がマシ

283 :デフォルトの名無しさん:05/02/20 02:24:02
>280
282に禿同
時間が勿体ないし、下手するとおかしな知識を覚えてしまうかも

284 :デフォルトの名無しさん:05/02/20 03:38:24
暗記という話になっちゃったから具体的な話が出なく
なってしまったけど、どのAPIを把握しておくといいかというと、

java.lang.*
Object, String, System, 例外クラス, ラッパークラス, 場合によってはRuntime
java.io.*
各種ストリームとリーダー/ライター
java.util.*
コレクションとと正規表現とプロパティ
あと、StringBuffer(1.5ならStringBuilder)
(個人的には日付とjava.textも)

あたりを使えるようになるといい。

UI作るなら
java.awt.*
java.awt.event.*
javax.swing.*
javax.swing.event.*
だが、ちと込み入るのでここでは深入りしないでおく。



285 :デフォルトの名無しさん:05/02/20 03:39:15
うが、StringBufferはlangだorz

とまぁこういう香具師でもJavaで飯は食える。


286 :デフォルトの名無しさん:05/02/20 03:39:33
なんでここはヘタレ回答者しかいないんだ?

287 :デフォルトの名無しさん:05/02/20 04:08:24
>>286
あなたが回答しないからですよ

288 :デフォルトの名無しさん:05/02/20 05:38:05
文字列を数字に変換するのに色んなやりかたがありますが、
とりあえずどれか一つ覚えておけばよいですか?それとも
全部のやり方知ってないとだめですか?

289 :デフォルトの名無しさん:05/02/20 09:16:13
質問です。

Javaのプログラム書くのに最適なソフトウェアってどれですか?
私は今XEmacsをつかってますが、フリーなだけあって使い勝手やインタフェイスなんかもイマイチです。
やっぱりボーランドとかコードワリアーとかのほうがいいでしょうか?

ほかにも使ってる人で、これだっていうのがあれば感想お願いします。

290 :デフォルトの名無しさん:05/02/20 09:56:40
メモ帳

291 :デフォルトの名無しさん:05/02/20 09:57:15
vi

292 :デフォルトの名無しさん:05/02/20 10:03:21
>>288
あなたが書いている「よい」および「だめ」という表現が
それぞれ何を意味しているかによると思います

293 :デフォルトの名無しさん:05/02/20 10:06:24
>>289 を読んでマトモにレスしかけたが、書き込む前に冷静に >>289 を読みなおしてみて、
「ボーランドとかコードワリアー」とか書いてるあたり「釣りっぽい」という事実に気付いたり。

294 :デフォルトの名無しさん:05/02/20 10:18:19
釣りってまともな文章が書けない人の言い訳じゃないの?

>>289
Eclipse使ってみたら?
少し重いけどフリーだし高機能だよ。
http://pc5.2ch.net/test/read.cgi/tech/1106406752/

295 :デフォルトの名無しさん:05/02/20 10:33:30
>>288
仕事でやるなら、一つのプロジェクトで統一しておいた方が見通しはよい。
全部知っているにこしたことはない。
ちなみに俺は一つしか覚えてないけど、仕事では特に困らない。

296 :デフォルトの名無しさん:05/02/20 11:46:40
>>255
おまえは辞書の中身をいちいちすべて暗記するほどの馬鹿なのか?
百科事典を丸暗記したと豪語したライブドア堀江級のヴァカだな



297 :デフォルトの名無しさん:05/02/20 11:48:35
>>269
なぬ?
藻前はあのJ2EEエンタープライズアーキテクトか!!!?

298 :デフォルトの名無しさん:05/02/20 11:52:28
>>284
おい、
暗記はとりあえずjava.lang.*だけでええだろ。
あとは必要に応じてdoc見ながら使いながら
覚えればいい。
暗記するよりも例外処理、
マルチスレッドの使い方、
デザインパターンやフレームワークの使い方を覚えた方が
効率がいい、

299 :デフォルトの名無しさん:05/02/20 12:13:51
http://lzfenix.hp.infoseek.co.jp/

300 :デフォルトの名無しさん:05/02/20 12:31:13
ここでAPIの暗記を否定してる人 = ゆとり教育の申し子

英単語と同じで暗記はツライけど、初めに基礎APIを一通り覚えて
おくと上達が早くなる。普通に考えれば分かると思うけど。

301 :デフォルトの名無しさん:05/02/20 12:48:21
「自分は上達した」と思い込んでいる初心者 >>300


302 :デフォルトの名無しさん:05/02/20 13:02:59
>>297 こんなのがいるから、自演Java厨はバカ丸出しとか言われるんだよなあ。

303 :デフォルトの名無しさん:05/02/20 13:35:53
暗記の意味が人によって違ってない?
API名と機能をざっと頭に入れるのは有効だと思うけど、
引数の内容とかまで一所懸命覚えてたら馬鹿だと思う。

304 :デフォルトの名無しさん:05/02/20 14:03:53
APIは体で覚えろ

305 :デフォルトの名無しさん:05/02/20 15:31:57
どこまでを体で覚えるか、という話なんだが

306 :デフォルトの名無しさん:05/02/20 15:39:15
完璧に丸暗記出来たとしたらその先に我々の知らない別の世界があるのかな

307 :デフォルトの名無しさん:05/02/20 15:45:25
使いたい時以外で勉強のためにAPIを見たことある人いる?
多分、ほとんどいないんじゃないんかね。
初めて使うライブラリとかは、ざっと見渡すくらいはするかもしれんけど。

308 :デフォルトの名無しさん:05/02/20 15:53:52
String.replaceAll()で半角 $ の入った文字列で置換しようとすると
java.lang.IndexOutOfBoundsException: No group 4と出ます。
$を取るとエラーが出ないのですが、これはどう回避すればよいのでしょうか?

309 :デフォルトの名無しさん:05/02/20 15:58:17
ここでいいのか分からないのですが、他に該当スレがないようなので、
ここに書き込みさせていただきました。
お願いします。

1、Enterprise Java Beans と Java Beans ってどう違うのでしょうか?
Beanのうち、自分で作成するのではなく、初めから予めインターフェースなど
で使用が決まっているものをEnterpriseって言うのですか?

2、strutsってなんでしょうか?フレームワークが何なのかがよく分かりません。

3、EclipseでJSPのデバッグ、JSPエディタを使用したいのですが、
Eclipse3.0でLombozが認識されません。lomboz.097.b202をEclipseのplugin
にコピーして再起動しましたが、Eclipseの設定メニューにLombozが
出てきません。

4、Eclipseでサーブレットのデバッグ?をしようとしたが、ブレーク
ポイントでブレークしません。

すみません。スレ違いでしょうか?


310 :309:05/02/20 15:59:11
1、使用⇒仕様
の間違いです。

311 :デフォルトの名無しさん:05/02/20 16:02:39
>>308
$を\\$とする

312 :デフォルトの名無しさん:05/02/20 16:04:20
>>307
>使いたい時以外で勉強のためにAPIを見たことある人いる?

勉強の為というか、暇つぶしでなら
API リファレンスを眺めることはあるけど?


313 :デフォルトの名無しさん:05/02/20 16:08:41
>>311
今、やってみましたが、ダメでした。

java.lang.IndexOutOfBoundsException: No group 4
at java.util.regex.Matcher.group(Unknown Source)
at java.util.regex.Matcher.appendReplacement(Unknown Source)
at java.util.regex.Matcher.replaceAll(Unknown Source)
at java.lang.String.replaceAll(Unknown Source)
...

となってしまいます・・・


314 :デフォルトの名無しさん:05/02/20 16:09:16
>>313
コードを見せてくれー

315 :デフォルトの名無しさん:05/02/20 16:12:44
>>306
API のドキュメントを見て確認しなくて良くなるわけだろ、それってすげーよ。

丸暗記ってことは、次の質問にも答えられるってことだよね。
・java.io.Serializable インタフェースのサブインタフェースを全て挙げる。
・java.awt.event.KeyEvent クラスで定義されているフィールドを全て挙げる。
そんな風になれたら、すげー楽しいだろうな。


316 :デフォルトの名無しさん:05/02/20 16:16:01
>>315
それくらい Eclipse の補完機能で十分じゃないか?

317 :デフォルトの名無しさん:05/02/20 16:17:50
>>314
readFileメソッドで文字列読み込んで、それString listPageStr内の##LEFTの部分と置換するだけなんです…

String str = this.readFile(filePath);
listPageStr = listPageStr.replaceAll("##LEFT",str);

318 :デフォルトの名無しさん:05/02/20 16:21:19
>>314
あ、できました。
\\$でなく、\$でいけました。
お騒がせしました!

319 :デフォルトの名無しさん:05/02/20 16:22:51
>>315
大学受験の時は誰でも3000以上の英単語を覚えるのだから
それに比べれば楽じゃないか?名前も覚えやすいし(混同しやすいけど)


320 :デフォルトの名無しさん:05/02/20 16:24:08
あ、良く見たら$を二つ押してたw

321 :デフォルトの名無しさん:05/02/20 17:41:28
作ったclassファイルを、
実行可能なjarファイルに使用としています。

外部のクラスパスを扱う方法は調べてわかりました。
しかし、JVMの引き数としてdllファイルを与えたいのですがその方法が分かりません。
jarファイルをコマンドラインで実行するのではなく、ダブルクリックで実行したい
のでマニフェストにパスを記述したいと考えています。
方法ありますでしょうか?

---------------------
Manifest-Version: 1.0
Main-Class: MainRun




322 :デフォルトの名無しさん:05/02/20 17:49:23
jarにする前はdllで動いてんの?

323 :デフォルトの名無しさん:05/02/20 17:51:59
>>322
はい。
問題なく動きます。


324 :デフォルトの名無しさん:05/02/20 17:58:18
>>309
1.
> Beanのうち、自分で作成するのではなく、初めから予めインターフェースなど
> で使用が決まっているものをEnterpriseって言うのですか?
違う。
・EJBはEJBコンテナ上でしか動作しない
・呼び出し側とは別VM上(別ホスト上)でも動作可能
・EJBコンテナの機能で分散配置、分散トランザクション、宣言型トランザクションなどの機能を利用可能

2.それじゃ、「フレームワーク」を調べましょう。とりあえずはアプリケーションのひな形、ぐらいに覚えておけ。

3.4.Eclipseスレで聞け




325 :デフォルトの名無しさん:05/02/20 18:09:52
>>321
ttp://forum.java.sun.com/thread.jspa?messageID=3123713


326 :デフォルトの名無しさん:05/02/20 18:12:34
ttp://www.javalobby.org/forums/thread.jspa?threadID=15512&tstart=0


327 :デフォルトの名無しさん:05/02/20 18:50:36
>>325&326
ありがとう御座います。
まんまの議論ですね…。試してみます。

328 :デフォルトの名無しさん:05/02/20 19:16:49
メソッドを書くときに、スーパークラスのメソッドをオーバライドするときには、
publicとprotectedとprivateのどれを使うのが適切ですか。

329 :デフォルトの名無しさん:05/02/20 19:42:52
スーパークラスの方か?

330 :デフォルトの名無しさん:05/02/20 20:05:25
>>329
どっちも同じだろw

331 :デフォルトの名無しさん:05/02/20 20:08:04
同じじゃないよ。スーパーかサブか、それによって回答は変わる。

332 :デフォルトの名無しさん:05/02/20 20:12:35
>>331
じゃ、それぞれ回答頼む。

333 :デフォルトの名無しさん:05/02/20 20:14:43
どちらにしてもprivateは無い
あとはスーパーのメソッド次第で選択肢が変わる
とは言ってもpublicの場合、サブで選択はできんが

334 :デフォルトの名無しさん:05/02/20 20:18:32
どっちも同じだろw

335 :デフォルトの名無しさん:05/02/20 20:20:14
>>334
スーパーがprotectedならサブの方はpublicにできるよ

336 :デフォルトの名無しさん:05/02/20 20:20:44
要件や設計方針によるだろ。
一概に「こっち」と言い切る方がおかしい。

337 :デフォルトの名無しさん:05/02/20 20:21:27
確か。。
Superがprivateの場合はSubでオーバーライドしようとしても結局Superのメソッドが実行される。
それ以外のケースはSuperの可視性以上にする必要がある。
特にコンパイルエラーにはならないが、実行しても上書きされてないじゃなかったっけ。

338 :デフォルトの名無しさん:05/02/20 20:24:05
すいませんが教えてください。
J2SE5.0をインストールしたのですが、binフォルダにjavacがありません。
間違ったインストールファイル使ったとは思いません。

なぜでしょう


339 :デフォルトの名無しさん:05/02/20 20:43:14
>>338
SDK(JDK)じゃなくてJREをインストールしたんじゃないの?

340 :デフォルトの名無しさん:05/02/20 21:23:54
>>339
いや、ものの本についてた「jdk-1_5_0-windows-i586.exe」をインストールしました。


341 :デフォルトの名無しさん:05/02/20 21:51:31
オブジェクト指向が難しくて覚えられんくて困ってます。
何かいいサイトないですか?日本語で。

342 :デフォルトの名無しさん:05/02/20 21:57:45
>>338
jreのディレクトリのほう見てるんじゃないの?

343 :338:05/02/20 22:19:12
すみません・・・インストールでちょっとミスってました。
解決しますた。

スレ汚しすまそ。


344 :デフォルトの名無しさん:05/02/20 22:25:52
>>302
自演java厨?
java厨のフリをした他言語厨?

345 :デフォルトの名無しさん:05/02/20 22:29:08
>>343
どこをどうミスってどう直したら直ったとか書いとくと後の人のためにもなるのになーとか思った。

346 :338:05/02/20 22:48:08
>>345
はずかしくて・・・
デフォルトのインストールフォルダではなく、違うインストールフォルダにインスコしたときに
JDKとJREを同じところにインスコしてしまもjg;さmじょあjbg;あj

347 :デフォルトの名無しさん:05/02/20 23:00:57
>>346
ん?同じ場所にインスコしたらダメなの?
そういえば俺も1回目おかしかった・・・2回目はいけたけど。

348 :345:05/02/20 23:36:22
>>346
きっとそうだろうと思ったw
5.0になってJREのインストール先も選べるようになったからね。

349 :309:05/02/20 23:44:29
>>324
どうもです。
1.
>Beanのうち、自分で作成するのではなく、初めから予めインターフェースなど
>で使用が決まっているものをEnterpriseって言うのですか?
違うのですね・・・。

>EJBはEJBコンテナ上でしか動作しない
>呼び出し側とは別VM上(別ホスト上)でも動作可能
なるほど。
>EJBコンテナの機能で分散配置、分散トランザクション、
宣言型トランザクションなどの機能を利用可能
よく分かりません。勉強します。

ありがとうございました。

350 :デフォルトの名無しさん:05/02/21 01:08:33
>>337
もしprivateでもオーバライドされるんだったら下手にメソッドを作れないから怖すぎる。
外部からは見えてないのに、サブクラスで何かメソッド作ったら挙動が変わるなんて
冷静に考えてもそんな仕様にするわけがないだろ。

351 :デフォルトの名無しさん:05/02/21 01:22:16
>>337
ただの暗記の場合は、こんなあいまいな理解になってしまう。

352 :デフォルトの名無しさん:05/02/21 01:32:17
tigerから、JFrameで getContentPane().add() しなくてよくなったんだね。
知らんかった。


353 :デフォルトの名無しさん:05/02/21 01:45:32
ほんとだ。以下引用。

便宜上、add とその派生メソッド、remove および setLayout は、必要に応じて
contentPane に転送されるようにオーバーライドされています。つまり、次のように記述できます。

frame.add(child);

354 :デフォルトの名無しさん:05/02/21 02:13:43
>>350-351
つまりコンパイルエラーが出る訳ですね

355 :デフォルトの名無しさん:05/02/21 02:22:23
どっちでも良くなったとして、どっちにすべきなんだろう?
frame.getContentPane().add
frame.add
API的には、frame.addの方がAWTと同じ使い方になるから、こっち使うべき?

356 :デフォルトの名無しさん:05/02/21 02:31:35
調べ方も暗記も得意な奴 >>>>> [越えられない壁] >>>>>> 調べ方を知ってる奴 >> 暗記しか出来ない奴
                                      ↑大半のSE

357 :352:05/02/21 02:34:02
>>355
どっちでも同じでしょ。
パフォーマンスに影響出るとも思えんし。

ソース見たら、remove() は1.4から大丈夫みたい。2度びっくり。


358 :デフォルトの名無しさん:05/02/21 02:35:58
frame.getContentPane().add(child); としなければならない1,4系等に、
ソースを持っていく事が、これから先本当に無いなら、frame.add でも
いいんだろうけどね。

あと、2chに書き込んだり、相手がどのバージョン使ってるかわからん
場合は、当然 frame.getContentPane().add(child); と書いたほうが、
「それ、動かなかったよ」「ああ、うちは tiger だから」みたいな無駄な
やり取りが無くて済むかも。

359 :350:05/02/21 02:46:27
>>354
いいえ。

360 :352:05/02/21 02:48:18
おっしゃるとおり。
質問スレ汚しすまんでした。

361 :デフォルトの名無しさん:05/02/21 04:11:32
NetBeans IDE 4.0を導入したんですが
メモリ使用が怪しくて動作が何度も構築と実行を繰り返していると
PCが異常に重くなっていきます。
「java.lang.OutOfMemoryError: Java heap space」などの表示もでます。
これはNetBeansの問題ではないのでしょうか?

362 :デフォルトの名無しさん:05/02/21 04:47:42
無職のまま30才くらいになると、一生学生気分が抜けないらしい。
社会人としては既に終わってるね。

363 :デフォルトの名無しさん:05/02/21 08:09:48
社会人として終わっても人間として終わらなければOK。
人生なんて結果論。

364 :デフォルトの名無しさん:05/02/21 08:52:51
Javaからコンソールに何か出力するときって、
System.outとか使いますよね。
この出力に、色を付ける方法ってないですか?
自前でStream書いて置き換えればできます?
それと…コンソールのTitle部分を変更することってできます?

教えてエロイ人…

365 :デフォルトの名無しさん:05/02/21 09:16:21
漏れ、今情報のテスト中。
住人たちに問いたい。

〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
大きさ比べ

A=□B=□C=□  #□←テキストボックス
     ┌--------┐
大きい順に│並び替え│#←スイッチ
     └--------┘

□>□>□ になる
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
次の数列を第10項まであらわせ

4,9,14,19,24,29,34,49,44,49
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
2つ目はただテキストで書くだけじゃだめだぞ。

スマソ オレニハ ジカンガナイ…

366 :デフォルトの名無しさん:05/02/21 09:18:16
>>365
意味不明なんですが

367 :デフォルトの名無しさん:05/02/21 09:20:24
激しくずれたorz

368 :デフォルトの名無しさん:05/02/21 09:24:23
>>364
それはコンソールの設定による。Javaとは関係ないよ

369 :365:05/02/21 09:34:11
>>366
すまん。ずれてはいるがあの図のようなHTMLファイルを
Javaをつかって表せという問題なんだ。

370 :デフォルトの名無しさん:05/02/21 09:34:47
>>368
むむ。
Javaからコードで変更かけたいんですよ。
たとえば…
System.out.println("エラー");
っていう表示の部分だけ、赤にして、
以降はまた白に戻すとか。
Titleに、稼働中のclass名を表示とか。

やっぱ無理なのかなぁ。
JNIでCを経由して、Win32APIで、とかだとできるかもしれないけど…
あまり面倒な方向に行かずに、Java内部で完結させたいんですよ。


371 :デフォルトの名無しさん:05/02/21 10:10:49
>>369
ズレは自分で修正してください

public class Test{
public static void main(java.lang.String args[]){
System.out.println("<HTML><BODY><PRE>");
System.out.println("大きさ比べ");
System.out.println("");
System.out.println("A=□B=□C=□  #□←テキストボックス");
System.out.println("     ┌--------┐");
System.out.println("大きい順に│並び替え│#←スイッチ");
System.out.println("     └--------┘");
System.out.println("");
System.out.println("□>□>□ になる");
System.out.println("</PRE></BODY></HTML>");
}
}


372 :デフォルトの名無しさん:05/02/21 11:05:42
>>374
JCurcesでも使ったら?

373 :デフォルトの名無しさん:05/02/21 11:06:15
間違えた。374じゃなくて370だ。

374 :365:05/02/21 12:12:58
>>371
助かったよ、ありがとう!
これでなんとか合格点とれそうだ。

375 :デフォルトの名無しさん:05/02/21 16:49:34
>>370
public class VT100ColorTest {
  public static void main(String[] args) {
    String escReset = "\u001b[0m";
    String escRed = "\u001b[31m";
    String escGreen = "\u001b[32m";
    System.out.println("normal");
    System.out.println(escRed + "red" + escReset);
    System.out.println("normal");
    System.out.println(escGreen + "green" + escReset);
  }
}
参考にしたサイト。
http://hp.vector.co.jp/authors/VA016670/escape_code.html
http://www9.plala.or.jp/sgwr-t/c_sub/ascii.html

376 :デフォルトの名無しさん:05/02/21 18:55:27
>>375 Win32っていってるから、それだと
コマンドプロンプト(NT系)だと使えないよ。
ansi.sysはcommand.comからしか使えないし。

377 :デフォルトの名無しさん:05/02/22 00:46:51
しかしSystem.outへの出力をカラー化するのは、Javaの問題と言うよりは
出力先(コンソール?)の仕組みと言うか仕様の問題じゃないのか。

>>370のように、出力先がVT100ならVT100の仕様に合わせて出力すれば
カラーになるんだし、出力先がカラー化不可能なものならどうガンバったって
無理だろ。

378 :デフォルトの名無しさん:05/02/22 01:14:36
そうだよ

379 :デフォルトの名無しさん:05/02/22 01:16:28
JNIを使って
SetConsoleTextAttribute()
を呼び出す

380 :デフォルトの名無しさん:05/02/22 01:18:48
うるおぼえだが cygwin 使って出来なかったっけ?

381 :デフォルトの名無しさん:05/02/22 01:30:23
そもそもcygwinならエスケープシーケンスOK


382 :デフォルトの名無しさん:05/02/22 01:45:21
いっそのこと、Javaでコンソールを実装してしまうという荒技もある。
BeanShellなんか参考になるんでない?

383 :デフォルトの名無しさん:05/02/22 02:52:52
<?xml version="1.0" encoding="Shift_JIS" ?>
<data>
<item>
<no>1</no>
<lang>日本語</lang>
<message>こんにちわ 世界</message>
</item>
<item>
<no>2</no>
<lang>英語</lang>
<message>Hello World</message>
</item>
</data>

というxmlファイルがあった時
<data>〜</data>の中身だけ抜き出してStringなどに代入する方法とかありますでしょうか?
一行ずつ読み込むと一番上の行とか制御が難しく


384 :デフォルトの名無しさん:05/02/22 02:54:54
DOM 使え

385 :デフォルトの名無しさん:05/02/22 03:00:00
>>383
DOMやSAXの話でなく、ただStringとして扱うなら

String source = ファイルから読む処理。
Matcher mat = Pattern.compile("<data>(.+)</data>").matcher(source);
String content = mat.group(1);

とするとか。。。

386 :デフォルトの名無しさん:05/02/22 03:04:51
>>384
DOMとかってXMLの内容を読み込んで設定云々ではなく
ただXMLファイルの中に書かれてるのを何もいじらずに
そのまま表示することって出来るのでしょうか?

ググったりしたのですが
どうもよくわからなかったのですが・・・

387 :デフォルトの名無しさん:05/02/22 03:49:21
>>386
こんな感じで。
ttp://www.hellohiro.com/xmldom.htm


388 :デフォルトの名無しさん:05/02/22 04:02:39
すいませんそちらのサイトの例だと
<message>Hello World</message>

Hello World
みたいにタグが読み込まれてしまうようです

また
Document doc = builder.parse(new File("helloworld.xml"));
でxmlファイルを取得した後
Element root = doc.getDocumentElement();
の部分でAPIなどを見てもタグの中身を抜き取って表示させる
メソッドみたいなものが少し見つからなかったですが
もし、違う方法があるのなら教えてください

389 :デフォルトの名無しさん:05/02/22 04:22:03
煽り莫迦が来て荒れる前に、やりたいことをもっと具体的に書き込んだ方が良いと思うよ。
<data>〜</data> までの間を何の解釈も処理もなくそのまま文字列として取得したいのなら、
一回ファイルを全部 String として読み込んで >>385 の方法で出来るんじゃない?

390 :デフォルトの名無しさん:05/02/22 04:35:55
>>389
同意。

SAXを使った方法で書いてみた。
http://sourcepost.sytes.net/sourcepost/sourceview.aspx?source_id=21666

一番外側に出てくる data タグの内側を表示する。
タグ内に属性があらわれること等は考慮してない。
>>383 のXMLには属性が使われてなかったので。


391 :デフォルトの名無しさん:05/02/22 09:05:54
とあるデータファイルを分解しようとしています。
ファイルの先頭がD2PACKFILEで始まる圧縮ファイルで、
その中にテキストファイルが埋め込まれてるようなんですが・・・。

392 :デフォルトの名無しさん:05/02/22 09:08:58
板違いの臭いがする

393 :デフォルトの名無しさん:05/02/22 11:21:50
xmlは文書じゃなくて、データ構造だからね。。。
タグの中身をそのまま取得したいってのは、言うなればBeanのソースコードを
取得したいってのと同じ意味だから、XMLの使い方自体を勘違いしてる
としか思えない。

394 :デフォルトの名無しさん:05/02/22 12:00:28
JavaMail関連のお薦めの書籍を教えてください
雑誌記事でも構いません

395 :デフォルトの名無しさん:05/02/22 12:01:16
>>393
まぁ要件を聞かずにそう断定してもしょうがない。

396 :デフォルトの名無しさん:05/02/22 12:21:33 ID:??? ?
 初めまして.現在,「スモールコンパイラの制作で学ぶプログラムのしくみ」という参考書を用いて学習を行っているのですが,
2 月末が期限として出された課題の中でどうしても解らない問題があり大変困っています.
皆さんのお力を貸していただきご教授いただけないでしょうか?

出されている課題の内容は, Java 言語で書かれたコンパイラの機能拡張が目的で,

"%"( 余りの計算 ) 機能を追加させたいのですが記述方法が解らず悩んでいます.

 コンパイラのソースコードは,

http://book.gihyo.co.jp/s-com/ からダウンロードできるようになっております.

 この本を読んだことがない方でも, 拡張方法のプログラムが解る方からの返信もお待ちしております.


397 :デフォルトの名無しさん:05/02/22 12:31:10
>>396
【初心者】Java の宿題ここで答えます 5.0【歓迎】
http://pc5.2ch.net/test/read.cgi/tech/1107350368/l50


398 :デフォルトの名無しさん:05/02/22 13:22:16
public PacketReciever () {
 try {
  Socket = new DatagramSocket( Frame.PORT );
  RecieveStream = new byte[Frame.MAXPACKETLENGTH];
  Packet = new DatagramPacket( RecieveStream, Frame.MAXPACKETLENGTH);
 }
 catch (SocketException e){
  System.err.println( "Cant't Create Recieve Sockets" );
  System.exit(-1);
 }

 StoredPackets = new Vector();
}

public PacketSender(UnitDataStreamStore uds, OrderStreamStore ods) {
 Uds = uds;
 Ods = ods;
 try {
  Socket = new DatagramSocket();
 }
 catch( SocketException e ) {
  System.err.println( "Can't Create Send Socket." );
  System.exit(-1);
 }
}



399 :398:05/02/22 13:22:55
UDPで通信したいためにデータを送るクラス、受け取るクラスを作りま
した。上はその2つのコンストラクタです。
受け取るクラスはrunメソッドを持っていてデータが来るかどうかを見
張っているので、これで通信が可能と安易に思ったのですが、2番目に
呼び出す方にSocketErrorが出ます。
ソケットを二つ作れないのでしょうか?


400 :デフォルトの名無しさん:05/02/22 13:44:22
>>399
原因がわからないときはe.printStackTrace();で原因を調べる
それでもわからなかったら、環境やそのprintStackTrace()の
出力を見せる。

それに変数名でSocketはやめたほうがいい
socketに変えておく

401 :400:05/02/22 13:45:50
忘れてたけどソケットは2つ以上作れる。作れなかったらサーバーを作れないじゃないか

402 :398:05/02/22 14:04:02
>>400
ありがとう。
java.net.BindException: Address already in use: Cannot bind
出ました。
Addressって指定したのはPort番号だけだからその事なんでしょうか?


403 :400:05/02/22 14:24:50
>>402
printStackTraceでもっといろいろ出てただろう
どのメソッド内で、ソースのどこら辺で起きたとか
どこで起きてるかも分からないし、そこのソースが
無いと特定は難しい。

404 :デフォルトの名無しさん:05/02/22 14:28:12
>>402
ポート番号、何番指定したんだ?
「既に使われてるから割り当て無理」って書いてあるだろ。

405 :398:05/02/22 15:01:51
java.net.BindException: Address already in use: Cannot bind
at java.net.PlainDatagramSocketImpl.bind(Native Method)
at java.net.DatagramSocket.bind(Unknown Source)
at java.net.DatagramSocket.<init>(Unknown Source)
at java.net.DatagramSocket.<init>(Unknown Source)
at java.net.DatagramSocket.<init>(Unknown Source)

406 :398:05/02/22 15:11:41
ポート番号は、1001にしましたが、変えて1002にしたら落ちました
(;´Д`)

407 :デフォルトの名無しさん:05/02/22 15:18:40
落ちたってのはなんだよ?
10000番台以上のあいてそうなポート使うようにした方がいいぞ。

408 :デフォルトの名無しさん:05/02/22 15:22:24
netstat -a

409 :デフォルトの名無しさん:05/02/22 15:28:19
>>407
失神したのかも

410 :398:05/02/22 15:30:30
落ちたのは固まってjavavmがWindowsによって切られました。

なんかわかった気がします。
PacketSenderクラスがデータを送るときに、
DatagramPacket packet = new DatagramPacket( SendStream, SendStream.length,server, Frame.PORT );
とパケットを作ってるんですが、その前にコンストラクタが呼ばれた段階では、
sSocket = new DatagramSocket();
とInetAdressを指定していないので、localホストにバインドする事になり、
エラーが出るのでしょう。
送る相手のアドレス入れてみます。

411 :398:05/02/22 16:06:02
10001〜10005のポート番号で試しました。
10001はエラー
その他は落ちました_| ̄|○

412 :398:05/02/22 16:54:21
失礼しました。_| ̄|○
UDP通信始める前に、TCP通信をしているんですが、作ったソケットを全て
closeしてないために起こるエラーでした。
私の予測は全く関係ありませんでした…

413 :デフォルトの名無しさん:05/02/22 17:33:21
191の書き込みに近いものがあるのですが、
appletでシリアルポートたたいたり印刷をしたりしなければならなくなりました。
当然セキュリティの関係で普通ならできないのですが、
「署名付のapplet」
なるものなら何とかなりそうだ。というところまで調べはつきました。
しかし、JVMのバージョンが古いものしか使えないような情報ばかりです。

いま、サンプルコードをでっち上げてテストしようとしているところなのですが、
そもそもJVM1.4以降などのappletでそんなことが可能なのでしょうか?

今回の開発では閉じられた環境の中で使用するものという条件付ですので、
セキュリティそのものの是非についてはおいといて、可能かどうかご存知の方が
いらっしゃいましたら教えていただけないでしょうか。


414 :デフォルトの名無しさん:05/02/22 18:42:56
JAVAってEXE形式ファイルで書き出せるんですか、本当に初心な質問ですみません。

415 :デフォルトの名無しさん:05/02/22 18:45:54
>>414
OutputStream out = new FileOutputStream("hoge.exe");
out.write(......);
out.close();

とかすれば書き出せるよ。って事でなくて?

416 :デフォルトの名無しさん:05/02/22 18:55:03
>>414
書き出せます。過去に何度か同様の質問に回答しました。
具体的な方法については過去ログを参照してください。

417 :デフォルトの名無しさん:05/02/22 18:56:08
お絵描き掲示板におえかきができなくなったので、友人に「javaをインスコしろ」
っていわれたんですが、この場合どのバージョンをインればよいのでストすしょうか?

418 :デフォルトの名無しさん:05/02/22 18:57:07
>>417
情報が不充分です。「javaをインスコしろ」と言った友人に聞いてください。

419 :デフォルトの名無しさん:05/02/22 19:03:13
>>417
最新版でも入れておけ

420 :デフォルトの名無しさん:05/02/22 19:11:51
質問です。

Java Web Start って、従来型のアプレットのように
html(ブラウザ)に張り付いて動作させるっていう使い方もできるんですか?

421 :デフォルトの名無しさん:05/02/22 20:55:40
>>413
んーと、Webサーバとクライアントブラウザが別々のマシンなの?
別々のマシンだとして、叩こうとしているシリアルポートは
サーバマシンなの?クライアントマシンなの?

サーバマシンならばHORBなどの分散処理を上手く使えば可能。

クライアントマシンならば不可能・・・だと思う。
もしできてしまったらとっても危険。悪意のあるサイトを閲覧しただけで
HDDをフォーマットされたりしちゃうからね。だから仕様上できない。
おいらが知ってる方法はActiveXくらいかな?あれなら署名付き
じゃなくてもクライアントが許可すればローカルマシンを操作できちゃう。
署名付きappletってのは本当にJavaAppletなの?

話は逸れるけれど、古い情報ばかりというのはJava1.1という意味かな?
M$とSunがケンカした結果、デフォルトのWindowsのJVMは1.1相当しか
搭載されていない。だからアプレットはJava1.1で作る場合が多い。

422 :デフォルトの名無しさん:05/02/22 21:13:08
>>413
可能です。セキュリティポリシーファイルを作成しコントロールパネルの Java Plug-in から
実行パラメータを指定してやれば大丈夫。
http://www.ep.u-tokai.ac.jp/~nakazato/API/1.3.0/docs/ja/guide/security/PolicyFiles.html

423 :デフォルトの名無しさん:05/02/22 21:28:16
>>413 >>421-422
http://java.sun.com/j2se/1.5.0/ja/docs/ja/guide/plugin/developer_guide/security.html
これ読んで出直してきてください。

424 :デフォルトの名無しさん:05/02/23 00:02:05
>>423
> 署名のないアプレットはすべて、標準のアプレットセキュリティモデルで実行されます。

「標準のアプレットセキュリティモデル」って何か知ってるか? ドキュメントだけ読んで
分かった気になる典型的な莫迦だな。

今すぐ ${user.home}\.java.policy ファイルに

grant {
  permission java.security.AllPermission;
};

と書き Yahoo! のトップページでも取ってくるアプレット書いて見れ。

425 :デフォルトの名無しさん:05/02/23 00:11:51
AllPermissionはやめてくれ

426 :デフォルトの名無しさん:05/02/23 01:10:06
まぁセキュリティより利便性っつー、一昔前のMicrosoftみたいな姿勢ならかまわんのでは?

427 :デフォルトの名無しさん:05/02/23 01:13:13
アプレットは自動実行されるんだからそれがなんでもありは死ぬぞ


428 :デフォルトの名無しさん:05/02/23 01:16:51
キーワードに脊椎反応しか出来ない奴は SE 辞めたほうが良いな。

429 :デフォルトの名無しさん:05/02/23 01:26:27
昔に俺が開発に携わったシステムで>>424の方法使って
クライアントPCに接続されたカードリーダーでカードの情報引き出してをアプレット経由で
サーバーへ送信とかやってたな・・・

430 :デフォルトの名無しさん:05/02/23 01:31:50
>425
普通に使うだろう。めんどくさいし。金融系のシステムでさえみたことあるわ

431 :デフォルトの名無しさん:05/02/23 01:40:05
企業システム開発やってりゃ、アプレットで USB キー認証やカード認証、POS、電話連動、
クライアント PC のアセット環境アップデートなんて一度や二度は設計したことあるだろう。
Web デザイン専門や場末プログラマはどうか知らんが。

そもそも何のセキュリティ対策も無く一台のクライアントでイントラとインターネット兼用して
いるような環境があるとしたらそっちの方が問題だな。

432 :デフォルトの名無しさん:05/02/23 01:56:31
>>431のような経験が全く無い俺が思ったことだけど、
クライアントのポリシーファイルいじるよりも、
署名付きでやったほうが、クライアント側の導入の手間がないから良いんじゃないの?

433 :デフォルトの名無しさん:05/02/23 02:08:19
署名しても、各クライアントで作業が必要なんじゃないかな。
署名されていれば、なんでもかんでも信頼してしまうわけじゃないでしょ。

434 :デフォルトの名無しさん:05/02/23 04:29:00
クライアント側のポリシーファイルをいちいち変更するというポリシーはおかしい

435 :デフォルトの名無しさん:05/02/23 04:30:49
っつーかもともと署名されたものだけ信頼していれば良い状態なのに
全部信頼してしまう状態にしてしまうのは改悪以外のなにものでもないだろ

436 :デフォルトの名無しさん:05/02/23 05:18:20
また、知ったかぶりのアホどうしで、バカなやりとりしてる。

437 :デフォルトの名無しさん:05/02/23 06:00:04
イントラ業務作った事のない奴多いのかな。

438 :デフォルトの名無しさん:05/02/23 08:00:47
えーと、質問です。
toolkitのgetDesktopPropertyを使えば
タイトルバーの高さとかその他のOS側の情報を取得できる、
と、思うんですが、
肝心の指定すべきpropertyNameがわかりません。
プロパティ名と対応する情報の一覧とかどっかにありませんか?

439 :デフォルトの名無しさん:05/02/23 09:11:36
>>438
タイトルバーの高さとかって java.awt.Container#getInsets() で取ってくるのでは?

440 :デフォルトの名無しさん:05/02/23 09:48:42
StrutsTestCase For JUnitちゅーのを触ってみたんだが、
これのMockStrutsTestCaseだと、アクションサーブレットを継承して作った
クラスのinit()は呼び出して貰えないんだろうか。

自分の記述がタコなのか、さっぱり初期化メソが呼び出して貰えなくてのう。

とりあえず、CactusStrutsTestCaseでも試して見ようかななんて思ってる俺ガイル。

441 :デフォルトの名無しさん:05/02/23 09:59:38
Servletのinitメソッドは最初のサーブレット呼ばれたときに1度呼ばれるだけだろ。
つーか、strutsの場合、自分で作る初期化部分はpluginでやるべきじゃね?

442 :440:05/02/23 10:19:16
> つーか、strutsの場合、自分で作る初期化部分はpluginでやるべきじゃね?
プラグインがどこかもさっぱり理解してないんだが。
inアクションにそんな事書いてあったなぁ。

他人が作った物を引き継いでるもんで、もうね(・ω・)
まぁ、俺が作っても大差ないぼこぼこプログラムになったとは思うんだけれども。

カキュタスはサーブレットをnewするような記述をどっかで見かけたから期待しつつ調査中。

443 :438:05/02/23 10:41:53
>>439
仰るとおり、タイトルバーの高さならそれで取れますが、
他にも色々取れたら何かと便利ではと思い
質問した次第であります。
どうなんでしょ。

444 :デフォルトの名無しさん:05/02/23 10:56:35
>>443
↓こんなプログラムを作って desktopProperties を取り出してみたが空っぽの Map が
取れただけだったな。そもそもプロパティ名って環境依存だから公式発表無いんじゃないか。

import java.awt.*;
import java.lang.reflect.*;
import java.util.*;
public class a{
 public static void main(String[] args) throws Exception{
  Toolkit tk = Toolkit.getDefaultToolkit();
  Field field = Toolkit.class.getDeclaredField("desktopProperties");
  field.setAccessible(true);
  Map desktopProperties = (Map)field.get(tk);
  System.out.println(desktopProperties);
 }
}


445 :デフォルトの名無しさん:05/02/23 13:18:15
>>440
困ったらソース嫁。
今MockStrutsTestCaseのソース読んでたら、setUp()にこんなコードがあった。

if (actionServlet == null)
  actionServlet = new ActionServlet();

つまりActionServletクラスで決め打ちになってて、
残念ながらweb.xmlを読みそこで指定されたクラスを使うような作りにはなってない様子。

一応、変数actionServletは、MockStrutsTestCaseのprotectedなインスタンス変数なので、
自前で初期化する余地はある。ガンガレ。

それから、ActionServlet#init(ServletConfig)は、
デフォルトの実装ではactionPerform()実行時に行われるみたい。これも注意。

読み違えてるかもしれんが、参考になれば。健闘を祈る。

446 :デフォルトの名無しさん:05/02/23 13:32:43
413です。
署名付のappletで全て解決しました。
というのも、署名付のappletを信頼してしまうと、通常のローカルのアプリケーションと同じように
ローカルリソースにアクセスできてしまいます。

もちろん通常のアプリケーションと同じように動いちゃいけないんでしょうが、お客さんがOKしているので
あとは関係者に「責任者がOK」したっつ〜ことを連絡して、なんかあったらそいつのせいにしてねっていう
根回しだけしておきます。

ちなみにpolicyの問題は特にありませんでした。
もちろん全て駄々もれのpolicyなのである意味問題だらけですが(笑)

みなさんご協力ありがとうございました。


447 :440:05/02/23 13:34:37
>>445
ありがとん(・ω・)ガンガルよ。

ただいまカキュタス使おうとしてコネコネコネコネ。
日本語訳が進んでてありがたーいけど、それでも頭がパンクしそう。

448 :デフォルトの名無しさん:05/02/23 14:33:28
>>437
クライアント数が少ないイントラなら、
「全クライアントのポリシーファイル設定」なんて大した労力じゃないんだろうね。

449 :デフォルトの名無しさん:05/02/23 18:32:04
import java.util.Hashtable;

class HashtableTest {
public static void main(String args[]) {
Hashtable numbers = new Hashtable();
numbers.put("one", new Integer(1));
}
}

を javac -Xlint:unchecked HashtableTest.java すると、
警告: [unchecked] raw型 java.util.Hashtable のメンバとしての put(K,V) への無検査呼び出しです。

と出てくるのですが、どうしたら回避できますか?

450 :デフォルトの名無しさん:05/02/23 19:14:26
>>449
ソースを変えずに、
javac -source 1.4 -Xlint:unchecked HashtableTest.java
とするか、あるいは、ソースを、
Hashtable<String, Integer> numbers = new Hashtable<String, Integer>();
みたく変える。

451 :デフォルトの名無しさん:05/02/23 20:10:34
javacの使い方でつまずいてます

クラスパスには全てJARファイルがあります。

set clspath=c:\lib //JARファイルのパス

それで
javac -classpath %clspath% source.java

がコンパイルできないのですが、どうするのでつか?

452 :デフォルトの名無しさん:05/02/23 20:13:57
set clspath=c:\lib\*.jar

453 :デフォルトの名無しさん:05/02/23 20:14:22
>>451
クラスパスは、クラスの置いてあるフォルダを指定するか、
JARファイルのパスを指定するかのどちらかです。

○ JARファイルのパスを指定する。(複数ある場合はセミコロン区切りで)
○ クラスの置いてあるフォルダを指定する。(パッケージ考慮して)
× JARファイルを置いてあるフォルダを指定する

454 :449:05/02/23 20:52:58
>>450
ありがとう。期待通りになりました。

455 :デフォルトの名無しさん:05/02/23 22:56:16
>>362
おまえ、社会人入学した30代以降の大学院生に対して失礼だぞ。
現役でも博士課程は30ちかくなるしな。オーバードクターで30超えることもある

456 :デフォルトの名無しさん:05/02/23 23:00:59
>>394
J2EE本がいいと思われ。
昔、JavaMail完全解説という本があったが使えなかった。

Apache James本もいいぞ。

JavaMailつかいたかったらネットでサンプルコードをみたほうが速いぞ

457 :デフォルトの名無しさん:05/02/24 00:14:01
>>455
おまえ読解力無いな。
>>362 はそういうことは言ってないと思うが。
卒業したのにいつまでも学生気分に浸っているから人生終わってるって言われるんだよ。

458 :デフォルトの名無しさん:05/02/24 00:27:23
java.nioに関してサンプルコードがある解説ページってないですか?
知る限りだと、Sunのサイトと洋書のJava Nioしかないみたいです。

459 :デフォルトの名無しさん:05/02/24 00:34:36
nioか。櫻庭さんとこはどうよ?


460 :デフォルトの名無しさん:05/02/24 00:46:47
>>459
みつけました<変わったハンドルの人で助かったw

ノンブロッキングのサンプルもゲットしたんで、とりあえず動かして
ちょっと変えて動かしての繰り返しで頑張ってみます。
ありがとうございました。

461 :デフォルトの名無しさん:05/02/24 00:47:22
interface内でbooleanメソッド「A()」を定義した場合、
その実装クラスで「A()」の実装(宣言すら)をしなくても
コンパイルエラーにならないのは何でですか?

intメソッドにすると実装しろって怒られるんですが。。。

462 :デフォルトの名無しさん:05/02/24 01:03:53
>>461

可能性1:
その実装クラスでは直接 A() を宣言してないけれど、
実装クラスの上位クラスで A() を宣言している。
結果として、実装クラスには継承されたメンバとして A() がある。

可能性2:
そのインタフェースの実装クラスが abstract クラスである。

まだあるかなぁ……。
# 大文字で始まるメソッド名キモイ。

463 :デフォルトの名無しさん:05/02/24 01:19:21
現在とあるWebサービスの設計をしております。
環境はRedHat+Apache+Tomcat+JavaServlet+JSPのような構成を考えております。

要求仕様として、下記の内容があがっています。
・サイト登録ユーザAとサイト登録ユーザBとの間でメールとファイル交換が可能
・両ユーザは互いに相手のメールアドレス等の情報は非公開
・メールの件名や本文などはサイト側にログとして残す
・ファイル交換用のファイルはサーバに一時的に保存される
・アップロードするファイルの制限サイズは少なくとも500MByte
・専用のクライアントアプリ等は作らない方向で

というようなものです。
簡単にやろうと思えば、Web上からのプライベートメッセージ&アップローダになると思うのですが、
サイト登録者にメールサーバ及びFTPサーバのアカウントを自動的に発行するのが、
仕組み上スマートではないかとの話があがっております。

上記を踏まえた上で質問させてください。
・メールサーバ及びFTPサーバのアカウントをServletから自動発行する事は現実的か?
 ・レンタルサーバ等でも可能か?
 ・それを行った場合の注意事項や制限事項
・HTTPでのファイルアップロードの場合文頭に挙げた環境でファイルサイズの制限等がかかるのか
 ・制限がかかる場合の対処法
 ・制限がかかる場合にレンタルサーバ等で対処できるか

お分かりになる方いらっしゃいましたらご教授お願い致します。

464 :デフォルトの名無しさん:05/02/24 01:20:02
>>448
ちゃうちゃう、JDK や業務ソフトや運用ソフトのセットアップしてマシン配布するだろ、って意味。
ヨドバシで買ってきたようなパソコンを勝手にイントラにつなげて業務できるようなセキュリティ
グズグズのイントラなんてありえん。

465 :デフォルトの名無しさん:05/02/24 01:28:33
>>464
銀行系は業務ソフトセットアップ済みのマシン配布するとか言うのは分かるが
だからと言ってセキュリティポリシーを >>424 のようにして良い訳が無い。

466 :デフォルトの名無しさん:05/02/24 01:29:49
補足: 別に署名を否定しているわけではないので。

467 :デフォルトの名無しさん:05/02/24 01:33:59
>>463
それのどこがWebサービス?
「Webサービス」と「Web上で提供するサービス」を混同してないか?

468 :デフォルトの名無しさん:05/02/24 01:40:34
>>465
当たり前だ、どのリソースへの権限を与えるかなんてここで想定できないだろ。
誰が元の質問者の本番システムの設定を >>424 の通りに書けなんて言ってる。
出来るか出来ないかの話。

469 :デフォルトの名無しさん:05/02/24 02:12:24
>>467
webサービス=SOAPと混同していないか?

470 :デフォルトの名無しさん:05/02/24 02:18:12
>>464
ヨソの仕事は知らないんですが、

「JDK や業務ソフトや運用ソフトのセットアップしてマシン配布」
しないイントラってありえないものなんですか…?
ウチはそこまでセットアップして配布なんてめったにないよ。
ウチの仕事が小規模なんだろうな。。。

471 :デフォルトの名無しさん:05/02/24 02:32:42
>>470
すまん表現が悪かった。単にイントラというとファイルサーバ+簡単な Web/DB アプリくらいで済む
ものも含まれてしまうな。閉じたネットワークで専用端末使って顧客・契約情報扱うような、昔の
オンラインシステムのようなものだよ。

472 :470:05/02/24 02:38:46
>>471
まさに、「ヨドバシで買ってきたようなパソコンを勝手にイントラにつなげて業務」できちゃうよ?
言い換えれば、セットアップが簡単なのさ!

473 :デフォルトの名無しさん:05/02/24 02:43:36
>>469
467 じゃないけど、サーブレットや JSP が HTML 吐いてブラウザで表示させる類のものは
Web サービスとは呼ばないよ。

> ・メールサーバ及びFTPサーバのアカウントをServletから自動発行する事は現実的か?
サーブレットでアカウント管理用シェルを叩くのはたまにやる。前のプロジェクトの CVS
サーバをそれでやったし。

> ・レンタルサーバ等でも可能か?
root 権限がもらえる契約なら可能じゃない? レン鯖使ったことないから契約上
どう運用すれば良いか知らんけど。

> ・それを行った場合の注意事項や制限事項
サーブレットからシェルを起動するセキュリティに関してはいろいろあるから
自分で調べろ。特に、入力値をそのまま文字列連結してシェルとして起動する
のは危険極まりないから止めるように。

> ・HTTPでのファイルアップロードの場合文頭に挙げた環境でファイルサイズの制限等がかかるのか
1リクエストの制限サイズは Apache の設定で変更可能。

> ・制限がかかる場合の対処法
設定変えれ。

> ・制限がかかる場合にレンタルサーバ等で対処できるか
Apache の設定を変更する権限があるなら。root 持ってるならとりあえずOK。

474 :デフォルトの名無しさん:05/02/24 02:55:44
>>472
それはそれでシステム設計としては理想的だから否定する気はないんだけど、出所の
分からないマシンを勝手に繋げられるというのを嫌う客は結構居るよ。台数足りないから
って家のノート PC 持ってきたらウィルス入ってたとか、P2P ソフトが裏で何か怪しいことを
やってたとか、プレインストールソフトが一生懸命どこかと通信しようとしてたとか、基幹
に繋がっているマシンが同時に AirH" でインターネットに剥き出し状態になってるとか。

特に金融関係でそんな運用してて金融庁の監査で発覚したらエラいことになる。

475 :デフォルトの名無しさん:05/02/24 03:23:27
電子署名のCAへの問い合わせを閉じたイントラネットでどうやってるのか聞きたい。

476 :デフォルトの名無しさん:05/02/24 03:29:27
接続先に制限を掛ければ済む話だが

477 :デフォルトの名無しさん:05/02/24 03:39:04
閉じてねぇじゃんw

478 :デフォルトの名無しさん:05/02/24 03:48:20
電子署名のために業務システムに穴を開けようとする SE が居る件について

479 :デフォルトの名無しさん:05/02/24 04:33:12
OK ボタン押すといきなり AllPermission になる電子署名よりアクセス制御を細かく出来る
セキュリティポリシーの方が安全だよ。

480 :デフォルトの名無しさん:05/02/24 05:18:02
何だか難しい話の最中に申し訳ない。
自分で作ったクラスをrt.jarを弄らずに既存のクラスパッケージにぶち込む事って出来ますか?
GridLayoutを継承したクラスが必要になったんですが、
Componentで使ってる変数がパッケージ外からだと使えんと言われたもんで。

481 :デフォルトの名無しさん:05/02/24 05:21:00
>>480
その必要な変数に対する getter って無いのか? 変数名を挙げてみ。

482 :480:05/02/24 05:41:58
>>481
あ……

お騒がせしました〜

483 :デフォルトの名無しさん:05/02/24 09:22:05
>>479
だれがそのポリシーを管理するかだよね。アプレットの外注先
がサンプルで添付したポリシーファイルを中身読まないでクライアントに
追加させるダメダメ情シスって結構おおいよ。結果的にポリシーまで
アプレットの作成側に任せる(よく言えば信頼している)ことになるなら、
配布の手間が省けるぶん署名付アプレットのほうがましじゃんって
思うけど、めんどいから黙ってる。

484 :デフォルトの名無しさん:05/02/24 09:40:37
「どうせ AllPermission 権限が必要なら署名にした方が楽」って話ならそうだけど、
話の前提を特殊ケース (ダメダメ情シス) に合わせるのは間違いと思われ。という
漏れも詳しくないんだけど、正式に電子署名を取得するのって VeriSign みたいな
CA と契約(?)する必要があるんじゃない?
なんかそっちの方が客的にめんどくさそう (´・ω・`)

485 :デフォルトの名無しさん:05/02/24 09:54:09
ところでさ、AppletでなくてJavaWebStartじゃだめなん?

486 :デフォルトの名無しさん:05/02/24 10:01:16
>>485
出来るならそっちの方が楽でしょ。アプリケーションに必要な権限も JNLP に記述できるし。
ただブラウザベースの Web アプリと連携やセッション情報共有しなきゃいけない場合は
アプレットじゃないとだめだね。

487 :デフォルトの名無しさん:05/02/24 10:27:17
>>484
よく出てくる話だけど、テスト証明書で済ませちゃうっていうのはダメ?
良くないのは、分かってるんだけど。
しょぼいイントラのために、VeriSignまで申請するのはめんどくさいので、
小規模なイントラならテスト証明書もありかなぁーなんて思ってるんですが。やっぱダメ?
要クライアントセットアップだけは嫌なんだな。

488 :デフォルトの名無しさん:05/02/24 10:34:08
WebStartもアプリケーションだけじゃなくてアプレットつかえるんだけどな
あんまいみはないが

489 :デフォルトの名無しさん:05/02/24 10:34:21
>>487
外部の敵より内部の敵の方が恐いぞ

490 :デフォルトの名無しさん:05/02/24 10:50:23
>>487
金と運用と使い勝手に絡むからダメかどうかは客が決めるでしょ。設計屋は選択肢を出すだけ。

1. CA に金払ってイントラから外部に繋がる穴を開ける
2. テスト証明書を使って毎回出る「この証明書は〜」ダイアログをガマンする (毎回出るんだっけ?)
3. ポリシー設定してクライアントに配布

大抵の客はイントラなら 2 か 3 だな。買って来た PC 繋げればそのまま使えるのが売りの
システムなら 2 だし、JRE 以外のアプリのインスコや配信が確立されてるなら 3 だし。
1 を選択するのはインターネット上で不特定多数に使わせる場合だけだと思う。

まぁ、初回だけテスト証明書使った AllPermission アプレットでセキュリティポリシーファイル
書き換えるという手もあるが。

491 :デフォルトの名無しさん:05/02/24 11:07:05
>>475-479 >>483-484 >>487 >>490
閉じたネットワークでCAへの問い合わせが出来なくても問題なし。
テスト証明書を発行したときに使った自前CAのルート証明書を
各クライアントにあらかじめ入れておけば警告は出ないから
我慢しなくてよくなるよ。


492 :デフォルトの名無しさん:05/02/24 11:09:34
>>491
それは結局端末セットアップが必要という話ではないのか。

493 :デフォルトの名無しさん:05/02/24 11:37:26
JAVA初心者です。質問させてください。
1つのappletの中でCheckboxとChoiceは一緒には使えないのでしょうか?
使えるのならどうしたらよいか教えてください。


494 :デフォルトの名無しさん:05/02/24 11:39:28
>>493
使えます。むしろ使えないと判断した理由を教えてください。

public class A extends Applet{
 public void init(){
  this.add(new Choice());
  this.add(new Checkbox("orz"));
 }
} // 超適当、これはもうコンパイルできるかもわからんね

495 :デフォルトの名無しさん:05/02/24 11:45:04
レスありがとうございます。
ItemStateChangedのイベントのなかで両方を書くエラーが発生して、
片方だけにするとエラーなしなんです。

496 :デフォルトの名無しさん:05/02/24 12:02:03
>>495
ワラタ

497 :デフォルトの名無しさん:05/02/24 12:03:28
>>468 >>473
ご返答ありがとうございます。
Webサービスという言葉が誤解を招く表現だったようで申し訳ありません。
(このようなサービスの一般的な総称のようなものはあるのでしょうか?)

>>サーブレットでアカウント管理用シェルを叩くのはたまにやる。
>前のプロジェクトの CVSサーバをそれでやったし。

メールサーバやFTPサーバも同様の方法でできそうですね。
Sendmail(qmail)やImageMagicを叩いたりしたことはあったのですが、
別サーバのアカウント管理も気をつければ問題はなさそうですね。

また、root権限がないと今回の仕様は完全に実装できない事がわかりました。
この場合のroot権限というのはどのようなものを指すのでしょうか?
・サーバの管理者(もしくはそれに近い)権限
・ユーザ権限
・プログラムがotherではなくユーザ権限で動作する

つたない質問内容ですみません。
今まで頼り切っていたサーバ管理者さんと離れてしまい、知識とノウハウが殆どない状況です。

>>サーブレットからシェルを起動するセキュリティに関してはいろいろあるから>自分で調べろ。
>特に、入力値をそのまま文字列連結してシェルとして起動する>のは危険極まりないから止めるように。

了解しました。シェルに関する問題があった際の被害は想像を絶する規模だと自覚しておりますので、
セキュリティに関して入念に調べておきたいと思います。
また、レンタルサーバ各社の仕様等も含め調査していきたいと思います。
ご回答ありがとうございました。


498 :デフォルトの名無しさん:05/02/24 12:13:56
>>491
テスト証明書でも、CAの証明書でもダイアログはどっちも出るよ。文言が違うけど。
#署名してあるだけでイキナリ実行はあり得ない。

テスト証明書:
 「このコードをインストールおよび実行しないことを強くお勧めします」とか
CA:
 「〜はこの内容が安全であることを表明しています。〜による表明を信頼する場合にのみ・・・」

あと、どちらも以後信頼して、ダイアログを出さないようにはできるので、
>>490の1.と2.の違いは、ユーザの操作から見たら最初の違いだけ。

499 :498:05/02/24 12:15:39
>あと、どちらも以後信頼して、ダイアログを出さないようにはできるので、
ごめん、この辺は、Plug-inのバージョンとか、Java Web Startだったりで多少違うかも。
不確かな情報でした。

500 :487:05/02/24 12:18:33
>>490
>大抵の客はイントラなら 2 か 3 だな。買って来た PC 繋げればそのまま使えるのが売りの
>システムなら 2 だし、

やっぱりそれもアリですよね
ひろみちゅ からは怒られそうだけど。

501 :デフォルトの名無しさん:05/02/24 12:52:34
>>495
第三者にも状況が伝わる日本語でおながいします

>>497
root 権限=サーバの管理者権限。つか、それがなければ FTP 鯖立てたりアカウント
追加なんて出来ないだろ。

>>500
普通、客なら「テスト証明書」なんて怪しげなものを嫌がって 2 が選択肢から外れる
のが多いけどな。>>498 の「このコードをインストールおよび実行しないことを強く
お勧めします」なんてダイアログを利用者に出すくらいなら、「このファイルをここに
置け」って通達する方を選ぶ。どうせ JRE のインストールとか手順としてまとめるんだし。

無印 JavaHouse が Brewers と合併してからひろみちゅんとこは閑古鳥だな。
最近ずっと沈黙してないか。

502 :デフォルトの名無しさん:05/02/24 12:58:35
>>497
root権限を知らないやつが、Web上でアカウント管理シェルを実行する
システムを設計するなんて、怖すぎやしないか?


503 :デフォルトの名無しさん:05/02/24 13:03:46
>>502
ユーザ権限とか other とか理解してるみたいから、単に確認とちがうか。

504 :デフォルトの名無しさん:05/02/24 14:22:14
じゃあ以降放置決定


505 :デフォルトの名無しさん:05/02/24 14:27:04
JAVAド素人です。
大変くだらない問いかけで申し訳ないのですが、質問させて下さい。

JAVAプログラミングの参考書を見て勉強中なのですが、
コントロールパネルを使った環境変数の設定方法について教えてください。
当方のOSはWindows Meなのですが、
コントロールパネルを使って環境変数の登録をすることは、Meでは無理なのでしょうか?
わからないながら調べたところによると、Windows Me は Config.sys を処理できないため、
環境変数を登録できない、というようなことが書いてありましたが、、、


まとめサイトを見ることができなかったので、質問してしまいました。
よろしくお願いします。

506 :デフォルトの名無しさん:05/02/24 14:29:34
>>505

http://support.microsoft.com/default.aspx?scid=kb%3bja%3b880124

507 :デフォルトの名無しさん:05/02/24 14:34:09
Me捨てる。これ基本あるね

508 :デフォルトの名無しさん:05/02/24 15:14:37
UDP通信をしようとしています.
違うアプリケーションでパケットを送るSenderと受け取るRecieverは上手く
通信できました。

しかしそれらのコードを1つのアプリで包み、ユーザにSenderとRecieverを
選択させて同一マシンで通信しようとすると、後からSocketを作ろうとした
ほうが、Socketを作れないみたいです。

この様なプログラムを制作するためには、アプリをSender、Recieverと2つ
作って置いて、その後コードを繋いで別機で実験というような方法を取るの
でしょうか?

509 :デフォルトの名無しさん:05/02/24 15:24:36
>>508
ゆとり教育世代?
第三者にも状況が分かるだけの国語を勉強してもう一度おこしください。

510 :デフォルトの名無しさん:05/02/24 15:25:11
>>508
>>398の人ですか?

511 :デフォルトの名無しさん:05/02/24 15:55:38
>>508
そんなことはない

512 :デフォルトの名無しさん:05/02/24 17:49:37
JavaのクラスからServletってどう呼び出すの?
Linuxサーバ上でJavaを実行して別APサーバのServlet呼び出して動かしたい

513 :デフォルトの名無しさん:05/02/24 17:56:50
>>512
HTTPリクエストを送る

514 :デフォルトの名無しさん:05/02/24 18:02:49
>>512
URL クラスを使って HTTP で通信しる。
openStream() した後に入力ストリームからレスポンスを取り出せる。

515 :デフォルトの名無しさん:05/02/24 20:49:09
iアプリ制作スレから誘導されました
ネットワーク接続や記憶領域の書き込みのためにString←→byte配列の変換をしたいのですが、ビットシフトで出来るということは分かりましたが、どうコーディングすればよいか分かりません。
toStringなどメソッドを使う方法は見つかりましたが…
教えてください

516 :デフォルトの名無しさん:05/02/24 21:57:50
>>515
ビットシフトは関係ないような気がする。
String → byte[] するには、getBytes() メソッド、あるいは、getBytes(String enc) メソッドを使い、
byte[] → String するには、String クラスのコンストラクタを使うとよいと思う。

以下、例。(例外処理は端折り気味)

public class Main {
public static void main(String[] args) throws java.io.UnsupportedEncodingException {
String org = "テスト文字列";
byte[] byteArr;

// 文字列 org をプラットフォームのデフォルト文字エンコーディングに従ってバイト配列に変換
byteArr = org.getBytes();
hexPrint(byteArr);

// 文字列 org を SJIS のバイト配列に変換
byteArr = org.getBytes("SJIS");
hexPrint(byteArr);

// 文字列 org を UTF-8 のバイト配列に変換
byteArr = org.getBytes("UTF-8");
hexPrint(byteArr);

// UTF-8 のバイト配列を文字列に直す
String str = new String(byteArr, "UTF-8");
System.out.println(str);

// UTF-8 のバイト配列を無理やり SJIS として文字列にしてみる
str = new String(byteArr, "SJIS");
System.out.println(str);
}

517 :516 の続き:05/02/24 21:58:42
// 16進数で表示するメソッド
public static void hexPrint(byte[] byteArr) {
for (int i=0; i<byteArr.length; i++) {
int val = byteArr[i] < 0 ? byteArr[i] + 0x100 : byteArr[i];
System.out.print(Integer.toHexString(val) + " ");
}
System.out.println();
}
}

518 :505:05/02/24 23:25:19
>>506
>>507
ありがとうございます。

519 :デフォルトの名無しさん:05/02/25 09:42:22
JSPオブジェクトのAPIレファレンスってありますか?

520 :デフォルトの名無しさん:05/02/25 09:48:58
>>519
request → javax.servlet.http.HttpServletRequest
response → javax.servlet.http.HttpServletResponse
application → javax.servlet.ServletContext
session → javax.servlet.http.HttpSession

JSP オブジェクトって何?

521 :デフォルトの名無しさん:05/02/25 10:03:11
返事どうもっす

>>JSP オブジェクトって何?
すんまあせん、クラスの間違いです
回答してくださったrequestとかの事っす
でもAPIにはservletパッケージの説明ないですね

sunのサイト探したんですけどないっぽいし
http://java.sun.com/reference/api/index.html

皆さんこういう本買ってるんですかね?
http://www.pearsoned.co.jp/washo/java/wa_int98-j.html


522 :デフォルトの名無しさん:05/02/25 10:03:30
>>519
Syntax Reference
http://java.sun.com/products/jsp/docs.html
仕様
http://java.sun.com/products/jsp/docs.html

(多少古いけど)さくっと日本語で
http://suite.yoko.ne.jp/tsjsp/

523 :デフォルトの名無しさん:05/02/25 10:07:30
ごめん仕様はこっちだ
http://java.sun.com/j2ee/ja/jsp/download.html

>でもAPIにはservletパッケージの説明ないですね
J2EEのAPIリファレンスにある(Tomcatにも入ってくる)
http://java.sun.com/j2ee/1.4/docs/api/index.html



524 :デフォルトの名無しさん:05/02/25 10:21:12
うほ、こんなにたくさん。有難うございました
もう少しsunのサイトにも目を通しておきます

525 :512:05/02/25 15:14:14
URL url = new URL("http://192.168.137.215:7051/apply/jp.co.testServlet");
URLConnection conn = url.openConnection();
conn.setDoOutput(true);
conn.setUseCaches(false);

これじゃ駄目なん?
サーブレット動かんよ

526 :デフォルトの名無しさん:05/02/25 15:15:41
>>525
そのサーブレット、ブラウザで行ったときは、ちゃんと実行できるのか?

527 :512:05/02/25 15:17:33
うん

528 :デフォルトの名無しさん:05/02/25 15:29:10
>>525
例外がでてなければ
その続きが知りたい

529 :512:05/02/25 15:35:37
>528
Javaクラスは正常終了。
でたらめなURLを入れると例外が出ることを考えると、
どうやらコネクション自体は正常に張れてるらしい。
問題はそこからでServlet内のメソッド内でSystem.outと
ログ出力やってるんだがさっぱり出力されない。
ブラウザからURL直指定するとちゃんと出るんだけど。
WebLogicのaccess.logを見るにその時はちゃんとアクセスログ出てるし。

さぱーりわからん。
doGetが呼ばれるんとちゃうのかな?

530 :デフォルトの名無しさん:05/02/25 15:44:21
>>528
出力ストリームをクローズしてないとか?
あと、HttpURLConnectionを使えばgetRequestMethodでPOSTかどうか
確認できるけどね

531 :デフォルトの名無しさん:05/02/25 15:44:51
× >>528
>>529

失礼

532 :デフォルトの名無しさん:05/02/25 16:03:15
>530
HttpURLConnection使ったら行けたっぽい!!
問題はまだイパーイあるけど後は自力で調べます。
どうもありがとー

533 :デフォルトの名無しさん:05/02/25 16:19:28
プロトコル理解してなかったのか・・・

534 :370:05/02/25 18:50:58
無理だと思って、質問したことすら忘れてた >>370 です。w

>意見を下さった皆様
ありがとうございました。
とりあえず、モノは趣味で組んでるものなので、
ここはあえて、javaw起動のjava製疑似コンソールで行ってみようかと思います。

最初からある程度出力の切替を想定して、
一番基底のクラスで一括してコンソール出力してたので、
GUIさえ立ててしまえば、それほど手間じゃないかもなぁと。

とりあえずお礼代わりに報告をば。
本当にありがとうございました。

535 :デフォルトの名無しさん:05/02/25 22:16:36
>>525
もう解決したみたいだが、URL クラスや URLConnection クラスが実際に通信をするのは
URL#openStream()/URLConnection#getInputStream() で取得したストリームから最初の
1 バイトを取り出した時 (その他の条件でも発生するかも)。つまりクラスの使い方によって
通信が必要ないとみなされれば通信しないので注意。

536 :デフォルトの名無しさん:05/02/26 00:19:41
Java初心者です。教えてください。

参照の実態はポインターなのに、「pointer」という言葉を使わず、
頑なに「reference」で通しているのに、なぜ例外の名前にだけ、
「pointer」を使うのですか ?

これだけ例外なのですか?

537 :デフォルトの名無しさん:05/02/26 00:26:14
例外だから

538 :デフォルトの名無しさん:05/02/26 00:27:18
ぬるり より ぬるぽ のほうが良いだろ。それだけだ。

539 :デフォルトの名無しさん:05/02/26 00:34:19
VEの勉強したいのですが、わかりやすいサイトもしくは本があれば教えてください。

540 :デフォルトの名無しさん:05/02/26 00:55:47
頑なにreferenceで通してるかなあ。

541 :デフォルトの名無しさん:05/02/26 01:05:00
>>536
参照は意外と難産の末に生まれてきたという歴史がある。
実態はポインターなんて言ったら参照の母ちゃんブチキレですよ?

542 :デフォルトの名無しさん:05/02/26 01:10:43
>>541
詳しく教えてー

543 :デフォルトの名無しさん:05/02/26 01:37:37
ぬるり、これいいね!
ぬめり具合がバグの性質を表している。

544 :デフォルトの名無しさん:05/02/26 01:39:48
死ぬほど古いけどJ2EE日本語APIリファレンス
http://java.sun.com/j2ee/sdk_1.3/ja/techdocs/api/

545 :デフォルトの名無しさん:05/02/26 11:31:49
昔、C言語はポインターが難しいとかいいだす、極度のバカがいた。
そんなバカにも出来る言語をと、Javaからポインターという「言葉」が隠蔽された。

546 :デフォルトの名無しさん:05/02/26 11:56:54
Javaのリファレンスは難しいw

547 :デフォルトの名無しさん:05/02/26 12:57:55
あほか、勘違いするな。
Java に無いのはポインタじゃない。
ポインタ演算だ。

548 :デフォルトの名無しさん:05/02/26 14:50:53
>>545-547
どっちもあふぉ


549 :デフォルトの名無しさん:05/02/26 19:04:31
JavaアプリでXMLファイルを作成し、そのアプリからRuntime#execで
wscript.exe jsファイル
を呼び出しています。
jsファイルではOfficeのWord又はExcelのとあるファイルを開き、
対象のOfficeファイルのVBAを実行しています。
そのVBAの中で、先ほどJavaアプリで作成したXMLファイルを読み込みたいのですが、
エラーでできません。
エラー内容は
"プロセスはファイルにアクセスできません。別のプロセスが使用中です。"
というものです。
Javaアプリがその作成したXMLファイルを使用中、ということなのでしょうが、
どうしたら、そのXMLファイルからプロセスを解放できるのでしょうか?
XMLファイルは
TestFileMakerクラスのmakeメソッド内で、
java.io.File#createNewFileを呼び出して作成、
といった感じです。

WinXPProSP2、Eclipse3.0.1で開発しています。
よろしくお願いします。


550 :デフォルトの名無しさん:05/02/26 19:41:39
>>549
javaで作ったファイルクローズしましょう

551 :デフォルトの名無しさん:05/02/26 19:46:33
質問です
リクエストをまたがってDBトランザクションを1つにすること可能でしょうか?
一回目のリクエストでbeginして
二回目のリクエストパラメータでCコミットするかロールバックするかを判断する
と、いうようなことです

552 :549:05/02/26 19:55:41
>>550
あう・・・。
できました。ありがとうございます。

553 :デフォルトの名無しさん:05/02/26 20:10:05
>>551
できるよ。普通はそんなこと、しねーけどな。
楽観的ロックでググれ。

554 :デフォルトの名無しさん:05/02/26 20:16:54
>>553
しないのか?
普通は必要な機能だろ?

555 :デフォルトの名無しさん:05/02/26 20:24:43
>>554
おまいとは開発対象としてる業務要件が違うのかもな。
俺は WebLogic、WebSphere、Tomcat で 10 以上の
Web システムを開発してきたが、リクエストをまたがるロックは
してないな。

リクエストをまたがる悲観的ロックが業務要件的に
必要なことはなかった。

556 :デフォルトの名無しさん:05/02/26 21:07:25
>>551
一つ目のリクエストを投げて行ロックして、レスポンスが返ったあと、
二つ目のリクエストが来なかったらどうするんだ?

557 :デフォルトの名無しさん:05/02/26 21:22:20
>>556
それは >>554 に聞いてやれ。

558 :デフォルトの名無しさん:05/02/26 21:38:10
Image image = getImage(getDocumentBase() , getParameter("img"));
PixelGrabber pg = new PixelGrabber(image , 0 , 0 , -1 , -1 , true);

try { pg.grabPixels(); }
catch (InterruptedException e) { }
int px[] = (int[])pg.getPixels();

for(int index = 0 ; index < px.length ; index++)
if (px[index] == ((255 << 24) | (255 << 16) | (255 << 8) | 255))
px[index] = (255 << 24);

ImageProducer ip = new MemoryImageSource(
pg.getWidth() , pg.getHeight() , px , 0 , pg.getWidth());
this.img = createImage(ip);

これで画像の中の色が白いピクセルを黒に変換できる、らしいんですが
疑問1・for文のとこ、あれでなんで全部のピクセルをチェックできるの?
疑問2・255を左にシフトしてるけど24って・・・あふれてない?
どうかご教授ねがいます!!

559 :デフォルトの名無しさん:05/02/26 21:41:32
>>558
PixelGrabberを調べればその疑問は解決できる

560 :デフォルトの名無しさん:05/02/26 21:58:31
即レス感謝です。
try { pg.grabPixels(); }  で全部終わるまでし続けるわけですよね?
それで疑問1は解決なんでしょうか?

561 :デフォルトの名無しさん:05/02/26 22:15:37
>>558
単純にクロをセットしているだけでは?

562 :デフォルトの名無しさん:05/02/26 22:30:17
>>561
どうも。黒をセットしようとしてるのはわかるんですが
255 << 24
これっていらなくないですか?馬鹿ですいません(・ω・` )

563 :561:05/02/26 22:35:49
アルファ値が0だとどんな色でも透明になるよといってみるか

564 :デフォルトの名無しさん:05/02/26 22:48:59
>>560
ちがうだろ。forで設定してるんだろ。

↓ピクセルがフルビット(白)なら
if (px[index] == ((255 << 24) | (255 << 16) | (255 << 8) | 255))

↓アルファ値だけ設定する(黒にする)
px[index] = (255 << 24);



565 :558:05/02/26 22:58:37
え〜と・・今アルファ値を勉強してきました、がまだわかりません・・・OTL
> ↓ピクセルがフルビット(白)なら
>if (px[index] == ((255 << 24) | (255 << 16) | (255 << 8) | 255))
”| ”ってORですよね?0xFF0000FFとか白じゃなくても真になりません?

> ↓アルファ値だけ設定する(黒にする)
>px[index] = (255 << 24);
これは理解出来たかも。つまり0xFF000000をセットしてるわけですよね。

566 :デフォルトの名無しさん:05/02/26 23:00:27
まずはbitを紙に書いてみよう

567 :デフォルトの名無しさん:05/02/26 23:10:03
>>565
0xff000000 | 0x00ff0000 | 0x0000ff00 | 0x000000ff

0xffffffff

568 :558:05/02/26 23:14:16
>>567
うわ〜やっぱりそうなのか〜。それ一応考えたんだけど納得出来なかったんですよ。
でもこれでなんとか解決できそうです。レスしてくださった方々、ありがとうございました♪

569 :デフォルトの名無しさん:05/02/26 23:46:27
納得云々以前に | は or ではない。|| なら or だがな。

570 :デフォルトの名無しさん:05/02/26 23:47:23
bit演算のorだろ?

571 :デフォルトの名無しさん:05/02/27 00:26:55
import java.awt.*;
import java.awt.event.*;

public class Color extends Frame{
public Color() {
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
}

public void paint(Graphics g)
{
g.setColor(Color.red);
g.drawString("コメント",20,60);

g.setColor(new Color(255,128,128));
g.drawString("コメント",20,80);
}

public static void main(String[] args)
{
Frame w = new Frame("Color");
w.show();
}

}
コンパイルするとエラーになります。どうしてですか?


572 :デフォルトの名無しさん:05/02/27 00:37:17
あほか。

573 :デフォルトの名無しさん:05/02/27 00:52:04
ダイアログでX、Y座標を入力させたいと思います

X : [JTextField]
Y : [JTextFiels]

という感じにしたいのですが、この二行のコンポーネント(1行にJLabelとJTextFledなので合計4つ)を
TitledBorder で囲みたいのですが、どうすればシンプル?に上手く出来るでしょうか?
現在は、JPanelをGridLayoutで(2, 2)に区切って、それを TitledBorderで囲っているのですが
グリッドの大きさがテキストフィールドに合ってしまうので、どうもバランスが良くないのです。
どうすればもっと上手くレイアウトできますか?

574 :デフォルトの名無しさん:05/02/27 01:12:20
>>573
GridLayout(Col=1, Row=2)の中に、JPanel2枚をFLowLayoutで置いて、
それぞれに、JLabelとJTextFieldを置く。

JPanel(GrindLayout) ←TitledBorder設定
  JPanel(FlowLayout)
    JLabel(X:)
    JTextField
  JPanel(FlowLayout)
    JLabel(Y:)
    JTextField

もしくはGridBagLayoutをつかう。

575 :デフォルトの名無しさん:05/02/27 01:34:59
>>569,570
そもそもbooleanでも | は使えるけどね。
その場合はショートカットの無いor。

576 :デフォルトの名無しさん:05/02/27 01:40:46
String の配列があり、これを ArrayList に入れたいのですが、
ArrayList のインスタンスを作ったあと、そこに配列の要素を1個ずつ、
add していくしかないのでしょうか。

577 :デフォルトの名無しさん:05/02/27 01:45:32
>>576
Arrays.asList(Object[])

578 :デフォルトの名無しさん:05/02/27 01:46:52
UTF8の日本語を含むiniファイルを操作出来るjava.util.Propertiesのようなクラスはありますか?


579 :デフォルトの名無しさん:05/02/27 01:49:03
>576
java.util.Arrays.asList()

580 :デフォルトの名無しさん:05/02/27 01:49:27
>>578
iniファイルって仕様決まってんの?

581 :579:05/02/27 01:49:38
めっちゃ出遅れたorz

582 :デフォルトの名無しさん:05/02/27 01:51:36
>580
一応

[section]
key=value
;comment line

てな感じでは。

583 :デフォルトの名無しさん:05/02/27 01:55:11
>>579
ありがとうございます、まず調べてみますです。

>>580
既存のUTF8で書かれたiniファイルを変更したいので…。
java.util.Propertiesでは文字コードの指定が出来ないっぽくて困ってました。

584 :デフォルトの名無しさん:05/02/27 02:00:00
>>579
って違うレスじゃん…orz

>>582
その通りです、仕様を自分で決めれるなら
J2SE5.0にしてProperties.storeToXML使ってみたかったです。

585 :デフォルトの名無しさん:05/02/27 02:11:45
>>584
http://www.koders.com/java/fidF3567C71EDFEA6EE2311A0EFF96C14E14D03F0CD.aspx

586 :dahoi:05/02/27 02:34:53
class Sukashi {

static BufferedImage Suka(){
File f = new File("kaiwo.jpg");
try {

BufferedImage image = ImageIO.read(f);

} catch (IOException ex) {
ex.printStackTrace();
}
return image;
}

public static void main(String args[]){
Suka suka = new Suka();

int gets = suka.image.getRGB(100,100);
int r = (gets >> 16) &0x000000ff;
int g = (gets >> 8) &0x000000ff;
int b = (gets >> 0) &0x000000ff;

System.out.println(r);
System.out.println(g);
System.out.println(b);
}
}

ごめんなさい。。。
今自分でプログラム組んでるんですけど
どうもうまく動かなくて。。。
よろしかったらどなたか教えていただけませんか?

587 :デフォルトの名無しさん:05/02/27 03:01:12
何をだ

588 :デフォルトの名無しさん:05/02/27 03:10:11
スカシっ屁

589 :デフォルトの名無しさん:05/02/27 04:31:29
>>585
Sectionまで対応しててよさげなClassだったのですが、
文字コードの問題には触れていないので根本的解決にはならなかったようです。

590 :デフォルトの名無しさん:05/02/27 05:01:52
私は >>585 じゃないけど、ほんのちょっと変更かするだけで、
いろんな文字コードに対応できるとおもうんだけど。
そうは思わないかい?

591 :デフォルトの名無しさん:05/02/27 12:56:42
>>590
http://www.koders.com/java/fidF3567C71EDFEA6EE2311A0EFF96C14E14D03F0CD.aspx


592 :デフォルトの名無しさん:05/02/27 13:22:17
>>589
どこに文字コードの問題があるんだ。
文字エンコーディングを指定するだけだろ。

593 :578:05/02/27 14:03:44
>>590
>>592
申し訳ない、load methodがFileInputStream渡しかと思ったら
InputStreamReader渡しだったんですね。それなら文字コード指定出来ます。

しかしなんで書きのほうはPrintWriterなんだろう…。

594 :デフォルトの名無しさん:05/02/27 14:39:45
Tomcat でServlet+JSPで開発をしたいのですが
eclipseを使って開発するのが普通ですか?

595 :デフォルトの名無しさん:05/02/27 15:09:30
import java.io.*;
class monndai
{
public static void main(String args[]) throws IOException
{
System.out.println("あなたは何歳ですか?");

BufferedReader br =
new BufferedReader(new InputStreamReader(System.in));

String str = br.readline();

int num = Integer.parseInt(str);

System.out.println("あなたは"+ num +"です。");

}
}

をコンパイルすると

monndai.java:11: シンボルを解決できません。
シンボル: メソッド readline ()
場所 : java.io.BufferedReader の クラス
String str = br.readline();
^

と出ます。どう直せば動きますか?

596 :デフォルトの名無しさん:05/02/27 15:12:00
br.readLine();

597 :デフォルトの名無しさん:05/02/27 15:57:21
>>594
notepadでもできる

598 :デフォルトの名無しさん:05/02/27 16:14:30
>>594
edlin でもできる


599 :デフォルトの名無しさん:05/02/27 16:22:46
echo も可

600 :デフォルトの名無しさん:05/02/27 16:56:14
>>594
ここでの普通の定義をお願いします

601 :デフォルトの名無しさん:05/02/27 16:56:44
>>597など

602 :デフォルトの名無しさん:05/02/27 16:58:07
>>597など

いやいや、それはわかってるのですけど
昔は秀丸で開発してたんですけど
最近はどうなのかなと。eclipseなるものが
流行ってるみたいなのでどうかなと。
Javaは久しぶりなのでどうかなと。
その辺をよろしくです。

603 :デフォルトの名無しさん:05/02/27 17:01:42
>>602
Eclipseスレで聞いたらEclipse使ってるという回答が返ってくる可能性が高いでしょう
>>600 にもあるけど、あなたが何をもって「普通」としているのかもわからないし

604 :デフォルトの名無しさん:05/02/27 17:05:19
>>603
普通というのはまあ普通にシェアと思っていただければいいかと
Servlet+JSPの開発ツールで一番のシェアは?
ということになるような気がしないでもないです。

605 :デフォルトの名無しさん:05/02/27 17:06:33
なんというか秀丸より開発しやすいのかなとeclipseは。
それとももっといいのがあったりするのかなと。
その辺どうよ?ってことです。

606 :デフォルトの名無しさん:05/02/27 17:07:40
.netは開発しやすかったのでJavaに戻ってきて
また秀丸じゃやだなーと。そんなわけです。

607 :デフォルトの名無しさん:05/02/27 17:27:17
て言うか、そこそこの経験値持ってるならEclipseが普通に使えるはず。
先ず試してみようとなぜ考えないのか?
VS.NETの影響で誤解してるのかもしれないけど、Eclipseは気に入ら
なければアンインストールする事で綺麗さっぱり消えてなくなるよ?
MSの開発ツールみたいに、入れたら最後もう元には戻らないという事
はない。

608 :デフォルトの名無しさん:05/02/27 17:30:51
>>607
>て言うか、そこそこの経験値持ってるならEclipseが普通に使えるはず。

そこそこのマシンを持っていないので・・・


609 :デフォルトの名無しさん:05/02/27 17:37:02
>>608
ごちゃごちゃ言わずに Eclipse 使え。
はっきり言って Java 出来ます、Eclipse 使えません
じゃ、開発者として話しにならん。

610 :デフォルトの名無しさん:05/02/27 17:46:43
>>608
P3-600Mhz+440BX+384MB+Win98SEという環境だけど、起動するのに
1分くらい掛かるのと、EclipseUMLでクラス図の出力にちょいと待たされる
事があるくらいで、コーディング中に不快を感じた事はないな。
コンパイルもテストユニット単位で行うから全然問題ないし、マシンに対す
る要求は高くないと思うが?

611 :デフォルトの名無しさん:05/02/27 17:49:54
あっと付け足し。
EclipseUMLでソース→クラス図というパターン自体が稀だから
普通はクラス図→ソースとなるわけで、通常使用時に関して言
えばEclipseUMLは普通に快適。

612 :デフォルトの名無しさん:05/02/27 18:31:43
eclipseに標準でUML出力なんてあった?

613 :デフォルトの名無しさん:05/02/27 18:36:03
え、他人のソース見るときはソースからクラス図つくるだろ?

614 :デフォルトの名無しさん:05/02/27 18:36:10
標準じゃないけどって言うか、いい加減ググれ。
EclipseUMLと書いてるんだから、それをそのままキーにしてググれ。

615 :デフォルトの名無しさん:05/02/27 18:39:33
>>613
頻度(ソース→クラス図という工程を繰り返す事はない)と状況(クラス図
生成の指示を出した後はソースを斜め読みしながら待つ)的に言って問
題ないと俺は判断する。

616 :デフォルトの名無しさん:05/02/27 18:41:14
>>613
いやほとんど作らん。

617 :デフォルトの名無しさん:05/02/27 18:50:12
いやね。みんながeclipseを使ってるなら使うよ。
ありがと

618 :デフォルトの名無しさん:05/02/27 18:55:00
>>617
いやね(ry

@IT:Java Solution 第11回読者調査結果
http://www.atmarkit.co.jp/fjava/survey/survey0406/java0406.html

619 :デフォルトの名無しさん:05/02/27 20:23:33
strutsはあまり好きじゃないな

620 :デフォルトの名無しさん:05/02/27 21:17:58
Interfaceの使い方について、よく判ってないんですけど、
Interfaceを実装したabstractクラス、それをextendsした基本クラス、さらにextendsした派生クラス
っていうのと
abstractクラスを省いて、Interfaceを実装した基本クラス、さらにextendsした派生クラス
ってやるのとでは、
abstractクラスがあるのと無いので、こっちがこういう場合に都合が悪いとかありますか?

621 :デフォルトの名無しさん:05/02/27 21:34:53
設計の思想次第だから一概には言えないが、、、
(その例なら無くても良い ボソ)

622 :デフォルトの名無しさん:05/02/27 21:46:12
>>621
なくても良い、ってなんで分かるんだよ。w
一概には言えないってのには同意するが。

>>620
設計が完璧じゃない場合に、
「ここでAbstractなクラスを一段カマしてるけど、要らなくない?」とか、
「ここにAbstractなクラスを一段カマしたほうが、良くない?」ってことはあるかも。

623 :デフォルトの名無しさん:05/02/27 22:04:16
>>622
Abstract クラスとその下の基本クラスが意味的に大切なレイヤーを築いてるなら良いんだけどね。

624 :教えてください:05/02/27 22:26:29
素数を求めるプログラムを、メインプログラムに組み込みたいです。
メインのプログラムでは、素因数分解をするのですが
その際に今の場合だと 単純に2から割っていってるので
時間がとてもかかってしまっています。
やらなくてはいけないことは
素数のプログラムをクラスライブラリ形式
にしてメインで呼べばいいというのは なんとなく分かるのですが
具体的にどうしたらいいのかわかりません。
よろしくおねがいします。

625 :デフォルトの名無しさん:05/02/27 22:29:04
>>620
基本的にはアダプタクラスとして継承した基本クラスを提供して終わりにする場合
が多い(この場合は利便性のみを目的としたもので継承を強要しない)。
一方で、複数のブランチが見えてる場合に共通部分を括ったり、実装を特定の方
向へ導きたい時に抽象クラスを提供する場合もある。

ただし、全方位とか考えて無闇に利用してると、無駄に枝が伸びて何でも使えそう
でいて、実際には使う機会がないという事になりかねない。
インターフェイス
├アダプタ─実装クラス
├抽象クラスA─アダプタ─実装クラス
└抽象クラスB─アダプタ─実装クラス

一部の実装が必須か否か、空の実装を許容するか否か等を考慮して適時使い分
けるというのが模範的な解答になるのかな?

626 :デフォルトの名無しさん:05/02/27 23:04:09
↑WindowListener に対する WindowAdapter のように「アダプタクラス」って言葉
使ってると思うんだけど、アダプタパターンを適用したクラスと思う人も多いから。

627 :デフォルトの名無しさん:05/02/27 23:35:52
例えば下記の内容のようなファイルをJavaで読み込んで
出力させたい時に
Name="〜"だけを抜き出した〜の内容だけ出力させるにはどうすればいいのでしょうか?
教えてください
下記の例だと
aiueo
kakikukeko
abcde
12345
になります

File aiueo
Name="aiueo"
age="10",Name="kakikukeko"
Name="abcde"
Name="12345",age="10"
age="10"

628 :デフォルトの名無しさん:05/02/27 23:44:17
>>627
宿題でなければその無駄に柔軟なファイルフォーマットをどうにかすべきだが。

BufferedReader in = new BufferedReader(new FileReader("aiueo"));
while(true){
 String line = in.readLine();
 if(line == null) break;
 // ここで読み込んだ行を解析...
}

区切りの仕様がコンマだけなのか、ダブルクォート中にコンマが現れたら
どうエスケープされるのか等等、フォーマットの仕様が明らかにされないと続きは何とも。

629 :デフォルトの名無しさん:05/02/27 23:55:54
>>628
ありがとうございます
順番はバラバラですが、区切りの使用はカンマだけです。

またダブルクォートの中にはハイフンやピリオドはありえますが
カンマはないです

630 :デフォルトの名無しさん:05/02/28 00:00:27
この場合は StreamTokenizer に改行またはコンマをセパレータとして取り出した方が良いか。
取り出したトークンを等号で分割し、前が Name と等しいなら、後ろの文字列のダブルクォートを
取り外す。

後は自力で

631 :デフォルトの名無しさん:05/02/28 00:07:50
>>630
ありがとうございます

632 :デフォルトの名無しさん:05/02/28 00:23:19
>>624
私もjava初心者なので、クラスライブラリ形式というのが良くわかりませんが、
以下のようなメソッドではだめですか?

private static int[] getPrimeNumbers(int max){
if (max<2 || max>65535){
throw new IllegalArgumentException("かんべんしてね");
}
int [] temp=new int[max/2+1];
int index=0;
temp[index++]=2;
for (int i=3;i<=max;i+=2){
sex:{
for (int j=0;j<index;j++){
if (i%temp[j]==0){
break sex;
}
}
temp[index++]=i;
}
}
int[] ret=new int[index];
System.arraycopy(temp,0,ret,0,index);
return ret;
}


633 :デフォルトの名無しさん:05/02/28 00:32:17
>>631
ためしに書いてみた。欲しかったら言ってね。使ってるJavaのVersionと。

それにしても、tiger(Java5.0) 便利。
今まで (1.4) だと、こんな風に書いていたのが、

  for (int i=0; i<list.length; i++)
    System.out.println(list[i]);

5.0 だと、これで済む。

  for (String str : list)
    System.out.println(str);

楽チン。

634 :デフォルトの名無しさん:05/02/28 00:36:31
でも、ループの中で 別な要素(list[i+1])ってのにアクセスできないのよね。
大半のケースでは便利だと思うけど。

635 :デフォルトの名無しさん:05/02/28 01:05:28
>>627
ほらよ。

import java.io.*;
import java.util.regex.*;
public class Example {
public static void main( String[] args) {
try {
String line;
Pattern pt = Pattern.compile( "Name=¥"(¥¥w+)¥"");
BufferedReader br = new BufferedReader( new FileReader( "test.txt"));
for( line = br.readLine(); line != null; line = br.readLine()) {
Matcher matcher = pt.matcher(line);
while( matcher.find()) {
String name = matcher.group(1);
if( name != null) {
System.out.println( name);
}
}
}
} catch( Exception e) {
e.printStackTrace();
System.exit(1);
}
}
}

636 :624:05/02/28 01:46:17
>>632さん
ありがとうございます。
実際にどうやったら実行できるのかもよくわかりません。。。
このプログラムでは、素数を計算して、
それをどうやって素因数分解の時にひっぱってくればいいのでしょうか。

637 :デフォルトの名無しさん:05/02/28 02:00:57
>>609
うちのプロジェクトにはEclipse使いもEmacs使いもvi使いもいるけど、何も問題になってないよ。
ちなみに漏れはEmacs使い。
Eclipseは便利そうだね。

638 :632:05/02/28 02:37:24
>>624
パッとしないロジックですみません。
mainでnumの素因数分解をするのであれば、mainメソッドの後ろに
>>632のコードを書いて、mainで

int[] primeNumbers=getPrimeNumbers(num);

とすれば、n以下の素数の一覧が戻ってくるはずなのですが、
そういう意味ではなくて ?

639 :デフォルトの名無しさん:05/02/28 03:09:39
>>457
いや、奴( >>362 )は20代の学生様を30代男だと思い込みたいだけみたいだが


640 :デフォルトの名無しさん:05/02/28 03:19:32
キーボードイベントを監視するんじゃなくて、その逆にキーボードイベントを
発生させるのはどうやるのでしょうか?
例えばAというキーが押されたら、Bというキーが押されたというイベントを発生
させるメソッドでは、テキストエディタを開いてAと入力すると、ABと書かれることになる
という事です。

641 :デフォルトの名無しさん:05/02/28 03:20:46
メソッドでは、って何か日本語がおかしいですが、気にしないで下さい

642 :デフォルトの名無しさん:05/02/28 06:06:38
public class testClass() {
private int foo = 0;
public void test(){
foo++;
}
}

というようなtestClassというクラスを作り、

public class jikkou() {
Map hm = new HashMap();
hm.put("a" , new testClass());
hm.put("b" , new testClass());
hm.put("c" , new testClass());
}

というようにMapに格納していった場合、それぞれのtestClassオブジェクトの
インスタンスメソッドを実行するにはどうしたらいいでしょうか?

643 :デフォルトの名無しさん:05/02/28 08:51:25
Mapから値の集合valuesを取得。
イテレーターでループしながら、一つずつ要素を取得して、
キャストしてメソッドを呼ぶ

644 :デフォルトの名無しさん:05/02/28 09:44:58
スクリーンのある領域と同じ大きさのBMP画像と比較して
領域とBMP画像が等しいか否かを実時間で返すメソッドを定義したいのですが、
どうすればいいでしょう?
また、Javaは遅いといわれて来ましたが、このような処理は実時間で
できるのでしょうか?(マシンスペックに依存するとは思いますが)

javax.imageio.ImageIOを用いて、こんな感じになるのでしょうか…?

File f = new File("foo.bmp");
BufferedImage bi = ImageIO.read(f);

boolean hoge(BufferedImage bi, int x, int y) { //処理 }

645 :デフォルトの名無しさん:05/02/28 10:41:51
毎回イメージ全体を比較する必要はない
左上の1ドットだけ比較して、違えばそこでやめる
同じなら次の1ドット比較して、違えばそこでやめる
以上繰り返す

646 :デフォルトの名無しさん:05/02/28 11:42:04
時間はサイズによるな
どうせこういうループはすぐにコンパイルされるから速度はCとかわらんよ
遅いと思ったら使い方が悪いはずだ

647 :デフォルトの名無しさん:05/02/28 11:53:18
DirectX並の高速描画は可能ですか?

648 :デフォルトの名無しさん:05/02/28 11:54:55
Java から OpenGL 使うライブラリもあるよ。

649 :デフォルトの名無しさん:05/02/28 13:13:38
ものにはよるがアクセラレーションがきくようになってるよ
1.4.1からね
WindowsならDirectDrawとかDirect3DとかGDIとか

5.0からOpenGLも使ってアクセラレーションできるようになってるけど
対応しているビデオチップがATIかnVIDIAだけなのでちと問題あり

650 :デフォルトの名無しさん:05/02/28 16:28:28
>>647
ハードの進歩はすさまじいから、後数年もすれば充分実用的な速度になる。

651 :デフォルトの名無しさん:05/02/28 16:30:37
JAVAって昔は遅すぎてウンコーみたいな扱いだったっけ

652 :デフォルトの名無しさん:05/02/28 17:23:55
>>650
そういわれつづけて早10年・・・

まあ、Java5は早くなったと思うけどね。

653 :デフォルトの名無しさん:05/02/28 18:29:51
アニメーションを表示するプログラムを作っておるのですが、少々質問があります。
例えば一秒間に一万回(極端ですが)の描写処理をするプログラムを作ったとしても、
表示しているディスプレイのリフレッシュレートが60だとしたら
結局画面上では一秒あたり60回しか更新はされず、残りの9940回はあんま意味無い、
という理解は合ってますか?

654 :デフォルトの名無しさん:05/02/28 18:45:38
>>645-646
すいません、コーディングの例か関連するサイトなどを教えて貰えませんでしょうか?
Java 画像 比較 とかでググっているのですが、やり方が見つからなくて…。

655 :デフォルトの名無しさん:05/02/28 19:05:42
>>651-652
JMFのMP3プラグインでアプレットから音楽mp3の再生してみたら
1GHzのCPUでも使いもんにならなかった。2GHz程度必要。orz

656 :デフォルトの名無しさん:05/02/28 19:08:36
>>653
っつーか普通リフレッシュレートのタイミングに合わせてバッファに描画するだろ?

657 :デフォルトの名無しさん:05/02/28 19:10:54
>>655
Mp3より負荷の高いOggVorbisが1GHzのマシンで負荷5%以下だぞ

658 :642:05/02/28 19:12:14
>>643
キャストという発想がありませんでした、
アドバイスのお陰で参考になるサンプルをみつけられました。
ありがとうございます。

659 :653:05/02/28 19:54:34
>>656
あ、そうなんですか。
何分この分野は不勉強なもので。いやいやお恥ずかしい。

660 :デフォルトの名無しさん:05/02/28 22:14:09
Math.random()メソッドって、どういうふうに
ランダムさ(?)を実現してるのですか?

661 :デフォルトの名無しさん:05/02/28 22:20:45
>>660
擬似乱数

662 :デフォルトの名無しさん:05/02/28 22:22:16
そりゃ単なるソフトが物理乱数行ってたら怖いがな

663 :デフォルトの名無しさん:05/02/28 22:34:40
>>660
APIリファレンスに線型合同法って書いてあったはずだが。
線型合同法を知らないんだったら、やっぱりAPIリファレンスに書いてあるけど、
クヌースの本でも買って読んでくれw

664 :デフォルトの名無しさん:05/02/28 22:45:26
質問です
日付を求めるCalenderクラスを見つけましたが、時間を求めるにはどうすればよいですか?
ちょうどPerlやPHPのtime関数のような感じのを探しています

665 :デフォルトの名無しさん:05/02/28 22:47:37
Calendarは日付も時刻も入ってるけど?

666 :デフォルトの名無しさん:05/02/28 22:54:42
swinで簡単なテキストエディタを作成したのですが、
メニューバー等のフォントを一括に設定する方法がわかりません。
全てのメニューのフォントをOsaka-UIの12ptに設定したいのですが、
MenuBarを司るクラスに以下の文を追加してもメニューバーの文字は変わってくれません。
JMenuBar.setFont(new java.awt.Font("Osaka-UI", java.awt.Font.PLAIN, 12));

メニューバーのアイテム一つ一つに
hoge.setFont(new java.awt.Font("Osaka-UI", java.awt.Font.PLAIN, 12));
と書いていくしか無いのでしょうか?
それとも一括でフォントを変更する方法があるのでしょうか?
よろしくお願いします。

667 :デフォルトの名無しさん:05/02/28 23:05:34
コンストラクタでフォントを設定する、JMenuとJxxxMenuItemのサブクラスを作って、
自分で使うメニュー類は全部そのサブクラスにしたらダメなの?

ていうかsetFont一行がそんなに面倒かなぁ。

668 :デフォルトの名無しさん:05/02/28 23:08:57
GUIエディタつかえ

669 :デフォルトの名無しさん:05/03/01 00:20:38
SDKとJDKって何が違うの?とりあえずJDKインストールしたが・・・
超初心者でスマソ

670 :デフォルトの名無しさん:05/03/01 00:27:14
Java 2 SDK = JDK

671 :デフォルトの名無しさん:05/03/01 00:28:39
VJ#.NETってJavaで書いたプログラムもコンパイルできるんですか?

672 :デフォルトの名無しさん:05/03/01 00:30:00
>>669
言い方が違う。

673 :デフォルトの名無しさん:05/03/01 00:30:40
>>670
どーもです

674 :デフォルトの名無しさん:05/03/01 00:51:17
家計簿ソフトをJAVAで作ろうと思っていますが、何からはじめていいか全くわかりません。環境は作りました。誰か教えてください。

675 :デフォルトの名無しさん:05/03/01 00:55:52
>>674
家計簿ソフトなら市販のからフリーからいくらでもあるが、どうしても自分で作りたいのなら
まず Access で作ってみ。Java 使うのは Access だけじゃどうしても出来ないことが出て
きたらで良い。それでもというならとりあえず…

・GUI アプリを作ってみる
・ファイルの入出力を覚える

あたりからやってみたらどうだろうか。

676 :デフォルトの名無しさん:05/03/01 01:19:34
>>661 >>662 >>663
ありがとうございます。
線形合同法という言葉初見でした。
調べてみます。

…線形計画法なら知ってますが、
全然関係ないですよね。…はい、すいません。

677 :デフォルトの名無しさん:05/03/01 01:31:09
>>676
とりあえず、java.util.Randomクラスの説明を読むといいよ。
計算式も書いてあるから。

678 :デフォルトの名無しさん:05/03/01 02:06:19
>>677
ありがとうございます!
発見しました。
が、む、難しい…
APIリファレンスってのは…
まともに読めるようになるまで
覚えることたくさんありそうですね。orz

読み進めるのに、いちいち言葉の意味をググってますが…
がんばります。

679 :デフォルトの名無しさん:05/03/01 03:06:29
乱数生成が具体的にどういう原理に基づいてるか
なんてのは、必ずしも理解する必要はないよ。
すくなくともAPIを身につけようとする段階で理解しても
しょうがない。

なんか難しい計算をするとなぜかばらついた数列が
できるのね、くらいにおもっとくだけでいい。


680 :デフォルトの名無しさん:05/03/01 03:16:17
初心者です。教えてください。

CellRendererPaneをつかって、中にセルに相当するコンポーネントを
持たないコンテナ(JTreeを縦書きにしたようなやつ)を作りました。
このコンテナ内で、あるセルを別なセルの上にドラッグドロップします。
ターゲットのセルを知るためにドロップ時のマウス位置が必要です。

デフォルトのTransferHandler.SwingDropTarget を置き換えて、コンテナに
自前のDroptTarget を設定して、そのdrop(DropTargetDropEvent)
メソッドのDropTargetDropEventgetLocation() でマウス位置を持ってきて
とりあえず動いているのですが、これで問題ないでしょうか。


681 :デフォルトの名無しさん:05/03/01 04:56:33
ものすごく基本的な質問をします

180という数字をファイルに保存して「B4 00 」となっている
データのファイルを読み込みます。
読み込む際にbyte型のバッファに流し込んでshort型で
値を取得したいのですが上手く行きません…

byte data[2];
short aaa;

// dataデータを読み込む data[0] = B4; data[1] = 0;
// aaaに180というshort型のデータを入れたい

宜しくお願いします…

682 :デフォルトの名無しさん:05/03/01 07:42:52
タイピングの速さに自信がある諸君
ここの247点という怪記録を越えることができるかな
ttp://freegame.sytes.net/~take/cgi-bin/typecreate/index.html

683 :デフォルトの名無しさん:05/03/01 08:23:34
>>681
aaa = 00B4;


684 :デフォルトの名無しさん:05/03/01 10:49:03
>>681
short aaa; byte [] data = new byte[2]; ...;
aaa = (short)(data[1] & 0xff) << 8 + (data[0] & 0xff);
バイナリはEndianの影響があるから取り扱い注意。unsigned byteが欲しい今日この頃。

685 :デフォルトの名無しさん:05/03/01 11:03:32
訂正 & より << の方が結合が強かったよ。
aaa = (short)(((data[0] & 0xff) << 8) + (data[1] & 0xff));


686 :デフォルトの名無しさん:05/03/01 11:14:45
何度も訂正すまそ。チラシの(略・・とかAA張られそうだ。
<< より + の方が結合が強いでした orz


687 :デフォルトの名無しさん:05/03/01 11:16:10
ちゃんとチラシの裏でソースレビューしてこい

688 :デフォルトの名無しさん:05/03/01 11:29:12
質問です。
SWTでGUIのアプリを作ろうとしています。
そこで、Textの入力欄が3つ(仮にtext1,text2,text3)あるんですが、
空欄があればメッセージダイアログで警告を出そうと思っています。
text1,text2,text3のそれぞれに警告のダイアログを出したいんですが、
どういう風に条件分岐すれば良いのでしょうか?
試しに書いてみたんですがうまく動かないみたいです・・・
空欄があればその都度、どのテキストボックスが空欄なのか、警告を出したいのですが・・・
根本的に間違ってます?
getText1 = text1.getText();
getText2 = text2.getText();
getText3 = text3.getText();
if(getText1 == "") {
Alert1 = new MessageBox(sShell,SWT.ICON_WARNING);
Alert1.setText("警告");
Alert1.setMessage("Text1が空欄です");
Alert1.open();
return;
}
else if (getText2 == "") {
Alert2 = new MessageBox(sShell,SWT.ICON_WARNING);
Alert2.setText("警告");
Alert2.setMessage("Text2が空欄です");
return;
}
else if (getText3 == "") {
Alert3 = new MessageBox(sShell,SWT.ICON_WARNING);
Alert3.setText("警告");
Alert3.setMessage("Text3が空欄です!");
return;
}
よろしくお願いします。

689 :デフォルトの名無しさん:05/03/01 11:34:38
Stringの比較はequals使えよ

690 :デフォルトの名無しさん:05/03/01 12:19:43
SWT固有ならSWTスレいけばいい

691 :デフォルトの名無しさん:05/03/01 12:28:11
>>666
Font font = new Font("Osaka-UI", java.awt.Font.PLAIN, 12);
UIManager.put("Menu.font", font);
UIManager.put("MenuItem.font", font);

692 :デフォルトの名無しさん:05/03/01 13:24:37
>>689さん
即レスどうもです。
直しましたけど動きは一緒みたいです…_| ̄|○

>>690さん
まだまだ初心者レベルの質問なのですが、ここではまずいですか?
向こうはチョッとレベルが高いみたいなんで…

693 :デフォルトの名無しさん:05/03/01 14:31:46
>>680
1.4以前は、TransferHandler#importData()内で、そのコンポーネント内での
ドロップ時のマウス座標を求める術がなかったので、別途にDropTargetを
実装しなければなりませんでしたが、1.5以降は、Component#getMousePosition()
というメソッドが追加されたので、TransferHandlerだけでもドロップ時の
マウス座標によるアクションの振り分けができるようになりました。
680のやり方でも問題ないですが(と言うか1.4以前は皆それをしてた)
1.5以降はTransferHandlerだけで十分になりました。もっと早くこうしろって
感じですね。

694 :デフォルトの名無しさん:05/03/01 16:50:38
別のクラスの変数を参照する場合
class A {
 B b=new B();
 int y=b.x;
}
class B {
 int x=0;
}
としているんですが、これを相互に行うにはどうすればいいんでしょうか?
class A {
 B b=new B();
 int z=1;
 int y=b.x;
}
class B {
 A a=new A();
 int x=0;
 int w=a.z;
}
とすると無限ループみたいになってしまうので何かいい対処法ありませんか?

695 :デフォルトの名無しさん:05/03/01 16:55:49
とりあえずクラスとインスタンスの区別を付けよう。


696 :デフォルトの名無しさん:05/03/01 17:04:22
クラスとインスタンスの区別も正直よく分かりません・・・
クラスの場合は
B b=new B();ではなくextendsで継承しろということでしょうか?
その場合クラス同士が継承し合っても問題ないのですか?

697 :デフォルトの名無しさん:05/03/01 17:35:47
>>696
相互に行おうとするなよ
設計から考え直せ

698 :デフォルトの名無しさん:05/03/01 18:22:40
質問です。
画像を表示させたいのですが、うまく表示されません。
そこで以下のようなことをしたら直線は表示され、
画像が表示されずに"faild"が返ってきたのですが、
なぜ表示されないのでしょうか?

g.drawLine(0, 15, 300, 15);

Image img = Toolkit.getDefaultToolkit().getImage("black.gif");
g.drawImage(img, 0, 0, Color.black. this);
boolean bool1= g.drawImage(img, 0, 0, Color.black, this);
if(bool1 == false) System.out.println("faild");

black.gifはカレントフォルダに置いてます。

699 :デフォルトの名無しさん:05/03/01 18:26:24
非同期メソッドつかってるのでは?
drawImageの最後の引数しらないでつかってるのかな

700 :デフォルトの名無しさん:05/03/01 18:47:20
はい

701 :デフォルトの名無しさん:05/03/01 18:55:06
とりあえずマニュアルくらい読もう

702 :U ◆CZtFsGiu0c :05/03/01 19:29:06
>>694
AとBの関係がよくわからんけどこれじゃ駄目?

class A {
 B b;
 int z=1;
 int y;
 A() {
  B b=new B(this);
  y=b.x;
 }
}
class B {
 A a;
 int x=0;
 int w;
 B(A a) {
  this.a=a;
 w=a.z;
}
}


703 :デフォルトの名無しさん:05/03/01 22:02:24
Appletでソフトを作成しているのですが、
jarsignerを利用して証明書をつけて実行させるようにしようと考えています。

2000,XPでのIE5.5,6.0での動作は確認できたのですが
NT4.0 SP5+IE5.5の環境ではApplet not initedになってしまいました。
ちなみにAppletは、Runtime#Execを行っています。

どなたかこのあたりの情報ご存知のかたいらっしゃいませんか(;´Д`)
使っているJDKは1.3.0です
よろしくおねがいします。

704 :680:05/03/01 22:16:55
>>693
> 680のやり方でも問題ないですが(と言うか1.4以前は皆それをしてた)

一般的なやり方なようで安心しました。まだ1.4を使用中なのでこのまま
行きます。ありがとうございました。

Component#getMousePosition() 見てきました。いいですね。
JFrame#add(Component) よりはまっとうな進化のような気がする。

705 :デフォルトの名無しさん:05/03/01 22:49:23
JScrollPaneにJPanelを貼り付けて、JPanelに画像を表示させているんですが
スクロールバーが表示されません。
どうすれば画像をスクロールさせられるでしょうか?

706 :デフォルトの名無しさん:05/03/01 22:52:02
JPanel を貼り付けるときに使っているメソッドは?

707 :デフォルトの名無しさん:05/03/01 23:21:07
>>706
setViewportViewです。
なんか、調べていたらどうもgetPreferredSizeをどうにかしないと駄目みたいだけど
まだJava始めたばかりなのでイマイチ理解しきれません
これを自前で処理すれば良いようだということは分かった気がしますが。

708 :デフォルトの名無しさん:05/03/01 23:33:02
>>707
JPanelをsetPreferredSizeで画像の大きさに合わせればでるんじゃない?
Viewportが画像より小さくなければスクロールバーは表示されないけど

709 :デフォルトの名無しさん:05/03/02 11:24:18
>>688
まとめて判別するために条件分岐するんじゃなくて、Textウィジット一つ一つに
VerifyListenerをつけて、そのなかでリアルタイムにチェックしたほうが
スマートじゃないかなあ。Eclipseのウィザードなんかだとそんな感じに
書いてあるよね。

710 :デフォルトの名無しさん:05/03/02 19:21:48
public void setAction(Action a) {
 Action oldValue = getAction();
 if (action==null || !action.equals(a)) {
  action = a;
  if (oldValue!=null) {
   removeActionListener(oldValue);
   oldValue.removePropertyChangeListener(actionPropertyChangeListener);

AbstractButtonクラスのsetActionというメソッドです.
removePropertyChangeListenerというメソッドはinterface Actionに予約さ
れていますが実際コードは書かれていません.この場合何が呼ばれているの
ですか?

711 :デフォルトの名無しさん:05/03/02 19:31:40
たいていは、Actionインターエイスのほとんどの
メソッドを実装したAbstractActionクラスのサブクラスを
setActionに渡すことになるだろうね。

Action quitAction = new AbstractAction("quit") { ... };
setAction(quitAction);

とか。


もちろん自分で
class MyAction implements Action {
//
public void removePropertyChangeListener(...) { ... }
}

と一から手間かけて実装したやつを渡してもいい。

どっちにせよ、渡すインスタンスのクラス階層がAction
にたどりつくまでのどこかで実装されているはず。


712 :デフォルトの名無しさん:05/03/02 19:32:10
2行目、サブクラスのインスタンスを、です。


713 :710:05/03/02 20:06:55
public synchronized void removePropertyChangeListener(PropertyChangeListener listener) {
if (changeSupport == null) {
return;
}
changeSupport.removePropertyChangeListener(listener);
}

失礼しました。AbstractActionクラスに↑がありました。ありがとうござ
います。

Propertyってお前は何々だっていうIDみたいなものなのでしょうか?

714 :デフォルトの名無しさん:05/03/02 22:15:39
Bean でググるよろし

715 :デフォルトの名無しさん:05/03/02 22:19:13
newの理解度が低いです。
↓こちらのソースはargs[]に入れたファイルの1行1列めの数字を読み取り
表示させるものです。
何故、String s; は new しなくていいんですか?
よろしくおねがいします。

import java.io.*;
import java.util.*;

public class temp {

public static void main(String[] args) throws IOException {

FileReader fr = new FileReader(args[0]);
BufferedReader br = new BufferedReader(fr);
String s ;
s = br.readLine() ;

double a =(Double.valueOf(s.substring(0,1))).doubleValue();

System.out.println(a);
}
}


716 :デフォルトの名無しさん:05/03/02 22:57:06
>>709さん
ありがとうございます。
1つ1つにVerifyListenerをつけるんですか、なるほど。
一度、試してみます。
で、お聞きしたいんですが、Eclipseのウィザードって何でしょうか?
Eclipse自体、便利なエディター程度にしか使えてない初心者なんで、
よろしければ教えてやってもらえませんか。

717 :デフォルトの名無しさん:05/03/02 23:09:45
>715
大雑把に言えば、FileReader#readLine()の中(の中の、かも)でnewされてるから。

718 :デフォルトの名無しさん:05/03/02 23:16:53
>>716
たとえばEclipseでJavaプロジェクトを新しく作成しようとして、
ファイル->新規->プロジェクトってたどった時に開く
ダイアログを特にウィザードという。Eclipseに限らず最近だと
UIの一般的な用語になってると思う。688の例でいえば、
なにか次の状態に移行しようとしたときに初めて
メッセージダイアログで警告を出すんじゃなくて、
VerifyListener使って次に移行できる状態かどうか
常にモニタしてステータスバーか何かに「Text1が
空白です。」って表示しておく。それでもなおユーザが
次に進もうとしたときにVerifyListenerが設定したフラグ
見てダイアログ出すってほうが段階を踏んでいて親切でしょ。
まあそもそも条件がそろわないと次に移行できないようにボタン等を
disableにしておくのも多いけど。ウィザードはこういうのがおおいね。

719 :デフォルトの名無しさん:05/03/02 23:21:00
>>715,717
String s; は宣言だから。

720 :デフォルトの名無しさん:05/03/02 23:27:47
>>652
アルゴリズムの処理はすでに数年前(J2SE1.3時代)から
Cとさほどかわりなくなってきているぞ。

3D関係は条件がうまく揃わないと速くならぬ。


721 :デフォルトの名無しさん:05/03/03 00:06:10
JDK 5.0 で消されてしまった 各種 compareTo(Object)メソッドなんですけど
ナゼいきなり消されてしまったかわかる方います? deprecatedになっていたのならともかく・・・
確かに挙動的には、Objectが呼び出し元と違うクラスのときClassCastExceptionを投げるだけなんで
呼び出し前に 明示的にキャストするほうがいいのはわかるんですけどいきなり消えたもので・・・

722 :デフォルトの名無しさん:05/03/03 00:18:38
Javaは一通りマスターしちゃった感があるなぁ
もちろんSOAPだのAspectJだのをやろうと思えば幅は広がるんだけど
コア部分のJavaについてもっと詳しく知りたいかなーって


コア部分のJavaについて詳しい参考書とかWebとか教えて
あとね、アサーションについて詳しいWebページもきぼん

723 :デフォルトの名無しさん:05/03/03 00:23:48
>>722
分かる。分かる。
Javaは、外の言語経験があれば結構早くマスターするよね。
俺もC++出身だけど、Javaはシンプルなのはいいけど正直ちょっと
物足りない気がする。

724 :642:05/03/03 00:28:18
>>715
俺も初心者だけど
StringはClassだけど、特例として宣言して代入するだけでも実体化するらしい。
だから String s = new String(br.readLine());でも同じ。
一度クラスを自分で作ってみたら理解が深まると思う。

…ということでよろしかったでしょうか先輩方。

725 :デフォルトの名無しさん:05/03/03 00:32:23
>>722
自己レス
1.4のドキュメントにアサーションについて詳しく書かれてるね
>>723
そうなんだよね
C++みたいな細かいところまでいじれるといいんだけどなぁ
C#2.0でもやろうかな

726 :デフォルトの名無しさん:05/03/03 00:34:15
>>724
全然よろしくない。

727 :デフォルトの名無しさん:05/03/03 00:41:54
>>722
動的にバイトコードをいじるようなことをやると面白いよ。
今ではBCELとかJavassistみたいなライブラリを使わないといけないけど
将来バイトコードをいじるAPIはコアに取り入れられるという話しだし。

728 :デフォルトの名無しさん:05/03/03 00:57:26
br.readline()の戻り値がStringなんだからStringとして宣言された変数に代入出来るのは当たり前じゃないか。
別に特別でもなんでもないだろ。

Rectangle rect;
rect=c.getBounds();
とか普通だろ。

Stringの特殊性を挙げるなら、
String str=゙文字列゙;
が通ることを挙げるべきじゃないか?

729 :デフォルトの名無しさん:05/03/03 01:00:14
>>727
おお、BCELってあったね
リフレクションいじってたときにちょっとかじったっけ
VMの仕様とかも合わせて勉強してみるかな

730 :デフォルトの名無しさん:05/03/03 01:06:15
>>722,723
5.0はもうぜんぶおっかけた?

あとJava2Dのアクセラレーションの効き具合とかは
1.4.0、1.4.1、1.4.2とおっかけていて大変だったけどたのしかったよ


731 :デフォルトの名無しさん:05/03/03 03:12:26
UDPで送ったパケットが届かなかった場合,
受け取る側で”来るはずなのに来ない,おかしいな?”と判断したらもう一度
”メッセージをくれ”と要求するようなプログラミングはよくやります?


732 :デフォルトの名無しさん:05/03/03 03:24:08
そういうのがやりたかったらTCPのがよくね?

733 :デフォルトの名無しさん:05/03/03 03:59:03
描画するオブジェクトを、一度Color(0,0,0,0)で塗りつぶしたレイアに描画
します。

その後実際に移すスクリーンにバックグラウンドを描画してからそのレイア
をコピーすると透過しません。この構想では駄目なんでしょうか?

734 :デフォルトの名無しさん:05/03/03 04:31:32
obj.eval("System.out.println("eval")");//evalと表示される

こんな風にJAVAで書きたいのだが何かいい方法ないかい??

735 :デフォルトの名無しさん:05/03/03 04:37:32
ないよ

736 :デフォルトの名無しさん:05/03/03 05:27:07
>>733
それだと Color(0, 0, 0) が不透明度 0 の分だけ書きこまれている、
つまり完全に透明な黒を書き込んでいるだけ。
g2.getComposite() のデフォルトは SrcOver なので、

g2.setComposite(AlphaComposite.Clear);
g2.fillRect(0, 0, width, height); // 色は何でも良し
g2.setColor(new Color(255, 255, 255, 127));
g2.setComposite(AlphaComposite.SrcOver);
g2.fill(shape);

こんな風にするとイケるはず。もっと詳しくは↓
http://www-106.ibm.com/developerworks/java/library/j-mer0918/

737 :736:05/03/03 05:31:39
あ、これでもいいのか。
g2.setBackground(new Color(0, 0, 0, 0));
g2.clearRect(0, 0, width, height);



738 :デフォルトの名無しさん:05/03/03 08:23:47
>>721
> JDK 5.0 で消されてしまった 各種 compareTo(Object)メソッドなんですけど
> ナゼいきなり消されてしまったかわかる方います? deprecatedになっていたのならともかく・・・
んなもんあるか? たとえばどんなクラス?
逆に追加されたcompareToなら見かけるが。Calendarクラスなど

考えられるものとしえは他のクラスに委譲されたとかだろ
一旦そのオブジェクトを他のオブジェクトに変換してからcompareToとするところかな

> 確かに挙動的には、Objectが呼び出し元と違うクラスのときClassCastExceptionを投げるだけなんで
> 呼び出し前に 明示的にキャストするほうがいいのはわかるんですけどいきなり消えたもので・・・


739 :デフォルトの名無しさん:05/03/03 08:24:57
>>734
どっかでみたことがあるな
Jakarta にそのてのAPIねえか?
リフレクション使うって手もあるぞ

740 :デフォルトの名無しさん:05/03/03 09:50:19
最初に
private String[] filelist;
を宣言して

あとから
filelist = list();
と値を代入するコードを書いてるのですが

ビルドすると

TEST.java:39: シンボルを解決できません。
シンボル: 変数 filelist
場所 : CC の クラス
filelist = list();
^
となります

list()は用意されたもので
public java.lang.String[] list()
となってます

何か手続きが足りないのでしょうか?


741 :デフォルトの名無しさん:05/03/03 09:54:54
>>740
ソース晒せ
宣言と使用してるのが別クラスとか言うオチじゃねーだろうな

742 :デフォルトの名無しさん:05/03/03 10:00:17
>>741
ありがとうございます。別クラスでした。
人のソースを改造してたので気が付きませんでした。

743 :デフォルトの名無しさん:05/03/03 10:04:38
アプレットでgifアニメ使いたいんだけどあらかじめgifアニメの画像を読み込んでおくことってできる?

jpgやアニメじゃないgifなんかは普通にあらかじめMediaTrackerに読み込んでおけるんだけど、gifアニメに関しては
どうもそれがはじめて使用されたときに読み込まれてる感があるのよね。

できないのか、それともやり方が悪いのか、助言頼む。

744 :デフォルトの名無しさん:05/03/03 10:31:18
newがnullを返すことって可能でしたっけ?

745 :デフォルトの名無しさん:05/03/03 10:38:16
>>744
そんなケースはありえません。
構築に失敗したら必ず何らかの例外が発生します。

746 :744:05/03/03 12:11:54
>>745
ありがとうございます。
newした直後にnullチェックしてるソースを見かけたもので、
ひょっとしてすごい裏技でもあるのかと。

747 :デフォルトの名無しさん:05/03/03 12:16:25
>>746
マルチスレッド環境で static 宣言したクラス変数を御莫迦な使い方してるのかもしれない。

748 :デフォルトの名無しさん:05/03/03 16:30:04
多次元配列のリフレクションの方法を教えてください。
public class Hoge
{
    private static int[][] hoge = new int[10][20];
}

public class Ref
{
}

クラスRefからクラスHogeのフィールドhogeにアクセスしたいのですが
どうすればいいのでしょうか?
配列サイズはRef側で直打ちでもいいのでRef側でhogehoge[][]な形で
アクセス出来るでしょうか?
教えてください

749 :デフォルトの名無しさん:05/03/03 16:38:19
アクセサメソッド作ればいいんじゃ?

750 :748:05/03/03 17:28:40
>>749
アクセサメソッドでアクセスすることも出来るのですが
最終的には外部に公開しないデータなので削除するメソッドになります。
いちいち公開のたびにアクセサメソッドを削除する
のはめんどうなので外部のクラスRef内でテスト出来るようにしたいのです。
Hogeクラス内にテスト用コードを書きたくないということです
リフレクション方法を教えてください。

751 :デフォルトの名無しさん:05/03/03 17:44:03
>>748
HogeとRefを同じpackageに置いて
Hoge.hogeをパッケージアクセスにするってのはダメ?

752 :デフォルトの名無しさん:05/03/03 17:56:55
>>750
つーか、テストなら、メソッドの引数と返値の整合性をテストするだけでいいだろ

>>751
それだったらアクセサメソッドをパッケージアクセスにしろよ

753 :デフォルトの名無しさん:05/03/03 17:57:42
>>748
JUnitとかで使うの?できるけど面倒くさいよ。

Field f = Hoge.class.getDeclaredField("hoge");
f.setAccessible(true);//privateフィールドへのアクセスを許す
int[][] hoge = (int[][])f.get(null);//staticなので引数nullでよし
System.out.println(hoge[1][1]);


754 :デフォルトの名無しさん:05/03/03 18:42:26
688です。
>>718さん
ありがとうございます。
なるほど、そういう事だったんですか。
ウィザードの事はは一応、判ってたんですが、
そういう風にチェックして行くと良いって事ですか。

>Eclipseのウィザードなんかだとそんな感じに
>書いてあるよね。
と、あったのでEclipse本体で出来る何かの事を仰っていたのかと(汗)
一回調べてみます。
まだまだ初心者なんですが頑張ります。

でも、やはりSWTはまだまだ情報も少ないので初心者向きでは無いんでしょうか・・・

755 :733:05/03/03 18:50:43
>>736
ありがとうございます。
そこいいサイトだね。

756 :デフォルトの名無しさん:05/03/03 19:22:21
現在Java Web Start + SWTでクライアントアプリを作成中です。
JWSもSWTも順調に動いているのですが一つ問題が・・・。

それはJWSの起動方法によってカレントパスがそれぞれ違うことです。
ブラウザから起動すればブラウザの実行ファイルがある場所がカレントパスになり、スタートメニューから起動するとC:\Program Files\Common Files\System\Mapi\1041になり、デスクトップのショートカットから起動するとデスクトップがカレントパスになります。

設定ファイルやログファイルをカレントパスに保存するようにしているのですが起動方法によって設定ファイルが分かれてしまいます。

Windowsだけならどこか専用のフォルダを絶対パスで作成すればよいですがLinuxだとそうは行きません。
カレントパスに左右されず、自由に設定ファイルなどが配置できる方法があればお願いします。


757 :デフォルトの名無しさん:05/03/03 19:42:59
プリファレンスつかうとか?

758 :デフォルトの名無しさん:05/03/03 19:51:15
>>756
システムプロパティuser.homeに適当なディレクトリ作って保存するようにしたら?
Unixなら/home/hogehogeあたり、
Windows2000かXPなら、C:\Documents and Settings\hogehogeあたりを
返してくれるはず。

759 :デフォルトの名無しさん:05/03/03 20:17:11
すみません、
VBのReDimみたいに配列を動的に作成したいのですが
どうしたらよいんでしょう?一次元ならList使えば出来るんだけど、、、

760 :748:05/03/03 20:21:18
>>751-753
ありがとうございます。

>>753
JUnitで使います。
シンプルなソースを貼ってもらったのでわかりやすく
全然面倒くさくありません。

751-752
製品コード内にテスト用のコードを入れたくなかったので
リフレクションが一番ベストな方法でした。
ですが、パッケージアクセスさせると思いつくほどの知識も
なかったので勉強になりました。

751-753サンクスですた

761 :デフォルトの名無しさん:05/03/03 21:01:09
>>759
2次元のやり方がわからないという意味?
Listの中に配列入れるとか。
ListのなかにList入れるとか。

配列でも普通に動的に作成できるだろ。
int[][] a = new int[3][2];
ただRedimのように、中身の入ったサイズを変更するときは、
新しく作り直して中身をコピーする必要あり。System#arrayCopy
(それをやってくれるのがArrayListだけど)

762 :デフォルトの名無しさん:05/03/03 21:06:27
>761
ありがとうarrayCopyを使ってコピーするしかないかぁ。。。
最終的にプリミティブ型の配列として持ちたいので
Arraylistとか使いたくなかったんですよ。。。

763 :デフォルトの名無しさん:05/03/03 21:23:39
>>762
最終的に?
途中はArrayListでもよいのであれば、
ArrayList使って最後にtoArrayで、配列にコピーできる。

764 :デフォルトの名無しさん:05/03/03 22:44:08
public class Hoge {
 public void run() {
  //処理
  result = doHoge();
  //処理
 }
}

で、doHogeの中身が2種類ある時、どのように実装すれば良いのでしょうか?
子クラスを2個作って各々でdoHogeをオーバーライドするのか、それとも
Hogeをインターフェースにして、doHogeをabstract宣言して
2種類のクラスで実装すればいいのでしょうか?
いまいちインターフェースとabstractをどう使って良いのか分からないのですが…

765 :デフォルトの名無しさん:05/03/03 22:53:39
>734
亀だがBeanShellとかGroovyのソース眺めてみては。

766 :デフォルトの名無しさん:05/03/03 22:57:34
>>764
デザインパターンの勉強をすればどうすればいいかわかる。
わからないときはとりあえずabstractに汁

767 :デフォルトの名無しさん:05/03/03 23:00:14
arrayCopyがArraysではなくSystemにある件について

768 :デフォルトの名無しさん:05/03/03 23:19:15
>>766
どもです

769 :デフォルトの名無しさん:05/03/03 23:29:40
以下のような感じでZipデータを解凍してるんですが、できるときと
出来ないときがあります。
出来ないときには「ZipException」が出るのですが、何が原因なのか
よくわかりません。
Zipデータはファイルではなく、Zip圧縮されたデータです。
-----------------
 java.util.zip.Inflater inflt = new java.util.zip.Inflater();
 InflaterInputStream in = new InflaterInputStream(sis,inflt,zlen);
 ByteArrayOutputStream inflatedOut = new ByteArrayOutputStream();
 int readLength;
 while(inflt.getTotalIn()<zlen){
  byte[] block = new byte[8192];
  if((readLength = in.read(block,0,1)) == -1){ break; }
  inflatedOut.write(block, 0, readLength);
 }
 inflatedOut.flush();
 byte[] datas = inflatedOut.toByteArray();
 inflt.reset();
 inflt.end();
-----------------
StandardWrapperValve[jsp]: サーブレット jsp のServlet.service()が例外を投げました
java.util.zip.ZipException: unknown compression method
 at java.util.zip.InflaterInputStream.read(InflaterInputStream.java:140)
 at org.apache.jsp.hogehoge_jsp._jspService(hogehoge.java:349)


770 :デフォルトの名無しさん:05/03/03 23:44:50
>>767
Arrays は JDK 1.2 から導入されたクラスなわけだが。

>>769
ZIP データの解凍で ZipFile や ZipInputStream ではなく Infrator を使用している理由は?

771 :769:05/03/04 00:04:32
>>770
レスありがとうございます。
Serverと通信していて、そのデータがZip圧縮されたものでZIPファイルそのものでは
無いため使えないと思ってたのですが

772 :デフォルトの名無しさん:05/03/04 00:17:39
バイト化けか送信側の手順が悪いか…。GZIPInputStream/GZIPOutputStream 使ったらどうなる?
ところで 8192 バイトのバッファを用意しておきながら in.read() で 1 バイトづつしか
読み込んでないよ、それ。それにバッファはループの外で確保しなきゃ一回回るたびに
無駄なバッファが使い捨てられる。

773 :デフォルトの名無しさん:05/03/04 00:34:29
  public static final int BLOCK_SIZE = 8192;

  ……

  byte[] block = new byte[BLOCK_SIZE];
  while ((readSize = in.read(block, 0, block.length)) != -1 ){
    inflatedOut.write(block, 0, readSize);
  }

慣用句だとおもう。

774 :767:05/03/04 00:37:50
>>770
だからさ、システムとは関係無い配列コピーが
なんでSystemに入れられたのか不思議なワケよ。
初期にはSystemを単なるユーティリティークラスとして
使うつもりだったのかもしらんが、Java2になってあちこち
リファクタリングされてるのに、なんでこいつをdeprecatedにして
Arraysに移動しなかったのか? って謎なのよ。

たぶんマンドクセーからだと思うんだが。

775 :769:05/03/04 00:39:05
>>772
サーバの方はコンパイル済みのものしかないので
ソースの変更はできないです

クライアントだけGZIPInputStreamを使ったらこんなのがでました。
バッファのところはデバッグ中なんで変な書き方になってます
-------
StandardWrapperValve[jsp]: サーブレット jsp のServlet.service()が例外を投げました
java.io.IOException: Not in GZIP format
at java.util.zip.GZIPInputStream.readHeader(GZIPInputStream.java:132)
at java.util.zip.GZIPInputStream.<init>(GZIPInputStream.java:58)
at java.util.zip.GZIPInputStream.<init>(GZIPInputStream.java:68)

776 :デフォルトの名無しさん:05/03/04 00:50:23
>>774
んー、意味的にメモリブロックのコピーだから結構低レベルな機能として System で良いと思うけど。
まぁ主観的あるべき論ネタなので深くは主張しないけどね。

実は俺も byte は 1 バイト符号なしデータであり、「数値」として使用する 1 バイト符号付整数は別で
用意すべきだったろ、とか似たような事思ってるけどね。short⇔char のように tiny(仮)⇔byte というような。

777 :デフォルトの名無しさん:05/03/04 00:53:08
>>772
バイト化けってなんですか?


778 :デフォルトの名無しさん:05/03/04 00:55:15
>>774
nativeで実装されているからでない?

779 :デフォルトの名無しさん:05/03/04 00:57:51
ファイルを読み込んで、その中に不正な文字が含まれているかを
調べるプログラムを作っています。

SHIFT_JISで、ファイルを読み込んで、1文字取得まではできました。
Character chr = new Character(line.charAt(i));

そこで質問なのですが、
その文字のコードを表示するにはどうすればいいですか?
その文字が特定の文字コード(たとえば半角かな)かどうかを
調べるには、どうすればいいですか?

いろいろ調べたのですが、Characterの中にどのように文字が収められているか
わからず、先に進みません。
よろしくお願いします。



780 :デフォルトの名無しさん:05/03/04 01:07:29
>>778
JNI で実装されていても引数が変わらなければクラス間の移動やメソッド名の変更は
所詮ライブラリレベルの変更なのでたいした変更負荷じゃないと思うけど。リフレクションとかで
何か問題あったっけ?

>>779
文字コードじゃなくて文字ブロックだな。
Character.UnicodeBlock block = Character.UnicodeBlock.of(line.charAt(i));
System.out.println(block.toString());
if(block.equals(Character.UnicodeBlock.BASIC_LATIN)){
  ...
}

781 :デフォルトの名無しさん:05/03/04 01:20:28
>>780
なるほど、文字コードがどのブロックに該当するかを調べるのですね。
勉強になりました。ありがとうございました。

ただ、今回自分が判定したいのは
JIS第一水準かどうか
JIS第二水準かどうか
半角カナかどうか
なので、この方法だと上記のブロックが用意されていないので
無理みたいです。(新しいブロックを作ればいいのかな?)
(質問があいまいで申し訳ありませんでした。)

そのあたり、ご存知であれば教えてもらえないでしょうか?

782 :デフォルトの名無しさん:05/03/04 01:27:59
>>781
JIS, Shift_JIS, EUC なら JIS 第一水準と第二水準が明確に分かれているけど、Unicode は
中国語と漢字が共用されているため、JIS とはかけ離れてバラバラに割り振られてる。
どうしてもやらなきゃならないなら Unicode のままやるのは非現実的で、一回 Shift_JIS 等の
バイト配列に変換して C/C++ でやるようにしなければならないね。

byte[] binary = line.getBytes("MS932");

783 :デフォルトの名無しさん:05/03/04 01:34:01
>>781
getBytesですか。なるほど。自分が知りたかったのはそれのようです。
byteに変換できれば、あとは、他の言語みたいに比較できますもんね。
ありがとうございました。

784 :デフォルトの名無しさん:05/03/04 01:49:14
xerces で以下のように XML 出力を行うプログラムを作っています。

---------------------------------------------------------
Document doc ;
OutputStream os = HttpServletResponse.getOutputStream();

OutputFormat format = new OutputFormat(doc);
format.setIndenting(true);

Writer writer = new OutputStreamWriter(out, "Shift_JIS");
XMLSerializer serial = new XMLSerializer(writer, format);

serial.asDOMSerializer();
serial.serialize(doc);
---------------------------------------------------------

上記のコードだと、例えば
<Test>1234
5</Test>
のようなテキストノード内に改行が入っていると
<Test>1234 5</Test>
と改行がスペースに置き換わってしまうのですが、
この現象の回避策はあるのでしょうか?

宜しくお願いします。

785 :デフォルトの名無しさん:05/03/04 02:24:59
>>780
移動が簡単だとか難しいとかでなく、
nativeで実装されているからこそ、Systemでいいんじゃないかと。
currentTimeMillis, setIn, SetOutはSystemにあるのは気にならないの?
どんなユーティリティメソッドなら、Systemにあるべきだと思うの?

786 :デフォルトの名無しさん:05/03/04 02:36:31
>>785
いや arraycopy() が System にあるのは変って主張してるのは俺じゃないんだが。
しかし native だからってそんな実装ベタベタな理由で設計の話するのはおかしくない?

787 :781:05/03/04 04:03:46
byteの比較で行き詰まってしまいました。
たとえば、「亜」が0x889E〜0x9872の範囲に入っているかを調べたいのですが
うまくできません。

byte[] binary = "亜".getBytes("Shift_JIS");
とした場合に、
binary[0] = -120
binary[1] = -97
となってしまいます。

これを0x889Eと比較する場合はどうすればいいのでしょう?
if (0x889E <= ? && ? <= 0x9872)
見たいな感じで比較したいと思ったのですが、
binarry[]を?に変換するところでつまずいています。

[0]が上位バイトで[1]が下位バイトだから、
binary[0]*256 + binary[1]でいいかと思ったのですが、
そうではないようですし・・・。(そもそも-120とかだし)
よい方法をお願いします。



788 :デフォルトの名無しさん:05/03/04 04:33:12
コンソールでの開発はそこそこやれるようになってきたので、Microsoft VisualStudio.net(J#)で
フォームアプリケーションの製作に挑戦してみようかと思ったのですが、製作の過程がだいぶ違います。
使い方を調べようにもヘルプは意味不明ですし取説は薄っぺらいのしかついてきてません。

どこかに「Javaの使い方」というより「J#の使い方」をまとめたようなページはないでしょうか。

789 :781:05/03/04 04:38:25
あーそっか、自己解決しました。
byteが、-127〜126だから、0以下なら+256すればいいんですね。
(((argByte[0] < 0) ? (argByte[0] + 256) : argByte[0]) * 256) + ((argByte[1] < 0) ? (argByte[1] + 256) : argByte[1])
こんな感じでうまくいきました。
ありがとうございました。

790 :769:05/03/04 06:11:16
>>769-775
ですけど、どなたか分かる人いませんかー

791 :デフォルトの名無しさん:05/03/04 11:18:23
>>786
System.arraycopy()
は、まだJITすら無かったJDK0.9とかの頃に、JVM上で配列コピーするとあまりに遅いので、
ネイティブ側でmemcpyとか使って素早く配列コピーするメソッドを用意したって理解してたけど。

そもそも設計と性能のトレードオフで性能を取ったものだから、
> native だからってそんな実装ベタベタな理由で設計の話するのはおかしくない?
こういうことも含めて性能を取って現在の形になってるんだと思うよ。

792 :デフォルトの名無しさん:05/03/04 11:30:13
>>789
byte[] binary = "亜".getBytes("Shift_JIS");
int ch = ((binary[0] & 0xff) << 8) | (binary[0] & 0xff);
if (0x889E <= ch && ch <= 0x9872) {
}

>>791
JITだろうが普通にコピーしたら遅いだろ。
ループでぐるぐるまわしてたら毎回範囲チェックせにゃならん。
中で何やってるかまで見て最適化なんて厳しいだろうし。

793 :デフォルトの名無しさん:05/03/04 12:00:26
>>792
そー思うなら java.lang.System#arraycopy とループでコピーする場合の速度比較でもやってみると良いよ。
マイクロベンチの結果はあんましあてにならんとは言うけどね。

794 :デフォルトの名無しさん:05/03/04 13:34:30
>>790

>>772の言うように送信データがおかしいというのが素直な結論だが。
zipフォーマットじゃないテキトーなデータを投げてみたら
(わざとエラーを出させてみたら)どうなるのかな。
同じエラーが出る?

あと、>>769はデバッグ中コードでバッファが変な書き方
だそうですが、デバッグ中じゃないコードはどうなってるの?


795 :デフォルトの名無しさん:05/03/04 13:40:24
>>792
int ch = ((binary[0] & 0xff) << 8) | (binary[0] & 0xff);
最後のbinary[0]ってbinary[1]じゃない?

796 :756:05/03/04 13:51:12
>>757,758
user.homeを使うことで解決できました。ありがとうございました。
ちなみにlog4jでログ出力していたのですがその出力先も
<param name="File" value="${user.home}/logfile.log" />
とすることでホームディレクトリに出力することができました。

797 :デフォルトの名無しさん:05/03/04 14:41:19
>>790
そういや通信相手はサーブレットだったな。
Zip データじゃなくて 500 Internal Server Error の HTML なんかが
落ちてきてるんじゃないのか? レスポンスコード 200 は確認してる?

798 :デフォルトの名無しさん:05/03/04 15:57:06
swingコンポーネント上に図形を描いているのですが、
起動してすぐの描画がやたらと重くて困っています。
ウィンドウを手動で一度最小化して戻したり、
Javaを起動したDOS窓を最小化するとなぜか軽くなります。
あることをすれば軽くなるのでマシンスペックの問題ではないと思うのですが
このような経験がある、解決したという方、先人の知恵をお貸しくださいorz

あと円の描画(Ellipse2D)が重いようで、
円を描くときCPU稼働率が100%かそれに近い値になってしまいます。

799 :デフォルトの名無しさん:05/03/04 16:27:37
>>784
やってみたけど、現象が確認できない。
シリアライザのコンストラクタに、Writer を渡すのじゃなくて、
単なる OutputStream を渡したらどお?エンコーディングは、format に指定。
こんな感じで。

// 私はファイルに書いて試したけど、HttpServletResponse.getOutputStream(); でもおなじ事。
OutputStream os = new FileOutputStream(fileName);

OutputFormat format = new OutputFormat(doc);
format.setIndenting(true);
format.setEncoding("Shift_JIS");
XMLSerializer serial = new XMLSerializer(os, format);
serial.asDOMSerializer();
serial.serialize(doc);


800 :デフォルトの名無しさん:05/03/04 16:40:30
ImageObserverがどういったものかよくわかりません。
getWidth(ImageObserver observer)でイメージの横幅を返してくれるらしいのですが
どういったものを代入すればいいのかわかりません。

ImageObserver obs =
になんて代入すればいいのでしょうか?
よろしくお願いします。


801 :デフォルトの名無しさん:05/03/04 17:00:06
>>800
ImageObserver を implement してるのは Applet や Panel やらの Component サブクラス。
まぁ普通はその Image を描画しようとしてるコンポーネントだが、null でも良かったような。

元々「ネットワークで重いデータ」として、画像は非同期ロードされる設計になっている。
ImageObserver は対象画像のロード完了やロード結果をコールバックするものだが、
あまり意図したようにアプリケーションで使用されていないのが現状。

802 :デフォルトの名無しさん:05/03/04 17:02:57
>>801
そうだね。
java.awt.MediaTracker で読み込んだ事を確認してから処理しちゃう事も多いし。

803 :デフォルトの名無しさん:05/03/04 17:20:51
>>801-802
ありがとうございます。
自分は現在Appeletで作成していて、指定した画像の大きさをint型変数に代入したかったので
調べたところImageObserverが出てきて困ってました。
未だにImageObserverの事がよくわからないのですが、
これを使用せずに指定した画像のサイズを取得する場合どのようにすればいのでしょうか?


804 :デフォルトの名無しさん:05/03/04 18:02:43
>>803
Applet#getImage() とかは画像の読み込みを開始するだけで、
画像の読み込みが完了しなくても呼び出し元に返ってくる可能性がある。
画像の読み込みが完了していない場合は、getImage() とかで返された
Image は自分自身の高さも横幅もわからない状態にあるわけね。

そんなときに、ImageObserver を使うんだよね。
getWidth() で -1(前述のような画像の読み込みが完了していないので
Image が自分自身の横幅を知らない状態の場合は -1 を返す) を返されても
ImageObserver を渡しておくと、画像の読み込みが完了した時点で、横幅が通知されるってわけね。
java.awt.MediaTracker に addImage() した後、waitForAll() とかすれば読み込みが完了しているはず。

なんでこんな面倒くさい仕掛けが必要かというと、
ナローバンドが主流だった数年前のインターネット環境だと画像のダウンロードには時間がかかったから。

805 :デフォルトの名無しさん:05/03/04 18:09:47
>>803
簡単に言うと、getWidth(null) すれば(画像の読み込みが完了してれば)横幅が返ってくるはず。

806 :769:05/03/04 18:59:01
レスありがとうございます!
>>794
正しいデータかどうかはバイナリデータ確認するしかないですかね・・・
>>797
200が返ってきてるのは確認してますー


807 :デフォルトの名無しさん:05/03/04 19:03:43
>>798
Ellipse2Dってアクセラレーションきいてる描画だったっけ?
VRAM容量とか画面モードとかJREのバージョンとかいろいろと原因あるし
そもそも描画はダブルバッファつかってるのか(1.4以上はオーナーがダブルバッファデフォでしてくれたような)
不揮発性メモリつかってるかとか
稼動環境やコードの断片かいてもらわんと


808 :デフォルトの名無しさん:05/03/04 19:40:02
>>806
そもそも、正しく動く事もあれば間違って動く事もあるとなると
アルゴリズムが間違ってるとは思えないので
単純に通信失敗じゃないかと思うのだが

>正しいデータかどうかはバイナリデータ確認するしかないですかね・・・
それが一番確実だが・・・
サイズ見れねーか

809 :デフォルトの名無しさん:05/03/04 20:11:44
class A{}

class main
{
  A a = new A();
  pointer p;

  main()
  {
    p = a;
    a = p;
  }
}
のような事がやりたいのですが
Javaに参照を格納できるポインタ型みたいなものはないのでしょうか?


810 :デフォルトの名無しさん:05/03/04 20:14:25
参照というのはC++でいう参照のことか、そうでないか?
ポインタというのはJavaでいう参照のことか、そうでないか?

このへんをどう理解していますか?


811 :デフォルトの名無しさん:05/03/04 20:18:18
>>809
いまいちナニをしたいか分からんが・・・

A a = new A();
と書いたら、a は参照型ですよ。
Cで言うポインタと思ってもらっても結構ですが、
Javaではポインタ「演算」が出来ない事に注意してください。

812 :デフォルトの名無しさん:05/03/04 20:22:28
>>809に合わせた書き方すると、
class A{}
class main {
A a = new A();
A b;
main{
b = a;
a = b;
}
}
でいいんじゃね?多分こういうことがやりたいのだと思うが
意味あるかは別として

813 :デフォルトの名無しさん:05/03/04 20:33:46
すみません、Javaそのものがまだ全然わかってなくて
クラスを一時的に保管したいのです

class Data_a
{
  String name, adr;
}

class main{
  Data data = new Data();
  pointer[] p = new pointer[10];
  main{
    data.name='Yamada';
    data.adr='tokyo';
    p[0] = data; //保管
    ...
    data = p[0]; //取り出し
  }
}

このpointerに匹敵するものがあるのかなと
ただ、格納するものがdataだけと限らず他のクラスになる場合もあるので
汎用性の持ったものが作れればと思ったのです

814 :デフォルトの名無しさん:05/03/04 20:40:32
ってー事は、dataしかない、と言う場合はOKなのね?

じゃあ、
pointer[] p = new pointer[10];

Object[] p = new Object[10];
にする
もしくは、dataにくる可能性のあるクラスの共通スーパークラス
を作って継承させ、
DataSuper[] p = new DataSuper[10];
にする

Objectは全てのクラスのスーパークラスです。



815 :769:05/03/04 20:44:14
>>808
レスありがとうございます。

>>正しく動く事もあれば間違って動く事もあるとなると
なんですが、ランダムじゃなくて、1回目は成功、2回目以降は失敗となるので
処理方法がおかしいのかと思ったりもしてますが、データ自体は同じ種類の
ものがきてるはずなのでどこが悪いのか悩んでるとこです('A`)

>>サイズ見れねーか
サイズというのは圧縮されたデータのサイズ?
最小が80ぐらいで大きいものだと36000ぐらいですが
そこから何かわかりますか?

816 :デフォルトの名無しさん:05/03/04 20:49:04
ありがとうございます。Objectで無事動きました。

817 :デフォルトの名無しさん:05/03/04 20:50:55
>サイズというのは圧縮されたデータのサイズ?
>最小が80ぐらいで大きいものだと36000ぐらいですが
>そこから何かわかりますか?

いや、俺が言いたかったのは単純に送り側と受け側の
データサイズを比べてみたらどうかな?ってこと。
異なってたら通信失敗、同じなら通信は成功、って事になるから。

なんだけど・・・

必ず
>ランダムじゃなくて、1回目は成功、2回目以降は失敗となる
ならアルゴリズムですね。
見当違いでスマソ...orz


818 :769:05/03/04 20:57:46
>>817
>データサイズを比べてみたらどうかな?ってこと。
そういうことですか、鈍くて申し訳ないです。
>見当違いでスマソ...orz
いえいえ、結構つまらないことを勘違いしてたりするので
いろいろ言っていただけると助かります。

819 :デフォルトの名無しさん:05/03/04 21:07:02
あるフォルダを監視して
ファイルが新規に追加されたり削除されたといったことを
検出するapiはありますか?

820 :デフォルトの名無しさん:05/03/04 21:08:05
>>818
ストリームがうまく繋がってないとか


821 :769:05/03/04 21:09:49
>>820
それを確認できる方法ってありますでしょうか?
質問ばかりで申し訳ないです

822 :デフォルトの名無しさん:05/03/04 21:11:36
JDK5.0日本語が落とせん

823 :デフォルトの名無しさん:05/03/04 21:43:43
>>821
それこそ2回目のデータのサイズを比較してみたら?
サイズ不一致>データが間違い
サイズ一致>アルゴリズムが間違い
ってことになっから

824 :769:05/03/04 21:55:59
>>823
比べて見ましたがサイズは一緒でした
アルゴリズムか・・・2回目以降は違うアルゴリズムなのかなぁ('A`)

825 :655:05/03/04 21:59:43
>>824
アルゴリか。もうちっと>>769を見てみる。

826 :訂正:05/03/04 22:01:45
655は間違いす。別スレの方ですたorz

827 :791:05/03/04 23:32:20
>>792
俺はJITになれば普通にコピーしても早くなるとは言ってないけどw
「JITすら無かった頃」と言ったのは、まだJavaが最適化のための努力をしていなかった頃という意味で言っただけだ。

> ループでぐるぐるまわしてたら毎回範囲チェックせにゃならん。
> 中で何やってるかまで見て最適化なんて厳しいだろうし。
この部分は意味不明。何がどう厳しいの?
静的解析によって配列の範囲チェックを省く最適化をするのが現実的な時間で出来ないってこと?

828 :デフォルトの名無しさん:05/03/04 23:42:39
Listのようにクラスを配列として扱って要素を増減させたいのですが
クラスの中でどのような方法を使ってるのでしょうか?

検索してもなかなか見つからず
何をキーワードにすればいいのかもちょっと思いつきません

サンプルソースのあるサイトとかあればURLだけでもお願いします

829 :769:05/03/04 23:50:49
>>825
お手数おかけしてます。
データをダンプしてみてみたところ、どうやら
送られてるデータがおかしいっぽいみたいです。
そちらのほうを調べてみようと思います。

相談にのっていただいてありがとうございました。
結果がでたらまた報告にきますー<m(_)m>

830 :デフォルトの名無しさん:05/03/04 23:56:26
>828
ベタな方法としては、内部にArrayListを持って、基本的な仕事は全部丸投げ。
Iteratorくらいは専用のを仕立てて……かな。
サンプルソース? えーとえーと……

達人の答えを待つorz

831 :デフォルトの名無しさん:05/03/05 00:06:25
>>828
何で自前で作りたいの?
ArrayListの実装を見たいのなら、JDK入れた時に一緒についてくるsrc.zipを展開すれば
ArrayList.javaが有るよ。

832 :デフォルトの名無しさん:05/03/05 00:07:16
Listの実装クラスのソースを見てみればいい。
ArrayListとLinkedListでやってることは違うが、
データ構造の基本だ。


833 :デフォルトの名無しさん:05/03/05 01:19:28
初心者の質問で申し訳ないんですが
try〜catchの例外処理とthrowsの例外処理は何が違うのでしょう。
いまいち分かりません。


834 :デフォルトの名無しさん:05/03/05 01:22:52
try-catchは例外処理をしていますが
throwsは例外処理をしていません。

835 :デフォルトの名無しさん:05/03/05 01:34:07
今、ヒープの圧迫で困ってます。
以下のような例です。
--------------------------------------------------------------
1:public class A{
2: public static void moto(String data){
3: String mes ="1つめ" + data;
4: B.saki(mes);
5: }
6:}
7:
8:public class B{
9: public static void saki(String message){
10: String writeData ="2つめ" + message;
11: write(writeData); ←ログへの書出しメソッド
12: }
13:}
----------------------------------------------------------------
Aのmotoメソッドに渡される文字列が膨大な場合、
Aのmotoメソッド、Bのsakiメソッドでヘッダをつけた文字列を
さらに作っているので2倍、3倍の値でヒープを食いつぶしているようです。
このロジックに複数アクセスが起きるとGC対象が足りずOutOfMemoryが
発生してしまいます。
そこで質問をさせていただきたいのですが

1.10,11行目にmessage=null;を入れることでwriteメソッドの結果を待たずに
 GC対象とすることができるでしょうか?
2.ヘッダをつけるロジックをStringBuffer(文字列数)に置き換えることで
 中間データの発生を抑制することができるでしょうか?

どうぞよろしくお願いします。

836 :デフォルトの名無しさん:05/03/05 01:47:48
>835
2つめの質問はyes
StringBuffer使え。
1つめの質問はno。
messageは、10行目が終わった時点でnullにせずとも既にunreachableなので、GC対象になる。

837 :デフォルトの名無しさん:05/03/05 01:53:23
>>836
うそつけ、message はスタックから reachable だ。
GC はスタックに乗ってる参照が「その後使われないか」までは判断しない。
ところでスタックって知ってるよな?

838 :デフォルトの名無しさん:05/03/05 01:57:38
ログ吐き杉。

839 :デフォルトの名無しさん:05/03/05 02:13:49
新人研修のJava講座を設計する教育部署のものです(現場の人間ではない)。
俺はJavaの文法だけではなく、オブジェクト指向の基本概念そのもの(クラス、オブジェクト、インスタンス、
継承、カプセル化、ポリモーフィズム)を例えで分かりやーすく教え、頭の中でイメージできるようにしつつ、
Javaでのオブジェクト生成・利用、継承、インターフェイス、アクセス修飾子等を教えたほうが絶対に効率的
で理解しやすいと思う。
しかし、ある現場の人は「新人にオブジェクト指向は詰め込みすぎ。文法だけでよい。」という。
多少時間はとっても、クラスやオブジェクト等がイメージできるようにしたほうが最終的には近道だと思うけど、
どうでしょ?


840 :デフォルトの名無しさん:05/03/05 02:27:31
多少時間はとっても、と言うのだったら手続き型処理から初めてモジュール化、
ブラックボックス化 (クラス化) の必要性に続いてオブジェクト指向の話に入った
方が良い。

ただ新人研修程度だったら、その時点で内容はよく分からなくても、予めいくつかの
「キーワード」を与えておいてやると後々の仕事で無知アレルギー出さなくてすむ。
つまり「あーそれどこかで聞いたなぁ」というだけでその後のアクションがかなり違うでしょう。

841 :デフォルトの名無しさん:05/03/05 02:34:08
session.setAttribute("hoge",2);

上記のものがコンパイルにとおる理由がわかる人教えてください
setAttributeの二つ目の引数はobjectでなくてもいいのでしょうか?

842 :836:05/03/05 02:36:00
>>837
スマソ。そう言われたらそうだな。
理論的にはコンパイラが10行目と11行目の間にmessage=nullするコードを挿入する
(or解放する)最適化は可能だと思うけど、どっちにせよGCではないな。
もうGC書いて遊んでたのが10年位前なので、ボケた事を書いてしまった。恥ずかしい。

843 :769:05/03/05 02:51:36
zipデータの質問をしてたものですが、
ようやく解決しました。
サーバのデータがちょっと特殊で、2回目以降は
先頭2バイト分のデータが同じ場合は
その2バイトが省略されて来るようになってたようです。

質問に答えてくださった方、どうもありがとうございました!

844 :デフォルトの名無しさん:05/03/05 02:52:30
>>842
いくらB.sakiメソッド内でmessage=nullとしようが
A.motoメソッドを抜けるまでreachableなのはわかってるよな?

845 :デフォルトの名無しさん:05/03/05 02:53:41
>>841
J2EE 1.4 でも HttpSession にそのような API はないが。
session って分け分からんフレームワークで再発明された車輪のようなセッション類似機能じゃないよな?

>>842
ノシ

846 :デフォルトの名無しさん:05/03/05 02:56:40
>>844
お、842 ではないが俺もそれは見逃してたw
精進せねば…

>>843


847 :デフォルトの名無しさん:05/03/05 03:51:31
>>841,845
単にAutoboxingされてるのではないのかね?

848 :デフォルトの名無しさん:05/03/05 04:04:34
public class Main {
  public static void foo(Object o) {
    System.out.println(o.getClass().getName());
  }
  public static void main(String[] args) {
    foo((byte)3);
    foo((short)3);
    foo(3);
    foo(3L);
    foo(3f);
    foo(3d);
    foo('\u0033');
    foo(true);
  }
}
確かに、 Java5 ならエラー無しで動く。怖ぁー。以下実行結果。
java.lang.Byte
java.lang.Short
java.lang.Integer
java.lang.Long
java.lang.Float
java.lang.Double
java.lang.Character
java.lang.Boolean


849 :デフォルトの名無しさん:05/03/05 04:12:51
へぇ、Java5 対応の J2EE 製品ってもう出てるのかね。

850 :デフォルトの名無しさん:05/03/05 05:22:51
>>849
APIで削除されたやつとか使ってなければ普通に動くはずよ。
JDBCドライバとかが問題起こすかもしれんがな。

851 :デフォルトの名無しさん:05/03/05 10:53:34
初歩的な質問なんですが、あるデーターをセッションに登録して5分立ったら
そのセッションを破棄するようタイムアウトを設定しているとします。

ユーザーがなにもしないまま(画面遷移など)5分たったらもちろん破棄される
と思いますが、画面遷移などのアクションをしていても5分たったら
セッションは破棄されてしまうのでしょうか?
教えてエライ人


852 :デフォルトの名無しさん:05/03/05 12:11:54
>>851
セッションのタイムアウトに使われる時間は最後のリクエストからの経過時間のはず

853 :デフォルトの名無しさん:05/03/05 12:37:22
Javaってブラウザ上でプレイするゲームしかつくれないんですか?
それしか見たこと無いので気になってました。

854 :853:05/03/05 12:55:04
jarというファイルを発見しました。普通のプレイもできるってことですね。

855 :デフォルトの名無しさん:05/03/05 14:08:42
>>849
Tomcat5.5 も知らない初心者ですか?

856 :デフォルトの名無しさん:05/03/05 14:13:53
>>855
J2EE*製品*
貧乏学生?

857 :デフォルトの名無しさん:05/03/05 14:41:57
別に有料じゃなくてもプログラムは*製品*と呼べると思うが…

858 :デフォルトの名無しさん:05/03/05 14:48:37
product ね。

859 :デフォルトの名無しさん:05/03/05 14:58:09
学生必死だな

860 :デフォルトの名無しさん:05/03/05 14:58:39
商品と製品の区別が出来ないひとのいるスレはここですか?

861 :デフォルトの名無しさん:05/03/05 14:58:41
jdk日本語版が今ちょうど落とせないのですが、英語版との違いは各種メッセージだけですか?

862 :デフォルトの名無しさん:05/03/05 15:04:03
Apache Forrestより使い勝手がいいWebドキュメント構築ツールって何かない?

863 :デフォルトの名無しさん:05/03/05 15:07:45
IBM の製品、RedHat の製品とは言うが、Apache Foundation の製品? GNU の製品?
なんちゃってシステム屋以外使わねぇな。

864 :デフォルトの名無しさん:05/03/05 15:13:45
Linux + Tomcat + PostgreSQL のセコイ環境しか使えない奴増えてんのかね ┐(´ー`)┌

865 :デフォルトの名無しさん:05/03/05 15:20:01
Ruby以外の言語は糞。
ましてJavaをや

866 :デフォルトの名無しさん:05/03/05 15:25:58
春の厨房強化月間

867 :デフォルトの名無しさん:05/03/05 15:35:38
Ruby絶賛のあらし!
Rubyさいこう¥!!!!!!!!!!!111!

868 :デフォルトの名無しさん:05/03/05 15:36:56
Ruby is nanbar one!

869 :デフォルトの名無しさん:05/03/05 15:40:25
新しい言語が必ずしも優れているとは思えないが、Rubyが最良の物
の1つであることは確かだ。というよりも、これにはまったら、他の言語が
みんな糞というか化石のように思えてくることもあるが、どうだろう?
俺と同じような感想を持っている人はいないか?



870 :デフォルトの名無しさん:05/03/05 15:41:23

なんでみんなRubyを貶すのかなー?
もしかして劣等感?僻んでる?
日本発の言語で世界に評価されているのはRubyしか存在しないんだから
みんなでRubyを盛り上げてC++やJavaなんて、プププのプーってぐらいに
しなきゃ。
実際今まで500年ぐらいプログラミングしてきた俺だけど、Rubyより優れた
言語に出会った事がないよ。
やっぱり新しい言語は優れているんだろうね。




871 :デフォルトの名無しさん:05/03/05 15:43:24
ksh でシェル作ってくれ、といったら全部 Ruby で作って来た莫迦派遣が居たのでさっさと切った。

872 :デフォルトの名無しさん:05/03/05 15:44:57
>>871
死ね。今度会ったら殺す。

873 :デフォルトの名無しさん:05/03/05 15:48:27
>>868のせいでRubyが糞に思えてきた。

874 :デフォルトの名無しさん:05/03/05 15:49:59
shige の頃から Ruby は糞ですが何か?

875 :デフォルトの名無しさん:05/03/05 15:53:15
Rubyの偉い人によると、
「Javaなんてうんこ」
らしいですよ。
プゲラwwwwwwwwwwwwwwwwwwwwwwwwwwww


876 :デフォルトの名無しさん:05/03/05 16:20:19
>>856
は?w
Servlet API で AutoBoxing だったら、知ってるならまっ先に
Tomcat5.5 が思い浮かぶはずだが、それを知らないお前が勝手に
J2EE 製品とか、まとはずれなハズカシイこと言ったんだろw

877 :デフォルトの名無しさん:05/03/05 16:23:50
>>875
まー、Java リファクタリングで有名なマーチン・ファウラーでさえ
Ruby のほうを持ち上げてるからな。

878 :デフォルトの名無しさん:05/03/05 16:46:48
しかしコンパイル時の「そんなメソッドはない」エラーや、Eclipseなどのコード保管機能で
助けられてる身としては、Ruby的な「なんでも実行時解決だぜ」ってのはちょっとおそろしい。

879 :851:05/03/05 17:08:55
>>852
サンクス

880 :デフォルトの名無しさん:05/03/05 17:12:28
>>877
Rubyのメインユーザーはほとんど日本人だからね。
日本だけで完結して、いわゆる開発のスタンダードにはならないだろ。
ちなみに世界各国ごとに、こういう国産で国内だけのメジャー言語は
結構存在してる。

881 :デフォルトの名無しさん:05/03/05 17:15:09
>>835
StringBuffer mes = new StringBuffer( "1つめ" ).append( data );
StringBuffer writeData = new StringBuffer( "2つめ" ).append( message );

先生!これでいいですか?

882 :デフォルトの名無しさん:05/03/05 17:18:32
>>878
Java の先人達は DI や AOP で実行時解決に向かってるけどな。
あと、JDK5.0 の Instrument API もな。

ただ DI や AOP であっても実行時解決がおそろしいってのは同意。
雑誌に踊らされるプロジェクトが多発しないことを祈るばかり。

883 :デフォルトの名無しさん:05/03/05 17:18:38
読み込んだ画像をウインドウ内に原寸表示したいのですが、
画像からgetWidth,getHeightした数値をsetSizeでセットすると
ウインドウの枠も含めたサイズになってしまい困ってます。
ウインドウの枠を含めないで中のパネル?の部分のサイズをセットするにはどうすればいいのでしょうか?
よろしくお願いします。

884 :デフォルトの名無しさん:05/03/05 17:22:35
>>876
横レスだがおまいのレスは痛い
「製品」と強調されてオレは納得したがな

885 :デフォルトの名無しさん:05/03/05 17:31:22
>>884
いや、最初のレスで
「製品」っていっただろ!とか言うなよ、
とか書こうと思ったが、あとで反撃する予定だった。
イタく見えたか、そうですか。

ってか、香具師は Servlet API の話でどっから製品って言葉持ち出したの?
Tomcat は使うに値しないのか。
まー、俺も WebLogic と WebSphere でしかシステム構築してないけどな。

886 :デフォルトの名無しさん:05/03/05 18:16:37
>>883
SwingでJFrame使っているとしたら、setSizeではなく、
JFrameのContentPaneにJPanel1枚を全面に貼り付け、(BorderLayoutのCENTER)
そのJPanelのpreferredSizeで(画像の)サイズを指定し、JFrameに対してpack()してから
表示すればOK

887 :デフォルトの名無しさん:05/03/05 18:24:26
>881
String mes ="1つめ" + data;

String mes = new StringBuffer().append("1つめ").append(data).toString();
にコンパイル時に置き換えられるから等価だと思ってたけど違うんかな?

むしろString mes = new StringBuffer(data.length()+6).append("1つめ").append(data).toString();
みたいに最初からバッファの容量をきちんと取っておけば、StringBuffer内部で使ってる
char配列が余分に作られなくてよさげ。


888 :デフォルトの名無しさん:05/03/05 18:46:11
>>>886
ありがとうございました。
上手くできました。

889 :デフォルトの名無しさん:05/03/05 19:11:31
javaに、cのincludeみたいに他ファイルをソースに挿入する機能ってありますか?

890 :デフォルトの名無しさん:05/03/05 20:40:57
>>830-832
Vアプリを作っているのですが
多分岐ツリー構造をどうやって再現するか考えた結果
Listによるツリー管理が楽だと思ったのです

が、MIDPにはオブジェクトを保管できるListらしきものが見当たりません
そこで自分で作ってしまえと思ったのですがソースを見てもちょっと難しいので
いまはString.javaのソースを鑑賞してます

このまま理解が出来なければ配列でツリーを作るしかなさそうですが
それも視野に入れながら考えてます

891 :www.geocities.jp/shouhishahogo/:05/03/05 20:47:36
挿入ソートは、人が並び替える時にやるやり方に近いですね。
 つまり、コンピュータで実装させるとそれなりの演算量がかかります。
 挿入ソートを改良し、演算量を減らしたシェルソートというのもあります。


892 :デフォルトの名無しさん:05/03/05 23:04:23
0から任意のnまでの乱数を生成するにはどうすればいいのでしょうか?

893 :デフォルトの名無しさん:05/03/05 23:31:45
>>892
int i = (int)(Math.random()*(n+1));

894 :デフォルトの名無しさん:05/03/05 23:53:09
Random r = new Random(); int i = r.nextInt(n+1); だろ。


895 :デフォルトの名無しさん:05/03/06 00:01:42
世の中には本当のことはいくつもあるのに、
彼女はね、それがひとつしかないと思い込むタイプなのよ。

896 :デフォルトの名無しさん:05/03/06 00:39:34
スレッドについて質問なんですが、スレッドで囲んだ処理が終了したら
そのスレッドは明示的に破棄する処理を書いて破棄しないといけないのでしょうか?
なにかプロセスが残ってしまうとかあるのでしょうか?
教えてエライ人


897 :デフォルトの名無しさん:05/03/06 00:57:21
>>844
ああ、また不正確なことを言ってしまった。
「解放する最適化は可能」と読み替えてくれぃ。
スレ汚し失礼。

898 :デフォルトの名無しさん:05/03/06 01:00:27
>896
無いよ 自動でVMが回収する。
VMによるが、再利用にまわされるために、外から見ればスレッド数が減らないけど。

899 :デフォルトの名無しさん:05/03/06 01:03:01
EntityBeanを含むSessionBean以下をEclipseでデバッグする方法は
無いでしょうか?
SessionBeanだけなら、SessionBeanのクラスを普通のクラスのように
呼び出せば良いんですが、EntityBeanが中に入ると
どうやれば良いのやら・・・・


900 :896:05/03/06 01:16:50
>>898
サンクスクス

901 :デフォルトの名無しさん:05/03/06 01:24:10
>900
言い忘れたけど、参照はすべてクリアされた場合が回収対象になるよ。

HogeHogeThread thread = new HogeHogeThread();
thread.run();
thread = null;

参照クリアはしてくださいな。

902 :デフォルトの名無しさん:05/03/06 01:44:29
>>899
普通にデバッグできると思うが?
Eclipse内で起動できないならリモートデバッグで対応。
後はコードにブレークポイント張っとけ。

903 :899:05/03/06 01:48:01
>902
J2EEサーバ何使ってますか?
環境教えてください。

904 :デフォルトの名無しさん:05/03/06 02:37:43
J2SEをDLしてインストールしようとしたんですけど
WARNING: Default charset MS932 not supported, using ISO-8859-1 instead
と出てきてインストールできません。原因を教えていただけないでしょうか?

905 :デフォルトの名無しさん:05/03/06 02:56:49
>>876
何顔真っ赤にしてんだ、意味の通った日本語しゃべれよw

906 :デフォルトの名無しさん:05/03/06 03:10:38
「製品」と強調されてピンと来ない奴が WebLogic とか WebSphere とか言っても
知ってる単語並べただけにしか見えねぇ (w

907 :デフォルトの名無しさん:05/03/06 03:19:17
>>876
>>905, >>906
お前ら見苦しいから、くだらん争いはやめてくれ

908 :デフォルトの名無しさん:05/03/06 03:31:55
>>907
すまんな、自称 SE に引っ張られたw

>>904
ちゃんと Multi-Language 版ダウンロードした?

909 :デフォルトの名無しさん:05/03/06 04:00:33
オラアなんも解らん

910 :902:05/03/06 12:09:26
>>903
サーバー側のVMをデバッグオプション付きで起動汁。
今までに何種類か使ってるけどどれも問題ないよ。

911 :デフォルトの名無しさん:05/03/06 12:13:30
>>905
あー、すまんな w 分かりやすく言うと
Tomcat5.5 も JDK5.0 もよく分かってない香具師は黙っとけ。

>>908
SE だなんて言ってないが?
今まで 20 システムほど組んできたが、今は客先に
方式決定支援に廻ってるくらいだな。

912 :デフォルトの名無しさん:05/03/06 13:13:46
ファイルチューザーのフォントはどうやって設定すればいいんですか?

private JFileChooser filec = new JFileChooser();
public filechooser()
{ filec.addActionListener(this); }
public void actionPerformed(ActionEvent e) { ... }

こんな感じで本に載ってた通りに書いてます。
よろしくお願いします。


913 :デフォルトの名無しさん:05/03/06 13:19:21
最近 JDK1.5.0_01 を入れたのですが、普通にインストールすると、JRE もインストールされます。
JDK1.5.0_01 ディレクトリの中にも、jre というディレクトリが出来いて、なんか無駄に容量食ってる
気がするのですが、単なる JRE と、JDK ディレクトリの中の JRE の2つをインストールさせられる
理由ってなんなんでしょう?2つも律儀にインストールした私がマヌケなだけなのでしょうか。

914 :デフォルトの名無しさん:05/03/06 13:29:49
>>913
そのJREはブラウザとか、システムディレクトリのjava.exeとかが使うはず。
アプリケーションの追加と削除で消せると思うけど。
あと、JREにはHotSpot clientエンジンしか入ってないけど、
JDKのJREにはHotSpot serverエンジンも入ってたりとか若干違ったと思う。

1.5.0ってインストール時にJRE入れないオプションなかったっけ?

915 :913:05/03/06 13:45:50
>>914
ありがとうございます。

確かに、「単なるJREのbin/ 」には無いディレクトリ「server/ 」が、
「JDKの中のJREの bin/ 」の中にはありました。
それぞれのファイルの diff を取ってみると、java.exe そのものには違いが
無いものの、各種DLLはほとんど全部別物のようです。

> 1.5.0ってインストール時にJRE入れないオプションなかったっけ?
あったかもしれない。よく覚えてないです。

# eclipse をソースからビルドするのに J2SDK1.4.2 も必要だったので、
# 結局 JRE を4つも持つことになってしまった。

916 :デフォルトの名無しさん:05/03/06 13:57:01
>>908
J2SEのDLページまで飛んで日本語表記にして一番上にある
プログラムをとってきたんですけどそれじゃだめなのでしょうか?

917 :デフォルトの名無しさん:05/03/06 15:12:35
>>917
># eclipse をソースからビルドするのに J2SDK1.4.2 も必要だったので、
># 結局 JRE を4つも持つことになってしまった。

Eclipseをビルドする最小構成は、Eclipse + JRE1.4.2。
JDK(1.5)やSDK(1.4)はなくてもビルドは出来る。HDDの
容量を気にするなら覚えといてもいいかも。

918 :   :05/03/06 15:30:57
ある文字列の中のシングルクォーテーション「'」を「''」に置き換えたいんですが、
replace('\'','\'\'')

replace('\u0027','\u0027\u0027')

もちろん
replace(''','''')
もダメでした。
僕はどうすれば良いのでしょうか・・・
このままでは家に帰れません・・・

919 :デフォルトの名無しさん:05/03/06 15:43:09
>>918
replaceAll("\'", "\'\'") じゃダメですか?

920 :デフォルトの名無しさん:05/03/06 15:45:45
replaceAll("'", "''");
シングルクオートはエスケープいらない。

921 :919:05/03/06 15:50:07
Ooops. 素人が適当に答えちゃってすみません。
勉強になりました。

922 :デフォルトの名無しさん:05/03/06 16:17:04
>>921
エスケープしても動くよ

923 :918:05/03/06 16:23:22
>>919さん>>920さん
ありがとうございまう!
でけました!
帰ります!

924 :デフォルトの名無しさん:05/03/06 17:10:16
莫迦が釣られて自己紹介w

925 :名無し:05/03/06 18:47:53
あのぉ〜
ある文字を2進数で表示したいのですが
何か方法はありませんか??

926 :デフォルトの名無しさん:05/03/06 18:51:36
Integer.toString(n, 2)
Integer.toBinaryString(n)

927 :デフォルトの名無しさん:05/03/06 19:08:14
遊びで複数の立方体を面どうし張り合わせた形が何パターンあるか調べるプログラムを作ったんだけど、
OS(WindowsXP)がJavaVMに割り当てるメモリ量ってどうやったら調節できるの?
タスクマネージャで見てて、使用メモリが約75MBに増えたところでOuyOfMemoryで終了してしまう。

928 :デフォルトの名無しさん:05/03/06 19:10:36
-Xmx256m

詳しくはツールドキュメントか java -X で。

929 :デフォルトの名無しさん:05/03/06 19:22:19
>>928
うまくいきました。ありがとう。

930 :デフォルトの名無しさん:05/03/06 21:29:44
なんでswingでJFrameにbuttonを貼り付けたらボタンのサイズが
ウインドウのサイズと同じになってしまうんですか?

JButton bt = new JButton();
bt.setSize(100,30);
のように指定しても意味が無いのでレイアウトができないのですが・・・?


931 :デフォルトの名無しさん:05/03/06 21:33:51
すみません どなたか教えてください

コマンドライン上から受け取った3つの数字の最大値をmathクラスを使って
答えをだすにはどうすればよいのでしょうか?

932 :デフォルトの名無しさん:05/03/06 21:44:14
>>930
Java レイアウトマネージャ でぐぐれば?

933 :デフォルトの名無しさん:05/03/06 21:47:03
>>931
int max = Math.max(Math.max(Integer.parseInt(args[0]),Integer.parseInt(args[1])),Integer.parseInt(args[2]));

934 :デフォルトの名無しさん:05/03/06 21:51:46
>>933
なるほど こうやってやればいいのですか・・・
がんばって続けてみます ありがとうでした〜

935 :名無し:05/03/06 22:19:35
>>926

できました。
これって一文字づつしかできないんですか?
もし複数文字ではできないんですか?
例えば hanikami という文字を
2進数表示とか??

936 :デフォルトの名無しさん:05/03/06 23:00:01
>>935
やさしいおじさんが「for」というキーワードを教えてやろう。

937 :デフォルトの名無しさん:05/03/06 23:28:12
Javaの環境のインストール時に、手動でパスを入力するじゃないですか。
あれは、複数の環境が用いられることを考えてるために、あーなってるのですか?
なぜなんですか?
インストール時にパスを作ることができないんですか?

938 :デフォルトの名無しさん:05/03/06 23:38:45
>>937
出来るけど、Java の 1.4 や 1.5 を切り替えて開発するような人も居ることを考えたら
各自でやった方がいいでしょ。それすら面倒なら Eclipse なんかの統合開発環境
使えば良いじゃん。

そもそも手作業でパスを入力するのは開発する人だけ。実行するだけならパス設定は不要。
開発者に環境切り替えて使うだけの知識があると考えるのは常識の範囲。

939 :名無し:05/03/07 00:37:08
>>936
もしかして、文字を一回配列化して
それから、一文字一文字をforを使って
取り出して、それで〜2進数表示
するってことですか???

940 :デフォルトの名無しさん:05/03/07 01:52:16
>>939
そう。配列化をする必要はないけど、大体そんな感じ。
何か不都合でも?

941 :デフォルトの名無しさん:05/03/07 02:07:32
だな、文字列を2進数表記するなんて宿題みたいな特殊機能はコアライブラリに無い。

942 :デフォルトの名無しさん:05/03/07 03:20:52
>>864
> Linux + Tomcat + PostgreSQL のセコイ環境しか使えない奴増えてんのかね ┐(´ー`)┌
顧客がその環境を押しつける案件が多いよ。
けどこっちとしては
J2SE5に対応したTomcat5.5を使わせて欲しい以外は
全然不満はないな。


943 :デフォルトの名無しさん:05/03/07 03:27:55
まだつづくのks

944 :デフォルトの名無しさん:05/03/07 03:28:01
セコイ環境しか使えない = セコイプロジェクトしか入れない

945 :デフォルトの名無しさん:05/03/07 03:38:28
>>942
別に Tomcat はモノとしては良いとは思うが (自宅鯖でガンガン使ってるし)、サーバ製品
ケチる客とは深くお付き合いしたくないなぁ。

946 :デフォルトの名無しさん:05/03/07 04:45:23
お客とかもうここは初心者レベルのスレじゃないね

947 :デフォルトの名無しさん:05/03/07 09:05:51
初心者も歓迎するだけであって、初心者専用のスレじゃないから

948 :デフォルトの名無しさん:05/03/07 09:26:10
「Tomcat5.5」は、「参照渡し」、「ポインタ」についで
このスレでの禁句に認定されました。


949 :デフォルトの名無しさん:05/03/07 10:17:25
java.lang.*」がインポートされずにつかえるのにはどのような意味があるのですか?

950 :デフォルトの名無しさん:05/03/07 10:21:52
全てのクラスがObjectを継承してるので、全てのクラスでlangのインポート必要になる。
だったら、わざわざやらせる必要もないだろうということだ。

951 :デフォルトの名無しさん:05/03/07 10:23:04
String のようなどのプログラムでもほぼ確実に使うクラスの import 宣言をわざわざしなくても済む様に。
参照渡し

952 :デフォルトの名無しさん:05/03/07 11:04:27
> 全てのクラスがObjectを継承してるので、全てのクラスでlangのインポート必要になる。

必須なのは直接継承するクラスまでです。

953 :名無し:05/03/07 12:19:12
>>940

一回それでやってみます


954 :名無し:05/03/07 12:36:55
String name = "hanikami";

int namae = name.length();
for(i = 0; i <= namae; i++);
System.out.println(Integer.toString(i, 2));

これじゃやっぱりダメですかね?

955 :デフォルトの名無しさん:05/03/07 12:40:50
for(int i=0; i<name.length(); i++){
  System.out.println(Integer.toString(name.charAt(i), 2));
}

956 :名無し:05/03/07 13:25:05
>>955

できるのはできたんですが
こんなエラーが出ます
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 6

957 :デフォルトの名無しさん:05/03/07 13:31:53
>>956
>>954 でやってる文字列の範囲指定の間違い、
> for(i = 0; i <= namae; i++)
(name != null なら name.charAt(name.length()) は IndexOutOfBoundsException を投げる)
>>955 のに持ち込んだだけでは?

958 :名無し:05/03/07 13:43:49
>>957

たぶんそうかも・・・
String name = "hanika";

int namae = name.length();

System.out.println(namae);

int i;

for(i = 0; i <= name.length(); i++){

System.out.println(Integer.toString(name.charAt(i),2));
}
こんな感じにしてます・・・

959 :デフォルトの名無しさん:05/03/07 13:51:02
おいおい
<=じゃ100%えらーでるだろう

960 :デフォルトの名無しさん:05/03/07 13:55:43
>>958
0から数えるから終了条件も0を含めた数にあわせないといけないな

961 :名無し:05/03/07 14:04:26
>>959

あっほんまや! <=にしてる(笑)
<だけにしたらエラーが出なくなりました。
どうもです。
あと>>960の意味なんですが
よくわからないんですけど・・

962 :デフォルトの名無しさん:05/03/07 14:04:40
そもそもエラーメッセージが詳細に出てるっつーのに
6番目のインデックスは範囲外といっておる

963 :デフォルトの名無しさん:05/03/07 14:05:11
Java以前にコンピュータ言語自体が初心者なのか

964 :デフォルトの名無しさん:05/03/07 14:06:06
とりあえずJavaの初心者向けの本1冊かったほうがいい
基本的な文法がわかっていないのと、言語自体が不慣れなようだから

965 :名無し:05/03/07 14:11:16
>>963

はい、javaを初めてちょっとしかたってないし
はじめてプログラミングしてますし・・・
一応本は持ってるんですけど
いまいち頭に入って来なくて・・・

966 :名無し:05/03/07 14:13:07
実際、本を買っても
今聞いているような事が載ってなくて(自分が理解してないだけかもしれないですけど)
ほんとにワケワカメです・・・

967 :955:05/03/07 14:15:24
びびらすな
回線切って首吊るところだった

968 :デフォルトの名無しさん:05/03/07 14:21:14
キーボードからの入力を時間が来たら切れる
ようにしたいのですがどうすればよいのでしょう?

969 :デフォルトの名無しさん:05/03/07 14:46:21
0を含めたってのは、0番から数えるってこと。
そうすると、最後の文字は「長さマイナス1番目」になるでしょ。
<=だと「長さ」番目そのものまで見ようとしてエラーになる。


970 :デフォルトの名無しさん:05/03/07 14:50:14
>>961

配列の長さ(要素数)と添字の違いに注意しる。
長さが3なら、添字は、0,1,2だろ?添字3は存在しねえ。
"<=" を使うって事は、i=3の時もループ終了条件は満たしてないから
(4の時に初めて満たす)、存在しない添字3を参照してるってことだ。

まあ、
int ary[] = new int[10];
for(int i = 0 ; i < ary.length ; i++) {
ary[i] = うんちゃらかんちゃら
}
は慣用句だとおもって叩き込め

ちなみに俺は他言語でもループの条件式で "<=" を使っているのは
ほとんど見たことがないぬるぽ。

971 :デフォルトの名無しさん:05/03/07 14:52:11
> ちなみに俺は他言語でもループの条件式で "<=" を使っているのは
> ほとんど見たことがないぬるぽ。
いや、さすがにそれは経験不(以下略)

972 :970:05/03/07 14:55:38
スマン、同じ内容になってしまった。
しかも>>969の方が簡潔で分かりやすい希ガス...orz

973 :デフォルトの名無しさん:05/03/07 17:15:27
>>968
System#currentTimeMillisでも使ってみたら?

974 :デフォルトの名無しさん:05/03/07 17:58:26
Applet#play(URL) くらいしか音を鳴らす方法を知らないので
なんかもっとこう、ローカルのアプリケーション向けの
play(File) みたいなことができるクラスがあったら教えてください

975 :デフォルトの名無しさん:05/03/07 18:07:51
配列の要素数を増減させるにはnewするしかないのですか?

976 :デフォルトの名無しさん:05/03/07 18:12:47
>>975
配列使わずArrayList使え

977 :デフォルトの名無しさん:05/03/07 18:16:55
無いので使えないのです

978 :デフォルトの名無しさん:05/03/07 18:40:40
>>975
new するしかない。

ArrayList は内部に配列を持ってて、必要になったら大きめの配列を new して、
今持ってる配列の各要素をコピーして、新しく追加しなきゃならない要素を追加して、
とかの事を、自動的にやってくれる。

979 :デフォルトの名無しさん:05/03/07 18:46:13
そうですか
>>978をそのままコードにします

どうもでした

980 :名無し:05/03/07 19:00:37
>>972

ありがとうございました
べんきょうしまぁす

981 :デフォルトの名無しさん:05/03/07 20:06:08
>>974
なにあほなこと言ってるんだ?


982 :デフォルトの名無しさん:05/03/07 20:30:18
指数表記を含むデータファイルを読み込みたいのですが
StreamTokenizerで読み込んでみた所うまくいきません

データファイルが
1.0e-2
という指数表記のdouble型のデータをStreamTokenizerを用いて
double val = st.nval;
のように代入するとvalには
0.01ではなく1.0が格納されてしまいます

指数表記の値を読み込むにはどうすればいいのでしょうか?

983 :デフォルトの名無しさん:05/03/07 20:35:56
windows2000で読み取り・書き込みを不可にしたファイルを
FileのcanReadメソッドで読むと
trueが返ってくるのですが、
おかしくないですか?

984 :デフォルトの名無しさん:05/03/07 20:43:55
>>983
どうやってファイルを読み取り・書き込み不可にしたんですか?

985 :デフォルトの名無しさん:05/03/07 20:47:12
>>984
エクスプローラから該当ファイルを選択して右クリックし
セキュリティのタブからEveryoneで書き込み・読み取りを拒否にチェックしました

986 :デフォルトの名無しさん:05/03/07 20:54:28
それどころか
そのように読み取り・書き込みを不可にしたファイルを
Fileのdeleteメソッドで削除できるんですが、
これもおかしくないですか?

987 :デフォルトの名無しさん:05/03/07 20:57:29
>>983
ファイルの読み込み専用属性しか見てないんじゃないの?

だけど、そもそもその手のメソッドの結果を信用しちゃいけない。
あくまで読めるかも程度の参考にすべき。

マルチタスクな世界じゃcanRead()がtrueを返しても、実際に
読み込もうとした時にファイルが無かったり、読み込み専用に
変わってることもありえるからね。

988 :デフォルトの名無しさん:05/03/07 21:02:31
>>985
他の(Everyoneより上の)権限だとフルアクセスできるまま、とか

989 :デフォルトの名無しさん:05/03/07 21:06:50
>>986
俺の予想だとコマンドプロンプトから削除しても削除できるね、そのファイル。

990 :デフォルトの名無しさん:05/03/07 21:07:32
>>988
グループ名またはユーザ名にはeveryoneしかない状態でした

991 :デフォルトの名無しさん:05/03/07 21:11:00
立てた。

【初心者】Java質問・相談スレッド63【大歓迎】
http://pc5.2ch.net/test/read.cgi/tech/1110197411/

992 :デフォルトの名無しさん:05/03/07 21:15:26
>>990
そのファイル、もしjavaでアクセスできなかったらどうするつもりだったんだ

993 :デフォルトの名無しさん:05/03/07 21:18:49
>>992
右クリックでアクセス許可のフルコントロールをチェックすればいいと思います

994 :デフォルトの名無しさん:05/03/07 21:20:23
>>993
つーことはそのファイルには「アクセス許可を与えることができる」ユーザでアクセスしてるんでしょ?
そのユーザでそのファイル読んだり消したりできるのは何らおかしくないと思うけど。

995 :デフォルトの名無しさん:05/03/07 21:25:58
>>994
読み取りと書き込みを不可にすると
アクセス許可を与えることができるユーザであっても
アプリケーションで開けなくなります

例えばa.txtの読み取りと書き込みを不可にすると
a.txtをエディタで読み込もうとするとエラーが出ます

996 :デフォルトの名無しさん:05/03/07 21:36:24
アクセス許可を与えられる権限持ってても、自分が書き込み不可のファイルに書き込みできたり
読み込み不可のファイルを読み込めるのは OS としておかしいよ。

ん、ファイル削除可否はディレクトリに対する権限だったかな? Linux だとこんな感じ。
$ touch a
$ chmod 000 a
$ cat a
cat: a: 許可がありません
$ cat > a
-bash: a: 許可がありません
$ rm a
rm: remove write-protected 通常の空ファイル `a'? y
$ (削除成功)

997 :デフォルトの名無しさん:05/03/07 22:24:59
http://java.sun.com/j2se/1.5.0/ja/download.html
ここのJava1.5SDKが落とせなかったんで英語ページから
落としたんですが、別に問題ないですよね?

998 :デフォルトの名無しさん:05/03/07 22:28:18
>>997
問題ない、はず。
気になるなら Sun に問い合わせてみれば?

999 :デフォルトの名無しさん:05/03/07 22:30:57
>>991
乙!

1000 :デフォルトの名無しさん:05/03/07 22:37:33
1000GET

1001 :1001:Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。

293 KB
★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.02.02 2014/06/23 Mango Mangüé ★
FOX ★ DSO(Dynamic Shared Object)