1 :
デフォルトの名無しさん :
2011/09/20(火) 09:07:19.06
テンプレここまで。 スレの最新化以外は全部そのままです。
5 :
デフォルトの名無しさん :2011/09/20(火) 09:46:21.41
Log4JでSwingのJTextAreaにログを出力するAppenderはありますか? また、Logbackで同様のものはありますか?
ファイル内容の比較について質問です。 1KB未満〜100MB程度の二つのテキストファイル内容を比較したいのですが、VMパラメータが-Xmx128mとケチなため、 ファイルの内容をbyte[]で全て取り込んでからStringにしてequals()で比較することはできません。 両ファイルを一行ずつ読んで順次比較していけばいいのですが、変な条件がありまして、 例えば改行区切りでファイルAには「abc」「def」「ghi」、ファイルBには「def」「ghi」「abc」とある場合、 これは一致していると判定させたいのです。 なお、一時ファイルなどの使用は可能なのですが、実現方法はありますでしょうか? もともとは両ファイル内容をそれぞれVectorに入れて、 ファイルAのVectorのforeachループ内でファイルAの要素でファイルBのVectorからremoveしていき、 removeできなかったら差異あり、できたらファイルAのVectorからもremoveし、 最後にどちらか片方のVectorに余りがあれば差異あり、などとしていましたが、 ファイルサイズが大きいとOutOfMemoryErrorが出るため、別の方法を検討しています。
>>6 子プロセスでJavaVMを起動。その際-Xmxを望みの値にすればよい。
>>6 一時ファイル使っていいなら、
ファイルAをソートした整列済みファイルA(一時ファイル)を生成、
ファイルBをソートした整列済みファイルB(一時ファイル)を生成、
整列済みファイル同士を先頭から比較。
ファイルが大きすぎて一度に整列済みファイルにできない場合は
複数に分割してソートして、その後マージする。
宿題とかでないのなら素直にヒープ増量した方がいいと思う。
>>8 改行のない100Mのファイル食わせたら死ぬんじゃね?
1行が大きすぎてOutOfMemoryErrorになる場合は、 ファイルの参照、行の先頭位置と長さを保持した CharSequenceの実装クラスでも作っておいて 比較の度に1Mぐらいで区切って読み込むとか。
ファイルをVectorに見立てる。 Aの行がBにあれば、一致した行を除いてB'に書き出し。 一致行が無ければDiffあり。 一致行があれば、B'をBに置き換える。 欠点は、ディスクIOが凄まじくなる。 最悪、Aの行数*Bのファイルサイズ分のIOになるか。 メモリとのトレードオフだ。 こりゃパズルだな。
組み込みデータベースを使う
>>6 >一時ファイルなどの使用は可能
1.まずAをソートしたA'と、BをソートしたB'を作る。
2.A'とB'のMD5チェックサムを求め、比較する。
15 :
デフォルトの名無しさん :2011/09/20(火) 16:58:12.63
NotSerializableExceptionが出るんですが どのクラスがSerializableじゃないのかってどうやったら特定できますか?
16 :
15 :2011/09/20(火) 17:03:17.33
17 :
デフォルトの名無しさん :2011/09/20(火) 18:14:34.66
Log4JでSwingのJTextAreaにログを出力するAppenderはありますか? また、Logbackで同様のものはありますか?
>>14 ファイルの内容を何も保持しないでソートできるか?
外部コマンド前提?
19 :
デフォルトの名無しさん :2011/09/20(火) 18:34:36.85
"JAppletを継承している事" という制約をinterfaceに書く事は出来ますか? JAppletを継承しているクラスが複数あり、それらを抽象的に扱いたい場合、 どうすればいいでしょうか。
>>15 もうわかってると思うけど
Exception in thread "main" java.io.NotSerializableException: sun.awt.util.IdentityArrayList
で表示されてるクラス(この場合はIdentityArrayList)が直列化可能でないクラスね。
>>16 いやimplements Serializableで例外は出なくなったけど?
elementDataフィールドがtransientなのでおそらく期待通りには動作しないと思うけど。
>>19 言葉通りの意味でとらえると、Javaでそれを実現するのはインタフェースでなく抽象クラスだね。
JApplet <- 抽象クラス <- 自作JApplet継承クラス
のように継承を作ることになる。
…けど、継承でなく委譲を使うべき典型的なパターンではないかと予想。
>>17 ここで聞くよりググれボケ。
両方あるだろ。
>>16 変更前のクラスが残っててそっちがロードされてるとかじゃないの?
>>6 MD5等のダイジェストを各行毎に求めて何らかの方法で足し合わせる
加算は可換なので、順序が入れ替わっても同一視される
一行が長くとも、ストリームからダイジェストを求めるようにすればOK
あとは神様に、
同一のダイジェストを生成する異なるメッセージが含まれてないことを祈る
また、足し合わせたら同じダイジェストの合計値になるような異なるメッセージの組が含まれていないことを祈る
23 :
19 :2011/09/20(火) 20:11:15.56
>>20 委譲の使い方は例えばどんな形をイメージしてますか?
Appletクラスは1つだけにして委譲先のオブジェクトを外部から注入する事で異なるアプレットとして振舞わせる
という事も考えましたが、
エントリーポイントでApplet系クラスを継承しないとアプレットとして動作出来ないんじゃないかと思ったんです。
だから各エントリーポイント毎に(各アプレットアプリ毎に)Applet系クラスを継承したものを使っていました。
javaを始めて開始10分 Scanner s = new Scanner(System.in); int a = s.nextInt(); 入力要求で求めたsをaに入れる javaとしたらこう書くのが当然なの? C厨UZEEEになるのかもしれないけど Scanner s; s = new Scanner(略) int a; a = s.nexInt(); みたいのがしっくり来る。 nextInt()の方は1行でもいいけど、型や定数の宣言をしながら値の入れ替えをする というのがJava文化?
さすがにそれは好きにしろとしか…
>>24 C++ でも C でもそういう文化になりつつある。
for (int i = 0; i < N; i++)
というのをみかけませんか?
>>24 あれ?むしろCだと
const int a;
a = s.nextInt();
みたいなのができないので1文で書くのが普通なんじゃないの?
今のCだとできるのかな?
>>26 それはスコープの話が絡むのでまた意味合いが異なる。
Scanner s;
int a;
s = new Scanner(略)
a = s.nexInt();
みたいに変数宣言と処理がきっちりわかれてるのが
昔のC言語風な感じ。
>>24 の後者のは変態的に見える。
30 :
27 :2011/09/20(火) 21:32:43.62
あ、昔のCは変数宣言は最初に行わないといけないので
宣言と代入は別々にするのが普通だったね。
それをひきずってるのなら
>>24 の通りかも。
Javaについてはどっちの書き方も普通に見かける。
書籍なんかだと行数の都合等で前者の書き方が多いのかもしれない。
あとfinal変数は宣言と同時に代入を行わないといけないという誤解をしてる人もいるので
そういう人は前者になるだろうね。
>>29 実際はそういう書き方になるね
24はちょっとキモいけど分解したという事で宣言をきっちり分かれさせなかった
ただやっぱJavaだと宣言しつつ〜というのに慣れろって雰囲気というのが分かったので十分っす
32 :
27 :2011/09/20(火) 21:35:01.28
33 :
デフォルトの名無しさん :2011/09/20(火) 21:39:53.91
Log4JでSwingのJTextAreaにログを出力するAppenderはありますか? また、Logbackで同様のものはありますか? URLを貼ってもらえると助かります。
34 :
デフォルトの名無しさん :2011/09/20(火) 22:26:36.86
委譲って private DelegationClass delegation = new DelegationClass(); public void method(){ delegation.method(); } みたいにやりますよね? このメソッドを透過させるコードが面倒なんですが 継承とかを使って省略する方法は無いんでしょうか?
>>34 複数のスーパークラスから継承可能な仕様の言語なら‥‥‥。
移譲はeclipseで自動生成してるで
>>31 Javaだと、っていうより
近代的な言語は変数スコープを狭めるのが
良いコーディングプラクティス
冒頭で変数宣言がずらずらずら
そのあと代入が始まって、ってのは言語問わず時代遅れ
38 :
37 :2011/09/21(水) 00:14:52.29
途中で送信しちまった だから、一行で書くかどうかは余り本質じゃない
39 :
37 :2011/09/21(水) 00:16:25.82
>>34 継承も移譲も、まるでわかってないようだな
JPAでトランザクションを自分で操作してinsertやupdateしたいのですが、どんな感じにやるのでしょうか?
API定まってるだろ。見てこいよ
42 :
デフォルトの名無しさん :2011/09/21(水) 01:12:57.56
オレオレ用語乙な記事読むと 頭悪くなりませんか?
記事ってより便所の落書きだな わかってないことがわかってない そいつがまたわからない奴を量産する
>>23 具体的にやりたいことが分からないと答えようがない。
> JAppletを継承しているクラスが複数あり、それらを抽象的に扱いたい
だけ見るとJAppletにアップキャストすりゃいいじゃん、となる。
前スレ
>>995 だけど、
ネット繋がらないところでJava開発環境構築したいなら、
くれぐれもMavenには手を出さない方がいい。
しつこく何回も連投でJTextAreaでログ出力する方法を訪ねている人は、 とりあえずjavax.swing.text.Document通じて JTextComponentのコンテンツを更新する方法をググろうな。
swingって趣味的要素が強い? 業務でも利用してたりするの? GUIならC++で作っちまえって感じなのかな 簡単以外でJava良さってよくわからない 通信関係が楽とかいう噂を耳にしたけど そういうライブラリやらメソッドが多い?
Javaでかけたら、C++でもかけるとおもう Javaでかいとけば、WindowsでもLinuxでもうごくとおもう
>>50 new と delete の整合性はどうする?
NetBeansでマウス操作でGUI作ってたら自作のPanelを追加した途端にGUI画面が表示されなくなったり、 excelみたいなソフトを自作してて一つのセルの中に複数行の文字を入れようとしたらできなかったりして、 C#でやったらどっちの問題も起きずにスムーズにいったからもうJavaでGUIアプリは作りたくない
トレーディングツールのいくつかはSwingで書かれていたな 通信関連が楽と言うのはあるのかもしれないね
馬鹿には無理w
55 :
デフォルトの名無しさん :2011/09/21(水) 22:51:39.05
>>49 俺は業務アプリもJavaで書いてるプロジェクトにいたけど、
元々VBとかMFCのものを移植しようと思ったときには、やっぱり.NET系の選択になるんじゃないかな。
あと、商用コンポーネントは.NETの方が揃ってるよね。
>>53 それってApplet全盛期に作られたもの(の後継)だったりしないかな。
そういうのもやっぱり選択肢としてはJava以外にはなりにくいと思う。
>>52 良かったね。
Javaの業務システムだと帳票はどうするのが普通?
60 :
デフォルトの名無しさん :2011/09/22(木) 01:15:49.97
プログラミングを始めてする初心者が、eclipseでjavaを勉強しようと思うのですが、参考になる本などを教えてください。 お願いします。
eclipseのヘルプ JavaのAPIドキュメント
日経ソフトウェア java
63 :
デフォルトの名無しさん :2011/09/22(木) 02:23:33.21
jna(jni)にて、WinAPIのSendInput関数を呼び出しているんですが、 その中でVK_SNAPSHOTというWindowsAPIの定数を使います。 javac でコンパイルすると当たり前のようですが、「シンボルを見つけられません」というエラーがでます。 どうすればいいんでしょうか? ちなみに、WindowsAPIプログラムだとSendInput関数はこう書きます。↓ SendInput(VK_SNAPSHOT, 0, 0, 0);
64 :
63 :2011/09/22(木) 02:24:52.80
要するに、VK_SNAPSHOTの取得方法を知りたいのです。
SendInputの使い方おかしい気がするけど置いといて。 ヘッダからVK_SNAPSHOTの値しらべて static final byte VK_SNAPSHOT=0x2cとか
66 :
63 :2011/09/22(木) 11:38:23.73
>>65 どうもありがとうございます。
ヘッダに書いてある値をそのまま使えばいいんですね。なにしろ、jnaとかjniは
初めて使うので、よく分かりません。
SendInputの使い方、やはりおかしいですか。
こちらは、WindowsAPIのスレで聞いてみます。
どうもありがとうございました。ヘッダの値を使えばいいということが分かり
大変ありがたいです。
67 :
デフォルトの名無しさん :2011/09/22(木) 13:34:20.60
すいませんが、調べても理解できなかったので質問させて下さい。 今朝から java.lang.OutOfMemoryError: PermGen space が発生してしまい、 対策を考えています。 Permanent領域のサイズを変更するってネットでは書いてあるのですが、 レンタルサーバー(共有)の為できないと思います。 まず確認なのですが、これはメモリ不足って事でいいのでしょうか?
>>67 単純に言えばメモリ不足、と言う認識で合ってる。
で、そのエラーはハードウェアとしてのメモリが不足しているわけではなく、
JVMに割り当てるメモリが足りていない場合に出る。
つまりjavaコマンドのパラメータで設定できるわけで、OSのユーザ権限は気にしなくて良い。
-XX:MaxPermSizeオプションだったかな?詳しくはそのエラーメッセージでググってくれ。
アプリケーションサーバの話なら、起動スクリプト辺りに設定例が載ってたりもする。
>>67 メモリ不足だけど一般的なヒープ領域じゃなくて、
クラスやメソッドの情報が置いてある特別な領域。
JSPとかで実行時にバイトコード生成しまくると足りなくなる。
70 :
67 :2011/09/22(木) 14:22:46.63
ありがとうございます。
>>67 はい、アプリケーションサーバーです。趣味でjavaでゲームサイトを作成しています。
1stレンタルサーバーを使っていますが起動スクリプト設定について調べてみます!
>>69 バイトコード生成しまくるとですか。
jspは多用していますが、もっと不必要なコードは無くした方がいいと言うことですか?
System.out.println(Runtime.getRuntime().freeMemory());を書いて
メモリを見て見ましたが、同じJSPページを開くたびにメモリが減っていきます
JSP開く前 78500536
JSP開いた後 77765592
ガベージコレクションの対象にはならないのでしょうか
71 :
67 :2011/09/22(木) 15:38:33.47
サーバー上bin/catalina.sh を作って export CATALINA_OPTS="-server -Xmx1280m -Xms640m -Xss1024K -XX:PermSize=128m -XX:MaxPermSize=128m" を書いたらエラーが無くなり表示できました。 本当にありがとうございました。正直死ぬかと思いました
72 :
63 :2011/09/22(木) 16:39:41.18
>>65 WinAPIのスレでも色々教えてもらって、その後できました。ありがとう。
73 :
デフォルトの名無しさん :2011/09/22(木) 17:34:05.79
java消してしまったんですがjavaって有料なんですか?
sun.security.jca.GetInstanceクラスが入ってるjarファイルの名前を教えて下さい。 よろしくお願いします。
76 :
デフォルトの名無しさん :2011/09/22(木) 19:23:51.54
Javaで整数の累乗をしたい場合どうすればいいですか? double Math.pow(double, double)ではdoubleなので不満です。 long Math.pow(long, long)みたいなものはないのでしょうか?
BigDecimalは?
3.4の0.5乗とかは平方根より難しい問題だけど、 整数同士の累乗ぐらい自力で書けよぉ
しょーもない質問だけど、インデントってタブ派?スペース4個派? Javaでの最大勢力を知りたい。
eclipseのalt+shift+jとかデフォで4スペースじゃん
それは表記の問題でした
Javaの資格って取る価値あります?
大学のプロコンでプログラムを作成するのですが、アイデアが浮かびません aiに興味があるのでaiを使ったjavaのゲームなんかを作りたいのですが、トランプやオセロくらいしか思いつかなかったのですが javaで作れそうなものでaiを使ったゲームって何かありませんか?
資格なんて おなじ会社にいるなら関係ない すぐやめてあっちこっち転職するなら意味あるかな
88 :
デフォルトの名無しさん :2011/09/22(木) 22:24:16.24
JavaからノーツへDIIOPで接続しようとしているんだが、 could not open session org.omg.CORBA.COMM_FAILURE : java.net.ConnectException: Connection refused のようなエラーが出て接続できない。ちなみにDIIOPサービスもHTTPサービスもあがっている 数日前まで普通に接続できていたのになぜか業者がnote.iniの設定を(クラスターがらみ) 加えた後から接続できなくなった。マイナーなノーツとJava関係だけど、知っている人いたら 教えてください。_(_ _)_
>>85 会社によっては手当てがついた事もある。今はどうか知らん。
>>81 可愛い後輩がネスト大好き病にかかるとかわいそうなので、
新人教育では8スペースをインデント単位にしてる。16でもいいと思っているぞ
8って結構あるよね。4派だけど見慣れてるから違和感なしに読める。
return this.num < 5;としているところで、 ClassCastException occured : java.lang.String cannot be cast to java.lang.Integer というエラーが起きてしまいます。 numはintで定義しているのですが、原因わかりますか?
ソース晒せ。エスパーは居らん。
ggr
96 :
デフォルトの名無しさん :2011/09/23(金) 01:23:06.16
>>86 今までに無いゲームを新しく作り出してくれるソフト。
若しくはai作成のゲームの面白さを競うゲーム。
97 :
デフォルトの名無しさん :2011/09/23(金) 01:26:48.78
WEBフレームワーク+Javaで書かれた検索エンジン という事をやろうとした時に、検索エンジンをどう常駐化させるのが良いと思いますか? Java Service Wrapperを使って常駐プロセス化するか そうするとプロセス間通信が必要になりプラットフォームに依存するんじゃないか あるいはWEBフレームワークにそういう機能が無いか探してみるか (常駐させたいオブジェクトを登録できるような)
焼酎させたい理由をかけよ それからだ
99 :
97 :2011/09/23(金) 01:37:21.00
検索エンジンのコンストラクタの実行にかなりの負荷がかかるから JSW+ODBCならプラットフォームに依存せずに書けそう ただ他のアプリケーションから利用されるものではないから別段常駐プロセス化する必要は無い 使用するWEBフレームワークはまだ決めていないので 主要なフレームワークで、各アクセスでオブジェクトを共有する機能があればいいんだけど
100 :
97 :2011/09/23(金) 01:51:37.63
シングルトンパターンをやったら、 1つのWEBコンテナ内で1つのインスタンスしか作られないのかな? staticメンバの初期化がどのタイミングで行われるのかが分からない。 Webコンテナの役割が分かってない。
>>89 「ObjectOriented を理解している」と周囲にアピールすることはできませんかね?
102 :
デフォルトの名無しさん :2011/09/23(金) 02:27:17.93
ArrayListと配列のパフォーマンスの違いを定量評価してるHPあったら教えてください
>>97 ユーザインタフェースは、HTML5 + jQuery + ajax-solr
検索エンジンは、Apache Solr ではだめなの?
>各アクセスでオブジェクトを共有する機能があればいいんだけど
object を application スコープ(HttpServlet#getServletContext())
に入れておけば、共有できるけど、
排他とかめんどい & 「検索エンジン」を使う処理は1多重でしか
動かなくなる のでやらない方がいい
>>99 APサーバ再起動しても、検索エンジンの再起動はしたくない
位の要望か
得られるメリットの割りに、わかつてないこと大杉なら
わさわさわ複雑化にすることはない
APサーバの起動時に初期化すればいい
シンプルにいけ。
JDBCからPostgreSQLの幾何演算子を使いたいんですが、 これらの演算子には ? を含むものがあります(?#とか)。 しかし、PreparedStatementでは ? がプレースホルダーとして認識されてしまいエラーになります。 PreparedじゃないStatementなら使えるのはわかってるのですが、 PreparedStatementで何とかする方法ご存知の方いませんか?
106 :
デフォルトの名無しさん :2011/09/23(金) 20:58:09.53
なんでこれ文字化けするの? public static void main(String args[]){ String test = "aiueo"; byte[] btest; try { btest = test.getBytes("UTF-8"); System.out.println(btest.toString()); System.out.println(test); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } } 出力結果 [B@10b30a7 aiueo
>>108 System.out.println(new String(btest));
これでいけたわ
110 :
105 :2011/09/23(金) 21:23:41.34
>>107 thx
演算子の代わりに関数呼ぶようにしときます。
>>109 "aiueo"ならいけるけどnew String(btest, "UTF-8")にすべし。
だまってろハゲ
まだのこっとるわ
115 :
デフォルトの名無しさん :2011/09/24(土) 01:56:14.23
あるクラスからデータを取得したいとして、 そのデータはクラス内の変数に格納しておくか 取得する都度計算するのはどっちの方がいいんですか?
よしなにどーぞ
継承やデザインパターンの質問なんですが、 サブクラスを作るにあたって、スーパークラスのある定数さえ上書き(?)できれば後は記述不要、 という状況でうまいやり方はあるでしょうか? class MySuperClass{ private int HOGE_TEISU = xxx; // ※得に private である必然性はナシ public void hoge(){ // HOGE_TEISUを使ってなんか処理 HOGE_TEISU } } class MySubClass extends MySuperClass{ private int HOGE_TEISU = yyy; // これをSuper#hoge()で使ってくれればおk } 定数をprivate にしてgetterを作れば解決なんですけど、なんかダサいような。
可変なのに定数にしてる奴www
>>118 いや定数だし・・
と思ったけどコンストラクタで定数を上書きすればいいのね。ありがとう。
getterはダサいのにそれはダサくないのか… てか定数つったらfinalだろJK
ぐはぁfinalフィールドはサブクラスのコンストラクタから代入できないじゃん・・。
というわけでスマートな方法引き続きお願いします。
>>120 定数なんだからfinalだよ。
>>121 initializer
protected
finalを取ってgetterを使う
Javaはダサいから、定数が可変になる他の言語を見つけるといいよ
定数じゃないのに定数って言い張るからおかしくなってるだけだろ
定数がひとつ違うだけのサブクラスを作りたいって要望だろ? 定数が可変かどうかはまったく関連性ないと思うが
定数が可変かどうかw 相変わらずアホすれですなw
定数を派生させる必要が生じた事がない
>>117 public static final int DEFAULT_HOGE = xxx;
private final int HOGE;
public MyClass(){ this(DEFAULT_HOGE); }
public MyClass(int hoge) { HOGE = hoge; }
public void hoge(){ /* HOGE を使うなんらかの処理*/ }
みたいにしちゃいかんの?
同一インスタンス内では定数、デフォルト値は固定みたいな感じで。
HOGEを大文字で書くな intじゃなくenumかクラスにしろ
定数もenumで列挙される要素も大文字が基本 文字数減らすためだけにint使ってるのか 実際にintが必要なのか判断つかんのに enumかクラスにしろとか阿呆すぎる
下手くそは精神性からして下手がしみついてる。 xxx以外の値わたされたらどーすんの?とか想像力がかけてる
そもそもintを選んだのは質問主だし そんぐらい自分で対応できんだろ
バカの一つ覚え見たく、何かっていうと 継承継承いうやついるよなー
今回もめでたく解決できませんでした。終了
finalって言語仕様じゃ一度代入したら変更できない変数じゃなかったっけ? 何で定数が広まったん?javaで定数言ったらリテラル一択じゃん。
文字列定数全否定はいりました!
文字列リテラル……
一般的にジャバの話題での定数とはfinal変数のことです。
文字列をnewしたっていいじゃない 人間だもの
staticついてないfinalなんて定数ぢゃない
意味ゅーたぶるぢゃないfinalなんて定数是正ぢゃない
一般的にジャバの話題での定数とはpublic static final変数のことです。
finalで修飾されてて初期化子が定数式なら ローカル変数だろうがインスタンスフィールドだろうが定数
初期化子という語の使い方まちがってね?
ジャバからプログラミングの世界に入った人は定数なら普通はenumを使うよう教わります。
トラ世代、馬世代か。 昔カマキリとかいたんだよ?
定数とかfinalとかこのあたりはちゃんと勉強してるとわかるんだけどジャバ言語とシー言語は全然違うんだよねw
>>146 んなこと言うけど、1.0.2にはenumなんてなかったし
せめて1.3位で申告しろよw
pcエミュレータを使ってjdk 1.0とかjdk 1.1とか昔の開発環境を整えたいのでが昔のはどこにあるんですか?
Javaにはタイガーとかドルフィンとか コードネームに動物名つける文化があるけど、 少しずつ付けられる動物名が減ってる。 でも、予約済の動物もいる。 そう人間だ。 いつ使うかというと、世界がもう滅びるけどどうしようもない という時に使うんだと。 人類の功績、足跡を讃えた最後のリリース そのコードネームがヒューマン 信じられないかもしれないけど全部デタラメです
ジャヴァの言語仕様上、10進整数リテラルで負の数が扱えないことを 知らない人は意外と多い。 だからといって負の整数の定数が書けないわけではない。 ※ 8進や16進や浮動小数点なら、負の数もリテラルで扱える。
みんな知ってると思うけど Eclipseの名前の由来は月食。 月が太陽を隠すお馴染みのデザインは Sunを食ってやる!という野心的なジョークだ。 そして。 JavaがSunからオラクルの手に渡ったのは 本当にたべられちゃったから。
1999年当時、プログラミンの世界にもしダイブするならカプセル化はやっぱりジャバを選択しましたよね?
ハローワールド
>>153 負の数が扱えないのはfloatリテラルも同じだが・・・
言語仕様上、負の数が扱えない ってどういう意味ゅー?
>>159 単項マイナスとリテラルは別々に定義されてるよって話なんじゃね?
本人じゃないから良くわからんが。
2147483648とか9223372036854775808Lとか 単項マイナス付かないと使えない場合もあるけどな
>>145 VariableInitializerは冗長に訳しても変数初期化子だし初期化子と訳してる文書もある
StaticInitializerやらInstanceInitializerと区別がつかない文脈ならともかく
この場合は変数を削って初期化子で通じると思うがな
将来的にジャバコーダー目指すなら英語程度が出来れば問題ないけどハッカーレベルを目指するなら数学センスもみがいておかないとジャバとか英語とかいくら勉強しても自分で何もデザインできない
うちの三姉妹 ♪ふー!すー!ちー!あい!あい! ♪負!数!値!あい!あい!
166 :
デフォルトの名無しさん :2011/09/24(土) 15:59:59.08
two dimensional arrayを使って ----------------- | | | | | | | | | ! | | | | | | ----------------- | | | | | | | * | | | | | | | | ----------------- | | | | | | | | o | | | | | | | ----------------- | | | | | | | | | ^ | | | | | | ----------------- こんな感じの4x4のボード表示させて中の^を動かしたいんですけど 4x4のボードが10x10までダイナミックに変えられるとしてどういうグリッドの表示方法がありますかね? -と|はasciiです。
>>121 諦めてテンプレートメソッドを使えばいいのに
169 :
デフォルトの名無しさん :2011/09/25(日) 00:17:27.26
Javaって今後5年くらいは使われますか?
>>169 Java 自体の寿命は案外短いかもしれないが、Java習得で得たObject-Oriented の知識はかなり役に立つだろう
Smalltalkは廃れたがObject-OrientedはJavaに生きている
172 :
デフォルトの名無しさん :2011/09/25(日) 01:03:15.23
Javaに代わるものって何だろう? Rubyとか?
Javaのプラットフォーム非依存は、サーバ側や組み込みシステムのアプリケーションに関しては、非常に成功している。 サーバ側(Java EE)では、Javaのサーブレット、Webサービス、EJB(Enterprise JavaBeans)などの技術が広く使われている。 組み込みシステムの分野においても、組み込みシステム向けのJava環境(Java ME)を使った OSGi を基にした開発が広く行われている Java - Wikipedia
GAEがJava採用してC#採用してない時点でJavaはまだまだ続く Googleが提供してるオープンソースもJavaかC++かPythonで役割が分かれてる Javaを殺すとしたらC#しかないが、言語仕様は優れていても敵だらけだ
175 :
デフォルトの名無しさん :2011/09/25(日) 03:44:43.47
kyotocabinetのTreeDBってB+木使ってるのに 1つのキーで複数のレコードをまとめて取れないの? JavaラッパーのAPIしか見て無いけど。 match_prefix()でキー一覧とってそれから各キーで完全一致して、とかじゃなくて match_prefix()みたいなのでそのまま該当したキー全ての全レコードを取得するAPIが欲しいんだけど 明らかにそういうのが無いとTreeDBのメリット生かし切れ無いよね
>>174 MS自身が敵だからなw
いつ気まぐれで言語仕様を根本から変えるかわからんw
swingで作ったプログラムを、 タスクバーボタンを非表示にしたいんだが、いい方法ないかな? タスクトレイにすら入れたくない Delphiだと Application.ShowMainForm := False; で出来るってのはググって見つけたんだが、こいつのjavaバージョンが欲しい
>>177 JDialog使うくらいしか方法なさそう
>>179 最初からFile#listFiles(FilenameFilter)使うのはダメなんか?
184 :
177 :2011/09/25(日) 20:59:38.97
>>178 試してみたらその方法で上手くいきそうです
ありがとう
Swingを用いて、画面上に、タイトルバー等を含まないクライアント領域だけのウィンドウを 表示させることは可能でしょうか?もし可能であれば方法を教えて頂けないでしょうか?
馬鹿には無理
>>185 setUndecorated(true)
189 :
67 :2011/09/26(月) 02:54:14.59
一般的な現在の観覧者数ってカウンターは何を表示してるんですか?セッション数?
スレチ
191 :
デフォルトの名無しさん :2011/09/26(月) 04:44:56.23
これより速い実装ある? public static boolean isZero(byte[] b){ int i=0; for(byte here : b){ i+=here; } return i==0; }
192 :
191 :2011/09/26(月) 04:46:41.03
-serverオプション付きで。
それが世界一速いよ!
おれはJavaがすきだ
妹の枕をくんかくんかしてたら下半身に違和感を感じたので こんにゃくをたべてみたらカルピスが出てきたのですがこれが恋ですか?
196 :
デフォルトの名無しさん :2011/09/26(月) 09:55:14.84
なんでこれmap.size()が2になるの? 同じキーなら上書きになって1になるんでは? public void testHashMap(){ HashMap<byte[], String> map = new HashMap<byte[], String>(); map.put(new byte[]{1,1,1,1}, "a"); map.put(new byte[]{1,1,1,1}, "b"); System.out.println(map.size());//2 }
同じキーなら1になるな
>>196 System.out.println(new byte[]{1,1,1,1}.equals(new byte[]{1,1,1,1}));
>>195 価値観は人それぞれなので否定はしないけど
それは恋じゃなくて変だ
>>201 ワロタ
まあ頻度にもよるけど、0じゃないことが多いなら、
if(here!=0)return false;
にするとか、ループの途中に適度に
if(i!=0)return false;
入れるとかすると途中で撃ち切れて早いかもね
足し算じゃなくてor使えよ。
>>177 setDefaultCloseOperation(HIDE_ON_CLOSE);
でできない?
205 :
デフォルトの名無しさん :2011/09/26(月) 18:14:03.65
javaでのグローバルフックについて質問です C++で作ったグローバルフックのDLLをjavaで読み込んで使うことはできますか?
JNIを挟むってことか?
>>206 はい、JNIやJNAを使った場合です
こういった方法でDLLを読み込んでもグローバルフックは機能するのでしょうか?
208 :
デフォルトの名無しさん :2011/09/26(月) 20:42:08.86
JUnit4がメソッド単位じゃなく同じクラス内の全テストケースを勝手に実行するので JUnit3がデフォルトで使われるようにしたいんですがどうすればいいですか?
209 :
208 :2011/09/26(月) 20:45:39.39
すみません、JUNIT4にいらつくあまり書き忘れました Eclipseの話です
>>207 なぜ出来ないと思ったんだ?
まず試してみろ。話はそれからだ。
>>211 すみません、c++で作ってたのをjavaに移植するために勉強したいと思ったんだけど、
フックが使えないならjava勉強する理由が一つ減ってしまうので先に質問させていただきました
ということはできると思っていいのでしょうか?
勉強してみます
出来ないよ
HexDumpEncoder hexdumpencoder = new HexDumpEncoder(); out.println(hexdumpencoder.encodeBuffer(byteArray)); を、独自に実装しているのですが、出力が変なので教えてください。 int no = 0x0000; BLOCK: for (int i = 0; i < byteArray.length; i++) { for (int j = 0; j < 16; j++) { if (i*16+j >= byteArray.length) break BLOCK; if (j==0) { out.print( ((i==0)?"0":"")+Integer.toHexString(0xFF & no*16).toUpperCase()); out.print( ((i==0)?"0":"")+Integer.toHexString(0xFF & no).toUpperCase()+":"); no+=16; } if (j==6) out.print(" "); out.print(" "+Integer.toHexString(0xFF & byteArray[i*16+j]).toUpperCase()); } out.println(); } out.flush();
結果は以下のようになってしまいます。 0000: 61 62 63 64 41 42 43 44 E3 81 82 E3 81 84 E3 81 abcdABCD........ 0010: 86 E3 81 88 E3 81 8A E3 81 8B E3 81 8D E3 81 8F ................ 0020: E3 81 91 E3 81 93 E3 81 95 E3 81 97 E3 81 99 E3 ................ 0030: 81 9B E3 81 9D E3 83 86 E3 82 B9 E3 83 88 E3 83 ................ 0040: 86 E3 82 B9 E3 83 88 E3 83 86 E3 82 B9 E3 83 88 ................ 0050: E3 83 86 E3 82 B9 E3 83 88 E8 A9 A6 E9 A8 93 E8 ................ 0060: A9 A6 E9 A8 93 E8 A9 A6 E9 A8 93 E8 A9 A6 E9 A8 ................ 0070: 93 . 0000: 61 62 63 64 41 42 43 44 E3 81 82 E3 81 84 E3 81 10010: 86 E3 81 88 E3 81 8A E3 81 8B E3 81 8D E3 81 8F 20020: E3 81 91 E3 81 93 E3 81 95 E3 81 97 E3 81 99 E3 30030: 81 9B E3 81 9D E3 83 86 E3 82 B9 E3 83 88 E3 83 40040: 86 E3 82 B9 E3 83 88 E3 83 86 E3 82 B9 E3 83 88 50050: E3 83 86 E3 82 B9 E3 83 88 E8 A9 A6 E9 A8 93 E8 60060: A9 A6 E9 A8 93 E8 A9 A6 E9 A8 93 E8 A9 A6 E9 A8 70070: 93 ↑ここが変になります。上の例ように出力するには、どうしたらよいのでしょうか?
>>213 できないんですね・・・。
ありがとうございます
自己解決しました。
どう解決したか位書いてけよクズ 二度と来るな
教えてもらったわけでもないのにそんなことする義理はありません^^
利用することだけ一丁前ってか 図々しさが隠しきれない生ゴミ
ジャバラーならそろそろ「馬鹿みたく答える方が馬鹿丸出し」ってことに気がついた方が
答えられないなら黙ってれば良いのに全レスする馬鹿は死ね
せめてHadoopぐらい使おうな
このスレは馬鹿生成工場です
バカには無理
もういっそ ggrksをテンプレにしとけ 全レスそれでおk
〇〇には無理さんがスレの雰囲気を悪くしてる諸悪の根源 消えてくれ
>>226 もちろんジャバなんで使うのはファクトリー・パータンですよ
そんなパターンない わかってるフリしてわかってない典型
馬鹿には無理w
とある生徒が職員室に来て数学教師に相談していた。 浮かない顔の学生に数学教師は笑って答えた。 「数学なんて簡単だよ。結局はパターンだよ。ぱ・た・あ・ん」 と。 それを見ていた英語教師が「違う!」と叫んだ。 「パターンじゃない!」 「パ↑ターンだよ。パ↑ターン。発音は正確にね☆」
ていうか、長音よりも「ジャバ」の方にツッコミを入れるんじゃないの普通?
Factory Method Pattern 無知は黙ってろ
237 :
デフォルトの名無しさん :2011/09/27(火) 01:38:48.80
Hadoop関連やってる奴いる?
Factory Method Patternのことを ファクトリーパターンって呼んじゃうやつは コード書かせると大抵かけないよね Abstract Facotryとの違いもわかってなくて 亜流の麺用なのをファクトリーパターンってよんで それがGOFのアレだと思い込んでたりする
>> 237 いる。 .NETの方がいろいろ親切だと思う。
>238 factoryパターン知らないなら黙ってればいいのに…
>>238 GoFだけがデザインパターンだと思ってる人ってまともなコードが書けなさそう
アンテナ低いっていうか世界が狭いっていうか
GOF以外にもファクトリパターンなんてのはないよ。
正式名称知ってれば
>>238 の方が正しいのは自明なのに。
無知が増えたなあ。。。
俺のターン!俺のターン!
正式名称もクソもFactoryとFactory Methodは別物
俺のパターン!俺のパターン! ファクトリ関連で一般認知されてるのは3つでしょ うちGOF2つ、他1つ。 無知からか無思慮からか、それらをグチャ混ぜにして ファクトリってよぶ奴が蔓延した時代背景がある 頭がぐちゃぐちゃの奴は知ったかするのはなしの方向でね
馬鹿にはムリだわなw
スレが伸びる時はたいてい下らない話題だな ファクトリ→実はわかってない or 間違って覚えてる なんだからggrksで最初から終わってる >> 223
初心者同士、仲良くしろよ
ググってばかりだから間違った情報を鵜呑みにしてるんでしょ ggrksは万能じゃない
10年くらい前に出尽くしたような話題だと おまえら元気になるなw
こっそりググって今ごろ顔真っ赤なんだろうなー
ネットで顔も見えない相手にムキになったり顔真っ赤にするなんて 2ちゃんねらーって意外とナイーブなんですね!!!
ねらーっていってもただの一般人じゃん
一般人は2chなんてやりません 2chするのはねらーだけ
ねらーだから2chするのか 2chするからねらーなのか
javaとは何か、仕組みは何かを絵で説明してくれるところはどこにありますか? 私じゃ調べてもわかんなくて困ってます…
なんでも絵で説明出来ないことを絵で説明しているのは見たことがない
でもJAVAの仕組みやJAVAとは何かを絵で書いて説明しろって言われたんです だから私じゃどうしたらいいかわからなくて;
>>263 入門書に最初の方に図でos/jvm/javaアプリの関係描いてるの在るけど、ああ言うのじゃ無いの?
鉄格子付きの砂場で、人形遣いにあやつられる マリオネットの絵はひどかったな…
main関数の位置はどうするのが正しいスタイルなんですかね。 1. class{フィールド main コンストラクタ メソッド} 2. class{フィールド コンストラクタ メソッド main} 3. class{フィールド コンストラクタ main メソッド}
アルファベット順にしろ
main以外のメソッド、コンストラクタ持たないクラス作れ
>>266 俺は2だな。
mainで簡易テスト書いて、あとでJUnitに置き換えて消したりすることが多い。
その延長で、アプリケーションでもmainは最後に書くようにしている。
oracle + jdbcでvarray項目の値を取得しているのですが なぜか取得した値が???となってしまいます。 通常のvarchar2項目は問題ないのですが、どのような対処が必要でしょうか? java.sql.Array array = rs.getArray("hoge"); String[] mv = (String[])array.getArray(); for (String s : mv) { System.out.println("s=" + s); }
271 :
デフォルトの名無しさん :2011/09/27(火) 19:36:05.61
//メンバー private List list = new ArrayList(); とあって、 //何かのメソッド内 list.add(data); となっているのを private void add(SomeClass data){ list.add(data); } このメソッドで置き換えるとパフォーマンスが20〜30%程度悪化した -serverオプションつきだから最適化でインライン展開されるんじゃないかと思ったけどなぜ悪化するんですか?
例えばArrayList#addのインライン展開から、 private void add(SomeClass)のインライン展開+ArrayList#add()のメソッド呼び出しに切り替わったから遅くなったとか。
ジャバじゃだめなら、ジャヴァ?
>>271 最適化をどこまでやるかはVM依存なので
そういうこともあるかもしれないとしか言えない
下手に複雑なJITをかけると、最適化自体にコストがかかるせいで
全体の実行時間は逆に悪化する可能性すらある
>>273 ノーノー!
じゃば。
♪ドレミファじゃばこで フォーリンラ〜ブ
276 :
デフォルトの名無しさん :2011/09/27(火) 21:48:03.59
visualvmで非常駐アプリをプロファイリングするにはどうしたらいいですか?
277 :
デフォルトの名無しさん :2011/09/28(水) 01:00:07.09
ダウンロードダイアログを放置した後。 保存とか押しても保存されずにダイアログが閉じちゃいます。 ただ。 httpの場合が上記の現象で。 httpsの場合は大丈夫でした。 エラーログはClientAbortExceptionでio.Exceptionでした。 httpとhttpsではコネクションの持ち方とか何かしら違うんでしょうか? タイムアウトの設定とかは同じです。
>>276 NetBeansを使う。
実行コマンドも出力に表示してくれてるから、引数メモっとけばコマンドラインからでも実行可能でしょう。
>>277 かなり高レベルのエスパーが必要な質問内容だな。
280 :
デフォルトの名無しさん :2011/09/28(水) 08:49:02.03
XML、INI、Apache等の設定ファイルなど テキストファイルのパースは良く行われていると思いますが テキストをパースする一般的な手法やライブラリって何がありますか? 正規表現でガリガリ書く以外に何か良いアプローチはあるでしょうか。
自前で再帰下降パーサ書くとかすりゃいいんじゃね?
XMLやINIに再帰下降は使わんだろ
283 :
280 :2011/09/28(水) 09:34:39.21
JavaCC,ANTLR,YACCなどがあるのはわかりました まずJavaCCについて調べてみたところほとんどのサイトがリンク切れで大分古いものだと感じ ツール間の格差が開いているのではないかと思いました どれが一番オススメですか?
ほとんど字句解析だけで終わりでしょ? 普通に手書きでいいよ。ジェネレータ使っても正規表現並べるだけで変わらん。 君が挙げてるようなのは字句解析の後にプログラミング言語の複雑な文法を解析するのがメイン。
まぁ、xmlならsaxが単純でやりやすいかな
個人的によく使うのはjson
使えればいい程度ならカンマ区切りで十分
>>283 であげらてるのは主にオリジナルフォーマット自作する人向けだから、検討違い
元の質問はテキストをパースする一般的な方法を聞いているから、別に違ってる訳ではないと思う だけど、大抵扱うテキストのフォーマットは事前に分かるわけだから、何かしらライブラリがあるだろよ
YACCだけは純粋なパーサジェネレータでスキャナが別途必要だから完全に間違い。 正規表現の代わりにはならん。スキャナジェネレータ使ってもどっちみち正規表現だけど。
xmlを正規表現でパースする奴よくいるけどxml自体は再帰的だから全部が正規表現使えるわけじゃないぞ。 そもそもxmlみたいな単純な仕様を馬鹿でかい正規表現ライブラリつかってトロトロパースすることは無駄なだけだが。 パースするテキストというのに自然言語が含まれないなら手書きで十分だろう。
メソッドをOverrideするときにつける @Override ですが、そのメソッドに javadocを付けたい時、javadocのためのコメントは @Override の前、後 どちらの行に書くべきでしょうか?
普通は前ですな。 というか後ろにつけてるのは見たことが無い。
Commons Configuration とかどうなの 使ってるの見たことないけど
>>290 ありがとうございます。
やはり前がみためてきにも判りやすいですね
eclipseで前に書こうとするとjavadocのテンプレートが動作しないような
気がしたので ? と思ったので
293 :
デフォルトの名無しさん :2011/09/29(木) 08:11:55.00
JavaScriptで書かれたライブラリをJava(サーバーサイド)で使いたいんだけど JavaScriptのオブジェクトをラップしてJavaで受け取ったりとかできないかな? JNIみたいなかんじで その手の技術について何かキーワードだけでも教えて下さい。
Rhinoつかえ。 classファイルにAOTコンパイルできるからRhinoのランタイムをパス通してクラスローダで呼ぶかインポートすれば普通にjavaとして使える。
質問ですが、JavaのWeb系のPGを作成しているのですが、 JOptionPane.showMessageDialogで、既存(作成したもの)のjspを親フォームの指定のやり方でどうすればいいですか? 色々調べてみたのですがわからなくて・・・。 どなたかよろしくお願いします。
何をどう色々調べて見たんだよ
>>296 サーバサイドJavaはServletとJSP
JOptionPaneはSwing(クライアントサイドJava)
根本的に違う。火と水くらい違う。
まあ、JSPでグラフィカルなダイアログが欲しいなら、
JavaScriptで別ウィンドウでも開いてろってこった。
>>298 そうですか・・・。
ログイン画面で、該当なしの場合、
その旨を表示するメッセージを表示しようとしたのですが、
JavaScriptで出すしかないですか・・・。
クライアントサイドのjavascript向けウィジェットが腐るほどあるんだからそういうコード吐けばいいんじゃないの?
ant で exec を使って外部コマンドを実行する時に、'*' や '?' をシェルに解釈させるにはどうしたらいいの? たとえば du -sk * を実行したかったので <exec executable="du"> <arg line="-sk *" /> </exec> としてみたら [exec] du: *: No such file or directory といわれて実行できない。
execにshを指定してargに-c 'du -sk *'じゃダメなん?
>>303 えっ、そんなやり方しかないの?
いくらなんでも、antがそんな低機能なわけない・・・と思いたい。
だって、 「make は unix (shell) に依存しすぎてて、 Makefile のポータビリティが無くて困るから、 環境に依存しない make を作ろうぜ。」 って言って作ったのが ant だから、 sh 依存の機能なんてあるわけない。
filesetとかdirsetを使ってechoかなんかで一旦ファイルに書き出してからプロパティに読み込んで使うとか?
どっかからglob解釈するdu持ってくればいい
du持ってるならshぐらいあるだろうって考えで
>>303 で良いような気もするが。
>>305 なんでそんな結論になるの?
osに依存しないように、antがshellの機能を実装すればいいだけだよね。
shellの全機能なんて望みはしないけど、せめてglobぐらいサポートしてくれてもいいんじゃない?
しかしexecタスクが「*」をサポートしてくれないとは、困った。
duコマンドはunix限定としても、windowsでもunixでもとてもうまく動くpythonを、antのexecタスクで実行するつもりだったのに。
ならpythonで展開したら
>>309 だから、(shell に依存しない glob として) fileset があるじゃん。
java関係ない
314 :
313 :2011/09/29(木) 21:38:37.88
すまん、レスアンカーミスった
アプレットでの画像表示の方法について質問です。 import java.applet.*; import java.awt.*; public class k extends Applet{ Image img; public void init(){ img= getImage(getCodeBase(),"Image.jpg");} public void paint(Graphics g){ g.drawImage(img,10,10,this); } } Eclipceでこのようにコードを打って実行したのですが 画像が表示されません。 getCodeBaseあたりが間違っていると思うのですが… 画像は実行するJAVAファイルと同じディレクトリにあればよいのでしょうか? それとも根本的に何か間違っているのでしょうか? 初歩的かもしれませんがお願いします。
ヒント: antのapplyタスク
317 :
デフォルトの名無しさん :2011/09/29(木) 23:32:06.07
Rhino 1.7R3のPACKAGEオプションって機能しますか?
318 :
317 :2011/09/29(木) 23:46:23.55
小文字で書いたら動きました マニュアル大文字なのに・・・
>>309 自分で書けばいんでねーの?文句言ってる時間でかけるだろ
javaの開発者たちって、何でguiまわりの発展を放置しちゃったの? swingもappletも皆が必要とする良いアプローチだったのに、 結局、かつて蹴散らしたはずのc++に、naclやgtk3でその領域を侵されそうだし デスクトップすらjavascript+html5にすら置き換わりそう
別に放置はしてないと思うけど。 Java6u10があったり、JavaFXを従来のJavaのようにしちゃったり。 全然シェア取れてないよね、というのは同意だけれども。
>>315 Javaファイルと同じディレクトリでいいけど、
Eclipseのパッケージエクスプローラでファイルがk.javaの並びに表示されてるか確認しろ
見えてなければプロジェクトをF5で更新しろ
そしてコンパイル後にbinディレクトリ配下のk.classと
同じディレクトリにImage.jpgがコピーされればおk
Javaからウェブページを取得して、そのウェブページ上のフォームを操作(テキストエリアに入力)して、 submitしてリダイレクト先のページも取得したい。 何を使えば出来ますか?
326 :
42 :2011/09/30(金) 02:35:20.99
327 :
デフォルトの名無しさん :2011/09/30(金) 02:42:18.29
HashMapクラスって、どんな時に有効か誰か例をあげて説明してくれないですか?
>>320 JavaFX始めるためにSwing Labの投資やめたのが転落の始まり。
斜め読みして、FXに投資して大損失出したのかと誤解した。
今手に入る日本語Javaドキュメントの中で最新のzipはどこにあるのでしょうか? 英語版はあるようなのですが日本語版はいろんなルート辿ってもリンク切れで見つけられません。
できる人は今まで解いてきたいろいろな問題や、ファンクションの作り方とかをノートに書き溜めてるんだろうけど どうやってんの?
うごいてるソースコードに//でコメントをいれて、バックアップをとってるんじゃね?
そんなの脳内と既存のコードで十分じゃないの?
基本、既存コードで事足りるけど、職場が変わったとき困るんだよなー。
336 :
デフォルトの名無しさん :2011/09/30(金) 20:42:51.29
プログラミング超初心者ですがjavaを始めたいと思っています。 入門でお勧めの本があれば教えてください。
groovyっておもろい?
scala人気で消滅
つーか、なんやかやと色々やっても、結局、SwingでしこしことGUIプログラム組むことに戻ってきちまうんだよな●ぷぅ〜!!!
>>339 スイングっておもしろい?
勉強になる?
341 :
339 :2011/10/01(土) 01:11:42.21
>>339 おもしろいし、勉強になるけど、実務では使うことはあんまりと思うよ。俺の周りだけかもしれんけど・・
GUIはどうせ分離するように作るから設計の美しさとかどうでもいい まず見た目をなんとかしてくれ
343 :
デフォルトの名無しさん :2011/10/01(土) 01:57:47.50
String.splitだと区切り文字が消えてしまうんですが 区切り文字を残してsplitするにはどうすればいいですか
何処に残るんだか知らないが、後からくっつければ?
splitは正規表現に対応していてどんな文字列に一致したのか取得する手段が無いので後からくっつける事はできません
javaなんかもういいよ objcでやろうぜ!
引数で渡されたStringを変更しても呼び出し元の変数では変わっていないので Stringは値渡しですよね?
Javaには値渡ししかないよ、 参照を値渡して状態変更できても参照渡しができる事にはならん。
またいつものやつか
・Javaには値渡ししかない ・Javaのクラスには基本的に参照型しかない ・ゆえに、引数のクラス型の変数は参照の値が渡される。 ・String 型は、クラス型だが例外的に参照では無く、値がコピーして渡される。
そんな例外ないわw
StringBufferを渡せばいい
>>348 String は内容変更不可と覚えておくこと。
>>353 のいうとおりStringBuffer を使う
っていつもの煽りか。
>>351 >・String 型は、クラス型だが例外的に参照では無く、値がコピーして渡される。
そう思った根拠は?
String immutable でぐぐれ
参照型と参照渡しの区別がつかない奴が多くて困るな。 Javaにあるのは値型の値渡しか参照型の値渡しのみ。 C++やC#にある参照渡しの概念はJavaに無い。
お前らこの話題になると元気になるな
言語規定にちゃんとかかれてるのに、入門書で参照渡しって書いてるものが多いから 区別がつかない人があふれるんだろうな
文字列というのは文字の配列で配列の先頭のアドレスをコピーして渡すのが値渡しか?
Java では char[] と String は違うぞ? C言語でリテラル破壊した結果が未定義だか不定だかいうのと ポインタを渡すのが値渡しか参照渡しかってのも別問題だし。
>>358 初心者が初心者相手にドヤしやすい話題ではあるな
363 :
デフォルトの名無しさん :2011/10/01(土) 13:26:59.12
JAVAアプリケーションはダイアログベースで作るのですか? マルチプラットフォームとのことで、Macでどうやって動かすのか疑問に思っています。 スマートフォンやアンドロイドでも動かせますか? JAVAアプレットとJAVAscriptの2つの違いは何ですか?それぞれできないこととかメリットなどありますか? よろしくお願いします。
ダイアログベースの定義を言ってみ
じゃば じゃばお
単語の大文字小文字の区別がつかないとかperlerなら罵声を浴びせるレベル
>>363 Macにもターミナルはあるからコマンドラインアプリケーションも普通に動かせるぞ
無理にダイアログベースにする必要はない
っていうことを聞きたいのだろうか
String の本当の例外な点は定数オブジェクトが文法的にサポートされてて、 String s = "hello"; 見たいに書けちゃうこと、 ってことででいいのかな。 だから、プリミティブ型と紛らわしいけど、 本当は参照型だから、やっぱり値は参照だよ、と。
文字列プールとかintern()の話をしたほうがいいんじゃないか
>>354 StringBufferって今も現役なの?
もはや特殊な用途じゃない限り、StringBuilderを使うのが常識になってると思ったんだが…
スレッドセーフ
複数スレッドから文字列追加とかやったことあるか?w
Java4 のころ、処理が遅いのは文字列直接演算してるせいじゃないかってことで、 軒並み StringBuffer に書き換えたけどあんまり速くならなかったことがあったけど、 あのプログラム今から StringBuilder に書き換えたら、多少は速くなるかなあ。
それにもし複数のスレッドからappendするとしても sb.append("x=").append(x) とかになるとどうせロックしなきゃいけないので ほとんど無意味
StringBufferを介してProducerとConsumerがやりとりする、っていう用途はどうだろ? ま、俺は使わないけどw
それも
>>376 のような箇所があったらアウトだよ?
使うときに明示的にロックする約束でStringBuilderでやるべき
>>374 そうそう。
まずこういうニーズがあまりない気がするな。
StringBuilderで置き換えるのが浸透してるもんだと思ってたが…
そもそもマルチスレッドなプログラムが必要ないしな
>>375 多分変わらんよ。
Stringで文字列結合してネックになるのって、ループが絡むとかで相当な回数インスタンス生成が行われるときだけのはず。
ループで結合している箇所を置き換えるなら効果あるけど。
コレクションやStringBuilderみたいな小さい単位でスレッドセーフってあんまり意味ないしな 大抵複数の操作をアトミックに行う必要が出てきて無意味になる
>>378 当然、業務的にアトミックな単位で読み書きするのさ
>>381 なるほど、そうすると、処理の内容によっては、わざわざ StringBuffer/StringBuilder 使わずに、
s += " and next word";
みたいにしたほうが、書くのも読むのも楽だから、ってのはある程度ありかな。
>>376 みたいな書き方はマルチスレッドのときは普通やらんだろ。
StringBuilderが入ったのっていつからだっけ?gcjで使おうとしたらコンパイル通らなくてStringBufferに書き直した気がする
>>385 もっともだけど、どうせ使うときにマルチスレッドをはっきり意識しないといけないんなら
StringBuilderで使うときにロックしても別に変わんなくね
タイガーからですのん
>>387 ちょーおま、
俺のアンカーなしのレスが台無しじゃないか
ボトルネックになってなければどっちでも良いです
つかなんか、コンパイラが最適化で勝手に StringBuilder にしてくれるらしい。 まあ、処理系依存の話になっちゃうけど。 すると、普通に文字列結合書くより、 明示的に StringBuffer を使った場合のほうが 遅くなる可能性があるのか。
392 :
デフォルトの名無しさん :2011/10/02(日) 01:01:32.95
>>384 その通り。
内容によっては、あえてStringuBuiderで書いて可読性を落とすよりも、割り切ってStringの+でさくっと書いたほうがいいと思う。
昔、JDBCのSQL文をご丁寧にStringBufferで書いてる奴がいて、そんなのほとんど意味がないというと唖然としてた(笑)。
今のJVMはどうか知らんが、
String sql = "select"
+ " name,"
+ " email"
+ " from"
+ " table_a"
+ " where"
+ " id = ?";
と書く場合と、
StringBuilder buffer = new StringBuider();
buffer.append("select");
buffer.append(" name,");
buffer.append(" email");
buffer.append(" from");
buffer.append(" table_a");
buffer.append(" where");
buffer.append(" id = ?");
では、確かほとんど変わらないか、むしろ前者の方が速かったような気がする。
コンパイルしたコードを実際に見てみればいいよ
指定したディレクトリ下の全ファイルをリスト化するソースを書いてWindows上で動かしたいのですが、うまくいきません。
public void list(File file) {
fileがディレクトリなら list(file.listFiles())で再帰。
fileがファイルならファイル名をArrayListに追加。
}
うまくいかないのは、下位のディレクトリを再帰的にみていくときに、上のディレクトリに戻ってきてしまうハードリンクがあるためです。
2つのHDDが C:\、D:\ になっているのですが、
Dドライブは C:\HDD\D というパスからも見れるようにドライブパスを設定しており、
Cドライブからは、D:\HDD\C というパスからも見れるようにドライブパスが設定してある状況だと、
C:\HDD\D\HDD\C\HDD\D\HDD ・・・
というように循環してしまいます。
UNIX環境下のシンボリックリンクやハードリンクのループのようなものだと思い
JDK7 出導入された java.nio.file.Files のシンボリックリンクのチェック(
ttp://download.oracle.com/javase/tutorial/essential/io/links.html ) や
JDK6 でできる
ttp://stackoverflow.com/questions/813710/java-1-6-determine-symbolic-links の方法を試したのですが C:\HDD\D = D:\ということを検出できず、循環を防げませんでした。
何かいい方法はないでしょうか。
環境は Windows 7、JDK7です。
File#getCanonicalPathでいけなかったっけ?
1.6でコンパイル結果見ると ”select name, email from table_a where id = ?” と連結済みなので当然+使った方が速い
ループでもnew StringBuilder()が再利用できるから普通はString +よりはStringBuilder/StringBufferを使った方がいい
コンパイル時に確定できる文字列なら単なる無駄
>>394 msdn.microsoft.com/en-us/library/aa364570.aspx
ファイル・ディレクトリに対する一意な識別子を取得して比較したらいいんじゃね
>>395 、
>>399 アドバイスありがとうございます。
>>395 だめでした。普通にFile#getAbsolutePathのときと同じように、C:\HDD\D\・・・になってしまいました。
>>399 それですかねえ。
これを Javaから呼び出すのって JNI とかからなんでしょうか。このあたりは全く知識なしです。
ちと勉強しないと。
他に何かスパッとJava内だけで解決できるいい方法があればいいんですが。
>>392 ほとんど変わらないのでフォーマッタのためにStringBuilder使ってるよ。
403 :
394 :2011/10/02(日) 02:25:11.87
>>401 ありがとうございます。
やっぱり
>>394 で挙げたシンボリックリンクやジャンクションへの対応方は Windows以外用であって、Windowsでは無効ってことですね。
>There doesn't appear to be any cross platform mechanism for this in Java 6 or earlier, though its a fairly simple task using JNA
2010投稿の内容なので、「JDK6以前ではできない=Pure Javaではできない」っと言っているっぽいですね。
JDK7の java.nio を見ても、
>>399 で挙げていただいた FSCTL_GET_OBJECT_ID を取るメソッドはなさそうです。
挙げていただいたサイトの JNAでkernel32を呼ぶやり方がいけるかもしれません。
トライしてみます。
nio2 使えばいんでねーの? download.oracle.com/javase/7/docs/api/java/nio/file/attribute/BasicFileAttributes.html
>>394 話題そらして申し訳ないけど、Windowsってそういうのをハードリンクって呼ぶの?
mklink /h でハードリンクだよ、じゃば関係ないけど
C:\とD:\でもできるの? > 指定されたファイルが見つかりません。 なんて出るんだけどやりかた間違ってる?
>>404 ありがとうございます。
BasicFileAttribute も java.nio.file.Files とともに シンボリックリンクをチェックをできる1.7からの新機能みたいですが、やっぱりだめでした。なんでだー?
BasicFileAttribute#fileKey でも
>On some platforms or file systems it is possible to use an identifier,
> ... On UNIX file systems, for example, the device ID and inode are commonly used for such purposes.
となっていて、暗にWindowsではダメと言っている感じです。
>>407 GUI上でなら、管理ツール→コンピュータの管理で、ドライブ名をつける所でドライブパスの追加もできます。
mklink /h だと確かにできないですね・・・。fsutil hardlink からだとドライブのパス化も行けるんだろうか?
裏技的になるけど、getFreeSpace() とかでサイズが変わったら別のドライブに飛んだと判定するとか。
Linuxにはinode番号という同じように一意な識別子があってそれをJavaで取る方法をさくっと調べたけど見つからなかった じっくり調べれば見つかるかもしれんが
ディレクトリ再帰の無限ループなんて 10 年前から諦めている。
ハードリンクとシンボリリックの区別できてます?
Windowsにはハードリンク・シンボリックリンク・ジャンクションの3つがあるんだな、これが
414 :
394 :2011/10/02(日) 03:23:45.94
>>404 java.nio.file.Files#isSameFile を使うと、
C:\foo.txt と、C:\HDD\D\HDD\C\foo.txt
が同じファイルであることをチェックできました。nio2 いいなぁ。
C:\から *.* のリスト化を始めて
ArrayList<File>か ArrayList<java.nio.Path>にリストに放り込んでいって、
追加しようとしているファイルがすでにあるかを isSameFile(Path, Path)でチェックすれば可能
ということまでは確認できました。
が・・・・
ファイル数 n に対して比較が n^2 で処理コストがかかる時点で現実的ではなさそうですね。
個人的にi-nodeで判断できないのなら
>>409 の方法はかなり頭のいい方法だと思う
それとループして困るのはディレクトリだけだろ?ディレクトリに限定してチェックして
ループしてると分かったらそれ以下は全部重複だから見なくていい。でもやっぱまだ多いか
再帰開始のディレクトリに一時ファイル作って128bitくらいのマジックナンバー書いておく。 再帰中にそのファイルと同じファイル名、内容、タイムスタンプのファイル発見したら停止。 もう一段階加えるなら、発見したディレクトリに別の一時ファイルを作り、開始ディレクトリに 同じファイルが出来てたらアウツ。
>>408 オプションが違う。ドライブをまたぐときはジャンクションにしないといけない
Vistaからはシンボリックリンクもサポートしたから、それでもいける
調べてないけど、そのGUIでの方法はハードリンクでもジャンクションでもシンボリックリンクでもない気が
Linuxならmount --bind相当だったかと。実際ドライブレター割り当ててないボリュームもマウントできる
>>416 権限がなくてファイルが作れなかったら?
>>415 >それとループして困るのはディレクトリだけだろ?ディレクトリに限定してチェックして
まさにそれを実験してみてますw
ただ、それでもクソ重いです。フォルダの数も結構多いもんですね。
java.nio.file.Files#isSameFile もちょっと挙動が重めっぽいかな?
>>409 これもたしかに簡易な方法としていいかも。
自己ループ C:\HDD\C\HDD\C というように Cドライブ内だけでループしているのでなければ行けるかも。
>>416 それでもできそうですね。ちとファイルが数千〜数万個増えそうですけれどw
>>412 ドライブを別ドライブのフォルダにするのって、どれにあたるんですかね?
ジャンクション? vista以降のシンボリックリンク?どちらにしても isSymbolicLink()じゃだめっぽいんですが・・・
やっぱJNA で FSCTL_GET_OBJECT_ID を取りに行くのが正攻法なのかなぁ・・・?
420 :
394 :2011/10/02(日) 03:55:13.51
>>417 ありがとうございます。
>>412 の指摘で
>>419 書いているときにアレー?って感じで気づきましたw
mklink /J C:\HDD\D D:\
で作れますね。
>>415 すでに10分くらいやっていますが、実用とは言えないくらい遅いですw
n^2 オーダはやっぱだめかぁ。
>>394 はマウントだからフルパスの文字列からからマウントポイントフォルダパス取り出せばいいだけじゃないの?
C:\foo.txtが実体でHDDがマウントポイントフォルダパスでHDDにドライブレターのCとDが追加されてるからry
面倒だからあとは分かるな。
>>405 ハードリンクじゃないよ。ジャンクションっていう機能によくあるマウントがある。ドマイナーでwinのアプリもまともに対応してない。
winのハードリンクはlinuxのハードリンクと同じ。vistaからソフトリンクって名前のシンボリックリンクも使える。
ちなみにnio2で取得できるのはnio2がファイルシステムの属性を扱えるからでジャンクションやソフトリンクはリパースっていう属性だからだと思う。
いずれにしても、システムダウンに繋がる可能性があるから、 用途によっては、決めうちでリミッターつけといたほうがいいかも。 この問題に対応できても、将来的にファイルシステムにどんな機能が追加されるかわからないし、 無限ループでリソース食いつぶしてダウンされると、 影響がでかいし、原因の解明に手間取るかもしれない。
>>330 日本語ドキュメントなら過去ログに上げてくれた人がいた。
リンクはまだ生きてるようだから、
javaスレッド jdk-6u21-docs-ja.zip
で検索しる!
424 :
デフォルトの名無しさん :2011/10/02(日) 10:38:39.90
皆さんはJDK6に入っているJavaDBを使ってますか? なんかJDK7では無くなってるようですが、これから勉強する意味はあるんでしょうか?
Oracle10g+JDBCでSQL文の長さ制限はありますか?
426 :
デフォルトの名無しさん :2011/10/02(日) 12:10:04.54
JLabelをクリックしたときのイベント処理ってこれであってる? "mouse clicked"が表示されないんだけど label.addMouseListener(new MouseAdapter() { public void mousePressed(MouseEvent event) { System.out.println("mouse clicked"); } });
427 :
デフォルトの名無しさん :2011/10/02(日) 12:33:44.97
>>424 使ってる。
便利だけどセキュリティー面ではいまひとつ信用できない。
ヒープエラーが出るんですがオーソドックスな回避方法教えてください。
原因によって違うような。 本当に処理内容が大きくて出るのか、そんなに使ってないはずなのに出るのか。 後者なら要はバグだから、回避じゃなくて修正しないと。
>>428 使うヒープサイズ<使えるヒープサイズ
にすれ
俺のヒップもエラーが出ます。
>>428 プロファイラで無駄があるかどうか調査。
無駄が無ければ
>>430 無駄があればそれを修正。
SWTを使って作られたJAVAアプリケーションを実行するには、JRE以外にランタイムなどが必要になりますか? ちなみに、SwingはJREだけで実行できますよね?
しらんけど、SWTってまだ流行ってんの?
swingがクソであるかぎりはね
438 :
394 :2011/10/02(日) 20:45:26.70
うまくいきました。感謝>みなさま java.nio.file.Files#walkFileTree(...) を使うと行けるみたい。JDK7用です。 DirLister.java ----------------------- import java.io.*; import java.nio.file.*; import java.nio.file.attribute.*; import static java.nio.file.FileVisitResult.*; import java.util.*; public class DirLister { public static void main(String[] args) { if (args.length < 1 || args[0].equals("-h") || args[0].equals("--help")) { System.out.println(help()); System.exit(1); } else if (args[0].equals("-all")) { File[] roots = File.listRoots(); args = new String[roots.length]; for (int i = 0; i < roots.length; i++) { try { args[i] = roots[i].getCanonicalPath(); } catch (IOException e) { System.out.println("自動的にルートを取得できませんでした。\n明示的にディレクトリを指定してください。"); System.exit(3); } } } EnumSet<FileVisitOption> opts = EnumSet.of(FileVisitOption.FOLLOW_LINKS);
439 :
394 :2011/10/02(日) 20:47:29.11
FileVisitor<Path> fVisitor = new SimpleFileVisitor<Path>() { /* @Override //なにもせんぞ。 public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) {return CONTINUE;} @Override //なにもせんぞ。 public FileVisitResult visitFile(Path dir, BasicFileAttributes attrs) {return CONTINUE;} */ @Override public FileVisitResult postVisitDirectory(Path dir, IOException exc) { System.out.println("Dir: " + dir); return CONTINUE; } @Override public FileVisitResult visitFileFailed(Path dir, IOException exc) { if (exc instanceof FileSystemLoopException) { System.out.println("!?ループしたぞ?" + dir); //基本的にこないはず } else { System.out.println(dir + "は読めぬ。"); //パーミッションの関係で出てくる } return CONTINUE; } };
440 :
394 :2011/10/02(日) 20:49:44.48
try { for (String arg: args) { Files.walkFileTree(Paths.get(arg), opts, Integer.MAX_VALUE, fVisitor); // Files.walkFileTree(Paths.get(arg), fVisitor); //これではダメ。 } } catch (FileSystemLoopException e) { e.printStackTrace(); System.err.println("ループ発見!" + e); //こないはず。 } catch (IOException e) { e.printStackTrace(); } } private static String help() { return "Usage: java DirLister directory [directory2 ...]\n" + " java DirLister -h (--help) ... ヘルプ表示\n" + " java DirLister -all ... 全ドライブを対象に。\n"; } } -------------------------- ここまで。引数なしで java DirLister するとヘルプ表示。 引数のディレクトリ下を一覧表示。 オプション -all をすると勝手に全ドライブを対象に実行(ネットワークドライブの割り当てをしているとそっちまで見に行くので注意。 これでちゃんと循環せずに見てくれるリスターができました。いろいろ捗りそう。
441 :
394 :2011/10/02(日) 21:16:56.74
補足。 public FileVisitResult visitFileFailed(Path dir, IOException exc) { if (exc instanceof FileSystemLoopException) { System.out.println("!?ループしたぞ?" + dir); //基本的にこないはず } else { ... ここの!?ループしたぞ? には来るようです。 ちゃんとここでFileSystemLoopExceptionが投げられているのを確認できました。
荒すな
>>394 java.nio.file.Files#walkFileTree使うと良いよ!
コード張るときはpastebin使ってよ。ためになったよ。乙
446 :
デフォルトの名無しさん :2011/10/03(月) 11:08:24.01
JavaScriptでJSONにしたデータをJavaで受け取ろうと思ったら クラスが分からないから無理ですか?
String hoge1 = "hoge1"; String hoge2 = "hoge2"; hoge1 = hoge2.clone(); としたいのですができません。 Stringをクローンコピーするにはどうしたらいいでしょうか?
不変値であるStringのコピーを生成して何か良いことあるのか?
そうか hoge1 = new String(hoge2); でいいのか。
hoge1 = hoge2; で何か問題があるのか?
cloneをインプリメンツしたかったので。
コラ
>>446 標準ライブラリにはJSON機能ないから、
どこかでライブラリを探すしかない。JSON.org 公式ライブラリもあるけど
構文としてはかなり易しめの部類だから、
自分でJSONパーサを再発明するのもよし。
455 :
sage :2011/10/03(月) 20:12:55.03
プロパティファイル内の他の値を参照するのってどうすればよいのかしら? hoge.hoge1 = value hoge.hoge2 = <hoge.hoge1のvalue>+何か追加 っていう使い方をプロパティファイル内でしたいのです。
458 :
デフォルトの名無しさん :2011/10/03(月) 20:58:18.89
java.exeって、 C:\Program Files\Java\jdk1.7.0\bin C:\Program Files\Java\jdk1.7.0\jre\bin C:\Program Files\Java\jre7\bin に3つもあるけど、どうして? 環境変数でpathを切るのは、 C:\Program Files\Java\jdk1.7.0\bin でいいの?
>>458 C:\Windows\System32
にもあるぜ
なので、java.exeは明示的にパス切ってやらなくても初めからパスとおってる。 C:\Program Files\Java\jdk1.7.0\bin を指定するのは、 ・javac.exeなども一緒にパスを通したいとき ・バージョンを明示したいとき じゃないかな? ちなみにjre下のjava.exeとjdk下のjava.exeでは若干挙動が違う状況があったはず。セキュリティ関係だったかな?
461 :
デフォルトの名無しさん :2011/10/03(月) 21:22:03.21
なるほどね〜。 たしかにコンパイルするときにはjavac.exeを使うし、それは C:\Program Files\Java\jdk1.7.0\bin にしかないのでした。 で、C:\Windos\System32にもあるんですか…。 で、挙動が違うんですか…。 いろいろありがとうございますっ!!
土方乙
463 :
デフォルトの名無しさん :2011/10/04(火) 01:55:22.55
明解JAVAで勉強してるんだけど forだのifだのの使い方は理解できても これでなにかプログラムつくれる気がしねぇ みんなこうやって関数みたいの覚えて あとは自分で例題(電卓つくるとか)を決めて 適当にやって躓いたらネットで調べる みたいな感じでプログラミング覚えていくの?
forだのifだのはほんとにやる気がある奴を振り分けるふるいみたいなもの そこらへんのCやJavaでの違いはあって無いようなもの GUIやイベントとかネットワークプログラミング学ぶまでは 誰も何も作れる気はしてないから安心しろ
といっても馬鹿は何やっても無理
>>458 C:\Program Files\Java\jdk1.7.0\binはJDKに付いてくるpublic JRE。
C:\Program Files\Java\jdk1.7.0\jre\binはJDKに付いてくるprivate JRE
C:\Program Files\Java\jre7\binはJREのみインストールした時のpublic JRE
JREのみの方はclientVMしかないserverVMがない。
JAVA_HOME設定したいならツール群の関係でC:\Program Files\Java\jdk1.7.0\bin。
けど、public JREはシステムの実行環境用だから-cpとかextとかが実行環境と共有されるから
開発環境専用の環境作りたいときは明示的にJDKのprivate JRE指定する。
IDEはJDKのpublic JREがデフォで指定されてることがあるから必要なら設定変える。
純粋にエンドユーザーとしてシステムでjava走らせたいならC:\Program Files\Java\jre7\binの方のpublic JRE使う。
JREのみインストールしたときにC:\Windows\System32にもjavaコマンド入るのはエンドユーザーがパス通す必要ないから。
ご苦労だな
468 :
デフォルトの名無しさん :2011/10/04(火) 11:49:13.93
MVCを採用したGUIアプリケーションで規約的にViewからModelへの参照は許されるがModelからViewへの参照が許されない場合に、 スレッド内で発生した例外をViewでユーザに通知したいのですが、スレッド内で発生した例外はスレッド内で処理しなければならないので、スレッドクラスはView層におかなければならないのでしょうか?
普通に例外の発生をイベントとして通知すればいいんじゃね?
DBにアクセスするメソッドを実装したSampleDaoというクラスと 獲得してくるレコードの格納とアクセサを実装したSampleDtoっていうクラスを用意して SampleADao dao = new SampleADao() List<SampleDto> dto = dao.findAll(); みたいな形でオブジェクトをリスト形式で処理上に持たせるつもりでいたんですが、 dtoに格納した各SampleDtoから値を獲得する方法が分かりません for(init i = 0; i< dto.size(); i++) { code[i] = dto[i].getCode(); } みたいな感じでループでList内のそれぞれのSampleDtoのアクセサメソッドから 処理で使ってる配列に返り値を格納していくつもりだったのに、 Eclipseのエラーで「式の型は配列型で、List<SampleDto>に解決済のものである必要がある」って 言われちゃってます dto[i].getCode() ↑これが悪いんだと思うんだけど、そうなるとListに格納したクラスのメソッドって どうやって使えばいいんでしょうか?
>>470 ですが自己解決しました
for(init i = 0; i< dto.size(); i++) {
SampleDto dto2 = (SampleDto)dto.get(i);
code[i] = dto2..getCode();
}
みたいな感じで上手く行きました…が、
これで本当にいいのでしょうか…
完璧ですよ!
473 :
デフォルトの名無しさん :2011/10/04(火) 16:52:35.36
HashMapを定義する際に、1行で初期値を入れるようなことは可能ですか? クラスのメンバなどで配列を定義する際に、 String strArray[] = {"aaa","bbbb", "ccccc"}; とすることができるように、HashMapにも初期値を入れた状態で定義したいです。 以下のように後からputしていくのと同様の処理を、1行で済ます方法があったら教えてください。 HashMap<String, String> map = new HashMap<String,String>(); map.put("1", "a"); map.put("2", "b"); map.put("3", "c"); map.put("4", "d"); map.put("5", "e"); map.put("6", "f");
Javaじゃ無理。 Groovyならできたと思うけど。
自分でstaticなジェネリクスを作ればいいんでね。
private static <Key,Value> void putAll(Map<Key,Value> map, Key[] key, Value[] value ){ int length = Math.min(key.length,value.length); for( int i = 0; i < length; i++ ){ map.put(key[i],value[i]); } }
keyとvalueが別個とか…変態だな
爺乙
>>473 >>473 >>479 JunkUtilという変態ライブラリを使うと1行で書ける。
Map map = new LzMap(
"1", "a",
"2", "b",
"3", "c",
"4", "d",
"5", "e",
"6", "f"
).map();
ジェネリクス?何それおいしいの?
481 :
480 :2011/10/04(火) 20:10:05.41
書き込みミスった。 Map map = new LzMap(new String[]{ "1", "a", "2", "b", "3", "c", "4", "d", "5", "e", "6", "f" }).map(); こうだった。全然スマートじゃないな。忘れてくれ。
Properties map = new Properties(); // Properties は Map を実装 map.load(new StringReader("1=a\n2=b\n3=c\n4=d\n5=e\n6=d"));
static <K,V> Map.Entry<K,V> p(K key, V value) { return new AbstractMap.SimpleEntry<K, V>(key, value); } static <K,V> Map<K, V> map(Map.Entry<K, V>... entries) { Map<K, V> map = new HashMap<K, V>(); for (Map.Entry<K, V> entry : entries) map.put(entry.getKey(), entry.getValue()); return map; } Map<String, String> map = map(p("1", "a"), p("2", "b"), p("3", "c"), p("4", "d"), p("5", "e"), p("6", "f")); System.out.println(map); とか。
Mapぐらい{ "key1" : "value1", "key2" : "value2" } みたいに作れればいいのに あとArrayも [ "value1", "value2" ] ry
Scalaerはやくぅー!
commons CollectionUtilsあたりに配列→マップのユーティリティがあった気がするが
>>473 匿名クラス+インスタンス初期化子という方法がある。
変態的なのでお勧めしないけど。
CollectionUtilsでなくってArrayUtilsだったわ Map<String, String> map = ArrayUtils.toMap(new String[][] { { "key1", "val1" }, { "key2", "val2" } });
なぜライブラリによる解決策を排斥するのか
493 :
デフォルトの名無しさん :2011/10/05(水) 01:20:41.44
MVCを採用したGUIアプリケーションで規約的にViewからModelへの参照は許されるがModelからViewへの参照が許されない場合に、 スレッド内で発生した例外をViewでユーザに通知したいのですが、スレッド内で発生した例外はスレッド内で処理しなければならないので、スレッドクラスはView層におかなければならないのでしょうか?
いっそ、>480 の Map を自作でいいんじゃないの public class HentaiMap extends HashMap<String, String> { public HentaiMap(String... args) { for (int i = 0; i < args.length / 2; i ++) { put(args[2*i], args[2*i+1]); } } } HashMap<String, String> map = new HentaiMap( "1", "a", "2", "b", "3", "c", "4", "d", "5", "e", "6", "f" );
経験を積むとkeyとvalueが別個なのが変態じゃないのかと思えてくるようになる
経験を積むとkeyとvalueが別個なのが変態じゃないのかと思えてくるようになる ごめん。何言ってる分からないな。 経験を積むとkeyとvalueは別個の方が変態じゃないのかと思えてくるようになる(つまり別個引数にすべき)
ん?まだ変なにほんごだな お前ら当然エスパーしろよな
498 :
494 :2011/10/05(水) 02:15:44.75
× 経験を積むとkeyとvalueが別個なのが変態じゃないのかと思えてくるようになる △ 経験を積むとkeyとvalueは別個の方が変態じゃないのかと思えてくるようになる(つまり別個引数にすべき) ◎ 経験を積むとkeyとvalueとを別個にしない方が変態じゃないのかと思えてくるようになる ちなみに、同感です。
変態乙
列ごとに別個の配列にするのか自然とかいつの時代だよ
土方乙
FORTRAN的発想ですね
自然じゃないけど汎用性考えたらそうなる
505 :
494 :2011/10/05(水) 10:07:24.68
@ void putAll(String[] keys, String[] values) ⇒「キーと値のリストを指定して、複数エントリを保持させる」と、直感的に読める A void putEntries(String[] entries) ⇒「(恐らく)キーと値の繰り返しを指定して、複数エントリを保持させるのだろう」と、エスパーすれば読める Aよりは@の方が意味を捉えやすいでしょ、という事。 時代は関係ない。・・・と思いたい。
そんなことよりキーと値が離れることによるデメリットの方が遥かに大きい
と、確かに昔は思っていたんだけれど、一周回ってここに来てしまったわけですよ。 こ、後悔なんかしてないんだから/////
直交性の話題はデザインパータンですらもさんざん書いてあるのにこれを直観で理解できなかったのは経験不足というより勉強不足
そりゃ、どうもすんません。
初期化の方法の一つとしてキーと値を別個に与えられるようにするのはアリだけど、 明らかにリテラルで書くのには向いてない
パーたんパーたん
リテラルで初期化する話でしょ? キーに対応する値を探したりペアを削除したり途中に追加したりするのに いちいち前から順に数えないといけないとかクソすぎ
514 :
494 :2011/10/05(水) 13:56:18.72
もちろん、初期化の書きやすさ(と格好良さ)で言えば>494で問題ないと思うけど、 >505で言いたいのは、もう少し別の次元の話。 開発現場では、他人様が書いたソースコードを読むことが多々ある。そこに、 void replaceElements(List list, String[] replaceInfo) なんてメソッドがあっても使い方ピンとこないでしょ。でも、 void replaceElements(List list, String[] targets, String[] replacements) だと、なんとなく分かるでしょ。 もちろん、ドキュメントなりコメントなりには書いてあるんだけど、ぱっと見で分かんないと、読むのが辛いの。 分かりづらい理由は、置換対象の要素+置換後の値という、性質の異なる値を1つの配列に押し込めてるためだから、 >494の引数も、同じように2つに分けてしまいたいな、と思うわけ。 おまいら、PGだったらこの気持ち、分かってくれるよな?
我ながらアホス String initString = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" + "<java version=\"X.X.X_XX\" class=\"java.beans.XMLDecoder\">" + // X.X.X_XX any value "<object class=\"java.util.HashMap\">" + "<void method=\"put\">" + "<string>1</string>" + "<string>A</string>" + "</void>" + "<void method=\"put\">" + "<string>2</string>" + "<string>B</string>" + "</void>" + "<void method=\"put\">" + "<string>3</string>" + "<string>C</string>" + "</void>" + "</object>" + "</java>"; InputStream bais = new ByteArrayInputStream(initString.getBytes()); XMLDecoder d = new XMLDecoder( bais ); HashMap<String,String> obj = (HashMap<String, String>) d.readObject();
きもぢばるいおお せめてクラスを別にして
直交性を考えるならString[][] 一択だろう
だから何と何の直交性だよ
KeyとValueだろ。
キーと値のペアを1単位としたとき、という意味。 それぞれを別個の引数に分けるのはよろしくない。
521 :
518 :2011/10/05(水) 16:10:09.33
>>519 俺もそれを直交性と言いたいんじゃないかと一瞬考えた。
しかしそれはさすがにアホだろ。keyとvalueが直交してんだったらmap使う意味ないだろ。
あーあれか。データ構造とアルゴリズムの分離ってやつ?
今回のだとインタフェースと実装が適切か?
インタフェースとして(
>>505 が言うところの)「意味を捉えやすい」のはどれか、ってことだな。
それなら
>>517 の言いたいことは分かった。
>>508 はデザパタ言いたかっただけか。「デザイン」パターンなんだから当たり前だろ。
「デザインパータンですらもさんざん書いてある」んじゃなくて、そのものが書かれてるんだよ?
デザインパターン持ち出すならこういう場合は new MapBuilder<String, String>().add("1", "a").add("2", "b").toMap() だろ
いやFactoryMethodも使って MapBuilder<String, String> mb = new HashMapBuilder<String, String>(); Map<String, String> map = mb.add("1", "a").add("2", "b").toMap(); こうかな
お前らasMap({K1 : K1,...Kn : Vn})の場合とnewMap(Keys[], Values[])の場合の話が混在してないか?
----ここまで読み飛ばした----
>>521 519=520
語弊があったので言い直した。
529 :
518 :2011/10/05(水) 19:00:09.93
>>520 俺へのレスかな?
「keyとvalueは直交してないことを考慮して」という意味で「直交性を考える」と言っているのであれば理解した。
>>519 が言いたかったのも、もしかしてそういうことか。
「keyとvalueは依存関係があるので」とでも言ってくれればすんなり理解できたのだが。
>>508 と
>>517 が言ってる「直交性」はそれぞれ別の物を指してるってことだな。
>>522 ご理解痛み入る。
530 :
529 :2011/10/05(水) 19:02:21.55
>>528 すまぬ、入れ違いにカキコしてしまったようだ。
531 :
494 :2011/10/05(水) 19:18:26.97
そりゃあ、Mapなんだから、>520の発想が自然なのは当たり前だと思ってる。
どの方法が一番かを気にしたつもりは全く無くて、
String[] よりは String[], String[] の方が、総合点高くね?とだけ言ったつもり。
>476 >477 >494 >495-498 の流れ。
>>529 じゃあ、>508の「直交性」は、どういう意味なの?
>>531 > じゃあ、>508の「直交性」は、どういう意味なの?
知らんがな。正にそれを俺が
>>513 >>518 で聞いてるわけだ。
俺は「直交性」と聞いて「直交する性質」と理解したわけだ。この話題で何と何が直交してるのかと。
その結果
>>521 に行き着いた。
「直交しない性質」をして「直交性」と呼んでいることに考えが及ばなかったことはあるにせよ、
デザパタ引き合いに出している以上
>>521 の推測は妥当だろう?
連想配列・ベクタの初期化子もジェネレータもある言語ならともかくjavaでkey:valueをひとつの配列にしたら for(i=0; i<len; i+=2){key = record[i]; value = record[i+1]}みたいな低レベルなfor回さなきゃいけないのは気持ち悪い。 かといってObject[][]は扱いにくいしだからといってjavaにyieldがあるわけでもないからどうしようもないな。
まずは、KeyとValueの内積を定義してから、直交性を議論しようぜ
Javaの欠陥
とはいえ、perl みたいななんでもありもどうかと思う。
HSSFCell cell = row.getCell((short) 1); メソッド getCell(short) は型 HSSFRow で使用すべきではありません じゃあどうすればいいの?
ソース見ればdeprecatedになってない似たような名前のメソッドがあるからそれ使え
ありがとう
じゃあ俺からもありがとう。
ジャバをいくら勉強しても馬鹿には無理
じゃばじゃば夫
javaがわからないくらいバカ
馬鹿がわからないくらいjava
>>534 おおっ、ジャバだけじゃなく数学の方もよく理解してるな
人__人__人__人__人__人__人__人__人__人__人 Σ て Σ javaがわからないくらいバカ! て人__人_ Σ 馬鹿がわからないくらいjava ! て ⌒Y⌒Y⌒Y) て Y⌒Y⌒Y⌒Y⌒Y⌒Y⌒Y⌒Y⌒Y⌒Y⌒Y⌒ _______ |__ ヽ(゜∀゜)ノ |\_〃´ ̄ ̄ ヽ..ヘ( )ミ | |\,.-〜´ ̄ ̄ ω > (∀゜ )ノ \|∫\ _,. - 、_,. - 、 \ ( ヘ) \ \______ _\< \ || ̄ ̄ ̄ ̄ ̄ ̄ ̄ | \||_______ |
Excelのファイルからxmlファイルを出力するんだが、木構造をどう出力すりゃいいんだ? 有名な再帰的アルゴリズムみたいのある?
Excel からわざわざ Javaで変換するのか? VBA使ったほうが速くないか?
551 名前:デフォルトの名無しさん [sage] :2011/10/05(水) 22:55:36.44 人__人__人__人__人__人__人__人__人__人__人 Σ て Σ javaに関係ない話題と気づかない程にバカ! て人__人_ Σ 馬鹿がわからないくらいjava ! て ⌒Y⌒Y⌒Y) て Y⌒Y⌒Y⌒Y⌒Y⌒Y⌒Y⌒Y⌒Y⌒Y⌒Y⌒ _______ |__ ヽ(゜∀゜)ノ |\_〃´ ̄ ̄ ヽ..ヘ( )ミ | |\,.-〜´ ̄ ̄ ω > (∀゜ )ノ \|∫\ _,. - 、_,. - 、 \ ( ヘ) \ \______ _\< \ || ̄ ̄ ̄ ̄ ̄ ̄ ̄ | \||_______ |
邪馬ジャバ夫
ユーザーがアップロードしたExcelファイルを サーバー側でVBA動かしてXML出力しろってか 頭悪いんじゃないか?
558 :
556 :2011/10/06(木) 00:52:12.63
ごめん、俺、エスパーすぎた? 俺、エスパーすぎた?
VBA使いなら
>>556 を問題なく構築出来るんだがな
Javaしか触れない奴には、
自分が無理だから技術的に無理、ないしはすべきではない
とか固定的なものの見方しか出来ない
VBA理解できる頭があったらjavaなんかやらんのじゃ
VBA使いごときじゃ、VBAを動かすサーバーを 構築することすら出来んだろうってw 当たり前だけど、サーバーは常識的な選択。 Linux + Apache + Tomcatの構成だからな。
お前の常識なんか興味ねーよ 要件に応じて構築中しろよカスが
普通客によって変わるわな
っていうか、木構造云々言ってるから、 Excel ファイルを扱うという問題自体は なんらかの方法で解決してるんだろう。 そんで、そのデータを XML で出力しようとしたときに、木構造をどうにかする 再帰的アルゴリズムが要るんだろうな。
用は木構造のデータを入れたらXMLを吐いてくれる便利ライブラリがあればいいんだろ
それだとExcelって単語を出す必要が そもそも無かったってことに。。。
馬鹿って質問の仕方ひとつとっても馬鹿をアピールしてるからな
この無理男がjavaスレを荒らしまくってる なんとかしてくれ
放っとけよ
確かに大元が何を言ってるのかよくわからない。 木構造ならそのまま再帰使ってXML出力できると思うが。
再帰を書けないコーダーなんじゃね?
ポインタと再帰が理解できないとプログラマとは言えない って誰か言ってた
敷居が低いは誤用
577 :
忍法帖【Lv=14,xxxPT】 :2011/10/06(木) 08:18:07.42
明解Javaのあと、パーフェクトjavaに移ったのですが 20章のサーブレットになった瞬間意味が分かりません。 誰かこの本持ってる人いませんでしょうか? tomcatやantは勝手にダウンロードしとけ。みたいに書かれてるのですが ダウンロードした後にどう使うのか、そもそもxmlファイルの例が書かれても どこに書くのかとか(今まで通りterapadのようなものに書いて保存時にjavaにするのかなど) 一切書いてないので意味がわかりません。
tomcatってまだServlet+JSPだけのコンテナだよな。
そろそろGlassfishのWeb Profileで入門とか出てきても良さそうなんだがなー。
>>577 まずEclipseかNetBeansあたりの統合開発環境を導入したほうが良さそうかな。
ソース1つ2つをさわる程度ならエディタでもいいけど、プロジェクトって概念を学んだ方がいいと思う。
Web用プロジェクトのテンプレートもあるからどこに何を書くか、そしてどこに保存すべきなのかはそれで学ぶといい。
ただし、ものによって保存する場所が決まっているもの(web.xmlとか)と比較的自由に変更できるものがあるので注意を。
579 :
忍法帖【Lv=14,xxxPT】 :2011/10/06(木) 08:37:31.32
>>578 ということはeclipseとかの書籍を読んだ方がよいということですか?
ただのjavaとは別でEclipseで始めるjava。みたいな本があったと思いますが。
連投失礼。
>>577 tomcatとAntの設定なんてネットにいくらでも転がってるからそっちみるといいよ。
Antはちと面倒だけどtomcatでアプリをデプロイして見るだけならそんなに難しくない。
参考書籍がその1冊限定なんて変な縛りは無いんでしょ?
自分の今の知識レベルに沿った書籍やwebサイトを探すんだ。
581 :
忍法帖【Lv=14,xxxPT】 :2011/10/06(木) 08:46:31.93
>>580 ありがとうございます。
とりあえず今の書籍を読み直すのと、書籍探しもしてみます。
俺
>>552 だけど、朝起きたらお前ら喧嘩しててワロタw
調子に乗るなカス
584 :
デフォルトの名無しさん :2011/10/06(木) 12:01:58.22
JVMはSandyBridgeのAVXを使いこなせますか?
使いこなせます
>>582 喧嘩はしてないし、質問内容が不明瞭と言ってる
ほんとに頭悪そうだな
最低学歴だらけのこの業界で頭悪そうとか言うなよ
年収も学歴も日本最底辺だなんてもう人生終わってるよな
590 :
デフォルトの名無しさん :2011/10/06(木) 18:31:01.42
JNIって引数や返り値のデータの大きさによってオーバーヘッドが変化しますか? それともポインタ的なものを操作するだけで終わるとかでデータの大きさは関係ありませんか?
Javaにはユーザが定義の値型はないし参照型はポインタ的な渡し方しかできないから データの大きさっても引数の数ぐらいだな。 引数で渡されたオブジェクトのフィールド触ったりメソッド呼び出したりも含めて JNI経由の呼び出しのオーバーヘッドの方がでかい。
その辺はいざとなったらGetPrimitiveArrayCritical使うとかNewDirectByteBuffer使えばいいんじゃね
パーフェクトjavaいまやっているので便乗質問 この本の次に読んだら良い本ってありますか?
パーフェクトjavaがどんな本か知らないけれど、 取り敢えずEffective Javaは読んどけ。
出たーw 時代遅れのeffective信者wwww
自己紹介乙
煽りでないなら、どの部分が時代遅れなのか大いに興味がある
>>596 じゃないけどわざわざ読むような本じゃないことは覚えてる
Effective XXに便乗しただけの本
>>598 未だにそれを盲目に信じてるから信者といわれ君は影で馬鹿にされている
パブリックなメソッドを作ると永遠にメンテしなければならなくなる。 とか書いてあったけどそれはJavaのライブラリを作る時の話で 使う人には必要ない話が多かった気がする。
Effective シリーズは執筆者も監査者も一流なのに…。 Java厨は相変わらず見た目だけのアホばっかりだな。
執筆者が一流だろうと何だろうと大したこと書いてないんだから仕様がない 超初学者向けだし
初学者向けの本を勧めてるんだからそれでいいだろ。
初学者向けというか為になる話は何一つ書いてないw
Effective C++は初学者が陥りがちな間違いがうまくまとめられてたけど Effective javaは…
>Effective C++は初学者が陥りがちな間違いが あの本はそんな低レベルじゃないわ。 出た当時は意味不明な経験則だった。
プログラミング言語なのに意味不明な経験則ってw
611 :
デフォルトの名無しさん :2011/10/07(金) 06:33:46.19
シンプルなサイトを作るにあたって 特に実行性能が良いWEBフレームワークをいくつか教えて下さい。 比較記事とかもあったら教えて下さい。
>>594 俺もEffective Javaに一票。
俺の評価が当てになるかはググるなり立ち読みするなりして確かめて。
あ、あとJava: The Good Partsは全くお勧めしない。 評価が高いのはJavaScriptのやつなんで間違えないように。
>>611 Servert + JSP
余計なフレームワークが無いほうが速い
よ〜し、Effective Java 買いに行くぞ ε=ε=(っ・∀・)っ ゴーゴー♪
数年前に読んだときは、 「ふーん、まあ、そんな考えもあってもいいんじゃない?」 的に思ったくらいにしか記憶がない。 ソフトウェアって動けば正義的な圧力があるからね。 しばらく経験を積んで、オブジェクトを生成するにも そのままコンストラクタを使うのか、ファクトリメソッドを使うのか、ビルダを使うのが適切なのか それはどうしてなのか、などを実際に悩むようになると、 その指針・考え方のヒントとして役に立った。
619 :
デフォルトの名無しさん :2011/10/07(金) 14:39:29.77
Javaって文字列をまとめて定義する方法ってないの? PHPのEOTみたいなやつ!
そんなことしてソースを汚すより、リソースファイルとして読み込んだ方がいいよ
621 :
デフォルトの名無しさん :2011/10/07(金) 16:35:30.33
プログラム初心者ですが「明解Java入門(柴田望洋著)」を読み終わったので次のステップに進みたいのですが何を読めばいいでしょうか? 上記の本が分かり易かったので同じ著者の「解きながら学ぶJava入門」のようなタイトルの本が良さげなのですが、 amazonのレビューに解答ソースにバグが多いと書いてあるので心配です
622 :
デフォルトの名無しさん :2011/10/07(金) 16:35:40.02
解きながら学ぶJava入門以外には考えられません
624 :
デフォルトの名無しさん :2011/10/07(金) 16:38:05.86
本いっぱい買っても
>>619 見たいな単純なことが出来ないのは
言語以前の問題だと思うが。
よ〜し、Effective Java 買いに行くぞ ε=ε=(っ・∀・)っ ゴーゴー♪ さえ読めばJavaを制覇できちゃうと勘違いしてるんだろう
そもそも本一冊読んだ程度で特定のプログラム言語を制覇できたら世話無い
バグが多いのは関係ないですよ
分かりました 買ってみます
お買い上げありがとうございます
631 :
デフォルトの名無しさん :2011/10/07(金) 19:31:28.24
学校の課題わからねぇ。わからねぇとこがわからねぇ。そこがまたわからねぇ。 プログラマーに委託すっか。
バカとの交渉は疲れるのでやめてください
バカには委託しないので安心してください^^
>>631 >学校の課題わからねぇ。わからねぇとこがわからねぇ。そこがまたわからねぇ。
わらた
自分は馬鹿だと認めているところは謙虚じゃないか
自分が答えられる質問はないかとわくわくしながらスレに来てるくせに そんな憎まれ口叩くもんじゃありません
>プログラマーに委託すっか 待ってるw
>>610 経験則を批判する時点でこの世界の人間じゃないな。
Effective C++はそういうのを理詰めにして説明した本だよ。
自分が理解できてなかったからって逆切れは…
経験則で仕事するのがこの世界の人間だって開き直っちゃったw
確かにすんなり理解できなかった部分もあるが、 ほとんどは画期的すぎて戸惑ってた部分が多かったよ。
>>640 そう何も意見が言えないよりはマシかと思ってるわ。
本に書いてあることが正しくて、書いてないことは間違ってるんです
最近は自分の無能っぷりを自慢するのが流行ってんのか
今度JavaのWebアプリでWordファイル作れないか調べてくれと言われた。 POIでいけるでしょと思って生返事したのはいいけど、 いざ調べてみるとExcelは山ほど情報あるけどワードないですね。 3年くらい前に使い物にならないとかいう風にまで酷評してたページ見つけたけど、 今はどんな感じなんだろうか、というか使ったことある人いますか…。 とりあえず、明日起きたらちょっと使ってみようとは思ってます。 休みだけど…。気になる。不安。
POIでのWord出力は出来ないと思ったほうがいい。
HTMLで出力すれば良いんじゃない?
>>647 なんか寝つけずにネットで調べてますが、
調べれば調べるほどPOIでWORDはダメっぽいですね…。
代替案を探したほうがいいかなと思い始めてます。
>>648 WORDは客先の希望なんですよねー。
PDFで提案したんだけど(PDFはitext使う予定・というか自分はよくこれ使ってるんで)
「PDFだとこっちで変更できないから変更できるWORDでもほしい」んだとか。
HTMLでもこれは満たせないし、
EXCELじゃダメかなー。
でもEXCELで長文文書というのも(私個人的にはよくやるけど)
さすがに客に出すもんじゃないだろうし。
出来ねーよというしかないような気もだんだんしてますが。
>>649 HTMLなら、Wordで編集できるでしょ?
あとは rtf にするか、OpenOffice から OpenDocument を出力とか。
>>650 HTMLでいったん保存したものをWORDで編集するって話ですか?
うーん。できると言えばできますが・・・。
あの客あんまりパソコンに詳しくないんで、それやらせるの難しい…。
開くだけ言えば開くだけなんですけどね…。
それならまだテキストに出すんで勝手にWORDに張り付けてねの方が通りそうです。
>>651 rtfならitextあるし簡単そうですね。
ただ、客素人なんで納得させるの大変そうです。
650さんのHTML案にあまり積極的になれないのと同じ理由です。
何回か文句言わせながらでも使わせれば案外なれるのかもしれませんが。
OpenOfficeはちょっと使ったことないので判断できませんがちょっと調べてみます。
Wordなら.NETとの組み合わせが楽でええよ
>>654 まったくもってその通りだと思うのですが、
なにぶん、LinuxサーバーのApacheTomcatで動いてるStrutsウェブアプリへの追加なもので・・・。
さらにちょっと調べてたのですが、rtfファイルってWORD入ってれば、
ダウンロードの際よっぽど変な設定しない限りWORDで開くように設定されるっぽいですね。
ひとまずは、
1、rtf案を第1案にする。
2、HTMLまたはテキストを第2案にする。
3、一応まだ時間はあるのでそれ以外(OpenOfficeとかほかになりかあるかとか)調べる
…でいきたいなと思います。
こんな夜分にアドバイスをくれた皆さん本当にありがとう。
何度もすいません。
>>655 の修正
ほかになりかあるかとか)調べる→他に何か手がないか)調べる
客「なんだこれわあああ!これインターネッツじゃないかきみいいいい!!」
客「おや?ワードで編集した内容が何故かインターネッツに反映されないぞ?」
客「ワードでダウンロード出来ると言っていたのに編集出来ないパソコンがあるじゃないか!ん?インストールが必要?きいてないぞわしは!」
素直にExcelでええやん いずれはワードもできるようになりますけど今はExcelで 我慢してねっていえば。 ワードで出力するには3億円かかりますよって言えば 納得するでしょ。
じゃあWordで出力できるところに頼みます
できるところがあればいいねww
サーバーがlinuxっつってんだろ
wine入れれば動くんじゃね
そこだけWindowsのワークステーションに処理させればいいじゃない
ごもっとも
それがいい
msofficeって今いくらで売ってるんですか?
ggrks
Java3D使ってみようと思うんだけど これって公式だと1.5.1までしか出てないっぽいのにJava.netとかいうところで1.5.2がリリースされてるんだな どうちがうんだ?
> Wordで出力 やったことないけど、Office2007 以降なら XML として docx 形式 で出力すれば Word で読めるんじゃないの?
OOXMLを自前で書くの?って思って調べたらPOIにもあるみたい。使えるかは分からない jOpenDocumentってのもあるみたい
凝ったことするんじゃなきゃ、XMLの構造に踏み込まなくても、 適当な雛形をWordで出させて、 文字列置換して出力すればそれで事足りるんじゃね? どうせ自動出力する文書なんて形式が決まりきってるんだから、 必要なところに、「@@TITLE」とか「@@HONBUN」とか、 あらかじめ決めた置換用の文字列入れたのを Word で作っておいて、 それを読み込んで文字列置換で置き換えたものを出力すればいい。 ユーザがテンプレート登録できるようにすれば、出力形式の変更もユーザで対応できるし。
そんなもんスレッドセーフなスクリプトレットを書けばスレッドセーフだし スレッドセーフでないスクリプトレットを書けばスレッドセーフでないというだけのことだ その今まで書いたスクリプトレットがスレッドセーフでないならまずいかもしれんね
マジかどうか分からないとしたら 絶対的に知識不足か、致命的にバカか いずれかだ
そういえば JSP考えたの日本人だって以前きいたな
じゃあ大丈夫そうですね
頭が大丈夫じゃなかったでござる
よく考えればスクリプトレットがスレッドセーフじゃなかったら 誰も使わないよなw まったく適当なこと書いてくれるぜ
クスクス
LibreOfficeってJavaのインタフェース持ってなかったっけ? それで加工してWord形式で保存、とかできないのかな? 余計な問題増やしそうな気もするけど…
客「あ、このあいだのWordの件ね?あれ無くていいから。その分値段やすくして」
AWTで複数Frameを表示しています。 Frameのxボタンが押された時アプリを終了するために windowClosing内でSystem.exit(0);を呼んでいるのですが 他のFrameにwindowClosingが来ません それどころかwindowClosedが来ないのでリソースの解放が出来ません。 Javaのバグだと思いますがどうすればこれらが通知されるようになるのでしょうか。 どうしても来ないどんなトリガでリソースを解放すればよいでしょうか。
JAVAはあきらめて素直にAPPLEを使うようにします。
前夜ははほんとにありがとうでした。
>>665 、
>>666 さん
Linuxは変えられないし、ちょっとそれは無理なような。
>>675 ,
>>676 さん
できればいいなと思って、
ためしに適当な日本語の長文をうってdocxで保存して中のXMLをみたのですが、
すいません、ちょっと自前で扱うのは難しそうです。
ファイルだけでもdocument.xmlとかstyels.xmlとかあって、
どれもこれも結構連動してるし、document.xmlだけ変えてOKというわけでもなさそうです。
それ以前にdocumentだけとっても
何せ、パラメーターには結構長文があって、
docment.xmlはどうも一行ごとに項目わけして保存してるみたいで、
下手すればこっちで改行の管理とかまでする羽目に…。
確かにほとんど定型ファイルなんですが、
それでも長文パラメーター3行とか4行になるかもってのがあると、
直接いじる手は難しいかなと思ってます。
>>689 の参考までに
以下、そのXMLの一部、文章はテキトーなニュースのコピペなんで気にしないでください。
- <w:r>
- <w:rPr>
<w:rStyle w:val="fontbk16150" />
<w:lang w:eastAsia="ja-JP" />
</w:rPr>
<w:t>た。全国を6〜7地域に分けた上で、出光興産の「塩釜油槽所」(宮城県塩釜市)を含む全国数十カ所の民間設備を国家備蓄の拠点に指定する。地域外からの供</w:t>
</w:r>
- <w:r>
- <w:rPr>
<w:rStyle w:val="fontbk16150" />
<w:lang w:eastAsia="ja-JP" />
</w:rPr>
<w:t xml:space="preserve"></w:t>
</w:r>
- <w:r>
- <w:rPr>
<w:rStyle w:val="fontbk16150" />
<w:lang w:eastAsia="ja-JP" />
</w:rPr>
<w:t>給が途絶えても、3〜5日分程度は域内の需要を賄えるようにする。</w:t>
</w:r>
- <w:r>
一文くらい一つの項目で扱ってくれよ、ぶつ切りするなよ…。
私の力量では無理っぽい。rtf案で押し通してみようかな・・・。
windows環境用意してくれればいいだけの話じゃないか
>>690 の追加
すいません。よくよく見たら行単位じゃなかったです。
多分一定数の文字以上は分けるようになってるんじゃないかと思います。
なんでこの例だと供給の真ん中でぶつ切りされてるのかよくわからないです。
どっちにしろ、相当仕様を研究しないと一部の変更でさえ手に負えません。
>>691 rtfもテキストとかの代案が全部はねられるような
最悪事態にはそれやらざるを得ないかもと思ってますが・・・。
なんでもかんでもJavaでやろうとする手札の少なさが問題だろ
rtfなんてはねられるよ Excelのがまだマシ
>>692 jOpenDocumentはリッチテキストからOOXMLを吐けるみたいよ。別途商用ライセンスもある
>>695 おお、本当ですか。さっそく試してみます。
ありがとうです。でも商用ライセンスは上司にはねられるかな…。
「提案があります。役立たずなあなたの首をきって、代わりに商用ライセンス買えば 時間も節約できる上、お釣りもきます」
↑これで凸するといい
[tech][Java]Unix系JavaでRuntime.execをつかうときの落とし穴 もしもしなのでURL貼れなくてすみません。 このタイトルのページの記述、本当なんでしょうか?
信じるものは救われない
>>699 どこを疑問に思ったか?とその理由位かけよ
うんちブリブリ
これマジなの?酷い話だ
>>699 昔 Linux の Sun JVM で vmstat の結果をひたすら取るプログラム書いてプロファイルしていたが
入出力か何かのスレッドが起動するだけだった。AIX (IBM JDK) でもそう。
Mac OS X (Apple JDK) 固有の話じゃねぇのそれ。
言った手前手元の環境で試してみたが Linux, Mac OS X 共に fork したプロセスで実行されるなんて無かった。 「Unix系Javaで一般的な話」ではないな。 ◆CentOS 5.6 torao@clove$ cat A.java public class A{ public static void main(String[] args) throws Exception { while(true){ Process proc = Runtime.getRuntime().exec("sleep 1"); java.io.InputStream in = proc.getInputStream(); while(true){ int ch = in.read(); if(ch < 0) break; System.out.write(ch); } } } } torao@clove$ java A & torao@clove$ ps u USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND torao 22083 0.0 0.1 85144 3664 pts/0 Ss 22:00 0:00 -bash torao 22220 0.0 0.1 85144 3664 pts/1 Ss+ 22:03 0:00 -bash torao 22549 0.4 0.6 781092 13752 pts/0 Sl 22:18 0:00 java A torao 22569 0.0 0.0 58916 532 pts/0 S 22:18 0:00 sleep 1 torao 22570 0.0 0.0 83608 2052 pts/0 R+ 22:18 0:00 ps u torao@clove$ java -version java version "1.6.0_26" Java(TM) SE Runtime Environment (build 1.6.0_26-b03) Java HotSpot(TM) 64-Bit Server VM (build 20.1-b02, mixed mode) ◆MacOSX 10.5 aquamarine:a torao$ ps u USER PID %CPU %MEM VSZ RSS TT STAT STARTED TIME COMMAND torao 14877 0.0 0.0 591428 284 s000 S 10:20PM 0:00.01 sleep 1 torao 14646 0.0 0.6 3047180 23204 s000 S 10:16PM 0:02.17 /usr/bin/java A torao 14546 0.0 0.0 600176 896 s000 Ss 10:09PM 0:00.07 -bash aquamarine:a torao$ java -version java version "1.6.0_26" Java(TM) SE Runtime Environment (build 1.6.0_26-b03-384-9M3425) Java HotSpot(TM) 64-Bit Server VM (build 20.1-b02-384, mixed mode)
ガキは早く糞して寝ろよ
708 :
デフォルトの名無しさん :2011/10/09(日) 01:49:41.96
whileループ内でイベントを受け取って、右上の[X]ボタンで終了させたいのですが、どんなやり方がありますか?
>>699 AppleのJVMがどういう実装なのか知らないけど
OpenJDKでは、execメソッドから呼ばれるネイティブ関数は
openjdk/jdk/src/solaris/native/java/lang/UNIXProcess_md.c
のJava_java_lang_UNIXProcess_forkAndExecみたいだね。
ここ見てみては?
ttp://d.hatena.ne.jp/kaoskfos/20080320/p1 だと、
> fork が起動元アプリケーションと同サイズのメモリを一瞬確保する
とあるけど、forkがそんな動作するのかどうかは知らない。
String s = "test"; System.out.println(s == "test"); この実行結果がtrueになります。 "test"のインスタンスが同じということなのでしょうか? "test"はメモリ上に複数できているのではないのでしょうか。。
言語仕様を読む。めんどくさかったら、とりあえず、 自分が言語の設計者だったらどうするか考える。
>>711 そもそもどんな状況のときに、そんなコード書くんだ?
そういうコードを書くなでFA。
>>714 専門学校での定期試験にでました。
まじめな質問です。
抜打スルー検定試験の結果 0 点
スレの方針がわかんなくなってきた。 初心者お断りなのか、なんでもありなのか。
まさに糞だな
>>715 学校で生じた疑問を学校で聞かないとか
何のために金払ってるんだ?バカなの?
ここで質問していいのかあれですが。 商用のWebシステムを構築するのに、言語を何使うべきか検討しています。 何も考えずにJavaでいいとは思うのですが、上司がCだろと言っています。 そこでC/C++よりJavaのほうが良いといえる理由を教えて下さい。 Webシステムといっても画面が一切ないインターフェース的なシステムなため 速度出るCのがよいのではと上司は言っています。 (でも処理速度はそんな気にしなくて良かったり) ・生産性 オブジェクト型、有効なフレームワークの多いjavaのがよい ・難易度 そもそもWebシステムをスクラッチでCでって無理じゃね? 単価 PGの単価はあんまかわらんきがする。 言語べつの平均単価とかのってるサイトないかね 処理速度 コンパイラによるけど、まぁまずCのが早い バグ メモリ周りがCじゃ怖い
ソレ答えるといくら貰えるの?
>>721 プラットホームはなんですか?
>バグ
>メモリ周りがCじゃ怖い
Web システムは文字列をバンバンあつかわなければならないのに、メモリ管理に気をくばりつつ C でちまちま書いていたのでは、命がいくつあっても足らないような気がします。
スピードを気にしなければならないのなら、C と Java の間をとって、C++ なんかどうですか?
プラットフォームはなんなの? WindowsならISAPI Extensionがいいよ
上司に逆らうのは適切ではないな
むしろ
>>721 には
> 何も考えずにJavaでいい
これをそのまま言って欲しい
首きるのはやめてww プラットフォームはLinux やっぱCはないよなぁ
>>725 のようなヤツが、リークしまくったり、GC発生しまくりのアプリを作るんだよなぁ。
10年異常前CでCGIつくりまくってた。
>>721 どう考えてもC一択
むしろなぜJavaなのか問い詰めたい
>>725 みたいな考えでC++使うとJavaより遅かったりするよね
まず、pythonとかでサクっと作って あとで検討したらいいんじゃないか
>そもそもWebシステムをスクラッチでCでって無理じゃね? サーバーから作るつもりなのかな?
739 :
721 :2011/10/09(日) 20:22:07.41
Cっていってる人はまじめにいってるのかようわからんな。 そもそもCでWebシステムって普通に作れるの? そっからまったくわからん。 JDBCとマッパーないとDBさわれないです… >737 Ruby,python,PHPあたりはさすがにちょっと処理遅くなりそうなんで敬遠。
おまえじゃ無理 死ねよ
いっそGAE提案するとかは?別にGAEじゃなくていいんだけどCを使う明確な理由を持ってなさそうだから 上司が全く考えてなさそうな提案したらあっさり通りそうだよね。
普通にCで10システムくらいWebアプリ作ったっつーの。
てかCでWebシステム作るスキルがないなら選択の余地ないじゃん。 マジレスするとこういうのは作る奴の得意な言語で作るのが一番速くてキレイに作れる。
>>739 客から金取るんだろ?
正直お前、商用アプリで開発言語を選定するレベルにないと思うんだけど
上司か先輩にでも決めてもらえよ
まじレスすると
>>721 が癌だな
首きってきちんとしたエンジニアに任せれば全て解決
でも正直なところJavaおすすめ
>>739 >そもそもCでWebシステムって普通に作れるの?
>そっからまったくわからん。
普通に作れます。あなたが作れるかどうかは分からない。
スクリプト言語の処理速度を気にするくせにDBはわからないってw
そういえば2ちゃんもCじゃなかったっけ?
752 :
721 :2011/10/09(日) 20:36:22.52
厳しいご回答ありがとうございました。 俺も俺なんかに選定きくなよと思うもん。 こういうアーキテクチャ設計以前のあたりってあんま参考書とかないんだけど エライ人たちは経験で学んでるもんなんすかね。
>>752 マジレスすると、お前が提示した条件だけじゃどの言語がベターなのかなんてわかるわけない
規模とか非機能要件とか人員のスキルとか、考えないといけないことはいろいろあって
その上で最適解を出さないとさ
社内のスキルがある人に決めてもらうか、どうしてもお前が決めなきゃいけないなら
もっと詳細に要件を晒せ
>>721 上司がJobs的な、スーパー独裁者であればC++。ただしBoost.Regexの利用は何があっても認めさせる。
そうでなければJavaでもPerlでもPythonでもRubyでも好きなものを。
どれもダメなら会社に見切りをつけてリクナビに登録
ほかに制約条件が無いのならC/C++にする意味はまったく無い
上司がC言ってて
>>721 に判断能力がない時点でC一択だろ
イチイチイチイチこういうチンカスの相手をするな せっかくの休みなのに疲れるだろ
機械語でやれ
760 :
721 :2011/10/09(日) 21:04:11.62
スキルある人に聞くべきだとは思うんだけど、人脈ないからつらいんすわ… ずっと出稼ぎで社外にいる要員なもんで。 チンカス呼ばわりされてきたんでこれで終了にしますわ。 まじめに回答してくれた方はありがとうございました。
自ら底辺土方の生活を選んでチンカス呼ばわりまでされてお前の人生は最低最悪だなw
乗り遅れたか。ちょっと聞きたかったな。Webの画面は一切触らないって、そもそもWebシステムなの? どの層で動作させようとしているのか、実際はデーモン的なものじゃないかって思うんだが、まあいいか
Webサービスってもんがあるだろうよ
画面がないって言うから、他サイトとの接続じゃないかと思った
というか、Webシステムって何なの? WebアプリともWebサービスともWebサーバとも違うものなの?
Webサービスやってるがさっぱりわからねぇ もうプロゴラマやめたい
だよな。わからないとこあることがわからない。
プロゴラマというのが何かがわからない
TomcatにStrutsに〜って案が出ないお前の上司は高卒か何かですか?
プロのゴラマのことさ
専門卒のわしらはすらっとTomcatにStrutsって案出るわ
773 :
デフォルトの名無しさん :2011/10/09(日) 23:24:01.08
知ったかぶって無知っぷりを晒すのが流行ってるようだな
774 :
デフォルトの名無しさん :2011/10/09(日) 23:55:50.78
jsp:includeで読み込むJSPファイルをボタンのクリックで動的に変化させたい。 jQueryのreplaceWithで要素ごと置き換えたり、page属性の値だけ変えようかと思ったんだけど、 JavaScriptはコンパイル後のHTMLに対して作用するものだから無理?かなと。 良い方法を教えてください。
やろうとしてることそのもの直接は、その通り無理だが、動き自体は可能。 そのJSPファイル部分だけを返すURLを用意→ボタンクリック時にAjaxで呼び出し→innerHtmlでそっくり入れ替える で出来る。
現代の技術では無理
失われたマヤ文明の技術で何とか出来る?
778 :
774 :2011/10/10(月) 01:49:15.01
>>775 >>776 そもそも無理なことだったのね。ありがとう。
innerHTMLの方法を検討してみます。
>>772 既存の保守とか多いからstrutsは永遠に現役そうだけど、そろそろ新規の案件くらい脱strutsしといたがいいとも思う時はある。
sastrutsかspring辺りなんだろうか、今だと。sastrutsなら仕事で使い特に問題なかったから自分は当分こっちにしようかと。
playに興味はあるけど仕事で使うのは怖いなあ。
struts2?あんなものはなかったと言うことで。
おいおい 今仕事の案件でstruts2やらされそうになってるんだよ なんとか説得してくれよ
Struts2ってヤバイの?
>>780 使える技術者いないから後のメンテ大変よ?じゃダメかな?
>>781 ヤバイと言うより情報が無さすぎて黙殺されてると言った方が近い。
後、余りにもstrutsと違いすぎるのにstrutsの名を冠したことで余計に反発を食らった感もある。
でも海外ではStruts2が標準でしょ?
>>783 むしろspringが標準だとどこかの雑誌で見た気がする。
本当かどうかはわからないけど。
Struts2 と spring は用途が被らないでしょ。 組み合わせて使ってもいいし。
海外でStruts2が流行ってるんじゃなくて日本でだけまだStruts使ってるって状況なだけ
>>785 組み合わせはそりゃ出来るけどspring使うなら普通はspringMVC使うんじゃない?
わざわざ他のフレームワークと組み合わせるってあんまり聞かない。
まあ、自分は使ったことすらないけどさ。
789 :
デフォルトの名無しさん :2011/10/10(月) 10:35:33.70
GUIプログラムでボタンが3個あるんですが、それぞれaddActionListener(new ActionListener() {public void actionPerformed(ActionEvent e){ flag = ** ; }} ) として、内部クラスでアクションイベントを実装しています。 これは、ボタンにより、hogeの値が1から3まで変わります。 hogeはJFrame(メインウィンドウ)の変数ですが、コンパイルするとfinalで宣言してくださいとかいわれます。 finalで宣言すると、hogeの値は内部クラスの中で変えてはいけないのですか?
790 :
789 :2011/10/10(月) 10:36:37.94
hogeではなく、flagです。間違えました。すみません。
>>789 public class MyFrame extends JFrame {
public void hoge() {
// ↓これと
int flag;
button1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
// ↓これとの間でジレンマ
flag = 1;
}
});
}
}
コンパイルしてみる ⇒flag を final 宣言しろといわれる
final 宣言してみる ⇒flag に代入できませんといわれる、って意味か?
だったら、ひとまずこうしとけ。
public class MyFrame extends JFrame {
// ↓インスタンス変数化
private int flag;
public void hoge() {
button1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
flag = 1;
}
});
}
}
793 :
789 :2011/10/10(月) 12:18:04.38
>>791 どうもありがとうございます。自分自身にActionListenerをimplementすれば
確かにできますね。ありがとうございます。なぜ変えてはいけないとか理由とかしらなかったので
そのサイトを良く見てみます。他にも色々と書いてあってためになりそうですので
他の部分も見てみます。どうもありがとうございました。
>>792 インスタンス変数にすればいいんですね(´・ω・`)
そっちの方がやり方としては単純といえば単純ですね。理由は、
>>791 さんが
載せてくださった、Webサイトに書いてありそうです。
長い、文章を書いて丁寧に教えてくださって、ありがとうございます。手っ取り早いのでインスタンス変数にしておきます(;^_^
お二方どうもありがとうございました。やり方は、色々あるんですね。とても勉強になりました。
クラス変数が必須のケースってありますか
設計依存。 あれば便利と思うなら作る。 File.separatorとか無いと不便だろ?
プログラミング経験一切無しの超初心者なんだけど、 やさしいjavaは読み終えた。テンプレ通り次は独習javaかコアjavaに手を出してみようと考えてるんだけど、 この二冊を読むにはまだ早いかな?
つうか、組みたいプログラムがあったから やさしいjava を読んだんじゃないの? 何を読むか(あるいは読まずに作り始めるか)は、 作ろうとして何が分からないかで決めればいいんじゃね?
>>796 入門書一冊読んだらあとはリファレンスを見ながら
どんどんプログラムを作っていくのがいいのだけど、
別に読書が好きなら適当にどんな本でもどんどん
読んでいればいいと思うよ。
独習ジャヴァって演習問題の解答も付いてない糞本じゃん
本読んでてもしょうがいないよ
>>796 うーん。やっぱり組みたいもの組むのが一番じゃない?
経験が一番の早道。
まあ、優しいJavaを読んだだけでいきなり銀行の仕事に放りこまれた俺に比べたらまだ自由効くでしょ。
漫然と勉強を続けるうちに作りたいものが出来てくるようなこともある 興味の赴くままに走ればよいのではないのか
AWTやswingのフレームで任意の座標にボタンやテキストフィールドを設置できますか? また、フォントを任意の座標、角度でできますでしょうか? 詳しいサイトがありましたら教えてください。
804 :
デフォルトの名無しさん :2011/10/10(月) 16:10:34.92
引数に参照型を指定することを参照渡しって呼ぶんですか? 本に基本データ型を引数に渡すことを値渡し、 参照型を渡すことを参照渡しって書いてあるのですが。
走れメロン
何の本だよ
>>796 >独習java
悪書です。やめておいたほうがいい。
独習C++のハーバード・シルト先生ではありません。
OOのポイントである abstract/interface については本質に迫っていない、というか著者自身がわかっていない。
811 :
803 :2011/10/10(月) 23:04:09.69
なんでframeのサイズをクライアント領域で設計しなかったんだろう 不便すぎる
>>808 馬の骨よりも、Amazonの評価のほうを信じます。
abstract/interfaceがOOのポイントというのは Java信者の妄想。珍説
敢えて逆にしてまで突っ込むとか不要。 OOを深く理解してる人は、interfceとabstractの説明がまともなのは事実でしょ
また、大して自分の意見も持ってないくせに噛み付いてきたよw 言いたいことがあるならちゃんと自分の意見を言えって。
おいおい俺かよ?
おいおいお前誰だよ?
おいおい俺は誰だよ?
820 :
816 :2011/10/11(火) 02:42:25.06
どうぞどうぞどうぞ
>>813 その amazon の評価者とやらも、やはりどこの馬の骨かわからないものなんですけれども。
>>814 ほう。
確かにオブジェクトオリエンティドの概念群は様々な概念の複合であることは認めますが、
しかし、C++ の virtual キーワード(仮想関数)と同等の abstract/interface を十分に説明できないのでは、これは欠陥と言わざるを得ないではないでしょうか?
GoF のデザインパターンから virtual を抜いたらなにが残るというのでしょうか?
むしろvirtualだけでできていると言っても良いくらいです
825 :
デフォルトの名無しさん :2011/10/11(火) 07:58:11.94
Eclipseで動いてたアプレットがデプロイしたら動かないんだけど どうデバッグしたらいいとおもう?
>>824 「その程度じゃ」何が「無理」なんでしょうか?日本語でどうぞ。
1.まず、HelloWorld レベルのプログラムがその環境でデプロイして動くかどうかを確認。 2. 1.が動いたら、現状のプログラムを順番に機能を削りながら、 動作するまでデプロイして動作確認を繰り返す。
>>828 OOを知らないのならば、そういってくださればいいのに。
>>827 ・簡単なアプレットは動く
・アプレットの領域が灰色で、たぶんファイルは見つかってる(ファイル名を変えると真っ白に×印になる)
・機能を削るのが難しい
JVMは、たぶん何かしらエラーを吐いてるはずだけど
それを見る方法はないの?
>>822 abstract/interfaceについてあなたの方が勘違いしてるんじゃないですか?
>JVMは、たぶん何かしらエラーを吐いてるはずだけど >それを見る方法はないの? ブラウザのJavaコンソールに出るはずだけど・・・
>>832 firefox7.0.1ではJavaが動かない
chromeにJavaコンソールは無い
IE8でJavaコンソール起動しようとすると100%落ちる
>>834 環境が特定されてない質問に一般論で答えた回答にそんなこと言われても・・・。
appletのコンソールはコントロールパネルでJavaの設定から 実行時に表示させるようにできるよ Java側でコンソール出すから firefoxでもChromeでもIEでもブラウザ関係無く見れるよ
>>836 コンパネ>Java>詳細>表示する>OK
なにか適当なアプレットのサンプルページを開く
うんともすんともいわない
839 :
825 :2011/10/11(火) 13:52:47.40
動いた!動いた!やったー!
こんにちは、はじめまして。 文字を画像化し、その画像のpixel毎の情報を得る方法を教えてください。 (使えるメソッド名だけでも教えていただけると助かります) すでに用意されたString[](各要素は1文字)について、 1. String[]の要素ごとに、四角形の画像上に表示(四角形の画像は文字がちょうど収まる大きさにする) 2. 1.で得た四角形の画像の各pixelのRGB情報を取得 をしたいです。 ・プログラム中で画像を表示させる必要はありません ・フォントは自分で決めますが、明示する必要があります ・実行速度速度は重視しません はじめGraphics2Dクラスを使って1.は実装しましたが、2.に該当するメソッドがなく立ち止まっています。
BufferedImageをインスタンス化して getGraphics()のGraphicsオブジェクトに対して描画 あとはgetRGB(int x, int y)でintの色が取れる
842 :
840 :2011/10/11(火) 15:39:38.18
>>841 うまくいきました、どうもありがとうございます!
843 :
デフォルトの名無しさん :2011/10/11(火) 16:07:08.21
おい ちょっと複雑で組むのに30分くらいかかる問題出してくれ。 暇すぎる。
じゃあJavaソース整形ソフトでも作ってくれ
845 :
デフォルトの名無しさん :2011/10/11(火) 16:20:45.93
真面目によろしく
FizzBuzz問題でもやってくれ まさかできないなんてことはないよな
リストをCollectionsを使って任意の並べ替えをした後、 リストの並びを初期の状態に戻すようなメソッドってありますか?
ありません
ありません 初期状態を別に置いておけばいいだけなので簡単に自作できると思うけど。
>>850 ,851
ないですか、どうもです。
自作してみます。
849みたいなのってMementoパターン使える? 使うまでもないっていうのはあるかもしれないけど
>>854 リストの要素がimmutableなら簡単に実装できるね。
使うまでもない、というのはその通り。
>>858 Javaじゃ無理だっつてんだろ
クラス図見直してこい
ここ見てるといつも思うんだが、 皆さんそんなにアプレット好きなのか……?
というより、アプレットの情報源が少ないのだろう。
>>860 宿題スレとか見てると、学校の課題でよくあるみたいね、アプレット
BOMつきUTF8の先頭行を文字列として読み込むのに、BOM部分を安全に削除(トリミング)する方法ってどんなんがあるでしょうか。
入力ストリームから自分で3バイト読み捨てる、位しかないと思う。
xmlパーサの実装とかそうやってるな。
867 :
デフォルトの名無しさん :2011/10/12(水) 10:54:48.62
あるJavaアプリがクライアントVMとサーバーVMどっちで起動されてるかって 調べる方法ある?
>>867 実行してるJVMと、jpsコマンドでわかる起動引数から導出できるかと。
UTF8だとそんなやり方しないといけないの? UTF16ならBOMありならBEでもLEでも読めるのに。
>>864 使ったことないが
Commons IO の BOMInputStream
>>870 何だよBOMInputStreamって。
BOMってのは、バイト列と「文字のシーケンス」との
変換する際に発生するもの。
クラス名からして設計ミスだ。
>>831 一日たったのですが、ちゃんと説明できないようですね。煽り文句だけ上達しても仕方がないと思いますよ。
で、どう勘違いしているというのです?
結論:独習Java は買ってはいけない糞本。
>>831 ではないが、C++のvirtualに対応するのは「finalでないメソッド」だな。
Javaのabstractに対応するC++の書き方は「=delete」
>>865-866 ,
>>869-872 遅レスですが、ありがとうございます。すでに文字列にしてしまった場合の対処法はないのでしょうか?
BOMInputStreamはBOMなしのテキスト(UTF8,Shift-JIS)を読んだ場合も完全互換なのでしょうか。
>>874 たしかに java での abstract に一対一に対応するものは c++ にはなく、java->c++ の過程で abstract は消えてしまいますが‥‥。
>>875 説得力のある内容を記述できないので糞呼ばわりしているのですね。脳細胞を使う練習、頑張ってください。
呼ばれた気がした
880 :
デフォルトの名無しさん :2011/10/13(木) 17:26:30.13
appletでinit()でボタンなどのGUIを配置したあと、ボタンを変えたりテキストエリアを消したりするにはどんなやり方がありますか?
完全に取り除くならremove 見えなくするだけならsetVisible ボタンの文字を変えるならsetLabel
下記のような比較を行いたいのですが、どうやってもtrueになってくれません。 文字コードを揃えたりもしてみたんですが・・・。 if(s.equals(a)) あるいは if(s.indexOf(a)) String s = サーバーから拾ってきた文字列データ sをtxtに保存 String a = 同じくサーバーから拾ってきた全く同じ文字列データ
あ、if(s.indexOf(a) != -1) でした。
885 :
883 :2011/10/14(金) 02:18:48.38
すみません自己解決しました。 改行を拾っていたせいでした。
886 :
デフォルトの名無しさん :2011/10/14(金) 15:53:10.40
Runnableのクラスのstaticメンバに new Thread(this); みたいに書くのは無理? スタティックロードで自分自身を実行するスレッド、という感じ ちょっとやってみたらJVMが例外出して落ちるんだけど
JVMのバグだからオラクルに報告したほうがいいよ!
888 :
886 :2011/10/14(金) 16:44:55.65
継承元のクラスもRunnableでrun()を上書きしてたから そのせいでJVMが落ちてたのかも とりあえず別の方法でも良かったからやめた
>>886 インスタンス生成する前にthisは参照できないのでコンパイルエラーではじかれる。
890 :
886 :2011/10/14(金) 16:56:28.23
>>889 ごめん、正確にはシングルトンのクラスで
private Class instance = new Class();
のinstanceを参照してる。
その説明聞くと Threadインスタンス使いまわすような状況になっちゃってるように思えるけど…?
892 :
デフォルトの名無しさん :2011/10/14(金) 17:12:08.41
SJISの'先'の字だけのテキストを 正しく文字コード判定する方法ってありますか? chardet, juniversalchardet どちらも失敗したのですが実装がまずかったのかもしれません。
こんなライブラリあるのか。参考になった。 それはともかく、高々2バイトでそんな汎用的な文字コード判定は無理じゃない?
894 :
デフォルトの名無しさん :2011/10/14(金) 18:26:36.87
特定の変数などの状態が変わったことをイベントリスナー風に自動的に通知するにはどうすれば良いですか?
>>894 教科書的に答えるなら、 setter に仕込めばいいんじゃね?
別のスレッドでストーキングすれば
こんにちは。 Javaで書かれたCobraという名前のHTML toolkit(パーサーとレンダラーでHTML4.01に対応している)にHTML5のvideoタグとaudioタグを対応させたいのですが、どなたか分かりませんか? HTML5の仕様書?(w3cのホームページにあるもの)と睨めっこしながら、パーサー部分やレンダラー部分と格闘しているのですが、ただインタフェースを追加してもコードが正しいのか間違っているのかも分かりません。
ビジーループ
チンコ
1.Object obj = new Class1(); 2.Object obj = new Class2(); 3.Object obj = new Class3(); 3つのうちのどれか一つのobjがよそのクラスから渡されてきた時、 この中身の型を取得するうまい方法はないもんでしょうか。 instanceofで場合分けする以外ないんですかね。
事故解決しました obj.getClass().getName();
>>901 obj.getClass().getName()とか。
型を取得してどう使うか、処理の内容にもよるけど、 対象の型が final じゃないと、その処理を使う処理の方で、 継承クラスを作ったりし始めると対応できないんじゃね?
日本語でおk
わかりにくくてすまん。 つまり、クラス名を決めうちしてしまうと、 継承クラスを渡されたとき、処理が変わってしまうんじゃないのかと言う話。 それでいい場合もあるだろうけど、ダメな場合もあるんじゃないかと。
なんどもうるさいぞ!
ごめんなさい
interface Foo<E extends Foo<E>> { ... } という定義を見たのですが、これってどういう意味なんでしょうか。 ぱっと見では、Foo<E> が Foo<E> を継承しているように見えますが、 継承関係が再帰的になってしまい、おかしいように思えます。 だれか解説してください。
チンコ
デフォルトパッケージのクラスってimportできないのですか?
デフォルトでされてる
914 :
デフォルトの名無しさん :2011/10/15(土) 11:51:00.92
ルートエレメントとかが無くても、XMLをパースして <tag>content</tag> のcontentを全部抜き出してリストとかで受け取りたいんですが 何か良い方法ありますか?
>>914 こういうんじゃダメ?
1.XML パーサの例外をつかまえて、足りないエレメントを補完したテキストを作りそれをパーサに食わせる
2.パーサの解析結果から補完した分を飛ばして必要な要素を取り出す。
>>914 >ルートエレメントとかが無くても、・・・
そんなのXMLとは言わない。
XMLパーサに頼らず自分で解析しな。
917 :
914 :2011/10/15(土) 12:20:09.99
1.全てのタグを自前の特殊タグに変換 2.特殊タグが複数続いてたら1つに変換 3.特殊タグを区切り文字にして配列化 でやろうとしたんだけど2番がうまくいかない 誰か正規表現教えて
せめて「教えて頂けないでしょうか」だろカス
919 :
914 :2011/10/15(土) 12:29:48.86
できたわ
チンコ
すみません、どなたか897もお願い致します。m(_ _)m
すみません、わかる人以外はレス不要です。
何も問題ない
927 :
921 :2011/10/15(土) 23:25:43.06
928 :
デフォルトの名無しさん :2011/10/16(日) 00:35:51.17
インターフェースと抽象クラスの必要性が未だにわからん
じゃあ、クラスとメンバの必要性はわかるのか?
>>928 一人で小規模開発するならあんまりわからんかも知れない。
複数人で開発するとか一人でも大規模な開発すると多少ありがたみがわかってくる。
あと大規模なやつだとそのソースコード見るとああこういう風に使うんだなってのがわかる。
自分の場合は仕様自体は何となく理解してても、
プログラマになってからその辺のありがたみをわかるのには3年かかった。
単体テスト終わったらうpしといてください
>>928 必要性とかいうと、必要ないようなきもする。
if文による場合分け、分岐をポリモーフィズムでなくすことができる(おれもやってみたい!とおもう)
ポリモーフィズムを実現するために、抽象クラスを継承して、いろんなクラスを用意する。
何処で分けるかが大事なんだろ。 テスト済みのコードを書き換えて追加するのはウザイって話じゃね?
石の上にも3年
switch,ifの排除は「その効能」でしかなくoops (Object Oriented ProgramingS)の本質的な処を知りたいなら、c++はポリモーフィズムを言語しように組み込んでいるのだからjavaだけじゃなくてc++もしっかり勉強してc++の側からも見えるようになると理解出来るようになるだろう
クラスの抽象化による依存性の逆転が 手続き型プログラミングとオブジェクト指向プログラミングの決定的な違い
>>939 javascriptも知っていればすぐ分かるが本質的にクラスは関係ない
941 :
デフォルトの名無しさん :2011/10/16(日) 15:12:21.36
javaインストールされないんだけど・・・
そうなんか
抽象クラスやインタフェースは本質的にクラスは関係ありません
>>939 抽象化による依存性の逆転とか初耳なんだが
もう少しkwsk
Robot()で操作されたマウスの挙動はイベントリスナーで検出できない?
抽象クラスっていうぐらいだからクラスは関係あるだろアホ
されないと動かないじゃん
>>945 Javaアプリの外にフォーカスがある場合は無理
基本情報技術者のjavaの問題さっぱりわからんかった アセンブラ言語マンセーです
>>944 ロジックAからロジックBを呼び出すとき、A->Bという依存性があるが
Bを抽象化すると、{ A-> (抽象B) } <- (具象B) というように依存の向きが逆転する。
なお、(抽象B)はAに属するオマケとして配置することに注意。
Javaの標準ライブラリにおけるList<-ArrayListなどの関係は、
Listを使うクライアントが未知のために、
エロイ人がその知識と経験からエイヤと決めた妥協の産物。
本来は、使うクライアントがあってこそ、抽象化の範囲を適切に決められる。
>>946 この世の全てのものは互いに本質的に関係ないのです
951 :
944 :2011/10/16(日) 20:32:22.86
>>950 インターフェース切る時の話だったか。
未知の概念じゃなくて安心した。d
ロジック間の依存性を低く抑えてるのは確かだが、逆転してるという表現には違和感が……
それは中小という言葉を使ってはいるもののインターフェースの話だよな。
本当に理解して説明してるのか怪しい
synchronizedブロックが理解できないので誰か教えてください。 あれは、ブロック内の処理を実行中に 別のスレッドがそのブロックの処理を実行した場合、 後から来たスレッドを待機させる処理、という理解で良いのでしょうか。 だとすると、パラメータとして引き渡しているインスタンスは 何の役割を果たしているのでしょうか。
ロック
えーと synchronizedブロックは、 ブロック内の処理を実行中、渡されたインスタンスをロックする処理、なのでしょうか。 他のスレッドの処理が待機するのは、 同一synchronizedブロックに入ったときではなく、 パラメータとして引き渡されたインスタンスへアクセスを試みたとき、 となるのでしょうか。
マンコ
インスタンスはあくまでキーと考える 同一のキーを使用して複数のスレッドが同時にロックを取得することはできないので、 他のスレッドはsynchronizedの入り口で待たされるわけです
synchronizedで渡されたオブジェクトは、 そのオブジェクトがどんな実装を行っているものかは関係なく、 単なるマーカー的なもの。 だから、一貫して使っていれば、どこの馬の骨ともわからぬオブジェクトを使ってよい。 なお、synchronizedでガードする必要があるのは、処理ではなくデータ。 基本的には、ガードしたいオブジェクトへの全てのアクセスに対し、 同じオブジェクトでガードしていることが必要 (ピギーバッキングで微妙なこともできるかもしれないけど)
仕様に関することは、仕様を自分できちんと読んだ方がいいぞ
といっても馬鹿には無理だけどなw
特定のオブジェクトへのアクセスを同期化するために そのオブジェクトへのアクセスをロックってあんまりしないよね だいたい一連の処理を分割させないために適当に一つ選んでロックに使う
そりゃそうだ。 そのインスタンスのpublicメソッドに synchronizedつけとけって話になるからな
難解。 synchronized処理に渡されたインスタンスは、 そのブロックが抜けるまでキーとして保持される。 synchronized処理に渡されたインスタンスがすでにキーとして存在する場合、 そのスレッドはキーが開放されるまで待機する。 ゆえに、全く別の場所で実行されたsynchronizedでも、 渡されたインスタンスが同一ならば後発側が待機させられ、 同じ場所で実行されたsynchronizedでも、 渡されたインスタンスが違うならば並行して動作する、ということでしょうか。 馬鹿だから無理です、って言ったら明日からPowerd by 無職ですので。 多少は無理せねばならんのがつらいところです。
マルチスレッドでファイル操作する時とか、 インスタンスメソッドでsynchronizedが付いてるのとか良く見るな
あんまり粒度の小さい操作をsynchronizedにしても どうせ使うときに外からロックすることになるから大して意味ないけど
C#の場合、Stack<Sprite> にSpriteを継承したものならなんでも突っ込めるけど、 Javaではできないじゃん? どうすりゃいいの?
どういうこと? ↓これはコンパイル通るけど、こういうのじゃダメなの? List<List> list = new ArrayList<List>(); list.add( new ArrayList<String>() );
できるんだからできないじゃん?って言わなければいいじゃん
C#ではWPFは全然流行らなくて結局WIN FORMでやるのが正解だって聞いたんですけど本当ですか?
今日の情報処理技術者試験受けた奴居る?
クラスを任意の文字列で宣言することってできますか? 例えばsampleクラスのオブジェクトを作成する際に Sample args[0] = new Sample(); という形で作成したいんですが…
Class.forName(String)じゃだめなん?
変数名を任意の文字列でやんのは無理じゃね? 一番近いのはMap<String, Sample>か?
Java ってインスタンスのラベルって実行時に残ってるんだっけ?
インスタンスのラベルって何?
オブジェクトと言うべきか。 Sample sample = new Sample(); ってやったときの、 sample って文字列がバイトコードに残ってるかって話。
マンコ
仕様知ってるわけじゃないけど、変数名分からなければデバッグ時に変数ウォッチできないんじゃね? ということでデバッグ付きコンパイルでは残っているに一票。 リフレクションとかで引っ張ってこれるわけじゃないんでデバッグなしだと消えるんじゃ?
仕様云々以前にデコンパイルやったことないのか?
.netなら変数そのままだな
次スレよろ
コンパイルのオプションで変わるだろ。 例えばEclipseで作ったclassと、単純にjavac叩いてできたclassをjadにでも突っ込んでみるといい。
文字列がバイトコードに残るかどうかしか訊いてません
Dukeの朝は一杯のJavaの味噌煮から始まる。 そしてJVMの帳が下りる頃、Dukeは心地よい眠りに就くのだ。
>>984 そもそもデバッグなしコンパイルをやったことがありません。
>>981 ローカル変数名はコンパイルするとスロット番号による管理に置き換わる。
フィールド変数名はコンパイルするとコンスタントプールへの
インデックス値による管理に置き換わる。
実行時のリフレクションで名前アクセスできるのはフィールド値だけ。
これで答えになったかな
981じゃないけどさんきゅー
じすれ
じすれ
じすれ
じすれ
埋めるな馬鹿
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。