[表示 : 全て 最新50 1-99 101- 201- 2chのread.cgiへ]
Update time : 05/09 23:39 / Filesize : 54 KB / Number-of Response : 212
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



1 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 05:54:45 ]
プログラミング言語Javaに関する質問スレです。
JavaScript, Ajaxの質問は、ここでは受け付けていません。
Web製作管理    pc11.2ch.net/hp/
Webプログラミング pc11.2ch.net/php/
をご利用下さい。

よくある質問
・「コマンドまたはファイル名が違います」
 「'javac' は、内部コマンドまたは外部コマンド、
 操作可能なプログラムまたはバッチ ファイルとして認識されていません。」
 「Exception in thread "main" java.lang.NoClassDefFoundError: 」
 www.wikiroom.com/java/?path,classpath
・String に == は使うな。equals() を使え。
・「\12288 は不正な文字です。」
文字リテラル以外で全角スペースは使えません。半角スペースに。
・その他の質問→「APIのjavadoc見ろ」

前スレッド
 【初心者】Java質問・相談スレッド118【歓迎】
pc11.2ch.net/test/read.cgi/tech/1218360111/
次スレは>>990あたりで。

過去ログ、関連スレッド、よくある質問とその回答など、
質問をする前に、貴方が見なければならないサイトについての情報は、
下のwikiのページにまとめてあります。
www.wikiroom.com/java/

75 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 00:09:47 ]
>>74
WindowsでSunのJDK/JREをインストーラ経由で入れてるなら
レジストリ見るとかあるけど、確実でもないし簡単ともいえない

76 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 00:18:29 ]
>>64
成長しましたね。

77 名前:デフォルトの名無しさん [2008/09/06(土) 00:19:40 ]
>>75
レスありがとうございます。書き忘れましたが、Windows環境での話です。
何故このような疑問を持ったかというと、
JNIでC言語からJavaを呼び出すプログラムを実行する際に、
JDK/JREのインストールディレクトリ下にあるjvm.dllを
読み込む必要があるためです。

通常であればJAVA_HOME、PATH、レジストリあたりを見るべきなんでしょうか。
複数のJDK/JREがインストールされていた場合はどうするべきでしょうか?

78 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 00:26:35 ]
>>77
複数インストールされてる場合は、
HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Development Kit\CurrentVersion
あたりを見るとか、JDK/JRE関連レジストリ全部読み込んで一番バージョンが大きいやつ使うとか。

79 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 00:34:33 ]
>>78
アプリケーションによって何を使うかは異なるわけですね。
何かサンプルになるものを探してたのですが、
意外と見つからないです。
もう少し考えてみます。

80 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 01:01:11 ]
java使わないおれがあてかんで回答してやると
HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment\CurrentVersion
HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment\[バージョン]\RuntimeLib
が正解だろ


81 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 01:06:51 ]
質問というより相談で申し訳ないのですが、
JAVAでチャットのサーバーサイドを作る場合、大きく分けて2種類あると思います。
1クライアントに1スレッドを作るやり方と、java.nioを使ってクライアント全員を並列処理する方法です。
そこで質問なのですが、大人数が参加するチャット(ルーム機能も付いています)では、
やはりノンブロッキングIOを使うほうがいいのでしょうか?


82 名前:デフォルトの名無しさん [2008/09/06(土) 01:27:11 ]
ノンブロッキングもスレッド使うのも、接続増えたら結局は鯖かえなくちゃいかんのじゃないか

83 名前:デフォルトの名無しさん [2008/09/06(土) 02:03:27 ]
javaのSetについて質問です

class Address{
public Address(String name, String address) {
this.name = name;
this.address = address;
}
public String toString() {
return "name : " + name + " address : " + address;
}
//getter setterは省略
public String name;
public String address;
}




