X



Java入門・初心者質問スレ Part.6
レス数が900を超えています。1000を超えると表示できなくなるよ。
0819デフォルトの名無しさん
垢版 |
2018/02/12(月) 19:35:09.62ID:tHIswjpT
>>818
OpenJDKの改変はライセンス違反。
OpenJDKのソースはGPLだが、特許の利用許諾はJCPを通っていることが条件。
改変したらJCPの認定から外れるので、その瞬間にオラクルに特許侵害で巨額の賠償金を請求されることになる。
0821デフォルトの名無しさん
垢版 |
2018/02/12(月) 19:52:33.75ID:gfcybQxo
>>819
あ、そうなの? GPLは改変再配布を許すライセンスじゃなかったっけ?
0822デフォルトの名無しさん
垢版 |
2018/02/12(月) 19:59:41.06ID:tHIswjpT
>>821
GPLv2による利用許諾はあくまで著作権の利用許諾
配布者が利用者を特許侵害で訴えることの可能な欠陥ライセンスだ
オラクルにとっては極めて好都合なライセンスでもある
0823デフォルトの名無しさん
垢版 |
2018/02/12(月) 20:00:36.76ID:gfcybQxo
>>820
今流行ってるのは Java VM 上で動く Kotlin だが、それ使い続ける限り何か影響はあるかも知れない。
しかし kotlin は JavaScript で動くようにするやつやネイティブも作っているのでそちらは影響を受けない筈。
0824デフォルトの名無しさん
垢版 |
2018/02/12(月) 20:03:47.34ID:gfcybQxo
>>822
なるほど。

でも特許部分をくり抜いた版って出せるんじゃないかな?
まあそれだともはやJavaではなくなるのかも知れないが。
0825デフォルトの名無しさん
垢版 |
2018/02/12(月) 20:14:07.01ID:tHIswjpT
>>824
さすがにそんなことをするくらいなら.NET Core向けにJavaコンパイラとJava APIを実装したほうが遥かに建設的で手っ取り早いだろうな
オラクルに言わせれば、APIには著作権が及ぶらしいからどのみち訴訟は避けられないわけだが、
海賊版JVMを作るのに比べたら裁判の勝ち目はあるだろう
0828デフォルトの名無しさん
垢版 |
2018/02/15(木) 09:20:07.56ID:JTk+EmTS
実行スピードは落ちても構わないのでCPUにかかる負担を減らしたい場合
簡単な方法は無いでしょうか
0831デフォルトの名無しさん
垢版 |
2018/02/15(木) 14:27:17.99ID:skblyvdp
>>828
sleepあちこちに入れたら?
0834デフォルトの名無しさん
垢版 |
2018/02/15(木) 17:58:52.48ID:KmltFhyK
文字列str1から文字列"str2"を検索する方法はこうですが
str1.indexOf("str2",0)

両方の文字を数値のbyte配列化してこれより高速に検索する方法ないですか?
地道に配列内を上からチェックしていけばいいですが
それよりスマートで高速な方法ないでしょうか?

文字処理は一般に遅いですが
結局str1.indexOfが一番はやい?
0836デフォルトの名無しさん
垢版 |
2018/02/15(木) 18:35:20.81ID:skblyvdp
気に入らないならソースの String.java を参考にして自作してみれば?

もっと高速化する楽な方法はJNIで作ったり外部コマンド動かしたりする方法かな。
0837デフォルトの名無しさん
垢版 |
2018/02/15(木) 18:36:21.54ID:huciZvxI
>>834
電文処理など、文字列とBYTE列が交わるポイントは確かにあるけど、
可能な限り、文字列は文字列、BYTE列はBYTE列の世界で取り扱うほうが
いいと思うよ。
0838デフォルトの名無しさん
垢版 |
2018/02/15(木) 18:36:51.31ID:aKcpIhES
indexOfの実装にもよるんじゃねえの?
単なる文字列じゃなくなっても大手術しなくて済むように無理しないのが一番良いと思うけど。
バイト列だと思いもよらない文字の切れ目でヒットしたり地獄見ると思う。
入ってるかどうかだけが知りたいならcontainsにするか、それでも遅いならCharSequenceにしてからトライ木にするか。
0839デフォルトの名無しさん
垢版 |
2018/02/15(木) 18:59:28.98ID:38r4ox9p
>>834
ボトルネックでないのに無駄に高速化しようとするのは愚策だから止めた方が。

