Linux Journal 2000年5月号発売中。今月の特集はプログラムです。
▼▼▼ディストリビューション関連ニュース▼▼▼ ●BlueCatLynx Real-Time Systems, Inc. は Hewlett-Packard の ChaiVM の出荷を発表した。ChaiVM は Lynx BlueCat Linux OS 対応の組込み仮想マシン技術だ。BlueCat ユーザは Java 互換の組込み仮想マシンで幅広い Java アプリケーションを実際にテストすることが可能。BlueCat はランタイムの占有率も 600K と小さくガベージコレクション機能も有している。
●CorelCorel 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 コントローラが提供されている。
●MandrakePlace 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セント。
●SuSESuSE は 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 はウェブベースのエンタープライズレベル顧客サービス管理システム、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 と提携して Linux ベースのサーバアプライアンスを出荷すると発表した。インターネット、アプリケーションサーバでの用途を見込んでいる。最初の Seagate Server Appliance Solution は今夏出荷される予定。データ保護とスケーラブル記憶に対応したコスト効率のよいシステムで使用するのも簡単だ。
http://www.seagate.com
http://www.cobalt.com
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月のモントリオールでの展示会も期待できる。
●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
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
Progressive Systems, Inc. は Cobalt Network のプラットフォームに Phoenix Adaptive Firewall を組込む。中小ビジネス向けにインターネット接続を提供してきたがセキュリティへの関心が強くなっており、このファイアウォールアプライアンスは簡単にしかも迅速にインストールすることができる。Proguressive の Cobalt Qube や Cobalt Raq サーバなどで利用できる。
http://www.progressive-systems.com
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 リンク
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 からダウンロードできる。
●JoydeskVirtualtek/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++ などが含まれており、データストラクチャ、スレッド、リレーショナルデータベース、ビジネスアナリシス、通貨関連のライブラリが提供されている。
●TopPageIBM は 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" が利用されている。
●ArtstreamArtstream 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。
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 GNOMEHelix 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 の 製品が 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 マネージャのためのコミュニティサイト
次の行を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
Moonlight Atelier 3D。モデリングやレンダリングの他、NURBS カーブの作成と編集、NURBS 面の作成と編集、インタラクティブモデリング、ライトエフェクトなどの機能を有する。
Moonlight は参考画像のように非常にリアルな画像を作成できる。オブジェクトのダウンロードはここから。
PovRay はラインコマンドを使って画像を作成する。個々のイメージを設定しそれぞれを描出する。Pov Ray のフロントエンドとして 3dPM、Giram、XPovRay、k3de などたくさんのプログラムが作られている。その中でも人気のあるのは Giram だ。
Blender は非常に優れたアプリケーションの一つだ。フリーでしかもマルチプラットフォーム対応で豊富な機能を誇るがインタフェースが若干弱い。Efnetやchatで意見や初心者用のヘルプなどが交換されている。チュートリアルも参考にしよう。
MindsEyeは GPL に基づいた 3D 開発プロジェクト。特徴はモジュラーデザイン、マルチシーン、マルチコンセプト、オブジェクト指向モデリング、ネットワークサポートなどでカーネルを念頭に置いている。現在のバージョンは0.5.36。ドキュメント、ニュースグループも参考にしてほしい。
次回は3Dプログラムでの作成、モデリング、レンダリング、さらにCADプログラムに関しても話そう。
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 で得られる。
今月の漫画 HelpDexをご覧になるにはここをクリックしてください。
アリアスは単なる文字列の置き換えだ。シェルは最初のコマンドをアリアスのリストと照合する。
$ 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!
Linux ボックス用のアプリケーションを開発するには、プロジェクトを立ち上げる。フィードバックを得るにはプロジェクトウェブサイトが必要で、このサイトが PHP、mySQL を使っていれば簡単に情報をフォームを通して修正できる。ダウンロードサイトへのリンク、ユーザ、開発協力者用のメーリングリスト、ウェブフォーラムなども必要だ。
規模の小さなプロジェクトにこれはきつい。開発者たちはどうしてこのような時間、サーバ、コストなどを賄っているのだろうか。その答えがSourceForgeにある。SourceForge はオープンソースプロジェクトにこれらすべてをフリーで提供している。SourceForge が提供するものは
SourceForge のスポンサーは VA Linux Systems だ。利用者に大きな義務は発生しない。目的はオープンソース開発者が開発に専念できる環境を提供すること。現在支援されているプロジェクトの数は非常に多い。そのカテゴリは次の通り。
これらの機能をフリーで提供しているのでプロジェクト数が多いのも当然だ。プロジェクトの第一号がSourceForgeであることで安心できるだろう。
前回はシェルスクリプトの基本とその仕組みを簡単に説明した。今回はループと条件分岐の説明です。通常繰り返しの動作をさせるには次のようなスクリプトを書きます。
#!/bin/bashfor n in ~/weekly/*.txt
do
ae $n
done
echo "Done."
または #!/bin/bashfor n in ~/weekly/*.txt; do ae $n; done; echo "Done."
二つとも同じ動作をしますが最初の例のほうが読みやすい。読みやすいコードを書くにはそれぞれのレベルでインデントをすることです。上記の例では "for" ループを使っています。"for" ループはリストのアイテムが存在する間動作を繰り返し、リストの中身がなければコントロールを "done" の次の行に移します。"for" ループである回数同じことを繰り返す場合回数が大きいと入力が増えるので "seq" を使います。次の例を見ればお分かりでしょう。 #!/bin/bashfor i in 1 2 3 4 5 6 7 8 9 10 11 12
13 14 15
do
echo $i
done
"seq" を使った例
#!/bin/bashfor i in $(seq 15)
do
echo $i
done
繰り返しではなくある条件の下で動作をコントロールする場合には "while; do; done" を使います。
#!/bin/bashpppd 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/bashcase $(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/bashif [ -z $1 ]
if [ -n $2 ]
bkup my_new_program.c c
bkup filter.awk awk
bkup filter.awk filters
bkup Letter_to_Mom.txt docs
シェルスクリプトを書く場合には十分注意しよう。一瞬でシステム全体を破壊する力があるということを忘れないように。"root" でログインしている場合には危険がありそうなシェルスクリプトを実行するのは避けよう。
loop と 条件分岐は非常に良く使われる方法です。これからも頻繁に出現するでしょう。次回はシェルスクリプトの中で使われるツールに焦点を当ててみます。
別の言語での名前の知人にレターを書く場合を想像してください。デンマーク語では ø がポルトガル語では ñ などが使われます。この記事は特別なパッケージをインストールすることなく国際的なキーボードに対応しようというものです。bash_profile や XF86Config の修正なしでスペイン語、イタリア語、スロバキア語、チェコ語、ポーランド語、スロベニア語、クロアチア語、デンマーク語、ドイツ語、フランス語、フィンランド語、ノルウェイ語、エストニア語、ラトビア語など多数の言語に対応できます。
最大の問題はKDEではインターナショナルキーボードがうまく動作しないということです。いくつかの設定ファイルを修正すれば可能です。いろいろ調べてみましたが適当なソリューションは見つかりませんでした。.xmodmap か *.kimap を修正すれば可能です。
具体的にKDEで .Xmodmap と *.kimap を修正して言語を変える方法が述べられています。実際に KDE を使用していて日本語以外のキーボードを使用したいという人にはいいかもしれません。
仕事中に家のコンピュータにアクセスしたくなることがあります。なるべく費用のかからない56K モデムを使って PPP 接続で試してみます。このソリューションにはいくつかのスクリプトと cronjob が必要です。設定がうまくいけば自動的にインターネットに接続し、ISP から得られたローカル IP アドレスをメールで送ります。必要なことは
ppp-on スクリプトを修正して ISP の電話番号、アカウント、パスワードを入れる。モデムのデバイス名と速度も忘れずに。スクリプトの内容は次のようになります。
|
| 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 ボックスにアクセスすることができる。
Linux と マイクロソフト OS との間で浮動小数点を計算するプログラムの結果がどう違うか検証します。プログラム言語はパスカル、C、Java を使います。プラットフォームはインテルです。
パスカルでは80ビットの浮動小数点は次のように使用される。