84 名前:デフォルトの名無しさん [2008/09/06(土) 02:04:47 ]
上の続きです
public class Practice{
public static void main(String[] args) {
Set<Address> test = new HashSet<Address>();

test.add(new Address("hiroshi", "tokyo1") );
test.add(new Address("hiroshi", "tokyo2") );
test.add(new Address("hiroshi", "tokyo3") );
test.add(new Address("hiroshi", "tokyo4") );
test.add(new Address("sayoko", "tokyo1") );
test.add(new Address("sayoko", "tokyo3") );

Iterator<Address> iter = test.iterator();
//hiroshiの情報だけ取り出したい
while( iter.hasNext() ){
Address i = iter.next();
if( i.name.equals("hiroshi") ) {
System.out.println( i );
}
}
System.out.println("-------------");
//tokyo1の情報だけ取り出したい
iter = test.iterator();
while( iter.hasNext() ){
Address i = iter.next();
if( i.address.equals("tokyo1") ) {
System.out.println( i );
}
}
}
}

85 名前:デフォルトの名無しさん [2008/09/06(土) 02:07:09 ]
上の続きです

SetでAddressクラスのnameをキーとして情報を取り出したり
addressをキーとして情報を取り出したりしたいのですが,
上の実装だとset内の値の数が増えてくるとなんだか効率が悪いような気がします.
他に実装方法はありますでしょうか

86 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 02:14:45 ]
class うんこ {
  Map name, addr;

  public void add(Addr addr) {
name.add(addr.getName,add);
addr.add(addr.getAddr,add);
}

public Addr getByName(Str name) {
return name.get(name)s;
}
}

これで我慢しとけハゲちゃびん

87 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 02:46:46 ]
Mapじゃあかんの?

88 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 03:35:04 ]
java.awtComponentのソース見てたら
setEnabled(boolean)のところで

Component.this.setEnabled(b);

って出てきたんだけど、このthisってどゆ意味?


89 名前:85 [2008/09/06(土) 03:58:02 ]
>>87
Mapだとkeyの値が一つに限定されてしまいます
あと,valueからkeyを取得することができないです.

90 名前:85 [2008/09/06(土) 04:07:38 ]
ごめんなさい
valueからkeyはbidimap使えばできますね(標準関数じゃないけど)
>>89 の下一行は無かったことで

keyの値を色々変えてSetの中身を検索したいです

91 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 04:17:55 ]
>>88
限定this というものらしい。
ttp://www.y-adagio.com/public/standards/tr_javalang2/expressions.doc.html#251603

で、そのソースコード、JDK7ですか。

92 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 04:27:10 ]
>>91
JDK6です。


93 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 04:28:07 ]
>>90
Index用のMapを作るのはどうでしょう。
Map<String(name), List<Address>>
Map<String(address), List<Address>>

AddressはSetに追加してるから可変ではないと思いますが、
可変の場合は、変更シークエンスをキチンとチェックしてくださいまし。



94 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 04:30:23 ]
>>91
そのサイト読んでみたけどよく分かんないっす……


95 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 04:32:11 ]
>>90
とにかく突っ込んどけば簡単に検索できるっていうクラスは無いんじゃないかな。

>>89
keyの値が一つに限定って、"hirosi"→"tokyo1","tokyo2","tokyo3"…なら
Map<String,Set<String>> とか Map<String,List<String>> で表現できるでしょ。
逆もしたかったら "tokyo1"→"hirosi","sayoko" を同じ構造の別の Map に入れとく。
つまり(クラス名はともかく) >>86 みたいな感じってこと。

96 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 04:39:32 ]
>>88
内部クラスからそれを含むクラスを参照してるってこと。

97 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 04:52:15 ]
>>88
> Component.this.setEnabled(b);
が書かれているメソッドsetEnabled(boolean)はComponentクラスのメソッドではなく、
その内部クラスのメソッドじゃない? たぶんAccessibleAWTComponentクラス。
クラス名.thisという書き方はQualified thisと呼ばれていて、
ttp://java.sun.com/docs/books/jls/third_edition/html/expressions.html#15.8.4
内部クラスを囲う外側のクラスのthisを明示的に指定することができる。
質問の例では、内部クラスにもComponentクラスにもsetEnabled(boolean)が定義されているので、
内部クラスでthis.setEnabled(b)とか単にsetEnabled(b)と書くと、
内部クラスのsetEnabled(boolean)が呼ばれる。
Componentクラスの方のsetEnabled(boolean)を呼ぶためにそういう書き方をする。

