検索
ホームページバックエンド開発PHPチュートリアル[翻訳]PHP ミレニアム バグ (y2k 準拠)、_PHP チュートリアル

[翻訳] PHP Y2K コンプライアンス、

時計は容赦なく 2000 年の最後の年に近づいており、翌年ドゥーム セイヤーズは考えられるあらゆる領域で前例のないコンピューター障害が発生すると予測しています。 2000 年問題、または Y2K バグとも呼ばれるこの状況は簡単に説明できます。この手順では、XX 法は 2000 年の Form XX 日付 19 から始まり、その後翌年まで続くと説明されています。あなたの誕生日が「2/2/05」なら、101年後、それとも1年後には101歳になりますか?

このバグを修正するための費用の見積もりは数十億ドルに達し、少なくともその金額は、実際の損害賠償と申し立てられた損害によって長期化する訴訟費用の再発を脅かす可能性があります。このような壊滅的なコスト予測の結果、企業や政府に対して、すべてのソフトウェアが 2000 年準拠であることが保証されているという、安全で法的拘束力のある声明を使用するよう求める圧力が高まっています。

ご想像のとおり、このプレッシャーは弁護士に慎重な保険会社から生じることが多く、保険会社は実際に被る可能性のある費用の影響よりも、訴訟による死亡を非常に恐れており、その結果、損失が発生します。法的リスクから身を守るために、世界中の組織は、このようなソフトウェアが 2000 年に準拠していることを証明するために、可能な限り急いで安全な場所に急いでいます。彼らは、避けられない混乱が襲った際に、ある種の法的保護を行使し、自らがY2K汚染から解放されていることを正当に宣言し、訴訟の方向を上記文書の署名者に向けるつもりである。

これを覚えておいてください: 誰かがあなたの 2000 ソフトウェアに欠陥がないことを保証するようにあなたに求めた場合、彼らは、たとえそれがたまたま自分のせいだったとしても、ソフトウェアを悪用した場合にあなたを訴える口実を探しているだけです。おそらくソフトウェア ライセンスの条項を忘れている可能性があり、次のような内容になる可能性があります:

作者または配布者は、このソフトウェア、ドキュメント、またはその派生物の使用から生じる直接的、間接的、特別、付随的、結果的損害について、たとえ作者がそのような可能性について警告していたとしても、いかなる当事者に対しても責任を負わないものとします。損害賠償。

著者および配布者は、商品性、特定の目的への適合性、および非侵害の暗黙の保証を含むがこれらに限定されない、すべての保証を特に否認します。このソフトウェアは「現状のまま」で提供され、作成者および配布者はメンテナンス、サポート、更新、改善、または修正を提供する義務を負いません。

自動車メーカーが反保証などの政府の監視にどれだけ耐えられるのか、立ち止まって考えたことはありますか? しかし、なぜソフトウェアメーカーは違うように見えるのでしょうか?このようなものが、今後数年間に確実に起こるであろう法廷での訴訟の混乱を乗り切ることができるかどうかは、まだ分からない。何も期待しないでください。

Y2K についての不安は、ほとんどの大規模組織でますます最高潮に達しています。数日ごとに、一般的なメディアで、ある程度の混乱を予測する別の記事を目にします。これらのレポートのほぼすべてには、曖昧な予断や技術的な混乱が散見されます。これは、ここに本当の問題がないということではなく、何も気にしていないふりをすることができます。答えはもちろん「はい」です。しかし、問題の原因とそれに対して何ができるかは、せいぜい誤解されていることが多いです。通常、嘘が3回繰り返されると状況はさらに悪化します。

Y2K に関する 3 つの人気の嘘

よく言われる最初の嘘は、歴史的に Y2K は昨年の So Dear の高価なコンピューターのメモリから来たものであるというものです。プログラマーたちは、コストを管理するために日付を 2 桁の形式で管理していました。

