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


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

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



1 名前:デフォルトの名無しさん [2008/01/13(日) 00:25:22 ]
プログラミング言語Javaに関する質問スレです。
JavaScript, Ajaxの質問は、ここでは受け付けていません。
Web製作板をご利用ください。pc10.2ch.net/hp/

過去ログ、関連スレッド、よくある質問とその回答など、
質問をする前に、貴方が見なければならないサイトについての情報は、
下のwikiのページにまとめてあります。
www.wikiroom.com/java/
これからJavaでプログラミングを始めたいが、何をすればいいかわからない人も、
wikiからのリンクをおたどりください。

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

前スレッド
【初心者】Java質問・相談スレッド110【大歓迎】
pc11.2ch.net/test/read.cgi/tech/1197710566/

/* 既出の質問や、他に適切なスレが存在する質問は、容赦なく無視されます。
質問をする前にwikiで過去ログ、関連スレ、FAQをチェックしてください。 */
また、当スレで質問をするかたは、回答をもらえたときに、
wikiの更新をして頂ければ、忝のう存じます。

次スレは>>980あたりで。

511 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 14:32:56 ]
>509
double a = ???;
Graphics b = ???;
a + b;

こんなことは出来ないってことを言ってるんだよ。
とりあえず、プログラム見直せ。

>510
import java.util.Date;
でOK

512 名前:509 mailto:sage [2008/01/29(火) 14:39:11 ]
>>511
ありがとうございます。見直してみます

513 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 14:47:09 ]
>>511
コンパイルしたいです。
import java.util.Date;
import java.text.SimpleDateFormat;
import java.util.Locale;
public class a {
 public static void main (String args[]) {
  Date d = calendar.getTime();
  SimpleDateFormat f = new SimpleDateFormat("EEE", Locale.JAPANESE);
  String s = f.format(d);
  System.out.println(s);
 }
}

514 名前:デフォルトの名無しさん [2008/01/29(火) 14:53:52 ]
>513
calendarってのが定義されてないからコンパイル出来ない。

515 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 16:47:28 ]
CSVを解析するプログラムを作っていて「java CSV」で検索したのですがあまりよいものがなく
「CSV 正規表現」で検索したらPerlのサイトが出てきて自分なりに作ってみたんですけど疑問がいくつかあるので質問させてください。
==========================================
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.FileInputStream;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.regex.Pattern;
import java.util.regex.Matcher;

public class CsvSplit {

 private static final String CSV_SPLIT_REGEX = "(\"(?:[^\"]|\"\")*\"|[^,]*)";
 private Pattern _pattern;
 /**
  * 実行用のメイン
  */
 public static void main(String[] args) {
  CsvSplit aaa = new CsvSplit();
  ArrayList csvArray = aaa.readCsvFile("C:\\zzzzzzzzzz.csv", "JISAutoDetect");
  Iterator ite = csvArray.iterator();
  while(ite.hasNext()) {
   String[] csvData = (String[])ite.next();
   for (int i = 0; i < csvData.length; i++) {
    System.out.println("-------------");
    System.out.println(csvData[i]);
    System.out.println("-------------");
   }
  }
 }


516 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 16:49:47 ]
 /**
  * コンストラクタ
  */
 public CsvSplit() {
  this._pattern = Pattern.compile(CSV_SPLIT_REGEX);
 }

 private ArrayList readCsvFile(String fileName, String charsetName) {

  try {
   // ファイルの取得
   BufferedReader br = new BufferedReader(
    new InputStreamReader(
     new FileInputStream(fileName), charsetName));

   ArrayList csvArray = new ArrayList();
   String columnValue = "";

   try {
    // ファイルから1行ずつ読み込む
    while (br.ready()) {
     String lineData = br.readLine();

     // ダブルコーテーション以外の文字をすべて削除しダブルコーテーションの数を数える。
     // ダブルコーテーションの数が奇数の場合は次の行も読み、再び奇数になるまで読み込む
     if (lineData.replaceAll("[^\"]", "").length() % 2 == 0 && columnValue.equals("") ||
     lineData.replaceAll("[^\"]", "").length() % 2 == 1 && !columnValue.equals("")) {

      columnValue += lineData;
      String[] splitData = splitCsvData(columnValue);
      columnValue = "";
      csvArray.add(splitData);

517 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 16:51:05 ]
     } else {
      columnValue += lineData + "\r\n";
     }
    }
    return csvArray;
   } finally {
    br.close();
   }
  } catch (Exception ex) {
   ex.printStackTrace();
   return null;
  }
 }

 /**
  * CSVデータの1行を分割して配列にして返却する。
  * 改行が含まれるデータの場合は必ず奇数となるので、奇数である限り取得処理を繰り返す。
  * ただし、CSVデータは以下の条件で保存されている場合に限る。
  * 1.基本的にコンマで区切った部分がスペースを含めて値である。
  * 2.値にコンマ、ダブルクウォート、改行が含まれる場合は、値全体をダブルクウォートで囲む
  *  (コンマやダブルクウォートがない場合に値全体がダブルクウォートで囲まれていても問題ない)
  * 3.値に含まれるダブルクウォートは "" となる。
  * @param csvLine
  * @return
  */
 private String[] splitCsvData(String csvLine) {

  ArrayList csvDataArray = new ArrayList(30);
  Matcher matcher = this._pattern.matcher(csvLine);
  boolean isDataSkip = false;
  String columnValue = "";

518 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 16:51:11 ]
このまま俺らにデバッグしろと言う気か

