X



Java入門・初心者質問スレ(ワッチョイなし) Part.8
0007デフォルトの名無しさん
垢版 |
2018/06/24(日) 06:23:24.05ID:Q/oEVF80
JDKファイルの違いについて聞きたいんだけど
JDK1.8.0_172とJDK10.0.1は何が違うの?
0009デフォルトの名無しさん
垢版 |
2018/06/25(月) 10:17:35.37ID:6e0n5+fT
巷の記事では無償版ガー有償版ガーとか騒いでるけど
Java案件のほとんどがBtoBの社内向けツールしかないんだから誰も金なんか払わん罠
0010デフォルトの名無しさん
垢版 |
2018/06/25(月) 11:53:29.14ID:3bOE7bXX
>>9
社内向けとかB2Bだからこそ、簡単にJREバージョンアップ出来ないから、有償版のライセンスが活きてくると思うんだが。
社内で使うから保守切れててもいいわwみたいな思想なら知ったこっちゃないが。
0011デフォルトの名無しさん
垢版 |
2018/06/25(月) 12:16:39.25ID:6e0n5+fT
バージョンアップしなくても動くのになんでわざわざ金払ってアップすんの?w
不正する意味も必要もない社内アプリで何の脅威に対して金払うの?w
頭大丈夫?ww
0012デフォルトの名無しさん
垢版 |
2018/06/25(月) 13:44:13.97ID:3bOE7bXX
そりゃ、サポート切れ製品を使うわけにはいかん、と言うコンプライアンス的な問題と、
実際にそれによって起きる問題を避けるって意味でしょ。
社内システムだからノーガードでOKは標的型の攻撃のあるこのご時世あんまり賢いとは思えないんだが。
バージョンアップしなくても動くから、バージョンアップせずにサポート(セキュリティパッチ)のある状態で使うために、ライセンスが要るんだが。
セキュリティパッチは無償で貰えると思ってた?
0013デフォルトの名無しさん
垢版 |
2018/06/25(月) 13:46:16.11ID:6e0n5+fT
で、そのサポートとやらは何のためにいるのって聞いてるんだけど?w
なんとなく怖いから?w
まぁ俺は使う側のただの木っ端だからどうでもいいけどさw
0014デフォルトの名無しさん
垢版 |
2018/06/25(月) 14:23:15.03ID:6e0n5+fT
サポートなんかとっくに切れてて脆弱性の塊であるIE8を使い続けてる
ゴミみたいな銀行と仕事のほとんどを銀行から貰ってる低レベルなゴミ会社すら存在するのに
何となく金払えよ的な雰囲気を醸し出しても払う奴なんているとは思えんけどね
0015デフォルトの名無しさん
垢版 |
2018/06/25(月) 15:20:26.62ID:3bOE7bXX
>>13
なんとなく怖いんじゃなくて、セキュリティパッチが当てられないと標的型攻撃の目標になった時にノーガードだからって言ってんじゃん。
0016デフォルトの名無しさん
垢版 |
2018/06/25(月) 15:53:20.45ID:6e0n5+fT
標的型攻撃:
特定の組織内の情報を狙って行われるサイバー攻撃の一種であり、
その組織の構成員宛てにコンピュータウイルスが添付された電子メールを送ることなどによって開始される


