Linux Gazette 2002年11月号 #84
今月のLinux Gazette の主な記事
n今月のニュース
 ・法制化
 ・一般ニュース
 ・ディストリビューション関連ニュース
 ・ソフトウエア及び製品関連ニュース
n Office Linux −御意見
nコードにプラグイン機能を追加
nままごとブートフロッピイを作る
n LinuxでのMain()実行方法
n 今月のperl ワンライナ:変名ファイルの探検
n コンピュータ馬鹿話
n プログラム例−C# 及びMonoとの出会い
n Debian APT パート1: 基本命令
n 論理ボリューム・マネージャの利用
 
(訳者注)
原文を一括して一つのファイルでセーブするには、下記のリンクがあります。
TWDT 1 (gzipped text file)
TWDT 2 (HTML file)
前者はテキスト形式で、後者はHTML形式です。但し、HTML版のリンクが働くとは限りません。
 
 
 
 
今月のニュース
▼▼▼ 法制化 ▼▼▼
南アフリカの暗号化
Debian Weekly News が南アフリカの暗号化の進展に付いて報じた has reported 。南アフリカ政府に「暗号化製品」の配布を規制する動きがあるThere have been efforts 。この法律The law (pdf)は「暗号化製品」のプロバイダに、その詳細を政府に登録し登録料を支払うことを要求する。
 
Eldred 対Ashcroft
Slashdot は11月に、最近の著作権条項拡張を荒そうEldredとAshcroの間の最高裁訴訟に関する口頭弁論を報じたreported。Linux Weekly News には当日の写真へのリンクがあるhas links 。Register が報じるreportedように、これは極めて難しい争いだ。判決は春まで期待することが出来ないが、そのウエブサイトtheir websiteで問題の情報を(Elderedとその共同原告Eldred and his co-plaintiffsの立場から)入手することが出来る。
 
DMCA
先月、Dmitry Sklyarov とその上司 ElcomSoftのCEO Alexander Katalov が、自分の訴訟で証言するため米国に帰る査証を入手するのが難しいhaving difficultyと報じた。この訴訟The case は、DMCAの非回避条項の共同違反から生じた。ElcomSoftは読者が Adobe eBooksにアクセスするのを容易にする製品を生産した。その結果、証言が更に遅れることとなる。
DMCA をさらに怒らせたのは、RedHat がDMCA違反の脅威のためfor fear of DMCA violations.、米国法の適用されない地域にいる者だけが完全に利用出来るセキュリティパッチを作ったことだ。以前にAlan Cox が同様のことをした。
Rick Boucherの DMCRAのような運動が、DMCAの破壊的側面を和らげるのを望む。余り参考にはならないと思われるが、最近報道されたこれらの問題に対する公衆相談もまた歓迎する。
 
Fritzの Hit List
Edward Felton 教授は、Disney上院議員のCBDTPA法案の下で禁止されるデバイスのリストに最近のデバイスを載せ始めた。最近数日のそれらのデバイスの中には、cockpit voice recorders及びTinkleToonz Musical Potty、話す首輪、話す薬瓶、走行速度カメラ(誰かには損失でないだろう)デジタル・ミシンなどがある。
 
 
 
▼▼▼一般ニュース▼▼▼
Linux と英国警察
英国西ヨークシャ州の警察がスマートカードで保護された一群のLinuxワークステーションを試験中testing a fleet of Linux workstationsとZDNet が報じた。試験に成功すると、3500台のデスクトップに展開して年間100万英ポンドを節約する予定。「それ」に成功すると、英国の別の警察が参加し、全部で60,000台のLinuxワークステーションになる。これはRegisterも報じている also reported
 
インドのLinux
インドが、「私有財産」OSを超えてLinuxを全国的に普及させる計画と報じられているIndia is planning to promote Linux。然しLinux Journal の報じるところでは has reported、インドの計画は、思った程のものではなかろう。Fred Norhona が、インドのLinuxユーザグループを調査したところ、予定されるビル・ゲーツのインド訪問を前にしてタイミングの良すぎる発表なので多くのものが疑いを持っている。しかしこの記事は、政府が力を入れようが入れまいがインドの多くの人がLinuxに転向しているのは確かだと言う。
 
Linuxプログラマ・トレーニングを無料で提供
iCanProgram.com は2002年1月以来、基金提供者の一人の記念のため、ガン研究に対する自発的な寄付のお返しとして、オンラインLinuxプログラムトレーニングを無償で提供して来た。
今のところ2002年に、世界中から1300名以上の学生がこのサービスを受けた。詳細とオンライン登録は http://www.icanprogram.com/ へ。
 
SIMPLオープンソース・プロジェクトが開発者を募集中
The SIMPL open source projectは、Linuxプラットホームに対しQNX などのOSが最初に開拓した Send/Receive/Reply メッセージングの簡便さを持ち込むことを計画している。プロジェクトは既に四年を経過しており、安定に使用することの出来るシステムを作って、幾つかの商業ベンチャに展開している。プロジェクトはネットワーク透明性を拡張して「プラグイン」能力を与える開発者を必要としている。現在のTCP/IPへのサポートを拡張して UDP, SSL, RS232 その他のプロトコルを含ませたい。
援助にご興味があれプロジェクトのサイトhttps://sourceforge.net/projects/simpl/ を訪ねられたい。
 
Openchallenge
Openchallenge.org は、万人の楽しみと情報技術関連の問題に対する解答を探す組織に挑戦するためその「余暇コード」("spare-time code")を、オープンソースの方法で公開するプログラマを求めている。Openchallengeは、創造性を実現させるためとオープンソースの可能性を実世界問題に立ち向かわせるための触媒となり公共に役立つことを狙いとする。四半期毎に二人の貢献者に賞金を出して、自分の創造性をオープンソースのライセンスと原理で公開することを奨励したい。
詳細と質問は、Openchallengeのウエブサイト http://www.openchallenge.org/.へ。
 
GLUE, ALL LUGを募集中
GLUE, Groups of Linux Users Everywhere は現在、ユーザグループに対し、自由会員登録を提案中。特典は、Linux Journal 2割引、TOLISからのBRU[tm]製品購入2割引、Linux Journal (1994年-2000年)の文庫CD、T-シャツ、バンパー・スティッカなど。毎月月末に、月間優勝のグループにはグループ全員(50名まで)に無料でT-シャツを贈呈。グループ編成、会合での注意事項、見本市参加などについては、助言をする。詳細は、 glue@ssc.com.にe-メールで問い合わせるか、http://www.ssc.com:8080/glue へ。
 
Sitescooper
Sitescooper は自動的に、幾つかのニュース・ウエブサイトの記事を検索し、無関係のHTMLを切り外して、後で読むためPlam コンピュータ装置で読めるフォーマットに転換する。キャッシュを維持し、読み終えた記事は削除する。1-ペイジサイト、2-レベル、3-レベルサイトを取扱い、新しいサイトを容易にリストに追加することが出来る。Palm 100を持っていなくても、簡単なウエブサイト−テキスト転換及びオフラインHTML読取には有用であると言われている。Linux Gazette及びその他のLinuxニュースサイトは常に、プリゼネレーティド・エリアで利用することが出来る。
 
 
 
▼▼▼ディストリビューション関連ニュース▼▼▼
Debian
Debian Weekly News は、Josselin MouetteがDebianの課題に関する未処理問題の公開リストpublic todo listを発表したhas announcedと報じた reported。このペイジはどの問題とどのグループが援助を必要としているかを追跡する。
                ______________
最近のDebianの見直しで、インストレーションの容易さと、デスクトップの品質に関し幾つか批判があった。これは無料ソフトなので、それについて何かをすることに人々が興味を持った。Debian Weekly News は、極めて冗長なインストレーション手順にinstallation walkthroughリンクしたhas linked、新しいProgeny Graphical Installer Imagesが利用出来ることを強調して来た。加えて、a Debian Desktop Subprojectが始まったinitiated。その発展はまた ExtremeTechが注目したnoted by ExtremeTech
 
Libranet
Linux Journal がDebian-ベースのLibranetについて論評した review of Libranet
LinuxOrbit もまたこのディストリビューションを論評した reviewed the distribution
 
無からのLinux
長い間お待たせしたが、遂にLFS-4.0 がリリースされた。ファイルは主 LFS サイト - http://www.linuxfromscratch.org/ 及びミラーからダウンロードすることが出来る。
 
Red Hat
OS News が Red Hatの二人の人と、主にグラフィックインターフェイスについてインタビューした。OS News はまた、最近 Red hat 8 を論評した。
 
Slackware
Slackwareの Patrick Volkerding が、オーストラリア紙、The Age、とインタビューした。同紙は、ドットコム・ブームの間、Volkerdingが他のLinuxディストリビューションの巨大なブースに怖じ気づいているのに気付いていたが、それらは消えてしまったのにSlackwareは残って利益を上げているのに注目した。
 
SuSE
Register はSuSE 8.1を論評 reviewed し、MSが恐れると考える−使用の容易さはWindows XPに匹敵し、次のバージョンでは XP を超えると予測する。それでも、少々のバグがある。慣れたLinuxユーザーなら対処出来るが、初心者には問題を生じる。
                ______________
SuSE Linuxは、 SuSE Linux Openexchange Serverを立ち上げ、11月4日に入手出来ると発表した。Openexchangeサーバーは、SuSE Linux エンタープライズ・サーバ、e-メール・サーバ及び広範なグループウエア機能を複合している。その結果、すべてのサイズの企業向けの一体かた通信及びグループウエア・ソリューションとなった。
                ______________
SuSE はまた、世界的技術強調もまた発表した。SuSE は、世界中のSAPクライアントがSAPの主要e-ビジネス・アプリケーションをLinux上で走らせることが出来るようにした最初のLinux企業向けOSで、「全世界SAP技術強調」の最初のLinuxプロバイダである。SuSE Linux企業向けサーバーの詳細情報は、http://www.suse.de/en/business/certifications/certified_software/
 
 
 
▼▼▼ソフトウエア及び製品関連ニュース▼▼▼
SIXNET
SixTRAK IPm Open DCS コントローラは、SIXNETのLINUXベース工業制御製品の最新版latest editionである。SixTRAK IPmの通信(イーサネット3個、シリアルポート3個)及びプログラム能力により、これはプロセス制御、管理制御及びデータ取得(SCADA)又は、分散制御システム(DCS)アプリケーションのための理想的ソリューションとなる。SIXNET IPm製品はモジュラーで拡張性のあるLinuxベースのオートメーション・ソリューションであって、インストールするばかりの工業用ハードウエアを、ボックス外で使うばかりにした豊富なソフトウエア・ソリューションと結合する。
 
Team ASA NPWR-FC
ネットワーク及び記憶装置産業の製品を作るTeam ASA Inc.は、NPWR単一ボード・ネットワーク・コンピュータ (SBNC)ファミリに最新の構成要素NPWR-FCを加えたと発表した。NPWR-FCは、SBNCが初めて、インテルXスケール80321 CPU、二重ギガバイトイーサネット・ポート、二重光ファイバーチャンネル・ポート、シリアルATA(SATA)ポートを単一カード上に実現したものである。
各NPWR-FC は Linux 又は NetBSD CDROMのいずれかを含む。NPWR CDROM はまた、任意のNPWRベース製品に直ちに性能を発揮させるため必要なツール、ドキュメント、ソースを含む。NPWR-FC は、Linux 又は NetBSD OSを走らせるフラッシュROMディスクを用い工場で構成されており、製品の迅速な展開を保証してる。
 
Spectra Linux が McObjectの eXtremeDBをセット販売
McObjectとProbatus Technologies は、革新的メモリ内データベースシステム(IMDS)を、包括的、専門家品質Linux開発運営環境とセットで販売する提携をすると、発表した。McObjectの eXtremeDBがそのSpectra Linux 1.2 ディストリビューションと相性が良いのを保証するのに加え、これによりProbatusはあらゆるコピイにeXtremeDBを含む。この協定により、全世界のLinux開発者とシステムエンジニアに、ディスクベース・データベース・システムの性能及びフットプリントの制限を克服する解決策を提供する。
 
Patchlink アップデート 4.0
PatchLink アップデート4.0は、Linux、UNIX、Microsoft、Novellをはじめとする主要ネットワークOS全部のための脆弱性査定及び展開ソフトウエアの自動化によりパッチ管理の範囲外の要因を扱う困難を取り上げたと主張する。PatchLinkアップデートは、組織のコンピュータシステムを担当する人に、毎日即座にソフトウエア関連セキュリティ違反を検出する能力と、すべてのプラットホーム及び企業境界内全部を直ちに修正するための迅速で効率の良い方法を与えることにより、包括的パッチ管理システムのためのニーズに応える。
 
VariCAD 8.2.0.4 アップデートをリリース
VariCAD は、Windows 98/NT/2000/XP及び Linux (RedHat, SuSE, Mandrake)のための、3D/2D メカニカル CADの新しいアップデートを立ち上げた。最新のVariCAD 8.2.0.4 には、3Dモデリング、2D作図、機械部品のライブラリ(ANSI, DIN)、計算、BOM、そのた多数のためのツールが含まれる。ソフトウエアはライセンス当たり僅か$399で全世界に「完全装備」で提供される。無料試験版は http://www.varicad.com/.からダウンロード。
 
新 SSI M-モジュールがLinuxをサポート
MEN Micro, Inc.の新しい同期シリアルインターフェイス(SSI)M-モジュール・メザニンカードは、工作機械、自動化システム、試験測定装置、その他工業用システムにおけるシャフトその他運動部分の監視と制御を簡便にする。M47専用のMENの新M-モジュールは、32ビット、RS422、SSIチャンネル四ヶを有しており、それぞれがGray及びバイナリ・デコードをすることが出来る。加えて、四ヶのチャンネル全部が、互いに光学的に隔離されている。M47用のドライバ・ソフトウエアは、Windows、Linux、VxWorks、QNX、RTX 、OS-9 のOS用に利用することが出来る。
下に特性を書いた製品のデジタル写真をhttp://www.men.de/products/pressからダウンロードして入手することが出来る。
 
Linuxゲーム出版
Majesty Gold に関するベータテスタ用のアプリケーションが公開されている。ベータに参加希望があれば、 http://betas.linuxgamepublishing.com/ でサインアップのこと。
Virtutech が Simicsのバージョン1.4をリリース
Simicsシミュレーション・プラットホームで、ハードウエア又はソフトウエア設計用に自分自身の仮想コンピュータシステムを構築することが出来る。性能の点では、例えば、Red Hat Linux 7.2を走らせる 2 GHz ペンチアム4ワークステーション上に、Simicsは以下を引き渡す:Linux は模擬4プロセッサItanium システム上で2分以内にブートする。Red Hat Linux 6.0は、模擬Hammerシステム上で5分以内にブートする。Virtutech Simicsは、単一ライセンス$1500でhttp://www.virtutech.com/から入手することが出来る。

Copyright © 2002, Michael Conry. Copying license
http://www.linuxgazette.com/copying.html
Published in Issue 84 of Linux Gazette, November 2002
 
 
 
 
Office Linux ー 御意見
By Matthias Arndt
緒言
以下の記事はLinux Gazette 81号(2002年8月)のOfficeLinux:デスクトップ・ディストリビューションに関するアイデアOffice Linux: Ideas for a Desktop Distributionの続報である。これに関するすべてを知りたい方は、その記事を読まれたい。
あの記事に関して沢山のご意見を頂戴した。私はもっぱら前向きだったが、時には色々な方向に向かった。頂いたメール自体に語らせたい。最後にアイデアに関する私の意見を少し述べる。.
 
沢山のメール…
頂いたメールには匿名を希望するのものがあったので、全部を匿名とすることとし、すべてのメールの名前と住所を削除した。
 From: Linux Gazette 編集者 (Iron)
 To : Matthias Arndt
 Date: Fri, 26 Jul 2002 12:36:56 -0700
 
Re: 新記事: Office Linux - デスクトップディトリビューションに関するアイデア
On Tue, Jul 23, 2002 at 07:05:49PM +0200, Matthias Arndt wrote:
> Linux Gazette用の新記事を添付します。
> お元気なことを望みます。.
 
八月用に書式設定、予告編添付
 
Office Linuxに関する私見:
** これは既存のディストリビューションとパケージシステムに基づいて出来る。
 それで作業の大部分が省略される。システム管理者は、
 Office Linuxに含まれていないプログラムが入用なとき、
 上流のディストリビューションから
 パケージを入手することが出来る。.
 
** 目標ユーザのプロフィールを厳しくする必要がある。
 「セクレタリ」ランは何をするのだろう?。
 Office、ウエブ、e-メール、テキスト編集。
 
** 「セクレタリ」に開発環境は不要だ−それを使って何をするか分からない。
 
** 殆どの事務所は上のような製品を使うことが出来ないだろう。
 基本セットにないアプリケーション一つか二つを必要とするからだ。
 例えば、Gimpなどが必要な事務所があるだろう。これらの人は
 パケージを上流ディストリビューションから得ることが出来るが、
 上流ディストリビューション自体をインストールするのが
 容易でないのではなかろうか?
 
** ディストリビューション(特にRock Linuxなど「自分でコンパイル」
 するもの及び名前は忘れたがLWNディストリビューションリスト
 {lwn.net}に載っている2−3の新しいもの)によっては、
 沢山のシステムに迅速にインストールするため予めコンパイルした、
 ディストリビューションのサブセットだけを含む
 特注CD-ROMを作ることの出来るスクリプトを持つものがある。
 この方がOffice Linuxを作る良い方法だろう。
--
Mike Orr, Editor, Linux Gazette  SSC: Linux Journal出版者
 

 From: Matthias Arndt
 To : Linux Gazette
 Date: Wed, 07 Aug 2002 16:18:51 +0200
Re: 新記事: Office Linux - デスクトップディトリビューションに関するアイデア
今日は!
 
記事の掲載を有り難う!
 
Linux Gazette wrote:
| Office Linuxに関する私見:
| **これは既存のディストリビューションとパケージシステムに基づいて出来る。
|  それで作業の大部分が省略される。システム管理者は、
|  Office Linuxに含まれていないプログラムが入用なとき、
|  上流のディストリビューションから
|  パケージを入手することが出来る。
 
Office Linux は、作るのを容易にするだけのため、既存のディストリビューションからブートストラップしなければなりません。
Gimp は実際に含む計画でした。すべてのアプリケーションを外に残す積もりはなく、作業用サブセットと勿論タスク毎のプログラムをのみを配布する積もりでした。
 
| ** 目標ユーザのプロフィールを厳しくする必要がある。
|  「セクレタリ」ランは何をするのだろう?。
|  Office、ウエブ、e-メール、テキスト編集。
 
現在草案状態のOffice Linux にはこれら全部の達成に必要なもの全部を含む。
 
| ** 「セクレタリ」に開発環境は不要だ−それを使って何をするか分からない。
 
開発パケージは、幾つかのソフトウエアをコンパイルするシステム管理者の任意選択の筈。規定値でインストールするとの意味ではありません。
 
| ** 殆どの事務所は上のような製品を使うことが出来ないだろう。
|  基本セットにないアプリケーション一つか二つを必要とするからだ。
|  例えば、Gimpなどが必要な事務所があるだろう。これらの人は
|  パケージを上流ディストリビューションから得ることが出来るが、
|  上流ディストリビューション自体をインストールするのが
|  容易でないのではなかろうか?
 
Office Linux はインストレーションを容易にする手段で、一度に沢山のことをします。プロジェクトが既存のディストリビューションからブートストラップされるので、別のディストリビューションとの互換性は、含まれます。
 
主流ディストリビューションに対する意見は更に:
* 規定値でインストールされるパケージが多過ぎる
* 指導書が充分でない(Mandrake 文書でもOffice Linux用には不十分)
* インストレーション手順が長過ぎる−Office Linux は「CDを挿し込めば進行」を目論んでいる。
 
| ** ディストリビューション(特にRock Linuxなど「自分でコンパイル」
|  するもの及び、名前は忘れたがLWNディストリビューションリスト
|  {lwn.net}に載っている2−3の新しいもの)によっては、
|  沢山のシステムに迅速にインストールするため予めコンパイルした、
|  ディストリビューションのサブセットだけを含む
|  特注CD-ROMを作ることの出来るスクリプトを持つものがある。
|  この方がOffice Linuxを作る良い方法だろう。
 
実際のOffice Linuxを構築するのは、開発チームに委せます。
これは草案です。記事はある意味で「思い浮かぶまま」です。
 
記事に関するメールを幾つか受け取ったので
私の答を含む続報を書く計画があります。
時間の関係で九月号には間に合いません。
 
掲載して頂いて有り難う
Matthias
 

 To : Matthias Arndt
 From: +++++ +++++++++
 Date: 01 Aug 2002 14:18:55 +0200
”Office Linux - デスクトップディトリビューションに関するアイデアの件”
前略
Linux Gazetteの2002年8月号を読みました。あらゆる点で
優れたアイデアだと思います。我が社が未だLinuxに切り換えない
主な理由は、インストレーション後のボックスが管理者の頭痛だからです。
今のディストリビューションは、一般聴衆を相手にしているので
包括的過ぎるためです。万人を満足させるため、含まれる
オフィスセット、ブラウザなどが多過ぎます。
 
その一方、別のLinuxディストロを探す気もありません。
充分沢山あって、それぞれ他とは違うことをしています。
 
私見では、特定のディストロをリリースする会社/組織か又は、
ユーザ側の工夫のいずれかで、既存のコードベースを、変更
すれば状態が変えられると思います。前の場合、現行ディストロを
CD一枚まで裸にして貴記事のアイデアを実現するのは
Redhat や SuSEに取って難しくないと思います。だがそれは、
市場の需要に左右されます。
 
既に Red Hat 7.x ディストロに kickstart のようなものがあります。
インストール手順(必要パケージの選択、パーティションの配置)
を一度作り、kickstart.cfg ファイルを使ってCDを作ればrpmだけで
インストールできます。必要なインストール後コンフィギュレーション
は、最初のブートの間に自動的に走るアプリケーションなどで
おこなうことが出来ます。
 
大体において、貴殿の提案に基づき素人用ディストロを作るのは
余り難しくないでしょう。
 
それはそうと、規定値デスクトップ・マネージャとして、KDEを
置くのは反対です。仕事でこれを約一年使って、バグ、クラッシュ、
不安定性を全部学習しました。KDEがバグだらけの製品になったのに
失望しました。開発者は古いものを直すより、新しい特性の追加に
興味があるようです。KDEはWindows XP程の安定性にたっするのに
さえ長い時間が掛かるでしょう。別のデスクトップ/ウインドウ・
マネージャを擁護する積もりはありません。偏見を持たせるからです。
だが、KDEはLinuxを初めて使う者には地獄です。
早々
+++++ +++++++++
 
追伸:次のLinux Gazetteで、貴殿が受け取った返答すべてに対する
続報記事を読むのを楽しみにしています。
 

 From: Matthias Arndt
 To : +++++ +++++++++
 Date: Wed, 07 Aug 2002 16:05:28 +0200
Re: ”Office Linux - デスクトップディトリビューションに関するアイデアの件”
今日は、
+++++ +++++++++ wrote:
| 前略
| Linux Gazetteの2002年8月号を読みました。あらゆる点で
| 優れたアイデアだと思います。我が社が未だLinuxに切り換えない
| 主な理由は、インストレーション後のボックスが管理者の頭痛だからです。
| 今のディストリビューションは、一般聴衆を相手にしているので
| 包括的過ぎるためです。万人を満足させるため、含まれる
| オフィスセット、ブラウザなどが多過ぎます。
 
これが、Office Linux 導入の眼目です。このギャップを埋める手段です。
 
| その一方、別のLinuxディストロを探す気もありません。
| 充分沢山あって、それぞれ他とは違うことをしています。
 
選択の自由−私が別のディストリビューションを選ぶのに
反対しないのはそれが理由です。一般的に既存ディストリビューション
の殆どに不満ですが、自分のディストリビューションを作る
時間がありません。Office Linuxで働く計画が無いのもその理由です。
 
| 私見では、特定のディストロをリリースする会社/組織か又は、
| ユーザ側の工夫のいずれかで、既存のコードベースを変更すれば、
| 状態が変えられると思います。前の場合、現行ディストロを
| CD一枚まで裸にして貴記事のアイデアを実現するのは
| Redhat や SuSEに取って難しくないと思います。だがそれは、
| 市場の需要に左右されます。
 
大会社は、こんなことをしないと思います。それらの仕事の
殆ど全部は、何トンもの文書、パケージなどで Office Linux
では使われないでしょう。
既存のコードベースを使うのは、Office Linuxを進める上で
計画済みの方法です。
 
| 大体において、貴殿の提案に基づき素人用ディストロを作るのは
| 余り難しくないでしょう。
 
これは時間と労力の問題で、実現は可能です。
時間と動機が与えられれば、私がしますが、その時間がありません。
 
| それはそうと、規定値デスクトップ・マネージャとして、KDEを
| 置くのは反対です。仕事でこれを約一年使って、バグ、クラッシュ、
| 不安定性を全部学習しました。KDEがバグだらけの製品になったのに
| 失望しました。開発者は古いものを直すより、新しい特性の追加に
| 興味があるようです。KDEはWindows XP程の安定性にたっするのに
| さえ長い時間が掛かるでしょう。別のデスクトップ/ウインドウ・
| マネージャを擁護する積もりはありません。偏見を持たせるからです。
| だが、KDEはLinuxを初めて使う者には地獄です。
 
個人的には、全くKDEを憎んでいて、出来るだけ使わないように
しています。デスクトップを使おうとする最終計画チームに委せます。
誰かが、M$ Windowsに良く似た qvwm の使用を教えてくれました。
 
| 追伸:次のLinux Gazetteで、貴殿が受け取った返答すべてに対する
| 続報記事を読むのを楽しみにしています。
 
あの記事に関するメールをもう少し貰ったら、
返答を11月に発表の予定です。
 
ご意見を有り難う。
Matthias
 

 From: +++
 To : Matthias Arndt
 Date: Sun, 4 Aug 2002 01:00:51 -0600
Office LinuxについてのLinux Gazette 81号の貴記事
前略
貴殿の記事を読み終わりました。優れた視点だと思います。.
 
何か目的があるのですか、単なる「思い付き」ですか?
作業を続ける見込みがおありなら試験が終わるのが楽しみです。
 
92年にLinux を使い始めました。何か分かりませんでしたが、
システム管理者クラスの合格に役立ちました。その後、最近まで
使うのを止めました。自分自身のディストリビューションを作る
最良の方法の詳細を探している間に、貴殿の記事を見付けました。
 
今夜Red Hat 7.3 をインストールし、中身が多くて、大き過ぎます。
 
そこで、作業を続けられるお積もりがあり、別の目で見るのをお望みなら、
お知らせ下さい。そうではないが、そんなグループをご紹介頂けるなら
それでも結構です。
早々
+++
 

 From: Matthias Arndt
 To : +++
 Date: Wed, 07 Aug 2002 15:55:52 +0200
Re: Office LinuxについてのLinux Gazette 81号の貴記事
+++ wrote:
| 前略
| 貴殿の記事を読み終わりました、優れた視点だと思います。.
| 
| 何か目的があるのですか、単なる「思い付き」ですか?
| 作業を続ける見込みがおありなら試験が終わるのが楽しみです。
 
実は今のところ「思い付き」です。このようなプロジェクトを
開始する時間がありません。
 
| そこで、作業を続けられるお積もりがあり、別の目で見るのをお望みなら、
| お知らせ下さい。そうではないが、そんなグループをご紹介頂けるなら
| それでも結構です。
 
上述のように、作業を続ける計画はありません。作業を続ける他の人も知りません。
だが記事に関し沢山のメールを受け取っており、
別の人からも助けたいと言われています。それらの人と
同じことを申し上げます。
プロジェクトを初めて、何かを起こしなさい。
 
ご意見を有り難う
Matthias
 
追伸:記事に関するご連絡全部を発表の予定です。
   貴信の発表を望まれないなら、その旨お知らせ下さい。
 

 From: +++++++ +++++
 To : Matthias Arndt
 Date: Sun, 4 Aug 2002 18:25:42 -0700 (PDT)
Office Linux: デスクトップ・ディストリビューションに関するアイデア
Matthias様
良いアイデアです。Netscape の利用を考えてください。
AOL メールに接続出来るe-メールがあるからです。.
 
お役に立つことがあったらお知らせ下さい
+++++++ + +++++
 

 From: Matthias Arndt
 To : +++++++ +++++
 Date: Wed, 07 Aug 2002 15:50:16 +0200
Re: Office Linux: デスクトップ・ディストリビューションに関するアイデア
+++++++ +++++ wrote:
| Matthias様
| 良いアイデアです。Netscape の利用を考えてください。
| AOL メールに接続出来るe-メールがあるからです。.
 
ソフトウエアの最終的な選択は、プロジェクト上で働く
グループにお任せします。
 
| お役に立つことがあったらお知らせ下さい
 
プロジェクトを発足させて下さい
 
ご意見有り難う
Matthias
 
追伸:記事に関するご連絡全部を発表の予定です。
   貴信の発表を望まれないなら、その旨お知らせ下さい。
 

 From: +++++++ +++++
 To : Matthias Arndt
 Date: Wed, 7 Aug 2002 17:48:28 -0700 (PDT)
Re: Office Linux: デスクトップ・ディストリビューションに関するアイデア
Matthias様
お役に立てます。何処まで進んだかだけお知らせ下さい。
出発点がありますか。
 
AOL Time Warner で働く私には、プロジェクト管理/
文書化/試験/QA/ソフトウエア技術の経験があります。
BS/MBAを持っています。
+++++++
追伸:私の氏名/e-メールは発表しないで下さい
 

 From: Matthias Arndt
 To : +++++++ +++++
 Date: Thu, 08 Aug 2002 10:40:25 +0200
Re: Office Linux: デスクトップ・ディストリビューションに関するアイデア
今日は
+++++++ +++++ wrote:
| Matthias様
| お役に立てます。何処まで進んだかだけお知らせ下さい。
| 出発点がありますか。
 
残念ながら、出発点は決めていません。記事はある種の
「思い付き」、草案です。
ひたむきな目標を持ったプロジェクトを作らなければなりません。
進めたければ進めて下さい。今の処、宣言とメールリストを載せた
ウエブペイジで充分でしょう。私は時間が無いので、自分で立ち上げる
ことは出来ません。
お進めになるならお知らせ下さい。同じような参加希望のメールが
手元に沢山来ております。
 
|  追伸:私の氏名/e-メールは発表しないで下さい
 
承知.
 
Matthias
 

 From: +++++ ++++
 To : Matthias Arndt
 Date: Wed, 07 Aug 2002 09:10:44 +0200
Re: Office Linux: デスクトップ・ディストリビューションに関するアイデア
 
今日は!
Knoppix CDをご覧になりましたか?
貴殿のアイデアをKlaus Knopper と話されると良いでしょう
いずれにせよ彼は必要なノウハウを持っています。
 
Tschuess
+++++
 

 From: ++++++ + +++++++
 To : Matthias Arndt
 Date: Sun, 01 Sep 2002 14:22:20 -0400
Office Linux: デスクトップ・ディストリビューションに関するアイデア
 これは大変良い考えです。私も考えたことがありますが、
纏めることが出来ませんでした。実際のプロジェクトとして
お進めになるならお知らせ下さい。何かの出来るだけお役に立ちます。
 
+++
 

 From: ++++++ +++++++
 To : Matthias Arndt
 Date: Mon, 5 Aug 2002 15:55:44 +0200
Office Linux
Matthias様
Office Linuxに関する記事を読みました。(発表はして
いませんが)この考えを持ったのは私だけでないと知って
嬉しくなりました。
 
この事についての私の主な考えは、Debianから始めることでした。
aptシステムを使うと自分自身のプログラム・ファイル集積を作る
ことが出来ます。これは新しいパケージを作る必要がなく、
ディストリビューション・ベースの既存パケージがあれば
新課題を果たせるので大変有利です。
 
若干の参考事項:
 
サーバー無し:
多分ラインプリンタ・デーモンを何か走らせる必要があります。
一人で全部の事務処理をする小会社にこのソフトウエアを展開する
用意が必要です。この場合、任意選択でファックスサーバー・ソフト
ウエアのインストレーションも出来なければなりません。その上、
貴殿の容易なリモート管理は、サーバー無しの要件に反します。
 
デスクトップ環境:
qvwmの試験を始めました。これはWin95の外観に似ており、KDEより
軽いものです。必要なのは、メニュー入力とデスクトップ・アイコンを
追加する正しいインターフェイスです。デスクトップ環境はまた、DND
機能のある良いファイル・マネージャを含む必要があります。良いものを
探しているところです。MSは嫌いですが、Explorerは良いものです。
 
オフィス生産性:
OpenOffice.org付きKDEより軽い、OpenOffice.org付きデスクトップ環境
を走らせるのが良いと考えます。殆ど作業で、OpenOffice.orgは、64Mb
メモリで200Mhzから出発するWS上で走らせることが出来ます。サーバー
参照:オフィス生産性は、統合ファックス装置を使うと上がります。
 
インターネット:
モデモとネットワークカードアクセス(ADSL/ケーブル)との間で
選択する可能性を作ろます。モデモユーザ用のダイアルに関する
ウイザードは不可欠です。ネットワークカードアクセスにはDHCPが
必要で、kernel経路選択テーブルは、マシン自体にソースを持たない
入信はすべて拒否しなければなりません。
 
ウイジェット・セット
Office Linux は、アドオンとコンフィギュレーション・ツールを
作るための立派で融通性のあるウイジェット・セットを
第三者に、提供することが出来なければなりません。KDEを選ぶなら、
これには勿論問題はありません。qvwmを選ぶなら、GTKベースの
ツールを試されるようお勧めします。
 
この話題にはもう一度戻る事になるでしょうが、今の処、GCI
スクリプトをpostgreSQLに恒久接続するインターフェイスを
容易にする何かのプログラムに忙しく、ネットワークOSとして
のLinux上で4時間9回のコースを準備しなければなりません。
早々,
++++++ +++++++
 

 From: Matthias Arndt
 To : ++++++ +++++++
 Date: Wed, 07 Aug 2002 15:47:41 +0200
Re: Office Linux
今日は
++++++ +++++++ wrote:
|  Office Linuxに関する記事を読みました。(発表はして
|  いませんが)この考えを持ったのは私だけでないと知って
|  嬉しくなりました。
 
結構でした。
 
|  この事についての私の主な考えは、Debianから始めることでした。
|  aptシステムを使うと自分自身のプログラム・ファイル集積を作る
|  ことが出来ます。これは新しいパケージを作る必要がなく、
|  ディストリビューション・ベースの既存パケージがあれば
|  新課題を果たせるので大変有利です。
 
既存ディストリビューションを使うことは私も実際に考えました。
だがDebianには、殆どの場合現在のスナップショットが、陳腐化
した安定なものに対する依存問題を有するとの問題があります。
これが基本ディストリビューションをはじめから構築したい理由
です。しかし、Debianの安定で現行のスナップショットもまた
基礎として使うことが出来ます。管理を容易にするため、apt 又は
この種のソフトウエアは最終ディストリビューションに含みません。
これは、ネットインストールを除いて物事を複雑にします。
Debianを使うのは兎に角良い考えなので、この問題は実際にこの
プロジェクトを立ち上げるグループに委せることになるでしょう。
 
| 若干の参考事項:
 
| サーバー無し:
| 多分ラインプリンタ・デーモンを何か走らせる必要があります。
| 一人で全部の事務処理をする小会社にこのソフトウエアを展開する
| 用意が必要です。この場合、任意選択でファックスサーバー・ソフト
| ウエアのインストレーションも出来なければなりません。その上、
| 貴殿の容易なリモート管理は、サーバー無しの要件に反します。
 
勿論或る種のlpdは含まなければなりません。しかし私は、現在の殆ど
のディストリビューションでは規定値でインストールされるApache、ftpd、
SQL、bind及びその他のサービスを割愛しました。
ファックスは良い考えですが、プリントシステムに含むべきでしょう。
 
|  デスクトップ環境:
|  qvwmの試験を始めました。これはWin95の外観に似ており、KDEより
|  軽いものです。必要なのは、メニュー入力とデスクトップ・アイコンを
|  追加する正しいインターフェイスです。デスクトップ環境はまた、DND
|  機能のある良いファイル・マネージャを含む必要があります。良いものを
|  探しているところです。MSは嫌いですが、Explorerは良いものです。
 
qvwmは大変良いようです。M$ Windowsに似たデスクトップを使ったことが
ないのですが、KDEに対する軽量代案としては大変良いでしょう。
 
|  オフィス生産性:
|  OpenOffice.org付きKDEより軽い、OpenOffice.org付きデスクトップ環境
|  を走らせるのが良いと考えます。殆ど作業で、OpenOffice.orgは、64Mb
|  メモリで200Mhzから出発するWS上で走らせることが出来ます。サーバー
|  参照:オフィス生産性は、統合ファックス装置を使うと上がります。
 
私はそれを当てにしようと思いません。OpenOffice は私のAthlon 600上では
KDEを走らせないと低速なので、P200上で充分早いか疑問です。
 
|  インターネット:
|  モデモとネットワークカードアクセス(ADSL/ケーブル)との間で
|  選択する可能性を作ろます。モデモユーザ用のダイアルに関する
|  ウイザードは不可欠です。ネットワークカードアクセスにはDHCPが
|  必要で、kernel経路選択テーブルは、マシン自体にソースを持たない
|  入信はすべて拒否しなければなりません。
 
Office Linux は、既存LANに組み込むものです。ディストリ
ビューションでダイアルアップ・ネットワークの必要は全く
ありません。ファイアウォールは外側に設けます。Office Linuxは、
純粋なワークステーション・ディストリビューションです。ファイヤ
ウォール、メールなどのサーバー・サービスは、このディストリ
ビューションでは扱いません。
ホームユーザ用のアドオンにはなりますが、ディストリビューションの
予想ユーザではありません。
 
|  ウイジェット・セット
|  Office Linux は、アドオンとコンフィギュレーション・ツールを
|  作るための立派で融通性のあるウイジェット・セットを、第三者に
|  提供することが出来なければなりません。KDEを選ぶなら、
|  これには勿論問題はありません。qvwmを選ぶなら、GTKベースの
|  ツールを試されるようお勧めします。
 
GTK はいずれの場合も必須です。
 
ご意見有り難う
Matthias
 
追伸:記事に関するご連絡全部を将来発表の予定です。
   貴信の除外を望まれないなら、その旨お知らせ下さい。
 

 From: ++++++ +++++++
 To : Matthias Arndt
 Date: Thu, 8 Aug 2002 14:59:08 +0200
Re: Office Linux
Matthias様
 
余計な意見を幾つか・・・
>|  この事についての私の主な考えは、Debianから始めることでした。
>|  aptシステムを使うと自分自身のプログラム・ファイル集積を作る
>|  ことが出来ます。これは新しいパケージを作る必要がなく、
>|  ディストリビューション・ベースの既存パケージがあれば
>|  新課題を果たせるので大変有利です。
 
>既存ディストリビューションを使うことは私も実際に考えました。
>だがDebianには、殆どの場合現在のスナップショットが、陳腐化
>した安定なものに対する依存問題を有するとの問題があります。
>これが基本ディストリビューションをはじめから構築したい理由
>です。しかし、Debianの安定で現行のスナップショットもまた
>基礎として使うことが出来ます。管理を容易にするため、apt 又は
>この種のソフトウエアは最終ディストリビューションに含みません。
>これは、ネットインストールを除いて物事を複雑にします。
>Debianを使うのは兎に角良い考えなので、この問題は実際にこの
>プロジェクトを立ち上げるグループに委せることになるでしょう。
 
私はもっぱらDebianだけで仕事をしているので、これは、容易な
ディストリビューションを可能にするものを多分すべて揃えた
ディストリビューションであろうと感じます。グラフィカル・イン
ストーラは良いでしょう。
 
Windows ユーザが最も魅力的と考える一つの特性は何だと思いますか?
私は、新規ソフトウエアのためインストレーション手順が働く方法だと
思います(OSインストレーション手順ではない)。
 
第一に、スタートボタンの設定タブの下で、追加ソフトウエアの
インストールか削除かを選ぶことが出来ます。Debianが学ぶ点が
あるとすれば、これだと思います。ソフトウエアがCD-RON上に
現れるのを制限し、多分規定値の簡単な選択を持つことにより、拡張
選択の可能性を付けて、グラフィカルツールの下で、ソフトウエアを
ワークステーションに対し Windows.と同じ容易さで追加又は削除
することが出来る筈です。
 
第二に、CD-ROMにはソフトウエアのオートランの特性があります。
Red HatはKDEの下にこれがありますが、Debianではこの特性を研究
していません。
 
第三に、新規Windowsソフトウエアをインストールして旨く行かない
時は、インストレーションCDの挿入を求められ、Windows が必要な
基本ソフトウエアをインストールして、インストール手順を進めます。
これを真似るディストリビューションがあるとすれば、それは確実に
Debianです。Debianパケージが信用される方法は、第三者オフィス
パケージャに「パケージXはインストレーションのためパケージ
Y、Z・・・に依存するので、インストレーション。システムは、
上記のシステムを呼び出すことが出来る」と言わせることです。
インストレーションがインターネットから進む時は、ユーザに
インストレーションCDの面倒を掛けることなく、必要な依存性を
自動的にに解決することが出来ます。
 
勿論、これらのタスクの幾つかはルートアクセスを必要とします。
インストレーションを担当する人には、インストレーション時に、
次のオプションの間の選択を与えなければなりません。
 - ルートだけが新規ソフトをインストールする、厳格に管理された環境
 - 一部ユーザがこれらタスクを実行するが、パスワードを知る必要がある
 - 一部ユーザがパスワード無しでこれらタスクを実行する
 - 誰でもこれらのタスクを実行してよい。
 
ご承知の通り、ワークステーションに対する最大の脅威は、
開いたとき及び不安全なウエブサイトで実行される危険な
ペイロードが付いていて、ブラウザ内で悪意あるスクリプト
を始めるe-メールです。これは、最後の二つのオプションが
本質的に不安全であることを意味します。
 
Javascript、Java 及び plug-inは容易く叩かれるので、この
脅威は余り大きくありません。
 
誰かがこのようなメールを送ることを、平均的なPCユーザがどれだけ
で知っているかは分かりません。個人的にはソフトウエアをe-メールから
走らせるのは禁止すべきだと思います。suid-rootソフトウエアを走らせる
のは、易しいものであっても明確なパスワード無しで許べきではありません。
この場合、ダイアログへのパスワード自動記入は不可能にすべきです。
 
上のパラグラフは、上でこれが問題であることを明確に示したことが、
全く明確でないと思います。これは慎重に検討すべきであり、自動実行と
実行可能コンテントの転送が、システムに対し危険である理由を、ユーザ
に対し、明確に分かり易く説明すべきであると考えます。
 
>|  オフィス生産性:
>|  OpenOffice.org付きKDEより軽い、OpenOffice.org付きデスクトップ環境
>|  を走らせるのが良いと考えます。殆ど作業で、OpenOffice.orgは、64Mb
>|  メモリで200Mhzから出発するWS上で走らせることが出来ます。サーバー
>|  参照:オフィス生産性は、統合ファックス装置を使うと上がります。
 
> 私はそれを当てにしようと思いません。OpenOffice は私のAthlon 600上では
> KDEを走らせないと低速なので、P200上で充分早いか疑問です。
 
皆がOpenOffice.orgは遅いと言うのは何故でしょう?起動はその通りです。
だが、私は32MbのRAMが付いた 233 Mhz PII ノートパソコン上
でDebian 2.2の下で使って、Linuxに関するコースととプレゼンテーション
(32Mbのグラフィックはなし)を作って来てましたが、常に
AutoCorrectが働くけれども、速度が遅いと思ったことはありません。
私の父は、48 Mb付きPentium 100 MhzマシンでWindows版を使って
いますが、速度で文句を言ったのを聞いたことがなく、私の古い
Cyrix 6x86を133 Mhz と64 Mb で使っている家内も同様です。
早々
++++++ +++++++
 

 From: ++++ ++++
 To : Matthias Arndt
 Date: Mon, 5 Aug 2002 15:56:39 -0500
Office Linux
Matthias様
 Office Linux のアイデアに関し、正しい考えだと思います。Star Office 6.0
も同じく良いものですがOpen Officeを勧めるでしょう、それに
MSオフィス製品と程々の互換性があります。私は低所得ユーザのため,
マシンを再生していますが、彼らにはお金がないので、Word文書
又はExcel スプレッドシートを読めるようOpenOfficeと一緒に
Windows 98SE 又は Red Hat 7.3 のいずれかをインストールします。
私の好きなブラウザはMozilla 1.0.x で、Sun Java JRE1.4.0.x.と一緒に
旨く働いています。Mozilla には、IEを見たいウエブサイトに対し
IE 5.0 に「仮装」する能力があります。これは有用です。私は実際に、
SuSE 7.3 w/KDE 3.0、OpenOffice 1.0.x、Netscape 6.2.x、Ximian Evolution
を走らせる小さいコールセンターを見ました。以前にはWindows
ワークステーションで働いていたはそこで働く人は、KDEの下で
短期間の内に生産性を発揮しました。コールセンター用の2台の
サーバーは、HylaFax、sendmail、及び幾つかの特注アプリを走らせて
いました。ソフトウエア全体の費用は、すべてをMS Windows環境
の下においたときの、1/10で、法律的にも財産的にも合法でした。
++++ ++++
 

 From: ++++ ++++
 To : Matthias Arndt
 Date: Thu, 8 Aug 2002 08:12:25 -0500
RE: Office Linux
私の回答を公開して頂いて結構ですが、迷惑メールで私の
メールボックスが溢れるとこまるので、e-メールアドレス
は削除して下さい。
-----元のメッセージ-----
From: Matthias Arndt
Sent: Wednesday, August 07, 2002 08:30
To: ++++ ++++
Subject: Re: Office Linux
今日は!
++++ ++++ wrote:
| Matthias様,
| Office Linux のアイデアに関し、正しい考えだと思います。Star Office 6.0
| も同じく良いものですがOpen Officeを勧めるでしょう、それに
 
Openoffice は全く自由で、安価でStarOffice 6.0. より強力です。
(SO6 はOpenOfficeに基づく)
 
貴信の後の部分に感謝。
この記事に関して頂いた回答全部を公開する積もりです。
貴メールの公開をお望みでないならお知らせ下さい。
 
宜しく
Matthias
 

 From: +++++++ ++++++++++
 To : Matthias Arndt
 Date: Wed, 7 Aug 2002 12:26:15 +0200
Office Linux
Matthias様
Linux Gazetteの貴殿の記事を読みました。正しい方法です。このプロジェクトがどこかで進んでいるなら、宜しくお伝え下さい
 

 From: ++++++ +++++++++++++
 To : Matthias Arndt
 Date: Thu, 15 Aug 2002 09:44:00 -0500
Re: Office Linux
Matthias様
Linux Gazetteの記事「デスクトップ・ディストリビューションに関する
イデア」で貴殿が求めておられるものは、既に存在します。
http://www.lycoris.com/ をご覧ください。
++++++
 

 From: +++ +++++++
 To : Matthias Arndt
 Date: Tue, 27 Aug 2002 17:21:34 +1000
Office Linux
Linux Gazetteの貴殿の記事を読みました。このような方法でLinuxを
支配する試みは、正にmicrodozeがそのシステムを使ってしている方法
です。「馬鹿なユーザ」の例を踏襲するのは、馬鹿なユーザの考えです。
Linuxは革新を促進するため設計された無政府主義的システムです。ユーザ
の選択を支配してこれは得られません。
microdozeが馬鹿なユーザの考えを作ったのを忘れないで下さい。これが
来る前に、事務所職員は120から130の範囲のIQを持っており、相応の
給料を貰って、ハシゴを上って行きました。
Linux は出口です。microdoze しないで下さい。.
面白い記事を有り難う。
宜しく
+++ +++++++
 

 From: +++++++++ +++++
 To : Matthias Arndt
 Date: Mon, 5 Aug 2002 15:29:21 -0300
デスクトップ・ディストリビューション
Matthias様
Linux Gazette にLinuxディストリビューションについて書かれた
記事を読みました。このプロジェクトにつき議論されたメールリスト
が有りますか、お役に立ちたいと思います、私の名は+++++++で、
+++++出身です。コンピュータ。アナリストとして働いています。
私と私の同級生の何人かがお役に立つでしょう。
早々
+++++++++
 

 From: ++++++
 To : Matthias Arndt
 Date: Wed, 7 Aug 2002 17:24:21 +0100
立派な考え
今日は!
Linux gazetteのご意見が気に入りました。
私が小企業のため構築しようとしているものです。
万歳
+++++
+ + +++++
 

 From: +++++++ ++++++++++
 To : Matthias Arndt
 Date: Wed, 14 Aug 2002 14:30:51 +1200
Office Linux: デスクトップ・ディストロに関するアイデア
Matthias様
貴殿の記事を読みました。立派な業績です。ディストロ呼出の
Lycorisを纏めたものと思います。www.lycoris.comを調べられると
dot orgと同時に極めて強力な協力者の団体があります。このディストロ
は、calderaに基づいており、Koffice、Mozilla、KDE2を用いる単一CD
のインストールです。ご覧になるべきです。
宜しく
+++++++
 

 From: ++++++ ++++++
 To : Matthias Arndt
 Date: 01 Sep 2002 14:03:23 -0500
office linux
Lycorisをどうお考えですか?ooficeと一緒には来ない(覚えて
いません)が、その他の特性は全部持っています。初版は持って
いますがver 2 は試していません。自分の必要から mandrake 8.2 と
suse 8.0を使っていますが初心者にはlycorisを推薦します。
++++ ++++++
+++++++
 

 From: ++++ ++++++++
 To : Matthias Arndt
 Date: Tue, 3 Sep 2002 20:52:56 +0000
貴殿の記事「Office Linux: デスクトップ・ディストリビューションに関するアイデア」
Hi Matthias
デスクトップ・ディストロ改良についての記事が気に入りました。
仕事上、私は先駆的なLinuxユーザ(で仰せのセクレタリ)です。
私のコンピュータが誰にも負けないのが上司を助けています。
 
Mandrakeで始めましたが、RedHatに変えました。正しい変更でしたが、
理想的なデスクトップ・ディストロではありませ。正しいデスクトップ・
ユーザマシンに適合させるには、色々な切り貼りが必要です。今のところ、
OpenOffice, KDE, Sylpheed, Opera,ネットワークプリンタと話すのに LPRng、
サーバーとのファイルの遣り取りにGETP、サーバーベースのアプリと話す
のにEricommのs PowerTerm を快適に使っています。
 
私のワークステーションは年間5千の文書を作ります。私は営業担当VP
のセクレタリ兼部長の1/4のアシスタントです。Linuxステーションは
メールリストを取扱い、レポート機能のためプリントサーバの役目も
します。販売員のためのビラ作りもします。これら全部をこなしています。
故障したり止まったりしたことはないので、IT部は事務所の残りもLinuxに
変えることを考えています。
 
デスクトップ・ディストロの需要はあります。ソフトウエアが現れるのは
時間の問題と言って差し支えないでしょう。
 ++++
 penguinista-at-large
 

これまでのところ、メールは、
 
様々のアイデアと考えに対する意見
1. 思い付き
誰かが言ったように、その通りだ。Office Linux は私の考えを共有しており他の人がそれを論評することが出来る。記事は企業意見ではない。
 
2. Lycoris
幾人かの人が、Lycorisの形でOffice Linux類似のものがあると指摘した。Lycorisは私の考えるLycorisとは違うと思う:
・Linuxセキュリティの点で実際のLinux と異なる。
・Microsoft OSに余りによく似ている。
・小型でない。
・対象目的に絞られていない。
私の個人的意見では、Lycorisは今までのLinux社会で最悪のものだ。 Lindowsも同じだ。これは本物のLinuxではなく、物事、真の友人及びLinuxがシステム上でおこなうことを好むユーザの信頼を保つことなく、LinuxをM$スタイルで売るものだ。
Office Linux は、ソフトウエアのパケージを切りつめただけで、セキュリティを含む有名なスタイルの点でLinuxシステムに止まらなければならない。
 
3. Linuxのマイクロソフト化
少数の意見が言うように、Office LinuxはM$ビジネス慣行をLinux社会に持ち込む方法であろう。
Office Linux は、それが目的ではない。Office Linux は、Linux社会全体の枝分かれでなければならない。これは、多くのオープンソース及びツールを含む別のLinux OS だ。商業用であろうとなかろうと−Office Linux は、Debian であれMandrakeであれ、既存のディストリビューションからブートストラップされるLinuxに止まる筈だ。GNU一般公開ライセンスもまた Office Linuxの主点火剤である。
上述のように、Office Linuxは Lycoris、Lindows その他Microsoft OSに似過ぎるその他のディストリビューションのスタイルの製品を意味するものではない。
4. 馬鹿なユーザ
これは上述のものと、殆ど同じだ。
一般的にユーザは馬鹿ではないと思う。しかし、実際は普通のユーザの殆どは変人や専門家に比べると馬鹿だ。
専門家、Linux狂及びシステム管理者はOffice Linuxの相手先グループではない。これらのグループは、私の父、一部のセクレタリ、又は学校の英語教師のような、自分の仕事をさせたい平均的なコンピュータ・ユーザである。これらの人々は、細工の出来る特注Linuxシステムではなく、安定で保証済みのLinuxシステムを求めている。コンピュータは彼らに取って天国ではなく道具で、私の場合、道具は役に立って使い易いものだ。
そして、そのグループを目指して、今のディストリビューションは役に立たないと思う。Office Linxはその隙間を埋める。
 
5.既に働いているプロジェクトがあるか?
Office Linuxは進行中のプロジェクトかとの問い合わせがあった。これら両記事はスタートだ。私のアイデアと考えを共有したいと思った。ご覧の通り、このようなプロジェクトには最小のニーズしかない。どなたかOffice Linux プロジェクトを発足させる篤志家があると嬉しい。今のところ、私は余り没頭することが出来ない。
一つだけ簡単なことをした。Office Linuxに関するメールリスト、アイデア及びプロジェクトは出来上がっている。
リストのアドレスはofficelinux@freelists.orgだ。
 
○加入方法:
ユーザはofficelinux-request@freelists.org宛に、題名フィールドに 'subscribe' と記入したe-メールを 送ればリストに加入することが出来る。
 
○脱退方法:
ユーザは、officelinux-request@freelists.org宛に、題名フィールドに 'unsubscribe' と記入したe-メールを 送ればリストから脱退することが出来る。
 
○投稿方法:
ユーザはリストに加入の上、officelinux-request@freelists.org宛に、投稿することが出来る。
Office Linuxに興味のある方は何方でも参加されたい

Copyright © 2002, Matthias Arndt. Copying license
http://www.linuxgazette.com/copying.html
Published in Issue 84 of Linux Gazette, November 2002
 
 
 
 
コードにプラグイン機能を追加
By Tom Bradley
0. 緒言
プログラムを単独で登録する日は過ぎ去った。今日のプログラムは、多用途で拡張可能である必要がある。プログラムに融通性と拡張性を与える方法は、プラグインとも言うモジュールの使用を通じることである。ウエブ・ブラウザと音楽プレーが、プラグインの出来るプログラムの好例である。ブラウザは、プラグインを使ってJava、Flash、QuickTimeなどのウエブペイジに対するサポートを追加し、豊かなサーフィング経験が出来るようにする。XMMSなどの音楽プレーヤは、プラグインを使って色々なエンコードをサポートすると共に、ビジュアル・プラグインを付けて音楽ダンスを画面上で眺められるようにする。この記事は、自分のプログラムにプラグインを設ける方法を示す。注記:モジュールとプラグインを交互に使うが、この記事の目的では両者は同じものである。
 
1. プラグインを働かせる方法
プラグインを働かせるに必要なファンクションは四つだけである。それらは、dl (ダイナミック・ローダ)ライブラリの一部である。ここで簡単な紹介をする。これらそれぞれの詳細説明はinfoペイジを見れば分かる。
dlopen
このファンクションは、モジュールをメモり中に保つため使う
dlclose
このファンクションは、モジュールをメモりからアンロードするため使う
dlsym
このファンクションは、モジュール内のファンクションのアドレスをロックアップ及び戻すため使う
dlerror
このファンクションは、エラーメッセージを戻すため使う
 
2. プラグイン用の簡単なローダ・プログラム
プラグイン・ファイル名をコマンド行引数として採用する簡単なローダ・プログラムを示す。
main.c
text version of this listing(このリストのテキスト版)
 #include <unistd.h>
 #include <string.h>
 #include <errno.h>
 #include <dlfcn.h>
   
 #define PATH_LENGTH 256
   
 int main(int argc, char * argv[])
 {
   char path[PATH_LENGTH], * msg = NULL;
   int (*my_entry)();
   void * module;
   
   /* モジュール用にパス名を構築 */
   getcwd(path, PATH_LENGTH);
   strcat(path, "/");
   strcat(path, argv[1]);
   
   /* モジュールをロードし, シンボルを分解 */
   module = dlopen(path, RTLD_NOW);
   if(!module) {
     msg = dlerror();
     if(msg != NULL) {
       dlclose(module);
       exit(1);
     }
   }
   
   /* エントリ点のアドレスを回収*/
   my_entry = dlsym(module, "entry");
   msg = dlerror();
   if(msg != NULL) {
     perror(msg);
     dlclose(module);
     exit(1);
   }
   
   /* モジュールエントリ点を呼出 */
   my_entry();
   
   /* モジュールを閉じる */
   if(dlclose(module)) {
     perror("error");
     exit(1);
   }
   
   return 0;
 }        
 
コードは大変簡単だ。ローダがプラグインをロードした後、dlsymコマンドを用いてプラグイン・シンボル・テーブルの中を覗き、ファンクション 'entry' のアドレスを入手する。このファンクションのアドレスを私が入手したら、これを私が作ったファンクション・ポインタに対して割り当てる。次いでプラグインをアンロードする。ファンクション・ポインタ行には、一寸した説明が必要である。
   int (*my_entry)()
は引数を取らないファンクションに対するポインタとして使用されintを返す。これは、プラグインの中でファンクション 'entry' をポイントするのに使うことが出来る。
   int entry()
ローダ・プログラムをコンパイルするには次のコマンドを使用する:
$ gcc -o loader main.c &#8211;ldl
 
3. 簡単なプラグイン二つ
ここで、プラグインをロードするのに必要なローダが得られた。モジュール・エントリ・ポイントのため決定されたプロトタイプはなく、好きなものを使ってよい。多くの例で私はintを返し、引数を取らないエントリ・ポイントを採用した。エントリ・ポイントに必要な引数を取り、望みのものを返すエントリ・ポイントを設定することが出来る。いずれにせよそれを 'entry' と呼ぶ必要はない。加えて、プラグインに一つ以上のエントリ・ポイントを作ることが出来る。下記は、モジュールの二つの例である。それぞれに同一のエントリ・ポイントがある。
module1.c
text version of this listing(このリストのテキスト版)
int entry()
{
  printf("I am module one!\n");
  return 0;
}
 
module2.c
text version of this listing(このリストのテキスト版)
int entry()
{
  printf("I am module two!\n");
  return 0;
}
 
これをコンパイルするには:
$ gcc -fPIC -c module1.c
$ gcc -shared -o module1.so module1.o
$ gcc -fPIC -c module2.c
$ gcc -shared -o module2.so module2.o
 
これらをコンパイルする方法について、一、二の説明をする。第一は '-fPIC' フラッグである。PIC は "Position Independent Code"(位置無関係コード)の意味である。これは、このコードを「相対」アドレス空間を使用する設定にすることを、コンパイラに命令する。その意味は、コードをメモリ内の任意の位置に置くことが出来、ローダーはロード時にそのアドレスを引用する面倒を見る。 '-shared'フラッグは、このコードを、別の実行可能プログラムにリンクすることが出来る方法でコンパイルすべきことをコンパイラに命令する。言い換えると、so(共有オブジェクト)がライブラリに類似の方法で作用するが、君のsoはライブラリではないので、'-l' を用いてgccにリンクすることは出来ない。
 
4. ローダの使用
二つの異なるプラグインを使うためのコマンドとその出力を示す:
$ ./loader module1.so
I am module one!

$ ./loader module2.so
I am module two! 
 
5. プラグインに簿記機能を追加
この節では、君がgccコンパイラ文書をfactに対して使用すると仮定するので、使用するコマンドはgcc特有のものである。その他のコンパイラも同様の特性を有することがある。互換性は自分の文書で点検されたい。Gcc には、 `__attribute__' フラッグが備えてあって、ファンクションと共に用いる。このフラッグは、ファンクションに対し多数の有用な特性を提供するが、ここではその内二つだけを説明する。別の特性の説明に関してはgccの上場ペイジを参照されたい。ここで説明する二つは、 `constructor' と `destructor' である。ELF(Executable and Linkable Format:実行可能連結可能フォーマット)バイナリは .init と.fini の二つのセクションを備えており、これらはモジュール・ロードの前後に実行されるコードを含むことが出来る(規則的プログラムでは、これらは main() が実行される前後に走る)。これらのセクションにコードをおくことにより、変数を初期化したりモジュールが必要とする簿記責任をおこなうことが出来る。例えば、開始するのに必要な変数をメインプログラムからモジュールに読ませることが出来る。又はプラグインのインターフェイスタイプなどの変数をメインプログラムの中に、プラグインに設定させることが出来る。プラグインのインターフェイスタイプは、問題のプラグインが作るコマンドのセットである。私の例では、これは唯一つのファンクション 'entry' を作る。君のは別のものを作ってもよい。下記はこれらの属性を使うサンプルである。 
__attribute__ ((constructor)) void init()
{
 /* ここのコードはdlopen()がモジュールをロードした後実行される*/
}
   
   
__attribute__ ((destructor)) void fini()
{
 /* ここのコードはdlclose() がモジュールをアンロードする直前に実行される */
}  
 
名称 init() と fini() は不要である。私はこれらファンクションのおかれる場所を明らかにして解釈しいようにこれらを使った。gccが使っているので避けなければならないファンクション名がある。_init、_fini、_start 、_endなどである。バイナリファイル上で `nm' を走らせて、gccが作るファンクションと変数の完全なリストを見ることが出来る。 `constructor' と `destructor' 属性は、バイナリ・ファイル中でコードが置かれる場所をコンパイラに命令するものである。単に置くだけで、`constructor' は、対応するファンクションが .init セクションに行くことをコンパイラに告げる。同様に `destructor'属性は、対応するファンクションの .fini セクションの中の位置を告げる。
 
6. 結語
dlライブラリを使うと、自分のプログラムにプラグインを設けるのは簡単な仕事だ。容易な拡張性と融通性が生じる。この例はプラグインから一つのファンクションを掴むことだけを示したが、プラグインから多数のファンクションを掴み、元のプログラムの一部であるようにそれらを使用するのは容易い。
 

Copyright © 2002, Tom Bradley. Copying license
http://www.linuxgazette.com/copying.html
Published in Issue 84 of Linux Gazette, November 2002
 
 
 
 
ままごとブートフロッピイを作る
By Muhammad Torabi Dashti
LinuxGazette#77(4月号)でKrishnakumar[1]のWriting Your Own Toy OS-Part I(ままごとOSを書く−パートI」を読んだ。ここで妙なことを見付けた。ブートセクタの最後二つのバイトは0x55AAでなければならない。それに 論文の反響からこのマジックナンバーをもて遊ぶのは、私だけでないと分かった。兎に角、nasm [2]を使って(私はas86を知らない)Krishnakumar'のブートセクタを書き、0x55AA挿入行をwrite.cから削除した。何と、PCがブートアップしたのだ!問題はKrishnakumarがこの行を書いた理由だ。もっと一般的には誰がブートセクタを読んで決めるかだ。答は簡単だBIOSがおこなう。興味ある別の事実は、IBMがXT技術参考文献[3]にあるそのXT BIOSのソースコードを公開していることだ。それを見てみよう。(多少の変更を加えたので、完全でもなくオリジナルでもない)
;---INT 19H
BOOT_STRAP:
;SOME INITITIALIZATIONS
    MOV CX,3    ;RETRY COUNT
H1:
    PUSH CX
    SUB DX,DX
    SUB AX,AX
    INT 13H ;INIT FLOPPY
    JC H2
    MOV AX,0201H
    SUB DX,DX
    MOV ES,DX
    ;PREVIOUSLY BOOT_LOCN WAS DEFINED
    ;ORG 7C00H
    ;BOOT_LOCN LABEL FAR
    MOV BX, OFFSET BOOT_LOCN
    MOV CX,1
    INT 13H ;READ FLOPPY'S SECTOR 0
H2:
    POP CX
    JNC H4
    CMP AH,80H   ;CHECK FOR TIMEOUT
    JZ H5
    LOOP H1
    JMP H5
H4:
    JMP BOOT_LOCN
H5:
    ;TRY FIXED DISK
    SUB AX,AX
    SUB DX,DX
    INT 13H
    MOV CX,3
H6:
    PUSH CX
    MOV DX,0080H
    SUB AX,AX
    INT 13H
    JC H7
    MOV AX,0201H
    SUB BX,BX
    MOV ES,BX
    MOV BX,OFFSET BOOT_LOCN
    MOV DX,80H
    MOV CX,1
    INT 13H
H7:
    POP CX
    JC H8
    MOV AX, WORD PTR BOOT_LOCN+510D
    CMP AX,0AA55H  ;MAGIC NUMBER!
    JZ H4
H8:
    LOOP H6
    INT 18H ;EVERY THING FAILED!
 
よし!全部明らかになった。 0x55AAは、ブートセクタが固定ディスクからロードされたときだけチェックされる。だからKrishnakumarは、互換性のチェックのため使ったのだ。フロッピイディスクの中の無作為ビット列はいずれもブートセクタと見なされて、システムはそれを走らせることに気付く!。
 
然し私はLinuxの他にWindows 2000を使うので、私のフロッピイは常にmsdos (fat 12)ファイルを有して、両OSがそれを読み取ることが出来るようになっている。ここで簡単な実験を設定する:Windows (又は任意のDOS ベースOS)を使ってフロッピイをフォーマットし、そのフロッピイを使ってシステムをブートアップさせる。ブートフロッピイでないから、入れ替えて任意のキイを押すようにとのメッセージが出る。これはフロッピイをLinuxでフォーマットしてmsdosファイルをその上に置いた時も同じだ。(mkfs -V -t msdos /dev/fd0がコマンドで出来る、又はKDEを使っているときはそのフロッピイ・フォーマット・ユティリティが同じことをする)。そしてフロッピイにext2ファイルシステムをを置く(#mkfs -V -t ext2 /dev/fd0)と、もっと変なことになる。PCは単にフロッピイをパスして制御は固定ディスクブートセクタ(例えばLiLo)に移る。そこで、これら二つのフォーマットと我々自身のブートフロッピイを用いる相違は何だとなる。 Krishnakumarのwrite.c を変更すると、この read.c はフロッピイのブートセクタを読み取りそれを boot.sec ファイルにセーブする。またそれを正しくフォーマットした方法でダンプする。同じことをするのにLinux自体のツールを使いたければ、フロッピイのブートセクタに書き込むには(#dd if=boot.sec of=/dev/fd0 bs=1 count=512) としフロッピイのブートセクタを読み取るには (#dd if=boot.sec of=/dev/fd0 bs=1 count=512 skip=0)とする。
ext2のブートセクタを見よう。全くの0だ!だがmsdosのブートセクタは、何かのコマンドを含む。これをディスアセンブルして見よう(ndisasm[2]を使う):
 
  1. msdos-フォーマットのフロッピイを挿入
 
  2. "./read" を走らせる
 
  3. "ndisasm boot.sec | more" を走らせる
 
  4. 最初の命令は 0x3e へのjumpだがコードは正しく並んでいない
 
  5. "ndisasm -s 0x3e boot.sec | more" を走らせて整列したコードを見る
 
分かった。この場合は小さいブートローダがあり、これは単にメッセージを示すだけだ(そのメッセージはOSに左右されるので、KDEなどのバイナリエディタを使って変更することが出来る。例えば、boot.secを変なメッセージを表示するよう変更し、Krishnakumarのwrite.c を使ってそれをフロッピイに書き込む!)次いでキイを待ってint 0x19 (BIOSの boot_starp 手順)を再度呼び出す。事実、MS DOS がjmp 0x3e と0x3e自体との間のギャップに何かの情報(FAT)を記憶するのに使ったので、この方法は継承者にも引き継がれた。それがここにjumpがある理由だ。MS DOS ファイルシステムに関する情報は、ネットで見付けるか又は、[4]に聞かれたい。
 
ここまでは、何もかも論理的だ。BIOSはブートセクタで見たものを何でも走らせる。我々のままごと "show A and halt"でもmsdosのものなど立派なものでも良い。だがext2のブートセクタをディスアセンブルしたときは、何も明確でなかった。下らないADD命令を意味する沢山の0ばかりだった。BIOSがこれを単に見過ごして拘泥しなかったのは何故だろう?答は、BIOSがXT から ATに代わったからだ!だからネット上でAT BIOS ソースを見付けることが出来たのだ(残念ながら、この参考文献はないが、多分IBM AT Technical Referenceにこのboot_strapのコードも含まれているだろう)
 
;---INT 19H
BOOT_STRAP_1  PROC  NEAR
;SOME INITIALIZATIONS
;CLEAR @BOOT_LOCN
    STI
    MOV   CX,4
H1:   PUSH  CX
    KTOV  AH,0
    INT   13H
    JC   H2
    MOV   AX,201H
    SUB   DX,DX
    MOV   ES,DX
    MOV   SX,OFFSET @BOOT_LOCN
    MOV   CX,1
    INT   13H
H2:   POP   CX
    JNC   H4
    CMP   AH,80H
    JZ   H5
    LOOP  H1
    JMP   SHORT H5
H4:   CMP   BYTE PTR @BOOT_LOCN,06H ;TEST#1
    JB   H10
    MOV   DI,OFFSET @BOOT_LOCN
    MOV   CX,8
    MOV   AX,WORD PTR @BOOT_LOCN
H4A:  ADD   DI,2
    CMP   AX,[DI] ;TEST#2
    LOOPZ  H4A
    JZ   H10
H4_A:  JMP   @BOOT_LOCN
H5:
    ;SOME INITIALIZATIONS AND PRE TESTS
    SUB   AX,AX
    SUB   DX,DX
    INT   13H
    MOV   CX,3
H6:
    PUSH  CX
    MOV   DX,0080H
    MOV   AX,0201H
    SUB   BX,BX
    MOV   ES,BX
    MOV   BX,OFFSET @BOOT_LOCN
    MOV   CX,1
    INT   13H
    POP   CX
    JC   H8
    CMP   WORD PTR @BOOT_LOCN+510D,0AA55H ; MAGIC NUMBER!
    JZ   H4_A
H8:   PUSH  CX
    MOV   DX,0080H
    SUB   AX,AX
    INT   13H
    POP   CX
    JC   H10A
    LOOP  H6
H9:
    ;SOME THING NOT OF OUR INTEREST
    INT   18H
H10A:  LOOP  H8
    JMP   H9
H10:  ;PRINT A MESSAGE
H11:  jmp H11
BOOT_STRAP_1  ENDP
 
新しいテストを二つフロッピイのブートセクタに付け加える:
 
1. 最初のバイトは、0x6以上にしなければならない。最初の命令が ADD (OpCode 0 乃至 5 はADDの別モード用)ではなくする。何故か?理論的だ。賢いプログラマがレジスタの殆ど未知の値をスタートアップで加えることはないからだ。もしそうすると(ext.2の場合のように)メッセージが示されてPCはリセットされるのを待つ。謎は一部解けた!私のPCでは、制御が単に固定ディスクのブートセクタに渡された。勿論、それは良いことだ。今日のPCには殆ど固定ディスクがある。多分これが、早期のATの後BIOSを変えたのだろう。.
 
2.その最初の8語は同一にすることは出来ない。何故か?私には分からない。単なる決まりだと思う。簡単にテストすることができる。KrishnakumarのブートセクタにNOP (0x90)16個を付け加えて見る。すると、PCはブートしないだろう。
 
ここで、これらのツール(read.c とwrite.c)又はLinux自体のツール (あの 'dd' コマンドなど) を、ブートセクタのもっと詳しい研究のため、使うことができる。Linuxと一緒にWindowsを持っておりLiloをブートローダに使っている人(だからMBRに常駐)のための面白い実験として:繰り返しブートメニューを作って見よう!必要なステップは次の通り:
 
1. 'dd' 又は 'read.c' を使ってMBRを読み取る: #dd if=/dev/hda of=mbr.sec bs=1  count=512 skip=0
 
2. 何とかして mbr.sec をWindowsのブートパーティション (殆ど常にc:\ にコピイする)。some howの作ったこれらthese 優れたプログラムを、解決策が失敗したときに使う。
 
3. boot.ini を編集して、その最後に次の行を付け加える:c:\mbr.sec = "LiLo Again!"
 
これがブートプロセスの進行状況だ。
 
参考文献:
 
[1]http://www.tldp.org/LDP/LG/issue77/krishnakumar.html
[2]http://nasm.sourceforge.net/
[3]IBM, "IBM Personal Computer XT Technical Reference", Vol.2,1981.
[4]M.A.Mazidi, J.G.Mazidi, "The 80X86 IBM PC & Compatible
  Computers",Vol.2, Prentice Hall, 1995.

Copyright © 2002, Muhammad Torabi Dashti. Copying license
http://www.linuxgazette.com/copying.html
Published in Issue 84 of Linux Gazette, November 2002
 
 
 
 
LinuxでのMain()実行方法
By Hyouck "Hawk" Kim
出発
 
問題は、Linuxが私のMain()を実行する方法だ。
この記事では "simple.c"と呼ばれる簡単なCプログラムを使って、その働き方を示す。
 
main()
{
  return(0);
}
 
構築
 
gcc -o simple simple.c
 
実行可能ファイルに何があるか?
 
実行可能ファイルに何があるかを見るため、ツール"objdump"を使う。
 
objdump -f simple
simple:   file format elf32-i386
architecture: i386, flags 0x00000112:
EXEC_P, HAS_SYMS, D_PAGED
start address 0x080482d0
 
出力は実行可能ファイルに関する重要な情報を示す。
第一に、ファイルは "ELF32" フォーマットである。第二に、スタートアドレスは、 "0x080482d0" である。
 
ELFとは?
 
ELFはExecutable and Linking Format(実行可能リンクフォーマット)の頭文字だ。Unixシステム上で使われる幾つかのオブジェクトのうちの一つで実行可能ファイルだ。この議論のため、ELFについて興味があるのは、そのヘッダフォーマットだ。各ELF実行可能ファイルにはヘッダがあり、それは次の通りである。
 
typedef struct
{
   unsigned char  e_ident[EI_NIDENT];  /* マジックナンバその他の情報*/
   Elf32_Half   e_type;        /* オブジェクト・ファイルのタイプ*/
   Elf32_Half   e_machine;      /* アーキテクチャ*/
   Elf32_Word   e_version;      /* オブジェクトファイルのバージョン */
   Elf32_Addr   e_entry;       /* エントリ・ポイント仮想アドレス*/
   Elf32_Off    e_phoff;   /* fsetのプログラム・ヘッダターブル・ファイル */
   Elf32_Off    e_shoff;   /* fsetのセクション・ヘッダテーブル・ファイル */
   Elf32_Word   e_flags;       /* プロセッサ固有のフラッグ */
   Elf32_Half   e_ehsize;     /* バイトで示したELF ヘッダ・サイズ */
   Elf32_Half   e_phentsize; /*プログラム・ヘッダテーブル・エントリ・サイズ*/
   Elf32_Half   e_phnum;   /* プログラム・ヘッダテーブル・エントリ計数 */
   Elf32_Half   e_shentsize; /* セクション・ヘッダテーブル・エントリサイズ */
   Elf32_Half   e_shnum;   /* セクション・ヘッダテーブル・エントリ計数 */
   Elf32_Half   e_shstrndx;  /* セクション・ヘッダ文字列テーブルインデキス */
} Elf32_Ehdr;
 
上の構造体にには、実行可能ファイルの開始点アドレス "e_entry" フィールドがある。
 
アドレス"0x080482d0"即ち開始点アドレスには何があるか?
この疑問に関して、"simple" をディスアセンブルしてみる。実行可能ファイルのディスアセンブルのは幾つかのツールがある。私はobjdumpを使う。
 
objdump --disassemble simple
 
出力は、少々長いのでobjdumpの出力全部は貼り付けない。目的はアドレス 0x080482d0に何があるかを見るだけだ。その出力を示す:
 
080482d0 <_start>:
80482d0:    31 ed xor %ebp,%ebp
80482d2:    5e pop %esi
80482d3:    89 e1 mov %esp,%ecx
80482d5:    83 e4 f0 and $0xfffffff0,%esp
80482d8:    50 push %eax
80482d9:    54 push %esp
80482da:    52 push %edx
80482db:    68 20 84 04 08 push $0x8048420
80482e0:    68 74 82 04 08 push $0x8048274
80482e5:    51 push  %ecx
80482e6:    56 push %esi
80482e7:    68 d0 83 04 08 push $0x80483d0
80482ec:    e8 cb ff ff ff call 80482bc <_init+0x48>
80482f1:    f4 hlt
80482f2:    89 f6 mov %esi,%esi
 
"_start" と呼ばれる一種の開始ルーチンに似たものが開始アドレスにある。これがすることはレジスタをクリアし、或る値をスタックにプッシュしてファンクションを呼び出す。この命令にしたがうと、スタック。フレームは次のようになる筈だ。
 
Stack Top    -------------------
        0x80483d
        -------------------
        esi
        -------------------
        ecx
        -------------------
        0x8048274
        -------------------
        0x8048420
        -------------------
        edx
        -------------------
        esp
        -------------------
        eax
        -------------------
 
ここで、読者と同じく私もこのスタックフレームに付いて幾つかの疑問を持った。
 
  1. これら8進数は何についてのものか?
  2. _startが呼び出すアドレス 80482bcには何があるのか?
  3. アセンブリ命令は意味のありそうな値ではどのレジスタも初期化しない。
   ならば何がレジスタを初期化するのか?
 
これらの問題に一つ一つ答えよう。
 
問1>8進数
objdumpからのディスアセンブルされた出力を注意深く眺めると、容易く答が解る。
 
答はこうだ。
 
0x80483d0 :    これは我々のmain() ファンクションのアドレスだ
 
0x8048274 :    _init ファンクション
 
0x8048420 :    _fini function _init と_fini は、GCCが作ったinitialization/finalization ファンクションだ。
 
ここでは、これらの中身を気に掛けない。基本的には、これら8進数の値すべてファンクション・ポインタだ。
 
問2>アドレス 80482bcにあるものは何か?
ここでも、アドレス80482bc を出力からながめる。
探して見ると、アセンブリは、
 
80482bc:    ff 25 48 95 04 08    jmp  *0x8049548
 
となっており、*0x8049548 はポインタ作用だ。
これは、アドレス 0x8049548にjumpする。
 
ELF とダイナミック・リンキングについての追加
ELFを用いて、ライブラリに動的にリンクされた実行可能ファイルを構築することが出来る。
ここで「動的にリンクされた」とは、実際のリンク処理がランタイムに起こることを意味する。さもないと、それが呼び出すライブラリすべてを含む巨大な実行可能ファイルを構築しなければならない(静的にリンクされた実行可能ファイル)。次のコマンドを発すると、
"ldd simple"
     libc.so.6 => /lib/i686/libc.so.6 (0x42000000)
     /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
simpleに動的にリンクされたライブラリすべてを見ることが出来る。そこで、動的にリンクされたデータ及びファンクションはすべて、「動的リロケーションエントリ」を有する。
 
考え方は大まかに次の通りだ。
1. リンク時にはダイナミック・シンボルの実際のアドレスは分からない。シンボルの実際のアドレスはランタイムにのみ知ることが出来る。
2.それまでダイナミック・シンボルについては、実際のアドレスに関するメモリ位置を保有する。
メモリ位置には、ランタイムにローだを使ってシンボルの実際のアドレスを入れる。
3.アプリケーションは、ダイナミック・シンボルを、ある種のポインタ操作を使ってメモリ位置と共に、間接的に理解する。我々の場合、アドレス80482bcに、簡単なjump命令がある。
そしてjump位置は、ランタイムの間にローダがアドレス0x8049548に記憶する。
objdumpコマンドを使ってダイナミック・リンク・エントリ全部を見ることが出来る。
objdump -R simple
simple:   file format elf32-i386
DYNAMIC RELOCATION RECORDS
OFFSET  TYPE       VALUE
0804954c R_386_GLOB_DAT  __gmon_start__
08049540 R_386_JUMP_SLOT  __register_frame_info
08049544 R_386_JUMP_SLOT  __deregister_frame_info
08049548 R_386_JUMP_SLOT  __libc_start_main
ここで、アドレス0x8049548 は、完全に解り易く"jump slot"と呼ばれり。また、テーブルにしたがって実際に我々が呼び出すのは、__libc_start_mainだ。
 
__libc_start_mainとは何か
ここでボールは libcの手に渡った。__libc_start_mainは、libc.so.6の中にあるファンクションだ。glibcソースコードの中で__libc_start_mainを見ると、プロトタイプは次のようになっている。
 
extern int BP_SYM (__libc_start_main) (int (*main) (int, char **, char **),
        int argc,
        char *__unbounded *__unbounded ubp_av,
        void (*init) (void),
        void (*fini) (void),
        void (*rtld_fini) (void),
        void *__unbounded stack_end)
__attribute__ ((noreturn));
 
またアセンブリ命令のすることのすべては、引数スタックを設定して __libc_start_mainを呼び出すことだ。
このファンクションがすることは、或るデータ構造体/環境の設定/初期化と、我々のMain()の呼出だ。.
このファンクション・プロトタイプのあるスタック・フレームを見てみよう。
 
Stack Top   -------------------
0x80483d0 main
-------------------
esi argc
-------------------
ecx argv
-------------------
0x8048274 _init
-------------------
0x8048420 _fini
-------------------
edx _rtlf_fini
-------------------
esp stack_end
-------------------
eax これは 0
------------------
 
このスタックフレームにしたがって、__libc_start_main()が実行される前に、esi, ecx, edx, esp, eax レジスタが適切な値で満たされる。また、このレジスタは明らかに、前に示したsuatrupアセンブリでは設定されない。では、これらのレジスタを設定するは何か?ここで私は、残った一つだと推定する。kernelだ。
ここで、第三の疑問に戻ろう。
 
問3>Kernelがすることは何か?
シェルに名称を入力してプログラムを実行するとき、Linuxでは次のことが起こる。
 
1.シェルはargc/argvを用いてkernelシステムコール"execve"を呼び出す。
2. そのkernelシステムコール・ハンドラが制御を獲得して、システムコールの扱いを始める。kernelコード内で、ハンドラは"sys_execve"である。 On x86上で、ユーザモード・アプリケーションは次のレジスタを用いて必要なパラメータすべてをkernelに渡す。
      ebx : プログラム名文字列に対するポインタ
      ecx : argv アレー・ポインタ
      edx : 環境変数アレー・ポインタ
 
1.純正execve kernelシステムは_execve呼出をおこなうハンドラを呼び出す。これがおこなうのは、データ構造体の設定し、幾つかのデータ構造体をユーザスペースからkernelスペースにコピイして、最後にsearch_binary_handler()を呼び出すことである。Linuxは、a.out とELF など、一つ以上の実行可能ファイルを同時にサポートすることが出来る。この機能のため、データ構造体 "struct linux_binfmt"があって、これが各バイナリ・フォーマット・ローダのためのファンクション・ポインタを有する。search_binary_handler()は適切なハンドラを見てそれを呼び出すだけである。我々の場合、load_elf_binary() がそのハンドラとなる。各ファンクションの詳細を説明するのは、長くて手間が掛かるので、しない。興味があれば、その書物を読まれたい。一枚の絵が数千語を語るように、ソースコード数千行は(時に)数万語を語る。ここでは最低限のファンクションを示す。これは先ず、ファイル操作のためのkernelデータ構造を設定してELF実行可能イメージを読み取る。次いで、kernelデータ構造:コード・サイズ、データ・セグメント・スタート、スタック・セグメント・スタートなど、を設定する。また、このプロセスのためのユーザモード・ペイジを割当て、argvと環境変数をこれら割当てたペイジアドレスに対し割り当てる。最後に、 create_elf_tables()を用いて、argc、argvポインタ、環境変数アレー・ポインタをユーザモードスタックにプッシュし、start_thread()がプロセス実行を開始する。
 
_start assembly 命令が実行の制御を獲得したとき、スタックフレームは次のようになっている。
 
Stack Top    -------------
argc
-------------
argv pointer
-------------
env pointer
-------------
 
また、アセンブリ命令は次によりスタックからすべての情報を獲得する。
pop %esi        <--- get argc
move %esp, %ecx     <--- get argv
実際はargv アドレスは現現在のスタックポインタと同じである。
 
これで実行を開始するための全部を設定した。
 
その他のレジスタについてはどうか?
espについては、アプリケーション・プログラムのスタック終点のため使われる。必要な情報すべてを引き出した後、_start ルーチンは、espレジスタから下位4ビットを切り取って、スタックポインタ(esp)を単に調整するだけだ。我々のメインプログラムに対しては、それが実際にスタックの最後なので良く解る。rtld_finiのため使われるedxについては、アプリケーションデストラクタの一種で、kernelは次のマクロを使って0に設定するだけだ。
#define ELF_PLAT_INIT(_r)    do { \
    _r->ebx = 0; _r->ecx = 0; _r->edx = 0; \
    _r->esi = 0; _r->edi = 0; _r->ebp = 0; \
    _r->eax = 0; \
} while (0)
 
0は、x86 linux上ではこれを使わないことを意味する。.
 
アセンブリ命令に付いて
これらのコードがある場所は?これはGCCコードの一部だ。通常、オブジェクトファイル全部を次の場所で見出すことが出来る。
/usr/lib/gcc-lib/i386-redhat-linux/XXX and
/usr/lib where XXX is gcc version.
ファイル名は、crtbegin.o、crtend.o、gcrt1.oだ。
 
まとめ
何が起こるかを示す
 
1.GCCが、crtbegin.o/crtend.o/gcrt1.oを用いてプログラムを構築する。そして他の規定値ライブラリは、規定値により動的にリンクされる。実行可能ファイルの開始点は_startのそれに設定される。
2.kernelが、実行可能ファイルをロードしtext/data/bss/stackを設定する。特にkernelは引数及び環境変数のためペイジを割り当て、必要な情報すべてをスタックにプッシュする。
3.制御が _startに渡される。_startはkernelの設定したスタックからすべての情報を獲得し、__libc_start_mainのため引数スタックを設定して閉じる。
4.__libc_start_mainが、必要な中身、特にCライブラリ(mallocなど)及びスレッド環境を初期化し、我々のmainを呼び出す。
5. main(argv, argv)で我々のmainが呼び出される。ここで興味のあることは、mainの署名だ。__libc_start_mainは、mainの署名をmain(int, char **, char **)と考える。興味があるなら、次のプログラムを試されたい。
main(int argc, char** argv, char** env)
{
  int i = 0;
  while(env[i] != 0)
  {
    printf("%s\n", env[i++]);
  }
  return(0);
}
 
まとめ
我々のLinux、我々のC main() ファンクションは、GCC、libc 及び Linuxのバイナリ・ローダの共同作業で実行される。
 
参考書
objdump "objdumpマニュアル"
 
ELF header /usr/include/elf.h
 
__libc_start_main glibcソース
  ./sysdeps/generic/libc-start.c
 
sys_execve linux kernel ソースコード
  arch/i386/kernel/process.c
 
do_execve linux kernel ソースコード
  fs/exec.c
 
struct linux_binfmt linux kernel ソースコード
  include/linux/binfmts.h
 
load_elf_binary linux kernel ソースコード
  fs/binfmt_elf.c
 
create_elf_tables      linux kernel ソースコード
  fs/binfmt_elf.c
 
start_thread linux kernel ソースコード
  include/asm/processor.h

Copyright © 2002, Hyouck "Hawk" Kim. Copying license
http://www.linuxgazette.com/copying.html
Published in Issue 84 of Linux Gazette, November 2002
 
 
 
 
今月の Perlワンライナ:変名ファイルの探検
By Ben Okopnik
レポータの覚書
最近、文集を読んだ。他ならぬ Woomert Foonly、世界的に有名だが無口で頑固なコンピュータ探偵、の冒険と実験の雑誌だ。私の知る限り、中の情報は正真正銘だ。私の匿名の文通者−固く約束したので詮索は控えているが、偉人の助手で親友のFrink Ooblickだと信じている−が呉れたe-メールに私は興味を持った。その時送ってくれた暗号メールを解読するのに、数日掛かった(彼のユーモア精神かも知れない)。ときたま、複雑な規則的表現に一致する名の送り主からファイルを受け取るのが恒例になっている(このためのProcmailレシピが数頁になって、今や自己変異しているようだ)。その時は、何はさておき、急いで解析する。暗号化方法は、謎解きの出来なかった方法でなされており、段々と数時間の短い間では解けないものになった。
 
初期の交信で、これらメールの公開が許された。私の文通者は、自分の身分を秘密にするのを選び、この仕事が無報酬でも満足した。それをここに示すが、私が著者であるとは主張出来ない。作品に関する何らかの権利を、その功績が未だに神秘に包まれている偉大な探偵に渡したいと思っている。
 
Ben Okopnik
S/V "Ulysses"船中にて、2002年10月10日

 
ファイルシステムは静かで陰気だった。ディスク書込はすべて同期しており、ハードドライブは回転を落としCPUは低電力モードに切り替わった。普段は元気なFrinkさえも、この出来事には参ったようで、そのリモートシステムのパスワードとパーミッションを静かにダブルチェックした。武装したSSHトランスポータにある '/home' でくつろぐ前に必要な注意だ。
 
しかし、Woomertは、落ち着き払って行動を起こすばかりになっていた。怖いHeisenbugs [1]でさえも−彼の今の役目にはこんな危険に近いことは含まれていないが−居眠りしていて気付かない内に罠に落ちるこんな状態で、パワーモードの間の薄暗がり、それが彼の好んで操作する場所だ。
 
彼のクライアントは、ひどく取り乱してレースのハンカチですすり泣きながら訴えた。彼女のファイル命名計画が完全に制御不能になった−でたらめな文字列が、以前は解り易くて無関心なユーザでも直感的に理解した彼女の大事な命名規則に割り込んで来た。この暴挙を担当する職員は、厳しくLART [2]したが、刑事は困って肩をすくめただけで、他のすべての道は、数千ではないにしても数百のファイル名を付け直す方向を向いていた。HTML '<title>' タグで囲まれた優先名を含んだファイルだが、人手でそれをするのに必要な作業は驚異的だ。Woomertが彼女の最後の望みだった。
 
          *  *  *  *  *  *  *  *  *  *
 
Woomert はゆっくりと "/var/apache/htdocs" のマークの付いたinode に近づいた。それを見出すには一寸屈む必要があったが、 File::Find モジュール [3] には慣れていたので、仕事は簡単だった。クライアントは啜り泣きながら、悪者ファイルは /^[A-Z][0-9]+\.html?$/ パターン[4]に一致する−つまり、それらは全部一つか二つの数字の続く大文字から始まり、".htm"又は ".html"拡張子で終わる−と言った。これらのヒントを与えられると、悪者の棲家を見付けるのは数秒だった。
 
彼が入ると、みっともない事件の状況が忽ち判明した。いかがわしいdisreputable-looking ファイル名が至る所に引っ掛かって、不埒な振舞いに及んで通る人を誘惑していた。その他は、透明なsymlinkの他は何も纏わないで、xtermウインドウズに寄りかかって、通りすがるデータを大声で誘惑していた。何かをしなければならない。間もなく−その地域に入った新しいファイル名が、殆ど瞬時に無名の悪例に改悪された。
 
−「最悪だよ、Woomert」とFrinkがささやいた。「これはひどい。どうする?何千もあるよ!」
 
−「心配するな」Woomert は静かにコマンド行インターフェイスに近づいた。HTTPの沢山の流れにに顔を寄せた。「Perlの最新版をダウンロードしたよ。もう悪戯は出来ない」彼は迅速に1行コマンド文字列を打ち込んだ。

perl -wlne'END{print$n}eof&&$n++;/<title>([^<]+)/i&&$n--' *

結果は驚くべきだった。モニタとしては大きい '0' を示したけれとどでも、悪党どもは全部、自分のしていたことを全部止めて、その中の二つを振り返った。明らかにこれら二人のトレンチコートを着た闖入者に危険を感じたと思われる。胸に "X6664934755666.htm" と入れ墨をした大きい方の醜いキャラクタはポケットを探りながら直ちに彼らの方向に向かった。彼の意志は、明らかにWoomertとFrinkに花束と自分のドメインへの秘密DSAキイを渡す積もりではなかった。
−「急いで、Woomert」Frinkが叫んだ「何とかしろ! Nimdaか Code Redを投げようとしているぞ」
 
Woomert は神経質な助手をチラリと眺めた。
 
−「落ち着けと言ったろう。Perlが手に入った」綺麗な指でコンソールを弾いた:

perl -wlne'/title>([^<]+)/i&&rename$ARGV,"$1.html"' *

−彼らを囲む狂気じみた風景が消えて、'歴史227, 35課:ローマ革命の起源.html,などの名を誇らしげに纏っファイルが綺麗に並ぶさっぱりした邪魔者のいない風景に変わったとき、「・・・ほら、我々はLinuxを走らせている。ウィルスは誰か他の人の問題だ」
 
          *  *  *  *  *  *  *  *  *  *
 
その夜遅く、喜んだクライアントからたっぷりと報酬を貰い、Woomertが東洋から持ち帰った高級茶でくつろいだ後、Frink は決定的な対決以来持ち続けた疑問をぶつけた。
 
−「Woomert、貴方がコマンド行を発したのは見ましたが、何をしたのか解りません。規則的な表現は解ったし、暗黙のループにも気付きましたが、残りは何だったのですか?」
 
−「初歩だよ。第一行を思い出し給え」

perl -wlne'END{print$n}eof&&$n++;/<title>([^<]+)/i&&$n--' *

「Perl呼出しに次のコマンドスイッチを使ったのが解るだろう:」
 
−w 警告を有効にする
−l 行末処理を有効にする
−n 暗黙のプリントしないループ
−e 続くコマンドを実行する
 
「警告を有効にして、私のシンタクス、つまりスクリプトを走らせるとき必ずしなければならないことを、Perlに点検させた。続いて行末処理を規定して、実際にはプリントされた各文字列に新しい行を付け加えた。次に、各ファイルの内容全体をループすることを命じ、一重引用符の中の文字列をスクリプトとして走らせた」
 
「君が抜け目なく気付いたように、実はループを設定したのだ。だが、君が多分見過ごしたのは、実際は競合する二つのループがあったことだ: '*' のファイルスペースを経由してファイルのリストを規定したので、Perlはそれらを一度に一つ宛読み取った。スクリプトを囲む引用符の内側にあるレゲーのシンタクス外側にあるレゲーに似ているが大いに違うのに注意−前者はPerlが内部レゲーエンジンを使って解析するが、後者は 'globbing' と言う遙かに簡単なシステムを使うシェルが取り扱う。」
 
−「すばらしい!」Frink は初めて狩りに出たときのように興奮した。「スクリプト自体では何をしたのですか?」
 
「先ず、レゲーが私の考えたものと実際に一致しているかダブルチェックした。最も容易な方法はファイルの数を数えることだ− 'eof' (ファイル終了)ファンクションが'真'を返す度に '$n' をインクレメントした−そして一致の数を引いた。合計が0より大きい時は、どこかに不一致がある。幸い・・・」
 
−「覚えています。ゼロをプリントしました」
 
「それは万事が正しいことを意味した。 'END{print$n}' ステートメントを、ランの最後に実行した。これは殆どの人が最後に置くけれども、実はスクリプトの中の位置には無関係なのだ。私は最初に置いてキイ打ちを節約した。ブロックに続くステートメントは、あの 'eof&&$n++' のように、セミコロンを必要としない。Perl Golf [5]では各ストロークが問題になる。」
 
「次に、私の使ったレゲーを調べよう。これがスクリプトの心臓なのだ。」
 
/ # レゲーの始まり
title> # この文字列とマッチさせる
([^<]+) # $1で '<' に一致しない一つ以上の文字を捉える
/i # レゲーの終わり、「大文字小文字無差別」の修飾子を用いる
 
'/' は、合わせようとするレゲーを囲む。これが標準Perlシンタクスで、見覚えがあると思う。そこにいある '+' が解るか?Perlの「貪欲」をレゲー解釈に使っている訳だ: '+' は「先行の文字又はグループ一つ以上」を意味するが、「出来るだけ多くをマッチさせる」とも解釈する。これは文字の '<' (HTML タグの始まり)又は現在行の行末まで、あらゆるものを捕まえる。だから、パターンが行に一致する度に、私は減算演算子と組み合わせた論理andを使って '$n' を更新した。」
 
「概観したように、上述の全部をもっと読みやすい形で示す同等のスクリプトがある。」

#!/usr/bin/perl -w
while ( <> ){ # Equivalent to "-n"
    $n++ if eof;
    $n-- if /<title>([^<]+)/i;
}
print "$n\n" # The "\n" would have been added by "-l"

 
「明らかに、このスクリプトは 'perl <スクリプト名> *' 、又はそれが実行可能になっていれば単に './scriptname *' として呼び出すことが出来る。」
 
「ノートの最後の項目として、スクリプトの中の”能動”ステートメントを見る。何かを変更したり何かを出力する唯一のものだが、単なる 'print' だ。事実、全行がテストだ。ディスクに実際の変更をおこなう前にすべてが正しく働いていることを確認したかった。私が賢明な方針だと信じているものだ。あの群れの醜い見掛けから、実際の命名し直しで二つの変更はないこと、少なくともそのうち一つは 'rm -rf /' を持っていると判ったので、ためらわずにそれを使った。」
 
「神様だ。」 Frinkの衝撃が顔に表れた。「こんな場合、貴方はライオンのように勇猛だ」
 
有名な探偵は、ポケットから取り出した輝くステンレスと Kevlar "chroot" をチラリと見て、微笑んだ。
 
−「実際の命名し直しでは、取って置きの仕掛けがあるのだ。表現自体を覚えているかね?」

perl -wlne'/title>([^<]+)/i&&rename$ARGV,"$1.html"' *

「最初のによく似ているのに気付くだろう。だが、目立った特徴が少しある。第一に、オプション設定に "-l" を使ったが、その理由は少し違う。 '$1' に捉えられた文字列は新しい行('\n')を含んでいる可能性が高いので、それを取り除く必要がある。Perlは頭と尻の空白を削除することと”命名し直し”のとき異様な文字を扱うのには極めて賢いが、'filename\n.html' は問題を生じる。幸い '-n' もまた入って来る行を「自動詰め込み」する−行を読み取ったとき新行文字をこ削除することを意味する。」
 
「次に、'$ARGV' は、今読み取っているファイルの名称を含むPerl変数だ。レゲー内への最初の補足の結果を '$1' に保持しているので(最初の括弧の中の内容が '$1'、第二が '$2' 、などに入る)、残りは易しい仕事だ。これは拡張子−全部に関して 'html' −も規則化させる」
 
「上の行をもっと分かり易く読みやすいい方法で書き下すと、次のようになる:

#!/usr/bin/perl -w
while ( <> ){
    chomp;           # Equivalent to "-l"
    if ( /title>([^<]+)/i ){
        rename $ARGV, "$1.html"
    }
}

−「これらが我々にのしかかっていたので・・・」
 
−「正確には、これら余分な文字が、死と生との間の相違を作った。私は、これらが単純なmatch-and-printにそんなに鋭く反応するとは期待しないと断言するが、人々は、ファイルシステムがどんどんスマートになっていると言う。私も話したことのあるWestern guru [6] によると、Linuxに利用できるファイルシステムが少なくとも五つあるが、それ以後ファイルシステム関連のkernel手直しを沢山聞いた。幸い、我々は難事を克服した。」
 
「さて、私にご馳走をしてくれるなら、次に来る事件を話そう。この約束は果たすよ・・」

 
[1] (Jargonファイルから:) 調査又は隔離しようとすると消滅するか又は自分の行動を変えるバグ。
[2] (Jargonファイルから:) Luser Attitude Readjustment Tool (多分、無知な適当な人の頭の上に正しく加えられる)
[3] "perldoc File::Find"を参照.
[4] Perl でパターンを一致させることは、所謂る "regular expressions" を含む。REに関する詳細は "perldoc perlre"を参照。
[5] Perl Golf はPerlプログラムからひどく捻れていて、簡潔さを貴び、読み易さは放り出している。Woomertは貪欲なゴルファーで、読めない(だが有効な)プログラムをPerlで書くことが多い。ワンライナ(長さが80文字以下のPerlの行)は、Perl Golfの例であることが多い。注記:このゲームは、他のPerlハッカーに印象付けるため、及び短いが有効なコマンド行ツールを作るためおこなわれる。他人が手を加えそうなコード又は有料で書くコードにこれを用いるのは良くない形で、仕返しを受けることになる。
[6] Per Jim Dennis, 2001. 今日ではもっと沢山あるだろう・・・

Copyright © 2002, Ben Okopnik. Copying license
http://www.linuxgazette.com/copying.html
Published in Issue 84 of Linux Gazette, November 2002
 
 
 
 
コンピュータ馬鹿話
By Mike ("Iron") Orr
 
Genericide:   By Adrian Watson
これを採用して頂けるかどうか。私の技術友達の実話です。彼はネットワークしていた二つの Windows マシンを持って