98 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 08:51:40 ]
htmlにJavaApletを組み込んで、新しいプログラムが動くか動かを実検したいです。
完成したら、皆も使える用にしたいが、<!--(?)の続きはどう書きますか。

99 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 09:24:12 ]
それはここで回答をもらうより、
ググった方が理解し易いと思われる

一応sunのを貼っておく
sdc.sun.co.jp/java/docs/j2se/1.4/ja/docs/ja/guide/misc/applet.html

100 名前:デフォルトの名無しさん [2008/09/06(土) 09:32:22 ]
その聞きたいアプレットのことは、普通に本とかウェブの解説じゃないか?

101 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 10:01:51 ]
>>81
その処理が滅茶苦茶リソースを食うなら java.nio で並列処理したほうがいい。
あと通信量がすんげー多いなら並列処理のほうがパフォーマンスが上がる。
このどちらでもないなら、どっち使っても大して変わらない。

102 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 10:09:17 ]
いや、変わるだろ

103 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 10:11:59 ]
>>101
プラシーボが期待できる場合も追加で。



104 名前:101 mailto:sage [2008/09/06(土) 12:00:59 ]
>>102
スレッドの切り替えが重い OS なら変わるな。
で、たとえばどんな場合を想定してる?

>>103
忘れてた。

スレッドのコンテキストスイッチが重いんだろうなという妄想に取り付かれていたり
ほんの少しでも早ければそれで満足なら並列処理で。
プログラムが楽になればそれでいいならスレッドで。

105 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 13:04:45 ]
両方作って比較して結果書き込んでくれ

106 名前:85 [2008/09/06(土) 14:59:54 ]
>>93 >>95
了解です
どうもありがとうございました

107 名前:デフォルトの名無しさん [2008/09/06(土) 16:52:24 ]
eclipse3.3エウロパを使って開発しています。

そこで、antを使って独自のjarファイルを作成したいのですが、
うまくいきません。

build.xmlとかいうのを作成して、右クリックのantの実行ってやると、
---------------------------------------------------------------
Buildfile: D:\AppData\Eclipse\workspace3.3\Hoge\build.xml
directory:
compile:
[javac] Compiling 1 source file to D:\AppData\Eclipse\workspace3.3\Hoge\Classes

BUILD FAILED
D:\AppData\Eclipse\workspace3.3\Hoge\build.xml:18: Unable to find a javac compiler;
com.sun.tools.javac.Main is not on the classpath.
Perhaps JAVA_HOME does not point to the JDK.
It is currently set to "C:\@Development\Java\jdk1.6.0_03"

Total time: 297 milliseconds
---------------------------------------------------------------
こんな風にエラーになります。

何が原因でしょうか?


108 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 16:56:35 ]
>>107
>Perhaps JAVA_HOME does not point to the JDK.
>It is currently set to "C:\@Development\Java\jdk1.6.0_03"


109 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 17:04:27 ]
>>81
一般にスレッドは他の資源よりリソースを消費する。
したがって、大量のスレッドを用いると問題が発生する可能性がある。

ノンブロッキングIOでは、スレッドの数を抑えることができるので、
スケーラビリティに有利となる。つまり、
クライアント数の増加に対する性能の劣化をそれなりに抑えることができる。

一方、ノンブロッキングIOを使うと、処理を振り分けるところを
自前で書かなくてはならないため、プログラミングが複雑になる。

しがたって、最初はクライアント毎にスレッドを使うように書いておいて、
問題が出てきたら NIO を使うようにリファクタリングするのがいいんじゃまいか

とよく知らない俺が書いてみる

110 名前:デフォルトの名無しさん [2008/09/06(土) 17:20:20 ]
>>108
そこなんだけど、それって環境変数設定しろってこと?
自分、java_home設定しないでeclipse は動いてるんだけど。
antもいけないのかな?

111 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 17:25:26 ]
今jcpad使ってるんだけどどうも不便で・・・・
アプレットを簡単に実行できて軽い奴って無いかな

112 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 17:25:27 ]
>>109
おまえアホだなw
どこがおかしいのか分かんないんだろうけどww

113 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 17:27:49 ]
>>81
2004年の記事