この発言は明らかに間違っています。考えてみてください。 2 桁の数値はどのくらい保存する必要があるのでしょうか? 2 バイト、16 ビットですか? いや、ましてや、よりコンパクトな表現がすぐに利用できるため、数値データはテキスト形式で保存されることはほとんどありません。 2 桁の年は、00 から 99 までの数値になります。わずか 7 か所で表現できます。

1985 年または 2010 年の通年を使用するのはどうでしょうか? 数値はおそらく 11 桁で表されます。ベテランのプログラマーは、1 日あたり 4 ビットという大幅な速度の節約を実際に喜んで実現しているでしょうか? たとえそうでなくても、妥当なベースからのオフセットを使用することはできます。最後の 2 桁のみが使用された場合、年の日付は絶対値ではなく、1900 年からの年数を表す可能性があります。もしそうなら、これは少なくともしばらくの間は、前述の 7 ビットに適合するでしょう。もう 1 つの点を追加すると、2156 が明らかになります。終わりの質問。メモリを節約することがこれを行う理由ではありません。

昔のユーザーは、1900 年の代わりに年 % 1900 を使用して、年を非展開的に表現することを選択できますが、これはハードウェア コストの問題にはなりません。これは依然として短絡的でソフトな設計ミスです。

2 番目の嘘は、この現象はまったく新しいもので、2000 年には無数のシステムが突然故障するということです。 1895 年に生まれた古代の老人について考えてみましょう。彼らの誕生日を「95」と読むプログラムは、彼らがまだ3歳に見える1998年以来、数か月のチェック費用を支払わない。 2000 年はこの方程式では起こりませんでした。いわゆる「2000 年問題」は流行ったものではなく、またその年に限定されたものでもありません。そうすれば、それはより明らかになるでしょう。

Y2K 問題に関する 3 つ目の、これまでで最も深刻な嘘は、コンプライアンス宣誓供述書や訴訟を取得することで、真実かどうかにかかわらず、会社は危害から身を守ることができるというものです。それはできません。法的文書に対するこの信念は、実際には空虚で危険です。最も賢明なのは、自分の欺瞞を直ちに正すことです。

問題全体の根底にある根本原因は、ハードウェアまたはソフトウェアのいずれかにあります。いいえ、それは簡単すぎます。私たちはそれを修正する方法を知っています。数百ドルを申請すれば、なんとすべてが解決されます。

残念ながら、そうではありません。本当の問題はウェットウェアです。そうです。欠陥はコンピュータやそのプログラミングにあるのではなく、私たち自身にあるのです。

ほとんどの場合、人々は日付について考えるとき、最後の 2 つの数字だけを使います。彼らはそれを小切手に書きます。彼らはそれを家族の聖書に書きました。誰かが「65年まで遡って覚えている」とか「カリブ海におけるアメリカの驚くべき失敗によって彼らの集合意識の基盤が揺るがされた98年のことを覚えている」という言葉を聞くたびに、それが何を意味するのか分かるはずだ。ちょうど65歳ですか? 議長は人生を想定しています、それは1965年かもしれません。なぜ、それはその年ではなく、スペインが新興の新世界の人々にそのみすぼらしい帝国の残骸を失ったときです。文脈から曖昧さを推測しますが、文脈がなければ、推測するしかありません。

最も恐ろしいのは、たとえコンピュータープログラムが完全に正確で動作し、明らかに「2000年対応」だったとしても、依然として大きな問題に直面しているということです。たとえば、有名な Unix Carl プログラムを考えてみましょう。今月を見てみましょう。

リーリー リーリー

ご覧のとおり、プログラムに互換性があるかどうかは問題ではありません。プログラムを使用する人間には互換性がないからです。プログラムを修正することは確かに必要なステップですが、十分ではありません。すべてのプログラムが存在することは証明できますが、それでも十分に安全ではありません。世界中の何十億人もの人々、あるいはコンピューターを使用している数百万人が平等に認証され、忘れられないことが保証される時代が来るまで、セキュリティは存在しないでしょう。そんなことは起こらないでしょう。