ソーシャルハッキングに近い不始末が何でJavaのサポートが必要なことに繋がるわけ?w
メールか何かから感染したウィルスが"たまたま"Javaの脆弱性突いて
内部の人間しか使わないどうでもいい情報しか扱ってないwebサービスの情報の流出でも危惧してんの?w
そもそも外部に公開してないどうでもいいもんの心配ばっかしてホント頭大丈夫?w
ドヤ顔で「標的型攻撃の目標ガー(キリッ!!」とかこっぱずかしいこと言ってるけどさwww
0017デフォルトの名無しさん
垢版 |
2018/06/25(月) 15:57:07.32ID:6e0n5+fT
そもそも内部にあるもんの資源にアクセスされた時点で
Javaのサポートがどうとか以前に全部終わりだよなw
こいつオラクルの回し者か?wwww
0018デフォルトの名無しさん
垢版 |
2018/06/25(月) 18:12:14.87ID:J1Om6kEx
>>16
たまたまJavaの脆弱性をつくんじゃなくて、予めJavaのバージョン把握してれば、「たまたま」ではなくてそこ狙えるでしょ。
内部の人間しか使ってないどうでもいいシステムではないよ、イントラのシステムって。
んで、大体は相乗りしてる。
突破口そのものだよ。

あんまエンタープライズ環境知らないのに、想像で喋るの辞めたほうがいいよ。
Oracleの回し者がどうのとかではなくて。
こういうケースではJava使うの辞めなきゃね、ってレベルの話だよ。単に。

>>17
内部にあるものの資源にアクセスしても、資源には普通は端末なりログイン者なりの職制でアクセス制御かかってるよね。イントラなら余計に。
それがJavaで実装されてて、ランタイムに脆弱性があることがわかってる、なんて状態で運用できないでしょ。
ってかそこを付くのが標的型の特徴なんだから。

組織内の人間に単に攻撃を仕掛けるんではなくて、組織内の人間に、その組織の(システムなり、人間系なりの)脆弱性を把握して、それを攻撃するのが標的型だよ。
単にアタック対象を絞ることじゃない。
0019デフォルトの名無しさん
垢版 |
2018/06/25(月) 19:10:21.59ID:6e0n5+fT
レスないからてっきり俺の言ってる事理解してどっか言ったかと思ってたのにw
そんなゴミみたいなレス考えるのに2時間もかかったの?w

>突破口そのものだよ
外部から見えない社内ツールが何で突破口になるの?wwねぇ?w
詳しく書いてみなよww書けるならw

>内部にあるものの資源にアクセスしても
内部にアクセスされた時点でJava関係なしに終わってるって言ってるの理解できる?w


ガチの池沼なのかね君・・
ちょっと怖いよw
0020デフォルトの名無しさん
垢版 |
2018/06/25(月) 19:25:34.16ID:6e0n5+fT
それにしても知ったかの馬鹿に限って
相手を知ったかっていう謎のチンパン負け惜しみ現象はなんなんだろうねw
馬鹿すぎて死ぬのかねこの手の馬鹿はw
0021デフォルトの名無しさん
垢版 |
2018/06/25(月) 21:08:21.96ID:J1Om6kEx
2時間もかかったというか、仕事してるからな。

外部から見えない社内ツールの何が突破口になるか、ってそりゃ、標的型の攻撃でしょ。
こういう脆弱性のある社内ツールがある、って所まで把握してやるもんでしょ。

内部にアクセスされた時点では終わらないよ。
お前は本当に足りない知識で喋るの辞めたほうがいいと思うわ。

>>20に至っては完全なブーメランだろ。
馬鹿すぎて死ぬんじゃないかな。
0022デフォルトの名無しさん
垢版 |
2018/06/25(月) 21:09:39.37ID:J1Om6kEx
Oracleが嫌い好きではなくて、ライセンスとコンプライアンスの問題なんだから、そのへんOracle憎しで勘違いされても困るわ。

標的型攻撃、を辞書の引用じゃなくて、ちゃんと理解してから書き込めよな。
0023デフォルトの名無しさん
垢版 |
2018/06/25(月) 21:25:55.48ID:22zrekbP
Javaのアンチはともかくとして、Javaの信者な程今回のライセンスとリリース方法の変更は頭の痛い問題だと思うんだがな。
金なんか払わんと言ってるのは、MSDNについてるライセンスで本番サーバ運用できるじゃん、って言ってるようなもんなんだが。
0024デフォルトの名無しさん
垢版 |
2018/06/25(月) 21:27:02.84ID:6e0n5+fT
0.1_も質問の答えになってないけど自分で自分の書いてることも理解できないのか?w

質問1
外 部 か ら 見 え な い のにどういう経路で攻撃するの?

ほれちゃんと書いてみw
標準型(爆w)の攻撃はなんとなくイントラのネットワークも攻撃できるかも?的な感じ?w


アホ
0026デフォルトの名無しさん
垢版 |
2018/06/25(月) 21:30:43.40ID:J1Om6kEx
>>24
外部から見えない所に内部からアクセスするために、内部の人間に実行させるのが「標的型攻撃」だが。

外部から見えないけれどもここにある、の情報を収集するのと、それを攻撃するのは分けて考えような。
前者の調査は調査で、ソーシャルハックなりなんなり別の方法で行うもんだろう。

あんま知らん事を語らんほうが良いと思うぞ。
0028デフォルトの名無しさん
垢版 |
2018/06/25(月) 21:34:55.56ID:6e0n5+fT
はぁあ?www
内部の人間にやらせるならJavaも糞もないよな?wwww
小学生の屁理屈より酷いねこりゃw
ここまでアホならそりゃ金出すわwwははw

ちょっと面白かったよ
アホw
0029デフォルトの名無しさん
垢版 |
2018/06/25(月) 21:35:00.88ID:J1Om6kEx
まぁ、知ったかの馬鹿にはわからんのだろうな。
どういう問題か。

早めにミスって社会的に死んでくれたら世界がもう少しマシになると思うから、どうぞその理解でPGなりSEなり続けてくれ。
0030デフォルトの名無しさん
垢版 |
2018/06/25(月) 21:37:03.59ID:J1Om6kEx
>>28
内部の人間に(不用意に)やらせるときに、サポート切れの環境があれば、脆弱性を突かせられるでしょ。
本来は何らかの認証認可がかかってんだから。

小学生以下の読解力おつかれさん。
0031デフォルトの名無しさん
垢版 |
2018/06/25(月) 21:38:45.26ID:J1Om6kEx
内部の人間にやらせる、を、内部の人間が自発的に行うと取ってるのかな?
内部の人間が不注意で行ってしまうような攻撃なんだよ。
普段の取引先とそっくり同じfromで、自己展開アーカイブに見せかけた添付ファイルつけたメールとかでな。
0032デフォルトの名無しさん
垢版 |
2018/06/25(月) 21:41:48.26ID:6e0n5+fT
あーあアホが顔真っ赤にしてファビョちゃってww
もうわかったからいいよw
ぼくちゃんの「ひょうじゅんがたこうげきなんだよッ!!(ムッキー」 はさww
がんばって見えない敵と戦うために金払えばええやんw

アホww
0034デフォルトの名無しさん
垢版 |
2018/06/25(月) 21:45:57.06ID:6e0n5+fT
お前みたいチンパンのいる会社なんて誰も攻撃しないから安心していいぞw
アホw
0035デフォルトの名無しさん
垢版 |
2018/06/26(火) 08:19:06.08ID:uhZwmHaF
今後こういうよく知らんやつに騙されてノーガード戦法取る会社がどれぐらい増えるんだろうな。
0036デフォルトの名無しさん
垢版 |
2018/06/26(火) 08:48:07.50ID:E5sTifcP
今後こういう知ったかで不安煽りまくる池沼に騙されて金払う会社がどれぐらい増えるんだろうなw
0037デフォルトの名無しさん
垢版 |
2018/07/04(水) 22:26:30.04ID:gFgZc5FG
B5F
0039デフォルトの名無しさん
垢版 |
2018/08/16(木) 01:30:57.65ID:BG1dCD2g
>>23
OpenJDKはオラクルが自分たちの特許を侵害された、となったらいつでもオラクルの保持するJavaに関する特許で相手企業を訴える事が出来るってよ
OpenJDK使って好き勝手ソースいじってたら足元すくわれる可能性有る時点で使えんわ
0042デフォルトの名無しさん
垢版 |
2018/08/16(木) 01:54:34.64ID:BG1dCD2g
サーバーサイドはライセンスに関してダメージ無しって何で言えるの?


58 名前:デフォルトの名無しさん (ペラペラ SD93-Fd17 [183.72.127.214])[sage] 投稿日:2018/07/04(水) 12:43:11.63 ID:JFNnLnouD
有償化はサーバーサイドにはノーダメージなんですね

これから勉強しようと思う者としてクライアントjavaは逆にやりたく無かったので対象が絞られて助かります
0043デフォルトの名無しさん
垢版 |
2018/08/30(木) 16:26:56.60
やさしいjavaって本で始めたのですが
コードを入力するのって
メモ帳より、便利なアプリケーションありますか?
0046デフォルトの名無しさん
垢版 |
2018/09/01(土) 22:33:07.42
>>44
IDE をぐぐったら
エクリプスてのが目に止まったんですが
素人初心者が使っても大丈夫ですか?
0047デフォルトの名無しさん
垢版 |
2018/09/01(土) 22:36:39.04ID:tt1XTLVx
>>46
大丈夫だ、問題無い
0049デフォルトの名無しさん
垢版 |
2018/10/26(金) 08:03:06.36ID:fH8x98Kt
質問お願いします。
友達がパソコン用にJavaアプリ(jar)を作ってくれたのですがそれをAndroidで動かしたいのです。

したい事はそれだけなんですがJavaをちゃんと勉強しなければ出来ないですか?
僕はプログラム知識は全くありません。

友達はAndroidには興味が無いようです。
よろしくお願いします。
0050デフォルトの名無しさん
垢版 |
2018/11/07(水) 10:51:21.44ID:Hi16wNF6
ドコジャバとか言うのが使える参考書買ったんだがドコジャバが全く操作を受け付けないんだけどw
0051デフォルトの名無しさん
垢版 |
2018/11/12(月) 19:51:15.00ID:mbyLC9qa
javaの勉強を一からしたいのですがオススメの学習サイトや参考書教えてください
プログラム言語の経験はまったくありませんがパワーシェルやbashは実務経験あります
0052デフォルトの名無しさん
垢版 |
2018/11/17(土) 17:10:40.73ID:LnuXFXWJ
言語の勉強は嘘でも誇張でもなくそこらへんの書籍1冊読むだけで1週間で理解できる
仕事で使うレベルなら言語だけ覚えても全く無意味で>2に書いてる事をググれカスとしか言いようがない
全部体系的に綺麗に説明してるサイトはどこかにあるんだろうけど今のお前じゃ見ても頭パンクするだけ
というかググって自分で理解できない時点で全く向いてないからやめとけ
0053デフォルトの名無しさん
垢版 |
2018/11/29(木) 19:10:58.87ID:vZheXhQG
>>51
それぐらいのスキルがあったら
案外テキトーにJava打っても
できるようになるんちゃう?
0054デフォルトの名無しさん
垢版 |
2018/11/29(木) 19:11:51.20ID:vZheXhQG
>>51
おっと
大事なことを伝え忘れるところだった
Javaはオワコン
0055デフォルトの名無しさん
垢版 |
2018/11/29(木) 20:53:35.10ID:JuGU4l9w
開発環境とは別に、jboss使ってvpsとかでweb環境を作りたいです。
開発環境はeclipseとか使えばできるんですが実際の環境を作れません。
どうしたらいいんでしょうか。
0058デフォルトの名無しさん
垢版 |
2018/11/30(金) 15:43:57.84ID:mfaJvNAx
今さらかよw
0059デフォルトの名無しさん
垢版 |
2018/12/01(土) 16:40:03.30ID:NU3u0E/B
・VPSにアプリケーション鯖入れる
・アプリケ鯖にJavaで作ったプログラム(warファイル)をデプロイする
・外部からの接続設定をごにょごにょする

終わり
0060デフォルトの名無しさん
垢版 |
2018/12/03(月) 22:57:23.14ID:Ibk3NTO8
過疎だからわざわざ回答してやってるのに
質問だけして礼すら言わないゴミは何なんだろうな
二度とレスつけるなゴミどもが
0062デフォルトの名無しさん
垢版 |
2019/12/01(日) 20:45:30.47ID:KTFAw+Qi
>>51
俺はブックオフで買った「世界で一番簡単なJavaのe本」が良かった。
0063デフォルトの名無しさん
垢版 |
2019/12/14(土) 03:51:48.63ID:3zIjLAlr
初心者です。よろしくお願いします
ブロンズの黒本で勉強中です

public abstract class B implements A {
// any code
}

これは
「抽象クラスとしてBをもち、BはAを継承している」
という意味で宜しいのでしょうか。
0064デフォルトの名無しさん
垢版 |
2020/01/16(木) 19:33:35.90ID:hV7pEIWr
>>63
日本語の問題。他の選択肢も書いてくれないとわからない。
0067デフォルトの名無しさん
垢版 |
2020/02/27(木) 19:51:54.75ID:ABgHpjSS
プログラムを実行中に不具合が見つかって、ソースを修正してセーブしたら、プログラムを再実行しなくても修正が反映されたりしますか?
修正が反映されるときとされないときがあるような気がするんですが。
0068デフォルトの名無しさん
垢版 |
2020/02/27(木) 20:15:14.19ID:IwCAxnDE
>>67
ホットスワップで検索
原理的に修正したソースコードとバイナリは異なるものだ
末端の処理なんかはそこのクラスのメモリ上への再ロードで行ける場合があるけど
大抵はリスタートが要ると考えた方がいい
0069デフォルトの名無しさん
垢版 |
2020/02/27(木) 20:45:40.17ID:ABgHpjSS
>>68
ありがとうございます。ググるとクラスの構成に変更があるかどうかで変わるみたいですね。
メソッドの中のコードをいじった時はうまく行くけど、新しいメソッドを追加した時はダメとか、
どういう時に再起動しなければならないかどうか感覚が分かりました。
むしろ今までちょっとプログラムを書きかえただけで必ず再起動しなければならないと思ってたので、
自分にとってはデバッグの効率アップになります。
0070デフォルトの名無しさん
垢版 |
2020/06/02(火) 11:12:09.94ID:g3vVQ5q3
CのソースをJavaに移植していて、大きな配列を作るところで引っかかったのですが、
何か対策はありますでしょうか?
具体的には、2^64=2147483647個の配列が作りたいです

double[] hoge = new double[2147483647];

Logcat:I/zygote64: Starting a blocking GC Alloc
0071デフォルトの名無しさん
垢版 |
2020/06/02(火) 11:21:24.35ID:WbBzC4+O
>>70
double型は64bitだから最低でも16GBのメモリが必要で
vmの引数に-Xmx32768?mとか指定すれば良いかと
0072デフォルトの名無しさん
垢版 |
2020/06/02(火) 11:42:28.97ID:g3vVQ5q3
>>71
基本的なByte計算を忘れてました
確かにdoubleで2^64の配列を作るには16GBが必要ですね
作っているのがスマホアプリで16GBも無いので、別の方法を考えてみます
0073◆QZaw55cn4c
垢版 |
2021/06/26(土) 17:47:35.76ID:G/mKJlN/
>>2
>eclipseの使い方を覚える

仕事で使えるもっとモダンなエディタを教えてください
0074デフォルトの名無しさん
垢版 |
2021/06/26(土) 18:16:12.57ID:qjgQHw2b
IntelliJ IDEA
0076デフォルトの名無しさん
垢版 |
2022/07/17(日) 17:41:19.47ID:lxypcvEr
拡張forについて質問したいです
要素毎に処理を変えたいのですが可能ですか?また可能であればどうしたらいいかヒントでも良いので教えて欲しいです

この場合拡張for文では無い方が良いとは思うのですが今回は拡張for文で行いたいです
0077デフォルトの名無しさん
垢版 |
2022/07/17(日) 18:07:32.32ID:lxypcvEr
すいません、お風呂に入ったら自己解決しました、、、
そもそも普通に分けたら良いですね、意味不明な質問しました
0078デフォルトの名無しさん
垢版 |
2022/07/18(月) 12:12:06.70ID:3XHr5w2l
今後は何か分からないことがあったらまず風呂に入るように。
0079デフォルトの名無しさん
垢版 |
2022/07/20(水) 16:23:06.07ID:I9gTJnGi
https://i.imgur.com/EFid30h.png
線形探索の問題らしいんだが全くコードが浮かばんわ
0080デフォルトの名無しさん
垢版 |
2022/07/20(水) 17:59:10.01ID:K1zdyF32
俺に任せろ!
0081デフォルトの名無しさん
垢版 |
2022/07/20(水) 18:04:36.98ID:K1zdyF32
public static void main(String[] args) {
 int SIZE = 6;
 int[] array = { 3, 5, 7, 11, 13, 16 };

 Scanner scanner = new Scanner(System.in);
 int num = scanner.nextInt();

 int i = 0;

 while (i < SIZE && array[i] != num) {
  i++;
 }

 if (i < SIZE) {
  System.out.println(i);
 } else {
  System.out.println("その値は見つかりません");
 }
}
0082デフォルトの名無しさん
垢版 |
2022/07/21(木) 17:13:34.81ID:486vgsuD
気分が悪くなる問題だな
0083デフォルトの名無しさん
垢版 |
2022/09/19(月) 11:23:23.11ID:ytIRXmag
つ [トラベルミン]
0085デフォルトの名無しさん
垢版 |
2022/10/10(月) 10:25:31.24ID:kKOzsgQi
staticって便利ですね
たくさんのclassの共通変数として使える
逆カプセルみたいなもんですな
いやー便利便利
癖になりそう
0086デフォルトの名無しさん
垢版 |
2022/10/10(月) 11:34:13.96ID:bRAkX7W6
propertiesファイルである項目を指定する時に別の項目を参照したいんですが可能でしょうか?
シェルスクリプトで言うと↓のような設定をpropertiesファイルでやりたいです

MY_APP_STAGE=dev
MY_APP_HOME=/usr/bin/myapp/${MY_APP_STAGE}/
0088デフォルトの名無しさん
垢版 |
2022/10/11(火) 08:20:11.13ID:T6cDAefK
共通変数として使えるって言ってるんだから正しい使い方なのでは?
0089デフォルトの名無しさん
垢版 |
2022/10/11(火) 12:19:25.21ID:z2HCv7SS
初心者だったころ(今でもか?)Cのstaticと同じと思っていたわ。
クラスを複数newしてリストで使っていて、変な動きする?と気付き理解したわ。
0092デフォルトの名無しさん
垢版 |
2022/10/16(日) 17:14:57.37ID:TpgW/+jr
>>86
propertiesにその機能はないので独自に作るなり
Apache Commons Configurationを使うなりでできそう
0093デフォルトの名無しさん
垢版 |
2022/10/16(日) 21:00:23.79ID:QtaYd7+7
プリミティブ型の配列オブジェクトに適用されるインスタンスメソッドの実装を見たいのですがどこにあるでしょうか
たとえば int[] に対して equals(int[]) を呼ぶと Object.equals(Object) と同じようなふるまいに見えるのですが確証がないので
0094デフォルトの名無しさん
垢版 |
2022/10/16(日) 21:33:19.95ID:TpgW/+jr
Javaのクラスはないけど言語仕様には

https://docs.oracle.com/javase/specs/jls/se19/html/jls-10.html
> All methods of class Object may be invoked on an array.
> Objectクラスのすべてのメソッドは、配列に対して呼び出すことができます。

とある
0095デフォルトの名無しさん
垢版 |
2022/10/16(日) 21:54:11.48ID:QtaYd7+7
ありがとうございます
配列変数に対して getClass().getSuperclass() とやると java.lang.Object が返ってきて
getClass().getMethods() を見たらオーバーライドしているメソッドはなさそうです
直接の親であるObjectクラスのメソッドが採用されるのですね

int[] a と int[] b の要素数と中身が同一の場合に a.equals(b) が真になってくれるとありがたい処理があるのですが
配列だとダメそうなので ArrayList にしようかと思います
0096デフォルトの名無しさん
垢版 |
2022/10/16(日) 22:01:51.59ID:TpgW/+jr
Arrays.equals(a, b)で比較できるよ
0097デフォルトの名無しさん
垢版 |
2022/10/16(日) 22:53:45.18ID:QtaYd7+7
>>96
アドバイスありがとうございます
equals(Object) メソッドが使いたかったのです

具体的に言いますと (厳密にはちょっと違いますが) int[] の配列オブジェクトが複数あってそれを Set<int[]> に入れます
値が同じで別な配列オブジェクト {1, 2, 3} が重複して入らずさらに Set.contains({1, 2, 3}) が正しく真を返してくれると都合がいいのですが配列だとダメそうです
0098デフォルトの名無しさん
垢版 |
2022/10/16(日) 22:59:59.83ID:TpgW/+jr
なるほど
0099デフォルトの名無しさん
垢版 |
2022/10/17(月) 10:44:08.58ID:njlzm8Oo
Android studioでMainActivityに以下の様に内部クラスを定義すると
public class Test {
public String str;
}
Test部分がハイライトで表示されて、カーソルを合わせると
Inner class ‘Test’ may be ‘static’
と表示されます。
どういう意味でしょうか?
Testは複数インスタンスを作るのでstrはstaticにはしません。
特にエラーにはなりませんが気持ち悪いのでハイライトを消したいです。
0100デフォルトの名無しさん
垢版 |
2022/10/17(月) 11:10:05.73ID:QgfiLyrO
外部クラスにアクセスしてないので
内部クラス(=非staticなメンバクラス)である必要がない
staticなメンバクラスにすれば? って話でしょ
0101デフォルトの名無しさん
垢版 |
2022/10/17(月) 11:10:37.30ID:iB2BuPk8
>>99
インナークラスのTestはたぶんstaticです、なので
static class Test {
にすればおk
0102デフォルトの名無しさん
垢版 |
2022/10/17(月) 11:45:06.69ID:dC+cT9T7
一番わかりやすいjavaの本か動画Udemyなどないかな
0103デフォルトの名無しさん
垢版 |
2022/10/17(月) 11:58:42.35ID:iB2BuPk8
>>102
入門書
『新・明解Java入門 第2版 (新・明解シリーズ)』

データ構造
『新・明解Javaで学ぶアルゴリズムとデータ構造 第2版 (新・明解シリーズ)』

実践的プログラミング
『プロになるJava―仕事で必要なプログラミングの知識がゼロから身につく最高の指南書』

がおすすめ
僕は望洋先生のアルゴリズムとデータ構造をボロボロになるまで読んだなあ
0104デフォルトの名無しさん
垢版 |
2022/10/17(月) 12:26:02.34ID:o1tMCfnC
最強のJava入門書はどれか?(2016年秋)
Java入門書、ベストな選び方の、その先へ
https://ascii.jp/elem/000/001/238/1238080/

矢澤久雄「プログラムはなぜ動くのか」、高橋征義「たのしいRuby」など、
ベストセラーの著者や業界人が、
「スッキリわかるJava入門」が、なぜ売れたのかを分析している

元祖スッキリシリーズの本。
この本から、多くの言語・技術に広がっていった
0105デフォルトの名無しさん
垢版 |
2022/10/17(月) 13:52:35.94ID:njlzm8Oo
>>101
ありがとうございます。
staticを付けてワーニングは消えました。
メンバー変数に付けるstaticは共用になるけどclassは特に影響ないのですね。
0106デフォルトの名無しさん
垢版 |
2022/10/17(月) 20:18:51.42ID:iB2BuPk8
>>105

classにstaticをつけると

class Outer {
 int outerValue;

 class Inner {
  int getValue() {
   return outerValue;
  }
 }
}

こういう外側のインスタンスメンバにアクセスするのができなくなる

あとはインスタンス化するとき

// 非static classはこう
var inner = new Outer().new Inner();

// static classはこう
var inner = new Outer.Inner();

違いはそれくらい
0107デフォルトの名無しさん
垢版 |
2022/10/18(火) 20:47:06.34ID:1IjYJ9hM
>>103
>>104
ありがとう新明解国語辞典見てみるわ
0108デフォルトの名無しさん
垢版 |
2022/10/18(火) 20:47:29.25ID:1IjYJ9hM
間違えた新明解
0109104
垢版 |
2022/10/19(水) 12:27:03.98ID:rgBskw8B
多言語・多技術の2大著者が、掌田津耶乃・山田祥寛

それに続くのが、柴田望洋・スッキリ・やさしい・猫でも・クジラ飛行机など
0110デフォルトの名無しさん
垢版 |
2022/10/22(土) 09:23:29.67ID:jFXR8DIz
あるwebサイトで動いている.jsのサイトがあって、
(そこでは.jsと.cssがgithubで配布されてる)
それを自分のブラウザで実行してみたいのだが、
つまり上にあるwebサイトにいかず、自分のデスクトップにある.htmlファイルなんかをクリックすることでブラウザで開いてい実行したいのだが、
どのようにしたらいいのか
.jsと.cssだけではなく、動いているwebサイトの中のソースも必要なのだろうか
具体的にどう記述してやればいいのか
0111デフォルトの名無しさん
垢版 |
2022/10/23(日) 05:19:04.70ID:aEccmvj8
0円で売ってるHTMLの入門書の0ページに書かれてるようなことすらわからないチンパンは
5chで質問する前に本読むなりググったりしろゴミ
0112デフォルトの名無しさん
垢版 |
2022/10/23(日) 05:29:08.07ID:5goUGe53
>>111
コミュ障だからってウザ絡みでしか対人関係を築くスキルが無い人は面倒なのと、
そういう煽りは時代遅れなんでいいです。
なので引き続き再掲


あるwebサイトで動いている.jsのサイトがあって、
(そこでは.jsと.cssがgithubで配布されてる)
それを自分のブラウザで実行してみたいのだが、
つまり上にあるwebサイトにいかず、自分のデスクトップにある.htmlファイルなんかをクリックすることでブラウザで開いてい実行したいのだが、
どのようにしたらいいのか
.jsと.cssだけではなく、動いているwebサイトの中のソースも必要なのだろうか
具体的にどう記述してやればいいのか
0113デフォルトの名無しさん
垢版 |
2022/10/23(日) 08:01:21.99ID:ARaLWBIR
内容による。

ていうかそれ以前の問題として、スレチだ。
ここは Java のスレであって JavaScript のスレではない。
0115デフォルトの名無しさん
垢版 |
2022/10/23(日) 09:09:59.18ID:5goUGe53
あるwebサイトで動いている.jsのサイトがあって、
(そこでは.jsと.cssがgithubで配布されてる)
それを自分のブラウザで実行してみたいのだが、
つまり上にあるwebサイトにいかず、自分のデスクトップにある.htmlファイルなんかをクリックすることでブラウザで開いてい実行したいのだが、
どのようにしたらいいのか
.jsと.cssだけではなく、動いているwebサイトの中のソースも必要なのだろうか
具体的にどう記述してやればいいのか

分かるならすっと即答してくれりゃ解決するのになぁ、勿体ぶるってことは知らないってことなんだろうなぁ、でも口をはさみたいという?
0116デフォルトの名無しさん
垢版 |
2022/10/23(日) 09:31:10.70ID:aEccmvj8
準知的障害者の怖いところってこういう自覚0なところなんだよな
学生のときに全教科オール1取ってる奴がいたんだけどそいつは普通に会話もできるし家庭教師もつけてたんだわ
でも毎期全教科オール1
大人になってから偶然あったときはいろいろと残念なことになってたのは言わずもがな
この無自覚のバカもたぶん同じタイプの池沼で小学生でもHTMLの本渡せば1分でわかることを延々と他人に聞く
自決能力が皆無の思考能力0バカ人間
お前がプログラムを学んでも周りに迷惑をかけるだけなのでとっとと諦めて消えろゴミ
0117デフォルトの名無しさん
垢版 |
2022/10/23(日) 09:52:19.06ID:RbPPD++E
自覚ゼロでワロタ
0118デフォルトの名無しさん
垢版 |
2022/10/23(日) 09:55:36.17ID:RbPPD++E
こういうやつ某QAサイトにもいるわ
質問に答えてないことを指摘したら顔真っ赤にしてキレ出すやつw
答える気ないならスルーしろよw
0119デフォルトの名無しさん
垢版 |
2022/10/23(日) 10:09:32.61ID:aEccmvj8
お前のは質問とすら言えないほど幼稚な内容だからただの荒らしなんだわ
答えたら100%居つくからこうやって撃退するしかないんだよね
わかったらとっとと消えろゴミ
0121デフォルトの名無しさん
垢版 |
2022/10/23(日) 11:45:50.97ID:5goUGe53
あるwebサイトで動いている.jsのサイトがあって、
(そこでは.jsと.cssがgithubで配布されてる)
それを自分のブラウザで実行してみたいのだが、
つまり上にあるwebサイトにいかず、自分のデスクトップにある.htmlファイルなんかをクリックすることでブラウザで開いてい実行したいのだが、
どのようにしたらいいのか
.jsと.cssだけではなく、動いているwebサイトの中のソースも必要なのだろうか
具体的にどう記述してやればいいのか

教えてくださいよ、勿体ぶらずに
0124デフォルトの名無しさん
垢版 |
2022/10/23(日) 12:04:10.45ID:5goUGe53
>>122
そこはワッチョイもあるしIPも表示するカスなので無理です
あと末尾Mですね

>>123
親切にありがとう
でもせっかくだから四半世紀くらい居座らせてもらおうかなってこれも何かの縁でしょうし
0125デフォルトの名無しさん
垢版 |
2022/10/23(日) 12:06:06.03ID:90lYCcy6
217 今、天王星のwiki見てきたら軌道傾斜角(i) が0.774°だった (ワッチョイ 897b-UuoP) 2022/10/23(日) 11:41:24.81 ID:EvlJxUOY0
今のワイ
・ほぼほぼgitの扱いが分かるかもしれないになってきた
・pythonもなんとなく分かるかかもしれないになってきた
・webuiの機能についてもなんとなく頭に入った、web版とローカル版のプロンプトの違いもなんとなく
・wikiのプロンプト変換便利じゃねと気づく
・ギフハブみて.cssと.jsを得て、オンラインで動かしてみてえなぁと思う
(オフラインで自分のブラウザで実行してみたい、wikiとかの項目がない感じで)ブラウザにこの画面だけ出る感じで
https://i.imgur.com/OPzQsQb.png

早速プログラム板いって聞いてみるも速攻で煽れたので暴れ返し中
Java入門・初心者質問スレ(ワッチョイなし) Part.8
https://mevius.5ch.net/test/read.cgi/tech/1528554781/110 これがワイ
0127デフォルトの名無しさん
垢版 |
2022/10/23(日) 12:27:20.53ID:XiKhR8QJ
>>121
ブラウザで普通に保存したらいんじゃないかな
0128デフォルトの名無しさん
垢版 |
2022/10/23(日) 12:59:59.36ID:5goUGe53
普通に保存じゃ満足いかんでな
せっかくやから学んでみよう思ったんやで
0129デフォルトの名無しさん
垢版 |
2022/10/23(日) 13:23:36.79ID:XiKhR8QJ
>>127
> あるwebサイトで動いている.jsのサイトがあって、
あるサイトとはどこのサイトなの?

> wikiのプロンプト変換便利じゃねと気づく
何のwikiなの?
プロンプト変換って何?

> ギフハブみて.cssと.jsを得て、オンラインで動かしてみてえなぁと思う
ギフハブの何を見たの?
0130デフォルトの名無しさん
垢版 |
2022/10/23(日) 13:24:20.69ID:XiKhR8QJ
何をやろうとしてて何に困ってるのかわからないので
もっと詳しく具体的に教えて
0131デフォルトの名無しさん
垢版 |
2022/10/23(日) 15:29:35.01ID:5goUGe53
あるwikiでギフハブの.cssと.jsを参照しているファイルがある
これをオフラインでブラウザで表示しようとしている
適当にフォルダを作りその中にindex.htmlを作り
stylesフォルダ(ここにcss入れる)、scriptsフォルダ(ここに.js入れる)も作る
https://i.imgur.com/oeV13yw.png
indexはこんな感じや。うごかない。
0132デフォルトの名無しさん
垢版 |
2022/10/23(日) 16:27:10.09ID:5goUGe53
自力で何とかいけた
クソやりたくもないのにhtmlやのjavaやのcssやの
もう気づいたら夕方やんけ
htmlの基礎からcssの基礎からjavaスクリプトの基礎から何時間かかったよ
くたびれた

せっかくやからパイソンも勉強するためにこのスレにいることにするで
0133デフォルトの名無しさん
垢版 |
2022/10/23(日) 16:30:59.15ID:XiKhR8QJ
Pythonスレの方がいんじゃない?
0134デフォルトの名無しさん
垢版 |
2022/10/23(日) 16:35:15.48ID:XiKhR8QJ
自己愛性パーソナリティ障害っぽいな
0135デフォルトの名無しさん
垢版 |
2022/10/23(日) 16:36:57.76ID:5goUGe53
>>111
このあたりのやり取りからファイトメラメラになったからここを巣にするで
もちろんパイソンも行き来するが
案外楽しいものやなプログラミング
あとリアルスティックにするとラブドールぽくなるから注意や
あ、これはなんUに書くべきか
まあええで
0136デフォルトの名無しさん
垢版 |
2022/10/23(日) 16:38:02.71ID:YzYXhWAT
JavaScript(JS)の質問は、web制作管理板の方へ書き込んでください!

ここは、Java のスレです。
JSとは異なる言語です!
0137デフォルトの名無しさん
垢版 |
2022/10/23(日) 16:41:54.10ID:XiKhR8QJ
>>135
JavaとJavaScriptは違うものだよ
0138デフォルトの名無しさん
垢版 |
2022/10/23(日) 16:53:54.42ID:4U8zQ6vT
ファイトメラメラという言葉のセンスがたまらないw
昭和の小学生(現在無職おじ)って感じなん?
0139デフォルトの名無しさん
垢版 |
2022/10/23(日) 17:56:46.87ID:a4G1Se92
Web制作板で聞いたらみんないっぱい答えてくれると思うけどw
ここだとおそらく今後は単に無視されるよ
Java言語っていうプログラミング言語のスレでしかないもんここは
0141デフォルトの名無しさん
垢版 |
2022/10/23(日) 19:04:26.21ID:4U8zQ6vT
ファイトwメラメラwwwなんだからしょうがないじゃないかーw
ムッシュムラムラみたいなもんだよw
0142デフォルトの名無しさん
垢版 |
2022/10/23(日) 19:12:00.30ID:JMkngxYN
せや。
もっと言うたれ。
0143デフォルトの名無しさん
垢版 |
2022/10/25(火) 12:30:07.19ID:5OiGFok6
来月からJavaのプロジェクトに入るのですが
未経験で独自フレーム扱ってる企業で経験積んだ場合、springとか使ってる企業に転職するとき不利になったりしますか?
0144デフォルトの名無しさん
垢版 |
2022/10/25(火) 16:46:06.98ID:DR1nXe5F
>>143
springの即戦力を探していて、同じくらいのレベルのspring経験者が競合だったら
不利になるかもしれないね。
あとは宗教的理由でspring使っていなかった人でなし扱いされるとか。

ぶっちゃけ、派遣契約じゃあるまいし、転職でそんな末節の部分の経験が
クローズアップされて重要視されて採用の可否を左右するような会社だったら
そいつは間違いなく自転車操業でその場当たりの仕事をしてるだけのブラック
だから、やめたほうがいいよ。
0145デフォルトの名無しさん
垢版 |
2022/10/25(火) 18:37:47.22ID:+4Zatp0y
独自フレームワークはキツイね
当たり前だけど、ググっても使い方が出てこない
独自フレームワーク使ってるような現場は学習コストを理解できない奴が多いから即戦力を求められたりもする
避けたほうがいいよ
0147デフォルトの名無しさん
垢版 |
2022/10/26(水) 06:57:59.07ID:s5JffxrA
>>144
なるほど
詳しく教えていただきありがとうございます
同レベルの競合以外だとそんなに気にする要素ではないんですね
他の部分で差をつけれるよう頑張りたいと思います
0148デフォルトの名無しさん
垢版 |
2022/10/26(水) 07:01:20.87ID:s5JffxrA
>>145
現場入り前に勉強しておきたいと色々調べましたが全く情報出てこなかったですね
仰るとおり当然なのですが
0149デフォルトの名無しさん
垢版 |
2022/10/26(水) 07:03:56.22ID:s5JffxrA
>>146
すみません
僕自身が勝手にそう呼んでいるだけです
誤解招かないように今後は省略せず言った方がいいですね
0150デフォルトの名無しさん
垢版 |
2022/11/01(火) 18:53:21.51ID:ABUFDoTf
マルチコア/マルチスレッドの恩恵を受けるには自分でスレッド生成しないといけないのですか
コンパイラーやランタイムが依存関係のないコードを見つけて勝手に複数スレッドに割り当ててくれるとかはない?
0151デフォルトの名無しさん
垢版 |
2022/11/01(火) 19:24:05.52ID:dsWI6EQ8
stream.parallel()でおk
0152デフォルトの名無しさん
垢版 |
2022/11/02(水) 13:20:19.60ID:vMMEg+Mo
mainメソッドでどこも引数はstring型の配列で書かれていますが、配列じゃないstring型では駄目な理由ってなんでしょうか?(String argsとしている例文が無いので気になりました)
0153デフォルトの名無しさん
垢版 |
2022/11/02(水) 13:35:01.59ID:psS6Ohct
コマンドライン引数は複数渡されるから
配列が嫌なら可変長引数でもいいよ

String args...
0154デフォルトの名無しさん
垢版 |
2022/11/02(水) 13:36:56.10ID:Mo275nPV
mainメソッドの引数の型はjavaコマンドの仕様で決まってるから、変えたらjavaコマンドからmainメソッドが呼ばれない

https://docs.oracle.com/en/java/javase/19/docs/specs/man/java.html
java コマンドは、Java アプリケーションを起動します。これは、Java仮想マシン(JVM)を起動し、
指定されたクラスをロードし、そのクラスのmain()メソッドを呼び出すことによって行われます。
このメソッドは、publicかつstaticに宣言され、いかなる値も返してはならず、
パラメータとしてString配列を受け入れなければなりません。
メソッド宣言は次のような形式です。

public static void main(String[] args)
0156デフォルトの名無しさん
垢版 |
2022/11/05(土) 06:14:02.19ID:NStZHHEn
vscodeとdockerでj2ee開発がしたいです
0157デフォルトの名無しさん
垢版 |
2022/11/12(土) 14:55:11.16ID:qdrZPiGz
そうですか。どうぞ。思う存分開発してください。
0158デフォルトの名無しさん
垢版 |
2022/11/12(土) 17:35:28.18ID:FmoZ/iIO
>>151
レス遅れてごめんなさい
ありがとうございます

やはり何がしかのコーディングでの細工がいるということですね
勉強してみます
0159デフォルトの名無しさん
垢版 |
2022/11/15(火) 00:58:46.79ID:jauoG5/n
Set の中のオブジェクトへの参照を順次検索なしに直接取り出すことはできますか?

a と b は同じクラスの等価で異なるオブジェクトです (a!=b かつ a.equals(b) が真)
オブジェクト a への参照だけが既知で set.contains(a) が真の場合に set の中にあるオブジェクト b への参照を取り出すことはできないでしょうか
Set のサイズが大きいのでできれば順次検索は避けたいです

現在はとりあえず Set の代わりに Map を使って key と value に同じオブジェクトにする (map.put(b,b) のようにして要素を入れる) ことにして map.containsKey(a) が真のときに map.get(a) で b への参照を取得していますが他にいい方法がありましたら
0160デフォルトの名無しさん
垢版 |
2022/11/15(火) 01:18:13.67ID:+7S+1nVk
java.util.Set だと a.equals(b) が真のとき、 set.contains(a) と set.contains(b) は排他のはずだが……
java.util.Map も同一キーで複数の値は持てないはず

commons とかのサードパーティライブラリに MultiMap とか MultiValuedMap とかあるからそっち使うか
適当なクラスを自作するしかないんじゃね?
0161デフォルトの名無しさん
垢版 |
2022/11/15(火) 02:06:57.12ID:jauoG5/n
>>160
レスありがとうございます
説明が悪くすみません Set / Map に重複要素/重複キーが許されないのは承知しています

java.util.Set の中に入っているのはオブジェクト b だけで、a.equals(b) (すなわち Set.cotains(a) が真) を満たすオブジェクト a を釣り餌?にして b への参照を取り出したいというのが希望です
0162デフォルトの名無しさん
垢版 |
2022/11/15(火) 11:50:32.66ID:EEXuOoXM
その用途だとMapが良いと思うよ
比較のkeyと取得したいvalueが異なるんでしょ
JavaのHashSetは内部でHashMapを使ってるからコストは同じだよ
0163デフォルトの名無しさん
垢版 |
2022/11/15(火) 11:51:09.49ID:EEXuOoXM
Setが内部に保持してるオブジェクトを取得するのは無理
0164デフォルトの名無しさん
垢版 |
2022/11/15(火) 11:58:16.62ID:EEXuOoXM
自作するとしたら配列に入れて二分探索しとくかなー自分なら
0165デフォルトの名無しさん
垢版 |
2022/11/15(火) 23:19:45.65ID:jauoG5/n
>>162-164
なるほど HashSet のドキュメントとソースを見ると HashMap を使って実装していました (細かいところは理解できませんでしたが)
Mapを使うと要素追加が map.put(b, b) となるところになんか違和感を感じていたのですが 気持ちの問題だけでやりたいことはできているのでこのまま行くことにします

ありがとうございます
0166デフォルトの名無しさん
垢版 |
2022/11/19(土) 23:34:45.44ID:DF7A563Z
なんかCSVファイルをレコードの3番目の項目をキーにソートしたいんですが
文字列が入ってるからint型とかにするのは無理
なんでこんなに複雑になるんだろう
何か良い方法ありますか?

Arrays.sort
これってint型しか入れられないような
駄目

Comparableインターフェースを自作してなんちゃらって
大掛かり過ぎて書くのもテストするのも偉い大変そうでパス

なんか結局キーにしたい項目一番左に持って行って全部入れ替えながら
もう一回カンマ区切りのレコード編集し直してそれを配列でなくリストに入れてって
リストをソートして
ソート後のリストからレコード並びを元の並びに直しながら取り出して
FileWriterしてみたいな超見辛くてダラダラ長ったらしくなった

IOどっちもテキストファイルだし外部ソートにしてなんか適当なツールにやらせた方が早かった気もするけど
外に飛んでる間に何起きるかわかんないし処理内容から非同期処理に出来ないし
0167デフォルトの名無しさん
垢版 |
2022/11/19(土) 23:58:21.53ID:k9Zay3Yr
特定のコードを入れると処理時間が増えてしまう現象があり原因を調べたいと考えています
(問題となるコードの実行は1msecもかからないがパスが変わらないはずの後続の処理時間が数10%増加する)

メソッドごとの経過時間や通過回数をレポートできるようなツールはないでしょうか
仕事ではなくお遊びのプログラムなのでフリーのものが希望です
0170デフォルトの名無しさん
垢版 |
2022/11/20(日) 00:08:47.23ID:JVotRhyN
俺だったらLinqのJava移植を探して使うかな(良いのがあるか知らんけど)
良いライブラリ見つけたら教えてくれや
0171デフォルトの名無しさん
垢版 |
2022/11/20(日) 00:12:58.34ID:awzhVuxm
Eclipse Collectionsが良いよ
メソッド名が独特だけど機能的にはLINQと同等
0172デフォルトの名無しさん
垢版 |
2022/11/20(日) 00:34:38.24ID:f6/NLLue
>>171
なかなかいいね
メソッド呼び出しのたびにコレクションを生成してるっぽいのが気になるけど
0173デフォルトの名無しさん
垢版 |
2022/11/20(日) 00:36:22.88ID:awzhVuxm
そだね、lazyにするといんだけど暗黙にlazyなLINQよりそこは面倒だね
0174デフォルトの名無しさん
垢版 |
2022/11/20(日) 00:37:59.54ID:awzhVuxm
RustのようにIteratorをリッチにする方が個人的には気に入ってるから自分は自作のもの使ってる
0176デフォルトの名無しさん
垢版 |
2022/11/21(月) 00:31:17.15ID:zl3srpIC
> キーにしたい項目一番左に持って行って

この時点で行から目的のカラムが取り出せてるのだよね
行がStringからあと一息で
Comparator<String>.compare(String, String)
が作れるはず
その他のメソッドは実装不要
それを
Arrays.sort(String[], Comparator)
に食わせる
0178デフォルトの名無しさん
垢版 |
2022/11/23(水) 16:38:10.39ID:AFJ8L5wc
File fileA = new File("D:\\imgCom\\imgA.png");
File fileB = new File("D:\\imgCom\\imgB.png");
imgA = ImageIO.read(fileA);
imgB = ImageIO.read(fileB);
対象ファイルはあるのに何故ファイルの読み込みエラーが出るのでしょうか?
0179デフォルトの名無しさん
垢版 |
2022/11/23(水) 17:38:44.00ID:vX9x7DJK
学生だと思うけど質問する奴にこういう小中学生レベルの頭の弱い奴しかいない現象に名前をつけろ!!!
0180デフォルトの名無しさん
垢版 |
2022/11/23(水) 17:39:36.21ID:gB3NJ+gJ
>>178
エラーメッセージ省略せずにみせて
0181デフォルトの名無しさん
垢版 |
2022/11/23(水) 18:57:56.07ID:AFJ8L5wc
>>180
javax.imageio.IIOException: Can't read input file!
at java.desktop/javax.imageio.ImageIO.read(ImageIO.java:1308)
at testCase.Test.main(Test.java:19)
になります
0182デフォルトの名無しさん
垢版 |
2022/11/23(水) 19:26:34.18ID:gB3NJ+gJ
・ファイルが存在しない
・ファイルに排他ロックが掛けられている
・ファイルの読み取り権限がない
・ファイルがpngじゃない
あたりじゃないかな
0183デフォルトの名無しさん
垢版 |
2022/11/23(水) 19:44:00.90ID:AFJ8L5wc
ありがとうございます。
対象ファイルの「プロパティ」->「セキュリティー」タブ->Object nameから絶対パスをコピーしてるので、間違いは無いかなと思います。
また、アクセスコントロールにあってもFull controlはAllowです。
ファイルに排他ロックが掛けられているか調査方法を調べて確認してみます。
0184デフォルトの名無しさん
垢版 |
2022/11/23(水) 20:50:38.98ID:fWlvRvyL
パスが正しいかもチェックしてみたら?

fileA.exists();
fileB.exists();

https://docs.oracle.com/javase/jp/8/docs/api/java/io/File.html#exists--
この抽象パス名が示すファイルまたはディレクトリが存在するかどうかを判定します。
戻り値:
この抽象パス名が示すファイルまたはディレクトリが存在する場合はtrue、そうでない場合はfalse
0185デフォルトの名無しさん
垢版 |
2022/11/23(水) 20:52:17.73ID:fWlvRvyL
さらに読み取れるかどうかも。

https://docs.oracle.com/javase/jp/8/docs/api/java/io/File.html#canRead--
public boolean canRead()
この抽象パス名が示すファイルをアプリケーションが読み込めるかどうかを判定します。一部のプラットフォームでは、読取り不可としてマークされたファイルの読取りを許可する特別な権限を使用してJava仮想マシンを起動できる場合があります。その結果、このメソッドはファイルに読取り権がない場合でもtrueを返す可能性があります。
戻り値:
この抽象パス名が示すファイルが存在し、さらにアプリケーションがそれを読み込める場合だけtrue、そうでない場合はfalse
0186デフォルトの名無しさん
垢版 |
2022/11/23(水) 23:29:57.99ID:AFJ8L5wc
便利な関数ありがとうございます!
上記の関数を使用し、パスと読み取りを確認したところ、
どちらもfalseでした。
そのため、まずはパスを確認してみます。
0187デフォルトの名無しさん
垢版 |
2022/11/23(水) 23:56:32.27ID:VU/69mxi
ファイルパスをコピペしてFile.exists()がfalseって、ファイル名に多バイト文字使ってたりしない?
もし多バイト文字使ってて、Windows, Linux, Macが混在してるなら、MacのNFDモドキが悪さしてる可能性もある
(ソースコードかファイル名のどちらかがNFDモドキで、文字列の見た目は同じだけどbyte列は異なってる状態)
0188デフォルトの名無しさん
垢版 |
2022/11/24(木) 00:17:48.48ID:GOz0PxsF
window10の環境下において、
ペイントから新規作成した画像ファイルに半角英字でファイル名を付けて保存したので、多バイト文字ではないと思っているのですが。
また、ソースコードの文字エンコードをMS932、US-ASCII、UTF-8などに変更して実行しましたが結果は上記と同じくfalseのままでした。
0189デフォルトの名無しさん
垢版 |
2022/11/24(木) 00:36:04.87ID:nMnqMq4E
ああ、多分分かった
その、ファイルプロパティダイアログからコピペすると余計な制御コードがパスの文字列の先頭についてるみたい(Windows10)
"D:\\.." の "D" の前に余計な(見えない)キャラクタコードが含まれてるはず
"D" からダブルクオートの前まで削除して手打ちしなおすと動作したりしない?
0190デフォルトの名無しさん
垢版 |
2022/11/24(木) 01:38:13.56ID:GOz0PxsF
手打ちでも動作はされませんでした。
パスの書き方がおかしいのか調べてみます。
0191デフォルトの名無しさん
垢版 |
2022/11/24(木) 02:03:32.83ID:GOz0PxsF
連投すみません。解決いたしました。
原因はパスの書き方で、
File fileA = new File("D:/imgCom/imgA.png");
だとパスが通りました。
いろいろと教えていただき、ありがとうございました。
0192デフォルトの名無しさん
垢版 |
2022/11/24(木) 08:22:46.61ID:FTZ0YYIj
Ruby では、"〜"内では、\ に特殊効果があるけど、
'〜'内では、単なる普通の文字

'C:\Users\Owner\Documents\a.txt'
"C:\\Users\\Owner\\Documents\\a.txt"

または、
'C:/Users/Owner/Documents/a.txt'
"C:/Users/Owner/Documents/a.txt"
0194デフォルトの名無しさん
垢版 |
2022/11/24(木) 10:20:34.70ID:vkGk9f3G
Unicodeの問題だったのかな?
Shift_JISでは円記号とバックスラッシュの文字コードは同じだったけど、Unicodeでは区別される
円記号を2つ並べても意味がない
0195デフォルトの名無しさん
垢版 |
2022/11/24(木) 12:09:55.30ID:nMnqMq4E
>>191
それなら new File(”D:\\imgCom\\imgA.png”) でも動作するよ
>>178で駄目だったときはエクスプローラのダイアログからコピペしてから \ を2重化したんじゃない?
その場合、>>189で書いたように " と D の間に U+202A (LEFT-TO-RIGHT EMBEDDING) キャラクタ(見えない)が含まれてしまうので、
Java (というかWindows) は [U+202A]D:\imgCom\imgA.png というファイルを開こうとして失敗する

189できちんと2重にしてたから理解していると思って雑に"コピペして"とか書いたけど、
Javaでは " で囲まれたStringリテラル中の \ はメタキャラクタだから \ 自体は常に2重にしないといけない
コピペしてもそこは修正するという前提だった(すまんです
0196195
垢版 |
2022/11/24(木) 12:12:54.20ID:nMnqMq4E
すまん
File("...")
のところのダブルクオートが1byteじゃなくなってるけど、そこはただの 0x22 ね
0197デフォルトの名無しさん
垢版 |
2022/11/24(木) 15:40:02.70ID:SQk/u2nY
>>195
確かにバックスラッシュ2個でも実行できました。
LEFT-TO-RIGHT EMBEDDING) キャラクタが含まれていたから失敗していたわけですね。
大変勉強になりました。ありがとうございます!
0198デフォルトの名無しさん
垢版 |
2022/11/25(金) 09:44:48.95ID:bgrwCnOq
対象ディレクトリの中にファイル(001.et,002.et,003.et, .. xxx.et)が複数あり、
001.etと002.etを比較し、その後に002.etと003.etを比較、さらに003.etと004.et
を比較し、最後のファイルを比較したら完了するプログラムを作りたいのですが、
書き方としてはdo whileかwhileどちらが一般的でしょうか?

条件:ディレクトリには2つ以上のファイルが存在するものとする
0199デフォルトの名無しさん
垢版 |
2022/11/25(金) 11:20:26.35ID:JrCD+ieJ
Ruby では、each_cons を使う

p ary = %w(35 11 3) # 文字列配列
#=> ["35", "11", "3"]

ary.sort!
p ary #=> ["11", "3", "35"]

p result = ary.each_cons( 2 ).map{ |a, b| a + b }
#=> ["113", "335"]

"11" + "3"
"3" + "35"
0201デフォルトの名無しさん
垢版 |
2022/11/25(金) 19:12:08.62ID:bTqKud61
>>198
> 条件:ディレクトリには2つ以上のファイルが存在するものとする

とはいえ二個未満のときに対応できないのは嫌だから
do whileかwhileかでいうとwhileでやるかな?
あと自分でやるならforでやっちゃうかな?
https://ideone.com/EmiFYo
File[] files = {
new File("A"), new File("B"), new File("C"), new File("D")
};
for (int i = 0; i < files.length - 1; i++) {
System.out.println(files[i]+", "+files[i + 1]); // ここで比較
}
0202デフォルトの名無しさん
垢版 |
2022/11/25(金) 22:07:40.64ID:HKx7E2/E
public static void main(String[] args) {
 var dir = Path.of(".");

 try (var files = Files.list(dir)) {
  var it = files.iterator();
  var p = (Path) null;

  while (it.hasNext()) {
   var c = it.next();

   if (p != null) {
    System.out.println(p + ", " + c);
   }

   p = c;
  }
 } catch (IOException e) {
  throw new RuntimeException(e);
 }
}
0203デフォルトの名無しさん
垢版 |
2022/11/25(金) 22:07:52.98ID:HKx7E2/E
whileだな
0205デフォルトの名無しさん
垢版 |
2022/11/26(土) 06:20:46.32ID:2itlL9Sj
ファイルパスエラーとかっていう超絶頭の悪い問答を何日も続ける低次元っぷりに絶望するゴミスレ
0206デフォルトの名無しさん
垢版 |
2022/11/28(月) 15:19:52.61ID:jKVNeY3K
クラスAとクラスBがあって、
クラスBの実行にはクラスAの中のaと言う値が必要な時、
クラスAからクラスBにaを渡すのと、
クラスBからクラスAのaを取得するのはどっちがいいんでしょうか
0207デフォルトの名無しさん
垢版 |
2022/11/28(月) 17:03:36.71ID:9tb5+u7U
クラスBがクラスAを参照するほうが依存関係が少なくなるから良い
0208デフォルトの名無しさん
垢版 |
2022/11/28(月) 17:09:19.96ID:ff+2O8Yw
ttps://ideone.com/L14rLK
こんな感じ?
クラスBからクラスAのaを取得する方がいいかも?
0209デフォルトの名無しさん
垢版 |
2022/11/28(月) 19:10:10.52ID:nGrDVWhW
>>206
一般解はないよ
時と場合により適切な方を選ばなければならない
コーディングパターンで依存関係を決めるべきではない
依存関係をってのはアーキテクチャやドメインの問題だから
0210デフォルトの名無しさん
垢版 |
2023/01/12(木) 22:12:02.31ID:dCwtC9IB
"2.3億"という文字列から、230000000という整数値を得たいんですがどうしたらいいですか?

double d = 2.3;
System.out.println((int) (d * 100000000));

229999999
0211デフォルトの名無しさん
垢版 |
2023/01/13(金) 02:48:21.24ID:JLkiFGKs
文字列から小数点と「億」を取り除いて整数にしてからかけ算する
乗数は小数点の位置と取り除いた漢字できまるはず
0212デフォルトの名無しさん
垢版 |
2023/01/13(金) 06:59:00.59ID:vtlsQH+w
小数点以下の数字の個数を数えて

1個なら 億*0.1 をかける
2個なら 億*0.01をかける

これでいいのかな。すごく助かりました。ありがとうございました。
0213デフォルトの名無しさん
垢版 |
2023/01/18(水) 13:41:42.93ID:OQE4vcvs
こんにちは。
質問失礼します。
Javaでトランプのブラックジャックを作っています。
プレイヤーの手札をリストで管理しておりcpuの数を自分で入力して決めるののですが、cpuの手札のリストを繰り返し処理で増やすことは可能でしょうか
0214デフォルトの名無しさん
垢版 |
2023/01/18(水) 15:56:48.95ID:gLoVguA+
>>210
一度文字列にしてしまうという方法もある。

double n = 2.3;
int i = Integer.parseInt(String.format("%.0f", n * 100000000));

>>213
君の言いたいことがいまいちわからない。
0216sage
垢版 |
2023/01/19(木) 02:30:20.32ID:UPibF+Dx
>>206
クラスCがクラスAからaを取得してクラスBに渡すのがいい
0217デフォルトの名無しさん
垢版 |
2023/01/24(火) 21:57:05.85ID:iOyZA91t
JButton imageButton = new JButton("選択");
imageButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
JFileChooser jc = null;
jc = new JFileChooser(ifp);
jc.setFileSelectionMode(JFileChooser.FILES_ONLY);
if (jc.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) {
ifp = jc.getSelectedFile().getAbsolutePath();
imageTextField.setText(ifp);

displayImage(ifp);
} else {
return;
}
}
});
から
0218デフォルトの名無しさん
垢版 |
2023/01/24(火) 21:58:39.18ID:iOyZA91t
private void displayImage(String filePath) {
System.out.println("oooooooooo");
@SuppressWarnings("serial")
JPanel imagePanel = new JPanel() {

public void paintComponent(Graphics g) {
Graphics2D g2 = (Graphics2D) g;
BufferedImage readImage = null;
try {
readImage = ImageIO.read(new File(filePath));
} catch (Exception e) {
e.printStackTrace();
}

if (readImage != null) {
g2.drawImage(readImage, 0, 0, 100, 100, this);
}
}
};

imagePanel.setPreferredSize(new Dimension(100, 100));
getContentPane().add(imagePanel, BorderLayout.CENTER);
basePanel.repaint();
}
を読んでもボタン押下した後に選択した画像が表示されません。
imagePanelのpaintComponent()を呼ぶ必要があるのでしょうか?
0220デフォルトの名無しさん
垢版 |
2023/02/19(日) 14:42:52.63ID:DO7MD67c
Color [ ] a = Color [2] ; //色の配列の要素が2個
a[0]=new Midori() ;    //緑
a[1]=new Ao() ;      //青
これを1行で書きたいです、うまく行かなかったのでお願いします。
0221デフォルトの名無しさん
垢版 |
2023/02/19(日) 15:30:07.56ID:+ZHZxj9b
コメントと改行コード消すだけで1行になりますよ
0224デフォルトの名無しさん
垢版 |
2023/02/21(火) 19:16:04.90ID:oaXxC19/
読み込んだファイルの最初の2バイトがFFD8で、最後の2バイトがFFD9だと画像であると判断できるのですが、どのようにすれはFFD8やFFD9であるとチェックできるのでしょうか?

BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file))
byte[] arr = new byte[4];
ByteBuffer extention = null;
bis.read(arr, 0, 2);//最初の2バイト読み込み
extention = ByteBuffer.wrap(Arrays.copyOfRange(arr, 0, 3)); //拡張子
if (extentionがFFD8 && extentionがFFD9) {} // ここの条件の書き方が不明
0225デフォルトの名無しさん
垢版 |
2023/02/21(火) 19:30:42.68ID:7RVzz88g
RandomAccessFileクラスを使ってファイルの長さ - 2までseekしてからreadすればファイル末尾の2バイトを読める
0226デフォルトの名無しさん
垢版 |
2023/02/21(火) 23:24:05.97ID:ceOEGncE
2バイトの比較が、という話なら
static final byte[] MAGIC_HEAD = { (byte) 0xFF, (byte) 0xD8 };
とかして置いて、
byte[] arr = new byte[4];
bis.read(arr, 0, 2);//最初の2バイト読み込み
if (java.util.Arrays.equals(MAGIC_HEAD, 0, MAGIC_HEAD.length - 1, arr, 0, MAGIC_HEAD.length - 1)) {
// OK
} else {
// NG
}
が素直じゃね
0227デフォルトの名無しさん
垢版 |
2023/02/22(水) 05:31:15.36ID:Ef+MHEJm
>>225, 226
ありがとうございます!教えていただいた方法を試してみます。
0228デフォルトの名無しさん
垢版 |
2023/02/23(木) 14:22:24.96ID:FN9m1Nwb
227です。何度もすみません。
壊れている画像(最後の2バイトがFF09で終わってないもの)を読み込み、そのファイルの最後から2バイトを読み込みしようとすると例外java.lang.IndexOutOfBoundsExceptionが発生します。
int length = bis.available() - 2のようにしたら最後から2バイトが取得でき、bis.read(tmpTails, length, 2);で最後の2バイトが読み込めると思ったのですが、間違っているでしょうか?
以下が上記処理をしている部分になります。
try (BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file.getAbsolutePath()))) {
byte[] tmpHeads = new byte[4];
byte[] tmpTails = new byte[4];
byte[] headBytes = { (byte) 0xFF, (byte) 0xD8 };
byte[] tailBytes = { (byte) 0xFF, (byte) 0xD9 };
int headLast = headBytes.length - 1;
int tailLast = tailBytes.length - 1;
bis.read(tmpHeads, 0, 2); //bisの先頭から2バイト読んで、tmpHeadsに格納する
int length = bis.available() - 2; // bisの最後の2バイトを読むための位置情報
//bisの最後の2バイト前から2バイト読んで、tmpTailsに格納する
bis.read(tmpTails, length, 2); // ここで例外発生する
boolean hasSameHeads = Arrays.equals(headBytes, 0, headLast, tmpHeads, 0, headLast);
boolean hasSmaeTails = Arrays.equals(tailBytes, 0, tailLast, tmpTails, 0, tailLast);
if (hasSameHeads && !hasSmaeTails) {
System.out.println(fileName); // 最後の2バイトがFFD9でなければ画像は壊れている
}
} catch (Exception e) {
e.printStackTrace();
}
0230デフォルトの名無しさん
垢版 |
2023/02/23(木) 15:26:54.02ID:6GcWNHqj
>>228
それ、よく間違われる所だけど、InputStream.read(byte[] buff, int offset, int len) の offset はデータを格納する byte配列 buff のオフセット
要するに
is.read(buf, 10, 2)
とすると、buf[10], buf[11] に値を書き込む(現在のInputStreamの位置から2バイト分)

