★★Java質問・相談スレッド162★★
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2013/06/09(日) 20:27:10.93JavaScript, Ajaxの質問は、ここでは受け付けていません。
Web製作管理 http://pc11.2ch.net/hp/
Webプログラミング http://pc11.2ch.net/php/
をご利用下さい。
よくある質問
・「コマンドまたはファイル名が違います」
「'javac' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。」
「Exception in thread "main" java.lang.NoClassDefFoundError: 」
(p)ttp://www.wikiroom.com/java/?path,classpath
・String に == は使うな。equals() を使え。
・「\12288 は不正な文字です。」
文字リテラル以外で全角スペースは使えません。半角スペースに。
・その他の質問→「APIのjavadoc見ろ」
前スレッド
★★Java質問・相談スレッド161★★
http://toro.2ch.net/test/read.cgi/tech/1364006637/
0002デフォルトの名無しさん
2013/06/09(日) 21:20:32.650003デフォルトの名無しさん
2013/06/09(日) 21:24:53.90老いたことが害なのではなく、
老いた者が量産され社会のバランスを
欠いている様が害という考えだ
0004デフォルトの名無しさん
2013/06/09(日) 21:25:42.230005デフォルトの名無しさん
2013/06/09(日) 21:32:42.98だが次の三日で見限った
0006前スレの991
2013/06/09(日) 21:32:53.13>>995さん
>>996さん
C的というよりC++的なコードありがとうございます。
ちょっと最近C/C++やって無かったので思い出しながらコード見たんですが
で、>>996さんのコード見て
Zow *dive(Zow * zow2) {
zow2=new Zow();
}
Zow * const zow=new Zow();
dive(zow);
をちょっと改変して
Zow *dive(Zow ** zow2) {
*zow2=new Zow();
}
Zow * const zow=new Zow();
dive(&zow);
っていう動作(C++ならコンパイルエラー)をJAVAで実装するのは
無理って事ですか?
0007デフォルトの名無しさん
2013/06/09(日) 21:33:16.140008KUSO KOTE
2013/06/09(日) 21:38:36.37Javaには参照渡しが無いので直接的には無理。
代わりに要素数1の配列を使うのがよくあるうんこコード。
Zow[] zow = new Zow[]{new Zow()};
0009KUSO KOTE
2013/06/09(日) 21:42:08.64>C++ならコンパイルエラー)をJAVAで実装
0010デフォルトの名無しさん
2013/06/09(日) 22:04:36.22こんなかんじ?
http://ideone.com/9g1M3D
0011前スレの991
2013/06/09(日) 23:10:00.47わざわざありがとうございます。
一応 setZow(Zow z)が抜けてたので補完して・・・
まぁ、質問しまくって、俺みたいな馬鹿で中途半端な知識量でも
private finalの部分は一応わかっていました。
(たぶん、私にわかりやすくと思い書いて頂いたと存じます)
自分の疑問だったのは、static finalのインスタンスをメソッドが
なぜ変更されないのかが疑問だったので。
前スレの>>987さんの説明の参照の値渡し。
っていう説明とC++で書いた例のソースを見してもらって理解しました。
0012デフォルトの名無しさん
2013/06/10(月) 10:49:48.70ttp://developers.slashdot.jp/story/13/06/09/0635243/
0013デフォルトの名無しさん
2013/06/10(月) 11:09:46.69どうしてこう、政治家は歴制度をいじりたがるかね
0014デフォルトの名無しさん
2013/06/10(月) 13:19:08.13世界の一握りしかいないのだが、
その限られた顧客しか相手にしない>>13は
無問題なのだろう
0015デフォルトの名無しさん
2013/06/10(月) 16:07:52.190016デフォルトの名無しさん
2013/06/10(月) 20:38:21.340017デフォルトの名無しさん
2013/06/10(月) 21:03:38.04この世のどのプログラマも自分が携わった分野しか知らないんだから
業界全体を知った風なこと言う奴ってどうかしてるわ
>>13とか>>14のことね
0019デフォルトの名無しさん
2013/06/10(月) 21:22:26.570020デフォルトの名無しさん
2013/06/10(月) 21:24:34.790021桃白白 ◆9Jro6YFwm650
2013/06/11(火) 01:49:56.40福田さんだ、この人ぜったい福田さんだ。
0022デフォルトの名無しさん
2013/06/11(火) 05:56:22.68自己紹介乙
0023デフォルトの名無しさん
2013/06/11(火) 10:17:04.90java.lang.Threadクラスのsleepで使っている、システムタイマーと
java.util.Timerで使っているシステムタイマーは同じものですか?
0024デフォルトの名無しさん
2013/06/11(火) 11:17:32.73002523
2013/06/11(火) 11:23:07.16java.util.Timerでシステム時刻を変更すると処理がとまる可能性がある
という記事を見つけて、対策をしないといけないのですが、そうなると
Thread.sleepはどうなんだろうとおもって。
0026デフォルトの名無しさん
2013/06/11(火) 12:15:19.310027デフォルトの名無しさん
2013/06/11(火) 18:49:21.32は?
0028デフォルトの名無しさん
2013/06/11(火) 20:11:09.31API 仕様からはそのような挙動は
許されないように想えるんだけど、
バグなの?
0029デフォルトの名無しさん
2013/06/11(火) 21:39:40.47システム時刻なんてしょっちゅう変更されているはずなのだけれど?
0030デフォルトの名無しさん
2013/06/11(火) 21:49:33.63カレンダで試用制限とかしてるアプリ職場に押しつけられると、
カレンダ偽装する奴が増えてトラブルになるんでやめろー
0031デフォルトの名無しさん
2013/06/11(火) 22:27:30.64どうせ時刻逆転のケースだろ
近代的オペレーティングシステムで
普通それはない
0032デフォルトの名無しさん
2013/06/11(火) 23:40:51.41ホームページなどに表示する手順などを解説している
サイトや著書などを知ってる方おりましたら
おすすめをお願いします。
0033デフォルトの名無しさん
2013/06/12(水) 00:21:15.970034デフォルトの名無しさん
2013/06/12(水) 00:28:24.66Javaで調べるとまずアプレットが出てくると思うけどそれだけはやめとけ
0035デフォルトの名無しさん
2013/06/12(水) 00:42:51.42・HP掲載のJavaAppletでの表示の話
・サーブレットの動的HPの作成の画像作成の話
0036デフォルトの名無しさん
2013/06/12(水) 00:44:22.000037デフォルトの名無しさん
2013/06/12(水) 01:18:33.600038デフォルトの名無しさん
2013/06/12(水) 01:38:51.62>>33 >>34 >>35 >>36 >>37
ありがとうございます
早速Amazonにあった本や論文などを学校の図書購入希望
やキャットで検索や閲覧希望ぶち込みました。
0039デフォルトの名無しさん
2013/06/12(水) 04:18:35.20http://docs.oracle.com/javase/jp/7/
このドキュメントのダウンロードのzipとか無いの?昔は日本語ドキュメントをダウンロードできた気がしたんだけど
0040デフォルトの名無しさん
2013/06/12(水) 04:23:23.320041デフォルトの名無しさん
2013/06/12(水) 04:24:07.530042デフォルトの名無しさん
2013/06/12(水) 05:36:13.300043デフォルトの名無しさん
2013/06/12(水) 06:22:38.990044デフォルトの名無しさん
2013/06/12(水) 06:38:49.80継承先にこのメソッドを破壊された場合はどうしようなどと考えるとテスト項目を作るのが億劫です
0045デフォルトの名無しさん
2013/06/12(水) 07:04:45.00例えば後付けで追加された@Overrideなんか明らかに設計失敗の証拠で、
本来なら後発のC#と同じくoverride修飾子を付けないとコンパイルエラーとするべきだった
昔は継承は既存コード再利用のための強力な仕組みだとか言ってたけど
Javaによって色々問題点が明らかになって今は大分考え方が変わったからな
0046デフォルトの名無しさん
2013/06/12(水) 07:17:29.26JAVA信者の基地外っぷりもここまでいくと
人としてやばい
0047デフォルトの名無しさん
2013/06/12(水) 07:24:36.07ケースだろう?
オーバーライドされたり派生クラスで実装が与えられたときの振る舞いを注意深く
扱うのはprotectedかabstractなメソッドぐらいであって、その他publicなメソッド
についてはあまり気にしないけれどもなぁ。
いくらオーバーライドを禁止したところでデコレーター使えばいくらでもpublic
メソッドの実装なんて差し替えられるわけだし。
0048デフォルトの名無しさん
2013/06/12(水) 07:26:43.77既存コードが変更できないなら上書きすればいいじゃないという考え方が基本だから
後から勝手に何でもかんでもオーバライドできたほうがいいわけ
今ではそういうやり方は糞と考えられてるが
0049デフォルトの名無しさん
2013/06/12(水) 07:32:15.56publicメソッドを同じクラス内から呼んでる場合があるだろ?
0050デフォルトの名無しさん
2013/06/12(水) 08:10:24.000051デフォルトの名無しさん
2013/06/12(水) 11:55:50.720052デフォルトの名無しさん
2013/06/12(水) 12:17:51.42コンストラクタぐらい目の行き届くとこでやって欲しいし、
子クラスプログラマにしてみれば、
自分のコンストラクタ始まる前にインスタンスメソッド呼ばれても困る
PMD使えばまとめて検出できるよ
0053デフォルトの名無しさん
2013/06/12(水) 12:50:33.870054デフォルトの名無しさん
2013/06/12(水) 13:16:22.610055デフォルトの名無しさん
2013/06/12(水) 13:52:48.75組織において有能な人間は昇進しより高い能力を求められ、無能になったところで昇進が止まる
ゆえに組織のいたるところ無能な人間で満たされる
これを人間からソフトウエアに置き換える
たとえばWindows, たとえば C,Java
これらは有用と評価され普及度を高め、クソと評価されるあたりで普及が止まった
これらに対し、社会経験のない中二病、もとい、お子さまは
世の中はクソで満ちあふれている、俺が何とかしなければと情熱を燃やすのである
なお、それが非常にうまく行った場合、結局は上の行程を繰り返すのみ
0056デフォルトの名無しさん
2013/06/12(水) 14:52:03.590057デフォルトの名無しさん
2013/06/12(水) 20:04:01.93C++最高というわけですね
0058デフォルトの名無しさん
2013/06/12(水) 20:11:05.29どうしても継承したい場合はユーザーが自分でラッパーを書いてそれを継承しなければならないように作る
0059デフォルトの名無しさん
2013/06/12(水) 23:57:31.36> 継承の仕組みを利用した書き方を、『差分プログラミング』とも呼びます
なんて読んだことがあるけど…。
差分で済むから継承、なんてやってたら、is-a関係がとんでもないことになるよね…。
まずは全てのクラスをfinal & イミュータブルにするのが基本。
状態変化を持つクラスだけ、1つずつアクセス範囲を検討するのが良いんだろうな。
0060デフォルトの名無しさん
2013/06/13(木) 00:10:46.99外から見える分得だと思ってるんだろうか
例え将来的にpublicに使うとしても、もしその瞬間には必要ないのなら時がくるまで閉じておけ。社会の窓を。
0061デフォルトの名無しさん
2013/06/13(木) 00:18:52.52Windows8は止まることなく退化を続けてるよ。
>>52
別に子クラスが仕様を満たしてなかろうと、親クラスが壊れるわけじゃないからいいだろ。親クラスのここを通って、ここのサブルーチンを…とか言ってる奴じゃないかぎり。
0062デフォルトの名無しさん
2013/06/13(木) 00:25:46.46「外部から観測できない手続きは禁止」
とかいってprivateを毛嫌いしてるんじゃね?
0063デフォルトの名無しさん
2013/06/13(木) 00:52:11.93親クラスは変更しない前提だからカプセル化する必要もない
実際、サブクラスの自由度のためにフィールドは全部protectedにするという
規約はそう珍しくないし
0064デフォルトの名無しさん
2013/06/13(木) 05:37:23.14publicかprotectedなアクセサがあれば十分だと思うのだけど。フィールドを裸単騎で
子孫クラスに晒す必要性が殆ど無い。
privateでないフィールドはpublic static finalぐらいしか普段は作らない。
0065デフォルトの名無しさん
2013/06/13(木) 05:49:06.230066デフォルトの名無しさん
2013/06/13(木) 06:38:24.620067デフォルトの名無しさん
2013/06/13(木) 06:56:19.190068デフォルトの名無しさん
2013/06/13(木) 07:12:53.36フィールドはとりあえずサブクラスから好きに触れるようにしないと仕方ない
という話に対して、アクセサ使えばいいと言うのは的外れだろう
結局片っ端からアクセサで公開することになり問題の本質は変わらん
0069デフォルトの名無しさん
2013/06/13(木) 07:27:31.01やろうと思えば基底を無視して全部上書きも出来るのだから
それでは基底を引数に受けとるメソッドはどうやってテストすればよいのか
膨大な量になるぞ
派生が作られるたびに今まで作って来た基底を引数に受けとるメソッドを追加でテストしなければならない
0070デフォルトの名無しさん
2013/06/13(木) 07:33:48.09ならないよ。
子孫クラスに対して実装の詳細を隠すことも知らないのであれば、とりあえず
クラスの設計をする手を止めて既存の有名どころのライブラリやフレームワーク
のJavaDocでも色々読んだ方が良い。
protectedフィールドで内部状態を子孫にガンガン公開している実装なんて
どれほどあることやら。protectedはabstract methodと同様に継承によって機能
拡張できるポイントとして慎重に、かつ詳細なドキュメントと共に定義されて
いるのが殆どだと思うが。
0071デフォルトの名無しさん
2013/06/13(木) 07:38:42.12基底クラスのメソッドにこのメソッドは○○しなければならないと明記しておいて、
受け取る方のメソッドには引数として受け取ったインスタンスのメソッド××を呼び出すと明記しておく。
テストでは受け取る方のメソッドが××を実際に呼び出してるかどうかテストすりゃOK。
0072デフォルトの名無しさん
2013/06/13(木) 10:15:53.42オーバーライド出来るケースの話を延々とするチンパンジー達
0073デフォルトの名無しさん
2013/06/13(木) 10:46:11.910074デフォルトの名無しさん
2013/06/13(木) 13:54:02.010075デフォルトの名無しさん
2013/06/13(木) 15:47:20.50開発者向けのAPIの一部だから。
finalでないpublicフィールドの公開がまずあり得ないようにfinalでない
protectedフィールドの公開もあまり無い。protectedフィールドを再代入
出来る形で子孫クラスに公開したところで、再代入したら何が起こるかは
詳細にドキュメントに書くか、あるいは親クラスのソースを遡って影響範囲
を検討する必要がある。大抵便利でも安全でもないので普通に避ける。
実装の詳細に関する知識を共有した見知った範囲の人間がコードを弄る際の
手抜き程度しか出番は無いと思う。
protected finalも、例えばハンドラ等のオブジェクトを子孫クラスに触ら
せる場合はフィールドよりゲッター使った方が色々便利なのであまり出番が。
使用者には公開しないプリミティブ型や文字列の不変値ぐらいか。
0076デフォルトの名無しさん
2013/06/13(木) 16:27:36.930077デフォルトの名無しさん
2013/06/13(木) 17:19:55.610078デフォルトの名無しさん
2013/06/13(木) 19:22:14.27てかそういうときだけしか使わんけどねん
0079デフォルトの名無しさん
2013/06/13(木) 19:24:39.46この考え方がまさにJAVAドカタ
0080デフォルトの名無しさん
2013/06/13(木) 20:27:32.83こっちにはリフレクションがあるんだぞ!
0081デフォルトの名無しさん
2013/06/14(金) 04:33:21.590082デフォルトの名無しさん
2013/06/14(金) 05:03:36.73ダイナミックキャスト並みに要らない
0083デフォルトの名無しさん
2013/06/14(金) 05:34:38.03リフレクションも必要なんだよ。比較的真面目な話として。
フレームワークのAPIとしてはキャストやリフレクションが不要な綺麗な設計に
なっているのに対してフレームワークの実装中ではjava.reflectやCGLIBの類を
ガンガン使っているのは割と普通。
アノテーションとかも定義済みのを使っているうちはリフレクション不要だけど
自前で定義し始めると簡単なリフレクションを使う必要があるよね。
0084デフォルトの名無しさん
2013/06/14(金) 06:05:24.94難読化もできないしな
0085デフォルトの名無しさん
2013/06/14(金) 19:34:43.320086デフォルトの名無しさん
2013/06/15(土) 00:59:36.75あんなもん直観的にわかるだろ。まぁ俺も昔1冊買ったことあるけど
0087デフォルトの名無しさん
2013/06/15(土) 01:19:43.22かっこいいやつ
タイトルは覚えてないが自分がこれから使うバージョンを解説したものを選べ
>>86
じっくり機能を把握したいじゃん♪
3000円越える本は図書館にリクエストを出すという手がある。
0088デフォルトの名無しさん
2013/06/15(土) 01:39:47.29if( !(src.equals(dst))) { 〜〜
というのと、
if( src.equals(dst) == false ) { 〜〜
というの、どちらが慣習的に普通なんですか?
不毛な質問でごめんなさい。
0089デフォルトの名無しさん
2013/06/15(土) 02:04:17.88その2つは判定方法が違うんですけどー(プリミティブ型は除く)
equalsはオブジェクトが同じなら真を返すけど
==は生成されたインスタンスが違えばオブジェクトの中身が同じでも偽になる
0090デフォルトの名無しさん
2013/06/15(土) 02:49:28.95boolean型なら、どっちでも動作は変わらないんだけどね。
前者が極めて一般的。
あえて後者を使っていた場合「すごく複雑な論理演算の結果、falseなんだぞ!」という強い意図を表してる。
コードの読み手は、そこに何かトリッキーな仕掛けがあるんじゃないかと疑うのよ。
だから、ごく普通のif文では if(xxx == false) とか if(xxx == true) は使わないな。
0091デフォルトの名無しさん
2013/06/15(土) 02:52:24.79(事実、俺はよく見落とす)
0092デフォルトの名無しさん
2013/06/15(土) 03:53:50.620093デフォルトの名無しさん
2013/06/15(土) 05:01:16.960094デフォルトの名無しさん
2013/06/15(土) 07:11:23.97質問さして下さい。
オブジェクトの比較で
== を使うときって、そのインスタンスのハッシュ値が同等の時だけtrueですか?
また、
eaualsを使うときは、そのインスタンスの中身さえ同じならばtrueですか?
どなたかご教示ください。
009594
2013/06/15(土) 07:12:47.96すみません。
0096デフォルトの名無しさん
2013/06/15(土) 07:19:25.24javaをある程度学んで、NetBeensってやつで
メニューとJTextAreaをペタってはって、JFileChooserでファイルを選んで
File file = filechooser.getSelectedFile()で
Fileのインスタンスを得て、JTextAreaに表示するだけって事をしたいんですが
JTextAreaの変数(ここではtxtareaとします)
txtareaのどのメソッドを選んで、どういう処理をしていけばいいんでしょうか
しょうもない質問ですが、ご教示ください。
0097デフォルトの名無しさん
2013/06/15(土) 08:27:38.96>>89
0098デフォルトの名無しさん
2013/06/15(土) 08:40:34.35ttp://www.javadrive.jp/tutorial/jfilechooser/index5.html
0099デフォルトの名無しさん
2013/06/15(土) 08:46:12.36自分で文字位地と長さ調べて別のテキストエリア貼らなきゃダメかな
0100デフォルトの名無しさん
2013/06/15(土) 08:49:26.88同じ奴なのか別人なのかわからん
010194
2013/06/15(土) 10:57:25.36>>89を見たんですが
自分の書いた>>94の考え方でも良いのでしょうか
良ければ、良いと、違うなら、違うと
どなたか、答えてくれませんでしょうかお願いします。
0102桃白白 ◆9Jro6YFwm650
2013/06/15(土) 11:49:32.63すこし違う。
==はReference Equality Operators。
つまり、参照同じ演算子。
同じオブジェクトを参照してたらtrue。
hashCodeはオブジェクトが異なるときはできるだけ違う整数を返すようにしましょうと
されてるものなんで、==がfalseのとき、hashCodeも違ってくるものなのだけれども、
hashCodeを参照して==の結果が決まってるわけじゃないっすよ。
equalsはequalsの実装しだいなのだけれども、Objectなんかは
参照が違ってたらequalsがfalseを返しちゃう。なので中身が同じならと
一概に言えるわけじゃない。
0103桃白白 ◆9Jro6YFwm650
2013/06/15(土) 11:53:32.16>==がfalseのとき、hashCodeも違ってくるものなのだけれども、
equalsがfalseのとき、hashCodeも違ってくるものなのだけれども、
0104デフォルトの名無しさん
2013/06/15(土) 11:54:20.70基本情報をちゃんと取っていれば
値、参照、ハッシュ値の違いなどで悩む事はなかったのにね
0105桃白白 ◆9Jro6YFwm650
2013/06/15(土) 11:56:49.38百済ねえやつ。百済からの回し者か?百済に帰れ。
010694
2013/06/15(土) 13:03:57.66なるほど、ありがとうございます。
それよりなにより
俺みたいな中途半端な質問でも
解かりやすく、詳しく説明してくれたことに
感謝感謝です。
0107デフォルトの名無しさん
2013/06/15(土) 13:35:30.16普通に<font>タグで変えられるよ。
本物のswingプログラマはjavax.swing.text.AttributeSetを使うが、ひたすら面倒
0108デフォルトの名無しさん
2013/06/15(土) 13:48:42.31Object#equals()実装も同様。
それ以外は何でもありで、HashMapとかでトラブル起こしても、
それはequals()やhashCode()のオーバーライド仕様を明記できてない発注者に全責任がある。
0109デフォルトの名無しさん
2013/06/15(土) 14:56:37.50新人の時にコード内容までキッチリすべて(ただし日本語で)書いてある仕様書みた時は自分の目を疑ったよ
そのうちエクセルコンパイラ作るやつが現れるんじゃないかと古株の先輩にジョークを飛ばしたら苦い顔をされたな
0110デフォルトの名無しさん
2013/06/15(土) 15:02:43.340111デフォルトの名無しさん
2013/06/15(土) 15:40:17.69対策本買って、一通り解けたけど
ホームページの例題で初期化ブロック使ったようなコードがあったり
するんだけど、どこまでの知識がいるの?
もうわかんねーよ。
0112デフォルトの名無しさん
2013/06/15(土) 15:46:20.15equalsやhashCodeとして実装する際は無理に手作りせんでもEclipseでダイアログ開いて
フィールドぽちぽち選択してOKして自動生成させた方が大半のケースで安全確実だと思う。
比較の抜けや一般契約違反も無いし。
0113デフォルトの名無しさん
2013/06/15(土) 16:40:52.44初歩的な内容しか出ないよ
0114デフォルトの名無しさん
2013/06/15(土) 19:25:04.46equals() の中で1文字ずつチェックする直前、
自身と他者のhashが0でないとき、
つまり両者のhashが確実に計算済みであると保証できるとき、
hashが一致しなければ中身を見るまでもなくfalseを返す。
って実装にすれば、もっと速くなるんじゃね? と思うんだけど。
何か問題でもあるのかね?
0115デフォルトの名無しさん
2013/06/15(土) 19:44:50.780116デフォルトの名無しさん
2013/06/15(土) 20:09:25.78マルチスレッドで気にすることが増えそう
今のJavaの仕様だと特に問題はないだろうけど
0117デフォルトの名無しさん
2013/06/15(土) 20:51:06.38実際ハッシュ値ってイミュータブルなオブジェクトを除いてhasnCode()が呼ばれたら
安直にその都度計算している実装が多い。そしてaとbがイコールであることを調べる
コストとaとbのハッシュをそれぞれ計算するコストは極端には違わない。
仮にaとbのハッシュ値が同じでも改めてイコールであることを確かめる必要があるので
ハッシュ値を使っても二度手間になるというかかえって遅くなりそう。
イミュータブルだったり賢いハッシュ値の更新管理をしているクラスであればその
equals内でハッシュを使うのは当然ありだけど、そういう最適化は各クラスの実装の
中で閉じているべきであって、それらをフィールド値として持つクラスは各クラスが
最適なequalsの実装をしていると信じて素直にequalsを呼ぶのが良いのでは。
0118デフォルトの名無しさん
2013/06/15(土) 20:52:47.85確かにそれは変だよね。何でだろう。
0119デフォルトの名無しさん
2013/06/15(土) 21:05:48.080120デフォルトの名無しさん
2013/06/15(土) 21:16:06.80ハッシュ未計算のフラグにhash == 0使うのやめい。
1.7でもまだ直ってないのか
去年どこかで脆弱性レポート出たよな?
hash=0になるようなクエリばかり送りつけるDDoS攻撃が
0121114
2013/06/15(土) 21:16:07.32うん、Stringとか、ハッシュ値をキャッシュできる/してるイミュータブルなオブジェクトの話。
// nullチェック、instanceofチェックは事前にやってる。
if (hash != 0 && other.hash != 0) return hash == other.hash;
増えるコストはこのif文。爆速っしょ。
>>115>>116
問題ないはずだよなぁ…。
BigInteger, BigDecimal, Locale, URI, Pattern, UUID, File
Java1.7でイミュータブルっぽいクラスを見てきたんだが、どのequalsもhashのキャッシュなんか使ってなかった。
Fileに至っては、return compareTo(other) == 0; とか。
hashには依存しないのに、compareToには依存するのかよ。
もしかして、なにか盛大に勘違いしてるのか?
0122デフォルトの名無しさん
2013/06/15(土) 21:28:33.68素直じゃないからだろ
ついでに、文字列が長くて、先頭が同じで、
最後だけ違う文字列の比較でしか役に立たない
ウンコなコードは要らない
>if (hash != 0 && other.hash != 0)
> return hash == other.hash;
しかも間違ってるし
0123デフォルトの名無しさん
2013/06/15(土) 21:49:48.32Stringがどんな用途で使われることが多いか知らんけど
0124デフォルトの名無しさん
2013/06/15(土) 22:09:09.19多くの環境では、比較命令の中でも0との比較は高速っていう印象だったんで。
確かに >122 の言う「ウンココード」を追加しなきゃいけない割には、
高速化できるシチュエーションは少ないかもしれない…。
0125デフォルトの名無しさん
2013/06/15(土) 22:25:38.88ウンココードhere:
http://ideone.com/t4oYJq
0126デフォルトの名無しさん
2013/06/15(土) 22:40:34.97根本にあるコンセプトは悪くないんだが
0127デフォルトの名無しさん
2013/06/15(土) 22:41:36.41そう思った根拠ぐらいは書いた方がいいぞ
0128デフォルトの名無しさん
2013/06/15(土) 22:43:38.66スレの流れ読めばわかるが?
0129デフォルトの名無しさん
2013/06/15(土) 22:44:29.02俺もそのコンセプトはよく分かるわー
0130デフォルトの名無しさん
2013/06/15(土) 22:55:41.210131デフォルトの名無しさん
2013/06/15(土) 23:04:13.40わざわざ書いてくれたのか。
26万文字×1000回とか、まさに俺の思い描いていた理想のシチュエーションだわ(^q^)
>>126
ルートにあるコンセプトはブラウザプラグインとしてのエンバイロンメントフリーなリッチクライアントだから。
0132デフォルトの名無しさん
2013/06/15(土) 23:17:18.83>エンバイロンメントフリー
もうやめて…
0133デフォルトの名無しさん
2013/06/16(日) 00:39:10.040134デフォルトの名無しさん
2013/06/16(日) 08:04:43.560135デフォルトの名無しさん
2013/06/16(日) 08:08:56.910136デフォルトの名無しさん
2013/06/16(日) 08:24:12.14そのインターフェイスを通じてhashCodeなどを呼び出せるのは何故なのでしょうか?
クラスがObjectを暗黙に継承していることは理解しています
しかしインターフェイスの親はインターフェイスでなければならないので
インターフェイスがObjectを継承するのはおかしな話です
なのにインターフェイスを通じてhashCodeを呼び出せてしまう……
わけがわかりません
混乱してあたまがおかしくなりそうです
0137デフォルトの名無しさん
2013/06/16(日) 08:36:29.20メソッドを含むと言語仕様で定義されているから。
013888
2013/06/16(日) 08:51:21.21ありがとう御座いました。
大昔にExcelVBAしかやった事が無かったので、質問させて貰いました。
0139デフォルトの名無しさん
2013/06/16(日) 11:36:08.6390がいいな。どちらにせよ前者が普通。
0140デフォルトの名無しさん
2013/06/16(日) 11:53:19.92== false
と書かせるのが吉
0141デフォルトの名無しさん
2013/06/16(日) 11:58:15.36==false)==true
しかし、==trueの結果もまた論理型なので
==false)==true)==true
以下再帰的に続く
0142デフォルトの名無しさん
2013/06/16(日) 12:02:27.030143デフォルトの名無しさん
2013/06/16(日) 12:12:29.300144デフォルトの名無しさん
2013/06/16(日) 13:20:59.550145デフォルトの名無しさん
2013/06/16(日) 13:28:56.33設計書を書くのもテストするのも楽だ
日本のIT業界ではコードの日本語訳である設計書の作成とテストが実務の八割を費やしている
ここを短縮できれば大幅に仕事効率が改善される
0146デフォルトの名無しさん
2013/06/16(日) 13:53:06.19効率なんて上げなくていいよ
0147デフォルトの名無しさん
2013/06/16(日) 14:19:35.64効率が悪くて困るのは経営陣だけだし
傾いて来たら転職すりゃいいし
0148デフォルトの名無しさん
2013/06/16(日) 14:42:11.88関数型ではこれはできませんやりませんで済ませられる点だ
0149デフォルトの名無しさん
2013/06/16(日) 16:56:43.58ttp://d.hatena.ne.jp/seraphy/20100622 に "Apple Java Extensions" なるものについて書いてありますが、
これはどこで手に入るのでしょうか。
お願いします。
0150デフォルトの名無しさん
2013/06/16(日) 17:10:43.150151デフォルトの名無しさん
2013/06/16(日) 17:36:54.110152デフォルトの名無しさん
2013/06/16(日) 17:38:46.730153デフォルトの名無しさん
2013/06/16(日) 17:46:11.700154149
2013/06/16(日) 18:16:14.28有料なんですか?
"Apple Java Extensions" なるものがどういうものかよくわかってないのですが。
0155デフォルトの名無しさん
2013/06/16(日) 22:13:07.50stackoverflow.com/questions/15048220/
> They are included both in the Oracle distribution and in OpenJDK.
だとさ。Mac使ってないから知らんけど。
0156デフォルトの名無しさん
2013/06/16(日) 23:07:29.34気にしたこと無かったのでこの機会に自分でも調べてみた。
docs.oracle.com/javase/specs/jls/se7/html/jls-9.html#jls-9.2
> (前略)the interface implicitly declares a public abstract member method(中略) corresponding to each public instance method(中略) declared in Object(後略)
コンパイラがゴニョってんのか。
そういやJava8でinterfaceにデフォルト実装持てるようになるけど、hashCodeなんかは別扱い(デフォルト実装持てない)だな。
0157デフォルトの名無しさん
2013/06/16(日) 23:34:42.37ByteBuffer#get(byte[] dst)でdstへデータを読み込む際にバッファー内のデータがdst.lengthより小さいと例外が発生します
これは仕様のようなのですが、なぜ配列のサイズより小さいデータを入れるだけで例外とするのでしょうか。
これでは次に大きなデータを受けるときにわざわざbyte[]を作り直す手間が勿体無く感じるのですが
0158デフォルトの名無しさん
2013/06/16(日) 23:46:49.70自己解決しました。スレ汚し失礼しました
0159149
2013/06/17(月) 00:03:31.64なるほど。ありがとうございます。
しかしドキュメントが無さすぎて使い方がさっぱりわからない。
(>>149で挙げたブログ中のリンクもリンク切れ)
どなたか OS X のメニューのハンドリングについて情報持ってる方いませんか?
0160デフォルトの名無しさん
2013/06/17(月) 15:57:21.83いるんだよなこういうバカが
式の型がbooleanかどうかは関係なく
ドカタが認知しやすい形かどうかが重要
if (!fuckReturnBoool()) ドカタ理解困難
if (fuckReturnBool()==false) ドカタ理解容易
if ((fuckReturnBool()==false)==true) ドカタ理解不能
0161デフォルトの名無しさん
2013/06/17(月) 16:52:42.40>> if ((fuckReturnBool()==false)==true) ドカタ理解不能
こんなコードを書くアホウはいないだろ(笑)
0162デフォルトの名無しさん
2013/06/17(月) 16:59:24.21>> if ((fuckReturnBool()==false)==true) ドカタ理解不能
書き方がトーシロー ってわかってるのか? >>160のアホ
ま、書いてる 意味がわからんだろうけどな(笑っちゃお)
0163デフォルトの名無しさん
2013/06/17(月) 17:07:21.240164デフォルトの名無しさん
2013/06/17(月) 17:13:05.77isで始まるboolean型ローカル変数で評価してやれよ。
0165デフォルトの名無しさん
2013/06/17(月) 17:15:13.81SwingのJFrameの手前に描画されているものから順に処理していきたいです。
JFrameのZ値はどのようにして取得したら良いでしょうか?
分かる方、よろしくお願いします。
0166デフォルトの名無しさん
2013/06/17(月) 17:28:44.05手前から描くと、最奥のJFrame描くときに全部消されちゃうぞ?
0167165
2013/06/17(月) 17:36:34.38すいません。
質問の書き方が間違っていました。
JFrame内のコンポーネントのZ値ではなく、JFrameそのもののZ値です。
JFrame(ウィンドウ)がデスクトップ上にいくつも表示されています。
手前に表示されているJFrameから順番に処理していきたいという意味です。
よろしくお願いします。
0168デフォルトの名無しさん
2013/06/17(月) 18:22:14.44これ見てなんとも思わないようなのはシロートレベルだと思うが?
今のプログラマはその程度なのか?
0169デフォルトの名無しさん
2013/06/17(月) 20:16:45.140170デフォルトの名無しさん
2013/06/17(月) 20:53:21.07JAIでは読めませんでした。
0171デフォルトの名無しさん
2013/06/17(月) 21:09:26.480172デフォルトの名無しさん
2013/06/17(月) 22:02:34.04windowsXP,7依存でもいいのでお願いします
0173デフォルトの名無しさん
2013/06/17(月) 23:50:54.23不可能です
ターミナル画面をクリアしたいという話なら
↓ が回答
0174デフォルトの名無しさん
2013/06/18(火) 00:08:00.770175デフォルトの名無しさん
2013/06/18(火) 00:19:45.430176デフォルトの名無しさん
2013/06/18(火) 00:55:27.660177デフォルトの名無しさん
2013/06/18(火) 05:36:10.18後ろのウィンドウに処理させる事は可能でしょうか?
0178デフォルトの名無しさん
2013/06/18(火) 10:35:28.50とか言い出す予感
0180デフォルトの名無しさん
2013/06/18(火) 16:08:45.43でイベント変換できないかな。
スクリーン座標との変換はconvertPointFromScreen、convertPointToScreenあたりで
場合によってはgetDeepestComponentAtも必要?
SwingプログラマならSwingスレにいそうだが
0181デフォルトの名無しさん
2013/06/18(火) 16:40:55.560182177
2013/06/18(火) 18:54:43.16ありがとうございます。
とりあえず全てのウィンドウを配列にして管理して、上から順に処理するようにしました。
ウィンドウの矩形にヒットしているかチェックして、ヒットしていたらdispatchEventでイベントを流し込みます。
技術的なノウハウが無いのでめんどくさい処理になってしまいました。。。
0183デフォルトの名無しさん
2013/06/18(火) 23:10:50.800184デフォルトの名無しさん
2013/06/18(火) 23:14:16.70理解することは難しい
0185デフォルトの名無しさん
2013/06/18(火) 23:37:51.80byte型だったらだめだったのかな?
0186デフォルトの名無しさん
2013/06/18(火) 23:44:46.09理解することは難しい
0187デフォルトの名無しさん
2013/06/18(火) 23:56:08.83としか言いようがない。
出来の悪い設計に論理性を求めてはいけない。
0188デフォルトの名無しさん
2013/06/19(水) 00:22:41.180189デフォルトの名無しさん
2013/06/19(水) 00:34:44.400190デフォルトの名無しさん
2013/06/19(水) 00:42:44.79読み終わったら-1を返す仕様だから
byteだと符号付きなので値が変わってしまい扱いにくいから
パフォーマンス的な損も特にないから
0191デフォルトの名無しさん
2013/06/19(水) 01:36:14.82は?
0192デフォルトの名無しさん
2013/06/19(水) 01:48:43.550193デフォルトの名無しさん
2013/06/19(水) 06:21:25.440194デフォルトの名無しさん
2013/06/19(水) 06:44:53.120195デフォルトの名無しさん
2013/06/19(水) 06:48:45.70あれこそまさに愚かな一貫性というやつだよね
0196デフォルトの名無しさん
2013/06/19(水) 06:52:50.34MIDIファイルの読み書きする人
役に立つのはたぶん世の中でそれくらいだろう
0197デフォルトの名無しさん
2013/06/19(水) 06:56:29.98結果の型がbyteだと、結果をそのまま0xffと比較できないんだぜw
0198デフォルトの名無しさん
2013/06/19(水) 06:59:19.06で、「値が変わる」とは何のこと?
0199デフォルトの名無しさん
2013/06/19(水) 07:24:35.680200デフォルトの名無しさん
2013/06/19(水) 07:49:56.10戻り値が長さの場合の話じゃないよ
0201デフォルトの名無しさん
2013/06/19(水) 08:49:30.95try {
buf.write(in.read());
} catch (Exception e) {}
0202デフォルトの名無しさん
2013/06/19(水) 11:10:07.96int型の255に変換して返す統一性のない
ライブラリ仕様であるとふむふむ
0203デフォルトの名無しさん
2013/06/19(水) 12:39:42.94・0x00を読み込んだとき
・0xffを読み込んだとき
・入力の末端に到達したとき
・末端じゃ無いけどブロックせずに読めそうなデータだけ返すとき
をどう区別してるのか、産業でまとめてくれ。
0204デフォルトの名無しさん
2013/06/19(水) 13:02:54.42JAVA言語上の概念であるint型(4バイト整数)の値を
読み込んだときの挙動とな?
0205デフォルトの名無しさん
2013/06/19(水) 13:10:32.64受信データそのものと受信処理のステータスが
別であるという当たり前の発想は無いらしい
0206デフォルトの名無しさん
2013/06/19(水) 13:40:49.52fgetcよりはエラー時に例外出るだけマシな感じ。
0207デフォルトの名無しさん
2013/06/19(水) 14:21:42.17まるでfgetcはエラー情報が取れないみたいな言い方だな
0208デフォルトの名無しさん
2013/06/19(水) 15:56:23.880209デフォルトの名無しさん
2013/06/19(水) 16:31:18.82int型の-1にするべきだとおもうんだが
0210デフォルトの名無しさん
2013/06/19(水) 17:25:03.20だからJavaが速いことに気づかない
0211デフォルトの名無しさん
2013/06/19(水) 18:48:06.52受信データそのものと受信処理のステータスが
別であるという当たり前の発想は無いらしい
0212デフォルトの名無しさん
2013/06/19(水) 19:15:35.370213デフォルトの名無しさん
2013/06/19(水) 21:05:36.28しゃぶれよ
0214デフォルトの名無しさん
2013/06/19(水) 21:36:48.67Javaが使えるレンタルサーバを借りるとして、サーバ代を打ち消す程度の収益を、
個人の趣味の範囲で望むのはどのくらい大変ですか?
また、比較的安いサーバではweb.xmlを弄らせてくれないようですが、こういうのは避けたほうがいいですか?
それとも<servlet>タグ等はかけるのでしょうか?
0215デフォルトの名無しさん
2013/06/19(水) 21:41:34.510216デフォルトの名無しさん
2013/06/19(水) 22:52:30.18VPSを借りろ。月1000円未満で借りられる。
VPSを管理するスキルが無いのなら板違いだ。
0217デフォルトの名無しさん
2013/06/19(水) 22:54:00.34受信データそのものと受信処理のステータスの
区別がつかないらしい。
int値をシリアライズして伝送するライブラリを
書かせると糞なメソッド仕様になるんだろうな。
0218デフォルトの名無しさん
2013/06/19(水) 23:01:07.240219デフォルトの名無しさん
2013/06/19(水) 23:03:02.09>サーバ代を打ち消す程度の収益を
どうみてもスレ違いです
0220デフォルトの名無しさん
2013/06/20(木) 00:32:27.450221デフォルトの名無しさん
2013/06/20(木) 00:35:57.39GUIとファイルI/OとDBと通信を
使用してなくてjava.langの中だけなら
たぶんいける
0222デフォルトの名無しさん
2013/06/20(木) 06:24:54.09動かないなら詐欺みたいなもんだ
0223デフォルトの名無しさん
2013/06/20(木) 06:36:45.82AndroidはJavaではないし
そもそもまっとうなJavaの中でも組み込み用のとかあるし
0224デフォルトの名無しさん
2013/06/20(木) 06:38:43.97AndroidはJavaではなく海賊版だし、
そもそも公式Javaの中でも組み込み用とかあるし
0225デフォルトの名無しさん
2013/06/20(木) 07:13:15.40一度書けばどこでも動きますよ!ぜひ導入してください!
なーんて謳い文句で営業してるのに、ほんの些細な変化でも動かなくなる
誇大広告もいいとこだな
0226デフォルトの名無しさん
2013/06/20(木) 07:30:50.850227デフォルトの名無しさん
2013/06/20(木) 15:03:11.60>>225
それは昔の話
Javaというブランドをカネで貸して商売をするようになる前の
0228デフォルトの名無しさん
2013/06/20(木) 18:29:08.10詐欺と言えばそうかも知れない。
Javaは言語仕様と実行環境のセットからなる
基盤なのに、Googleは前者だけをパクって
紛らわしいものを出した。Googleは詐欺
0229デフォルトの名無しさん
2013/06/20(木) 18:38:13.22読み込んだとして、close()しなければ10行は残ったままになるのでしょうか?
で次データが来た場合、11行目から(1行目〜10行目は残したまま)書くのでしょうか?
0230デフォルトの名無しさん
2013/06/20(木) 18:42:22.79WindowsでJava以外のWindow上の色を定期的に判別して、黒が白になったら別の場所をクリックする
みたいな事をする場合
やっぱりクリップボードを介する&Robotがいいでしょうか?
0231デフォルトの名無しさん
2013/06/20(木) 18:54:58.20「10行は残ったまま」の意味が分からないけど、10行readLineしてしばらく待って次にreadLineしたら11行目が読み込まれる。
「11行目から(1行目〜10行目は残したまま)書く」って、BufferedReaderでは書き込めないよ。
BufferedReaderとは別にFileWriterとかで書き込みたいなら、BufferedReaderで何行読み込んだとか関係ないし。
File I/Oの基本が分かってないんじゃない?
0232229
2013/06/20(木) 19:08:50.34ありがとうございます。
アプリ間を跨いで同じファイルを使用していて。こっちは読み込みのみで、
別アプリから書き込みが発生します。
0233デフォルトの名無しさん
2013/06/20(木) 19:10:53.80みんな迷惑してるんですよ
0234デフォルトの名無しさん
2013/06/20(木) 20:01:28.270235デフォルトの名無しさん
2013/06/20(木) 20:11:48.040236デフォルトの名無しさん
2013/06/20(木) 20:47:22.50そういう感じのことしたいんなら
RandomAccessFileかFileChannelを覚えることをおすすめします
0237デフォルトの名無しさん
2013/06/20(木) 23:41:21.10XMLのルートに当たるTestDataクラスが出力したいUserクラスを持つ構造で
Userのプロパティを属性にマッピングするにはどうしたら良いでしょうか。
ただしUserクラスそのものには@XmlAttributeを注釈しないようにしたいです。
0238デフォルトの名無しさん
2013/06/21(金) 00:03:40.19UserクラスにJAXBアノテーションを付けたくないという解釈で良いのかな?
0239デフォルトの名無しさん
2013/06/21(金) 00:34:17.46はい、おっしゃるとおりです
0240デフォルトの名無しさん
2013/06/21(金) 02:43:53.97専用サーバを借りる予定です
鯖のコスト減らして貧乏臭く開発するような内容は今まで散々やってきたので、
今度は大きいサービスを作ってみたいと思いました
レンタルサーバで実際にpollingがwebsocketを使ったアプリを試したいです
0241デフォルトの名無しさん
2013/06/21(金) 05:34:23.24あんまりかっちょええ方法は思いつかないねぇ。
<testData usersProp1="..." usersProp2="..." ...>
みたいにUserクラスのプロパティを親、この場合はTestDataに対応するXML要素の
属性にしたいのであれば、user自体は@XmlTransientにして、代わりにuserの属性
を読み書きするセッターゲッターをTestDataクラスに追加して@XmlAttributeを
つける。
<testData ...>
<user prop1="..." prop2="..." />
みたいにtestDataの下にuser要素を配置してuserのプロパティをこの要素の属性に
したい場合はプロキシクラスUserProxyを作って必要な@XmlAttribute等をつける。
UserとUserProxyの相互変換をするためのXmlAdapterを実装する。
最後にTestDataのプロパティuserに@XmlJavaTypeAdapterをつけてUserとUserProxy
の間の変換に使うXmlAdapterを教えてあげる。
0242デフォルトの名無しさん
2013/06/24(月) 00:02:45.60「有効なwin32アプリケーションではありません」てメッセージが出るんだけど
どうすればインストールできる?
OSはWindows7 Pro SP1 64bit
BTOでセットアップされたPCが今日届いたばかりだから古いJDKは残ってない。
0243デフォルトの名無しさん
2013/06/24(月) 02:33:42.17ダウンロード時に回線障害起こしたとかでJDKが破損してるんだろう
再ダウンロードして実行し直せばいい
0244デフォルトの名無しさん
2013/06/24(月) 02:56:11.85ほんとだ。。。
ファイルサイズ見たら全然想定より少なかった。
ありがとう!
0245デフォルトの名無しさん
2013/06/24(月) 03:05:02.27違ってたら誘導して頂けると有り難いです
0246デフォルトの名無しさん
2013/06/24(月) 03:10:04.34プログラミングとは関係のない話題は↓が適切
Java Runtime Environment Part3
http://anago.2ch.net/test/read.cgi/software/1351670907/
0247デフォルトの名無しさん
2013/06/24(月) 03:38:45.47ありがとうございます
0248デフォルトの名無しさん
2013/06/24(月) 06:46:02.07public void addString(String str) {
strList.add(str);
}
public String getString(int num) {
if(strList.size() < num+1) return null;
return strList.get(num);
}
のような、StringのListを管理するがそのList自体は返さないようなManagerクラスがある場合、
getString(int num)メソッドの一行目に書いたようにnullを返してもいいのかな?
でもこれって上で書いたようにNullPointerExceptionでエラー出すか、この一行は書かずにArrayIndexOutOfBoundsException出すかの違いでしかないのか・・・。
こういう時に何を基準に判断していくべきなのかがもう一つわからないです。
加えて、このnullチェックはメソッドを呼ぶ側ですべきなのかこのクラスでするべきなのかの判断基準もわかり辛いです。
JavaのSDKみるに、基本放置でエラー吐かせて、必要ならば呼ぶ側でする感じかなとは思いますが。
0249248
2013/06/24(月) 06:49:19.61これじゃヌルポはでないか。
0250デフォルトの名無しさん
2013/06/24(月) 06:49:33.15このプログラムについてのお前の設計思想
>JavaのSDKみるに、基本放置でエラー吐かせて
んなこたーない
0251デフォルトの名無しさん
2013/06/24(月) 06:57:53.65だから設計思想を形作る判断材料のどこに重点をおくべきなのかがわからないの。
お前の設計思想なんていいだしたらメモリさえ食わなきゃ何でもokみたいな言語に成り下がるわけで。
null checkもお前の設計思想では片付かない相当大きな論争がありますよね?
0252250
2013/06/24(月) 07:27:37.24そうだよ。
プログラミングが目的じゃなくてコンピューターに
やらせたいことがあるんだからプログラミング言語がある。
生産性・保守性・拡張性・再利用性の様々な観点で
今回の自分の目的に叶っていれば問題なし。
プログラミング自体が目的のアホな論争など
どうでもいい
0253デフォルトの名無しさん
2013/06/24(月) 08:13:55.37結局何も言ってないのと同じこと
0254デフォルトの名無しさん
2013/06/24(月) 08:24:23.76結局のところ、プログラム全体としてのエラーや例外のポリシーを決めないとどうすべきか
なんて言えないよ。
0255デフォルトの名無しさん
2013/06/24(月) 08:43:53.04じゃあ黙ってろよ
0256デフォルトの名無しさん
2013/06/24(月) 08:45:57.240257デフォルトの名無しさん
2013/06/24(月) 10:23:06.320259デフォルトの名無しさん
2013/06/24(月) 11:21:32.05よくわかんないからもう少し丁寧に説明してくれよ
0260デフォルトの名無しさん
2013/06/24(月) 11:22:38.820261デフォルトの名無しさん
2013/06/24(月) 11:25:21.21「自分的にこうあるのがベター」って考えがとくに無いなら、
とりあえずJavaの標準ライブラリに合わせりゃいいじゃん。
小難しいこと考えずに、
public String getString(int num) { return strList.get(num); }
だけで、標準ライブラリの設計と合致するっしょ。
設計思想無しにヘタに、
if (0 <= num && num < strList.size()) return null;
とか書いて例外な状況を握りつぶすのは最悪。
本当はnumの範囲外が原因なのに、
戻り値を最初に使った場所でヌルポが出るとか、原因見つけるの大変だろ。
0262デフォルトの名無しさん
2013/06/24(月) 12:05:53.67例えばOracleが公式で出してるJNIについての設計文書を読んでみるとわかる。
http://docs.oracle.com/javase/jp/1.5.0/guide/jni/spec/design.html
> JNI は、null ポインタまたは不正な引数型の受け渡しのようなプログラミングエラーについてチェックを行いません。
> JNI は、次のような理由からこれらの プログラミングエラーについてのチェックを行いません。
> ・JNI 関数に起こり得るすべてのエラー条件についてチェックするよう強制すると、
> 通常の (正常な) ネイティブメソッドのパフォーマンスが低下する
> ・多くの場合、このようなチェックを実行できるほど十分な実行時の情報がない
-1やnullなどのエラーコードを返か、例外を投げるかについても言及されてる
> JNI 配列アクセス関数の一部には、エラーコードを返さないが、
> ArrayIndexOutOfBoundsException または ArrayStoreException をスローするものがある
この文章からわかるのは、
ライブラリがエラーチェックをどこまで行うのかは「ライブラリの目的によって変わる」ということ。
JNIは引用文に書かれている理由でエラーチェックを行っていないが、
もちろんこれがあらゆるライブラリに当てはまるわけではない。
0263デフォルトの名無しさん
2013/06/24(月) 12:17:59.16getStringでnullが返ってくることが例外なのか意図された状況なのかも>>248のコード片だけじゃわからないからね
例えば配列は用意した分にしかアクセスできないけど、
用意しなかった分には任意の初期値を用意した無限のインデックスでアクセスできる配列クラスを作りたいとか
そういう場合に初期値としてnullを用意したという状況ならば、getStringでnullが返ってくることは例外ではなく正当な結果だし
>>248がそういうライブラリなのか、そうじゃないライブラリなのか絞り込むための材料は用意されていない
よって回答者のレスが抽象的・一般的になってしまうのは、そもそも用意されてるコード片が抽象的すぎて何も言えないからなんだよ
0264デフォルトの名無しさん
2013/06/24(月) 12:30:33.95これは意味が違うだろ。
JNIというフレームワークとしては自動チェック機能を提供しないだけで、
JNIのCプログラムがnullチェックしなかったら確実に死ぬ
0265デフォルトの名無しさん
2013/06/24(月) 12:49:58.68・return nullだと、strListの中に入っている正当な値としてのnullが返って来たのか、
numがインデックスの範囲外であることを示すためにnullが返って来たのか区別することができない
・addStringにおいてnullチェックが行われていないため、
Listの値としてnullを受け入れるのが正当な仕様であるように見える(これでいいのか?)
↓
これらを総合すると、任意のインデックスを受け取って値を返し
初期化されてないインデックスが指定されたら初期値としてのnullを返すようなListを作ってるようにしか見えないが
これでいいのか?
0266デフォルトの名無しさん
2013/06/24(月) 13:14:57.75>>248のコードをよくよく読み直したら、だんだん解らなくなってきた…
>>265に加えて、
・strListは参照が可変でいいの?
・負の引数はエラー、正はOK、ただしInteger.MAX_VALUEはエラー
たぶん、
「初心者は難しいこと考えずに、まずは教科書よく読んで、
しっかりコード書いて1歩ずつ理解していくと良いよ」
ってのが>>248にとって一番しっくりくる回答だと思う。
0267デフォルトの名無しさん
2013/06/24(月) 13:53:06.36こいつ、レスつけてる連中の中で一番腕が悪い、もしくは馬鹿。
論点を無視した指摘に、意味のないアドバイス。
なんでこんな奴がドヤ顔でレスしてんの?
0268デフォルトの名無しさん
2013/06/24(月) 15:42:05.39こういうときは
× >>267は馬鹿
○ >>267のレスは馬鹿な内容だ
と言うものです。
0269デフォルトの名無しさん
2013/06/24(月) 16:40:23.09このページを参照して一応必要なキーなどな入れているのですが
Exception in thread "main" java.lang.NoClassDefFoundError: test/TweetTest のエラーがでて実行できませんどうすればいいですか?
0270デフォルトの名無しさん
2013/06/24(月) 16:52:52.97ソースコードではなく実行環境の問題
どういう環境で実行してるのか書け
0271デフォルトの名無しさん
2013/06/24(月) 16:59:28.46実行環境はmacでeclipseです
0272デフォルトの名無しさん
2013/06/24(月) 17:02:27.39まず画面にtestと表示するだけのプログラムを
完成させて出直せ
0273デフォルトの名無しさん
2013/06/24(月) 17:04:18.55それはもうやりました
0274デフォルトの名無しさん
2013/06/24(月) 17:09:41.01プロジェクトの設定をどこかおかしくしたのが原因
だから空のプロジェクト作り直して順番に確認していけ
0275デフォルトの名無しさん
2013/06/24(月) 17:32:01.23ありがとうございます
言われた通りに最初からやったらうまくいきました
0276248
2013/06/24(月) 22:02:44.02の部分を
throw new NullPointerException();
にするなんていうのはなし?
0277デフォルトの名無しさん
2013/06/24(月) 22:33:14.840278デフォルトの名無しさん
2013/06/25(火) 07:58:37.22どんだけお前はアホなんだよ
呼び出し側のパラメーター異常は
IllegalArgumentExceptionだろ
0279デフォルトの名無しさん
2013/06/25(火) 08:00:21.97ノーチェックかチェックしてIllegalArgumentException
スローするかどちらかにしろ
0280デフォルトの名無しさん
2013/06/25(火) 10:09:07.50なぜかreturn null前提で考えてた
0281デフォルトの名無しさん
2013/06/25(火) 14:58:19.28String base = "ping ";
int ret = Runtime.getRuntime().exec(base + param).waitFor();
ぱっと見た目やばそうなんだけど・・・
0282デフォルトの名無しさん
2013/06/25(火) 15:15:08.630283デフォルトの名無しさん
2013/06/25(火) 15:22:35.69実際セミコロンつけてコマンド連ねてみても動かないから、証明出来なくて困ってる
なにまちがえてんだろ
0284デフォルトの名無しさん
2013/06/25(火) 15:27:35.39JavaのRuntime.execはシェルを呼ばない。単純に文字列をトークンに分割して
最初のトークンで指定されたコマンドに以降のトークンを引数としてわたすだけ。
なので;や|、&といったシェルが解釈する文字列は機能しないと思う。
0285デフォルトの名無しさん
2013/06/25(火) 15:36:04.270286デフォルトの名無しさん
2013/06/25(火) 16:29:27.50なるほど、サンクスです。適当に付け足してもうごかないわけだ
しかし、チェック処理がないのがきもちわるい
作った本人が分かってたのか、分かってなかったのか、わからんな・・・
0287デフォルトの名無しさん
2013/06/25(火) 16:50:16.660288デフォルトの名無しさん
2013/06/25(火) 17:04:47.01このためだけに触りたがらないヤツがいるので、危険度を証明したかったんだが
証明できんw
という夢を見た
0289デフォルトの名無しさん
2013/06/25(火) 23:00:45.63Javaは設計が上手くいったときがスカっとして個人的に一番楽しい
0290デフォルトの名無しさん
2013/06/25(火) 23:05:01.540291デフォルトの名無しさん
2013/06/26(水) 01:57:41.230292デフォルトの名無しさん
2013/06/26(水) 03:55:18.950293デフォルトの名無しさん
2013/06/26(水) 04:02:32.31これはひどい
0294デフォルトの名無しさん
2013/06/26(水) 05:40:01.920295デフォルトの名無しさん
2013/06/26(水) 06:53:39.61いつの日か出会うかもしれない変な継承によるバグにおびえるヒマがあったら
今目の前にあるコードから継承や抽象クラスやコンポジションを使ってコードの
反復を一つでも減らした方がまだ生産的。
0296デフォルトの名無しさん
2013/06/26(水) 07:13:47.54オーバーライドではない→コピペ
まずこの発想がキチガイ的でヤバイ
0297デフォルトの名無しさん
2013/06/26(水) 07:24:24.63protectedなメソッドを空実装しといてオプショナルにしとくのなら安全で使いやすいが
0298デフォルトの名無しさん
2013/06/26(水) 07:29:01.28こういう解釈にいたる時点で日本語読解力がヤバい。
バグの温床としてオーバーライド < コピペだとは書いたけど、
オーバーライド無し -> コピペとは一言も書いていない。
0299デフォルトの名無しさん
2013/06/26(水) 12:39:13.320300デフォルトの名無しさん
2013/06/26(水) 14:45:51.34依存関係からいっているのかな、だけど普通abstractクラスはそれを分散させないために使うんじゃない?
例えば描画と更新が必要なGUI開発やゲーム開発とかで
ArrayList<MyObject> objects = new ArrayList<MyObject>();
public void update() {
for(MyObject mo : objects) mo.update();
}
public void render() {
for(MyObject mo : objects) mo.render();
}
のように描画する対象物がどんな形でどんな役割であろうと同一化したほうがスッキリする場合、
abstract class MyObjectにして座標等のフィールドはprotectedにする。
で、update()メソッドもabstractにしてrender()に関しては場合による。
以降はMyObjectクラスを継承したMOBoxクラス、MOBarクラス、MOMenuクラス、
ゲームならMOPlayer、MOEnemy・・・
といったように本来の役割が違ってもかなり深く抽象化できて扱いやすいことは多いよ。(SwingのJComponentクラスがまさにこれだよね)
Decoratorパターンも導入しやすいですし。
0301デフォルトの名無しさん
2013/06/26(水) 20:09:38.19ふくれあがった唯一神クラスを分割記述するためだけに
abstract使ってもいいのよ?
0302デフォルトの名無しさん
2013/06/26(水) 20:13:28.83勝手な想像だが、 >>291 は、道具の使い方や、使う場面を間違えてるんじゃないかと思う
カラフルな絵を書くのが目的のときに、
「黒しか出ないってなんだよ、エンピツつかえねぇ!」
↓
「エンピツ使うとか失敗するにきまってるだろ」
って言ってるように聞こえる。
0303デフォルトの名無しさん
2013/06/26(水) 21:07:21.54単にabstractを使う機会が無かっただけじゃない?
0304デフォルトの名無しさん
2013/06/26(水) 22:19:30.43>abstract使ってもいい
意味や機能でなく
処理でクラスやメソッドを分けるのは
JAVAドカタの得意技だね
0305デフォルトの名無しさん
2013/06/26(水) 22:35:34.39それがわかってないからたいてい抽象化が無意味になって失敗する
だいたい考慮すべきことが多いのに最初から一発OKな設計になるわけない
・引数にするか、メンバーにするか
・使うのはここだけか、何度も使うことになるか
・・・
0306デフォルトの名無しさん
2013/06/26(水) 22:39:41.25>ロジック実装して初めてインターフェースは見えてくるもの
それはお前がドカタだから。
設計のできる人はそんなこと無いから。
0307デフォルトの名無しさん
2013/06/26(水) 22:51:51.03それに違和感を感じるのはクラス分けると書けないいわゆるオブジェクト指向になれてない人か、
デザインパターンすら認めない?生きた化石じゃないか?
仕事を割り振ることを考えたらabstractが設計失敗なんてありえないと思うよ。趣味でやってるレベルでもわかる。
>>305
>だいたい考慮すべきことが多いのに最初から一発OKな設計になるわけない
同意だけど、abstract等で縛っていかないから抽象化が失敗するんだと思う。
>ロジック実装して初めてインターフェースは見えてくるもの
これを念頭に置くのは大反対。
抽象化しすぎると将来どうなるかわからないからpublicにしとけ的な設計が一番ダメに感じる。
見えてこないのはまさに修飾子を正しく把握していない、もしくは縛って自由を獲得する設計に慣れていないだけ。
0308デフォルトの名無しさん
2013/06/26(水) 22:56:42.35いやー、JAVAドカタって
ほんっっとにどうしようもないな
0309デフォルトの名無しさん
2013/06/26(水) 22:57:04.78これ、誰でもAPIで経験してるはず。
設計さんに感謝やで。
継承がバグの温床なんていったらバチあたるでほんま。
0310デフォルトの名無しさん
2013/06/26(水) 23:23:04.490311デフォルトの名無しさん
2013/06/27(木) 00:40:03.700312デフォルトの名無しさん
2013/06/27(木) 01:40:13.43そういやそのへんの挙動、最近のupdateで何か変わってなかったっけ。
記憶違いかも知れんが。
0313デフォルトの名無しさん
2013/06/27(木) 01:40:54.77動詞をクラス名にしたりね。
0314デフォルトの名無しさん
2013/06/27(木) 01:43:54.45みたいな書き方って海外の人あまりしないよね?なぜ日本ではこれが推奨されているの?
0315デフォルトの名無しさん
2013/06/27(木) 01:56:34.66Java8だかでインタフェースのメソッドがステートレスに実装可能になるらしいから驚き
0316デフォルトの名無しさん
2013/06/27(木) 02:17:56.80海外ではどんな書き方なん?
0317デフォルトの名無しさん
2013/06/27(木) 02:27:14.62普通に
ArrayList<Object> list = new ArrayList<Object>();
って書く人が多いように思う。
自分もそう書いていたんだけど
List<Object> list = new ArrayList<Object>();
のほうがいいよ的な意見もよく聞く。
だけどそういう人でも
JComponent button = new JButton();
ってのは書かずに
JButton button = new JButton();
と書く人が多い。
なぜArrayListのときはそういう書き方をするのか教えて欲しい。
0318デフォルトの名無しさん
2013/06/27(木) 02:38:07.98意味論的にそれが有効だからとしか。
ArrayListはランダムアクセス可能なList
JButtonはSwingのボタンUIとして確固たる知名度と意味を持つ
てかJComponentは抽象度が高すぎるしね
0319デフォルトの名無しさん
2013/06/27(木) 02:40:12.030320デフォルトの名無しさん
2013/06/27(木) 02:45:07.10生成側はパフォーマンス特性に合わせて無難または最適な物を生成する
0321デフォルトの名無しさん
2013/06/27(木) 02:46:01.29こういうのってキャストとかしなくて大丈夫なん?
0322デフォルトの名無しさん
2013/06/27(木) 02:48:56.11http://docs.oracle.com/javase/jp/7/api/java/util/ArrayList.html
通常、リストの同期をとるには、リストを自然にカプセル化するオブジェクトで同期をとります。
そのようなオブジェクトが存在しない場合は、Collections.synchronizedList メソッドを使用してリストを「ラップ」する必要があります。
これは、リストへの偶発的な非同期アクセスを防ぐために、作成時に行うのが最適です。
List list = Collections.synchronizedList(new ArrayList(...));
0323デフォルトの名無しさん
2013/06/27(木) 03:07:49.08マルチスレッドでadd()等の処理をするときに同期どれよというのはわかってけど
まるで答えになってないよね?
0324デフォルトの名無しさん
2013/06/27(木) 03:15:37.97http://docs.oracle.com/javase/tutorial/collections/interfaces/list.html
Here's a nondestructive form of this idiom, which produces a third List consisting of the second list appended to the first.
List<Type> list3 = new ArrayList<Type>(list1);
list3.addAll(list2);
0325デフォルトの名無しさん
2013/06/27(木) 03:20:07.47オブジェクト指向言語で抽象度の高い方向(スーパーセット)にキャストするのは問題ない
ここら辺は個別に疑問を持つより基本を一通り知ってから考えた方がいいよ
0326314
2013/06/27(木) 03:41:15.24そこじゃなくない?外国人が使っているよということを言いたいの?何が言いたいの?
リンク先で、
同じオーダー中に同じ要素を含んだ二つのListが等しくなるってのはわかった。
で、equals書くならhashCodeも一緒に書けよっていう某本にも書いてるその辺にも強いことがわかった。
これが答え?
0327デフォルトの名無しさん
2013/06/27(木) 06:21:34.84例えば適切な抽象度のインターフェイスが別にあるのにArrayListとかHashMapと
いった実装クラスを引数として要求したり返値として返したりする公開メソッド
を持つクラスに出会った場合は、とりあえずその品質を疑ってかかる。
いわゆる「臭う」コードのよくあるパターンだと思う。
内部変数にしても例えばArrayList使って抽象度を下げるとListのような抽象度の
高い引数を受けにくくなるので、こちらも普通はListを使うかな。
ある場所での型の抽象度の低さはコード中の他の場所に伝染するんだよね。
0328デフォルトの名無しさん
2013/06/27(木) 06:40:22.65その理屈はおかしい
JavaのListはランダムアクセスが効率的に行えることを保証しないので、
ランダムアクセスしたいならArrayListで受けなければならないということになってしまう
いや意識してそういう理由でArrayListならそれでいいと思うけどね
ジェネリクスでList,RandomAccessとする手もあるけど
内部でnewする変数にそこまでするのは現実的じゃないわな
0329デフォルトの名無しさん
2013/06/27(木) 06:56:02.07ただしそれはオーバーライドがない時の話な
オーバーライドされたメソッドがある場合は派生クラスが厳密に規約を守っているか確認しなければ規定クラスとして使ってはいけない
オーバーライドしているとたやすくis aの関係が破壊される
規約を作れば良いというがその規約にバグがないことも規約が守られてることも保証することは難しく人の注意力に頼るしかない
だからバグが量産される
た
0330デフォルトの名無しさん
2013/06/27(木) 07:06:20.79ランダムアクセスのためのインターフェースとしなかったのはJavaの大失敗の一つ
0331デフォルトの名無しさん
2013/06/27(木) 12:01:34.71名前的に紛らわしい
0332デフォルトの名無しさん
2013/06/27(木) 13:37:26.260333デフォルトの名無しさん
2013/06/27(木) 14:51:40.48業界の慣習。一応。
0334デフォルトの名無しさん
2013/06/27(木) 15:20:23.50メソッド引数としてはアリ
0335デフォルトの名無しさん
2013/06/27(木) 21:25:21.75Androidの真似して
かっこいいと勘違いしたんだろ
0336デフォルトの名無しさん
2013/06/27(木) 23:59:50.59IOExceptionがじゃまなの…
0337デフォルトの名無しさん
2013/06/28(金) 01:16:49.31.NETはまさにそうなってるね
名前的には残念なことになってるが設計としてはアレが正解だわ
0338デフォルトの名無しさん
2013/06/28(金) 01:20:26.99その話、アップキャスト関係なくね?
0339デフォルトの名無しさん
2013/06/28(金) 03:30:45.63private int b;
private int c;
public Constructor(int a, int b) {
this.a = a;
this.b = b;
// 引数a, bできまるcはこう書くべきなのか
c = a+ b;
// こう書くべきなのか、どっちがいいですか?
c = this.a + this.b;
// やはり前者?
}
0340デフォルトの名無しさん
2013/06/28(金) 03:40:28.29前者にすべき。マルチスレッドに対応させる際に後者だと都合が悪い
0341デフォルトの名無しさん
2013/06/28(金) 04:03:42.53把握しました
0342デフォルトの名無しさん
2013/06/28(金) 04:14:49.32後者だとどう都合が悪いの?
0343デフォルトの名無しさん
2013/06/28(金) 07:05:24.680344デフォルトの名無しさん
2013/06/28(金) 07:30:16.62最悪な回答だな
0345デフォルトの名無しさん
2013/06/28(金) 07:33:43.35コンストラクターが完了するまでは
オブジェクトの構築が終わってないんだから
他のメソッドに合わせてthisを使う必要はない
0346デフォルトの名無しさん
2013/06/28(金) 08:59:23.11マルチスレッドにした場合は初期化中のオブジェクトにアクセスされる可能性がある。つまり
this.a = a;
this.b = b;
// ここでthis.aやthis.bの値が別スレッドから更新される可能性もある
c = a+ b;
その結果「引数a, bできまるc」という仕様が満たされないことになる
c = a+ b;なら別スレッドから何かされても仕様は満たされるが、
c = this.a + this.b;にした場合は、初期化中のオブジェクトが外部に公開されて
this.aやthis.bが変更される危険がないかConstructorクラス全体を調べなければならない
どちらの方が安全にコーディングできるか考えれば答えは明らかだよね
0347デフォルトの名無しさん
2013/06/28(金) 10:30:31.07Java言語仕様読み直せ
0348デフォルトの名無しさん
2013/06/28(金) 10:36:23.41コメントに沿った実装という意味では前者だな。
意味的にも前者のほうがいいんじゃなかろうか、そのコード片だけでは判断できんけど。
結果はどっちも変わらん。
0349デフォルトの名無しさん
2013/06/28(金) 10:41:16.570350デフォルトの名無しさん
2013/06/28(金) 10:48:00.80検証の仕方も思い浮かびません...
0351デフォルトの名無しさん
2013/06/28(金) 10:50:51.900352デフォルトの名無しさん
2013/06/28(金) 10:51:08.41その場合はそりゃ後者だろう。
0353デフォルトの名無しさん
2013/06/28(金) 10:52:26.29http://docs.oracle.com/javase/tutorial/
JAVA覚えようぜ
0354デフォルトの名無しさん
2013/06/28(金) 11:37:29.87>初期化中のオブジェクトが外部に公開
コンストラクタで外部にthis参照が逸出するときのことを言ってるんだろう。
ふつう、コンストラクタはthis参照を外部に公開しないように実装するものなんで、
そういう状況になること事態が実装上の不備だと思う。拙者そう思う。
0355デフォルトの名無しさん
2013/06/28(金) 12:26:37.11ただのコーディングミスだろ
0356デフォルトの名無しさん
2013/06/28(金) 12:43:30.30でもそれだとマルチスレッド関係ないよな...
0357354
2013/06/28(金) 12:50:39.56俺はマルチスレッドの話をしたつもりだったんだが、お前はなんで俺の話がマルチスレッドと関係ないと思うの?
0358デフォルトの名無しさん
2013/06/28(金) 13:15:22.64コンストラクタ完了前に参照漏洩してたりしたからなぁ。
あの手の問題あるとチェックしきれん。
0359デフォルトの名無しさん
2013/06/28(金) 14:28:50.08シングルスレッドでも逸出させられる
0360デフォルトの名無しさん
2013/06/28(金) 14:38:54.680361桃白白 ◆9Jro6YFwm650
2013/06/28(金) 14:45:17.44桃白白わかるよ。
0362デフォルトの名無しさん
2013/06/28(金) 15:01:04.41ロック無しで確実にスレッドBに届ける方法は無く、
スレッドAがロックすれば確実に初期化された新オブジェクトが
全スレッド間で共有されてしまうので
正直 ど う で も い い
0363デフォルトの名無しさん
2013/06/28(金) 15:04:35.490364デフォルトの名無しさん
2013/06/28(金) 15:06:40.22すみません、教えてください。
0365桃白白 ◆9Jro6YFwm650
2013/06/28(金) 15:09:21.89B木のなにを知りたい?アルゴリズム?インプリメンテーション?
値を追加するところ?値を削除するところ?値を検索するところ?
どのあたり?
0366デフォルトの名無しさん
2013/06/28(金) 15:15:09.70TSM01-J. オブジェクトの構築時にthis参照を逸出させない
https://www.jpcert.or.jp/java-rules/tsm01-j.html
0367デフォルトの名無しさん
2013/06/28(金) 15:16:16.75値の追加、検索、削除が出来ればOKです
初めに任意で最大の子の数を入力する所から始めたいです
0368桃白白 ◆9Jro6YFwm650
2013/06/28(金) 15:34:04.09コード欲しいってことね。
桃白白もいくつかコード眺めてみたけど、奥村さんのコードが一番きれいだと思う。
『Javaによるアルゴリズム事典』サポートページ
http://oku.edu.mie-u.ac.jp/~okumura/java-algo/
0369デフォルトの名無しさん
2013/06/28(金) 15:50:38.71ここに置いてあるzipファイルの中の「BTree.java」ですよね?
ありがとうございます!これを参考にします。
0370桃白白 ◆9Jro6YFwm650
2013/06/28(金) 15:55:43.37はい、それです。
0371デフォルトの名無しさん
2013/06/28(金) 20:15:07.51ローカルルール読んでこいよ異常者共
0372デフォルトの名無しさん
2013/06/28(金) 20:39:57.590373デフォルトの名無しさん
2013/06/28(金) 20:42:02.650374桃白白 ◆9Jro6YFwm650
2013/06/28(金) 20:49:48.68いんじゃないの。書いちゃいなよ。
0375デフォルトの名無しさん
2013/06/28(金) 21:26:55.04自分のコードの感想言われたらファビョる奴が良く言うよ
0376372
2013/06/28(金) 21:27:03.75ttp://sourceforge.jp/users/soremachi/pf/TokenTable/wiki/FrontPage/attach/tokenTable.zip
コーディングを補助する目的で作った文字列テーブルです。2ヶ月ほど前にJavaの勉強も兼ねて作りました。
(「TableTest.java」にとりあえずの使い方が書いてあります)
0377デフォルトの名無しさん
2013/06/28(金) 21:32:12.780378デフォルトの名無しさん
2013/06/28(金) 21:32:33.320379デフォルトの名無しさん
2013/06/28(金) 21:48:31.18System.out.println( "Table file : ファイル名を指定してください" );
return false;
のようなものは
throw new IllegalArgumentException( "Table file : ファイル名を指定してください" );
のようにしておけ
false 返しても結局戻り値チェックしないんだし、エラーを無視して実行を続けるより死ぬ方がいい
特別に理由があって死にたくないときは try catch すればいい
0380372
2013/06/28(金) 22:04:25.51ttp://ideone.com/IKjued
ttp://ideone.com/1IQ5G5
ttp://ideone.com/zOJYVA
ttp://ideone.com/7TUxdz
ttp://ideone.com/1kuWqV
ttp://ideone.com/9MOKz4
ttp://ideone.com/4QEy30
0381デフォルトの名無しさん
2013/06/28(金) 22:08:09.940382372
2013/06/28(金) 22:32:42.03わかりました。
引数のチェックでは throw new IllegalArgumentException を使うのが一般的なんですか?
0383デフォルトの名無しさん
2013/06/28(金) 23:49:28.98//- こういうの流行ってんの?
0384デフォルトの名無しさん
2013/06/29(土) 01:37:41.96俺、すげー気持ち悪いんだけど。
setHead, setPrimary, set, file、全部キモい。
addとかappendとかkeyとかindexとかcolumnとかpush_backとかなんかそんな概念じゃないのか?
まあ、かろうじてinsertはありなのかもしれないが。
0385デフォルトの名無しさん
2013/06/29(土) 01:42:53.740386デフォルトの名無しさん
2013/06/29(土) 02:51:57.69列を追加してるのにsetHeadというメソッド addだろ
標準出力するだけのクラス tableを受け取るメソッドかtoStringに書けばいい
トリッキーなgetterとsetter 座標指定で十分
同一パッケージから直接変更し放題のフィールド 大事な値をうっかり壊しちゃうかもよ
何でもpublicメソッド エラーメッセージとか外から呼び出すの?
別のクラスに投げるだけなら直接呼び出せ
ファイルが閉じられない可能性がある
Exceptionでキャッチすんな
...
0387372
2013/06/29(土) 03:00:41.42insertは、なぜありなんでしょうか?Javaというか、オブジェクト指向に触れて3ヶ月ほどなので、
その概念というのがちょっとわからないです・・・。メソッドの持つ役割とかですか?
列データやtokenなどは、いい加減に書いてしまいました。
ArrayListを入れ子にしているので、行列のフィールドに対するコメント文です。
0388デフォルトの名無しさん
2013/06/29(土) 05:13:45.52慣用的に使われる用語とその組み合わせというのがあって、大抵それは求めれば他のソフトウェア
技術や数学用語にちゃんと由来が見つかる。
例えばデータ構造として表(table)という名前を使うのであれば列(column)や属性(attribute)、
行(row)やタプル(tuple)という言葉と組で使うのが慣用的。これらの用語は関係データベースの
世界に由来の一端(全てではない)があって、この世界ではrelation・attribute・ tupleかtable・
column・rowの組で使う(厳密にはこの二つの組は異なる概念なので混ぜるのも良くない)。
あとPrimary、これも元々関係データベースから来た用語だけど、数ある候補キーの中から一つ
を選んで主キー(primary key)とするのであって、PrimaryKeyならともかくPrimaryだけでは
意味をなしていない。無難なのはKeyColumnかな。
操作に関してもtableにinsertとはおぉDB的だなぁと思ったらsetと出てきてずっこける。
DB的にupdateとするとややずっこけ感は少ない気がする。
setHeadは三重の意味で良くない。一つは上記の通りheadという名前。二つ目は列の「追加」
なのにsetという用語を使っていること。最後にsetHeadというメソッド名はJava Beansの
規約でtableのheadプロパティの値をセットするメソッドに使う必要があること。
0389デフォルトの名無しさん
2013/06/29(土) 05:45:43.210390384
2013/06/29(土) 07:41:48.98あまりにアレ過ぎて言語化できなかったんだけど、すっきりしたよ。ありがとう。
俺、Javaは初心者なんだけど、Javaな世界ではあんな感じが普通なのかと思ったよ。
誰も何も言わないから。
0391デフォルトの名無しさん
2013/06/29(土) 08:25:23.88あまりにしつこい社会主義のようだと、せっかくの創造性がつぶれる
もともと日本人には発想性がある人が少ないのに、さらに減ってしまう
ジャワみたいにばかみたいに長い名前をつけるのもどうかと思うがな
コンパイル後も短いシンボルになってないので、実行時の翻訳にムダな時間がかかる処理系もあるだろう
0392デフォルトの名無しさん
2013/06/29(土) 08:58:37.24他は識別子の名前についてガヤガヤ言ってるだけで特に耳を傾ける必要はない
コーディング規約読めばそれで理解できる話だし
0393デフォルトの名無しさん
2013/06/29(土) 12:47:46.80StringとStringBufferの区別は本当に必要なのか、とか
0394デフォルトの名無しさん
2013/06/29(土) 12:52:19.110395デフォルトの名無しさん
2013/06/29(土) 12:56:03.850396デフォルトの名無しさん
2013/06/29(土) 14:25:16.00名前超大事
0397デフォルトの名無しさん
2013/06/29(土) 15:39:30.97チーム開発なのか個人開発なのか
ライブラリとして提供するのか
色々シーンあるだろ。個人開発なのに名付け規則に神経すり減らすのはエネルギーの無駄
0398デフォルトの名無しさん
2013/06/29(土) 15:48:00.90>>397みたいな奴が妥当な名前を付けられないってだけ
0399デフォルトの名無しさん
2013/06/29(土) 16:56:30.39それは自由がないわな かわいそうだな...
0400372
2013/06/29(土) 17:19:07.84別のクラスに投げるだけなら、といのは、ファイル入出力や画面への出力は、
同じクラスにメソッドとして持たせるという意味合いで合ってますか?
それとも、ひとつのJavaファイル内に複数のクラスを書くということでしょうか?
何でもpublicメソッドなのは、正直、アクセス修飾子の使い方をわかっていませんでした。
0401372
2013/06/29(土) 17:58:10.67知りませんでした。メソッド名は
(setHead -> add)、(setPrimary -> setKeyColumn)、(set -> update)、(get -> select)
こういう風にすればいいですか?
0402デフォルトの名無しさん
2013/06/29(土) 17:59:31.16( ゚д゚ )
0403デフォルトの名無しさん
2013/06/29(土) 18:52:47.47二次元のデータの入れ物を想定しているのかがわからない。
そういう意図を表明するという意味で、名前重要。
0404デフォルトの名無しさん
2013/06/29(土) 18:59:40.27無駄な努力を強いられて嫌になるから。Tableクラスだけでもなかなかの忍耐が必要。
一人で書き捨てするコードならともかく、人に読んで貰うなら命名規則や慣用は要尊重。
無知を言い訳したオリジナリティーの発揮は単に有害。初心者こそ模倣から始めるべき。
・適切なクラス名やメソッド名が解らないのであれば既存のライブラリのAPIから似たような
ことをしているクラスやメソッドの名前を探して真似をする。
・適切なコメントの付け方が解らないのであれば既存のライブラリのソースコードを調べて
(クラス名に.javaとつけてググればいくらでもヒットする)真似をする。JavaにはJavaDoc
形式というコメントの付け方が定義されていて、これ以外の独自コメント形式は単に迷惑。
・適切な変数名が解らなければ既存のライブラリのソースコードを調べて(以下略)
解らなければまず調べよう。
初学者ほど何故か調べない、真似をしない、コンパイル時のエラーメッセージも読まない不思議。
0405デフォルトの名無しさん
2013/06/29(土) 19:03:01.06・フィールドは基本private。さらにfinalに出来ないか検討する。Tableのtableなんかは
finalに出来る。finalではないpublicは御法度。protectedも慎重に。
・フィールドの型は特別な事情が無い限りHashMapといった実装クラス名よりもMapと
いうインターフェイスを用いた方が一般的に設計の抽象度が上がって実装に柔軟性が出る。
・データの重複はバグの温床なので避ける。例えばrow_no、row_sizeなんてフィールドが
用意されているけれども、table.size()等で代用できないか検討する。パフォーマンス?
それは素直で安全な実装で大敗してから考えるべき。
・特別な事情がない限りファイルIOは直接手作りしない。例えばTableクラスの場合は
write(DataOutput out)、readFields(DataInput in)というDataInput、Outputを使って
読み書きするメソッドを用意するのがお薦め。これだけでTableクラスをファイルに保存
することも、ネット経由で投げることも、Hadoopでビックデータ解析(笑)にも使える。
あるいはJAXBやJacksonを使ってXMLやJSONへマッピングする方法を検討する。
続く。
0406デフォルトの名無しさん
2013/06/29(土) 19:05:40.12・カラムの型や名前をバラバラのMapで管理しているのはあまり良くない。素直にカラムの
定義を扱うTableの内部クラスを用意して、
public static class Column{public final int index; public final String name; public final String type;}
これのリストをスキーマとして定義する。必要であればルックアップテーブルも。
private final List<Column> schema = new ArrayList<Column>();
private final Map<String, Column> nameToColumn = new HashMap ...
スキーマ情報を提供する公開メソッドも用意すると親切だよね。
public List<Column> getSchema() {return Collections.unmodifiableList(schema);}
public List<Column> getColumn(int index) {return schema.get(index);}
public List<Column> getColumn(String name) {return nameToColumn,get(name);}
・検索結果に一個結果を追加する度にサイズを+1した配列を生成して内容を全件コピーする
凄いコードを見たような気がするのは気のせいだよね・・・素直に可変長であるList
を使うべき。返値もListで良い。
・for(int i...)ではなく拡張for構文を使ってくれた方が読みやすい
・・・この調子で書いていくとどうなるのだろう・・・
0407デフォルトの名無しさん
2013/06/29(土) 19:15:00.140409デフォルトの名無しさん
2013/06/29(土) 19:56:44.170410デフォルトの名無しさん
2013/06/29(土) 19:58:21.58構造の定義のことでしょ。
>>406のコードでは列情報のことっすね。いまTableにはこの列がありまっせーていう情報。
0411デフォルトの名無しさん
2013/06/29(土) 19:58:31.40スキーマとは構造のこと。テーブルのスキーマはテーブルの構造のこと。
テーブルのスキーマは一般的には列の定義の集合で、個々の列は名前や型を持つ。
テーブルの構造をスキーマと呼ぶ一方で、具体的なデータが入ったテーブルその
ものはインスタンスと呼ぶ。スキーマとインスタンスもDBの世界で使われる言葉。
なのでDBの素養のある人であればtable.getSchema()がカラム定義のリストを返す
のは簡単に想像出来る。これが命名規約や慣用の強み。
ただschemaに関しては素直にcolumnList、getColumnListでも良いかもね。
というかこれ以上現状のコードをレビューをするのもしんどいので、一度自分で
色々調べ直して書き直したコードと共に出直してくれないかな。
0412デフォルトの名無しさん
2013/06/29(土) 20:05:52.52参考にしたものがどうしようもないゴミか、372が変な方向に理解しちゃったの?
ちょっとjavax.swing.table.DefaultTableModelを見てみなよ
0413デフォルトの名無しさん
2013/06/29(土) 22:07:32.53的なレベルに達してないから。
0414デフォルトの名無しさん
2013/06/29(土) 22:20:15.32必要な場合もあるということがわかるはず。
0415デフォルトの名無しさん
2013/06/29(土) 22:34:56.88こういうコードを見ても設計何ソレ
なのがJAVAドカタの真髄
0416デフォルトの名無しさん
2013/06/30(日) 00:49:17.690417デフォルトの名無しさん
2013/06/30(日) 01:12:40.420418デフォルトの名無しさん
2013/06/30(日) 01:23:16.55Eclipseと答えるのがまっとうな人間
0419372
2013/06/30(日) 02:14:52.38ご指導よろしくお願いします
mainクラス http://ideone.com/paGek6
Tableクラス http://ideone.com/vLUKre
Columnクラス http://ideone.com/IdrclV
0420デフォルトの名無しさん
2013/06/30(日) 02:20:15.16これはKUSOコード
0421デフォルトの名無しさん
2013/06/30(日) 02:37:58.180422デフォルトの名無しさん
2013/06/30(日) 02:49:23.64その分随分機能も削られているけど。
・Columnがattributeを持つのは変。意味的にここはnameだと思う。
・せっかくColumnをimmutable(変更不可能)なオブジェクトとして定義しているのに
tableにgetTypeやgetAttributeを用意しているのは勿体ない。getColumnで直接
Columnオブジェクトを渡して無問題。table.getColumn(index).getType()みたい
に使える。
・コンストラクタにColumnの配列を渡すようにしたのは好判断だと思う。
後からColumnを追加出来ないようにするだけで他の部分のロジックが単純になる。
・ただ内部的にはColumnsは配列ではなくListで持っていた方が色々と具合が良い。
Javaの配列はimmutableに出来ない。なので例えば現状のgetAllColumnsはこれを
使って個々のColumnを差し替えることが出来るので安全ではない。
さらにコンストラクタ引数に渡したColumnsの配列は防御的コピーをすべき。
private final List<Column> columnsとして、コンストラクタで
this.columns = Collections.unmodifiableList(new ArrayList<Column>(Arrays.asList(columns)));
とでもしておくと良い。getAllColumnsでcolumnsをそのままreturnしても無問題。
・細かいことだけどコンストラクタはTable(Column... columns)の方が使い勝手が良い。
new Table(new Column(...), new Column(...))も、現状通りColumn[] columns = ...
としてnew Table(columns)とする使い方も両方使える。
・insertで入力値の型チェックも実装すると素敵だと思う。
この調子で行くとよいんじゃないのかな。
0423デフォルトの名無しさん
2013/06/30(日) 02:57:42.08入門以前レベルから初心者レベルまで話が進んだ
0424デフォルトの名無しさん
2013/06/30(日) 03:03:45.80Listの中身を全件配列にコピーする、そんな定番処理は手作りするまえにAPIと
して用意されていないか調べるべきだろうね。もちろん存在する。
ListのtoArrayメソッドの使い方を調べてみると良いと思う。
0425デフォルトの名無しさん
2013/06/30(日) 03:09:50.58finalに出来ないか検討するっていうレスがあったけどここまでする必要ない
classにfinalついてるからメソッドのfinalは全部無意味
サブクラス作れないからオーバーライドできないもん
仮引数のfinalはあってもいいけど
> for (int i = 0; i < table.getAllRecords().length; i++){
繰り返しの度に時間がかかるメソッドが呼ばれるけどいいの?
0426372
2013/06/30(日) 03:31:24.30DBへの問い合わせ文をメソッドに、データ構造をListにしてみよう、と思って最初は書いていました。
>>404-406,410,411
JavaDoc形式のコメント、クラス定義時の一般論や、DataOutput, DataInputのインタフェースやスキーマの利用方法、知りませんでした。
レビューを参考にして、色々調べ直してから出直します。コードをレビューして頂いて自分の無知がよくわかりました。ありがとうございます。
>>412
なにも参考にしないで、自分の欲しい機能を追加していきました。
あと、スレの流れ的に言いにくいのですが、>>408,>>419は、私ではありません。
このレスを書いていて発言する機会を失ってしまいました・・・。
0427デフォルトの名無しさん
2013/06/30(日) 03:31:57.59仕様をはっきりさせるべきだろうね。今のコードでは確かに新しいレコードの
追加は出来ないけれども、個々のレコードの中の値の書き換えは出来る。
シャローコピーだから。それが嫌ならディープコピーを実装するしかない。
ディープコピーまでは不要、書き換え可能は承知で単にレコードの集合を参照
可能にしたいだけなのであればやはり返値は配列ではなくListにして、
return Collections.unmodifiableList(records);とでもするのが実装も簡単
だし全件コピーに比べてオーバーヘッドも少ない。
mainの中のループもfor(Object[] record: table.getAllRecords()){ ...と
でもした方が読みやすい。
0428デフォルトの名無しさん
2013/06/30(日) 03:36:18.890429デフォルトの名無しさん
2013/06/30(日) 06:11:06.80ここまでくると異常者だな
0430420
2013/06/30(日) 07:39:46.72getAttributeはテーブルクラスのメソッド名として不適切
100歩譲ってgetColumnAttributeなら可。
それにgetXxxx(index)はgetterと紛らわしい
0431デフォルトの名無しさん
2013/06/30(日) 08:49:45.89冗長な名前使っていてイライラせん?
getColAttr じゃいけん?
0432デフォルトの名無しさん
2013/06/30(日) 09:12:00.03そういう省略は好まれない。人によって省略したりしかかったり、またどう省略するかがまちまちだと困る。
スペルアウトするのが原則。
0433デフォルトの名無しさん
2013/06/30(日) 09:31:36.34誰が好まん?
0434デフォルトの名無しさん
2013/06/30(日) 09:45:57.18コード読む人だろ。ColがColorなのかどうなのか定かじゃないだろ。
そんなとこでケチケチするちんけなやつのコードなんて見たくないってことだ。
0435デフォルトの名無しさん
2013/06/30(日) 09:47:19.17init(入力ストリーム)ってメソッド作ったら初期化はコンストラクタでやれ
コンストラクタで読み込むようににしろって先生に怒られた
0436デフォルトの名無しさん
2013/06/30(日) 09:48:47.57むしろ非常識でござろうな。IOExceptionをどう処理するつもりなんだ。
0437デフォルトの名無しさん
2013/06/30(日) 09:51:53.93>>そんなとこでケチケチするちんけなやつのコードなんて見たくないってことだ。
さすがジャバラー(笑) 冗長な名前はムダなんだけどなぁ
バイトコードを解析した事ある?(笑)
0438デフォルトの名無しさん
2013/06/30(日) 10:05:05.10>そういう省略は好まれない
ところでprintlnとconcatはどう思いますか?
0439デフォルトの名無しさん
2013/06/30(日) 10:13:11.98>init(入力ストリーム)ってメソッド作ったら
コンストラクターが終わるとオブジェクトは構築されたと見なされる。
initを呼び出す前の状態が、クラス名の概念を表すオブジェクトとして適切かどうかによる。
>>436
コンストラクターでIOExceptionが出ると困るとか
どれだけジャバドカタは低脳なんだ。
0440デフォルトの名無しさん
2013/06/30(日) 10:35:01.08>>initを呼び出す前の状態が、クラス名の概念を表すオブジェクトとして適切かどうかによる
どういう意味?
0441デフォルトの名無しさん
2013/06/30(日) 10:46:01.05C言語の感覚が強い人はエラーは戻り値で判断するようにしたくなる
例外は文脈が吹っ飛ぶのであまり論理的でないしな
コンストラクタ内例外はnewの失敗としては検出できないのでそりゃ躊躇したくもなるだろう
0442デフォルトの名無しさん
2013/06/30(日) 10:55:32.68組み込みメソッド名の中には、そういう歴史的な理由経緯の省略がある場合があるが、それはそういうものだと
理解するしかない。
そういうメソッド名を自分が作るクラスに使うのはOKだと思うが、複合名詞を自分のセンスで省略するのは
好まれない。特に、Javaの世界では、スペルアウトするのが好まれる。なぜそうなのかは知らないが、
Javaのネーミングの規範として、スペルアウトしろと言われるのを良く見かける。
0443440
2013/06/30(日) 10:59:52.32例えば編集可能な文字列クラス(OreString)を自作したとする。
new直後は中身のデータも文字列の長さも未定義で、
initして初めて長さ0の文字列になるとする。
initする前は「文字列」の概念として不完全な存在だから
OreStringというオブジェクトは成り立っておらず、
この設計はおかしい。
この場合、OreStringContextとかOreStringDataとか
いうクラス名にするか、
コンストラクターでOreStringを適切な初期状態にする。
0444デフォルトの名無しさん
2013/06/30(日) 11:00:32.030445デフォルトの名無しさん
2013/06/30(日) 11:02:43.78ジャバドカタは本当に頭が悪いな。
0446デフォルトの名無しさん
2013/06/30(日) 11:06:29.48・逃げる
・説明する
・SAVE
0447デフォルトの名無しさん
2013/06/30(日) 11:08:53.550448デフォルトの名無しさん
2013/06/30(日) 11:25:27.19例外は「やりたいことが最後まできちんとできた」か
「やるべきことが全うできなかった」の二つしかない。
後者はcatchハンドラでまとめてエラー処理する。
極めて論理的じゃないか。
0449デフォルトの名無しさん
2013/06/30(日) 11:33:48.08スキルアウトの親戚?
0450デフォルトの名無しさん
2013/06/30(日) 11:39:39.18インスタンスの構築とデータの読み込みは論理的に別の処理だからコードの上でも分けて欲しい
0451デフォルトの名無しさん
2013/06/30(日) 11:42:50.37それはクラスを「処理をするためのデータの集合」
としかとらえられない老害の発想だよ
>449
精液を放出することです
0452デフォルトの名無しさん
2013/06/30(日) 11:54:24.81try-catchで囲まれた処理が
( A, B, C, ......, J )
と構成されている
やりたいことが最後まできちんとできたなら、全てのA-Jは成功している
やるべきことが全うできなかった場合を
NOT( A, B, C, ......, J )
とすると、君ならA-Jのどれが問題となる処理なのかをどう決定するか
そしてそれをcatchに書くことに気持ち悪さはないのか
途中でやめ!で済まされるほど簡単な処理で構成されてるとは限らないんだよ
0453デフォルトの名無しさん
2013/06/30(日) 12:03:53.36>A-Jのどれが問題となる処理なのかをどう決定するか
別のエラー処理をしたいなら
A-Jごとにtry-catchすべき
0454デフォルトの名無しさん
2013/06/30(日) 12:15:13.20あんま場合分けはいらないけどね。
tryだけ書いてcatchは書かないとかよくやる。
0455デフォルトの名無しさん
2013/06/30(日) 12:49:01.530456デフォルトの名無しさん
2013/06/30(日) 12:55:52.91ドカタは例外を理解できないのでだめ。
↓ こんな感じ
X x = new X();
try {
x.init(sutoriimu);
} catch (Exception ex) {//catchしないとコンパイルエラー
log.error(ex);
}
0457デフォルトの名無しさん
2013/06/30(日) 12:56:42.050458デフォルトの名無しさん
2013/06/30(日) 13:10:00.67ファイルふたつに分けなきゃならんのはめんどくさい
0459デフォルトの名無しさん
2013/06/30(日) 13:34:19.390460デフォルトの名無しさん
2013/06/30(日) 15:37:48.80static { } イニシャライザ内に書いて欲しくないよなー
リソース読み込みなら、まあ譲歩してもいいんだけどさー。
0461デフォルトの名無しさん
2013/06/30(日) 18:29:51.29インスタンス名、クラス名、メソッド名は簡略化して短くすることは推奨されていませんよ。
ましてや、インスタンス名はクラス名より短くする必要はないと公式に書いているよ。
もう少しよく使われているオープンソースであったりを読んだ方がいいと思います。
上げられたコードでもっというなれば、
getAllRecords()ではなくて
getRecordsAll()ですね〜。
確かに細かいことかもしれないけれど、デザイパターン等しっかり学んでいる人から見ると
「インスタンス名、クラス名、メソッド名等の暗黙の了解・空気」等を感じ取れていないコードは稚拙に見えるのではないかな。
そしてそんなに難しく考えなくても、英語の強みをいかせるように書けばすんなり型にはめられますよ。
例えば、「getAllRecords()」は動詞と目的語が遠いですよね?
今回はたった三つの語の組み合わせなので大したこと無いように感じますが、後ろから修飾していないことに違和感を感じる人は多いと思いますよ。
日本語は頭でっかちに書いた方が美しいですが、英語だと・・・?
0462デフォルトの名無しさん
2013/06/30(日) 18:31:12.65連投失礼しました。
0463デフォルトの名無しさん
2013/06/30(日) 19:47:32.410464デフォルトの名無しさん
2013/06/30(日) 19:48:40.12経験的に数学出来ないタイプの人間が多い
0465461
2013/06/30(日) 19:52:11.80ここで入手できるJavaSE6のtutorialの、
[Language Basics]→[Variables]→[Naming]では次のように書かれています。
"When choosing a name for your variables, use full words instead of cryptic abbreviations."
続けて読み進めると、
[Classes and Objects]→[Classes]→[Declaring Member Variables]→[Variable Names]では、
"All variables, whether they are fields, local variables, or parameters, follow the same naming rules ...(略)"
と、さらに念押ししてわざわざ最初で触れた[Naming]の項まで飛べるようにまでなっています。
次に、[Defining Methods]→[Naming a Method]では
"By convention, method names should be a verb in lowercase or a multi-word name that begins with a verb in lowercase, followed by adjectives, nouns, etc."
となっており、先ほどの「getRecordsAll()」に「おや?」っと感じた人はいるかも。
で、この辺りが読むべき空気であると思います。(ttp://www.oracle.com/technetwork/java/javasebusiness/downloads/java-archive-downloads-tutorials-419421.html
あと、例えばA,B,Cのシーンクラスがあったとしたら、
SceneA
SceneB
SceneC
のようにA,B,Cを後ろに書くことでOS等がもつ名前順に並び替える機能を活かせます。
もっというと、それぞれがSceneクラスを継承したものであったら、名前順に並び替えるとsuperであるSceneクラスが一番上に来て最高です。
ソースコードが綺麗な人は当たり前のようにやっていたりいなかったり。。。
何はともあれ、ネーミングを短くしちゃう行為は公式で推奨されていませんよ。(しかも言語の基礎としてそれが書かれている・・。)
>>464 タイムリーなレスサンクス。勿論ローカル変数に関してもです。
0466デフォルトの名無しさん
2013/06/30(日) 19:52:47.27ググり方が悪いのか?
0467デフォルトの名無しさん
2013/06/30(日) 19:58:12.68特にjavaは各方面からボコボコに叩かれるぐらい洗練されてない言語
当然公式が間違えるのは前提として考えるべき
0468デフォルトの名無しさん
2013/06/30(日) 19:59:36.870469デフォルトの名無しさん
2013/06/30(日) 20:05:12.08それは後ろにAll置くなら単数系のが合うからかと。証拠にググると皆無ではないよ。
それでも少ないのはプログラムの処理より普段使われている慣用句的に名付けてる人が多いから。
プログラムの意味的にはAllが後ろで単数系のほうがニュアンスとして正しいのでは?
0470デフォルトの名無しさん
2013/06/30(日) 20:17:26.52なぜJPanelはlまでしっかり書いてるのにgetContentPane()はlを省略しちゃったのさ!って
後ほどpane自体で別の意味があることを知りなるほどと思った
0471デフォルトの名無しさん
2013/06/30(日) 20:25:02.10そんなの考えるまでもなく一瞬で理解できるだろ…w
0472デフォルトの名無しさん
2013/06/30(日) 20:44:30.180473デフォルトの名無しさん
2013/06/30(日) 21:03:48.12英単語自信あったのにpaneなんて単語にこれまで出会わなかった
eclipseかbeans使ってりゃ冗長でも苦だとは感じないかな
オートコンプリートあるし
WIN32APIのような引数なら長い方が俺はましに感じる
0474デフォルトの名無しさん
2013/06/30(日) 21:06:13.45どれだけ自惚れが激しいんだ
0475デフォルトの名無しさん
2013/06/30(日) 21:16:29.850476デフォルトの名無しさん
2013/06/30(日) 21:25:13.97長い識別子かかなきゃわからないならそれは悪いコードになっている証拠
0477デフォルトの名無しさん
2013/06/30(日) 21:48:50.90名をごまかし人目を避けることで何やってるかわからないようにしてごまかす
昨今のオープンソースやJavaの特性とは真逆
反抗したい精神・素直になれない精神はもはや中二病の延長ですまされるかなあ
0478デフォルトの名無しさん
2013/06/30(日) 22:09:39.61おながいします
0479デフォルトの名無しさん
2013/06/30(日) 22:11:50.85なじぇ?
0480デフォルトの名無しさん
2013/06/30(日) 22:27:22.75神聖なるJavaを汚すと罰があたるぞ!
0481デフォルトの名無しさん
2013/06/30(日) 22:29:33.91だが1996年頃はそんな奴が結構居た
0482デフォルトの名無しさん
2013/06/30(日) 22:45:55.230483デフォルトの名無しさん
2013/06/30(日) 23:21:17.27CLASSPATH理解してなかったりするやついるくらいだから、まずはIDE使わない方が勉強にはなるんじゃないか。Javaのどこを勉強するかにもよるけど。
0484デフォルトの名無しさん
2013/06/30(日) 23:22:46.96Java1.2くらいまでは、おもちゃ扱いじゃなかった?
0485デフォルトの名無しさん
2013/06/30(日) 23:36:57.830486デフォルトの名無しさん
2013/06/30(日) 23:53:25.85ドカタの過半数はclasspathを理解してないんだから
無問題
0487デフォルトの名無しさん
2013/07/01(月) NY:AN:NY.ANcntじゃないんだ
0488デフォルトの名無しさん
2013/07/01(月) NY:AN:NY.AN0489デフォルトの名無しさん
2013/07/01(月) NY:AN:NY.ANドカタ目指すなら勉強は不要だろ。
0490デフォルトの名無しさん
2013/07/01(月) NY:AN:NY.AN0491デフォルトの名無しさん
2013/07/01(月) NY:AN:NY.AN0492デフォルトの名無しさん
2013/07/01(月) NY:AN:NY.AN0493デフォルトの名無しさん
2013/07/01(月) NY:AN:NY.AN0494デフォルトの名無しさん
2013/07/01(月) NY:AN:NY.ANそうだな、あとはv1,v2...と二文字にするべきだな。
0495デフォルトの名無しさん
2013/07/01(月) NY:AN:NY.ANstruts使ったまではいいが、MVCの分離が
理解できなかった典型例
0496デフォルトの名無しさん
2013/07/01(月) NY:AN:NY.ANffmpegだと遅いのでこれ以外でお願いします
0497デフォルトの名無しさん
2013/07/01(月) NY:AN:NY.AN0498デフォルトの名無しさん
2013/07/01(月) NY:AN:NY.AN例えば
String line = "go kyoto";
String verb = line.split(" ")[0];
String place = line.split(" ")[1];
のような場合は問題ないと思いますが、lineがsplitできる保証がないときの判定法が知りたいです。
例えばもしline="go";だった場合、
ArrayIndexOutOfBoundsExceptionがでます。
(スペース" "は無いけれど[0]のsplitはできている?どちらにせよsplitできないと[1]を指定した時点で例外でますよね。)
0499デフォルトの名無しさん
2013/07/01(月) NY:AN:NY.ANエンコすれ行ってきます
0500デフォルトの名無しさん
2013/07/01(月) NY:AN:NY.ANsplitが何を返すか見直してこい
0501デフォルトの名無しさん
2013/07/01(月) NY:AN:NY.ANString [ ] result = line.split(" ");
してから
result.lengthで判定だ。
0502デフォルトの名無しさん
2013/07/01(月) NY:AN:NY.ANぶっちゃげRailsももはやドカタフレームワークだけど。
0503デフォルトの名無しさん
2013/07/01(月) NY:AN:NY.ANStringTokenizerを使う
StringTokenizer st = new StringTokenizer(line, " ");
if (st.countTokens()>=2) {//分割できる
String verb = st.nextToken();
String place = st.nextToken();
}
0504デフォルトの名無しさん
2013/07/01(月) NY:AN:NY.ANいちいちオブジェクト作るなよ
0505デフォルトの名無しさん
2013/07/01(月) NY:AN:NY.AN0506デフォルトの名無しさん
2013/07/01(月) NY:AN:NY.AN事前検索してからの分割はコスト的にどうなのだろうか
0507デフォルトの名無しさん
2013/07/01(月) NY:AN:NY.ANパフォーマンスなんか土方には理解出来ない
cを使えるようになってからパフォーマンスとか気にすればおけ
0508デフォルトの名無しさん
2013/07/02(火) NY:AN:NY.AN細かいことはどうでもいいのよ
0509デフォルトの名無しさん
2013/07/02(火) NY:AN:NY.ANブラウザを終了して続行しろと出て、全く先に進めません。
ブラウザは全部閉じています。
検索して調べたけど、「\x2022 Windows Internet Explorer」
について全然でてこなくてわかりません。
どうすればいいのですか?
環境はWIN7、IE10です。
0510509
2013/07/02(火) NY:AN:NY.ANアップデートが上手くいかないのです。
0511509
2013/07/02(火) NY:AN:NY.ANブラウザを閉じろの繰返しだったのですが、先程すんなりと完了できました・・・。
設定など一切変更していないので、何が原因だったかわかりませんが
とりあえず完了できたので、お騒がせしてすみませんでした。
0512デフォルトの名無しさん
2013/07/02(火) NY:AN:NY.AN残念な奴だな
0513デフォルトの名無しさん
2013/07/02(火) NY:AN:NY.AN0514デフォルトの名無しさん
2013/07/02(火) NY:AN:NY.AN0515デフォルトの名無しさん
2013/07/02(火) NY:AN:NY.AN何が悪いのこれ?
0516デフォルトの名無しさん
2013/07/02(火) NY:AN:NY.ANCジジイの頭が悪い
0517デフォルトの名無しさん
2013/07/02(火) NY:AN:NY.AN0518デフォルトの名無しさん
2013/07/02(火) NY:AN:NY.ANググってもフリーソフトしか見つかりません
0519デフォルトの名無しさん
2013/07/02(火) NY:AN:NY.ANそして初めての言語がオブジェクト指向な方が得に決まっている
0520デフォルトの名無しさん
2013/07/02(火) NY:AN:NY.ANffmpeg
0521デフォルトの名無しさん
2013/07/02(火) NY:AN:NY.ANちょっと見てみたけど遅いです
直接吸出しできるのってないですか?
0522デフォルトの名無しさん
2013/07/02(火) NY:AN:NY.ANまず、直接吸い出せるツールを見つけてこい
0523デフォルトの名無しさん
2013/07/02(火) NY:AN:NY.AN0524デフォルトの名無しさん
2013/07/02(火) NY:AN:NY.ANまず正しく質問できるだけの知識をつけてこい
0525デフォルトの名無しさん
2013/07/02(火) NY:AN:NY.ANffmpegで設定変えたら速くなりました
ありがとうございました
0526デフォルトの名無しさん
2013/07/02(火) NY:AN:NY.AN業務用で住民基本大腸カードを扱うなら
LASDECから入手が必用(C++)。
SuicaならたぶんC++向けAPIは提供されているだろう。
SmartOnなどの特定製品もSDKが販売されているだろう(たぶんc++)。
つまりお前のスキルでは無理。
それ以外のカードは無理ゲーに近いけど
意外とAndroidで探した方が行けるかも
0527デフォルトの名無しさん
2013/07/02(火) NY:AN:NY.AN0528デフォルトの名無しさん
2013/07/02(火) NY:AN:NY.AN何のICカードかにもよるが、個人で開発できるよ。
0529デフォルトの名無しさん
2013/07/02(火) NY:AN:NY.AN0530デフォルトの名無しさん
2013/07/02(火) NY:AN:NY.AN正式な仕様は非公開だよ
0531デフォルトの名無しさん
2013/07/02(火) NY:AN:NY.ANSDK買っても暗号化領域は読めないだろうし、そもそも書き込めない場合が多いだろう。
その意味では、法人でSDKを買っても仕様が全て公開されるわけではない。
逆に、個人でも見ることができる範囲でデータを読むことは出来る。
0532デフォルトの名無しさん
2013/07/03(水) NY:AN:NY.AN「ICカードを扱う無料ライブラリありますか?」
って質問なんだから、仕様が公開とか非公開とか関係ない
ライブラリがあるのかないのか答えろよ
0533デフォルトの名無しさん
2013/07/03(水) NY:AN:NY.ANググれ馬鹿
0534デフォルトの名無しさん
2013/07/03(水) NY:AN:NY.ANWindowsで無料で最短の開発環境を教えて下さい
0535デフォルトの名無しさん
2013/07/03(水) NY:AN:NY.AN0536デフォルトの名無しさん
2013/07/03(水) NY:AN:NY.AN0537デフォルトの名無しさん
2013/07/03(水) NY:AN:NY.ANeclipseでC++でいう .cpp と main関数はどう作れば良い?
0538デフォルトの名無しさん
2013/07/03(水) NY:AN:NY.AN0539デフォルトの名無しさん
2013/07/03(水) NY:AN:NY.ANその中にパッケージを作って
その中にmainって名前のクラスを作るところまでは分かったけど
そこからが分からない
main関数を作っただけじゃ実行出来ないの?
選択にはメイン型が含まれていません
ってエラーが出る
0540デフォルトの名無しさん
2013/07/03(水) NY:AN:NY.AN実行できるよ
0541デフォルトの名無しさん
2013/07/03(水) NY:AN:NY.AN自己解決した
付き合わせてすまない
0542デフォルトの名無しさん
2013/07/03(水) NY:AN:NY.AN0543デフォルトの名無しさん
2013/07/03(水) NY:AN:NY.AN大量のクラスメンバに対する大量のgetterメソッドを作るのが無駄な気がするので・・・
みなさんどのように対応していますか?
0544デフォルトの名無しさん
2013/07/03(水) NY:AN:NY.AN手打ちしなければ全く気にならない
0545デフォルトの名無しさん
2013/07/03(水) NY:AN:NY.AN0546デフォルトの名無しさん
2013/07/03(水) NY:AN:NY.AN使ったこと無いけど
0547デフォルトの名無しさん
2013/07/03(水) NY:AN:NY.AN0548デフォルトの名無しさん
2013/07/03(水) NY:AN:NY.AN0549デフォルトの名無しさん
2013/07/03(水) NY:AN:NY.ANイミュータブルなオブジェクトを使うとか
防御的コピーするとかしろ
0550デフォルトの名無しさん
2013/07/04(木) NY:AN:NY.AN毎日レコードが追加されるテーブルがあります
このテーブルを最新の半年分の情報とそれ以前の情報で別のテーブルに分けて管理する設計って悪い設計ですか?
新しい情報と古い情報は同じサーバーにあり格納するテーブルだけが違います
アクセスは新しい情報に集中します
0551デフォルトの名無しさん
2013/07/04(木) NY:AN:NY.ANあまり良い設計だとは思わないけど、実物見ないと何とも言えない。
アプリの形態はWeb? DBMSは何? 一日に何レコード追加されるの? 1レコードあたり、およびトータルのデータ量は?
たぶん、適切なインデックスを張るとか、最近のデータだけmemcachedするとか、工夫の余地は色々あると思う。
あと、Javaよりもデータベースのスレで聞いた方かいいような。
0552デフォルトの名無しさん
2013/07/04(木) NY:AN:NY.ANを投げるのか解らないと誰もアドバイス出来ないと思う。
ただし一般論としては、そういうテーブル分割を手作りすると古いレコードの移動とか
それに伴いアプリ側で生成するクエリを変更するとか、運用面で余計な手間やバグの
温床を抱えることが多い。RDBMSに詳しくない人が思いつきレベルで分けたのであれば
率直に言ってあまり関わりたくない、そういう設計。
まずはインデックスでどうにかならないか、あるいはシャーディングなどと呼ばれる
機能が使えないか調べることをお薦めする。
0553デフォルトの名無しさん
2013/07/04(木) NY:AN:NY.AN世の中にはOracleパーティショニングというものがあってだな
つまり性能上テーブルは分けるけど概念的には同一
というのは普通にあると言うことだ
0554デフォルトの名無しさん
2013/07/04(木) NY:AN:NY.ANRDB論的には間違ってる(ことが大半だと思う)。んだけどもじゃあ絶対そんな実装しないかというとそんなこともない。
実際そういうの作ったことあるし、よく見かけもするねー。
理由はパフォーマンスだったり運用上やら他のシステムとの兼ね合いやら。
要は状況次第ってことなんであまり回答になってないんだけど。
0555デフォルトの名無しさん
2013/07/04(木) NY:AN:NY.ANトランザクションデータの場合、年あるいは月によるパーティショニングか、
「直近のテーブル+それ以前のアーカイブテーブル」という構造にすることは良くある。
0556デフォルトの名無しさん
2013/07/04(木) NY:AN:NY.ANどういう設計をすればいいのでしょうか
イメージ的にはenumを定義しないとコンパイルエラーになるようにしたい
そしてenumの中身は継承先々で用意したいが、名は統一したい
0557デフォルトの名無しさん
2013/07/04(木) NY:AN:NY.AN継承先に決めさせたい場合は普通にGenericsを使うかなぁ。
public abstract class AbstractSample<E extends Enum<E>> {
public abstract void sampleMethod(E item);
protected abstract Class<E> getEnumClass();
public void sampleMethod(String name){
sampleMethod(Enum.valueOf(getEnumClass(), name));
}
public class Sample extends AbstractSample<Sample.MyEnum>{
public enum MyEnum{enum1, enum2, enum3}
@Override protected Class<MyEnum> getEnumClass() {return MyEnum.class;}
@Override public void sampleMethod(MyEnum item) {...
getEnumClassは任意だけれども上記のようにString版のメソッドの実装も抽象
クラスで与えたいときなど便利。
> そしてenumの中身は継承先々で用意したいが、名は統一したい
「名は統一したい」というのがSample.MyEnumのように継承クラスでは必ず
MyEnumというenumクラスを内部クラスとして宣言する、ということを強制する
という意味なら多分無理。
0558デフォルトの名無しさん
2013/07/04(木) NY:AN:NY.ANabstractクラスのAクラスを継承したBクラス・Cクラス・・・内で
private enum Foo {
}
を定義していないとコンパイルエラーにしたい(可能なら)というのと、
「名は統一したい」というのは、Fooという名を統一して中身を各クラスで別に用意したいという意味です。
Bクラスでは
private enum Foo {
BAR, BAZ
}
Cクラスでは
private enum Foo {
QUX, QUUX, CORGE
}
というようにです。普通こういう場合、単なるメソッドならばsuperクラスのAクラスで
abstract protected void foo();
として、継承先で
@Override
private void foo() {
}
ですみますが、
abstract protected enum Foo;
なんていうのは許されませんよね?
となると、「Bクラス・Cクラス・・・でFooという名のenumを自分で定義する」というプログラムから離れた所にルールが生まれてしまいすこし嫌です(名がFooである保証がない?)。
可能ならば、このFooというenumをもたなくてはいけないことをsuperクラスで定義できないのかなと思って質問しました。
0559デフォルトの名無しさん
2013/07/04(木) NY:AN:NY.ANenumは1つのファイルで作って使う値を全部列挙して
具象クラスでその値を使う時に無効な値をはじくようにしておけば?
public enum Foo {
BAR, BAZ, //Bクラスで有効
QUX, QUUX, CORGE, //Cクラスで有効
}
abstract class A {
abstract public boolean isValid(Foo item);
}
0560デフォルトの名無しさん
2013/07/04(木) NY:AN:NY.ANそうなんです。そしてそう書いてました。
だけど、Cクラスで使うときにBクラスでしか使わないBAR,BAZが可視なのを何とかならないかなとおもいました
0561デフォルトの名無しさん
2013/07/04(木) NY:AN:NY.ANtwitterがそんな感じの設計をしてるね
適当にぐぐって見つけた記事
http://www.atmarkit.co.jp/news/201004/19/twitter.html
0562デフォルトの名無しさん
2013/07/04(木) NY:AN:NY.AN手間暇増えるだけだったり。
インデックス設計の評価やDBMS組み込みのパーティショニングを検討するに一票。
0563デフォルトの名無しさん
2013/07/04(木) NY:AN:NY.ANJPAが対応したら面白いがOracleさん的には困るか
0564デフォルトの名無しさん
2013/07/04(木) NY:AN:NY.ANそれは水平分割って技法。DB設計ではアンチパターンに含まれる。
レプリケーションやインデックス、その他もろもろ全ての「正しい」解決法を試して
それでもパフォーマンスの問題が解決しなかった場合のみ使って良いというもの。
0565デフォルトの名無しさん
2013/07/04(木) NY:AN:NY.AN0566デフォルトの名無しさん
2013/07/04(木) NY:AN:NY.ANJavaの話題あんの?ないんだったら黙ってろよ。
0567デフォルトの名無しさん
2013/07/04(木) NY:AN:NY.AN何言ってるんだ。
パーティショニングこそ水平分割だろうが。
それに、レプリケーションなんか関係ないし。
0568デフォルトの名無しさん
2013/07/04(木) NY:AN:NY.ANどんなアドバイスも的はずれな可能性大なんだけど。
0569デフォルトの名無しさん
2013/07/04(木) NY:AN:NY.AN満場一致で悪い設計です と答えて終わりじゃないか
0570デフォルトの名無しさん
2013/07/04(木) NY:AN:NY.ANさすがコミュ障
0571デフォルトの名無しさん
2013/07/05(金) NY:AN:NY.AN0572デフォルトの名無しさん
2013/07/05(金) NY:AN:NY.ANデザパタ的にあまりおもしろい設計はできない。
他のDBライブラリはしらん
0573デフォルトの名無しさん
2013/07/05(金) NY:AN:NY.ANまたてけと〜なことを。
0574デフォルトの名無しさん
2013/07/05(金) NY:AN:NY.ANクエリとデータを右から左、左から右へ流すだけ
0575デフォルトの名無しさん
2013/07/05(金) NY:AN:NY.AN0576デフォルトの名無しさん
2013/07/05(金) NY:AN:NY.ANJDBC発表にワクテカしてたのは俺だけか。
SQL文を文字列で用意する必要があると聞いてがっかりしたず
「Table」に相当する抽象クラスがJDBCに出てこないってどういうことよ
0577デフォルトの名無しさん
2013/07/05(金) NY:AN:NY.ANそれリレーショナルなん?
0578デフォルトの名無しさん
2013/07/05(金) NY:AN:NY.AN0579デフォルトの名無しさん
2013/07/05(金) NY:AN:NY.ANwrite once run everywhereで売ってたような
0580デフォルトの名無しさん
2013/07/05(金) NY:AN:NY.ANO/Rマッピングすればいいだけだろ
0581デフォルトの名無しさん
2013/07/06(土) NY:AN:NY.AN言ってること目茶苦茶すぎ
>>574が言ってるように、受け流すだけを担ってこそオブジェクト指向だ
おめぇさんはよぉ、銭湯いって風呂上がりのフルーツ牛乳が見当たらないからって
キレちゃうような輩なのか?
俺はきれるけどね
0582デフォルトの名無しさん
2013/07/06(土) NY:AN:NY.AN0583デフォルトの名無しさん
2013/07/06(土) NY:AN:NY.ANコレクションだけらしいしViewのためだけにあるのだろうけど
0584デフォルトの名無しさん
2013/07/06(土) NY:AN:NY.AN0585デフォルトの名無しさん
2013/07/06(土) NY:AN:NY.ANpublic abstract class AbstractJInternalFrame extends JInternalFrame
{
private int x, y;
private int width, height;
private String title;
public AbstractWindow(int x, int y, int width, int height, String title, boolean resizable, boolean closable, boolean maximizable, boolean iconifiable)
{
super(title, resizable, closable, maximizable, iconifiable);
this.x = x;
this.y = y;
this.width = width;
this.height = height;
this.title = title;
}
public void resetPerspective()
{
System.out.println("Reset Perspective: " + title);
setBounds(x, y, width, height);
show();
}
// 以下フィールドのgetterのみ
}
みたいな設計が本当に便利に感じる。eclipseのReset Perspectiveの簡易版みたいな感じ。
iframes = new HashMap<String, AbstractJInternalFrame>(); あたりでまとめてたとすると、ActionListenr等で
for(Map.Entry<String, AbstractJInternalFrame> f : iframes.entrySet()) f.getValue().resetPerspective();
継承先でsetLocation(int, int)等で好き勝手できるけど初期値は断固としてsuperが守ってるみたいなイメージ。
0586デフォルトの名無しさん
2013/07/06(土) NY:AN:NY.AN他の全員は知ってるから粉みかんは3行以内で頼む
0587デフォルトの名無しさん
2013/07/06(土) NY:AN:NY.AN0588デフォルトの名無しさん
2013/07/06(土) NY:AN:NY.AN0589デフォルトの名無しさん
2013/07/06(土) NY:AN:NY.ANってことに気づいているのだろうか
クラスも使えないとなると設計がうまい下手の段階までいけない件について…
0590デフォルトの名無しさん
2013/07/06(土) NY:AN:NY.AN抽象クラスなんてテンプレート実装作るだけの道具にすぎない
多態はインターフェイスが基本で、抽象クラスは必須ではない
0591デフォルトの名無しさん
2013/07/06(土) NY:AN:NY.ANインターフェースの無い言語はOOPではない
と言いかねないJAVAドカタの珍説には
いつも驚かされます
0592デフォルトの名無しさん
2013/07/06(土) NY:AN:NY.AN同じ奴が繰り返してるのか?
0593デフォルトの名無しさん
2013/07/06(土) NY:AN:NY.ANそもそも公式がうたってますし
だけどいつも何でもかんでもインターフェースにしちゃうのは大反対
特に、extendsできなくなるのは場合によっては保守性が上がる
でもって、インターフェースが一番活きるのはこの時なんだよね〜仕様的にも。
0594デフォルトの名無しさん
2013/07/06(土) NY:AN:NY.AN抽象クラスと何も変わらなくなるよ
0595デフォルトの名無しさん
2013/07/06(土) NY:AN:NY.AN0596デフォルトの名無しさん
2013/07/06(土) NY:AN:NY.AN抽象メソッドはprotectedにするもんだ
インターフェイスじゃできない
0597デフォルトの名無しさん
2013/07/06(土) NY:AN:NY.AN0598デフォルトの名無しさん
2013/07/06(土) NY:AN:NY.AN先の「抽象クラス使うやつは…」のくだりと同じで極論すぎるよ
そしてprotectedがレアケースだとも思わないなぁ
それはニアリイコール抽象クラスをレアケースといっているようなもんだし…
0599デフォルトの名無しさん
2013/07/06(土) NY:AN:NY.ANMS系だとそれこそ仮想メソッドはほとんど全部protectedだったりするが
Javaってそのへん適当だよね
0600デフォルトの名無しさん
2013/07/06(土) NY:AN:NY.ANそれはちょっとどうなんだろう
interfaceだと子クラスに丸投げだよね?
0601デフォルトの名無しさん
2013/07/06(土) NY:AN:NY.ANテンプレートは使う側ならprivateでなんも問題ないな。
仕様の方ならインターフェースで十分っつかpublicにしないと不便極まりないし。
0602デフォルトの名無しさん
2013/07/06(土) NY:AN:NY.AN>privateでなんも問題ない
privateはオーバーライドできません
>インターフェイスで十分
デザパタ知らないの? 移譲を使った設計と混同してるのでは?
0603デフォルトの名無しさん
2013/07/06(土) NY:AN:NY.ANそれらを呼び出す形で固定化できる部分に切り分けるのがテンプレートメソッドパターンなわけで。
固定化してる方はオーバーライドする必要が全く無いから、
外部からアクセスする必要がないならprivateで何の問題も無い。
0604デフォルトの名無しさん
2013/07/06(土) NY:AN:NY.AN0605デフォルトの名無しさん
2013/07/06(土) NY:AN:NY.ANinterfaceだけにしろ、protectedだけにしろ、privateだけにしろ…
何も考えていない証拠だ
0606デフォルトの名無しさん
2013/07/06(土) NY:AN:NY.ANprotectedメソッドを実装するだけだと副作用が無くて安全にも感じる
ディスパッチ目的の抽象クラスだと実装がやたら手続き型でも気にならない
0607デフォルトの名無しさん
2013/07/06(土) NY:AN:NY.ANイミフ
>ディスパッチ目的の抽象クラス
イミフ
0608デフォルトの名無しさん
2013/07/06(土) NY:AN:NY.AN抽象クラスも使うかな。両方使わないと不便。
APIに立ち現れるのはインターフェイスだけで実装クラスは基本隠す。
0609デフォルトの名無しさん
2013/07/06(土) NY:AN:NY.AN0610デフォルトの名無しさん
2013/07/06(土) NY:AN:NY.ANだったりするからな。ある方策に従わせるための抽象クラス
0611デフォルトの名無しさん
2013/07/06(土) NY:AN:NY.AN設計がKUSOなだけじゃね?
0612デフォルトの名無しさん
2013/07/06(土) NY:AN:NY.AN0613デフォルトの名無しさん
2013/07/06(土) NY:AN:NY.AN分ける意味ねーもん
将来的に使いたいとしてもその将来っていつ来るの?って話
0614デフォルトの名無しさん
2013/07/06(土) NY:AN:NY.AN↑抽象でないクラスに分離してメンバに持たせるのが正解
0615デフォルトの名無しさん
2013/07/07(日) NY:AN:NY.AN例え一個でもわけた方がいい場合は間違いなくあるよ
だがabstractクラスはサブクラス沢山抱えたときにまとめて扱うのがいいよな
0616デフォルトの名無しさん
2013/07/07(日) NY:AN:NY.ANみたいな構造のデザインパターンを経験しないと
メソッドにつけるfinalの有り難みが勉強できないんじゃないかなとは思う
0617デフォルトの名無しさん
2013/07/07(日) NY:AN:NY.AN0618デフォルトの名無しさん
2013/07/07(日) NY:AN:NY.AN二度といじらないコードを抽象化するのは無意味だ
工期、予算の都合で今はしないけど次のサイクルでこれこれやる
ってくらい確実にわかっていなければ抽象化する必要はない
抽象化しなかった場所に修正が入るってなら設計上のミスだ
かむしろマネージャーの開発スケジュールミスだ
0619デフォルトの名無しさん
2013/07/07(日) NY:AN:NY.AN0620デフォルトの名無しさん
2013/07/07(日) NY:AN:NY.ANんなこたーない。
現在の機能要件と拡張性要件に基づいて
設計するだけ。
0621デフォルトの名無しさん
2013/07/07(日) NY:AN:NY.AN未来は神様にも予言できないんだよ
0622デフォルトの名無しさん
2013/07/07(日) NY:AN:NY.AN0623デフォルトの名無しさん
2013/07/07(日) NY:AN:NY.ANあとは、縦割り部署のインターフェースとか、、、
昔、DB部門が作ったインターフェースで、笑えないヤツがあったのを思い出した
テーブルの指定がひとつだけで、結合が全く出来ないという
0624デフォルトの名無しさん
2013/07/07(日) NY:AN:NY.AN0625デフォルトの名無しさん
2013/07/07(日) NY:AN:NY.ANシャブみたいなもんだよ
0626デフォルトの名無しさん
2013/07/07(日) NY:AN:NY.AN通常のオブジェクト指向でもそうだが、ふたつのクラスの相互作用を表す方法に苦慮する
クラス(A+B)を作るのは負けかなって思ってる
0627デフォルトの名無しさん
2013/07/07(日) NY:AN:NY.AN複雑ならプロトコルをクラスにする
通信対象の選択自体が複雑ならルーティングもクラスとして作る
面倒だが基本中の基本だろ
0628デフォルトの名無しさん
2013/07/07(日) NY:AN:NY.AN0629デフォルトの名無しさん
2013/07/07(日) NY:AN:NY.ANそこでLINQですよ
C#の劣化版猿真似は得意だろ?
0630デフォルトの名無しさん
2013/07/07(日) NY:AN:NY.AN最悪だろ
土方に正確なオーバライドは無理
0631デフォルトの名無しさん
2013/07/07(日) NY:AN:NY.AN無駄な通信が発生するのは同じだろ
0632デフォルトの名無しさん
2013/07/08(月) NY:AN:NY.ANまともな設計ならLINQはあくまでモデルの中で使うので同じことですよ
0633デフォルトの名無しさん
2013/07/08(月) NY:AN:NY.AN0634デフォルトの名無しさん
2013/07/08(月) NY:AN:NY.AN実行(Ctrl + F11)のときは文字列を出力させず、デバッグ実行(F11)のときだけ文字列を出力したいです。
プログラムの中でデバッグ実行かどうか判別すればいいと思うのですが、
System.getProperties() で確認したところ、デバッグ実行のときだけセットされるプロパティは無さそうでした。
何かいい方法ありませんか?
0635デフォルトの名無しさん
2013/07/08(月) NY:AN:NY.AN0636デフォルトの名無しさん
2013/07/08(月) NY:AN:NY.AN0637デフォルトの名無しさん
2013/07/08(月) NY:AN:NY.AN遅い端末だとデバッグ情報が見れるw
0638デフォルトの名無しさん
2013/07/08(月) NY:AN:NY.ANデバッグ実行時だけログ出力レベルをfineにすればいい
普通はlog4jだろうが俺はしらん
0639634
2013/07/08(月) NY:AN:NY.AN頻繁に実行とデバッグ実行を切り替えたいため、
ソースコードや設定ファイルを変更することなくやりたいのです。
0640デフォルトの名無しさん
2013/07/08(月) NY:AN:NY.AN0641デフォルトの名無しさん
2013/07/08(月) NY:AN:NY.AN0642デフォルトの名無しさん
2013/07/08(月) NY:AN:NY.AN「現在デバッグ中」フラグが建つということでどうだ?
0643デフォルトの名無しさん
2013/07/09(火) NY:AN:NY.AN0644デフォルトの名無しさん
2013/07/09(火) NY:AN:NY.ANなぜInterfaceやスクラッチだと正確にできるの? どれでも正確にできないなら比較の問題。ベターなもので満たせないなら、受け入れテストしてない方が悪い。自分がサボってるのを土方のせいにするなよな。
0645デフォルトの名無しさん
2013/07/11(木) NY:AN:NY.ANテーブルアダプタやデータソースのことです
0646デフォルトの名無しさん
2013/07/11(木) NY:AN:NY.AN表形式でデータ見られたり、定義情報が見られたりするやつのこと?
0647デフォルトの名無しさん
2013/07/11(木) NY:AN:NY.ANデータベースへアクセスするためのクラスを自動で作ってくれる機能です
コードを一行も書かなくてもデータベースへのアクセスからフォームへのバインドまでしてくれるすごいやつです
0648デフォルトの名無しさん
2013/07/11(木) NY:AN:NY.ANその程度なら、なければ自作しろ。
俺はそんなの全然ほしくないが。
0649デフォルトの名無しさん
2013/07/12(金) NY:AN:NY.AN0650デフォルトの名無しさん
2013/07/12(金) NY:AN:NY.AN0651デフォルトの名無しさん
2013/07/12(金) NY:AN:NY.AN0652デフォルトの名無しさん
2013/07/12(金) NY:AN:NY.ANそいやJavaでクラサバとかしたことねーなぁ
0653デフォルトの名無しさん
2013/07/12(金) NY:AN:NY.ANえ
0654デフォルトの名無しさん
2013/07/13(土) NY:AN:NY.AN0655デフォルトの名無しさん
2013/07/13(土) NY:AN:NY.AN0656デフォルトの名無しさん
2013/07/13(土) NY:AN:NY.ANしたようなのが最近は多い。
実際に儲かるかはともかくとしてOracleを使った事例ってあまり若い人にアピール
しないというか、こういうシステムに関わってみたいという対象ではない気がする。
0657デフォルトの名無しさん
2013/07/13(土) NY:AN:NY.AN0658デフォルトの名無しさん
2013/07/13(土) NY:AN:NY.AN機能に隔たりがありすぎるその3つを同列に考えちゃうような「若い人」は、まぁロクな人間じゃないな
せいぜい使い捨ての歯車としてこき使われるのが関の山の人生しか待ってないだろう
0659デフォルトの名無しさん
2013/07/13(土) NY:AN:NY.ANRDMSしか使えません、データモデリングも関係データベース用のものしか知らない素人ですと白状してるようなもの
「ぼくオブジェクト指向しかできません。でも今はオブジェクト指向が流行ってるから困らないでしょ?
Cの構造化プログラミングも、関数プログラミングもできないけどそんなの流行ってないから問題ない」
って言ってるのと同じだぜ
0660デフォルトの名無しさん
2013/07/13(土) NY:AN:NY.AN皆メニーコア時代に備えていつ手を出そうかなみたいに
0661デフォルトの名無しさん
2013/07/13(土) NY:AN:NY.ANスケールでNoSQLの類を運用した経験もない件。
RDBの理論的理解がRDBの世界でしか役に立たないと思ったら大間違い。
0662デフォルトの名無しさん
2013/07/13(土) NY:AN:NY.ANmavenのセントラルリポジトリからactivemq-client.jar、activemq-broker.jarをインストール。
eclipseのビルドパスに通しましたが、パスが不完全というエラーが出ます。
javax.jms.*はドコから入手すれば良いのでしょうか?
なお、mavenによるcompileは通ります。
ソースは
https://sites.google.com/site/chobimemo/java/activemq
をコピペしています。
ビルドエラーは以下の2つ
javax.jms.TopicConnectionFactory を解決できません。必要な .class ファイルから間接的に参照されています
ビルド・パスが不完全であるため、プロジェクトはビルドされませんでした。javax.jms.TopicConnectionFactory のクラス・ファイルが見つかりません。ビルド・パスを修正してから、このプロジェクトをビルドしてください
0663デフォルトの名無しさん
2013/07/14(日) NY:AN:NY.AN>eclipseのビルドパスに通しましたが、パスが不完全というエラーが出ます。
ここで何をやったのかよく解らないけれども、原則としてActiveMQその他のjarファイルを
「手動で」ダウンロードしてコピってEclipse上でビルドパスを弄る必要は全く無い。
もしやったのであればまずjarを削除して弄った設定を元に戻すこと。
mvn compileが通るのであればorg.apache.activemq.activeme-coreをdependencyと
してpomに追加は出来ているのだと思う。
こんなの<dipendencies>以下に追加したよね?
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-core</artifactId>
<version>5.3.0</version>
</dependency>
であればあと必要なのはEclipseにMavenプラグインをインストールしてプロジェクトを
Mavenプロジェクトに変更すること。
Eclipse Marketplaceからm2eをインストールしてEclipseを再起動、問題のプロジェクト
を右クリックしてConfigure -> Convert to Maven projectを実行。
これでプロジェクトフォルダのアイコンの右上にMマークがついてプロジェクトフォルダ
の中にMaven dependenciesというのが現れれば成功。Eclipse上でコンパイルが通るはず。
もしMマークが現れるもMaven dependenciesが出てこない場合はEclipseプロジェクトの
古い設定が悪さをしている場合がある。この場合はプロジェクトをEclipseから一端削除
して(ファイルは削除しない)、プロジェクトディレクトリ内の.classpath、.settings、
.projectを削除、あとはEclipseのImport -> Maven -> Import existing Maven projects
でMavenプロジェクトとしてインポートし直せばOK。
0664デフォルトの名無しさん
2013/07/14(日) NY:AN:NY.ANいま構造化プログラミングやる必要ってある?
C言語書いてるとすごい苦痛なんだけど
0665デフォルトの名無しさん
2013/07/14(日) NY:AN:NY.ANオブジェクト指向なんかより遥かに重要な概念だろ
0666デフォルトの名無しさん
2013/07/14(日) NY:AN:NY.AN0667デフォルトの名無しさん
2013/07/14(日) NY:AN:NY.AN0668デフォルトの名無しさん
2013/07/14(日) NY:AN:NY.AN・gotoを使わずに、ifやforやwhileなどを適切に使う
・なるべく大域変数を使わずに、ローカル変数や引数や戻り値を適切に使う
・関数や構造体などを使って処理やデータを上手に抽象化する
ってことで、オブジェクト指向の基礎にもなってる。
C言語を使う=構造体プログラミング、ではないよ。
0669デフォルトの名無しさん
2013/07/14(日) NY:AN:NY.AN全面的に正しい
0670デフォルトの名無しさん
2013/07/14(日) NY:AN:NY.AN0671デフォルトの名無しさん
2013/07/14(日) NY:AN:NY.AN0672デフォルトの名無しさん
2013/07/14(日) NY:AN:NY.AN>>670は間違いでもない
0673デフォルトの名無しさん
2013/07/14(日) NY:AN:NY.ANローカル変数の有無は必然でもなんでもないのでわ
0674デフォルトの名無しさん
2013/07/14(日) NY:AN:NY.AN0675デフォルトの名無しさん
2013/07/14(日) NY:AN:NY.ANモジュール化は関連する処理やデータをまとめること。
カプセル化は、モジュールの内部情報をモジュールの外から勝手にいじられないようにすること。
0676デフォルトの名無しさん
2013/07/14(日) NY:AN:NY.AN0677デフォルトの名無しさん
2013/07/14(日) NY:AN:NY.ANニュウは時と場合によるが世界を滅ぼす事もできる
0678デフォルトの名無しさん
2013/07/14(日) NY:AN:NY.ANnewしたらコンストラクタが呼ばれるから、
malloc + 初期化処理がnewだと思うよ。
0679デフォルトの名無しさん
2013/07/14(日) NY:AN:NY.ANつまりC言語でもオブジェクト指向プログラミングはできるってとこですね
0680デフォルトの名無しさん
2013/07/14(日) NY:AN:NY.AN第一引数に目的オブジェクトのハンドラを渡す関数用意するだけ
普段からFILE構造体なんて中身知らずに使ってるだろうし
0681デフォルトの名無しさん
2013/07/14(日) NY:AN:NY.AN0682デフォルトの名無しさん
2013/07/14(日) NY:AN:NY.ANオブジェクト可能言語
0683デフォルトの名無しさん
2013/07/14(日) NY:AN:NY.AN0684デフォルトの名無しさん
2013/07/14(日) NY:AN:NY.AN0685デフォルトの名無しさん
2013/07/14(日) NY:AN:NY.AN0686デフォルトの名無しさん
2013/07/14(日) NY:AN:NY.AN海でぷかぷかやってるみたいっすよ。
Java Magazine 日本版 Vol.7 (2012年11月発行)
http://www.oracle.com/webfolder/technetwork/jp/javamagazine/index-07.html
0687デフォルトの名無しさん
2013/07/14(日) NY:AN:NY.AN日本人だったらなんか会社を追い出されたとかブツブツ言いながら死んでそうです。
0688デフォルトの名無しさん
2013/07/14(日) NY:AN:NY.AN使い古されたテクニックだよ
0689デフォルトの名無しさん
2013/07/14(日) NY:AN:NY.ANありがとうございます!
無事できました。
ご指摘の通り、手動でパスを通したのでj2ee関連のjarが足りなかったようです。
こんな感じでmvnコマンドでプロジェクト作ったのですが、eclipseからやった方が良いんですね。
mvn archetype:create -DgroupId=com.example -DartifactId=sample
0690デフォルトの名無しさん
2013/07/14(日) NY:AN:NY.AN上から下に流れるプログラミングしか読み書きできない奴のことを言っているのか? 同じようなコードがでてきたらまとめてるとか言うやつ。
そういうやつらが、わざわざJavaを使う意味がわからない。
0691デフォルトの名無しさん
2013/07/14(日) NY:AN:NY.AN>普段からFILE構造体なんて中身知らずに使ってるだろうし
それはオブジェクト指向じゃなくて
ただのカプセル化
0692デフォルトの名無しさん
2013/07/14(日) NY:AN:NY.ANfp.close() だったらオブジェクト指向って考える派?アホなの?
0693デフォルトの名無しさん
2013/07/14(日) NY:AN:NY.ANオブジェクト指向を美化しすぎだ
0694デフォルトの名無しさん
2013/07/14(日) NY:AN:NY.ANhttp://ja.wikipedia.org/wiki/%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E6%8C%87%E5%90%91
0695デフォルトの名無しさん
2013/07/14(日) NY:AN:NY.ANなんたって現代のCOBOLだからね
0696デフォルトの名無しさん
2013/07/14(日) NY:AN:NY.AN>fclose(fp) はオブジェクト指向じゃなく
えっ、明らかに違うじゃない?
オブジェクトが存在しないし
オブジェクトに対するメッセージもないし
ポリモーフィズムも実現できていない
0697デフォルトの名無しさん
2013/07/14(日) NY:AN:NY.AN0698デフォルトの名無しさん
2013/07/14(日) NY:AN:NY.AN0699デフォルトの名無しさん
2013/07/14(日) NY:AN:NY.ANCではやりずらいだろ?
しかしデストラクタを捨てたjavaの思想は間違ってた。
オブジェクトの開放はGCで結構だがスコープが終了したときに実行されるデストラクタは
あった方が良かった。
0700デフォルトの名無しさん
2013/07/14(日) NY:AN:NY.AN0701デフォルトの名無しさん
2013/07/15(月) NY:AN:NY.ANオブジェクト…fp
オブジェクトに対するメッセージ…fclose(fp) = fp.close()
0702デフォルトの名無しさん
2013/07/15(月) NY:AN:NY.AN0703デフォルトの名無しさん
2013/07/15(月) NY:AN:NY.ANデストラクタはガベコレとあんま相性良くないだろ
AutoCloseable+Closeableでだめなのか?
0704デフォルトの名無しさん
2013/07/15(月) NY:AN:NY.AN0705デフォルトの名無しさん
2013/07/15(月) NY:AN:NY.ANCeylonがそういう位置を目指してるんじゃなかったっけ
今どのぐらい開発が進んでるのか知らないけど期待できるものになってるのかねえ
0706デフォルトの名無しさん
2013/07/15(月) NY:AN:NY.ANどんなに他が優れていても
数の暴力に駆逐される
エクセルみたいなものだ
0707デフォルトの名無しさん
2013/07/15(月) NY:AN:NY.ANあくまで言語仕様に限った話な
0708デフォルトの名無しさん
2013/07/15(月) NY:AN:NY.ANimplements = 委譲
っていう認識は違いますよね?
なんかそういう認識で物言っている人が多くないですか?
例えばabstractクラスの利用は設計によって委譲にもなりますよね。
0709デフォルトの名無しさん
2013/07/15(月) NY:AN:NY.AN普通にimplementsは「実装」でしょ。
その実装が継承によってなされているか委譲によってなされているかフルスクラッチかは
知った話ではない。
0710デフォルトの名無しさん
2013/07/15(月) NY:AN:NY.AN> なんかそういう認識で物言っている人が多くないですか?
そうか?
0711デフォルトの名無しさん
2013/07/15(月) NY:AN:NY.AN0712デフォルトの名無しさん
2013/07/15(月) NY:AN:NY.ANcls suborimpl : baseorintf {
でいいだろ
タイプ数へらせや
0713デフォルトの名無しさん
2013/07/15(月) NY:AN:NY.ANprivate int value;
public Constructor(int value) {
this.value = value;
}
この変数valueはインスタンス化した後に動的に変化するのですが、
initメソッドを呼ぶとインスタンス化したときに設定した値に戻したいのです。解決策として、
private int value;
private int defaultValue;
public Constructor(int value) {
this.value = value;
defaultValue = value;
}
という単純な方法を思いつきましたが、defaultValueはこれっきり変更されることはないのでもっと縛りたいです。
どうすればprivate static final int に近くなりますか?
0714デフォルトの名無しさん
2013/07/15(月) NY:AN:NY.AN0715デフォルトの名無しさん
2013/07/15(月) NY:AN:NY.ANfinalってfieldでしか一度っきりの代入ができないのかと思ってました。
field以外でも考慮されるのですね。勉強になります。
0716デフォルトの名無しさん
2013/07/15(月) NY:AN:NY.ANむしろ宣言が主目的であって、代入のためにあるわけじゃないでしょ。
0717デフォルトの名無しさん
2013/07/15(月) NY:AN:NY.ANfield以外でも考慮されるが、そこのdefaultValueはfield。
0718デフォルトの名無しさん
2013/07/15(月) NY:AN:NY.AN0719デフォルトの名無しさん
2013/07/16(火) NY:AN:NY.AN0720デフォルトの名無しさん
2013/07/16(火) NY:AN:NY.ANSocket socket = server.accept();
OutputStream os = socket.getOutputStream();
BufferedImage bi = バッファイメージ5kB〜100KB程度
ImageIO.write(bi"JPEG", os);
close処理
上記は想定通り動作する
これを連続処理にするために
Socket socket = server.accept();
InputStream is = socket.getInputStream();
OutputStream os = socket.getOutputStream();
ループ開始
BufferedImage bi = バッファイメージ
ImageIO.write(bi"JPEG", os);//flash()は試しました
ループ終了か否か=in.read(); //ブロックして同期とる
ループ終了
close処理
ブロックまでは動くが2週目行かない。これは想定通り
クライアントandroid
socket = new Socket(リモートホスト,ぽーと)
InputStream is = socket.getInputStream();
OutputStream out = socket.getOutputStream();
ループ開始
in.read的な処理//ここで止まってるのでavailableで確認したが0から進まない
out.write(ループ終了か否か)
ループ終了
close処理
なぜWindows側ではライト終了しているのに、android側ではリードできないのかわかりませぬ。ぼすけて
ちなみにマーク、リセットはサポートされていません
0721デフォルトの名無しさん
2013/07/16(火) NY:AN:NY.AN0722デフォルトの名無しさん
2013/07/16(火) NY:AN:NY.AN0723デフォルトの名無しさん
2013/07/16(火) NY:AN:NY.AN大抵これが原因
0724デフォルトの名無しさん
2013/07/16(火) NY:AN:NY.AN0725デフォルトの名無しさん
2013/07/16(火) NY:AN:NY.AN色々使い回しも効くのに無茶しやがって・・・(AA略
0726デフォルトの名無しさん
2013/07/16(火) NY:AN:NY.AN0727デフォルトの名無しさん
2013/07/16(火) NY:AN:NY.ANクライアントコードの詳細がわからんので何とも言えないけれども、少なくとも
サーバー側のこのコードでは多分クライアントは動きようがないと思う。
具体的には、これでは受信する側が個々の画像のサイズを知る方法が無い。
ImageIO.writeはただ画像データのbyte[]を送るだけでそのサイズは送らない。
なので例えばImageIO.readは何処までバイトデータを読めばよいのか解らないので
「in.read的な処理」のところで次のデータが来るまでずっとお口を開けて待って
いる、そんなところだと思う。
解決策は一つは画像一つ送る度にソケットをcloseすること。
ソケットをcloseされると流石にそこで画像データは終わりだと判断して次の処理に
進むはず。一つ目の例が動くのもこの理由。
もう一つはImageIO.writeで直接ソケットのOutputStreamに出力するのではなく、
一端ByteArrayOutputStreamに画像データを出力して、ソケットのOutputStreamには
まず画像データのバイト数を送ってそれから画像のバイトデータを送る。
受ける方もまずバイト数を取得してそれから指定バイト数のバイトデータを読む。
最後の案として>>725にも書いたように特に理由がないのなら今更プロトコル手作り
せず素直に既製ライブラリが充実したHTTPを使う方法。
サーバー側が画像データと次の画像のURLの組をレスポンスとして返せば万事解決。
レスポンスのヘッダに次の画像のURLを埋め込んでも良し、マルチパートレスポンス
を使っても良し。
0728デフォルトの名無しさん
2013/07/16(火) NY:AN:NY.ANまともなIBはよ作ってNBに統合してくれ
0729720
2013/07/16(火) NY:AN:NY.ANソケット使い捨てだとandroidはGCでとまりまくりんぐ
イメージはいったん配列にしてサイズを教えてやってみようと思います
VNCでいい感じに動くやつはフリーであるのですがPC、andoird端末共にリソース消費が激しいので
自作することになりました
0730デフォルトの名無しさん
2013/07/16(火) NY:AN:NY.AN0731720
2013/07/16(火) NY:AN:NY.AN制御はゲームパッドなので特定の座標を覗くだけの単純なものです
要件を満たす高ビットレートなVNCだと私の持ってるEVO3Dは熱で再起動するので
今回のものを作成するに至りました。
0732デフォルトの名無しさん
2013/07/17(水) NY:AN:NY.ANまたライブラリ等スタンダードなものがあるのでしょうか。
GWTでピンポイントに組み込みたいのですが、あまりファイルアップロードにGWTはあまり使われていないのかな?
0733デフォルトの名無しさん
2013/07/17(水) NY:AN:NY.AN0734デフォルトの名無しさん
2013/07/17(水) NY:AN:NY.AN他の選択肢あったら教えて欲しい。
0735デフォルトの名無しさん
2013/07/17(水) NY:AN:NY.ANobjective-CやC++じゃなく、Cコンパイラだけでコンパイルできるものを。
0736デフォルトの名無しさん
2013/07/17(水) NY:AN:NY.AN0737デフォルトの名無しさん
2013/07/17(水) NY:AN:NY.AN・actionに指定したServletのdoPostでデータを受け取りImageIOで書き込み
これでactionで飛ばしたServletのURLで画像が表示されるようになったのですが、
画像に直接アクセス?するのではなくページの一角として画像を表示させる方法がわからないです。
できればsubmitボタンでのページ遷移もなくしたいです。
0738デフォルトの名無しさん
2013/07/17(水) NY:AN:NY.AN0739デフォルトの名無しさん
2013/07/17(水) NY:AN:NY.AN名前付けたiframeをtargetに指定するとできました感動。
だけど保存した画像のパスが分からないと扱いづらいですね・・・
何故か保存先がワークスペースの.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/プロジェクト名/サーブレットでmkdirしたフォルダ/
になっているようです。
0740デフォルトの名無しさん
2013/07/17(水) NY:AN:NY.AN画像ファイルをサーブレットが返すようにすればいい
0741デフォルトの名無しさん
2013/07/17(水) NY:AN:NY.ANう〜ん?
PrintWriterで<img src=>を書けということかな?
教えてもらった方法でうまくいったけどiframeをstyle="display:none;"しておいて
formのonsubmitで$('iframeID').style.display = 'block';しても表示されない
0742デフォルトの名無しさん
2013/07/17(水) NY:AN:NY.AN0743デフォルトの名無しさん
2013/07/17(水) NY:AN:NY.ANhttp://www.itmedia.co.jp/enterprise/articles/0408/06/news004.html
0744デフォルトの名無しさん
2013/07/17(水) NY:AN:NY.AN今このようなのですがもう一つ違いがわからないです
http://ideone.com/UM3UmV
0745デフォルトの名無しさん
2013/07/17(水) NY:AN:NY.AN才能が無いんだわ
0746デフォルトの名無しさん
2013/07/18(木) NY:AN:NY.ANサーバーからjpegやtxtのファイルを標準出力したいんですが
どこから手をつけていいのかすらわかりません…
0747デフォルトの名無しさん
2013/07/18(木) NY:AN:NY.AN0748デフォルトの名無しさん
2013/07/18(木) NY:AN:NY.AN0749デフォルトの名無しさん
2013/07/18(木) NY:AN:NY.AN用途に応じて適切なプロトコルを選んで(HTTP, TCP, UDPなど)通信すればいいだけ
0750デフォルトの名無しさん
2013/07/18(木) NY:AN:NY.ANまじかよ、DLしたのJavaSEだべさ
0751デフォルトの名無しさん
2013/07/18(木) NY:AN:NY.ANEclipseの中にjavaEE入ってるくさい。
0752デフォルトの名無しさん
2013/07/18(木) NY:AN:NY.ANおまえJava EEが何かわかってないだろ
0753デフォルトの名無しさん
2013/07/18(木) NY:AN:NY.AN何となく形になったのですが。あと一歩で力尽きそうです
ttp://www13.plala.or.jp/field-apl/etc.zip
内容物
Mode LastWriteTime Length Name
---- ------------- ------ ----
d---- 2013/07/18 9:02 madoCapHost ホスト用ソース
d---- 2013/07/18 8:54 windowCap クライアント用ソース
-a--- 2013/07/18 8:50 9292 madoCap.jar ホスト
-a--- 2013/07/18 8:52 222270 windowCap.apk クライアント
12345という順に読み込むべきところを13245のような感じにしてしまうお茶目機能をどうにかしたいので
お暇な方付き合ってください
0754デフォルトの名無しさん
2013/07/18(木) NY:AN:NY.ANそうか。早く力尽きてくれ。なるべく早くな
0755デフォルトの名無しさん
2013/07/18(木) NY:AN:NY.ANと言ってるそばからBitmap開放し忘れに気が付いた ナイス俺
0756デフォルトの名無しさん
2013/07/18(木) NY:AN:NY.AN読んだ感想
・available を使うな
・read, skip の戻り値を無視するな
・スレッド間の同期を synchronized しろ
・ソケット 2 本使って無駄に複雑化する意味ある?
0757デフォルトの名無しさん
2013/07/18(木) NY:AN:NY.ANavailableを使うなという記事は幾度となく目の当たりにしましたが
リモートにあるファイルを送ってもらうわけではないので
書きこみ途中のデータが切れてしまいます。何か良い方法があれば・・・
ストリームを3本以上使うかもしれなかったのでとりあえず、最小の平行処理にしております
作成中の配列はスレッドセーフになっています。
ソケットが複数なのは ストリームに落としながら画像を用意するためです
画像は940x540のものをリサイズするのに60ms消費します
送信するのには60msより多く消費します。2本あることで31ms程度まで落とすことができました
3本使うと25ms程度になりますが。複雑すぎたので2本に落として今に至ります
未だ解決に至らない以下のような状態が謎すぎます ぼすけて
NY:AN:NY.AN7 GO 1
NY:AN:NY.AN7 GO 1
NY:AN:NY.AN4 GO 2
NY:AN:NY.AN6 GO 2
0758デフォルトの名無しさん
2013/07/18(木) NY:AN:NY.ANイミフ
>2本あることで31ms程度まで落とすことができました
それは何かおかしい。見直せ
0759デフォルトの名無しさん
2013/07/18(木) NY:AN:NY.ANread に渡す length は最大値であって、必ずしもそのバイト数読み込むわけではない
read は 1 バイト以上 length バイト以下のデータを読み込み、実際に読み込めたバイト数を返すのが仕様
必要なだけ読み込めるまで呼び出し側でループする必要がある
skip も同様
> 作成中の配列はスレッドセーフになっています。
またまた御冗談を
> ソケットが複数なのは ストリームに落としながら画像を用意するためです
1 本のソケットでも、応答を待たずにひとつ次の画像を流しておけばいいのでは
2 枚目の画像を流してから 1 枚目の応答を待つ
3 枚目の画像を流してから 2 枚目の応答を待つ
とか
0760759
2013/07/18(木) NY:AN:NY.AN> またまた御冗談を
訂正。
作成中の配列は確かにスレッドセーフ。
しかし作成中だけ保護すればいいわけではない。
しかしソケット 1 本化すれば自動的に解消するからわりとどうでもいい。
0761デフォルトの名無しさん
2013/07/18(木) NY:AN:NY.AN■画像読み込み中 □空白 ◆書き込み中 ◇画像配列にしてるなう
1番■◇◇◆◆■◇◇◆◆■◇◇◆◆■
2番□■◇◇◆◆■◇◇◆◆■◇◇◆◆
3番があると
1番■◇◇◆◆■◇◇◆◆■◇◇◆◆■
2番□■◇◇◆◆■◇◇◆◆■◇◇◆◆
3番□□■◇◇◆◆■◇◇◆◆■◇◇◆
ホスト側から見たらこんな感じになる予定?です
クライアント側は
■画像配列読み込み中 ◇配列を画像にしてる中 ◆画像をVIEWに表示してるnow □空白
■■◇■■◇■■◇■■◇■■◇■■
□□□◆◆◆◆◇◆◆◇◆◆◇◆◆◇
0762デフォルトの名無しさん
2013/07/18(木) NY:AN:NY.ANこれやってませんでした。思考停止してる
ほんとありがとう
0763デフォルトの名無しさん
2013/07/18(木) NY:AN:NY.AN0764デフォルトの名無しさん
2013/07/18(木) NY:AN:NY.ANつかったことなすORZ 同期よりいかに平行処理させるかを追求する人でした(遠い目
今はストリーム1本で762ちまちまやってます
見た目上の読み込みはうまくいってるんだけど
decoder->decode returned false
length=524288; regionStart=0; regionLength=1042778344
これとたたかってます
0765デフォルトの名無しさん
2013/07/18(木) NY:AN:NY.ANほとんど寝てるようなスレッドはある意味ありがたいし、よほどシンプルなプログラムでない限りそういうスレッドが存在してるもの
0766デフォルトの名無しさん
2013/07/18(木) NY:AN:NY.AN0767デフォルトの名無しさん
2013/07/18(木) NY:AN:NY.ANこんなの見つけたけど結局違うようだった・・
フル稼働時。きっちりCPU100%になるよう組める奴は日本に何人いるのだろう
androidのGCが2世代管理してくれたら今こんなに苦労してないのに;;
0768デフォルトの名無しさん
2013/07/18(木) NY:AN:NY.AN> フル稼働時。きっちりCPU100%になるよう
そんなことに意味あんの?
0769デフォルトの名無しさん
2013/07/18(木) NY:AN:NY.AN大げさに言うと50%で頭打ちのマシン4台が2台になる計算
0770デフォルトの名無しさん
2013/07/18(木) NY:AN:NY.ANいかにgcとは無縁の世界でプログラミングするかがむしろ重要で、gcに意識が言った時点でもはや何も言うまい状態
しまいにはnull代入なんていう恩をあざで返しちゃう始末・・・
0771ピラフ
2013/07/18(木) NY:AN:NY.ANboolean型の変数aと
boolean型の変数bがあったとして。
(a && b) || (!a && !b)
という評価をしたいです。この式をより簡単な式で表すことはできますか?
できるようならその式を教えてください。お願いします。
0772デフォルトの名無しさん
2013/07/18(木) NY:AN:NY.ANましてやその矛先がレンタルサーバだったりするよネー(*´・д・)(・∀・`。)
ヤダヤダ(*´・д・)(・∀・`。)ネー
0773デフォルトの名無しさん
2013/07/18(木) NY:AN:NY.AN0774デフォルトの名無しさん
2013/07/18(木) NY:AN:NY.ANそれJavaとなんか関係あんの?
0775デフォルトの名無しさん
2013/07/18(木) NY:AN:NY.AN0776デフォルトの名無しさん
2013/07/18(木) NY:AN:NY.AN0777デフォルトの名無しさん
2013/07/18(木) NY:AN:NY.AN0778ピラフ
2013/07/18(木) NY:AN:NY.ANJavaには論理演算があります。それを聞いています。
>>775
論理式の質問です。
>>776
ありがとうございます。試してみます。
0779デフォルトの名無しさん
2013/07/18(木) NY:AN:NY.ANa == b
0780デフォルトの名無しさん
2013/07/18(木) NY:AN:NY.ANbooleanのaとbしか登場しないんだから、4通りの組み合わせの演算結果見れば、
どう書き直せるか一目瞭然だろ。
0781デフォルトの名無しさん
2013/07/18(木) NY:AN:NY.AN0782デフォルトの名無しさん
2013/07/18(木) NY:AN:NY.AN0783デフォルトの名無しさん
2013/07/18(木) NY:AN:NY.ANしーっ!
0785デフォルトの名無しさん
2013/07/18(木) NY:AN:NY.ANboolean値比較のxorの存在意義
0786デフォルトの名無しさん
2013/07/18(木) NY:AN:NY.AN人差し指立ててる顔文字に見えてきた
(a != !b)<ヒント!
0787デフォルトの名無しさん
2013/07/18(木) NY:AN:NY.AN0788デフォルトの名無しさん
2013/07/18(木) NY:AN:NY.AN一番シンプルだね
というかこれが正解だね
0789デフォルトの名無しさん
2013/07/18(木) NY:AN:NY.AN0790デフォルトの名無しさん
2013/07/18(木) NY:AN:NY.AN(a & b) | (!a & !b)
0791デフォルトの名無しさん
2013/07/18(木) NY:AN:NY.AN0792デフォルトの名無しさん
2013/07/18(木) NY:AN:NY.AN結局decoder->decode returned false で心折れた
ソース一緒に見てくれた方 感謝!感謝!
0793デフォルトの名無しさん
2013/07/18(木) NY:AN:NY.AN分岐を使ってはいけない分野では>>776が常識
0794デフォルトの名無しさん
2013/07/18(木) NY:AN:NY.AN0795デフォルトの名無しさん
2013/07/18(木) NY:AN:NY.AN0796デフォルトの名無しさん
2013/07/18(木) NY:AN:NY.AN質問者がJavaの論理演算の話と意固地に主張しているからには
>>790が適切な回答だろ?
0798デフォルトの名無しさん
2013/07/18(木) NY:AN:NY.AN790はビット演算だろ
論理演算と言ったらboolean(真理値)の演算を指すのでは
>>797
「どれが適切か」は確かに場合に依るけど、
一般的には読み易さを損なわない範囲で演算回数を減らすのが適切でしょう
0799798
2013/07/18(木) NY:AN:NY.AN(a & b) | (!a & !b) と書きたければ ~(a ^ b) と書くのでは
0800デフォルトの名無しさん
2013/07/18(木) NY:AN:NY.ANJava の &, |, ^ 演算子は、両辺が boolean なら boolean を返すよ。
新人の書いた
if (str == null | str.length() == 0) ...
が実行時エラーになっててあせった。
0801798
2013/07/18(木) NY:AN:NY.AN返すのは知ってるけど、&&, || があるのに &, | を論理演算に使うのは不自然ではないか?
単に俺がC言語出身者だからか?
0802デフォルトの名無しさん
2013/07/18(木) NY:AN:NY.ANいや プライドがあるんだろうねぇ
どう書こうと、内部的には
false 0
true 1
のint を返してるんだけどねぇ(わらい)
0803デフォルトの名無しさん
2013/07/18(木) NY:AN:NY.ANむしろこの文脈で論理演算&|の代わりに
条件付き論理演算を使う意味がわからない
Cとは&|の意味が言語仕様で違うんだから
0804デフォルトの名無しさん
2013/07/18(木) NY:AN:NY.AN0805デフォルトの名無しさん
2013/07/18(木) NY:AN:NY.ANbooleanはnumeric typeじゃないから ~ は不自然
booleanをそのまま扱うえる ! & | ^ && ||で済ますのが自然
0806デフォルトの名無しさん
2013/07/18(木) NY:AN:NY.ANhttp://docs.oracle.com/javase/tutorial/java/nutsandbolts/operators.html
bitwise AND &
bitwise exclusive OR ^
bitwise inclusive OR |
logical AND &&
logical OR ||
0807デフォルトの名無しさん
2013/07/18(木) NY:AN:NY.ANhttp://docs.oracle.com/javase/tutorial/java/nutsandbolts/op1.html
! Logical complement operator;
inverts the value of a boolean
0808デフォルトの名無しさん
2013/07/18(木) NY:AN:NY.ANboolean演算には && ! || == != を使いましょう
0809デフォルトの名無しさん
2013/07/18(木) NY:AN:NY.AN0810デフォルトの名無しさん
2013/07/18(木) NY:AN:NY.ANboolean intで処理してるのに なにかっこつけてるの?
0811デフォルトの名無しさん
2013/07/18(木) NY:AN:NY.AN0812デフォルトの名無しさん
2013/07/18(木) NY:AN:NY.AN0813デフォルトの名無しさん
2013/07/18(木) NY:AN:NY.AN> 条件付き論理演算を使う意味がわからない
その意味がわからない
0814デフォルトの名無しさん
2013/07/18(木) NY:AN:NY.AN論理演算をしたいのに
どうしてboolean logical operator &でなく
conditional-And operator &&を使うの?
0815デフォルトの名無しさん
2013/07/18(木) NY:AN:NY.AN言語仕様を無視するとはいい度胸だね
15.15.5 Bitwise Complement Operator ~
15.15.6 Logical Complement Operator !
15.22.2 Boolean Logical Operators &, ^, and |
15.23 Conditional-And Operator &&
この辺を読み直した方がいい
0816デフォルトの名無しさん
2013/07/18(木) NY:AN:NY.AN0817デフォルトの名無しさん
2013/07/18(木) NY:AN:NY.ANC上がりの人が妄想で書いたんでしょ
&&がlogical ANDなんて、ウソも甚だしい
0818デフォルトの名無しさん
2013/07/18(木) NY:AN:NY.AN0819デフォルトの名無しさん
2013/07/18(木) NY:AN:NY.ANhttp://docs.oracle.com/javase/specs/jls/se7/html/jls-15.html#jls-15.22
Chapter?15.?Expressions
http://docs.oracle.com/javase/specs/jls/se7/html/jls-15.html#jls-15.22.2
Chapter?15.?Expressions
http://docs.oracle.com/javase/specs/jls/se7/html/jls-15.html#jls-15.23
0820デフォルトの名無しさん
2013/07/18(木) NY:AN:NY.AN0821デフォルトの名無しさん
2013/07/18(木) NY:AN:NY.AN0822デフォルトの名無しさん
2013/07/18(木) NY:AN:NY.AN0823デフォルトの名無しさん
2013/07/18(木) NY:AN:NY.ANif (true || (a = true)); System.out.println(a);
if (true | (a = true)); System.out.println(a);
boolean b = false;
if (false && (b = true)); System.out.println(b);
if (false & (b = true)); System.out.println(b);
0824デフォルトの名無しさん
2013/07/18(木) NY:AN:NY.ANこのスレにはガチの初心者はいなかったってことだな、安心した。
0825デフォルトの名無しさん
2013/07/18(木) NY:AN:NY.AN0826デフォルトの名無しさん
2013/07/18(木) NY:AN:NY.ANだけどJAVAドカタとCジジイにその二つを
区別することなんか不可能。
だからよく使う&& ||に統一しておくのが無難。
ドカタに言語仕様を説教しても無意味だからね。
0827デフォルトの名無しさん
2013/07/18(木) NY:AN:NY.ANhoge.isEnabled() && hoge.move() のようなコードは
「可読性と保守性を損なう」としてレビューで叩かれるので
一時変数への代入とifを使います
なのでショートサーキットは気にする必要がないのです
0828デフォルトの名無しさん
2013/07/18(木) NY:AN:NY.AN0829デフォルトの名無しさん
2013/07/18(木) NY:AN:NY.AN0830デフォルトの名無しさん
2013/07/18(木) NY:AN:NY.AN0831デフォルトの名無しさん
2013/07/19(金) NY:AN:NY.ANドカタには難しいらしいので結局使えないんだよね
0832デフォルトの名無しさん
2013/07/19(金) NY:AN:NY.AN0833デフォルトの名無しさん
2013/07/19(金) NY:AN:NY.ANifを置く意味が分からんのだが
0834デフォルトの名無しさん
2013/07/19(金) NY:AN:NY.AN素直に考えたら>>831はobjがnullのときobj.isEmpty()でぬるぽ例外が発生しそうだろ?
でも実際はobj==nullがtrueの時点で式全体がtrueと確定するので
obj.isEmpty()は実行されず、エラーは発生しない
そういう動作のことをショートサーキットという
Javaでは||と&&がショートサーキット演算子
0835デフォルトの名無しさん
2013/07/19(金) NY:AN:NY.AN聞いているわけではない
用語を訊いているだけなのにアスペ乙>>834
0836デフォルトの名無しさん
2013/07/19(金) NY:AN:NY.AN0837デフォルトの名無しさん
2013/07/19(金) NY:AN:NY.AN�d
0838デフォルトの名無しさん
2013/07/19(金) NY:AN:NY.AN寧ろ論理演算をしたいのにどうして bitwise operator を使いたがるのか理解できない
可読性を損ねるだけだと思うのだが
0839デフォルトの名無しさん
2013/07/19(金) NY:AN:NY.AN・パフォーマンス向上のために短絡評価を使っている(&や|に置換可能)
・評価の順番を制御するために使っている(左辺が真ならそこで評価をやめないとエラー>>831)
書き手の意図が二通りに解釈できるから、後からコードを修正する際にバグを混入させやすくなる
0840デフォルトの名無しさん
2013/07/19(金) NY:AN:NY.ANhttp://ja.wikipedia.org/wiki/%E7%9F%AD%E7%B5%A1%E8%A9%95%E4%BE%A1
CとJava同じじゃん
0841デフォルトの名無しさん
2013/07/19(金) NY:AN:NY.AN0842デフォルトの名無しさん
2013/07/19(金) NY:AN:NY.ANわざわざ簡潔(わかりずらい)なコードを書いて自画自賛してる人もいるが、
簡潔に書けば高速コードにコンパイルされるとは限らないし
逆に鈍速コードになることもある
0843デフォルトの名無しさん
2013/07/19(金) NY:AN:NY.ANBoolean Logical Operatorsであると
言語仕様の章番号まで上で出てるのに
どうしてそこまでbitwiseだと思いこみたいのか
理解に苦しむ
0844デフォルトの名無しさん
2013/07/19(金) NY:AN:NY.AN0845デフォルトの名無しさん
2013/07/19(金) NY:AN:NY.AN>>躓
こんな普段使わないし手書きで書けないような漢字を使うのは
bit wise なのか? ウンチク屋 なのか? ウマシカなのか? www
0846デフォルトの名無しさん
2013/07/19(金) NY:AN:NY.AN0847デフォルトの名無しさん
2013/07/19(金) NY:AN:NY.ANCにおいては&, |は専らbitwise演算に用いられるものであり、boolean演算には&&, ||が用いられる。
(そもそもCにおいては0以外は全て真として扱われるため&, |をboolean演算として使うことはできない)
俺はJavaにおいてもその使い分けに従うのが良いと思うのだがね。
日常的に複数の言語を使う人はその方が混乱が無くて良い。
0848デフォルトの名無しさん
2013/07/19(金) NY:AN:NY.AN0849デフォルトの名無しさん
2013/07/19(金) NY:AN:NY.AN前者は、再利用可能性とも関わるので、Java の文化はどちらかというと、前者寄りなイメージがある。
0850デフォルトの名無しさん
2013/07/19(金) NY:AN:NY.AN>>806-807のチュートリアルにあるようにoracleとしては& | をlogical operatorとして使うことは推奨してない
ってことじゃねえの?
0851デフォルトの名無しさん
2013/07/19(金) NY:AN:NY.AN>日常的に複数の言語を使う人はその方が混乱が無く
他人に論理andよりconditional-andを使えという理由が
「俺が他の言語と混同して間違えるから」なのか
>>849
& |なら可読性も簡潔性も&&||より上だね!
0852デフォルトの名無しさん
2013/07/19(金) NY:AN:NY.AN> 他人に論理andよりconditional-andを使えという理由が
> 「俺が他の言語と混同して間違えるから」なのか
いや、ある種の「慣例」に従えということかと。
基本的にOracleとしてもlogical演算は&&, ||を推奨しているようだしな。
> & |なら可読性も簡潔性も&&||より上だね!
何故?
まるで意味の違うlogical演算とbitwise演算に同じ演算子を使うのは可読性が高いとでも?
0853デフォルトの名無しさん
2013/07/19(金) NY:AN:NY.AN&&, || を積極的に推す理由はあっても、&, | を積極的に推す理由って無くない?
0854デフォルトの名無しさん
2013/07/19(金) NY:AN:NY.AN仕様上で出来るからそれを使えってのは違うと思うんだが
0855デフォルトの名無しさん
2013/07/19(金) NY:AN:NY.AN0856デフォルトの名無しさん
2013/07/19(金) NY:AN:NY.AN0857デフォルトの名無しさん
2013/07/19(金) NY:AN:NY.AN>>&&, || を積極的に推す理由はあっても、&
>>, | を積極的に推す理由って無くない?
同意します
上の方は考えなくてもわかる
0858デフォルトの名無しさん
2013/07/19(金) NY:AN:NY.ANいえ、&&はlogical-ANDではないので、
そのような言語仕様に反する誤ったドキュメントを真に受けないでください
>| を積極的に推す理由って無くない
ショートサーキットという余計な機能の無い、
単なる論理演算という素直な書き方ですよ?
0859デフォルトの名無しさん
2013/07/19(金) NY:AN:NY.AN寧ろ高速化に寄与するんだから「余計な機能」があって良かろう
0860デフォルトの名無しさん
2013/07/19(金) NY:AN:NY.ANむしろ遅いのだが
0861デフォルトの名無しさん
2013/07/19(金) NY:AN:NY.ANプロジェクト内でコーディング規則を定めればいいだけじゃねの
0862デフォルトの名無しさん
2013/07/19(金) NY:AN:NY.ANa && b
後者が前者より可読性を損ねていないとか
どこに目付けてんの?
機能とか可読性とか性能以前に
「論理演算をしたいから論理演算の為の演算子を使う」
って発想が無いことに驚き
0863デフォルトの名無しさん
2013/07/19(金) NY:AN:NY.AN→ if (A) { if (B) { if (C) { if (D) { ... } } } }
if (A & B & C & D) { ... }
→ if (((A & B) & C) & D) { .... }
0864デフォルトの名無しさん
2013/07/19(金) NY:AN:NY.AN→ if (A) { if (B) { if (C) { if (D) { ... } } } }
if (A & B & C & D) { ... }
→ if (((A & B) & C) & D) { .... }
CやDがbooleanを返す関数で重い処理の場合、後者のほうがパフォーマンスが悪い
A〜Dが全てboolean型の変数なら、前者のほうがパフォーマンスが悪い
0865デフォルトの名無しさん
2013/07/19(金) NY:AN:NY.AN&& が論理演算のための演算子でないとでも?
Cには論理演算のための演算子は存在しないとでも?
0866デフォルトの名無しさん
2013/07/19(金) NY:AN:NY.AN短絡演算子は演算子に見せかけた制御構文なんだよ。
func1() && func2() // <- func2()は実行されないこともある
こんなもんはJavaに限らず、主流の言語じゃバグに繋がるだけだ。
実際には慣習にならって boolA & boolB なんてコードは書かないが、
やっぱり素直な仕組みじゃねえよ。
0867デフォルトの名無しさん
2013/07/19(金) NY:AN:NY.ANなんてことややめて
if (A) if (B) if (C) { ... }
と書けばよい
0868デフォルトの名無しさん
2013/07/19(金) NY:AN:NY.AN>>840のwikipediaの感じだと主流の言語で&&は短絡評価だから関係なくね?
0869デフォルトの名無しさん
2013/07/19(金) NY:AN:NY.AN↓
if (A) if (B) if (C) { f(); } else { g(); } else { g(); } else { g(); }
ワーオわかりやすいね!
0870デフォルトの名無しさん
2013/07/19(金) NY:AN:NY.ANif (A && B && C) { f(); } else { g(); }
↓
if (A) { if (B) if (C) { f() } } else { g(); }
0871デフォルトの名無しさん
2013/07/19(金) NY:AN:NY.AN0872デフォルトの名無しさん
2013/07/19(金) NY:AN:NY.ANバイトコードではintで処理されてるのに...(阿呆まるだし)
0873ピラフ
2013/07/19(金) NY:AN:NY.ANそれは処理が変わってるっすよ。
if (A && B && C) { f(); } else { g(); }
はAがfalseであるか、またはBがfalseであるか、またはCがfalseであるときにgを呼ぶ。
if (A) { if (B) if (C) { f() } } else { g(); }
はAがfalseであるときにgを呼ぶ。
0874デフォルトの名無しさん
2013/07/19(金) NY:AN:NY.AN何の議論してんだよおまえら
0875デフォルトの名無しさん
2013/07/19(金) NY:AN:NY.AN↓
boolean hangei(boolean A, boolean B, boolean C){
0876デフォルトの名無しさん
2013/07/19(金) NY:AN:NY.AN>>771
> boolean型の変数aと
> boolean型の変数bがあったとして。
0877デフォルトの名無しさん
2013/07/19(金) NY:AN:NY.AN0878デフォルトの名無しさん
2013/07/19(金) NY:AN:NY.ANaとbの同値比較の計算(==)
!(a ^ b)
aとbの排他論理和を計算(a ^ b)→結果の否定を計算(!)
(a & b) | (!a & !b)
aとbの論理積を計算(a & b)→aの否定を計算(!a)→bの否定を計算(!b)→!aと!bの論理積の計算(!a & !b)→それぞれの結果の論理和を計算(|)
0879デフォルトの名無しさん
2013/07/19(金) NY:AN:NY.AN!(a ^ b)
(a & b) | (!a & !b)
こんな記述に可読性があると思うのか?
あると思うなら上司としては失格者
0880デフォルトの名無しさん
2013/07/19(金) NY:AN:NY.AN0881デフォルトの名無しさん
2013/07/19(金) NY:AN:NY.AN0882デフォルトの名無しさん
2013/07/19(金) NY:AN:NY.AN前者は単にaとbが同値であればという意味合いしか持たず、a,bの値が何であるかという関心が含まれない
後者はa,bがともにtrue、あるいはa,bがともにfalseのとき、という印象があり、a,bの値に関心がある式になる
!(a ^ b) は論外、何の処理をしてるのかパっと見で分かる者はまずいない
0883デフォルトの名無しさん
2013/07/19(金) NY:AN:NY.AN0884デフォルトの名無しさん
2013/07/19(金) NY:AN:NY.AN賛成
コンパイル後のコードを見ればいいのにね
0885デフォルトの名無しさん
2013/07/19(金) NY:AN:NY.AN0886デフォルトの名無しさん
2013/07/19(金) NY:AN:NY.AN0887デフォルトの名無しさん
2013/07/20(土) NY:AN:NY.AN0888デフォルトの名無しさん
2013/07/20(土) NY:AN:NY.AN0889デフォルトの名無しさん
2013/07/20(土) NY:AN:NY.AN0890デフォルトの名無しさん
2013/07/20(土) NY:AN:NY.AN0891デフォルトの名無しさん
2013/07/20(土) NY:AN:NY.AN遅延評価言語に謝れ
0892デフォルトの名無しさん
2013/07/20(土) NY:AN:NY.AN君は理解が浅い
0893デフォルトの名無しさん
2013/07/20(土) NY:AN:NY.ANこれを浅いと言い切る>>892は
馬鹿に違いない
0894デフォルトの名無しさん
2013/07/21(日) NY:AN:NY.AN頭にパッケージ宣言をつけるだけでメインクラスが実行できなくなってしまいました
最終的には
.\Main.java から test パッケージの .\test\Test.java
を使いたいんですけど
とりあえず test パッケージ内のサブディレクトリ内にはいって
コンパイルして実行しようとすると NoClassDefFoundErrorがでます
0895デフォルトの名無しさん
2013/07/21(日) NY:AN:NY.AN0896デフォルトの名無しさん
2013/07/21(日) NY:AN:NY.ANC:\何とかかんとか>java Main
これでおk
0897デフォルトの名無しさん
2013/07/21(日) NY:AN:NY.ANそれでは動くんですが
パッケージ内ディレクトリでデバッグしたくて動かしたいんですけど方法はありませんか?
test/Test.java
---------------------------------
package test;
public class Test {
public void test() { System.out.println("Hello World!");
public static void main(String[] args) { test(); }
}
---------------------------------
Main.java:
---------------------------------
import test.*;
public class Main {
public static void main(String[] args) { (new Test()).test(); }
}
---------------------------------
こんな感じにかいてみたんですが Main クラスからよべば動いてるみたいなんですが
test ディレクトリにはいって
> java Test
を実行しても動くようにするにはどうしたらいいんでしょうか?
Test.java のパッケージ宣言を消すと普通に動くんですが…
0898デフォルトの名無しさん
2013/07/21(日) NY:AN:NY.ANうごかなかったらごめん
0899デフォルトの名無しさん
2013/07/21(日) NY:AN:NY.AN>>C:\何とかかんとか>java text.Main
C:\何とかかんとか>java text.Test
0900デフォルトの名無しさん
2013/07/21(日) NY:AN:NY.ANNoClassDefError がでます…
0901デフォルトの名無しさん
2013/07/21(日) NY:AN:NY.AN0902デフォルトの名無しさん
2013/07/21(日) NY:AN:NY.AN動きました!
ありがとうございました!
0903デフォルトの名無しさん
2013/07/21(日) NY:AN:NY.ANtest/img/test.png
みたいにサブディレクトリにデータファイルをおいて相対パスで呼び出したいんですけど
さっきみたいにどっちのディレクトリから実行しても動くようにするにはどうしたらいいんでしょうか
test/Test.java
---------------------------------
package test;
public class Test {
public void test() { ImageIO.read(new File("img\test.png")); }
public static void main(String[] args) { test(); }
}
---------------------------------
Main.java:
---------------------------------
import test.*;
public class Main {
public static void main(String[] args) { (new Test()).test(); }
}
---------------------------------
ってかくとサブディレクトリで実行した場合は動くんですが
メインから実行した場合に .\img\ の中をみにいってしまいます…
0904デフォルトの名無しさん
2013/07/21(日) NY:AN:NY.ANおい、ちょっとは自分の頭で考えろよ。
0905デフォルトの名無しさん
2013/07/21(日) NY:AN:NY.ANディレクトリ沸けるプログラムはじめてかいたので…
今回は別に自分だけが動かすトイプログラムなので絶対パスでうめこめばすむ話なんですけど
パッケージは配布したりすると当然おく場所はかわるものだから相対パスで動かす方法をおぼえたくて
よく考えたら実行中に実行してるカレントディレクトリはとれるんですけど
どこにおかれるかわからないパッケージのクラスファイルが取得できるはずないですよね…
0906デフォルトの名無しさん
2013/07/21(日) NY:AN:NY.AN0907デフォルトの名無しさん
2013/07/21(日) NY:AN:NY.ANこれでできるけどnativeがWindowsのみ対応になってる
0908デフォルトの名無しさん
2013/07/21(日) NY:AN:NY.ANそのプログラムをEclipseのRunで実行したら
カレントディレクトリはデフォルトでプロジェクトディレクトリなので
MainとTestのいずれを実行してもimg\test.pngを見つけてくれるぞ。
0909デフォルトの名無しさん
2013/07/21(日) NY:AN:NY.AN環境依存な方法じゃないとできないものなんですね…
>>908
eclipse じゃなくて
コマンドライン実行なんですけど
挙動が違うんですか…
調べてみると Class.getResource() っていうのを使えばできそうみたいなんですが
うまくいかなくていろいろ試行錯誤中です><
0910デフォルトの名無しさん
2013/07/21(日) NY:AN:NY.ANパッケージ配布したときにどこからインポートされてどこから実行されるか分からないけど
パッケージ内のクラスからパッケージ内データファイルにアクセスできないってことはないと思うんですけど…
やり方がわからない…
0911デフォルトの名無しさん
2013/07/21(日) NY:AN:NY.ANgetResource使えばできるけどその程度のテストでわざわざ余分なコードを書くくらいなら
linuxならカレントディレクトリ変えてjavaを実行するスクリプト書いた方が楽だし。
Windowsなら統合環境入れた方がラクダよ。
0912デフォルトの名無しさん
2013/07/21(日) NY:AN:NY.AN0913デフォルトの名無しさん
2013/07/21(日) NY:AN:NY.ANそれ言い出せばそもそもパッケージわけずに2つ同じフォルダにおいちゃえばいいだけなんですけど…
今回 Test 側のパッケージだけ将来使いまわすかもしれないので
パッケージの書き方の勉強もかねてディレクトリわけるプログラムのかき方覚えようと思っただけなんです…
0914デフォルトの名無しさん
2013/07/21(日) NY:AN:NY.ANウィンドウを2つ表示しているのですが、ボタンを押したときに片方のウィンドウをアクティブ化(ウィンドウをクリックした時のように)したいです。
「ボタンを押したとき」というイベントは分かるのですが、アクティブ化が分かりません。
分かる方、よろしくお願いします。
0915デフォルトの名無しさん
2013/07/21(日) NY:AN:NY.ANちょっと違うがアプリケーションが実行されたパスが欲しいときは以下を使うんだ。
public String getProgramLocation(Class c)throws Exception{
URL url = c.getResource(c.getSimpleName()+".class");
if(url==null){
String path=c.getPackage().toString().replace('.', '/')+"/"+c.getSimpleName()+".java";
System.err.println("path="+path);
url = c.getResource(path);
}
if(!url.getProtocol().equals("file")){
throw new Exception("no such url"+url);
}
int firstSlash=url.toString().indexOf("/");
int exclamation=url.toString().lastIndexOf("!");
String ret=null;
if(exclamation!=-1){
String jarfileName = url.toString().substring(firstSlash, exclamation);
ret = new java.io.File(jarfileName).getParent();
}else{
int ccc=url.toString().lastIndexOf("classes");//jbuilder default;
if(ccc==-1)ccc=url.toString().lastIndexOf("bin");//eclipse default
if(ccc!=-1){
ret=url.toString().substring(firstSlash,ccc-1);
}else{
throw new Exception("not found class folder");
}
}
return ret;
}
0916デフォルトの名無しさん
2013/07/21(日) NY:AN:NY.AN0917デフォルトの名無しさん
2013/07/21(日) NY:AN:NY.ANこの例の場合、簡単な配置だとこんな感じ。
src/Main.java
src/test/Test.java
resources/test/img.jpg
普通はJavaソースはsrc配下に、それ以外のリソースファイルはrecources以下に入れる。
それ以外の配置をされても他の人が混乱するので我流は止める。
さらにMaven風にするのならこんな感じ。個人的にはこちらがお薦め。
src/main/java/Main.java
src/main/java/test/Test.java
src/main/resources/test/img.jpg
ImageIoにはFileではなくthis.getClass().getResourceAsStream("test/img/img.jpg")を
使う。getResourceAsStreamはクラスパスからファイルを読む。そしてJar等のパッケージ
に固められている場合はこれを使わないとパッケージ内のファイルは取得できない。
最後にjavaの実行時に-cpでresourceディレクトリもクラスパスに指定すればOK。
ただこの辺りになるとjavaやjavacのコマンドラインオプションが煩雑になるのでEclipse
を使うかMavenを使った方が楽。
0918デフォルトの名無しさん
2013/07/21(日) NY:AN:NY.ANただディレクトリわけるだけでこんな大変なんですね;;…
(new Test()).getClass().getResource("img/test.png)
も ./img/ をみにいってて test/img/ をみにいってくれないし…
パッケージ内のクラスからパッケージフォルダ内のファイルに相対パスアクセスしたいだけなんですけど
今日はあきらめます><
相談にのっていただいてありがとうございました
0919デフォルトの名無しさん
2013/07/21(日) NY:AN:NY.AN0920デフォルトの名無しさん
2013/07/21(日) NY:AN:NY.AN>>915
どちらかというとアプリを実行されたパスを知らずにデータにアクセスしたい…
毎回そのパスをプログラム側で取得しないとダメなんでしょうか…
>>917
なるほど
参考になります
いわれてみると jar で配布されてる java の追加ライブラリって長い階層構造になってるの多いですね…
> -cpでresourceディレクトリもクラスパスに指定すればOK。
ということはパッケージ内でしか使わないリソースでも
メインから見た階層の中に位置付けてアクセスしないといけないってことなんですね
隠蔽する必要まではないにしても他のパッケージからみえても仕方ないリソースファイルが
パッケージ内で完結できないってちょっと不便な気もしますけど…
0921914
2013/07/21(日) NY:AN:NY.ANできました。
ありがとうございます。
0922デフォルトの名無しさん
2013/07/21(日) NY:AN:NY.ANごめんなさい
自分の勘違いでした!
getResource を使って思ったとおり相対パス指定で動きました!!!
他の方もいろいろ教えていただいてありがとうございました!
0923デフォルトの名無しさん
2013/07/21(日) NY:AN:NY.AN> ということはパッケージ内でしか使わないリソースでも
> メインから見た階層の中に位置付けてアクセスしないといけないってことなんですね
そうゆうこと。Javaのパッケージは良いところ名前空間程度の意味合いしかない。
そしてパッケージの相対パス指定は出来ない。必ずルート(デフォルトパッケージ)
からの絶対パスで指定する必要がある。
例えばTestパッケージに必要なファイルをひとまとめにして再利用したい場合などは
パッケージではなくモジュールなどと呼ばれる別の階層の仕組みが必要になる。
ビルド環境としてはMavenがモジュールの考え方を持っている。
0924デフォルトの名無しさん
2013/07/21(日) NY:AN:NY.ANあと将来を考えるとgetResourceではなくgetResourceAsStreamで動くようにして
おいた方が良いよ。画像も含めたJar等に固めて配布する場合はこちらしか動か
ないので。
0925デフォルトの名無しさん
2013/07/21(日) NY:AN:NY.AN窓A,BがあってAを押したらBをアクティブにするってこと?
一つのmainから派生した窓なら簡単にできるけど
それぞれ別プロセスだとめんどいよ
0926デフォルトの名無しさん
2013/07/22(月) NY:AN:NY.AN60秒を超えると61、62のように増えていくのですが
それを01.59.23みたいに分表示?みたいな感じにしたいときには
どうすればいいのでしょうか?
よろしくお願いします。
0927デフォルトの名無しさん
2013/07/22(月) NY:AN:NY.ANhour = second / 3600
minute = second % 3600 / 60
second = second % 60
0928デフォルトの名無しさん
2013/07/22(月) NY:AN:NY.AN回答ありがとうございます。
codepad.org/LhJnfuLJ 忍法長のレベルで貼れないので前にhttpをお願いします
このようなプログラムなのですがどこに入れればいいですか?
質問ばかりで申し訳ないです。
0929デフォルトの名無しさん
2013/07/22(月) NY:AN:NY.AN0930デフォルトの名無しさん
2013/07/22(月) NY:AN:NY.AN問題ありすぎ
sleepメソッドで時間計るな 開始時刻と現在時刻の差を計算しろ
ボタンのリスナーは分けて匿名クラスにしろ
clockThreadも匿名クラスに
わざわざ別クラスにmainメソッドを書く必要ない
0931デフォルトの名無しさん
2013/07/22(月) NY:AN:NY.ANSimpleDateFormatで
"HH:mm:ss.SSS"
これじゃだめ?w
http://park.geocities.jp/gdfsm000/java/java12.html
0932デフォルトの名無しさん
2013/07/22(月) NY:AN:NY.AN0933デフォルトの名無しさん
2013/07/22(月) NY:AN:NY.ANは評価してもよいのではなかろうか
0934デフォルトの名無しさん
2013/07/22(月) NY:AN:NY.ANそれ経過時間じゃなくて現在時刻じゃん
0935デフォルトの名無しさん
2013/07/23(火) NY:AN:NY.ANふうん。すごいね(棒)。ネット知識(笑)?
0936デフォルトの名無しさん
2013/07/23(火) NY:AN:NY.ANループさせたら表示は動く
実際止めたときは開始した時間から止めた時の時間差し引いてフォーマットすれば
ストップウォッチとしては成り立つ
>>930は正しい。だがまだ敷居高いから後で読み返すとよいかも
0937デフォルトの名無しさん
2013/07/23(火) NY:AN:NY.ANえっと、それでもまだ鏡像ポテンシャルは記述しきれてないよね
0938デフォルトの名無しさん
2013/07/23(火) NY:AN:NY.ANに計測開始時点でSystem.currentTimeMillis()を代入して、
long nowTime = System.currentTimeMillis(); との差で測ればいいんでないの?
if(nowTime - baseTime >= 1000) {
// 計測開始から1秒以上たっていたらする処理
....
....
baseTime = nowTime;
}
で、より精度上げるにはこれを元に考えていけばいいんじゃないかな。
ちなみに精度を上げるためにSystem.nanoTime()を使うのはもしかすると情弱だと思われるかもしれないので注意。
0939デフォルトの名無しさん
2013/07/23(火) NY:AN:NY.AN0940デフォルトの名無しさん
2013/07/23(火) NY:AN:NY.AN0941デフォルトの名無しさん
2013/07/23(火) NY:AN:NY.AN0942デフォルトの名無しさん
2013/07/23(火) NY:AN:NY.AN...
0943デフォルトの名無しさん
2013/07/23(火) NY:AN:NY.AN0944デフォルトの名無しさん
2013/07/23(火) NY:AN:NY.ANいーかげんカレンダ暦使ってインターバル計るのやめれ。
0945デフォルトの名無しさん
2013/07/23(火) NY:AN:NY.ANネットに繋がってないと使えないじゃん
0946デフォルトの名無しさん
2013/07/23(火) NY:AN:NY.ANNTP使えって意味じゃないと思う
0947デフォルトの名無しさん
2013/07/23(火) NY:AN:NY.AN0948デフォルトの名無しさん
2013/07/23(火) NY:AN:NY.AN0949デフォルトの名無しさん
2013/07/23(火) NY:AN:NY.AN0950デフォルトの名無しさん
2013/07/23(火) NY:AN:NY.AN>>946
0951デフォルトの名無しさん
2013/07/23(火) NY:AN:NY.ANじゃ、どういう意味なのか言わないとわからないんだけど。
0952デフォルトの名無しさん
2013/07/23(火) NY:AN:NY.ANいつ何どきバックグラウンドでNTPが動いて勝手に時計動かしちゃうかわからないから計時には適さない
ってことじゃないの?
0953デフォルトの名無しさん
2013/07/23(火) NY:AN:NY.AN0954デフォルトの名無しさん
2013/07/23(火) NY:AN:NY.ANあー、なるほどね。
だとすると、どういう時間計測がいいんだろうか?
0955デフォルトの名無しさん
2013/07/23(火) NY:AN:NY.AN0956デフォルトの名無しさん
2013/07/23(火) NY:AN:NY.AN0957デフォルトの名無しさん
2013/07/23(火) NY:AN:NY.AN本当の理由は 「カレンダ変更の影響を受けないため」 だから
コイツわかってないなと思われる可能性はある
0958デフォルトの名無しさん
2013/07/23(火) NY:AN:NY.ANお勧めの参考書や練習法はありませんか?
0959デフォルトの名無しさん
2013/07/23(火) NY:AN:NY.AN0960デフォルトの名無しさん
2013/07/23(火) NY:AN:NY.ANjreにパスを通してwebsocket関係をimportしようとしてもライブラリが見当たりません。
javax.websocket..はどこにありますか?
0961デフォルトの名無しさん
2013/07/23(火) NY:AN:NY.ANA.土方に徹する。
B.分析設計を勉強する。
好きな方を選べ。
0962デフォルトの名無しさん
2013/07/23(火) NY:AN:NY.AN実はマスターしたというのは気のせいでは
どんな教科書を使ったのか知らないけれど、例えばその教科書に載っている例題のプログラムと同様のものは自力で書けますか
0963デフォルトの名無しさん
2013/07/23(火) NY:AN:NY.AN0964デフォルトの名無しさん
2013/07/23(火) NY:AN:NY.AN少し上の方で話題になってるストップウォッチを誰かのコードパクらないで書いてみれ
0965デフォルトの名無しさん
2013/07/23(火) NY:AN:NY.ANという意味でとらえてみた場合
Windowsについてくるメモ帳と同等のものを書く
書けそうなものから徐々にレベルアップしていく感じでどうだろう
javaばっかりいじって5年の選手だってjavaの全部は知らないと思う。し知らなくてもどうにかなる
0966デフォルトの名無しさん
2013/07/23(火) NY:AN:NY.AN0967デフォルトの名無しさん
2013/07/23(火) NY:AN:NY.AN情報も少ないし
0968デフォルトの名無しさん
2013/07/23(火) NY:AN:NY.ANGUIやるならVSで書けるC系がおぬぬめ
0969デフォルトの名無しさん
2013/07/23(火) NY:AN:NY.AN実践的なアプリが作れないとはまずならないだろうし
先輩に聞いたりもできるだろうし
>>958みたいなことを聞くってことは趣味か?
そうならJavaはAndroid(正確にはJavaではない)くらいしか使い道がないからやめとけ
Webならスクリプト、GUIならC#かC++
0970デフォルトの名無しさん
2013/07/23(火) NY:AN:NY.AN皆さんアドバイスありがとうございます。
これを参考にもう少し頑張ってみます。
0971デフォルトの名無しさん
2013/07/23(火) NY:AN:NY.ANこれより簡単な仕事ないだろw
0972デフォルトの名無しさん
2013/07/23(火) NY:AN:NY.AN含まれている ≠ importすれば使える
せめてフォルダ内くらい全探索しろ
0973デフォルトの名無しさん
2013/07/24(水) NY:AN:NY.ANどのクラスでラップするのが定席なの?HashSet?
自作クラスなら何を根底に考えて作るのか教えて欲しい
0974デフォルトの名無しさん
2013/07/24(水) NY:AN:NY.ANConcurrentHashMap
0975デフォルトの名無しさん
2013/07/24(水) NY:AN:NY.AN0976デフォルトの名無しさん
2013/07/24(水) NY:AN:NY.AN何をラップしたいのか、日本語でお願いします
0977デフォルトの名無しさん
2013/07/24(水) NY:AN:NY.ANスレッドプールつかったキュー方式ならソースいじらずにチューニングできたりするし
置き去りスレッド問題にも効果は大きい。ただしワークスレッドの書き方がダサいとリソースががが
0978デフォルトの名無しさん
2013/07/24(水) NY:AN:NY.ANプール自作しないように念のため貼っておく
ワークスレッドの上限とか同時並行数とかいろいろ考えると楽しくなるよ
0979デフォルトの名無しさん
2013/07/24(水) NY:AN:NY.ANんなこたーない
0980デフォルトの名無しさん
2013/07/24(水) NY:AN:NY.AN>>んなこたーない
ごもっともです
メソッドの頭にシンクロで何個もロックかけちゃったり
よくわからずにロックかけちゃった的なソースを多々みてきたので
とりあえずコンカレントしてからロック考えてくれ的な意味合いでした><
0981デフォルトの名無しさん
2013/07/24(水) NY:AN:NY.AN0982デフォルトの名無しさん
2013/07/24(水) NY:AN:NY.AN後で地獄を見るんだよね
0983デフォルトの名無しさん
2013/07/24(水) NY:AN:NY.AN0984デフォルトの名無しさん
2013/07/24(水) NY:AN:NY.AN0985デフォルトの名無しさん
2013/07/24(水) NY:AN:NY.AN本当にコンカレントに使う場合は、スレッドセーフなクラスを使ってたとしても
結局は利用する側で改めて排他制御を行う必要がある場合が多いしな
0986デフォルトの名無しさん
2013/07/24(水) NY:AN:NY.AN0987デフォルトの名無しさん
2013/07/24(水) NY:AN:NY.AN速く読み込みたいのですが、どのように実装すればいいのでしょうか。教えてください。
0988デフォルトの名無しさん
2013/07/24(水) NY:AN:NY.AN土方や素人がオレオレ実装するより遥かに速い
0989デフォルトの名無しさん
2013/07/24(水) NY:AN:NY.ANInputStreamReaderだと配列で読み込みますか?
どうやって全部読み込めばいいのでしょうか。教えてください。
0990デフォルトの名無しさん
2013/07/24(水) NY:AN:NY.AN0991デフォルトの名無しさん
2013/07/24(水) NY:AN:NY.AN自己解決しました。もういいです。
0992デフォルトの名無しさん
2013/07/24(水) NY:AN:NY.AN0994デフォルトの名無しさん
2013/07/25(木) NY:AN:NY.AN0995デフォルトの名無しさん
2013/07/25(木) NY:AN:NY.AN>>985は既存のソースに追加実装するときのことを言っていて
>>986は新規実相のことを指している
問題は>>977のような輩がパフォーマンスのことだけを考えて、後任のことを考えないソースを書くから
>>985がわりをくってるんだろ
0996デフォルトの名無しさん
2013/07/25(木) NY:AN:NY.AN0997デフォルトの名無しさん
2013/07/25(木) NY:AN:NY.AN0998デフォルトの名無しさん
2013/07/25(木) NY:AN:NY.AN0999998
2013/07/25(木) NY:AN:NY.AN1000デフォルトの名無しさん
2013/07/25(木) NY:AN:NY.AN10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。