Qiita 4 - キータぞ、来たぞ、キータだぞー

■ このスレッドは過去ログ倉庫に格納されています
2024/01/17(水) 19:20:36.09ID:VohMlHbO
Hello hackers !
Qiitaは、エンジニアリングに関する知識を記録・共有するためのサービスです。
コードを書いていて気づいたことや、自分がハマったあの仕様について、
他のエンジニアと知見を共有しましょう ;)

https://qiita.com/

Qiita(キータ)は、Incrementsが運営するプログラミング情報のナレッジコミュニティ。
2016年現在で日本最大のプログラマーコミュニティとされている[1]。

https://internet.watch.impress.co.jp/docs/news/1025972.html

前スレ Qiita
https://mevius.5ch.net/test/read.cgi/tech/1542357242/
Qiita 2 - キータぞ、来たぞ、キータだぞー
https://mevius.5ch.net/test/read.cgi/tech/1658762410/
Qiita 3 - キータぞ、来たぞ、キータだぞー
https://mevius.5ch.net/test/read.cgi/tech/1685235361/
2024/03/04(月) 08:16:08.85ID:L2qxv/xY
>>315
> 閏年の仕様が変わったら判定関数だけ置き換えればいいのだから
> 判定関数の中身なんて何でもいいのよ

仕様通りに動作するコーディングできるようなってからカッコイイこと言おうなw
2024/03/04(月) 08:38:24.53ID:rKgJ7Cpp
>>308
あまり見かけねえ書き方で新鮮だな
2024/03/04(月) 09:02:08.19ID:4WAZxDSM
>>315
Rustって使ったことないんだけど動確してみた。書き方合ってる?

fn is_leap_year(year: u64) -> bool {
 let q100 = (year * 42949673) >> 32;
 ((q100 & 3 == 0) | (q100 * 100 != year)) & (year & 3 == 0)
}

fn main()
{
 let year = 107374182500;
 println!("is_leap_year({}) -> {}", year, is_leap_year(year));
}

実行結果:
is_leap_year(107374182500) -> true

https://wandbox.org/permlink/QpmojpixtLrxk9CW
2024/03/04(月) 09:41:48.67ID:ybOgKOgD
>>316 >>321
1000億年後の閏年とか低能丸出し
地球も存在しないぞ
それ以前に60万年後には誤差が半年となり夏冬逆転し無意味となる
それ以前にルールが変わるため大きな数に対応する意味がない
2024/03/04(月) 09:52:37.00ID:vH/xi8sY
日本語に弱いやつしかいないのに互いに馬鹿にしあってるの草
2024/03/04(月) 10:05:22.74ID:bg/wANq4
年を表す引数の型にu64使うのが頭悪い。引数型で表せる値について動作保証できないロジックも同様。
引数に4300億とか与えるとオーバーフローするし場合により異常停止するだろこのコード。実際にそういう引数は与えないと強弁したところで潜在的不具合であることに変わりない。
2024/03/04(月) 10:07:06.25ID:G+SI+9NC
話題に加われない>>323がashworthなの一目瞭然で草ww
2024/03/04(月) 10:17:08.86ID:nwGjv9Ax
https://wandbox.org/permlink/V9X44saMMVMpQVoi
> thread 'main' panicked at 'attempt to multiply with overflow', prog.rs:2:14
> note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

あっこれはカッコ悪いなw

>>315
> 割り算(剰余算)と分岐はCPUにとって非常に遅いから避けるとするならば例えばこんな感じ

素直に100で割ってればオーバーフローしないんだし優先順位間違ってるよ。
2024/03/04(月) 10:23:15.83ID:x5QmeQKx
Rust使いでニワカかあ。
自己評価と実力が合ってない雰囲気で質悪そう。
2024/03/04(月) 10:29:55.63ID:f2L8YBYP
え、今更入力値が何でもアリになるの?w
2024/03/04(月) 10:55:00.92ID:6oMfM7hM
仕様に入力値の範囲が決められてないのに実装者の都合で制限設けて良いって判断は流石に草
2024/03/04(月) 11:23:54.90ID:FbUIg7c9
じゃあバリデーションが必要だなww
2024/03/04(月) 13:14:12.60ID:L4FnNvvc
要件定義の際にクライアントに「1億年後も検証出来る仕様にした方がいいっすか?w」と聞かなかった上流の責任笑
2024/03/04(月) 13:53:50.23ID:GQyS78JX
Rust支持の人達って安全について意識が高く技術的レヴェルが高い層だと思っていたので自ら率先して不具合を作り込もうとする>>315の存在には驚いたんだけど、よく考えてみると