ボトルネックになってるのであれば同じ文書内を複数の単語で何度も検索するとか
同じ単語で大量の文書を検索するとか具体的なシチュエーションが出てくるだろうし、
そのシチュエーションに適した高速化すりゃいいだけ。

どんなシチュエーションでもindexOfを上回る
(苦労してコード書く意味があるようなレベルで)ってのはかなり難しい。
例えばbyte[]に変換ってのも検索と比較すれば十分重い処理だし。
0841デフォルトの名無しさん
垢版 |
2018/02/16(金) 16:28:18.34ID:M8XJLm2H
>>831
sleep入れても負担は増えるだけだろ
総計算量は同じでsleepを処理する計算が増える
手で処理するしかない
具体的なプログラムが提示されれば改善の余地はあるかも知れないが

時間あたりの負荷が高く他の処理の邪魔をしたくないという話ならプロセスのプライオリティを下げろ
0843デフォルトの名無しさん
垢版 |
2018/02/16(金) 18:23:24.27ID:YSXjevvC
>>841
sleepを処理する計算?sleepの前処理のこと?それ以上にsleepすればいいのでは?
JavaVM内だとどうやってるのかは知らないが、sleepはVM内で指定の時間後に割り込み掛かるようにしてからスレッド停止してるだけじゃないの?
スレッド停止するならその分だけCPUタイムは食わなくなるよ。
0845デフォルトの名無しさん
垢版 |
2018/02/17(土) 00:39:13.30ID:EWYfJ6l0
Linux だと nice とか renice とか ionice ってコマンドがある。
0847デフォルトの名無しさん
垢版 |
2018/02/17(土) 17:06:22.90ID:EWYfJ6l0
>>846
負担と言ったら普通そうなのでは?
それに元の質問は「実行スピードは落ちても構わないのでCPUにかかる負担を減らしたい」だから
JavaVMのOSでのプライオリティそのままでやるとしたらプログラム中の sleep ぐらいしか方法
ないと思うが?
0850デフォルトの名無しさん
垢版 |
2018/02/17(土) 19:22:28.47ID:EWYfJ6l0
>>848>>849
時間当たりのCPU使用率は減って負荷は下がるだろ?
sleep してもそうならない環境なんかないと思うがなあ。
0856デフォルトの名無しさん
垢版 |
2018/02/18(日) 09:03:49.34ID:vQFeCh33
この回答のプログラムなんですけど、
https://stackoverflow.com/questions/39530446/google-spread-sheets-appending-data-using-java

BatchUpdateSpreadsheetRequest batchRequests = new BatchUpdateSpreadsheetRequest();

と宣言時にオブジェクトを new して代入してますが、その後でまた

batchRequests = new BatchUpdateSpreadsheetRequest();

というコードが出てきます。 requests という変数でも同じことをしています。
これって何か意味があるんでしょうか、それとも無駄なことなんでしょうか?
0858デフォルトの名無しさん
垢版 |
2018/02/18(日) 09:53:01.77ID:4dAbe4pu
>>856
その実装がどうだかは知らないけど
コンストラクタに副作用があれば意味ある
ただし1回目の代入は無駄

副作用とは、どっかと通信するとか、ファイルに出力するとか
0859デフォルトの名無しさん
垢版 |
2018/02/18(日) 10:19:16.26ID:vQFeCh33
>>857>>858
ありがとうございました。別に意味はないようですね。実際コードを削除しても動作は変わりませんでした。
0862デフォルトの名無しさん
垢版 |
2018/02/18(日) 19:49:59.31ID:fPQxo54S
理解できる人いるのかな?
0864デフォルトの名無しさん
垢版 |
2018/02/18(日) 21:34:57.38ID:dCbMrjv3
もう無理だろう。sleepで負担が増えるとか書いてる時点で触れてはならない人と気づくべきだったということ。
0866デフォルトの名無しさん
垢版 |
2018/02/19(月) 08:24:01.74ID:1DmhRUos
負担だから命令投げた時点で発生するものということだろ
CPUタイムで課金とかいうシステムならありえる
0867デフォルトの名無しさん
垢版 |
2018/02/19(月) 09:29:52.10ID:PyvgqCqh
もうそっとしといてやれよ
0868デフォルトの名無しさん
垢版 |
2018/02/19(月) 19:55:22.15ID:/8ibrm1C
グーグルスプレッドシートのurlから、シートのIDを抽出するコートはどう書いたらいいですか?例えば、

https://docs.google.com/spreadsheets/d/1IS5WSNxSVSPYseqr0T4LJHU80paHR4vQqB8Cm4GAbiw/edit#gid=0

