Linux Gazette 5月号

今月の Linux Gazette の内容


今月のニュース

Linux Journal 2000年5月号発売中。今月の特集はプログラムです。

▼▼▼ディストリビューション関連ニュース▼▼▼

BlueCat

Lynx Real-Time Systems, Inc. は Hewlett-Packard の ChaiVM の出荷を発表した。ChaiVM は Lynx BlueCat Linux OS 対応の組込み仮想マシン技術だ。BlueCat ユーザは Java 互換の組込み仮想マシンで幅広い Java アプリケーションを実際にテストすることが可能。BlueCat はランタイムの占有率も 600K と小さくガベージコレクション機能も有している。

Corel

Corel LINUX OS は2000年2月に発表時の8倍、19.3%のシェアを獲得した。Corel は3月には Corel WordPerfect Office 2000 for Linux もリリースしている。

Debian

Debian のコンピュータリソースに新たなマシンが加わった。Sun Microsystems から提供された UltraSPARC だ。同時にNetra st A1000 Telecom Class 記憶アレイも提供された。記憶ユニットは RAID 5 で構成されており、Debian のインターナルアーカイブサーバーとして利用される予定。このシステムのために IntraServer からは接続用の PCI ディファレンシャル UltraWide SCSI コントローラが提供されている。

Mandrake

Place for Linux (www.placeforlinux.com) はプロのサーバ管理者用の Secure Server 7.0 を発表した。ベースは Linux-Mandrake 7.0 だ。中レベルのトラフィックを有するウェブサイトのセキュアサーバソリューション。インストールとディスクパーティション用の GUI 対応のツールが付属している。Apache ウェブサーバは RSA の BSAFE SSL-C テクノロジを採用。これは現在最高水準の暗号化、セキュリティ技術だ。Secure Server 7.0 は e-commerce などを管理するプロの管理者用向けで、機能を強化するためのツールやユティリティも付属している。価格は149ドル95セント。

SuSE

SuSE は VA Linux の SourceForge サイトを ftp.suse.com のプライマリサイトに変更した。SuSE の全 FTP 版が ftp://download.sourceforge.net/pub/suse/ に置かれている。SuSE Linux は現在 SourceForge Compile Farm のプラットフォームとして提供されている。SourceForge Ciompile Farm を利用すれば SuSE の YaST インストールツールを利用して自動的にインストールできるアプリケーションを構築可能。

SuSE は Fjitsu Siemens Computer、Siements Business Services、Siemens IT Service と提携して SuSE Linux ベースのシステムを提供する。これはカスタマサポートとセールスサポートが付いている。

6月号の MacTech Magazine にフリーのディストリビューション CD が付属する。Linux のカーネルは 2.2.14 でインストールツールのほかにオープンソースのソフトウェアがバインドされている。CD には使用期限もなく自由に配布可能

SuSE のインテル版 SuSE Linux 6.4 に Enlighten Software Solutions のシステム監視プログラムがバンドルされる。Enlighten Linux Monitoring Agent はプロセッサ、メモリ管理、ハードウェア/ソフトウェアの変更、ネットワークエラーなどのシステム状況を監視、報告するシステムだ。

▼▼▼ その他のニュース ▼▼▼

Upcoming conferences & events

Forum of Free Software
May 4-5, 2000
Porto Alegre, RS, Brazil
English: http://www.softwarelivre.rs.gov.br/welc_ing.html
Portuguese: http://www.softwarelivre.rs.gov.br/welc_port.html

HPC Linux 2000: Workshop on High-Performance Computing with Linux Platforms
May 14-17, 2000
Beijing, China
www.csis.hku.hk/~clwang/HPCLinux2000.html

(In conjunction with HPC-ASIA 2000: The Fourth International Conference/Exhibition on High Performance Computing in Asia-Pacific Region)

Linux Canada
May 15-18, 2000
Toronto, Canada
www.linuxcanadaexpo.com

Converge 2000
May 17-18, 2000
Alberta, Canada
www.converge2000.com

SANE 2000: 2nd International SANE (System Administration and Networking) Conference
May 22-25, 2000
MECC, Maastricht, The Netherlands
www.nluug.nl/events/sane2000/index.html

ISPCON
May 23-25, 2000
Orlando, FL
www.ispcon.internet.com

Strictly Business Expo
June 7-9, 2000
Minneapolis, MN
www.strictly-business.com

USENIX
June 19-23, 2000
San Diego, CA
www.usenix.org/events/usenix2000/

LinuxFest
June 20-24, 2000
Kansas City, KS
www.linuxfest.com

PC Expo
June 27-29, 2000
New York, NY
www.pcexpo.com

LinuxConference
June 27-28, 2000
Zürich, Switzerland
www.linux-conference.ch

"Libre" Software Meeting #1
(Rencontres mondiales du logiciels libre)
, sponsored by ABUL (Linux Users Bordeaux Association)
July 5-9, 2000
Bordeaux, France
French: www.abul.org/rmll1-fr.html
English: www.abul.org/rmll1-uk.html

Summer COMDEX
July 12-14, 2000
Toronto, Canada
www.zdevents.com/comdex

O'Reilly/2000 Open Source Software Convention
July 17-20, 2000
Monterey, CA
conferences.oreilly.com/convention2000.html

Atlanta Linux Showcase
October 10-14, 2000
Atlanta, GA
www.linuxshowcase.org

Web 2000
November 1-3, 2000
(Location unknown at present)
(URL unknown at present)

Fall COMDEX
November 13-17, 2000
Las Vegas, NV
www.zdevents.com/comdex

USENIX Winter - LISA 2000
December 3-8, 2000
New Orleans, LA
www.usenix.org

Linux Expo
(Dates unknown at present)
San Jose, CA
(URL unknown at present)

ISPCON
(Dates unknown at present)
San Jose, CA
www.ispcon.internet.com

Magic Software ニュース

Magic Software はウェブベースのエンタープライズレベル顧客サービス管理システム、eService を発表した。Magic の顧客関連管理スイートの最初となるこの eService はサービスの負担を軽減しリアルタイムで企業にサービス部門の広範囲なピクチャを提示する。また「バーチュアルサポートセンター」を使用することによりコスト削減も実現した。「バーチュアルサポートセンター」は世界中のスタッフをサービスエージェントとして採用し週7日、一日24時間のサポートを提供しようというものだ。