「えっ今どきEmacsなんて使ってるの?今はVSCode一択でしょ」
「えっ今どきSVNなんて使ってるの?今はgit一択でしょ」
「えっ今どきJavaなんて使ってるの?今はKotlin一択でしょ」
「えっ今どきC++なんて使ってるの?今はRust一択でしょ」

使ってる道具でマウント取ろうとする奴なんて昔からいるし使ってる道具が新しく洗練されてたとしてそれ使ってる奴の技術的高さを証明するものではないしなあ、変な先入観持ってたわと反省。
333デフォルトの名無しさん
垢版 |
2024/03/04(月) 14:34:57.46ID:ks/ruwRx
>上流の責任笑
これが末端コーダーの考え方
2024/03/04(月) 15:14:26.33ID:L4FnNvvc
>333
ヒント:冗談
2024/03/04(月) 16:34:00.40ID:FbUIg7c9
入力値に制限がないなら、
文字列とか小数とかそれ以外のパラメータなときを考慮してない
今までのコードは軒並み全部ダメってことでw
336デフォルトの名無しさん
垢版 |
2024/03/04(月) 17:50:07.95ID:+mqsOFjA
>>334
何をバカにされてるかわかってない辺りがまさに末端コーダー
337デフォルトの名無しさん
垢版 |
2024/03/04(月) 17:59:24.41ID:vb1ocUz9
>判定関数の中身なんて何でもいいのよ
判定関数自体の保守性が論点にも関わらずそれを無視した独りよがりのオナニー汚コードを恥ずかしげもなく披露するメンタリティが怖い
2024/03/04(月) 18:31:19.07ID:9eGnhSkR
>>335
元記事に整数と書いてあるんだからそこまで考える必要はないでしょ
2024/03/04(月) 19:15:00.88ID:L4FnNvvc
>336
納期近いのか?イライラしても仕事は進まんぞ
2024/03/04(月) 19:16:47.00ID:8GGqJ/7e
97/400の閏年は10万年で1ヶ月の誤差が出るため100万の入力すら対応する必要がない
そこへ億の入力をして騒ぐのはキチガイ
2024/03/04(月) 20:12:58.89ID:f2L8YBYP
整数、西暦なんて数値制限がないんだから、
型も限りなく無限にちかいbit、桁数まで対応しなきゃいけんのかw
こりゃ大変だなw
2024/03/04(月) 20:22:40.17ID:6JPPJUIM
現在のグレゴリオ暦を運用し続けたとして1兆年後どうなるか? みたいな計算をしたいとして、間違って良い理由はないんだよなあ。
2024/03/04(月) 20:30:16.70ID:k69OqpEV
>>322
>>315のコードでおかしな結果を出す一番近い年が107374182500年だと思ってる??
2024/03/04(月) 20:34:57.33ID:A8alMUdc
3320年で1日の誤差
10万年で1月の誤差
120万年で1年の誤差
季節が数か月ズレると役立たないから
多くても数十万年に対応してれば十分かな
それ以上の数値を持ち出す人は本質的に何が重要なのかを理解できていないバカ
2024/03/04(月) 20:52:01.50ID:BmASXDPG
> 多くても数十万年に対応してれば十分かな

クソコードは数十万年に対応出来てることを証明するのにも無駄に労力要るんだよなあ。
2024/03/04(月) 20:55:08.59ID:sb3IKn5X
> それ以上の数値を持ち出す人は本質的に何が重要なのかを理解できていないバカ