Servlet APIとNIO: ついにServlet APIとNIOが結合できる
www.ibm.com/developerworks/jp/java/library/j-nioserver/index.html



114 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 17:35:14 ]
>>110
eclipse や ant が動いているのは、JREで実行しているのでは?
また、eclipseでのコンパイルは、eclipseに入っているIBMのコンパイラが
やっているので、環境設定は関係ない。と思う

115 名前:デフォルトの名無しさん [2008/09/06(土) 17:36:02 ]
appletviewer

116 名前:デフォルトの名無しさん [2008/09/06(土) 17:43:37 ]
antは腐ってるからな。
Java自体腐ってるけど。
Development\Java\jdk1.6.0_03\lib\tools.jarを
Development\Java\jdk1.6.0_03\jre\lib\ext\tools.jarに
こぴってやってみ。

117 名前:デフォルトの名無しさん [2008/09/06(土) 17:51:16 ]
jdk1.6.0_03をつかってるお前の脳みその方こそ腐ってないか?

118 名前:デフォルトの名無しさん [2008/09/06(土) 19:29:48 ]
>>117
それじゃだめなの?自分もそれが入ってた。

>>116
ちょっとやってみる

119 名前:デフォルトの名無しさん [2008/09/06(土) 19:32:19 ]
>>114
そうだったんだw
javaインストールしないでeclipseだけで動くからふしぎだったんだw

>>116
あと、やっぱりtools.jarが自分の中には入ってないや。
どっかのサイトにもそれをパスに通すとかって書いてあった。


120 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 20:15:39 ]
マジレスすると、そんなもんを ext の下に入れるな

121 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 20:32:15 ]
>>110
eclipse の Java 設定で、JRE じゃなくて JDK を使うように設定してみたら?
[ウィンドウ]→[Java]→[インストール済みのJRE] で JDK のパスを設定。

122 名前:デフォルトの名無しさん [2008/09/06(土) 22:42:54 ]
自作のJavaプログラムをWindowsのスタートアップにEXEファイルとして
登録して実行させたいのですが、どうすればよいでしょうか?

ちなみにバッチファイルにjava 〜と記載して実行させる事はできました。

123 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 22:46:14 ]
じゃあバッチをキックするexeを作ればいいんじゃね?
つかスタートアップにバッチファイルを登録しておくのは何でダメなの?



124 名前:デフォルトの名無しさん [2008/09/06(土) 22:48:11 ]
>>110
んー、そこにすでに書かれているのよ。


125 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 22:51:48 ]
>>123
ただ単にEXEファイルからJavaのプログラムが呼び出せないかなと
思っただけです。もちろんバッチで事足りてますが…。

126 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 22:53:34 ]
コマンドを実行するだけなら、わざわざバッチファイルにせんでも、ショートカットに記述するだけで十分だと思うが。

127 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 23:00:57 ]
>>126
もちろんそれでも実行できますね…。

128 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 00:04:53 ]
javaをexeにするって馬鹿の考えそうなことだな

129 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 00:20:46 ]
>>128
そういうやり方あるの知らないの?

130 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 00:22:54 ]
サービスに出来るとかいう機能もあるやつ、なんだっけな〜

131 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 03:14:36 ]
やり方も何もexeにする必要性あるのか?

132 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 03:25:57 ]
exeにするとネイティブだから速くなるとか

133 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 03:34:10 ]
GCJだと、大して変わらんね
まあ起動時間は短縮されるだろうけど
ttp://www.shudo.net/article/Fedora-Core-Expert-200507-GCJ/#performance



134 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 03:42:58 ]
以前にチャットの質問をしたものです。どちらも作ってみろトのことで、ノンブロッキングIOでのサーバーを作っているのですが
クライアント側で
String message
socket.getOutputStream().write(message.getBytes());
で文字列を送り、サーバー側で
private void doRead(SocketChannel channel) {
try {
ByteBuffer buf = ByteBuffer.allocate(BUF_SIZE);
if (channel.read(buf) > 0) {
buf.flip();

byte[] bytes = new byte[buf.limit()];
buf.get(bytes);
String line = new String(bytes, 0, buf.limit(), "UTF-8");
System.out.println(line);
}}}
とやると、おくった文字が、ひらがなや漢字の場合に文字が??にかわってしまいます。
bytesをStringに戻すにはどうしたらいいでしょう。。。