Magic は MiTAC Europe Ltd. に Magic の eMerchant を提供する。これは顧客に仮想のショッピングセンターを提供するものだ。3D のインタフェースをサポートしておりウィンドウショッピングも楽しめる。

PileofPcs.org オープンソース Beowulf プロジェクト

Beowulf クラスのクラスタベーススーパーコンピュータ普及の障害を取り除くプロジェクトがスタートした。その中心となるのが Pileofpcs.Org だ。いくつかの方法が検討されている。最初は Linux のエキスパートでなくても汎用のスーパーコンピュータを構築できるディストリビューション、Vanilla Beowulf を提供し、次にスーパーコンピュータのアプリケーション開発を支援する。PileofPcs.Org の目標は分散型とパラメトリックのアプリケーション開発を支援すること。アプリケーションに関しては科学、財務、マルチメディア、統計、バイオ、気象、データマイニング、ニューラルネットワークなどに限られるものではない。PileofPcs.Org ではプロジェクトリーダ、開発者、html デザイナ、その他オープンソースに関心のある人材を求めている。

Contact: Dr. Terrence E. Brown
drbrown@pileofpcs.org
www.PileofPcs.Org
+46 8 790 6174

Seagate、Cobalt Networks と提携

Seagate は Cobalt Networks と提携して Linux ベースのサーバアプライアンスを出荷すると発表した。インターネット、アプリケーションサーバでの用途を見込んでいる。最初の Seagate Server Appliance Solution は今夏出荷される予定。データ保護とスケーラブル記憶に対応したコスト効率のよいシステムで使用するのも簡単だ。

http://www.seagate.com
http://www.cobalt.com

Agate HotData Shuttle

Agata Technologies, Inc. はホットスワップ IDE プラグアンドプレイソリューション、HotData Shuttle を発表した。インテルベースの Linux ワークステーションやインターネットアプライアンスを対象としている。IDE ホットスワップとはハードディスクドライブなどの機器をコンピュータの状態やパフォーマンスに影響せずに物理的に接続したり切り離したりすることをいう。HotData Shutle for Linux の価格は49ドル95セントでシャトルベイ/トレイ、ソフトウェア、ドライバ、取り付けキットが付属する。

ネットワークの高信頼性を提供