519 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 16:51:37 ]
  // 正規表現に従い取得する。
  while(matcher.find()) {
   // なぜか値が取得できた場合の次の値が空文字として取得できるのでスキップする
   if( isDataSkip ) {
    isDataSkip = false;
    continue;
   }
   String result = matcher.group();

   // 値が取得できたかどうか
   if( !result.equals("") ) {
    isDataSkip = true;
   }

   // データの前後がダブルクウォートで囲まれている場合は省く
   if(result.startsWith("\"") && result.endsWith("\"") ) {
    result = result.substring(1, result.length() - 1);
    // データにダブルクウォートがあれば1つに置換する
    result = result.replaceAll("\"\"", "\"");
   }
   // セット
   csvDataArray.add(result);
  }
  String[] splitData = new String[csvDataArray.size()];
  csvDataArray.toArray(splitData);

  return splitData;
 }
}
==========================================



520 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 17:01:23 ]
>>518
長くてすいません。。。
質問なんですけど、
1.readLineで1行ずつ取得していると改行データを含む行が分割されてしまうので本当はCRLFが
  正しいデータかわからずreadLine以外に効率よく確実に読み取る方法ってありますでしょうか?
2.perlのサイトだと正規表現でダブルコーテーションの数を直接数えてるんですけどjavaの正規表現だと
  どうやるのでしょうか?
3.正規表現で値を取得した場合次の値が空文字として取得できてしまうのですが
  正規表現がいまいちよくわからず・・・。パターンの悪いところや正しいパターンを教えていただけないでしょうか。
4.@ITでC#で「^(?:(?<1>"[^"]*"),?|(?<1>[^,]+),?|,)*」というの見つけたのですが動かず。。。C#とjavaってそこまで違うのですか?


長文駄文ですいません。お手数おかけしますが宜しくお願い致します。


521 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 17:10:20 ]
よくググレCSVライブラリあるぞ。

ところでThe Java Virtual Machine Specificationの和訳って本しかないかな?
本買おうか悩んでるんだけど。

522 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 17:15:29 ]
ネットにあってもどうせ広告すらクリックしないだろ乞食

523 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 17:34:01 ]
>>520
これをコピペしてコンパイルして自分で色々実験してみるがよろし。
あと、JavaのとPerlの正規表現はほぼ別物と考えた方がいい。