135 名前:デフォルトの名無しさん [2008/09/07(日) 03:44:43 ]
すいません。
BUF_SIZEは
int BUF_SIZE=1024;
です

136 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 03:55:12 ]
UTF-8が悪かったみたいです。
くだらない質問すいませんでした。解決しましたor2


137 名前:デフォルトの名無しさん [2008/09/07(日) 04:17:54 ]
相変わらず糞スレだな


138 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 05:28:02 ]
>>137
初心者歓迎のスレならこんなもんだろ。
輝くような質問とレスの応酬になったらキモいだろ。

139 名前:デフォルトの名無しさん [2008/09/07(日) 05:39:08 ]
>>138
君がその「糞の塊」なんじゃないの?

140 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 07:02:30 ]
>>122
exewrap

141 名前:138 mailto:sage [2008/09/07(日) 10:39:12 ]
>>139
だな。
末尾が「だろ」で両方終わってるし、低脳だよな。
よし逝ってくる。

142 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 11:01:10 ]
exeにするなんてJavaの思想に反してるじゃん


143 名前:デフォルトの名無しさん [2008/09/07(日) 11:05:20 ]
>>142
糞は黙ってろ



144 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 11:14:24 ]
ぬるぽ
ぬるぽ
ぬるぽ

145 名前:デフォルトの名無しさん [2008/09/07(日) 11:17:49 ]
>>142
Javaの思想とかおまえが偉そうに語らなくていいから、糞は黙ってろ

146 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 11:20:44 ]
exeにしようなんてセンス無さ過ぎて笑うに笑えない

147 名前:デフォルトの名無しさん [2008/09/07(日) 11:26:23 ]
>>146
糞は黙ってろ 

148 名前:デフォルトの名無しさん [2008/09/07(日) 11:32:06 ]
>>142
Javaの思想を語ってもらえませんか?少しでいいんでお願いします!

149 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 11:40:01 ]
Write once, Run anywhere

150 名前:デフォルトの名無しさん [2008/09/07(日) 12:37:59 ]
糞スレ街道まっしぐら!

151 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 14:32:42 ]
糞連発してる奴は >>149 の発言で
言い返せなくて涙目www

152 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 15:08:59 ]
Javaクラスファイルの難読化ソフトであるDonQuixote ttp://donquixote.cafebabe.jp/index.html
を使っている人いますか?
Solaris10 for x86(5/08)上で使おうとしているのですが,BCELをとってきて
CLASSPATH=/PATH/TO/bcel-5.2.jar:... のように設定しても
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/bcel/util/Repository
Caused by: java.lang.ClassNotFoundException: org.apache.bcel.util.Repository
というエラーメッセージが出ます どのようにすれば動くのでしょうか?

153 名前:デフォルトの名無しさん [2008/09/07(日) 16:06:05 ]
>>151
いいかげんにおまえが糞ってことに気がついたらどうよ?



154 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 17:09:22 ]
JSAPIの実装にFreeTTSがありますが、
日本語に対応したオープンソースのJava APIってありますでしょうか?
nativeライブラリだと見つかるので、JavaAPIがないようならJNI使って呼び出すか、
外部プロセス起動で実行させるかしかないですよね・・・


155 名前:デフォルトの名無しさん [2008/09/07(日) 18:17:13 ]
exeなんて古生代の形式に戻す必要あるのか

156 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 18:22:04 ]
Javaのプログラムをjarファイルにしても
解凍ソフトでjarを解凍してクラスが抽出できるから
Jadとか使って逆コンパイルすると
ソースを見られてしまうのですが
これを防ぐ方法はありますか?


157 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 18:23:14 ]
難読化でぐぐれ

158 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 18:23:23 ]
javaを使用しない

159 名前:デフォルトの名無しさん [2008/09/07(日) 18:23:46 ]
難読化はできるが完全に読めなくすることは不可能
てか、ソースを見られてなにか困るのか?
どんなプログラムでも基本的に解析しようとすれば解析できる
少なくともコンピュータには理解できるわけだからな