Xensei Corporation (http://www.xensei.com) は高度なネットワークの信頼性を提供すると発表した。これによりかってない高度な信頼性のウェブホスティングサービスを提供することが可能になる。信頼性の高いウェブホスティングの程度はいくつかの段階に分けられている。90%はワンナインもしくはクラスI、99%はツーナインもしくはクラスII、99.9%はスリーナインもしくはクラスIIIだ。クラスVなら99.999%になり、1年の間のダウンタイムはわずか5分に過ぎない。クラスIなら年間のダウンタイムは876時間にもなる。

クラスIはインターネットで情報提供を主眼とするような企業に、クラスIIは e-mail システムや POS システムなどのアウトソーシングに適している。クラスIVは製造業、通信関連企業、eCommerce を、クラスVは非常に高度な信頼性を要求する企業、衛星通信事業、予約システム、銀行業、証券業などの企業を対象にする。

Tux と DustPuppy が提携

Tux と Dust Puppy とが提携を発表した。Tux は Linux のペンギン、Dust Puppy はIT 技術コミュニティの人気者だ。両者の提携により LinuxMall.com と Userfriendly.org との協力もスムーズに行きそうだ。

Linux Expo

北米初の Linux Expo が開催された。この Expo が成功したことにより10月のトロント、来年4月のモントリオールでの展示会も期待できる。

www.linuxexpocanada.com

Hewlett-Packard のテープドライブに TapeWare Linux がバンドルされる

Hewlette-Packard は HP DAT, DLT テープドライブの SureStore ファミリに Yosemite Technologies, Inc. のソフトウェア、TapeWare をバンドルする。TapeWare は非常に高性能、高機能のバックアップソフトウェアで、それに HP One-Button Disaster Recovery 機能が付け加えられ、障害時の復旧が容易になっている。Windows NT、NetWare 対応のバックアップソフトウェアだが Linux サーバやワークステーションのバックアップも可能。
http://www.tapeware.com

NetWinder OfficeServer 1.5

Rebelcom Inc. はオフィスサーバソフトウェア、NetWinder OfficeServer 1.5 のバージョンアップを発表した。NetWinder OfficeServer 1.5 は中小規模ビジネスにインターネット、LANを提供するオールインワンのアプリケーションだ。Linux 上で動作しファイアウォール、VPN、ウェブサイトホスティング、ファイル/プリンタ共有、メールなどのサービスを提供する。バージョンアップで取り入れられた機能は、PPPoE (PPP over Ethernet)、サードパーティのプラグイン対応、@home ケーブルモデムに対応した DHCP クライアント機能など。セキュリティに関しても大幅に強化されており VPN を利用すれば世界中のどこからでも安全に OfficeServer LAN にアクセスすることができる。VPN ソフトウェアは OfficeServer にバンドルされており 3 クライアントライセンスが付属する。
http://shop.rebel.com/netwinder/officeserver.cfm

Cobalt RaQ3i システムが Phoenix Adaptive Firewall に対応

Progressive Systems, Inc. は Cobalt Network のプラットフォームに Phoenix Adaptive Firewall を組込む。中小ビジネス向けにインターネット接続を提供してきたがセキュリティへの関心が強くなっており、このファイアウォールアプライアンスは簡単にしかも迅速にインストールすることができる。Proguressive の Cobalt Qube や Cobalt Raq サーバなどで利用できる。
http://www.progressive-systems.com

Cobalt Networks がサーバ分野のユニット数でトップ

Cobalt Networks, Inc. は Dataquest のリポートによると1999年のサーバアプライアンス市場のユニット数でトップになった。同社がトップになったのはトータルの市場、エントリレベル/ミッドレンジセグメントだ。Cobalt の製品は手ごろな価格で使いやすくいくつかのアプリケーションにも対応している。製品ラインはウェブに注力しており、e-mail、ファイアウォール、キャッシング、インターネットベースのアプリケーションなどが主なものだ。同社の開発者向けネットワークには600以上のアプリケーション開発者がアクセスしている。

世界初の SAN アプリケーション

DataDirect Network, inc. は世界初のネットワーク(SAN)アプライアンス、SAN DataDirector をリリースした。SAN DataDirector はインテリジェントのネットワークインフラとなる機器で次世代の SAN を提供している。対応プラットフォームは UNIX、Linux、Linux クラスタ、Sun、SGI、AIX、Mac、Windows NT で 異なった機種/OS の環境から記憶機器を共有することができる。

NetJammer.com ー テクニカルマネージャ求む

netjammer.com では サイトの管理者、ウェブマスタ、メンテナンスの担当者を募集している。要求されるものはサーバの管理、ウェブマスタ、HTML、Javascript、Perl、リッチメディア(オーディオ/ビデオ)開発、技術サポートなど。勤務地はハリウッド、給与は応相談。コンタクト先は jobs@netjammer.com

Linux リンク

▼▼▼ソフトウェア関連ニュース▼▼▼

OpenAL: 3D オーディオライブラリ

Linux にゲームを提供している Loki Entertaiment Software によると Linux 用の3D オーディオライブラリを構築するためのプロジェクトが発足した。3Dオーディオをゲームで使用できれば強力なサウンドエフェクトを得られ、音により方向や距離を判別できるようになる。Creative Technology は Linux 用ドライバのリリースを予定しており OpenAL 上で アドバンスト3D オーディオをサポートする予定。3月にリリースされる Loki のLinux 版 Activision's Heavy Gear II は OpenAL 上で3D オーディオをサポートする最初のゲームだ。OpenAL のソースコードは www.openal.org からダウンロードできる。

Joydesk

Virtualtek/Joydesk.com は Joydesk のワイヤレス版をリリーした。携帯電話を利用して同社のコラボレーションアプリケーションにアクセスできる。Joydesk はビルトインのメールサーバを有したフル機能のインフォメーション管理スイートだ。30日有効のトライアル版がダウンロード可能。

Rogue Wave の C++ ツールキット

Rogue Wave Software は Linux 用の C++ ツールキットをリリースした。Linux 用の CD には C++ ライブラリ、Tools.h++、Therads.h++、Tools.h++ プロフェッショナル、DBTools.h++、Money.h++ などが含まれており、データストラクチャ、スレッド、リレーショナルデータベース、ビジネスアナリシス、通貨関連のライブラリが提供されている。

TopPage

IBM は Linux 用の WYSIWYG HTML エディタを開発した。ベータ版だが http://www.ibm.com/jp/toppage/ からダウンロードできる。TopPage は優れた WYSIWYG の HTML エディタで HTML の知識がなくても簡単にウェブページを作成することができる。ロゴやボタンを作成する WebArt designer、アニメーション GIF を作成する Web Animator などが含まれている。カスケーディングスタイルシート、Java アプレット、ダイナミック HTML などの最先端の技術にも対応している。ダウンロードできるベータバージョンの TopPage の使用期限は2000年12月31日までだ。

HancomLinux ワードプロセッサ、アジア、欧州言語をカバー

韓国のワードプロセッサの大手、Haansoft の子会社、HancomLinux, Inc. は Linux 版のワードプロセッサの開発を終了し今月から販売を開始する。中国語版はまだテストが終了していない。英語圏用の HancomWord のターゲットはベータテストが終了次第発売される。HancomWord は英語、フランス語のほかにもドイツ語、ギリシャ語、ロシア語、日本語などにも対応している。対応フォーマットはHTML、テキスト、MS ワード文書など。日本語版は "Are-A Hangul 2000" という名前で来月開催される 東京 Linux コンベンションで披露される予定。LinuxHangul の Windows からの移植には "Wine" が利用されている。

Artstream

Artstream 2.0b11-3 がリリースされた。いくつかの新機能の追加とバグフィクスがなされている。Mesa ライブラリのパッチは http://mesa3d.sourceforge.net/devel.html#branches から入手できる。
rpm は http://www.mediascape.com/linuxrpm.html から入手可能。
ドキュメントの入手先は http://www.mediascape.com/mediaEscape/guide.html

Corel 関連ニュース

CorelDRAW 9 for Linux が7月にリリースされる予定。Corel VENTURA Publisher 8.5 の Linux 版と Windows 版は今年末にリリース予定。

Corel PHOTO-PAINT 9 for Linux のフリーダウンロードが今年の夏に可能になる予定。Corel PHOTO-PAINT 9 を含んだ Linux 版 CorelDRAW 9 グラフィックスイート は夏の終わりにリリースされる予定。

Helix GNOME

Helix Code, Inc. は Helix GNOME デスクトップのプレビュー版を発表した。Helix GNOME の詳細とHelix GNOME デスクトップのプレビュー版は www.helixcode.com から得られる。

Exille III: Ruined World!

Spiderweb Software と Boutelle.com は Linux 版ロールプレイングゲーム、Exile III: Ruined World を発表した。Exile III: Ruined World の特徴はプレーヤー参加型の非常に複雑で大きな世界を構築していることと美しいグラフィックとサウンド、考えられたインタフェースだ。
http://www.spiderwebsoftware.com/exile3/linuxexile3.html

Tripp Lite の UPS が Linux に対応

Tripp Lite の 製品が Linux に対応した。同社の PowerAlert UPS Management Software は Red Hat OS での動作の認定を受けている。同社ソフトウェア開発ディレクタによると Red Hat 対応の UPS ソフトウェアは他にもあるがソースコードをオープンにしているのは Tripp Lite だけだ。

JavaServer pages ブック

Duane K. Fields と Mark A. Kolb 著の "Web Development with java Server Pages"は JSP を使ってウェブページとウェブベースのアプリケーション構築に関して体系的にまとめられた本だ。今までの ASP や CGI などと違い JSP はJava API にフルにアクセスできる。優れたライブラリの使用と再使用可能なコードを利用することができる、体系的にまとめられた学習書はなかった。この本は すべての JSP 開発プロセスをカバーしている。
内容
第1章と第6章(PDF format)
オンラインでも13ドル70セントで入手可能。ファイルサイズは14MB の PDF フォーマット

その他のソフトウェア

ChangingPages 3.0: GPL のウェブオーサリングツール。Perl 5 と MySQL が必要

Leafwa: ウェブベースの Leafnode 管理プログラム

Easy Software Products の ESP Print Pro v4.0.4: UNIX 用のプリンティングソリューション。対応フォーマットは PostScript, PDF, GIF, TIFF, PNG, JPEG, SGI RGB など。対応プリンタは 1600 以上

Zend Optimizer for PHP 4.0: ベータ1とベータ2がダウンロード可能

iHTML Merchant: e-commerce トランザクションサービス

LinkScan Enterprise & Enhancements 7.0: スケーラブルのウェブサイト管理ツール。リンクチェック、HTML の正当性、ウェブサイト管理、サイトマップ作成。

Axis Communications: オープンソースの Bluetooth ドライバ(Linux版)。(Bluetooth はモバイル機器/ポータブル機器間のワイヤレス通信技術。)Flash-ROM の JFFS (Journaled Flash File System)。Linux ベースの Axis 2100 ネットワークカメラ。 http://developer.axis.com

iServer: プラットフォームインデペンデントのアプリケーション/ウェブサーバ。使用期限90日の体験版は http://www.servertec.com からダウンロードできる

Aladding Expander beta: Unix、Windows、Macintosh のファイルを解凍するプログラム。Linux/Intel 版は http://www.aladdinsys.com/expander/expander_linux_login.html からダウンロードできる

Voodoo3 3D グラフィックスカードドライバ: http:..www.xig.com

Aestiva 1.8: ウェブベースのオペレーティングシステム。サーバジャンピング機能がある

ChiliSoft Active Server Pages for Linux : Cobalt の RaQ 3 サーバにプレインストールされる

NetLedger: ウェブベースのスモールビジネス用会計ソフト

Active Perl 5.6: Linux、Windows、Solaris 用の Perl バイナリパッケージ

Parasoft : SiteRuler、CodeWizard、Insure++

SecureNet PRO 3.0 : ネットワーク監視プラットフォーム

Omnis Studio 2.4 : 4GL、オブジェクトオリエント言語学習用ソフト

Enhydra : オープンソースの Java/XML アプリケーションサーバ

AnywhereYouGo.com : ワイヤレスインターネット開発者、IT マネージャのためのコミュニティサイト


More 2 ¢ Tips

ホイールマウスとネットスケープ

次の行をXF86Configのポインタセクションに追加。



ZAxisMapping 4 5


ネットスケープで有効にするにはさらに次の行を .Xdefaultsに追加する


Netscape*globalTranslations: #override \


   <Btn5Up>: LineDown() \n\


   <Btn4Up>:   LineUp() \n


アクセス可能のドライブ、パーティションをすべてマウントする



#!/bin/bash


# allfilesys 1.0


# small utility for mounting and checking all local drives


# needed to work ok:


#   git,fdisk,grep, and /proc


PATH="/sbin:/usr/sbin:/bin/:/usr/bin"


#configuration:


ALLDISKS='hd[a-d]'


# other example: ALLDISKS='hda /dev/hdb /dev/sd[abc]'





#grep pattern of lines from fdisk -l /dev/hdx which we don't want to mount nor c


heck. Note that language matters.


NOMOUNT="RozケWen\|Extended\|Ext'd\|swap"


#  fsck options  (Completion_bar, dont_show_Title, automatically_rePair )


FSCK_OPTS="-C -T -p"


#





if [ `whoami` != 'root' ]


then echo "Note: as root you can have more privilegies...."; fi


if [ "$#" -eq 0 ]; then echo -e "Hello, I need 1 to 2 parameters\n   give me -m


to attempt mount using gitmount\n   and/or  -c to check filesystems listed below


. \n\n When mounting, I will create directories under /mnt named \n just as devi


ces under /dev/  [eg. hdc3,hdb8, and so on] \n" ; exit 1; fi


if [ "$1" = "-cm" -o "$1" = "-mc" ] ; then  set -- -c -m ; fi





fdisk -l /dev/$ALLDISKS  2>/dev/null | grep /dev/ | grep -v Disk | grep -v "$NOM


OUNT" | awk ' { print $1 } ' | while read line


do


  d=`echo $line | sed 's/.*\///'`


  echo "########### Device: $d"


  mkdir /mnt/$d 2>/dev/null   # create dir if not exists


if [  -z "`grep  "/dev/$d " /proc/mounts`" ]; then


### not mounted yet


  if [ "$1" = "-c" -o "$2" = "-c" ]; then fsck $FSCK_OPTS /dev/$d ; fi


  if [ "$1" = "-m"  -o "$2" = "-m" ] ; then gitmount $d 2>/dev/null ; fi


else           


  echo "                      is already mounted"


fi


done                                                      


Traceroute のリソース

http://cities.lk.net/trlist.html

Linux 用のウィルスソフトは?

Linux だけを使っているならほとんど必要ない。使うなら TripWire を。ファイルシステムをチェックしてCRCをデータベースに保存しファイルが修正されたかどうかをチェックする。これはウィルスソフトと言うよりもネットワークのセキュリティのためのソフトです。

Pentium-II Xeon の計算速度を上げるには

速度を上げるには math ライブラリが必要。Intel-386 用にチューンアップされた BLAS や ATLAS などがある。

64MB 以上のメモリを認識させる

カーネル2.2以降なら64MB以上のメモリを自動的に認識するはず。マザーボードによっては 「append="mem=xxxM"」をLilo に入れるか、コマンドプロンプトで渡す必要がある。

Palm データベースとタブ区切りデータ

タブ区切りデータをカンマ区切りデータに変換できれば可能。正規表現を使えればPerlでスクリプトを書くことも可能。

パイロットリンクの構築

シリアル接続のクレードルを使っているなら問題なくアクセスできる。接続しているシリアルポートを確認して環境変数を設定する。



% export PILOTPORT=/dev/ttyS0


% export PILOTRATEW600


パイロットリンクのコマンドを起動。


% pilot-xfer -b /tmp/pilot-backup


KPPP でルートパスワードの入力を回避する

ルート以外のユーザで KPPP を起動したときにルートパスワードの入力を回避するには /etc/pam.d/kppp ファイルの1行目に次の行を挿入する



auth       sufficient   /lib/security/pam_console.so



This page written and maintained by the Editor of the Linux Gazette. Copyright © 2000, gazette@ssc.com
Published in Issue 53 of Linux Gazette, May 2000

グラフィックスプログラム (By Paulo Henrique Baptista de Oliveira)


Moonlight Atelier 3D:

Moonlight Atelier 3D。モデリングやレンダリングの他、NURBS カーブの作成と編集、NURBS 面の作成と編集、インタラクティブモデリング、ライトエフェクトなどの機能を有する。
Moonlight は参考画像のように非常にリアルな画像を作成できる。オブジェクトのダウンロードはここから

Moonlight Atelier 3D による画像

PovRay:
PovRay (Persistente of Vision RayTracing)は枯れたソフトでクロスプラットフォームのレンダリングプログラム。レイトレーシングの手法を使って3D 画像を作成する。現在のバージョンは 3.2 だ。
PovRay による画像

PovRay はラインコマンドを使って画像を作成する。個々のイメージを設定しそれぞれを描出する。Pov Ray のフロントエンドとして 3dPMGiramXPovRayk3de などたくさんのプログラムが作られている。その中でも人気のあるのは Giram だ。

Giram の使用例

Blender:

Blender は非常に優れたアプリケーションの一つだ。フリーでしかもマルチプラットフォーム対応で豊富な機能を誇るがインタフェースが若干弱い。Efnetchatで意見や初心者用のヘルプなどが交換されている。チュートリアルも参考にしよう。

Blender
Blender による画像

Blender による動画も作成されている。
Blender によるコマーシャル
Blender によるアニメ

MindsEye:

MindsEyeは GPL に基づいた 3D 開発プロジェクト。特徴はモジュラーデザイン、マルチシーン、マルチコンセプト、オブジェクト指向モデリング、ネットワークサポートなどでカーネルを念頭に置いている。現在のバージョンは0.5.36。ドキュメントニュースグループも参考にしてほしい。

MindsEye のレイアウト
MindsEye のプレビュー

次回は3Dプログラムでの作成、モデリング、レンダリング、さらにCADプログラムに関しても話そう。


Copyright © 2000, Paulo Henrique Baptista de Oliveira
Published in Issue 53 of Linux Gazette, May 2000

UNIX のアセンブリプログラム (By Konstantin Boldyshev)

UNIX OS 上でのアセンブリのプログラミング入門。最新のドキュメントはhttp://linuxassembly.org/intro.html から入手できる。この入門書を体験するにはいくつかのツールが必要だ。アセンブラは gas(GNU Assembler) ではなく nasm(Netwide Assembler) を使う。nasm のページからダウンロードできる。nasm はオブジェクトコードを作成するだけなのでリンカが必要。これはほとんどのディストリビューションに含まれている ld を使う。

必ず使われる "Hello, World" (hello.asm) を書いてみよう。通常は入力、アウトプット生成、終了という手順になる。OS のサービスコールには C ライブラリラッパ経由とダイレクトの2種類ある。通常 UNIX カーネルは POSIX 互換なので libc システムコールは実際のカーネルコールに対応する。今回はダイレクトシステムコールを使って説明する。実装方法は違うが大まかな言い方をするとシステムコールとは DOS プログラムで使う int 0x21, int 0x25, int 0x26 などのようなものだ。DOS プログラマは OS サービスと BIOS サービスとを混同しないように。

現在の IA32 UNIX は32ビットのプロテクトモード、フラットメモリモデル、 ELF フォーマットを使用する。プログラムはセクション(セグメント)に分けられる。.text はリードオンリのコード、.data は読み書きのデータ、.bss は初期化されていないデータだ。プログラムは必ず .text セクションが必要。

Linux のシステムコールは int 0x80 を使う。Linux は通常の UNIX とは違い、ファンクションナンバは eax に渡され引数はレジスタを経由して渡される。スタックではない。ebx, ecx, edx, esi, edi のレジスタで5個の引数を渡すことができ5個を越えると最初の引数の構造体として渡される。結果は eax に渡されるのでスタックは一切使用しない。Linux のプログラムは次のようになる。



section .text


    global _start                       ;must be declared for linker (ld)





msg     db      'Hello, world!',0xa     ;our dear string


len     equ     $ - msg                 ;length of our dear string





_start:                 ;we tell linker where is entry point





        mov     edx,len ;message length


        mov     ecx,msg ;message to write


        mov     ebx,1   ;file descriptor (stdout)


        mov     eax,4   ;system call number (sys_write)


        int     0x80    ;call kernel





        mov     eax,1   ;system call number (sys_exit)


        int     0x80    ;call kernel


FreeBSD は通常の規則に従い、システムコールナンバは eax に、引数はスタックに渡される。システムコールは 0x80 と ret を含んだファンクションへのコールとして実行される。結果は eax に渡される。int 0x80 の他に 7:0 ゲートを呼ぶ方法もある。実際のソースコードを見たほうが良く分かるだろう。



section .text


    global _start                       ;must be declared for linker (ld)





msg     db      "Hello, world!",0xa     ;our dear string


len     equ     $ - msg                 ;length of our dear string





_syscall:               


        int     0x80            ;system call


        ret





_start:                         ;tell linker entry point





        push    dword len       ;message length


        push    dword msg       ;message to write


        push    dword 1         ;file descriptor (stdout)


        mov     eax,0x4         ;system call number (sys_write)


        call    _syscall        ;call kernel





                                ;actually there's an alternate


                                ;way to call kernel:


                                ;push   eax


                                ;call   7:0





        add     esp,12          ;clean stack (3 arguments * 4)





        push    dword 0         ;exit code


        mov     eax,0x1         ;system call number (sys_exit)


        call    _syscall        ;call kernel





                                ;we do not return from sys_exit,


                                ;there's no need to clean stack


BeOS の場合はどうか。BeOS は通常の UNIX と同様の規則に従っている。FreeBSD との違いはint 0x25を使うことだ。なお、 nasm を BeOS でコンパイルする場合には float.h ファイルに 「#include "nasm.h"」を、nasm.h ファイルに 「#include <stdio.h>」を追加する必要がある。BeOS のコードは次の通り。



section .text


    global _start                       ;must be declared for linker (ld)





msg     db      "Hello, world!",0xa     ;our dear string


len     equ     $ - msg                 ;length of our dear string





_syscall:                       ;system call


        int     0x25


        ret





_start:                         ;tell linker entry point





        push    dword len       ;message length


        push    dword msg       ;message to write


        push    dword 1         ;file descriptor (stdout)


        mov     eax,0x3         ;system call number (sys_write)


        call    _syscall        ;call kernel


        add     esp,12          ;clean stack (3 * 4)





        push    dword 0         ;exit code


        mov     eax,0x3f        ;system call number (sys_exit)


        call    _syscall        ;call kernel


                                ;no need to clean stack


バイナリの作成はコンパイルとリンクをコマンドラインから実行する。



$ nasm -f elf hello.asm         # this will produce hello.o object file


$ ld -s -o hello hello.o        # this will produce hello executable


コマンドラインから./helloと入力すればプログラムを実行できるはずだ。バイナリのサイズには驚くと思う。もし UNIX でのアセンブリプログラムに関心がある場合は Linux Assemblyを訪れてみるといい。サンプルコードは asmutils からダウンロードできる。より詳細な情報は Linux Assembly HOWTO で得られる。


Copyright © 2000, Konstantin Boldyshev
Published in Issue 53 of Linux Gazette, May 2000

HelpDex (By Shane Collinge)

今月の漫画 HelpDexをご覧になるにはここをクリックしてください。


bash のファンクションとアリアス (By Pat Eyler)

アリアスは単なる文字列の置き換えだ。シェルは最初のコマンドをアリアスのリストと照合する。


$ alias 1='echo '
$ alias 2='this is an alias'
$ 1 2
this is an alias
$
アリアスはコントロールフロー、コマンドライン引数などは使えない。

ファンクションは現在のシェルの中で実行されるスクリプトだ。スクリプトの柔軟性を有している。ファンクションを作るにはファイルに保存するかコマンドラインで入力する。コマンドラインで入力する方法は次の通り。



$ gla() {


> ls -la | grep $1


> }


これは非常に簡単なファンクションでアリアスとしても可能だ。このファンクションはディレクトリをリスとして最初の引数に合致するものを検索する。awk を使ってファイルサイズが 1024 バイト以上のものを検索するには次のようにする。


$ gla() {


> ls -la | grep $1 | awk ' { if ( $5 > 1024 ) print $0 } '


> }


このファンクションはアリアスでは代替できない。

次により複雑なファンクションの例を示す。2つの CVS リポジトリを持つ2つのプロジェクトがあり、CVSROOT、CVS_ROOT 変数を設定もしくはクリアする。さらに update という引数が与えられたら "cvs update" を実行するスクリプトは次のようになる。



setcvs() {


    export done="no"


    if  [ "$1" = "unset" ]  


    # we want to clear all of the variables


	then


	echo -n "Clearing cvs related variables:  "


	export CVSROOT=""


	export CVS_RSH=""


	export done="yes"


	echo "done"


    fi


    if ( pwd | grep projects/reporting > /dev/null && \ 


       [ "$done" != "yes" ] )


    # if we're in the reporting area, and we're not already done   


	then 


	echo -n "Setting up cvs for reporting project:  "


	export CVSROOT="issdata:/usr/local/cvs/"


	export CVS_RSH="ssh"


	export done="yes"


	echo "done"


    fi


    if ( pwd | grep projects/nightly  > /dev/null && \ 


       [ "$done" != "yes" ] )


    # if we're in the nightly area, and we're not already done


	then


	echo -n "Setting up cvs for nightly project:  "


	export CVSROOT="/home/cvs/"


	export done="yes"


	echo "done"


    fi


    if  [ "$1" = "update" ]


    # we want to update the current tree from the cvs server after


    # setting up the right variables 


	then       


	    if [ -z "$CVSROOT" ]


	    # if there is a zero length $CVSROOT (it has already been


	    # cleared or was never set) throw an error and do nothing 


      		then


		echo "no cvs variables set ... check your cwd and try again"


	    elif [ -n "$CVSROOT" ]


	    # if there is a $CVSROOT try and do the update


		then


		echo "updating local tree"


		cvs -q update


		echo "done"


	    fi


    fi


}


実際の使用例は次のとおりだ。

$ . ~/scripts/setcvs
$ cd
$ pwd
/home/a257455
$ setcvs unset
Clearing cvs related variables: done
$ echo $CVSROOT

$ echo $CVS_RSH

$ cd projects/reporting/htdocs/
$ setcvs
Setting up cvs for reporting project: done
$ echo $CVSROOT
issdata:/usr/local/cvs/
$ echo $CVS_RSH
ssh
$ cd ../../nightly/
$ setcvs
Setting up cvs for nightly project: done
$ setcvs update
Setting up cvs for nightly project: done
updating local tree
done
$ cd
$ setcvs unset
Clearing cvs related variables: done
$ setcvs update
no cvs variables set ... check your cwd and try again
$
ファンクションの優れている点は再利用できることにある。例えば上記のファンクションが "./scripts/setcvs" というファイルに保存されているとすれば、次のようなスクリプトが可能になる。


#!/bin/bash





# a sample script





# first source the functions


. ~/scripts/setcvs





# now go to the project directories and update them from cvs


cd ~/projects/reporting/htdocs


setcvs update


cd -


cd ~/projects/nightly


setcvs update





# now go back to where you were and unset any cvs variables.


cd -


setcvs unset


アリアスは非常に簡単で便利なものだがファンクションも便利なものであることが理解できたと思う。ただアリアスもファンクションも標準のコマンドを置きかえることはできないので注意しよう。アリアスが存在しない場合があることにも注意が必要だ。次の例を見て考えてほしい。



$ alias rm='rm -i'


$ cd ~/scratch


$ rm *   # here the rm alias catches you and interactively


         # deletes the contents of your current directory



同じセッションで次のようにしたとする。


$ su -


# cd /tmp


# rm # here the rm alias no longer exists, and you whack


     # a bunch of stuff out of /tmp


Happy hacking!


Copyright © 2000, Pat Eyler
Published in Issue 53 of Linux Gazette, May 2000

今月の Linux サイト:SourceForge (By Sean Lamb)

Linux ボックス用のアプリケーションを開発するには、プロジェクトを立ち上げる。フィードバックを得るにはプロジェクトウェブサイトが必要で、このサイトが PHP、mySQL を使っていれば簡単に情報をフォームを通して修正できる。ダウンロードサイトへのリンク、ユーザ、開発協力者用のメーリングリスト、ウェブフォーラムなども必要だ。

規模の小さなプロジェクトにこれはきつい。開発者たちはどうしてこのような時間、サーバ、コストなどを賄っているのだろうか。その答えがSourceForgeにある。SourceForge はオープンソースプロジェクトにこれらすべてをフリーで提供している。SourceForge が提供するものは

これらすべてが提供されており、必要なときに利用できる。プロジェクト開発者は ssh1 でアクセスするのでセキュリティに関してはあまり問題はない。

SourceForge のスポンサーは VA Linux Systems だ。利用者に大きな義務は発生しない。目的はオープンソース開発者が開発に専念できる環境を提供すること。現在支援されているプロジェクトの数は非常に多い。そのカテゴリは次の通り。

これらの機能をフリーで提供しているのでプロジェクト数が多いのも当然だ。プロジェクトの第一号がSourceForgeであることで安心できるだろう。


Copyright © 2000, Sean Lamb
Published in Issue 53 of Linux Gazette, May 2000

シェルスクリプト入門 (By Ben Okopnik)

前回はシェルスクリプトの基本とその仕組みを簡単に説明した。今回はループと条件分岐の説明です。通常繰り返しの動作をさせるには次のようなスクリプトを書きます。

#!/bin/bash

for n in ~/weekly/*.txt
do
    ae $n
done

echo "Done."

または

#!/bin/bash

for n in ~/weekly/*.txt; do ae $n; done; echo "Done."

二つとも同じ動作をしますが最初の例のほうが読みやすい。読みやすいコードを書くにはそれぞれのレベルでインデントをすることです。上記の例では "for" ループを使っています。"for" ループはリストのアイテムが存在する間動作を繰り返し、リストの中身がなければコントロールを "done" の次の行に移します。"for" ループである回数同じことを繰り返す場合回数が大きいと入力が増えるので "seq" を使います。次の例を見ればお分かりでしょう。

#!/bin/bash

for i in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
do
    echo $i
done

"seq" を使った例

#!/bin/bash

for i in $(seq 15)
do
    echo $i
done

上の二つの例はどちらも同じ動作をします。"seq" は GNU の "shellutil" パッケージに含まれています。

繰り返しではなくある条件の下で動作をコントロールする場合には "while; do; done" を使います。

#!/bin/bash

pppd call provider &

while [ -n "$(ping -c 1 192.168.0.1|grep 100%)" ]
do
    echo "Connecting..."
done

echo "Connection established."

このスクリプトは "pppd" を起動し、接続が確立するまでループを繰り返します。このスクリプトを使用する場合は 192.168.0.1 をプロバイダのアドレスに変更します。"ping -c" でパケットを一つ送出しその結果をパイプで "grep" に渡しています。[] はテストコマンドのことで条件の結果が真か偽かを返します。[] はどちらもスペースが必須です。注意しましょう。

"until; do; done" は "while" とは逆に条件が偽の間はルールを継続します。

条件の結果によって動作を変えるには "if; then; [else]; fi" を使います。
...

if [ $BOSS="jerk" ]
then
    echo 'Take this job and shove it!'
else
    echo 'Stick around; the money is good.'
fi

...
BOSS という変数に "jerk" がセットしてあれば最初の echo コマンドが実行されます。"else" ステートメントは必須ではありません。

複数の "if ステートメント" が必要な場合には "case; in;;esac" を使います。例えば "intel_cpu_test" の戻り値が 4, 8, 16, 32, 64 のいずれかなら次のようなスクリプトが可能です。

#!/bin/bash

case $(intel_cpu_test) in
    4) echo "You're running Linux on a calculator??";;
    8) echo "That 8088 is past retirement age...";;
    16) echo "A 286 kinda guy, are you?";;
    32) echo "One of them new-fangled gadgets!";;
    64) echo "Oooh... serious CPU envy!";;
     *) echo "What the heck are you running, anyway?";;
esac

最後の条件 "*" はデフォルト値になります。上記の条件に合致しないものはすべてこのステートメントが実行されます。ステートメントが ";;" で終わっていることに注意しよう。

プログラムの流れを途中で変更するには "break, continue" を使います。"break" は直ちにループを脱出し、"continue" は現在のループをスキップします。次のように使用します。
...

while [ hosting_party ]
do
    case $FOOD_STATUS
    in
        potato_chips_gone) replace_potato_chips;;
        peanuts_finished) refill_peanut_bowl;;
        pretzels_gone) open_new_pretzel_bag;;
        ...
        ...
    esac
 

    if [ police_on_scene ]
    then
        talk_to_nice_officers
        continue
    fi

    case $LIQUOR_STATUS
    in
        vodka_gone) open_new_vodka_bottle;;
        rum_gone) open_new_rum_bottle;;
        ...
        ...
    esac

    case $ANALYZE_GUEST_BEHAVIOR
    in
        lampshade_on_head)     echo "He's been drinking";;
        talking_to_plants)     echo "She's been smoking";;
        talking_to_martians)   echo "They're doing LSD";;
        levitating_objects)    echo "Who spiked my lemonade??";;

    ...

    ...

    ...

    esac

done

echo "Dude... what day is it?"

前回作ったスクリプトは結構便利なものだがエラーチェックは考えていない。そこで簡単なエラーチェックを組込んでみよう。

#!/bin/bash

if [ -z $1 ]


then
    clear
    echo "'bkup' - copies the specified file to the user's ~/Backup"
    echo "directory tree after checking for name conflicts."
    echo
    echo "Usage: bkup filename [bkup_dir]"
    echo
    echo "bkup_dir Optional subdirectory in '~/Backup' where the file"
    echo " will be stored."
    echo
    exit
fi

if [ -n $2 ]


then
    if [ -d ~/Backup/$2 ]
    then
        subdir=$2/
    else
        mkdir -p ~/Backup/$2
        subdir=$2/
    fi
fi

a=$(date +%T-%d_%m_%Y)
cp -i $1 ~/Backup/$subdir$1.$a

"-z" オプションはストリングが0の場合に真を返す。スクリプトの使用方法を忘れた場合にはコマンドを引数なしで入力するのが一番簡単だ。さらにバックアップディレクトリ以下のディレクトリを指定できるようにしてある。次のように使うことができる。

bkup my_new_program.c c
bkup filter.awk awk
bkup filter.awk filters
bkup Letter_to_Mom.txt docs

シェルスクリプトを書く場合には十分注意しよう。一瞬でシステム全体を破壊する力があるということを忘れないように。"root" でログインしている場合には危険がありそうなシェルスクリプトを実行するのは避けよう。

loop と 条件分岐は非常に良く使われる方法です。これからも頻繁に出現するでしょう。次回はシェルスクリプトの中で使われるツールに焦点を当ててみます。


Copyright © 2000, Ben Okopnik
Published in Issue 53 of Linux Gazette, May 2000

インターナショナルキーボード (By Juraj Sipos)

別の言語での名前の知人にレターを書く場合を想像してください。デンマーク語では ø がポルトガル語では ñ などが使われます。この記事は特別なパッケージをインストールすることなく国際的なキーボードに対応しようというものです。bash_profile や XF86Config の修正なしでスペイン語、イタリア語、スロバキア語、チェコ語、ポーランド語、スロベニア語、クロアチア語、デンマーク語、ドイツ語、フランス語、フィンランド語、ノルウェイ語、エストニア語、ラトビア語など多数の言語に対応できます。

最大の問題はKDEではインターナショナルキーボードがうまく動作しないということです。いくつかの設定ファイルを修正すれば可能です。いろいろ調べてみましたが適当なソリューションは見つかりませんでした。.xmodmap か *.kimap を修正すれば可能です。

具体的にKDEで .Xmodmap と *.kimap を修正して言語を変える方法が述べられています。実際に KDE を使用していて日本語以外のキーボードを使用したいという人にはいいかもしれません。


Copyright © 2000, Juraj Sipos
Published in Issue 53 of Linux Gazette, May 2000

ホームコンピュータへのアクセス (By Robert Stagner)

仕事中に家のコンピュータにアクセスしたくなることがあります。なるべく費用のかからない56K モデムを使って PPP 接続で試してみます。このソリューションにはいくつかのスクリプトと cronjob が必要です。設定がうまくいけば自動的にインターネットに接続し、ISP から得られたローカル IP アドレスをメールで送ります。必要なことは

これ以外は非常に簡単です。まず ppp-on と ppp-off を /usr/sbin/ ディレクトリにコピーする。パーミションは 0755 にする。次に ppp-on-dialer を /etc/ppp/ ディレクトリにコピーする。

ppp-on スクリプトを修正して ISP の電話番号、アカウント、パスワードを入れる。モデムのデバイス名と速度も忘れずに。スクリプトの内容は次のようになります。






#!/bin/sh


#


# These are the parameters. Change as needed.


TELEPHONE=your phonenum # The telephone number for the connection


ACCOUNT=your account    # The account name for logon (as in 'George Burns')


PASSWORD=your password  # The password for this account (and 'Gracie Allen')


LOCAL_IP=0.0.0.0        # Local IP address if known. Dynamic = 0.0.0.0


REMOTE_IP=0.0.0.0       # Remote IP address if desired. Normally 0.0.0.0


NETMASK=255.255.255.0   # The proper netmask if needed 





# Export them so that they will be available at 'ppp-on-dialer' time.


export TELEPHONE ACCOUNT PASSWORD


#


# This is the location of the script which dials the phone and logs


# in.  Please use the absolute file name as the $PATH variable is not


# used on the connect option.  (To do so on a 'root' account would be


# a security hole so don't ask.)


#


DIALER_SCRIPT=/etc/ppp/ppp-on-dialer


#


# Initiate the connection





exec /usr/sbin/pppd debug lock modem crtscts /dev/ttyS3 115200 \


	asyncmap 20A0000 escape FF kdebug 0 $LOCAL_IP:$REMOTE_IP \


	noipdefault netmask $NETMASK defaultroute connect $DIALER_SCRIPT 





Red Text - の部分は実際の情報に合わせて修正する

次に Perl スクリプトを使って接続、切断プロセス、e-mail の送出を実行させます。Perl スクリプト を /usr/local/bin ディレクトリにコピーする。パーミションは 0755 にすること。スクリプトの内容はカウンタをセットしプログラムの引数をチェックする。エラーがなければ PPP 接続を実行し IP アドレスを取得する。取得した IP アドレスをメールで送る。

ここまでうまくいけばこれらのスクリプトを自動で実行させる。これは crontab を使う。ルート権限で "-e" オプションをつけて crontab を実行、次の2行を追加して終了する。






00 8 * * 1,2,3,4,5 perl /usr/local/bin/sendMeIP.pl connect


15 12 * * 1,2,3,4,5 perl /usr/local/bin/sendMeIP.pl disconnect





最初の行は月曜から金曜日の8時に perl スクリプトを起動する。次の行は12時15分に Perl スクリプトを起動してインターネット接続を切断する。実際に特定のメールアドレスに IP アドレスがメールで届けば家の Linux ボックスにアクセスすることができる。


Copyright © 2000, Robert Stagner
Published in Issue 53 of Linux Gazette, May 2000

浮動小数点数の精度 (By Alan Ward)

Linux と マイクロソフト OS との間で浮動小数点を計算するプログラムの結果がどう違うか検証します。プログラム言語はパスカル、C、Java を使います。プラットフォームはインテルです。

パスカルでは80ビットの浮動小数点は次のように使用される。

ハードウェア FP コーディングはプロセッサメーカーによる。コンパイラの設計には別のコーディングを使用できる。単精度の場合にはx30程度まで実数フォーマットではx60、倍精度ではx90の精度がある。同じプログラムを p2c で c に変換したもので調べると p2c はパスカルの単精度は c の単精度にダブルは倍精度に変換されており、x80まで精度が維持されています。c で書き直したものを gcc でコンパイル後実行してもほぼ同じ結果が出ます。c の浮動小数点は64ビットからなり仮数部と指数部とのビット数が違うようです。Java の場合には単精度でも倍精度でも同じ結果が出ます。


Copyright © 2000, Alan Ward
Published in Issue 53 of Linux Gazette, May 2000