Banner (UNIX)
From Wikipedia, the free encyclopedia
操作
実装
このプログラム内部に実装している方法はエラーを起こしやすく、時代遅れである。使用される文字フォントが、静的に初期化されるデータ構造として、プログラム・コード自体にハードコーディングされている。2つのデータ構造があり、1つは(bannerプログラムに特定のエンコーディング方法で、)各文字のビットマップを符号化する、一連の出力命令を網羅するデータ・テーブルである。2番目は、各文字コードに対し、その文字の開始と終了を指示する印字を出力するテーブルにあるインデックスである[3]。
両データ構造は手動作成されている。スピネリスは、「これ以上にエラーを起こしやすく、かつデータ・フォーマットをメンテナンス不可能なまでにするには、かえって難しい」と推察している。彼は、bannerプログラムのソースコードと、(比較のためにNetBSD・mac68k移植版のソースコードにおける、6から10個のフォント・データを使用し、)コンピュータフォントをプログラム・フォント・データに組み込んで符号化するためのソースコードを自動的に生成した場合と比較して、著しいまでの違いを観察している。自動的に生成されたデータについては、ビットパターンをはじき出し、アスキーアートを表現している、とコメントしている。自動的に生成されたデータは、GUIをもつ作成・編集プログラムで生成したビットマップファイルから生成される。そして自動的に生成されたデータは、簡単で理解しやすい手法、— 各グリフ用に符号化されていない一連の固定長バイト列で構成されている[3]。
スピネリスは、さらに続けて、現代的なコンピュータ・システムにおいて、これらデータをプログラムの実行イメージ自身に埋め込むことは、滅多な事がない限り、賢明ではなく、たとえそうしたとしてもパフォーマンスの向上にはさほど寄与しない、と述べている。そのようなことをすると、異なるロケールにプログラムを対応させることや、プログラム自身をメンテナンスすることが困難になる。現代的なシステムにおいてより好まれるアプローチは、そのようなデータを別のファイルに分けて保存し、プログラムの実行イメージファイルと分離すること、またはプログラムのリソースフォークに置き、実行時にプログラムが読み込むこと、である[3]。
バージョン
各派生版の一部を以下に列記する。
出力例
ターミナル指向のbannerプログラムでは以下のような出力となる:
$ banner Hello! # # ### # # ###### # # #### ### # # # # # # # ### ####### ##### # # # # # # # # # # # # # # # # # # # ### # # ###### ###### ###### #### ###
Mac OS XなどBSDとその派生オペレーティングシステム (OS) に通常組み込まれている、プリンター指向なbannerプログラムでは1文字を次のように表示する:
$ banner -w80 "a"
#####
#########
############### ###
################ ######
################## ########
##### ##### #########
#### #### ## ###
### #### ##
### ### ##
### ### ###
#### ### ####
#############################
##############################
##############################
############################
###########################
###
#
#