はてなキーワード: Unixとは
言語によっては標準的に月末日を取得できる関数が用意されている
用意されてない場合もそこそこあるし
サードパーティー的なライブラリだとライセンスなどメンテナンス含めて面倒になるので避けることも多い
そもそも仕様を「月末日」などという不確定なものにせずに28日にしてもらう
ちゃんと仕様を決める部門と連携が取れていれば多くの場合で28日にしてくれるし
「28日支払い」が多いのもこのためだと思ってる
割とよくある実装がこの「次の月初めから1日(1秒)引く」という実装
2024年2月の月末日を取得する場合は2024年3月1日のUNIX時間から24*60*60秒を引いて計算する
ただし、実装を間違えると12月31日のときに失敗するので注意が必要
各月の月末日をマップとして保持しておいて取得させる
関数実装するなら if(month==1) return 31 とかを12行書けば実装できる
自分で実装する場合はプログラミングの教科書にあるぐらい有名なのでコピペでもChatGPTでも使えば良い
ただ仕様をそのまま実装せずに「4で割り切れたら閏年」でも問題無い(やったことはないが)
「それだと2100年でバグる!」
ちなみに過去の日付であっても2000年はバグらない(そのための400年処理だし)ため
標準ライブラリのすべての関数のありとあらゆる引数に対する挙動を把握している?
標準コマンドは標準入出力を通してプログラム同士で連携することを想定して作成されており、
入出力の破壊的変更を気軽にコミットしようとしたら秒でハネられます
「ゾウリムシよりも蟻は大きい」を「蟻は大きい」で切って引用するのはやめましょう
規模が大きくなると信頼できない、その場しのぎ的な技術であるのはpythonなどのスクリプトの実行環境も同様です
すべての処理、すべてのプログラムをRustで書くような行為はきわめて非生産的ですし、シェルスクリプト以上に危険です
「よく検証されている」というのはされているかいないかというバイナリーな概念ではなく程度問題なので、UNIXの標準コマンドと高級言語の標準ライブラリなら標準コマンドの方が"遥かに"よく検証されているし
論理的じゃないよね
メンテナの数、レビューする人数、実際に動作している環境etc
別に高級なスクリプト言語でも標準ライブラリやインタプリタのバグは踏むときは踏むし
マイクロタスクな標準コマンドは高級言語のインタプリタほど頻繁なセキュリティアップデートは必要ないので使うバージョンはだいたい決まってるし
「よく検証されている」というのはされているかいないかというバイナリーな概念ではなく程度問題なので、UNIXの標準コマンドと高級言語の標準ライブラリなら標準コマンドの方が"遥かに"よく検証されているし