1024回保存するたびにハードドライブをフォーマットするワードプロセッサをリリースしました

初心者の語り手に、かつて真剣に失敗した方法を伝えることは、詐欺師症候群に対処するのに役立つ良い方法です。

それはおそらく1984-1985だった。その後、25歳の新進プログラマーとして5年の経験を積みました。私と別のプログラマーが、今日のOfficeに似た一連のアプリケーション(スプレッドシート、ワードプロセッサー、データベース、プロッターなど)を作成してサポートしました。このシステム全体を、3〜4つの垂直市場[ 高度に専門化されたビジネスクライアント/約ペレフ。 ]。

ワープロのほとんどは自分で書きました。フォートで書いた、およびOSとプロセッサのさまざまな組み合わせ。若い人たちは馴染みがありませんが、当時は独自の特別なOSといくつかのプロセッサオプションの1つを備えた新しいマイクロコンピュータが数か月ごとに登場しました。

フォートはディスクとのブロックデータの交換を使用しました。各ブロックの長さは1 kbであり、1 kbを超えるものを保存するには、データのあるすべてのブロックのオフセットが格納されているファイルのマスターブロックを操作する必要がありました。実際、これは、占有ブロックと非占有ブロックのペアのリストでした。

このマスターブロックを初期化するには、ゼロで埋める必要がありました。さて、それは始まりました。つまり、以前の2倍のファイルをサポートするようにアプリケーションを変更し、マスターブロックの256要素ではなく、1024を表示しました

。したがって、512ワードがまだ1 kbのマスターブロックに収まる場合、1024ワードはすでに2つのブロックを使用する必要があります。

したがって、ゼロで埋められたブロックの数を変更しましたが、バッファサイズは変更しませんでした。また、保護されていないメモリを使用していて、1024バイトのスペースに2048個のゼロを書き込むと、残りのバイトによって、メモリ内で見つかったランダムなガベージが上書きされます。

私の場合、ランダムなゴミはすべてOSディスクのマスターブロックであることが判明しました。はい...そして、1ブロックのファイルを書き込むときに1024回ごとに発生する新しいファイルを初期化すると、ディスクのマスターブロックが上書きされ、そこからすべてのファイルが削除されました。

そしてもちろん、このバージョンをリリースしました。これは8〜9週間機能しました。そして、私たちが受けなければならなかった顧客からの電話の数を想像できます。結局のところ、私たちは全員に、バックアップ(ちなみに、ビデオテープを使用して行われたもの)を毎日保管するようにアドバイスしました。

デバッガでプログラムを何度も実行している間、電話で謝罪するだけで何週間も費やしました。そして、私は成功しませんでした。何もない。

そして、一人の女性がカラフルな言葉で電話をかけ、説明しました-彼女は貨物輸送で働いていたので、私は今、冒とくの分野の彼女の例を積極的に使用しています-彼女はバックアップコピーを作成し、ワープロを立ち上げ、そして彼はすぐに彼女のディスクを掃除しました。彼女はバックアップを再度ダウンロードし、プロセッサは直ちにディスクを消去しました。彼女は激怒した。

そして、想像してみて、私がどれほど幸運だったかを理解するのに2時間かかりました。私は夕食時にこの話を私の同僚に話しました、そしてそれはそれから私に気づきました-やめてください。やめる。すぐに?毎回?

私は彼女に電話をかけ、彼女がこのカセットを詰めて私たちに送ってくれさえすれば、すべての地上の祝福を約束しました。私は彼女に配送料を支払い、サービスの毎月の支払いをキャンセルすることを約束しました(上司は少しの間躊躇しませんでした:「はい、地獄、私たちは彼女の支払いをキャンセルします」)。

そして最後に、このエラーを再現することができました。そして、彼女はカンニングをしませんでした。彼女が保存したバックアップは重要なポイントであることがわかりました。作成時のバックアップは1023です。バックアップをダウンロードし、ファイルを保存すると、ドライブのクリーニングが保証されます。

多分私は誇張しているかもしれませんが、私の意見では、映画を撮った同じ朝に問題を見つけました。デバッガで見つけるのはとても簡単でした。

書き込まれるはずだった2 kbのブロックを見て、最後の1 kbにはある種のゴミがいっぱいになりました。それは私には奇妙に思え、私は理解し始めました。そしてもちろん、それはガベージではありませんでした。OSが私のファイルマスターブロックの隣に格納したのは、1024バイトのディスクマスターブロックでした。

カーネルの「前」にバックアップを取得しました。コアダンプはありませんでしたが、この欠陥に到達するための確実な方法が得られました。私が運がよかったら、彼を見つけられなかっただろう。私は自分の記憶ではなく、システムに書いているとはまったく思っていませんでした。

つまり、そうです。あなたの「マスター」オタクは、8〜9週間以内に1024回保存するたびにクライアントのハードドライブをフォーマットしたワードプロセッサをリリースしました。なぜなら、私は職人だからです。

この話には多くの道徳性がありますが、ここではジュニア向けの2つの主要なものを示します。

  1. コードに0、1、-1以外の数値定数を記述しないでください。
  2. 自分をそんなに責めないで。あなたの賢い先輩は皆、似たような話をしていて、それらのいくつかは多くの話をしています。

All Articles