スラッシュとバックスラッシュ:道のりのマイルストーン

ちょっとした歴史



スラッシュ


スラッシュの出現は、ローマ帝国の時代にまでさかのぼります。 中世のヨーロッパ全土に広まったFracture [ 1 ]では、近代の初期段階で、コンマの代わりにスラッシュ(/)が使用され、ダッシュの代わりにダブルスラッシュ(//)が使用されました。 ダブルスラッシュは最終的に等号(=)に似た記号に変わり、後にダッシュまたはハイフン[ 2 ]にさらに簡略化されました。



バックスラッシュ


Bob Bemerは、特にALGOLプログラムで見られる文字の使用頻度を調査した結果、1961年9月18日、ASCII文字セットにバックスラッシュ(\)を導入しました。 同時に、バックスラッシュと共に角括弧が標準に含まれていました。

特に、ブール演算子ALGOL ANDおよびORをASCII文字を使用してそれぞれ「/ \」および「\ /」として表すことができるように、\が導入されました[ 3、4 ]。

歴史的に正統派のスラッシュは、特にすでに死んだ言語のための補助記号として導入された鏡像に置き換えられたことがどうして判明したのですか?



これに関するロシア語版ウィキペディアはこれを言っています:

MicrosoftのDOSおよびWindowsオペレーティングシステム、および他の開発者の対応するオペレーティングシステムでは、ファイルへのパスを指定することにより、ディレクトリ(ディレクトリ)を分離するためにリバースオブリークが使用されます。 UNIXでこれに使用されるダイレクトオブリークは、コマンドラインキーを示すためにすでに使用されていたため、MS-DOSでは使用できません(CP / Mから継承、MS-DOSコマンド「dir / w」は「dir / w ") [ 5 ]。



この説明は私を満足させるものではなかったので、記事「 DOSパス文字はなぜですか?」を見つけなければなりませんでした。 「[ 6 ]。これは私の好奇心を完全に満たしました。 私のパフォーマンスで選択した部分の無料翻訳:

「/」記号が別の比較的一般的なOSのパス区切り文字と競合するという事実は、開発者と直接関係ありません。結局、DOSはディレクトリをサポートせず、同じルートディレクトリ内のファイルだけをサポートしました。

MS-DOS 2.0(ディレクトリサポートを導入)では、DOSデザイナーがハイブリッドバージョンを選択しました。DOS1.0からドライブ名が既に継承されているため、開発者はそれらを使用する必要がありました。 また、ドライブ名に加えて、ディレクトリ階層を決定する* nixスタイルの方法を使用することにしました-ファイル名にディレクトリを使用する代わりに(VMSおよびDEC-20で行われたように)、単にディレクトリとファイル名をパスの不可欠な部分にしました。 しかし、それには問題がありました。 スラッシュはすでにキーセパレータとして使用されていたため、* nixパスセパレータ(/)を使用することはできませんでした。

彼らは何をしましたか? 確かに「。」を使用できます。 DECと同様ですが、ドットは既にファイル名と拡張子の区切り文字として使用されていました。 そのため、残りのオプションから最適なオプションを選択しました-「\」記号は視覚的に「/」に似ていたため、DOSでパスを区切るために「\」記号が選択されました。

ところで、MS-DOSには少し秘密があります。 DOS開発者はこの状況に満足していませんでした-メールなどにXenix [ 7 ]を使用していたため、* nixコマンドの構造に精通していました。 そのため、パス区切り文字として「/」と「\」の両方を受け入れる機能を追加しました(これは今日は機能します-XPで「notepad c:/boot.ini」を実行してみてください(ユーザーに管理者権限がある場合)) 。 もっともっと。 文書化されていないシステムコールを追加して、キー区切り文字を変更しました。 また、このフラグをサポートするようにユーティリティを更新しました。 さらに、config.sysに設定パラメーターSWITCHARを追加しました。これにより、ユーザーはキー区切り文字を「-」に設定できます。 そのため、「-switch」とセパレータ「/」を使用したパスを使用して、MS-DOSをnixスタイルのOSに変えることができました。



実際、これは何のためですか?



次の状況により、このトピックを理解するようになりました。

タスクが設定されました-自動テストのレポートシステムを確立するため。 使用するテストには、Selenium(機能)とJmeter(負荷)の2つのタイプがあります。 実際、複雑なことは何もありませんでした。これらの目的のために、ロギングセレン[ 8 ]と呼ばれるオープンソースプロジェクトとmavenのプラグイン-chronos [ 9 ]があります。 すべてを構成し、レポートをローカルでテストした後、CI-TeamCityとの統合について設定しました。 この記事を書いた理由である非常に予期せぬことが私を待っていたのはここでした。

すべてのテストを完了した後、Seleniumテストに関するレポートは次のとおりです。



画像



すべてが完全に表示され、ローカルバージョンとの違いはありませんでした。

しかし、ここでは、Jmeterテスト用に表示されたレポートは刺激しませんでした。



画像

ページ上のすべての画像が完全に欠落していました。

ページのソースコードを表示した後、バックスラッシュが原因であることが明らかになりました。 画像へのリンクは次の形式で示されました。



<img src="images\gc-performancetest.png">
      
      





公平に言うと、Firefoxでは画像が存在していませんでしたが、IEでは正常に表示されていたことに注目してください。 IEがWindowsのパス区切り文字としてバックスラッシュを含むURIにリソースを表示しなかった場合、インドのプログラマーのすでに汚染された評判で、別のギャップがあります。



一般に、ある程度の検討の後、クロノス内のどこかでFile.separatorが使用されることが明らかになりました。これは、リソースパスのバックスラッシュの出現とレポートでのチャートの表示の問題の原因となります。 プラグインのソースをダウンロードし、URLが形成された対応する行を修正することで問題が解決し、JMeterテストの結果に基づいて生成された美しいグラフを楽しむことができました。



画像

画像



結論として、私はネイティブFile.separatorの軽率な使用に対して警告したいと思います-これは常にクロスプラットフォーム性をもたらすわけではなく、場合によっては新しいバグを引き起こすことさえあります。 通常のスラッシュはWindows(多くの場合)で動作し、* nix、Javaで動作し、最終的には少なくともミラーの兄弟より1.5年古いため、少なくとも年功序列によって尊重される必要があります。



PS:Cの作成の歴史を明確にしてくれたhabrayuzer AlexanderYastrebovに感謝します。



All Articles