160 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 18:25:01 ]
完全に読めなくすることは可能

161 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 18:26:16 ]
>>156
逆コンパイルする気にさえならないようなソフトは無敵

162 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 18:26:26 ]
実行もできなくなるけどな

163 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 18:29:11 ]
Javaのソースコードに暗号化をかけることはできますか



164 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 18:30:11 ]
>>163
>>162

暗号化でなく署名なら出来る


165 名前:デフォルトの名無しさん [2008/09/07(日) 18:41:46 ]
>>163
古生代の暗号なら出来るんじゃねーの?

166 名前:デフォルトの名無しさん [2008/09/07(日) 18:49:20 ]
>>155
いつもスルーされて淋しいよな…

167 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 19:26:06 ]
めちゃくちゃソースを分かり難く書いて、
解析する時間が無駄と思わせるようなソースにすればいいんじゃない?
部分的に流用可能なソースも難しいように、スパゲティ構造にしてw

難読化ソフトって使ったことないのだが、上記のようなソースに変換してくれるものとは違うのかな?

168 名前:152 mailto:sage [2008/09/07(日) 20:07:31 ]
難読化ソフトの話題は多分 >>152 に端を発したということでどなたか私めにお答えを...

作者様のBLOG ttp://www.oikaze.jp/~tamada/Diary/cat_e99ba3e8aaade58c96.html を見ると
「・DonQuixote 3.0 Java バイトコード操作フレームワークとして,DonQuixote 3.0 を公開しました.」
とあるのですが,パスワードがかかっていていただくことができません.
DonQuixote1.0を最新のJDK1.6.0-07に使っているのが悪いのでしょうか?
>>152 のエラーメッセージは信用できるように思えるのですが
maven2 を使ったのが初めてなので何か設定が足りないのかもしれません

なお ttp://proguard.sourceforge.net/ の Alternatives にリンクが張られている
フリーの処理形をすべて試してみましたが期待通り動くものはほとんどありませんでした
他に良い難読化ソフトがありましたらお教えくださいませませ

169 名前:デフォルトの名無しさん [2008/09/07(日) 20:27:00 ]
解読しても価値のないプログラムを書けばOK

170 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 20:29:32 ]
【コミュニティーサイト作成有志募集!】

現在コミュニティーサイトGaccoで有志を募集しています。
詳しい概要等は
www36.atwiki.jp/vipvipschool/
こちらをご覧下さい。

・プログラミングができる方
(現在技術陣は6名です)
・ウェブデザイン・画像編集能力がある方
(現在デザイン陣は2名です)
・宣伝能力のある方
(人員募集やサイト完成後の宣伝等。動画編集ができると○。)

を募集しています。
気軽にIRCに参加、またはsuteあっと2ch.bona.jpまでメールを下さい。

スレッド:ttp://ex14.vip2ch.com/test/read.cgi/news4gep/1219068297/l50

171 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 21:08:52 ]
難読化?HSPで書いたら完ぺきだな。
自分でも読む気失せるぞあれは。

172 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 21:22:12 ]
言語がJavaでなくていいなら、intercalかAPLが最強で最凶で最狂でしょ。

173 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 21:35:44 ]
バイナリエディタでマシン語じか打ちだろ。
ソースコード?存在しません。



174 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 21:50:01 ]
逆アセンブルでソースになっちゃう

175 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 00:36:37 ]
それは目的と手段を間違えている

176 名前:デフォルトの名無しさん [2008/09/08(月) 01:12:45 ]
UbuntuでJavaできないんですけど。。。
ちなみに8.04です

177 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 01:40:29 ]
int []a=new int[5];
a[ZERO]=0:
a[ONE]=1;

こんな感じで配列を定数で置き換えたいときってどういう方法がメジャでしょうか?
interface NUM{int ZERO=0;int ONE=1;…}
class Hoge implements NUM{}

class Hoge{
private final int ZERO=0;
private final int ONE=1;
…}

enum NUM{ZERO,ONE,…}

int []a=new int[5];
a[NUM.ZERO.ordinal()]=7;