/d/ の後から次の / まで、 1IS5WSNxSVSPYseqr0T4LJHU80paHR4vQqB8Cm4GAbiw がIDになるのですが、

https://developers.google.com/sheets/guides/concepts
>スプレッドシート ID は、文字、数字、いくつかの特殊文字で構成される文字列です。 次の正規表現を使用すると、
>Google スプレッドシートの URL からスプレッドシート ID を抽出できます。

/spreadsheets/d/([a-zA-Z0-9-_]+)

と公式にあるんですが、具体的に java のコードで、IDを抽出するにはどうしたらいいですか?
0869デフォルトの名無しさん
垢版 |
2018/02/19(月) 20:21:37.87ID:lymwUlC8
>>868
どうしても正規表現でやってみたいなら別として、そうでないなら普通に文字列切り出せばいいのでは?
0870デフォルトの名無しさん
垢版 |
2018/02/19(月) 20:39:01.32ID:/8ibrm1C
javaの入門サイトでググってみて自分で書いたコードがこれなんですけど、もっと簡単なやり方があれば有り難いんですが。

String url = "https://docs.google.com/spreadsheets/d/1IS5WSNxSVSPYseqr0T4LJHU80paHR4vQqB8Cm4GAbiw/edit#gid=0"; ;
Pattern p = Pattern.compile("/spreadsheets/d/([a-zA-Z0-9-_]+)");
Matcher m = p.matcher(url);
m.find() ;
System.out.println("IDは : " + m.group().replace("/spreadsheets/d/", ""));
0871デフォルトの名無しさん
垢版 |
2018/02/19(月) 20:42:58.92ID:lymwUlC8
>>870
group(1)では?
0872デフォルトの名無しさん
垢版 |
2018/02/19(月) 20:43:44.15ID:lymwUlC8
てか、なんでreplaceする必要がある?
0873デフォルトの名無しさん
垢版 |
2018/02/19(月) 20:47:25.62ID:HFhbrMpy
>>870
正規表現使うならreplaceはいらないよ
m.group(1)でおk
0874デフォルトの名無しさん
垢版 |
2018/02/19(月) 20:47:46.51ID:HFhbrMpy
>>872
それ聞く必要ある?
0876デフォルトの名無しさん
垢版 |
2018/02/19(月) 21:04:41.99ID:NZGEjg4E
こんなので性器表現w
IDの前のURLが完全に固定なら次のスラッシュのインデックスまで切り出せば良いだけやん
アホなのか?
0877デフォルトの名無しさん
垢版 |
2018/02/19(月) 21:34:53.60ID:lymwUlC8
>>874
ないなw
0878デフォルトの名無しさん
垢版 |
2018/02/19(月) 21:42:48.48ID:/8ibrm1C
>>873
0が全体の文字列で、1からが()で囲んだグループってことでいいんでしょうか?なんか難しい。
0880デフォルトの名無しさん
垢版 |
2018/02/19(月) 23:55:36.50ID:xIEc0S27
ブラウザの自動操作なら、iMacros とか、Selenium WebDriver を使えば?

Ruby のSelenium WebDriverでは、その要素に、id が付いていれば、
以下で、その要素を取得できる
element = driver.find_element(:id => "何々")

ブラウザの右クリックメニューから、要素を検査で、その要素のHTMLタグ表記を見れる
0882デフォルトの名無しさん
垢版 |
2018/02/20(火) 11:58:24.06ID:qEqx3RvR
頼むから数値リテラル直接使うような糞みたいなコードをドヤ顔で貼るのやめてくれ
これだから初心者スレは嫌なんだよ
0883デフォルトの名無しさん
垢版 |
2018/02/20(火) 12:05:38.07ID:smPOtpq6
>>882
COBOLのコード見たら発狂しそう

数値リテラルベタ書きよりVBとかの全パターンIF文ひたすら書くあれの方が辛いけど
0884デフォルトの名無しさん
垢版 |
2018/02/20(火) 12:31:56.31ID:/G4+50NH
>>882
素敵なコードをお待ちしております
まさか批判するだけしてダンマリなんて真似しないよなぁ
0885デフォルトの名無しさん
垢版 |
2018/02/20(火) 12:55:35.15ID:DWBDu+Jk
サンプルプログラムみたいなやつに一々反応するのもなんだかなー
0887デフォルトの名無しさん
垢版 |
2018/02/20(火) 13:43:06.57ID:DWBDu+Jk
int i = 1;