ただ、そもそも FileInputStream.available() はファイルオープン直後にファイルサイズ全体を返す保証は無いので、ここで is.available() を利用するのは(潜在的な)バグです
なので>>225のように RandomAccessFile を使うべし
0231デフォルトの名無しさん
垢版 |
2023/02/23(木) 15:41:33.06ID:6GcWNHqj
あと2バイトぐらいの比較なら、個人的には
if ((buf[0] == (byte) 0xFF) && (buf[1] == (byte) 0xD8)) { // 先頭2バイトが 0xFFD8
とかでも良いかな
もちろん比較するサイズが大きくなると、比較対象を配列等にしておく方が読みやすい保守しやすいのは確か
0232デフォルトの名無しさん
垢版 |
2023/02/23(木) 16:06:59.46ID:uJb8Xqs2
>>229
承知いたしました。RandomAccessFileも試してみます。ありがとうございます。

>>230,231
なるほど。readのオフセットはそういう意味だったのですか。ありがとうございます。
RandomAccessFileを試してみます。
今回はファイルサイズも小さく、最初と最後の2バイトを比較できたらいいかと考えておりますので、保守性なども考慮して実装したいと思います。
0233デフォルトの名無しさん
垢版 |
2023/02/25(土) 18:46:21.73ID:xiShCbhS
例えば、Ruby でバイナリ操作なら、

# バイナリファイルを読み込む
File.open( "input_data.dat", "rb" ) do |io|
p io.read( 2 ) # ファイル先頭から、2バイト。"\xFF\xD8"

io.seek( -2, IO::SEEK_END ) # ファイル末尾から、2バイト
p io.read( nil ) #=> "\xFF\xD9"
end
0235デフォルトの名無しさん
垢版 |
2023/02/26(日) 13:12:18.00ID:B5iNMzdY
例えば、Javaで保守性を大事にするなら

enum CheckStatus {
 OK, FAILED
}

static CheckStatus checkBytes(Path file) {
 if (matchHead(file, new byte[] { (byte) 0xFF, (byte) 0xD8 })
   && matchTail(file, new byte[] { (byte) 0xFF, (byte) 0xD9 })) {
  return CheckStatus.OK;
 }
 return CheckStatus.FAILED;
}

static boolean matchHead(Path file, byte[] expected) {
 try (var in = Files.newInputStream(file)) {
  return Arrays.equals(expected, in.readNBytes(expected.length));
 } catch (IOException e) {
  return false;
 }
}

static boolean matchTail(Path file, byte[] expected) {
 try (var in = Files.newInputStream(file)) {
  in.skipNBytes(Files.size(file) - expected.length);
  return Arrays.equals(expected, in.readNBytes(expected.length));
 } catch (IOException e) {
  return false;
 }
}
0236デフォルトの名無しさん
垢版 |
2023/02/26(日) 13:28:52.24ID:Wvl12CDv
IOExceptionを握りつぶす仕様がまた初心者スレっぽいね。
Exceptionを握りつぶしたいとしたとしたら、
enum CheckStatusは2値(OK,FAILED)じゃなくて成否以外の
チェックできていない結果を示す3値以上にならないと。
ファイルなくても変なファイル読ませてもFAILEDになる
拾えるはずの異常を握りつぶしちゃうような保守性のかけらもない
コード晒して保守性語られてもねぇ。
0237デフォルトの名無しさん
垢版 |
2023/02/26(日) 13:52:19.75ID:B5iNMzdY
>>236
君wそれはないぞ素人かよw
例外のハンドリングを君は何もわかってない
君のコードが見てみたいものだねw
どうせ出せないだろうけど
0238デフォルトの名無しさん
垢版 |
2023/02/26(日) 14:07:02.67ID:WoOQ2q0W
まあ、失敗する可能性がどれぐらいあるか、失敗したときどういう対応するかで変わるかな
0239デフォルトの名無しさん
垢版 |
2023/02/26(日) 14:09:49.23ID:B5iNMzdY
そうね、ケースバイケース
そのような意見を述べるまともな人と5chで久しぶりに出会った気がする

2値を3値に増やして保守性が上がった経験は俺にはないしそして>>236にもないはずだw
現実に起こる確率の低い事象は無視するべきなんだよ

もちろんシンドラーのエレベータのように処理の未定義が人命にかかわるようなら違うけど
求められてないところで完璧主義を発揮するのはプログラムを無駄に複雑化するだけなんよ
0240デフォルトの名無しさん
垢版 |
2023/02/26(日) 15:10:56.00ID:kakegWcd
try-with-resources構文でこの例外握り潰しは適切だよ
なんの問題もない

俺が気になったのは命名規則
matchじゃなくてisMatch、もしくはvalidate、isValid、verify などが適切だと思う
matchだとマッチさせるという動作だと勘違いしてしまう

あと checkBytes も分かりにくいな
このケースなら isJpegFile(Path file) として Status ではなく boolean 返すほうがいい
0241デフォルトの名無しさん
垢版 |
2023/02/26(日) 16:08:41.98ID:B5iNMzdY
JPEGのチェックだったのね、なるほどね

JPEGドメインなら
isValidStartOfImage
isValidEndOfImage
にしてbyte値をハードコードで良いかもね

お仕事のコードでcheck(...)のメソッドがチェックをパスしたときにfalseを返す仕様になってて
混乱することを何度か経験したいまの俺だから言えることなんだけど
true/falseの感覚は人によって結構曖昧

validateやverifyだと
・valid/invalid
・ok/failed
などのenumを定義した方が良くて定義しないいけない面倒くささがある
0242デフォルトの名無しさん
垢版 |
2023/02/26(日) 16:22:26.33ID:8cGUNZyq
ゴミコード書く奴ほどなぜが自分のゴミコードの正当性を主張する
保守とかほざきながらnewInputStreamが吐き出す例外全部握りつぶすようなゴミコードが適切なわけないだろう
こんなゴミコードなら例外そのままスローしたほうが100倍マシだし保守性高い
まぁあほの学生だろうけど
0243デフォルトの名無しさん
垢版 |
2023/02/26(日) 16:31:17.15ID:B5iNMzdY
>>242
そういう言い方は俺も嫌な気持ちよ
0244デフォルトの名無しさん
垢版 |
2023/02/26(日) 16:37:00.27ID:sZm4jWH9
こういうアフォ仕様な関数作る低能がいるから
呼び出す前にexistチェックなんかが必要になって
余計な工数食うんだよな
0245デフォルトの名無しさん
垢版 |
2023/02/26(日) 16:56:39.93ID:rzF42M9P
>>242
この例外握り潰しの何が問題なのか具体的に教えて?

InputStreamはちゃんとcloseされるし、
ファイルが存在しないとか別の理由で読み取りができないのは Jpeg として扱えないのだから false 返すだけでよくないですか?
0246デフォルトの名無しさん
垢版 |
2023/02/26(日) 17:10:49.76ID:8cGUNZyq
個人で使うものじゃないならエラー見るのは作った奴じゃないし作った奴が見るとしてもゴミだね
よーし、ぼくちんファイル読み込んじゃうぞー!

プログラム「フォルスッ!(プギャw!」

は?なんやねんフォルスって・・・あほかこの糞プログラム
0248デフォルトの名無しさん
垢版 |
2023/02/26(日) 17:36:18.02ID:8cGUNZyq
まぁ実際はfalse見て読み込み失敗みたいなもん出力するんだろうけど
例外の中身見てないんだからこのエラーを見たときに全ての奴が原因の推測をすることから始めることになる
そもそも例外吐くメソッドのソースコード見てどういうときにIOException吐くか全部理解してないのに握りつぶしてるのがレベル低い
ファイルのパーミッションなくても例外吐いてるから権限のこと全く理解してないユーザーとかいたら調査させられるな
原因の中身握りつぶしてるからソースコード見ても結局ここでどん詰まり
ライブラリの中身で例外吐いてるところ全部調査することになる
0249デフォルトの名無しさん
垢版 |
2023/02/26(日) 17:41:18.30ID:rzF42M9P
チェック関数なんだからある程度は割り切って良いんだよ
いくら事前チェックしたって画像デコードしようとしたときにはファイルが削除されているかもしれない
ほんとに厳密な処理が必要ならチェック関数ではなく実際にデコードを試みるしかないの

>>244
exist?なにそれ?事前にファイルの存在をチェックしても 1ミリ秒後にはファイル消えてる可能性ありますよ?

重いデコーダーに回す前の簡易チェックとしてはマジックナンバーが一致したら true、それ以外は例外だろうとなんだろうと false で十分
事前に exist とか言ってるほうが設計センスないです
0251デフォルトの名無しさん
垢版 |
2023/02/26(日) 17:50:02.77ID:GjMx84Lt
他人の使い方は設計センスなし!
俺様の使い方はセンスあふれるからtrue/falseだけで十分!

君の言うとおりの使い方をしている時だけ問題なし、ってのは
果たして保守性を考慮されてるんですかねぇ
0252デフォルトの名無しさん
垢版 |
2023/02/26(日) 17:52:51.18ID:rzF42M9P
だから何が問題なのか教えて?

自分ではコード断片すら提示せずに、他の人が提示してくれたコードを素人だなんだとこき下ろすだけの批評家どもめ
0253デフォルトの名無しさん
垢版 |
2023/02/26(日) 17:53:37.89ID:p+4bBdMe
>>245
横からだけど、それで良い場合もあるしダメな場合もある
集合に対してフィルタを適用して部分集合を取り出す場合、フィルタがエラーで処理を行えなかったという事実は重要
得られた部分集合が本来得られたはずの部分集合である確信が持てないから

具体的なシナリオで書くと、
例えばクラウド上のサーバのディレクトリ中のファイルを(sshfs, nfs 等で)なめてJPEGファイルのリストを作りますよという処理中に、
ルータが再起動するとか掃除のおばちゃんがハブの電源を間違えて引っこ抜くとかでネットワークが一時的に落ちた場合、
出来上がったリストが信頼できるか
ネットワークの切断があったという事実を知らなければ、それを疑わなければならないことすら分からない
0254デフォルトの名無しさん
垢版 |
2023/02/26(日) 17:55:11.10ID:rzF42M9P
>>251
センスとか言ってごめんね
そんな主観的な話じゃなかった

事前ファイルチェックとか典型的な同期設計の誤りの可能性が高いです
0255デフォルトの名無しさん
垢版 |
2023/02/26(日) 17:55:38.78ID:sZm4jWH9
undefinedな状態があるのにenumを2値で設計した時点で
設計センスないんです。おわかり?
0256デフォルトの名無しさん
垢版 |
2023/02/26(日) 17:59:37.52ID:rzF42M9P
そのundefinedな状態だとデコーダーに回しても画像は得られないので
次工程のデコーダーに渡す価値があるか?という事前の簡易チェックとしては例外発生時に false を返しても問題ないと言ってます
0257デフォルトの名無しさん
垢版 |
2023/02/26(日) 18:02:15.95ID:rzF42M9P
>>253
そのシナリオならそれはそう
だってその処理はJPEG処理よりもファイルリストを作成することが主になってるでしょ
リスティングに影響が出る例外はちゃんと処理しないといけないですよ
0259デフォルトの名無しさん
垢版 |
2023/02/26(日) 18:10:04.94ID:VNAOgPsc
どこまで行っても俺の使い方から離れられない人
保守性とやらを謳うなら少しは汎用性も考えなさいよ
0260デフォルトの名無しさん
垢版 |
2023/02/26(日) 18:17:02.74ID:rzF42M9P
結局、批評家さんたちはコード断片すら出すことができないのね
うちの会社にもそういう口だけ達者な人います
0261デフォルトの名無しさん
垢版 |
2023/02/26(日) 18:22:59.72ID:VNAOgPsc
心が中学生のまま就職しちゃったんだね
レビューで保守性だ可読性だ叩かれまくって
陰鬱な日々でここならマウント取れると思ったのに
残念、初心者スレも似たような人の集まりでした
というお話
0262デフォルトの名無しさん
垢版 |
2023/02/26(日) 18:23:52.39ID:rzF42M9P
その保守性や可読性を高めるコードを提示して?
0263デフォルトの名無しさん
垢版 |
2023/02/26(日) 18:25:22.72ID:8cGUNZyq
断片も糞も握りつぶさないでエラーの詳細わかるように汎用性のあるビジネス例外投げろで終わりだから
こんな低レベルなことわざわざ書く必要すらないんだけど低能学生は大変だな
何書いても「この程度のチェックはこれでいいんだよッ!(ムッキー!」しか言わないしw
仕事で例外の中でfalse返す糞コード見たことねーけどw
0264デフォルトの名無しさん
垢版 |
2023/02/26(日) 18:29:06.57ID:rzF42M9P
例外を投げるのは分かったから
呼び出し側がその例外をどのようにハンドリングするのか提示して?
もしかして、無責任なライブラリアンなのかな?
0265デフォルトの名無しさん
垢版 |
2023/02/26(日) 18:33:22.89ID:8cGUNZyq
キャッチして画面に出すだけ
これもわざわざ書く必要はない
書かないとわからなければ脳障害者だからもうこの業界諦めろ
0266デフォルトの名無しさん
垢版 |
2023/02/26(日) 18:38:14.37ID:rzF42M9P
あ、やっぱり無責任なライブラリアンだった
うちの会社にもそういう人います
責務境界の明確化だとかなんだとかいって例外ハンドリングを放棄したコードしか書けない人
ライブラリではなくアプリケーションを書くようになると例外ハンドリングについてもう少し分かるようになると思うよ
0267デフォルトの名無しさん
垢版 |
2023/02/26(日) 18:42:10.40ID:8cGUNZyq
>例外ハンドリングを放棄したコード
例外の中でfalse書くお前のことか?w

屁理屈どころか会話のキャッチボールもできてないし文章も酷いしw
バカなんだから無理しないで病院行ってきなよ
0268デフォルトの名無しさん
垢版 |
2023/02/26(日) 18:46:00.35ID:VNAOgPsc
>>266
アプリ側を書く人が例外返しても放棄しかしないのは自明なんだから
ライブラリで例外放棄しておいてあげますかって
なかなかに攻めた思想ですね
アプリが適切に例外をハンドリングしないのはアプリの問題なので
それこそレビューで仕返しとばかりに叩いてあげてください
0269デフォルトの名無しさん
垢版 |
2023/02/26(日) 18:48:40.78ID:rzF42M9P
アプリケーション全体で見たら最後には誰かが例外をキャッチしないといけないのよ
局所的なコードを見て例外をキャッチするな!そのままスローして上位に委ねろ!
これを言うのは簡単
じゃあ、上位はその例外をどのようにハンドリングしたら保守性・可読性が高くなるのか?
そこまで考えられる人あまりいないのよね

そこまで考えると、アプリケーションとしての用途など限定的な条件を踏まえて
例外にする必要なくね? 下位で例外処理してしまってよいのでは?
となることも多い
今回のユーティリティ関数なんてまさにそのケースだと思う

ここまで考えられない人=無責任なライブラリアン
0270デフォルトの名無しさん
垢版 |
2023/02/26(日) 18:53:28.04ID:8cGUNZyq
ひょっとしてこの低能学生は例外キャッチしたあとの整形方法をずっと聞いてたのかwww
バカって主語なさすぎて何を聞きたいのか全く分からんのよな
エラー出力仕様とか一切わからん状態で
「ぼくちんがわかるようなコード提示しろッ!!!」とかガチ脳障害者やんw
他人はエスパーじゃないぞ低能ガイジ君
はよ病院行って来い
0271デフォルトの名無しさん
垢版 |
2023/02/26(日) 18:54:05.58ID:v701fflo
そして別の人が、フォルダの中のJPEGでないファイルを消す簡単なプログラムに転用して、ちょうどストレージのアクセス不調が起きて、必要なファイルが全部消されて泣くとw
0272デフォルトの名無しさん
垢版 |
2023/02/26(日) 18:54:21.42ID:rzF42M9P
>>268
いやアプリケーション側が例外ハンドリングを放棄するだけとは言ってないよ
下位が例外をスローするならアプリケーション側でちゃんとハンドリングしてもらう

でもそれやろうとするとアプリケーション側のコードが煩雑になっていくよね?
アプリケーション側が複雑になってしまったらユーティリティ関数を用意した意味が半減すると思うの
0273デフォルトの名無しさん
垢版 |
2023/02/26(日) 18:55:32.54ID:v701fflo
自分の考えた通りにしか使われないってこんなに過度に思い込んで自分の考えた通りの使い方だけに固執してしまって自閉症気味なんじゃないでしょうか、病院にいったら?
0274デフォルトの名無しさん
垢版 |
2023/02/26(日) 18:56:34.00ID:8cGUNZyq
脳障害者のコードは例外処理にすらなってないんだよな
でも脳障害者だから一生わからんのだろうなw
0275デフォルトの名無しさん
垢版 |
2023/02/26(日) 18:57:29.58ID:rzF42M9P
>>270
えっと、聞きたいのはそういうことじゃないです
ログ出力してプロセス落とすだけなら誰でもできます

アプリケーションを継続させたいケースもあるでしょ?
そのあたり、保守性・可読性を維持してどんなコードを書くのかお手本を見せて欲しいの
0276デフォルトの名無しさん
垢版 |
2023/02/26(日) 19:00:19.03ID:8cGUNZyq
まずプロセス落とすなんて一切書いてないけど
妄想でレスするのやめてもらっていい?
妄想なおすところから始めてもらっていい?
0277デフォルトの名無しさん
垢版 |
2023/02/26(日) 19:00:22.67ID:rzF42M9P
>>273
世界中の人が使うライブラリ書いてる人なんて少数だと思うけど?

職業プログラマーの多くはアプリケーション側の要求があって、簡易的に扱えるレイヤーを書いてるんじゃない?

世界中の人に使ってもらう前提の汎用JPEG判定ライブラリなの?
0278デフォルトの名無しさん
垢版 |
2023/02/26(日) 19:01:16.27ID:rzF42M9P
>>276
ごめんね
プロセスは落とさずアプリケーションを正常系に戻すコード例を提示して?
0279デフォルトの名無しさん
垢版 |
2023/02/26(日) 19:02:50.86ID:v701fflo
例外になったファイルを対象外にするかリトライするか対象にするかなんてアプリ次第じゃん、何で勝手な妄想でアプリでハンドリングすればいいものをJPEGではないと扱いましょうって勝手に決めつけるの、アフォなのかな?
0280デフォルトの名無しさん
垢版 |
2023/02/26(日) 19:03:35.85ID:8cGUNZyq
書く必要のない低レベルコードすらコード提示しろって喚くんだから
エラー仕様提示してもらわないと脳障害者君が100%納得するコードなんて提示できないよ?
エラー出力仕様は提示できるかい?脳障害者君
0281デフォルトの名無しさん
垢版 |
2023/02/26(日) 19:06:19.92ID:v701fflo
こんだけ自分本位なプログラムしかかけないようだと会社で叩かれまくりでしょ、書けもしない人に叩かれているんじゃなくて、書けな人でもはっきりわかるお前の低能っぷりが叩かれていて、指摘してやっても嫌な顔して納得しないで同じミス繰り返し続けて、いい加減先輩からも上司からも嫌われていて解雇寸前くらいの漢字なんじゃないの?だいじょうぶ?本当頭にトラブルを抱えているようにしかみえないよ?障害者雇用の人?
0282デフォルトの名無しさん
垢版 |
2023/02/26(日) 19:06:54.49ID:rzF42M9P
ほらね、無責任なライブラリアンのいつもの決め台詞が出てきた

「それはアプリ側の仕様次第です」
0283デフォルトの名無しさん
垢版 |
2023/02/26(日) 19:08:01.73ID:WoOQ2q0W
まあ、わからんでもないが、初心者スレでイキってたらイタイだけだよ
ここでは保守性とかどうでもよくて、とりあえず動けばいいからね
0284デフォルトの名無しさん
垢版 |
2023/02/26(日) 19:09:41.94ID:8cGUNZyq
決め台詞も糞もエラー仕様次第なのは事実だし
お前のコードはゴミだからね
さっさと病院!さっさと病院!しばくぞ!
0285デフォルトの名無しさん
垢版 |
2023/02/26(日) 19:09:46.66ID:wNC2KZtQ
というかどこに保守性があるのかな?それだけはぜひ語って言ってほしいところ。こいつの語る保守性に納得できるなら例外握りつぶしもみんな納得することでしょう。ほれ語ってみ。
0286デフォルトの名無しさん
垢版 |
2023/02/26(日) 19:12:00.97ID:B5iNMzdY
>>283
そのどうでもいいやって態度が逆にイキりに見えてきたw
イキりって深いよねw
0287デフォルトの名無しさん
垢版 |
2023/02/26(日) 19:24:30.91ID:B5iNMzdY
俺が視ている景色を視せてやりたい
登ってこい、俺のステージまで
0288デフォルトの名無しさん
垢版 |
2023/02/26(日) 19:36:25.88ID:Uk5wq6NP
自演擁護失敗して逆に炎上させてしまって逃亡しても
IDを戻したら誰も追撃しないやさしさが初心者スレ
0289デフォルトの名無しさん
垢版 |
2023/02/26(日) 19:39:33.54ID:rzF42M9P
えっと、コードを提示してくれた人と俺は別人です
別人を装って擁護してたとかじゃないからね
強いて言えば設計センスのないノータリンな批評家どもを養護してあげてた感じ?
0290デフォルトの名無しさん
垢版 |
2023/02/26(日) 19:40:46.51ID:B5iNMzdY
ID:rzF42M9Pの人は別人だよ
この人には俺のコードを理解できる深い知性と経験がある
俺と同じか俺の上のステージにいるね
その正体が大学の教授だったとしても驚かない
0291デフォルトの名無しさん
垢版 |
2023/02/26(日) 19:42:08.85ID:rzF42M9P
>>290
ありがと!
がんばろうね!
0295デフォルトの名無しさん
垢版 |
2023/02/26(日) 21:54:17.10ID:qHcJFulr
>>235
ワイならこうするわ
static byte[] head(Path file, int nbytes) { // ファイルの先頭からNバイトって使い勝手良さそうだから
try (var in = Files.newInputStream(file)) {
return in.readNBytes(nbytes);
} catch (Exception e) {}
return null;
}
static byte[] tail(Path file, int nbytes) { // 同上
try (var in = Files.newInputStream(file)) {
in.skipNBytes(Files.size(file) - nbytes);
return in.readNBytes(nbytes);
} catch (IOException e) {}
return null;
}
static boolean headeq(Path file, byte[] bytes) { // 必要ないかも
return Arrays.equals(head(file, bytes.length), bytes);
}
static boolean taileq(Path file, byte[] bytes) { // 同上
return Arrays.equals(tail(file, bytes.length), bytes);
}
static boolean head_eq_FFD8(Path file) { // おそらく不要。チェック対象が増えなくてかつ呼ばれる頻度高いならアリ?
return headeq(file, new byte[]{(byte)0xFF, (byte)0xD8});
}
static boolean tail_eq_FFD9(Path file) { // 同上
return taileq(file, new byte[]{(byte)0xFF, (byte)0xD9});
}
0298デフォルトの名無しさん
垢版 |
2023/02/27(月) 01:09:03.87ID:YzgP+Jec
head と tail に分けるのは非効率じゃない?
ファイルを2回オープンすることになるよね
0299デフォルトの名無しさん
垢版 |
2023/02/27(月) 09:04:35.29ID:AmorbGw/
Streamのtailを見ようという発想が頭おかしいよな
mkfifoで作られたファイル指定されたりしたらどうするつもりだよ
ファイルの末尾とストリームの末尾の違いも理解できないバカ揃い
0300デフォルトの名無しさん
垢版 |
2023/02/27(月) 12:48:46.63ID:gYXyoIsy
普通はこういうフォーマットならtailはペイロードを読み込んだあとに
ちょん切れてないことをチェックするために使うよね
事前のチェックならheadだけでいい気がする
0301デフォルトの名無しさん
垢版 |
2023/02/27(月) 19:01:13.50ID:xkw2eHZd
>>297
そこは && で
head_eq_FFD8_and_tail_eq_FFD9(file)
head_eq_FFD8(file) && tail_eq_FFD9(file) // ↑+5文字

>>298
たしかにそれは気になるけど
そこがネックになってから置き換えたらいいかな?

>>300
そうそれ
自分で書くならtailのほう書かないかも
0302デフォルトの名無しさん
垢版 |
2023/03/01(水) 03:13:33.44ID:p5rMIeuq
素直に RandomAccessFile 使えって
0303デフォルトの名無しさん
垢版 |
2023/03/01(水) 18:53:43.40ID:U2FyK2fT
>>302
static byte[] head(Path path, int nbytes) {
byte[] bs = null;
try (var r = new RandomAccessFile(path.toFile(), "r")) {
r.read(bs = new byte[nbytes]);
} catch (Exception e) {}
return bs;
}
static byte[] tail(Path path, int nbytes) {
byte[] bs = null;
try (var r = new RandomAccessFile(path.toFile(), "r")) {
r.seek(Files.size(path) - nbytes);
r.read(bs = new byte[nbytes]);
} catch (Exception e) {}
return bs;
}
0304デフォルトの名無しさん
垢版 |
2023/03/01(水) 20:06:57.79ID:p5rMIeuq
>>303
RandomAccessFile クラスならファイルの長さは length() メソッドで取得できる。
というか、head(), tail() で別々に取得するのは効率悪いのでは? 一度だけ開いて両方取得すれば良いと思うが。
Java はクラスの中にしかメソッド作れないんだから前後読むためのクラス作ってコンストラクタでファイルの前後
読んでprivateのインスタンス変数に入れといて後で getHead() や getTail() でそれ返すようにすれば良いんじゃないか?
0305デフォルトの名無しさん
垢版 |
2023/03/01(水) 20:28:15.07ID:U2FyK2fT
> RandomAccessFile クラスならファイルの長さは length() メソッドで取得できる。

勉強になりました

> head(), tail() で別々に取得するのは効率悪いのでは?

たしかにそれは気になるけど
そこがネックになってから置き換えたらいいかな?

> 前後読むためのクラス作って

どうだろうねえ
ワイの感覚だとそんなクラスは作らずに済ませたいかな
0306デフォルトの名無しさん
垢版 |
2023/03/01(水) 20:43:31.10ID:4/c661GE
そうね、コンストラクタうんぬんは面倒だと思う
ユーティリティ関数(static メソッド)で十分
0307デフォルトの名無しさん
垢版 |
2023/03/01(水) 20:43:52.82ID:p5rMIeuq
ファイル数が少なくファイルの読み出しが高速なら良いが、低速で沢山のファイルを読まねばならない場合はやはりファイルを開くのは1回にした方が良いと思う。
0308デフォルトの名無しさん
垢版 |
2023/03/01(水) 21:52:49.60ID:U2FyK2fT
>>307
> 沢山のファイルを読まねばならない場合はやはりファイルを開くのは1回にした方が良い

個人的には元の>>235と同じようにhead/tail分けたほうが使い勝手いいんじゃね?派だけど
ファイル複数回開くの気になる人が3人目登場(過去に>>298 >>304)なんで対応してみた
「headとtail両方見るのを前提、一個の条件に対してファイル多数を前提、
byte[]を下手に返すよりもチェックそのものに専念」とした場合

class HeadTail {
private final byte[] head, tail;
private byte[] headbuff, tailbuff;
public HeadTail(byte[] head, byte[] tail) {
this.head = head;
this.tail = tail;
this.headbuff = new byte[head.length];
this.tailbuff = new byte[tail.length];
}
public boolean equals(Path path) {
try (var r = new RandomAccessFile(path.toFile(), "r")) {
r.read(headbuff);
if (!Arrays.equals(head, headbuff)) return false;
r.seek(r.length() - tailbuff.length);
r.read(tailbuff);
return Arrays.equals(tail, tailbuff);
} catch (Exception e) {}
return false;
}
}
0309デフォルトの名無しさん
垢版 |
2023/03/01(水) 21:53:19.35ID:U2FyK2fT
使う時は
var ht = new HeadTail(
new byte[]{(byte)0xFF, (byte)0xD8}, new byte[]{(byte)0xFF, (byte)0xD9}
);
Path p = null;
ht.equals(p); // たくさんのファイルを次々渡す
0310デフォルトの名無しさん
垢版 |
2023/03/01(水) 22:13:24.68ID:5d0qKPyD
2バイトなら1回で読めるとは思うけど、厳密な仕様では read は指定バッファサイズを埋めることは保証されていない
new byte[2] をread に渡しても 1バイトだけ読んで復帰する可能性もあるのよ

任意のヘッダ長・フッタ長を指定できるようにするならそこもちゃんと実装しないと潜在的なバグになるよ

あとヘッダ長・フッタ長がファイルより長いとおかしくなるね
0311デフォルトの名無しさん
垢版 |
2023/03/01(水) 22:20:09.46ID:U2FyK2fT
> 指定バッファサイズを埋めることは保証されていない

あーそれ絶対のちのちバグらされるやつやな
ここは2ちゃんのお遊びスレなんで勘弁してもらって
仕事でするやつはみんな頑張ってケアしてくれたまへ

> あとヘッダ長・フッタ長がファイルより長いと

これは単に
return false if r.length() < head.length + tail.length
みたいにファイル開いた直後に書いときゃ十分そうやな
0312デフォルトの名無しさん
垢版 |
2023/03/04(土) 15:23:43.96ID:SAvF8kPk
1回の読み込みで byte[] 全部に読みたいなら readFully() のあるクラス(DataInputインターフェースが実装されたクラス)を使えば良い。
一部しか読めなかった時にループさせて続きを読むみたいな処理を自作しなくて済む。
0313デフォルトの名無しさん
垢版 |
2023/03/05(日) 23:53:14.36ID:YlwUczDE
そう言えば JPEG ファイルの最後の EOI (FF D9) の後は何が入っていても無視するという決まりになっているので
必ずしもファイルの最後に EOI があるとは限らないし、破損ファイルだとない事もあり得るんだけど、その辺は考慮
しなくて良いのかな? EOI は無視して先頭の SOI (FF D8) だけ見て JPEG と判定しちゃっても良いような気がするが。
0314デフォルトの名無しさん
垢版 |
2023/03/22(水) 15:26:55.27ID:8t2KAkXq
すみません、昔サンマイクロの資格を取ったのですが、すっかり忘れてしまっていて、あらためて勉強しようとしています。
できるなら新しいバージョンを勉強したいのですが、なにかおすすめの書籍はありませんか。
0315デフォルトの名無しさん
垢版 |
2023/03/22(水) 20:00:48.48ID:NqVqVODt
サン時代に資格取ったってことはもうおじいちゃんでしょ?
いまさら資格取って何するの?

作りたいものがあるなら資格なんて気にせず作ればいいのに、、、
0317デフォルトの名無しさん
垢版 |
2023/03/23(木) 01:06:13.56ID:Ao+X9Xng
>>314
本だったら、昔から翔泳社かインプレスだろ。

合格するのが目的であれば、バージョンは古くてもかまわないを
0318デフォルトの名無しさん
垢版 |
2023/03/23(木) 01:07:14.37ID:Ao+X9Xng
>>316
そういう誤解がいまでも直らない理由が知りたい
0320デフォルトの名無しさん
垢版 |
2023/03/23(木) 23:18:01.63ID:Ao+X9Xng
>>319
オラクル社はサン・マイクロシステムズを買収したら、Javaが付いてきただけ。
0321デフォルトの名無しさん
垢版 |
2023/03/23(木) 23:20:40.80ID:Ao+X9Xng
サン・マイクロシステムズは商売が下手だったから、関係ない組織がJavaをこねくり回して、問題ばかりを起こし、お金の請求がサン・マイクロシステムズに来るのをオラクル社がちゃんと対処して正常に戻した。
0322デフォルトの名無しさん
垢版 |
2023/03/24(金) 00:05:58.31ID:1LPoa16g
普通はサンマイクロの資格 = SJC-* (Sun Certified Java *) を連想するんじゃない
それが2010年くらいまであったってことでしょ
商売が下手とかどうでもいいんだけど
0323デフォルトの名無しさん
垢版 |
2023/03/24(金) 00:17:43.76ID:miXOHSMu
2010年にJavaはオラクルに引き継がれたってことで間違ってないじゃん
0324デフォルトの名無しさん
垢版 |
2023/04/03(月) 14:14:00.53ID:ZOqVhNfC
>>322
だから、Javaはサン・マイクロシステムズが作ったもので、それをオラクル社が引き継いでいることを知らない人間が、Javaの資格を保有しているなら、その人間は知識が古いまま、現在のことを知らないということになる。

昔の知識でやっている開業医と同じ。それいつの時代の医療行為なんですかと思う医師がいるだろ。

オラクル社は他の試験でもそうだが、歴史的経緯を試験範囲にしてくる。Javaの歴史を資格の合格条件に入れているんだから、あとから同等の資格に合格した人間からすると不思議な人たちということになる。
0325デフォルトの名無しさん
垢版 |
2023/05/04(木) 10:23:36.19ID:x6eL4E4U
if文でAとBの論理積は&&ですが、論理演算子の&だけでも成り立つと思うのですが、どうなんでしょうか?
0326デフォルトの名無しさん
垢版 |
2023/05/04(木) 11:24:45.15ID:/cLVFXSd
&&はショートサーキット
0327デフォルトの名無しさん
垢版 |
2023/05/04(木) 12:51:20.10ID:RYbIzcoN
>>325
成り立つ場合もあればそうでない場合もある

成り立たない例

String value = null;

if (value != null && value.equals("value")) {
 System.out.println(value);
}

&&を&にすると例外が投げられる
0328デフォルトの名無しさん
垢版 |
2023/05/04(木) 13:07:09.66ID:x6eL4E4U
>>327
ありがとうございます。
条件文は全部実行されると思ってました。
valueがnullかもしれない場合はifのネストにしていましたが、左から実行して確定時点で止まるショートサーキットを知り勉強になりました。
0329デフォルトの名無しさん
垢版 |
2023/05/04(木) 22:58:14.68ID:w4hmMpL6
String s = null;
try {
System.out.println(s.equals("foo"));
} catch (Exception e) {
System.out.println(e); // java.lang.NullPointerException
}
System.out.println(s != null && s.equals("foo")); // false
System.out.println("foo".equals(s)); // false
0330デフォルトの名無しさん
垢版 |
2023/05/19(金) 16:07:40.16ID:qdzB8G4+
Javaって
「あーこんなアプリほしいなぁ」
て時にさっと作れるからいいよね
0331デフォルトの名無しさん
垢版 |
2023/05/19(金) 16:12:54.72ID:w/7hGg1y
わかる
GUI部分も素で入ってるのがラク
ソースとjavacだけで書き終わるのラク
0332デフォルトの名無しさん
垢版 |
2023/05/19(金) 17:23:54.61ID:QB2zDoTp
classpathとかlibrary pathとかsource pathとか他の言語じゃ意識する必要ほとんどないけどJavaだけクソめんどくさい
ソースの中身の記述ととディレクトリ名/ファイル名を一致させなきゃいけないのもJavaだけ
コンパイルエラーのメッセージの不親切さも際立ってる

コードだけ見ればそこそこ初心者向けにいいように見えるが特別な理由のある人以外はJavaから始めるのは絶対におすすめしない
0333デフォルトの名無しさん
垢版 |
2023/05/19(金) 17:42:29.73ID:+92PXzgS
そのレベルの人は向いてないってだけだよ
0334デフォルトの名無しさん
垢版 |
2023/05/19(金) 18:55:30.83ID:PWQ5aJck
Android studio でjaveを初めて使って二年経つけどやり易い環境だと思うな。
UIも簡単だし、グラフはMPAndoidChartで楽勝だ。もう、PCでアプリやりたくないと思ったが、C#の仕事が舞い込んで来た。(´Д`)
0335デフォルトの名無しさん
垢版 |
2023/05/21(日) 00:12:11.35ID:pdkzTz/C
Kotlin もよろしく
0337デフォルトの名無しさん
垢版 |
2023/05/21(日) 01:46:18.67ID:pdkzTz/C
>>336
とりあえずここでも見て参考にしたら?

Kotlinが学べる本・参考書おすすめ9選!初心者向けの入門書も紹介
https://freelance-mikata.com/columns/7049/

Kotlin の場合、どうなってると何が分かり易いかは人によってちょっと違う。
これまで Java をやってきて Java は分かるという人に対して分かり易いのか、それともプログラミングなんか一切やった事がない人にとって分かり易いのか、更に Android のプログラムを作る人に対して分かり易いのか、など、色々と人によって違うのでこれなら誰に取っても分かり易いみたいな入門書はないと思う。
0339デフォルトの名無しさん
垢版 |
2023/05/24(水) 15:12:52.51ID:9LOdv+cy
recycleって何の効果もない気がするんですが…
recycleしてもメモリーオーバーするし…
0340デフォルトの名無しさん
垢版 |
2023/05/24(水) 15:59:18.86ID:kfHyePY+
>>332
何をやらかすかわからないバカが使うことを想定した言語だから縛りがきつくなるのはしょうがないよ
0341デフォルトの名無しさん
垢版 |
2023/05/24(水) 19:25:15.97ID:gN6x++cM
逆に言うと縛りがきついって感じる奴は馬鹿なことしようとしてる馬鹿なんだよね
0342デフォルトの名無しさん
垢版 |
2023/05/24(水) 19:58:08.07ID:kfHyePY+
違う
チームで仕事を進めるためにはどうしてもスキルの低いメンバーのレベルに合わせざるを得ない
優秀な生徒ばかりの進学校の校則は緩いがバカが集まった底辺学校の校則は厳しい
大規模なプロジェクトではどうしてもバカが混じってしまう
優秀なプログラマーには不自由を我慢してもらってでもバカには足枷をかけなければいけない
0344デフォルトの名無しさん
垢版 |
2023/05/24(水) 20:08:40.55ID:yUfaAm5Q
自覚のない馬鹿が
他人事のように
馬鹿を語る時
黒い雲が
わっと広がってくる
つめたく
悲しい雨がしとしと
彼とその同僚を濡らす
0345デフォルトの名無しさん
垢版 |
2023/05/25(木) 00:33:49.98ID:M9yQKv6m
スキルの低い奴に合わせるプロジェクトなんて一つも見たいことないから一発で仕事したことないバカ学生ってわかるな
経験豊富でスキルの高い奴が新卒レベルのゴミに合わせてゴミみたいなコード書くのか?w書くわけねーよなぁw
開発の現場でスキル低い奴はプロパーなら移動、派遣ならクビ切り
これが現実だよ阿呆学生君
0346デフォルトの名無しさん
垢版 |
2023/05/25(木) 01:12:11.07ID:V96qJzqz
バカに合わせたゴミコードを書くなんて一言も言ってない
バカでも使えるプログラミング言語を使うって言ってるんだよ
文字の読めないクビ切られまくりのバカ派遣さん
0347デフォルトの名無しさん
垢版 |
2023/05/25(木) 01:27:37.63ID:M9yQKv6m
客観的に見てそう捉えられないようなアホ文章書いておいて言語を合わせるとか屁理屈ほざきだしてワロタw
さすがバカ学生だなw
じゃあスキルの高い奴が使って開発してる言語とそれでリリースされたプロダクト言ってみ
javaのスレにいるんだからもちろんコンシューマー向けのwebアプリだぞ
間違ってもクライアントソフトとか書くんじゃないぞ?w
言えるか?wバカ学生だから言えない?w
あほ
0348デフォルトの名無しさん
垢版 |
2023/05/25(木) 01:29:00.49ID:M9yQKv6m
それにしても言語を合わせるってwww
ホントバカすぎてワロタわw
ドアホ
0349デフォルトの名無しさん
垢版 |
2023/05/25(木) 02:07:10.51ID:V96qJzqz
javaの登場で職業プログラマーが爆発的に増えました
あなたのように文字も読めないバカでもそれなりにプログラミングが可能になったのです
これは束縛がきついと言われるjavaの優れた言語仕様のおかけです
自分でメモリ管理せねばならないCや、型やスコープが曖昧だと敬遠されるLL言語をバカに使わせるのは危険なのです
バカに使わせるにはjavaはまさにうってつけなのです
しかしバカはバカ、IT土方と呼ばれるバカプログラマーを量産する結果となってしまい業界の質の低下を招きました

コンシューマー向けのwebアプリですか?java案件の中でも最底辺の仕事ですねw
プログラミング言語なんてただの道具ですから何だって使いますよ
バカはjavaだけ使っていなさい
0350デフォルトの名無しさん
垢版 |
2023/05/25(木) 02:13:13.74ID:M9yQKv6m
30分調べて書こうと思った文章がそれ?wまともな文章書けないなら黙って消えりゃいいのにw
絶対書くと思ったけど今更メモリ管理に言及して言語の優位性説くとか君偏差値20ぐらいの超絶バカ学生?w
そのバカ向けの言語のjavaで開発されたwebサービスにAmazonとかNetflixとかあるけど
腐るほど金ある企業がなんでバカ向けの言語使ってんの?w
まぁバカ学生相手に真面目に詰めてもこっちが恥ずかしいからこれぐらいで許してやるけどさw

  あ  っ  ほ w
0351デフォルトの名無しさん
垢版 |
2023/05/25(木) 02:18:10.94ID:M9yQKv6m
どうせ>332みたいなレベルの糞バカ学生君が学校の課題やるのに
環境すら作れなくて文句言ってるだけの池沼なんだろうけどw
消えろゴミ学生
0352デフォルトの名無しさん
垢版 |
2023/05/25(木) 02:23:48.77ID:V96qJzqz
>>腐るほど金ある企業がなんでバカ向けの言語使ってんの?
優秀なプログラマーより圧倒的にバカの方が多いからですよ
残念ながらこの世の中はバカに合わせないと上手く回っていかないんですよ
バカの渦中にいるバカに理解できなのはしようがない事ですね

>>消えろゴミ学生
もうちょっと遊んでくださいよ~、センパイ
0353デフォルトの名無しさん
垢版 |
2023/05/25(木) 02:25:33.08ID:V96qJzqz
センパイはCは使えるんですか?
javascriptとかpythonなんて朝飯前なんでしょうね
0354デフォルトの名無しさん
垢版 |
2023/05/25(木) 02:27:07.64ID:M9yQKv6m
>優秀なプログラマーより圧倒的にバカの方が多いからですよ

全く答えになってないけど?w
金あるんだから優秀な奴だけ雇えるのになんでバカ向けの言語使ってるって聞いてるんだけど
読解力0なの君?wこんな文章も理解できない糞バカなのになんで他人にバカって言えんの君?ww
javaが選ばれてる理由をメモリ管理以外に書けるかい?w ん?どうだ?いけそうか?w
がんばって調べて書いてみようか?w
あほ
0355デフォルトの名無しさん
垢版 |
2023/05/25(木) 02:29:38.90ID:M9yQKv6m
当然使えるけど?ww
javascriptなんてwebサービスとセットだからみんな使えるけど?wwww
君そんなゴミカスレベルでなんで人様をバカにできるの?wwねぇwww池沼バカ学生君w
あほ
0356デフォルトの名無しさん
垢版 |
2023/05/25(木) 02:29:43.68ID:V96qJzqz
>>javaが選ばれてる理由
バカがやらかすことを最小限に抑えられるから
センパイは自力でメモリ管理できますか?
0357デフォルトの名無しさん
垢版 |
2023/05/25(木) 02:32:12.18ID:V96qJzqz
>>355
ですよね
プログラミング言語なんて単なる道具ですもんね
バカはjavaだけやってればいいですよね
0358デフォルトの名無しさん
垢版 |
2023/05/25(木) 02:33:13.41ID:M9yQKv6m
>バカがやらかすことを最小限に抑えられるから

だから答えになってないんだってwww小学生?
やらかさない奴だけを雇えるのに何でバカ向けの言語使うかって聞いてるの!wwwwwwwww
何回同じ事いわせんだよ糞バカ君wwww
メモリ管理もできるってwwwwwwwバカがそれ聞いてどうすんだよバカwww
糞まぬけが
0359デフォルトの名無しさん
垢版 |
2023/05/25(木) 02:35:26.34ID:M9yQKv6m
まんま何も知らんバカ学生なんだから課題だけやっていいやん
どのみちここまで馬鹿だと肉体労働しかできないんだから
どうせパイソンしか使ったことないんだろw
ほんとバカが透けて見えるわw
0360デフォルトの名無しさん
垢版 |
2023/05/25(木) 02:39:47.84ID:V96qJzqz
>>やらかさない奴だけを雇える
無理ですよ
あなた社会で働いたことありますか?

>>何でバカ向けの言語使うかって聞いてるの
リスクを極力抑えるためですよ
そんなこともわからないんですか?
やっぱりあなたバカですね

>>馬鹿だと肉体労働しかできないんだから
IT土方のバカプログラマーに言われるとは…
0361デフォルトの名無しさん
垢版 |
2023/05/25(木) 02:43:21.43ID:M9yQKv6m
海外だとスキル高い=年収の等式がまんま成り立つの
糞バカ君が言うメモリ管理wwwごときなんて金出せば何万人と雇えるのwwww
屁理屈すらなってないことしか書けないしバカ糞バカなんだからさっさと消えたらどうだ?
バカってなぜかバカの中でjavascriptの敷居高くなってんのも笑えるしw
なんもしらんバカだからFWとごっちゃにしてんだろうけどw
わざわざ聞いてくるぐらいだからこっちのほうが難しいと思ってるのもバカすぎて滑稽すぎる
どんだけ井の中の蛙演じてんだよバカ学生君w
あほ
0362デフォルトの名無しさん
垢版 |
2023/05/25(木) 02:46:31.43ID:M9yQKv6m
言うことがメモリ管理とスコープってwww
脳内でもう一人糞バカ君の分身でも作ってお話しててくれよw
課題がんばれよ糞バカ池沼学生君
糞あほw
0364デフォルトの名無しさん
垢版 |
2023/05/25(木) 02:48:57.94ID:V96qJzqz
だってメモリ管理とスコープを理解できない人たちでもjavaなら使えるんだもん
0369デフォルトの名無しさん
垢版 |
2023/05/25(木) 02:54:10.45ID:M9yQKv6m
スコープでドヤる新種の池沼とか腹痛いwww
手取り5万の奴でもメモリ管理できるねw
糞バカ君はバカ学生だからできないみたいだけどw
あほ
0370デフォルトの名無しさん
垢版 |
2023/05/25(木) 02:58:07.31ID:M9yQKv6m
そもそも糞バカ君のいうC言語やLL言語じゃメモリ管理あろうがなかろうが
まともなwebサービスなんて何一つ作れないんだけどなwww
そのことに気づかせてやろうとして誘導してやってるのに
メモリ管理とスコープを延々と書き続ける真性の糞バカ学生君ww
なんも知らん糞バカだからC言語でAmazon作れると思ってんだよな?www
あ~腹いてぇw
あほ
0372デフォルトの名無しさん
垢版 |
2023/05/25(木) 03:03:04.97ID:M9yQKv6m
しかもメモリ管理しないことはバカどうこう以前として圧倒的利点なのに
それをバカ向けとか言ってる時点で煽りでもなんでもなくて頭弱すぎてヤバイ
この糞バカ君理論で言うと全ての利点がバカ向けになるねw
バカには辛い世の中だろうけどがんばって生きろよ~糞バカ君w
あほ
0373デフォルトの名無しさん
垢版 |
2023/05/25(木) 03:06:47.30ID:M9yQKv6m
入門書の最初の5ページ目ぐらいのところに書いてるようなくっそ低レベルなことでがんばり続ける糞バカ君w
糞バカ君から超糞バカ君になる才能あるよ君w
がんばって糞バカ道を極めてくれw
糞バカ
0374デフォルトの名無しさん
垢版 |
2023/05/25(木) 03:08:51.01ID:V96qJzqz
>>入門書の最初の5ページ目ぐらいのところに書いてるようなくっそ低レベルなことでがんばり続ける糞バカ君w

鏡、鏡www
0375デフォルトの名無しさん
垢版 |
2023/05/25(木) 03:10:18.42ID:M9yQKv6m
メモリ管理のことにしてもどうせ何もわからんくせに書いてるのバレバレだしw
なんも知らんくせにホントここまでイキがれるバカが怖い
あほ
0376デフォルトの名無しさん
垢版 |
2023/05/25(木) 03:13:31.22ID:V96qJzqz
随分メモリ管理にこだわりますね
javaではさんざんぬるぽで苦労したんでしょうね
0377デフォルトの名無しさん
垢版 |
2023/05/25(木) 03:15:03.78ID:V96qJzqz
>>ここまでイキがれるバカが怖い
>>ここまでイキがれるバカが怖い
>>ここまでイキがれるバカが怖いwwwww
0378デフォルトの名無しさん
垢版 |
2023/05/25(木) 03:17:20.53ID:M9yQKv6m
ほらね、案の定ここで言うメモリ管理とヌルポは論点が全然違うっていうのも理解してない糞バカ君w
なんも知らん糞バカなんだからもうレスやめたら?w
よくバカの上塗り続けられるねwバカだから上塗りしても気にしないのかw
あほ
0379デフォルトの名無しさん
垢版 |
2023/05/25(木) 03:20:05.47ID:M9yQKv6m
まぁバカなりにマウント取ろうとして調べたらヌルポっていうワードが出てきたから書いたんだろうけどw
バカが丸見えだけど精神のほう大丈夫か糞バカ君?w
バカの浅はかな知識じゃ通用しないぞ?w
あほ
0380デフォルトの名無しさん
垢版 |
2023/05/25(木) 03:20:18.56ID:V96qJzqz
>>ここで言うメモリ管理
具体的なこと何も言ってないじゃん
やっぱりバカだ
0381デフォルトの名無しさん
垢版 |
2023/05/25(木) 03:23:38.92ID:M9yQKv6m
メモリ管理しないとどうなるか知ってるならわざわざ言わなくてもわかるんだけどww
わかってないからヌルポがーって書いたんだろ糞バカ君w
小学生が大学の教授レベルの奴にバカバカ言ってるようなもんだが恥ずかしくないのかねw
キミを見てるとこっちが恥ずかしくてかなわんのだけどw
あほ
0384デフォルトの名無しさん
垢版 |
2023/05/25(木) 03:26:03.85ID:M9yQKv6m
これだけ本物だとメモリ管理どころかjavaでまともにコーディングもしたことなさそうだなw
本物だからここまでしつこくバカ晒せるんだろうなw
池沼にここまで時間使ったのはさすがにきついw
がんばって生きろ~池沼w
あほ
0387デフォルトの名無しさん
垢版 |
2023/05/25(木) 03:35:37.17ID:V96qJzqz
センパ~イ、どうしたんすか?
もう寝ちゃったの?
もっと相手してくださいよ~
ボクと一緒にアンドロイドアプリ作りましょうよ
0388デフォルトの名無しさん
垢版 |
2023/05/25(木) 03:51:08.34ID:V96qJzqz
皆さん、お分かりいただけたでしょうか
自分勝手な妄想を膨らませて独り善がりの世界にはまり込んでしまったバカプログラマーの姿を
このようなバカプログラマーには縛りのキツイjavaの鉢巻が必要なのです
javaは暴走する孫悟空を抑止する金輪の役目を果たすのです
しかしここまで拗らせてしまうとjavaの束縛をもってしても手遅れかもしれません
それにしてもjavaは偉大な言語です
これからも我々javaプログラマーは力をあわせてプログラミング業界を盛り上げていこうではありませんか!!!
0389デフォルトの名無しさん
垢版 |
2023/05/25(木) 21:21:41.27ID:6LEkUYgK
なんでそんなにイライラしてんの?
0391デフォルトの名無しさん
垢版 |
2023/05/27(土) 00:22:55.68ID:hhb34/XN
mount battle
0392デフォルトの名無しさん
垢版 |
2023/06/03(土) 17:15:15.17ID:9kRkvUdV
A-B+C

A-(B+C)
では
演算結果が全く違うことに気づきました

これ結構プログラミングで原因不明のバグの原因だったりするんです
本当にJAVAって複雑ですよね
0394デフォルトの名無しさん
垢版 |
2023/06/03(土) 19:17:12.08ID:b989Y/JG
JAVAって複雑だよねー
JAVAって本当に奥の深いプログラミング言語だわ
JAVAの素晴らしさがわからない阿呆がかわいそうだよね
0396デフォルトの名無しさん
垢版 |
2023/06/04(日) 01:40:31.41ID:70umuYY5
なんだこの馬鹿w必死に俺を煽ってたのかw
気づいてもらえないからまたレスつけたんだろうなw
さすが算数もできないバカw
0398デフォルトの名無しさん
垢版 |
2023/06/04(日) 06:04:15.65ID:70umuYY5
バカが自分のバカさに気づいたから恥ずかしすぎて釣りってことにして逃げたんだろうなぁ(哀れみw
コイツこの前のチンパン学生だろうなw
ホント馬鹿の思考って死ぬほどわかりやすすぎてビックリするわ
0401デフォルトの名無しさん
垢版 |
2023/06/04(日) 07:26:11.88ID:70umuYY5
このチンパンガチで小中学生ぐらいじゃねーか?w
小中学生が5ch見るとは思えんねーんけど
さすがにこのレベルの精神年齢幼児は見たことねーわ
延々とブーメラン投げ続ける幼さはどう見ても厨房以下だし
これで大学生以上とかだったら親が悲惨すぎるだろw
0404デフォルトの名無しさん
垢版 |
2023/06/04(日) 13:12:16.82ID:ReNIe+uP
>>401
第三者として言わせてもらうとお前も同じだぞ
0405デフォルトの名無しさん
垢版 |
2023/06/04(日) 17:35:14.87ID:T1LmkLX/
つまんねーことばっか書いてんじゃねえよカスw
理論的に書けねーんならだまってろカスw
でも悔しいから書いちゃうんよね?ね?
すっごい顔真っ赤にして書いちゃうんよねバーカ
よく読んでからレスしろひとまずは馬鹿者
0406デフォルトの名無しさん
垢版 |
2023/06/04(日) 23:03:01.17ID:m1JLB1wn
Kotlin もよろしく
0407デフォルトの名無しさん
垢版 |
2023/06/06(火) 16:43:01.52ID:W7j1snNT
+=a と =+a を間違えてしまうのですがどうすればいいですか?
また
-=a と =-a も間違いやすくて困ります

間違うと結構致命的な欠陥が起きるので
間違わない方法を教えて下さい
0408デフォルトの名無しさん
垢版 |
2023/06/06(火) 17:07:41.74ID:FRP+wj7b
間違えない方法を考えるよりも
たとえ間違ったとしても致命的な問題にはならないようにする方法を考えたほうがいいよ
これはあらゆる安全対策に共通する考え方
0409デフォルトの名無しさん
垢版 |
2023/06/06(火) 17:32:34.99ID:bPa/UKtc
= +a と見ればaにプラスの記号がついているだけだなとわかる
= -a も同様
こういう風に覚えれば混乱することはない
0410デフォルトの名無しさん
垢版 |
2023/06/06(火) 19:55:38.56ID:B6OKgMuL
そのうち慣れるよ
0411デフォルトの名無しさん
垢版 |
2023/06/07(水) 01:19:20.64ID:5P0yt83I
なるほど+-でもなかなか深いですね
やっぱり基本は算数だということは痛感します
0413デフォルトの名無しさん
垢版 |
2023/06/08(木) 16:04:52.14ID:/D7k/eOt
OAuthは認証の仕組みJavaとは関係ない
サーブレットはWebサーバで動作するJavaのプログラム
0414デフォルトの名無しさん
垢版 |
2023/06/08(木) 20:16:59.15ID:QfsUSLCb
>>413
ヤバい質問に真面目に答えてて偉い
0415デフォルトの名無しさん
垢版 |
2023/06/09(金) 02:24:48.58ID:wa2uQ3H6
>>413
Javaのセッションスコープに入ってるログイン情報を使って他のページに遷移するのとは違うんですね。㌧
0417デフォルトの名無しさん
垢版 |
2023/07/08(土) 08:25:58.69ID:4n78TG20
初歩の初歩的な質問で恐縮なのですが
test/Hoge.java内でpackage test;と書くと
The declared package "test" does not match the expected package(宣言されたパッケージ "test "が期待されたパッケージと一致しません。)となり。

test/test/Hoge.java内でpackage test;と書くと普通に実行できるのですが何が違うんでしょうか?
0418デフォルトの名無しさん
垢版 |
2023/07/08(土) 09:11:08.45ID:uBfmbO8B
なにかIDE的なものを使ってない?
それで、例えばパッケージ名がmypkgの時に、
PROJECT_HOME/src/mypkg/Hoge.java
PROJECT_HOME/test/mypkg/HogeTest.java (単体テスト用)
の様にファイルを配置するルールになってるんじゃない?
0419デフォルトの名無しさん
垢版 |
2023/07/08(土) 11:13:05.01ID:4n78TG20
VSCODEを使用しています(最初に書いておくべきでしたm(__)m)。
PROJECT(VSCODEで開いてる)/
Main.java
pkg/
Sub.java
という構成で練習していて
Sub.javaで package pkg; と書くのは問題ないのですが、
Main.javaで package PROJECT; と書くと前述のエラーになります。

まだjavaプロジェクトのフォルダ構成の知識がないので、ご指摘のようにVSCodeで何かのルールを設定しているというより、私が変な勘違いをしているのが原因だと思います。
改めてお聞きしたいのですが
1.packageはプロジェクトホームの直下に作ったパッケージ用ディレクトリ内のjavaファイルで宣言するものなのでしょうか?
2.packageにプロジェクトディレクトリを宣言するのは根本的におかしいことなのでしょうか?
0420デフォルトの名無しさん
垢版 |
2023/07/08(土) 11:19:24.15ID:4n78TG20
すみませんスペースが消えて見にくいので再投稿します;;
PROJECT(VSCODEで開いてる)/
├---Main.java
└---pkg/Sub.java
0421デフォルトの名無しさん
垢版 |
2023/07/08(土) 13:15:46.81ID:uBfmbO8B
なんとなく状況は分かりました
まず"2."に対しては、プロジェクト的なディレクトリ(VSCodeだとworkspace folder)の名前をpackage名には普通用いません

次に、Javaのpackageをもう少し理解しましょう
Javaのpackageはsource pathのルート(起点)からの相対で表現されます
例えばMain.javaのpackageが
package jp.example.hoge.myapp;
である場合、
MyAppProj/src/jp/example/hoge/myapp/Main.java
のように配置します(srcディレクトリを作るかは流儀によりますが、ここでは含めるスタイルで書きます)
この例の場合MyAppProjがC:\Users\hoge\Documents\MyAppProjにあるとすると、source pathはC:\Users\hoge\Documents\MyAppProj\srcです
ここで
MyAppProj/src/Hoge.java
のように配置した場合、Hoge.javaにはpackageは指定しません(指定できません)
これをdefault packageと呼びpackage名を持たない特別な名前空間です
(なおdefault packageは通常、簡単なテストや短い書捨てプログラムにのみ用い、実用的なプログラム開発では使用しません)

あなたの場合、PROJECT/pkg/Sub.javaに
package pkg;
と記述するのは正しいですが、
PROJECT/Main.javaは配置場所からdefault packageに属するのでpackage指定は必要ありません(出来ません)
0422デフォルトの名無しさん
垢版 |
2023/07/08(土) 13:24:35.77ID:uBfmbO8B
書き足し

あなたの場合、"SOME_WHERE/PROJECT"がsource pathとして扱われているので、PROJECT/pkg/Sub.javaに
package pkg;
と記述するのは正しいですが、
PROJECT/Main.javaは配置場所からdefault packageに属するのでpackage指定は必要ありません(指定出来ません)
0423デフォルトの名無しさん
垢版 |
2023/07/08(土) 14:00:31.84ID:4n78TG20
ありがとうございます。やはりパッケージ関連の知識と認識がずれていました。
使用していた教材のパッケージに関する説明が浅すぎて誤解を重ねていたようです。
ご指摘を受けて改めて調べたところVSCodeのsetting.jsonで"java.project.sourcePaths"などを設定できることがわかりました(というかプロジェクトのひな形を作れた)。
また、学習を始めたばかりでディレクトリ構成に対する意識がまったくなかったので新しい課題も見つかってうれしいです。
次はもう少し専門的な質問が出来るように励みますm(__)mありがとうございました!!
0424デフォルトの名無しさん
垢版 |
2023/07/08(土) 19:05:48.95ID:o34+FQNw
プログラム書いてるうちに一つのファイルで4000行メソッド数150くらいになったんだけどこれってデカすぎ?
0425デフォルトの名無しさん
垢版 |
2023/07/08(土) 19:37:24.42ID:/iPIpjid
>>424
1メソッド平均27行ならそんなにおかしくはないんじゃないの
役割を整理してもう少しクラス(ファイル)を分けたほうがいい気もするけど
内容によっては1クラスに150メソッドになることもあるだろうから何とも言えん
0426デフォルトの名無しさん
垢版 |
2023/07/08(土) 21:41:00.88ID:eVw4jtGK
デカすぎるよ
デカすぎる不便をジワジワ感じ取ってほしい
デカすぎないようにいつどうしたらよかったか
それを将来考えることになると思う

ただし、クラスなんてサイズを理由に分割するもんじゃないし
クラス名とクラスの役割の輪郭がハッキリするように
再利用性の高いクラスをつくっていけるように
そんなふうに努力した結果、サイズもちっちゃく収まってくるもんだと思ってる
0427デフォルトの名無しさん
垢版 |
2023/07/08(土) 22:17:52.87ID:dF7KJNrB
publicなメソッド数やオーバーロードの数なんかによるな
一般的なアプリケーションプログラムのクラスなら分割考える
0429デフォルトの名無しさん
垢版 |
2023/07/09(日) 00:34:38.78ID:6w1xzOfB
Java はフォルダ構成とか、クソほど難しい

Ruby なんか簡単に動く。
Ruby on Rails でも、フレームワークでプロジェクトのフォルダ構成は決まっているし、
全員が同じ構成を使うから、分かりやすい
0430デフォルトの名無しさん
垢版 |
2023/07/09(日) 03:58:45.66ID:vMstJd5P
>>424
なんでそんなにでかくなった?なんか設計おかしくないか?
0431デフォルトの名無しさん
垢版 |
2023/07/09(日) 16:18:50.01ID:mN5Eud6o
java.util.Collectionsが
コメント入れて約5600行
コメント抜きで約3500行
インナークラスが約50個
メソッド数が約400(インナークラスのメソッド・コンストラクタも含む、300以上は1行のみ、Unsupported例外を投げるやつも含む)

こういう広く使われるライブラリで
管理上どうしても1ファイルに収めておきたい特殊な事情がある場合のみ
辛うじて許容されるレベルだと思う
0433デフォルトの名無しさん
垢版 |
2023/07/09(日) 20:09:05.80ID:BekWhEcC
自クラス内なら aMethod(); で済むところ

var otherClass = new OtherClass();
otherClass.aMethod();

めんどくさい。
0434デフォルトの名無しさん
垢版 |
2023/08/01(火) 21:46:17.80ID:kDDxMcsN
OutputStreamで謎の文字化けが突然始まり悩んでいたら
UTF-16にしてみたら解決した
何やねんUTF-16ってUTF-8ってもう使えんのか
時代の流れについていけへんわ
0436デフォルトの名無しさん
垢版 |
2023/08/01(火) 23:05:05.44ID:x1qf9Kxk
令和最新版はUTF-23かな
0438デフォルトの名無しさん
垢版 |
2023/08/02(水) 14:51:21.97ID:/XzVRKSs
超古いSDKを使っているせいなのでしょうか?
誤作動します
どうすればいいですか?
0439デフォルトの名無しさん
垢版 |
2023/08/02(水) 23:18:22.17ID:OZDRXvgd
Javascriptを学びたいと思います。オンラインで学べますか。どれくらい時間がかかりますか。
0440デフォルトの名無しさん
垢版 |
2023/08/03(木) 03:52:33.89ID:/xW45k0z
>>434
Writer使って出力してないの?
0441デフォルトの名無しさん
垢版 |
2023/08/03(木) 03:53:23.12ID:/xW45k0z
>>439
それはJavaではない。スレチ。
0442デフォルトの名無しさん
垢版 |
2023/08/03(木) 03:54:28.73ID:/xW45k0z
>>438
新しいJDK使えば良いじゃん。
0443デフォルトの名無しさん
垢版 |
2023/08/05(土) 16:10:51.46ID:5UuUJr5V
>>441
ありがとうございます。他で尋ねてみます。
レスを投稿する


ニューススポーツなんでも実況