↑入力値によってはプログラムが落ちる事の重大さを理解してないアホ
2024/03/04(月) 20:59:22.65ID:E1/CqXZt
入力値によってプログラムが落ちると思っているアホがいるのか
2024/03/04(月) 21:07:19.90ID:lbPgOJLr
>>315のコードは
・なぜ引数yearの型がu64なのか
・yearを100で割れば良いところを2**32/100倍して32ビット右シフトなんて馬鹿なことをしてるのか

謎なのよなあ、こんなコード業務で書いたら絶対レビューでなんか言われるやつじゃん。

説明すれや >本人
2024/03/04(月) 21:27:56.24ID:cpsYzbII
今どきのコンパイラは、定数割り算を定数掛け算とシフトでコード生成するから、それ自体を問題にするのは知識不足としか。
2024/03/04(月) 21:30:45.48ID:Z3raS9US
>>347
>>326
2024/03/04(月) 21:56:19.34ID:ZAExDmnh
>>326
それDEBUGモードになってるね
RustはC/C++と同じく整数演算はオーバーフローせずラッピングされるよ
2024/03/05(火) 00:11:26.36ID:tUTq/Hb5
型でエラーになるのはダメやろw
有限な数値型を引数にする関数は全部ダメ
2024/03/05(火) 00:19:04.31ID:LgXFRYMx
それはあるな
少なくともbigintは必須
2024/03/05(火) 00:24:51.84ID:VNREUF6A
>>337
平日の昼間から一日中5chに張り付いてるようなやつらに保守性を説いても時間の無駄
理由は言わなくてもわかるよね?
2024/03/05(火) 00:40:04.95ID:ayHwglDl
関数内部の単なる数値演算に保守性もクソもないぜ
そんなところの保守性にこだわるやつは仕事できないやつ
それよりも複数のデータや複数の関数に関わるところの保守性をしっかりやればいい
2024/03/05(火) 05:36:37.94ID:htia+Qez
中身が何でもいいならわずかなパフォーマンス改善よりも楽に読み書きできるほうがいいわwwww
2024/03/05(火) 06:40:09.05ID:vd0jlnr0
非常に大きな値を扱える方がいい場合もあれば
実用の範囲だけを速く扱える方がいい場合もあれば
複雑になっても将来の拡張に備えた形にした方がいい場合もあれば
それら様々な前提があるのだから
それぞれの前提でそれぞれのふさわしい別々のコードになるのは当たり前
各々の前提を無視して批判するのは愚か
2024/03/05(火) 09:50:57.37ID:2lxN9jtN
>>351
実行時にオーバーフローを検出する運用も普通に可能だけど安全の意味分かってる?
2024/03/05(火) 10:58:46.36ID:e0di8bB0
>>351
> RustはC/C++と同じく整数演算はオーバーフローせずラッピングされるよ

CやC++でラッピングされるのは符号なし整数の場合だけ。
符号付き整数のオーバーフローは未定義動作になるので通常許されない。
360デフォルトの名無しさん
垢版 |
2024/03/05(火) 11:09:30.17ID:xnazIivs
>>357
>非常に大きな値を扱える方がいい場合もあれば
>実用の範囲だけを速く扱える方がいい場合もあれば
>複雑になっても将来の拡張に備えた形にした方がいい場合もあれば
どの場合も保守性を無視したコードを書いていいわけじゃないんだぞ
ド素人さんw
2024/03/05(火) 11:10:48.88ID:kMFA7wVm
>>355
> 関数内部の単なる数値演算に保守性もクソもないぜ

>>315のクソコード見てから言え
362デフォルトの名無しさん
垢版 |
2024/03/05(火) 11:33:45.43ID:ihc4PKcq
>>361
どう見ても同一人物だろw
アホか
363デフォルトの名無しさん
垢版 |
2024/03/05(火) 11:52:26.48ID:9nHue/Qo
>>361
>>147のクソコード見てから言え!
2024/03/05(火) 12:09:50.59ID:3LKO8OZb
この狂人の会話についていけるやつが賢いと本気で思うやつおる?w
2024/03/05(火) 12:30:39.80ID:kMFA7wVm
>>363 ashworthの投稿は一目でわかるなw
2024/03/05(火) 18:44:35.96ID:1i72r55F
>>318
「let q100 = year / 100;」の方が生成コードが長く遅くなってるな
あくまでも速さ優先ということならば>>315
「let q100 = (year * 42949673) >> 32;」が正解でいいんじゃないか
あとは状況による使い分けだろう
2024/03/05(火) 19:35:33.31ID:xTYxmN7F
>>366
> あくまでも速さ優先ということならば

https://godbolt.org/z/4sTMYGb9d

引数yearの型をu32にして普通に100で割るのが正解。
2024/03/05(火) 20:42:06.70ID:HwnQ5/nd
> あくまでも速さ優先ということならば>>315
> 「let q100 = (year * 42949673) >> 32;」が正解でいいんじゃないか

「自分は>>315じゃないけどこの人のコードが正解だと思いますよ」みたいな投稿よくできるなあ。
2024/03/05(火) 20:50:34.98ID:CyHqAHwW
周りが見てて赤面するような低レベル自演
それをいつも平気でするのが彼なんです
2024/03/05(火) 21:13:56.87ID:LlXxwVu3
ashworthの投稿は一目でわかるなw
2024/03/05(火) 22:49:41.95ID:EeD2UFNN
まだクソザコミジンコいるの?いい加減飽きたよ
2024/03/05(火) 23:54:29.42ID:RHufrhea
ashworthの投稿は一目でわかるなww
2024/03/06(水) 10:25:59.29ID:ilhvzGuB
C言語1からお教えします!
https://qiita.com/ToaruSWEng_Yopiro/items/0fa594857d72c68fe3f7

宣伝記事。
30日で5万円て微妙な線かな。本人の実力とかサッパリわからん人だけど。
2024/03/06(水) 23:45:18.98ID:gwIxTDvC
>>367
なるほど
コンパイラが
let q100 = year / 100;

let q100 = ((year as u64 * 1374389535) >> 37) as u32;
へと自動変換してくれてるんだ
これは割り算が遅いため?
2024/03/07(木) 17:33:15.65ID:S1Dt4N3M
>>373
消えてんじゃん
それでちゃんと教えてもらえるなら安いが修了して嘘ばっか教えられたとか何も残らんとか独学と変わらんならただの銭ドブだな
2024/03/07(木) 20:58:11.23ID:HzTOrgQG
>>315>>374を比べると微妙に違うんだな
q100 = (year * 42949673) >> 32
q100 = (year * 1374389535) >> 37
2024/03/08(金) 01:22:49.50ID:5X9kKh/r
ashworthの投稿は一目でわかるなw
2024/03/08(金) 01:36:10.70ID:sIorMR2i
>>376
2^5=32倍すれば同じ
2024/03/08(金) 20:20:11.11ID:aW3zWcXt
>>367
うるう年判定プログラムの最終的な正解はそれか
q100 = year / 100
return ((q100 & 3 == 0) | (q100 * 100 != year)) & (year & 3 == 0)
2024/03/08(金) 21:23:51.45ID:5X9kKh/r
うるう年の判定に速度なんて求められてないから可読性捨ててるコードが正解な訳ないんだよ
2024/03/08(金) 21:40:30.10ID:XB1ZE2bb
なんて2年前のしょーもない記事を延々擦ってんの
2024/03/09(土) 01:32:01.74ID:qaiTGGP1
https://qiita.com/jaque/items/b99ed9dce78cc64fa9d2#comment-c16f3fb050b21b73dc21
> 頭がまともならこうじゃねぇの?
> あまりにもバカらしいので動くかどうか検証してないけど。
> あれかな? 掛け算には順序があります!とか言ってる脳みそウニな小学校算数信奉者なんかな?
> なんでreturnするだけでカンマがどうしたいう話になるんやろ?

この人何か辛いことでもあったのかな?かわいそうな人もいればいるものだね。
2024/03/09(土) 02:35:14.90ID:IFxh9Qz2
ashworth生きとったんかワレ
384デフォルトの名無しさん
垢版 |
2024/03/09(土) 03:01:34.02ID:w/dffNo0
自宅Qiita巡回員がパトロール中にashworth見つけてきたのかと思いきや1コメ藤田で吹いたわw
しかもお前early return推奨しとるやんけww
2024/03/09(土) 08:46:40.66ID:dSYGfuSn
https://qiita.com/Sicut_study/items/71b866d8f064699cb57b
胡散臭すぎると思いつつ読んだら最後に士商法のリンクがあって納得した
2024/03/09(土) 08:51:24.21ID:dSYGfuSn
ashworth本人が書いてるんだろうなぁ
387デフォルトの名無しさん
垢版 |
2024/03/09(土) 11:20:29.30ID:ff4VvQN6
D-Threeってやつのが一番まともだが
F#で書いたせいで誰にも伝わってなくて草
JSでも同じように書けるだろうに

逆にStack Overflowなら確実にマイナスポイントになってそうなやつがいいねされてるのあたりはさすがQiita
なんだよ関数型として見ればかなり自然てw
2024/03/09(土) 11:39:24.84ID:MCo17Yej
ashworth発狂してて草w
2024/03/09(土) 11:51:36.66ID:B/Cj+09a
条件演算子を使ってる奴はカバレッジの概念がないんだろうなあ
390デフォルトの名無しさん
垢版 |
2024/03/09(土) 12:16:07.82ID:uaHECGrx
https://qiita.com/jaque/items/b99ed9dce78cc64fa9d2#comment-47fc225ee5fb822d7d4b
> これ、酷いなぁ…。
> こんなのにいいねが6もつくんや…。
> 世も末やなぁ…。

とash worthが仰ってるコメント、

> 今回のコードもいい感じに整形したら意外とありかも?と思って書いてみましたが、やっぱりダメですね。(再代入とカンマ演算子がksすぎる)

と書いててコメント投稿者は良い例として認識してないし「いいね」付けてる人も分かってる筈なんだけど、一人で発狂してるash worth本当に馬鹿だなあ。
391デフォルトの名無しさん
垢版 |
2024/03/09(土) 13:09:29.90ID:P9RNxhmx
前回のうるう年だとashworthはもう少しわかってるやつかと思ってたが今回の見ると俺の見る目が間違ってた
Zuishinや藤田らとどんぐりの背比べと言ってた人が完全に正しい
2024/03/09(土) 13:54:31.13ID:xhr7K3Xv
ashworthの投稿は一目でわかるなw
2024/03/09(土) 13:57:15.07ID:XTrfHDdU
抜群に馬鹿でしょashworth
2024/03/09(土) 14:09:45.45ID:/Q6g3drt
ashworthがよくやってる行動で自分が知らない方法について否定したり馬鹿にしたりするの見ててだいぶ恥ずかしいんだけど本人的にはどうなんかね?
もう50過ぎみたいだけど自分のこと少しも客観視できないのかな
発達障害的な人物かしら
395デフォルトの名無しさん
垢版 |
2024/03/09(土) 14:13:11.40ID:ziGRJbZi
>>287
おまえらって2月29日を迎えるから「うるう年」の話をしてたのか
警戒しててもシステム障害を起こしてワロタ
うるう年でシステム障害を起こす会計システムがすごい
2024/03/09(土) 14:25:42.44ID:rCU83oCx
https://qiita.com/jaque/items/b99ed9dce78cc64fa9d2#comment-c16f3fb050b21b73dc21
> 頭がまともならこうじゃねぇの?

> return z * (
>     (a >= 10)
>       ? 10
>       : (a >= 5)
>         ? 5
>         : (a >= 3)
>           ? 3
>           : (a >= 2)
>             ? 2
>             : 1
>   );

else ifが続くとインデント平気でどんどん深くしちゃうタイプかな?
馬鹿すぎワロタw
2024/03/09(土) 17:11:07.39ID:IFxh9Qz2
流石に非生産的だしうざいから運営に報告したわ
多分何も対処しないだろうけど
398デフォルトの名無しさん
垢版 |
2024/03/09(土) 18:13:38.91ID:OQtWIbCu
うるう年ではashworthが早期リターン推奨で藤田がifのネスト推奨だったのに何で今回は真逆になってるの?
2024/03/09(土) 19:03:44.68ID:03XpQJ59
条件によらず最適な方法はひとつしかないと思ってるならashworthより馬鹿
2024/03/09(土) 19:29:16.06ID:dVZBBHHR
うるう年判定はif使わないのが普通だろ
(4の倍数)&(!100の倍数|400の倍数)
2024/03/10(日) 09:24:24.15ID:YpWHSIo6
>>391
流石にそれらより遙か下だわ
2024/03/10(日) 09:34:19.32ID:mghN6QDE
>>398
うるう年と違って手が入る可能性のある関数だからだよ
2024/03/10(日) 14:25:21.63ID:OjhCzyZA
【Ruby】ラーメンでわかる!引数多すぎ問題の解決方法
https://qiita.com/manrikitada/items/b2ea99d362d49caf1c55

程度が低い記事に程度が低いコメント
2024/03/10(日) 16:33:06.65ID:+tZl95/M
>>398
ashworthは前回と違い自分の把握してるパターンに当てはめられなかったから
藤田はどういう変更が入りそうか考慮できていないから(どちらのケースでも)

表面上逆になってるように見えるかもしれないけど
両者とも根底にあるのはスキル不足
2024/03/10(日) 17:27:00.72ID:uaFYbjkP
ashworthの投稿は一目でわかるなw
2024/03/10(日) 18:06:21.08ID:MBRKJd3z
ashさんはね
スキル不足という以前に単なる世間知らず
自分の実力も相手の実力も見えてない
哀れなお山の大将
2024/03/10(日) 18:55:59.10ID:nT6mPfDM
自分の把握してるパターンて何だw
そもそもashworthが何を把握して何を把握してないかなんてこっちでわからんしだいたい何も把握してないだろ
408デフォルトの名無しさん
垢版 |
2024/03/11(月) 00:37:00.24ID:vVi1HzL9
>>405
藤田さんチィースっw
2024/03/11(月) 01:26:50.22ID:mt0q5LcW
>>403
ashworthはRubyにオーバーロードがない理由、そしてなくてもいい理由すら想像つかないんだろうな
2024/03/11(月) 01:34:14.86ID:mt0q5LcW
確かに記事の質も酷いから、他に書いてる記事見たらやっぱり酷い

新人、優秀すぎて草 #ポエム - Qiita
https://qiita.com/manrikitada/items/b2ea99d362d49caf1c55

会社名出してんのによく出せるな
2024/03/11(月) 07:10:41.85ID:yXOftqXZ
>>410
リンクまちがってね?
2024/03/11(月) 08:06:29.02ID:hK/83P0j
>>410
他の記事じゃないしそんなタイトルの記事もないが
2024/03/11(月) 09:23:14.68ID:0SlKZZrr
新人、優秀すぎて草
https://qiita.com/ueaaoe/items/67c99b86ac8eecb98bbe

これかな?
「いいね」の数にちょっと驚いた。
2024/03/11(月) 11:42:32.27ID:EGKvKGms
ダイレクト出版って一時期右翼系のインチキ臭い本の広告をYoutubeで打ちまくってた会社だっけ
「知識のエージェント」をマークダウン記法で強調しようとして失敗してんね
https://i.imgur.com/1cdiei9.png
2024/03/11(月) 12:19:04.38ID:mt0q5LcW
>>411
>>412
すまん、ちょっと首吊ってくる
2024/03/11(月) 12:57:09.31ID:cSYhjcCx
■ダイレクト出版と経営科学出版とビビッドアーミー
https://anond.hatelabo.jp/20210923014629
> この会社は何をやってる会社というと「情弱向け商売」です。

スタッフすら情弱集めてカモにしてる雰囲気あるなあ。大丈夫なのこの会社?
2024/03/11(月) 13:05:31.39ID:cSYhjcCx
いや、頭悪い記事書いてる奴が社員とも限らんのか。
インターン扱いで質低い仕事タダでやらされてる可能性もありそう。
2024/03/11(月) 13:22:32.96ID:gHT3oTvn
>>413
若い人をほめるといいねがつくし年寄りをほめてもつかない
とりあえずいいねが欲しかったら「今の若い人はすごい!」と書いとけばいいよ
そうすればキータの主なユーザーである情弱を味方につけられるから
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。