public class RegExp {
public static void main(String args[]){
String patStr = null;
String text = null;
if(args.length <= 0) {
try {
BufferedReader br =
new BufferedReader(new InputStreamReader(System.in));
System.out.print("Pattern: ");
patStr = br.readLine();
System.out.print("Text : ");
text = br.readLine();
} catch(IOException e) {
e.printStackTrace();
}
} else {
patStr = args[0];
text = args[1];
}
Pattern pattern = Pattern.compile( patStr );
Matcher matcher = pattern.matcher( text );
if(matcher.matches()==true)
System.out.println("match");
else
System.out.println("not match");
}
}

524 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 18:51:24 ]
ある文章から指定した正規表現に一致するもののみを抽出したいのですが、そのものずばりな方法ってありませんかね?
一致するものをひとつずつ探して、それらを結合する、といった方法しか思いつかないのですが、もっとスマートな方法があったら教えてください。

525 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 18:58:20 ]
>>522
広告クリックしてもらえなかったのか。よしよし。

526 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 19:17:49 ]
>>524
それぐらいならスマートな方じゃないかなと。(というかスマートって何さ
貴方の理想が魔法のステッキなら話は別ですが…

便利な魔法のステッキも最終的にはどこかで地道な作業をやってるわけで。

527 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 20:00:31 ]
ありがとうございます、ひとつずつで実装することにします。
Lispから入った捻くれなので、リストは一括操作でないとどうにも落ち着かないのです。

528 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 21:22:21 ]
「Lispから入った捻くれなので、リストは一括操作でないとどうにも落ち着かないのです。」
今年に入って一番説得力のある発言を見た

529 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 21:28:15 ]
やっぱりLisp使いはJava厨とはわけが違うな



530 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 21:39:49 ]
以上、自作自演でした

531 名前:515 mailto:sage [2008/01/29(火) 22:35:42 ]
>>521
CSVTokenizerだと正規表現を使っておらず参考になりませんでした。
ほかにもそういったもので参考になるものがあれば教えていただけないでしょうか。

>>523
だいたい同じようなものを作ってようやく形になったのが上記のソースです。。。orz

532 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 22:43:18 ]
>>507
まとめてexecuteするときに間にsleepタスクを挟めばいいんじゃない

533 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 23:49:04 ]
16進数の文字列表現をintまたはIntegerに変換したいのですけど、
まさにこういった機能をもったAPIがあったら教えてください。

結構探し回ったんですけど見つかりませんでした。

534 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 23:53:35 ]
>>533
つ Integer.parseInt(String, int)
ttp://sdc.sun.co.jp/java/docs/j2se/1.4/ja/docs/ja/api/java/lang/Integer.html

535 名前:デフォルトの名無しさん [2008/01/29(火) 23:55:52 ]
すいません、メモリ(ヒープ)サイズについて質問です。
java実行時に-XX:+PrintGCDetailsオプションを指定してgcのログを出しています。
そのログに記録される結果のヒープサイズと
psコマンド(ps alxなど)の結果(RSS)が一致しないんですが、

プロセスサイズ=ヒープサイズ+JVM自身が利用するメモリサイズ
ってことであってますか?

536 名前:533 mailto:sage [2008/01/29(火) 23:57:21 ]
>>534
parseIntは散々試してみましたけどだめでした。
なむふぉでまくりです。
decodeがまだだったので試してみます。

537 名前:533 mailto:sage [2008/01/30(水) 00:04:07 ]
うまくいきまんた

538 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 00:04:41 ]
>>524
あらかじめずばり抽出できる構造で文章を保持しておけばスマートじゃね?

539 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 00:10:28 ]
>>531
なんでそこまで正規表現を使いたがるのかな?
正規表現って便利だけど実行速度はすごく遅いよ。




540 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 00:16:53 ]
>>521
和訳は本しかない
VMの対応バージョンは1.3か1.4あたりだったかな
5.0でバイトコードのフォーマットが変わったから、買おうか悩む

541 名前:デフォルトの名無しさん [2008/01/30(水) 00:33:30 ]
伝わりにくいと思うんですが、文字列を相手に入力してもらう方法と、その入力してもらったいくつかの文字列をランダムに組み合わせるってできますかね?

542 名前:デフォルトの名無しさん [2008/01/30(水) 00:35:36 ]
>>541
文字列というのは日本語です。

543 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 00:39:59 ]
伝わりにくいね。
〜してもらう方法と、〜をランダムに組み合わせるってできますかね?
・・・日本語がおかしいから伝わりにくいんだろうね。

544 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 00:40:32 ]
List に突っ込んで Collection#suffle() して連結。

545 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 00:40:35 ]
×伝わりにくいと思うのですが
○伝わらないと思うのですが

546 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 00:42:38 ]
入力:いくつかの文字列
出力:入力をランダムに並べ替えたもの

もしくは

入力:いくつかの文字列
出力:入力のいくつかをランダムに並べ替えたもの

他にもいろいろ考えられるけど?

547 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 00:44:48 ]
入力:文字列
出力:入力の部分文字列をいくつか作り、それを並び替える
とかか。

548 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 00:53:58 ]
方法ってできますかね???
なんだかできないきがするんですががが

549 名前:507 mailto:sage [2008/01/30(水) 00:55:31 ]
>>532
なるほど、その手が・・・勉強になりました。



550 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 00:58:19 ]
時期的に学校の課題なんだろうけど、少しは自分の頭で考えないと勉強にならない、
とか言うのは野暮なのかねやっぱり。

551 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 01:13:34 ]
ここは将来の脅威の摘むためにバカを増やすスレですが。

552 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 01:24:19 ]
>>540
SE 7でもバイトコードのフォーマット変わるんだよね。
本の内容がどんどん古くなるから買おうか悩むんだよ。

553 名前:デフォルトの名無しさん [2008/01/30(水) 02:49:09 ]
(当方、本職プログラマーでなく初心者です)
すみません、アプリケーションスコープの使い方で迷ってます。

具体的に書くと、
ショップサイトにて商品ジャンルごとにアクセス数の集積を取りたい
と考えたのですが、データベースへのアクセス頻度を減らすためにも、
商品ジャンルのデータベースをそのままアプリケーションスコープに
入れてしまおうかと思っています。ただその場合には10000個数近くの
インスタンスを入れることになってしまうのですが、初心者なために
これが大丈夫なことなのかよくわかりません。

オブジェクトにはintとStringとが半々ずつ、合わせて10個のメンバ
変数があり、Stringには全部でだいたい64文字程度入ります。中身だけ
で計算するとサイズは160kbyte程度かと思うのですが、この程度ならば
全然気にしなくても大丈夫な感じでしょうか? その何万倍いっとけ、
とかそういったレベルならいいのですが、よくわからなくて……。

指針となるドキュメントを見つけられなかったのでこちらで質問させて
もらいましたが、皆さん、アプリケーションスコープに入れるデータ
サイズはどれくらいまでにしてますか?

サーバーのスペック如何なところではあると思うのですが、アドバイス
あればどうぞお願い致します。


554 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 03:00:24 ]
それは実際に商品ジャンルのアクセスがネックになってることが明らかで、これを
メモリ上にキャッシュすればどれくらいの改善が見込めるという見積もりができている
上で言ってるのか?

普通に考えればその程度のアクセスがネックになるようなら他の処理もウンコチンチンで
マシン選定間違えてるだろ。商品ジャンルにメンテ入っても反映されないし、整合性が
保障できないなら下手に SQL で結合もできやしない。

555 名前:デフォルトの名無しさん [2008/01/30(水) 03:14:09 ]
なるほど、それもそうですね。
ありがとうございました。

556 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 06:20:12 ]
Logging API の設定ファイルって、出力先のファイル分けるためにわざわざ
Handler クラス作らなきゃいかんのか? 何で出力先の指定が「クラス名」に
紐づいてるんだ? インスタンスだろjk

557 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 09:00:31 ]
慣例としてクラス名を使っているだけで、名前には何でも使用できたと思うが?

558 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 12:20:13 ]
>>535
>プロセスサイズ=ヒープサイズ+JVM自身が利用するメモリサイズ
>ってことであってますか?

ヒープもJVMが利用するメモリなわけだが・・・

ヒープは、Javaから見えるメモリ空間だけど
JVMは、実行用のスタックメモリを持っていてこれは
ヒープメモリに入ってこない。(ヒープじゃないし)
あと、Hotspot用とかあるし。
ヒープサイズを越えてどれくらいメモリを使うかは決まっていない。
(スタックとかはある程度判るが・・・)

559 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 12:58:03 ]
unicodeのソースでreplaceAllで"\\t"(TAB)が置換できない。どうやってやるの?



560 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 13:37:52 ]
>>559
ふつーにできるよ?
System.out.println("aaa\tbbb\tccc".replaceAll("\t", "[TAB]"));
結果: aaa[TAB]bbb[TAB]ccc


561 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 13:41:04 ]
>>559
分からないので、ひとつえsp
replace を始め、String系の変換で良くある間違い。(てか、今やって見て久々に…
Stringは不変オブジェクトです…
要は、インスタンスメソッドで値が変わってるかのように見えても、
単に新たなStringを生成して返してるだけ、という…

562 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 14:03:26 ]
>>557
# "handlers" specifies a comma separated list of log Handler
# classes. These handlers will be installed during VM startup.

Log4j のおっさんがアジ文章で 「JSR47の設定ファイルはハンドラクラスに
1 インスタンスしか指定できねーじゃんよ ファイル分けらんねーよ!!」 と
ブチ切れてるのも見つけた。
www.ingrid.org/jajakarta/log4j/jakarta-log4j-1.1.3/docs-ja/critique.html

実際 JSR47 の仕様書読んでもクラス名だったアルヨ。Formatter にしても Log4j に
慣れてると 「この程度のもん用意しとけYO!」 と言いたくなるなぁ。

563 名前:559 mailto:sage [2008/01/30(水) 14:10:08 ]
わかりました。
正 s = s.replaceAll("\t", "");
誤 s.replaceAll("\t", "");
ありがとうございました。

564 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 14:32:00 ]
>>563
ここのクイズと同じところで引っかかってるね。
blogs.sun.com/javaev/date/20080120

565 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 18:49:40 ]
オブジェクトを直列化して受け渡しする際のImageIconの仕組みについて質問です。

java.awt.ImageクラスはSerializableインターフェースを実装していないため、swingのImageIconでラップして直列化しているのですが、なぜImageIconが画像を正しく直列化出来るのかが理解出来ません。

ソースをざっと見たのですが、画像を保持しているフィールドには、transient修飾子がついている上、他の部分でも特にこれという箇所は見つけられませんでした。

ImageIconがどのように画像を直列化しているのか、解説かヒントをいただけるとありがたいのです。
よろしくお願いします。

566 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 19:26:14 ]
>>565
private void writeObject(ObjectOutputStream) メソッドがあるだろう
そのメソッドがあると、直列化するときに呼ばれる

567 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 20:44:36 ]
beanshell classpathを使いたいのですが、一昨日からサイトが落ちたまま(ドメイン更新忘れ??)です。
beanshell classpathを持っている方、アップしていただけませんか。

www.beanshell.org/

568 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 21:13:31 ]
bugparade にバグ投稿すると確認メールか何か返ってくるもんかえ?
何日たってもまったく検索にヒットせんのう。

569 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 22:02:53 ]
>>568
俺のときは投稿直後(数分後とか)に自動確認メールが来たけど。

BugDatabaseに登録されたら、その時にもメールが来るはず。
登録されない時は自動確認メールの後、音沙汰がなくなったような。



570 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 22:27:25 ]
>>569
そーなのか、じゃどっかでロストしたな。
センキューベイベー

571 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 23:52:28 ]
ExecutorServiceって、一度shutdownすると再利用はできない?

572 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 02:26:07 ]
>>558

プロセスサイズ=ヒープサイズ+スタック+Hotspotってことすね。
thx

ってか今、遊びで作ってるプログラムなんだけど、
プロセスサイズが右肩上がりで肥えていく・・・
ヒープは正常(増減を繰り返す)っぽく見えるのよね・
もうよく分からん。javaは難しいな・・・


573 名前:デフォルトの名無しさん [2008/01/31(木) 02:36:01 ]
rt.jar変えずにString.toString()の挙動を
return this;

return "hoge" + this;
に変更したいんだけど、これって可能?
Javassistとかバイトコードいじる以外で。

574 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 02:43:48 ]
>>573
私は出来る方法を知らない。
が、何に使うのか。そこには興味がある。

575 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 07:46:16 ]
実行時のAOPで出来ないの?

576 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 07:59:22 ]
>>575
AOP…
私の知ってるAOPはバイトコードをいじるのですが、何か別の方法があるのでしょうか

577 名前:デフォルトの名無しさん [2008/01/31(木) 09:36:44 ]
ちょいと質問です。
TBNって個人のニュースサイトなんですが、
ttp://tbn2.blog50.fc2.com/

タブブラウザのJavaScript実行を切ってても
ページが表示されると勝手に実行に切り替わってしまいます。
というかoffにすることが出来ません。
これってどいゆう仕掛けなんでしょう?



578 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 09:40:44 ]
ここはJavaの質問・相談スレッドだと思う。

579 名前:デフォルトの名無しさん [2008/01/31(木) 09:55:17 ]
>>578
スマソ
どこの板に質問していいか分かんなかったんでココに書き込ませてもらった。
どーしてそうなっちゃうのが知りたいんだが、分かりますか?



580 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 09:58:06 ]
web板へ池

581 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 10:11:16 ]
ここにいる人は知ってるかもしてないけど、文字列解析の良いロジック思いついたから
晒しとくわ。
String word //解析したい文字列
for(int i=0; i<word.length(); i++){
if(word.startsWith("NGワード",i){
//処理したいロジック
}
else{
}
}
//else ifでNGワード追加していけばいくらでも設定できる
こんなんどうでしょ?
もしかしたら文字列の長さ1からカウントするかもしれないけど例外は出ないし
NGワードが最後にあるってことは少ないと思うのでモウマンタイで。

582 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 10:13:27 ]
!目から鱗w天才なんじゃね

583 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 10:17:31 ]
NGワードにJavaScriptを追加しろということですか?

584 名前:581 mailto:sage [2008/01/31(木) 10:19:07 ]
すまそjavadoc見たらlength()の長さは文字列内の16ビットUnicode文字の数に等しくなります。 だと
for(i=1; i<=word.length(); i++){
}
に修正

585 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 11:08:51 ]
>else ifでNGワード追加していけば

この時点ですごく残念な感じが漂っているような気が。

586 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 11:37:53 ]
・・・。
ヘボすぎてため息出ちゃうね。

587 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 11:42:10 ]
>NGワードが最後にあるってことは少ないと思うのでモウマンタイで。
大問題w

588 名前:森園くるみ [2008/01/31(木) 11:55:10 ]
森園くるみと申します。

★実装方法についてご教授いただきたくぞんじます。

内容:s2Maiでhtml形式のメールを送信したい
(Content-Typeにtext/htmlを設定したい)


589 名前:581 mailto:sage [2008/01/31(木) 12:01:05 ]
失礼、私もまだまだでしたね。
ロジックを思いついた勢いでへボソース晒してスマソ



590 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 13:19:39 ]
>>588
Seasarのスレに行った方が早いんじゃない。
あと、本物か知らないけど名前は書かないほうがいいよ。

591 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 13:31:14 ]
オープンアプリで、レコードストアとかデータフォルダの容量を
0にするまで一時ファイルを作るようなアプリって
作成可能ですか?

文字をレコードストアに保存するまでは分かったんですが、
でかい容量のファイルの作り方が見つからないので。
初心者なので、参考になりそうなサイトがあったら教えてください

592 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 13:32:52 ]
まず、自分のやりたいことと課題点を整理しなさい。話はそれからだ。