特定のプログラムを意図的か非意図的かを問わず悪用できないという法的拘束力のある声明を求めることは魔女狩りにほかならず、あなたとあなたのプログラムを保護するという最終目標は失敗する運命にあります。助けようがありません。常に、無知で困難を抱えたユーザーやプログラマー、さらには時折記憶喪失に陥る無知な人々も存在します。それらを見つけることも、ツールや言語のせいにすることも、自分自身を守ることもできません。 1 年を 2 桁の数字で考えるたびに、問題が再び発生します。そして誰もソフトウェアの問題を解決する方法を見つけませんでした。

パール

Perl はどうですか? Perl 2000 は「互換性」がありますか? 答えは、Perl は Pencil と同じくらい互換性があり、それ以上でもそれ以下でもありません。あなたを慰めるのはどうですか?これは本来あるべきことではありません。 Pencil で Y2K バグをコミットできるのと同じように、Perl やその他のツールでも実行できます。そして、それを行うために遠くまで行く必要はありません。Carl のデモンストレーション プロジェクトが提供する完璧な互換性を目撃してください。

Perl によって提供される日付と時刻の関数は、C プログラミング言語から派生した gmtime() 関数と localtime() 関数です。これらは、2000 年以降を判断するための十分な情報を提供します。 2038 年に危機が発生し、私たちがまだ 32 ビット マシンに依存しているという状況は、確かにまったく考えられないわけではありませんが、可能性はやや低いです。

これらの関数は、一般的な誤解に反して、2 桁の数値として定義されるのではなく、(リストのコンテキストで) 年を返します。むしろ、今がまさにその通りなのです。それは実際には、現在から 1900 年を引いたものです。これは 1900 年から 1999 年の間、10 進数で長年にわたって発生しましたが、これは長くは続きませんでした。 2000 年問題を避けるため、西暦は数字としてまったく考慮されません。言うのは簡単、壊れるのは簡単。過去 5 年間で今年がどのようになるかを調べたいので、次のようなコードを作成するとします。

リーリー

Perl には保証がなく、TPI は Perl をサポートしていません。さらに、Perl は言語であり、言語はさまざまな方法で悪用される可能性があります。しかし、それはプログラマーとユーザーの責任であり、Perl の多くの作成者ではありません。しかし、Perl がフリーソフトウェア運動の代弁者として、私たちは、Perl が同じ Y2K 互換の C 言語インターフェイスに基づいており、Perl コンパイラとインタプリタがそれ自体で書かれていることを指摘する必要があると感じています。日付情報にアクセスする Perl インターフェイスは、設計として使用すると、あらゆる意味で Y2K 互換になります。

それがあなたの弁護士やマネージャーを喜ばせるなら、彼らにお願いしてください。まだ心配することがたくさんあります。

リーリー

原文: http://www.perl.com/pub/199​​9/01/y2k.html

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/852740.html技術記事 [翻訳] PHP ミレニアム バグ (2000 年準拠)、時計は容赦なく 2000 年の最後の年に近づいており、破滅の 2 年目です セイヤーズは、考えられる限りの前例のないコンピューター障害を予測しています...
声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
PHP対Python:違いを理解しますPHP対Python:違いを理解しますApr 11, 2025 am 12:15 AM

PHP and Python each have their own advantages, and the choice should be based on project requirements. 1.PHPは、シンプルな構文と高い実行効率を備えたWeb開発に適しています。 2。Pythonは、簡潔な構文とリッチライブラリを備えたデータサイエンスと機械学習に適しています。

PHP:それは死にかけていますか、それとも単に適応していますか?PHP:それは死にかけていますか、それとも単に適応していますか?Apr 11, 2025 am 12:13 AM