どや
0890デフォルトの名無しさん
垢版 |
2018/02/20(火) 21:34:30.43ID:Z4nA+j4o
定数であることすら意識したくないのでこう書く

public int getSomeDomainValue() {
return 100;
}
0891 ◆QZaw55cn4c
垢版 |
2018/02/20(火) 21:36:27.78ID:SJPS4KKx
ここで気の利いたワンライナーを書けないのが悲しい…
0892デフォルトの名無しさん
垢版 |
2018/02/20(火) 22:01:23.40ID:1WR4YyaC
設定をxmlから読み込むようにしよう
0894デフォルトの名無しさん
垢版 |
2018/02/20(火) 22:03:21.03ID:1WR4YyaC
オーバーエンジニアリングを頑張るみなさん
0896デフォルトの名無しさん
垢版 |
2018/02/21(水) 20:34:17.12ID:DKFUidIG
getIdメソッドの中に閉じ込めるべきであって
定数と言ってるやつはSIerのJava土方丸出し
0897デフォルトの名無しさん
垢版 |
2018/02/21(水) 20:36:42.66ID:DKFUidIG
>>882
おい初心者
0898デフォルトの名無しさん
垢版 |
2018/02/21(水) 20:38:47.96ID:2C7myRiq
ああ。そうだな。id取り出すメソッドあった方がいいな。
0901デフォルトの名無しさん
垢版 |
2018/02/22(木) 00:35:33.87ID:4xFkIfES
>>870
Stringの正規表現メソッドを使う
url.replaceAll(pattern, "$1");

Matcher受け取ってfind()してgroup()してって面倒くさすぎだわな
さすがJava
0902デフォルトの名無しさん
垢版 |
2018/02/22(木) 00:51:48.88ID:fFqzGPSH
昔は スタティック ボイド メイン て言ってたけど
今は スタティック ボイド メーン て言うの?
0903デフォルトの名無しさん
垢版 |
2018/02/22(木) 09:43:44.84ID:tZO46ghF
昔も今も関係なく main の日本での読みは大雑把にその二つがあるってだけのこと。
0904デフォルトの名無しさん
垢版 |
2018/02/22(木) 09:48:42.48ID:2SdYrV1u
まあここは日本だし
「マインでもいいよね、だってマインスイーパーってあるだろ?」
とか言っても大丈夫。笑われるだけだから。
0905デフォルトの名無しさん
垢版 |
2018/02/22(木) 10:12:17.64ID:4zJSTFdM
新宿のALTAはアルタだがキーボードのALTはオルト
0906デフォルトの名無しさん
垢版 |
2018/02/22(木) 10:39:51.48ID:vi8CGA/V
cocoa なんか米語ではコウコウで英語ならケウケウだしな
英語おカタカナ表記に今更突っ込んでも仕方がない
0908デフォルトの名無しさん
垢版 |
2018/02/22(木) 11:10:01.08ID:4zJSTFdM
前に借りてきたDVDを再生したら最初のコピーはダメとか出す画面で「ワーニング」と上に書いてあって驚いた。
0909デフォルトの名無しさん
垢版 |
2018/02/22(木) 13:20:31.71ID:wRm0NLgE
pingをピングと読むのも許す。
でもHong-Kongをホングコングと読むのは許さない。
0910デフォルトの名無しさん
垢版 |
2018/02/22(木) 13:25:30.59ID:4zJSTFdM
King Kong
0912 ◆QZaw55cn4c
垢版 |
2018/02/22(木) 14:18:47.26ID:Ee7revq9
>>905
そうそう、ALT キーの ALT は alternative の ALT だからね
0915デフォルトの名無しさん
垢版 |
2018/02/22(木) 14:45:35.18ID:kfCclrXK
>>913
shiftはタイプライターのやつを見るとなんとなくわかると思うが横にずらすんた。ずらして変わるのがシフト。
altは別のものを選択するみたいなやつ。
0916デフォルトの名無しさん
垢版 |
2018/02/22(木) 14:46:39.27ID:kfCclrXK
使用例

>>914
ズラがshiftしてるぞハゲ
0918デフォルトの名無しさん
垢版 |
2018/02/23(金) 01:41:39.44ID:YSVEanW2
シフト勤務

日本語でも訛りはわからない場合あるけど
英語の発音は訛りで通じないって言うからな
あと語源が同じ他の言語の発音を比較してる時がある
日本語と中国語もなんで同じ文字にのに発音違うんだよとか言われてそう
レス数が900を超えています。1000を超えると表示できなくなるよ。