列挙で扱いたい気がするけれど、javaの場合整数値と直接結びつかないから
ordinalを呼ばないといけないし、理由は忘れましたがordinalを使うようなやり方は
止めるべきという話を以前見聞きした気がします。

178 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 03:03:20 ]
なんでそんなことしたいの??


179 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 04:10:47 ]
良く分からんが、とりあえず、EnumMap

180 名前:デフォルトの名無しさん [2008/09/08(月) 06:08:38 ]
普通に
final int ZEEL=-1;

181 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 06:35:01 ]
>>176
Synaptic で JRE 入れれば動くはず。
あとは gcj とかぶってないか確認しろ。

182 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 11:55:39 ]
>>177
ZEROでa[0]にアクセス、ONEでa[1]にアクセス、…てことなら、
配列そのものをクラスに包んでアクセサ作るのが言語的に”メジャ”っぽいと思う。
class Foo {
enum Num { ZERO, ONE, … };
private int[] a = new int[〜];
int get(Num num) {
switch(num) {
case ZERO: return a[0];
case ONE: return a[1];
:
}}
void set(Num num, int value) {
switch(num) {
case ZERO: a[0]=value;
case ONE: a[1]=value;
:
}}}

183 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 15:04:00 ]
なんでスイッチ…




184 名前:182 mailto:sage [2008/09/08(月) 16:36:16 ]
すまん、EnumMap使ったことないもんだから。
こう?
class Foo {
enum Num { ZERO, ONE, … };
private Map<Num,Integer> a = new EnumMap<Num,Integer>(Num.class);
int get(Num num) { return (a.containsKey(num) ? a.get(num) : 0); }
void set(Num num, int value) { a.put(num, value); }
}

185 名前:デフォルトの名無しさん [2008/09/08(月) 17:11:39 ]
効率悪い

186 名前:167 [2008/09/08(月) 17:35:46 ]
enum Mum
{
ZERO
{
public int getValue()
{
return 0;
}
}
,
ONE
{
public int getValue()
{
return 1;
}
}
,
;

public abstract int getValue();
}


187 名前:186 [2008/09/08(月) 17:36:37 ]
ごめそ167というのは間違い。

188 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 17:53:16 ]
>>185
効率を心配するほどのもの?

189 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 17:54:07 ]
www.atmarkit.co.jp/fjava/rensai2/javaent02/javaent02.html
ここ見て勉強しているのですけど、
メモリを使用するタイミングはどのタイミングなのでしょうか?
変数やメソッドの呼び出しなどがあったときにメモリを消費しているのか、
それとも変数やメソッドを呼ばなくても、定義してるだけで消費するのか。
どちらなのでしょう?
後者なら継承を繰り返すたびにメモリ使用量の多いプログラムになると思うので、
前者だとは思うのですが。

190 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 18:40:44 ]
なんで素人がやたらメモリとか気にするわけ?


191 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 18:47:36 ]
参照してる記事がメモリうんぬんと書いてるから、気になったんだろうな。
全く気にしないのも問題だが、それで勉強してるレベルなら、まだ早いよ。

192 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 18:50:08 ]
>>190
素人だからこそ気にするべきなんだろ
そんなのもわからない阿呆はやめちまえ

193 名前:デフォルトの名無しさん [2008/09/08(月) 18:52:44 ]
メモリもそうだけど、配列アクセスの方がCPUに大きく影響するよ。
あまり記事になってないけど、arr[k]は範囲チェックが必ず入るから、arr[k]を一回アクセスするだけで、
JVM内では(隠れて) if (0<=k && k<arr.length) が呼び出されてる。

だからメモリを気にしながら設計するのも大事だけど、byte[1000*32]とか良く作るんだし、配列アクセスの方を気にしたほうがいいよ。



194 名前:デフォルトの名無しさん [2008/09/08(月) 18:56:34 ]
メモリの方は、PCだけの人は気にならないんだろうけど、携帯とかアプレットとかあるし。
アプレットはまだ携帯とか小型端末じゃみれないけど、そういう小型機器はメモリが極小64kbとかだから、
メモリの方も気にしなければいけない。

195 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 18:58:28 ]
性能に頼ってプログラミングしている気でいる現代の若者を見てると
おじさん悲しくなってくるよ

