10288 lines
440 KiB
HTML
10288 lines
440 KiB
HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
|
|
<HTML>
|
|
<HEAD>
|
|
<TITLE> Linux Gazette Index Page </TITLE>
|
|
<META NAME="robots" CONTENT="noindex, nofollow">
|
|
</HEAD>
|
|
|
|
<BODY BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#A000A0"
|
|
ALINK="#FF0000" >
|
|
<center><H2><IMG SRC="../gx/newlogo.jpg"
|
|
ALT="Linux Gazette... making Linux just a little more fun!">
|
|
</H2>
|
|
|
|
<H5>Copyright © 1996-98 Specialized Systems Consultants, Inc.</H5>
|
|
</center>
|
|
|
|
<P> <HR> <P>
|
|
<!--==================================================================-->
|
|
<center>
|
|
<H1>Welcome to Linux Gazette!<img src="../gx/tm.gif" alt="(tm)"></H1>
|
|
</center>
|
|
<P> <HR> <P>
|
|
<!--==================================================================-->
|
|
<H1>Published by:</H1>
|
|
<center>
|
|
<H1><A HREF="http://www.ssc.com/lj/">
|
|
<img src="../gx/ljlogo.gif" alt="Linux Journal"></A></H1>
|
|
</center>
|
|
<P><HR> <P>
|
|
<H1>Sponsored by:</H1>
|
|
<table>
|
|
<tr>
|
|
<td><H1><A HREF="http://www.infomagic.com/"><img ALIGN="bottom" HSPACE="70"
|
|
src=../gx/infologo.gif alt="InfoMagic"></A></H1></td>
|
|
<td>
|
|
<H1><A HREF="http://www.suse.com/"><img ALIGN="bottom" src=../gx/suse.gif alt="S.u.S.E."></A></H1></td>
|
|
<td>
|
|
<H1><A HREF="http://www.redhat.com/"><img HSPACE="70" src=../gx/redhat.gif alt="Red Hat"></A></H1></td>
|
|
</tr>
|
|
</table>
|
|
|
|
<P>
|
|
Our sponsors make financial contributions toward the costs of
|
|
publishing <I>Linux Gazette</I>. If you would like to become a sponsor
|
|
of <I>LG</I>, e-mail us at <A
|
|
HREF="mailto:sponsor@ssc.com">sponsor@ssc.com</A>.
|
|
|
|
<P>
|
|
<I>Linux Gazette</I> is a non-commercial, freely available publication and will
|
|
remain that way. Show your support by using the products of our sponsors
|
|
and publisher.
|
|
|
|
|
|
<P> <HR> <P>
|
|
<!--=================================================================-->
|
|
<H1 align="center">Table of Contents <BR>April 1998 Issue #27</H1>
|
|
|
|
<P> <HR> <P>
|
|
<table><tr>
|
|
<td rowspan=4>
|
|
<UL>
|
|
<LI><A HREF="../index.html">The Front Page</A>
|
|
<LI><A HREF="./lg_mail27.html">The MailBag</A>
|
|
<ul>
|
|
<li><a HREF="./lg_mail27.html#help">Help Wanted</a>
|
|
<li><a HREF="./lg_mail27.html#gen">General Mail</a>
|
|
</ul>
|
|
<LI><A HREF="./lg_tips27.html">More 2 Cent Tips</A>
|
|
<ul>
|
|
<li><a HREF="./lg_tips27.html#shane">Re: Help Wanted LaserJet 4L</a>
|
|
<li><a HREF="./lg_tips27.html#fraser">StarOffice 4/Ghostscript</a>
|
|
<li><a HREF="./lg_tips27.html#rc">Linux and VAX 3400 and 3300</a>
|
|
<li><a HREF="./lg_tips27.html#caolin">xdm with pictures</a>
|
|
<li><a HREF="./lg_tips27.html#caolin2">Re: Help-Installing Linux on a FAT32</A>
|
|
<li><a HREF="./lg_tips27.html#john">Regarding Easter Eggs in Netscape etc.</a>
|
|
<li><a HREF="./lg_tips27.html#craige">Re: Changing XDM windows</a>
|
|
<li><a HREF="./lg_tips27.html#serge">Nice xdm and Linux PPC</a>
|
|
<li><a HREF="./lg_tips27.html#roland">Re: Help with Sound Card</a>
|
|
<li><a HREF="./lg_tips27.html#tips">Lots More</a>
|
|
</ul>
|
|
<LI><A HREF="./lg_bytes27.html">News Bytes</A>
|
|
<ul>
|
|
<li><a HREF="./lg_bytes27.html#general">News in General</a>
|
|
<li><a HREF="./lg_bytes27.html#software">Software Announcements</a>
|
|
</ul>
|
|
<LI><A HREF="./lg_answer27.html">The Answer Guy</A>, by James T. Dennis
|
|
<ul>
|
|
<li><a HREF="./lg_answer27.html#mccluan">Regarding Compile Errors with
|
|
Tripwire 1.2</a>
|
|
<li><a HREF="./lg_answer27.html#karsh">Applix Spreadsheet ELF Macro
|
|
Language</a>
|
|
<li><a HREF="./lg_answer27.html#geene">Answer Guy Issue 18 -- Procmail Spam
|
|
Filter</a>
|
|
<li><a HREF="./lg_answer27.html#geene2">Great Procmail Article</a>
|
|
<li><a HREF="./lg_answer27.html#sindona">Linux Cluster Configuration</a>
|
|
<li><a HREF="./lg_answer27.html#holloway">IP Masquerading/Proxy?</a>
|
|
</ul>
|
|
<LI><A HREF="./kodis.html">Autologin with mingetty</a>, by John Kodis
|
|
<LI><A HREF="./little.html">Checking Out SPARC-Linux with SLXT</a>, by
|
|
John Little
|
|
<LI><A HREF="./marsden.html">EMACSulation</a>, by Eric Marsden
|
|
<LI><A HREF="./wagle.html">Evangelism: A Unix Bigot and Linux Advocate's
|
|
Spewings</a>, by David Wagle
|
|
<LI><A HREF="./jeffery.html">A Glimpse of Icon</a>, by Clinton Jeffery and
|
|
Shamim Mohamed
|
|
<LI><A HREF="./gm.html">Graphics Muse</A>, by Michael J. Hammel
|
|
<LI><A HREF="./dibona.html">Linus Speaks at SVLUG Meeting</a>, by Chris
|
|
DiBona
|
|
<LI><A HREF="./adelman.html">Markup Languages and lout2</a>, by Murray Adelman
|
|
<LI>New Release Reviews, by Larry Ayers
|
|
<ul>
|
|
<LI><A HREF="./ayers1.html">Using the Flame Plug-In for Backgrounds</A>, by Larry Ayers
|
|
<LI><A HREF="./ayers2.html">The Maxwell Word-Processor</A>, by Larry Ayers
|
|
<LI><A HREF="./ayers3.html">WordNet: A Fast and Flexible Word Database</A>, by Larry Ayers
|
|
<LI><A HREF="./ayers4.html">Words Within Words, New Phrases From Old</A>, by Larry Ayers
|
|
<LI><A HREF="./ayers5.html">Comparing WordPerfect and LyX</A>, by Larry Ayers
|
|
</ul>
|
|
<LI><A HREF="./mueller.html">Pattern Matching with Regular Expressions in
|
|
C++</a>, by Oliver Müller
|
|
<LI><A HREF="./petersen.html">Book Review: Web Security Sourcebook</a>, by
|
|
Kirk Petersen
|
|
<LI><A HREF="./wkndmech.html">Weekend Mechanic</A>, by John
|
|
Fisk
|
|
<LI><A HREF="./kaszeta.html">X Window System Terminals</a>, by Rich Kaszeta
|
|
<LI><A HREF="./lg_backpage27.html">The Back Page</A>
|
|
<ul>
|
|
<li><a HREF="./lg_backpage27.html#authors">About This Month's Authors</a>
|
|
<li><a HREF="./lg_backpage27.html#notlinux">Not Linux</a>
|
|
</UL>
|
|
</UL>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td align=center>
|
|
<A HREF="linuxexpo.html">
|
|
<img src="../gx/linuxexpo.gif" border=0 alt="">
|
|
</a>
|
|
</td>
|
|
</tr><tr>
|
|
<td align=center>
|
|
<A HREF="lg_answer27.html">
|
|
<img src="../gx/wizard2.gif" border=0 alt="">
|
|
</a><BR>
|
|
<A HREF="lg_answer27.html"><i>The Answer Guy</i></a>
|
|
</td>
|
|
</tr><tr>
|
|
<td align=center>
|
|
<A HREF="gm.html">
|
|
<IMG SRC="../gx/hammel/banner-3.gif" border=0 alt="">
|
|
</a>
|
|
</td>
|
|
</tr><tr>
|
|
<td align=center>
|
|
<A HREF="./wkndmech.html">
|
|
<img src="../gx/fisk/mechanic.gif" border=0 alt=""></A><BR>
|
|
<A HREF="./wkndmech.html"><I>The Weekend Mechanic</I></a>
|
|
</td>
|
|
</tr><tr>
|
|
</table>
|
|
|
|
<P> <HR><P>
|
|
|
|
<!--=============================================================-->
|
|
<A HREF="./issue27.txt">TWDT 1 (text)</A><BR>
|
|
<A HREF="./issue27.html">TWDT 2 (HTML)</A><BR>
|
|
are files containing the entire issue: one in text format, one in HTML.
|
|
They are provided
|
|
strictly as a way to save the contents as one file for later printing in
|
|
the format of your choice;
|
|
there is no guarantee of working links in the HTML version.
|
|
|
|
<!--=============================================================-->
|
|
<P> <HR><P>
|
|
Got any <I>great</I> ideas for improvements? Send your
|
|
<A HREF="mailto:gazette@ssc.com">comments, criticisms, suggestions
|
|
and ideas.</A>
|
|
|
|
<P><hr><p>
|
|
This page written and maintained by the Editor of <I>Linux Gazette</I>,
|
|
<A HREF="mailto: gazette@ssc.com"> gazette@ssc.com</A>
|
|
|
|
<P> <HR> <P>
|
|
<H4>"Linux Gazette...<I>making Linux just a little more fun!</I>"</H4>
|
|
<HR>
|
|
<center>
|
|
<table width="100%" cellpadding=7><tr><td>
|
|
<H2><a NAME="mail"><IMG SRC="../gx/mailbox.gif" ALIGN=MIDDLE ALT=" ">
|
|
The Mailbag!</a> </H2>
|
|
Write the Gazette at <A HREF="mailto:gazette@ssc.com"> gazette@ssc.com</A>
|
|
</td><td>
|
|
<H3>Contents:</H3>
|
|
<ul>
|
|
<li><a HREF="./lg_mail27.html#help">Help Wanted -- Article Ideas</a>
|
|
<li><a HREF="./lg_mail27.html#gen">General Mail</a>
|
|
</ul>
|
|
</td></tr></table>
|
|
</center>
|
|
|
|
<a name="help"></a>
|
|
<p><hr><p>
|
|
<!-- =================================================================== -->
|
|
<center><H3> Help Wanted -- Article Ideas </H3></center>
|
|
|
|
<P> <HR> <P>
|
|
<!--====================================================================-->
|
|
<IMG ALT=" " SRC="../gx/envelope.gif">
|
|
Date: Mon, 02 Mar 1998 08:48:14 +0100<BR>
|
|
From: Per Wigren, <A HREF="mailto:wigren@mail.org">
|
|
wigren@mail.org</A> <BR>
|
|
Subject: <B>Linux and CDE</B>
|
|
<P>
|
|
Hi! I want to know what makes XiG's and TriTeal's CDE
|
|
different, other than price!
|
|
Maybe a comparison could be something for <I>Linux Gazette</I>...
|
|
<P>
|
|
Regards, Per Wigren
|
|
|
|
<P> <HR> <P>
|
|
<!--====================================================================-->
|
|
<IMG ALT=" " SRC="../gx/envelope.gif">
|
|
Date: Mon, 2 Mar 1998 18:56:35 +0100 (MET)<BR>
|
|
From: Scud, <A HREF="mailto:scud@zeus.ho.tranas.se">
|
|
scud@zeus.ho.tranas.se</A> <BR>
|
|
Subject: <B>article idea</B>
|
|
<P>
|
|
I wonder if you can write some article about linux
|
|
on non x86 platforms and how long linux develelopment
|
|
has come on those platforms?
|
|
<P>
|
|
emir
|
|
|
|
<P> <HR> <P>
|
|
<!--====================================================================-->
|
|
<IMG ALT=" " SRC="../gx/envelope.gif">
|
|
Date: Sat, 28 Feb 1998 18:47:55 +0100<BR>
|
|
From: Grzegorz Leszczynski, <A HREF="mailto:rexus@polbox.com">
|
|
rexus@polbox.com</A> <BR>
|
|
Subject: <B>Hurricane</B>
|
|
<P>
|
|
I would be very grateful if you could help me with my problem.
|
|
I can't install Linux Red Hat Hurricane 5.0.
|
|
After choosing the partitions to Linux native and for swap Linux,
|
|
and after choosing applications to install program says
|
|
that there is an error:
|
|
<pre>mount failed: invalid argument</pre>
|
|
After than i must return to menu and I don't know what to do.
|
|
I look forward from hearings from you
|
|
<P>
|
|
Rafal Leszczynski, POLAND
|
|
|
|
<P> <HR> <P>
|
|
<!--====================================================================-->
|
|
<IMG ALT=" " SRC="../gx/envelope.gif">
|
|
Date: Sun, 1 Mar 1998 14:11:18 -0500 (EST)<BR>
|
|
From: N. Lucent, <A HREF="mailto:nlucent@mindspring.com">
|
|
nlucent@mindspring.com</A> <BR>
|
|
Subject: <B>Linux on a laptop</B>
|
|
<P>
|
|
I finally convinced my girlfriend to make the switch to Linux from windows
|
|
after she suffered numerous stability problems (big surprise) She
|
|
currently has an HP Omni-book 600CT, I fdisked her windows partition, and
|
|
when I ran the install boot disk (for both Red Hat and Slackware) it says
|
|
floppy 1.44m (I assume this is from the kernel) Then it says no floppy
|
|
controller found, and just keeps reading the boot disk. Is there anyway
|
|
that I can force the detection of the floppy? (external floppy drive)
|
|
I found a WWW page about installing Linux on that notebook, but What it
|
|
said to do didn't work. Does anyone have any suggestions?
|
|
|
|
<P> <HR> <P>
|
|
<!--====================================================================-->
|
|
<IMG ALT=" " SRC="../gx/envelope.gif">
|
|
Date: Thu, 5 Mar 1998 03:09:06 EST<BR>
|
|
From: Mktnc, <A HREF="mailto:Mktnc@aol.com">Mktnc@aol.com</A> <BR>
|
|
Subject: <B>Matrox Millenium II</B>
|
|
<P>
|
|
Anyone using the Matrox Millenium II graphics board with greater than 4 Meg
|
|
ram with Xfree86? The XFree86 home page is somewhat dated on this card.
|
|
<P>
|
|
Also, anyone running a Voodoo 2 accelerator graphix card with Linux?
|
|
<P>
|
|
Anyone using nasm (Netwide Assembler) for those hard to reach places, under
|
|
Linux?
|
|
<P>
|
|
Thanks - Nick
|
|
|
|
<P> <HR> <P>
|
|
<!--====================================================================-->
|
|
<IMG ALT=" " SRC="../gx/envelope.gif">
|
|
Date: Wed, 04 Mar 1998 09:05:00 -0500<BR>
|
|
From: Dr. Scott Searcy, <A HREF="mailto:searcys@baydenoc.cc.mi.us">
|
|
searcys@baydenoc.cc.mi.us</A> <BR>
|
|
Subject: <B>X-term for MS-Windows </B>
|
|
<P>
|
|
Does anyone make an X-windows terminal emulator that will run under
|
|
MS-Windows. I was hoping to find such a program so that I could use X
|
|
via a network connection from various MS-windows machines that I have to
|
|
use.
|
|
<P>
|
|
Dr. Scott Searcy
|
|
|
|
<P> <HR> <P>
|
|
<!--====================================================================-->
|
|
<IMG ALT=" " SRC="../gx/envelope.gif">
|
|
Date: Thu, 05 Mar 1998 23:38:29 -0700<BR>
|
|
From: Elvis Chow, <A HREF="mailto:elvis3@chowtech.cuug.ab.ca">
|
|
elvis3@chowtech.cuug.ab.ca</A> <BR>
|
|
Subject: <B>Hylafax printing filter?</B>
|
|
<P>
|
|
I finally got Hylafax running on a Slackware distribution. Works
|
|
great. What I need to do now is to get Applixware to print a doc
|
|
directly to it so it can automatically fax it to a predetermined
|
|
number. Is there a way of doing this?
|
|
<P>
|
|
Great work on the Gazette! Best source of practical tips I've run
|
|
across in a long time. Keep it up!!
|
|
<P>
|
|
Elvis Chow elvis@chowtech.cuug.ab.ca
|
|
|
|
<P> <HR> <P>
|
|
<!--====================================================================-->
|
|
<IMG ALT=" " SRC="../gx/envelope.gif">
|
|
Date: Fri, 06 Mar 1998 18:42:43 +0100<BR>
|
|
From: Stefano Stracuzzi, <A HREF="mailto:stracca@comune.modena.it">
|
|
stracca@comune.modena.it</A> <BR>
|
|
Subject: <B>PPP with Linux</B>
|
|
<P>
|
|
I'm a newbie in Linux and I'd like to know
|
|
how I can configure my connection to my
|
|
Internet service provider with my Red Hat 5.0!
|
|
<P>
|
|
My modem is internal and it is configured to on the
|
|
cua1
|
|
<P>
|
|
Thank You Very Much<BR>
|
|
Stefano Stracuzzi
|
|
|
|
<P> <HR> <P>
|
|
<!--====================================================================-->
|
|
<IMG ALT=" " SRC="../gx/envelope.gif">
|
|
Date: Mon, 9 Mar 1998 10:43:30 -0800<BR>
|
|
From: jean-francois helie, <A HREF="mailto:jfhelie@netrover.com">
|
|
jfhelie@netrover.com</A> <BR>
|
|
Subject: <B>Help Wanted!</B>
|
|
<P>
|
|
I am a student at CEGEP T.R. I have a year end project. My project
|
|
is to installed a Linux based router and a IP generator for 50 PC. I have
|
|
some informations about the router but i don't have any info about IP
|
|
generator.
|
|
<P>
|
|
Thank you for your support.<BR>
|
|
Jean-Francois Helie
|
|
|
|
<P> <HR> <P>
|
|
<!--====================================================================-->
|
|
<IMG ALT=" " SRC="../gx/envelope.gif">
|
|
Date: Wed, 11 Mar 1998 15:51:30 +1000<BR>
|
|
From: Ken Woodward, <A HREF="mailto:ken@rich.com.au">ken@rich.com.au</A>
|
|
<BR>
|
|
Subject: <B>Linux for Amiga</B>
|
|
<P>
|
|
Do you know if it is possible to get a CD distribution of Linux to suit
|
|
running on an Amiga 3000? It is currently running AmigaUnix, and the Red
|
|
Hat version 5 copy I purchased installed flawlessly on my PC.
|
|
<P>
|
|
Can I get the same for the old Amiga?
|
|
<P>
|
|
Thanks<BR>
|
|
Ken
|
|
|
|
<P> <HR> <P>
|
|
<!--====================================================================-->
|
|
<IMG ALT=" " SRC="../gx/envelope.gif">
|
|
Date: Wed, 11 Mar 1998 12:58:10 -0800<BR>
|
|
From: Kevin Long, <A HREF="mailto:kevjlong@ix.netcom.com">
|
|
kevjlong@ix.netcom.com</A> <BR>
|
|
Subject: <B>Samba Woes</B>
|
|
<P>
|
|
Here's my situation: I'm trying to set up my RH5 terrifically working
|
|
system to be a PDC equivalent in an NT workstation/95 network. Basically
|
|
we need to 'login' to the server, and then get access to 'shares'. I
|
|
tried using NFS as an alternative (with NFS maestro) but it doesn't
|
|
recognize Linux NFS. However...... I cannot get Samba to work AT ALL. In
|
|
fact, I have never seen it work. If you've got it working, please help
|
|
me - I can copy your installation configuration and tweak it, but I need
|
|
some success. I have plenty of NT, Novel, DOS/win hardware etc.
|
|
experience, and successfully use NFS exports between Linux machines, but
|
|
have got nowhere with Samba in a year of trying. Is it a hoax?
|
|
<P>
|
|
Kevin Long
|
|
|
|
<P> <HR> <P>
|
|
<!--====================================================================-->
|
|
<IMG ALT=" " SRC="../gx/envelope.gif">
|
|
Date: Thu, 12 Mar 1998 14:55:56 +0800<BR>
|
|
From: Jason Wong, <A HREF="mailto:jasonw@tntexpress.com.hk">
|
|
jasonw@tntexpress.com.hk</A> <BR>
|
|
Subject: <B>Red hat 5.0 with NT Server 4</B>
|
|
<P>
|
|
I am new to Linux, and wish to set it up at home. The problem I have
|
|
is:
|
|
<P>
|
|
I wish to run Windows NT + Windows 95 + DOS + Linux. How to do this?
|
|
I can set it up with Linux & Windows 95/DOS, but how to make Linux
|
|
co-exist with NT server4?? many thanks!!
|
|
<blockquote> <I>
|
|
(See the Samba page, http://samba.anu.edu.au/samba/. It should be just what
|
|
you need. --Editor)</I> </blockquote>
|
|
|
|
<P> <HR> <P>
|
|
<!--====================================================================-->
|
|
<IMG ALT=" " SRC="../gx/envelope.gif">
|
|
Date: Fri, 13 Mar 1998 10:18:33 +0100 (MET)<BR>
|
|
From: Fabio Gregoroni, <A HREF="mailto:gregoron@CsR.UniBo.IT">
|
|
gregoron@CsR.UniBo.IT</A> <BR>
|
|
Subject: <B>Driver For Scanner</B>
|
|
<P>
|
|
I have to write a driver for a plain scanner on the parallel port.
|
|
I have following scanners:
|
|
<ol>
|
|
<li>PRIMAX 4800 COLORADO DIRECT
|
|
<li>PLUSTEK 4830P
|
|
</ol>
|
|
I don't need the driver already made, but I need only the transfer
|
|
protocol documentation ( what I must send and receive ).
|
|
Can Someone help me ?
|
|
<P>
|
|
Thanks.
|
|
|
|
<P> <HR> <P>
|
|
<!--====================================================================-->
|
|
<IMG ALT=" " SRC="../gx/envelope.gif">
|
|
Date: Wed, 04 Mar 1998 04:53:01 +0800<BR>
|
|
From: ahyeop, <A HREF="mailto:ahyeop4@tm.net.my">ahyeop4@tm.net.my</A>
|
|
Subject: <B>X-Windows too Big!</B>
|
|
<P>
|
|
Lastly I successful install the X-windows for my Linux box using generic
|
|
chip set or
|
|
Oak's OTI067 (8 physical RAM is quite slow though..). But the windows
|
|
are too BIG.
|
|
I tried modified its XF86Config but it's not working (besides I really
|
|
doesn't know
|
|
how to modified it correctly)
|
|
<pre>
|
|
My box spec : processor: 486 DX2 60MHz.
|
|
RAM: 8 simm ram
|
|
Swap memory: 16 swap ram (I think so...)
|
|
memory: 256 Kbytes
|
|
RAMDAC: Generic 8-bit pseudo-color DAC (what it
|
|
mean ?)
|
|
Linux: Linux ver. 2.0.27 (Slackware 96)
|
|
monitor: SVGA monitor (SSVM's 220-240V-50MHz
|
|
500mA)
|
|
video card: Oak's OTI067
|
|
mouse: MS Mouse
|
|
Keyboard: 101-key
|
|
</pre>
|
|
Can anybody help me with problem ? Thank in advance :-)
|
|
<P>
|
|
Ahyeop, Perak, Malaysia
|
|
|
|
<P> <HR> <P>
|
|
<!--====================================================================-->
|
|
<IMG ALT=" " SRC="../gx/envelope.gif">
|
|
Date: Wed, 25 Mar 1998 11:25:32 -0100<BR>
|
|
From: BoD, <A HREF="mailto:M39998@lazaro.info-ab.uclm.es">
|
|
M39998@lazaro.info-ab.uclm.es</A> <BR>
|
|
Subject: <B>AGP card on Linux</B>
|
|
<P>
|
|
I like to buy a AGP card based in the nVIDIA RIVA 128 chipset.
|
|
Can i use it on my Linux RH 5.0 system with Xfree86 3.3.1?
|
|
<P>
|
|
Thanks
|
|
|
|
<P> <HR> <P>
|
|
<!--====================================================================-->
|
|
<IMG ALT=" " SRC="../gx/envelope.gif">
|
|
Date: Thu, 26 Mar 1998 11:41:11 -0800 (PST)<BR>
|
|
From: Lee, <A HREF="mailto:cit@itl.net">cit@itl.net</A> <BR>
|
|
Subject: <B>Re: Linux Gazette</B>
|
|
<P>
|
|
I've recently been hit by the superforker problem. Someone mentioned that the LG had a script to fix the problem (by removing the directories in /tmp)
|
|
Do you have such a script? I haven't been able to locate it, and I currently have a ton of directories in /tmp that rm won't remove because the filename is too long.
|
|
<P>
|
|
Please respond quickly while I still have some hair left,<BR>
|
|
Lee//Cit
|
|
<blockquote> <I>
|
|
(Sorry, I don't remember all the articles we've had, but superforker doesn't
|
|
sound familiar.
|
|
However, in issue 18 and 20, Guy Geens has articles about cleaning up the
|
|
/tmp directory. Perhaps these will be of help to you. --Editor) </I>
|
|
</blockquote>
|
|
|
|
<P> <HR> <P>
|
|
<!--====================================================================-->
|
|
<IMG ALT=" " SRC="../gx/envelope.gif">
|
|
Date: Fri, 27 Mar 1998 09:06:39 +0100 <BR>
|
|
From: javier ballesteros, <A HREF="mailto:uei0372195900@eurociber.es">
|
|
uei0372195900@eurociber.es</A> <BR>
|
|
Subject: <B>modem for Linux</B>
|
|
<P>
|
|
I'm a student of telecommunications in the University of Alcala de
|
|
Henares in Spain, my computer is a Pentium 233 MHz and I have installed
|
|
Red Hat Linux 5.0, all works properly , but I have a little problem with
|
|
my modem: Linux can't recognize my modem. My modem is a HSP 336 DELUXE
|
|
(I know that is very bad but is the only I have). So, is there any
|
|
possible to install properly my modem? , exist any driver for this
|
|
specific modem? .Please send me some information or any advice, if you
|
|
can I will be pleasant.
|
|
<P>
|
|
See you!....
|
|
|
|
<a name="gen"></a>
|
|
<P> <hr> <P>
|
|
<!-- =================================================================== -->
|
|
<center><H3> General Mail </H3></center>
|
|
|
|
<P> <HR> <P>
|
|
<!--====================================================================-->
|
|
<IMG ALT=" " SRC="../gx/envelope.gif">
|
|
Date: Fri, 13 Mar 1998 00:39:33 -0700 (MST)<BR>
|
|
From: Michael J. Hammel, <A HREF="mailto:mjhammel@csn.net">
|
|
mjhammel@csn.net</A> <BR>
|
|
Subject: <B>Late Night Radio Buzz</B>
|
|
<P>
|
|
I'm sitting here listening to C|Net radios
|
|
coverage of Internet World. Dan Shafer of Builder.com talked at length
|
|
about how he (and someone named Desmond) are going to do some
|
|
serious investigation into what alternative OS's there are - and
|
|
specifically they are looking into Linux. They mentioned Red Hat and
|
|
Caldera, that there were lots of applications available and how the Linux
|
|
community are very much the "just do it" community. All in all, very
|
|
positive exposure.
|
|
<P>
|
|
Go to http://www.news.com/Radio/Features/0,155,154,0.html and click on the
|
|
4:00 CNET Radio Late Update (where it says "Dan Shafer of Builder.com:
|
|
What's Hot?"). Its a RealAudio interview and you'll have to go about 1/2
|
|
way through before they start the Linux discussion.
|
|
<P>
|
|
Dan Shafer said they would be writing up the Linux results they came up
|
|
with in the BuilderBuzz section of Builder.com (http://builder.com). I
|
|
just checked and there is nothing there yet - I think he said it was going
|
|
to start next week. Anyway, I sent him email offering to assist in anyway
|
|
I could. If I get a response I'll try to get more details on where the
|
|
info will be located when it becomes available.
|
|
<P>
|
|
C|Net would be wonderful exposure for Linux.
|
|
<P>
|
|
Just thought I'd pass this along.
|
|
Michael J. Hammel |
|
|
|
|
<P> <HR> <P>
|
|
<!--====================================================================-->
|
|
<IMG ALT=" " SRC="../gx/envelope.gif">
|
|
Date: Mon, 02 Mar 1998 23:22:14 +0500<BR>
|
|
From: Larry Taranenko, <A HREF="mailto:larry@partners.chel.su">
|
|
larry@partners.chel.su</A> <BR>
|
|
Subject: <B> Re: Linux Gazette #26</B>
|
|
<p>
|
|
You know, we are here interesting in Linux too. But we have much troubles
|
|
with our unstable connection to the World - that is why I maintained LG
|
|
mirror in the heart (geographically we live in the center of RUSSIA) of
|
|
my country. And I have many many friends in my town (apr. 2,5 mln city
|
|
named Chelyabinsk) who are crazy about Linux as I am. Mostly we use
|
|
Debian. I like your publications - and think that a little note
|
|
somewhere there about Linuxoids in RUSSIA will be, maybe, interesting to
|
|
somebody. See in future.
|
|
<p>
|
|
I hope you understand me in right manner, against my silly English...<BR>
|
|
God bless you and Linus, <BR>
|
|
Have a nice day!<BR>
|
|
Ta-ta
|
|
<blockquote> <I>
|
|
(I think I understand you fine. Why don't you write up an article for us
|
|
about Linux in Russia? --Editor) </I> </blockquote>
|
|
|
|
<P> <HR> <P>
|
|
<!--====================================================================-->
|
|
<IMG ALT=" " SRC="../gx/envelope.gif">
|
|
Date: Fri, 27 Mar 1998 03:49:43 -0500 (EST)<BR>
|
|
From: <A HREF="mailto:zaeb@8b28m2.net">zaeb@8b28m2.net</A> <BR>
|
|
Subject: <B>about filedudes</B>
|
|
<p>
|
|
hey, found this real fast download site www.filedudes.com,
|
|
check it out!
|
|
|
|
<P> <HR> <P>
|
|
<!--====================================================================-->
|
|
<IMG ALT=" " SRC="../gx/envelope.gif">
|
|
Date: Sat, 07 Mar 1998 22:51:10 -0800<BR>
|
|
From: Ken Leyba, <A HREF="mailto:kleyba@pacbell.net">kleyba@pacbell.net</A>
|
|
<BR>
|
|
Subject: <B>$0.02 Tip</B>
|
|
<p>
|
|
In issue 26 of the Linux Gazette there is a two cent tip that refers to
|
|
the VAX 3400/3300's as MIPS 3000 boxes. These are indeed VAX
|
|
processors as Digital (DEC) named MIPS boxes as DECStations/DECServers
|
|
and VAX boxes as VAXStations/VAXServers. I worked for Digital for over
|
|
10 years in Multi-Vendor Customer Services and currently use a VAX 3300
|
|
running Ultrix, DEC's BSD based Unix for the VAX CPU.
|
|
<p>
|
|
Ken Leyba
|
|
|
|
<P> <HR> <P>
|
|
<!--====================================================================-->
|
|
<IMG ALT=" " SRC="../gx/envelope.gif">
|
|
Date: Mon, 9 Mar 1998 17:09:28 -0500<BR>
|
|
From: Tunney, Sue (IDS), <A
|
|
HREF="mailto:STunney@ahcpr.gov">STunney@ahcpr.gov</A><BR>
|
|
Subject: <B>Yes, Grammar does count</B>
|
|
<p>
|
|
I was so pleased to read that *someone* else out there is as aggravated
|
|
as I am by the continual misuse of the apostrophe in web pages and
|
|
e-mails by obvious native-born American English speakers. And for
|
|
anyone who says, "What's the big deal? Doesn't everyone know what I
|
|
mean?", let this old fogey respond:
|
|
<p>
|
|
Does your computer understand what you mean when you make an error
|
|
writing code? Doesn't it matter then? If you can't write proper English
|
|
grammar and spell correctly, what makes you so sure that your computer
|
|
code is correct? And if you want to spread the good news about Linux, it
|
|
seems obvious that we will get more attention, and the right kind, if we
|
|
take the time to write properly. I'm often impressed by how hard the
|
|
"foreign" letter writers work to make their point clear when they write
|
|
to LG, often apologizing for their poor English; yet they often do
|
|
better than us "natives."
|
|
<p>
|
|
Mike, you are absolutely right, and I thank you for saying it. I would
|
|
also like to eliminate the so-called word "alot" as *there is no such
|
|
word* (but note that the next letter after Mike's used it. Oh, well...)
|
|
. If you can't drag out a dictionary, check it out on line; there are
|
|
lots of fine dictionaries out there.
|
|
|
|
<P> <HR> <P>
|
|
<!--====================================================================-->
|
|
<IMG ALT=" " SRC="../gx/envelope.gif">
|
|
Date: Thu, 12 Mar 1998 13:24:03 -0800<BR>
|
|
From: Rich Drewes, <A HREF="mailto:drewes@interstice.com">
|
|
drewes@interstice.com</A> <BR>
|
|
Subject: <B>Linux market share (news tidbit)</B>
|
|
<p>
|
|
I run an ISP that hosts a variety of customer-owned domains, most not
|
|
even specifically computer related. I recently did an analysis of the
|
|
agent_log files to find out how popular Linux really is as a client OS
|
|
for ordinary users who access the ordinary web pages. The results are
|
|
at:
|
|
<p>
|
|
http://www.interstice.com/~drewes/linuxcount/main.html
|
|
<p>
|
|
One interesting factoid: Linux now appears to be the #2 most popular
|
|
Unix OS client!
|
|
<p>
|
|
I enjoy the LG. Thanks for the work.<BR>
|
|
Rich
|
|
|
|
<P> <HR> <P>
|
|
<!--====================================================================-->
|
|
<IMG ALT=" " SRC="../gx/envelope.gif">
|
|
Date: Thu, 12 Mar 1998 21:38:36 -0500 (EST)<BR>
|
|
From: Tim Gray, <A
|
|
HREF="mailto:timgray@lambdanet.com">timgray@lambdanet.com </A> <BR>
|
|
Subject: <B>Re: Getting Linux to the public...</B>
|
|
<p>
|
|
Milton, thank you for your response (see <A
|
|
HREF="./lg_tips27.html#milton">Tips</A>)... your's was the first that was genuinely
|
|
helpful, I have learned many things after posting that letter to the
|
|
Gazette, one of which is that the Linux user crowd is not free of the
|
|
type of person that enjoys flaming others, (I had secretly hoped that
|
|
Linux users were more helpful than resentful) But thank you! It helps
|
|
alot to fiddle with the settings and I was successful in getting 2 friends
|
|
converted to Linux, unfortunately there are several colleagues that alas
|
|
have monitors that are older than dirt itself and cannot go beyond
|
|
640X480 :-) But you have helped me migrate 2 windows users! thank you..
|
|
and thank you for your supportive letter.
|
|
<p>
|
|
Tim.
|
|
|
|
<P> <HR> <P>
|
|
<!--====================================================================-->
|
|
<IMG ALT=" " SRC="../gx/envelope.gif">
|
|
Date: Sun, 29 Mar 1998 16:09:41 -0500<BR>
|
|
From: NYACC AnyNix SIG comm mgr, <A HREF="mailto:sigunix@bzsys.dyn.ml.org">
|
|
sigunix@bzsys.dyn.ml.org</A>
|
|
Subject: <B>Re: Getting Linux to the public...</B>
|
|
<P>
|
|
Timothy D. Gray wrote regarding: Getting Linux to the public:
|
|
<blockquote> <I>
|
|
Has anyone noticed that when your friends see your neat-o Linux system
|
|
with the nice 17 inch monitor, high quality video card, and fast
|
|
computer that when they say, "Wow! that is nice, and you can do almost
|
|
anything on that!" you cringe with the fact that they are going to
|
|
want you to put it on their system?
|
|
</I> </blockquote>
|
|
I'm glad you have a 17inch monitor and "highquality" video card.
|
|
Myself, my 50-dollar video card and ten-year-old monitor let me run in
|
|
800x600 with 256 colors. I could get 1024x768 if the monitor allowed it.
|
|
I could get 64K colors (16-bit) if XFree86 allowed it. This is a
|
|
limitation not of the hardware, not exactly of Linux, but of the XFree86
|
|
people who don't wish to take the trouble to support the inexpensive
|
|
cards on the market.
|
|
<P>
|
|
My present (Oak) card seems to be limited to 8-bit color in any
|
|
event, my other (Cirrus Logic) card will support 16-bit and 24-bit
|
|
color, which if fully supported would allow me 64K colors at 800x600 or
|
|
16M colors at 640x480 (with a virtual 800x600 window).
|
|
<P>
|
|
The people at XFree86 (one of them a Cirrus employee) have, by their
|
|
own statement, chosen to spend their time on the latest and greatest
|
|
cards, with the older, cheaper cards going by the board.
|
|
<P>
|
|
I have tried and failed to get the necessary information from Cirrus
|
|
Logic to rewrite the XFree driver to better use the card.
|
|
<blockquote> <I>
|
|
Now mind you, I don't cringe on sharing the best O/S on the planet, In
|
|
fact I want everyone to use Linux.
|
|
It's just that almost all X windows software is written for 1024 X 768
|
|
or higher resolution video screens and that 99% of those wanting to
|
|
use Linux and X windows only have a 14" monitor that can barely get
|
|
past 640X480 at 256 colors.
|
|
</I> </blockquote>
|
|
See above. For a cost of no more than $50 they should be able to get a
|
|
1MB video card that will handle *much* better resolution.
|
|
<blockquote> <I>
|
|
I tried several times to get friends into Linux and X but to no avail
|
|
because the software developed for X is for those that have Gobs of
|
|
money for good video boards and humoungous monitors.
|
|
It's not a limitation of Linux or X, it that the software that is
|
|
developed for these platforms are by professionals or professional
|
|
users that can afford that new 21 inch monitor at the computer store.
|
|
</I> </blockquote>
|
|
You might try pushing different programs. My main problem (except with
|
|
viewers for Adobe file formats) is getting *multiple* windows on the
|
|
screen at once. Also, certain *types* of applications, by their very
|
|
nature, demand lots of screen real estate. An application of that sort
|
|
is going to be cramped on a small screen *regardless* of underlying OS
|
|
support. I simply avoid such applications until I can acquire a larger
|
|
screen (about $500, locally).
|
|
<blockquote> <I>
|
|
We as a group might want to see software scaled back to the 640X480
|
|
crowd.. then Linux would take the world by storm.. Until then It's
|
|
going to be limited to us pioneers and Scientists...
|
|
</I> </blockquote>
|
|
Actually, the *biggest* barrier to using Linux X Apps is that so many of
|
|
them are written using Motif! That's almost as bad as WinDoze.
|
|
<P>
|
|
--Buz Cory :)
|
|
|
|
<P> <hr> <P>
|
|
<!--================================================================-->
|
|
<center>Published in <i>Linux Gazette</i> Issue 27, April 1998</center>
|
|
<!--====================================================================-->
|
|
<P> <hr> <P>
|
|
<A HREF="./index.html"><IMG SRC="../gx/indexnew.gif" ALT="[ TABLE OF
|
|
CONTENTS ]"></A>
|
|
<A HREF="../index.html"><IMG SRC="../gx/homenew.gif" ALT="[ FRONT
|
|
PAGE ]"></A>
|
|
<A HREF="./lg_tips27.html"><IMG SRC="../gx/fwd.gif" ALT=" Next "></A>
|
|
<P>
|
|
<h5>This page written and maintained by the Editor of <I>Linux Gazette</I>,
|
|
<A HREF="mailto: gazette@ssc.com">gazette@ssc.com</A><BR>
|
|
Copyright © 1998 Specialized Systems Consultants, Inc. </H5>
|
|
<P>
|
|
<H4>"Linux Gazette...<I>making Linux just a little more fun!</I>"
|
|
</H4>
|
|
<P> <hr> <P>
|
|
|
|
<!-- QUICK TIPS SECTION ================================================== -->
|
|
<center>
|
|
<H1><A NAME="tips"><IMG ALIGN=MIDDLE ALT="" SRC="../gx/twocent.gif">
|
|
More 2¢ Tips!</A></H1> <BR>
|
|
Send Linux Tips and Tricks to <A HREF="mailto:gazette@ssc.com">
|
|
gazette@ssc.com
|
|
</A></center>
|
|
|
|
<p><hr><p>
|
|
<H3>Contents:</H3>
|
|
<ul>
|
|
<li><a HREF="./lg_tips27.html#shane">Re: Help Wanted LaserJet 4L</a>
|
|
<li><a HREF="./lg_tips27.html#fraser">StarOffice 4/Ghostscript</a>
|
|
<li><a HREF="./lg_tips27.html#rc">Linux and VAX 3400 and 3300</a>
|
|
<li><a HREF="./lg_tips27.html#caolin">xdm with Pictures</a>
|
|
<li><a HREF="./lg_tips27.html#caolin2">Re: Help-Installing Linux on a FAT32</a>
|
|
<li><a HREF="./lg_tips27.html#john">Regarding Easter Eggs in Netscape etc.</a>
|
|
<li><a HREF="./lg_tips27.html#craige">Re: Changing XDM windows</a>
|
|
<li><a HREF="./lg_tips27.html#serge">Nice xdm and Linux PPC</a>
|
|
<li><a HREF="./lg_tips27.html#roland">Re: Help with Sound Card</a>
|
|
<li><a HREF="./lg_tips27.html#friedhelm">Modline for TV</a>
|
|
<li><a HREF="./lg_tips27.html#ji">mpack 2 cent tip</a>
|
|
<li><a HREF="./lg_tips27.html#guido">shutdown and root</a>
|
|
<li><a HREF="./lg_tips27.html#allan">Perl Script 2 cent tip</a>
|
|
<li><a HREF="./lg_tips27.html#james">RE: my dual pentium</a>
|
|
<li><a HREF="./lg_tips27.html#james2">RE: Changing XDM windows</a>
|
|
<li><a HREF="./lg_tips27.html#james3">RE: HELP-Installing Linux on a FAT32
|
|
Drive</a>
|
|
<li><a HREF="./lg_tips27.html#gman">Re: Apache SSL extensions...</a>
|
|
<li><a HREF="./lg_tips27.html#brett">Reply to locate tip (LG 26)</a>
|
|
<li><a HREF="./lg_tips27.html#milton">Re: Getting Linux to the public...</a>
|
|
<li><a HREF="./lg_tips27.html#carl">My 2-cents on W95/Linux coexistence</a>
|
|
<li><a HREF="./lg_tips27.html#christoph">2-cent tips in LG 26: core dumps</a>
|
|
<li><a HREF="./lg_tips27.html#mark">Perl Script 2C Tip</a>
|
|
<li><a HREF="./lg_tips27.html#john2">rxvt 0.02$ tip</a>
|
|
<li><a HREF="./lg_tips27.html#john3">Tiny patch to ifconfig</a>
|
|
<li><a HREF="./lg_tips27.html#bill">Re: Wanting HELP!</a>
|
|
<li><a HREF="./lg_tips27.html#kragen">Re: Help Wanted (usershell on console
|
|
without logging in)</a>
|
|
<li><a HREF="./lg_tips27.html#vivek">2 cent tip followup -- X</a>
|
|
<li><a HREF="./lg_tips27.html#remco">locate patch</a>
|
|
<li><a HREF="./lg_tips27.html#padraig">locate subdirectories</a>
|
|
</ul>
|
|
|
|
<P> <hr> <P>
|
|
<!--================================================================-->
|
|
|
|
<a name="shane"></a>
|
|
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
|
|
RE: Help Wanted - LaserJet 4L
|
|
</H3>
|
|
<P>
|
|
Date: Mon, 2 Mar 1998 14:38:43 -0500<BR>
|
|
From: <A
|
|
HREF="mailto:Shane_McLaughlin@stream.com">Shane_McLaughlin@stream.com</A>
|
|
<P>
|
|
To: John.H.Gorman@MCI.Com<BR>
|
|
Re: font sizes + points, Linux Gazette #26
|
|
|
|
I had a similar problem with an old Deskjet under SunOS and was
|
|
supplied with the following info by HP support Europe. It applies to
|
|
DOS but should be applicable to any Un*x system as well
|
|
|
|
These are printer instruction generation wizards URLs
|
|
<ul>
|
|
<li>FOR PCL3 got to (DeskJets):
|
|
http://www.hp.com/cpso-support/deskjet/tools/pcl3.html
|
|
|
|
<li>FOR PCL5 got to (LaserJets):
|
|
http://www.hp.com/cpso-support/PrinterLanguage/pclwiz.html
|
|
|
|
<li>FOR PJL go to (printer job language - like a batch language):
|
|
http://www.hp.com/cpso-support/PrinterLanguage/pjlwiz.html
|
|
|
|
<li>Try checking entries on Horizontal Motion Index and Vertical Motion
|
|
Index (HMI + VMI) - that might be what you want.
|
|
</ul>
|
|
I saw a posting in C.O.L.A. a few months back that someone has
|
|
already done the tough work and has programmed some mostly-complete
|
|
PCL 3+ 5 drivers for Linux
|
|
|
|
If all else fails, HP DOS drivers exist that can customise point sizes
|
|
+ fonts and save them permanently to printer memory (5Si's do, i don't
|
|
know about 4Ls) If you don't have a DOS partition maybe DOSEMU?
|
|
|
|
Good Luck!<BR>
|
|
Shane McLaughlin
|
|
|
|
<P> <hr> <P>
|
|
<!--================================================================-->
|
|
|
|
<a name="fraser"></a>
|
|
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
|
|
2c tip (StarOffice 4 / Ghostscript)
|
|
</H3><P>
|
|
Date: Mon, 2 Mar 1998 18:48:51 -0500 (EST)<BR>
|
|
From: Fraser McCrossan, <A
|
|
HREF="mailto:fraserm@gtn.net">fraserm@gtn.net</A>
|
|
<P>
|
|
I've just started using the excellent Star Office 4.0 (free for personal
|
|
use - go get it now!), but have noticed that when using Ghostscript to
|
|
filter its print output on my non-Postscript printer, the results
|
|
were not quite as they appeared on the screen.
|
|
<P>
|
|
I reasoned that this might be because the fonts supplied with SO didn't
|
|
quite match those supplied with Ghostscript. However, the SO fonts are
|
|
Type 1 Postscript fonts... which Ghostscript can use. To make Ghostscript
|
|
use them, you need to link them to its home directory. For example, if
|
|
your SO is installed in /home/fraser/Office40, change to the Ghostscript
|
|
font (normally /usr/local/share/ghostscript/fonts) directory, and do the
|
|
following:
|
|
<PRE>
|
|
ln -s /home/fraser/Office40/fonts/type1/*.pf[ab] .
|
|
mv Fontmap Fontmap.hide
|
|
</PRE>
|
|
For some reason, when I tried to add the new fonts to Fontmap in the same
|
|
format as the existing fonts, GS would crash, hence hiding it. I'm not a
|
|
GS guru... perhaps someone else can explain why. However, GS works just
|
|
fine without Fontmap for me, although it probably takes longer to start
|
|
up - and everything I print looks just like the screen.
|
|
<P>
|
|
--Fraser
|
|
|
|
<P> <hr> <P>
|
|
<!--================================================================-->
|
|
|
|
<a name="rc"></a>
|
|
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
|
|
RE: Linux and VAX 3400 and 3300
|
|
</H3><P>
|
|
Date: Mon, 02 Mar 1998 20:34:55 -0500<BR>
|
|
From: RC Pavlicek, <A HREF="mailto:pavlicek@radc17.cop.dec.com">
|
|
pavlicek@radc17.cop.dec.com</A>
|
|
<P>
|
|
The March issue of the Gazette includes the following under 2 Cent Tips:
|
|
<<I have just purchased a MicroVAX 3400 and 3300. I would like to put
|
|
<<Linux on these two systems. Can you provide any help in this aspect.
|
|
<P>
|
|
<I believe those are MIPS 3000 boxes, try the Linux VAX Port Homepage at >http://ucnet.canberra.edu.au/~mikal/vaxlinux/home.html
|
|
<and the Linux/MIPS project at http://lena.fnet.fr/
|
|
<P>
|
|
Anything with "VAX" in its name is just that -- a VAX. Digital made
|
|
MIPS boxes once upon a time, but they never used the VAX/MicroVAX
|
|
name. Most of Digital's MIPS boxes were sold under the DECstation or
|
|
DECsystem name.
|
|
<P>
|
|
The pointer to the VAX/Linux effort is the best one I know about, but
|
|
the whole VAX/Linux project was not even close to producing usable code
|
|
last time I checked. NetBSD, if it works on these boxes, may be your
|
|
best bet.
|
|
<P>
|
|
-- Russell C. Pavlicek<BR>
|
|
[speaking for himself, not for Digital Equipment Corporation]
|
|
|
|
<P> <hr> <P>
|
|
<!--================================================================-->
|
|
|
|
<a name="caolin"></a>
|
|
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
|
|
xdm with pictures
|
|
</H3><P>
|
|
Date: Thu, 05 Mar 1998 10:34:43 -0000 (GMT)<BR>
|
|
From: Caolan McNamara, <A HREF="mailto:Caolan.McNamara@ul.ie">
|
|
Caolan.McNamara@ul.ie</A>
|
|
<P>
|
|
<blockquote>
|
|
Can I change the XDM login window/screen? I have a cool house logo so i want to
|
|
use it in my own Home Network.
|
|
And at my school they want to know to so. Is it possible. If yes, how? If no,
|
|
WHY NOT? -- Jeroen Bulters, The netherlands
|
|
</blockquote>
|
|
you could try xdm3d_xpm, which allows a picture in the xdm box, which is 3d
|
|
with shadows and stuff,one version is at
|
|
ftp://brain.sel.cam.ac.uk/users/mbm/xdm3d (probably the latest)
|
|
theres another (older) at
|
|
http://oak.ece.ul.ie/~griffini/software.html
|
|
|
|
<P> <hr> <P>
|
|
<!--================================================================-->
|
|
|
|
<a name="james3"></a>
|
|
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
|
|
Re: HELP-Installing Linux on a FAT32 Drive
|
|
Date: Thu, 05 Mar 1998 11:35:42 -0000 (GMT)<BR>
|
|
</H3><P>
|
|
From: Caolan McNamara, <A HREF="mailto:Caolan.McNamara@ul.ie">
|
|
Caolan.McNamara@ul.ie</A>
|
|
<blockquote>
|
|
I'm interested in installing linux on a machine I built recently, but when I
|
|
installed Win95(b), I idiotically opted to
|
|
format the drive using FAT32, which in a 95-only environment is great, but
|
|
Linux can't read it for greek.
|
|
I've looked around for utilities to effectively un-FAT32 the drive, which I
|
|
will then partition with Partition Magic to
|
|
use the freespace as a native ext2 partition, etc., but am having little luck.
|
|
Reformating is a disheartening prospect
|
|
I would rather not face, but am fully prepared to do so if I don't find any
|
|
help here. --nate daiger</blockquote>
|
|
<P>
|
|
Well partition magic 3 can repartition fat32 without hassle, and there exists
|
|
a patch for linux kernel to understand fat32 at
|
|
http://bmrc.berkeley.edu/people/chaffee/fat32.html
|
|
which also lists a version of fips which also should understand fat32, to
|
|
resize your drive.
|
|
|
|
<P> <hr> <P>
|
|
<!--================================================================-->
|
|
|
|
<a name="john"></a>
|
|
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
|
|
Regarding "Easter Eggs" in Netscape etc.
|
|
</H3><P>
|
|
Date: Thu, 5 Mar 1998 23:21:20 +0000 (GMT)<BR>
|
|
From: John Pelan, <A
|
|
HREF="mailto:johnp@am.qub.ac.uk">johnp@am.qub.ac.uk</A>
|
|
<P>
|
|
The on-going 2 cent tips about the hidden "Easter Eggs" in Netscape is
|
|
interesting. However rather than continually listing them it might be more
|
|
fruitful to learn how one can try to discover them for oneself.
|
|
<P>
|
|
One useful tool in particular, is the oft neglected 'strings' command.
|
|
This will locate printable strings in an arbitrary file and display them.
|
|
So one can do something like;
|
|
<PRE>
|
|
prompt% strings /usr/lib/netscape/netscape-navigator
|
|
</PRE>
|
|
which will reveal all the embedded strings in that binary. You might like
|
|
to redirect the output to a file for analysis. As many of the strings will
|
|
be rubbish (i.e. 'random' sequences of printable characters) one can
|
|
always use grep, awk, Perl etc. to help filter in/out particular patterns.
|
|
<P>
|
|
In the case of Netscape, only a tiny set of the strings will correspond to
|
|
"Easter Eggs" (not all of them will be immediately obvious either) and
|
|
locating them is left as an exercise to the reader...
|
|
|
|
<P> <hr> <P>
|
|
<!--================================================================-->
|
|
|
|
<a name="craige"></a>
|
|
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
|
|
Re: Changing XDM windows
|
|
</H3><P>
|
|
Date: Fri, 06 Mar 1998 12:16:02 +1200<BR>
|
|
From: Craige McWhirter, <A HREF="mailto:craige@magna.com.au">
|
|
craige@magna.com.au</A>
|
|
<blockquote>
|
|
From: Jeroen Bulters, jbulters@scoutnet.nl <BR>
|
|
Can I change the XDM login window/screen? I have a cool house logo so i want
|
|
to use it in my own Home Network. And at my school they want to know to so.
|
|
Is it possible. If yes, how? If no, WHY NOT. </blockquote>
|
|
<P>
|
|
Try this web site below. It had everything I needed to
|
|
customise my XDM login.<BR>
|
|
<A HREF="http://torment.ntr.net/xdm/">http://torment.ntr.net/xdm/</A>
|
|
|
|
<P> <hr> <P>
|
|
<!--================================================================-->
|
|
|
|
<a name="serge"></a>
|
|
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
|
|
Nice xdm and Linux PPC
|
|
Date: Fri, 06 Mar 1998 09:09:48 -0500<BR>
|
|
</H3><P>
|
|
From: Serge Droz, <A
|
|
HREF="mailto:droz@physics.uoguelph.ca">droz@physics.uoguelph.ca</A>
|
|
<P>
|
|
just a quick comment on two letters in the Linux Gazette #26
|
|
(http://www.linuxgazette.com/issue26/lg_mail26.html)
|
|
<ol>
|
|
<li>Changing XDM windows: Check out
|
|
http://jovian.physics.uoguelph.ca/~droz/uni/xdm3d.html for
|
|
a replacement (This version comes with pam support). This
|
|
version runs fine on our Redhat systems (Intel & PPC).
|
|
<P>
|
|
<li>New direction: Linux is beeing ported to the PPC chip. See
|
|
http://www.linuxppc.org for more info, downloads CD's T-shirts....
|
|
It actually runs quite stable on my PPC.
|
|
</ol>
|
|
Cheers, Serge
|
|
|
|
<P> <hr> <P>
|
|
<!--================================================================-->
|
|
|
|
<a name="roland"></a>
|
|
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
|
|
Re: Help with Sound Card
|
|
</H3><P>
|
|
Date: Fri, 6 Mar 1998 20:32:13 +0100 (MET)<BR>
|
|
From: Roland Smith, <A HREF="mailto:rsmit06@ibm.net">
|
|
rsmit06@ibm.net</A>
|
|
<P>
|
|
According to the Sound-HOWTO:<BR>
|
|
"MV Jaz16 and ESS688/1688 based cards generally work with the
|
|
SoundBlaster driver"
|
|
<P>
|
|
To get a PnP card to work, you need to configure it first. There are two
|
|
ways of doing that:
|
|
<ol>
|
|
<li>boot into DOS, use the card's DOS-based initialization program, then do
|
|
a warm boot to Linux
|
|
<P>
|
|
<li>compile sound support as a module, and use isapnp from the isapnptools
|
|
package to initialize the card, after which you can insert the sound
|
|
module.
|
|
</ol>
|
|
The isapnptools package can be found at
|
|
ftp://ftp.demon.co.uk/pub/unix/linux/utils
|
|
<P>
|
|
Regards, Roland
|
|
|
|
<P> <hr> <P>
|
|
<!--================================================================-->
|
|
|
|
<a name="friedhelm"></a>
|
|
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
|
|
Modline for TV
|
|
</H3><P>
|
|
Date: Sun, 8 Mar 1998 13:11:37 +0100 (MET)<BR>
|
|
From: <A HREF="mailto:friedhelm.mehnert@gmx.net">
|
|
friedhelm.mehnert@gmx.net</A>
|
|
<P>
|
|
I have shamelessly stolen this from USENET, because I feel this excellent
|
|
information should appear within the <I>Linux Gazette</I>.
|
|
<P>
|
|
I hope the original author don't mind. :-)
|
|
<blockquote>
|
|
From: Rob van der Putten<BR>
|
|
Date: Sun, 8 Mar 1998 00:14:15 +0100<BR>
|
|
Hopefully you won't need this, but if you ever want to display X on a big
|
|
screen and a TV is the only big screen around you might want to use this.
|
|
</blockquote> <P> <blockquote>
|
|
A TV with a RGB SCART input is nothing more than a fixed sync monitor with
|
|
a rather low picture quality. This means that you can make a TV compatible
|
|
signal with a plain vanilla cheapo VGA card.
|
|
</blockquote> <P> <blockquote>
|
|
For the european 625 line (575 visable lines) TV standard a modeline looks
|
|
like this:
|
|
Modeline "736x575i" 14.16 736 760 824 904 575 580 585 625 interlace -hsync -vsync
|
|
</blockquote> <P> <blockquote>
|
|
Officially the horizontal resolution is 767 (4 / 3 * 575) pixels with a
|
|
clock of 14.76 MHz. However, since the clock used is 14.16 MHz, I reduced
|
|
the horizontal values proportional to 14.16 / 14.76 (and rounded them to
|
|
the nearest multiple of 8).
|
|
</blockquote> <P> <blockquote>
|
|
If you want to make a 640x480 screen with a black border you can you use
|
|
this line:
|
|
Modeline "640x480i" 14.16 640 712 776 904 480 532 537 625 interlace -hsync -vsync
|
|
</blockquote> <P> <blockquote>
|
|
You can center it by altering the 2nd and 3rd horizontal and vertical
|
|
values (this example shifts the picture to the left):
|
|
Modeline "640x480i" 14.16 640 728 792 904 480 532 537 625 interlace -hsync -vsync
|
|
</blockquote> <P> <blockquote>
|
|
You can make a non interlaced signal with this modeline:
|
|
Modeline "736x288" 14.16 736 760 824 904 288 290 292 312 -hsync -vsync
|
|
</blockquote> <P> <blockquote>
|
|
The VGA RGB signals are compatible with the scart bus, the sync signals
|
|
are not. You have to create a composit sync signal of 0.3 ... 0.5 Vpp.
|
|
The cirquit below acts both as a AND gate and a level translator.
|
|
It doesn't need a power supply and can be mounted inside a VGA plug:
|
|
</blockquote> <PRE>
|
|
|
|
-VS ------------------------+
|
|
|
|
|
|
|
|
| /
|
|
+-----+ |/
|
|
-HS --+ 3k3 +-----*-----| BC 548 B
|
|
+-----+ | |\
|
|
| | \|
|
|
| -| +-----+
|
|
| *-----+ 68 +----- -CS 0.3 Vpp
|
|
| | +-----+
|
|
+++ +++
|
|
| | | |
|
|
| | | |
|
|
+++ +++
|
|
| |
|
|
GND --------------*---------*----------------- GND
|
|
1k2 820
|
|
</PRE> <blockquote>
|
|
You can use any general purpose low frequent low power NPN transistor
|
|
instead of the BC 548 B<BR>
|
|
Regards, Rob
|
|
</blockquote>
|
|
|
|
<P> <hr> <P>
|
|
<!--================================================================-->
|
|
|
|
<a name="ji"></a>
|
|
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
|
|
mpack 2 cent tip
|
|
</H3><P>
|
|
Date: Mon, 9 Mar 1998 11:17:47 +0100 (MET)<BR>
|
|
From: J.I.vanHemert, <A HREF="mailto:jvhemert@wi.leidenuniv.nl">
|
|
jvhemert@wi.leidenuniv.nl</A>
|
|
<P>
|
|
I response to the 2 cent tip of Ivan Griffin, I am sending a two cent tip of
|
|
my own.
|
|
<P>
|
|
Ivan send in a script that can be used to mail Micro$oft users. I would like
|
|
to mention the package 'mpack', this program is very handy if you want to send
|
|
out some mime-encoded mail. Furthermore the package also contains 'munpack'
|
|
which does the obvious thing.
|
|
<P>
|
|
Mpack can be found on ftp.andrew.cmu.edu in the directory pub/mpack, in the
|
|
archive mpack-1.5.tar.gz
|
|
<P>
|
|
Cheer, Jano
|
|
|
|
<P> <hr> <P>
|
|
<!--================================================================-->
|
|
|
|
<a name="guido"></a>
|
|
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
|
|
shutdown and root
|
|
</H3><P>
|
|
Date: Mon, 9 Mar 1998 13:10:55 +0100<BR>
|
|
From: Guido Socher, <A HREF="mailto:eedgus@eed.ericsson.se">
|
|
eedgus@eed.ericsson.se</A>
|
|
<P>
|
|
I noticed that many people still login as root before they power
|
|
down their system in order to run the command 'shutdown -h now'.
|
|
This is really not necessary and it may cause problems if everybody
|
|
working on a machine knows the root password.
|
|
<P>
|
|
Most Linux distributions are configured to reboot if ctrl-alt-delete
|
|
is pressed, but this can be changed to run 'shutdown -h now'.
|
|
Edit your /etc/inittab and change the line that starts with ca:
|
|
<PRE>
|
|
# Trap CTRL-ALT-DELETE
|
|
# original line would reboot:
|
|
#ca::ctrlaltdel:/sbin/shutdown -t3 -r now
|
|
# now halt the system after shutdown:
|
|
ca::ctrlaltdel:/sbin/shutdown -t3 -h now
|
|
#
|
|
</PRE>
|
|
Now you can just press crtl-alt-delete as normal user and your system
|
|
comes down clean and halts.
|
|
|
|
<P> <hr> <P>
|
|
<!--================================================================-->
|
|
|
|
<a name="allan"></a>
|
|
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
|
|
Perl Script 2 cent tip (maybe even a nickel)
|
|
</H3><P>
|
|
Date: Mon, 09 Mar 1998 18:37:20 -0500<BR>
|
|
From: Allan Peda, <A
|
|
HREF="mailto:allan@interport.net">allan@interport.net</A>
|
|
<P>
|
|
When I was putting my network card in my Linux box, I wanted to keep the
|
|
soundblaster, but the addresses are not easy to read (for me) in hex.
|
|
Even if there were in decimal, I figured a plot of the areas that appear
|
|
open would be useful. So I hacked together a little perl script to do
|
|
just that, Usage: addreses.pl addr.txt > outputfile.txt
|
|
<P>
|
|
Of course it goes to stdout without a redirected file.
|
|
The input file is constructed with one line for each address:
|
|
<PRE>
|
|
base_address TAB upper_address TAB :Description
|
|
</PRE>
|
|
Here's a little perl script that I wrote to help me identify
|
|
conflicting addreses:
|
|
<PRE>
|
|
# address.pl v 0.1
|
|
# Allan Peda
|
|
# allan@interport.net
|
|
#
|
|
# How to use: Prepare a file based on the format of the sample at
|
|
# the end of this script.
|
|
# This script will plot a servicable chart of the addresses in use,
|
|
# with the gaps plainly apparant.
|
|
#
|
|
$debug = 1;
|
|
$min_addr=0;
|
|
$max_addr=0;
|
|
for ($i=1; <:>; $i++) {
|
|
/^(\w+)\s/; $$memory[$i]{base_addr}=$1; # base address
|
|
/^\w+\s+(\w+)\s/; $$memory[$i]{upper_addr}=$1; # upper address
|
|
/\:(.+)$/; $$memory[$i]{addr_descrip} = $1; # description of address
|
|
$ttl_num_addresses = $i;
|
|
print "$i\t $$memory[$i]{base_addr} \t" if $debug;
|
|
print hex($$memory[$i]{base_addr}),"\t-->\t" if $debug;
|
|
print " $$memory[$i]{upper_addr}\t" if $debug;
|
|
print hex($$memory[$i]{upper_addr}),"\t" if $debug;
|
|
print "$$memory[$i]{addr_descrip}\n" if $debug;
|
|
if (( hex($$memory[$i]{base_addr}) < hex($min_addr) ) || $i<=1){
|
|
$min_addr = $$memory[$i]{base_addr};
|
|
}
|
|
if (( hex($$memory[$i]{upper_addr}) > hex($max_addr) ) || $i<=1){
|
|
$max_addr = $$memory[$i]{upper_addr};
|
|
}
|
|
}
|
|
print "\nTotal number of addreses used = $ttl_num_addresses" if $debug;
|
|
print "\nMinimimum address is: $min_addr" if $debug;
|
|
print "\nMaximimum address is: $max_addr\n" if $debug;
|
|
for ($addr = hex($min_addr); $addr <= hex($max_addr); $addr++) {
|
|
printf "\n%4x -> ", $addr;
|
|
for ($i=1; $i <= $ttl_num_addresses; $i++) {
|
|
if (( hex($$memory[$i]{base_addr}) <= $addr ) and
|
|
(( hex($$memory[$i]{upper_addr}) >= $addr))){
|
|
print "*** ";
|
|
if (( hex($$memory[$i]{base_addr}) == $addr )) {
|
|
print "$$memory[$i]{addr_descrip}";
|
|
}
|
|
}
|
|
}
|
|
}
|
|
# sample file address.txt follows:
|
|
__END__
|
|
0x1F0 0x1f8 :Hard disk drive
|
|
0x200 0x207 :Game I/O
|
|
0x278 0x27f :Parallel Port 2 (LPT2)
|
|
0x2e8 0x2ef :serial port, com4
|
|
0x300 0x31f :Prototype / Network PCB
|
|
0x360 0x363 :PC Network (Low address)
|
|
0x368 0x36B :PC Network (High address)
|
|
0x378 0x37f :Parallel Port 1 (LPT1)
|
|
0x380 0x38f :SDLC, Bisync
|
|
0x3a0 0x3bf :MDA / prn adapter (hercules)
|
|
0x3c0 0x3cf :EGA/VGA
|
|
0x3d0 0x3df :CGA/MDA/MCGA
|
|
0x3e8 0x3ef :Diskette controller
|
|
0x3fb 0x3ff :serial port 1 - com 1
|
|
</PRE>
|
|
The input file looks like this (typically):
|
|
<PRE>
|
|
0x1F0 0x1f8 :Hard disk drive
|
|
0x200 0x207 :Game I/O
|
|
0x278 0x27f :Parallel Port 2 (LPT2)
|
|
0x2e8 0x2ef :serial port, com4
|
|
0x300 0x31f :Prototype / Network PCB
|
|
0x360 0x363 :PC Network (Low address)
|
|
0x368 0x36B :PC Network (High address)
|
|
0x378 0x37f :Parallel Port 1 (LPT1)
|
|
0x380 0x38f :SDLC, Bisync
|
|
0x3a0 0x3bf :MDA / prn adapter (hercules)
|
|
0x3c0 0x3cf :EGA/VGA
|
|
0x3d0 0x3df :CGA/MDA/MCGA
|
|
0x3e8 0x3ef :Diskette controller
|
|
0x3fb 0x3ff :serial port 1 - com 1
|
|
</PRE>
|
|
|
|
<P> <hr> <P>
|
|
<!--================================================================-->
|
|
|
|
<a name="james"></a>
|
|
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
|
|
RE: my dual pentium
|
|
</H3><P>
|
|
Date: Mon, 09 Mar 1998 10:29:24 -0700 <BR>
|
|
From: James Gilb, <A HREF="mailto:p27451@email.sps.mot.com">
|
|
p27451@email.sps.mot.com</A>
|
|
<P>
|
|
My guess is that the default Caldera kernel does not have multiple
|
|
CPU's enabled. You will probably have to recompile your kernel to
|
|
enable SMP. Some kernel versions (even the 2.0.xx) are less stable for
|
|
SMP than others, unfortunately I can't give you any help on which
|
|
version to choose. However, you may want to join the Linux-SMP mailing
|
|
list, email majordomo@vger.rutgers.edu with the text 'subscribe
|
|
linux-smp' to join the list. An archive is maintained at Linux HQ
|
|
(http://www.linuxhq.com/lnxlists/linux-smp/), so you may want to look
|
|
there first before you ask on the mailing list. The May 1997 Caldera
|
|
newsletter has the following information (a little out of date):
|
|
<P>
|
|
Linux? When will
|
|
SMP be fully supported?
|
|
<P>
|
|
The Linux 2.x kernel with full SMP support is currently in beta,
|
|
and will most likely
|
|
be included in the next stable release of the kernel. The Linux
|
|
2.0.25 and 2.0.29
|
|
kernels which ship in OpenLinux 1.0 and 1.1 products can reside
|
|
and are tolerant of an
|
|
SMP environment, but will not perform load balancing.
|
|
<P>
|
|
To enable SMP, the OpenLinux 1.2 FAQ
|
|
(http://www.caldera.com/tech-ref/col-1.2/faq/faq-5.html) has the
|
|
following suggestions:
|
|
<P>
|
|
5.4 How to enable SMP (multiple processor) support: <BR>
|
|
To enable SMP (multiple processor) support in OpenLinux, you
|
|
must do three things:
|
|
<ol>
|
|
<li>Go to "/usr/src/linux" and uncomment the "SMP = 1"
|
|
line in the Makefile (to
|
|
uncomment this line, remove the preceeding "#").
|
|
<li>Follow the instructions in Rebuilding the Linux Kernel
|
|
for Caldera OpenLinux 1.2
|
|
(http://www.caldera.com/tech-ref/docs/COL12-Kernel-Rebuild.html)
|
|
and during the 'make config' step be sure to enable
|
|
"Real-time clock support". Then
|
|
recompile your kernel using the remainder of the
|
|
steps.
|
|
<li>Reboot your system.
|
|
</ol>
|
|
Currently there is no method for monitoring how much of each
|
|
processor is being used, but if you run the "top" utility you will most
|
|
likely see processes that are using more than 100% of a processor;
|
|
whatever is above the 100% mark is being done with the other processors.
|
|
Also, to determine if both processors have been detected and are in use,
|
|
you can cat the "/proc/cpuinfo" file for a report of what processors are
|
|
recognized by Linux; if there's more than one listed, you are running
|
|
with SMP support.
|
|
<P>
|
|
Some sources for information on SMP are:<BR>
|
|
<P>
|
|
http://www.caldera.com/LDP/HOWTO/Parallel-Processing-HOWTO-2.html<BR>
|
|
(or any other LDP site)<BR>
|
|
http://www.linux.org.uk/SMP/title.html <BR>
|
|
http://www.uruk.org/~erich/mps-linux-status.html <BR>
|
|
(These pages haven't been updated in a while)
|
|
<P>
|
|
If after reading the above information, you still have questions, you
|
|
might email Caldera's technical support (assuming you purchased your
|
|
distribution from them and registered it.) I have had good luck with
|
|
their technical support, but read the FAQ's first.
|
|
<P>
|
|
BTW: I found most of the above information by going to Caldera's web
|
|
page and typing SMP in the search box. Thanks Caldera for the web site.
|
|
<P>
|
|
James P. K. Gilb
|
|
|
|
<P> <hr> <P>
|
|
<!--================================================================-->
|
|
|
|
<a name="james2"></a>
|
|
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
|
|
RE: Changing XDM windows
|
|
</H3><P>
|
|
Date: Mon, 09 Mar 1998 11:20:33 -0700<BR>
|
|
From: James Gilb, <A HREF="mailto:p27451@email.sps.mot.com">
|
|
p27451@email.sps.mot.com</A>
|
|
<P>
|
|
Jeroen, there a three ways that I know for sure to customize your login
|
|
screen.
|
|
<ol>
|
|
<li>Get XDM-photo from
|
|
ftp://tsx-11.mit.edu/pub/linux/sources/usr.bin.X11/xdm-photo-1.1.tar.gz
|
|
<li>Use XBanner, which can do some really terrific things with you
|
|
login screen. If you want a login screen that is the envy of you
|
|
neighbors, you need XBanner. The URL for XBanner is:
|
|
http://chaos.fullerton.edu/XBanner
|
|
<li>Use Xdm3d/XPM - from
|
|
http://oak.ece.ul.ie/~griffini/software.html, get the sources and put
|
|
your own XPM in, although the default penguin is pretty cool.
|
|
</ol>
|
|
-- James Gilb
|
|
|
|
<P> <hr> <P>
|
|
<!--================================================================-->
|
|
|
|
<a name="james 3"></a>
|
|
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
|
|
RE: HELP-Installing Linux on a FAT32 Drive
|
|
</H3><P>
|
|
Date: Mon, 09 Mar 1998 11:24:56 -0700<BR>
|
|
From: James Gilb, <A HREF="mailto:p27451@email.sps.mot.com">
|
|
p27451@email.sps.mot.com</A>
|
|
<P>
|
|
Nate, there is a patch to allow FAT32 support in the Linux kernel so you
|
|
can mount the OSR2 drives and even run a umsdos type installation. The
|
|
web page for the patches is:<BR>
|
|
http://bmrc.berkeley.edu/people/chaffee/fat32.html
|
|
<P>
|
|
-- James Gilb
|
|
|
|
<P> <hr> <P>
|
|
<!--================================================================-->
|
|
|
|
<a name="gman"></a>
|
|
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
|
|
Re: Apache SSL extensions...
|
|
</H3><P>
|
|
Date: Wed, 11 Mar 1998 02:45:06 -0800<BR>
|
|
From: G-man, <A HREF="mailto:gman@infinex.com">gman@infinex.com</A>
|
|
<P>
|
|
I've put up a web page on how to setup apache-ssl Check out
|
|
http://www.linuxrox.com/WebServer.html .. Also have examples of how the
|
|
httpd.conf should look like to run secure and non-secure web server
|
|
using apache-ssl..
|
|
<P>
|
|
Hope that helps..
|
|
|
|
<P> <hr> <P>
|
|
<!--================================================================-->
|
|
|
|
<a name="brett"></a>
|
|
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
|
|
Reply to locate tip (LG 26)
|
|
</H3><P>
|
|
Date: Wed, 11 Mar 1998 19:37:47 -0500 (EST)<BR>
|
|
From: Brett Viren, <A HREF="mailto:bviren@ale.physics.sunysb.edu">
|
|
bviren@ale.physics.sunysb.edu</A>
|
|
<P>
|
|
About the problem of `locate' (2c tip #2 LG #26) showing files that
|
|
normal users can't access: If this happens, it is not a bug with
|
|
`locate' but rather with the Linux distribution (or the way locate and
|
|
friends have been installed by hand). `Locate' should be allowed to
|
|
print any and all matching file that are in the database it is pointed
|
|
to. However, in the case of the database for general system, it is a
|
|
security bug (IMO) if the database includes non-world-readable
|
|
files. Here is were the problem lies.
|
|
<P>
|
|
Debian Linux handles this by running `updatedb' (the program which
|
|
actually makes the `locate' data base) from /etc/cron.daily/find via:
|
|
<PRE>
|
|
cd / && updatedb --localuser=nobody 2>/dev/null
|
|
</PRE>
|
|
This is also a tad easier than patching/recompiling.
|
|
Anyways, there is my 2cents.
|
|
<P>
|
|
-Brett.
|
|
|
|
<P> <hr> <P>
|
|
<!--================================================================-->
|
|
|
|
<a name="milton"></a>
|
|
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
|
|
Re: Getting Linux to the public...
|
|
</H3><P>
|
|
Date: Thu, 12 Mar 1998 17:19:59 -0500<BR>
|
|
From: Milton L. Hankins {64892}, <A HREF="mailto:mlh@swl.msd.ray.com">
|
|
mlh@swl.msd.ray.com</A>
|
|
<P>
|
|
(This is in response to the article posted in General Mail, Linux
|
|
Gazette, Issue 26, March 1998.)
|
|
<P>
|
|
Although I can't speak for developers "that have Gobs of money for good
|
|
video boards and [humongous] monitors," I can share a few things with
|
|
you about my experiences with XFree86. I have run it successfully with
|
|
on a 14 inch monitor, using the standard SVGA X server on a 486-75MHz
|
|
with a Cirrus video card. It took quite a bit of fiddling, but I
|
|
eventually figured out how to get it to run in 800x600 mode, and then in
|
|
1024x768 interlaced.
|
|
<P>
|
|
A lot of it was just meddling with the XFree86 configuration file
|
|
directly, hoping that I wouldn't blow my monitor up. There are tools
|
|
today (like Metro-X) that make this process a fair bit easier.
|
|
<P>
|
|
One thing you might not realize is that the XFree86 config (last I
|
|
remember) sometimes chooses 640x480 mode on startup, when it actually
|
|
supports more modes. Try pressing Ctrl-Alt-Keypad+ to change the
|
|
resolution while running X.
|
|
<P>
|
|
Monitor size is another matter. I recall one application that liked to
|
|
size itself bigger than my screen. There are a couple ways around this.
|
|
<P>
|
|
The first is the -geometry flag, available to most X applications. If
|
|
you want to try it, the xterm, xeyes, and xbiff programs all support it.
|
|
The most basic format is:
|
|
<PRE>
|
|
-geometry =<width>x<height>+<x>+<y>:
|
|
</PRE>
|
|
Replace <width> and <height> with the desired width and height
|
|
of the
|
|
window, respectively. Sometimes width and height refer to characters,
|
|
and sometimes they refer to pixels. Your mileage may vary. <x> and
|
|
<y>
|
|
refer to the pixel coordinates of the new window's upper left corner.
|
|
If you want, you can leave out the first half (default size) or the
|
|
second half (default location). Sometimes you can leave off the equals
|
|
sign, too.
|
|
<P>
|
|
Some examples: "-geometry 800x600+0+0" will place an 800x600 window in
|
|
the upper left corner of the screen. "-geometry 400x300+200+150" will
|
|
place a 400x300 window in the center of an 800x600 display.
|
|
<P>
|
|
You can write shell aliases to run these programs with a default size.
|
|
A cleaner way is to put geometry specifications in your .Xresources
|
|
file. Usually this is of the form
|
|
<programName>*geometry:
|
|
<width>x<height>+<x>+<y>
|
|
<P>
|
|
Here are some examples:
|
|
<PRE>
|
|
XEyes*geometry: +1060+40
|
|
plan*geometry: +10+10
|
|
Netscape.Navigator.geometry: =336x425
|
|
Netscape.Mail.geometry: =300x400
|
|
Netscape.News.geometry: =300x400
|
|
Netscape.Composition.geometry: =350x350
|
|
</PRE>
|
|
You may also want to adjust the fonts for your program, especially if it
|
|
doesn't support the -geometry flag nor X resource.
|
|
<P>
|
|
I, too, feel that Linux is not ready for the public because of its
|
|
comparatively steeper learning curve. But it's gotten a lot better over
|
|
the years, thanks to the Linux community. Keep up the good work,
|
|
everyone!
|
|
<P>
|
|
Milton L. Hankins (no known relation to Greg)
|
|
|
|
<P> <hr> <P>
|
|
<!--================================================================-->
|
|
|
|
<a name="carl"></a>
|
|
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
|
|
My 2-cents on W95/Linux coexistence
|
|
</H3><P>
|
|
Date: Tue, 17 Mar 1998 17:56:16 -0500<BR>
|
|
From: Carl Helmers, <A HREF="mailto:carl@helmers.com">
|
|
carl@helmers.com</A>
|
|
<P>
|
|
Re W95 and Linux: With hard disks crashing in price (hopefully not the
|
|
heads), here is the strategy I used for this problem of getting W95 and
|
|
Linux on the same machine at the end of 1997: On one of my personal
|
|
desktop machines, I had excellent results using a product called "System
|
|
Commander" -- this product has a Linux-savvy manual which explains all
|
|
the details one needs. The machine in question is a generic Pentium-133
|
|
with 32mb memory, a 2GB EIDE drive and a S3 Virge based graphic card.
|
|
After I got the machine in 1997 I added a removable 2GB EIDE drive in a
|
|
DataPort drive frame/cartridge setup for testing various Linux versions,
|
|
keeping the original W95 that came with the machine in the first drive.
|
|
<P>
|
|
Once I installed System Commander I set up the default boot choice on
|
|
the P133 desktop machine to be (of course) Linux on the second hard
|
|
drive, where I currently have X installed. I use this machine (running
|
|
Emacs and a bunch of handy macros) to keep my update log while
|
|
installing new Linices on my other machines (a Dell Latitude LM Laptop
|
|
[P133 40mb] with an alternate 2GB hard drive for Linux, and a Cyrix
|
|
6X86-166 clone on the desktop next to the P133.
|
|
<P>
|
|
My first attempt at a W95/Linux combination was on that Cyrix clone --
|
|
whose W95 seems to have re-written the fundamental hard disk sector map
|
|
of the second (but different model number, same capacity) Western
|
|
Digital drive on which I installed Linux through getting a working X
|
|
display -- before closing down and rebooting with LILO. After that
|
|
disaster, I just said the heck with W95 and reformatted the 2GB hard
|
|
disk as the primary Linux disk, with the second disk in its DataPort
|
|
removable frame retained as an additional file storage region. In my 30
|
|
years of using computers since high school in 1966, I have developed
|
|
the habit of always keeping a detailed log when doing anything I might
|
|
want to reproduce -- such as installing a Linux release. That way, if
|
|
I make a mistake I can try again, changing some critical detail or
|
|
other. I started the habit with pencil and spiral paper notebooks.
|
|
These days, I use a second computer system sitting on the same desktop
|
|
running emacs under XFree86 with my custom macros to speed up entry --
|
|
but the principle is the same.
|
|
<P>
|
|
In the System Commander desktop machine, I set W95 as a second boot
|
|
option, and the third option for booting from floppy using the Linux
|
|
installation boot diskettes. I still useW95 [perish the thought] for
|
|
one or two commercial Wintel programs I like which do not have a Linux
|
|
work-alike, and to try out new software packages.
|
|
<P>
|
|
Carl Helmers
|
|
|
|
<P> <hr> <P>
|
|
<!--================================================================-->
|
|
|
|
<a name="christoph"></a>
|
|
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
|
|
2-cent tips in LG 26: core dumps (Marty Leisner)
|
|
</H3><P>
|
|
Date: Tue, 17 Mar 1998 19:45:48 +0100<BR>
|
|
From: Christoph L. Spiel, <A
|
|
HREF="mailto:Christoph_Spiel@physik.tu-muenchen.de">
|
|
Christoph_Spiel@physik.tu-muenchen.de</A>
|
|
<P>
|
|
I was annoyed by "file", too. Under several other unices
|
|
"file" can be used to identify a core dump. Marty's tip is
|
|
just fine. You don't have to write any script or other stuff.
|
|
<P>
|
|
I used "gdb" to find out where a "core"-file came from. As
|
|
a wrapper around it, I wrote "idcore". It has
|
|
the advantage of displaying only relevant information, i.e.,
|
|
the name of the binary causing the core-dump. This way it
|
|
can by used, e.g., in cron jobs to notify users.
|
|
The verbosity of idcore is controlled with the
|
|
<PRE>
|
|
--brief
|
|
</PRE>
|
|
and
|
|
<PRE>
|
|
--long
|
|
</PRE>
|
|
options.
|
|
<P>
|
|
I'd like to paste some sample output here, but neither can I
|
|
find a core dump on my machine, nor do I know a program that
|
|
generates one. (This is not a devine linux-box, I have
|
|
thrown out most instable binaries ;-)
|
|
<P>
|
|
Here comes "idcore":
|
|
<PRE>
|
|
#!/bin/sh
|
|
|
|
# name: idcore -- identify which binary caused a core dump
|
|
# author: c.l.s. (cspiel@physik.tu-muenchen.de)
|
|
# last rev.: 1998-01-22 11:14
|
|
# bash ver.: 1.14.7(1)
|
|
# $Id: issue27.html,v 1.3 2003/02/03 21:50:18 lg Exp $
|
|
|
|
|
|
# display help message
|
|
# char* disp_help(void)
|
|
function disp_help
|
|
{
|
|
echo "usage:"
|
|
echo " idcore [OPTION] [[COREDUMP] ...]"
|
|
echo
|
|
echo " If COREDUMP is omitted the core file in the current"
|
|
echo " directory is used."
|
|
echo
|
|
echo " -h, --help display this help message"
|
|
echo " -v, --version show version of idcore"
|
|
echo " -b, --brief brief format, i.e. filename only"
|
|
echo " -l, --long long format, with filename, signal, user,"
|
|
echo " date, and backtrace"
|
|
}
|
|
|
|
# retrieve name binary that caused core dump via gdb
|
|
# char* get_name(const char* mode, const char* name)
|
|
function get_name
|
|
{
|
|
case "$1" in
|
|
brief)
|
|
echo q | gdb --quiet --core="$2" 2>&1 | head -1 | \
|
|
sed -ne "s/^.*\`\(.*\)'\.$/\1/p"
|
|
;;
|
|
standard)
|
|
echo q | gdb --quiet --core="$2" 2>&1 | head -2
|
|
;;
|
|
long)
|
|
dump=$(echo -e "where\nq" | \
|
|
gdb --quiet --core="$2" 2>&1)
|
|
echo "$dump" | head -2 | sed -ne '2,2s/\.$//p'
|
|
ls -l "$2" | \
|
|
awk '{ print "on", $6, $7, $8, "caused by", $3 }'
|
|
echo
|
|
echo "backtrace:"
|
|
echo "$dump" | sed -ne '/^(gdb) /s/^(gdb) //p'
|
|
;;
|
|
esac
|
|
}
|
|
|
|
|
|
#
|
|
# start of main
|
|
#
|
|
|
|
|
|
myname=$(basename "$0") # name of shell-script
|
|
mode=standard # normal mode of operation
|
|
|
|
case "$1" in
|
|
-h | --help)
|
|
disp_help
|
|
exit 1
|
|
;;
|
|
-v | --version)
|
|
echo "version 0.1.0"
|
|
exit 0
|
|
;;
|
|
-b | --brief)
|
|
mode=brief
|
|
shift
|
|
;;
|
|
-l | --long)
|
|
mode=long
|
|
shift
|
|
;;
|
|
-* | --*)
|
|
echo "$myname: unknown option $1"
|
|
exit 2
|
|
;;
|
|
esac
|
|
|
|
if [ -z "$1" ]; then
|
|
# no argument -> look at core in the current directory
|
|
get_name "$mode" core
|
|
else
|
|
# process all arguments
|
|
for c; do
|
|
# echo file we are processing
|
|
if [ "$mode" != "brief" ]; then
|
|
echo "$c: "
|
|
fi
|
|
get_name "$mode" "$c"
|
|
done
|
|
fi
|
|
exit 0
|
|
|
|
</PRE>
|
|
|
|
<P> <hr> <P>
|
|
<!--================================================================-->
|
|
|
|
<a name="mark"></a>
|
|
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
|
|
Perl Script 2C Tip
|
|
</H3><P>
|
|
Date: Mon, 16 Mar 1998 15:46:25 +0000<BR>
|
|
From: Mark Hood, <A HREF="mailto:mark.hood@deep-thought.ericsson.se">
|
|
mark.hood@deep-thought.ericsson.se</A>
|
|
<P>
|
|
After seeing the "Keeping Track of Tips" suggestion in your October
|
|
issue, I thought it might be worth contributing this perl script which I
|
|
use in a similar way.
|
|
I have a user called 'info' and he has a .forward file consisting of the
|
|
following line:
|
|
<PRE>
|
|
"| /home/info/mail2web"
|
|
</PRE>
|
|
In the user's public_html folder, I created a file called index.html:
|
|
<PRE>
|
|
<HTML><HEAD><TITLE>Information Archive</TITLE></HEAD>
|
|
<BODY>
|
|
<TABLE>
|
|
<TR><TH>Subject</TH><TH>Date</TH><TH>From</TH></TR>
|
|
<!-- Add after here -->
|
|
</TABLE>
|
|
</BODY>
|
|
</HTML>
|
|
</PRE>
|
|
This allows me to simply mail directly to this user, and the tip is
|
|
instantly stored on the web page - no need for cron jobs or external C
|
|
programs to split the mail up.
|
|
<P>
|
|
This file is provided for free use, feel free to distribute or alter it
|
|
in any way.
|
|
Note that there is no warranty - it works for me, but that's all I can
|
|
say. In particular, I can't promise there are no security holes in it
|
|
(it never calls 'exec', so it's unlikely a cracker can subvert it on
|
|
your machine - and it's certainly no more dangerous than a shell script
|
|
run by cron).
|
|
<P>
|
|
Enjoy! Mark Hood
|
|
<PRE>
|
|
----- Cut here and save as mail2web -----
|
|
#!/usr/local/bin/perl
|
|
#
|
|
# mail2web (C) 1998 Mark A. Hood (mark.hood@usa.net)
|
|
#
|
|
# Takes a file (piped through it, eg. from a .forward file)
|
|
# And bungs it in a Web page.
|
|
# We have two html files:
|
|
# $index is the index file
|
|
# $stem is the base name of the information files - the date & time
|
|
# are appended to make it unique.
|
|
#
|
|
# The index file must exist and look like this (without the leading #
|
|
signs)
|
|
# The important bit is the <!-- Add after here --> comment - this script
|
|
# uses that to know where to put the new data...
|
|
#
|
|
# <HTML><HEAD><TITLE>Information Archive</TITLE></HEAD>
|
|
# <BODY>
|
|
# <TABLE>
|
|
# <TR><TH>Subject</TH><TH>Date</TH><TH>From</TH></TR>
|
|
# <!-- Add after here -->
|
|
# </TABLE>
|
|
# </BODY>
|
|
# </HTML>
|
|
|
|
# Variables - change these to match your system
|
|
|
|
$index = "/home/info/public_html/index.html";
|
|
$stem = "/home/info/public_html/";
|
|
|
|
# Nothing below this line should need changing
|
|
|
|
# Define the time and date
|
|
|
|
($sec,$min,$hour,$mday,$mon,$syear,$wday,$yday,$isdst) = localtime;
|
|
|
|
$year = 1900 + $syear;
|
|
|
|
# Add the time and date to the end of the filestem
|
|
|
|
$stem = sprintf ("%s%02d%02d%02d%02d%02d%02d.html",
|
|
$stem, $year, $mon, $mday, $hour, $min, $sec);
|
|
|
|
# Open the new file
|
|
|
|
open ( OUTFILE, ">$stem") ;
|
|
|
|
# Write the HTML header
|
|
print OUTFILE "<HTML><HEAD><TITLE>\n";
|
|
|
|
$printing = 0;
|
|
$from = "nobody";
|
|
$date = "never";
|
|
$title = "Untitled";
|
|
|
|
while ($line = <>) {
|
|
if ($line =~ s/^From: (.*)$/$1/g) { # Sender
|
|
$from = $line;
|
|
} elsif ($line =~ s/^Date: (.*)$/$1/g) { # Date
|
|
$date = $line;
|
|
} elsif ($line =~ s/^Subject: (.*)$/$1/g) { # Subject
|
|
$title = $line;
|
|
print OUTFILE $title;
|
|
print OUTFILE "</TITLE><BODY><PRE>";
|
|
} elsif ($line =~ /^$/ && $printing == 0) { # End of headers
|
|
$printing = 1; # Show the info.
|
|
print OUTFILE "From: " . $from;
|
|
print OUTFILE "Date: " . $date;
|
|
print OUTFILE "Subject: " . $title . "\n";
|
|
}
|
|
$line =~ s/\</\<\;/g; # Mask out
|
|
specials
|
|
$line =~ s/\>/\>\;/g;
|
|
|
|
if ($printing) {
|
|
print OUTFILE $line;
|
|
}
|
|
|
|
}
|
|
|
|
print OUTFILE "</PRE></BODY></HTML>"; # Finish the
|
|
HTML
|
|
|
|
close OUTFILE; # Close the file
|
|
|
|
$newfile = sprintf("%s.new", $index); # Backups
|
|
$oldfile = sprintf("%s.old", $index);
|
|
open ( INFILE, "$index");
|
|
|
|
while ($line = <INFILE>) {
|
|
if ($line =~ /^\<\!-- Add after here --\>/ ) { # Our marker
|
|
print OUTFILE "<TR><TD>";
|
|
print OUTFILE "<A HREF=\"" . $stem . "\">";
|
|
print OUTFILE $title . "</A></TD>";
|
|
print OUTFILE "<TD>" . $date . "</TD>";
|
|
print OUTFILE "<TD>" . $from . "</TD></TR>\n";
|
|
}
|
|
|
|
print OUTFILE $line;
|
|
}
|
|
rename ($index, $oldfile); # Backup the
|
|
current
|
|
rename ($newfile, $index); # Move the new
|
|
one
|
|
----- Cut here ----- Cut here ----- Cut here ----- Cut here -----
|
|
</PRE>
|
|
|
|
<P> <hr> <P>
|
|
<!--================================================================-->
|
|
|
|
<a name="john2"></a>
|
|
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
|
|
rxvt 0.02$ tip
|
|
</H3><P>
|
|
Date: Sun, 15 Mar 1998 17:21:26 -0500 (EST)<BR>
|
|
From: John Eikenberry [MSAI], <A HREF="mailto:jae@ai.uga.edu">
|
|
jae@ai.uga.edu</A>
|
|
<P>
|
|
Recently I hacked together a little shell script for some friends of mine
|
|
that I thought others might find of interest. It allows you to run rxvt
|
|
with a random pixmap put in the background. The random pixmap is taken
|
|
from a directory, thus no hard coding of pixmap names in the shell script.
|
|
<P>
|
|
Well, here it is... oh, this is using bash btw...
|
|
<PRE>
|
|
----start----
|
|
#!/bin/sh
|
|
run_rxvt ()
|
|
{
|
|
shift $((RANDOM%$#))
|
|
exec rxvt -pixmap ~/.pixmaps/$1
|
|
}
|
|
run_rxvt `ls ~/.pixmaps/`
|
|
</PRE>
|
|
|
|
<P> <hr> <P>
|
|
<!--================================================================-->
|
|
|
|
<a name="john3"></a>
|
|
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
|
|
Tiny patch to ifconfig
|
|
</H3><P>
|
|
Date: Fri, 06 Feb 1998 23:12:02 -0600 <BR>
|
|
From: John Corey, <A HREF="mailto:kunglao@prairienet.org">
|
|
kunglao@prairienet.org</A>
|
|
<P>
|
|
I've often wondered just how much data I've transmitted through my
|
|
network. After a little research, I found that the ifconfig program
|
|
just simply does not display this bit of information in it's results.
|
|
So, I've fixed that problem.
|
|
<P>
|
|
To install, first get the sources from your favorite sunsite mirror.
|
|
The file to look for is net-tools-1.432.tar.gz. I found it at
|
|
ftp://ftp.cc.gatech.edu/pub/linux/distributions/slackware/source/n/tcpip/net-tools-1.432.tar.gz
|
|
<P>
|
|
Unpack those sources, apply the patch with patch < ifconfig.diff, and
|
|
compile. I only modify the ifconfig program, so just simply backup your
|
|
existing binary, then install the newly compiled one (assuming you
|
|
already have this version of net-tools installed). Here is an example
|
|
of the new output:
|
|
<PRE>
|
|
eth0 Link encap:Ethernet HWaddr 00:40:F6:A4:8E:73
|
|
inet addr:192.168.1.1 Bcast:192.168.1.255 Mask:255.255.255.0
|
|
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
|
|
RX packets:99773 errors:0 dropped:0 overruns:0 frame:0
|
|
TX packets:91834 errors:0 dropped:0 overruns:0 carrier:0
|
|
coll:6
|
|
RX bytes: 20752805 (19.7 Mb) TX bytes: 27982763 (26.6 Mb)
|
|
Interrupt:9 Base address:0x280
|
|
</PRE>
|
|
<PRE>
|
|
Content-Type: text/plain; charset=us-ascii; name="ifconfig.diff"
|
|
Content-Transfer-Encoding: 7bit
|
|
Content-Disposition: inline; filename="ifconfig.diff"
|
|
|
|
diff -c -r net-tools/ifconfig.c net-tools-patched/ifconfig.c
|
|
*** net-tools/ifconfig.c Tue Sep 23 15:05:24 1997
|
|
--- net-tools-patched/ifconfig.c Fri Feb 6 15:54:51 1998
|
|
***************
|
|
*** 190,195 ****
|
|
--- 190,196 ----
|
|
static void
|
|
ife_print(struct interface *ptr)
|
|
{
|
|
+ unsigned long rx, tx, short_rx, short_tx; char Rext[5], Text[5];
|
|
struct aftype *ap;
|
|
struct hwtype *hw;
|
|
int hf;
|
|
***************
|
|
*** 352,357 ****
|
|
--- 353,372 ----
|
|
ptr->stats.tx_packets, ptr->stats.tx_errors,
|
|
ptr->stats.tx_dropped, dispname, ptr->stats.tx_fifo_errors,
|
|
ptr->stats.tx_carrier_errors, ptr->stats.collisions);
|
|
+
|
|
+ /* MyMod */
|
|
+ rx = ptr->stats.rx_bytes; tx = ptr->stats.tx_bytes;
|
|
+ strcpy(Rext, ""); short_rx = rx * 10; short_tx = tx * 10;
|
|
+ if (rx > 1048576) { short_rx /= 1048576; strcpy(Rext, "Mb"); }
|
|
+ else if (rx > 1024) { short_rx /= 1024; strcpy(Rext, "Kb"); }
|
|
+ if (tx > 1048576) { short_tx /= 1048576; strcpy(Text, "Mb"); }
|
|
+ else if (tx > 1024) { short_tx /= 1024; strcpy(Text, "Kb"); }
|
|
+
|
|
+ printf(" ");
|
|
+ printf(NLS_CATGETS(catfd, ifconfigSet, ifconfig_tx,
|
|
+ "RX bytes: %lu (%lu.%lu %s) TX bytes: %lu (%lu.%lu %s)\n"),
|
|
+ rx, short_rx / 10, short_rx % 10, Rext,
|
|
+ tx, short_tx / 10, short_tx % 10, Text);
|
|
|
|
if (hf<255 && (ptr->map.irq || ptr->map.mem_start || ptr->map.dma ||
|
|
ptr->map.base_addr)) {
|
|
</PRE>
|
|
|
|
<P> <hr> <P>
|
|
<!--================================================================-->
|
|
|
|
<a name="bill"></a>
|
|
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
|
|
Re: Wanting HELP!
|
|
</H3><P>
|
|
Date: Wed, 04 Mar 98 13:35:24 -0500<BR>
|
|
From: Bill R. Williams, <A HREF="mailto:brw@BRW.ETSU.Edu">
|
|
brw@BRW.ETSU.Edu</A>
|
|
Status: RO
|
|
<P>
|
|
For anyone interested... IT'S FIXED! (*applause, cheering, etc.*)
|
|
On Fri, 27 Feb 98 14:16:13 -0500, I (Bill R. Williams) wrote:
|
|
<PRE>
|
|
...[snip]...<BR>
|
|
In the process of getting a System installed I upgraded from the
|
|
original CD-ROM install of (Intel) RedHat 4.2 to the new RedHat 5.0
|
|
CD-ROM. One of the significant items on this system is the mars-nwe
|
|
Netware emulator.
|
|
Under the RedHat 4.2 with mars-nwe 0.98pl8-1 the mars package ran fine,
|
|
but logged copious errors about there being "too many connections --
|
|
increase the number in config.h". But it ran, and I *liked* the way it
|
|
happily did Netware duties! (Especially the printer part.)
|
|
The *new* RedHat 5.0 with mars-nwe 0.99pl2-1 offered some very desirable
|
|
abilities, not the least of which is the move of some items (such as
|
|
number of connections) to the run-time config file (/etc/nwserv.conf
|
|
under RedHat, probably nw.ini on other distributions.) Now the bad
|
|
news...<BR>
|
|
...[snip]...<BR>
|
|
This new package spawns out nwconn processes with an empty parenthesis
|
|
as the last token instead of the USERID ('nwconn ... ()') until all
|
|
connection slots are eaten, and then, of course, will not recognize any
|
|
new attempts. Any users already logged into the nwserv(ice) are Ok.<BR>
|
|
...[snip]...<BR>
|
|
I have tried every combination of parameter twiddling in the run-time
|
|
config file that can think of, but to no avail.<BR>
|
|
...[snip]...<BR>
|
|
Anyone who has solved this problem, please share the secret.
|
|
</PRE>
|
|
BTW: I had regularly pulled in updates to everything from RedHat
|
|
errata. I was getting a bit gun shy about updating, because that's how
|
|
I got into the mess. :-) I had previously tried the "..pl2-3.rpm" when
|
|
it first appeared, but it died immediatly on startup so I went back to
|
|
the "..pl2-1.rpm" build which, at least, would run in spite of all the
|
|
problems I was having with it.
|
|
<P>
|
|
The breakthrough was inspired by a note I got when
|
|
On Mon, 02 Mar 1998 12:24:37 +0100, Trond Eivind Glomsrd wrote:
|
|
"Last: You have installed all items from the errata? The glibc updates
|
|
fixes a lot of bugs, at least."
|
|
<P>
|
|
So I made one more trip to the RH errata repository, and got the
|
|
absolute latest updates. There did happen to be a newer update of that
|
|
glibc which Tron had mentioned.
|
|
<P>
|
|
I applied the glibc updates and installed the mars-nwe 0.99pl2-3, and
|
|
this all seems to have fixed everything. Mars runs, and all the ugly
|
|
hangups and problems appear to be gone! It's a thing of beauty.
|
|
<P>
|
|
For those keeping score, here are the package levels which are
|
|
significant to running the mars-nwe on my RH 5.0 System:
|
|
<PRE>
|
|
kernel-2.0.32-2
|
|
mars-nwe-0.99pl2-3
|
|
glibc-2.0.6-9
|
|
</PRE>
|
|
It appears that the mixture of levels I had prior to this set just
|
|
did not synch up, and I suspect the the fix must have been in the new
|
|
glibc as Tron suggested it might be.
|
|
<P>
|
|
What a relief!
|
|
<P>
|
|
Bill R. Williams
|
|
|
|
<P> <hr> <P>
|
|
<!--================================================================-->
|
|
|
|
<a name="kragen"></a>
|
|
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
|
|
Re: Help Wanted (usershell on console without logging in)
|
|
</H3><P>
|
|
Date: Mon, 23 Mar 1998 15:26:17 -0500 (EST)<BR>
|
|
From: Kragen, <A HREF="mailto:kragen@pobox.com">kragen@pobox.com</A>
|
|
<P>
|
|
Last month, there was a request by Todd Blake for some help:
|
|
<blockquote>
|
|
I like most people am the only person to use my linux system at home.
|
|
What I'd like to do is when my system is done booting to have me
|
|
automatically login as my main user account(not as root though) on one
|
|
virtual console(the first) and leave all other consoles and virtual
|
|
consoles alone,</blockquote>
|
|
<P>
|
|
I thought this was a good idea, so I tried to do it. Eventually, I
|
|
succeeded. The resulting software is at
|
|
http://www.pobox.com/~kragen/sw/usershell.html. Mr. Blake
|
|
reports that it is a good job.
|
|
<P>
|
|
Anyone else is welcome to it. I'll even help you if you have trouble
|
|
with it :)
|
|
<P>
|
|
Kragen
|
|
|
|
<P> <hr> <P>
|
|
<!--================================================================-->
|
|
|
|
<a name="vivek"></a>
|
|
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
|
|
2 cent tip followup -- X
|
|
</H3><P>
|
|
Date: Tue, 24 Mar 1998 14:26:43 -0500<BR>
|
|
From: Vivek Khera, <A HREF="mailto:vivek@khera.org">vivek@khera.org</A>
|
|
<P>
|
|
In the March issue, you have a tip on using X programs when you've run
|
|
su to root. By far the easiest method is to simply
|
|
<PRE>
|
|
setenv XAUTHORITY ~khera/.Xauthority
|
|
</PRE>
|
|
for your own user name, of course... No need to run any other programs
|
|
or cut and paste anything.
|
|
<P>
|
|
I have my machines configured so that when someone becomes root, if the
|
|
file ~/.rootrc exists in their home directory, it is sourced as part of
|
|
the root's .cshrc file. In there, I put the above setenv command. I've
|
|
never had to think about it again (in nearly 5 years).
|
|
<P>
|
|
Hope this helps someone.
|
|
<P>
|
|
Vivek Khera, Ph.D.
|
|
|
|
<P> <hr> <P>
|
|
<!--================================================================-->
|
|
|
|
<a name="remco"></a>
|
|
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
|
|
locate patch
|
|
</H3><P>
|
|
Date: 24 Mar 1998 11:57:20 -0000<BR>
|
|
From: Remco Wouts, <A HREF="mailto:remco@xray.bmc.uu.se">
|
|
remco@xray.bmc.uu.se</A>
|
|
<P>
|
|
In the Linux Gazette number 26 (march) there was mention of a patch
|
|
for locate. The idea of the patch was to make it impossible to find
|
|
out the names of files in directories that you do not have access to.
|
|
<P>
|
|
Unfortunately this patch does not solve the problem at all. So I would
|
|
advise people not to use this patch, they could be lured into a false
|
|
sense of privacy. What is the problem and what is wrong with the
|
|
patch?
|
|
<P>
|
|
Locate allows you to find a file quickly. It does this by consulting a
|
|
database of filenames. Of course this way of finding a file is much
|
|
quicker then hunting for it in the file system. However, somebody has
|
|
to make the database. This is done with the program updatdb, usually
|
|
from a crontab every day or week. Updatdb can find all files that the
|
|
user id, it is running as, has access to. So if updatedb is run with
|
|
an id that has more access rights then the user who invokes the locate
|
|
command, this user can find out the names of files that he/she
|
|
otherwise could not find. The author of the locate patch solved the
|
|
problem simply by changing the locate command. Just before sending the
|
|
name of a file, it checks whether it exists and if so whether the
|
|
invoking user has read access. However you don't need to use the
|
|
locate command at all to read the file database. To make sure every
|
|
user, who invokes locate, can read it it is stored world readable. The
|
|
patch does not help at all to solve the privacy problem.
|
|
<P>
|
|
For the moment, if you are concerned about these privacy issues, you
|
|
should not run 'updatedb' at all, and remove the existing database.
|
|
Since locate & Co. are very handy utilities it is probably best to
|
|
leave things as they are and make sure updatedb is run by user nobody
|
|
from a crontab.
|
|
<P>
|
|
The next easiest solution would be to make the database created by
|
|
updatedb readable by root only, and change locate to a setuid program
|
|
which consults the database as root and checks for permissions. I
|
|
will leave that as a challenge to the author of the patch.
|
|
<P>
|
|
Happy Linuxing.<BR>
|
|
-- Remco Wouts
|
|
|
|
<P> <hr> <P>
|
|
<!--================================================================-->
|
|
|
|
<a name="padraig"></a>
|
|
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
|
|
locate subdirectories
|
|
</H3><P>
|
|
Date: Thu, 26 Mar 1998 17:02:22 +0000 (GMT)<BR>
|
|
From: <A HREF="mailto:Padraig.Finnerty@acm.org">
|
|
Padraig.Finnerty@acm.org</A>
|
|
<P>
|
|
in a large directory of files it is sometimes hard to locate the
|
|
subdirectories. to do this you can tag the directories with a '/'
|
|
(using ls -F) and then grep these out...
|
|
<PRE>
|
|
ls -F |grep /$
|
|
</PRE>
|
|
or even better..
|
|
<PRE>
|
|
alias sub="ls -F |grep /$"
|
|
</PRE>
|
|
Padraig
|
|
|
|
<P> <hr> <P>
|
|
<!--================================================================-->
|
|
<center>Published in <I>Linux Gazette</I> Issue 27, April 1998</center>
|
|
<P> <hr> <P>
|
|
<!--================================================================-->
|
|
<A HREF="./index.html"><IMG SRC="../gx/indexnew.gif" ALT="[ TABLE OF
|
|
CONTENTS ]"></A> <A HREF="../index.html"><IMG SRC="../gx/homenew.gif"
|
|
ALT="[ FRONT PAGE ]"></A> <A HREF="./lg_mail27.html"><IMG SRC="../gx/back2.gif" ALT=" Back "></A>
|
|
<A HREF="./lg_bytes27.html"><IMG SRC="../gx/fwd.gif" ALT=" Next "></A>
|
|
|
|
<P> <hr> <P>
|
|
<h5>This page maintained by the Editor of <I>Linux Gazette</I>,
|
|
<A HREF="mailto: gazette@ssc.com">gazette@ssc.com</A><BR>
|
|
Copyright © 1998 Specialized Systems Consultants, Inc. </H5>
|
|
<P>
|
|
<H4>"Linux Gazette...<I>making Linux just a little more fun!</I>"</H4>
|
|
<HR>
|
|
<center>
|
|
<table cellpadding=7><tr><td>
|
|
<IMG SRC="../gx/bytes.gif" border=1 ALT="News Bytes">
|
|
</td><td>
|
|
<H3>Contents:</H3>
|
|
<ul>
|
|
<li><a HREF="./lg_bytes27.html#general">News in General</a>
|
|
<li><a HREF="./lg_bytes27.html#software">Software Announcements</a>
|
|
</ul>
|
|
</td></tr></table>
|
|
</center>
|
|
|
|
<a name="general"></a>
|
|
<p><hr><p>
|
|
<!-- =================================================================== -->
|
|
<center><H3> News in General </H3></center>
|
|
|
|
<P> <hr> <P>
|
|
<!-- =================================================================== -->
|
|
|
|
<center><IMG ALT=" " SRC="./gx/cover49.gif"></center>
|
|
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
|
|
May <I>Linux Journal</I>
|
|
</H3>
|
|
<P>
|
|
The May issue of <A HREF="http://www.linuxjournal.com/"><I>Linux
|
|
Journal</I></A> will be hitting the newsstands April 10.
|
|
The focus of this issue is Cross Platform Development with
|
|
articles on building reusable Java Widgets, debugging your Perl programs,
|
|
Modula-3, doubly-linked lists, the Python DB-API and much more. Check out the
|
|
<A HREF="http://www.linuxjournal.com/issue49/index.html">Table of Contents</A>.
|
|
To subscribe to <I>Linux Journal</I>, click <A
|
|
HREF="http://www.linuxjournal.com/ljsubsorder.html">here</A>.
|
|
|
|
<P> <hr> <P>
|
|
<!-- =================================================================== -->
|
|
|
|
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
|
|
Linus Torvalds Receives VA Research Excellence Award
|
|
</H3>
|
|
<P>
|
|
February 26, 1998<BR>
|
|
VA Research granted its Excellence in Open Source Software Award to
|
|
Linus Torvalds, father of the Linux operating system and one of the most
|
|
important leaders in information technology. Linus received a
|
|
VArStation YMP, worth $4500, at
|
|
The Silicon Valley Linux Users Group meeting in March. (See <A
|
|
HREF="./dibona.html">article</A> in this issue by Chris Dibona.)
|
|
<P>
|
|
The VA Research Excellence in Open Source Software Award honors
|
|
exceptional individuals within the free software community. Torvalds led
|
|
this community to create Linux, a freely distributable multi-user,
|
|
multi-tasking Unix-like operating system. Linux is now used in a range of
|
|
applications from mission critical servers to desktop workstations.
|
|
<P>
|
|
VA Research is the oldest and largest Linux systems company. Founded in
|
|
1993 by electrical engineering doctoral students at Stanford University,
|
|
VA Research pioneered high performance workstations and servers based on
|
|
Linux. In 1997, VA Research became an affiliate of Umax.
|
|
<P>
|
|
For More Information:<BR>
|
|
VA Research, www.varesearch.com <BR>
|
|
Samuel Ockman, ockman@varesearch.com.
|
|
|
|
<P> <hr> <P>
|
|
<!-- =================================================================== -->
|
|
|
|
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
|
|
New Linux and Open Source Business Usage Advocacy page
|
|
</H3>
|
|
<P>
|
|
Date: Thu, 12 Mar 1998 21:06:35 +1100 (EST)<BR>
|
|
There is a new advocacy page for Linux (and other
|
|
open source, free software). This site is primarily focused on solid
|
|
business reasons as to why companies should use Linux. The opening
|
|
blurb states:
|
|
<P>
|
|
...
|
|
We (and a growing number of other firms) are heavy users of software such
|
|
as Linux, GNU and FreeBSD which can be classified as 'freely redistributable' or 'co-operatively developed',
|
|
but feel that there is considerable lack of knowledge of these systems and applications in the
|
|
general business community. We (and some of the companies listed below) are therefore
|
|
building this web presence to help provide information, documentation, showcase projects, links to
|
|
related sites and other useful resources to to help redress this. This will include freely
|
|
redistributable systems software, and free and commercial applications which run on these systems which may
|
|
be of interest to helping you run your business.
|
|
...
|
|
<P>
|
|
<A
|
|
HREF="http://www.cyber.com.au/misc/frsbiz/">http://www.cyber.com.au/misc/frsbiz/</A>
|
|
<P>
|
|
For More Information:<BR>
|
|
Con Zymaris, Cybersource Pty. Ltd.
|
|
|
|
<P> <hr> <P>
|
|
<!-- =================================================================== -->
|
|
|
|
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
|
|
FREENIX at USENIX Annual Conference
|
|
</H3>
|
|
<P>
|
|
Date: Mon, 16 Mar 1998 08:54:19 -0800<BR>
|
|
Here's more than you ever wanted to know:
|
|
<P>
|
|
<P>
|
|
Share ideas, and actual code, with developers and avid users of freely
|
|
redistributable software--Linux, FreeBSD, NetBSD, OpenBSD, and more--at the
|
|
23RD ANNUAL USENIX TECHNICAL CONFERENCE,
|
|
includes FREENIX, the Freely Redistributable Software Track,
|
|
June 15-19, 1998 in
|
|
New Orleans, Louisiana.
|
|
Sponsored by USENIX, the Advanced Computing Systems Association
|
|
<P>
|
|
FREENIX is co-sponsored by The FreeBSD Project, Linux International, The
|
|
NetBSD Foundation, Inc., and The OpenBSD Project
|
|
<P>
|
|
Full program and on-line registration:<BR>
|
|
<A
|
|
HREF="http://www.usenix.org/events/no98/">http://www.usenix.org/events/no98/</A>
|
|
<BR>
|
|
Email: <A HREF="mailto:conference@usenix.org">conference@usenix.org</A>
|
|
<P>
|
|
FREENIX, a Special Track within the conference, showcases the latest
|
|
developments and interesting applications in freely redistributable
|
|
software. FREENIX offers 28 talks, plus evening BoF sessions.
|
|
<P>
|
|
USENIX is the Advanced Computing Systems Association. Its
|
|
members are the computer technologists responsible for many of
|
|
the innovations in computing we enjoy today.
|
|
<P>
|
|
For More Information:<BR>
|
|
Cynthia Deno, USENIX ASSOCIATION,
|
|
<A HREF="mailto:cynthia@usenix.org">cynthia@usenix.org</A> <BR>
|
|
|
|
<P> <hr> <P>
|
|
<!-- =================================================================== -->
|
|
|
|
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
|
|
Samba: Integrating UNIX and Windows
|
|
</H3>
|
|
<P>
|
|
Date: Fri, 6 Mar 1998 08:36:32 GMT<BR>
|
|
Samba is the tool of choice for providing Windows file sharing and
|
|
printer services from UNIX and UNIX-like systems. Freely available
|
|
under the GNU Public License, Samba allows UNIX machines to be
|
|
seamlessly integrated into a Windows network without installing any
|
|
additional software on the Windows machines. Used in tandem with Linux
|
|
or FreeBSD, Samba provides a low-cost alternative to the Windows NT
|
|
Server.
|
|
<P>
|
|
This book, a combination of technical tutorial, reference guide, and
|
|
how-to manual, contains the depth of knowledge experienced network
|
|
administrators demand without skipping the information beginners need to
|
|
get fast results. UNIX administrators new to Windows networking will find
|
|
the information they need to become Windows networking experts. Those new
|
|
to UNIX will find the details they need to install and configure Samba
|
|
correctly and securely.
|
|
<P>
|
|
The book also contains a CD-ROM containing version 1.9.18 of the Samba
|
|
server, a library of useful tools and scripts, the Samba mailing list
|
|
archives, and all examples discussed in the book.
|
|
<ul>
|
|
<li>Title: Samba: Integrating UNIX and Windows
|
|
<li>Author: John D. Blair, Samba Team
|
|
<li>Publisher: Specialized Systems Consultants Inc. (SSC)
|
|
<li>Pub Date: 2/98
|
|
<li>Retail Price: $29.95
|
|
<li>ISBN: 1-57831-006-7
|
|
<li>URL: www.ssc.com/ssc/samba/
|
|
<li>Contact: <A HREF="mailto:samba@ssc.com">Clarica Grove</A>
|
|
</ul>
|
|
<P>
|
|
Currently available at fatbrain.com (Book shops + Online).
|
|
www.clbooks.com * 1-800-789-8590 * FAX 1-408-752-9919
|
|
|
|
<P> <hr> <P>
|
|
<!-- =================================================================== -->
|
|
|
|
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
|
|
Netscape turns to Debian for Licensing Guidance!
|
|
</H3>
|
|
<P>
|
|
Date: Fri, 6 Mar 1998 09:23:38 GMT<BR>
|
|
When Netscape decided to make their client software free, they
|
|
used the Debian Free Software Guidelines for a guide on how to
|
|
write their license. You can find the draft Netscape license at
|
|
<A HREF="http://www.mozilla.org/NPL/">http://www.mozilla.org/NPL/</A>.
|
|
This is a historic day for us, since it
|
|
means that "Mozilla" (Netscape Communicator) will eventually be in the
|
|
"main" part of Debian and all Linux systems, instead of the "non-free" section
|
|
as it is now.
|
|
<P>
|
|
A link to a Netscape press release (containing a quote from Bruce Perens)
|
|
can be found at <A
|
|
HREF="http://www.netscape.com/newsref/pr/newsrelease579.html">
|
|
http://www.netscape.com/newsref/pr/newsrelease579.html</A>.
|
|
The Debian Social Contract and licensing guidelines are at
|
|
<A
|
|
HREF="http://www.debian.org/social_contract.html">http://www.debian.org/social_contract.html</A>.
|
|
A web page on the
|
|
Open Source promotional program for free software can be found at
|
|
<A HREF="http://www.opensource.org/">http://www.opensource.org/</A>.
|
|
<P>
|
|
There is work yet to be done - a few license bug-lets will be resolved
|
|
within the next few days, and once the source code is released there are
|
|
some parts that Netscape does not own that will most likely have to be
|
|
replaced with free software.
|
|
<P>
|
|
For More Information:<BR>
|
|
Bruce Perens, <A
|
|
HREF="mailto:bruce@debian.novare.net">bruce@debian.novare.net</A>
|
|
|
|
<P> <hr> <P>
|
|
<!-- =================================================================== -->
|
|
|
|
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
|
|
Linux Web Watcher News
|
|
</H3>
|
|
<P>
|
|
Date: Tue, 10 Mar 1998 13:18:11 GMT<BR>
|
|
<P>
|
|
Linux Web Watcher, <A
|
|
HREF="http://webwatcher.org/">http://webwatcher.org/</A>
|
|
<P>
|
|
The "Linux Web Watcher" now has its own domain, thanks to VA Research. LWW
|
|
isn't an ordinary
|
|
links page. It actually keeps track of when the pages were last updated,
|
|
so you don't have to waste hours checking to see if your favorite web
|
|
pages have been updated since your last visit to them.
|
|
<P>
|
|
The non-tables page of the Linux Web Watcher have been greatly
|
|
enhanced to make things easier
|
|
to read for Lynx users.
|
|
<P>
|
|
For More Information:<BR>
|
|
Robert E. Blue, <A HREF="mailto:reblue@emry.net">reblue@emry.net</A>
|
|
|
|
<P> <hr> <P>
|
|
<!-- =================================================================== -->
|
|
|
|
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
|
|
Linux questionnaire
|
|
</H3>
|
|
<P>
|
|
Date: Tue, 10 Mar 1998 13:19:49 GMT<BR>
|
|
Aachen Linux User Group (ALUG) proudly presents the
|
|
<A HREF="http://aachen.heimat.de/alug/fragebogen2">Linux Questionnaire</A>.
|
|
<P>
|
|
The questionnaire consists of 20 questions which
|
|
cover software, hardware, documentation and installation issues. The
|
|
questions are a mixture of multiple choice and text areas. The results
|
|
are updated hourly and can be seen at:<BR>
|
|
<A
|
|
HREF="http://aachen.heimat.de/alug/fragebogen2/fragebogen_results2.html">
|
|
http://aachen.heimat.de/alug/fragebogen2/fragebogen_results2.html</A>
|
|
<P>
|
|
The objective of the questionnaire is to provide a somewhat
|
|
standardized way to report your experience with Linux and the results
|
|
should give (in particular, to the newcomer) a coarse-grained view on
|
|
Linux and its users.
|
|
<P>
|
|
For More Information:<BR>
|
|
Aachener Linux User Group (Aachen/Germany),
|
|
<A HREF="http://aachen.heimat.de/alug">http://aachen.heimat.de/alug</A>
|
|
<BR>
|
|
Michael Eilers, <A HREF="mailto:eilers@rmi.de">eilers@rmi.de</A>
|
|
|
|
<P> <hr> <P>
|
|
<!-- =================================================================== -->
|
|
|
|
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
|
|
Perl Conference 2.0 - Call for Participation
|
|
</H3>
|
|
<P>
|
|
Date: Tue, 10 Mar 1998 14:43:42 GMT<BR>
|
|
The second annual <A HREF="http://conference.perl.com/">O'Reilly Perl
|
|
Conference</A> will be held August
|
|
17-20, 1998 at the Fairmont Hotel in San Jose, California. The
|
|
conference will feature two days of tutorials followed by a two
|
|
day conference. The conference will include sessions for
|
|
submitted papers on practical and experimental uses of Perl;
|
|
invited presentations; daily Q and A sessions with leading
|
|
Perl developers and trainers; a by-invitation Developers
|
|
Workshop; and nightly user-organized Birds-of-a-Feather sessions
|
|
for special interest groups.
|
|
<P>
|
|
In the practical spirit of Perl, we seek papers that describe
|
|
how you are using Perl right now for work or play, and how your
|
|
experience and your code can help others. This is not a
|
|
traditional solicitation for academic papers. While we look
|
|
forward to papers on new and useful extensions, applications,
|
|
and tools, we are most interested in receiving papers that show
|
|
Perl hard at work, saving time, money, and headaches for you and
|
|
your organization. We welcome submissions that work under both
|
|
Unix and non-Unix systems, such as Win32.
|
|
<P>
|
|
For More Information:<BR>
|
|
The Perl Institute, Chip Salzenberg<BR>
|
|
3665 E. Bay Drive, Suite 204-A <BR>
|
|
Largo, FL 33771-1990
|
|
|
|
<P> <hr> <P>
|
|
<!-- =================================================================== -->
|
|
|
|
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
|
|
UK Linux Conference
|
|
</H3>
|
|
<P>
|
|
|
|
Date: Mon, 23 Mar 1998 09:18:30 GMT<BR>
|
|
These are very preliminary details:<BR>
|
|
<P>
|
|
Venue:
|
|
UMIST Conference Centre, Manchester.
|
|
<P>
|
|
Date:
|
|
Saturday 27th June
|
|
<P>
|
|
Time:
|
|
A Jam-packed day from 10am (sharp) to around 5:30
|
|
<P>
|
|
Programme (provisional):
|
|
<ul>
|
|
<li>Richard Moore (University of Manchester): KDE Internals
|
|
<li>Stephen Tweedie (DEC): Journaling File Systems
|
|
<li>Gareth Bult (Frontier Technology): Linux Means Business
|
|
<li>Ian Jackson (Debian): Title TBDC
|
|
<li>Jeremy Chatfield (Xi Graphics): X
|
|
</ul>
|
|
<P>
|
|
For More Information:<BR>
|
|
UKUUG, <A HREF="http://www.ukuug.org/">http://www.ukuug.org/</A>
|
|
|
|
<P> <hr> <P>
|
|
<!-- =================================================================== -->
|
|
|
|
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
|
|
French Translation of <I>LG</I> Issue 25
|
|
</H3>
|
|
<P>
|
|
A French translation of some parts of Issue 25 of the <I>Linux Gazette</I> is
|
|
available at the following URL's :<BR>
|
|
<a
|
|
href="http://www.linux-kheops.com/pub/lgazette/>">http://www.linux-kheops.com/pub/lgazette/</a>;<BR>
|
|
<B>and</B>
|
|
<a
|
|
href="http://www.linux-france.com/article/lgazette/>">http://www.linux-france.com/article/lgazette/</a>;<BR>
|
|
<P>
|
|
For more information: <BR>
|
|
Eric Jacoboni : jaco@mail.dotcom.fr
|
|
|
|
<a name="software"></a>
|
|
<P> <hr> <P>
|
|
<!-- =================================================================== -->
|
|
<center><H3> Software Announcements </H3></center>
|
|
|
|
<P> <hr> <P>
|
|
<!-- =================================================================== -->
|
|
|
|
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
|
|
Help ToolKit for Motif V0.9: Binary beta release now available
|
|
</H3>
|
|
<P>
|
|
Date: Sun, 1 Mar 1998 23:58:55 -0500<BR>
|
|
Columbia, MD -- The Help ToolKit for Motif V0.9 has been released and is
|
|
now available on the web.
|
|
The Help ToolKit for Motif allows developers to easily add and modify
|
|
various types of on-line context-sensitive help to Motif applications.
|
|
Using a small set of functions to install the library, every widget and
|
|
gadget in a Motif application seemingly inherits new resources allowing
|
|
help to be configured and changed via X resource files.
|
|
<P>
|
|
The ToolKit supports three core help types: Tips, Cues, and Hints. All of
|
|
these help types can be assigned to any widget and any Motif-based gadget.
|
|
<P>
|
|
The Help ToolKit distribution can be downloaded from
|
|
<A HREF="http://www.softwarecomp.com">http:www.softwarecomp.com</A>.
|
|
The complete Programmer's Manual can also be downloaded in PDF format from
|
|
the same site.
|
|
<P>
|
|
Although the Linux version of this product is freely available for
|
|
non-commercial purposes, it is copyrighted and is not in the public domain.
|
|
There is a license associated with the distribution; please read it if you
|
|
have an interest in the product.
|
|
<P>
|
|
For more information:<BR>
|
|
Robert S. Werner, <A HREF="mailto:rob.werner@softwarecomp.com">
|
|
rob.werner@softwarecomp.com </A> <BR>
|
|
<A HREF="mailto:info@softwarecomp.com">info@softwarecomp.com</A>,
|
|
<A HREF="http://www.softwarecomp.com/">http://www.softwarecomp.com/</A>
|
|
|
|
<P> <hr> <P>
|
|
<!-- =================================================================== -->
|
|
|
|
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
|
|
RED HAT SOFTWARE NOW SHIPPING MOTIF 2.1
|
|
</H3>
|
|
<P>
|
|
Date: Tue, 03 Mar 1998 16:16:34 -0500<BR>
|
|
Research Triangle Park, NC--March 2, 1998--Red Hat Software, Inc.,
|
|
publisher of Red Hat Linux 5.0, the Operating System that was named
|
|
InfoWorld Magazine's Product of the Year, has announced the
|
|
availability of Red Hat Motif 2.1 for the Intel Computer. Red Hat
|
|
Motif 2.1 for the Intel computer is the full OSF/Motif development
|
|
system. As with the 2.0.1 version of Red Hat Motif, Red Hat Motif 2.1
|
|
can turn your Intel computer running Linux into a complete Motif
|
|
development workstation.
|
|
<P>
|
|
For more information:<BR>
|
|
Red Hat Software, Inc., <A
|
|
HREF="http://www.redhat.com">"http://www.redhat.com/</A>, <A
|
|
HREF="mailto:melissa@redhat.com">melissa@redhat.com</A>
|
|
|
|
<P> <hr> <P>
|
|
<!-- =================================================================== -->
|
|
|
|
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
|
|
PostShop, ScanShop and OCR Shop
|
|
</H3>
|
|
<P>
|
|
Date: Fri, 6 Mar 1998 11:38:10 -0800 (PST)<BR>
|
|
Vividata, Inc. announced the release of Linux versions of its PostShop,
|
|
ScanShop and OCR Shop software products PostShop transforms inkjet and laser
|
|
printers to PostScript-enabled ones and makes PostScript printers up to 100
|
|
times faster. ScanShop scans, prints, compresses, stores, retrieves and
|
|
displays pictures and documents in full color, grayscale, and bi-level
|
|
(black & white), and OCR Shop converts paper documents and images into
|
|
editable text.
|
|
<P>
|
|
For more information:<BR>
|
|
Vividata, Inc., <A HREF="mailto:info@vividata.com">info@vividata.com</A>,
|
|
<A HREF="http://www.vividata.com/">http://www.vividata.com/</A>.
|
|
|
|
Cobalt Qube Ships
|
|
<P>
|
|
MOUNTAIN VIEW, Calif., March 17, 1998 - Cobalt Microserver Inc. today
|
|
announced that its Cobalt Qube(tm) microserver products, which were
|
|
introduced last month at the DEMO 98 conference, have begun shipping to
|
|
customers. Cobalt develops and markets simple, low-cost Internet and
|
|
Intranet servers.
|
|
<P>
|
|
The Cobalt Qube microservers are aimed at work groups and branch offices,
|
|
Internet service providers, Web developers and educational organizations.
|
|
They are simple, versatile, scalable, and offer excellent performance for
|
|
work groups at a fraction of the cost of traditional UNIX(R) and Windows(R)
|
|
NT servers.
|
|
<P>
|
|
For more information: <BR>
|
|
Nancy Teater, Hamilton Communications, <A HREF="mailto:nrt@hamilton.com">
|
|
nrt@hamilton.com</A>,
|
|
<A HREF="http://web.hamilton.com/">http://web.hamilton.com/</A>
|
|
|
|
<P> <hr> <P>
|
|
<!-- =================================================================== -->
|
|
|
|
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
|
|
LinkScan 4.0
|
|
</H3>
|
|
<P>
|
|
Date: Fri, 13 Mar 1998 13:24:29 -8<BR>
|
|
San Jose, CA, March 10, 1998 - Electronic Software Publishing Corp.
|
|
(Elsop) introduces a number of new features to enhance the central
|
|
management of multiple Intranet/Internet web sites in organizations where
|
|
many different individuals may be responsible for the content. These
|
|
developments build upon earlier releases which laid down the foundations
|
|
for these exciting new features. LinkScan enables users to split-up very
|
|
large sites into smaller sub-sites, to produce different reports for
|
|
different departments and to configure LinkScan to handle multiple
|
|
domains hosted on a single server. LinkScan/Dispatch adds a new higher
|
|
level of capability to those features.
|
|
<P>
|
|
LinkScan/Dispatch is included with LinkScan Version 4.0. It is designed
|
|
for operators of large web sites where the responsibility for maintenance
|
|
and updates is distributed among many individuals.
|
|
<P>
|
|
LinkScan 4.0 is priced at $750 per server. Volume discounts are
|
|
available in single order quantities of five copies or more. Orders may
|
|
be placed online via a secure server.
|
|
<P>
|
|
For more information:<BR>
|
|
Kenneth R. Churilla,
|
|
<A HREF="mailto:ken@elsop.com">ken@elsop.com</A><BR>
|
|
Electronic Software Publishing Corporation,
|
|
<A HREF="http://www.elsop.com/">http://www.elsop.com/</A>
|
|
|
|
<P> <hr> <P>
|
|
<!-- =================================================================== -->
|
|
|
|
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
|
|
WANPIPE FT1
|
|
</H3>
|
|
<P>
|
|
Date: Thu, 12 Mar 1998 14:25:12 +0000<BR>
|
|
Sangoma Technologies Inc.
|
|
(OFFER VALID UNTIL APRIL 15TH OR WHILE SUPPLIES LAST)
|
|
is making available our WANPIPE kit
|
|
that includes the T1 and Fractional T1 DSU/CSU for an END USER price
|
|
of $799.00! This represents a reduction of 30% from our already low
|
|
standard price of $1139.00.
|
|
<P>
|
|
WANPIPE provides all you need to turn your NT, Linux, or
|
|
NetWare server or Windows workstation into a powerful T1 or
|
|
Fractional T1 router for your LAN. Just plug your server into the
|
|
wall.
|
|
<P>
|
|
For more information:<BR>
|
|
David Mandelstam, <A HREF="mailto:dm@sangoma.com">dm@sangoma.com</A> <BR>
|
|
Sangoma Technologies Inc.
|
|
|
|
<P> <hr> <P>
|
|
<!-- =================================================================== -->
|
|
|
|
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
|
|
XFree86 3.3.2 Released
|
|
</H3>
|
|
<P>
|
|
Date: Fri, 6 Mar 1998 09:59:39 GMT
|
|
XFree86 version 3.3.2 is now available. The XFree86 3.3 distribution is
|
|
available in both source and binary form. Binary distributions are
|
|
currently available for FreeBSD (2.2.2+ and 3.0-CURRENT), NetBSD (1.2
|
|
and 1.3), OpenBSD, Interactive Unix, Linux (ix86 and AXP), SVR4.0,
|
|
UnixWare, OS/2, Solaris 2.6 and LynxOS AT.
|
|
<P>
|
|
The XFree86 documentation is available on-line on our Web server. The
|
|
documentation for 3.3 can be accessed at http://WWW.XFree86.org/3.3/.
|
|
<P>
|
|
Source patches are available to upgrade X11R6.3 PL2 from the X Consortium (now
|
|
The Open Group) to XFree86 3.3.2. Binaries for many OSs are also available.
|
|
The distribution is available from:<BR>
|
|
<A
|
|
HREF="ftp://ftp.XFree86.org/pub/XFree86/">ftp://ftp.XFree86.org/pub/XFree86</A>
|
|
<P>
|
|
For more information: <BR>
|
|
The XFree86 Team, <A HREF="
|
|
mailto:robin@interlabs.com">robin@interlabs.com</A>
|
|
|
|
<P> <hr> <P>
|
|
<!-- =================================================================== -->
|
|
|
|
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
|
|
scwm 0.6 - Scheme Configurable Window Manager
|
|
</H3>
|
|
<P>
|
|
Date: Tue, 10 Mar 1998 12:38:35 GMT<BR>
|
|
Scwm 0.6 is released.
|
|
Scwm is the Scheme Configurable Window Manager. This is a highly
|
|
dynamic and extensible window manager for the X Window System (based
|
|
originally on FVWM2, but now much enhanced) with Guile Scheme as the
|
|
configuration/extension language. Nearly all decorations can be
|
|
changed at run-time or per-window, and eventually many decoration
|
|
styles and additional features will be supported through dynamically
|
|
loaded code. A powerful protocol is provided for interacting with the
|
|
window manager while it is running.
|
|
<P>
|
|
You can download the latest scwm package from:<BR>
|
|
<A HREF="http://web.mit.edu/mstachow/www/scwm-0.6.tar.gz">
|
|
http://web.mit.edu/mstachow/www/scwm-0.6.tar.gz</A> <BR>
|
|
<A HREF="http://web.mit.edu/mstachow/www/scwm-icons-0.6.tar.gz">
|
|
http://web.mit.edu/mstachow/www/scwm-icons-0.6.tar.gz</A>
|
|
<P>
|
|
For more information: <BR>
|
|
Maciej Stachowiak, <A HREF="mailto:mstachow@mit.edu">mstachow@mit.edu</A>,
|
|
<BR>
|
|
Massachusetts Institute of Technology,
|
|
<A HREF="http://web.mit.edu/mstachow/www/scwm.html">
|
|
http://web.mit.edu/mstachow/www/scwm.html</A>
|
|
|
|
<P> <hr> <P>
|
|
<!-- =================================================================== -->
|
|
|
|
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
|
|
Yalsim, Yet Another Logic/Timing Simulator
|
|
</H3>
|
|
<P>
|
|
Date: Tue, 10 Mar 1998 12:44:50 GMT
|
|
This is the second Alpha version of a logic/timing simulator called Yalsim.
|
|
Yalsim is a hierarchical timing and logic simulator that has been in
|
|
development (on and off) for over fifteen years and the second pre-beta version
|
|
is now being sampled. Yalsim can now be obtained (with source code) by
|
|
individuals from:
|
|
<P>
|
|
<A HREF="ftp:/ftp.eecg.toronto.edu/pub/software/martin/yalsim.tar.gz">
|
|
ftp:/ftp.eecg.toronto.edu/pub/software/martin/yalsim.tar.gz</A>
|
|
<P>
|
|
The current cost for Yalsim is $1 CDN, when you have time to send it.
|
|
Sending four U.S. quarters is also acceptable. This may change in the future.
|
|
However, seriously, please do read the LICENSE file. Yalsim is not public domain
|
|
or being released under a GNU-like license, although individuals, at non-profit
|
|
institutions, will always be able to obtain at least binary versions of Yalsim
|
|
at no or minimal (overhead) cost.
|
|
<P>
|
|
For more information: <BR>
|
|
Ken Martin,
|
|
<A HREF="mailto:martin@isis.eecg.toronto.edu">martin@isis.eecg.toronto.edu</A>
|
|
|
|
<P> <hr> <P>
|
|
<!-- =================================================================== -->
|
|
|
|
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
|
|
SQL RDBMS PostgreSQL v6.3 released for Linux
|
|
</H3>
|
|
<P>
|
|
Date: Tue, 10 Mar 1998 12:56:10 GMT<BR>
|
|
SQL RDBMS PostgreSQL v6.3 released for Linux.
|
|
PostgreSQL is a RDBMS SQL server which is the "default SQLserver"
|
|
shipped with most Linux distributions.
|
|
<P>
|
|
For more information: <BR>
|
|
<A HREF="http://www.postgresql.org/">http://www.postgresql.org/</A>,
|
|
<A HREF="mailto:gold_bag@yahoo.com">gold_bag@yahoo.com</A>
|
|
|
|
<P> <hr> <P>
|
|
<!-- =================================================================== -->
|
|
|
|
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
|
|
nosql-0.9 - Unix RDBMS
|
|
</H3>
|
|
<P>
|
|
Date: Tue, 10 Mar 1998 12:57:56 GMT<BR>
|
|
A new release of NoSQL is available at :
|
|
<A HREF="ftp://ftp.linux.it/pub/database/nosql-0.9.tar.gz">
|
|
ftp://ftp.linux.it/pub/database/nosql-0.9.tar.gz</A>
|
|
<P>
|
|
NoSQL is a simple Relational Database Management System for Unix.
|
|
There have been several major changes from v0.8 to v0.9.
|
|
Please read file README-v0.9 distributed with the package.
|
|
<P>
|
|
For more information: <BR>
|
|
ILS - Italian Linux Society,
|
|
Carlo Strozzi, <A HREF="mailto:carlos@linux.it">carlos@linux.it</A>
|
|
|
|
<P> <hr> <P>
|
|
<!-- =================================================================== -->
|
|
|
|
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
|
|
RITW: Very simple network monitoring tool
|
|
</H3>
|
|
<P>
|
|
Date: Tue, 10 Mar 1998 13:12:39 GMT<BR>
|
|
RITW is a small set of scripts that allow any user to monitor
|
|
network/host
|
|
status using a common WWW browser and a central monitoring site through
|
|
ICMP and HTTP.
|
|
Although it will probably run on any platform, it was only tested on
|
|
Linux.
|
|
<P>
|
|
Primary site is at <BR>
|
|
<A HREF="http://www.terravista.pt/Ancora/1883/ritw_e.html">
|
|
http://www.terravista.pt/Ancora/1883/ritw_e.html</A> <BR>
|
|
<A HREF="http://www.terravista.pt/Ancora/1883/ritw.html">
|
|
http://www.terravista.pt/Ancora/1883/ritw.html</A> (portuguese)
|
|
<P>
|
|
For more information: <BR>
|
|
Rui Pedro Bernardinoa, Parque Expo'98, Portugal,
|
|
<A HREF="mailto:rbernardino@expo98.pt">rbernardino@expo98.pt</A>
|
|
|
|
<P> <hr> <P>
|
|
<!-- =================================================================== -->
|
|
|
|
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
|
|
Socket Script v1.5
|
|
</H3>
|
|
<P>
|
|
Date: Tue, 10 Mar 1998 13:30:15 GMT
|
|
Socket Script has been made for people who wants to create
|
|
networking-oriented programs, but don't want to learn all the socket
|
|
stuff. It has multiple network commands that enable you to tell the
|
|
SScript interpreter where you want to connect, and all you have to
|
|
do is focus on the script itself, leaving the connection parts to
|
|
SScript. The best part is that most scripts will run on most Unix
|
|
workstations, and win32 platforms.
|
|
<P>
|
|
Available at:<BR>
|
|
<A HREF="http://devplanet.fastethernet.net/sscript.html">
|
|
http://devplanet.fastethernet.net/sscript.html</A>
|
|
<P>
|
|
|
|
<P> <hr> <P>
|
|
<!-- =================================================================== -->
|
|
|
|
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
|
|
newsfetch-1.11 - pull news via NNTP to a mailbox
|
|
</H3>
|
|
<P>
|
|
Date: Tue, 10 Mar 1998 14:10:57 GMT<BR>
|
|
newsfetch: Most Compact and Powerful Utility to download the news from
|
|
an NNTP server and stores in the mailbox format.
|
|
New version of newsfetch (1.11) is uploaded to sunsite.unc.edu:
|
|
<P>
|
|
newsfetch-1.11.tar.gz
|
|
newsfetch-1.11-1.i386.rpm
|
|
newsfetch-1.11-1.src.rpm
|
|
<P>
|
|
available in ftp://sunsite.unc.edu/pub/Linux/Incoming/
|
|
and in proper place (/pub/Linux/system/news/reader) when they move the
|
|
files. New version is available in .tar.gz and .rpm format.
|
|
<P>
|
|
For more information: <BR>
|
|
Yusuf Motiwala, <A
|
|
HREF="mailto:ymotiwala@hss.hns.com">ymotiwala@hss.hns.com</A>
|
|
|
|
<P> <hr> <P>
|
|
<!-- =================================================================== -->
|
|
|
|
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
|
|
nv-dc1000 digital camera image reader v0.1 beta
|
|
</H3>
|
|
<P>
|
|
Date: Tue, 10 Mar 1998 14:30:22 GMT<BR>
|
|
A small program to transfer images from the digital still camera known as
|
|
NV-DC1000 or PV-DC1000 from Panasonic. First beta version, but it works.
|
|
<P>
|
|
For more information: <BR>
|
|
Societas Datoriae Universitatis Lundensis et Instituti Technici
|
|
Lundensis<BR>
|
|
Fredrik Roubert, <A HREF="mailto:roubert@df.lth.se">roubert@df.lth.se</A>,
|
|
<A HREF="http://www.df.lth.se/~roubert/NV-DC1000.html">
|
|
http://www.df.lth.se/~roubert/NV-DC1000.html</A>
|
|
|
|
<P> <hr> <P>
|
|
<!-- =================================================================== -->
|
|
|
|
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
|
|
Cecilia2.0 - electroacoustic music software
|
|
</H3>
|
|
<P>
|
|
Date: Tue, 17 Mar 1998 08:45:31 GMT<BR>
|
|
<P>
|
|
We are happy to announce version 2 of CECILIA, the musician's software that
|
|
makes you funnier, smarter and more attractive to the opposite sex.
|
|
<P>
|
|
Cecilia was developed by composers of electroacoustic music for composers of
|
|
electroacoustic music. If you have to ask, don't bother.
|
|
Cecilia is probably the wackiest sound maker in the world at this time. In fact,
|
|
we believe nothing else even comes close.
|
|
Cecilia is for high-concept audio processing. It is not for sequencing your
|
|
rinky-dink samplers and synths.
|
|
<P>
|
|
Cecilia is freeware at present. The next version will not be. Count your blessings.
|
|
Cecilia runs on Macintoshes, Linux boxes and SGIs. It does not run on
|
|
Windows. When it does, we'll sell it and become obscenely wealthy.
|
|
<P>
|
|
Cecilia is strictly for people who have a sense of humour. We, on the other
|
|
hand, are very cranky people.
|
|
<P>
|
|
Cecilia is available for download at :<BR>
|
|
<A HREF="ftp://ftp.musique.umontreal.ca/pub/cecilia/">
|
|
ftp://ftp.musique.umontreal.ca/pub/cecilia/</A> <BR>
|
|
<P>
|
|
Cecilia's home page for manuals and info:<BR>
|
|
<A HREF="http://www.musique.umontreal.ca/CEC/">
|
|
http://www.musique.umontreal.ca/CEC/</A>
|
|
<P>
|
|
For more information: <BR>
|
|
Jean Piche, Universite de Montreal <BR>
|
|
<A HREF="http://mistral.ere.umontreal.ca/~pichej">
|
|
http://mistral.ere.umontreal.ca/~pichej</A>,
|
|
<A HREF="http://www.musique.umontreal.ca/electro/CEC/">
|
|
http://www.musique.umontreal.ca/electro/CEC/</A>
|
|
|
|
<P> <hr> <P>
|
|
<!-- =================================================================== -->
|
|
|
|
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
|
|
Free CORBA 2 ORB - omniORB 2.5.0 released.
|
|
</H3>
|
|
<P>
|
|
Date: Tue, 17 Mar 1998 09:12:28 GMT<BR>
|
|
The Olivetti and Oracle Research Laboratory has made available the second
|
|
public release of omniORB (version 2.5.0). We also refer to this version
|
|
as omniORB2.
|
|
The main change since the last public release (release 2.4.0) is the addition
|
|
of support for type Any and TypeCode. For further details of the changes, see
|
|
http://www.orl.co.uk/omniORB/omniORB_250/
|
|
<P>
|
|
omniORB2 is copyright Olivetti & Oracle Research Laboratory. It is free
|
|
software. The programs in omniORB2 are distributed under the GNU General
|
|
Public License as published by the Free Software Foundation. The libraries
|
|
in omniORB2 are distributed under the GNU Library General Public
|
|
License.
|
|
<P>
|
|
Source code and binary distributions are available from our Web pages:
|
|
<A HREF="http://www.orl.co.uk/omniORB/omniORB.html">
|
|
http://www.orl.co.uk/omniORB/omniORB.html</A>
|
|
<P>
|
|
omniORB2 is not yet a complete implementation of the CORBA core.
|
|
<P>
|
|
For more information:<BR>
|
|
Eoin Carroll, <A HREF="mailto:ewc@orl.co.uk">ewc@orl.co.uk</A> <BR>
|
|
Olivetti & Oracle Research Lab, Cambridge, UK
|
|
|
|
<P> <hr> <P>
|
|
<!-- =================================================================== -->
|
|
|
|
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
|
|
Mtools 3.9 - Access MS-Dos/Win 95 disks from Unix without mounting
|
|
</H3>
|
|
<P>
|
|
Date: Tue, 17 Mar 1998 08:38:33 GMT<BR>
|
|
I would like to announce a new release of Mtools, a collection of
|
|
utilities to access MS-DOS disks from Unix without mounting them.
|
|
<P>
|
|
Mtools supports Win'95 style long file names, FAT32, OS/2 Xdf disks
|
|
and 2m disks (store up to 1992k on a high density 3 1/2 disk). Mtools
|
|
also includes mpartition, a simple partitioning programming to setup
|
|
Zip and Jaz media on non-PC machines (SunOs, Solaris and HP/UX).
|
|
<P>
|
|
Mtools can currently be found at the following places:<BR>
|
|
<A HREF="http://linux.wauug.org/pub/knaff/mtools/">
|
|
http://linux.wauug.org/pub/knaff/mtools</A> <BR>
|
|
<A HREF="http://www.poboxes.com/Alain.Knaff/mtools/">
|
|
http://www.poboxes.com/Alain.Knaff/mtools/</A>
|
|
<P>
|
|
For more information:<BR>
|
|
Alain Knaff, <A HREF="mailto:knaff@tux.org">knaff@tux.org</A>
|
|
|
|
<P> <hr> <P>
|
|
<!-- =================================================================== -->
|
|
|
|
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
|
|
New XML.com site
|
|
</H3>
|
|
<P>
|
|
Date: Wed, 25 Mar 1998 20:08:29 -0800 (PST)
|
|
SEBASTOPOL, CA--XML, the industrial-strength mark-up language
|
|
used for Web development, is a
|
|
tool for electronic commerce and information management.
|
|
With the recent approval of the XML Specification by the World Wide Web
|
|
Consortium (W3C), interest in XML development has picked up
|
|
considerable steam.
|
|
<P>
|
|
To promote the development and commercial acceptance of XML, three
|
|
companies that have long been Web insiders--O'Reilly & Associates,
|
|
their affiliate Songline Studios, and Seybold Publications--have joined
|
|
together to create XML.com (http://www.xml.com), a new Web site that
|
|
serves as a key resource and nerve center for XML developers and users.
|
|
A preview site is now available, and the launch date for the full site
|
|
is May 1, 1998.
|
|
<P>
|
|
XML.com features a rich mix of information and services for the XML
|
|
community. The site is designed to serve both people who are already
|
|
working with XML and those HTML users who want to "graduate" to XML's
|
|
power and complexity.
|
|
<P>
|
|
For more information:<BR>
|
|
Sara Winge, <A HREF="mailto:sara@ora.com">sara@ora.com</A>
|
|
|
|
|
|
<P> <hr> <P>
|
|
<!--================================================================-->
|
|
<center>Published in <i>Linux Gazette</i> Issue 27, April 1998</center>
|
|
<P> <HR> <P>
|
|
<!-- =================================================================== -->
|
|
<A HREF="./index.html"><IMG SRC="../gx/indexnew.gif" ALT="[ TABLE OF
|
|
CONTENTS ]"></A>
|
|
<A HREF="../index.html"><IMG SRC="../gx/homenew.gif" ALT="[ FRONT
|
|
PAGE ]"></A>
|
|
<A HREF="./lg_tips27.html"><IMG SRC="../gx/back2.gif" ALT=" Back "></A>
|
|
<A HREF="./lg_answer27.html"><IMG SRC="../gx/fwd.gif" ALT=" Next "></A>
|
|
|
|
<P><HR><P>
|
|
<h5>This page written and maintained by the Editor of <I>Linux Gazette</I>,
|
|
<A HREF="mailto: gazette@ssc.com">gazette@ssc.com</A><BR>
|
|
Copyright © 1998 Specialized Systems Consultants, Inc. </H5>
|
|
<P>
|
|
<H4>"Linux Gazette...<I>making Linux just a little more fun!</I>"
|
|
</H4>
|
|
<P> <hr> <P>
|
|
|
|
<!-- =============================================================== -->
|
|
<center>
|
|
<H1><A NAME="answer">
|
|
<img src="../gx/ans.gif" alt="" border=0 align=middle>
|
|
The Answer Guy
|
|
<img src="../gx/ans.gif" alt="" border=0 align=middle>
|
|
</A></H1> <BR>
|
|
<H4>By James T. Dennis,
|
|
<a href="mailto:linux-questions-only@ssc.com">linux-questions-only@ssc.com</a><BR>
|
|
Starshine Technical Services, <A HREF="http://www.starshine.org/">
|
|
http://www.starshine.org/</A> </H4>
|
|
</center>
|
|
|
|
<p><hr><p>
|
|
<H3>Contents:</H3>
|
|
<ul>
|
|
<li><a HREF="./lg_answer27.html#mccluan">Regarding Compile Errors with
|
|
Tripwire 1.2</a>
|
|
<li><a HREF="./lg_answer27.html#karsh">Applix Spreadsheet ELF Macro
|
|
Language</a>
|
|
<li><a HREF="./lg_answer27.html#geene">Answer Guy Issue 18 -- Procmail Spam
|
|
Filter</a>
|
|
<li><a HREF="./lg_answer27.html#geene2">Great Procmail Article</a>
|
|
<li><a HREF="./lg_answer27.html#sindona">Linux Cluster Configuration</a>
|
|
<li><a HREF="./lg_answer27.html#holloway">IP Masquerading/Proxy?</a>
|
|
</ul>
|
|
|
|
<p><hr><p>
|
|
<!--================================================================-->
|
|
|
|
<a name="mccluan"></a>
|
|
<h3><img align=bottom alt=" " src="../gx/ques.gif">
|
|
Regarding Compile Errors with Tripwire 1.2
|
|
</h3>
|
|
<P> <B>
|
|
From: Tc McCluan, <A HREF="mailto:tc@4dcomm.com">tc@4dcomm.com</A>
|
|
</B> <P><B>
|
|
<img align=bottom alt=" " src="../gx/ans2.gif">
|
|
I was on http://www.starshine.org/linux/ and since I am unable to
|
|
compile Tripwire 1.2 on my system (redhat 4.2 with 2.0.33 kernel)
|
|
I am trying all avenues of help.
|
|
</B> <P><B>
|
|
I have tried the recommendation in the /contrib/README.linux but
|
|
I still get the same error message. I have tried many combinations,
|
|
but still no luck.
|
|
</B> <P><B>
|
|
Following are the list of errors I am getting, hopefully you can spot where
|
|
this compile is failing.
|
|
Thanks in advance,
|
|
</B> <P>
|
|
<img align=bottom alt=" " src="../gx/ans2.gif">
|
|
You could look for my Tripwire patch at
|
|
<P>
|
|
http://www.starshine.org/linux/
|
|
<P>
|
|
... or you could grab the RPM file from any Red Hat "contrib"
|
|
mirror like:
|
|
<P>
|
|
ftp://ftp.redhat.com/pub/contrib/i386/tripwire-1.2-1.i386.rpm
|
|
<P>
|
|
... for a precompiled binary or:
|
|
<P>
|
|
ftp://ftp.redhat.com/pub/contrib/SRPMS/tripwire-1.2-1.src.rpm
|
|
<P>
|
|
... for sources that you should be able to build cleanly.
|
|
<P>
|
|
So far I really haven't found a tripwire configuration that I really
|
|
like. I can never quite get the balance between what aspects to ignore
|
|
(permission and ownership changes on /dev/tty*, /dev/pty*, etc) and
|
|
which ones I need to watch.
|
|
<P>
|
|
So, if anyone out there as a really good tw.config file that really
|
|
minimizes the superfluous alerts and maximized the intrustion detection,
|
|
I'd like to hear about it.
|
|
<P>
|
|
Also if anyone has a YARD or other rescue disk builder that is customized
|
|
for creating write-protected tripwire boot/root diskette sets (for
|
|
periodic integrity auditing of Linux systems) I'd like to see a step-by-step
|
|
Mini-HOWTO or tutorial (maybe as a submission to Linux Gazette).
|
|
<P>
|
|
-- Jim
|
|
|
|
<p><hr><p>
|
|
<!--================================================================-->
|
|
|
|
<a name="karsh"></a>
|
|
<h3><img align=bottom alt=" " src="../gx/ques.gif">
|
|
Applix Spreadsheet ELF Macro Language
|
|
</h3>
|
|
<P> <B>
|
|
From: Paul T. Karsh ITTC-237B 8-286-xxxx, <A
|
|
HREF="mailto:karchpte@acm.org">karchpte@acm.org</A>
|
|
</B> <P><B>
|
|
I happened on the Linux Gazette in the process of searching
|
|
for some information on "scripting" macros in the Applixware
|
|
spreadsheet. Although this is not strictly a Linux question,
|
|
I hope you can help me with some "pointers" (links ?) on how to learn
|
|
this language. The Applixware help is no help and the company
|
|
at which I consult does not have the on-line Applixware books nor
|
|
the hardcopy "macro" manual.
|
|
</B> <P>
|
|
<img align=bottom alt=" " src="../gx/ans2.gif">
|
|
I played with Applixware a little bit -- but was highly
|
|
discouraged to find that its file conversion package
|
|
couldn't handle more recent versions of MS Word and Excel.
|
|
That was my main interest in the product since I occasionally
|
|
get file attachments in these proprietary formats -- and
|
|
sometimes they are potential customers.
|
|
<P>
|
|
As for the issue of learning this Macro language without
|
|
having the appropriate documentation. I would ask your
|
|
client where their manuals and/or installation CD is --
|
|
if they can't produce it and are unwilling to order a
|
|
replacement then I would question their decision to use
|
|
the product.
|
|
<P>
|
|
Applixware is a commercial product. Assuming this is
|
|
on a Linux system you'd probably want to contact Red Hat
|
|
Corporation to order replacement manuals (I think RH is
|
|
the sole Linux distributor for Applixware -- just as
|
|
Caldera is the sole distributor for the Linux version
|
|
of WordPerfect).
|
|
<P>
|
|
If they have the installation CD -- borrow it and install
|
|
its online documentation on some system somewhere (long
|
|
enough to get the information your need). Be sure to remove
|
|
that installation unless the appropriate licensing arrangements
|
|
are made, of course.
|
|
<P> <B>
|
|
<img align=bottom alt=" " src="../gx/ques.gif">
|
|
Is there somewhere on the net (FTP or anything) where I can get an intro
|
|
to this? I tried the Applixware site; it just seems to be page after
|
|
page of PR.
|
|
</B> <P>
|
|
<img align=bottom alt=" " src="../gx/ans2.gif">
|
|
I would like to see far more technical content on their
|
|
web site as well. (The same desire applies to other hardware
|
|
and software company sites).
|
|
<P>
|
|
-- Jim
|
|
|
|
<p><hr><p>
|
|
<!--================================================================-->
|
|
|
|
<a name="geene"></a>
|
|
<h3><img align=bottom alt=" " src="../gx/ques.gif">
|
|
Answer Guy Issue 18 -- Procmail Spam Filter
|
|
</h3>
|
|
<P> <B>
|
|
From: Anthony E. Geene, <A HREF="mailto:agreene@pobox.com">
|
|
agreene@pobox.com</A>
|
|
</B> <P><B>
|
|
I'm not a procmail user, but I've found that most spam is sent using
|
|
envelope addresses, the standard recipient headers are not addressed to
|
|
the actual recipient. So I set up filters to catch my mailing list mail
|
|
and any mail that is addressed to a list of my vailid addresses. Other
|
|
mail is put elsewhere for later review.
|
|
</B> <P><B>
|
|
Such a method is relatively simple and would catch all but the
|
|
more sophisticated spammers.
|
|
</B> <P>
|
|
<img align=bottom alt=" " src="../gx/ans2.gif">
|
|
It is a good suggestion. It doesn't work if you have
|
|
some people that prefer to Bcc: you (use "blind carbon
|
|
copies"). Naturally many people's mail user agents
|
|
(MUA's) like elm, pine, etc don't have obvious options for
|
|
Bcc:'s -- others do (and most Unix/Linux MUA's allow
|
|
some way to do it -- even if it isn't *obvious*).
|
|
<P>
|
|
There are probably a number of other "false positive"
|
|
situations. As you say most automated mailing lists
|
|
have headers that would trigger on your criteria. The
|
|
obvious response to these problems is to make a list of
|
|
all the exceptional cases (of which you are aware) and
|
|
add appropriate rules to precede your anti-spam filter.
|
|
<P>
|
|
In addition it is important to ensure that your disposition
|
|
of apparently bogus messages is a refile to a specific
|
|
mail folder. You don't want to file it to /dev/null!
|
|
<P>
|
|
As you check your "probably junk" folder you can manually
|
|
refile the exceptions -- and optionally add new rules to
|
|
"pre-approve" lists of your favorite correspondents.
|
|
<P>
|
|
Note: if you keep a list of correspondents and a list of
|
|
known spammers, and you write a recipe to check the list
|
|
you may be concerned about the amount of time spent in
|
|
'grep'. Here's a hint: keep the list sorted and use the
|
|
'look' command.
|
|
<P>
|
|
(The advantage of 'look' is that it does a "binary" search
|
|
(think about successive approximation to "zero in on" the
|
|
desired lines) on a sorted file -- and returns the lines
|
|
that match. While the overhead of 'grep' grows in a linear
|
|
fashion (the search doubles in time as the file doubles
|
|
in size) that of 'look' grows much more slowly (it's
|
|
proportional to the square root of number of records/lines
|
|
in the file). Similar results would be attained if one
|
|
used 'dbm' hashes (indexes) -- but there is greater overhead
|
|
in programming (Perl offers modules to support dbm, gdbm,
|
|
ndbm and other hashing libraries -- it also has much higher
|
|
load time overhead as a result of it's generality).
|
|
<P>
|
|
The point is that even on a small file (100 lines) I
|
|
can see about a 10% difference in overhead. After a
|
|
few thousand lines the difference is substantial
|
|
(grep takes twice as long to run).
|
|
<P>
|
|
None of this matters much on your personal workstation
|
|
which has only one active user and receives a couple
|
|
hundred e-mail items per day. However -- if you're
|
|
filtering on the company mailhub, or at your ISP's
|
|
location -- it's worth it to reduce your impact.
|
|
<P>
|
|
-- Jim
|
|
|
|
<p><hr><p>
|
|
<!--================================================================-->
|
|
|
|
<a name="geene2"></a>
|
|
<h3><img align=bottom alt=" " src="../gx/ques.gif">
|
|
Great Procmail Article!
|
|
</h3>
|
|
<P> <B>
|
|
From: Anthony E. Geene, <A HREF="mailto:agreene@pobox.com">
|
|
agreene@pobox.com</A>
|
|
</B> <P><B>
|
|
I read your procmail article in issue 14 of the Linux Gazette. It was
|
|
the best explanation of how procmail works that I've seen yet.
|
|
</B> <P><B>
|
|
I just wanted to say Thanks,<BR>
|
|
Anthony,
|
|
</B> <P>
|
|
<img align=bottom alt=" " src="../gx/ans2.gif">
|
|
Thanks for the feedback. BTW there is a new article on
|
|
use TDG (The Dotfile Generator) as a GUI front end for
|
|
creating procmail scripts. I haven't finished reading
|
|
it yet -- but it looks pretty good to me.
|
|
<P>
|
|
In your earlier mail you mentioned that you aren't using
|
|
procmail yet. This article on TDG and my explanation of
|
|
what's going on "under the hood" may yet change that.
|
|
(Also, somewhere on that morass of half-baked pages that
|
|
I keep as a "website" are some links to other procmail
|
|
and mail filtering resources).
|
|
<P>
|
|
-- Jim
|
|
|
|
<p><hr><p>
|
|
<!--================================================================-->
|
|
|
|
<a name="sindona"></a>
|
|
<h3><img align=bottom alt=" " src="../gx/ques.gif">
|
|
Linux Cluster configuration
|
|
</h3>
|
|
<P> <B>
|
|
From: Antonio Sindona, <A HREF="mailto:Antonio.Sindona@trinacria.it">
|
|
Antonio.Sindona@trinacria.it</A>
|
|
</B> <P><B>
|
|
I'd like to create a *Linux cluster configuration* to have some degree of
|
|
fault-tolerance (Linux normally works ... hardware not always ! ;-) ). Do
|
|
You know if somebody tried to develop something to solve this problem ?
|
|
</B> <P>
|
|
<img align=bottom alt=" " src="../gx/ans2.gif">
|
|
The first place I'd look for info on fault tolerance for
|
|
Linux would be:
|
|
Linux High Availability HOWTO<BR>
|
|
http://sunsite.unc.edu/pub/Linux/ALPHA/linux-ha/High-Availability-HOWTO.html
|
|
<P>
|
|
Then take a look at:
|
|
<P>
|
|
Linux Parallel Processing HOWTO<BR>
|
|
http://yara.ecn.purdue.edu/~pplinux/pphowto.html
|
|
<P>
|
|
... and:
|
|
<P>
|
|
MP and Clustering for Linux<BR>
|
|
http://linas.org/linux/mp.html
|
|
<P>
|
|
One of the most famous Linux parallel computing projects (which has
|
|
been written up in the _Linux_Journal_ among other places) is the
|
|
Beowulf Project:
|
|
<P>
|
|
http://sdcd.gsfc.nasa.gov/ESS/linux.html
|
|
<P>
|
|
After you've been overwhelmed by reading all of that you can
|
|
slog through all of the links at:
|
|
<P>
|
|
Linux Parallel Processing Using Clusters<BR>
|
|
http://yara.ecn.purdue.edu/~pplinux/ppcluster.html
|
|
<P>
|
|
.... which include links to some classic Unix projects like
|
|
"Condor," PVM, and MPI.
|
|
<P>
|
|
After reading all of those you'll undoubtedly decide that Linux
|
|
is years ahead of Microsoft in the field of clustering. (MS'
|
|
"wolfpack" project is still vaporware last I heard). However,
|
|
lest we grow complacent we should consider some features that Linux
|
|
needs to compete with mainframe and mini clustering technologies
|
|
(like those in VMS, and the ones that HP managed to eke out of
|
|
their aquisition of Apollo -- when they gutted DomainOS, from what
|
|
I hear).
|
|
<P>
|
|
The two features Linux needs in order to attain the next level
|
|
of clustering capacity are "transparent checkpointing" and
|
|
"process migration."
|
|
<P>
|
|
"Transparent checkpointing" allows the kernel to periodically
|
|
take a comprehensive snapshot of a process' state (to disk or
|
|
to some network filesystem) and allows the OS to restart a
|
|
process "where it left off" in the event of a system failure.
|
|
<P>
|
|
(System failures that damage the checkpoint files notwithstanding,
|
|
of course).
|
|
<P>
|
|
"Process Migration" allows a node's kernel to push a process
|
|
onto another (presumably less heavily loaded) system. The process
|
|
continues to run on the new system without any knowlege of the
|
|
transition.
|
|
<P>
|
|
At first it seems like "checkpointing" would cost way too much
|
|
in performance. However, it turns out that relatively little
|
|
of your system's RAM has been modified from the disk images
|
|
(binaries and libraries) in any given time frame. I've heard
|
|
reliable reports that this has almost trivial overhead on a
|
|
Unix/Linux like system.
|
|
<P>
|
|
It's easy to see how "checkpointing" is a necessary feature
|
|
to support process migration. However, it's not enough. You
|
|
also need mechanisms to allow the target kernel to give the
|
|
incoming process access to all of the resources that it had
|
|
allocated (open file descriptors, other interprocess channels,
|
|
etc). For Unix like systems you also have to account for
|
|
the process structure (the PID of the process can't change)
|
|
-- and there has to be some implicit inter-node communications
|
|
to maintain the process groups (to get a process' exit
|
|
status to its parent and to allow members of a process group
|
|
to get status and send signals to it.
|
|
<P>
|
|
There have been a number of operating systems that have implemented
|
|
checkpointing and process migration features. Chorus Mi/X, Berkeley
|
|
Sprite and Amoeba (a project that the father of Minix, Andrew S.
|
|
Tanenbaum, collaborated on) come to mind.
|
|
<blockquote>
|
|
(see http://www.am.cs.vu.nl/ for info on Amoeba,
|
|
http://HTTP.CS.Berkeley.EDU/projects/sprite/ for
|
|
Sprite, and http://www.chorus.com for Chorus Mi/X
|
|
info).
|
|
</blockquote>
|
|
One Unix package that is supposed to offer these features is Softway Ltd's
|
|
Hibernator II. Just SGI and a Fujitsu mainframe version are supported.
|
|
This is probably an expensive commercial package and we shouldn't
|
|
hold our breath for a Linux port.
|
|
<P>
|
|
* http://softway.com.au/softway/products/hibernator.html
|
|
<P>
|
|
The MOSIX project also supports transparent process migration (imagine
|
|
that copy of emacs being moved from one overloaded CPU to an idle
|
|
machine while you were using it). It is currently available on
|
|
BSD/OS. However we're in luck! As I was typing this and checking
|
|
my URL's and references I noticed the following statement on their
|
|
pages:
|
|
<P>
|
|
``MOSIX for Linux (RedHat) is now under development''
|
|
<P>
|
|
(Yay!).
|
|
<P>
|
|
You can read more about MOSIX (and see this note yourself) at:
|
|
<P>
|
|
http://www.cs.huji.ac.il/mosix/
|
|
(Hebrew University, Israel)<BR>
|
|
http://www.cnds.jhu.edu/mirrors/mosix/txt_main.html
|
|
<P>
|
|
One OS project that I've been keeping my eye on for awhile has been
|
|
EROS (http://www.cis.upenn.edu/~eros/). This isn't widely
|
|
available yet -- but I have high hopes for it. It will use a
|
|
"persistence" model that implicitly checkpoints the state of the
|
|
entire system (all processes and threads).
|
|
<P>
|
|
EROS is not "Unix" though it should eventually support a Unix/Linux
|
|
compatible subsystem (called Dionysix). The major difference is that
|
|
EROS is a pure "capabilities" system. ``Capabilities'' are the key to a
|
|
security model that is much different than the traditional identity/group
|
|
(Unix), process privileges (VMS and Posix.6), and ACL (NT, Netware,
|
|
etc) that are common in other operating systems. Read Mr. Shapiro's
|
|
web pages for more info on that.
|
|
<P>
|
|
I personally think we (in the Linux community) have quite a bit
|
|
to learn from other operating systems -- their strengths and
|
|
their weaknesses. To anyone of us who would say "But those are
|
|
just obscure systems. Nobody is running those!" I would point
|
|
out that millions of PC users still have that same reaction to
|
|
Linux.
|
|
<P>
|
|
So, to learn *far* more than you ever wanted to know about
|
|
operating systems *other* than DOS, MacOS, and Unix take a
|
|
look at the links on my short page about OS':
|
|
<P>
|
|
http://www.starshine.org/jim/os/
|
|
<P>
|
|
-- Jim
|
|
|
|
<p><hr><p>
|
|
<!--================================================================-->
|
|
|
|
<a name="holloway"></a>
|
|
<h3><img align=bottom alt=" " src="../gx/ques.gif">
|
|
IP Masquerading/Proxy?
|
|
</h3>
|
|
<P> <B>
|
|
From: Jack Holloway
|
|
</B> <P><B>
|
|
Ok... I'm alittle foggy on the terminology... if I have a machine on an
|
|
ethernet network that is hooked to the internet, and I want all of the other
|
|
machines on the network to connect to the internet THROUGH the machine
|
|
connected to the internet, I need to use IP masquerading or proxy server
|
|
stuff?
|
|
</B> <P>
|
|
<img align=bottom alt=" " src="../gx/ans2.gif">
|
|
You can use IP Masquerading and/or any sort of proxy systems.
|
|
<P>
|
|
IP Masquerading is a particular form of NAT (network
|
|
address translation).
|
|
<P>
|
|
The one machine (your Linux box) that is connected to
|
|
your LAN and to the Internet is the "router" or "gateway."
|
|
("routers" work at the "transport" layer, while "gateways"
|
|
work at the "applications" layer of the OSI reference model).
|
|
(More on that later).
|
|
<P>
|
|
One "real" (IANA issued) IP address is assigned to the
|
|
"outer" interface and attached to the Internet (through
|
|
your ISP). This will typically be a PPP link through your
|
|
router/gateway's modem -- though it might be any network
|
|
interface that you can get Linux to use.
|
|
<P>
|
|
One the other interface (typically an ethernet card) you
|
|
assign one out of any of the "private" or "reserved for
|
|
disconnected networks" IP address ranges as defined in
|
|
RFC1918 (previously in RFC1597 and 16??). These RFC1918
|
|
addresses are guaranteed to never be issued to any
|
|
Internet host (so those of use using them on our networks
|
|
will never create an ambiguity with *our* router by attempting
|
|
to access a machine *outside* our network that has an IP
|
|
address that duplicates one *inside* of our network).
|
|
<P>
|
|
The RFC1918 address blocks are:
|
|
<PRE>
|
|
10.*.*.* (one class A net)
|
|
172.16.*.* through 172.31.*.* (16 class B's)
|
|
192.168.0.* through 192.168.255.* (255 class C's)
|
|
</PRE>
|
|
You can pick any of those RFC1918 address blocks and
|
|
you can subnet them anyway that's convenient. I use
|
|
192.168.64.0 for my home LAN.
|
|
<P>
|
|
Within my LAN I use the .1 address (192.168.64.1) for my
|
|
Linux gateway/router's ethernet -- it gets its other (real)
|
|
IP address dynamically from my ISP when 'diald' establishes
|
|
a connection (diald is a daemon that automatically invokes my
|
|
ppp connection whenever traffic routing to the network is
|
|
required -- I actually have another RFC1918 address assigned
|
|
to the SLIP connection that diald uses for internal purposes).
|
|
I run a caching nameserver on this box (which we'll call "gw").
|
|
<P>
|
|
All systems on my LAN execute a line like the following:
|
|
<PRE>
|
|
route add -net 192.168.64.0 eth0
|
|
</PRE>
|
|
... in their rc scripts at some point. This configures
|
|
them to all agree where packets for this network go.
|
|
This is called a "static" route.
|
|
<P>
|
|
I then point the /etc/resolv.conf on all of the "client" machines
|
|
on my LAN to "gw" and add a default route to each of them that
|
|
looks like:
|
|
<PRE>
|
|
route add default gw 192.168.64.1
|
|
# other traffic goes to host named "gw"
|
|
</PRE>
|
|
(the "client" machines don't have to be Linux and don't
|
|
have to have any special support for IP Masquerading --
|
|
you just assign them IP addresses like 192.168.64.2, etc.
|
|
to each of them).
|
|
<P>
|
|
In the "gw" server I have the kernel compiled with masquerading
|
|
and "forwarding" support enabled (of course). I don't put in
|
|
the default static route -- that would be a loop. "gw" also
|
|
has a different /etc/resolv.conf file -- one that points to
|
|
a couple of my ISP nameservers.
|
|
<P>
|
|
Note: One trick I've learned about resolv.conf files --
|
|
You only get three nameserver entries (in most versions of
|
|
the bind libraries) -- so I repeat the first and the last
|
|
one. When a query times out (for a client) it moves to the
|
|
second nameserver. Meanwhile the first nameserver still
|
|
has a good chance of getting a response (DNS over today's
|
|
busy Internet times out more often than nameservers fail).
|
|
So, a timeout on the second nameserver leads to a repeat
|
|
request on the first one -- which has probably received
|
|
and cached a response by this time. I could explain that
|
|
in more detail -- but the real gist is: try it. It helps.
|
|
<P>
|
|
Now, back to masquerading:
|
|
<P>
|
|
All it takes for masquerading to work is to run the command
|
|
<PRE>
|
|
LAN="192.168.64.0/24"
|
|
ipfwadm -F -a accept -m -S $LAN -D 0.0.0.0/0
|
|
</PRE>
|
|
... which means:
|
|
<P>
|
|
use the "IP firewall administrative" program to
|
|
make the following change to the "forwarding" (-F)
|
|
table:
|
|
<blockquote>
|
|
add/append (-a) a rule to accept for
|
|
masquerading (-m) any packet from (-S
|
|
or "source address") my LAN (which is a
|
|
shell variable I defined in the preceding
|
|
line) that is going to (whose "destination"
|
|
-D) is anywhere (0.0.0.0/0).
|
|
</blockquote>
|
|
Here's how that works. When the kernel receives a packet
|
|
that's not destined for the localhost (the gateway itself)
|
|
it checks to see if forwarding is enabled, then it looks in
|
|
the routing table to see where the packet should go. My
|
|
gateway's default route is pointing to the sl0 interface
|
|
(the SLIP interface that diald maintains to detect outgoing
|
|
traffic) -- when diald detects traffic on sl0 -- it
|
|
runs my PPP connection script which changes the default
|
|
route to point to my ISP's routers (which is part of the
|
|
information that's negotiated via PPP along with my
|
|
dynamic IP address). Now the packet is "forwarded" from
|
|
interface to the other. Assuming that the packet came
|
|
from my LAN (via the ethernet card in "gw" the kernel's
|
|
packet filtering ("firewall") code takes over.
|
|
<P>
|
|
ipfw inspects the packet to see if it was part of an
|
|
existing TCP session (part of a connection that it has
|
|
already been working with). If it is than ipfw notes
|
|
the TCP "port" that this session is assigned to, otherwise
|
|
ipfw just picks another port. If it picks a new port it
|
|
adds an entry to it's masquerading table that records the
|
|
packet's original source address and source port. The
|
|
"client" machine on my LAN is expecting any reply packets to
|
|
come back to the appropriate source port (which is how it
|
|
knows which process' "socket" to write the reply packets to)
|
|
-- ipfw then re-writes the packet headers, changing the source
|
|
address to match the one on ppp0 (the "real IP address for
|
|
which my ISP knows a route), and changing the source port to
|
|
the one it selected.
|
|
<P>
|
|
When ipfw receives reply packets the kernel routes them to
|
|
sockets which ipfw owns (the source port on my outgoing
|
|
packets becomes the destination port on the reply packets).
|
|
ipfw then looks that socket up in its table, retrieves the
|
|
*original* source addr and port (for the outgoing packet that
|
|
generated this reply) rewrites the destination fields (on the
|
|
*reply* packet). Finally the (now re-written) packet is
|
|
routed to the LAN.
|
|
<P>
|
|
Effectively IP Masquerading makes a whole LAN full of machines
|
|
look like one really busy one to the rest of the Internet.
|
|
While a typical workstation might only have a few dozen
|
|
active network connections available, a masquerading gateway
|
|
might have hundreds or thousands. As a practical matter
|
|
the TCP/IP protocol provides a 16 bit field for "ports" and
|
|
Most Unix systems can't handle more than a few thousand
|
|
concurrent open connections (sockets) and file descriptors.
|
|
(This has to do with the tables that the kernel allocates
|
|
for the data structures that manage all this -- regardless
|
|
of whether masquerading is active or not). Luckily you're
|
|
unlikely to have enough bandwidth to approach Linux'
|
|
capacity.
|
|
<P>
|
|
I'm sorry for the length of that description. Note that
|
|
it is purely conceptual (I've never read the code, I've
|
|
just deduced what it must be doing from what I know of
|
|
how TCP works).
|
|
<P> <B>
|
|
<img align=bottom alt=" " src="../gx/ques.gif">
|
|
Ouch! That's a big question there! Ok, firstly, do own IPs for every
|
|
machine on your network? (That is, do you have an internet unique IP for
|
|
each machine) If so, all you want is routed. If you don't, then to
|
|
</B> <P>
|
|
<img align=bottom alt=" " src="../gx/ans2.gif">
|
|
'routed' is deprecated. In addition he doesn't need routed
|
|
or gated to talk to his ISP (and almost certainly can't
|
|
use it with them -- they won't listen to his routes unless
|
|
he goes out and gets an AS number and negotiates a contract
|
|
for "peering" with them which would absurd unless he were
|
|
becoming a multi-home ISP or something like that).
|
|
<P>
|
|
The case where routed or gated makes sense is with his
|
|
own internetwork of LAN's. If he has several ethernet
|
|
segments and is moving systems around them frequently
|
|
(or adding new IP devices to them) then it would be
|
|
be useful. For simpler and for more structured LANs
|
|
(each ether segment gets a subnet -- a global, static
|
|
routing table is distributed to all routers) you don't
|
|
need or want 'routed' or 'gated'.
|
|
<P>
|
|
If he had a block of ISP (or IANA) issued IP addresses,
|
|
his ISP would have to include routing to them (they
|
|
don't make sense otherwise). Usually this amounts to
|
|
some static routes that they maintain in their systems
|
|
-- specifically some entries that are invoked whenever
|
|
your system authenticates on one of their terminal servers
|
|
or routers.
|
|
<P>
|
|
You don't have to run any software on your end to make
|
|
use of this routing. (That's a confusing statement --
|
|
you have to run PPP or SLIP to connect to them -- but
|
|
once you're connected they will route packets to you
|
|
even if your routes back to them are completely missing).
|
|
<P>
|
|
As I've described above -- you just have to have your
|
|
own LAN routing set up properly. That means that each
|
|
system on your LAN has "-net" routes unto your ethernet
|
|
and a "default gw" route to your router/gateway (masquerading
|
|
host).
|
|
<P> <B>
|
|
<img align=bottom alt=" " src="../gx/ques.gif">
|
|
browse the web you can use a proxy server(which looks to the outside world
|
|
as if only the proxy is actually on the net.). If you want to telnet etc.
|
|
out, you will need IP-Masquerading, which isn't the most reliable way of
|
|
doing things. ask me further in email if you need more detail!
|
|
</B> <P>
|
|
<img align=bottom alt=" " src="../gx/ans2.gif">
|
|
I disagree with several points here. Both masquerading *and*
|
|
proxying look like "only the proxy is actually on the net."
|
|
-- because only the router/gateway has an IP address with
|
|
valid Internet routes. The rest of your LAN is "hidden"
|
|
(behind your "gw") because those IP addresses don't have
|
|
valid Internet routes. The are IP addresses but they are
|
|
not *Internet* addresses!
|
|
<P>
|
|
Proxying is an applications layer solution. Masquerading
|
|
and NAT are transport layer. The difference is what
|
|
data structures the software is dealing with.
|
|
<P>
|
|
At the network layer we're working with "data frames." This
|
|
is what an ethernet bridge or switch uses -- the MAC (BIA)
|
|
addresses. That's also the layer at which ARP (address
|
|
resolution protocol) works. It's how one host finds
|
|
finds the ethernet card address of another system that's
|
|
on the same LAN (how our client machines "find" our router/gw).
|
|
<P>
|
|
At the transport layer we deal with packets. These have IP
|
|
addresses (as opposed to the MAC -- media access control --
|
|
addresses in the ethernet "frame" header). This is where
|
|
the masquerading happens. As I've described masquerading
|
|
involves a relatively "dumb" (mechanical) bit of packet
|
|
patching with some table reference and maintenance.
|
|
Technically there are some details I left out -- like
|
|
recomputing the packet checksums.
|
|
<P>
|
|
The problem is that the transport layer conveys no information
|
|
about the applications protocol for which it is a carrier.
|
|
For "normal" TCP protocols (like HTTP and telnet) this is
|
|
no problem. However, FTP and a few other protocols do "bad"
|
|
things. In particular an FTP session consists of *two* TCP
|
|
sessions (a control session which is initiated from the client
|
|
to the server) and a data session which is initiated from the
|
|
server back to the client! The IP address and port to which
|
|
this "return connection" goes is passed to the server via
|
|
the control connection. This last detail has caused more
|
|
firewall designers and admins to rip out their hair than
|
|
all the cheap combs from China. In the context of masquerading
|
|
it means that the masquerading server must monitor the
|
|
*data* (the stuff in the payloads of the packets) and make
|
|
some selective patches therein. In the other cases we only
|
|
touched the headers of each packet -- never the contents of
|
|
their payloads.
|
|
<P>
|
|
So, this is the part of Masquerading that is unreliable.
|
|
Linux IP Masquerading is by no means the only flavor --
|
|
though it's probably the most widely used by now. Linux
|
|
as several modules for dealing with unruly protocols --
|
|
so the usually work.
|
|
<P>
|
|
However, I've found it more reliable to use the TIS FWTK
|
|
ftp-gw (Trusted Information Systems http://www.tis.com,
|
|
Firewall Toolkit). This is a proxy.
|
|
<P>
|
|
Proxy packages work at the applications layer. You have
|
|
to have support for each applications protocol (http, ftp,
|
|
telnet, rlogin, smtp, etc) that you want to allow "through"
|
|
your firewall. They come in two forms: SOCKS and FWTK
|
|
(There are many of them besides these -- but all of them
|
|
follow one *model* or the other).
|
|
<P>
|
|
In the FWTK model the user opens his or her initial
|
|
connection to the firewall (I 'ftp' to gw.starshine.org).
|
|
The firewall (gateway) is running the FWTK proxy *instead
|
|
of* (or *in addition to*) the normal server (ftpd). If
|
|
it is "in addition to" than one or the other must be on a
|
|
different port or using a different IP Alias on the machine
|
|
(more on that later). Now my FTP server (ftp-gw) prompts
|
|
me to "login"
|
|
<P>
|
|
For a normal FTP server I'd type my name (or "ftp" or "anonymous").
|
|
For ftp-gw I'm trying to go *though* this machine and unto
|
|
one that's on the other side (on the Internet). So I have to
|
|
provide more information. So I type:
|
|
<P>
|
|
ftp@sunsite.unc.edu
|
|
<P>
|
|
... or
|
|
<P>
|
|
webauthor@www.svlug.org
|
|
<P>
|
|
... or whatever. The gateway ftp server then opens a connection
|
|
to my target (everthing *after* the @ sign) and passes my
|
|
name (everything before the @ sign) to *its* login prompt.
|
|
<P>
|
|
The TIS FWTK comes with a number of other small proxies --
|
|
and most of them work in a similar fasion. (There are
|
|
also options to limit *who* can access *what* and *when*
|
|
(via administrator edited access control lists).
|
|
<P>
|
|
The key point here is that FWTK doesn't require any special
|
|
client software support. The users have to be trained how
|
|
to traverse the firewall and the have to remember how to do it.
|
|
<P>
|
|
FWTK is only appropriate for relative small groups of technically
|
|
savvy users (who are easy to train in this and won't make the
|
|
sysadmin's life a constant hell of walking everyone through this
|
|
extra connectivity step).
|
|
<P>
|
|
SOCKS has a model that works for larger groups of less savvy
|
|
users. However, it requires that you install SOCKS aware
|
|
versions of your client applications. So you have to replace
|
|
your normal telnet, ftp, rlogin, etc with a "socksified"
|
|
version. In many cases it is possible to effectively
|
|
"socksify" all of your client utilities by replacing a shared
|
|
library (Unix/Linux) or a DLL (Windows). Many commercial
|
|
TCP clients and utilities are built with SOCKS support
|
|
(Netscape Navigator and Communicator are prime examples).
|
|
I think the Trumpet shareware utilities for Windows are
|
|
another.
|
|
<P>
|
|
The hassle is installing and configuring this software on every
|
|
client system. However, the advantage is that none of the users
|
|
has to remember, or even know, about the firewall. The SOCKS
|
|
applications will automatically negotiate sessions through the
|
|
firewall.
|
|
<P>
|
|
There are some protocols that are inherently easy or even
|
|
unnecessary to proxy. For example DNS doesn't need to
|
|
be proxied. You run your caching copy of named and let
|
|
all of the client machines talk to and trust it. This
|
|
gives a great performance boost to most of the clients
|
|
and saves quite a bit of bandwidth on the critical link
|
|
to the ISP. There is no reason that I can think of not
|
|
to run a caching nameserver somewhere on your Internet
|
|
connected LAN.
|
|
<P>
|
|
HTTP is a protocol that benefits quite a bit from proxying.
|
|
It is trivial to add caching features a web proxy -- and
|
|
I think just about all of them do so.
|
|
<P>
|
|
SMTP is a protocol that doesn't need proxying (from the
|
|
standpoint of the clients on your LAN). You configure
|
|
an internally accessible system to accept mail and
|
|
it will relay it to your gateway via whatever means
|
|
you configure. A typical model would be that outgoing
|
|
mail is collected on an internal hub, which is configured
|
|
to relay it to the external gateway, which, in turn,
|
|
relays it to the ISP and on to the world. To see what
|
|
this looks like read the "Received" headers in some of your
|
|
mail.
|
|
<P>
|
|
The externally visible mail gateway can route mail
|
|
back to the internal hub -- which can run POP and/or
|
|
IMAP servers for the clients to use to actually get
|
|
their mail. (You could have the internal hub route
|
|
all of the mail directly to people's desktops via
|
|
SMTP too.
|
|
<P>
|
|
The reason you generally don't need proxying for
|
|
SMTP is that most sites use some form of masquerading
|
|
(mail appears to come from the "domain" rather than from
|
|
a particular host whithin the domain). FWTK includes
|
|
smapd -- and there is an independent and free smtpd
|
|
which act as proxies for sendmail. Here the intend is
|
|
to have a small simple program receive mail and
|
|
pass it along to the larger, vastly more complicated
|
|
'sendmail' itself. (I don't want to get into the
|
|
raging debates about sendmail vs. qmail etc -- suffice
|
|
it to say there are many alternatives).
|
|
<P>
|
|
Note that masquerading and proxying are not mutually
|
|
exclusive. I use masquerading and I have ftp-gw and
|
|
squid (caching web service) installed. I could
|
|
also install SOCKS on the same gateway.
|
|
<P>
|
|
Incidentally I mentioned that it's possible to run ftpd
|
|
and ftp-gw on the same machine without putting them on
|
|
different ports. Here's two ways of doing that:
|
|
<P>
|
|
IP Aliasing method:
|
|
<ol>
|
|
<li> You install ftpd and ftp-gw
|
|
<li> You create an IP Alias (you add an extra address
|
|
to your gateway system's internal interface with
|
|
a command like:
|
|
<PRE>
|
|
ifconfig eth0:1 192.168.64.129
|
|
</PRE>
|
|
<li> You configure your TCP Wrappers to virtual host
|
|
a service by adding a line like this to your
|
|
/etc/hosts.allow file:
|
|
<PRE>
|
|
in.ftpd@192.168.64.129: 192.168.64. : twist /usr/local/fwtk/ftp-gw
|
|
</PRE>
|
|
This will "twist" any ftp request *to that IP alias*
|
|
into an ftp-gw session. FTP requests to any other
|
|
interface address will be handled in the usual way
|
|
(tcpd will launch the ftp daemon that's listed in
|
|
inetd.conf).
|
|
</ol>
|
|
That's all there is to that method. Note that you can
|
|
to other interesting things with this sort of virtual
|
|
hosting, if you're clever.
|
|
<P>
|
|
Loopback Twist method:
|
|
<ol>
|
|
<li> Install ftpd and ftp-gw (as you would for
|
|
the other method).
|
|
<P>
|
|
<li> Configure tcp wrappers to allow normal ftp
|
|
access *from* the localhost address (127.0.0.1)
|
|
<P>
|
|
<li> Configure tcp wrappers to twist any other
|
|
ftp requests into ftp-gw
|
|
</ol>
|
|
That looks like this (in the /etc/hosts.allow file):
|
|
<PRE>
|
|
in.ftpd: 127.0.0.1 : ALLOW
|
|
in.ftpd : ALL : twist /usr/local/fwtk/ftp-gw
|
|
</PRE>
|
|
WARNING! This second line would allow *anyone*
|
|
(from inside or outside) of your LAN to access the
|
|
proxy. However, ftp-gw reads a file --
|
|
/usr/local/etc/netperm-table according to the way I
|
|
compiled mine -- to determine who is allowed to access
|
|
each of its proxy services.
|
|
<P>
|
|
So, this line is neither as dangerous as it looks
|
|
nor as safe as it should be. Changing it to:
|
|
<PRE>
|
|
in.ftpd : LOCAL : twist /usr/local/fwtk/ftp-gw
|
|
</PRE>
|
|
... is safer and more appropriate.
|
|
<P>
|
|
One key point here is that you can use proxies on
|
|
your masquerading route/gateway to allow access from
|
|
the "outside" back *into* services inside your LAN.
|
|
Usually you want to prevent this (the whole point of
|
|
a firewall). However you can use tcpd and netperm to
|
|
allow specific 'friendly' networks to get to servers
|
|
on one of your LAN's, despite the fact that there are
|
|
no routes directly to those machines.
|
|
<P>
|
|
This brings us back to other forms of NAT. I mentioned
|
|
at the get-go that masquerading is one form of NAT. It
|
|
specifically involves a "many to one" arrangement.
|
|
(The "many" clients on your LAN appearing as "one" connection
|
|
to the Internet).
|
|
<P>
|
|
Another form of NAT is "many to many" -- where you have a
|
|
table translations. Thus each of your systems might be
|
|
configured to use one address, and be translated to appear as
|
|
if it came from anoter. I personally don't see much use for
|
|
this arrangement. The one case I could see for it might be
|
|
if you had a net of devices that you couldn't renumber, which
|
|
had "illegal" or "invalid" addresses.
|
|
<P>
|
|
One other form of NAT involves a different "many to many"
|
|
translation -- its not currently available for Linux but
|
|
it's used in the Cisco Local Director product. This is a
|
|
trick for doing IP level load balancing. You have a
|
|
"reverse masquerade" host accept requests to "a" busy
|
|
server (one service on one IP address) and you have it
|
|
masquerade the session to any of multiple "inside" machines
|
|
that have the same service and content available.
|
|
<P>
|
|
For load balancing it's trivially easy to use DNS "round
|
|
robin records" -- so I don't see much application for this
|
|
form of NAT either.
|
|
<P>
|
|
Anyway -- that's all I have the energy to type for now.
|
|
<P>
|
|
I hope this explains the terms and concepts and gives you
|
|
enough examples to set up what you want. For the most part
|
|
you can just use the one magic ipfwadm command to "turn on"
|
|
masquerading. The rest is just the configuration of your
|
|
network and of your ISP connection -- which you've presumably
|
|
already done.
|
|
<P>
|
|
-- Jim
|
|
|
|
<!--================================================================-->
|
|
<P> <hr> <P>
|
|
<center><H5>Copyright © 1998, James T. Dennis <BR>
|
|
Published in <I>Linux Gazette</I> Issue 27 April 1998</H5></center>
|
|
<P> <hr> <P>
|
|
<!--================================================================-->
|
|
<A HREF="./index.html"><IMG SRC="../gx/indexnew.gif" ALT="[ TABLE OF
|
|
CONTENTS ]"></A> <A HREF="../index.html"><IMG SRC="../gx/homenew.gif"
|
|
ALT="[ FRONT PAGE ]"></A>
|
|
<A HREF="lg_bytes27.html"><IMG SRC="../gx/back2.gif" ALT=" Back "></A>
|
|
<A HREF="./kodis.html"><IMG SRC="../gx/fwd.gif" ALT=" Next "></A>
|
|
|
|
<H4>
|
|
"Linux Gazette...<I>making Linux just a little more fun!</I>"
|
|
</H4>
|
|
|
|
<P> <HR> <P>
|
|
<!--===================================================================-->
|
|
|
|
<center>
|
|
<H2>Autologin with mingetty</H2>
|
|
<H4>By <a href="mailto:kodis@kodis.jagunet.com">John Kodis</a></H4>
|
|
</center>
|
|
<P> <HR> <P>
|
|
|
|
In Issue 26 of the Linux Gazette, Todd Blake,
|
|
tbb@enterprise.aacc.cc.md.us, wrote in to ask:
|
|
<blockquote> <I>
|
|
"I like most people am the only person to use my linux system at
|
|
home. What I'd like to do is when my system is done booting to
|
|
have me automatically login as my main user account (not as root
|
|
though) on one virtual console (the first) and leave all other
|
|
consoles and virtual consoles alone, so that someone telneting in
|
|
will get a login prompt like normal, just that I won't. I'd still
|
|
like the other VC's have logins for others to login and other
|
|
reasons. I've tried just putting /bin/sh in /etc/inittab and that
|
|
didn't work, and I'm stumped. Does anyone have any ideas on
|
|
this?"
|
|
</I> </blockquote>
|
|
I was in the same situation. I saw this question come up regularly in
|
|
various newsgroups, but never with a satisfactory solution being
|
|
proposed. Recently I came up with a solution that does just what
|
|
Mr. Blake requested. I did this by making a few changes to Florian
|
|
LaRoche's mingetty program, which is used issue the login prompt on
|
|
virtual consoles in most Linux distributions. These changes allow a
|
|
user to be automatically logged onto the console terminal as soon as
|
|
the system boots. I got the idea for this patch after reading about a
|
|
similar feature provided on SGI's Irix operating system.
|
|
<P>
|
|
Here's the description of the autologin feature that I've added to the
|
|
mingetty.8 man page:
|
|
<blockquote>
|
|
<B>--autologin username</B>
|
|
Log the specified user onto the console (normally
|
|
/dev/tty1) when the system is first booted without
|
|
prompting for a username or password.
|
|
</blockquote> <P> <blockquote>
|
|
When the autologin option is supplied, mingetty
|
|
will check that the controlling terminal is the
|
|
console (normally /dev/tty1), that a reasonable
|
|
username has been supplied, and that this is the
|
|
first autologin request since the system has
|
|
booted. If all of these conditions have been met,
|
|
a request for an unauthenticated login is passed to
|
|
the login program. Otherwise, a normal interactive
|
|
login is performed.
|
|
</blockquote> <P> <blockquote>
|
|
The login program may deny the request for an unau-
|
|
thenticated login. Typically this will happen when
|
|
the user is root, has a UID of 0, or whenever a
|
|
normal interactive login would be denied due to the
|
|
access restrictions specified in the nologin,
|
|
usertty, or securetty files.
|
|
</blockquote> <P> <blockquote>
|
|
Only a single autologin request will be issued
|
|
after a system boot. If the automated login
|
|
request is denied, or if the user logs out,
|
|
mingetty will revert to performing normal interac-
|
|
tive logins for all subsequent login requests.
|
|
</blockquote> <P>
|
|
I've placed unified diffs against the mingetty-0.9.4 version of
|
|
mingetty.c and mingetty.8 on my web page at
|
|
http://www5.jagunet.com/~kodis/. The patched version of mingetty logs
|
|
me in on the first virtual console when my computer first boots, while
|
|
leaving all the normal Unix security measures in effect for all but
|
|
this one specific console login.
|
|
<P>
|
|
To use this patch, you'll have to first obtain the sources for the
|
|
mingetty program, preferably with any patches used in your Linux
|
|
distribution. After applying the patch file from my web page, you
|
|
will have to rebuild the mingetty program, and install it and the
|
|
patched mingetty.8 man page in the appropriate directories after
|
|
saving the original versions.
|
|
<P>
|
|
The inittab entry for the first VC will then have to be modified to
|
|
put the autologin feature into effect. In my /etc/inittab file, this
|
|
line now reads:
|
|
<PRE>
|
|
1:12345:respawn:/sbin/mingetty --noclear --autologin kodis tty1
|
|
</PRE>
|
|
Rebooting after making these changes will insure that init has spawned
|
|
the new version of mingetty, and if all is well, will automatically
|
|
log you on to the console.
|
|
<P>
|
|
Since I normally use X whenever I'm logged in at the console, I've
|
|
added the following few lines of code to my .zlogin and .bash_profile
|
|
scripts. This code queries "Start X [Yn]? " when initially logged in
|
|
from the first virtual console, and waits 10 seconds for a response.
|
|
Entering Y or allowing the timeout to occur results in X being
|
|
started. On exiting X, a similar timed query asking "Log out [Yn]? "
|
|
is issued, giving the option of logging out or being dropped into a
|
|
text console.
|
|
<PRE>
|
|
case `tty` in
|
|
/dev/tty[1])
|
|
echo -n "Start X [Yn]? "
|
|
expect \
|
|
-c 'stty raw' \
|
|
-c 'set timeout 10' \
|
|
-c 'expect -nocase n {exit 1} -re . {exit 0}'
|
|
if [ $? = 0 ] ; then
|
|
startx
|
|
echo -n "Log out [Yn]? "
|
|
expect \
|
|
-c 'stty raw' \
|
|
-c 'set timeout 10' \
|
|
-c 'expect -nocase n {exit 1} -re . {exit 0}'
|
|
if [ $? = 0 ] ; then
|
|
logout
|
|
fi
|
|
fi
|
|
echo
|
|
;;
|
|
esac
|
|
</PRE>
|
|
These few changes combine to make getting logged on and running X on a
|
|
Linux box as easy as turning the power on. Here's hoping that this
|
|
proves useful for Mr. Blake and any of your other readers who find
|
|
themselves in this situation.
|
|
|
|
<!--===================================================================-->
|
|
<P> <hr> <P>
|
|
<center><H5>Copyright © 1998, John Kodis <BR>
|
|
Published in Issue 27 of <i>Linux Gazette</i>, April 1998</H5></center>
|
|
|
|
<!--===================================================================-->
|
|
<P> <hr> <P>
|
|
<A HREF="./index.html"><IMG ALIGN=BOTTOM SRC="../gx/indexnew.gif"
|
|
ALT="[ TABLE OF CONTENTS ]"></A>
|
|
<A HREF="../index.html"><IMG ALIGN=BOTTOM SRC="../gx/homenew.gif"
|
|
ALT="[ FRONT PAGE ]"></A>
|
|
<A HREF="./lg_answer27.html"><IMG SRC="../gx/back2.gif"
|
|
ALT=" Back "></A>
|
|
<A HREF="./little.html"><IMG SRC="../gx/fwd.gif" ALT=" Next "></A>
|
|
<P> <hr> <P>
|
|
|
|
<H4>
|
|
"Linux Gazette...<I>making Linux just a little more fun!</I>"
|
|
</H4>
|
|
|
|
<P> <HR> <P>
|
|
<!--===================================================================-->
|
|
|
|
<center>
|
|
<H1>Checking Out SPARC-Linux with SLXT</H1>
|
|
<H2>Grab a bargain SPARC</H2>
|
|
|
|
<H4>By <a href="mailto:gaijin@pobox.com">John Little</a></H4>
|
|
</center>
|
|
<P> <HR> <P>
|
|
|
|
There are lots of Sun SPARCstations coming onto the second-hand market, or
|
|
even being given away for free, nowadays. The attractions of a SPARC
|
|
are numerous. The graphics resolution of a typical SPARCstation is 1152x900
|
|
(either monochrome, 8-bit or 24-bit colour), all machines have built-in
|
|
ethernet controllers and all come with on-board SCSI.
|
|
<P>
|
|
|
|
Unfortunately, there are also a couple of drawbacks. It's not unusual for
|
|
these machines to come onto the market with only very small internal disks
|
|
(dual 100MB or a single 200MB is fairly common), or even minus disks
|
|
completely and, as anyone who has bought one recently will tell you, SCSI
|
|
disks are still more expensive, megabyte for megabyte, than their IDE
|
|
cousins.
|
|
<P>
|
|
|
|
There's also a SPARC-Linux specific problem, commonly referred to
|
|
as the "IPC slowdown bug" which, as the name suggests, plagues some
|
|
of the low-end Sun4c architecture machines, especially the IPC,
|
|
SPARCstation 1 and 1+ models. This doesn't affect all machines
|
|
(which is one of the reasons that a fix is proving difficult to
|
|
find), but on those which it does, even simple operations such as
|
|
an "ls /etc" can take several minutes. It's the computing equivalent
|
|
of that nightmare which everyone has had at one time or another
|
|
where you're trying to run away from something horrible, through
|
|
waist-deep, sticky treacle.
|
|
<P>
|
|
|
|
So, if your SPARCstation comes without a disk, or you load SPARC-Linux and
|
|
your machine proves to be one of the ones susceptible to treacle, what can
|
|
you do?
|
|
<P>
|
|
|
|
<H3>Don't panic!</H3>
|
|
|
|
All is not lost. SPARCstations make excellent Xterminals.
|
|
As already mentioned, they come equipped for the job with on-board ethernet
|
|
and high resolution graphics.
|
|
Even the most treacle-bound IPC will provide adequate performance
|
|
for most users when served by an i386 level machine and absolutely
|
|
stunning performance when served by a machine of Pentium-level
|
|
performance. The secret is, of course, that application processing
|
|
is offloaded onto the server, while the SPARCstation runs only a
|
|
cut-down kernel and the Xserver process. This is basically a
|
|
SPARC-Linux implementation of Seth Robertson's Xkernel package.
|
|
The principal of operation is the same, but the binaries,
|
|
libraries and code are 100% Linux (it is important to note here
|
|
that there's no Sun code included in the package, so you do
|
|
<STRONG>not</STRONG>
|
|
need a Sun "Right To Use" software licence to run the
|
|
SPARC-Linux Xterminal package).
|
|
<P>
|
|
|
|
<I>
|
|
NOTE - People are frequently confused by the Xterminal concept and the
|
|
fact that when they log-in to an Xterminal they find themselves in a shell
|
|
on the server. Perhaps the easiest way to understand it is to think
|
|
of the Xterminal as simply being a display attached to the server (which,
|
|
in effect, it is) and of the Xterminal hardware as being a remote video card.
|
|
</I>
|
|
<P>
|
|
|
|
The
|
|
<A HREF="http://www2.gol.com/gaijin/Linux">SLXT package</A>
|
|
contains a SPARC-Linux, network-bootable kernel for sun4c and sun4m
|
|
architectures, as well as scripts to automate the installation
|
|
process and the administration of Xterminal clients. The scripts are
|
|
Linux specific, but the package can be installed manually (on
|
|
virtually any system which provides tftpboot and X support) in about
|
|
ten to fifteen minutes by an experienced system administrator. The
|
|
author has run SPARC-Linux Xterminal clients from Solaris servers,
|
|
as well as from a variety of Linux machines.
|
|
<P>
|
|
|
|
Because the kernel is cut down, it will run quite happily on a
|
|
machine which has only 12MB of main memory (an 8MB machine will
|
|
boot, but will eventually crash with "out of memory" errors). In
|
|
fact, because the system only runs the kernel and Xserver processes,
|
|
any more than about 24MB of main memory is wasted, as it will never
|
|
be accessed. The kernel is small because it does not contain any disk
|
|
or floppy drivers. This also means that the SPARC-Linux Xterminal
|
|
package can be booted on an existing, diskfull machine with no fear
|
|
of accidentally overwriting the filesystems, thus making it possible
|
|
to have the same machine boot, say, Solaris from an internal disk, or
|
|
come up as an Xterminal when booted over the net. Of course, at around
|
|
2.5MB, the SLXT package is also much easier to download than the full
|
|
SPARC-Linux distribution if you just want to check whether your system
|
|
will run the Linux kernel.
|
|
<P>
|
|
|
|
<H3>Booting SLXT</H3>
|
|
|
|
Before you can boot your SPARC client machine, you'll need to make a
|
|
note of the ethernet address (the
|
|
<I>add_xterm</I>
|
|
administration script will ask for this information). This is visible,
|
|
along with information on the boot PROM revision and memory size,
|
|
immediately after the power on selftest has completed. Your machine will
|
|
probably be set up to boot directly from disk, so you may need to hold
|
|
down the
|
|
<I>"Stop"</I>
|
|
and the
|
|
<I>"a"</I>
|
|
keys simultaneously to prevent the ethernet address from scrolling off
|
|
the screen (this key sequence is commonly referred to as an
|
|
<I>"L1-A"</I>
|
|
in Sun circles because the "stop" key is also the first key on
|
|
the left-hand keypad of a Sun keyboard).
|
|
<P>
|
|
|
|
After entering the ethernet address and choosing a hostname and IP address
|
|
for your client,
|
|
<I>add_xterm</I>
|
|
will update the configuration files and the ARP and RARP caches on your
|
|
server. You can then boot your SPARC client using
|
|
<I>"boot net"</I>
|
|
(from the
|
|
<I>"ok"</I>
|
|
prompt), or
|
|
<I>"ble()"</I>
|
|
(from the
|
|
<I>">"</I>
|
|
prompt), depending upon which revision of boot PROM your machine has.
|
|
<P>
|
|
|
|
The most common question asked about the SLXT boot process is
|
|
<I>"Why does it take so long to boot?".</I>
|
|
<BR>
|
|
The answer is that the machine is downloading a complete kernel
|
|
image from the server and then executing it, unlike a normal SunOS
|
|
or Solaris boot, where the bootstrap reads in a second-stage loader, which
|
|
in turn downloads the kernel. Be patient! Once the kernel is downloaded, the
|
|
time taken to start the Xserver process and display a login prompt is very
|
|
much shorter than the rest of a typical SunOS/Solaris boot. You'll need to
|
|
be very quick to catch a glimpse of the SPARC-Linux, beer-swilling penguin.
|
|
|
|
<H3>More Information</H3>
|
|
|
|
The SLXT package includes a
|
|
<A HREF="http://www2.gol.com/gaijin/Linux/SLXT_FAQ">FAQ,</A>
|
|
a
|
|
<A HREF="http://www2.gol.com/gaijin/Linux/CHANGES">CHANGES</A>
|
|
file and a
|
|
<A HREF="http://www2.gol.com/gaijin/Linux/slxt.lsm">package info</A>
|
|
file. Unfortunately, at the time of writing the version on SunSite had
|
|
not been updated for some time (the last update, along with dozens
|
|
of other packages, is still languishing in the Linux/Incoming directory).
|
|
The latest revision, along with documentation, should always be available
|
|
from the author's home site at
|
|
<A HREF="http://www2.gol.com/gaijin/Linux">http://www2.gol.com/gaijin/Linux,</A>
|
|
though.
|
|
<P>
|
|
|
|
<HR SHADE SIZE=5>
|
|
|
|
<H4>What do you need to run your SPARC as an Xterminal client?</H4>
|
|
|
|
<UL>
|
|
<LI> You must have your SPARCstation connected to a network on
|
|
which there is at least one other machine. This second, "boot
|
|
server" machine must have a minimum of 7MB of free space available
|
|
for the SPARC-Linux Xterminal package, and should have a complete
|
|
X11 tree. It can be anything from a standalone i386 Linux system
|
|
upwards (although it obviously makes sense to use a server which
|
|
is more powerful than the clients, especially where multiple clients
|
|
will be operating simultaneously).
|
|
<P>
|
|
|
|
<LI> Your SPARCstation must have at least 12MB of main memory (it will
|
|
boot with 8MB, but will crash with "out of memory" errors as soon as
|
|
you start using applications). In the same vein, because the client
|
|
machine only runs a Linux kernel and the X-server process, any more
|
|
than about 24MB of memory is a complete waste.
|
|
<P>
|
|
|
|
<LI> Your SPARCstation does NOT need a disk. There are no disk drivers
|
|
included in the kernel, so even if the machine has a hard disk
|
|
installed, it can not be accessed (this also means that it is quite
|
|
safe to use a diskfull system for testing).
|
|
<P>
|
|
|
|
<LI> Your SPARCstation must have a frame-buffer, monitor and keyboard.
|
|
</UL>
|
|
<P>
|
|
|
|
<HR SHADE SIZE=5>
|
|
|
|
The gzipped-tar file, for the current version,
|
|
<A HREF="http://www2.gol.com/gaijin/Linux/SLXT_0.5c.tar.gz"> SLXT_0.5c.tar.gz </A> is approximately 2.5MB
|
|
and will take up slightly more than 6MB when installed.
|
|
<P>
|
|
|
|
<HR SHADE SIZE=5>
|
|
|
|
<I>Last updated: $Date: 2003/02/03 21:50:18 $.</I>
|
|
<ADDRESS>
|
|
gaijin@pobox.com
|
|
</ADDRESS>
|
|
|
|
<!--===================================================================-->
|
|
<P> <hr> <P>
|
|
<center><H5>Copyright © 1998, John Little <BR>
|
|
Published in Issue 27 of <i>Linux Gazette</i>, April 1998</H5></center>
|
|
|
|
<!--===================================================================-->
|
|
<P> <hr> <P>
|
|
<A HREF="./index.html"><IMG ALIGN=BOTTOM SRC="../gx/indexnew.gif"
|
|
ALT="[ TABLE OF CONTENTS ]"></A>
|
|
<A HREF="../index.html"><IMG ALIGN=BOTTOM SRC="../gx/homenew.gif"
|
|
ALT="[ FRONT PAGE ]"></A>
|
|
<A HREF="./kodis.html"><IMG SRC="../gx/back2.gif"
|
|
ALT=" Back "></A>
|
|
<A HREF="./marsden.html"><IMG SRC="../gx/fwd.gif" ALT=" Next "></A>
|
|
<P> <hr> <P>
|
|
|
|
<H4>
|
|
"Linux Gazette...<I>making Linux just a little more fun!</I>"
|
|
</H4>
|
|
|
|
<P> <HR> <P>
|
|
<!--===================================================================-->
|
|
|
|
<center>
|
|
<h1>EMACSulation</h1>
|
|
<h4>by <a href="mailto:emarsden@mail.dotcom.fr">Eric Marsden</a>
|
|
</h4>
|
|
</center>
|
|
<p><HR> <P>
|
|
|
|
|
|
<blockquote><small>
|
|
|
|
This column is devoted to making the best use of Emacs, text editor
|
|
extraordinaire. Each issue I plan to present an Emacs extension
|
|
which can improve your productivity, make the sun shine more brightly
|
|
and the grass greener.
|
|
|
|
</small></blockquote>
|
|
|
|
|
|
<p> <p>
|
|
|
|
<h2>Ediff: an Emacs interface to diff and patch</h2>
|
|
|
|
<blockquote><font face="Helvetica">
|
|
Never read that diff output again! <br>
|
|
Apply patches interactively! <br>
|
|
Merge with ease! <br>
|
|
</font></blockquote>
|
|
|
|
|
|
<p> <strong>Ediff</strong> is a powerful package by <a
|
|
href="http://www.cs.sunysb.edu/~kifer/">Michael Kifer</a> which lets
|
|
you browse through the differences between files and directories, merge
|
|
files which have been revised by coworkers, and apply patches
|
|
interactively. Let's start with the simplest use : eyeballing the
|
|
differences between two versions of a text file. Either type <tt>M-x
|
|
ediff</tt>, or from the menubar go to Tools -> Compare -> Two files
|
|
(yes, it's something else on the XEmacs menubar). Ediff will prompt you
|
|
for two files to compare, open them and ponder a bit (while running <a
|
|
href="http://www.new.ox.ac.uk/jargon/jargon_19.html#TAG468">diff</a> as
|
|
a subprocess). Emacs will open a small control window, and show you
|
|
something like this
|
|
|
|
<p> <img src="./gx/marsden/ediff-compare-two.gif"
|
|
alt="Comparison of two files [21 kB]"
|
|
width="538" height="587">
|
|
|
|
<p> (for the curious, the window manager is a slighly modified version of
|
|
Chris Cannam's almost-minimal <a
|
|
href="http://www.netcomuk.co.uk/~cannam/wmx.html">wmx</a>). Differing
|
|
lines --or <em>hunks</em> in diff parlance-- in the two files are
|
|
highlighted in grey, and you can step through them by typing <tt>n</tt>
|
|
(next) or <tt>p</tt> (previous) into the control window. The active
|
|
hunk is highlighted in color, with the exact words which differ
|
|
displayed in a separate color (this process is called refining, and is
|
|
done by Emacs itself, not by diff). Naturally Ediff works best when run
|
|
under a windowing system, but it does work in degraded mode in the
|
|
console.
|
|
|
|
<p> You can use all your normal keybindings in the two buffers being
|
|
compared; ediff-specific commands must be typed into the control panel.
|
|
To obtain help, type <tt>?</tt> while focus is in the ediff control
|
|
panel; it should warp into a reassuring help window something like
|
|
|
|
<p> <img src="./gx/marsden/ediff-help.gif"
|
|
alt="Ediff help window [7 kB]"
|
|
width="512" height="239">
|
|
|
|
|
|
<h3>Merging files</h3>
|
|
|
|
<p> Ediff can help you merge two files into a third file, a little like the
|
|
command-line tools <em>sdiff</em> and <em>merge</em>. Type <tt>M-x
|
|
ediff-merge</tt> to enter merge mode and be prompted for two filenames.
|
|
The Emacs frame will then be split in three, with the two files to be
|
|
merged side by side in windows named respectively A and B, above a
|
|
buffer containing their merge. It should look a little like <a
|
|
href="./gx/marsden/ediff-merge.gif">this</a> <i>(23 kB)</i>. The normal width of
|
|
your Emacs frame may be a little limiting for two files side by side;
|
|
you can type <tt>m</tt> to widen the frame.
|
|
|
|
<p> For each hunk you will then be able to choose which files to make
|
|
authoritative (ie which version to include in the merge). Type
|
|
<tt>a</tt> to choose the version in the buffer labelled A, <tt>b</tt>
|
|
for the other buffer, or <tt>+</tt> to include both (you can then edit
|
|
the merge buffer to select bits of both). You can also merge files with
|
|
respect to an ancestor, if for example two people have made independent
|
|
changes to a common original.
|
|
|
|
|
|
<h3>Interactive Patching</h3>
|
|
|
|
<p> We come to one of the most amusing uses of Ediff: applying a <a
|
|
href="http://www.new.ox.ac.uk/jargon/jargon_31.html#TAG1335">patch</a>
|
|
interactively from the comfort of Emacs. No more reading diffs ``by
|
|
hand'', no more fiddling around with rejects. Type <tt>M-x
|
|
ediff-patch-file</tt> to start the fun and be prompted for a patch file
|
|
and a filename. The Emacs frame will be split vertically with the
|
|
original file above, and the patched file below. You step from hunk to
|
|
hunk like for a diff, and can selectively restore certain regions from
|
|
the original file (undo parts of the patch) by typing <tt>a</tt>.
|
|
|
|
<p> Ediff also has an excellent integration with Emacs' <a
|
|
href="http://www.cl.cam.ac.uk/texinfodoc/emacs_18.html#SEC114">version
|
|
control interfaces</a>, which lets you compare different revisions of a
|
|
file. Open a file under version control (Emacs detects this
|
|
automatically) and type <tt>M-x ediff-revision</tt>; you will be
|
|
prompted for the two version numbers to compare. Ediff will check out
|
|
the two revisions and run diff on them. This seamless integration is
|
|
extended to remote and compressed files : your patches can be
|
|
compressed or on a distant machine, and Ediff will work things out all
|
|
by itself. You can even (not tested!) apply a gzipped remote patch to
|
|
an old version of a compressed file on another machine, so there.
|
|
|
|
<p> I've only described the most common uses of Ediff : it can also
|
|
compare three files (<tt>ediff3</tt>), compare buffers, compare
|
|
directory contents, and apply multi-file patches. Many aspects of the
|
|
presentation can be customized. It has a registry of current ediff
|
|
sessions which may be useful if you're a heavy user. Read the <a
|
|
href="http://subzero.campus.luth.se/FreeDocs/emacs-19.34/ediff/ediff_toc.html">online
|
|
documentation</a> to know all about it.
|
|
|
|
|
|
<blockquote>
|
|
<font face="Helvetica">
|
|
For they have entertained cause enough
|
|
<br>
|
|
To draw their swords. But how the fear of us
|
|
<br>
|
|
May cement their divisions, and bind up
|
|
<br>
|
|
The petty difference we yet not know. <br>
|
|
Be't as our gods will have't! It only stands
|
|
<br>
|
|
Our lives upon to use our strongest hands.
|
|
<br>
|
|
</font>
|
|
|
|
<p> William Shakespeare,
|
|
<a
|
|
href="http://the-tech.mit.edu/Shakespeare/Tragedy/antonyandcleopatra/antonyandcleopatra.2.1.html"><i>Antony
|
|
and Cleopatra</i></a>
|
|
|
|
</blockquote>
|
|
|
|
|
|
|
|
<h2>Feedback</h2>
|
|
|
|
<p> A few people pointed out to me that <strong>ffap</strong> is not
|
|
included with both Emacsen as I claimed in last month's column, but
|
|
only with GNU Emacs. XEmacs users can obtain the latest version from
|
|
Michelangelo Grigni (the author)'s <a
|
|
href="ftp://ftp.mathcs.emory.edu/pub/mic/emacs/">ftp site</a>. I also
|
|
incorrectly attributed a message from Christopher B. Smith to another
|
|
Linux user, Christopher B. Browne; my apologies to both Christophers.
|
|
|
|
|
|
<h2>Next time ...</h2>
|
|
|
|
<p> In the next issue I'll review emacsclient/gnuserv, a mechanism for
|
|
sending messages to a running Emacs process. Don't hesitate to contact
|
|
me at <tt><emarsden@mail.dotcom.fr></tt> with comments,
|
|
corrections or suggestions (what's <em>your</em> favorite
|
|
couldn't-do-without Emacs extension package?). <code>C-u 1000 M-x
|
|
hail-emacs</code> !
|
|
|
|
<p> <b>PS</b> : Emacs isn't in any way limited to Linux, since
|
|
implementations exist for many other operating systems (and some
|
|
systems which only halfway operate). However, as one of the leading
|
|
bits of <a href="http://www.open-source.org/">open-source</a> software,
|
|
one of the most powerful, complex and customizable, I feel it has its
|
|
place in the <i>Linux Gazette</i>.
|
|
|
|
<!--===================================================================-->
|
|
<P> <hr> <P>
|
|
<center><H5>Copyright © 1998, Eric Marsden <BR>
|
|
Published in Issue 27 of <i>Linux Gazette</i>, April 1998</H5></center>
|
|
|
|
<!--===================================================================-->
|
|
<P> <hr> <P>
|
|
<A HREF="./index.html"><IMG ALIGN=BOTTOM SRC="../gx/indexnew.gif"
|
|
ALT="[ TABLE OF CONTENTS ]"></A>
|
|
<A HREF="../index.html"><IMG ALIGN=BOTTOM SRC="../gx/homenew.gif"
|
|
ALT="[ FRONT PAGE ]"></A>
|
|
<A HREF="./little.html"><IMG SRC="../gx/back2.gif"
|
|
ALT=" Back "></A>
|
|
<A HREF="./wagle.html"><IMG SRC="../gx/fwd.gif" ALT=" Next "></A>
|
|
<P> <hr> <P>
|
|
|
|
<H4>
|
|
"Linux Gazette...<I>making Linux just a little more fun!</I>"
|
|
</H4>
|
|
|
|
<P> <HR> <P>
|
|
<!--===================================================================-->
|
|
|
|
<H1 ALIGN="CENTER">Evangelism: A Unix Bigot and Linux Advocate's Spewings</H1>
|
|
<P ALIGN="CENTER"><STRONG>By <A HREF="mailto:davew@cloudnet.com">David A.
|
|
Wagle</A></STRONG></P>
|
|
|
|
|
|
|
|
<P ALIGN="LEFT"></P><HR> <P>
|
|
<BR>
|
|
|
|
<H2><A NAME="SECTION00010000000000000000">
|
|
Table of Contents</A>
|
|
</H2>
|
|
<!--Table of Contents-->
|
|
<UL>
|
|
<LI><A NAME="tex2html2"
|
|
HREF="./wagle.html#SECTION00020000000000000000">Introduction: What's the Point?</A>
|
|
<LI><A NAME="tex2html3"
|
|
HREF="./wagle.html#SECTION00030000000000000000">A Conversion Story?</A>
|
|
<LI><A NAME="tex2html4"
|
|
HREF="./wagle.html#SECTION00040000000000000000">Why Linux Didn't Work</A>
|
|
<UL>
|
|
<LI><A NAME="tex2html5"
|
|
HREF="./wagle.html#SECTION00041000000000000000">What Learning Curve?</A>
|
|
</UL>
|
|
<LI><A NAME="tex2html6"
|
|
HREF="./wagle.html#SECTION00050000000000000000">The Problem and Three Solutions:</A>
|
|
<UL>
|
|
<LI><A NAME="tex2html7"
|
|
HREF="./wagle.html#SECTION00051000000000000000">Big Blue, Round Two</A>
|
|
<LI><A NAME="tex2html8"
|
|
HREF="./wagle.html#SECTION00052000000000000000">OK, Take A Deep Breath!</A>
|
|
<LI><A NAME="tex2html9"
|
|
HREF="./wagle.html#SECTION00053000000000000000">Putting one foot in front of the other</A>
|
|
</UL>
|
|
<LI><A NAME="tex2html10"
|
|
HREF="wagle.html#SECTION00060000000000000000">Why it isn't happening?</A>
|
|
<LI><A NAME="tex2html11"
|
|
HREF="wagle.html#SECTION00070000000000000000">Conclusion</A>
|
|
</UL>
|
|
<!--End of Table of Contents-->
|
|
|
|
<P>
|
|
|
|
<H1><A NAME="SECTION00020000000000000000">
|
|
Introduction: What's the Point?</A>
|
|
</H1>
|
|
|
|
<P>
|
|
Linux users are a notorious bunch. We tend to be vociferous OS
|
|
bigots of the first order. This is a trait that has served
|
|
the software community well. After all, if we were not that
|
|
way we would never have put the time and effort into
|
|
developing, deploying, and supporting the thing. But it also
|
|
a trait that has drawbacks. Some of these drawbacks are
|
|
serious, and effect our ability to present Linux as a serious
|
|
alternative to other, more prominent OS's (using the term, in
|
|
many cases, very loosely).
|
|
|
|
<P>
|
|
I'm not going to try to present the Linux alternative in
|
|
anything but a fair and honest way. That means I'm not going
|
|
to be talking about the possibility of loosing your job for
|
|
choosing Linux -- after all, that is not a problem that is
|
|
unique or limited to any one OS. The fact is that when you
|
|
choose the wrong tool for mission critical applications, you
|
|
should be called to task for that choice. This is regardless
|
|
of the OS's involved. Likewise I will not clamor on that
|
|
Linux is the one, true solution to all problems. Such a
|
|
statement, however much I'd like it to be so, is just as
|
|
foolish.
|
|
|
|
<P>
|
|
But, I wish to be clear that I will not have many good things
|
|
to say about those other OS's. For the most part they are
|
|
deserving of their poor reputations and of the scorn of any
|
|
true Linux afficionado. Still, there are better and worse
|
|
ways of promoting the <EM>Nearly</EM> One True OS that is Linux.
|
|
In this paper I would like to discuss some of those options.
|
|
|
|
<P>
|
|
|
|
<H1><A NAME="SECTION00030000000000000000">
|
|
A Conversion Story?</A>
|
|
</H1>
|
|
|
|
<P>
|
|
A few weeks ago I helped a friend (we'll call him Mike, being
|
|
that that is his name and I could care less about his
|
|
anonymity) install Red Hat 5.0 on his system. I made certain
|
|
that all the configuration files were properly tweaked for his
|
|
particular computer. I installed KDE, and made KDM the
|
|
default login method. I set up his networking, making sure
|
|
that it handled everything seamlessly in the background. Then
|
|
I showed him where the docs, howto's, mini-howto's and the
|
|
like were located. I spent time with him making sure he knew
|
|
how to use info, find, grep, ps, which, apropos and the man
|
|
pages. After a few hours of work and teaching, I went my
|
|
happy way convinced that another conversion to the Linux way
|
|
(tm) had taken place. After all, Mike hated Windows and had
|
|
had nothing but problems with both 95 and NT.
|
|
|
|
<P>
|
|
But the next week when I stopped over, I found my friend was
|
|
back to running Windows 95, unhappy as ever about his daily
|
|
crashes and computer problems. It is important to understand
|
|
that Mike isn't some <EM>luser</EM>; rather, he is a
|
|
sophisticated computer professional with substantial computer
|
|
knowledge. He has been a consulting parter with me for major
|
|
corporations, and has worked on developing a number of expert
|
|
systems. He knows his stuff very well. So why, then, did
|
|
Mike fail to embrace the Linux alternative?
|
|
|
|
<P>
|
|
|
|
<H1><A NAME="SECTION00040000000000000000">
|
|
Why Linux Didn't Work</A>
|
|
</H1>
|
|
|
|
<P>
|
|
The answer, unfortunately, is one we advocates hear all the
|
|
time. The new user of the Linux system finds that the
|
|
learning curve is too steep to be manageable. Like many other
|
|
people, Mike has a real life - he has a job, a girlfriend,
|
|
various projects and hobbies, and he can not spend all his free
|
|
time learning a new way of being productive. Moreover, he
|
|
can't afford to devote the days or even weeks it might take
|
|
him to learn how to administer a system so that he can
|
|
accomplish even simple tasks. He needs to be productive
|
|
today, and tomorrow, at the same rate he was yesterday.
|
|
Because Mike is already familiar with the system and
|
|
applications on the windows box, and not with those on Linux,
|
|
he could not afford to switch. When the initial learning curve
|
|
is so steep getting to be equally productive when moving from
|
|
another OS to Linux can be daunting. This is even more true
|
|
if one is an expert user on the non-Linux machine.
|
|
|
|
<P>
|
|
|
|
<H2><A NAME="SECTION00041000000000000000">
|
|
What Learning Curve?</A>
|
|
</H2>
|
|
|
|
<P>
|
|
Many <EM>OS Bigots</EM> (myself included on my more polemical days)
|
|
will counter that it is simply untrue that it takes that long
|
|
to learn a new system. Or we'll simply deny that Linux is
|
|
really all that complicated. Instead of recognizing any
|
|
validity in the statements made by the complainants, we
|
|
attempt to invalidate the complaint by suggesting that the
|
|
person in question must be a <EM>luser</EM> instead of a <EM>user</EM>.
|
|
``I learned Unix in a couple of hours,'' or ``Heck, just pick
|
|
up <U>Unix Unleashed</U> and read it,'' are statements that carry
|
|
the implication that the person being addressed is somehow not
|
|
as competent as the speaker.
|
|
|
|
<P>
|
|
This approach does more damage to the Linux (and Unix)
|
|
community than many people realize. We have good solutions to
|
|
many problems, but if we aren't willing to take the people who
|
|
need those solutions seriously, we will not be heard.
|
|
|
|
<P>
|
|
|
|
<H1><A NAME="SECTION00050000000000000000">
|
|
The Problem and Three Solutions:</A>
|
|
</H1>
|
|
|
|
<P>
|
|
So, the question arises, ``How do we Linux users, developers,
|
|
and advocates help those with limited time for learning new
|
|
systems make the switch?'' There are several answers to this
|
|
question, but they almost all fall into three categories. I
|
|
call these categories the <EM>OS/2 revisited approach</EM>, the
|
|
<EM>suck it up approach</EM>, and the <EM>delayed skill
|
|
transfer approach</EM>. What are these methods? Glad you asked!
|
|
|
|
<P>
|
|
|
|
<H2><A NAME="SECTION00051000000000000000">
|
|
Big Blue, Round Two</A>
|
|
</H2>
|
|
|
|
<P>
|
|
The first, the <EM>OS/2 revisited approach</EM>, consists of
|
|
making windows available on or under the new OS. IBM had
|
|
moderate success in getting dissatisfied users to switch to
|
|
their products by providing a technically superior system that
|
|
managed to provide the user with their favorite windows
|
|
applications. Linux has a number of programs and libraries
|
|
available that help with this approach. DOSEMU, the TWIN
|
|
library, WINE, WABI, and others are all efforts to provide the
|
|
user with access to his favorite MS products.
|
|
|
|
<P>
|
|
This approach has some big dividends. The user is able to
|
|
transfer many of his or her skills immediately. There is
|
|
little trepidation in wondering how to do word processing on
|
|
the very same word-processor you've been using for the last 2
|
|
years. There is far less worry about being able to get your
|
|
work done when you don't have to worry about finding and
|
|
learning new applications in order to accomplish your normal
|
|
tasks.
|
|
|
|
<P>
|
|
However, this approach does have some problems. Today, the
|
|
most obvious is that windows95 apps are not nearly as portable
|
|
to Linux emulation as are the older 3.x apps. This means that
|
|
many users are not able to bring over their favorite
|
|
applications any more. Rather, the user needs to find and
|
|
obtain an outdated version of his or her favorite product. The
|
|
user then will need to worry about reformatting old data and
|
|
projects to use the older program, as well as concerning
|
|
themselves with being able to share their data seamlessly with
|
|
coworkers.
|
|
|
|
<P>
|
|
Another major drawback with this approach, as IBM found out,
|
|
is that the users are not encouraged to explore the power of
|
|
the underlying OS. ``A better memory manager for windows'' is
|
|
not what Linux is about. It is not what it does best. And,
|
|
like OS/2, eventually users who use it for that purpose will
|
|
realize that the increased complexity doesn't pay out any real
|
|
dividends. The reason OS/2 failed (regardless of what the
|
|
various OS/2 pundits say, it is dead) is the same reason these
|
|
various projects will never really be the answer to Linux
|
|
advocacy. They don't really solve the problem of getting
|
|
users up on the new OS. All they do is offer a false sense of
|
|
security at a cost of complexity and a lack of compatibility
|
|
with state-of-the-art Windows environments (if there is such a
|
|
thing.)
|
|
|
|
<P>
|
|
The trend to develop Windows95-like applications such as
|
|
StarOffice on Unix platforms seems to be an extension of this
|
|
methodology. Instead of embracing the tenants of ``small is
|
|
beautiful'' and ``make each program do one thing well,'' these
|
|
development efforts are aimed at reproducing the Suite on Unix.
|
|
The advantage of this, is, of course, that it is what managers
|
|
expect to find on their computers. The disadvantage is that
|
|
the ``Office Suite,'' in all it's ugly, bloated, glory is now
|
|
nestled into the Unix culture. Most true devotee's of Unix
|
|
will likely dismiss these suites as being against the Unix
|
|
grain. Still, they present a way to move reluctant Windows95
|
|
people into the Unix world.
|
|
|
|
<P>
|
|
|
|
<H2><A NAME="SECTION00052000000000000000">
|
|
OK, Take A Deep Breath!</A>
|
|
</H2>
|
|
|
|
<P>
|
|
The <EM>suck it up approach</EM>, also known as the <EM>sink
|
|
or swim</EM> method can and does work. I, for example, simply
|
|
reformatted my hard-drive one day, and never looked back.
|
|
However, for most people in real-life business environments,
|
|
this isn't possible. Unlike most people, I really did have
|
|
lots of time to explore my system, and being in graduate
|
|
school, I had few applications I really needed to run.
|
|
``Mission Critical'' doesn't apply to most people in master's
|
|
programs. Like the example of Mike, above, the real user
|
|
just doesn't have the time to waste on learning how to be
|
|
productive all over again. Still, for some users, it can
|
|
work. The key is having good teachers who are also good
|
|
system administrators on hand to help the user along. Had I
|
|
been willing to visit Mike on a daily basis to hand hold
|
|
while he got up to speed, he would probably be running on Red
|
|
Hat instead of Redmond.
|
|
|
|
<P>
|
|
The advantage to this method is that it doesn't rely on a
|
|
sense of security. Unlike <EM>OS/2 revisited</EM>, the
|
|
<EM>suck it up'ers</EM> have to dive into the system, they have
|
|
to tackle the learning curve, and with good teachers it can
|
|
happen fairly quickly. Most people can learn the basics of
|
|
Emacs, LaTeX, Unix shells and command lines, and the various
|
|
other Unix tools and tricks in a week or less. While there
|
|
may still be some touch and go moments when problems with
|
|
system administration raise their ugly head, for the most
|
|
part, after some intensive training and a few moments of
|
|
butterflies in the stomach, the person can manage to get
|
|
along.
|
|
|
|
<P>
|
|
The problem with this approach is, of course, that it takes a
|
|
leap of faith, that most people are very leery of making.
|
|
And, I might add, they are right to be leery of doing it this
|
|
way. Some people simply won't get the new way no matter how
|
|
patient you are, because they will be stressing out over some
|
|
project that they are working on. Others, because of various
|
|
concerns about being able to get the job done, simply won't
|
|
leave the tried and true - no matter how obvious it is that
|
|
it is really tried and found wanting. Let's face it, most
|
|
people are nervous about the unknown, and moving to Linux is
|
|
the unknown for someone whose only computer experience is MS
|
|
or Mac based. Here again, the aforementioned Office-ish
|
|
suites can come in very handy. While rarely the best tool for
|
|
any one job, they can be used to make the <EM>suck it up'er</EM>
|
|
more comfortable in his or her new environment.
|
|
|
|
<P>
|
|
It is important to realize that there is always the
|
|
occasional person whose task still can not be adequately
|
|
completed under Linux. There are specialty apps which require
|
|
MS or Mac products to run. For these people, leaping before
|
|
looking, long and hard, can be disastrous. And, we gurus
|
|
need to be aware that one story from such a person on
|
|
newsgroups and mailing lists goes as far as ten stories of
|
|
positive experiences. Trying to coerce most people into the
|
|
<EM>suck it up</EM> method is just asking for trouble. You risk
|
|
your credibility about OS matters on your ability to teach and
|
|
support someone in learning a new environment. This is a
|
|
gamble that most likely won't pay off often enough to be worth
|
|
the risk. Our most powerful weapon in the Linux community has
|
|
always been our honesty and integrity when it comes to the
|
|
products we advocate. To push someone to use a system they
|
|
are not ready for can have deleterious effects on that
|
|
reputation.
|
|
|
|
<P>
|
|
|
|
<H2><A NAME="SECTION00053000000000000000">
|
|
Putting one foot in front of the other</A>
|
|
</H2>
|
|
|
|
<P>
|
|
This brings us to the last method - the <EM>delayed skill
|
|
transfer approach</EM>. What is this? It's simple -- give
|
|
Windows, NT and Mac users Unix tools to use on their current
|
|
projects! Simple, huh? The problem is, in our zest to push
|
|
the Linux point of view on people, we often forget that we can
|
|
give some demonstration of the power of the Unix way which is
|
|
utterly non-threatening to new users. By replacing the
|
|
command windows prompt with bash, by changing dir to ls,
|
|
by adding ghostview, ghostscript, emacs, perl, LaTeX and other
|
|
tools to the Windows environment, we allow for users to
|
|
develop their skills and confidence in Unix methods without
|
|
compromising their ability to currently work.
|
|
|
|
<P>
|
|
While this method may take longer to get any particular user
|
|
up and running in a completely Linux-only environment, it also
|
|
offers the most benefits with the fewest drawbacks. The
|
|
benefits of the <EM>OS/2 revisited</EM> method, namely that of
|
|
having tools that you are comfortable with, is realized
|
|
without the deficit of having to rely on out-dated versions
|
|
or be worried about underlying complexities. The drawbacks of
|
|
the <EM>suck it up</EM> approach are avoided as the users are
|
|
given plenty of time to become familiar with the new tools in
|
|
an environment that doesn't endanger any current projects.
|
|
Thus the users are less stressed and more open to trying new
|
|
things, for the new things don't entail the need to be
|
|
concerned about not being able to accomplish critical tasks.
|
|
|
|
<P>
|
|
Further, after a few weeks or months, those ``mission critical''
|
|
tasks are now being accomplished on Unix tools that have been
|
|
ported to the user's (soon to be formerly) favorite
|
|
platform. Thus, when the switch over to Linux comes, the user
|
|
no longer has to learn two new things - how to be productive
|
|
and how to system manage. Instead, they are instantly
|
|
productive and can learn the underlying system at their
|
|
leisure. More often than not they will come to want the extra
|
|
functionality of things like named pipes, IPC, and other Unix
|
|
niceties that are unavailable in their scaled down ports.
|
|
|
|
<P>
|
|
|
|
<H1><A NAME="SECTION00060000000000000000">
|
|
Why it isn't happening?</A>
|
|
</H1>
|
|
|
|
<P>
|
|
While this seems to be a fairly obvious method of helping
|
|
users move to Unix environments it seems to be one of the
|
|
least attempted. There are a few reasons for this.
|
|
|
|
<P>
|
|
<UL>
|
|
<LI>Advocates tend to be very strong in their opinion that
|
|
windows=bad, Unix=good. They are not particularly willing to
|
|
compromise their ideals for what seems like limited gains.
|
|
<LI>Advocates tend towards seeing the computing market as a
|
|
battleground of sorts where Unix is pitted against the ``evil
|
|
empire.'' Anything that doesn't seem like a direct attack upon
|
|
Microsoft can be seen as an act of near treason.
|
|
<LI>Linux users tend to spend lots of time under Linux,
|
|
they are a bit out of touch with the windows world. As a
|
|
result, they may not be aware of that neat new port of Bash as
|
|
the command shell under 95, or that perl can run (and do some
|
|
neat registry tricks too!)
|
|
</UL>
|
|
|
|
<P>
|
|
|
|
<H1><A NAME="SECTION00070000000000000000">
|
|
Conclusion</A>
|
|
</H1>
|
|
|
|
<P>
|
|
The point of all this is that there is more than one way to
|
|
skin a cat (or in the case of Gates-ware, a weasel). Linux
|
|
advocacy can, and should, take forms that are appropriate to
|
|
the particular situation of a particular user. A student in
|
|
a computer science program with lots of free-time probably
|
|
should opt for the <EM>suck it up</EM> approach. A person with
|
|
plenty of support from a local administrator and plenty of
|
|
legacy apps might benefit greatly from the <EM>OS/2
|
|
revisited method</EM>. And, most importantly, we can't forget that
|
|
promoting Unix tools under other OS's is a form of advocacy.
|
|
More importantly, in an environment where mission critical
|
|
apps and projects abound, it may be the most effective form of
|
|
advocacy. Keep up with available ports of your favorite Unix
|
|
tools under other systems, and you can increase your
|
|
conversion success rate!
|
|
|
|
<P>
|
|
|
|
<H1><A NAME="SECTION00080000000000000000">
|
|
About this document ... </A>
|
|
</H1>
|
|
<STRONG>Evangelism: A Unix Bigot and Linux Advocate's Spewings</STRONG><P>
|
|
This document was generated using the
|
|
<A HREF="http://www-dsed.llnl.gov/files/programs/unix/latex2html/manual/"><STRONG>LaTeX</STRONG>2<tt>HTML</tt></A> translator Version 98.1 release (February 19th, 1998)
|
|
<P>
|
|
Copyright © 1993, 1994, 1995, 1996, 1997,
|
|
<A HREF="http://cbl.leeds.ac.uk/nikos/personal.html">Nikos Drakos</A>,
|
|
Computer Based Learning Unit, University of Leeds.
|
|
<P>
|
|
The command line arguments were: <BR>
|
|
<STRONG>latex2html</STRONG> <tt>-split 0 lj_advocacy.tex</tt>.
|
|
<P>
|
|
The translation was initiated by David Wagle on 1998-03-23
|
|
|
|
<!--===================================================================-->
|
|
<P> <hr> <P>
|
|
<center><H5>Copyright © 1998, David Wagle <BR>
|
|
Published in Issue 27 of <i>Linux Gazette</i>, April 1998</H5></center>
|
|
|
|
<!--===================================================================-->
|
|
<P> <hr> <P>
|
|
<A HREF="./index.html"><IMG ALIGN=BOTTOM SRC="../gx/indexnew.gif"
|
|
ALT="[ TABLE OF CONTENTS ]"></A>
|
|
<A HREF="../index.html"><IMG ALIGN=BOTTOM SRC="../gx/homenew.gif"
|
|
ALT="[ FRONT PAGE ]"></A>
|
|
<A HREF="./marsden.html"><IMG SRC="../gx/back2.gif"
|
|
ALT=" Back "></A>
|
|
<A HREF="./jeffery.html"><IMG SRC="../gx/fwd.gif" ALT=" Next "></A>
|
|
<P> <hr> <P>
|
|
|
|
<H4>
|
|
"Linux Gazette...<I>making Linux just a little more fun!</I>"
|
|
</H4>
|
|
|
|
<P> <HR> <P>
|
|
<!--===================================================================-->
|
|
|
|
<center>
|
|
<H1>A Glimpse of Icon</H1>
|
|
<H4>By <a href="mailto:jeffery@cs.utsa.edu">Clinton Jeffery</a>
|
|
and <A HREF="mailto:spm@drones.com">Shamim Mohamed</A></H4>
|
|
</center>
|
|
<P> <HR> <P>
|
|
|
|
<h3> Motivation </h3>
|
|
<P> <HR> <P>
|
|
|
|
Many languages introduce special capabilities for specific kinds of
|
|
applications, but few present us with more powerful control structures or
|
|
programming paradigms. You may be comfortable sticking with a language
|
|
you already know, but if you are challenged to write complex programs and
|
|
are short on time, you need the best language for the job. Icon is a
|
|
high-level programming language that looks like many other programming
|
|
languages but offers many advanced features that add up to big gains
|
|
in productivity. Before we get to all that, let us write the canonical
|
|
first program:
|
|
<PRE>procedure main()
|
|
write("Hello, world!")
|
|
end</PRE>
|
|
If you've installed Linux Icon,
|
|
Save this in a file named <code>hello.icn</code> and run <I>icont</I>, the
|
|
Icon translator on it:
|
|
<PRE>icont hello -x</PRE>
|
|
<I> icont</I> performs some syntax checking on <code>hello.icn</code> and
|
|
transforms the code into
|
|
instructions for the Icon virtual machine, which will be saved in
|
|
<code>hello</code>. The <code>-x</code> option tells <code>icont</code> to
|
|
execute the program also.
|
|
|
|
<p>
|
|
We are introducing many concepts, so don't expect to understand
|
|
everything the first time through -- the only way to learn a language is to
|
|
write programs in it; so get Icon, and take it for a test drive.
|
|
|
|
<h4><u>Genealogy</u></h4>
|
|
|
|
Despite its name, Icon is not a visual programming language -- its
|
|
look-and-feel descends from Pascal and C. The important thing about
|
|
Icon is not that its syntax is easy to learn. Icon's semantics, which
|
|
generalize ideas from SNOBOL4, succeed in adding
|
|
considerable power to the familiar notation found in most
|
|
programming languages. This is noteworthy because most languages that add real
|
|
power (APL, Lisp, and SmallTalk are examples) do so with a syntax that
|
|
is so different that programmers must learn a new way of thinking to use
|
|
them. Icon adds power `under the hood' of a notation most programmers are
|
|
already comfortable with.<p>
|
|
|
|
Icon was developed over several years at the University of Arizona by a team
|
|
led by Ralph Griswold. Today, it runs on many platforms and is used by
|
|
researchers in algorithms, compilers, and linguistics as well as system
|
|
administrators and hobbyists. The implementation and source code are
|
|
in the public domain.
|
|
|
|
<P> <HR> <P>
|
|
<H3>Variables, Expressions, and Type</H3>
|
|
<P> <HR> <P>
|
|
|
|
Icon's expression syntax starts out much as do most languages.
|
|
For example, <code>i+j</code>
|
|
represents the arithmetic addition of the values stored in the variables
|
|
<code>i</code> and <code>j</code>, <code>f(x)</code> is a call
|
|
to <code>f</code> with argument <code>x</code>, variables may be global
|
|
or local to a procedure, and so on.
|
|
|
|
<p>
|
|
|
|
Variable declarations are not required, and variables can hold any type of
|
|
value. However, Icon is a strongly typed language; it knows the type of each
|
|
value and it does not allow you to mix invalid types in expressions. The
|
|
basic scalar types are integers, real numbers, strings, and sets of
|
|
characters (csets). Integers and strings can be arbitrarily large; and
|
|
strings can contain any characters. There are also structured types: lists,
|
|
associative arrays, sets and records. Icon performs automatic storage
|
|
management.
|
|
|
|
<h4><u>Goal-directed Expression Evaluation</u></h4>
|
|
|
|
Icon's major innovation is its expression evaluation mechanism. It avoids
|
|
certain problems widely found in conventional languages in which each
|
|
expression always computes one result. In such languages, if no valid
|
|
result is possible, a sentinel value such as -1, NULL, or EOF (end-of-file)
|
|
is returned instead. The program must check for such errors using boolean
|
|
logic and if-then tests, and the programmer must remember many different
|
|
sentinel values used in different circumstances. This is cumbersome.
|
|
Alternative ideas such as exceptions have been developed in
|
|
some languages, but they introduce complexity and problems of their own.
|
|
|
|
|
|
<h4><u>Success and Failure</u></h4>
|
|
|
|
In Icon, expressions are <em>goal-directed</em>. When it is evaluated, every
|
|
expression has a goal of producing results for the surrounding expression.
|
|
If an expression succeeds in producing a result, the surrounding expression
|
|
executes as intended, but if an expression cannot produce a result, it is
|
|
said to <em>fail</em> and the surrounding expression cannot be performed and
|
|
in turn fails. This powerful concept subsumes Boolean logic and the
|
|
use of sentinel values, and allows a host of further improvements.
|
|
As an example, consider the expression <code>i > 3</code>
|
|
-- if the value <code>i</code> is greater than 3 the expression succeeds,
|
|
otherwise it fails.
|
|
<P>
|
|
|
|
Control structures such as <code>if</code> check for success, so
|
|
<PRE> if i > 3 then ...</PRE> does the expected thing. Since the
|
|
expression semantics are not encumbered with the need to propagate
|
|
boolean (or 0 and 1) values, comparison operators can instead propagate
|
|
a useful value (their right operand), allowing expressions such as
|
|
<code>3 > i > 7</code>
|
|
which is standard in mathematics, but doesn't work in most languages.
|
|
<p>
|
|
|
|
Since functions that fail do not need to return an error code separately
|
|
from the results, detecting cases such as end-of-file is simpler, as in:
|
|
<PRE> if line := read() then write(process(line))</PRE>
|
|
On end-of-file, <code>read()</code> fails, causing the assignment expression
|
|
tested in the if-part to fail. When the test fails, the <i>then</i> branch
|
|
is not executed so the call to <code>write()</code> does not occur.
|
|
Since failure propagates through an expression, the above example is equivalent
|
|
to
|
|
<PRE> write(process(read())</PRE>
|
|
|
|
|
|
<h4><u>Generators</u></h4>
|
|
|
|
Some expressions can naturally produce more than one result. These
|
|
expressions are called <em>generators</em>.
|
|
Consider the task of searching for a substring within a string, and returning
|
|
the position at which the substring occurs, as in Icon's <code>find()</code>
|
|
function:
|
|
<PRE> find("or", "horror")</PRE>
|
|
In conventional languages, this would return one of the possible return
|
|
values, usually the first or the last. In Icon, this expression is capable
|
|
of returning all the values, depending on the execution context.
|
|
If the surrounding expression only needs one value, as in the case of an
|
|
<i>if</i> test or an assignment, only the first value of a generator is
|
|
produced. If a generator is part of a more complex expression, then
|
|
the return values are produced in sequence until the whole expression
|
|
produces a value. In the expression
|
|
<PRE> find("or", "horror") > 3 </PRE>
|
|
the first value produced by <code>find()</code>, a 2, causes the
|
|
<code>></code> operation to fail. Icon <em>resumes</em> the call to find(),
|
|
which produces a 4, and the expression succeeds.
|
|
<p>
|
|
The most obvious generator is the alternation operator |. The expression
|
|
<pre> expr</PRE><sub>1</sub> <PRE>| expr</PRE><sub>2</sub>
|
|
is a generator that produces its lefthand side followed by its righthand
|
|
side, if needed by the surrounding expression. Consider
|
|
<code>f(1|2)</code> -- <code>f</code> is first invoked with the value 1;
|
|
if that does not produce a value, the generator is resumed for another
|
|
result and <code>f</code> will be called again with the value 2.
|
|
As another example of the same operator,
|
|
|
|
<pre> x = (3 | 5)</pre>
|
|
|
|
is equivalent to but more concise than C's (x == 3) || (x == 5).
|
|
When more than
|
|
one generator is present in an expression, they are resumed in a LIFO manner.
|
|
|
|
<pre> (x | y) = (3 | 5)</pre>
|
|
|
|
is the Icon equivalent of C's
|
|
|
|
<pre> (x == 3) || (x == 5) || (y == 3) || (y == 5)</pre>
|
|
<p>
|
|
|
|
In addition to <code> | </code>, Icon has a <i>generate</i> operator
|
|
<code> ! </code> that generates elements of data structures, and a
|
|
generator <code>to</code> that produces ranges of integers. For example,
|
|
<code>!L</code> generates the elements of list L, and <code>1 to 10</code>
|
|
generates the first ten positive integers.
|
|
|
|
Besides these operators that generate results, most generators in Icon
|
|
take the form of calls to built-in and user-defined procedures.
|
|
Procedures are discussed below.
|
|
|
|
|
|
<h4><u>Iteration</u></h4>
|
|
|
|
Icon has the ordinary <code>while</code> loop where the control expression is
|
|
evaluated before each iteration. For generators, an alternative loop is
|
|
available
|
|
where the loop body executes once per result produced by a single evaluation
|
|
of the control expression. The alternative loop uses the reserved word
|
|
<code>every</code> and can be used in conjunction with the <code>to</code>
|
|
operator to provide the equivalent of a <code>for</code>-loop:
|
|
<pre> every i := 1 to 10 do ...</pre>
|
|
The point of <code>every</code> and <code>to</code> is not that you can use
|
|
them to implement a for-loop; Icon's generator mechanism is quite a
|
|
bit more general. The <code>every</code> loop lets you
|
|
walk through all the results of a generator giving you iterators
|
|
for free. And <code>every</code> isn't limited to sequences of numbers or
|
|
traversals of specific data structures like iterators in some languages; it
|
|
works on any expression that contains generators.
|
|
|
|
<pre> every f(1 | 1 | 2 | 3 | 5 | 8)</pre>
|
|
executes the function <code>f</code> with the first few
|
|
fibonacci numbers, and
|
|
the example could be generalized to a user-defined generator procedure
|
|
that produced the entire fibonacci sequence.
|
|
Using generators requires a bit of practice, but then it is fun!
|
|
<P> <HR> <P>
|
|
<H3>Procedures</H3>
|
|
<P> <HR> <P>
|
|
|
|
Procedures are a basic building block in most languages, including Icon.
|
|
Like C, an Icon program is organized as a collection of procedures and
|
|
execution starts from a procedure named <code>main()</code>.
|
|
Here is an example of an ordinary procedure. This one generates and sums
|
|
the elements of a list <code>L</code>, whose elements had better be numbers
|
|
(or convertible to numbers).
|
|
<PRE>procedure sum(L)
|
|
total := 0
|
|
every total +:= !L
|
|
return total
|
|
end</PRE>
|
|
<P>
|
|
|
|
A user can write her own generator by including a
|
|
<pre> suspend <em>expr</em></pre>
|
|
in a procedure where a result should be produced. When a procedure
|
|
suspends, it transfers a result to the caller, but remains available to
|
|
continue where it left off and generate more results. If the expression
|
|
from which it is called needs more or different results in order to succeed,
|
|
the procedure will be resumed.
|
|
The following example generates the elements from parameter <code>L</code>,
|
|
but filters out the zeros.
|
|
<PRE>procedure nonzero(L)
|
|
every i := !L do
|
|
if i ~= 0 then suspend i
|
|
end</PRE>
|
|
The <code>fail</code> expression makes the procedure fail, i.e. causes control
|
|
to go back to the calling procedure without returning a value. A procedure
|
|
also fails implicitly
|
|
if control flows off the end of the procedure's body.
|
|
|
|
<P> <HR> <P>
|
|
<h3> String Processing </h3>
|
|
<P><HR> <P>
|
|
|
|
Besides expression evaluation, Icon offers compelling features to reduce the
|
|
effort required to write complex programs. From Icon's ancestor SNOBOL4, the
|
|
granddaddy of all string processing languages, Icon inherits some of the
|
|
most flexible and readable built-in data structures found in any language.
|
|
|
|
<h4><u>Strings</u></h4>
|
|
|
|
Parts of Icon strings are accessed using the subscript operator. Indexes
|
|
denote the positions <em>between</em> characters, and pairs of indexes
|
|
are used to pick out substrings. If <code>s</code> is the string
|
|
<code>"hello, world"</code> then the expressions
|
|
<pre> s[7] := " linux "
|
|
s[14:19] := "journal"</pre>
|
|
change <code>s</code> into <code>"hello, linux journal"</code>,
|
|
illustrating
|
|
the ease with which insertions and substitutions are made. A myriad of
|
|
built-in functions operate on strings; among them are the operators for
|
|
concatenation (<code>s1 || s2</code>) and size
|
|
(<code>*s</code>).
|
|
|
|
<H4><u>String Scanning</u></H4>
|
|
|
|
The string analysis facility of Icon is called <em>scanning</em>. A scanning
|
|
environment is set up by the <code>?</code> operator:
|
|
<PRE> s ? expr</PRE>
|
|
A scanning environment has a
|
|
string and a current position in it. <em>Matching functions</em> change this
|
|
position, and return the substring between the old and new positions. Here
|
|
is a simple example:
|
|
<PRE> text ? {
|
|
while move(1) do
|
|
write(move(1))
|
|
}</PRE>
|
|
<code>move</code> is a function that advances the position by its argument; so
|
|
this code writes out every alternate character of the string in
|
|
<code>text</code>. Another matching function is <code>tab</code>, which sets
|
|
the position to its argument.
|
|
<em>String analysis</em> functions examine a string and generate the
|
|
interesting positions in it. We have already seen
|
|
<code>find</code>, which looks
|
|
for substrings. These functions default their subject to the string being
|
|
scanned. Here is a procedure that produces the words from the input:
|
|
<PRE>procedure getword()
|
|
while line := read() do
|
|
line ? while tab(upto(wchar)) do {
|
|
word := tab(many(wchar))
|
|
suspend word
|
|
}
|
|
end</PRE>
|
|
<code>upto(c)</code> returns the next position of a character from the cset
|
|
<code>c</code>; and <code>many(c)</code>
|
|
returns the position after a sequence of characters from <code>c</code>.
|
|
The expression <code>tab(upto(wchar))</code>
|
|
advances the position to a character
|
|
from <code>wchar</code>, the set of characters that make up words; then
|
|
<code>tab(many(wchar))</code> moves the position to the end of the word and
|
|
returns the word that is found.
|
|
|
|
<P> <HR> <P>
|
|
<H3>Regular Expressions</H3>
|
|
<P> <HR> <P>
|
|
|
|
The Icon Program Library (included with the distribution) provides regular
|
|
expression matching functions. To use it, include the line
|
|
<code>link regexp</code> at the top of the program. Here is an example of
|
|
`search-and-replace':
|
|
<PRE>procedure re_sub(str, re, repl)
|
|
result := ""
|
|
str ? {
|
|
while j := ReFind(re) do {
|
|
result ||:= tab(j) || repl
|
|
tab(ReMatch(re))
|
|
}
|
|
result ||:= tab(0)
|
|
}
|
|
return result
|
|
end</PRE>
|
|
<P>
|
|
|
|
<P> <HR> <P>
|
|
<H3>Structures</H3>
|
|
<P> <HR> <P>
|
|
|
|
Icon has several structured (or non-scalar) types as well that help organize
|
|
and store collections of arbitrary (and possibly mixed) types of values. A
|
|
<em>table</em> is an associative array, where values are stored indexed by
|
|
keys which may be of arbitrary type; a list is a group of values accessed
|
|
by integer indices as well as stack and queue operations; a set is an
|
|
unordered group of values, etc.
|
|
|
|
<H4><u>Tables</u></H4>
|
|
|
|
A table is created with the <code>table</code> function. It takes one argument:
|
|
the default value, i.e. the value to return when lookup fails. Here is a
|
|
code fragment to print a word count of the input (assuming the
|
|
<code>getword</code>
|
|
function generates words of interest):
|
|
<PRE> wordcount := table(0)
|
|
every word := getword() do
|
|
wordcount[word] +:= 1
|
|
every word := key(wordcount) do
|
|
write(word, "\t", wordcount[word])</PRE>
|
|
(The <code>key</code> function generates the keys with which values have been
|
|
stored.) Since the default value for the table is 0, when a new word is
|
|
inserted, the default value gets incremented and the new value (i.e. 1) is
|
|
stored with the new word. Tables grow automatically as new elements are
|
|
inserted.
|
|
|
|
<H4><u>Lists</u></H4>
|
|
|
|
A list can be created by enumerating its members:
|
|
<PRE> L := ["linux", 2.0, "unix"]</PRE>
|
|
Lists are dynamic; they grow or shrink through calls to list manipulation
|
|
routines like <code>pop()</code> etc. Elements of the list can be obtained either
|
|
through list manipulation functions or by subscripting:
|
|
<PRE> write(L[3])</PRE>
|
|
There is no restriction on the kinds of values
|
|
that may be stored in a list.
|
|
|
|
<H4><u>Records and Sets</u></H4>
|
|
|
|
A record is like a struct in C, except that there is no restriction
|
|
on the types that can be stored in the fields. After a record is declared:
|
|
<PRE>record complex(re, im)</pre>
|
|
instances of that record are created using a constructor procedure with
|
|
the name of the record type, and on such instances, fields are accessed
|
|
by name:
|
|
<pre> i := complex(0, 0)
|
|
j := complex(1, -1)
|
|
if a.re = b.re then ...</PRE>
|
|
<P>
|
|
A set is an unordered collection of values with the uniqueness property
|
|
i.e. an element can only be present in a set once.
|
|
<PRE> S := set(["rock lobster", 'B', 52])</PRE>
|
|
The functions <code>member</code>, <code>insert</code>, and
|
|
<code>delete</code> do what their
|
|
names suggest. Set intersection, union and difference are provided by
|
|
operators. A set can contain any value (including itself, thereby neatly
|
|
sidestepping Russell's paradox!).
|
|
|
|
<P> <HR> <P>
|
|
<H3>Graphs</H3>
|
|
<P> <HR> <P>
|
|
|
|
Since there is no restriction on the types of values in a list, they can be
|
|
other lists too. Here's an example
|
|
of a how a graph or tree may be implemented with lists:
|
|
<PRE>record node(label, links)
|
|
...
|
|
barney := node("Barney", list())
|
|
betty := node("Betty", list())
|
|
bambam := node("Bam-Bam", list())
|
|
put(bambam.links, barney, betty)</PRE>
|
|
|
|
<H4><u>An Example</u></H4>
|
|
|
|
Let us now do a little example to illustrate the above concepts. Here is
|
|
a program to read a file, and generate a concordance i.e. for every
|
|
word, print a list of the lines it occurs on. We want to skip short words
|
|
like `the' though, so we only count the words longer than 3 characters.
|
|
<PRE>global wchar
|
|
procedure main(args)
|
|
wchar := &ucase ++ &lcase
|
|
(*args = 1) | stop("Need a file!")
|
|
f := open(args[1]) | stop("Couldn't open ", args[1])
|
|
wordlist := table()
|
|
lineno := 0
|
|
while line := read(f) do {
|
|
lineno +:= 1
|
|
every word := getword(line) do
|
|
if *word > 3 then {
|
|
# if <em>word</em> isn't in the table, set entry to empty list
|
|
/wordlist[word] := list()
|
|
put(wordlist[word], lineno)
|
|
}
|
|
}
|
|
L := sort(wordlist)
|
|
every l := !L do {
|
|
writes(l[1], "\t")
|
|
linelist := ""
|
|
# Collect line numbers into a string
|
|
every linelist ||:= (!l[2] || ", ")
|
|
write(linelist[1:-2])
|
|
}
|
|
end
|
|
|
|
procedure getword(s)
|
|
s ? while tab(upto(wchar)) do {
|
|
word := tab(many(wchar))
|
|
suspend word
|
|
}
|
|
end</PRE>
|
|
If we run this program on this input:
|
|
<PRE>Sing, Mother, sing.
|
|
Can Mother sing?
|
|
Mother can sing.
|
|
Sing, Mother, sing!</PRE>
|
|
the program writes this output:
|
|
<PRE>Mother 1, 2, 3, 4
|
|
Sing 1, 4
|
|
sing 1, 2, 3, 4</PRE>
|
|
While we may not have covered all the features used in this program, it
|
|
should give you a feeling for the flavour of the language.
|
|
|
|
<P> <HR> <P>
|
|
<H3>Co-expressions</H3>
|
|
<P> <HR> <P>
|
|
|
|
Another novel control facility in Icon is the co-expression, which is an
|
|
expression encapsulated in a thread-like execution context where its results
|
|
can be picked apart one at a time. Co-expressions are are more portable
|
|
and more fine-grained than comparable facilities found in most languages.
|
|
Co-expressions let you `capture' generators and then use their results
|
|
from multiple places in your code. Co-expressions are created by
|
|
<pre> create <i>expr</i></pre>
|
|
and each result of the co-expression is requested using the <code>@</code>
|
|
operator.
|
|
<p>
|
|
|
|
As a small example, suppose you have a procedure <code>prime()</code> that
|
|
generates an infinite sequence of prime numbers, and want to number each
|
|
prime as you print them out, one per line. Icon's <code>seq()</code>
|
|
function will generate the numbers to precede the primes, but there is no
|
|
way to generate elements from the two generators in tandem; no way except
|
|
using co-expressions, as in the following:
|
|
<pre> numbers := create seq()
|
|
primes := create prime()
|
|
every write(@numbers, ": ", @primes)
|
|
</pre>
|
|
|
|
More information about co-expressions
|
|
can be found at <code> <a href="http://www.drones.com/coexp/">
|
|
http://www.drones.com/coexp/</a></code>
|
|
and a complete description is in the Icon language book mentioned below.
|
|
|
|
|
|
|
|
<P> <HR> <P>
|
|
<h3> Graphics </h3>
|
|
<P><HR> <P>
|
|
|
|
Icon features high-level graphics facilities that are portable across
|
|
platforms. The most robust implementations are X Window and Microsoft
|
|
Windows; Presentation Manager, Macintosh, and Amiga ports are in various
|
|
stages of progress. The most important characteristics of
|
|
the graphics facilities are:
|
|
<ul>
|
|
<li> simplicity, ease of learning
|
|
<li> windows are integrated with Icon's existing I/O functions
|
|
<li> straightforward input event model
|
|
</ul>
|
|
As a short example, the following program opens a window and allows the user
|
|
to type text and draw freehand on it using the left mouse button, until an
|
|
ESC char is pressed. Clicking the right button moves the text cursor to a
|
|
new location. Mode <code>"g"</code> in the call to open stands
|
|
for "graphics". <code>&window</code> is a special global
|
|
variable that serves as a default window for graphics functions.
|
|
<code>&lpress</code>, <code>&ldrag</code>, and
|
|
<code>&rpress</code> are special constants that denote left mouse button
|
|
press and drag, and right mouse button press, respectively.
|
|
<code>&x</code> and <code>&y</code> are special global variables
|
|
that hold the mouse position associated with the most recent user action
|
|
returned by Event(). <code>"\e"</code> is a one-letter Icon
|
|
string containing the escape character.
|
|
<pre>procedure main()
|
|
&window := open("LJ example","g")
|
|
repeat case e := Event() of {
|
|
&lpress | &ldrag : DrawPoint(&x,&y)
|
|
&rpress : GotoXY(&x,&y)
|
|
"\e" : break
|
|
default : if type(e)=="string" then writes(&window, e)
|
|
}
|
|
end
|
|
</pre>
|
|
A complete description of the graphics facilities is available on the web at
|
|
<A href="http://www.cs.arizona.edu/icon/docs/ipd281.html">
|
|
<code>http://www.cs.arizona.edu/icon/docs/ipd281.html</code></A>
|
|
|
|
<P> <HR> <P>
|
|
<H3>POSIX Functions</H3>
|
|
<P> <HR> <P>
|
|
|
|
An Icon program that uses the POSIX functions should include the header file
|
|
<code>posixdef.icn</code>. On error, the POSIX functions fail and set the
|
|
keyword
|
|
<code>&errno</code>; the corresponding printable error string is
|
|
obtained by
|
|
calling <code>sys_errstr()</code>.
|
|
<P>
|
|
Unix functions that return a C struct (or a list, in Perl) return records
|
|
in Icon. The
|
|
fields in the return values have names similar to the Unix counterparts:
|
|
<I>stat()</I> returns a record with fields <I>ino</I>, <I>
|
|
nlink</I>, <I>mode</I> etc.
|
|
<P>
|
|
A complete description of the POSIX interfaces is included in the
|
|
distribution; an HTML version is available on the web, at
|
|
<A HREF="http://www.drones.com/unicon/">http://www.drones.com/unicon/</A>.
|
|
We look at a few small examples here.
|
|
|
|
<P> <HR> <P>
|
|
<H3>An Implementation of <TT>ls</TT></H3>
|
|
<P> <HR> <P>
|
|
|
|
Let us look at how a simple version of the Unix <TT>ls</TT> command may be
|
|
written. What we need to do is to read the directory, and perform a
|
|
<TT>stat</TT> call on each name we find. In Icon, opening a directory is
|
|
exactly the same as opening a file for reading; every <I>read</I>
|
|
returns one filename.
|
|
<PRE> f := open(dir) | stop(name, ":", sys_errstr(&errno))
|
|
names := list()
|
|
while name := read(f) do
|
|
push(names, name)
|
|
every name := !sort(names) do
|
|
write(format(lstat(name), name, dir))</PRE>
|
|
The <I>lstat</I> function returns a record that has all the information
|
|
that <TT>lstat(2)</TT> returns. One difference between the Unix version and
|
|
the Icon version is
|
|
that the <TT>mode</TT> field is
|
|
converted to a human readable string -- not an integer on which you
|
|
have to do bitwise magic on. (And in Icon, string manipulation is
|
|
as natural as a bitwise operation.)
|
|
<P>
|
|
The function to format the information is simple; it also checks
|
|
to see if the name is a symbolic link, in which case it prints the value of
|
|
the link also.
|
|
<PRE>link printf
|
|
procedure format(p, name, dir)
|
|
s := sprintf("%7s %4s %s %3s %8s %8s %8s %s %s",
|
|
p.ino, p.blocks, p.mode, p.nlink,
|
|
p.uid, p.gid, p.size, ctime(p.mtime)[5:17], name)
|
|
|
|
if p.mode[1] == "l" then
|
|
s ||:= " -> " || readlink(dir || "/" || name)
|
|
|
|
return s
|
|
end</PRE>
|
|
|
|
<P> <HR> <P>
|
|
<H3>Polymorphism and other pleasant things</H3>
|
|
<P> <HR> <P>
|
|
|
|
It's not just <I>stat</I> that uses human-readable values --
|
|
<I>chmod</I> can accept an integer that represents a bit pattern
|
|
to set the file mode to, but it also takes a string just like the shell
|
|
command:
|
|
<PRE> chmod(f, "a+r")</PRE>
|
|
And the first argument: it can be either an opened file or a path to a file.
|
|
Since Icon values are typed, the function knows what kind of value it's
|
|
dealing with -- no more <TT>fchmod</TT> or <TT>fstat</TT>. The same applies to
|
|
other functions -- for example, the Unix functions <TT>getpwnam</TT>,
|
|
<TT>getpwuid</TT> and <TT>getpwent</TT> are all subsumed by the Icon function
|
|
<I>getpw</I> which does the appropriate thing depending on the type of
|
|
the argument:
|
|
<PRE> owner := getpw("ickenham")
|
|
root := getpw(0)
|
|
while u := getpw() do ...</PRE>
|
|
Similarly, <I>trap</I> and <I>kill</I> can accept a signal number
|
|
or name; <I>wait</I> returns human-readable status; <I>chown</I>
|
|
takes a username or uid; and <I>select</I> takes a list of files.
|
|
|
|
<P> <HR> <P>
|
|
<H3>Using <code>select</code></H3>
|
|
<P><HR> <P>
|
|
The <code>select()</code> function waits for input to become
|
|
available on a set of
|
|
files. Here is an example of the usage -- this program waits for typed
|
|
input or for a
|
|
window event, with a timeout of 1000 milliseconds:
|
|
<P>
|
|
<PRE> repeat {
|
|
while *(L := select([&input, &window], 1000)) = 0 do
|
|
... handle timeout
|
|
if &errno ~= 0 then
|
|
stop("Select failed: ", sys_errstr(&errno))
|
|
|
|
every f := !L do
|
|
case f of {
|
|
&input : handle_input()
|
|
&window : handle_evt()
|
|
}
|
|
}</PRE>
|
|
If called with no timeout value, select will wait forever. A timeout of 0
|
|
performs a poll.
|
|
|
|
<P> <HR> <P>
|
|
<H3>Networking</H3>
|
|
<P><HR> <P>
|
|
|
|
Icon provides a much simpler interface to BSD-style sockets.
|
|
Instead of the four different system calls that are required to
|
|
start a TCP/IP server using Perl, only one is needed in Icon--the
|
|
<I>open</I> function opens network connections as well as files. The first
|
|
argument to <I>open</I>
|
|
is the network address to connect to -- <I>host:port</I> for Internet
|
|
domain connections, and a filename for Unix domain sockets.
|
|
The second argument specifies the type of connection.
|
|
<P>
|
|
Here is an Internet domain TCP server listening on port 1888:
|
|
<PRE>procedure main()
|
|
while f := open(":1888", "na") do
|
|
if fork() = 0 then {
|
|
service_request(f)
|
|
exit()
|
|
} else
|
|
close(f)
|
|
stop("Open failed: ", sys_errstr(&errno))
|
|
end</PRE>
|
|
The <I>"na"</I> flags indicate that this is a <em>network
|
|
accept</em>. Each call to <code>open</code> waits for a network connection
|
|
and then returns a file for that connection.
|
|
To connect to this server, the <I>"n"</I> (network connect) flag is
|
|
used with <code>open</code>. Here's a function that connects to a
|
|
`finger' server:
|
|
<PRE>procedure finger(name, host)
|
|
static fserv
|
|
initial fserv := getserv("finger") |
|
|
stop("Couldn't get service: ", sys_errstr(&errno))
|
|
|
|
f := open(host || ":" || fserv.port, "n") | fail
|
|
write(f, name) | fail
|
|
while line := read(f) do
|
|
write(line)
|
|
end</PRE>
|
|
Nice and simple, isn't it? One might even call it Art! On the other hand,
|
|
writing socket code in Perl is not much
|
|
different from writing it in C, except that you have to perform weird
|
|
machinations with <TT>pack</TT>. No more! Eschew obfuscation, do it in Icon.
|
|
|
|
<H4><u>UDP</u></H4>
|
|
|
|
UDP networking is similar; using <I>"nu"</I> as the second
|
|
argument to <I>open</I>
|
|
signifies a UDP connection. A datagram is sent either with <I>write</I>
|
|
or <I>send</I>, and is received with <I>receive</I>.
|
|
Here is a simple client for the UDP `daytime' service, something like
|
|
<TT>rdate(1)</TT>:
|
|
<PRE> s := getserv("daytime", "udp")
|
|
|
|
f := open(host || ":" || s.port, "nu") |
|
|
stop("Open failed: ", sys_errstr(&errno))
|
|
|
|
writes(f, " ")
|
|
|
|
if *select([f], 5000) = 0 then
|
|
stop("Connection timed out.")
|
|
|
|
r := receive(f)
|
|
write("Time on ", host, " is ", r.msg)</PRE>
|
|
Since UDP is not reliable, the <I>receive</I>
|
|
is guarded with <I>select</I> (timeout of 5000 ms), or the program
|
|
might hang forever if the reply is lost.
|
|
<P>
|
|
|
|
<P> <HR> <P>
|
|
<h3> Icon and other languages </h3>
|
|
<P> <HR> <P>
|
|
|
|
The popular languages Perl and Java have been covered in LJ, and we think
|
|
it is worth discussing how Icon stacks up against these dreadnaughts.
|
|
|
|
<H4><u>Perl and Icon</u></H4>
|
|
|
|
Perl and Icon are both used for similar purposes. Both
|
|
languages offer high-level data structures like lists, associative arrays,
|
|
etc. Both make it easy to write short prototypes by not requiring
|
|
extensive declarations; and both were intended by their designers to be
|
|
`user friendly' i.e. intended to make programming easier for the user
|
|
rather than to prove some theoretical point.
|
|
<p>
|
|
|
|
But when it comes to language design, Perl and Icon are not at all
|
|
alike. Perl has been designed with very little structure -- or,
|
|
as Larry Wall puts it, it's more like a natural language than a programming
|
|
language.
|
|
Perl looks strange
|
|
but underneath the loose syntax its semantics are those of a conventional
|
|
imperative language. Icon,
|
|
on the other hand, looks more like a conventional imperative language but
|
|
has richer semantics.
|
|
|
|
<h4><u>Advantages of Perl</u></h4>
|
|
|
|
Perl's pattern matching, while not as general a mechanism as Icon's
|
|
string scanning, is more concise for recognizing those patterns that can
|
|
be expressed as regular expressions. Perl's syntax looks and feels natural
|
|
to long-time die-hard UNIX gurus and system administrators,
|
|
who have been using utilities such as <i>sh</i>, <i>sed</i>,
|
|
and <i>awk</i>. For
|
|
some people, Perl is especially appealing because mastering its idiosyncracies
|
|
places one in an elite group.
|
|
|
|
<H4><u>Some misfeatures of Perl</u></H4>
|
|
|
|
Let us look at some things that are (in our opinion) undesirable qualities
|
|
of Perl. These problems do not negate Perl's ingenious features, they
|
|
merely illustrate that Perl is no panacea.
|
|
<P>
|
|
|
|
Namespace confusion: it is a bad idea to allow scalar variables, vector
|
|
variables and functions to have the same name. This seems like a useful
|
|
thing to do, but it leads to write-only code. We think this is primarily
|
|
why it's hard to maintain Perl programs. A couple of things are
|
|
beyond belief -- <TT>$foo</TT> and <TT>%foo</TT> are different things, but
|
|
the expression <TT>$foo{bar}</TT> actually refers to an element of
|
|
<TT>%foo</TT>!
|
|
<P>
|
|
|
|
Parameter passing is a mess. Passing arrays by name is just too confusing!
|
|
Even after careful study and substantial practice, we still are not absolutely
|
|
certain about how to use <TT>*foo</TT> in Perl. As if to make up for the
|
|
difficulty of passing arrays by reference, <em>all</em> scalars are passed by
|
|
reference! That's very unaesthetic.
|
|
<P>
|
|
Why are there no formal parameters? Instead, one has to resort to something
|
|
that looks like a function call to declare local variables and assign
|
|
<TT>@_</TT> to it.
|
|
Allowing the parentheses to be left off subroutine calls is also unfortunate;
|
|
it is another `easy to write, hard to read' construct. And the distinction
|
|
between built-in functions and user-defined subroutines is ugly.
|
|
<P>
|
|
Variables like <TT>$`</TT> are a bad idea. We think of special
|
|
characters as punctuation, we don't expect them to be (borrowing
|
|
Wall's terminology) nouns. And the mnemonics that are required are evidence
|
|
that these variables place an additional burden of memorization upon
|
|
the programmer. (Quick, if you write Perl programs: What's `<TT>$(</TT>'?)
|
|
<P>
|
|
The distinction between array and scalar contexts also leads to obfuscated
|
|
code. Certainly after you've been writing Perl for a while, you get used to
|
|
it (and might even like it), but again, this is just confusing. All the
|
|
warnings in the Perl documentation about being certain you are evaluating in
|
|
the right context is evidence of this.
|
|
<P>
|
|
|
|
|
|
<h4><u>Java and Icon</u></h4>
|
|
|
|
Java takes the middle road in between C/C++ and the class of `very high level
|
|
languages' such as Icon and Perl. Java and Icon use a similar
|
|
virtual machine (VM) model. Java's VM is both lower-level and more
|
|
machine-independent than the Icon VM, but these are implementation artifacts
|
|
and it would be possible to implement Java on the Icon VM or Icon on the
|
|
Java VM. <p>
|
|
|
|
The important differences between Java and Icon are differences of philosophy.
|
|
The Java philosophy is that everything is an object, nothing is built-in to
|
|
the language, and programmers should learn class libraries for all non-trivial
|
|
structures and algorithms. Java's lack of operator overloading means that
|
|
its object-oriented notation allows no "shorthand" as does C++.
|
|
Java's
|
|
simplicity is a welcome relief after C++, but its expressive power is so
|
|
weak compared to Icon (and several other very high level languages) that
|
|
it is hard to argue that Java can supplant these languages. Most of Java's
|
|
market share is being carved out of the C and C++ industries.
|
|
|
|
<h4><u>How to Improve Java</u></h4>
|
|
|
|
Java has few bad mistakes. The Sumatra Project has itemized some of them in
|
|
The Java Hall of Shame at
|
|
<code>http://www.cs.arizona.edu/sumatra/hallofshame/</code>.
|
|
Most of Java's misfeatures are sins of omission, because the
|
|
language designers were trying to be elegant and minimal. We would
|
|
like to see a Java dialect with features such as Icon's goal-directed
|
|
evaluation, Perl's pattern matching, and APL's array-at-a-time numeric
|
|
operators; a description of such a dialect is at
|
|
<A HREF="http://segfault.cs.utsa.edu/godiva/">
|
|
http://segfault.cs.utsa.edu/godiva/</A>.
|
|
|
|
<P> <HR> <P>
|
|
<h3> Getting Icon </h3>
|
|
<P><HR> <P>
|
|
|
|
<p> Users who become serious
|
|
about the language will want a copy of `The Icon Programming Language', by
|
|
Ralph and Madge Griswold, Peer-to-Peer Communications 1997,
|
|
ISBN 1-57398-001-3.
|
|
|
|
<p>
|
|
Lots of documentation for Icon is available from the University of Arizona, at
|
|
<A HREF="http://www.cs.arizona.edu/icon/">http://www.cs.arizona.edu/icon/</A>
|
|
There is also a newsgroup on Usenet: comp.lang.icon.
|
|
|
|
<p>
|
|
The Icon source distribution is at:<br>
|
|
<A HREF="ftp://ftp.cs.arizona.edu/icon/packages/unix/unix.tgz">ftp://ftp.cs.arizona.edu/icon/packages/unix/unix.tgz</A><br>
|
|
The POSIX functions are in the following patch that you need to apply
|
|
if you wish to build from sources:
|
|
<br>
|
|
<A HREF="ftp://ftp.drones.com/unicon-patches.tar.gz">ftp://ftp.drones.com/unicon-patches.tar.gz</A>
|
|
<P>
|
|
|
|
Linux binaries (kernel 2.0 ELF, libgdbm 2.0.0, libX11 6.0, libdl 1.7.14,
|
|
libm 5.0.0 and libc 5.2.18)
|
|
for Icon (with X11 and POSIX support) are available at
|
|
<P>
|
|
|
|
<table>
|
|
<tr><td>
|
|
<A HREF="ftp://ftp.drones.com/icon-9.3-3.i386.rpm">ftp://ftp.drones.com/icon-9.3-3.i386.rpm</A> </td><td> Icon
|
|
</td></tr><tr><td>
|
|
<a HREF="ftp://ftp.drones.com/icon-ipl-9.3-3.i386.rpm">ftp://ftp.drones.com/icon-ipl-9.3-3.i386.rpm</A></td><td> Icon Program Library
|
|
</td></tr><tr><td>
|
|
<a HREF="ftp://ftp.drones.com/icon-idol-9.3-3.i386.rpm">ftp://ftp.drones.com/icon-idol-9.3-3.i386.rpm</A></td><td> Idol: Object-oriented Icon
|
|
</td></tr><tr><td>
|
|
<a HREF="ftp://ftp.drones.com/icon-vib-9.3-3.i386.rpm">ftp://ftp.drones.com/icon-vib-9.3-3.i386.rpm</A></td><td> VIB: The Visual Interface Builder
|
|
</td></tr><tr><td>
|
|
<a HREF="ftp://ftp.drones.com/icon-docs-9.3-3.i386.rpm">ftp://ftp.drones.com/icon-docs-9.3-3.i386.rpm</A></td><td> Documentation
|
|
</td></tr>
|
|
</table>
|
|
|
|
<!--===================================================================-->
|
|
<P> <hr> <P>
|
|
<center><H5>Copyright © 1998, Clinton Jeffery and Shamim Mohamed<BR>
|
|
Published in Issue 27 of <i>Linux Gazette</i>, April 1998</H5></center>
|
|
|
|
<!--===================================================================-->
|
|
<P> <hr> <P>
|
|
<A HREF="./index.html"><IMG ALIGN=BOTTOM SRC="../gx/indexnew.gif"
|
|
ALT="[ TABLE OF CONTENTS ]"></A>
|
|
<A HREF="../index.html"><IMG ALIGN=BOTTOM SRC="../gx/homenew.gif"
|
|
ALT="[ FRONT PAGE ]"></A>
|
|
<A HREF="./wagle.html"><IMG SRC="../gx/back2.gif"
|
|
ALT=" Back "></A>
|
|
<A HREF="./gm.html"><IMG SRC="../gx/fwd.gif" ALT=" Next "></A>
|
|
<P> <hr> <P>
|
|
|
|
<H4>
|
|
"Linux Gazette...<I>making Linux just a little more fun!</I>"
|
|
</H4>
|
|
|
|
<P> <HR> <P>
|
|
<!--===================================================================-->
|
|
|
|
<!-- =============================================================
|
|
This Page Designed by Michael J. Hammel.
|
|
Permission to use all graphics and other content for private,
|
|
non-commerical use is granted provided you give me (or the
|
|
original authors/artists) credit for the work.
|
|
|
|
CD-ROM distributors and commercial ventures interested in
|
|
providing the Graphics Muse for a fee must contact me,
|
|
Michael J. Hammel (mjhammel@graphics-muse.org), for permission.
|
|
============================================================= !--><!-- The Button box as a client side imagemap --> <MAP NAME="nav-main"><AREA SHAPE="rect" HREF="#mews" coords="20,18 185,40"><AREA SHAPE="rect" HREF="#webwonderings" coords="10,60 185,83"><AREA SHAPE="rect" HREF="#musings" coords="90,102 185,130"><AREA SHAPE="rect" HREF="#resources" coords="70,152 185,180"></MAP>
|
|
<TABLE BORDER=0 COLS=2 WIDTH="100%" >
|
|
<TR>
|
|
<TD><IMG SRC="../gx/hammel/gm3.gif" ALT="Welcome to the Graphics Muse" NOSAVE HEIGHT=216 WIDTH=441 ALIGN=LEFT></TD>
|
|
|
|
<TD VALIGN=BOTTOM>
|
|
<CENTER><FONT SIZE=-1>Set your browser as wide as you'd like now.
|
|
I've fixed the Muse to expand to fill the aviailable space!</FONT></CENTER>
|
|
|
|
<CENTER><FONT SIZE=-2>© 1998 by <A HREF="mailto:mjhammel@graphics-muse.org">mjh</A> </FONT></CENTER>
|
|
</TD>
|
|
</TR>
|
|
</TABLE>
|
|
|
|
<HR WIDTH="100%">
|
|
<TABLE BORDER=0 COLS=2 WIDTH="100%" >
|
|
<TR>
|
|
<TD WIDTH="185"><IMG SRC="../gx/hammel/muse-image-map.gif" ALT="Button Bar" BORDER=0 USEMAP="#nav-main" HEIGHT=200 WIDTH=185 ALIGN=LEFT></TD>
|
|
|
|
<TD VALIGN=TOP><B><FONT SIZE=+1>muse:</FONT></B>
|
|
<OL>
|
|
<LI>
|
|
<I>v;</I> to become absorbed in thought </LI>
|
|
|
|
<LI>
|
|
<I>n;</I> [ fr. Any of the nine sister goddesses of learning and the arts
|
|
in Greek Mythology ]: a source of inspiration </LI>
|
|
</OL>
|
|
<IMG SRC="../gx/hammel/w.gif" ALT="W" HEIGHT=28 WIDTH=36 ALIGN=BOTTOM>elcome
|
|
to the Graphics Muse! Why a "muse"? Well, except for the sisters aspect,
|
|
the above definitions are pretty much the way I'd describe my own interest
|
|
in computer graphics: it keeps me deep in thought and it is a daily source
|
|
of inspiration.
|
|
<CENTER><FONT SIZE=-1>[<A HREF="#mews">Graphics Mews</A>][<A HREF="#webwonderings">WebWonderings</A>][<A HREF="#musings">Musings</A>]
|
|
[<A HREF="#resources">Resources</A>]</FONT></CENTER>
|
|
</TD>
|
|
</TR>
|
|
</TABLE>
|
|
|
|
<BR><IMG SRC="../gx/hammel/t.gif" ALT="T" HEIGHT=28 WIDTH=26 ALIGN=LEFT>his column
|
|
is dedicated to the use, creation, distribution, and discussion of computer
|
|
graphics tools for Linux systems.
|
|
<BR>
|
|
<BR>Last month's comment on GGI, made mostly as a passing remark, generated
|
|
quite a bit of email. A few were very nice letters explaining where
|
|
I was mistaken in my perception of GGI. I now have to admit
|
|
that I was wrong about what GGI is with respect to X. It does not
|
|
try to replace X and for that I'm grateful. But even after getting
|
|
numerous emails on the subject from GGI developers and supporters and reading
|
|
all the material at the GGI site (plus discussion on various forums including
|
|
<A HREF="http://slashdot.org">slashdot.org</A>), I'm still not convinced
|
|
GGI is the right thing to do. Call it a gut feeling.
|
|
|
|
<P>I also got not just a few letters that were a little less than friendly.
|
|
So to them, I'll put it plainly - convince the commercial X server vendors
|
|
GGI is a good idea and I'll believe it. I trust them. That
|
|
said, I should also point out that as a reader of this column you should
|
|
make your own decisions. Go to the <A HREF="http://www.ggi-project.org/">GGI
|
|
Web site</A> and read their material. Don't trust it simply because
|
|
you read it here. Writers make mistakes too. The web makes
|
|
it very easy to distribute information, but there are very few checks in
|
|
place to force writers to be accurate. The morale: verify your
|
|
information with more than one source.
|
|
|
|
<P>One other thing: one responder very politely suggested that I
|
|
should know more about what I write before distributing it in a place that
|
|
carries such "authority" - the Linux Gazette. He is correct:
|
|
I need to try to be as accurate as possible. But to those who were
|
|
not so polite, try to remember: this is just a hobby. I'm not
|
|
really a graphics expert and I do get things wrong. If you're going
|
|
to nudge me in the right direction, please do so politely. And please,
|
|
no more email on GGI. The kernel team is better qualified to decide
|
|
GGI's fate in Linux than I. I'm not even certain any of the kernel
|
|
developers read this column!
|
|
<BR>
|
|
<BR>Ok, on to the work at hand. This month I conclude the two part
|
|
status update on X servers with information on Metro Link. Last month,
|
|
if you recall, I covered XFree86/S.u.S.E and Xi Graphics. Also in
|
|
this months issue of the Muse is a little bit of information I gathered
|
|
while trying to find some decent offline storage media. I'll kill
|
|
the ending - I ended up with an Iomega Jaz drive. But you'll still
|
|
want to read about why I chose it and what it takes to install the beast.
|
|
|
|
<P>Finally, I do a little review of XFPovray. This is an XForms based
|
|
front end to POV-Ray, the 3D raytracing engine. I used it recently
|
|
in working on another cover for the Linux Journal.
|
|
|
|
<P>Enjoy!
|
|
|
|
<P><A NAME="mews"></A>
|
|
<BR>
|
|
<TABLE BORDER=0 COLS=1 WIDTH="100%" >
|
|
<TR>
|
|
<TD><IMG SRC="../gx/hammel/mews.gif" ALT="Graphics Mews" HEIGHT=53 WIDTH=242 ALIGN=LEFT></TD>
|
|
</TR>
|
|
</TABLE>
|
|
Disclaimer: Before I get too far into this
|
|
I should note that any of the news items I post in this section are just
|
|
that - news. Either I happened to run across them via some mailing list
|
|
I was on, via some Usenet newsgroup, or via email from someone. I'm not
|
|
necessarily endorsing these products (some of which may be commercial),
|
|
I'm just letting you know I'd heard about them in the past month.
|
|
<BR>
|
|
<TABLE BORDER=0 COLS=3 WIDTH="100%" >
|
|
<TR>
|
|
<TD COLSPAN="3" WIDTH="100%" BGCOLOR="#000000"><IMG SRC="../gx/hammel/cleardot.gif" ALT="indent" HSPACE=30 VSPACE=2 HEIGHT=1 WIDTH=1 ALIGN=LEFT></TD>
|
|
|
|
<TD></TD>
|
|
</TR>
|
|
|
|
<TR>
|
|
<TD WIDTH="50%">
|
|
<H2>
|
|
XFree86 3.3.2 is released</H2>
|
|
XFree86 version 3.3.2 is now available. The XFree86 3.3 distribution
|
|
is available in both source and binary form. Binary distributions
|
|
are currently available for FreeBSD (2.2.2+ and 3.0-CURRENT), NetBSD (1.2
|
|
and 1.3), OpenBSD, Interactive Unix, Linux (ix86 and AXP), SVR4.0, UnixWare,
|
|
OS/2, Solaris 2.6 and LynxOS AT.
|
|
|
|
<P>The XFree86 documentation is available on-line on their Web server.
|
|
The documentation for 3.3 can be accessed at <A HREF="http://WWW.XFree86.org/3.3/">http://WWW.XFree86.org/3.3/</A>.
|
|
|
|
<P>The XFree86 FAQ is at <A HREF="http://WWW.XFree86.org/FAQ/">http://WWW.XFree86.org/FAQ/</A>.
|
|
|
|
<P>The XFree86 Web site is at <A HREF="http://WWW.XFree86.org/'">http://WWW.XFree86.org</A></TD>
|
|
|
|
<TD ROWSPAN="3" WIDTH="2" BGCOLOR="#000000"><IMG SRC="../gx/hammel/cleardot.gif" ALT="indent" HSPACE=1 HEIGHT=1 WIDTH=1></TD>
|
|
|
|
<TD WIDTH="49%">
|
|
<H2>
|
|
Moonlight Creator - 3D modeller</H2>
|
|
There's a relatively new GPL modeller available. It's call moonlight creator
|
|
and can be found at <A HREF="http://www.cybersociety.com/moonlight/">http://www.cybersociety.com/moonlight/</A>
|
|
|
|
<P>This modeller generated almost as much email as my comment on GGI -
|
|
and I didn't even say anything about it last month!
|
|
|
|
<P>
|
|
<HR WIDTH="100%">
|
|
<H2>
|
|
Pad++</H2>
|
|
The NYU Center for Advanced Technology has released a new drawing tool
|
|
with some object placement and scaling features possibly worthy of attention
|
|
as they continue to extend The Gimp.
|
|
|
|
<P>Precompiled binaries for several flavors of UNIX.
|
|
<BR><A HREF="http://www.mrl.nyu.edu/">http://www.mrl.nyu.edu/</A>
|
|
|
|
<P>Click on Pad++.
|
|
<BR> </TD>
|
|
</TR>
|
|
|
|
<TR>
|
|
<TD BGCOLOR="#000000"><IMG SRC="../gx/hammel/cleardot.gif" HSPACE=1 HEIGHT=1 WIDTH=1></TD>
|
|
|
|
<TD BGCOLOR="#000000"><IMG SRC="../gx/hammel/cleardot.gif" HSPACE=1 HEIGHT=1 WIDTH=1></TD>
|
|
</TR>
|
|
|
|
<TR>
|
|
<TD>
|
|
<H2>
|
|
LParser Source Code Released</H2>
|
|
Laurens Lapré has released the source code for his popular LParser
|
|
tool. LParser creates 3D forms using a descriptive language called
|
|
an L-System. It can be used to produce 3D trees, plants and other
|
|
organic items. Output formats include VRML, POV-Ray, and DXF.
|
|
|
|
<P>On his web page Larens writes:
|
|
<UL>Source code of the lparser ZIP file (18Kb) can also be downloaded,
|
|
for those who want to port or just play with new options. The code is straight,
|
|
no frills ANSI-C with even less documentation but it should run on pretty
|
|
much anything with a C or C++ compiler. My current job will leave me with
|
|
neither the time nor the inclination to do serious code hacking so I'm
|
|
throwing the code into the wind, hoping that it will germinate and produce
|
|
lots of mutated offspring ! The Lparser source may be freely distributed.</UL>
|
|
The Web page for the LParser tool is at <A HREF="http://www.xs4all.nl/~ljlapre/">http://www.xs4all.nl/~ljlapre/.</A></TD>
|
|
|
|
<TD>
|
|
<H2>
|
|
SART - 3D Rendering Library for Guile</H2>
|
|
SART is a 3D rendering library for Guile. It supports zbuffering, raytracing
|
|
and radiosity, with advanced textures, and image processing and other features.
|
|
This is the first public release announcement, as the 0.5a2 version is
|
|
in the developers opinion sufficiently stable and simple enough to compile
|
|
to meet a wider circle of developers (and even users).
|
|
|
|
<P>SART is freely distributable under GPL. To read more, visit the webpage:
|
|
|
|
<P><A HREF="http://petra.zesoi.fer.hr/~silovic/sart">http://petra.zesoi.fer.hr/~silovic/sart</A>
|
|
|
|
<P>The develper asks:
|
|
<UL>Now would somebody help me interface this thing with script-fu and/or
|
|
guile-gtk?</UL>
|
|
</TD>
|
|
</TR>
|
|
|
|
<TR>
|
|
<TD COLSPAN="3" WIDTH="100%" BGCOLOR="#000000"><IMG SRC="../gx/hammel/cleardot.gif" HSPACE=1 HEIGHT=1 WIDTH=1></TD>
|
|
</TR>
|
|
</TABLE>
|
|
|
|
<H2>
|
|
BMRT 2.3.6 Announcment:</H2>
|
|
Larry Gritz sent out this announcement this past month:
|
|
<UL>Hello, and thanks to everybody for putting up with my extended Beta
|
|
period. They say each new group of users discovers a new class of
|
|
bugs. Indeed, with the BMRT port for Windows and the nice RIB support
|
|
of Rhino (www.rhino3d.com), lots of difficulties with trimmed NURBS came
|
|
to the surface and were subsequently fixed. Thanks to those who stuck
|
|
it out with me.
|
|
|
|
<P>BMRT 2.3.6 is finally officially shipping. Er, well, you know
|
|
what I mean -- it's on the <A HREF="http://www.seas.gwu.edu/student/gritz/bmrt.html">FTP
|
|
site</A>.
|
|
|
|
<P>Please get the latest and replace the beta, if you had it. I managed
|
|
to squash many bugs in the beta, and also reduced both time and memory
|
|
by about 15% for large scenes!
|
|
|
|
<P>Other News: Tony Apodaca and I are co-organizing a course for this summer's
|
|
Siggraph conference. The course is titled "Advanced RenderMan: Beyond
|
|
the Companion", and will taught by myself and Tony, Ronen Barzel (Pixar),
|
|
Clint Hanson (Sony Imageworks), Antoine Durr (Blue Sky|VIFX), and Scott
|
|
Johnston (Fleeting Image Animation).
|
|
<BR>Hope to see some of you there!
|
|
|
|
<P>Enjoy the software,
|
|
|
|
<P> -- lg
|
|
<BR> </UL>
|
|
|
|
<HR WIDTH="100%">
|
|
|
|
<P> <!--
|
|
-- Did You Know Section
|
|
-->
|
|
<H4>
|
|
Did You Know?</H4>
|
|
...that the Linux Focus online magazine has articles on OpenGL, GLUT, hardware
|
|
acceleration issues, and POV-Ray? Take a look at <A HREF="http://mercury.chem.pitt.edu/~angel/LinuxFocus/">http://mercury.chem.pitt.edu/~angel/LinuxFocus/</A>
|
|
in issues #2 and #3 (that latter is the current issue).
|
|
<BR>
|
|
<BR>...there is an article on the future of VRML on the C|Net News Web
|
|
site:
|
|
<UL><B>VRML spec to drive 3D on Net</B>
|
|
<BR>By Erich Luening
|
|
<BR>Staff Writer, CNET NEWS.COM
|
|
|
|
<P><A HREF="http://www.news.com/News/Item/0,4,19992,00.html">http://www.news.com/News/Item/0,4,19992,00.html</A></UL>
|
|
...there is a Java based modeller that works under Netscape's Java environment?
|
|
Take a look at <B><FONT COLOR="#CC6600">Mondfarilo: the Java Applet</FONT></B>
|
|
at <A HREF="http://userpages.itis.com/philip/applet.html">http://userpages.itis.com/philip/applet.html.</A>
|
|
The modeller includes support for blobs and lathe objects and can produce
|
|
the model information as POV-Ray 3.0 source (although it only does it to
|
|
a window - you have to use cut and paste to save it to a file). the
|
|
|
|
<P>...a description of the Kodak DC120 .KDC File Format can be found at
|
|
<A HREF="http://www.hamrick.com/dc120/">http://www.hamrick.com/dc120/</A>.
|
|
This format is the one used by the popular Kodak DC120 digital camera.
|
|
There is Windows command line source there for converting the files to
|
|
JPEG or BMP formats. Anyone looking for a project might look into
|
|
porting this to Linux for use with, for example, NetPBM, ImageMagick, or
|
|
the GIMP.
|
|
|
|
<P>...and speaking of digital cameras, did you know there is a small software
|
|
package called PhotoPC for Linux that supports a number of digital cameras,
|
|
including: Agfa, Epson PhotoPC models, Olympus Digital cameras line,
|
|
Sanyo, and Sierra Imaging. Take a look at the PhotoPC Web page at
|
|
<A HREF="http://www.average.org/digicam/">http://www.average.org/digicam/</A>.
|
|
|
|
<P>...there is a good <A HREF="http://triton.slashdot.org/slashdot.cgi?mode=article&artnum=721">editorial
|
|
on the future of games</A> on Linux at <A HREF="http://slashdot.org">Slashdot.org</A>.
|
|
The editorial was written by <A HREF="mailto:rhuffstedtler@InPhact.com">Rob
|
|
Huffstedtler</A>. Its a good piece, and I have to say I agree with
|
|
Rob's sentiments about commercial software - it isn't evil and shouldn't
|
|
be viewed that way. Any development on Linux - free or commercial
|
|
- helps spread the word. Linux isn't just about free software.
|
|
Its about having a choice, whether you are a developer or a user.
|
|
|
|
<P>...the address for the AMAPI modeller has changed (I don't know how
|
|
long ago this happened, but I was just notified by a reader):
|
|
<UL><A HREF="ftp://sunsite.unc.edu/pub/Linux/apps/graphics/modeling/amapi.linux-elf.us.tar.gz">ftp://sunsite.unc.edu/pub/Linux/apps/graphics/modeling/amapi.linux-elf.us.tar.gz</A>
|
|
<BR>or
|
|
<BR><A HREF="http://sunsite.unc.edu/pub/Linux/apps/graphics/modeling/amapi.linux-elf.us.tar.gz">http://sunsite.unc.edu/pub/Linux/apps/graphics/modeling/amapi.linux-elf.us.tar.gz</A></UL>
|
|
...there is a very good article on the future of 3D gaming on Linux, including
|
|
an interview with Dave Taylor, at <A HREF="http://www.planetquake.com/articles/linux.shtm">PlanetQuake</A>.
|
|
<BR><!--
|
|
-- Q and A Section
|
|
-->
|
|
|
|
<P>
|
|
<TABLE BORDER=0 COLS=1 WIDTH="100%" BGCOLOR="#000000" NOSAVE >
|
|
<TR>
|
|
<TD><IMG SRC="../gx/hammel/cleardot.gif" HEIGHT=3 WIDTH=1></TD>
|
|
</TR>
|
|
</TABLE>
|
|
|
|
<H2>
|
|
Reader Mail</H2>
|
|
Nick Cali (<A HREF="mailto:Mktnc@aol.com">Mktnc@aol.com</A>) wrote:
|
|
<UL>Just want to drop a line thanking you for your effort at the Gazette
|
|
and with Linux. Really, thanks a lot.</UL>
|
|
<B><I><FONT COLOR="#993300">'Muse:</FONT></I></B> You're quite welcome.
|
|
I had gotten some rather harsh email from someone recently that had me
|
|
considering dropping out of the Linux world altogether. Getting little
|
|
notes like this, however, helps keep me going. Thanks!
|
|
|
|
<P>Tristan Savatier (<A HREF="mailto:tristan@mpegtv.com">tristan@mpegtv.com</A>)
|
|
wrote:
|
|
<UL>In Issue 26 of the Linux Gazette (<A HREF="http://www.ssc.com/lg/issue26/gm.html">http://www.ssc.com/lg/issue26/gm.html</A>)
|
|
the link:
|
|
<UL>Linux Multimedia Page -> <A HREF="http://www.digiserve.com/ar/linux-snd/">http://www.digiserve.com/ar/linux-snd/</A></UL>
|
|
should be renamed: Linux MIDI and Sound Page.</UL>
|
|
<B><I><FONT COLOR="#993300">'Muse:</FONT></I></B> Although it is
|
|
too late to change it in that issue, I'll make a note of it in the next
|
|
issue. Many thanks for the update
|
|
|
|
<P>Glenn McCarter <<A HREF="mailto:gmccarter@hotmail.com">gmccarter@hotmail.com</A>>
|
|
wrote to the IRTC Discussion List:
|
|
<UL>I have uploaded a POV-Ray include file "stereo.inc" to my website.
|
|
It can produce a stereoscopic view of any POV-Ray scene. This was
|
|
the technique I used in my current IRTC entry, "Dawn Patrol". The
|
|
url is http://www.geocities.com/SoHo/Gallery/2006/include.htm. Feel
|
|
free to download and experiment. Non POV-Ray users: you can also
|
|
take a look at the text file to understand the approach involved.
|
|
Any raytracing program should be able to utilize this technique.
|
|
Feedback and comments welcomed.</UL>
|
|
<B><I><FONT COLOR="#993300">'Muse:</FONT></I></B> If anyone takes
|
|
a look at this and wants to offer some commets, feel free to drop me a
|
|
line. Keep in mind that Glenn may or may not be a Linux/Unix person.
|
|
You should keep that in mind if you contact him.
|
|
|
|
<P>David R. Heys originally asked the GIMP Discussion List (or possibly
|
|
the IRTC-L list, I think I may have logged this incorrectly):
|
|
<UL>It's been more years than I can count since I've been in school learning
|
|
the various formulae for calculating waves, points within objects, distances,
|
|
etc. As well, all those old school books are long gone. Can anyone
|
|
recommend a good, comprehensive book? I'm looking for something that will
|
|
summarize the theories and formulae and present it in layman's terms, or
|
|
as close to layman's terms as possible.</UL>
|
|
Jerry Anning <<A HREF="mailto:clem@dhol.com">clem@dhol.com</A>> replied:
|
|
<UL>The <B><I><FONT COLOR="#006600">Schaum's Outline</FONT><FONT COLOR="#FFCC33">
|
|
</FONT></I></B>series of books, published by McGraw-Hill, are mostly good
|
|
no-nonsense material. Some of them move a little fast if you are
|
|
learning the material for the first time, but they are excellent for reference
|
|
and refresher. If you have a little "mathematical maturity" and take
|
|
the time to work the problems, you can learn the basics of new subjects
|
|
with them as well. The most info-rich ones from a ray tracing perspective
|
|
are probably <B><I><FONT COLOR="#006600">Analytic Plane and Solid Geometry</FONT></I></B>,
|
|
<B><I><FONT COLOR="#006600">Trigonometry</FONT></I></B>, <B><I><FONT COLOR="#006600">Matrices</FONT></I></B>,
|
|
and <B><I><FONT COLOR="#006600">Mathematical Handbook. Descriptive
|
|
Geometry</FONT></I></B> and <B><I><FONT COLOR="#006600">Projective Geometry</FONT></I></B>
|
|
have their uses, too. For rendering specific math, the standard book
|
|
is <B><I><FONT COLOR="#006600">Computer Graphics Principles and Practice</FONT></I></B>
|
|
by Foley, vanDam, et al. Here you can learn about splines, antialiasing
|
|
theory and many other useful things. I also suggest that you visit
|
|
the nearest vocational college bookstore and look for books on shop trigonometry,
|
|
particularly compound angles. Standard math books give this material
|
|
very short shrift at best. To design things like polyhedra and complex
|
|
csg's compound angles are very useful. If you find a used copy of
|
|
Bowditch, or some other navigation manual, you can learn a few useful things
|
|
about sections of spheres as well. Good luck.</UL>
|
|
'<B><I><FONT COLOR="#993300">Muse:</FONT></I></B> I thought this
|
|
information might be of general interest to my readers. I know this
|
|
is a question I've been asked a few times in the past, but didn't have
|
|
quite as complete an answer. By the way, for those that don't know,
|
|
CSG is constructive solid geometry - the joining of simple shapes to make
|
|
more complex ones.
|
|
|
|
<P>David Robertson <saga@cs.otago.ac.nz> from the Computer Science Department
|
|
of the University of Otaga wrote:
|
|
<UL>I enjoyed your summary of X Windows hardware support (or lack thereof).
|
|
There is a very interesting web page at
|
|
<UL><A HREF="http://parallel.nas.nasa.gov/Parallel/Projects/FOGL/index.html">http://parallel.nas.nasa.gov/Parallel/Projects/FOGL/index.html</A></UL>
|
|
which gives NASA Ames position regarding Mesa hardware support. Sadly
|
|
the page has not been updated since last October, despite the date at the
|
|
bottom of the page.</UL>
|
|
<B><I><FONT COLOR="#993300">'Muse:</FONT></I></B> Thanks for the
|
|
info Dave. If any of my readers missed it, the first part of the
|
|
X Servers Update was in <A HREF="http://www.graphics-muse.org/muse/mar98/gm.html">last
|
|
month's issue of the Muse</A>. This month I conclude the report with
|
|
information on <A HREF="#xserver">Metro Link</A>.
|
|
|
|
<P>Alejandro <Cmm.compu@lanet.losandes.com.ar> wrote:
|
|
<UL>I read your four article in Linux Journal, now I'm trying to update
|
|
my version of gimp. I download a file in rpm format, but it doesn't
|
|
work. Could you please tell me where to find the las versions of Gimp,
|
|
and what file I should download?</UL>
|
|
<B><I><FONT COLOR="#993300">'Muse:</FONT></I></B> www.gimp.org will
|
|
point you to the latest versions of both the GIMP and GTK.
|
|
If you have updated GTK recently, then you need to update GIMP. Also,
|
|
if you've updated the GIMP, you'll need updated GTK libraries. The
|
|
two are tied together pretty closely right now since both are getting ready
|
|
to go to their respective 1.0 releases.
|
|
|
|
<P>You're problem, assuming the file you downloaded was a newer version
|
|
of the GIMP than what you already had on your system, is probably that
|
|
the version of GIMP you downloaded doesn't work with the GTK libraries
|
|
you have. In that case, you need to get a compatible version of the
|
|
GTK libraries.
|
|
|
|
<P>Larry S. Marso (larry@marso.com) wrote to the GIMP User list:
|
|
<UL>The manual says that Wacom's Artpad is supported, but that patches
|
|
are required to take advantage of some features, including the pressure
|
|
sensitive pen. (The ArtzII is the 6x8 tablet version).
|
|
|
|
<P>Where are such patches?</UL>
|
|
Dmitry Yaitskov replied:
|
|
<UL>If you haven't found them yet, take a look at: http://www.msc.cornell.edu/~otaylor/gtk-gimp/step-by-step.html
|
|
|
|
<P>But I had some problems with pressure sensitivity, like random pointer
|
|
lockups and such, and generally did not like the feel of that much, so
|
|
although I still use the patched version of gimp -.99.18 - I turned pressure
|
|
sensitivity off.. I have ArtPad II.</UL>
|
|
And to this, Larry S. Marso added:
|
|
<UL>I should mention that I've found the patched 0.99.18 for Wacom ArtZII
|
|
absolutely flawless (including the pressure sensitivity feature).
|
|
|
|
<P>Well, I wish it was faster ... and had more options. But I've
|
|
never experienced "pointer lockups and such". The gsumi app available
|
|
on the same web site provides a bitmap drawing capability at extremely
|
|
high resolution (the default is 4000x4000) with pressure sensitive drawing
|
|
(including caligraphic tips). Great for creating postscript signatures,
|
|
and also for high resolution drawings suitable for subsequent manipulation
|
|
by Gimp.</UL>
|
|
|
|
|
|
<P>
|
|
<HR WIDTH="100%">
|
|
<BR><A NAME="webwonderings"></A>
|
|
<BR><IMG SRC="../gx/hammel/webwonderings.jpg" HEIGHT=57 WIDTH=246>
|
|
<BR>No time for Web Wonderings this month. I'll try to come up with
|
|
something for next month.
|
|
<BR>
|
|
<HR WIDTH="100%">
|
|
|
|
<P><A NAME="musings"></A>
|
|
<BR>
|
|
<TABLE BORDER=0 COLS=1 WIDTH="100%" >
|
|
<TR>
|
|
<TD><IMG SRC="../gx/hammel/musings.gif" ALT="Musings" HEIGHT=52 WIDTH=247 ALIGN=LEFT></TD>
|
|
</TR>
|
|
</TABLE>
|
|
|
|
<H2>
|
|
Offline storage using a Jaz Drive</H2>
|
|
In playing with all the graphics software I've talked about in this
|
|
column over the past year, I've managed to fill up the relatively modest
|
|
4Gig of disk space I have in the two systems currently running in my home.
|
|
When I finish with a project I generally don't need to keep all the work
|
|
files on my main hard disks. I also don't want to get rid of them
|
|
- they may have something I can use in a later project. So I need
|
|
some form of offline storage.
|
|
|
|
<P>Last year I attempted to address the problem by installing a 450Mb floppy
|
|
tape drive on my file server. Once installed, this worked fairly
|
|
well with the <A HREF="http://www-math.math.rwth-aachen.de/~LBFM/claus/ftape/">zftape
|
|
driver</A> and the <A HREF="http://www.multiline.com.au/~yusuf/">taper</A>
|
|
backup software, but initially I had quite a time getting the zftape driver
|
|
installed. From the point of view of cost the floppy tape drive is
|
|
a good solid solution. A floppy tape drive currently runs less than
|
|
$150US. From the point of view of convenience, well, it takes a long
|
|
time to backup 1G of data onto a tape drive running off of a floppy controller.
|
|
Taper does provide a fairly convenient curses based interface for selecting
|
|
the files to be backed up or retrieved, but my needs were less administrative.
|
|
I simply wanted to copy over a directory tree to some offline media and
|
|
then clean up that tree. Later, if I needed them, I wanted to be
|
|
able to copy them back in. I'm wasn't quite at the point where offline
|
|
media management was a real problem - I didn't need special tools for keeping
|
|
track of what I had on the offline media. What I needed was a removable
|
|
hard disk.
|
|
|
|
<P>Fast forward to this year. Technology once again has heard the
|
|
cry of the meek and a flurry of removable hard disk solutions are now hitting
|
|
the shelves. One of the first, and currently the most popular if
|
|
you believe the noise in the trade magazines, is the <B><FONT COLOR="#CC6600">Iomega
|
|
Zip drive</FONT></B>. This is a drive with a cartridge that looks
|
|
somewhat like a fat floppy disk. The cartridge holds 100Mb of data,
|
|
good enough for 3 or 4 of my smaller projects or one large project.
|
|
The drives are running under $130US (I've seen them as low as $119) and
|
|
the cartridges are about $20 each, cheaper if bought in bundles of 3 or
|
|
more. The drives are available as either parallel or SCSI connected
|
|
devices.
|
|
|
|
<P>The problem with this solution is simply size. 100Mb of data can
|
|
be generated fairly fast using the GIMP - I've had swap files from this
|
|
tool larger than that. I also had a hard time finding an external
|
|
drive. Most of the drives I could find locally were internal drives.
|
|
This was probably just a local distribution or supply problem, but then
|
|
I didn't look very hard for these drives once I'd decided they simply were
|
|
too small.
|
|
|
|
<P>The next step up from this for Iomega is the <B><FONT COLOR="#CC6600">Jaz</FONT></B>
|
|
drive. The first versions of these drives, which is what I purchased,
|
|
hold about 1G of data. The latest versions will support the old 1G
|
|
cartridges and the newer 2G cartridges. An external SCSI version
|
|
is available so I was able to connect the drive to my recently purchased
|
|
Adaptec 2940 (which is what I hooked my scanner to) without having to dig
|
|
into the innards of my hardware. Again, convenience is a key here
|
|
- I was willing to pay a little more for ease of use.
|
|
|
|
<P>There are a number of removable hard drive solutions on the market today,
|
|
however I wasn't able to find information on support for any of these devices
|
|
except the Iomega drives. This information is available at the <A HREF="http://www.cnct.com/~bwillmot/jaztool/">Jaztool
|
|
</A>page. Jaztool is a package for managing the drive, which I'll
|
|
discuss in a moment. Strangely, the Jaz Drive Mini-Howto does not
|
|
appear to be on the <A HREF="http://www.linuxresources.com/LDP/index.html">Linux
|
|
Documentation Project </A>pages, although a Mini-Howto for the Zip drive
|
|
can be found there.
|
|
|
|
<P>Since the drive is connected to a SCSI controller there aren't any Jaz-specific
|
|
drivers necessary. You just need to find a SCSI card with supported
|
|
drivers. I chose the Adaptec 2940 because the driver for it (aic7xxx)
|
|
was a loadable module that was precompiled in the Red Hat 4.2 distribution
|
|
that I currently use. In other words, I was able to simply plug the
|
|
card in, run <B><FONT SIZE=-1>insmod aic7xxx</FONT><FONT SIZE=-2>,</FONT></B>
|
|
and the card was running. The 2940 has a high density SCSI connector
|
|
which is the same sort of connector used by the Jaz drive. I had
|
|
previously purchased a high density to 25 pin cable converter to connect
|
|
my 2940 to the UMAX scanner (which has the 25pin connector), so I simply
|
|
stuck the Jaz driver between the scanner and the adapter. The Jaz
|
|
drive comes with a converter, if you need it (the UMAX scanner did not).
|
|
Total time for hardware install - about 20 minutes.
|
|
<BR>
|
|
<BR>As mentioned earlier, there is a tool for managing the Jaz drive called
|
|
Jaztool. This package provides a software means to eject, write protect
|
|
or read/write enable, and retrieve drive status. Password protection
|
|
is available but not officially supported. The man page gives information
|
|
on how to use this feature if you wish to give it a try. <I>Mode
|
|
5</I> (password protected write <I>and</I> read) is not supported by jaztool,
|
|
even though the Jaz drive supports it. You cannot access the
|
|
cartridge that comes with the drive in write mode, so you'll need to use
|
|
the jaztool program to allow you write access to that cartridge.
|
|
The Jaz Drive Mini-Howto explains how to do this quite clearly. The
|
|
disk can be mounted as delivered using the VFAT filesystem type, which
|
|
means that long file names can be used. This removes the need to
|
|
reformat disk with native Unix filesystem. However, the disk that
|
|
comes packaged with drive is nearly full. It contains a large number
|
|
of MS-related tools for DOS, Win3.1, Win95 and WinNT. Since I didn't
|
|
need these I simply mounted the drive and used <B><FONT SIZE=-1>rm -rf
|
|
*</FONT></B> on it to clean it up. Once I'd done that, I decided
|
|
to go ahead and just place an ext2 filesystem on the driver. This
|
|
is simple enough following the information provided in the Jaz Driver Mini-Howto
|
|
on the Jaztools page at <A HREF="http://www.cnct.com/~bwillmot/jaztool/">http://www.cnct.com/~bwillmot/jaztool/.</A>
|
|
|
|
<P>Speed on the drive is quite good - the Jaz drive has an average of 12ms
|
|
seek times, compared to the 29ms of the Zip drive. This provides
|
|
the sort of file management I was looking for by allowing me to simply
|
|
copy files to and from the drive and at a speed comparable to my regular
|
|
disk drives. Its certainly faster than the floppy tape solution.
|
|
|
|
<P>As I was writing this article I started to consider if I had gotten
|
|
my moneys worth. The Jaz drive runs about $299US for an external
|
|
SCSI drive, about $199US for internal drives. Compared to the floppy
|
|
tape I got about twice the storage space for about twice the price.
|
|
At least I thought I had, until I added in the cost of the SCSI card and
|
|
the media. The cost for the SCSI card I can significantly reduce
|
|
by making full use of the 7 devices I can connect to it, but it still ran
|
|
about $240US. The media, on the other hand is significantly higher.
|
|
Travan 3 tapes (which are what you use with the floppy tape drive) run
|
|
about $30US or so (I think - its been awhile since I purchased them).
|
|
The Jaz cartridges are $125US each! You can save a little by purchasing
|
|
them in packs of 3 for about $300US. The good news here is that recent
|
|
court rulings have allowed another company (whose name escapes me right
|
|
now) to sell Zip and Jaz compatible media here in the US. The result
|
|
should be a drop in the price of the media over the next 6 months to a
|
|
year. The one cartridge I have now will hold me for another couple
|
|
of months at least. By then, keeping my fingers crossed, I'll be
|
|
able to get a 3 pack for $250 or less.
|
|
|
|
<P>So, adding the Iomega Jaz drive was simple enough. The information
|
|
and software provided by Bob Willmot (the Jaztools author) made getting
|
|
the cartridge running almost a no-brainer. And I now have over a
|
|
Gigabyte of external storage that I can access nearly as fast as my regular
|
|
hard drives. All things considered, its been one of my better investments.
|
|
<BR>
|
|
<BR>
|
|
<BR>
|
|
<TABLE BORDER=0 COLS=1 WIDTH="100%" BGCOLOR="#000000" NOSAVE >
|
|
<TR NOSAVE>
|
|
<TD NOSAVE><IMG SRC="../gx/hammel/cleardot.gif" HEIGHT=2 WIDTH=2></TD>
|
|
</TR>
|
|
</TABLE>
|
|
|
|
<TABLE BORDER=0 COLS=3 WIDTH="100%" NOSAVE >
|
|
<TR NOSAVE>
|
|
<TD VALIGN=TOP ROWSPAN="3" WIDTH="50%" NOSAVE>
|
|
<H2>
|
|
<A NAME="xserver"></A>X Server Update Part II - Metro Link</H2>
|
|
Last month I provided the first part of an update on 3D support available
|
|
in X Servers and from other places. I had gotten a number of emails
|
|
from readers asking where they could find drivers for various 3D video
|
|
cards. I also wanted to find out to what extent the X Input Extension
|
|
is supported. Since I hadn't done so in the past, I decided to contact
|
|
the various X server vendors and see what they had to say on the subject.
|
|
|
|
<P>I sent out a query to the 4 X server vendors I knew of: Xi Graphics,
|
|
Metro Link, XFree86 and S.u.S.E. The query read as follows:
|
|
|
|
<P><I>Do you have any information which I may use in my column related
|
|
to your current or planned support for 3D hardware acceleration (specifically
|
|
related to OpenGL/Mesa, but not necessarily so)? What about support
|
|
for alternative input devices via the X Input Extension. The GIMP,
|
|
and its X toolkit Gtk, both make use of X Input if available and I expect
|
|
many other tools will do so as well in the near future.</I>
|
|
|
|
<P>Last months article covered 3 vendors, Xi Graphics and XFree86/S.u.S.E,
|
|
plus the Mesa package. This month I'll cover <A HREF="http://www.metrolink.com/">Metro
|
|
Link</A>. Due to a bit of poor time managment on my part, I wasn't
|
|
able to cover Metro Link at the same time as the others. My apologies
|
|
to all parties for this.
|
|
|
|
<P>While reading this article please keep in mind that my intent was to
|
|
simply query for information about X Input and 3D hardware support.
|
|
It is not intended for this to be a comparison of the vendors products
|
|
nor do I offer any editorial on the quality of their products. I
|
|
have tried to remove some of the marketing information both from last months
|
|
article and this months, but I also want to be fair to the respondents
|
|
and provide as much of the information that they provided that is relevent
|
|
to the topic.
|
|
|
|
<P>My first contact with Metro Link was through the assistance of Dirk
|
|
Hohndel at S.u.S.E., who forwarded my request to Garry M. Paxinos.
|
|
Garry was quite helpful and offered information on his own and had Chris
|
|
Bare contact me with additional information.
|
|
|
|
<P>Garry first provided me with a few dates:
|
|
<UL>
|
|
<LI>
|
|
March 30 - Metro-X 4.3 server release.</LI>
|
|
|
|
<LI>
|
|
May - CDE 2.1.10</LI>
|
|
|
|
<LI>
|
|
July - Hardware Accelerated OpenGL</LI>
|
|
</UL>
|
|
This he followed up with a little more detail:
|
|
<UL>We have a Level II OpenGL source code license from SGI. This
|
|
makes it difficult for us to work with GPL'd source. We have been
|
|
shipping a software only version of OpenGL since October 8, 1995.
|
|
Due to both the competitive nature of this activity and that things might
|
|
change before release, it is rather difficult for us to have detailed comments
|
|
on:
|
|
<UL>
|
|
<LI>
|
|
Architectural issues.</LI>
|
|
|
|
<LI>
|
|
Chip/Board Support</LI>
|
|
|
|
<LI>
|
|
Relationships with Chip/Board Vendors (most are under NDA anyway)</LI>
|
|
|
|
<LI>
|
|
Relationships with OS vendors</LI>
|
|
|
|
<BR> </UL>
|
|
We plan on making our plans public when we get closer to our release.
|
|
Count on quite a few press releases.
|
|
<BR> </UL>
|
|
|
|
<BR>
|
|
<CENTER><A HREF="#next-column">-Top of next column-</A></CENTER>
|
|
</TD>
|
|
|
|
<TD ROWSPAN="3" WIDTH="2" BGCOLOR="#000000" NOSAVE><IMG SRC="../gx/hammel/cleardot.gif" HEIGHT=2 WIDTH=2></TD>
|
|
|
|
<TD WIDTH="49%" NOSAVE><LH><A NAME="next-column"></A><B>More Musings...</B> </LH>
|
|
<UL>
|
|
<LI>
|
|
<A HREF="xfpovray.html">XFPovray</A></LI>
|
|
</UL>
|
|
</TD>
|
|
</TR>
|
|
|
|
<TR NOSAVE>
|
|
<TD BGCOLOR="#000000" NOSAVE><IMG SRC="../gx/hammel/cleardot.gif" HEIGHT=2 WIDTH=2></TD>
|
|
</TR>
|
|
|
|
<TR NOSAVE>
|
|
<TD VALIGN=TOP NOSAVE>
|
|
<UL>Current plans are for 3 to 4 specific chip types to be supported in
|
|
our initial OpenGL hardware release. We plan on supporting at least
|
|
two different CPUs in that release. We've had a policy since our
|
|
FCS (First Customer Shipment) back in 1995 that all customers will receive
|
|
a copy of the hardware version when it is released.</UL>
|
|
Garry noted that Metro Link supports 5 different CPUs: x86, PPC,
|
|
Alpha, 68k, and Sparc. He also mentioned that they support multiple
|
|
operating systems. Although I didn't mention it last month, both
|
|
XFree86 and Xi Graphics servers are also available for other operating
|
|
systems besides Linux.
|
|
|
|
<P>Not long after my first contact with Garry, Chris Bare provided a more
|
|
detailed description of what is in the works. Chris is the engineer
|
|
responsible for Metro Link's X Input Support.
|
|
<UL>Metro-X 4.3 (due out in the next month or so as I write this) will
|
|
include support for dynamically loadable X Input driver modules. The 4.3
|
|
release will include drivers for Elo Graphics, Carroll, Micro Touch and
|
|
Lucas/Deeco touch screens. We are also going to make available a skeleton
|
|
driver and documentation for anyone interested in supporting devices on
|
|
their own. This technology will also be donated to Xfree86 for inclusion
|
|
in one of their future releases.
|
|
|
|
<P>Our graphical configuration tool provides a fast and accurate on-screen
|
|
calibration procedure for any supported touch screen.
|
|
|
|
<P>Future plans include support for the Wacom tablet as a loadable X Input
|
|
module and support for 3D input devices like the Space Orb. We are interested
|
|
in supporting any device there is a reasonably demand for, so if there
|
|
are any devices your readers have asked about, please let me know.</UL>
|
|
As you can see, Metro Link did not list specific boards which they plan
|
|
to support. Neither XFree86 nor Xi specifically mentioned any boards
|
|
last month. There appears to be quite of bit of work in the pipe
|
|
line, however, and according the Garry we should see a flurry of announcements
|
|
in the relative near term. Chris does point out some specific input
|
|
devices that will be supported in the next release, however.
|
|
|
|
<P><B>Contact Information</B>
|
|
<UL>
|
|
<LI>
|
|
Announcement: <A HREF="news:comp.os.linux.announce">comp.os.linux.announce</A> </LI>
|
|
|
|
<LI>
|
|
Web Site: <A HREF="http://www.metrolink.com">http://www.metrolink.com</A> </LI>
|
|
|
|
<LI>
|
|
Business: <A HREF="mailto:sales@metrolink.com">sales@metrolink.com</A>,
|
|
which is an autoresponder </LI>
|
|
|
|
<LI>
|
|
Human sales contact: <A HREF="mailto:holly@metrolink.com">holly@metrolink.com</A> </LI>
|
|
</UL>
|
|
Garry added: We do make announcments to c.o.l.a. And we are
|
|
working on updating our web site including plans on keeping it up to date.
|
|
The sales@metrolink.com address is our standard public address.
|
|
However, that is an autoresponder. The address holly@metrolink.com
|
|
is referenced in the autoreply and is the 'human' that handles any sales
|
|
questions manualy.</TD>
|
|
</TR>
|
|
</TABLE>
|
|
|
|
<TABLE BORDER=0 COLS=1 WIDTH="100%" BGCOLOR="#000000" NOSAVE >
|
|
<TR>
|
|
<TD><IMG SRC="../gx/hammel/cleardot.gif" HEIGHT=1 WIDTH=1></TD>
|
|
</TR>
|
|
</TABLE>
|
|
|
|
<TABLE BORDER=0 COLS=1 WIDTH="100%" >
|
|
<TR>
|
|
<TD><IMG SRC="../gx/hammel/resources.gif" ALT="Resources" HEIGHT=57 WIDTH=246 ALIGN=LEFT></TD>
|
|
</TR>
|
|
</TABLE>
|
|
The following links are just starting points for finding more information
|
|
about computer graphics and multimedia in general for Linux systems. If
|
|
you have some application specific information for me, I'll add them to
|
|
my other pages or you can contact the maintainer of some other web site.
|
|
I'll consider adding other general references here, but application or
|
|
site specific information needs to go into one of the following general
|
|
references and not listed here.
|
|
<BR>
|
|
<TABLE BORDER=0 COLS=2 WIDTH="100%" NOSAVE >
|
|
<TR NOSAVE>
|
|
<TD NOSAVE>Online Magazines and News sources
|
|
<BR><A HREF="http://www.news.com/">C|Net Tech News</A>
|
|
<BR><A HREF="http://www.eklektix.com/lwn/">Linux Weekly News</A>
|
|
<BR><A HREF="http://slashdot.org/">Slashdot.org</A>
|
|
|
|
<P>General Web Sites
|
|
<BR><A HREF="http://www.graphics-muse.org/linux/lgh.html">Linux Graphics
|
|
mini-Howto</A>
|
|
<BR><A HREF="http://www.graphics-muse.org/ugu/ugu.html">Unix Graphics Utilities</A>
|
|
<BR><A HREF="http://www.digiserve.com/ar/linux-snd/">Linux Multimedia Page</A>
|
|
|
|
<P>Some of the Mailing Lists and Newsgroups I keep an eye on and where
|
|
I get much of the information in this column:
|
|
<BR><A HREF="http://www.gimp.org">The Gimp User and Gimp Developer Mailing
|
|
Lists</A>.
|
|
<BR><A HREF="http://www.irtc.org">The IRTC-L discussion list</A>
|
|
<BR><A HREF="news:comp.graphics.rendering.raytracing">comp.graphics.rendering.raytracing</A>
|
|
<BR><A HREF="news:comp.graphics.rendering.renderman">comp.graphics.rendering.renderman</A>
|
|
<BR><A HREF="news:comp.graphics.api.opengl">comp.graphics.api.opengl</A>
|
|
<BR><A HREF="news:comp.os.linux.announce">comp.os.linux.announce</A> </TD>
|
|
|
|
<TD><IMG SRC="../gx/hammel/gmuse.jpg" HSPACE=10 HEIGHT=270 WIDTH=190></TD>
|
|
</TR>
|
|
</TABLE>
|
|
<A NAME="future"></A>
|
|
<H2>
|
|
Future Directions</H2>
|
|
Next month: XFont3D/Font3D probably. Beyond that I'm not certain
|
|
yet.
|
|
|
|
<P><A HREF="mailto:mjhammel@graphics-muse.org">Let me know what you'd like
|
|
to hear about!</A>
|
|
|
|
<P>
|
|
<HR WIDTH="100%">
|
|
<DIV ALIGN=right><FONT SIZE=-1>© 1998 <A HREF="mailto:mjhammel@graphics-muse.org">Michael
|
|
J. Hammel</A></FONT></DIV>
|
|
|
|
<!--===================================================================-->
|
|
<P> <hr> <P>
|
|
<center><H5>Copyright © 1998, Michael J. Hammel <BR>
|
|
Published in Issue 27 of <i>Linux Gazette</i>, April 1998</H5></center>
|
|
|
|
<!--===================================================================-->
|
|
<P> <hr> <P>
|
|
<A HREF="./index.html"><IMG ALIGN=BOTTOM SRC="../gx/indexnew.gif"
|
|
ALT="[ TABLE OF CONTENTS ]"></A>
|
|
<A HREF="../index.html"><IMG ALIGN=BOTTOM SRC="../gx/homenew.gif"
|
|
ALT="[ FRONT PAGE ]"></A>
|
|
<A HREF="./jeffery.html"><IMG SRC="../gx/back2.gif"
|
|
ALT=" Back "></A>
|
|
<A HREF="./dibona.html"><IMG SRC="../gx/fwd.gif" ALT=" Next "></A>
|
|
<P> <hr> <P>
|
|
|
|
<H4>
|
|
"Linux Gazette...<I>making Linux just a little more fun!</I>"
|
|
</H4>
|
|
|
|
<P> <HR> <P>
|
|
<!--===================================================================-->
|
|
|
|
<!-- =============================================================
|
|
This Page Designed by Michael J. Hammel.
|
|
Permission to use all graphics and other content for private,
|
|
non-commerical use is granted provided you give me (or the
|
|
original authors/artists) credit for the work.
|
|
|
|
CD-ROM distributors and commercial ventures interested in
|
|
providing the Graphics Muse for a fee must contact me,
|
|
Michael J. Hammel (mjhammel@csn.net), for permission.
|
|
============================================================= !--><A NAME="musings"></A>
|
|
<TABLE>
|
|
<TR>
|
|
<TD>
|
|
<H2>
|
|
More...</H2>
|
|
<IMG SRC="../gx/hammel/musings.gif" ALT="Musings" HEIGHT=52 WIDTH=247 ALIGN=LEFT> </TD>
|
|
</TR>
|
|
</TABLE>
|
|
|
|
<TABLE>
|
|
<TR>
|
|
<TD></TD>
|
|
</TR>
|
|
</TABLE>
|
|
<IMG SRC="../gx/hammel/cleardot.gif" ALT="indent" VSPACE=5 HEIGHT=1 WIDTH=1 ALIGN=LEFT>
|
|
<TABLE WIDTH="100%" >
|
|
<TR>
|
|
<TD ALIGN=RIGHT WIDTH="100%"><FONT SIZE=-2>© 1998 <A HREF="mailto:mjhammel@csn.net">Michael
|
|
J. Hammel</A> </FONT></TD>
|
|
</TR>
|
|
|
|
<TR>
|
|
<TD VALIGN=TOP BGCOLOR="#000000" cellpadding="0" cellspacing="0"><IMG SRC="../gx/hammel/cleardot.gif" ALT="indent" ALIGN=LEFT></TD>
|
|
</TR>
|
|
</TABLE>
|
|
<A NAME="1"></A>
|
|
<H2>
|
|
XFPovray 1.2.4/1.3.1</H2>
|
|
Recently I was commissioned to work on another cover for the Linux Journal.
|
|
The cover will be out in a few months and I don't want to say too much
|
|
about it right now, but part of what I needed to do for it was create some
|
|
3D text. I've been familiar with how to do this for some time, using
|
|
any of a number of tools: AC3D, POV-Ray, Font3D, and so forth. I
|
|
have found the quickest 3D text can be created using Font3D and POV-Ray.
|
|
The results are generally pretty good. I hope to give you some insight
|
|
into Font3D and its XForms front end, XFont3D, next month.
|
|
|
|
<P>After the fonts were created I needed to run POV-Ray. This is
|
|
a terrific command line tool for creating 3D images that uses its own language
|
|
for defining a 3D scene. The scene file is fed to the rendering engine
|
|
using any combination of the many command line options. The only
|
|
real problem with POV-Ray is that is has so many options it is easy to
|
|
forget which ones use which particular syntax.
|
|
|
|
<P>Fortunately, <A HREF="mailto:mallozzir@cspar.uah.edu">Robert S. Mallozzi
|
|
</A>has written a very useful XForms based front end to the POV-Ray renderer:
|
|
<A HREF="http://cspar.uah.edu/~mallozzir/html/xfpovray.html">XFPovray</A>.
|
|
The tool, like many for Linux, is available in source. It requires
|
|
the <A HREF="http://bragg.phys.uwm.edu/xforms">XForms</A> v0.88 or later
|
|
library and will work with <A HREF="http://www.povray.org">POV-Ray 3.0</A>.
|
|
I had been running the 1.2.4 version for the work on the cover art, but
|
|
while writing this article I found that Robert had released a newer version.
|
|
I downloaded that one and had no problems building it. Its just a
|
|
matter of editing 2 files (if necessary), and running <B>xmkf; make; make
|
|
install.</B> You'll need to be root to run the default install, since
|
|
the Imakefile is set up to install in /usr/local/bin.
|
|
<BR>
|
|
<CENTER><TABLE BORDER=0 COLS=2 WIDTH="450" NOSAVE >
|
|
<TR NOSAVE>
|
|
<TD ROWSPAN="2" NOSAVE>
|
|
<TABLE BORDER=0 COLS=1 WIDTH="100%" NOSAVE >
|
|
<TR>
|
|
<TD><IMG SRC="./gx/hammel/xfpovray-1.jpg" HSPACE=10 VSPACE=10 HEIGHT=162 WIDTH=311></TD>
|
|
</TR>
|
|
|
|
<TR NOSAVE>
|
|
<TD ALIGN=CENTER NOSAVE><B>Figure 1: XFPovray v1.3.1 interface</B></TD>
|
|
</TR>
|
|
|
|
<TR NOSAVE>
|
|
<TD NOSAVE>The interface to 1.3.1 is a little different from the 1.2.4
|
|
version, using a smaller footprint for the initial window. The Render
|
|
options are also now in a notebook widget. Overall the interface
|
|
is more compact. Unfortunately, I found that something
|
|
wasn't quite right with my configuration. At times the menus would
|
|
not cause window refreshes when the menu was close, leaving bits of the
|
|
menus covering other parts of the underlying windows. This may be
|
|
a bug in XForms 0.88, but the 1.2.4 version of XFPovray didn't seem to
|
|
have this problem. Because of this, I'm going to review the 1.2.4
|
|
version, with just a few comparisons made to the 1.3.1 version. The
|
|
features of both are very similar and both versions are available on the
|
|
XFPovray web site. If you have problems with the 1.3.1 version you
|
|
can grab the 1.2.4 version. </TD>
|
|
</TR>
|
|
</TABLE>
|
|
</TD>
|
|
|
|
<TD NOSAVE><IMG SRC="./gx/hammel/xfpovray-1b.jpg" HSPACE=10 VSPACE=10 HEIGHT=396 WIDTH=279></TD>
|
|
</TR>
|
|
|
|
<TR NOSAVE>
|
|
<TD ALIGN=CENTER NOSAVE><B>Figure 2: XFPovray 1.2.4 interface</B></TD>
|
|
</TR>
|
|
</TABLE></CENTER>
|
|
XFPovray provides the user the ability to run the POV-Ray renderer on existing
|
|
scene files and to edit those files. To edit a scene file you need
|
|
to first configure the editor of choice. Select the <I>Options->Configure
|
|
</I>menu item from the menu bar of the main window. A dialog will
|
|
open allowing you to configure the editor you wish to use, along with the
|
|
location of the POV-Ray executable, an image viewer and a number of other
|
|
general items. After you click on the Accept button you will need
|
|
to use the <I>Options->Save State </I>menu option to save the configuration
|
|
to XFPovray's configuration file directory. This wil be $HOME/.xfpovray
|
|
by default.
|
|
|
|
<P>Once you've selected an editor you are ready to edit a file. Click
|
|
on the Scene File button to open a dialog box. This button sets the
|
|
default scene file to be rendered. You should do this first before
|
|
trying to edit any of your include files. The dialog box that opens
|
|
is a file selection box. This dialog has changed in the 1.3.1 version
|
|
to a format that is a little more standard for such dialogs. Figures
|
|
3 and 4 show the two versions of the file selection dialog.
|
|
<BR>
|
|
<TABLE BORDER=0 COLS=2 WIDTH="100%" NOSAVE >
|
|
<TR NOSAVE>
|
|
<TD ALIGN=CENTER NOSAVE><IMG SRC="./gx/hammel/xfpovray-3.jpg" HSPACE=10 VSPACE=10 HEIGHT=355 WIDTH=313></TD>
|
|
|
|
<TD ALIGN=CENTER NOSAVE><IMG SRC="./gx/hammel/xfpovray-4.jpg" HSPACE=10 VSPACE=10 HEIGHT=335 WIDTH=362></TD>
|
|
</TR>
|
|
|
|
<TR NOSAVE>
|
|
<TD ALIGN=CENTER NOSAVE><B>Figure 3: File Selection box for XFPovray
|
|
1.2.4</B></TD>
|
|
|
|
<TD ALIGN=CENTER NOSAVE><B>Figure 4: File Selection box for XFPovray
|
|
1.3.1</B></TD>
|
|
</TR>
|
|
</TABLE>
|
|
|
|
|
|
<P>The Scene File button only establishes the file which will be passed
|
|
to the renderer. It does't open the editor on that file. To
|
|
open the editor you next choose the Edit Scene button. Again, the
|
|
File Selection window opens. In the 1.3.1 version the default file
|
|
in this dialog is the file you chose with the Scene File button.
|
|
In the 1.2.4 version you start in whatever directory you started XFPovray
|
|
in originally. You can edit a file by clicking on it or use the dialog
|
|
to choose another file. Once you've selected a file the editor will
|
|
open into that file and your ready to do your work.
|
|
|
|
<P>The View Image button will simply launch an image viewer on a particular
|
|
image file. The Config File button will display the configuration
|
|
file used for POV-Ray (not for XFPovray). The settings for many of
|
|
these can be changed from Render Options (buttons in 1.2.4, a notebook
|
|
with tabs in 1.3.1), although there doesn't appear to be a way to save
|
|
the changes from the interface. If the defaults are not to your liking,
|
|
you can always edit the configuration file (xfpovray.ini) by hand.
|
|
|
|
<P>The rendering options cover a large number of POV-Ray options, but a
|
|
few options are not yet supported (see the web page for details on what
|
|
isn't supported). Figures 5 and 6 show the Rendering Options windows
|
|
for the two versions of XFPovray. Figure 6 was cropped from the main
|
|
window to save a little space. The render options in version 1.2.4
|
|
are displayed in the space occcupied by the povray banner image.
|
|
Figure 7 shows the tabs in the Render Options window for version 1.3.1.
|
|
As you can see, there are quite a few options you can configure from these
|
|
windows. Keep in mind that version 1.2.4 has the most of the same
|
|
options as 1.3.1, except with 1.2.4 you access them from a set of Render
|
|
Options buttons in the main window.
|
|
<BR>
|
|
<BR>
|
|
<TABLE BORDER=0 COLS=1 WIDTH="100%" NOSAVE >
|
|
<TR NOSAVE>
|
|
<TD ALIGN=CENTER NOSAVE><IMG SRC="./gx/hammel/xfpovray-5.jpg" HSPACE=10 VSPACE=10 HEIGHT=313 WIDTH=414></TD>
|
|
</TR>
|
|
|
|
<TR NOSAVE>
|
|
<TD ALIGN=CENTER NOSAVE><B>Figure 5: Render Options, version 1.2.4</B></TD>
|
|
</TR>
|
|
|
|
<TR NOSAVE>
|
|
<TD ALIGN=CENTER NOSAVE><IMG SRC="./gx/hammel/xfpovray-6.jpg" HSPACE=10 VSPACE=10 HEIGHT=400 WIDTH=428></TD>
|
|
</TR>
|
|
|
|
<TR NOSAVE>
|
|
<TD ALIGN=CENTER NOSAVE><B>Figure 6: Render Options, version 1.3.1</B></TD>
|
|
</TR>
|
|
</TABLE>
|
|
|
|
|
|
<P>Figures 7 and 8 show some of the possible templates you can use when
|
|
editing a scene file. Templates are examples of the various primitives
|
|
and command syntax you will use in a POV-Ray scene file. To use these
|
|
templates, you first select the template you want to add to your scene
|
|
file (we're assuming the scene file is already opened and currently being
|
|
edited). This copies the template to the primary X selection buffer.
|
|
This is the same buffer you use when you highlight some text in an xterm
|
|
window. To use the copy of the template you first enter insert mode
|
|
in your editor and then use the middle mouse button (or both buttons on
|
|
a 2 button mouse that is emulating a 3 button mouse) to paste the selection
|
|
into your file. Note that when you select the template from the menus
|
|
you won't see any sort of confirmation that the template has been placed
|
|
in the selection buffer.
|
|
<BR>
|
|
<BR>
|
|
<TABLE BORDER=0 COLS=1 WIDTH="100%" NOSAVE >
|
|
<TR NOSAVE>
|
|
<TD ALIGN=CENTER NOSAVE><IMG SRC="./gx/hammel/xfpovray-templates.jpg" HSPACE=10 VSPACE=10 HEIGHT=299 WIDTH=415></TD>
|
|
</TR>
|
|
|
|
<TR NOSAVE>
|
|
<TD ALIGN=CENTER NOSAVE><B>Figure 7: The solid primitive templates</B></TD>
|
|
</TR>
|
|
|
|
<TR NOSAVE>
|
|
<TD ALIGN=CENTER NOSAVE><IMG SRC="./gx/hammel/xfpovray-templates-2.jpg" HSPACE=10 VSPACE=10 HEIGHT=237 WIDTH=415></TD>
|
|
</TR>
|
|
|
|
<TR NOSAVE>
|
|
<TD ALIGN=CENTER NOSAVE><B>Figure 8: Camera primitve templates</B></TD>
|
|
</TR>
|
|
</TABLE>
|
|
|
|
|
|
<P>Once you've finished editing the file you can render a preview of the
|
|
image. Use the <I>Render Options/Output </I>feature to specify the
|
|
size of the preview. You can even use the <I>Inc Preview</I> button
|
|
to sample the effects provided by the standard include files! The
|
|
preview uses the selected texture, color, or whatever on a sphere.
|
|
You can specify the direction of lights and the camera position for the
|
|
preview as well. This makes selecting the features to add to an objects
|
|
texture much simpler and less error prone. Although there is still
|
|
a bit of trial an error involved with creating the textures, you can at
|
|
least sample some of the effects quickly and easily.
|
|
|
|
<P>One last thing you should know before trying XFPovray. I mentioned
|
|
earlier that I tried both the 1.2.4 and 1.3.1 versions. If you
|
|
run the earlier version first, then upgrade to the 1.3.1 version the program
|
|
seems to recognize the differences in the configuration files. However,
|
|
if you have problems with 1.3.1 and want to fall back to 1.2.4 you will
|
|
need to first clean out the files in the $HOME/.xfpovray directory.
|
|
The earlier version will get confused by the changes to the config files
|
|
that 1.3.1 uses. Its not a real concern, of course, if you don't
|
|
try to back track to from the later to the earlier version.
|
|
|
|
<P>All in all, XFPovray is quite a useful tool. When I was working
|
|
on my 3D text I first generated the include files of the text using Font3D/XFont3D.
|
|
After that, I was able to work completely from within XFPovray to sample
|
|
the images and experiment with minor changes quickly. I never had
|
|
to run the POV-Ray executable by hand, which was a real bonus since I never
|
|
can remember the correct command line options. If you do much work
|
|
with POV-Ray, I think you'll enjoy using XFPovray as your editing/rendering
|
|
front end.
|
|
<BR>
|
|
<TABLE WIDTH="100%" >
|
|
<TR>
|
|
<TD VALIGN=TOP COLSPAN="4" BGCOLOR="#000000" cellpadding="0" cellspacing="0"><IMG SRC="../gx/hammel/cleardot.gif" ALT="indent" ALIGN=LEFT></TD>
|
|
</TR>
|
|
</TABLE>
|
|
|
|
<TABLE WIDTH="100%" >
|
|
<TR>
|
|
<TD ALIGN=RIGHT><FONT SIZE=-2>© 1998 by <A HREF="mailto:mjhammel@csn.net">Michael
|
|
J. Hammel</A> </FONT></TD>
|
|
</TR>
|
|
</TABLE>
|
|
|
|
|
|
<!--===================================================================-->
|
|
<P> <hr> <P>
|
|
<center><H5>Copyright © 1998, Michael J. Hammel <BR>
|
|
Published in Issue 27 of <i>Linux Gazette</i>, April 1998</H5></center>
|
|
|
|
<!--===================================================================-->
|
|
<P> <hr> <P>
|
|
<A HREF="./gm.html"><IMG SRC="../gx/back2.gif"
|
|
ALT=" Back "></A>
|
|
|
|
<H4>
|
|
"Linux Gazette...<I>making Linux just a little more fun!</I>"
|
|
</H4>
|
|
|
|
<P> <HR> <P>
|
|
<!--===================================================================-->
|
|
|
|
<center>
|
|
<H2>Linus Speaks at SVLUG Meeting</H2>
|
|
<H4>By <a href="mailto:chris@dibona.com">Chris DiBona</a></H4>
|
|
</center>
|
|
<P> <HR> <P>
|
|
<A HREF="./svlug.html">SVLUG Photo Album</A>
|
|
<P> <HR> <P>
|
|
When we gave the job of arranging speakers to Sam Ockman, we never doubted
|
|
his ability to bring in terrific speakers. His first speaker for our
|
|
January meeting was his personal hero, H. Peter Anvin. For February, we had
|
|
two speakers: Eric Raymond of "The Cathedral and the Bazaar" fame and Bruce
|
|
Perens of Debian. Therefore, the question became "How do you top these
|
|
Linux luminaries?" Sam's answer was our March speaker, Linus Torvalds.
|
|
<P>
|
|
Until December, the Silicon Valley Linux Users Group (of which I am the
|
|
Vice President) had met in the back dining room of the local Carl's Jr.
|
|
(local burger chain). Carl's held around 40-50 people tightly. We had been
|
|
talking about moving the meeting from this spot for some time, and some of
|
|
our members who worked at Cisco pleaded to get a room for us
|
|
for the Eric Raymond meeting in February. As expected, this meeting was standing
|
|
room only, and we knew that with Linus coming we needed a much
|
|
larger space. Again, Cisco (with Ben Woodard pushing it through) came
|
|
through for us with a room rated for 350 people in their Gateway
|
|
Conference center.
|
|
<P>
|
|
About a half hour before the meeting began, the chairs were full and
|
|
people began to sit on the floor, against the walls and all
|
|
around the room.
|
|
Approximately 500 people had come to hear Linux speak.
|
|
We were
|
|
lucky--the air conditioning was in good shape, and
|
|
the fire marshal didn't show up.
|
|
<P>
|
|
The meeting began and after the user-group formalities were complete,
|
|
Linus was presented with the VA Research Excellence in Open Source
|
|
Software Award, co-sponsored by Red Hat and O'Reilly. The prize was a
|
|
loaded dual Pentium 333 from VA Research. In fact, Linus made out very
|
|
well, receiving not only the computer just mentioned, but also a Palm Pilot
|
|
professional
|
|
from Klaus Schulz of 3Com and a six-pack of real beer from local legend Rick
|
|
Moen. It should be noted that Linus didn't know about any of these awards
|
|
before coming to the meeting.
|
|
<P>
|
|
Accompanied by thunderous applause, Linus stood before the podium and expressed
|
|
his shock at the number of people who had showed up to hear him speak. He
|
|
had been under the impression that it would be a small, intimate meeting
|
|
like the first one he had attended last year at the burger joint.
|
|
<P>
|
|
He began his speech by telling the group what he wouldn't be talking about.
|
|
He said he wouldn't be talking about user issues or MIS issues--all
|
|
he would talk about was what he was doing with the kernel.
|
|
<P>
|
|
The hour-long speech (not counting the Q&A afterward)
|
|
was a technical discussion of how he is improving SMP (symmetric
|
|
multi-processing) support in the kernel.
|
|
He talked about the challenges of moving from a single
|
|
kernel resource lock for all CPUs as in the 2.0.x kernels to
|
|
individual resource locks for the new kernels. He discussed the ways these
|
|
changes affect things internally for the kernel, and how it affects the
|
|
handling of shared memory, interrupts and I/O. Linus also spent some time
|
|
talking about how the file system is being changed internally for better
|
|
performance. The speech will be available on-line by the time this article
|
|
goes to print (see Resources below), I'd recommend that you download it
|
|
and listen to the whole thing.
|
|
<P>
|
|
In addition to videotaping the speech and taking still photos,
|
|
the meeting in its entirety was broadcast over the MBone (Internet
|
|
protocol multicast backbone). After Linus had finished speaking, all of the
|
|
door prizes were given out, and everyone left the meeting happier and smarter
|
|
than they were the day before.
|
|
Special thanks are due to Linus Torvalds for speaking and to
|
|
everyone else involved in making this meeting a success.
|
|
<P>
|
|
<H4>Resources</H4>
|
|
<ul>
|
|
<li>SVLUG: <A HREF="http://www.svlug.org/">http://www.svlug.org/</A>
|
|
<li>REDHAT: <A HREF="http://www.redhat.com/">http://www.redhat.com/</A>
|
|
<li>VA Research: <A HREF="http://www.varesearch.com/">http://www.varesearch.com/</A>
|
|
<li>O'Reilly: <A HREF="http://www.ora.com/">http://www.ora.com/</A>
|
|
</ul>
|
|
|
|
<!--===================================================================-->
|
|
<P> <hr> <P>
|
|
<center><H5>Copyright © 1998, Chris DiBona <BR>
|
|
Published in Issue 27 of <i>Linux Gazette</i>, April 1998</H5></center>
|
|
|
|
<!--===================================================================-->
|
|
<P> <hr> <P>
|
|
<A HREF="./index.html"><IMG ALIGN=BOTTOM SRC="../gx/indexnew.gif"
|
|
ALT="[ TABLE OF CONTENTS ]"></A>
|
|
<A HREF="../index.html"><IMG ALIGN=BOTTOM SRC="../gx/homenew.gif"
|
|
ALT="[ FRONT PAGE ]"></A>
|
|
<A HREF="./gm.html"><IMG SRC="../gx/back2.gif"
|
|
ALT=" Back "></A>
|
|
<A HREF="./adelman.html"><IMG SRC="../gx/fwd.gif" ALT=" Next "></A>
|
|
<P> <hr> <P>
|
|
|
|
<H4>
|
|
"Linux Gazette...<I>making Linux just a little more fun!</I>"
|
|
</H4>
|
|
|
|
<P> <HR> <P>
|
|
<!--===================================================================-->
|
|
|
|
<center>
|
|
<H2>Markup Languages and lout2</H2>
|
|
<H4>By <a href="mailto:murray@zeus.mpce.mq.edu.au">Murray Adelman</a></H4>
|
|
</center>
|
|
<P> <HR> <P>
|
|
|
|
<B>lout</B> is a markup processor written by Jeffrey Kingston which
|
|
produces Postscript output instead of a device independent file. It's
|
|
underlying design was developed by the author and it allows it to
|
|
offer essentially the capabilities of LaTeX with the simplicity of
|
|
maintenance and resource requirements of <B>troff</B>. At the same time
|
|
it is easier to make changes to its behaviour than it is with the
|
|
other two. The details of the design are beyond the scope of this
|
|
article. It is described in the documentation and I will discuss where
|
|
you can read about it in more detail at the end of the article when I
|
|
discuss documentation.
|
|
<p>
|
|
<B>Basser lout</B> is an implementation of lout for the
|
|
UNIX operating system and that is the one I will discuss. It is the
|
|
one that would be installed on Linux. From now on when I say
|
|
lout, I will mean Basser lout. The package provides special
|
|
languages for graphics, tables, equations, and graphs as well as macro
|
|
facilities. It is able to automatically handle cross references,
|
|
create indexes, tables of contents and bibliographies from a
|
|
database all in an integrated environment.
|
|
<p>
|
|
<H4>Installing Lout</H4>
|
|
<p>
|
|
<B>lout</B> can be obtained from ftp//:ftp.cs.su.oz.au/jeff/lout
|
|
This article is based upon version 3.08 which is in the file
|
|
lout.3.08.tar.gz.
|
|
<p>
|
|
There might be a newer version by the time you read this, but the
|
|
author of lout tells me these step-by-step instructions will
|
|
still apply.
|
|
<p>
|
|
I strongly suggest you also get lout.teq.2.0.tar.gz. You can
|
|
have a preview of the users' guide if you get
|
|
lout.3.08.user.ps.gz. This (after it is uncompressed) can be
|
|
viewed with a postscript previewer or (its two hundred pages) can be
|
|
printed out.
|
|
<p>
|
|
When you unpack lout.3.08.tar.gz (using <tt>tar -zxpf
|
|
lout.3.08.tar.gz</tt>), you will have a directory called
|
|
lout.3.08 which includes the source files, a makefile,
|
|
several directories, and a few other files. Binaries are not
|
|
provided. The makefile is very well written and the source compiles
|
|
cleanly under Linux. I tried it with a.out using version 1.2.3 and
|
|
with ELF using versions 1.3.35 and 1.2.20 of the kernel, and none of
|
|
them gave any trouble. The instructions for how to compile are at the
|
|
top of the makefile and you need make little changes to the original
|
|
one. (If you are paranoid like me you will <tt>cp makefile
|
|
makefile.dist</tt> before editing this file.) The mandatory changes
|
|
are to reset the directories BINDIR, LIBDIR, DOCDIR, and MANDIR. If
|
|
you have root privileges you can set them to whatever you like except
|
|
that the installation process assumes that BINDIR, and MANDIR already
|
|
exist. This is a good idea since BINDIR must be on every users' PATH
|
|
and MANDIR must be in their MANPATH. If you are indecisive, let me
|
|
suggest:
|
|
<pre>
|
|
BINDIR = /usr/local/bin
|
|
LIBDIR = /usr/local/lib/lout
|
|
DOCDIR = /usr/doc/lout
|
|
MANDIR = /usr/local/man/man1
|
|
</pre>
|
|
If you want to install it in an unconventional place, in directories
|
|
that don't exist then create the directories BINDIR and MANDIR. I will
|
|
refer to these directories generically as BINDIR, DOCDIR, etc. from
|
|
now on.
|
|
<p>
|
|
Most of the other macros should be left as is. Make sure OSUNIX is set
|
|
to 1 and the others, OSDOS and OSMAC are set to 0 (zero). (They
|
|
already were in my copy). That is:
|
|
<pre>
|
|
OSUNIX = 1
|
|
OSDOS = 0
|
|
OSMAC = 0
|
|
</PRE>
|
|
If you want French and/or German support read the instructions (in the
|
|
makefile) for the macros USELOC and LOC_XX. (Where XX is FR or
|
|
DE.) For just English support you should have:
|
|
<pre>
|
|
CHARIN = 1
|
|
CHAROUT = 0
|
|
USELOC = 0
|
|
#LOC_FR = fr
|
|
#LOC_DE = de
|
|
</PRE>
|
|
Uncomment the relevant commented ones for language support. Choosing
|
|
one of the languages will allow lout to speak to you in those
|
|
languages when it gives messages. There is also support for formatting
|
|
in many languages including language specific hyphenation rules. These
|
|
options can be chosen at run time.
|
|
<p>
|
|
Now just do <tt>make lout</tt> followed by <tt>make c2lout</tt> when
|
|
this is finished, followed by <tt>make install</tt>. This last
|
|
command does a lot, including customizing the installation to your
|
|
setup. You have to do some hand editing of some files if your site
|
|
doesn't use A4 paper. This is a matter of editing a text file with a
|
|
text editor and it is well documented in the makefile. If you prefer
|
|
your error messages in a language other than English. You will find
|
|
instructions in the makefile for this.
|
|
<p>
|
|
The next step is to do <tt>make clean</tt> to get rid of all the extra
|
|
files produced in the building of the binaries. This leaves the
|
|
original sources intact. It also leaves your modified makefile
|
|
intact. If you understand where the different files go, you might want
|
|
to try it out before cleaning up, because if the installation
|
|
procedure is at fault you can fix up your makefile and try again,
|
|
saving compiler time.
|
|
<p>
|
|
If you have some time on your hands, you can test the installation by
|
|
making the user's guide. The instructions are in a README in the
|
|
DOCDIR/user directory. It takes some time, especially on a
|
|
slow computer. If you follow the instructions the result will be a
|
|
Postscript file called op. I renamed mine to
|
|
users.ps and I keep it permanently in the
|
|
DOCDIR/user directory set to be world readable. This, of
|
|
course, requires a Postscript viewer. I strongly suggest that you have
|
|
<B>ghostview</B> installed if you want to use lout seriously.
|
|
The user's guide is a huge document of about two-hundred pages,
|
|
complete with a table of contents and an index. You will eventually
|
|
need it! If you don't want to make it yourself, you can uncompress
|
|
lout.3.08.user.ps.gz.
|
|
<p>
|
|
As a quicker and far less exhaustive test you can use the file
|
|
sample.lt that I use for illustrating the language below. It
|
|
is complete and self contained. <B>lout</B> writes a few files and
|
|
leaves them on the disc when it is finished, for future use with the
|
|
same document, so choose a directory where you have write privilege
|
|
and will be able to easily locate and remove these extra files when
|
|
you are through testing and experimenting with them. Here is
|
|
sample.lt:
|
|
<pre>
|
|
(1) @SysInclude{doc}
|
|
(2) @Doc @Text @Begin
|
|
(3) @LD @Heading{Hello World}
|
|
(4)
|
|
(5) Hello
|
|
(6) -90d @Rotate{World Hello World 1.5 @Scale Hello}
|
|
(7) World Hello
|
|
(8) +45d @Rotate{World}
|
|
(9) Hello World Hello World Hello World
|
|
(10) @ShadowBox{Hello World}
|
|
(11) .7 @Scale{Hello .7 @Scale{ World .7 @Scale{Hello}}}
|
|
(12) World
|
|
(13) red @Color Hello World! Hello World
|
|
(14) @Box paint{grey} white @Color{Hello World Hello World}
|
|
(15) green @Color 120p @Font .
|
|
(16) @End @Text
|
|
</PRE>
|
|
Then do:
|
|
<pre>
|
|
lout sample.lt>sample.ps
|
|
</PRE>
|
|
You should get the prompt back in a few seconds with no error messages
|
|
in-between. Now on disk you have the files: sample.lt (This
|
|
is the source file you wrote yourself), lout.li,
|
|
sample.ld, and sample.ps. You can now print or
|
|
preview the file sample.ps. I have added a number of
|
|
effects. These effects are all built into lout and should be
|
|
shown off. I am not claiming that the other formatters won't do the
|
|
same thing, but lout will do it better for reasons I will go
|
|
into later.
|
|
<p>
|
|
<H4>The Language</H4>
|
|
<p>
|
|
Like TeX, lout partitions characters into the categories:
|
|
letters, punctuation, space, quote, escape, and comment. Letters are
|
|
the upper and lower alphabetic and the character
|
|
@. Punctuation characters are the usual ones including the
|
|
various forms of braces and funnily enough, the numerals. Spaces are
|
|
the space, tab, and newline characters. The last three categories have
|
|
only one member each. Quote has ' , escape has \,
|
|
and comment has #. The comment character at any place on a
|
|
line in the source file causes lout to ignore the rest of the
|
|
line.
|
|
<p>
|
|
You will deduce from the file sample.lt that commands start
|
|
with @. That is a custom rather than a law. A command can be
|
|
named by any string of letters. If you wish to write filters later to
|
|
manipulate your source file using regular expressions, I suggest that
|
|
you keep to the custom. This naming freedom comes with
|
|
responsibility. Remember in sample.tex there were
|
|
concatenations of commands with no space between them. TeX will deduce
|
|
that a command has ended when it sees the sign of a new one
|
|
beginning. This is not the case with lout. If lout sees a
|
|
string starting with @ that it doesn't recognize as a command
|
|
it notify you of the fact on the screen for your information. Look at
|
|
last line of sample.lt. There are two commands <tt>@End</tt>
|
|
and <tt>@Text</tt>. If you were to forget the space between them and
|
|
write <tt>@End@Text</tt>, lout would see that the string is not
|
|
bound to a known command and would treat it like text. Seeing that it
|
|
starts with an @ it would politely warn you that the command
|
|
is unknown. On the other hand if line (13) were to start with
|
|
<tt>red@Color</tt>, the string would just be typeset literally with no
|
|
warning. There is no command <tt>\Color</tt> as part of standard TeX
|
|
but if there were and you wrote red\Color, TeX would still know that
|
|
<tt>\Color</tt> was a command.
|
|
<p>
|
|
Another unusual feature of the lout markup language is that its
|
|
commands take arguments on both the left and on the right. The command
|
|
<tt>Color</tt> takes the color as the left argument and the text to
|
|
bear this color as a right one. Our example at the beginning of line
|
|
(13) will print "Hello" in red. In general arguments that
|
|
control things go on the left and arguments representing things acted
|
|
upon go on the right, but again this is custom rather than law. The
|
|
name of a command is delimited on the left and on the right by either
|
|
a space or a punctuation symbol. So, as a matter of fact, line (15)
|
|
could have been written <tt>green @Color 120p @Font</tt>. (No space
|
|
between "Font" and ".".) The same would be true if the
|
|
period were replaced by the numeral 1, but if the period were replaced
|
|
by the letter "a" the space would be necessary.
|
|
<p>
|
|
<B>lout</B> works recursively by creating more complex <I>objects</I>
|
|
out of simpler objects. A character is an object. A catenation of
|
|
characters form an object. A command applied to a string of characters
|
|
forms an object, and so on. The whole document is an object. The
|
|
general rule for lout is that a space in the source file between
|
|
objects produces a space in the final document, but space needed to
|
|
delimit objects does not. This is consistent for any character in the
|
|
space category. That is "Hello" separated from "World" by
|
|
five space characters will be the same as if they were separated by
|
|
five newlines which is the same as if they were separated by five
|
|
tabs. All would result in there being five spaces in the final
|
|
document.
|
|
<p>
|
|
Let me go through sample.lt. Line (1) tells lout to
|
|
read the file doc in the directory LIBDIR/include. This is
|
|
called a <I>setup file</I>. It gives the general layout parameters such
|
|
as margins, spaces above and below headers, style of page number,
|
|
etc. It also calls in two other files called docf and
|
|
dl in the same directory. These provide the standard
|
|
commands. You can copy any of these to your working directory and
|
|
modify them. You would then call them by the command <tt>@Include</tt>
|
|
instead of <tt>@SysInclude</tt>[footnote 8. If you know something about
|
|
SGML you will see a similarity.. If they are in a different directory
|
|
from the working one, you must give an absolute pathname. There are no
|
|
environment variables to specify your private cache of setup files,
|
|
but a directory can be specified on the command line with the
|
|
<tt>-I</tt> flag. I suggest that you make a directory called something
|
|
like myinclude in your home directory and alias the
|
|
command <tt>lout</tt> to <tt>lout -I ~/myinclude</tt>. Then
|
|
invocations of <tt>lout</tt> will cause a search in <tt>myinclude</tt>
|
|
for any files specified by the <tt>@Include</tt> command. The next
|
|
line contains a standard invocation to begin the text part of a
|
|
file. These three commands or longer substitutes must be in each file.
|
|
<p>
|
|
Line (2) is the statutory declaration for the actual text to begin and
|
|
line (3)is the first line of the document. The string <tt>@LD</tt>
|
|
there is the command for a Left Display. This groups its argument into
|
|
an object and leaves suitable vertical space above and below it. The
|
|
default is one line above and one line below. It justifies its
|
|
argument with the left margin. If <tt>@LD </tt>were replaced by
|
|
<tt>@D</tt>, the display would be centered. The <tt>@Heading{Hello
|
|
World}</tt> makes a new object consisting of the string <tt>Hello
|
|
World</tt> with the font size and face for a heading. By default this
|
|
simply is bold face at the same size as the body. This illustrates
|
|
lout's behaviour with respect to arguments. A string up to a
|
|
white space is considered a single argument. Here is an analysis of
|
|
the formation of the header. <tt>{Hello World}</tt> is an
|
|
object. Thus <tt>@Heading</tt> acts upon the object <tt>{Hello
|
|
World}</tt> to make a new object which is the string "Hello
|
|
World" placed in bold face. Then <tt>@LD</tt> acts on this
|
|
object to place it vertically the way a display should be placed and
|
|
to align it with the left margin. The net result using the default
|
|
settings will be "Hello World" in bold face with a blank
|
|
line under it.
|
|
<p>
|
|
Line (4) is blank. Recall that this will produce a single space in the
|
|
document. Since the header ends the line, this won't be visible so the
|
|
blank line has no effect. In contrast, the other formatters treat two
|
|
newlines differently from one. I like this consistency, but I have the
|
|
same complaint about taking newlines literally as I do with
|
|
troff. <B>lout</B> offers the option of using either TeX's or
|
|
troff's treatment of white spaces instead of the default
|
|
one. The TeX rule consistently collapses multiple spaces into one
|
|
space. Unlike "real" TeX, a blank line will just produce a space
|
|
in the document and not a new paragraph. In my opinion this is the
|
|
best of all worlds. If you want to go this route then you have to
|
|
write a macro equivalent to TeX's <tt>\hspace</tt> which requests that
|
|
a specific amount of horizontal space be left. I will show you one
|
|
such later when I discuss macros.
|
|
<p>
|
|
Line (5) begins the body of the section. Line (6) uses a facility that
|
|
is unique to lout. The command <tt>@Rotate</tt> rotates the
|
|
object appearing as the right argument by the amount specified in the
|
|
left one. I haven't discussed the units of measure used by lout
|
|
but you can guess that <tt>d</tt> denotes degrees. Rotations are by
|
|
default counter-clockwise so <tt>-90d</tt> means rotate ninety degrees
|
|
clockwise. The object to rotate is the complicated one to the right in
|
|
curly brackets. I have put other geometric operations inside this
|
|
object. The last "Hello" in the rotated string is the
|
|
subject of the command <tt>@Scale</tt> which means to scale it. The
|
|
argument on the left says how much, in this case a factor of 1.5. A
|
|
scaling factor being a pure number needs no units. Note that the
|
|
victim of the scaling has no curly braces around it. This is because
|
|
it is automatically delimited by a white space.
|
|
<p>
|
|
Line (7) consists of simple text, because it is on a new line, it is
|
|
separated from the rotated object by a space and so is a new object
|
|
with a space before lt in the final document.
|
|
<p>
|
|
Line (8) is another rotation, this time forty-five degrees counter
|
|
clockwise. The brackets around its argument "World" are
|
|
not necessary, I just put them there to show that you can if you
|
|
want.
|
|
<p>
|
|
Line (9) is just plain text. So far everything I have described will
|
|
be set on the same line. It is indeed a high and very deep line
|
|
because of the rotated objects, but nonetheless a line. The horizontal
|
|
and vertical spacing needed for it has been taken care of
|
|
automatically.
|
|
<p>
|
|
Line (10) puts "Hello World" in a shadow box. One of those
|
|
things that have a shadow in the lower right corner to give a three
|
|
dimensional effect.
|
|
<p>
|
|
On line (11) "@Scale" has as its argument the object
|
|
<tt>{.7 @Scale{ World .7 @scale{Hello}}</tt> and <tt>.7</tt> as a
|
|
parameter. This, in turn has the object <tt>.7 @Scale {World .7
|
|
@Scale {Hello}}</tt> as its argument and <tt>.7</tt> as its parameter,
|
|
and so on. The net result is of the three words "Hello",
|
|
"World", and "Hello" each one smaller than the
|
|
one on its left. This illustrates the recursive nature of lout
|
|
in building new objects out of already created objects. (I chose those
|
|
particular ones to taper off because this is the end of the first line
|
|
using the default page setup.
|
|
<p>
|
|
You can guess that line (12) adds a bit of color to the document. The
|
|
only thing to remember is that only the "Hello" will be
|
|
red. The use of the colors offered by Postscript are built in to the
|
|
formatter. With a black and white printer the color just won't show
|
|
up, but there will be no error generated.
|
|
<p>
|
|
Line (14) looks complicated, but it follows the rules of lout
|
|
syntax and is hence was not hard to create with the documentation in
|
|
front of me. The first command is <tt>@Box</tt> which draws a
|
|
rectangular box around its argument. Some commands can take options
|
|
and <tt>@Box</tt> is one of them. The <tt>paint</tt> option specifies
|
|
what color to "paint" the inside of the box. The next part
|
|
is the object inside the box. The thing in the box is a white colored
|
|
string "Hello World Hello World". Note that there is no
|
|
need to put curly braces around the whole thing because white
|
|
is an argument to <tt>@Color </tt>and the whole shebang just makes a
|
|
white object.
|
|
<p>
|
|
This is further illustrated on line (15) where a huge period is
|
|
colored green. The new command is <tt>@Font</tt> which takes a left
|
|
and a right argument. The left one is the size and the right argument
|
|
is the subject of the font change. In this case we produce a period in
|
|
a one hundred-twenty point font and color it green. You might have
|
|
noticed that troff allows relative font changes to be
|
|
additive. That is you can ask that a font be made larger or smaller by
|
|
so many points. Although I didn't illustrate it, TeX on the other hand
|
|
favors multiplicative relative changes, that is you can change to a
|
|
multiple of the font size. <B>lout</B> offers both. You can specify an
|
|
additive change by <tt>+2p @Font</tt>, which will add two points to
|
|
the current font size, or you can specify a multiplicative change by
|
|
<tt>1.2f @Font</tt>. The unit <tt>f</tt> denotes the current font size
|
|
and <tt>1.2f</tt> means the current font size multiplied by a factor
|
|
of 1.2. Line (16) contains the compulsory command to end a
|
|
document. It must be put in all documents.
|
|
<p>
|
|
If you have ghostview installed, and if you have the file
|
|
sample.lt on disk, you can preview it by first doing <tt>lout
|
|
sample.lt > sample.ps</tt> and then <tt>ghostview sample.ps</tt> when
|
|
the prompt returns. If you have a color monitor and a color X server
|
|
you should see the color effects. You can, of course, print the
|
|
Postscript file.
|
|
<p>
|
|
There are packages provided as part of the distribution for tables,
|
|
equations, graphics, and graphs. These are more integrated than they
|
|
are in troff. The equation one is very similar to the <B>eqn</B>
|
|
of troff. The example I gave for troff will work with
|
|
lout almost verbatim. In the section on installation I strongly
|
|
suggested getting lout.teq.2.0.tar.gz. This is a modified
|
|
equation package using Computer Modern Fonts for the mathematical
|
|
symbols. I have made some tests and I think the results do look better
|
|
using it. There are instructions on how to use it in the
|
|
documentation. If you plan to do a lot of mathematical typesetting you
|
|
should install it. It is dead easy to do. Just edit the makefile that
|
|
comes with the package to tell it where the various files for lout
|
|
have been installed. and do <tt>make</tt>. No compiling or linking is
|
|
performed and the process is quick. According to the literature that
|
|
comes with the distribution, this packages has not been included in
|
|
the lout distribution for legal reasons. The creator of the
|
|
fonts requires conditions in the license that are not compatible with
|
|
the GNU license under which lout is distributed.
|
|
<p>
|
|
The tables package has a different syntax from that of troff,
|
|
but seems to operate with the same philosophy. The results are good
|
|
with the examples I played with but it doesn't offer the scope and
|
|
flexibility of <B>tbl</B> for making really complex non-standard
|
|
tables; but then again, what does?
|
|
<p>
|
|
As I said, graphics are built into lout. Nonetheless there is a
|
|
graphics package to provide you with advanced features. It provides
|
|
the basic objects usually found in drawing packages such as squares,
|
|
circles, ellipses, and Bezier curves. These are all parameterized to
|
|
allow relevant specification of size and shape. Many of the commands
|
|
and parameters are lout versions of Postscript command. The
|
|
important difference is that lout does the formatting whereas
|
|
Postscript requires you (with the help of its programming constructs)
|
|
to account for every point on the page. <B>troff's pic</B> package
|
|
offers two levels of drawing. One is a "user-friendly" level in
|
|
which you describe the drawing verbally and one that is more
|
|
complicated to use which serves as a basis for the other level, and
|
|
which allows automating some drawing operations which would otherwise
|
|
be tedious. <B>lout's</B> instruction set seems to lie somewhere in
|
|
between. On the other hand it is more manageable for the casual user
|
|
than TeX's <B>xypic</B> package.
|
|
<p>
|
|
There is also a package for producing graphs, and one for formatting
|
|
<B>C</B> and <B>Pascal</B> code from the sources. My line of work
|
|
doesn't involve using them and I haven't tried them as yet.
|
|
<p>
|
|
<B>lout</B> as it is distributed is not likely to require extra macro
|
|
packages. You can do just about any job you need by modifying the
|
|
existing ones. It, of course, also has facilities for writing your own
|
|
commands. Let me give you a simple one called <tt>@Hspace</tt>. If you
|
|
take my advice and use the TeX spacing option you will find it useful:
|
|
<pre>
|
|
def @Hspace
|
|
right x
|
|
{|x}
|
|
</PRE>
|
|
It is named after one that does the same job in TeX where it is called
|
|
<tt>\hspace</tt>. It takes one argument and leaves that much
|
|
horizontal space. For example <tt>@Hspace .5i</tt> will leave a
|
|
horizontal space of one-half inch. Because of the way lout puts
|
|
one object to the right of the previous one. There doesn't appear to
|
|
be a way to write an equivalent of TeX's <tt>\vskip</tt>. There is, of
|
|
course, a primitive for leaving vertical space.
|
|
<p>
|
|
The documentation that comes with lout instruct you to put
|
|
definitions (macros) in a file called mydefs which is
|
|
automatically read in when lout processes a document. I have
|
|
experimented with putting them in source file along with the text with
|
|
varying success. Ones that only use primitives, like <tt>@Hspace</tt>,
|
|
can be put at the very top of a document before the
|
|
<tt>SysInclude</tt> command. Others that use commands like
|
|
<tt>@Color</tt> seem not to work unless they are in mydefs.
|
|
<p>
|
|
A consequence of the liberality of naming commands is that if you
|
|
write the definition
|
|
<pre>
|
|
def teh
|
|
{the}
|
|
</PRE>
|
|
Whenever you make the common typing mistake of typing "the" as
|
|
"teh", lout will automatically change it to the right
|
|
word. Of course you have to make a separate one with a capital
|
|
"T" and you have to make sure the term "teh" doesn't
|
|
appear in your document. This only uses lout primitives and can
|
|
be put at the beginning of the document.
|
|
<p>
|
|
I have used the word recursive in an informal sense above, but
|
|
lout is recursive in the technical sense also. You can call a
|
|
command within itself. This is the underlying principle behind its
|
|
design. There are useful recursive examples given in the expert's
|
|
guide. Reading it will give you some idea of how lout is
|
|
implemented. I recommend chapter 1 of the expert's guide for general
|
|
reading. I will give a useless but fun example here that I hope will
|
|
illustrate the point. The lines
|
|
<pre>
|
|
def @Banner
|
|
{red @Colour Hello blue @Color World @Banner}
|
|
@Banner
|
|
</PRE>
|
|
will write a red "Hello" followed by a white space followed by a
|
|
blue "World" repeated until a line is filled. If you want to try
|
|
it, be sure to put this definition in the mydefs.lt file and
|
|
the invocation of it (third line) in a source file.
|
|
<p>
|
|
This recursive behaviour is used more seriously in the implementation
|
|
of lout. It is one of the "secret ingredients" that allows
|
|
lout to offer so many facilities in such little space. See the
|
|
"Expert's Guide" that comes with the distribution for more
|
|
details.
|
|
<p>
|
|
<B>lout</B> like LaTeX is a logical markup language. The author
|
|
indicates what textual elements he or she wants at a given point and
|
|
the formatter will take care of the details. With different kinds of
|
|
documents these details might be different. For example a section in a
|
|
book is numbered differently from one in a simple article. Like LaTeX,
|
|
lout takes care of these differences by providing different
|
|
style files for different document structures. The ones offered in the
|
|
distribution are the <B>doc</B>, <B>report</B>, <B>book</B>, and
|
|
<B>slides</B>. The doc style is for simple basic documents such
|
|
as a scholarly article. The report style is for technical
|
|
reports. The book style is obviously for books, and the
|
|
slides style is for making one or a series of overhead projector
|
|
slides. If you have a color printer, you can use the color facilities
|
|
in lout to great advantage with the slides style. There
|
|
are variants of each of these files for output other than Postscript.
|
|
<p>
|
|
It is difficult to change the defaults in LaTeX style files. I gave an
|
|
indication of such a change. It is easier in troff except for
|
|
the somewhat artificial devices of setting registers with strings of
|
|
numbers. Syntactically, lout is dead easy to change. The only
|
|
difficulty is in knowing where to put the changes. You are told this
|
|
in the documentation.
|
|
<p>
|
|
Let me give an example. Suppose you want to change the doc
|
|
style so that it more closely imitates the output of troff's mm
|
|
macros. (Not that I recommend doing this!) In particular you want to
|
|
set the default font size to ten points, you want to make block style
|
|
paragraphs the default style, and you want the headings to be in
|
|
italics. Assume that you wish to do this locally rather than
|
|
system-wide. Then you have to make yourself a new style file to change
|
|
the paragraph style. First copy LIBDIR/include/doc to the
|
|
working directory call it troffdoc. Now open up the file with
|
|
a text editor. You will see the following near the top of the file.
|
|
<pre>
|
|
@Use { @DocumentLayout
|
|
# @InitialFont { Times Base 12p } # initial font
|
|
# @InitialBreak { adjust 1.20fx hyphen } # initial break
|
|
# @InitialSpace { lout }# initial space style
|
|
# @InitialLanguage { English } # initial language
|
|
# @InitialColour { black } # initial colour
|
|
# @OptimizePages { No } # optimize page breaks?
|
|
# @HeadingFont { Bold } # font for @Heading
|
|
# @ParaGap { 1.30vx } # gap between paragraphs
|
|
# @ParaIndent { 2.00f } # first-line indent for @PP
|
|
# @DisplayGap { 1.00v } # gap above, below displays
|
|
# @DisplayIndent { 2.00f } # @IndentedDisplay indent
|
|
# @DefaultIndent { 0.5rt } # @Display indent
|
|
........
|
|
</PRE>
|
|
This is a list of the parameters that can be set (the list is
|
|
longer. I have included roughly what I need for this example.) Notice
|
|
that the settings are commented out. First uncomment the line with
|
|
<tt>@InitialFont</tt> and change the <tt>12p</tt> to <tt>10p</tt>. Now
|
|
you have your ten-point default. Now go down to the line
|
|
<tt>@ParaIndent</tt>. Uncomment it and change the <tt>2.00f</tt> to
|
|
<tt>0f</tt>. Now you have no indentation for paragraphs. The vertical
|
|
space between paragraphs is pretty good as it stands so leave
|
|
<tt>@ParaGap</tt> as it is. Now we want to take care of the font for
|
|
the headings. Right above the <tt>ParaGap</tt> line is one with
|
|
<tt>@HeadingFont</tt>. Uncomment this and change <tt>Bold</tt> to
|
|
<tt>Slope.</tt> Now you are there. Save the file. and change the top
|
|
line of your source from <tt>@SysInclude{doc}</tt> to
|
|
<tt>@Include{troffdoc}</tt>. Now you have it. If you want to make it
|
|
system wide, and you have root privileges you can put it in
|
|
LIBDIR/include or if you wish to be dictatorial, modify
|
|
doc itself.
|
|
<p>
|
|
All three formatters offer facilities for making cross references and
|
|
a table of contents. LaTeX and troff offer an interface with
|
|
programs that will automatically produce bibliographies from databases
|
|
and indexes. <B>lout</B> is unique in offering these two built
|
|
in. Given that you want these features, lout is the easiest of
|
|
the three formatters to install, maintain and use. My installation
|
|
takes up 4.3Mb and this includes the <B>teq</B> package that I
|
|
recommended and a package for producing bar codes. This makes it a
|
|
pretty modest formatter.
|
|
<p>
|
|
I spoke about the <I>ensemble</I> of the other two programs. There is
|
|
not much to say about that for lout. Everything is built in and
|
|
is accomplished by using flags on the command line or by requesting
|
|
that the relevant files be read in. Each setup file has a list of
|
|
parameters at its beginning. You can change them, or you can change
|
|
this parameter in your source file. For example, I made some changes
|
|
to how the section headers would look in both LaTeX and
|
|
troff. To change spacing above and below the header in
|
|
lout I would simply put <tt>@DisplayGap{.75v}</tt> at the beginning
|
|
of my file. This would change the default spacing of one space to
|
|
three-quarters of a space and make the document more compact. This is
|
|
considerably simpler than what must be done for LaTeX. It is easier to
|
|
remember than the somewhat artificial method in troff of setting
|
|
a string register.
|
|
<p>
|
|
One problem with TeX has always been that it takes an expert to
|
|
manage. Unfortunately most system administrators are not interested in
|
|
test formatting and so in many sites an "off-the-shelf" version
|
|
is installed and the users accept the defaults or learn to change them
|
|
themselves. On the other hand, a system administrator who knows
|
|
nothing about lout could change the relevant line in the
|
|
LIBDIR/include/doc file to read as above and the change will
|
|
be universal. Ordinary users can make their private default by writing
|
|
out the parameters to be changed in a file on the path specified by
|
|
the <tt>-I</tt> flag described earlier. In extreme cases they can even
|
|
copy the default setup file to such a place and modify any or all the
|
|
parameters. With a modified doc in a private directory
|
|
<tt>@Include{doc}</tt> is placed at the top of the document instead of
|
|
<tt>@SysInclude{doc}</tt>.
|
|
<p>
|
|
I mentioned earlier that lout produces a Postscript file where
|
|
the other two produce device independent ones. This means that the
|
|
lout language can offer equivalents of all of the Postscript
|
|
geometric and color commands. Since these commands are programmed into
|
|
the formatter, it puts the objects created by them in a first class
|
|
box. This is as opposed to Tex and troff which allow Postscript
|
|
commands to be sent to a suitable driver while ignoring them during
|
|
the creation of the device independent file. In this case it is up to
|
|
you to provide a second class box to make room for objects created
|
|
and/or transformed by the Postscript commands. The price you pay for
|
|
this is a loss of device independence. <B>ghostscript</B> fixes a lot
|
|
of this problem (see the section on Postscript) but if you have a high
|
|
quality non-postscript laser printer with resident fonts, you have to
|
|
abandon those fonts and get new ones. Your gain is the added
|
|
flexibility of Postscript though.
|
|
<p>
|
|
The new version of LaTeX, LaTeX2[epsilon], has a package called
|
|
<B>graphics</B> that extends the markup language to allow for
|
|
rotation and scaling. There is another package called <B>color</B>
|
|
that extends the language for employing color. Packages come out as
|
|
the need for them becomes clear. For example there is one called
|
|
<B>fancybox</B> that makes shadow boxes. However, graphics
|
|
and color will only work with certain Postscript drivers at
|
|
present. Thus you have to give up device independence when you use
|
|
them. (I can't give you the complete collection of packages needed to
|
|
match lout's capabilities. The documentation with some of them
|
|
is scant. Keep in mind, however, that LaTeX2[epsilon] is in an
|
|
experimental version. LaTeX3 when it comes out might have a complete
|
|
package for graphic which can then be documented in the "standard
|
|
literature".)
|
|
<p>
|
|
I have been assuming that documents consist mainly of text with
|
|
incidental graphics inserted. There are other kinds of documents, such
|
|
as advertising layouts, that should be looked at as graphics with
|
|
incidental text inserted. For the reasons given in the last paragraph,
|
|
lout has to be considered as the best tool for this. Closely
|
|
related to this is the option of producing <B>Encapsulated
|
|
Postscript</B> (EPS) which produces graphics files meant to be included
|
|
inside a larger document. This option is invoked with the
|
|
<tt>-EPS</tt> flag.
|
|
<p>
|
|
<B>lout</B> also offers the option of producing ASCII output. In order
|
|
to do this you use the <tt>-P</tt> flag on the command line
|
|
and change whichever setup file you are using to one with an "f"
|
|
attached to its name. (So you would have <tt>@SysInclude{docf}</tt> in
|
|
place of line (1) of sample.lt. This will not be necessary in the next
|
|
version, doc will work with both outputs. If one is to judge from the
|
|
text newsgroups, being able to produce both ASCII for on-line
|
|
documentation, and high quality hard copy with the same source file is
|
|
a very desirable feature. It is one shared by troff but not by
|
|
LaTeX.
|
|
<p>
|
|
There is a trend to use fonts other than the standard Adobe fonts
|
|
provided with Postscript printers. Traditional fonts like Garamond and
|
|
various exotic fonts for special purposes can be bought for a
|
|
reasonable price nowadays. <B>lout</B> is the easiest formatter in
|
|
which to install new fonts and I will close this lout specific
|
|
section by outlining how to do this.
|
|
<p>
|
|
First of all, with your new fonts you should have a set of outline
|
|
(glyph) files. They have the extension .pfa or .pfb
|
|
and they are of no concern to lout. They are installed in your
|
|
postscript printer or in ghostscript. See the earlier section on
|
|
Postscript for instructions on how to do the latter.
|
|
<p>
|
|
Secondly you should have a set of metric files. These are what
|
|
lout wants to work with. These files have the extension
|
|
.afm for "Adobe font metrics". <B>lout</B> uses these
|
|
without modifications.
|
|
<p>
|
|
I will continue to use LIBDIR to denote the directory in
|
|
which the lout library has been installed
|
|
(/usr/local/lib/lout by default.) There is a directory called
|
|
LIBDIR/font and that is where the font metric files are
|
|
placed. You can give them any name you like that doesn't coincide with
|
|
the ones already there. The default fonts have names in mostly in
|
|
capitals without an extension. They are abbreviations that describe the
|
|
font. For example Times Roman is denoted by <tt>TI-Rm</tt> and
|
|
Times Italic is denoted by <tt>TI-It</tt>. To make things more
|
|
concrete let me use the same Charter fonts that I installed in
|
|
<I>ghostscript</I> earlier as a running example.
|
|
<p>
|
|
There are four files for the Charter fonts (at least in my version):
|
|
bchr.afm, bchri.afm, bchb.afm,
|
|
bchbi.afm. (By the way, the initial "b" in the name is
|
|
for <B>Bitstream</B> the producers of the font.) These are the metrics
|
|
for Roman, Italics, Bold and Bold Italics respectively. I have decided
|
|
to call them CH-R, CH-I, CH-B, and
|
|
CH-BI in the lout installation. I copy the files into
|
|
LIBDIR/font with their new names. For example cp bchr.afm
|
|
LIBDIR/font/CH-R. If you are sure you won't need them for
|
|
something else, such as installing them in TeX or <B>groff</B> then you
|
|
can move them instead of copying them. They are now installed and the
|
|
next step is to tell lout about them.
|
|
<p>
|
|
Change to the directory LIBDIR/include and open the file
|
|
fontdefs with a text editor. This file has long lines that
|
|
should not be broken so make sure your editor is not set to
|
|
automatically break lines. The file will be hard to read with a
|
|
standard eighty column screen, but there is not much to it. If you are
|
|
using X you can elongate the window.
|
|
<p>
|
|
The general format of the file is all in one line:
|
|
<pre>
|
|
fontdef <lout family> <lout face> {<zPostscript> <font-metric file> <character map file> <Recode?>}
|
|
</PRE>
|
|
<tt>fontdef</tt> is the command that tells lout that what
|
|
follows is a font definition. You will put that on each line of the as
|
|
the first entry. It is the only command you need know about to install
|
|
a font. <tt><lout family></tt> is the family name with which
|
|
you will refer to the general family. You can choose this. I choose
|
|
the name Charter. <tt><lout face></tt> is the style of
|
|
face. The default body face (often called Roman) is labeled
|
|
Base, Italics is labeled Slope, Boldface is labeled
|
|
Bold and Bold Italics is labeled BoldSlope. In
|
|
theory you can change these, but I don't recommend it as if you do
|
|
some of the built-in default font selections of lout won't work
|
|
properly. You will have to be prepared to give every font change
|
|
command in its full form. <tt><Postscript></tt> is the official
|
|
Postscript name. You obtain that from the .afm file as I
|
|
described in the Postscript section. However note that it is written
|
|
differently in this file than it is in the Fontmap file in
|
|
that it is missing a leading "/". That slash is part of
|
|
the ghostscript language and is not used by lout. The
|
|
Postscript name includes the family and the face.
|
|
<tt><font-metric file></tt> is the name of the file you put in
|
|
LIBDIR/font containing the font metrics.
|
|
<tt><character map file></tt> is the file that tells lout which place on
|
|
the font table each character is to be found. For any font consisting
|
|
of standard alphabetical characters (as opposed to special symbols)
|
|
you will use LtLatin1.LCM. The various mapping files are to
|
|
be found in LIBDIR/maps, but you needn't be bothered with
|
|
them unless you want to do something special, like install a new
|
|
symbol font. Most of the font families don't offer a separate symbol
|
|
font anyway but rely upon the standard Postscript one. This is what
|
|
lout assumes. The last entry <tt><Recode?></tt> consists of the
|
|
word <tt>Recode</tt> or the word <tt>NoRecode</tt>. This is to tell
|
|
lout whether to use the character mapping. Again, unless you are
|
|
planning to do something unusual, you should choose Recode.
|
|
<p>
|
|
Next, where to put the entries for your new font. The existing
|
|
fontdefs file starts out with all of the font definitions
|
|
that come with lout. Put you new ones right after them. So
|
|
scroll down the file until you see the last line starting with
|
|
fontdef and put yours right underneath. Comments are denoted
|
|
by # at the beginning of the line so you complete
|
|
entry can look like:
|
|
<pre>
|
|
### Added by me 1 December 1996
|
|
fontdef Charter Base {CharterBT-Roman CH-R LtLatin1.LCM Recode }
|
|
fontdef Charter Slope {CharterBT-Italic CH-I LtLatin1.LCM Recode }
|
|
fontdef Charter Bold {CharterBT-Bold CH-B LtLatin1.LCM Recode }
|
|
fontdef Charter BoldSlope {CharterBT-BoldItalic CH-BI LtLatin1.LCM Recode }
|
|
</PRE>
|
|
That is all there is to it. Your fonts are now installed. Now if you
|
|
begin your document with
|
|
<pre>
|
|
@SysInclude{doc}
|
|
@Document
|
|
@InitialFont{Charter Base 12p}
|
|
//
|
|
@Text @Begin
|
|
</PRE>
|
|
it will be typeset in the Charter font. The command <tt>@I</tt> will
|
|
call for Charter Italics, and so on. If you call for special symbols
|
|
they will come from the symbol font which is installed by default in
|
|
lout.
|
|
<p>
|
|
Note that you are free to assign lout font families to any set
|
|
of font files as with the virtual font construction in Tex. That is
|
|
you can take Base from the font foo with official
|
|
Postscript name foo-Roman and Slope from the font
|
|
bar with official Postscript name bar-Italic. If you
|
|
call this new font Newfoo, your entry in the fontdefs file
|
|
will begin like this
|
|
<pre>
|
|
fontdef Newfoo Base {foo-Roman ...
|
|
fontdef Newfoo Slope {bar-Italic ...
|
|
</PRE>
|
|
This is handy because some font families have a face missing. You just
|
|
have to find one that blends in with the existing faces. This is what
|
|
is done by typesetters and you can find books that tell you which ones
|
|
blend with which.
|
|
<p>
|
|
All that I have said about installing fonts assume that the fonts are
|
|
encoded with eight bits. This means that eight bit words are used to
|
|
describe each character in the font, allowing a font to contain 256
|
|
characters. If you use TeX you might be aware that the original
|
|
version only used seven bit words to name the characters in a
|
|
font. This was changed in later versions, but the Computer Modern
|
|
fonts weren't recoded for this change. The result is that each
|
|
standard TeX font can only have 128 characters. What gets left out are
|
|
the European special characters that are not used in English (various
|
|
accents, crossed out els, etc). Instead they are formed by
|
|
digraphs--the overstriking of two different characters. <B>lout</B>
|
|
assumes that these extra characters are available and it is not set up
|
|
to form digraphs[footnote 9. Of course macros can be written to form
|
|
them.]. Other symbols that are on the ordinary alphabetical fonts in
|
|
Postscript are to be found on the Computer Modern symbol font and code
|
|
has to be written to point lout in the right direction. Thus if
|
|
you want to install a Postscript version of the Computer Modern fonts
|
|
in lout, such as the free <B>BaKoMa</B> ones, you have to do a
|
|
lot more work. There is an eight bit encoding of the Computer Modern
|
|
font now, sometimes known as the "Cork encoding", and when a
|
|
Postscript version of these comes out, it will be easy to install
|
|
Computer Modern in lout.
|
|
<p>
|
|
<H4>Summary</H4>
|
|
<p>
|
|
In a nutshell, lout offers all of the capabilities of LaTeX
|
|
requiring considerably less resources. It doesn't do quite as good a
|
|
job putting together the fragments that make up large delimiters,
|
|
large square root signs, and the like, but it still does a good
|
|
job. The difference is small enough so that I wouldn't use it as a
|
|
criterion for choosing one above the other. All three of the
|
|
formatters I described do a good job with bread and butter
|
|
typesetting, that is line and paragraph breaking and and sane
|
|
hyphenation. I wouldn't make my choice on this basis either.
|
|
<p>
|
|
<B>lout</B> seems to run slower than LaTeX for an equivalent job and
|
|
requires more passes to resolve references that are written to an
|
|
extra file, such as cross-references. If you have a slow machine, or
|
|
do huge documents with a lot of cross-references, tables of contents,
|
|
and so on, and if time is a factor, then you might find lout to
|
|
slow for you. On the other hand, lout allocates memory
|
|
dynamically and so you won't run out of memory with a complex
|
|
document as you can with LaTeX.
|
|
<p>
|
|
Like LaTeX, lout offers logical markup and it is far easier to
|
|
customize the layout files than it is to customize LaTeX style
|
|
files. On the other hand, TeX offers a more convenient macro
|
|
interface. You can write them anywhere in the document or in a
|
|
separate file to be input at any point of the document, whereas with
|
|
lout you have to write some in a separate file which is kept in
|
|
the working directory. (There do seem to be comands that change the
|
|
scoping rules, but they are not well documented.) This is hardly a
|
|
disadvantage if you use one directory per document, or if you group
|
|
small documents that need the same macros in the same directory, but
|
|
if you keep several documents in the same directory, each needing
|
|
macros with the same name, but with different actions, then you will
|
|
have to do some editing of the layout file. It also makes it difficult
|
|
to send a document in a single file if it uses user-defined
|
|
macros. Many TeX-perts feel that it is a bad idea to put all of the
|
|
macros in one file anyway; for the same reason it is not a good idea
|
|
to have all of the source in one file for a large programming
|
|
project. In the case of TeX, there is enough difference in different
|
|
installations so that often a large document produced in one site has
|
|
to be mildly edited before it is processsed or printed at another. It
|
|
is far easier to find these problems if the document is logically
|
|
divided into modules. (I tend to <B>tar</B>, <B>gzip</B> and then
|
|
<B>uuencode</B> my documents before sending them by email. They pass
|
|
safely through the most primitive mailing routes this way. It does
|
|
depend upon the person on the other end having versions of
|
|
<B>uudecode</B>, <B>gunzip</B> and <B>tar</B>, but there are versions of
|
|
these for most operating systems.)
|
|
<p>
|
|
Of the three formatters that I described, "Barefoot" LaTeX is
|
|
the weakest for drawing facilities lout is the strongest. LaTeX
|
|
with suitable packages and lout as it is produce geometric
|
|
transformations of objects in first-class boxes, lout is the
|
|
more versatile. The gpic package that comes with groff
|
|
falls down in that department, but it is by far the most user-friendly
|
|
package for drawing. It can be used to produce pictures that can be
|
|
imported into LaTeX with the <tt>-t</tt> option which turns it into a
|
|
GNU version of tpic (as usual with more features than the
|
|
original.) Pictures made with gpic can be saved as Postscript
|
|
files and easily imported into lout.
|
|
<p>
|
|
You have to buy troff and LaTeX documentation. There are
|
|
standard books for LaTeX which I mentioned earlier. The other book
|
|
that should be on your shelf if you use LaTeX is "The TeXbook" by
|
|
Donald Knuth, also published by Addison Wesley. A new version of
|
|
LaTeX2[epsilon] is issued every six months so there is no chance that
|
|
any book can keep up-to-date. New packages usually come with
|
|
documentation, but sometimes it is pretty scant and requires
|
|
considerable knowledge of TeX to decipher. Problems and solutions are
|
|
usually posted in the comp.text.tex newsgroup. Good books on
|
|
troff, and especially the <B>mm</B> macros are getting hard to
|
|
find. My favorite, which is out of print at present, is "UNIX Text
|
|
Processing" by Dougherty and O'Reilly, published by Hayden. O'Reilly
|
|
and Associates also publish the Berkeley 4.4BSD User's Supplementary
|
|
Documents which contains documentation on troff but doesn't
|
|
discuss <B>pic</B> or the mm macros. There is no newsgroup for
|
|
troff specifically, but it problems and solutions are often
|
|
posted to the comp.text group.
|
|
<p>
|
|
<B>lout</B> comes with its own documentation. The user's guide is a
|
|
book and compares with the textbooks for the other processors. If you
|
|
want to go deeper into its internal workings there is the expert's
|
|
guide. There are examples in both of them. I have bound the user's
|
|
guide in two parts. The first comprises chapters 1-5 which contains
|
|
the document formatting information and the second comprises chapters
|
|
6-11 which contains information on the individual packages. You
|
|
won't see textbooks on lout on the shelves of bookstores and so
|
|
if don't like the documentation provided, you are stuck. There is
|
|
sometimes discussion on comp.text about lout and there
|
|
is a mailing list. To subscribe send an email to
|
|
lout-request@nlif.spb.su with subscribe in the
|
|
Subject field.
|
|
<p>
|
|
I haven't said much about recovery from error. All of the formatters
|
|
are pretty cryptic in this department. <B>lout</B> and troff are
|
|
both the strong silent type that only say something when they need
|
|
to. If lout runs into an error it will give you the line and the
|
|
relative place on the line where it is detected. Raw troff gives
|
|
nothing away except that there is an error. It does provide macro
|
|
writers with a mechanism for error reporting and the mm
|
|
package is pretty informative. TeX gives you a running commentary of
|
|
what pages are being output, and what files are being read in. When it
|
|
comes upon an error it gives tells you in what file and in what line
|
|
of the file the error was found. It also opens an interactive window
|
|
and offers several options for handling the error. I mentioned some of
|
|
the more interesting ones earlier. This constant activity on the
|
|
screen while TeX is running might make it appear to finish faster than
|
|
lout which leaves you staring at a blank screen until something
|
|
goes wrong. Just as you have to learn how to write markup, you must
|
|
learn how to interpret error messages. I know from experience that you
|
|
get better with experience.
|
|
<p>
|
|
There are what I would call external disadvantages to using
|
|
lout. By that I mean those that are caused by the fact that it
|
|
is relatively new and not used by a large number of people. This
|
|
means, first of all, that you won't find, for instance a "lout
|
|
mode" written for the emacs editor. Although the drawing facilities
|
|
that come with lout are pretty extensive, they need some
|
|
"sugar coating". For example, it is a nuisance to draw
|
|
commutative diagrams in the present language[footnote 9, I assume from
|
|
browsing the site ftp://ftp.cs.su.oz.au/jeff/lout that there
|
|
is a commutative diagrams package in the offing.]. I would like a more
|
|
user friendly way of putting named blocks of graphics together. (See
|
|
Chapter 9 of the User's guide for how it needs be done at the
|
|
present.)
|
|
<p>
|
|
The other external disadvantage is that publishers are most likely not
|
|
equipped to handle lout source code. For camera-ready documents
|
|
this is no problem, but if the camera-ready source is to be produced
|
|
by the publisher, then the entire document will have to be
|
|
re-keyed. Similarly if you want to email a source file to a colleague,
|
|
he or she will have to have lout installed to read it.
|
|
<p>
|
|
To some extent these are problems that can fix themselves with
|
|
time. For all we know somebody might be writing an <B>Emacs</B> mode for
|
|
lout at this very moment. As far as publishers are concerned;
|
|
over the years I have heard bitter complaints from fellow
|
|
mathematicians that so-and-so publisher won't accept TeX document with
|
|
such-and-such macro packages. The situation changes as the package
|
|
gets more popular and proves its usefulness.
|
|
|
|
<!--===================================================================-->
|
|
<P> <hr> <P>
|
|
<center><H5>Copyright © 1998, Murray Adelman <BR>
|
|
Published in Issue 27 of <i>Linux Gazette</i>, April 1998</H5></center>
|
|
|
|
<!--===================================================================-->
|
|
<P> <hr> <P>
|
|
<A HREF="./index.html"><IMG ALIGN=BOTTOM SRC="../gx/indexnew.gif"
|
|
ALT="[ TABLE OF CONTENTS ]"></A>
|
|
<A HREF="../index.html"><IMG ALIGN=BOTTOM SRC="../gx/homenew.gif"
|
|
ALT="[ FRONT PAGE ]"></A>
|
|
<A HREF="./dibona.html"><IMG SRC="../gx/back2.gif"
|
|
ALT=" Back "></A>
|
|
<A HREF="./ayers1.html"><IMG SRC="../gx/fwd.gif" ALT=" Next "></A>
|
|
<P> <hr> <P>
|
|
|
|
<H4>
|
|
"Linux Gazette...<I>making Linux just a little more fun!</I>"
|
|
</H4>
|
|
|
|
<P> <HR> <P>
|
|
<!--===================================================================-->
|
|
|
|
<center><h1>Using the Flame Plug-In for Backgrounds</h1></center>
|
|
|
|
<center>
|
|
<h4>By <a href="mailto: layers@marktwain.net">Larry Ayers</a></h4>
|
|
</center>
|
|
<hr>
|
|
|
|
<center><h3>Introduction</h3></center>
|
|
|
|
<p>Lately I've happened upon a technique for making unobtrusive but pleasing
|
|
screen backgrounds using Scott Draves' <b>Flame</b> plug-in for the Gimp.
|
|
These backgrounds possess characteristics common to many fractal images,
|
|
especially those created with some variation of the Iterated Function Systems
|
|
(IFS) algorithms. They aren't symmetrical, but there is some mysterious
|
|
organizing principle which gives them a quasi-organic appearance, though they
|
|
don't really resemble any organic forms (on this planet, at least!). They
|
|
also can be reminiscent of microphotographs or scanning-electron-microscope
|
|
photographs.
|
|
|
|
<p>Before I outline the technique I've been using, here are some
|
|
examples of these tile-able images:<br>
|
|
|
|
<p>
|
|
<center><img alt="flame background #1" src="./gx/ayers/flame1.gif">
|
|
<img alt="flame background #2" src="./gx/ayers/flame2.gif">
|
|
</center>
|
|
|
|
<center><img alt="flame background #3" src="./gx/ayers/flame4.gif">
|
|
</center>
|
|
|
|
<hr>
|
|
<p>These images were originally 512x512 pixels but they have been reduced to
|
|
half size for faster loading. They are usable as backgrounds at this size but
|
|
are more detailed and interesting in the original size. I've also converted
|
|
them to GIF format (from JPEG) and reduced their color-usage. This has
|
|
degraded the images somewhat. Generate one from scratch to see the finely
|
|
detailed tracery which Flame can render.
|
|
|
|
<hr>
|
|
<center><h3>Procedure</h3></center>
|
|
|
|
<p>Before starting the Flame plug-in (in the <i>Filters->Render</i>
|
|
sub-menu) it's a good idea to first create a new blank image. It will appear
|
|
with the default white background; flood-filling it first with a background
|
|
color or pattern saves a lot of time later. After the Flame pattern has been
|
|
applied to the image it can be difficult to alter the background without
|
|
affecting the fractal portion of the image. Two layers could be used instead,
|
|
but this is intended to be a quick procedure. Any background image will
|
|
eventually become nearly unnoticeable after a while, so it's handy to have a
|
|
fast means of creating new and interesting ones.
|
|
|
|
<p>Once your background is satisfactory, select the Flame plug-in (a
|
|
screenshot of an earlier version of the interface is in one of my articles in
|
|
LG #24, <i>Updates and Correspondence </i>). The main window will display a
|
|
thumbnail image of a pattern rendered with random parameters and one of
|
|
several built-in color-maps. Controls in the window allow tweaking
|
|
several variables, such as position, zoom-level, and color-map. Click on the
|
|
<i>Shape Edit</i> button and a new window will appear with nine thumbnail
|
|
images, the center one being the original and the others variants of it.
|
|
Click on any of these (with the left mouse button) and it will become a parent
|
|
to eight new versions. There are several different types of mutations (such
|
|
as spherical, sinusoidal, or horseshoe) available from the <i>Variations</i>
|
|
menu. Though not immediately evident, clicking the right mouse button on any
|
|
of the nine selects it and it will take the place of the original image in the
|
|
main window when the "Ok" button is clicked, dismissing the Edit window.
|
|
|
|
<p>Make any adjustments in the main window, perhaps even returning to the Edit
|
|
window if necessary, before clicking the main window's "Ok" button; once this
|
|
is clicked there is no going back without starting all over. Though all of
|
|
Flame's thumbnails are displayed with a black background, the only part of the
|
|
rendering which is applied to the empty destination image is the foreground,
|
|
thus the need for the preparatory background filling described above.
|
|
|
|
<p>The <b>Make Seamless</b> plug-in (in the <i>Filters->Map</i> menu) isn't
|
|
suited for every sort of image, but these Flame-generated images usually tile
|
|
well. After saving the image in the format of your choice, try it out with
|
|
<kbd>xv -root -quit [filename]</kbd> on an empty desktop. Though there are
|
|
several utilities available which will load a random background image when X
|
|
starts up, my favorite set-up is to have a simple image or background color
|
|
load in my <kbd>.xinitrc</kbd>, then set up a window-manager sub-menu with a
|
|
few favorite tile-able images. Here is an example from my
|
|
<kbd>.fvwm2rc</kbd>:<br>
|
|
|
|
<pre><kbd>
|
|
AddToMenu Backgrounds "Backgrounds" Title
|
|
+ "Flame1" Exec exec xv -root -quit ~/.backgrounds/ft1.jpg
|
|
+ "Flame2" Exec exec xv -root -quit ~/.backgrounds/flt5.jpg
|
|
+ "Bluetile" Exec exec xv -root -quit ~/.backgrounds/bluetile.jpg
|
|
+ "Marble" Exec exec xv -root -quit ~/.backgrounds/marb2.jpg
|
|
|
|
</kbd></pre>
|
|
|
|
<p>Have fun!
|
|
|
|
<!--===================================================================-->
|
|
<P> <hr> <P>
|
|
<center><H5>Copyright © 1998, Larry Ayers <BR>
|
|
Published in Issue 27 of <i>Linux Gazette</i>, April 1998</H5></center>
|
|
|
|
<!--===================================================================-->
|
|
<P> <hr> <P>
|
|
<A HREF="./index.html"><IMG ALIGN=BOTTOM SRC="../gx/indexnew.gif"
|
|
ALT="[ TABLE OF CONTENTS ]"></A>
|
|
<A HREF="../index.html"><IMG ALIGN=BOTTOM SRC="../gx/homenew.gif"
|
|
ALT="[ FRONT PAGE ]"></A>
|
|
<A HREF="./adelman.html"><IMG SRC="../gx/back2.gif"
|
|
ALT=" Back "></A>
|
|
<A HREF="./ayers2.html"><IMG SRC="../gx/fwd.gif" ALT=" Next "></A>
|
|
<P> <hr> <P>
|
|
|
|
<H4>
|
|
"Linux Gazette...<I>making Linux just a little more fun!</I>"
|
|
</H4>
|
|
|
|
<P> <HR> <P>
|
|
<!--===================================================================-->
|
|
|
|
<center><h1>The Maxwell Word-Processor</h1></center>
|
|
|
|
<center>
|
|
<h4>By <a href="mailto: layers@marktwain.net">Larry Ayers</a></h4>
|
|
</center>
|
|
<hr>
|
|
|
|
<p>An interesting announcement was posted in late February to the
|
|
comp.os.linux.announce newsgroup concerning the free availability of a new
|
|
word-processor for Linux. It seems that the Maxwell word-processor had been
|
|
developed by a British software company, Tangent Data Limited, with the
|
|
intention of selling it as a commercial product, but for some reason the
|
|
project was scrapped and the company was wound up. The three programmers
|
|
involved (two of whom were partners in the firm) decided to release on the web
|
|
a statically-linked Motif binary package.
|
|
|
|
<p>I didn't really need a word-processor, but curiosity got the better of me,
|
|
especially since it was just a one-and-one-half megabyte download. It wasn't
|
|
hard to install (just unpack into /usr/local) but when I started it from an
|
|
rxvt window, many seconds went by, with no disk activity. Evidently the
|
|
license daemon is still automatically summoned, but since there isn't any
|
|
licensing to do it gets confused and hangs for a while before reluctantly
|
|
allowing the program to start. Finally a small control window appeared with a
|
|
button on it inviting me to "open a document window"; I tried, and the window
|
|
would appear for a fraction of a second before dying of terminal segmentation
|
|
fault. Oh, well...off to /dev/null with that one, but before consigning the
|
|
directory to oblivion, I noted the e-mail address to which comments and
|
|
bug-reports should be directed, and pasted the error-messages into an e-mail
|
|
message. Within a couple of hours I had a reply from Tom Newton, one of the
|
|
developers, in which he stated that they had received other, similar reports
|
|
from users with 16 bpp displays (which is what I use). That evening I
|
|
received another message, this one bcc-ed to what must have been quite a few
|
|
other Linux users who had written. It seems that so many people had tried to
|
|
download the Maxwell archive that the ISP was swamped, and requested that the
|
|
file be moved elsewhere. Before uploading it to Sunsite's incoming directory,
|
|
the developers fixed the 16-bpp bug. The message also hinted that the
|
|
application might end up GPL-ed, with full source available.
|
|
|
|
<p>So I tried it again, and this time it would successfully start up. The
|
|
document window is a typical Motif word-processor interface, with the usual
|
|
menu- and button- bars. Here's a screenshot:<br>
|
|
<p>
|
|
<center>
|
|
<img alt="Maxwell Document Window" src="./gx/ayers/max1.gif">
|
|
</center>
|
|
|
|
<hr>
|
|
|
|
<center><h3>Features and Limitations</h3></center>
|
|
|
|
<p>I use mostly free software, and one annoying trait I've noticed in many
|
|
commercial applications for Linux is the neglect of perfectly serviceable
|
|
utilities which are found on just about any Linux system. As an example, the
|
|
ispell program is an efficient and dependable spell-checker, easily
|
|
incorporated into other programs. Nonetheless many word-processors include
|
|
their own spell-checking dictionaries and routines, one reason for their bulk.
|
|
|
|
<p>Looking over the Maxwell files, I was interested to see that in the binary
|
|
directory there are only two real files, the main executable and the license
|
|
manager. The remainder of the files are symbolic links to <em>file</em>,
|
|
<em>grep</em>, <em>ghostscript</em>, <em>lpr</em>, and <em>ispell</em>.
|
|
Evidently the developers are familiar with Linux and saw no reason to
|
|
re-invent several wheels. I imagine the savings in work was a factor as well.
|
|
|
|
<p>The fonts are also represented by symlinks to a few of the fonts in the
|
|
/usr/X11R6/lib/X11/fonts/type1 directory, with each one accompanied by an .mfm
|
|
file, which stands for Maxwell Font Metrics. These files are automatically
|
|
generated by Maxwell when it starts up and finds new fonts or symlinks
|
|
installed. Adding new fonts isn't difficult (thanks to Tom Newton for this
|
|
information!); just symlink them from your usual font directory (often
|
|
<kbd>/usr/X11R6/lib/X11/fonts</kbd>) to
|
|
<kbd>/usr/local/maxwell/fonts/Type1</kbd> and add entries to the
|
|
<i>fonts.scale</i> and <i>fonts.dir</i> files in the same directory (these are
|
|
installed as symlinks, but don't have to be).
|
|
|
|
<p>Symlinks may have to be altered in order to enable the spellchecker. A
|
|
subdirectory, <kbd>/usr/local/maxwell/dict</kbd>, should be created if it
|
|
doesn't already exist, and the various <kbd>*.hash</kbd> files which <b>ispell
|
|
</b> uses should be symlinked there; these are often found in
|
|
<kbd>/usr/lib/ispell</kbd>. When this is correctly done a typical spell-check
|
|
window can be summoned.
|
|
|
|
<p>Maxwell saves files in its own binary format which is translated into
|
|
Postscript before being sent to the printer. I don't have a printer which
|
|
understands Postscript, but any print-filter which will call ghostscript with
|
|
the necessary switches should work; it does for me. A disadvantage to this
|
|
approach is that print quality will be dependent upon how well ghostscript
|
|
supports your printer. Rich Text Format (RTF) is also supported and these
|
|
files can be successfully loaded by WordPerfect. There seems to be quite a
|
|
clamor in the Linux newsgroups for a word-processor which can load and save
|
|
MS-Word format files, but Maxwell lacks this feature. The MS word-processors
|
|
do support RTF, so there is some potential for file interchange between MS
|
|
apps and Maxwell.
|
|
|
|
<p>At first I thought Maxwell used its own font-rendering routines rather than
|
|
the native X services, as scalable fonts are displayed on the screen free of
|
|
the jagginess X applications usually suffer from when non-bitmap fonts are
|
|
rendered. The rendering is better than this, but not quite as anti-aliased as
|
|
the Gimp's or Ghostscript's output. Tom Newton (in an e-mail message) stated
|
|
that Maxwell uses native X calls but small chunks of text are rendered
|
|
separately before the position of the next chunk is calculated.
|
|
|
|
<p>This is a worthwhile and notable feature; it has no effect on print quality
|
|
but makes for more readable text on-screen when using different font sizes.
|
|
|
|
<p>Some of the features, such as the table-creation facility and graphics
|
|
inclusion, need more work. Attempting to include a graphics file in a
|
|
document will cause Maxwell to crash if it is running on a 16 bpp
|
|
display. Tables can be included, but though the fields dynamically resize
|
|
themselves I didn't find any way to add padding or borders around fields.
|
|
|
|
<p>Basic page and character layout is handled much as in other
|
|
word-processors, with dialog-windows as well as menus and button-bars. In
|
|
short, most standard word-processor functions work well, something
|
|
which can't be said for the various free word-processor projects I've tried,
|
|
many of which have been seemingly abandoned. All but LyX, that is, but LyX is
|
|
<i>sui generis</i>.
|
|
|
|
<center><h3>Conclusion</h3></center>
|
|
|
|
<p>There has been a remarkable lack of public comment from the Linux community
|
|
concerning Maxwell, considering how often the plea for a free word-processor
|
|
is reiterated. I suspect that many people downloaded it, found that it
|
|
wouldn't (in the initial version) run on a 16 bpp display, and discarded it.
|
|
As I stated above, this has been remedied, and the current version is well
|
|
worth a try. If the source was released under the GPL I'm sure interest would
|
|
pick up and further enhancements would begin to appear.
|
|
|
|
<p>After much of this article was written a third release (version
|
|
0.5.2) was uploaded to
|
|
<a href="ftp://sunsite.unc.edu/pub/Linux/Incoming">Sunsite</a>. A few bugs
|
|
have been fixed, and the annoying and time-consuming license manager has been
|
|
removed, so the start-up is much quicker. According to Tom Newton, who has
|
|
been putting together these releases, this will be the final binary version;
|
|
if the source isn't released Maxwell will probably fade into obscurity.
|
|
|
|
<p>So what will Maxwell's eventual fate be? The two former partners in
|
|
Tangent Data own the rights and haven't decided what to do with it. A
|
|
possibility of GPL status has been mentioned which would be interesting and
|
|
useful to us all. One possibility would be to release source for the current
|
|
build and then sell plug-ins or modules which would add features such as
|
|
additional file-exchange filters. Support could be a fee-based service as
|
|
well. This approach is being developed for the Gimp by the new WilberWorks
|
|
company.
|
|
|
|
<p>Even if the source isn't made available Maxwell is usable in its current
|
|
state for basic word-processing, helping fill the gulf which currently exists
|
|
between text editors and the large and feature-laden applications such as
|
|
StarOffice, Applix, and WordPerfect.
|
|
|
|
<!--===================================================================-->
|
|
<P> <hr> <P>
|
|
<center><H5>Copyright © 1998, Larry Ayers <BR>
|
|
Published in Issue 27 of <i>Linux Gazette</i>, April 1998</H5></center>
|
|
|
|
<!--===================================================================-->
|
|
<P> <hr> <P>
|
|
<A HREF="./index.html"><IMG ALIGN=BOTTOM SRC="../gx/indexnew.gif"
|
|
ALT="[ TABLE OF CONTENTS ]"></A>
|
|
<A HREF="../index.html"><IMG ALIGN=BOTTOM SRC="../gx/homenew.gif"
|
|
ALT="[ FRONT PAGE ]"></A>
|
|
<A HREF="./ayers1.html"><IMG SRC="../gx/back2.gif"
|
|
ALT=" Back "></A>
|
|
<A HREF="./ayers3.html"><IMG SRC="../gx/fwd.gif" ALT=" Next "></A>
|
|
<P> <hr> <P>
|
|
|
|
<H4>
|
|
"Linux Gazette...<I>making Linux just a little more fun!</I>"
|
|
</H4>
|
|
|
|
<P> <HR> <P>
|
|
<!--===================================================================-->
|
|
|
|
<center><img alt="WordNet logo" src="./gx/ayers/wn.gif"></center>
|
|
<hr>
|
|
<center><h1>WordNet: A Fast and Flexible Word Database</h1></center>
|
|
|
|
<center>
|
|
<h4>By <a href="mailto: layers@marktwain.net">Larry Ayers</a></h4>
|
|
</center>
|
|
<hr>
|
|
|
|
<center><h3>Introduction</h3></center>
|
|
|
|
<p>There have been times when I've wished I had dictionary program with a
|
|
Linux interface. One of my favorite print dictionaries is the American
|
|
Heritage Dictionary, which I've used and appreciated for many years.
|
|
<a href="http://www.dux.com/ahdictux.html">Dux Software</a>
|
|
has been offering a Linux version of their computer interface to the
|
|
dictionary (combined with a thesaurus) for some time now, but I was deterred
|
|
by the $49.95 price-tag, considering the existence of a perfectly usable print
|
|
copy of the book, sitting on a shelf not six feet from where I'm typing this.
|
|
But there are powers which the computer-based dictionary possesses which can
|
|
be quite useful. A computer excels at searching for information in a
|
|
database, and combined with the power of regular expressions a digital
|
|
dictionary has significant advantages.
|
|
|
|
<p>The only free digital dictionary I've come across was an old edition of
|
|
Webster's, available from Project Gutenberg in the form of two large text
|
|
files. These could be searched for a word with <em>grep</em>, but I was
|
|
looking for something with an X interface; <em>grep</em> would also find
|
|
instances of words used within a definition, which would clutter up the
|
|
output. Of course there are on-line WWW dictionaries, which are fine for
|
|
people who are on-line most of the time. Users accessing the net via a
|
|
dial-up connection with an ISP are unlikely to be online while writing text
|
|
for which a dictionary would be needful. I happened across a usenet posting
|
|
recently which led me to to this <a
|
|
href="http://www.cogsci.princeton.edu/~wn/">site</a>, and before long I was
|
|
downloading a 13 mb. archive containing a dictionary/thesaurus called WordNet.
|
|
|
|
<center><h3>WordNet Basics</h3></center>
|
|
|
|
<p>The usenet announcement of the most recent WordNet release contained a
|
|
good description of the package:<br>
|
|
|
|
<blockquote>
|
|
WordNet is a powerful lexical reference system that combines aspects of
|
|
dictionaries and thesauri with current psycholinguistic theories of human
|
|
lexical memory. It is produced by the Cognitive Science Laboratory at
|
|
Princeton University, under the direction of Professor George Miller. In
|
|
WordNet, words are defined and grouped into various related sets of
|
|
synonyms. Not only is the system valuable to the casual user as a powerful
|
|
thesaurus and dictionary, but also to the researcher as one of the few
|
|
freely available, lexical databases. WordNet is available via an on-line
|
|
interface and also as easy-to-compile C source code for Unix.
|
|
</blockquote>
|
|
|
|
<p>WordNet consists of interlinked databases of words, synonyms, antonyms,
|
|
and usage examples. In the best unix tradition, this data can be manually
|
|
accessed via the command-line. This makes it relatively easy to create
|
|
script-based interfaces which can simplify the usage of the tool and provide a
|
|
windowed, menu-driven front-end. The distribution contains the source code
|
|
for the basic utilities and a Tcl/Tk interface, as well as statically linked
|
|
binaries and the database files.
|
|
|
|
<p>One difference between WordNet and a traditional dictionary is the lack of
|
|
etymologies, a feature typically used much less often than the simple display
|
|
of meaning and syntax. The inclusion of thesaurus-like features more than
|
|
makes up for this lack.
|
|
|
|
<p>A full WordNet installation, consisting of the data-files and the
|
|
command-line and statically-linked executables, occupies more than thirty
|
|
megabytes of disk space. This is an ideal job for the
|
|
<a href="http://www.netspace.net.au/~reiter/e2compr">e2compr</a>
|
|
kernel-level transparent file-compression system; I compressed the database
|
|
directory and reduced it from thirty megabytes to eleven and one-half, with no
|
|
noticeable speed penalty. See LG #18 (June 1997) for an introduction to
|
|
<b>e2compr</b>.
|
|
|
|
<center><h3>Examples</h3></center>
|
|
|
|
<p>Here are a few examples of command-line use of WordNet:<br>
|
|
|
|
<p><kbd><pre>%->wn gazette -over
|
|
Overview of noun gazette
|
|
|
|
The noun gazette has 1 sense (no senses from tagged texts)
|
|
|
|
1. gazette -- (a newspaper)
|
|
|
|
Overview of verb gazette
|
|
|
|
The verb gazette has 1 sense (no senses from tagged texts)
|
|
|
|
1. gazette -- (publish in a gazette)</pre></kbd>
|
|
|
|
<p><b>wn</b> is the command-line search tool, and the switch <b>-over</b>
|
|
shows an overview of meaning and parts of speech the word can have.
|
|
|
|
<p><kbd><pre>%->wn gaz -grepn
|
|
|
|
Grep of noun gaz
|
|
gaza strip
|
|
gazania
|
|
gazania rigens
|
|
gaze
|
|
gazebo
|
|
gazella
|
|
gazella subgutturosa
|
|
gazella thomsoni
|
|
gazelle
|
|
gazelle hound
|
|
gazette
|
|
gazetteer
|
|
</pre></kbd>
|
|
|
|
<p>The switch <b>-grepn</b> searches the noun database for any noun containing
|
|
the string <i>gaz</i>; there are variants of this switch: <b>-grepv</b>,
|
|
<b>-grepa</b>, and <b>-grepr</b>, which respectively search for verbs,
|
|
adjectives, and adverbs. The various <b>grep</b> switches can be used to
|
|
determine the correct spelling of a word when you are certain of the spelling
|
|
of only a syllable or portion of the word.
|
|
|
|
<p><pre><kbd>
|
|
%->wn quell -framv
|
|
|
|
Sample Sentences of verb quell
|
|
|
|
2 senses of quell
|
|
|
|
Sense 1
|
|
squelch, quell
|
|
*> Somebody ----s something
|
|
|
|
Sense 2
|
|
quell, stay, appease
|
|
*> Something ----s
|
|
*> Something ----s somebody
|
|
</kbd></pre>
|
|
|
|
<p>The <b>-framv</b> switch used above shows how the word is used in
|
|
sentences.
|
|
|
|
<p><pre><kbd>
|
|
%->wn quell -simsv
|
|
|
|
Synonyms (Grouped by Similarity of Meaning) of verb quell
|
|
|
|
Sense 1
|
|
squelch, quell
|
|
=> suppress, stamp down, inhibit, subdue, conquer, curb
|
|
--------------
|
|
|
|
Sense 2
|
|
quell, stay, appease
|
|
=> meet, satisfy, fill, fulfill
|
|
--------------
|
|
</kbd></pre>
|
|
|
|
<p>The <b>-simsv</b> switch shows verb synonyms, and a variant <b>-simsn</b>
|
|
lists the noun synonyms of a word.There are a plethora of other <b>wn</b>
|
|
switches for finding antonyms, homonyms, and several other more obscure
|
|
lexical types, many of which have easier-to-use equivalents in the Tcl/Tk
|
|
windowed interface, <b>wnb</b>, which stands for WordNet Browser.
|
|
|
|
<center><h3>Using The Browser</h3></center>
|
|
|
|
<p>Here are screenshots of the browser window and a subsidiary sub-string
|
|
window, which takes the place of the <b>-grep[nvar]</b> switches used with
|
|
<b>wn</b>.<br>
|
|
|
|
<p><img alt="Main wnb window" src="./gx/ayers/wnb.gif">
|
|
|
|
<p><img alt="Substring (grep) window" src="./gx/ayers/grep.gif">
|
|
|
|
<p>This is a convenient and easy-to-use interface, with all functions
|
|
available from the menus. The output, though, isn't wrapped to fit the
|
|
screen, so to avoid having to scroll sideways to see it all the window should
|
|
be resized so that it is wider horizontally. You might be tempted (as I was)
|
|
to try compiling the source code, so that the <b>wnb</b> executable will use
|
|
your own Tcl/Tk libraries rather than the bulky statically-linked
|
|
libraries compiled into the supplied executable file. Unless you happen to
|
|
have the particular patch-level of Tcl-7.6 and Tk-4.2 which the source needs,
|
|
it probably won't compile (at least it wouldn't for me). If the <b>wnb</b>
|
|
interface was just a Tk script, it wouldn't be a big job to modify it so that
|
|
it uses a particular Tcl/Tk installation, but <b>wnb</b> has its own
|
|
specialized wish interpreter, which complicates updating the source for a
|
|
newer version of Tcl/Tk. Since the supplied Tcl/Tk interface is just a
|
|
convenient way of viewing the output from <b>wn</b>, perhaps a GTK, Qt, or
|
|
Emacs-LISP interface could be coded; this would make a welcome addition to the
|
|
KDE and GNOME projects. I've found that a handy way to run <b>wn</b> is in a
|
|
separate wide-and-short XEmacs shell-buffer frame.
|
|
|
|
<center><h3>Documentation and License Issues</h3></center>
|
|
|
|
<p>The documentation supplied with the distribution is complete and clearly
|
|
written; it's all an end-user should need. HTML, Postscript, and man-page
|
|
formats are included to cater to various reading preferences. If you are
|
|
curious about the psycholinguistic theoretical underpinnings of the project, a
|
|
Postscript file (5papers.ps) is available from the web-site.
|
|
|
|
<p>While writing this article I happened to be paging through the introductory
|
|
essays in the American Heritage dictionary. One of these essays was written
|
|
by one of the linguists responsible for the work which inspired the WordNet
|
|
project, Henry Kucera. It's called <cite>Computers in Language Analysis and
|
|
Lexicography</cite>, and it's a more general (though dated) overview of
|
|
psycholinguistics than the above mentioned collection of papers. If you're
|
|
wondering just what in the world the "Browne Corpus" is (mentioned on the
|
|
WordNet web-site), this essay explains it clearly.
|
|
|
|
<p>WordNet isn't licensed under the GPL, but the license isn't very
|
|
restrictive at all. The utilities and programs needed to create the word
|
|
databases are not distributed, but the supplied files are sufficient for most
|
|
needs.
|
|
|
|
<center><h3>FTP Sites</h3></center>
|
|
|
|
<p>WordNet can be obtained from its home
|
|
<a href="ftp://ftp.cogsci.princeton.edu/pub/wordnet">site</a>, but this is a
|
|
really slow site, and I had better luck obtaining the archive from this
|
|
<a href="ftp://ftp.ims.uni-stuttgart.de/pub/WordNet">mirror</a> site in
|
|
Germany. As useful as this package is, it really should be mirrored
|
|
elsewhere as well.
|
|
|
|
|
|
<!--===================================================================-->
|
|
<P> <hr> <P>
|
|
<center><H5>Copyright © 1998, Larry Ayers <BR>
|
|
Published in Issue 27 of <i>Linux Gazette</i>, April 1998</H5></center>
|
|
|
|
<!--===================================================================-->
|
|
<P> <hr> <P>
|
|
<A HREF="./index.html"><IMG ALIGN=BOTTOM SRC="../gx/indexnew.gif"
|
|
ALT="[ TABLE OF CONTENTS ]"></A>
|
|
<A HREF="../index.html"><IMG ALIGN=BOTTOM SRC="../gx/homenew.gif"
|
|
ALT="[ FRONT PAGE ]"></A>
|
|
<A HREF="./ayers2.html"><IMG SRC="../gx/back2.gif"
|
|
ALT=" Back "></A>
|
|
<A HREF="./ayers4.html"><IMG SRC="../gx/fwd.gif" ALT=" Next "></A>
|
|
<P> <hr> <P>
|
|
|
|
<H4>
|
|
"Linux Gazette...<I>making Linux just a little more fun!</I>"
|
|
</H4>
|
|
|
|
<P> <HR> <P>
|
|
<!--===================================================================-->
|
|
|
|
<center><h1>Words Within Words, New Phrases From Old</h1></center>
|
|
|
|
<center>
|
|
<h4>By <a href="mailto: layers@marktwain.net">Larry Ayers</a></h4>
|
|
</center>
|
|
<hr>
|
|
|
|
<center><h3>Introduction</h3></center>
|
|
|
|
<p>Sometimes after a long stint of putting words together it can be amusing
|
|
and relaxing to play with them for a while. Recently I discovered an anagram
|
|
search program for Linux which has some interesting capabilities not found in
|
|
other anagram programs I've seen. I'll also discuss an XEmacs mode called
|
|
Conx which does much the same sort of transformation on sentences or blocks of
|
|
text.
|
|
|
|
<center><h3>agm and xagm</h3></center>
|
|
|
|
<p>Fraser McCrossan is the author of <b>agm</b> and its Tcl/Tk interface
|
|
<b>xagm</b>. Like WordNet's <b>wn</b> (reviewed elsewhere in this issue)
|
|
<b>agm</b> is a command-line program, with <b>xagm</b> displaying its output
|
|
in an X window. I appreciate programs with this sort of dual nature because
|
|
they tend to be more portable. If Tcl/Tk isn't available the output could be
|
|
formatted and displayed using another GUI toolkit, or simply used as a console
|
|
program.
|
|
|
|
<p>I found this release (1.3.1) of <b>agm</b> in Sunsite's incoming directory,
|
|
but the archive was truncated. The included sample dictionary file was
|
|
incomplete, but this file isn't needed to use the program (a corrected version
|
|
was later uploaded which contains the complete dictionary file). Agm has the
|
|
useful ability to make use of any text file as a source of words, and if you
|
|
have <b>ispell</b> installed the dictionary file (in /usr/dict or
|
|
/usr/lib/ispell) can be a good collection of words for <b>agm</b>. Just
|
|
symlink it to <kbd>/usr/local/lib/words</kbd>. Several files can be
|
|
concatenated on the command line and used simultaneously; the (incomplete)
|
|
included dictionary file was created by combining several Project Gutenberg
|
|
files, including a 1913 edition of Webster's Dictionary, a Shakespeare play, a
|
|
couple of Mark Twain's works, the Jargon File, and three thesauri. This can
|
|
be done temporarily, i.e. for a single search, or a new word file can be
|
|
created; the default location is shown above, but this can be changed in the
|
|
Makefile. The ability to select input files would be especially useful for
|
|
non-English-speaking users.
|
|
|
|
<p>Here are screenshots of two <b>xagm</b> windows:<br>
|
|
<p>
|
|
<img alt="Main agm window" src="./gx/ayers/agm.gif">
|
|
<p>
|
|
<img alt="agm's output window" src="./gx/ayers/agm_out.gif">
|
|
<hr>
|
|
|
|
<p>A simple anagram search just takes a couple of seconds, but the time needed
|
|
grows exponentially as the input words or phrases grow longer.
|
|
Luckily there is an abort button in the Tcl version, and of course a
|
|
command-line <b>agm</b> search can be aborted with <kbd>control-c</kbd>.
|
|
Restricting the number of words in the output anagrams speeds the process up
|
|
considerably, as there are so many combinations with multiple
|
|
two-and-three-letter words. These anagrams tend to be less interesting, so a
|
|
search with the switch <b>-c2</b> is a good choice to start with.
|
|
|
|
<p>The supplied man-page will tell you everything you need to know and more
|
|
about <b>agm</b>, but the Tcl/Tk <b>xagm</b> interface is easy enough to use
|
|
that the man-page shouldn't even be needed unless you want to compile a custom
|
|
word-list. You might want to take a look at the <b>xagm</b> script and make
|
|
sure the first line points to your preferred Tk <i>wish</i> interpreter.
|
|
|
|
<p>The only source I know of for the program is the Sunsite
|
|
<a href="ftp://sunsite.unc.edu/pub/Linux/Incoming">incoming</a> directory; the
|
|
filename is <b>agm-1.3.1.tar.gz</b>. It will be moved eventually but shouldn't
|
|
be too hard to find.
|
|
|
|
<hr>
|
|
|
|
<center><h3>Conx-ing Text</h3></center>
|
|
|
|
<p>Buried in one of the directories of LISP files in any XEmacs installation
|
|
is an odd and interesting word amusement called Conx. Based on an earlier
|
|
implementation by Skef Wholey, Conx was rewritten in Emacs Lisp by Jamie
|
|
Zawinski in 1991, and was last modified in 1994.
|
|
|
|
<p>Conx is similar to the older Emacs mode Dissociated Press (accessed with
|
|
the command <kbd>alt-x dissociated-press</kbd>). Dissociated Press acts on
|
|
the current buffer, scrambling words and sentences to produce odd and
|
|
sometimes humorous juxtapositions. Conx-mode takes this concept further,
|
|
allowing a series of either selected regions or entire files to be loaded into
|
|
a sort of word database, then releasing scrambled output into an ever-growing
|
|
buffer; the process is terminated with <kbd>Control-g</kbd>.
|
|
|
|
<p>There are just a few commands for controlling this mode:<br>
|
|
|
|
<ul>
|
|
<li><kbd>alt-x conx-region</kbd> reads a selected area into the
|
|
database
|
|
<li><kbd>alt-x conx-buffer</kbd> reads in an entire buffer (these
|
|
commands are cumulative when repeated)
|
|
<li><kbd>alt-x conx-init</kbd> clears the database for a fresh
|
|
start
|
|
<li><kbd>alt-x conx</kbd> begins the conx process, outputting
|
|
scrambled text
|
|
into a new temporary buffer
|
|
<li><kbd>alt-x conx-save</kbd> saves the current database to a
|
|
file
|
|
<li><kbd>alt-x conx-load</kbd> reads a saved database, which is
|
|
faster than starting from scratch with the same text.
|
|
</ul>
|
|
|
|
<p>Conx-mode reminds me of the novelist William Burroughs' "scissors and
|
|
paste" method of combining text from various sources; he used this technique
|
|
in some of his published works. Semi-random text generation can be useful as
|
|
well as amusing. Sometimes it can help lift you out of verbal ruts and
|
|
provide a new view of familiar text and usage.
|
|
|
|
<p>In conclusion, here is an example of conx-mode applied to several
|
|
paragraphs from two sources: Sir Thomas Browne's seventeenth-century work
|
|
<cite>Religio Medici</cite> and Mark Twain's <cite>Huckleberry Finn</cite>.
|
|
|
|
<blockquote>Place where a hair ball would belch a community. Schism,
|
|
lonesomeness. Men away all the bullfrogs councils, and riddles of Tertullian.
|
|
Hurry, sparks was the sandy bottom where truth, to t'other side of the
|
|
cottonwoods and an old man hove a mile of one single heresy it to confirm and
|
|
an article to know by trade. Tar and cool and things we paddled over again
|
|
meant morning about knee deep, and confirmed opinion of the rule of the
|
|
church, or another, time. Pagans first cast at a spelling book. </blockquote>
|
|
|
|
<!--===================================================================-->
|
|
<P> <hr> <P>
|
|
<center><H5>Copyright © 1998, Larry Ayers <BR>
|
|
Published in Issue 27 of <i>Linux Gazette</i>, April 1998</H5></center>
|
|
|
|
<!--===================================================================-->
|
|
<P> <hr> <P>
|
|
<A HREF="./index.html"><IMG ALIGN=BOTTOM SRC="../gx/indexnew.gif"
|
|
ALT="[ TABLE OF CONTENTS ]"></A>
|
|
<A HREF="../index.html"><IMG ALIGN=BOTTOM SRC="../gx/homenew.gif"
|
|
ALT="[ FRONT PAGE ]"></A>
|
|
<A HREF="./ayers3.html"><IMG SRC="../gx/back2.gif"
|
|
ALT=" Back "></A>
|
|
<A HREF="./ayers5.html"><IMG SRC="../gx/fwd.gif" ALT=" Next "></A>
|
|
<P> <hr> <P>
|
|
|
|
<H4>
|
|
"Linux Gazette...<I>making Linux just a little more fun!</I>"
|
|
</H4>
|
|
|
|
<P> <HR> <P>
|
|
<!--===================================================================-->
|
|
|
|
<center><h1>Comparing WordPerfect and LyX</h1></center>
|
|
|
|
<center>
|
|
<h4><a href="mailto: layers@marktwain.net">by Larry Ayers</a></h4>
|
|
</center>
|
|
<hr>
|
|
|
|
<center><h3>Introduction</h3></center>
|
|
|
|
<p>Some months ago I bought a copy of SDCorp's Linux port of Corel's
|
|
WordPerfect 7, and have spent a fair amount of time learning to use it; during
|
|
the same time-period I have also been using various pre-beta releases of LyX
|
|
0.11, and more recently the new 0.12 release. In this article I will attempt
|
|
to compare the two pieces of software, both of which are intended to produce
|
|
high-quality printed documents, but which have such radically different
|
|
methods of accomplishing this task. It's not quite an apples-and-oranges
|
|
comparison, but approaches that state.
|
|
|
|
<center><h3>WordPerfect 7</h3></center>
|
|
|
|
<p>The WordPerfect Corporation is now owned by the Canadian firm Corel, but
|
|
a group of former WordPerfect programmers and other employees in Utah
|
|
(WordPerfect's former home) have formed a company called SDCorp. This company
|
|
has ported WordPerfect 7 to Linux and other unix variants, and have made the
|
|
port available as a downloadable demo (see their
|
|
<a href="http://www.sdcorp.com/wplinux">web-site</a>); the program is also
|
|
available on CDROM. The demo can be registered by purchasing an e-mailable
|
|
key-file.
|
|
|
|
<p>A few years ago WordPerfect was one of the most popular word-processors
|
|
available, first under DOS then later in Windows versions. It still possesses
|
|
a significant user-base, but it has been losing ground recently to the
|
|
ubiquitous Microsoft Word word-processors. Any text-processing system which
|
|
uses a proprietary document format is reliant upon either other users making
|
|
use of the same format or the availability of high-quality document filters
|
|
for translating documents into other formats. Microsoft has made this
|
|
situation more difficult by continually "upgrading" their Word format in a
|
|
more-or-less backwards-incompatible fashion, forcing other software firms to
|
|
rewrite their document filters.
|
|
|
|
<p>WP occupies an increasingly rare niche in the text-processing world, as
|
|
it's a full-featured word-processor but isn't one component of a massive
|
|
"suite" of related programs, such as MS-Word, Applix, and StarOffice (at least
|
|
in the Linux version; the Windows version is sold as a suite component). This
|
|
has advantages and disadvantages. On the plus side you don't have to bother
|
|
with making room for components which you might not need, and the tendency
|
|
towards bloat is lessened. On the other hand, some users like the
|
|
interoperability of a suite's components, and disk space is cheap these days.
|
|
If you want a word-processor which is quick to start up, can print well on
|
|
most printers (including inexpensive dot-matrix machines), and does a good job
|
|
with included graphics files, WordPerfect is a good choice. Of course, the
|
|
price is a sticking point for Linux users accustomed to high quality free
|
|
software. What you get for the money is a wide variety of good printer
|
|
drivers, many input and output filters for different document formats, easy
|
|
graphics inclusion, and a time-tested interface and document-processing
|
|
engine. This word-processor is also less memory-hungry than some competing
|
|
products, requiring roughly the same resources as does GNU Emacs.
|
|
|
|
<p>One reason for WordPerfect's popularity is the "reveal codes" feature,
|
|
which shows an editable view of the current file with the internal formatting
|
|
codes visible. This gives the user more control of the underlying
|
|
text-processing, comparable to but not as extensive as the flexibility LaTeX
|
|
tagging allows.
|
|
|
|
<p>WordPerfect has its own documentation browser, complete with a handy
|
|
topic-search utility. Unfortunately the help is nowhere near as complete and
|
|
detailed as the exhaustive hardcopy manuals which used to be included with the
|
|
DOS versions.
|
|
|
|
<p>Making new fonts available to WordPerfect isn't immediately intuitive;
|
|
there is a separate program called <b>xwpfi</b> in the <i>/shbin10</i>
|
|
directory which facilitates this process. Rod Smith has written an
|
|
informative series of web-pages which contain useful techniques for dealing
|
|
with WordPerfect and fonts; they are available at
|
|
<a href="http://www.users.fast.net/~rodsmith/wpfonts.html">this site</a>.
|
|
|
|
<p>The April 1998 issue of the Linux Journal has a quite favorable review of
|
|
WordPerfect written by Michael Shappe. Since that review was written the
|
|
retail price has been reduced, and there is a fifty dollar discount if you
|
|
have an old version of WordPerfect or a registered copy of any of several
|
|
competing products. Incidentally, I've never noticed the slight keyboard lag
|
|
Michael Shappe mentions in his review; my hardware is roughly equivalent to
|
|
his, but for me WordPerfect keeps up with typing as well any text editor under
|
|
X. He did mention that his test machine is a laptop, so the difference in
|
|
video drivers and screen type may have something to do with his slow response.
|
|
|
|
<p>SDCorp has recently announced student pricing as well, which brings
|
|
the price ($59.00) closer to those of some competing products.
|
|
|
|
<center><h3>LyX</h3></center>
|
|
|
|
<p>From the free (or open-source) software world comes a different sort of
|
|
program with similar purposes. Lyx makes no attempt to display the exact
|
|
appearance of the document, just a version which is readable and looks good on
|
|
the screen. Rather then WYSIWYG (what you see is what you get) the developers
|
|
describe it as WYSIWYM (what you see is what you mean). The major difference
|
|
is the reliance upon a configured LaTeX installation. A typical TeTex
|
|
installation (the flavor of LaTeX supplied with both Redhat and Debian)
|
|
occupies about thirty megabytes of disk-space (add another five to six mb. for
|
|
LyX), while a WordPerfect installation needs over seventy. So a LyX
|
|
installation is really more compact, but some people are put off by the
|
|
reliance upon LaTeX, as it has a reputation of being abstruse, suited to
|
|
academics rather than to ordinary people desiring to compose and print out
|
|
nicely-formatted documents. One of the design goals of LyX is to shield the
|
|
user from needing to know too much about LaTeX and how it works, though
|
|
provision is made for users who would like to include LaTeX commands directly.
|
|
|
|
<p>LaTeX users often edit their marked-up text in a text editor (Emacs with
|
|
AucTeX is popular), leaving either xdvi or a Postscript previewer such as gv
|
|
or ghostscript running so that an updated view of the formatted document can
|
|
be viewed at will. This also works well with LyX, though it will seem to be a
|
|
cumbersome approach to users accustomed to the single document view of a
|
|
standard word-processor. Using LyX I more often don't view the formatted
|
|
document until a late draft, as the LyX-formatted view, though not identical
|
|
to the printed output, is close enough for writing purposes.
|
|
|
|
<p>If you have previously tried the last beta release, 0.10.7, 0.12 will come
|
|
as a pleasant surprise. After dozens of developer's releases in the past year
|
|
many bugs have been dealt with (and new features added), but even more
|
|
significant from a new user's perspective is the greatly improved
|
|
documentation. Several levels of help and introductory document files are
|
|
included, ranging from very basic (intended for people who have no experience
|
|
with LaTeX) to an exhaustively complete reference manual. Midway is the very
|
|
well-done User's Guide, which helped me get up to speed quickly. All of the
|
|
documentation is available from the menu-bar. Naturally (since LyX is still
|
|
in beta) some of the documentation is still incomplete, but in its current
|
|
state it is superior to much of the commercial software documentation I'm
|
|
familiar with.
|
|
|
|
<p>An interesting site-specific document is generated during installation and
|
|
is subsequently available from the help-menu. It's called
|
|
<b>LatexConfig.lyx</b>; it consists of an inventory of LaTeX packages found on
|
|
your system along with pointers for obtaining useful packages which may be
|
|
lacking.
|
|
|
|
<p>LaTeX (and thus LyX) is unparalleled in its handling of documents with
|
|
complex structure, dynamically keeping track of section numbers, footnotes,
|
|
and references even in book-length documents. WordPerfect's abilities in this
|
|
area are sufficient for most needs, but lack some of the dynamic updating LyX
|
|
is capable of.
|
|
|
|
<p>Though most non-academic users have little use for accurate rendering of
|
|
mathematical equations, LyX provides an easy-to-use and convenient interface
|
|
to LaTeX's mathematical modes. WordPerfect includes an Equation Editor which
|
|
can do most of what LyX can, but it's much less intuitive. I was able to
|
|
enter equations into a LyX document without reading the manual, whereas
|
|
WordPerfect's interface is cryptic, and it seems some study of the
|
|
documentation would be necessary to get very far with it.
|
|
|
|
<p>Many LaTeX users are still a little irked that while LyX can convert its
|
|
internal format to usable LaTeX, converting an existing LaTeX document still
|
|
isn't supported. Included with the LyX source (though not with binary
|
|
distributions) is a Perl script which can do limited conversion from LaTeX to
|
|
LyX. It doesn't work with all documents, but might be worth a try. This sort
|
|
of conversion is planned for a future version of LyX, along with compile-time
|
|
user-interface toolkit configurability. In other words, LyX could be compiled
|
|
with either the current XForms toolkit, GTK, Qt, or perhaps Motif. There have
|
|
been numerous complaints about the appearance and usability of the XForms
|
|
widget-set, with which LyX has been developed; personally I don't think it all
|
|
that objectionable, but being able to choose would still be welcome.
|
|
|
|
<p>Recently Matthias Ettrich, who started the LyX project a couple of years
|
|
ago, impulsively (along with one of the main KDE developers) ported LyX to
|
|
KDE, using the Qt tool-kit. Strictly speaking, there was nothing wrong with
|
|
doing this, as the source for LyX is free. But some of the other LyX
|
|
developers were unhappy about this, as it raised the possibility of a fork in
|
|
the development, and they were informed about this port after the fact. The
|
|
source for the Qt LyX port is available from <a href="ftp://ftp.kde.org">the
|
|
main KDE site</a>; it wouldn't compile for me, but you may have better
|
|
luck (for some reason, I've never been able to compile the KDE stuff). After
|
|
a few more beta source releases binaries of KLyX will be made available.
|
|
|
|
<center><h3>Conclusion</h3></center>
|
|
|
|
<p>These are both high-quality packages, but if either of my two teen-age kids
|
|
needs to type something for school I'll steer them towards WordPerfect. It
|
|
can be immediately be used by someone familiar with MS word-processors. LyX
|
|
has a little more of a learning curve, and its dependence on a working TeX
|
|
installation is often seen as a drawback by those unfamiliar with TeX. Any
|
|
up-to-date Linux distribution includes configured TeX packages which are easy
|
|
to install. LyX has the advantage of using a more portable document format;
|
|
files saved as LaTeX source can be edited in any text editor. It's also free,
|
|
and under active development.
|
|
|
|
<p>Since the initial release of WP 7 for Linux there have been no bug-fixes,
|
|
either as revised binaries or patches (that I know of). I imagine the
|
|
resources devoted to working on the SDCorp port hinge on the quantity of
|
|
copies sold. I wonder just how many licenses have been sold; in the free
|
|
software world, program enhancements and bug-fixes tend to be proportional to
|
|
the number of users and user/developers. Commercial software doubtless is
|
|
affected in similar ways.
|
|
|
|
<p>In my case, I've been able to get higher-quality printed output with WP
|
|
than with LyX, but the reverse is probably true for users with different
|
|
printers. Luckily the demo of WordPerfect will let you determine just how
|
|
well the appropriate printer driver works with a specific system. Rod Smith's
|
|
above-mentioned web-pages are an invaluable reference for setting up printers
|
|
and fonts for WP, while the LyX documentation contains a good overview of
|
|
configuring Ghostscript and dvips for use with LyX. It's not necessarily an
|
|
either-or situation; I like having both programs available, as they each have
|
|
their strengths.
|
|
|
|
<!--===================================================================-->
|
|
<P> <hr> <P>
|
|
<center><H5>Copyright © 1998, Larry Ayers <BR>
|
|
Published in Issue 27 of <i>Linux Gazette</i>, April 1998</H5></center>
|
|
|
|
<!--===================================================================-->
|
|
<P> <hr> <P>
|
|
<A HREF="./index.html"><IMG ALIGN=BOTTOM SRC="../gx/indexnew.gif"
|
|
ALT="[ TABLE OF CONTENTS ]"></A>
|
|
<A HREF="../index.html"><IMG ALIGN=BOTTOM SRC="../gx/homenew.gif"
|
|
ALT="[ FRONT PAGE ]"></A>
|
|
<A HREF="./ayers4.html"><IMG SRC="../gx/back2.gif"
|
|
ALT=" Back "></A>
|
|
<A HREF="./mueller.html"><IMG SRC="../gx/fwd.gif" ALT=" Next "></A>
|
|
<P> <hr> <P>
|
|
|
|
<H4>
|
|
"Linux Gazette...<I>making Linux just a little more fun!</I>"
|
|
</H4>
|
|
|
|
<P> <HR> <P>
|
|
<!--===================================================================-->
|
|
|
|
<center>
|
|
<H2>Pattern Matching with Regular Expressions in C++</H2>
|
|
<H4>By <a href="mailto:ogmueller@t-online.de">Oliver Müller</a></H4>
|
|
</center>
|
|
<P> <HR> <P>
|
|
|
|
Regular expressions are the most flexible way to search for text
|
|
patterns. Since over twenty years they were used in several Unix tools
|
|
and utilities such as grep, sed, or awk. This article guides you to
|
|
implement this Unix base search technique in C++.
|
|
<P>
|
|
Everybody who has worked with a Unix system knows the useful regular
|
|
expressions. You find them in grep, awk, or emacs for example and they
|
|
are the most flexible way to specify search patterns. Everybody who has
|
|
ever used a tool like grep wants never miss its flexibility--or is there
|
|
anybody who wants?
|
|
<P>
|
|
The great usability of search tools such as grep is a result of regular
|
|
expressions. Remove these pattern matching technique from grep, substitute
|
|
it by another search algorithm, e.g., Boyer-Moore, and the resulting tool
|
|
is a toy--a fast toy, but a toy! (Do you know a DOS tool called <B>find</B>
|
|
which is a result like this...)
|
|
<P>
|
|
But joking apart. Pattern matching with regular expressions is the basis
|
|
of many search algorithms in many tools under Unix and so under Linux,
|
|
too. The power of this search technique is undisputed.
|
|
<P>
|
|
The target of this article shall be the implementation of regular
|
|
expressions in a reusable C++ class. This article shall be your guide
|
|
and introduction to the fascinating world of "pattern matching".
|
|
<P>
|
|
<H4>Principles</H4>
|
|
<P>
|
|
First of all a few principles about pattern matching with regular
|
|
expressions.
|
|
<P>
|
|
To specify a pattern you have to use a computer processable notation. This
|
|
notation, or language, is in our case the regular expression syntax.
|
|
<P>
|
|
The regular expression language consists of symbols and operators. The
|
|
symbols are simply the characters of the pattern. To describe the
|
|
relations between this symbols the following operators are used (listed
|
|
in descending priority):
|
|
<ul>
|
|
<li>Closure: A string of equal symbols
|
|
with variable length or an optional symbol. (This is the true heart of
|
|
pattern matching.)
|
|
<li>Concatenation: If there are two symbols in the
|
|
pattern successive, the corresponding characters in the text will have
|
|
to be successive, too.
|
|
<li>Alternation: One of the alternative symbols
|
|
must occur in the text in which the pattern is searched.
|
|
</ul>
|
|
In addition to these left associative operators brackets can be used to
|
|
modify the operation priorities.
|
|
<P>
|
|
The closure operators in most regular expression implementations
|
|
are:
|
|
<ul>
|
|
<li>the asterisk (*) which means a repetition of zero or more
|
|
occurrences of a symbol
|
|
<li>the plus (+) which means a repetition of one or
|
|
more occurrences of a symbol the question mark
|
|
<li>(?) which means a optional occurrence of a symbol
|
|
</ul>
|
|
Examples: A* matches empty string, "A", "AA",
|
|
"AAA", etc. A+ matches "A",
|
|
"AA", "AAA", etc. A? matches empty string or
|
|
"A".
|
|
<P>
|
|
To specify a concatenation no special operator character must be used. A
|
|
string consisting of each other following symbols are a concatenation. ABC
|
|
matches "ABC" for example.
|
|
<P>
|
|
An alternation is described with a "|" between the alternative
|
|
regular expressions. A|B matches either "A" or "B".
|
|
<P>
|
|
In extended regular expression implementations a few other operators used
|
|
to describe complex patterns more efficient. But this article shall be
|
|
only a little introduction into the syntactical possibilities and not
|
|
a detailed reference.
|
|
<P>
|
|
<H4>The Automaton</H4>
|
|
<P>
|
|
To search for a pattern which is specified by a regular expression you
|
|
cannot compare each character of the pattern and the text. Caused by the
|
|
closure and the alternation there are so many possible ways in complex
|
|
patterns that they cannot all proved by a "conventional" algorithm.
|
|
A more efficient technique must be applied. The best way is to build
|
|
and simulate an automaton for the pattern. To describe a search pattern
|
|
specified by a regular expression you can use non-deterministic or
|
|
deterministic finite state automata.
|
|
<P>
|
|
An automaton can assume several states. It can pass from one state into
|
|
an other depending on a specific input event which is in our case the
|
|
next input symbol respectively character. And here is the difference
|
|
between deterministic and non-deterministic finite state automata. A
|
|
deterministic automaton has only <B>one</B> next state for a specific
|
|
input symbol. A non-deterministic automaton can have <B>several</B>
|
|
next states for the same input symbol.
|
|
<P>
|
|
Both kinds of automata can be used for every imaginable regular
|
|
expression. The two types of automata have there own advantages
|
|
and disadvantages. For everybody who wants to know more about these
|
|
automata types in context with regular expressions the book /1/ can
|
|
be recommended. In our implementation we will use non-deterministic
|
|
automata. It's the most used strategy to implement a pattern matching
|
|
algorithm and it's a bit easier to construct a non-deterministic than
|
|
a deterministic automaton basing on a regular expression.
|
|
<P>
|
|
Figure 1 shows a state transition diagram of a non-deterministic
|
|
finite state automaton for the pattern a*(cb|c*)d. It contains all
|
|
types of operations--an alternation, two closures and tree concatenated
|
|
symbols. Note that the bracket which contains the alternative symbols
|
|
is one symbol for the concatenation. The start state is the rectangle
|
|
at the left side. The finite state is shown at the right side--rectangle
|
|
with diagonal line.
|
|
<P>
|
|
<center>
|
|
<img src="./gx/mueller/2462f1.gif">
|
|
<P>
|
|
<H4>Figure 1. Non-deterministic finite state automaton for pattern a*(cd|c*)d.</H4>
|
|
</center>
|
|
<P>
|
|
This little pattern and its automaton demonstrates the problems of pattern
|
|
matching very well. At state No. 7 it is not sure which state will be
|
|
the next for a input character "c". The states 4 and 9 are possible
|
|
ways. The automaton has to find out--to guess--the right way.
|
|
<P>
|
|
If the text string "aaccd" shall be matched for example the automaton
|
|
will start at state No. 0--the start state. The next state, No. 2, is
|
|
a zero state. This means that there is no character which must match to
|
|
enter this state.
|
|
<P>
|
|
The first input symbol is a "a". The automaton goes to state
|
|
No. 1 which is the only way. After matching the "a" the next input
|
|
character will be read and the next state is No. 2 again. For the next input
|
|
character which is also a "a". the last two steps are repeated.
|
|
After this the only possible way is to go to state No. 3 and 7.
|
|
<P>
|
|
Here we are in the state which may cause problems. The next input is
|
|
a "c". Here we see the true power of the automaton. It can guess the
|
|
right way which will be state No. 9 and not No. 4. This is the soul of
|
|
a non-deterministic strategy: the possible solutions are found out. They
|
|
are not described by an algorithm which works "step by step".
|
|
<P>
|
|
In the real world of programming we have to prove all possible ways,
|
|
of course. But more about the practical side a bit later.
|
|
<P>
|
|
After the decision pro No. 9 the automaton goes over 9, 8 (1st c matches),
|
|
9, 8 (2nd c matches), 10 and 11 (d matches) to state No. 12. The end
|
|
state was reached and the result is that the text "aaccd" matches to
|
|
pattern "a*(cb|c*)d".
|
|
<P>
|
|
<H4>Design</H4>
|
|
<P>
|
|
A regular expression implementation can always be split into a compiler,
|
|
which generates a automaton from the given pattern, and an interpreter
|
|
or simulator, which simulates the automaton and searches for the pattern.
|
|
<P>
|
|
The heart of the compiler is the parser which bases on the following
|
|
context free grammar:
|
|
<pre>list ::= element | element "|" list
|
|
element ::= ( "(" list ")" | v ) ["*"] [element]
|
|
</PRE>
|
|
This EBNF diagram (=Extended Backus-Naur Form) describes the (reduced)
|
|
regular expression grammar. It is not possible to explain context free
|
|
grammars or the EBNF in this article. If you are not familiar with these
|
|
topics I can recommend /1/ and /3/ for example.
|
|
<P>
|
|
In our sample implementation we will only implement the basic operators
|
|
| and *. The other closure operators + and ? we will not implement. But
|
|
with the help of Figure 2 it will no problem for you to implement it, too.
|
|
<P>
|
|
The complete regular expression functionality will be encapsulated
|
|
in the object class RegExpr. It contains the compiler and the
|
|
interpreter/simulator. The user is only confronted with the two
|
|
constructors, one overloaded operator and four methods for compiling,
|
|
searching, and error handling.
|
|
<P>
|
|
The pattern can be specified by calling the constructor RegExpr(const
|
|
char *pattern), by using the assign operator = or the compile(const char
|
|
*pattern) method. If re is an object of RegExpr the following lines
|
|
will set the pattern "a*(cb|c*)d":
|
|
<pre>RegExpr re("a*(cb|c*)d");
|
|
<B>or</B> RegExpr re; re = "a*(cb|c*)d";
|
|
<B>or</B> RegExpr re; re.compile("a*(cb|c*)d");
|
|
</PRE>
|
|
To search in a text buffer or string you can use the methods search()
|
|
and searchLen(). The difference between these methods is that searchLen()
|
|
expects a reference to a unsigned integer variable as an additional
|
|
parameter. In this variable the length of the matching substring is
|
|
return. Note that the closures, but also the alternation, cause that
|
|
the length of the found substring can vary, e.g., a* matches
|
|
"", "a",
|
|
"aa", etc.
|
|
<P>
|
|
In tools, such as grep, you won't need this additional information. Here
|
|
you can use search instead of searchLen(). This method is a simple inline
|
|
which calls searchLen() with a "dummy" variable.
|
|
<P>
|
|
<center>
|
|
<img src="./gx/mueller/2462f2.gif">
|
|
<P>
|
|
<H4>Figure 2. These are the automata for the closure implementation.</H4>
|
|
</center>
|
|
<P>
|
|
The error handling is complete exception based. If the compiler indicates
|
|
a syntax error in the currently processed regular expression it will
|
|
throw an exception of type xsyntax. You can catch this exception in your
|
|
program and call the method getErrorPos() which returns the character
|
|
position at which the error occurred. This may look like this:
|
|
<pre>try {
|
|
re.compile("a*(cb|c*)d");
|
|
} catch(xsyntax &X) {
|
|
cout << "error near character position "
|
|
<<
|
|
X.getErrorPos() << endl;
|
|
}
|
|
</PRE>
|
|
Another error which can occur is "out of memory". This
|
|
error--caused by
|
|
the new operator--isn't uniform processed by current C++ compilers. gcc
|
|
for example handle such an error with a program termination. Some
|
|
compiles throw exceptions. The rest does absolutely nothing and waits
|
|
for other errors which will definitely occur. You solve this problem
|
|
in every ANSI C++ compiler by using the function set_new_errorhandler()
|
|
(declared in new.h) to set a routine to handle this error. In most cases
|
|
I write a little routine to throw an exception which indicates this error
|
|
type and set this routine as error handler for the new operator. This is
|
|
by the way an easy solution to program a portable error handling which
|
|
can be used by all ANSI C++ compilers and under every operating system.
|
|
<P>
|
|
A RegExpr object contains a method called clear_after_error() to clear
|
|
itself when a error occurred respectively a exception was thrown. A
|
|
call of this method is necessary because an error leaves the compiler or
|
|
simulator in a indefinable state which can cause fatal errors at other
|
|
method calls.
|
|
<P>
|
|
<H4>The Compiler</H4>
|
|
<P>
|
|
The grammar which was previously shown in an EBNF diagram is implemented
|
|
in the methods list, element and v. list and element represent the
|
|
productions of the EBNF. v is a method which implements the special
|
|
symbol v. This symbols means in the grammar a character which is not a
|
|
metacharacter (|, *, etc.). It can also be a backslash sequence like \c
|
|
where c is any character. By using the backslash the special significance
|
|
of a metacharacter can be removed.
|
|
<P>
|
|
This three methods operate on a array called automaton. The array
|
|
consists of struct variables which contain information of the states
|
|
of the automaton. Every state entry contains the indices of the next
|
|
state(s) and the character which have to match. If the state is a zero
|
|
state this information will be a zero byte ("\0").
|
|
<P>
|
|
<center>
|
|
<img src="./gx/mueller/2462f3.gif">
|
|
<P>
|
|
<H4>Figure 3. The parse tree of "a*|b".</H4>
|
|
</center>
|
|
<P>
|
|
Our implementation is a top down parser. It uses directly the recursive
|
|
strategy of the context free grammar--every production is coded as
|
|
a function. The parser splits the who pattern respectively regular
|
|
expression into lower parts until it reaches a terminate symbol. Figure
|
|
3 shows the parse tree for "a*|b". First list is entered which
|
|
branches into non-terminate element, terminal "|" and non-
|
|
terminate list. element detects v and "*" and goes down to
|
|
"a". The other list
|
|
part goes directly down to "b" by passing element and v. The parse
|
|
tree of our sample regular expression can be seen in Figure 4.
|
|
<P>
|
|
<center>
|
|
<img src="./gx/mueller/2462f4.gif">
|
|
<P>
|
|
<H4>Figure 4. The parse tree of "a*(cb|c*)d"</H4>
|
|
</center>
|
|
<P>
|
|
Every non-terminate symbol represents a function call in our parser. The
|
|
top down strategy is the easiest way to implement a parser from a context
|
|
free grammar respectively EBNF diagram. You see the most important thing
|
|
here is an error free grammar specification!
|
|
<P>
|
|
Inside this methods the states of the automaton are generated. For every
|
|
character of the regular expression a state will be created. The only
|
|
exception is the operator | which will be compiled to two states.
|
|
<P>
|
|
The methods return to its caller always the entry point (index of state)
|
|
to the generated part automaton. The end of the part automaton is always
|
|
the last current state which index is stored in the attribute state of
|
|
RegExpr. You see the several part automata in Figure 5.
|
|
<center>
|
|
<img src="./gx/mueller/2462f5.gif">
|
|
<P>
|
|
<H4>Figure 5. A Several Part Automata</H4>
|
|
</center>
|
|
<P>
|
|
The red numbers indicate the new generated states for the operation. The
|
|
succession of the numbers is defined by the parser which reads a string
|
|
from left to right. The returned entry point or state is marked, too. You
|
|
realize that it is very important to tell the calling function where
|
|
the entry point is because it isn't always the one with the lowest index!
|
|
<P>
|
|
The states--and so the whole automaton--are generated in this way step
|
|
by step by a top down parser. It isn't very helpful for you to write
|
|
more about this automaton creation. It's better you type in the sources,
|
|
compile it and watch the algorithm in action by using a debugger.
|
|
<P>
|
|
A little annotation to the automaton. It is implemented by the static
|
|
array automaton in RegExpr. This is definitely a poor rudimentary
|
|
implementation. In a practical and useful program you have to use a
|
|
better strategy, e.g. an aggregate object class in RegExpr which works
|
|
with a dynamic array.
|
|
<P>
|
|
Note that this implementation of the automaton can cause fatal errors
|
|
if the pattern is to large! It has no checking function which breaks
|
|
pattern compilation if there are no more states.
|
|
<P>
|
|
But it is not difficult to implement the automaton as class which
|
|
administrates it in a dynamic array or a linked list.
|
|
<P>
|
|
<H4>The Automaton Simulation</H4>
|
|
<P>
|
|
After the compilation of the pattern we can execute the generated code
|
|
respectively simulate the automaton. The complete intelligence of the
|
|
search algorithm is implemented in the method simulate().
|
|
<P>
|
|
It was previously hinted that the automaton guesses the right answer but
|
|
this a theoretical view. A computer simulation of a non-deterministic
|
|
finite state automaton must prove every possible matching way through
|
|
this automaton. Sedgewick (/3/) has implemented a interesting algorithm
|
|
to do this. Our algorithm shall base on this technique.
|
|
<P>
|
|
Sedgewick's system has some disadvantages for practical application. The
|
|
First disadvantage is that its grammar needs a character after a closure
|
|
otherwise it can't find it. But this is a problem which can be solved by
|
|
a patch very soon--and our implementation has already solved this. The
|
|
second problem is a bit more complex. Sedgewick's implementation quits
|
|
after the first match. This means that it doesn't find the longest
|
|
matching string. For example: If you search for "a*a" in
|
|
"xxaaaaaxx"
|
|
it will find only "a" instead of "aaaaa". Our
|
|
implementation will solve this problem.
|
|
<P>
|
|
The idea that a program can guess the right way might sound
|
|
ridiculous. But the heart of such a software is to prove all possible way
|
|
and accept the last matching as the right. Here is a parallel proceeding
|
|
the decisive key.
|
|
<P>
|
|
Every branch of the automaton will be tested and if not fitting
|
|
removed. It's a bit a "trial and error" method. Every possible way will
|
|
be tested parallel with the others and removed when not matching the
|
|
current processed character of the search through text.
|
|
<P>
|
|
The basic element of this algorithm is a deque. A deque is a double ended
|
|
queue. It's a hybrid between stack and buffer. You can push and pop data
|
|
(stack) but also put (buffer). In other words: You can add data to the
|
|
head and to the tail of this data structure.
|
|
<P>
|
|
This behavior is important for our algorithm. The deque is split into
|
|
two parts:
|
|
<ol>
|
|
<li>top part for the current processed character of the
|
|
search through text
|
|
<li>bottom part for the next character
|
|
</ol>
|
|
The next state values of zero states are stored on the top part because
|
|
they implement the structure which is necessary to detect a match
|
|
of the current character. The next state values of non-zero states
|
|
(<tt>the_char != '\0'</tt>) are put to the bottom part because they point to the
|
|
next character. Between these part is a special value stored--next_char
|
|
(-1). It indicates that the next character of the text shall be processed.
|
|
<P>
|
|
The main loop in simulate gets a state from this deque and tests the
|
|
conditions. If the character in the_char of this state matches the
|
|
current processed character in the searched through text the indexes of
|
|
the next states (next1 and next2) will be put at the end of the deque. If
|
|
the read state is a zero state the next state values will be put on the
|
|
start of the queue. If the state is next_char (-1) the next character
|
|
in the searched through text will be processed. In this case next_char
|
|
is put at the end of the deque.
|
|
<P>
|
|
The loop will be terminated if the end of the text is reached or the deque
|
|
is empty. The last case arises when no more matching parts are found.
|
|
<P>
|
|
As so far it sound like the version of Sedgewick but the difference is
|
|
that when state becomes zero the loop won't terminate. It is accepted
|
|
as a matching part and this information is stored but the loop will go
|
|
ahead! It will search for possible other matches.
|
|
<P>
|
|
After the termination of the loop I returns the last matching result
|
|
or--if the pattern wasn't found--the start position of the search
|
|
minus one.
|
|
<P>
|
|
<H4>A Little Sample Application</H4>
|
|
<P>
|
|
To download the listings and makefile, click
|
|
<A HREF="./mueller.tar.gz">here</A>.
|
|
<P>
|
|
<B>eg.cc</B> is a little egrep implementation. It shall demonstrate the usage
|
|
and the power of RegExpr. eg reads from standard input or from a optional
|
|
specified file and print every line which contains the pattern:
|
|
<pre>Usage: eg pattern [file]
|
|
</PRE>
|
|
RegExpr is in this (minimal) implementation not perfect of course but it
|
|
will be a good basis for experiments. A few things which can be changed
|
|
or implemented are:
|
|
<ul>
|
|
<li>The closures ? and +
|
|
<li>Implementation of automaton as object with dynamic array or
|
|
linked list as state administration
|
|
<li>Character classes [...]
|
|
<li>Metacharacter . for any character
|
|
<li>Other operators known from sed or ed {...}
|
|
<li>Start and end line metacharacters--^ and $
|
|
</ul>
|
|
Last but not least I hope that you will have a bit fun with this
|
|
implementation. If you have some suggestions, questions, or ideas please
|
|
let me know.
|
|
|
|
<H4>Resources</H4>
|
|
<ul>
|
|
<li>Aho, Alfred V. / Sethi, Ravi / Ullman, Jeffrey
|
|
D.: COMPILERS Principles, Techniques and Tools. Reading (Mass.): Addison
|
|
Wesley 1986
|
|
<li>Müller, Oliver: Mustererkennung mit Delphi-Suchen
|
|
und Ersetzen von regulaeren Ausdruecken. mc extra (DOS International)
|
|
7/96
|
|
<li>Sedgewick, Robert: Algorithms. Reading (Mass.): Addison
|
|
Wesley 2nd Ed. 1992
|
|
</ul>
|
|
|
|
<!--===================================================================-->
|
|
<P> <hr> <P>
|
|
<center><H5>Copyright © 1998, Oliver Müller <BR>
|
|
Published in Issue 27 of <i>Linux Gazette</i>, April 1998</H5></center>
|
|
|
|
<!--===================================================================-->
|
|
<P> <hr> <P>
|
|
<A HREF="./index.html"><IMG ALIGN=BOTTOM SRC="../gx/indexnew.gif"
|
|
ALT="[ TABLE OF CONTENTS ]"></A>
|
|
<A HREF="../index.html"><IMG ALIGN=BOTTOM SRC="../gx/homenew.gif"
|
|
ALT="[ FRONT PAGE ]"></A>
|
|
<A HREF="./ayers3.html"><IMG SRC="../gx/back2.gif"
|
|
ALT=" Back "></A>
|
|
<A HREF="./petersen.html"><IMG SRC="../gx/fwd.gif" ALT=" Next "></A>
|
|
<P> <hr> <P>
|
|
|
|
<H4>
|
|
"Linux Gazette...<I>making Linux just a little more fun!</I>"
|
|
</H4>
|
|
|
|
<P> <HR> <P>
|
|
<!--===================================================================-->
|
|
|
|
<center>
|
|
<H2>Book Review: Web Security Sourcebook</H2>
|
|
<H4>By <a href="mailto:kirk@muppetlabs.com">Kirk Petersen</a></H4>
|
|
</center>
|
|
<P> <HR> <P>
|
|
<img align="right" src="./gx/petersen/cover.gif">
|
|
<ul>
|
|
<li>Authors: Aviel D. Rubin, Daniel Geer and Marcus J. Ranum
|
|
<li>Publisher: John Wiley and Sons
|
|
<li>E-mail: <a href="mailto:info@qm.jwiley.com">info@qm.jwiley.com</a>
|
|
<li>URL: <a href="http://www.wiley.com/">http://www.wiley.com/</a>
|
|
<li>Price: $23.99 US
|
|
<li>ISBN: 047118148X
|
|
</ul><P>
|
|
<I>Web Security Sourcebook</I> claims to be "a serious security
|
|
source book for Web Professionals and users."
|
|
Each chapter
|
|
covers one aspect of security, ranging from basic browser security to
|
|
firewall design.
|
|
<P>
|
|
The material covered in <I>Web Security Sourcebook</I> is fairly
|
|
simple--I would expect that
|
|
any Linux user could easily understand everything
|
|
presented in the book.
|
|
The target audience for <I>Web Security Sourcebook</I>
|
|
is anyone with some computer experience but with little knowledge
|
|
of computer security. It is mostly a summary of beginning, and some
|
|
intermediate, topics.
|
|
<P>
|
|
<H4>Chapter Summary</H4>
|
|
<P>
|
|
The first chapter, "Caught in Our Own Web", is the introduction to
|
|
the book. The authors present a quick history of the Web split
|
|
into four stages: the beginning, HTTP, server-side scripts and
|
|
client-side scripts. Security features (authentication,
|
|
confidentiality, etc.) are quickly outlined.
|
|
<P>
|
|
Chapter two, "Basic Browser Security", outlines
|
|
the features of Netscape Navigator and Microsoft Internet Explorer. The
|
|
authors cover all of the preferences that deal with security and
|
|
comment on how they should be configured.
|
|
A section on Internet Explorer's Content
|
|
Advisor (basically a Web "ratings" system) is included.
|
|
<P>
|
|
The next chapter is mostly about user privacy. There is a
|
|
section that describes certificates, mostly describing their flaws,
|
|
a very brief section on passwords and a good description of cookies.
|
|
Then the authors turn to privacy and anonymity. Simple proxies, Chaum
|
|
mixes and anonymous remailers are also described.
|
|
<P>
|
|
Chapters four and five address the security concerns of client-
|
|
and server-side scripts. Security issues of Java, Javascript and
|
|
ActiveX are outlined. The section on server-side security covers system
|
|
security as well as web-server security. It is mostly aimed at
|
|
Unix users.
|
|
<P>
|
|
The next chapter, "Advanced Server-Side Security"
|
|
consists mainly of CGI scripts and server-side includes. Information about
|
|
code signing and auditing tools is also provided.
|
|
<P>
|
|
"Creating Secure CGI Scripts" is the name of chapter seven.
|
|
It informs the reader of a few common security holes in
|
|
CGI scripts. It also outlines Perl, Tcl and Python as three capable
|
|
CGI scripting languages.
|
|
<P>
|
|
Chapter eight is an introduction to firewalls. The authors
|
|
describe what firewalls can do and how they interact with various
|
|
protocols. The placement of the firewall is explained in the second
|
|
part of the chapter.
|
|
<P>
|
|
Chapters nine and ten outline transactions on the Web. IPSEC is
|
|
discussed in detail. Secure HTTP, SSL and PCT are explained. The
|
|
authors then explain several "digital money" standards. A good
|
|
comparison is done between six of the competing standards.
|
|
<P>
|
|
The final chapter outlines the future of security on the Web. It
|
|
explains the problem of building in security "after-the-fact". The authors
|
|
point out some issues that often affect security, although they aren't
|
|
always thought of in that sense (such as "deliberate
|
|
incompatibility").
|
|
The chapter ends with a section titled "What we need in the
|
|
future".
|
|
<P>
|
|
The book includes two appendices. The first one is a brief
|
|
description of encryption, hash functions, digital signatures and so on.
|
|
The second one is a list of all the books and URLs that the authors
|
|
mentioned in the book.
|
|
<P>
|
|
<H4>Conclusion</H4>
|
|
<P>
|
|
<I>Web Security Sourcebook</I>
|
|
is fairly light reading and can be finished quickly. The writing is
|
|
adequate, although there are places where I found the descriptions lacking
|
|
or imprecise.
|
|
<P>
|
|
One thing that I often find annoying about security-related writings
|
|
is the use of scare tactics.
|
|
<I>Web Security Sourcebook</I> does have its share of scare tactics, but
|
|
for the most part uses realistic stories that honestly try to
|
|
inform the reader.
|
|
<P>
|
|
The information that <I>Web Security Sourcebook</I> presents is useful although
|
|
a bit shallow. The book tries to cover a lot of ground and is only
|
|
350 pages. If the book had been devoted solely to practical security fixes,
|
|
it might have impressed me. However, it included only a few specifics and
|
|
then went on to describe firewalls and transaction standards (which would
|
|
also have been interesting in more detail).
|
|
<P>
|
|
If you want an introduction to Web security and you have very little
|
|
experience with any sort of computer security, you might be interested in
|
|
<I>Web Security Sourcebook</I>. If you know much about encryption, or have
|
|
studied firewalls, or know about quite a few Web client and/or server
|
|
security holes, you will probably be disappointed by this book.
|
|
<P>
|
|
If you want to learn everything that was covered
|
|
in this book and you have the money, I would suggest getting a specific
|
|
book on each of the three or four concepts that <I>Web Security
|
|
Sourcebook</I> covers.
|
|
|
|
<!--===================================================================-->
|
|
<P> <hr> <P>
|
|
<center><H5>Copyright © 1998, Kirk Petersen<BR>
|
|
Published in Issue 27 of <i>Linux Gazette</i>, April 1998</H5></center>
|
|
|
|
<!--===================================================================-->
|
|
<P> <hr> <P>
|
|
<A HREF="./index.html"><IMG ALIGN=BOTTOM SRC="../gx/indexnew.gif"
|
|
ALT="[ TABLE OF CONTENTS ]"></A>
|
|
<A HREF="../index.html"><IMG ALIGN=BOTTOM SRC="../gx/homenew.gif"
|
|
ALT="[ FRONT PAGE ]"></A>
|
|
<A HREF="./mueller.html"><IMG SRC="../gx/back2.gif"
|
|
ALT=" Back "></A>
|
|
<A HREF="./wkndmech.html"><IMG SRC="../gx/fwd.gif" ALT=" Next "></A>
|
|
<P> <hr> <P>
|
|
|
|
<H4>
|
|
"Linux Gazette...<I>making Linux just a little more fun!</I>"
|
|
</H4>
|
|
|
|
<P> <HR> <P>
|
|
<!--===================================================================-->
|
|
|
|
<CENTER>
|
|
<IMG ALT="Linux Weekend Mechanic" SRC="../gx/fisk/wkndMech.gif" ALIGN=BOTTOM
|
|
WIDTH=397 HEIGHT=150>
|
|
<H1>Welcome to The Linux Weekend Mechanic!</H1>
|
|
<H2>Published in the April, 1998 Edition of the Linux Gazette</H2>
|
|
<FONT SIZE="2"><B>
|
|
Copyright © 1997 John M. Fisk <fiskjm@ctrvax.vanderbilt.edu><BR>
|
|
The Linux Gazette (tm) is Copyright © 1997,1998 <A HREF="http://www.ssc.com/">
|
|
Specialized Systems Consultants Inc.</A>
|
|
</B></FONT>
|
|
</CENTER>
|
|
|
|
<P><HR><P>
|
|
|
|
<!-- CLOSE UP SHOP ================================================ -->
|
|
<A NAME="closeup">
|
|
<CENTER>
|
|
<IMG SRC="../gx/fisk/closing.gif" WIDTH=555 HEIGHT=95 ALIGN=BOTTOM
|
|
ALT="Closing Up Shop"></CENTER>
|
|
</A>
|
|
|
|
<CENTER>
|
|
<H2>I'm leaving y'all for another woman...!</H2>
|
|
|
|
<P>
|
|
<IMG SRC="./gx/fisk/faith-n-john.gif" WIDTH=200 HEIGHT=231 ALT="Faith and John">
|
|
|
|
<P>
|
|
My wonderful wife... :-)
|
|
</CENTER>
|
|
|
|
<P>
|
|
Yup, I'm afraid that it's time to permanently close up shop here at the 'ol
|
|
Weekend Mechanic. Time constrains and just the day to day necessities are
|
|
starting to catch up and I just simply need to spend more time taking care of
|
|
family matters. I sat down and figured out the time the other day: I've been
|
|
in some form of training -- undergraduate, graduate, or residency -- for the
|
|
past <I>13 1/2 years!</I> I'm about to take a sabbatical :-)
|
|
|
|
<P>
|
|
But before I go, I need to take a minute and say thanks to an awful lot of
|
|
folks: to Tim, at Tennessee Commerce Net, who graciously offered to host the
|
|
Linux Gazette way back in the summer of 1995; to Matt Welsh for his kind offer
|
|
to bring the LG under the wing of the LDP; to Marc Ewing, Donnie Barnes, &
|
|
Erik Troan, the "Boys at RedHat" who sent their encouragement (as
|
|
well as CD's, a t-shirt, books, and the familiar Red Hat... thanks!) way back
|
|
when; to Phil Hughes for his interest in and willingness to take over the LG
|
|
when it simply became too much; to Marjorie Richardson, for actually <I>taking
|
|
over</I> the day to day care and feeding of this thing (as well as shouldering
|
|
the hassles and burdens that come with this job -- such as truant columnists
|
|
such as your's truly...); to the myriad of authors and contributors who have
|
|
much more faithfully than me contributed to the success of the LG by giving of
|
|
their time and talents...
|
|
|
|
<P>
|
|
And mostly, to my lovely wife, without whose unflagging love, support, and
|
|
encouragement (and willingness to be an all-too-frequent "computer
|
|
widow") none of this could have happened. To all of you I want to humbly
|
|
say,
|
|
|
|
<P>
|
|
Thanks folks, it's been great.
|
|
|
|
<P>
|
|
So what are we now up to?
|
|
|
|
<P>
|
|
Well, as most of you know, I finished up at <A HREF="http://www.mtsu.edu/">
|
|
Middle Tennessee State University</A> this past December and immediately
|
|
started working for Dr. Ed Shultz in the Information Management Department
|
|
here at Vanderbilt. We've licensed a clinical database system from a Dr.
|
|
Prakash Nadkarni at the Yale University Medical Center. Dr. Nadkarni's
|
|
Advanced Clinical Trials Database System (ACT/DB) is a rather sophisticated
|
|
clinical trials data management system currently hosted in the Oncology arena.
|
|
My job has simply been to get the system working and integrated into the
|
|
larger clinical information system here at Vandy, which has so far proven to
|
|
be an interesting and often challenging endeavor. For those who might be
|
|
interested in such things, Dr. Nadkarni has an article in this month's (March,
|
|
1998) Journal of the American Medical Informatics (JAMIA) describing the
|
|
ACT/DB system. We've also submitted an abstract for a theater presentation of
|
|
the system at the upcoming AMIA meeting (again, for you medical informatics
|
|
type folks out there... :-)
|
|
|
|
<P>
|
|
I'm also working now on trying to set up a formal Medical Informatics
|
|
Fellowship through the National Library of Medicine here at Vanderbilt. A
|
|
good deal of my time is now spent trying to get ready for this, especially as
|
|
the August 1 submission deadline approaches.
|
|
|
|
<P>
|
|
Anyway, if you've made it this far, thanks for hanging in there. I really do
|
|
owe one last HUGE bit of thanks...
|
|
|
|
<BLOCKQUOTE>
|
|
<P>
|
|
Dear Linus,
|
|
|
|
<P>
|
|
Thanks so much for one <I>drop-dead kool</I> kinda OS!
|
|
|
|
<P>
|
|
Your fan,<BR>
|
|
John
|
|
</BLOCKQUOTE>
|
|
|
|
<P>
|
|
I'll see y'all around. Take care,
|
|
|
|
<P>
|
|
John
|
|
|
|
<!-- END CLOSE UP SHOP ================================================ -->
|
|
|
|
<P><HR><P>
|
|
|
|
<CENTER>
|
|
<IMG SRC="../gx/fisk/mailme2.gif" ALT="Mail Me a Note" ALIGN=BOTTOM WIDTH=398
|
|
HEIGHT=54><BR>
|
|
</CENTER>
|
|
|
|
<P>
|
|
Got any comments, suggestions, criticisms or ideas?<BR>
|
|
Feel free to drop me a note at:<BR>
|
|
<ADDRESS> John M. Fisk
|
|
<A HREF="mailto: fiskjm@ctrvax.vanderbilt.edu">
|
|
<fiskjm@ctrvax.vanderbilt.edu></A>
|
|
</ADDRESS>
|
|
|
|
<P>
|
|
<FONT SIZE=-1>
|
|
Document Information:<BR><B>
|
|
$Id: issue27.html,v 1.3 2003/02/03 21:50:18 lg Exp $
|
|
</B>
|
|
</FONT>
|
|
|
|
<!--===================================================================-->
|
|
<P> <hr> <P>
|
|
<center><H5>Copyright © 1998, John Fisk <BR>
|
|
Published in Issue 27 of <i>Linux Gazette</i>, April 1998</H5></center>
|
|
|
|
<!--===================================================================-->
|
|
<P> <hr> <P>
|
|
<A HREF="./index.html"><IMG ALIGN=BOTTOM SRC="../gx/indexnew.gif"
|
|
ALT="[ TABLE OF CONTENTS ]"></A>
|
|
<A HREF="../index.html"><IMG ALIGN=BOTTOM SRC="../gx/homenew.gif"
|
|
ALT="[ FRONT PAGE ]"></A>
|
|
<A HREF="./petersen.html"><IMG SRC="../gx/back2.gif"
|
|
ALT=" Back "></A>
|
|
<A HREF="./kaszeta.html"><IMG SRC="../gx/fwd.gif" ALT=" Next "></A>
|
|
<P> <hr> <P>
|
|
|
|
<H4>
|
|
"Linux Gazette...<I>making Linux just a little more fun!</I>"
|
|
</H4>
|
|
|
|
<P> <HR> <P>
|
|
<!--===================================================================-->
|
|
<DIV align="center">
|
|
<H1>
|
|
X Window System Terminals
|
|
</H1>
|
|
<img width=320 height=240 border=1 alt="486 X Terminal" src="./gx/kaszeta/xterminal.gif">
|
|
<h2> A New Use for Old and Outdated PCs</h2>
|
|
<h3> by <a href="mailto:bofh@me.umn.edu">Rich Kaszeta</A> </H3>
|
|
</div>
|
|
<hr>
|
|
|
|
<h2>Summary:</h2>
|
|
|
|
<p>This page describes how to convert low-end 386/486 PC's into standalone
|
|
X Window Systems terminals which can serve as graphical terminals to
|
|
your existing Linux/Unix workstations.
|
|
|
|
<h2>Background:</h2>
|
|
|
|
<p>Here at the <a href="http://www.me.umn.edu/">Mechanical Engineering
|
|
Dept.</a> at the University of Minnesota, we inherited a number of old
|
|
IBM PS/Valuepoint 486 machines (16 Meg memory, 200 Meg HD) with
|
|
keyboards and monitors, and were trying to find a way to get some good
|
|
use out of them.
|
|
|
|
<p>Originally, we discussed placing Linux on them (our department
|
|
already has dozens of Pentium-class Linux machines which are quite
|
|
popular), but decided that with their low disk space and memory they
|
|
wouldn't run fast enough to suit our current users' needs, and that it
|
|
wasn't economical to upgrade them.
|
|
|
|
<p>Our solution was to install a minimal Debian Linux system on them
|
|
(base install plus basic networking, X, and a few utilities), and
|
|
configure them to act as X terminals, allowing us to provide
|
|
extremely cheap fully-graphical terminals, which are used in graduate
|
|
student offices and as X interfaces to our headless Unix servers.
|
|
|
|
<h2>XDM: The basic concept:</h2>
|
|
|
|
<p><tt>xdm</tt> is a "display manager", providing X login windows to
|
|
users. The traditional use of xdm is to provide a graphical login on
|
|
the local display on an X11 workstation, so that the user does not
|
|
need to start up X "by hand".
|
|
|
|
<p>However, <tt>xdm</tt> can also provide graphical X11 logins to
|
|
remote machines, such as NCD Xterminals. The only requirement is that
|
|
the remote machine speak X.
|
|
|
|
<p>What we are describing here is configuring a cheap PC to act just
|
|
like one of these Xterminals.
|
|
|
|
<h2>Setting up the X Terminals</h2>
|
|
|
|
<p>Setting up the 486 PCs as graphical X terminals fairly
|
|
straightforward, consisting of just a few steps:
|
|
<OL>
|
|
<LI>Installing a minimal Debian Linux system on each PC
|
|
<LI>Configuring each PC to start up X and query an XDM server to get a
|
|
list of hosts to connect to.
|
|
<LI>Configuring one or more XDM servers to provide "chooser" services
|
|
to the X terminals.
|
|
<LI>Configuring XDM and the chooser to be more aesthetically pleasing
|
|
and useful.
|
|
</OL>
|
|
|
|
<P>I'll discuss each of these steps in turn.
|
|
|
|
<h3>Installing a minimal Linux system:</h3>
|
|
|
|
<p>Since our existing Linux systems run <a
|
|
href="http://www.debian.org">Debian Linux</a> we chose to use it for
|
|
these PCs as well.
|
|
|
|
<p>On each system, we installed just the basic Debian system from
|
|
floppy, which provides a very bare-bones Linux system with networking
|
|
support. No user accounts were created, since none are needed (since
|
|
no users actually log into the machine itself).
|
|
|
|
<p>Next, Debian packages of XFree86 3.3 were loaded on each system.
|
|
We loaded the base X11 libraries, the X extensions, the S3 X server
|
|
(since the PS/Valuepoints have 2-meg S3-based video card), and all the
|
|
X11R6 fonts.
|
|
|
|
<p>Finally, we installed a few additional packages for convenience,
|
|
including basic networking utilities (<t>netbase</t>), <tt>ssh</tt>
|
|
(to allow use to remotely log in through a secure channel), and
|
|
<tt>nvi</tt> since the systems staff here doesn't like the default
|
|
Debian text editor.
|
|
|
|
<h3>Configuring each PC to start up X:</h3>
|
|
|
|
<p>The first step was configuring X to run locally on each PC. An
|
|
<a href="XF86Config"><tt>XF86Config</tt></a> file was created for the machines using the standard
|
|
'<tt>xf86config</tt>' utility, with a couple of considerations:
|
|
<UL>
|
|
<LI>The "Emulate3Buttons" option was enabled, since the mice that came
|
|
with the machines are only 2-button mice.
|
|
<LI>While the 2-meg S3 card in the Valuepoints is capable of up to
|
|
1152x900x16bit resolution, we chose to run 1024x768x8bit, since it
|
|
runs at a more comfortable refresh rate, better viewability on the
|
|
15-inch IBM monitors, and provides better compatibility with local
|
|
applications than 16-bit color.
|
|
<LI>For added security, "DontZap" is specified so that users cannot
|
|
inadvertently kill the X server.
|
|
<LI>We added additional SGI-defined colors to
|
|
<tt>/usr/lib/X11/rgb.txt</tt> so that the X-stations could talk to our
|
|
SGIs without errors.
|
|
<LI>You may wish to set up a font server somewhere.
|
|
</UL>
|
|
|
|
<P>Once we were satisfied with the configuration of the X server, we
|
|
then tested if it could connect to a workstation running xdm ("rayleigh" in
|
|
this example):
|
|
|
|
<pre>
|
|
X -quiet -query weber
|
|
</pre>
|
|
|
|
which gives us the standard xdm login window for "weber":<p>
|
|
<div align="center">
|
|
<img border=1 width=629 height=402 alt="standard xdm login window"
|
|
src="./gx/kaszeta/xdm1.gif">
|
|
</div>
|
|
|
|
<P>So, we now know everything is basically working. If we just want the PC to
|
|
talk to a single workstation, then we are basically done. The only
|
|
remaining step is to make sure that X is started upon bootup. We can
|
|
do this with a script in <a href="xterm1"><tt>/etc/init.d/xterm</tt></a>.
|
|
|
|
<P>On a Debian system, we install it with '<tt>update-rc.d xterm defaults
|
|
99</tt>'. (The procedure for Redhat, Slackware, etc., is similar).
|
|
We then reboot the machine to make sure it starts X upon boot.
|
|
|
|
<h3>Configuring an XDM server to provide a "chooser":</h3>
|
|
|
|
<P>We've already set up a basic X Terminal. However, it can only talk to
|
|
a single machine. If we would like it to be able to connect to a
|
|
number of other machines, we'll have to have at least one machine in
|
|
our network configured to provide a host "chooser" to our X terminals.
|
|
In this discussion, the machine providing "chooser" xdm services is
|
|
called "weber" (note that in this example "weber" is a Linux box, but
|
|
it could be any xdm-enabled workstation).
|
|
|
|
<P>The first step is to configure weber to provide the chooser to
|
|
hosts that connect through an "indirect" XDM connection. This is
|
|
controlled by the <tt>Xaccess</tt> file (located in
|
|
<tt>/etc/X11/xdm</tt> on Debian machines, it may be located under
|
|
<tt>/usr/lib/X11</tt> or another location on other machines).
|
|
Typically, the default <tt>Xaccess</tt> file on most systems is fairly
|
|
well commented and includes a number of simple examples, so it's
|
|
pretty easy to figure out.
|
|
|
|
<P>Basically, you have to add a line to the file of the form
|
|
|
|
<pre>
|
|
hostname CHOOSER host-a host-b
|
|
</pre>
|
|
|
|
where <tt>hostname</tt> is the name of the host to provide the chooser
|
|
to (it can be a wildcard such as "<tt>*</tt>" or
|
|
"<tt>*.domain.name</tt>", the <tt>CHOOSER</tt> tells <tt>xdm</tt> to
|
|
provide a chooser to these hosts, and the remainder of the line is a
|
|
list of machine names to list in the chooser. If you use the special
|
|
hostname <tt>BROADCAST</tt>, it will list all xdm-enabled machines on
|
|
the local network.
|
|
|
|
<p>So, if we want all machines to be given a chooser that allows them
|
|
to select any machine on the local network, we'd make sure
|
|
<tt>Xaccess</tt> has the line
|
|
<pre>
|
|
* CHOOSER BROADCAST
|
|
</pre>
|
|
|
|
<p>However, in our system we have a number of machines in different
|
|
subnets, so we can't rely on a broadcast to find them all. So we use
|
|
<pre>
|
|
* CHOOSER machine list ...
|
|
</pre>
|
|
instead.
|
|
|
|
<p>Additionally, we can specify different lists for different
|
|
machines. As mentioned previously we wanted to use one of the PCs as
|
|
a graphical terminal for our headless SGI workstation (which runs
|
|
xdm). So we have this machine, "console", be given a list of only the
|
|
server machines:
|
|
<pre>
|
|
console.me.umn.edu CHOOSER server1 server2 ...
|
|
</pre>
|
|
|
|
<p>The next step is to modify the X terminal to connect to the XDM
|
|
server using an 'indirect' query. We first test it by logging into
|
|
the X terminal PC, and starting X with
|
|
<pre>
|
|
X -indirect weber
|
|
</pre>
|
|
and we should then see the chooser come up:<p>
|
|
<div align="center">
|
|
<img border=1 width=799 height=589 alt="standard chooser"
|
|
src="./gx/kaszeta/chooser.gif">
|
|
</div>
|
|
Functional, but a little ugly.
|
|
|
|
<p>So now that we know it works, we change our
|
|
<a href="xterm"><tt>/etc/init.d/xterm</tt></a> script, replacing the
|
|
"-query rayleigh" with "-indirect weber".
|
|
|
|
<h3>Configuring the chooser through X resources and scripts:</h3>
|
|
|
|
<p>Well, now that we've got everything basically working, all that we
|
|
have left is to clean up the configuration of the chooser so it is a
|
|
little more useable and visually pleasing.
|
|
|
|
<p>The chooser can be configured using X resources. By changing these
|
|
resources we can do things such as change the chooser fonts, the
|
|
layout of the list, and the colors. These resources are set in
|
|
<tt>/etc/X11/xdm/Xresources</tt> (or a similar location on non-Debian
|
|
machines).
|
|
|
|
<p>On our systems, we wanted to do the following:
|
|
<ul>
|
|
<li> Change the header to say "Available MEnet Systems"
|
|
<li> Change the fonts to be more legible
|
|
<li> Make the list two column, with a gap between the columns, and
|
|
sorted vertically.
|
|
<li> Move the scrollbar to the right.
|
|
<li> Enlarge the window slightly.
|
|
</ul>
|
|
|
|
To accomplish this, we edited <tt>/etc/X11/xdm/Xresources</tt> to
|
|
insert the following:
|
|
<pre>
|
|
Chooser*geometry: 810x500+300+225
|
|
Chooser*allowShellResize: false
|
|
Chooser*ShapeStyle: Oval
|
|
Chooser*viewport.forceBars: true
|
|
Chooser*label.font: *-new century schoolbook-bold-i-normal-*-240-*
|
|
Chooser*label.label: Available MEnet Hosts
|
|
!Chooser*list.font: -*-*-medium-r-normal-*-*-230-*-*-c-*-iso8859-1
|
|
!Chooser*Command.font: *-new century schoolbook-bold-r-normal-*-180-*
|
|
#ifdef COLOR
|
|
Chooser*label.foreground: white
|
|
Chooser*label.background: midnightblue
|
|
Chooser*Command.background: gray80
|
|
Chooser*list.columnSpacing: 25
|
|
Chooser*list.defaultColumns: 2
|
|
Chooser*list.forceColumns: true
|
|
Chooser*list.verticalList: true
|
|
Chooser*internalBorderColor: black
|
|
Chooser*Command.font: -adobe-helvetica-bold-r-*-*-12-*
|
|
Chooser*viewport.useRight: true
|
|
#endif
|
|
</pre>
|
|
|
|
<p>Finally, we wanted to get rid of the default X11 "thatch" pattern
|
|
on the root window, since it gives a horrid moire effect on small
|
|
monitors. To do this, we tell xdm to use a shell script, called
|
|
"chooser.script" instead of the normal "chooser". This script simply
|
|
sets the background to "skyblue4" and runs the normal chooser. We set
|
|
this in <tt>/etc/X11/xdm/xdm-config</tt>, adding the line
|
|
<pre>
|
|
DisplayManager*chooser: /usr/lib/X11/xdm/chooser.script
|
|
</pre>
|
|
where "chooser.script" is
|
|
<pre>
|
|
#!/bin/sh
|
|
xsetroot -solid skyblue4
|
|
/usr/lib/X11/xdm/chooser $*
|
|
</pre>
|
|
|
|
The final result looks like:<p>
|
|
<div align="center">
|
|
<img width=876 height=563 border=1 alt="customized chooser"
|
|
src="./gx/kaszeta/chooser2.gif">
|
|
</div>
|
|
Much nicer, no?
|
|
|
|
<p>A <strong>lot</strong> more customization is possible, through both
|
|
X resources and the XDM configuration scripts. Consult the
|
|
<tt>xdm</tt> man page for more details.
|
|
|
|
<h2>Conclusion:</h2>
|
|
|
|
<p>With relatively little work, and very little subsequent
|
|
administration (the X terminals seldom crash, and don't need software
|
|
updates), we converted a bunch of "junker" PCs into rather useful X
|
|
terminals (I've even done a 386 this way and it runs fine).
|
|
|
|
<p>As a final note, it's important to point out the while the
|
|
particular systems I've described here are PCs running Debian Linux,
|
|
the same technique applies equally well to resuscitation of any older
|
|
X11-capable machines, such as older Suns (Sparc ELCs), HPs, and
|
|
SGIs...
|
|
<P>
|
|
<a href="http://www.menet.umn.edu/~kaszeta">Rich Kaszeta</a>
|
|
<!--===================================================================-->
|
|
<P> <hr> <P>
|
|
<center><H5>Copyright © 1998, Rich Kaszeta <BR>
|
|
Published in Issue 27 of <i>Linux Gazette</i>, April 1998</H5></center>
|
|
|
|
<!--===================================================================-->
|
|
<P> <hr> <P>
|
|
<A HREF="./index.html"><IMG ALIGN=BOTTOM SRC="../gx/indexnew.gif"
|
|
ALT="[ TABLE OF CONTENTS ]"></A>
|
|
<A HREF="../index.html"><IMG ALIGN=BOTTOM SRC="../gx/homenew.gif"
|
|
ALT="[ FRONT PAGE ]"></A>
|
|
<A HREF="./wkndmech.html"><IMG SRC="../gx/back2.gif"
|
|
ALT=" Back "></A>
|
|
<A HREF="./lg_backpage27.html"><IMG SRC="../gx/fwd.gif" ALT=" Next "></A>
|
|
<P> <hr> <P>
|
|
<center>
|
|
<H1><IMG SRC="../gx/backpage.gif" alt="Linux Gazette Back Page"></H1>
|
|
|
|
<H5>Copyright © 1998 Specialized Systems Consultants, Inc.<br>
|
|
For information regarding copying and distribution of this material see the
|
|
<A HREF="../copying.html">Copying License</A>.</H5>
|
|
</center>
|
|
|
|
<P> <hr> <P>
|
|
|
|
<H3>Contents:</H3>
|
|
<ul>
|
|
<li><a HREF="./lg_backpage27.html#authors">About This Month's Authors</a>
|
|
<li><a HREF="./lg_backpage27.html#notlinux">Not Linux</a>
|
|
</ul>
|
|
|
|
<a name="authors"></a>
|
|
<P> <HR> <P>
|
|
<!--======================================================================-->
|
|
|
|
<center><H3> About This Month's Authors </H3></center>
|
|
|
|
<P> <HR> <P>
|
|
<!--======================================================================-->
|
|
|
|
<P>
|
|
<H4><IMG ALIGN=BOTTOM ALT="" SRC="../gx/note.gif">Murray Adelman</H4>
|
|
Murray is an academic mathematician; trained at the University of
|
|
Pennsylvania and teaching at Macquarie University in Sydney Australia
|
|
for the last twenty odd years. At a time when UNIX was new to our
|
|
department he stumbled across the Berkely User Supplementary Documents
|
|
and got interested in troff. He also vowed to save up and get a UNIX
|
|
system of his own. Linux saved him from the saving up part.
|
|
In his professional
|
|
work he has used mostly TeX, but maintains an interest in markup
|
|
languages in general, including SGML.
|
|
|
|
<P>
|
|
<H4><IMG ALIGN=BOTTOM ALT="" SRC="../gx/note.gif">Larry Ayers</H4>
|
|
Larry lives on a small farm
|
|
in northern Missouri, where he is currently engaged in building a
|
|
timber-frame house for his family. He operates a portable band-saw mill,
|
|
does general woodworking, plays the fiddle and searches for rare
|
|
prairie plants, as well as growing shiitake mushrooms. He is also
|
|
struggling with configuring a Usenet news server for his local ISP.
|
|
|
|
<P>
|
|
<H4><IMG ALIGN=BOTTOM ALT="" SRC="../gx/note.gif">Jim Dennis</H4>
|
|
Jim
|
|
is the proprietor of <A href="http://www.starshine.org">
|
|
Starshine Technical Services</A>.
|
|
His professional experience includes work in the technical
|
|
support, quality assurance, and information services (MIS)
|
|
departments of software companies like
|
|
<A href="http://www.quarterdeck.com"> Quarterdeck</A>,
|
|
<A href="http://www.symantec.com"> Symantec/
|
|
Peter Norton Group</A>, and
|
|
<A href="http://www.mcafee.com"> McAfee Associates</A> -- as well as
|
|
positions (field service rep) with smaller VAR's.
|
|
He's been using Linux since version 0.99p10 and is an active
|
|
participant on an ever-changing list of mailing lists and
|
|
newsgroups. He's just started collaborating on the 2nd Edition
|
|
for a book on Unix systems administration.
|
|
Jim is an avid science fiction fan -- and was
|
|
married at the World Science Fiction Convention in Anaheim.
|
|
|
|
<P>
|
|
<H4><IMG ALIGN=BOTTOM ALT="" SRC="../gx/note.gif">Chris DiBona</H4>
|
|
Chris is a computer security specialist for StrongCrypto Inc. He
|
|
can be reached at chris@dibona.com. His personal web site is located at
|
|
http://www.dibona.com/.
|
|
|
|
<P>
|
|
<H4><IMG ALIGN=BOTTOM ALT="" SRC="../gx/note.gif">John M. Fisk</H4>
|
|
John is most noteworthy as the former editor of the <I>Linux Gazette</I>.
|
|
After three years as a General Surgery resident and
|
|
Research Fellow at the Vanderbilt University Medical Center,
|
|
John decided to ":hang up the stethoscope":, and pursue a
|
|
career in Medical Information Management. He's currently a full
|
|
time student at the Middle Tennessee State University and hopes
|
|
to complete a graduate degree in Computer Science before
|
|
entering a Medical Informatics Fellowship. In his dwindling
|
|
free time he and his wife Faith enjoy hiking and camping in
|
|
Tennessee's beautiful Great Smoky Mountains. He has been an avid Linux fan,
|
|
since his first Slackware 2.0.0 installation a year and a half
|
|
ago.
|
|
|
|
<P>
|
|
<H4><IMG ALIGN=BOTTOM ALT="" SRC="../gx/note.gif">Michael J. Hammel</H4>
|
|
Michael
|
|
is a transient software engineer with a background in
|
|
everything from data communications to GUI development to Interactive Cable
|
|
systems--all based in Unix. His interests outside of computers
|
|
include 5K/10K races, skiing, Thai food and gardening. He suggests if you
|
|
have any serious interest in finding out more about him, you visit his home
|
|
pages at http://www.csn.net/~mjhammel. You'll find out more
|
|
there than you really wanted to know.
|
|
|
|
<P>
|
|
<H4><IMG ALIGN=BOTTOM ALT="" SRC="../gx/note.gif">Clint Jeffery</H4>
|
|
Clint is an assistant professor in the Division of Computer Science
|
|
at the University of Texas at San Antonio. He writes and teaches about
|
|
program execution monitoring, visualization, programming languages, and
|
|
software engineering. Contact him at
|
|
<a href="mailto:jeffery@cs.utsa.edu">jeffery@cs.utsa.edu</a> or read about
|
|
his research at
|
|
<a href="http://www.cs.utsa.edu/faculty/jeffery.html">http://www.cs.utsa.edu/faculty/jeffery.html</a>
|
|
He received his Ph.D. degree from the University of Arizona.
|
|
|
|
<P>
|
|
<H4><IMG ALIGN=BOTTOM ALT="" SRC="../gx/note.gif">Richard Kaszeta</H4>
|
|
Richard is currently both a Unix Systems Administrator and a
|
|
PhD Student in the Mechanical Engineering Department of the University
|
|
of Minnesota, and currently administers more than 25 Linux machines
|
|
running Debian Linux. In addition to Linux, his hobbies include scuba
|
|
diving, ultimate frisbee, and cooking. You can visit his home page at
|
|
http://www.menet.umn.edu/~kaszeta.
|
|
|
|
<P>
|
|
<H4><IMG ALIGN=BOTTOM ALT="" SRC="../gx/note.gif">John Kodis</H4>
|
|
John has been involved in a wide range of scientific and
|
|
real-time software development efforts. He is currently the software
|
|
development manager for a large satellite image ingest, archive,
|
|
processing, and distribution system. He enjoys tinkering with Linux,
|
|
writing Perl, playing with his two kids, and trying to keep pace with
|
|
the rapid growth of the Gnome project.
|
|
|
|
<P>
|
|
<H4><IMG ALIGN=BOTTOM ALT="" SRC="../gx/note.gif">John Little</H4>
|
|
John, who worked for Sun for nine years, is from the U.K., lives
|
|
in Japan and works in Tokyo for an American company. He wears a range
|
|
of increasingly bizarre hats in an (mostly futile) effort to hide his
|
|
incipient baldness. He can be reached by e-mail at gaijin@pobox.com.
|
|
|
|
<p>
|
|
<H4><IMG ALIGN=BOTTOM ALT="" SRC="../gx/note.gif">Eric Marsden</H4>
|
|
<a href="http://www.chez.com/emarsden/">Eric</a> is studying computer
|
|
science in Toulouse, France, and is a member of the local Linux Users
|
|
Group. He enjoys programming, cycling and Led Zeppelin. He admits to
|
|
once having owned a Macintosh, but denies any connection with the the
|
|
<a href="http://locke.ccil.org/~esr/ecsl/">Eric Conspiracy Secret
|
|
Labs</a>.
|
|
|
|
<P>
|
|
<H4><IMG ALIGN=BOTTOM ALT="" SRC="../gx/note.gif">Shamim Mohamed</H4>
|
|
Shamim met Unix in 1983 and was introduced to Linux
|
|
at version 0.99 pl12. He is the author of Icon's POSIX interface and
|
|
produced the linux distributions described in this article.
|
|
These days he is a Silicon Valley polymath and
|
|
factotum, and an instrument rated pilot flying taildraggers. He's at
|
|
<a href="mailto:spm@drones.com">spm@drones.com</a> |
|
|
<a href="http://www.drones.com/shamim/">http://www.drones.com/shamim/</a>.
|
|
He received his Ph.D. degree from the University of Arizona.
|
|
|
|
<P>
|
|
<H4><IMG ALIGN=BOTTOM ALT="" SRC="../gx/note.gif">Oliver Müller</H4>
|
|
Oliver works
|
|
as programmer and is principal of a software developing firm. He is also
|
|
author and writes for several computer magazines and book publishers. His
|
|
email address is ogmueller@t-online.de.
|
|
|
|
<P>
|
|
<H4><IMG ALIGN=BOTTOM ALT="" SRC="../gx/note.gif">Kirk Petersen</H4>
|
|
Kirk is a recent graduate of The Evergreen State College
|
|
and is working at NOAA in Seattle. He spends his spare time working on
|
|
various Linux software projects. E-mail him at kirk@muppetlabs.com or
|
|
check out his web page at http://www.muppetlabs.com/~kirk/.
|
|
|
|
<P>
|
|
<H4><IMG ALIGN=BOTTOM ALT="" SRC="../gx/note.gif">Dave Wagle</H4>
|
|
Dave's a slightly quarky theology graduate student who has made a living
|
|
for the last 10 years developing, deploying, supporting and otherwise
|
|
wrestling with Unix and relational databases. He's married, has 2
|
|
kids, and an odd fondness for Kierkegaard. Write him at: davew@cloudnet.com.
|
|
|
|
|
|
<a name="notlinux"></a>
|
|
<P> <hr> <P>
|
|
<!--====================================================================-->
|
|
|
|
<center><H3> Not Linux </H3></center>
|
|
|
|
<P> <HR> <P>
|
|
<!--======================================================================-->
|
|
<P>
|
|
Thanks to all our authors, not just the ones above, but also those who wrote
|
|
giving us their tips and tricks and making suggestions. Thanks also to our
|
|
new mirror sites.
|
|
<P>
|
|
This month we say good-bye to our "Weekend Mechanic", John Fisk. John began
|
|
<I>Linux Gazette</I> as a learning project for himself, never dreaming how
|
|
popular it would become with the Linux community. When he turned <I>LG</I>
|
|
over to SSC, I was very pleased he planned to continue writing for
|
|
<I>LG</I>. I appreciate all of
|
|
John's contributions and will miss having his column in our pages. I
|
|
know you will too.
|
|
<P>
|
|
Bye, John, keep having fun!
|
|
|
|
<P> <hr> <P>
|
|
<A HREF="http://www.ssc.com/ssc/Employees/Margie/margie.html">
|
|
Marjorie L. Richardson</A> <br>
|
|
Editor, <A HREF="http://www.linuxgazette.com/"><i>Linux Gazette</i></A>, <A
|
|
HREF="mailto:gazette@ssc.com">gazette@ssc.com</a>
|
|
|
|
<P> <HR> <P>
|
|
<!--====================================================================-->
|
|
<A HREF="./index.html"><IMG SRC="../gx/indexnew.gif" ALT="[ TABLE OF
|
|
CONTENTS ]"></A>
|
|
<A HREF="../index.html"><IMG SRC="../gx/homenew.gif" ALT="[ FRONT
|
|
PAGE ]"></A>
|
|
<A HREF="./kaszeta.html"><IMG SRC="../gx/back2.gif" ALT=" Back "></A>
|
|
<p><hr><p>
|
|
<I>Linux Gazette</I> Issue 27, April 1998,
|
|
<A HREF="http://www.linuxgazette.com/">http://www.linuxgazette.com</A><BR>
|
|
This page written and maintained by the Editor of <I>Linux Gazette</I>,
|
|
<A HREF="mailto: gazette@ssc.com"> gazette@ssc.com</A>
|
|
<P>
|
|
</BODY>
|
|
</HTML>
|