PHPは死にかけていませんが、常に適応して進化しています。 1)PHPは、1994年以来、新しいテクノロジーの傾向に適応するために複数のバージョンの反復を受けています。 2)現在、電子商取引、コンテンツ管理システム、その他の分野で広く使用されています。 3)PHP8は、パフォーマンスと近代化を改善するために、JITコンパイラおよびその他の機能を導入します。 4)Opcacheを使用してPSR-12標準に従って、パフォーマンスとコードの品質を最適化します。

PHPの未来:適応と革新PHPの未来:適応と革新Apr 11, 2025 am 12:01 AM

PHPの将来は、新しいテクノロジーの傾向に適応し、革新的な機能を導入することで達成されます。1)クラウドコンピューティング、コンテナ化、マイクロサービスアーキテクチャに適応し、DockerとKubernetesをサポートします。 2)パフォーマンスとデータ処理の効率を改善するために、JITコンパイラと列挙タイプを導入します。 3)パフォーマンスを継続的に最適化し、ベストプラクティスを促進します。

PHPの抽象クラスまたはインターフェイスに対して、いつ特性を使用しますか?PHPの抽象クラスまたはインターフェイスに対して、いつ特性を使用しますか?Apr 10, 2025 am 09:39 AM

PHPでは、特性は方法が必要な状況に適していますが、継承には適していません。 1)特性により、クラスの多重化方法が複数の継承の複雑さを回避できます。 2)特性を使用する場合、メソッドの競合に注意を払う必要があります。メソッドの競合は、代替およびキーワードとして解決できます。 3)パフォーマンスを最適化し、コードメンテナビリティを改善するために、特性の過剰使用を避け、その単一の責任を維持する必要があります。

依存関係噴射コンテナ(DIC)とは何ですか?また、なぜPHPで使用するのですか?依存関係噴射コンテナ(DIC)とは何ですか?また、なぜPHPで使用するのですか?Apr 10, 2025 am 09:38 AM

依存関係噴射コンテナ(DIC)は、PHPプロジェクトで使用するオブジェクト依存関係を管理および提供するツールです。 DICの主な利点には、次のものが含まれます。1。デカップリング、コンポーネントの独立したもの、およびコードの保守とテストが簡単です。 2。柔軟性、依存関係を交換または変更しやすい。 3.テスト可能性、単体テストのために模擬オブジェクトを注入するのに便利です。

通常のPHPアレイと比較して、SPL SPLFIXEDARRAYとそのパフォーマンス特性を説明してください。通常のPHPアレイと比較して、SPL SPLFIXEDARRAYとそのパフォーマンス特性を説明してください。Apr 10, 2025 am 09:37 AM

SplfixedArrayは、PHPの固定サイズの配列であり、高性能と低いメモリの使用が必要なシナリオに適しています。 1)動的調整によって引き起こされるオーバーヘッドを回避するために、作成時にサイズを指定する必要があります。 2)C言語アレイに基づいて、メモリと高速アクセス速度を直接動作させます。 3)大規模なデータ処理とメモリに敏感な環境に適していますが、サイズが固定されているため、注意して使用する必要があります。

PHPは、ファイルを安全に処理する方法をどのように処理しますか?PHPは、ファイルを安全に処理する方法をどのように処理しますか?Apr 10, 2025 am 09:37 AM

PHPは、$ \ _ファイル変数を介してファイルのアップロードを処理します。セキュリティを確保するための方法には次のものが含まれます。1。アップロードエラー、2。ファイルの種類とサイズを確認する、3。ファイル上書きを防ぐ、4。ファイルを永続的なストレージの場所に移動します。

Null Coulescingオペレーター(??)およびNull Coulescing Assignment Operator(?? =)とは何ですか?Null Coulescingオペレーター(??)およびNull Coulescing Assignment Operator(?? =)とは何ですか?Apr 10, 2025 am 09:33 AM

JavaScriptでは、nullcoalescingoperator(??)およびnullcoalescingsignmentoperator(?? =)を使用できます。 1.??最初の非潜水金または非未定されたオペランドを返します。 2.??これらの演算子は、コードロジックを簡素化し、読みやすさとパフォーマンスを向上させます。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)