196 名前:189 mailto:sage [2008/09/08(月) 19:01:45 ]
みなさんレスありがとうございます。
それで結局のところどちらなのでしょう・・?
おかしな質問だとは自覚しているのですが、気になって仕方がありません。
どうかよろしくお願いします。

>>193
配列って使うんですか?
コレクションフレームワークのほうが高機能なので配列よりそちらを使うようなことを書いてましたが。

197 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 19:12:53 ]
素人が気にし出すとろくなことにならんよ
ちゃんと理解出来ないんだから勘違いの嵐

198 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 19:15:53 ]
>>196
変数やメソッドの種類と、JVMによる。

199 名前:189 mailto:sage [2008/09/08(月) 19:37:23 ]
>>197
そうは言いますが、素人向けの説明でメモリの話が出てきてるのだから、
やはり重要だと思うのですが・・・
たとえ今は理解できないとしても、ステップとして踏んでおくべきだというのが私の考えです。
書籍やWebからの情報でも、100%ちゃんとした説明できる人のほうが少ないと思うので、
勘違いがあるのは当然だと思います。
そういうのは後々間違いに気づいていくので、
はじめの段階では特に問題視する必要はないと思います。

お答えいただけないようなので別のとこで質問しなおしたいと思います。
というわけで質問しめます。

200 名前:デフォルトの名無しさん [2008/09/08(月) 19:43:46 ]
配列はね、CharBufferとかでよく使うよ。
素人向けの解説だとStringBuilderとかなのかもしれないけど…
初心者の壁を越えられるかどうかは、java.nioの解説やAPIを熟読して理解できたかどうかだろうけど、ネイティブのファイル・アクセスとメモリ(ポインタなど)は難しいからな…

201 名前:デフォルトの名無しさん [2008/09/08(月) 19:47:18 ]
>お答えいただけないようなので別のとこで質問しなおしたいと思います。 

こういうのは生意気だし、「ばくちゃん、まだ身の程をわかってません!」って感じww

202 名前:189 mailto:sage [2008/09/08(月) 19:50:30 ]
>>200
ありがとうございます。
あとでそのクラスを調べてみます。

>>201
私は自分のことを客観的に見ることができるんです。
あなたとは違うんです。

203 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 20:00:03 ]
なんだ釣りか



204 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 20:01:09 ]
スレに張り付いてまでいちいち煽るくらいなら
少しのヒントを出すぐらいすれば
まだ自分の優位性をアピールできるだろうに。
気持ち悪いやつだ

205 名前:189 mailto:sage [2008/09/08(月) 20:17:22 ]
>>203
ちょっと生意気な閉め方したら食いついてくる人がいると思って、
最近はやりだったから言ってみたかったんです。すみません。
変な質問だとは自覚してましたが、本当に聞きたかったことなので、
またで直します。

206 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 20:33:24 ]
質問をお願いします.

java.awt.event.KeyEvent
を使用してキーの同時押しを持ってきたいのですが、
スペース 押下時に、 上 と 左 の同時押し(結果的に3つ)
を取ろうとすると、 KeyEvent.VK_UP と KeyEvent.VK_LEFT が帰ってきません。

順番を逆にし、上左押下時のスペースは持ってこれます。

他の組み合わせ(スペース + 上右、下左、下右)はどれも正常に動作します。


KeyEventについて詳しくないのですが、これはどういうことなのでしょうか?

207 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 20:38:38 ]
コーディングが悪いんでないの?
if文の順番が変とか。
ソース晒してみ

208 名前:206 mailto:sage [2008/09/08(月) 20:39:22 ]
すみません訂正です

>順番を逆にし、上左押下時のスペースは持ってこれます。
これも KeyEvent.VK_SPACE がもってこれません

209 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 20:39:24 ]
>>206
pc11.2ch.net/test/read.cgi/tech/1204155623/640

210 名前:206 mailto:sage [2008/09/08(月) 20:51:54 ]
>>209
なるほど、ありがとうございました。
スレ違ったようですみません

>>207
おかげさまで原因がわかりました
ありがとうございました。

211 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 20:57:03 ]
>>205
ここにはもう来ないで欲しい






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](*・∀・)<54KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef