- PR -

printlnについて

投稿者投稿内容
しょむ
ぬし
会議室デビュー日: 2001/09/06
投稿数: 430
投稿日時: 2002-09-05 18:02
こんぐらいしか思いつかないや。
でも、中身が文字列だったりして先頭空白を先頭空白として扱いたい時もあるはず。

コード:
    static public String trim1(String src) {
	BufferedReader br = new BufferedReader(new StringReader(src));
	StringBuffer buf = new StringBuffer();
	String line = null;
	try {
	    while(null != (line = br.readLine())) {
		int i=0;
		for(;i<line.length(); i++) {
		    char c = line.charAt(i);
		    if (c != ' ' && c != '\t') { break; }
		}
		buf.append(line.substring(i));
	    }
	return buf.toString();
	} catch (IOException ex) {
	    ex.printStackTrace();
	    return "";
	}
    }



しかし、やっぱり XML 文字表現生成時にインデントとかするかどうか制御できそうな気がするんですけど。
koseki
ベテラン
会議室デビュー日: 2002/08/01
投稿数: 93
投稿日時: 2002-09-06 10:13
OracleのXMLSQLUtilityを使っていて、
ResultSetの内容を自動的にXMLに変換してくれます。
例えば、OracleのTable定義でChar(3)にしていると
3文字に達していなくても後ろにスペースが入ります。
それに、タグの終わり毎に改行されてしまっています。

回線が細い為、なるべく通信トラフィックを減らそうとしていました。

今まではXMLの形を崩さない様にスペースを取るのに文字列ループを2回と
改行コードを取るのに1回していました。
ある程度長い文字列だと、処理時間が掛かるしCPU使用率も上がってしまう
という現状です。
これで遅くなるなら、何もせずに送った方がサーバーには負荷が掛かりませんでした。
t-wata
大ベテラン
会議室デビュー日: 2002/07/12
投稿数: 209
お住まい・勤務地: 東京
投稿日時: 2002-09-06 12:47
> 回線が細い為、なるべく通信トラフィックを減らそうとしていました。

だったら、そんなせこいことせずに、gzipで圧縮して送りだせばいいのでは?
大抵のブラウザはAccept-Encoding gzipなはずですが。
まりり
ぬし
会議室デビュー日: 2001/12/05
投稿数: 329
投稿日時: 2002-09-06 13:29
kosekiさん
> 今まではXMLの形を崩さない様にスペースを取るのに文字列ループを2回と
> 改行コードを取るのに1回していました。

 細かい話ですが、スペースと改行取るだけでこれだけループがあるのは
 なんとなく多い気も・・・
 まあ、いいんですけど。


t-wataさん
> だったら、そんなせこいことせずに、gzipで圧縮して送りだせばいいのでは?
> 大抵のブラウザはAccept-Encoding gzipなはずですが。

 環境がわからないので意味がない疑問かもしれませんが、リバースプロキシを
 経由するケースでもgzipで送り出して平気でしょうか?
koseki
ベテラン
会議室デビュー日: 2002/08/01
投稿数: 93
投稿日時: 2002-09-06 16:03
t-wataさん

gzipで送りたいんですけどね。
受取側のクライアントはブラウザではなくて
Delphiで作った画面なんですよ。
Delphiでやろうと思えばできますが、
すごく面倒です。
それに、解凍用dllも配布しないといけないし。

まりりさん

XMLのスペースを取るのには単純にやってしまうと、
<?xml version="1.0" encoding="Shift_JIS" ?>
の中のスペースまで取られてしまいます。
タグ内はスペースを取らない様にしないと駄目なんですよ。
だから、ループが多くなってしまいます。
t-wata
大ベテラン
会議室デビュー日: 2002/07/12
投稿数: 209
お住まい・勤務地: 東京
投稿日時: 2002-09-06 17:01
まりりさん
> 環境がわからないので意味がない疑問かもしれませんが、リバースプロキシを
> 経由するケースでもgzipで送り出して平気でしょうか?

確認してませんが、
response.seHeader("Vary","Accept-Encoding");
としておけばいけるかもしれません。
プロキシサーバにもよると思いますが。

kosekiさん、
とりあえず、ループは抜いて、実際の回線使用量を見て、
必要なら対策を練るのが良いでしょう。
しょむ
ぬし
会議室デビュー日: 2001/09/06
投稿数: 430
投稿日時: 2002-09-06 18:09
前に別スレで聞いた話だなぁ…
# で、ssh の portforward は検討する価値もないということなんですかね。

>今まではXMLの形を崩さない様にスペースを取るのに文字列ループを2回と
>改行コードを取るのに1回していました。

これを行うことでどのくらいサイズが変わるのでしょうか。
ちうか、ふつうに ResultSet とってきて自前で XML 組む方が早い気がするんですけど。
どうせ DB の吐く XML なんて単純な繰り返しじゃないのかと思うんですが。
まりり
ぬし
会議室デビュー日: 2001/12/05
投稿数: 329
投稿日時: 2002-09-08 15:07
この話題続けても意味はないですが・・・

> <?xml version="1.0" encoding="Shift_JIS" ?>
> の中のスペースまで取られてしまいます。
> タグ内はスペースを取らない様にしないと駄目なんですよ。
> だから、ループが多くなってしまいます。

の部分を読んでなんとなく読み間違えてた気がしてきました。
ループを繰り返してるわけではなくて、二重ループしてたりするわけですね。

スペースとったりという程度の処理だったらタグの中にいるかどうかの
状態を覚えておけば一重ループですむようにも思えますけど。

スキルアップ/キャリアアップ(JOB@IT)