593 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 14:43:06 ]
コンストラクタでのthis漏洩ってどれぐらい気をつける/気にするもんでしょうか?
内部クラス経由の暗黙漏洩、thisキーワードでの明示的漏洩を問わず。
class Foo {
 Bar bar;
 public Foo() {
  bar = new Bar(this);
 }
}
みたいな時、new Bar(this)はthis参照を保存するだけで、それを使うことは無い、とわかってれば
安全なんでしょうが、Barのコンストラクタの実装が変わるとFooも危険になる。
Fooの安全性が、Barの実装に依存することになるのが、なんとなく気持ち悪いけど、割り切ればいいものなのかもしれない。
ってのがモヤモヤするところです。
潔癖にするなら、
class Foo {
 Bar bar null;
 public Foo() {
 }
 public void initialize() }
  bar = new Bar(this);
 }
}
みたいな2段階初期化なんでしょうけど。
Swingのソースとか見ると、this漏洩しまくりなんですけどね。

594 名前:591 mailto:sage [2008/01/31(木) 14:56:18 ]
>>592
簡単に言うと、データフォルダの容量を0byteに出来るようなアプリを作りたいんです。
ただ探してもなかなか見つからないので、
似たようなアプリ、または参考になりそうなサイトがあったら
教えて頂きたいのです

595 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 15:00:44 ]
今Jasminでバイトコードのアセンブルやろうと思ってるんだけど、
これって既存のclassファイルをJasminのコードに逆汗(?)してくれたりする?
いかんせん情報が少ないような

596 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 15:17:12 ]
>>593
何心配してるかさっぱり分かんねーんですけど、相手への依存性高めたくないなら
(相手が信頼置けないなら) アクセス修飾子きちんと付けたりインターフェース化したり
さらにアダプタや Wrapper で包んで渡せば良いじゃん。

597 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 15:22:59 ]
>>593
this漏洩が問題になるのは、主にマルチスレッド下だと思う
swingはEDTにバインドされているので、まあ、いいか、みたいな感じなのかも?

598 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 15:34:22 ]
検索したら IBM 様のサイトが見つかったけど、this 漏洩なんて御大層な名前
付けるほどでもない単なる非同期設計ミスじゃん。漏洩の使い方間違ってる。

599 名前:581 mailto:sage [2008/01/31(木) 15:51:10 ]
文字列の長さも0からカウントするのね・・・
嘘ブッコいてサーセン



600 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 17:06:55 ]
文字のマッチングは古典なのでアルゴリズムは腐るほどあるよ。

というか、未だに、>>581 のループの意味が分からない・・・・・
何かの謎かけか・・・・
何がしたいか全く不明だ・・・・・

601 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 17:09:59 ]
マジレスする生真面目バカがどんだけ居るか調査してんじゃね。

602 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 17:40:24 ]
>>581
まぁ、アルゴリズムを考えるのは悪くないが…
この程度なら、String.indexOf(String) 使おう
1.5 からは、String.contains(CharSequence) もあるし、
状況に応じて使い分ければなんとかなるもの。

もちろんソースでそのアルゴリズムを確認するのも勉強になることでしょう。

603 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 17:49:01 ]
>>594
なんかのウィルス作成以外の用途があるとは思えないんだが。
そうでないとしても、何したいのか知らないが、そんな力技で
しか実現できない時点で何か間違ってる気がする。

604 名前:591 mailto:sage [2008/01/31(木) 17:54:51 ]
わからないなら黙ってろよ

605 名前:デフォルトの名無しさん [2008/01/31(木) 17:58:57 ]
たいした事いえないなら黙ってろよ

606 名前:デフォルトの名無しさん [2008/01/31(木) 17:59:20 ]
とにかくだまってろよ

607 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 18:01:36 ]
RandomAccessFile#setLength()

608 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 18:04:47 ]
CLDCってRandomAccessFile使えたっけか?

609 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 18:10:31 ]
J2ME の話か。道理で聞きなれない用語使ってると思った。



610 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 18:10:49 ]
クラスあたりから理解できねぇ・・
本が悪いんだろうな本が悪いんだきっと

611 名前:581 mailto:sage [2008/01/31(木) 18:25:32 ]
>602 便利なメソッドがありますね。見落としてました。ありがとうございます。






[ 続きを読む ] / [ 携帯版 ]

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

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